maestro-agent-sdk 0.1.26 → 0.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +20 -0
- package/dist/core/agent.d.ts +28 -0
- package/dist/core/agent.d.ts.map +1 -1
- package/dist/core/agent.js +2 -0
- package/dist/core/agent.js.map +1 -1
- package/dist/core/is-abort-error.d.ts +18 -0
- package/dist/core/is-abort-error.d.ts.map +1 -1
- package/dist/core/is-abort-error.js +34 -0
- package/dist/core/is-abort-error.js.map +1 -1
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +69 -14
- package/dist/core/loop.js.map +1 -1
- package/dist/core/tool-result-truncation.d.ts +34 -0
- package/dist/core/tool-result-truncation.d.ts.map +1 -0
- package/dist/core/tool-result-truncation.js +162 -0
- package/dist/core/tool-result-truncation.js.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/memory/active-task-template.d.ts +7 -4
- package/dist/memory/active-task-template.d.ts.map +1 -1
- package/dist/memory/active-task-template.js +19 -4
- package/dist/memory/active-task-template.js.map +1 -1
- package/dist/memory/aux-model-map.d.ts +49 -0
- package/dist/memory/aux-model-map.d.ts.map +1 -0
- package/dist/memory/aux-model-map.js +103 -0
- package/dist/memory/aux-model-map.js.map +1 -0
- package/dist/memory/compressor.d.ts +34 -59
- package/dist/memory/compressor.d.ts.map +1 -1
- package/dist/memory/compressor.js +222 -89
- package/dist/memory/compressor.js.map +1 -1
- package/dist/platform/config.d.ts +5 -0
- package/dist/platform/config.d.ts.map +1 -1
- package/dist/platform/config.js +9 -0
- package/dist/platform/config.js.map +1 -1
- package/dist/platform/version.d.ts +1 -1
- package/dist/platform/version.js +1 -1
- package/dist/provider.d.ts +18 -6
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +71 -8
- package/dist/provider.js.map +1 -1
- package/dist/providers/codex-auth.d.ts +149 -0
- package/dist/providers/codex-auth.d.ts.map +1 -0
- package/dist/providers/codex-auth.js +332 -0
- package/dist/providers/codex-auth.js.map +1 -0
- package/dist/providers/codex-stream.d.ts +42 -0
- package/dist/providers/codex-stream.d.ts.map +1 -0
- package/dist/providers/codex-stream.js +330 -0
- package/dist/providers/codex-stream.js.map +1 -0
- package/dist/providers/codex-translators.d.ts +105 -0
- package/dist/providers/codex-translators.d.ts.map +1 -0
- package/dist/providers/codex-translators.js +244 -0
- package/dist/providers/codex-translators.js.map +1 -0
- package/dist/providers/codex.d.ts +145 -0
- package/dist/providers/codex.d.ts.map +1 -0
- package/dist/providers/codex.js +417 -0
- package/dist/providers/codex.js.map +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +25 -1
- package/dist/registry.js.map +1 -1
- package/dist/types.d.ts +24 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +17 -1
package/README.md
CHANGED
|
@@ -7,6 +7,10 @@
|
|
|
7
7
|
**Embeddable agent SDK — skills, memory, MCP, and host-controlled guardrails out of the box.**
|
|
8
8
|
Anthropic + DeepSeek today, BYO-provider in one file. No CLI, no gateway, no host lock-in.
|
|
9
9
|
|
|
10
|
+

|
|
11
|
+
|
|
12
|
+
> The only slot that is both a **pure library** and **multi-vendor** — harness ships inside the SDK, you `import` it into any host and pick the provider per call. ([details](#positioning--a-building-block-not-a-product))
|
|
13
|
+
|
|
10
14
|
> **Status:** Early port (v0.1.x). Active development. API surface may change before 1.0.
|
|
11
15
|
|
|
12
16
|
A generalizable agent runtime. Swap providers, inject your own logger/MCP resolver/hooks, and embed it in any host process — no framework, no lock-in.
|
|
@@ -217,6 +221,22 @@ session metadata without reading the full message log can call
|
|
|
217
221
|
|
|
218
222
|
maestro-agent-sdk is an agent *runtime*, not an agent *product*. You pick the UI, the provider mix, the guardrail rules, the storage layer.
|
|
219
223
|
|
|
224
|
+
### Where it sits in the stack
|
|
225
|
+
|
|
226
|
+
Refer to the architecture chart at the top of this README. Top → bottom is caller → callee. Anthropic and OpenAI ship an SDK that spawns their own CLI as a subprocess — you inherit the harness, but you also inherit the binary and the single-vendor model API. Indie coding agents (OpenClaude, OpenClaw, Hermes, Nanoclaw) keep the harness but bolt on a multi-vendor API slot. **Maestro is the only slot that is both a pure library *and* multi-vendor** — the harness lives inside the SDK, so you `import` it into any host and pick the provider per call.
|
|
227
|
+
|
|
228
|
+
| Capability | Anthropic | OpenAI | Indie | Maestro |
|
|
229
|
+
| ------------------------------------------------ | ----------------- | ----------------- | ------------- | --------------- |
|
|
230
|
+
| **Built-in harness** (tool loop · context · agent loop) | ✓ Claude Code | ✓ Codex CLI | ✓ | ✓ |
|
|
231
|
+
| **Pure library distribution** (npm/pip import only) | ✗ needs `claude` | ✗ needs `codex` | ✗ CLI only | ✓ |
|
|
232
|
+
| **Multi-vendor API** (multiple model endpoints) | ✗ Claude only | ✗ OpenAI only | ✓ | ✓ |
|
|
233
|
+
| **Library + Multi-vendor** (embed anywhere · call any vendor) | ✗ | ✗ | ✗ | ✓ |
|
|
234
|
+
| **Ships standalone CLI** (runs as its own product) | ✓ Claude Code | ✓ Codex CLI | ✓ | ✗ embedded-only |
|
|
235
|
+
|
|
236
|
+
The trade-off Maestro accepts: **no standalone CLI**. You don't get a `maestro` binary to drop on a server — you get an SDK to embed inside your own host.
|
|
237
|
+
|
|
238
|
+
### Adjacent projects
|
|
239
|
+
|
|
220
240
|
| Project | Layer | Key trade-off |
|
|
221
241
|
|---------|-------|---------------|
|
|
222
242
|
| **maestro-agent-sdk** | Embeddable SDK | Agent loop only — no CLI, no UI, no fixed product shape. Host injects logger, MCP resolver, session store, guardrails. |
|
package/dist/core/agent.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { ToolResultTruncationConfig } from "../core/tool-result-truncation.js";
|
|
1
2
|
import type { Provider } from "../providers/base.js";
|
|
2
3
|
import type { ToolRegistry } from "../tools/registry.js";
|
|
3
4
|
import type { EffortLevel, LlmPostHook, LlmPreHook } from "../types.js";
|
|
@@ -56,6 +57,20 @@ export interface AIAgentConfig {
|
|
|
56
57
|
effort?: EffortLevel;
|
|
57
58
|
/** External abort signal — wired to the AgentQueryOptions.abortController. */
|
|
58
59
|
abortSignal?: AbortSignal;
|
|
60
|
+
/**
|
|
61
|
+
* Optional override for the compaction (auxiliary) LLM model id. When set,
|
|
62
|
+
* `compressIfNeeded` routes its summary call through this model instead of
|
|
63
|
+
* the v0.1.28+ default — the intra-provider cheapest sibling resolved by
|
|
64
|
+
* `resolveAuxModel(model)`. Useful when the host wants compaction to run
|
|
65
|
+
* on a totally different provider (pair with a host-side aux provider
|
|
66
|
+
* swap if needed).
|
|
67
|
+
*
|
|
68
|
+
* Leave omitted for the default mapping: gpt-5.5 → gpt-5.4-mini,
|
|
69
|
+
* opus → haiku, deepseek-v4-pro → deepseek-v4-flash. Cheap tiers
|
|
70
|
+
* self-map so the behavior is a no-op for callers already on a small
|
|
71
|
+
* model.
|
|
72
|
+
*/
|
|
73
|
+
auxModel?: string;
|
|
59
74
|
/**
|
|
60
75
|
* Per-iteration system-reminder builder. Invoked by `runConversation`
|
|
61
76
|
* just before pushing each `tool_result` user message; the returned text
|
|
@@ -77,6 +92,13 @@ export interface AIAgentConfig {
|
|
|
77
92
|
llmPreHook?: LlmPreHook;
|
|
78
93
|
/** LLM Post Hook — fires on turn-complete (no tool calls) before `result` event. */
|
|
79
94
|
llmPostHook?: LlmPostHook;
|
|
95
|
+
/**
|
|
96
|
+
* Tool result truncation — when enabled, string tool outputs that exceed
|
|
97
|
+
* `maxBytes` are truncated to head+tail before being fed back into the model
|
|
98
|
+
* context. The full output is optionally persisted to disk. Disabled by
|
|
99
|
+
* default (opt-in).
|
|
100
|
+
*/
|
|
101
|
+
toolResultTruncation?: ToolResultTruncationConfig;
|
|
80
102
|
}
|
|
81
103
|
export declare class AIAgent {
|
|
82
104
|
readonly provider: Provider;
|
|
@@ -88,6 +110,12 @@ export declare class AIAgent {
|
|
|
88
110
|
buildIterReminder?: (iterationsRemaining: number) => string | null;
|
|
89
111
|
llmPreHook?: LlmPreHook;
|
|
90
112
|
llmPostHook?: LlmPostHook;
|
|
113
|
+
/** Optional aux model override; consumed by the loop's compressIfNeeded
|
|
114
|
+
* call. When omitted the loop falls back to `resolveAuxModel(model)`. */
|
|
115
|
+
auxModel?: string;
|
|
116
|
+
/** Tool result truncation config; consumed by `runConversation` each
|
|
117
|
+
* tool-result turn. Omitted (undefined) → truncation disabled. */
|
|
118
|
+
toolResultTruncation?: ToolResultTruncationConfig;
|
|
91
119
|
};
|
|
92
120
|
constructor(provider: Provider, tools: ToolRegistry, config: AIAgentConfig);
|
|
93
121
|
}
|
package/dist/core/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpE;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB;;sCAEkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACnE,iEAAiE;IACjE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oFAAoF;IACpF,WAAW,CAAC,EAAE,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEpE;;;;;;;;;GASG;AAEH,MAAM,WAAW,aAAa;IAC5B,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,sEAAsE;IACtE,YAAY,EAAE,MAAM,CAAC;IACrB;;sCAEkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,8EAA8E;IAC9E,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;OAeG;IACH,iBAAiB,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACnE,iEAAiE;IACjE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,oFAAoF;IACpF,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;CACnD;AAED,qBAAa,OAAO;IAClB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CACvB,IAAI,CAAC,aAAa,EAAE,OAAO,GAAG,cAAc,GAAG,eAAe,GAAG,WAAW,CAAC,CAC9E,GAAG;QACF,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,iBAAiB,CAAC,EAAE,CAAC,mBAAmB,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;QACnE,UAAU,CAAC,EAAE,UAAU,CAAC;QACxB,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B;kFAC0E;QAC1E,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB;2EACmE;QACnE,oBAAoB,CAAC,EAAE,0BAA0B,CAAC;KACnD,CAAC;gBAEU,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa;CA2B3E"}
|
package/dist/core/agent.js
CHANGED
|
@@ -26,6 +26,8 @@ export class AIAgent {
|
|
|
26
26
|
...(config.buildIterReminder ? { buildIterReminder: config.buildIterReminder } : {}),
|
|
27
27
|
...(config.llmPreHook ? { llmPreHook: config.llmPreHook } : {}),
|
|
28
28
|
...(config.llmPostHook ? { llmPostHook: config.llmPostHook } : {}),
|
|
29
|
+
...(config.auxModel ? { auxModel: config.auxModel } : {}),
|
|
30
|
+
...(config.toolResultTruncation ? { toolResultTruncation: config.toolResultTruncation } : {}),
|
|
29
31
|
};
|
|
30
32
|
}
|
|
31
33
|
}
|
package/dist/core/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/core/agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAwGtD,MAAM,OAAO,OAAO;IACT,QAAQ,CAAW;IACnB,KAAK,CAAe;IACpB,MAAM,CAeb;IAEF,YAAY,QAAkB,EAAE,KAAmB,EAAE,MAAqB;QACxE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,MAAM,GAAG;YACZ,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,kEAAkE;YAClE,mEAAmE;YACnE,yDAAyD;YACzD,4DAA4D;YAC5D,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,iBAAiB;YAC/D,qEAAqE;YACrE,+DAA+D;YAC/D,yDAAyD;YACzD,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,wBAAwB,CAAC,MAAM,CAAC,KAAK,CAAC;YACrE,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC;gBACpD,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE;gBAC3C,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnD,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpF,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/D,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9F,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -5,4 +5,22 @@
|
|
|
5
5
|
* sub-agent runner use the same function without inlining.
|
|
6
6
|
*/
|
|
7
7
|
export declare function isAbortError(err: unknown): boolean;
|
|
8
|
+
/**
|
|
9
|
+
* Detect a fetch/`AbortSignal.timeout()` timeout error.
|
|
10
|
+
*
|
|
11
|
+
* Node 22+'s `AbortSignal.timeout(ms)` rejects a pending fetch with a
|
|
12
|
+
* `DOMException` whose `name === "TimeoutError"` and `code === 23`
|
|
13
|
+
* (`TIMEOUT_ERR`). Some runtimes also stamp the message as
|
|
14
|
+
* `"The operation timed out"` or `"signal timed out"`. macOS layer fetch
|
|
15
|
+
* failures (NSURLError -1001) bubble up with `"The operation timed out."`
|
|
16
|
+
* as the message but no canonical `name`, so we accept that text shape
|
|
17
|
+
* too as a last-resort fallback.
|
|
18
|
+
*
|
|
19
|
+
* Why this is its own helper (not folded into `isAbortError`):
|
|
20
|
+
* - User abort vs. network timeout deserve different surfacing.
|
|
21
|
+
* `maestroProvider` swallows abort silently (the user moved on), but
|
|
22
|
+
* a timeout should still yield a clean error event so the host can
|
|
23
|
+
* show "OAuth refresh timed out — try again" instead of a crash.
|
|
24
|
+
*/
|
|
25
|
+
export declare function isTimeoutError(err: unknown): boolean;
|
|
8
26
|
//# sourceMappingURL=is-abort-error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-abort-error.d.ts","sourceRoot":"","sources":["../../src/core/is-abort-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMlD"}
|
|
1
|
+
{"version":3,"file":"is-abort-error.d.ts","sourceRoot":"","sources":["../../src/core/is-abort-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMlD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAWpD"}
|
|
@@ -14,4 +14,38 @@ export function isAbortError(err) {
|
|
|
14
14
|
return true;
|
|
15
15
|
return false;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Detect a fetch/`AbortSignal.timeout()` timeout error.
|
|
19
|
+
*
|
|
20
|
+
* Node 22+'s `AbortSignal.timeout(ms)` rejects a pending fetch with a
|
|
21
|
+
* `DOMException` whose `name === "TimeoutError"` and `code === 23`
|
|
22
|
+
* (`TIMEOUT_ERR`). Some runtimes also stamp the message as
|
|
23
|
+
* `"The operation timed out"` or `"signal timed out"`. macOS layer fetch
|
|
24
|
+
* failures (NSURLError -1001) bubble up with `"The operation timed out."`
|
|
25
|
+
* as the message but no canonical `name`, so we accept that text shape
|
|
26
|
+
* too as a last-resort fallback.
|
|
27
|
+
*
|
|
28
|
+
* Why this is its own helper (not folded into `isAbortError`):
|
|
29
|
+
* - User abort vs. network timeout deserve different surfacing.
|
|
30
|
+
* `maestroProvider` swallows abort silently (the user moved on), but
|
|
31
|
+
* a timeout should still yield a clean error event so the host can
|
|
32
|
+
* show "OAuth refresh timed out — try again" instead of a crash.
|
|
33
|
+
*/
|
|
34
|
+
export function isTimeoutError(err) {
|
|
35
|
+
if (!err || typeof err !== "object")
|
|
36
|
+
return false;
|
|
37
|
+
const e = err;
|
|
38
|
+
if (e.name === "TimeoutError")
|
|
39
|
+
return true;
|
|
40
|
+
if (e.code === 23 || e.code === "TIMEOUT_ERR")
|
|
41
|
+
return true;
|
|
42
|
+
if (typeof e.message === "string") {
|
|
43
|
+
const msg = e.message.toLowerCase();
|
|
44
|
+
if (msg.includes("signal timed out"))
|
|
45
|
+
return true;
|
|
46
|
+
if (msg.includes("the operation timed out"))
|
|
47
|
+
return true;
|
|
48
|
+
}
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
17
51
|
//# sourceMappingURL=is-abort-error.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"is-abort-error.js","sourceRoot":"","sources":["../../src/core/is-abort-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAAyC,CAAC;IACpD,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"is-abort-error.js","sourceRoot":"","sources":["../../src/core/is-abort-error.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,GAAY;IACvC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAAyC,CAAC;IACpD,IAAI,CAAC,CAAC,IAAI,KAAK,YAAY;QAAE,OAAO,IAAI,CAAC;IACzC,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IACzD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,GAAY;IACzC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,CAAC,GAAG,GAA4D,CAAC;IACvE,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc;QAAE,OAAO,IAAI,CAAC;IAC3C,IAAI,CAAC,CAAC,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa;QAAE,OAAO,IAAI,CAAC;IAC3D,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QAClC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAAE,OAAO,IAAI,CAAC;QAClD,IAAI,GAAG,CAAC,QAAQ,CAAC,yBAAyB,CAAC;YAAE,OAAO,IAAI,CAAC;IAC3D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/core/loop.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAS5C,OAAO,KAAK,EAGV,eAAe,EAEhB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAc,YAAY,EAAE,MAAM,SAAS,CAAC;AAwBxD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAuB,eAAe,CACpC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,eAAe,EAAE,GAC1B,cAAc,CAAC,YAAY,CAAC,CA2gB9B"}
|
package/dist/core/loop.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
import { maybeTruncateToolResultForModel } from "../core/tool-result-truncation.js";
|
|
1
2
|
import { extractFileEvents } from "../media/file-events.js";
|
|
3
|
+
import { resolveAuxModel } from "../memory/aux-model-map.js";
|
|
2
4
|
import { compressIfNeeded } from "../memory/compressor.js";
|
|
3
5
|
import { StreamingContextScrubber, scrubString } from "../memory/scrubber.js";
|
|
4
6
|
import { logger } from "../platform/logger.js";
|
|
@@ -68,19 +70,52 @@ export async function* runConversation(agent, messages) {
|
|
|
68
70
|
// 2. compressIfNeeded already prunes — no second pruneMessages call.
|
|
69
71
|
//
|
|
70
72
|
// Pure with respect to `messages` (canonical history kept intact for
|
|
71
|
-
// resume); only the on-wire slice is reshaped.
|
|
72
|
-
//
|
|
73
|
-
//
|
|
73
|
+
// resume); only the on-wire slice is reshaped.
|
|
74
|
+
// NOTE: compressIfNeeded now appends compaction summary blocks
|
|
75
|
+
// (⌛compaction user + summary assistant) to the canonical `messages`
|
|
76
|
+
// array for persistence (OpenCode-style incremental). On resume the
|
|
77
|
+
// aux LLM receives an incremental "update the anchored summary"
|
|
78
|
+
// prompt instead of re-summarizing from scratch. Anti-thrashing on
|
|
79
|
+
// the array reference (both in prune.ts and compressor.ts) keeps
|
|
80
|
+
// back-to-back iterations near-zero CPU once the conversation
|
|
81
|
+
// stabilizes.
|
|
74
82
|
//
|
|
75
|
-
// Aux provider
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
//
|
|
83
|
+
// Aux provider stays the same (intra-provider remap), but the aux MODEL
|
|
84
|
+
// routes through `resolveAuxModel` so heavy tiers (gpt-5.5, opus,
|
|
85
|
+
// deepseek-v4-pro) don't pay their own latency cost summarizing the
|
|
86
|
+
// middle history. `resolveAuxModel` returns the input unchanged when
|
|
87
|
+
// the main model is already the cheapest sibling on its provider, so
|
|
88
|
+
// small-model callers are unaffected.
|
|
89
|
+
//
|
|
90
|
+
// Override path: a host can still force a specific aux model via
|
|
91
|
+
// `AIAgentConfig.auxModel` (e.g. to point compaction at a totally
|
|
92
|
+
// different provider). When set, it wins over the mapping; when omitted
|
|
93
|
+
// the mapping decides.
|
|
94
|
+
//
|
|
95
|
+
// v0.1.28 background: production logs showed gpt-5.5 main + gpt-5.5 aux
|
|
96
|
+
// both timing out on the same 5-minute undici headersTimeout wall while
|
|
97
|
+
// POSTing ~1.3 MB request bodies. Routing aux to gpt-5.4-mini cuts both
|
|
98
|
+
// the body weight and the model latency.
|
|
99
|
+
const auxModel = agent.config.auxModel ?? resolveAuxModel(agent.config.model);
|
|
100
|
+
// Captured by the `onEmergencyTrim` callback below. When the aux LLM
|
|
101
|
+
// compaction call fails AND the pruned messages are still over the
|
|
102
|
+
// emergency-target ceiling, compressIfNeeded falls back to a
|
|
103
|
+
// tail-only slice and reports the truncation here. We yield a
|
|
104
|
+
// user-visible `error` UnifiedEvent so the dispatcher (clawgram,
|
|
105
|
+
// CLI host, …) can surface the message — the loop itself proceeds
|
|
106
|
+
// normally with the smaller wire array so the turn doesn't stall.
|
|
107
|
+
let emergencyNotice;
|
|
79
108
|
const wireMessages = await compressIfNeeded(messages, {
|
|
80
109
|
auxProvider: agent.provider,
|
|
81
|
-
auxModel
|
|
110
|
+
auxModel,
|
|
111
|
+
onEmergencyTrim: (notice) => {
|
|
112
|
+
emergencyNotice = notice;
|
|
113
|
+
},
|
|
82
114
|
...(agent.config.abortSignal ? { abortSignal: agent.config.abortSignal } : {}),
|
|
83
115
|
});
|
|
116
|
+
if (emergencyNotice !== undefined) {
|
|
117
|
+
yield { type: "error", content: emergencyNotice };
|
|
118
|
+
}
|
|
84
119
|
// Drive the API call via stream() when available so we can emit
|
|
85
120
|
// text_delta UnifiedEvents as the tokens arrive — matches claude/codex
|
|
86
121
|
// progressive typing UX. complete() stays as the fallback for providers
|
|
@@ -422,10 +457,13 @@ export async function* runConversation(agent, messages) {
|
|
|
422
457
|
results[i] = await agent.tools.dispatch(toolUses[i].name, toolUses[i].input);
|
|
423
458
|
}
|
|
424
459
|
// Cap the surfaced UnifiedEvent `content` at TOOL_RESULT_PREVIEW_MAX to
|
|
425
|
-
// match claude/codex, but
|
|
426
|
-
//
|
|
427
|
-
//
|
|
428
|
-
//
|
|
460
|
+
// match claude/codex, but decide per-tool whether the model sees the full
|
|
461
|
+
// output or a truncated version.
|
|
462
|
+
//
|
|
463
|
+
// String results: if `toolResultTruncation.enabled` and the output exceeds
|
|
464
|
+
// `maxBytes`, the model sees head+tail only — the full output is optionally
|
|
465
|
+
// persisted to `outputDir`. Non-string (multimodal) results pass through
|
|
466
|
+
// unchanged.
|
|
429
467
|
//
|
|
430
468
|
// v0.1.18+: A tool may return a `MaestroToolResultBlock[]` (image / mixed
|
|
431
469
|
// multimodal). The host-surfaced UnifiedEvent still carries a short text
|
|
@@ -433,15 +471,32 @@ export async function* runConversation(agent, messages) {
|
|
|
433
471
|
// the full structured payload rides the next turn's tool_result content
|
|
434
472
|
// array verbatim, so the model sees the image natively.
|
|
435
473
|
const toolResultBlocks = [];
|
|
474
|
+
const truncConfig = agent.config.toolResultTruncation;
|
|
436
475
|
for (let i = 0; i < toolUses.length; i++) {
|
|
437
476
|
const tu = toolUses[i];
|
|
438
477
|
const result = results[i];
|
|
439
478
|
const preview = previewToolResult(result);
|
|
440
|
-
|
|
479
|
+
// Determine content the model will see — truncate string results when
|
|
480
|
+
// configured; leave multimodal (structured array) results untouched.
|
|
481
|
+
let modelContent = result;
|
|
482
|
+
let metadata;
|
|
483
|
+
if (typeof result === "string" && truncConfig) {
|
|
484
|
+
const truncated = await maybeTruncateToolResultForModel(tu.name, tu.id, result, truncConfig);
|
|
485
|
+
modelContent = truncated.content;
|
|
486
|
+
if (truncated.metadata.truncatedForModel) {
|
|
487
|
+
metadata = truncated.metadata;
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
yield {
|
|
491
|
+
type: "tool_result",
|
|
492
|
+
toolUseId: tu.id,
|
|
493
|
+
content: preview,
|
|
494
|
+
...(metadata ? { metadata } : {}),
|
|
495
|
+
};
|
|
441
496
|
toolResultBlocks.push({
|
|
442
497
|
type: "tool_result",
|
|
443
498
|
tool_use_id: tu.id,
|
|
444
|
-
content:
|
|
499
|
+
content: modelContent,
|
|
445
500
|
});
|
|
446
501
|
}
|
|
447
502
|
// Append a fresh `<system-reminder>` text block AFTER the tool_result
|
package/dist/core/loop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"loop.js","sourceRoot":"","sources":["../../src/core/loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export interface ToolResultTruncationConfig {
|
|
2
|
+
/** Enable truncation for string tool results before feeding them back to the model. */
|
|
3
|
+
enabled?: boolean;
|
|
4
|
+
/** Max UTF-8 bytes allowed before truncation. Default: 64 KiB. */
|
|
5
|
+
maxBytes?: number;
|
|
6
|
+
/** Bytes kept from the start of the output. Default: half of maxBytes. */
|
|
7
|
+
headBytes?: number;
|
|
8
|
+
/** Bytes kept from the end of the output. Default: remaining half of maxBytes. */
|
|
9
|
+
tailBytes?: number;
|
|
10
|
+
/** Persist the full untruncated output to disk when truncation happens. */
|
|
11
|
+
saveFullOutput?: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Host-supplied directory for persisted full outputs. Default:
|
|
14
|
+
* `${DATA_DIR}/tool-outputs`.
|
|
15
|
+
*/
|
|
16
|
+
outputDir?: string;
|
|
17
|
+
/** Best-effort cleanup of saved outputs older than this many days. Default: 7. */
|
|
18
|
+
retentionDays?: number;
|
|
19
|
+
/** Tool names that should never be truncated. */
|
|
20
|
+
ignoreTools?: string[];
|
|
21
|
+
}
|
|
22
|
+
export interface ToolResultTruncationMetadata {
|
|
23
|
+
truncatedForModel: boolean;
|
|
24
|
+
originalBytes: number;
|
|
25
|
+
returnedBytes: number;
|
|
26
|
+
omittedBytes?: number;
|
|
27
|
+
outputPath?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ToolResultTruncationResult {
|
|
30
|
+
content: string;
|
|
31
|
+
metadata: ToolResultTruncationMetadata;
|
|
32
|
+
}
|
|
33
|
+
export declare function maybeTruncateToolResultForModel(toolName: string, toolUseId: string, result: string, config?: ToolResultTruncationConfig): Promise<ToolResultTruncationResult>;
|
|
34
|
+
//# sourceMappingURL=tool-result-truncation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-result-truncation.d.ts","sourceRoot":"","sources":["../../src/core/tool-result-truncation.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,0BAA0B;IACzC,uFAAuF;IACvF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,kEAAkE;IAClE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kFAAkF;IAClF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iDAAiD;IACjD,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,4BAA4B;IAC3C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,4BAA4B,CAAC;CACxC;AAMD,wBAAsB,+BAA+B,CACnD,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,0BAA0B,GAClC,OAAO,CAAC,0BAA0B,CAAC,CAkDrC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { mkdir, readdir, stat, unlink, writeFile } from "node:fs/promises";
|
|
2
|
+
import { basename, join, resolve } from "node:path";
|
|
3
|
+
import { DATA_DIR } from "../platform/config.js";
|
|
4
|
+
const DEFAULT_MAX_BYTES = 64 * 1024;
|
|
5
|
+
const DEFAULT_RETENTION_DAYS = 7;
|
|
6
|
+
const CLEANED_OUTPUT_DIRS = new Set();
|
|
7
|
+
export async function maybeTruncateToolResultForModel(toolName, toolUseId, result, config) {
|
|
8
|
+
const originalBytes = Buffer.byteLength(result, "utf8");
|
|
9
|
+
if (!config?.enabled || config.ignoreTools?.includes(toolName)) {
|
|
10
|
+
return {
|
|
11
|
+
content: result,
|
|
12
|
+
metadata: { truncatedForModel: false, originalBytes, returnedBytes: originalBytes },
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const maxBytes = positiveInt(config.maxBytes, DEFAULT_MAX_BYTES);
|
|
16
|
+
if (originalBytes <= maxBytes) {
|
|
17
|
+
return {
|
|
18
|
+
content: result,
|
|
19
|
+
metadata: { truncatedForModel: false, originalBytes, returnedBytes: originalBytes },
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
const headBytes = positiveInt(config.headBytes, Math.floor(maxBytes / 2));
|
|
23
|
+
const tailBytes = positiveInt(config.tailBytes, maxBytes - headBytes);
|
|
24
|
+
const normalized = normalizeHeadTail(headBytes, tailBytes, maxBytes);
|
|
25
|
+
const outputDir = resolveOutputDir(config.outputDir);
|
|
26
|
+
const outputPath = config.saveFullOutput
|
|
27
|
+
? await saveFullOutputBestEffort(outputDir, toolName, toolUseId, result, config.retentionDays)
|
|
28
|
+
: undefined;
|
|
29
|
+
const head = sliceUtf8ByBytes(result, 0, normalized.headBytes);
|
|
30
|
+
const tail = sliceUtf8TailByBytes(result, normalized.tailBytes);
|
|
31
|
+
const keptBytes = Buffer.byteLength(head, "utf8") + Buffer.byteLength(tail, "utf8");
|
|
32
|
+
const omittedBytes = Math.max(0, originalBytes - keptBytes);
|
|
33
|
+
const header = [
|
|
34
|
+
`[Tool output truncated for model context: original ${formatBytes(originalBytes)}, ` +
|
|
35
|
+
`showing first ${formatBytes(Buffer.byteLength(head, "utf8"))} and last ${formatBytes(Buffer.byteLength(tail, "utf8"))}.`,
|
|
36
|
+
outputPath ? "Full output persisted outside model context." : undefined,
|
|
37
|
+
`Omitted: ${formatBytes(omittedBytes)}]`,
|
|
38
|
+
]
|
|
39
|
+
.filter(Boolean)
|
|
40
|
+
.join("\n");
|
|
41
|
+
const content = `${header}\n\n${head}\n\n[... omitted ${formatBytes(omittedBytes)} ...]\n\n${tail}`;
|
|
42
|
+
const returnedBytes = Buffer.byteLength(content, "utf8");
|
|
43
|
+
return {
|
|
44
|
+
content,
|
|
45
|
+
metadata: {
|
|
46
|
+
truncatedForModel: true,
|
|
47
|
+
originalBytes,
|
|
48
|
+
returnedBytes,
|
|
49
|
+
omittedBytes,
|
|
50
|
+
...(outputPath ? { outputPath } : {}),
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
function positiveInt(value, fallback) {
|
|
55
|
+
return typeof value === "number" && Number.isFinite(value) && value > 0
|
|
56
|
+
? Math.floor(value)
|
|
57
|
+
: fallback;
|
|
58
|
+
}
|
|
59
|
+
function normalizeHeadTail(headBytes, tailBytes, maxBytes) {
|
|
60
|
+
const total = headBytes + tailBytes;
|
|
61
|
+
if (total <= maxBytes)
|
|
62
|
+
return { headBytes, tailBytes };
|
|
63
|
+
const ratio = maxBytes / total;
|
|
64
|
+
const nextHead = Math.max(1, Math.floor(headBytes * ratio));
|
|
65
|
+
return { headBytes: nextHead, tailBytes: Math.max(1, maxBytes - nextHead) };
|
|
66
|
+
}
|
|
67
|
+
function sliceUtf8ByBytes(text, startByte, byteLength) {
|
|
68
|
+
if (byteLength <= 0)
|
|
69
|
+
return "";
|
|
70
|
+
let skipped = 0;
|
|
71
|
+
let kept = 0;
|
|
72
|
+
let out = "";
|
|
73
|
+
for (const char of text) {
|
|
74
|
+
const size = Buffer.byteLength(char, "utf8");
|
|
75
|
+
if (skipped + size <= startByte) {
|
|
76
|
+
skipped += size;
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
if (kept + size > byteLength)
|
|
80
|
+
break;
|
|
81
|
+
out += char;
|
|
82
|
+
kept += size;
|
|
83
|
+
}
|
|
84
|
+
return out;
|
|
85
|
+
}
|
|
86
|
+
function sliceUtf8TailByBytes(text, byteLength) {
|
|
87
|
+
if (byteLength <= 0)
|
|
88
|
+
return "";
|
|
89
|
+
const chars = Array.from(text);
|
|
90
|
+
let kept = 0;
|
|
91
|
+
const out = [];
|
|
92
|
+
for (let i = chars.length - 1; i >= 0; i--) {
|
|
93
|
+
const char = chars[i];
|
|
94
|
+
const size = Buffer.byteLength(char, "utf8");
|
|
95
|
+
if (kept + size > byteLength)
|
|
96
|
+
break;
|
|
97
|
+
out.push(char);
|
|
98
|
+
kept += size;
|
|
99
|
+
}
|
|
100
|
+
return out.reverse().join("");
|
|
101
|
+
}
|
|
102
|
+
function resolveOutputDir(outputDir) {
|
|
103
|
+
return outputDir ? resolve(outputDir) : join(DATA_DIR, "tool-outputs");
|
|
104
|
+
}
|
|
105
|
+
async function saveFullOutputBestEffort(outputDir, toolName, toolUseId, result, retentionDays) {
|
|
106
|
+
try {
|
|
107
|
+
await cleanupOutputDirOnce(outputDir, retentionDays);
|
|
108
|
+
const day = new Date().toISOString().slice(0, 10);
|
|
109
|
+
const dayDir = join(outputDir, day);
|
|
110
|
+
await mkdir(dayDir, { recursive: true, mode: 0o700 });
|
|
111
|
+
const fileName = `${sanitizePathSegment(toolName)}-${sanitizePathSegment(toolUseId)}.txt`;
|
|
112
|
+
const filePath = join(dayDir, fileName);
|
|
113
|
+
await writeFile(filePath, result, { encoding: "utf8", mode: 0o600 });
|
|
114
|
+
return filePath;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return undefined;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
async function cleanupOutputDirOnce(outputDir, retentionDays) {
|
|
121
|
+
const resolved = resolve(outputDir);
|
|
122
|
+
if (CLEANED_OUTPUT_DIRS.has(resolved))
|
|
123
|
+
return;
|
|
124
|
+
CLEANED_OUTPUT_DIRS.add(resolved);
|
|
125
|
+
const days = positiveInt(retentionDays, DEFAULT_RETENTION_DAYS);
|
|
126
|
+
const cutoff = Date.now() - days * 24 * 60 * 60 * 1000;
|
|
127
|
+
try {
|
|
128
|
+
const entries = await readdir(resolved, { withFileTypes: true });
|
|
129
|
+
await Promise.all(entries.map(async (entry) => {
|
|
130
|
+
const path = join(resolved, entry.name);
|
|
131
|
+
try {
|
|
132
|
+
const info = await stat(path);
|
|
133
|
+
if (info.mtimeMs >= cutoff)
|
|
134
|
+
return;
|
|
135
|
+
if (entry.isFile())
|
|
136
|
+
await unlink(path);
|
|
137
|
+
// Date directories are intentionally left in place; they are tiny and
|
|
138
|
+
// avoiding recursive deletion keeps cleanup conservative.
|
|
139
|
+
}
|
|
140
|
+
catch {
|
|
141
|
+
// best-effort cleanup only
|
|
142
|
+
}
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
// Directory may not exist yet.
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
function sanitizePathSegment(value) {
|
|
150
|
+
const safe = basename(value)
|
|
151
|
+
.replace(/[^a-zA-Z0-9._-]/g, "_")
|
|
152
|
+
.slice(0, 80);
|
|
153
|
+
return safe.length > 0 ? safe : "tool-output";
|
|
154
|
+
}
|
|
155
|
+
function formatBytes(bytes) {
|
|
156
|
+
if (bytes < 1024)
|
|
157
|
+
return `${bytes} B`;
|
|
158
|
+
if (bytes < 1024 * 1024)
|
|
159
|
+
return `${(bytes / 1024).toFixed(1)} KiB`;
|
|
160
|
+
return `${(bytes / (1024 * 1024)).toFixed(1)} MiB`;
|
|
161
|
+
}
|
|
162
|
+
//# sourceMappingURL=tool-result-truncation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-result-truncation.js","sourceRoot":"","sources":["../../src/core/tool-result-truncation.ts"],"names":[],"mappings":"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"}
|