repositories / pi-ext
pi-ext
bugabingas pi extensions
owned by admin
extensions/angel/demo/scene.json
Raw{
"title": "angel",
"extensions": ["angel", "footer", "model-info"],
"cols": 100,
"rows": 26,
"settings": {
"angel": {
"thinkingLevel": "high",
"subagentExtensions": "all",
"pairs": [
{
"executor": "demo/demo-model",
"advisor": "demo/demo-deep"
}
]
}
},
"files": {
"src/retry.ts": "export async function withRetry<T>(run: () => Promise<T>): Promise<T> {\n\tfor (let attempt = 1; ; attempt++) {\n\t\ttry {\n\t\t\treturn await run();\n\t\t} catch (error) {\n\t\t\tif (attempt === 4) throw error;\n\t\t}\n\t}\n}\n"
},
"turns": [
{
"text": "This is a design call; asking the advisor before touching it.",
"tool": {
"name": "angel",
"arguments": {
"question": "Should withRetry in src/retry.ts use exponential backoff with jitter, or is a fixed delay enough for an upload path?",
"context": "Uploads go to a single origin; failures are mostly timeouts."
}
},
"usage": {
"input": 2000,
"output": 70
}
},
{
"text": "Advice taken: exponential backoff with full jitter, capped at 2 s, four attempts. Implementing that in withRetry.",
"usage": {
"input": 3400,
"output": 34
}
}
],
"childTurns": [
{
"text": "Reading the current implementation first.",
"tool": {
"name": "read",
"arguments": {
"path": "src/retry.ts"
}
},
"usage": {
"input": 1500,
"output": 20
}
},
{
"text": "Use exponential backoff with full jitter.\n\nThe current loop retries immediately, which hammers a single origin exactly when it is struggling. A fixed delay avoids the burst but synchronizes retries across concurrent uploads, so they collide again. Exponential backoff spreads load over time; full jitter breaks the synchronization. Cap the delay at about 2 s so a four-attempt budget stays under 5 s total, and never retry 4xx responses.",
"usage": {
"input": 2100,
"output": 140
}
}
],
"steps": [
{
"expect": "demo-model",
"hold": 6
},
{
"type": "should the retry use backoff with jitter or a fixed delay?",
"key": "enter",
"expect": "capped at 2 s, four attempts",
"timeout": 40000,
"hold": 16
},
{
"key": "ctrl-c",
"hold": 0.3
},
{
"key": "ctrl-c"
}
]
}