@namzu/sdk 5.0.0 → 5.1.0

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/CHANGELOG.md CHANGED
@@ -1,5 +1,107 @@
1
1
  # Changelog
2
2
 
3
+ ## 5.1.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 8dbb98b: Adds `@namzu/project` — a conventional agent directory, read into typed,
8
+ inspectable definitions.
9
+
10
+ ```
11
+ my-agent/agent/
12
+ ├── agent.ts # optional — model, temperature, budgets
13
+ ├── instructions.md # optional — the system prompt
14
+ ├── tools/search.ts # default-exports defineTool(…)
15
+ └── skills/plan-a-trip/SKILL.md
16
+ ```
17
+
18
+ ```ts
19
+ const { manifest, ok, diagnostics } = await loadProject("./agent");
20
+ await runAgent(deriveRunOptions(manifest, { provider, prompt: "go" }));
21
+ ```
22
+
23
+ A **loader, not a runner**, and not in `@namzu/sdk`: the kernel does not
24
+ mandate a directory layout any more than a kernel mandates `/etc/foo.conf`.
25
+ `deriveRunOptions` returns ordinary `RunAgentOptions`, so there is no second
26
+ code path and no behaviour reachable only through the convention.
27
+
28
+ **Importing a directory runs it.** `loadProject` imports every module-backed
29
+ file, in this process, with this process's privileges — a top-level side effect
30
+ in `tools/search.ts` happens during the load. There is no in-process boundary
31
+ that would change that, and `@namzu/sandbox` confines tool execution rather
32
+ than module import. For a directory whose author you are not,
33
+ `modules: 'skip'` imports nothing while still returning the full structural
34
+ truth: every path, the instructions, the skills, duplicate detection. That is
35
+ also the mode a CI gate and a UI file tree want.
36
+
37
+ **TypeScript without a build step.** Files load through `await import()`, so
38
+ `.ts` is handled by Node's own type stripping. Stripping erases types rather
39
+ than transforming code, so `enum`, decorators, parameter properties, runtime
40
+ `namespace`, extensionless relative imports and tsconfig `paths` aliases do not
41
+ work — the README tables each one against what to write instead, and the errors
42
+ name the remedy. A host that needs them passes `importModule` and hands in
43
+ `jiti` or a `tsx`-registered importer: three lines in the host, no bundler in
44
+ this dependency tree.
45
+
46
+ **Nothing fails silently.** A file that cannot load is reported with its path
47
+ and reason, never dropped. Two behaviours worth knowing: a symlink is refused
48
+ rather than followed, because the file that would be imported is not the file
49
+ that was listed; and a timed-out import is `'abandoned'`, not `'failed'`, since
50
+ `import()` cannot be cancelled — the module may still finish, and Node caches
51
+ it, so a later load in the same process can see the same file succeed.
52
+
53
+ `channels/` and `schedules/` are **not** in this version. A trigger of
54
+ `{ id, handler }` cannot express a signed webhook — verification needs the raw
55
+ body, and a handler receiving a parsed one can never check an HMAC — carries no
56
+ idempotency key while webhooks retry and schedules double-fire, and a cron
57
+ field with no timezone story is a declaration nothing drives. Each would be a
58
+ breaking change to a published type; the shape question gets its own pass.
59
+
60
+ `@namzu/sdk` additionally exports `resolveWithin`, `resolveWithinReal` and
61
+ `isWithin`, the containment helpers its own filesystem tools use. They were
62
+ internal while three call sites outside that file needed them.
63
+
64
+ ### Patch Changes
65
+
66
+ - 7ac89da: A driver that classified its own failure was being punished for it, in two
67
+ places, and both shipped in 5.0.0.
68
+
69
+ **`classifyProviderError` never read `kind`.** A `ProviderRequestError` — the
70
+ type first-party drivers throw when they have diagnosed a failure themselves —
71
+ fell through to the status heuristics, where a carefully-determined
72
+ `context_overflow` carrying a 400 became `invalid_request`. Three of the six
73
+ kinds landed wrong that way:
74
+
75
+ | kind | was | now |
76
+ | ------------------ | -------------------------------- | ---------------------------------------- |
77
+ | `context_overflow` | `invalid_request`, not retryable | `context_length_exceeded`, not retryable |
78
+ | `server` | `invalid_request`, not retryable | `server_error`, **retryable** |
79
+ | `network` | `invalid_request`, not retryable | `network`, **retryable** |
80
+
81
+ The overflow case was not cosmetic. The run loop reaches for compaction when it
82
+ sees `context_length_exceeded`, so relief — the one provider failure this
83
+ kernel can actually do something about — was unreachable for exactly the
84
+ drivers that had diagnosed the problem correctly.
85
+
86
+ **`withProviderRetry` rethrew such errors before the retry loop.** Its comment
87
+ justified preserving the driver's classification, which is right; the code also
88
+ skipped retrying, which is a separate decision nobody made. A first-party HTTP
89
+ or OpenRouter driver reporting a 429 as `kind: 'throttle'` got exactly one
90
+ attempt, while the identical failure from a driver that classified nothing got
91
+ the full backoff.
92
+
93
+ Retry is now decided the same way for both, from the classification's
94
+ `retryable`. The original error still escapes to the run boundary, so
95
+ `run.lastProviderError` keeps reporting the driver's own
96
+ `{ kind, status, retryAfterMs }` — wrapping there would have fixed the retry
97
+ and lost the vendor's `kind`, which the existing stream-recovery test caught.
98
+
99
+ **What changes for you.** A 429, a 5xx or a socket failure from
100
+ `@namzu/http` or `@namzu/openrouter` is now retried with backoff instead of
101
+ failing on the first attempt, and a context overflow from those drivers now
102
+ triggers compaction instead of failing the run. If you were relying on a typed
103
+ error failing fast, `retry: { maxRetries: 0 }` on `drainQuery` restores that.
104
+
3
105
  ## 5.0.0
4
106
 
5
107
  ### Major Changes
package/README.md CHANGED
@@ -29,7 +29,7 @@ Namzu is a single-process TypeScript kernel with the following responsibilities:
29
29
  - **Scheduling.** Per-run token, cost, wall-clock, and iteration budgets. Limit checker, task router (cheap model for compaction, expensive for coding), tool tiering (LLM learns to prefer cheaper tools first).
30
30
  - **Signals.** `AbortController` tree spanning parent and children. `cancel(taskId)` and `cancelAll(parentRunId)` propagate. Runs can be paused and resumed, aborted cleanly, and emit lifecycle events for every transition.
31
31
  - **Memory management.** Working memory via structured compaction to a typed `WorkingState`. Long-term memory via an indexed, tag/query/status-searchable store with disk persistence. No vector database required by default.
32
- - **Durability.** Atomic per-iteration checkpoints, automatic emergency core-dump on SIGINT/SIGTERM, separate storage for runs, threads, conversations, activities, memories, and tasks.
32
+ - **Durability.** Atomic per-iteration checkpoints, an opt-in emergency core-dump on SIGINT/SIGTERM (`emergencySave: true` — a library must not seize a host process termination path by default), separate storage for runs, threads, conversations, activities, memories, and tasks.
33
33
  - **IPC.** Native A2A (agent-to-agent) and MCP (Model Context Protocol) — both client and server, one SDK. An internal event bus with circuit breakers, file lock manager, and edit ownership tracking so concurrent agents do not stomp on each other.
34
34
  - **Capability system.** Tools are first-class, typed, permissioned, and progressively disclosed. The LLM does not see the full tool catalog; tools start deferred, get activated on demand, and can be suspended. Each tool declares `readOnly`, `destructive`, `concurrencySafe`, `permissions`, `category`.
35
35
  - **Syscall filtering.** Every tool call goes through a verification gate — allow / deny / ask, with built-in rules for read-only allowlist and dangerous pattern deny-list, plus custom regex rules. This is separate from sandbox isolation; it is the decision layer, the sandbox is the enforcement layer.
@@ -375,7 +375,7 @@ const result = await agent.run(
375
375
  )
376
376
  ```
377
377
 
378
- That is a complete, sandbox-isolated, checkpointed, telemetrized agent run with prompt caching, progressive tool disclosure, structured compaction, and emergency save all wired in by default. Those are not features you enable; they are how the kernel runs. Swap `registerOpenRouter()` for `registerOllama()`, `registerAnthropic()`, `registerBedrock()`, `registerOpenAI()`, `registerLMStudio()`, or `registerHttp()` — the code below the registration line stays identical.
378
+ That is a complete, sandbox-isolated, checkpointed, telemetrized agent run with prompt caching, progressive tool disclosure, and structured compaction all wired in by default those are not features you enable, they are how the kernel runs. Emergency save is the exception and is opt-in: pass `emergencySave: true` when the process owns its run end to end. Swap `registerOpenRouter()` for `registerOllama()`, `registerAnthropic()`, `registerBedrock()`, `registerOpenAI()`, `registerLMStudio()`, or `registerHttp()` — the code below the registration line stays identical.
379
379
 
380
380
  Examples for `PipelineAgent`, `RouterAgent`, and `SupervisorAgent` are in `src/agents/`.
381
381
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=typed-error-classification.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-error-classification.test.d.ts","sourceRoot":"","sources":["../../../src/provider/__tests__/typed-error-classification.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,123 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { classifyProviderError } from '../../types/provider/errors.js';
3
+ import { ProviderRequestError } from '../errors.js';
4
+ import { withProviderRetry } from '../retry.js';
5
+ /**
6
+ * A driver that classified its own failure was coming out WORSE than one that
7
+ * did not, in two independent places, and both shipped.
8
+ *
9
+ * `classifyProviderError` never read `kind`. A `ProviderRequestError` fell
10
+ * through to the status heuristics, where a carefully-diagnosed
11
+ * `context_overflow` carrying a 400 became `invalid_request` — so the run
12
+ * loop's overflow branch, which tests for `context_length_exceeded`, could
13
+ * never fire for a first-party driver, and compaction relief was unreachable
14
+ * for exactly the drivers that had diagnosed the problem correctly.
15
+ *
16
+ * And `withProviderRetry` rethrew any such error before the retry loop. Its
17
+ * comment justified preserving the classification, which is right; the code
18
+ * also skipped retrying, which is a different decision that nobody made.
19
+ */
20
+ function providerThatFails(err) {
21
+ let calls = 0;
22
+ const provider = {
23
+ id: 'test',
24
+ name: 'Test',
25
+ async *chatStream() {
26
+ calls++;
27
+ throw err;
28
+ // biome-ignore lint/correctness/useYield: it fails before producing anything
29
+ },
30
+ };
31
+ return { provider, calls: () => calls };
32
+ }
33
+ const typed = (kind, status) => new ProviderRequestError({ kind, providerId: 'test', status, message: `a ${kind}` });
34
+ describe('a driver that classified its own failure is believed', () => {
35
+ const cases = [
36
+ ['throttle', 429, 'rate_limit', true],
37
+ ['server', 500, 'server_error', true],
38
+ ['network', 0, 'network', true],
39
+ ['auth', 401, 'auth', false],
40
+ ['bad_request', 400, 'invalid_request', false],
41
+ // The one that mattered most: a 400 whose kind says the prompt was too
42
+ // long is not a bad request, and the difference decides whether the
43
+ // kernel reaches for compaction.
44
+ ['context_overflow', 400, 'context_length_exceeded', false],
45
+ ];
46
+ for (const [kind, status, code, retryable] of cases) {
47
+ it(`maps kind "${kind}" to ${code}`, () => {
48
+ const classified = classifyProviderError(typed(kind, status), 'test');
49
+ expect(classified.code).toBe(code);
50
+ expect(classified.retryable).toBe(retryable);
51
+ });
52
+ }
53
+ it('keeps the driver-supplied status and provider id', () => {
54
+ const classified = classifyProviderError(typed('throttle', 429), 'other');
55
+ expect(classified.status).toBe(429);
56
+ expect(classified.providerId).toBe('test');
57
+ });
58
+ });
59
+ describe('a classified failure still goes through the retry loop', () => {
60
+ it('retries a typed throttle', async () => {
61
+ // This is the regression: a first-party driver reporting a 429 as
62
+ // `kind: 'throttle'` used to get exactly one attempt, while the same
63
+ // failure from a driver that classified nothing got the full backoff.
64
+ const { provider, calls } = providerThatFails(typed('throttle', 429));
65
+ const wrapped = withProviderRetry(provider, {
66
+ config: { maxRetries: 2 },
67
+ sleepFn: async () => { },
68
+ random: () => 0,
69
+ });
70
+ await expect(async () => {
71
+ for await (const _ of wrapped.chatStream({})) {
72
+ // drain
73
+ }
74
+ }).rejects.toThrow();
75
+ expect(calls()).toBe(3);
76
+ });
77
+ it('does not retry a typed auth failure', async () => {
78
+ const { provider, calls } = providerThatFails(typed('auth', 401));
79
+ const wrapped = withProviderRetry(provider, {
80
+ config: { maxRetries: 2 },
81
+ sleepFn: async () => { },
82
+ });
83
+ await expect(async () => {
84
+ for await (const _ of wrapped.chatStream({})) {
85
+ // drain
86
+ }
87
+ }).rejects.toThrow();
88
+ expect(calls()).toBe(1);
89
+ });
90
+ it('does not retry a typed context overflow', async () => {
91
+ // Correctly non-retryable — an identical prompt overflows identically.
92
+ // The remedy is compaction, which the run loop reaches for once the
93
+ // code is `context_length_exceeded`.
94
+ const { provider, calls } = providerThatFails(typed('context_overflow', 400));
95
+ const wrapped = withProviderRetry(provider, {
96
+ config: { maxRetries: 2 },
97
+ sleepFn: async () => { },
98
+ });
99
+ await expect(async () => {
100
+ for await (const _ of wrapped.chatStream({})) {
101
+ // drain
102
+ }
103
+ // The ORIGINAL escapes, so the boundary still sees the driver's
104
+ // own kind rather than a wrapper's code.
105
+ }).rejects.toMatchObject({ kind: 'context_overflow', status: 400 });
106
+ expect(calls()).toBe(1);
107
+ });
108
+ it('leaves an abort alone', async () => {
109
+ const abort = Object.assign(new Error('aborted'), { name: 'AbortError' });
110
+ const { provider, calls } = providerThatFails(abort);
111
+ const wrapped = withProviderRetry(provider, {
112
+ config: { maxRetries: 2 },
113
+ sleepFn: async () => { },
114
+ });
115
+ await expect(async () => {
116
+ for await (const _ of wrapped.chatStream({})) {
117
+ // drain
118
+ }
119
+ }).rejects.toThrow(/aborted/);
120
+ expect(calls()).toBe(1);
121
+ });
122
+ });
123
+ //# sourceMappingURL=typed-error-classification.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typed-error-classification.test.js","sourceRoot":"","sources":["../../../src/provider/__tests__/typed-error-classification.test.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/provider/retry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,WAAW,EAAe,MAAM,4BAA4B,CAAA;AAChG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,WAAW,mBAAmB;IACnC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAChC;AAED,eAAO,MAAM,sBAAsB,EAAE,mBAKpC,CAAA;AAgCD,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,wBAA6B,GACpC,WAAW,CAkHb"}
1
+ {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../src/provider/retry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAwB,WAAW,EAAe,MAAM,4BAA4B,CAAA;AAChG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAGhD,MAAM,WAAW,mBAAmB;IACnC,mEAAmE;IACnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAA;CAChC;AAED,eAAO,MAAM,sBAAsB,EAAE,mBAKpC,CAAA;AAgCD,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,mBAAmB,CAAC,CAAA;IAC9C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,oCAAoC;IACpC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;CACtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,CAChC,QAAQ,EAAE,WAAW,EACrB,OAAO,GAAE,wBAA6B,GACpC,WAAW,CAkIb"}
@@ -79,12 +79,19 @@ export function withProviderRetry(provider, options = {}) {
79
79
  catch (err) {
80
80
  if (isAbortError(err) || params.signal?.aborted)
81
81
  throw err;
82
- // A driver that already classified its own failure has said
83
- // everything this layer would: re-wrapping it would replace a
84
- // first-hand statement with a guess, and the run boundary reads
85
- // that classification to choose between a pause and a failure.
86
- if (isProviderRequestError(err))
87
- throw err;
82
+ // A driver that already classified its own failure keeps that
83
+ // classification `classifyProviderError` reads its `kind`
84
+ // first and does not re-guess.
85
+ //
86
+ // This used to rethrow such an error outright. The stated reason
87
+ // was sound and the code did more than it said: preserving a
88
+ // first-hand classification is one thing, and skipping the retry
89
+ // loop is another. A first-party driver that correctly reported
90
+ // a 429 as `kind: 'throttle'` got ZERO attempts, while the same
91
+ // failure from a driver that classified nothing got the full
92
+ // backoff — so diagnosing your own error was punished. Whether
93
+ // to retry is now decided the same way for both, by the
94
+ // classification's own `retryable`.
88
95
  const classified = classifyProviderError(err, provider.id);
89
96
  const exhausted = attempt >= config.maxRetries;
90
97
  if (produced || !classified.retryable || exhausted) {
@@ -100,7 +107,16 @@ export function withProviderRetry(provider, options = {}) {
100
107
  ? 'retries exhausted'
101
108
  : 'not retryable',
102
109
  });
103
- throw classified;
110
+ // The ORIGINAL escapes when the driver classified it. Two
111
+ // different consumers want two different things and both are
112
+ // right: this loop needs a retryable verdict, which the
113
+ // classification supplies, and the run boundary reports
114
+ // `lastProviderError` as the driver's own `{kind, status,
115
+ // retryAfterMs}`, which only survives if the error itself
116
+ // does. Wrapping here would have kept the retry fix and lost
117
+ // the vendor's `kind` at the boundary — the existing
118
+ // stream-recovery test caught exactly that.
119
+ throw isProviderRequestError(err) ? err : classified;
104
120
  }
105
121
  const serverDirected = classified.retryAfterMs;
106
122
  const delay = serverDirected !== undefined && serverDirected <= config.maxRetryAfterMs
@@ -1 +1 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/provider/retry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../src/provider/retry.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export { defineTool } from './tools/defineTool.js';
2
+ export { isWithin, resolveWithin, resolveWithinReal } from './tools/paths.js';
2
3
  export { neutralizeEnvelopeDelimiter, wrapUntrusted } from './tools/untrusted-envelope.js';
3
4
  export type { UntrustedEnvelope } from './tools/untrusted-envelope.js';
4
5
  export { getBuiltinTools } from './tools/builtins/index.js';
@@ -1 +1 @@
1
- {"version":3,"file":"public-tools.d.ts","sourceRoot":"","sources":["../src/public-tools.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAGlD,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC1F,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAItE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACN,sBAAsB,EACtB,qBAAqB,GACrB,MAAM,kCAAkC,CAAA;AAIzC,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAIpF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAI9C,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,GACpB,MAAM,mCAAmC,CAAA"}
1
+ {"version":3,"file":"public-tools.d.ts","sourceRoot":"","sources":["../src/public-tools.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAIlD,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAG7E,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC1F,YAAY,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AAItE,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACN,sBAAsB,EACtB,qBAAqB,GACrB,MAAM,kCAAkC,CAAA;AAIzC,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAIpF,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAI9C,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,GACpB,MAAM,mCAAmC,CAAA"}
@@ -10,6 +10,10 @@
10
10
  // See §4.3 of `docs.local/sessions/ses_011-sdk-public-surface/design.md`.
11
11
  // ─── Tool definition primitive ───────────────────────────────────────────
12
12
  export { defineTool } from './tools/defineTool.js';
13
+ // Containment, for a host or sibling package that resolves caller-supplied
14
+ // paths against a root. Both were internal while three call sites outside
15
+ // this file needed them.
16
+ export { isWithin, resolveWithin, resolveWithinReal } from './tools/paths.js';
13
17
  // A host that surfaces its own untrusted content to a model needs the same
14
18
  // framing the kernel applies to connector prompts and delegated results.
15
19
  export { neutralizeEnvelopeDelimiter, wrapUntrusted } from './tools/untrusted-envelope.js';
@@ -1 +1 @@
1
- {"version":3,"file":"public-tools.js","sourceRoot":"","sources":["../src/public-tools.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAE1E,4EAA4E;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,2EAA2E;AAC3E,yEAAyE;AACzE,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAG1F,4EAA4E;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACN,sBAAsB,EACtB,qBAAqB,GACrB,MAAM,kCAAkC,CAAA;AAEzC,4EAA4E;AAE5E,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,cAAc,EAAyB,MAAM,8BAA8B,CAAA;AAEpF,4EAA4E;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,4EAA4E;AAE5E,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,GACpB,MAAM,mCAAmC,CAAA"}
1
+ {"version":3,"file":"public-tools.js","sourceRoot":"","sources":["../src/public-tools.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,yEAAyE;AACzE,EAAE;AACF,0EAA0E;AAE1E,4EAA4E;AAE5E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,2EAA2E;AAC3E,0EAA0E;AAC1E,yBAAyB;AACzB,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,2EAA2E;AAC3E,yEAAyE;AACzE,OAAO,EAAE,2BAA2B,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAG1F,4EAA4E;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAA;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAA;AACtE,OAAO,EACN,0BAA0B,EAC1B,2BAA2B,GAC3B,MAAM,sCAAsC,CAAA;AAC7C,OAAO,EACN,sBAAsB,EACtB,qBAAqB,GACrB,MAAM,kCAAkC,CAAA;AAEzC,4EAA4E;AAE5E,OAAO,EACN,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAA;AACpE,OAAO,EAAE,cAAc,EAAyB,MAAM,8BAA8B,CAAA;AAEpF,4EAA4E;AAE5E,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAE9C,4EAA4E;AAE5E,OAAO,EACN,iBAAiB,EACjB,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,EACzB,oBAAoB,GACpB,MAAM,mCAAmC,CAAA"}
@@ -144,6 +144,11 @@ describe('query stream recovery', () => {
144
144
  const events = [];
145
145
  const run = await drainQuery({
146
146
  provider: new ClassifiedFailureProvider(),
147
+ // Retry off: this pins METADATA at the boundary, and a throttle
148
+ // is genuinely retryable — leaving retry on would spend the run's
149
+ // whole timeout backing off and settle it as a timeout instead,
150
+ // testing the retry policy rather than the thing named here.
151
+ retry: { maxRetries: 0 },
147
152
  tools: new ToolRegistry(),
148
153
  runConfig: {
149
154
  model: 'mock-model',
@@ -1 +1 @@
1
- {"version":3,"file":"stream-recovery.test.js","sourceRoot":"","sources":["../../../../src/runtime/query/__tests__/stream-recovery.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC5D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAA;AAEhE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iCAAiC,CAAA;AAInE,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,MAAM,UAAU,GAAG;IAClB,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;IACnB,WAAW,EAAE,CAAC;IACd,YAAY,EAAE,CAAC;IACf,gBAAgB,EAAE,CAAC;CACnB,CAAA;AAED,MAAM,2BAA2B;IACvB,EAAE,GAAG,wBAAwB,CAAA;IAC7B,IAAI,GAAG,iCAAiC,CAAA;IACjD,KAAK,GAAG,CAAC,CAAA;IAET,KAAK,CAAC,CAAC,UAAU;QAChB,IAAI,CAAC,KAAK,IAAI,CAAC,CAAA;QAEf,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;YACtB,MAAM;gBACL,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE;oBACN,SAAS,EAAE;wBACV;4BACC,KAAK,EAAE,CAAC;4BACR,EAAE,EAAE,eAAe;4BACnB,IAAI,EAAE,UAAU;4BAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;yBAChC;qBACD;iBACD;aACD,CAAA;YACD,MAAM;gBACL,EAAE,EAAE,OAAO;gBACX,KAAK,EAAE;oBACN,SAAS,EAAE;wBACV;4BACC,KAAK,EAAE,CAAC;4BACR,EAAE,EAAE,eAAe;4BACnB,QAAQ,EAAE;gCACT,SAAS,EAAE,0CAA0C;6BACrD;yBACD;qBACD;iBACD;aACD,CAAA;YACD,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAA;QACjD,CAAC;QAED,MAAM;YACL,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,EAAE,OAAO,EAAE,iCAAiC,EAAE;SACrD,CAAA;QACD,MAAM;YACL,EAAE,EAAE,OAAO;YACX,KAAK,EAAE,EAAE;YACT,YAAY,EAAE,MAAM;YACpB,KAAK,EAAE,UAAU;SACjB,CAAA;IACF,CAAC;CACD;AAED,MAAM,yBAAyB;IACrB,EAAE,GAAG,oBAAoB,CAAA;IACzB,IAAI,GAAG,6BAA6B,CAAA;IAE7C,KAAK,CAAC,CAAC,UAAU;QAChB,MAAM,MAAM,OAAO,CAAC,MAAM,CACzB,IAAI,oBAAoB,CAAC;YACxB,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,IAAI;SAClB,CAAC,CACF,CAAA;IACF,CAAC;CACD;AAED,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACtC,IAAI,QAAQ,GAAa,EAAE,CAAA;IAE3B,SAAS,CAAC,KAAK,IAAI,EAAE;QACpB,MAAM,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;QACnF,QAAQ,GAAG,EAAE,CAAA;IACd,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;QACzF,MAAM,QAAQ,GAAG,IAAI,2BAA2B,EAAE,CAAA;QAClD,MAAM,WAAW,GAAG,EAAE,CAAC,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YACtC,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,gBAAgB;SACxB,CAAC,CAAC,CAAA;QACH,MAAM,KAAK,GAAG,IAAI,YAAY,EAAE,CAAA;QAChC,KAAK,CAAC,QAAQ,CAAC;YACd,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,cAAc;YAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;gBACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;aACnB,CAAC;YACF,OAAO,EAAE,WAAW;SACpB,CAAC,CAAA;QACF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,wBAAwB,CAAC,CAAC,CAAA;QAChF,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAe,EAAE,CAAA;QAE7B,MAAM,GAAG,GAAG,MAAM,UAAU,CAC3B;YACC,QAAQ;YACR,KAAK;YACL,SAAS,EAAE;gBACV,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,OAAO;gBACpB,aAAa,EAAE,CAAC;gBAChB,iBAAiB,EAAE,GAAG;aACtB;YACD,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;YAC/C,gBAAgB;YAChB,SAAS,EAAE,qBAAkC;YAC7C,QAAQ,EAAE,qBAAiC;YAC3C,SAAS,EAAE,qBAAkC;YAC7C,QAAQ,EAAE,qBAAiC;SAC3C,EACD,CAAC,KAAK,EAAE,EAAE;YACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC,CACD,CAAA;QAED,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;QACpC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAA;QAC1D,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC9B,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAA;QAE1C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACvE,MAAM,CACL,MAAM,CAAC,IAAI,CACV,CAAC,KAAK,EAAE,EAAE,CACT,KAAK,CAAC,IAAI,KAAK,sBAAsB;YACrC,KAAK,CAAC,cAAc,KAAK,IAAI;YAC7B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,CACrC,CACD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAA;QAEhE,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAChC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,SAAS,KAAK,eAAe,CACjF,CAAA;QACD,MAAM,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC;YACnC,IAAI,EAAE,gBAAgB;YACtB,QAAQ,EAAE,YAAY;YACtB,OAAO,EAAE,IAAI;SACb,CAAC,CAAA;QACF,MAAM,CAAC,aAAa,EAAE,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CACrF,kBAAkB,CAClB,CAAA;QACD,MAAM,CAAC,aAAa,EAAE,IAAI,KAAK,gBAAgB,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,SAAS,CACrF,mDAAmD,CACnD,CAAA;IACF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACxF,MAAM,gBAAgB,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,uBAAuB,CAAC,CAAC,CAAA;QAC/E,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC/B,MAAM,MAAM,GAAe,EAAE,CAAA;QAE7B,MAAM,GAAG,GAAG,MAAM,UAAU,CAC3B;YACC,QAAQ,EAAE,IAAI,yBAAyB,EAAE;YACzC,KAAK,EAAE,IAAI,YAAY,EAAE;YACzB,SAAS,EAAE;gBACV,KAAK,EAAE,YAAY;gBACnB,SAAS,EAAE,KAAK;gBAChB,WAAW,EAAE,OAAO;gBACpB,aAAa,EAAE,CAAC;gBAChB,iBAAiB,EAAE,GAAG;aACtB;YACD,OAAO,EAAE,YAAY;YACrB,SAAS,EAAE,YAAY;YACvB,QAAQ,EAAE,CAAC,iBAAiB,CAAC,+BAA+B,CAAC,CAAC;YAC9D,gBAAgB;YAChB,SAAS,EAAE,oBAAiC;YAC5C,QAAQ,EAAE,oBAAgC;YAC1C,SAAS,EAAE,oBAAiC;YAC5C,QAAQ,EAAE,oBAAgC;SAC1C,EACD,CAAC,KAAK,EAAE,EAAE;YACT,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnB,CAAC,CACD,CAAA;QAED,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACjC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC;YACrC,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,oBAAoB;YAChC,MAAM,EAAE,GAAG;YACX,YAAY,EAAE,IAAI;SAClB,CAAC,CAAA;QACF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;YACzE,IAAI,EAAE,YAAY;YAClB,aAAa,EAAE,GAAG,CAAC,iBAAiB;SACpC,CAAC,CAAA;IACH,CAAC,CAAC,CAAA;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"stream-recovery.test.js","sourceRoot":"","sources":["../../../../src/runtime/query/__tests__/stream-recovery.test.ts"],"names":[],"mappings":"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"}
@@ -81,22 +81,5 @@ export declare function isProviderError(err: unknown): err is ProviderError;
81
81
  * settles it as `cancelled`. It must never be reclassified or retried.
82
82
  */
83
83
  export declare function isAbortError(err: unknown): boolean;
84
- /**
85
- * Turn whatever a driver threw into a {@link ProviderError}.
86
- *
87
- * Precedence is deliberate: a STRUCTURAL code is the most specific
88
- * signal, then HTTP status, then transport errno, then message text. `context_length_exceeded` is checked
89
- * ahead of the generic 400 mapping because it is the one 4xx the runtime
90
- * can actually act on (shed history and retry) rather than surface.
91
- *
92
- * Every signal is read across the WHOLE cause chain, not off the error
93
- * handed in. Wrapping is the normal case — a vendor SDK wraps its
94
- * transport error and the runtime wraps again on the way out — and reading
95
- * only the outer link meant a rate limit wrapped once classified as
96
- * `unknown`, which is non-retryable. The retry policy was therefore dead
97
- * for every failure that was not the outermost throwable.
98
- *
99
- * Aborts are passed through untouched — see {@link isAbortError}.
100
- */
101
84
  export declare function classifyProviderError(err: unknown, providerId?: string, now?: number): ProviderError;
102
85
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/types/provider/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB;AAC5B,qEAAqE;AACnE,YAAY;AACd,2DAA2D;GACzD,YAAY;AACd,+BAA+B;GAC7B,cAAc;AAChB,+CAA+C;GAC7C,SAAS;AACX,uDAAuD;GACrD,SAAS;AACX,sCAAsC;GACpC,MAAM;AACR,4CAA4C;GAC1C,iBAAiB;AACnB,0EAA0E;GACxE,yBAAyB;AAC3B,8CAA8C;GAC5C,gBAAgB;AAClB,uCAAuC;GACrC,WAAW;AACb,gDAAgD;GAC9C,SAAS,CAAA;AAEZ,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAMnE;AAWD,qBAAa,aAAc,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;gBAEf,IAAI,EAAE,iBAAiB;CAenC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CAElE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAOlD;AA6ND;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,OAAO,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,GAAG,GAAE,MAAmB,GACtB,aAAa,CAuGf"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/types/provider/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,iBAAiB;AAC5B,qEAAqE;AACnE,YAAY;AACd,2DAA2D;GACzD,YAAY;AACd,+BAA+B;GAC7B,cAAc;AAChB,+CAA+C;GAC7C,SAAS;AACX,uDAAuD;GACrD,SAAS;AACX,sCAAsC;GACpC,MAAM;AACR,4CAA4C;GAC1C,iBAAiB;AACnB,0EAA0E;GACxE,yBAAyB;AAC3B,8CAA8C;GAC5C,gBAAgB;AAClB,uCAAuC;GACrC,WAAW;AACb,gDAAgD;GAC9C,SAAS,CAAA;AAEZ,MAAM,WAAW,iBAAiB;IACjC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,oEAAoE;IACpE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAA;IAC5B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAMnE;AAWD,qBAAa,aAAc,SAAQ,KAAK;IACvC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAA;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAA;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAA;IACnC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;gBAEf,IAAI,EAAE,iBAAiB;CAenC;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,aAAa,CAElE;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAOlD;AAsSD,wBAAgB,qBAAqB,CACpC,GAAG,EAAE,OAAO,EACZ,UAAU,CAAC,EAAE,MAAM,EACnB,GAAG,GAAE,MAAmB,GACtB,aAAa,CAsHf"}
@@ -293,9 +293,69 @@ function codeFromStructure(err) {
293
293
  *
294
294
  * Aborts are passed through untouched — see {@link isAbortError}.
295
295
  */
296
+ /**
297
+ * Every `ProviderErrorKind`, mapped to what the runtime acts on.
298
+ *
299
+ * Read structurally rather than with `instanceof`: a driver in one package
300
+ * throws this and the runtime in another reads it, and two copies of the SDK
301
+ * in one process make `instanceof` unreliable — the same reason
302
+ * `isProviderRequestError` exists.
303
+ *
304
+ * `retryable` here is about whether resending the SAME request could succeed.
305
+ * `context_overflow` is correctly false — an identical prompt overflows
306
+ * identically — and it maps to `context_length_exceeded` so the loop can reach
307
+ * for compaction, which is a different remedy than a retry.
308
+ */
309
+ const KIND_TO_CODE = {
310
+ throttle: { code: 'rate_limit', retryable: true },
311
+ network: { code: 'network', retryable: true },
312
+ server: { code: 'server_error', retryable: true },
313
+ auth: { code: 'auth', retryable: false },
314
+ context_overflow: { code: 'context_length_exceeded', retryable: false },
315
+ bad_request: { code: 'invalid_request', retryable: false },
316
+ };
317
+ function classifyFromProviderRequestError(err, providerId, now) {
318
+ if (!(err instanceof Error) || err.name !== 'ProviderRequestError')
319
+ return undefined;
320
+ const candidate = err;
321
+ if (typeof candidate.kind !== 'string')
322
+ return undefined;
323
+ const mapped = KIND_TO_CODE[candidate.kind];
324
+ if (!mapped)
325
+ return undefined;
326
+ const retryAfterMs = typeof candidate.retryAfterMs === 'number' ? candidate.retryAfterMs : readRetryAfterMs(err, now);
327
+ return new ProviderError({
328
+ code: mapped.code,
329
+ message: err.message,
330
+ retryable: mapped.retryable,
331
+ cause: err,
332
+ ...(typeof candidate.providerId === 'string'
333
+ ? { providerId: candidate.providerId }
334
+ : providerId !== undefined
335
+ ? { providerId }
336
+ : {}),
337
+ ...(typeof candidate.status === 'number' ? { status: candidate.status } : {}),
338
+ ...(retryAfterMs !== undefined ? { retryAfterMs } : {}),
339
+ });
340
+ }
296
341
  export function classifyProviderError(err, providerId, now = Date.now()) {
297
342
  if (isProviderError(err))
298
343
  return err;
344
+ // A driver that already classified its own failure is read FIRST, and by
345
+ // its `kind` — the field it set on purpose.
346
+ //
347
+ // Without this the classifier fell through to the status heuristics, where
348
+ // a `ProviderRequestError` carrying `kind: 'context_overflow'` and a 400
349
+ // became `invalid_request`, non-retryable. Three of the six kinds landed
350
+ // wrong that way, and the consequences were not cosmetic: the loop's
351
+ // overflow branch tests for `context_length_exceeded`, so compaction relief
352
+ // — the one provider failure this kernel can actually do something about —
353
+ // was unreachable for exactly the drivers that had diagnosed it correctly.
354
+ // A driver that classified its own error came out worse than one that did
355
+ // not, which is the opposite of the incentive the type was created for.
356
+ const fromKind = classifyFromProviderRequestError(err, providerId, now);
357
+ if (fromKind)
358
+ return fromKind;
299
359
  const message = err instanceof Error ? err.message : String(err);
300
360
  const status = readStatus(err);
301
361
  const errno = readErrnoCode(err);
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/types/provider/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/types/provider/errors.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namzu/sdk",
3
- "version": "5.0.0",
3
+ "version": "5.1.0",
4
4
  "description": "Open-source AI agent SDK with a built-in runtime. Nothing between you and your agents.",
5
5
  "license": "FSL-1.1-MIT",
6
6
  "type": "module",
@@ -0,0 +1,143 @@
1
+ import { describe, expect, it } from 'vitest'
2
+
3
+ import { classifyProviderError } from '../../types/provider/errors.js'
4
+ import type { LLMProvider, StreamChunk } from '../../types/provider/index.js'
5
+ import { ProviderRequestError } from '../errors.js'
6
+ import { withProviderRetry } from '../retry.js'
7
+
8
+ /**
9
+ * A driver that classified its own failure was coming out WORSE than one that
10
+ * did not, in two independent places, and both shipped.
11
+ *
12
+ * `classifyProviderError` never read `kind`. A `ProviderRequestError` fell
13
+ * through to the status heuristics, where a carefully-diagnosed
14
+ * `context_overflow` carrying a 400 became `invalid_request` — so the run
15
+ * loop's overflow branch, which tests for `context_length_exceeded`, could
16
+ * never fire for a first-party driver, and compaction relief was unreachable
17
+ * for exactly the drivers that had diagnosed the problem correctly.
18
+ *
19
+ * And `withProviderRetry` rethrew any such error before the retry loop. Its
20
+ * comment justified preserving the classification, which is right; the code
21
+ * also skipped retrying, which is a different decision that nobody made.
22
+ */
23
+
24
+ function providerThatFails(err: unknown): { provider: LLMProvider; calls: () => number } {
25
+ let calls = 0
26
+ const provider = {
27
+ id: 'test',
28
+ name: 'Test',
29
+ async *chatStream(): AsyncIterable<StreamChunk> {
30
+ calls++
31
+ throw err
32
+ // biome-ignore lint/correctness/useYield: it fails before producing anything
33
+ },
34
+ } as unknown as LLMProvider
35
+ return { provider, calls: () => calls }
36
+ }
37
+
38
+ const typed = (kind: string, status: number) =>
39
+ new ProviderRequestError({ kind, providerId: 'test', status, message: `a ${kind}` } as never)
40
+
41
+ describe('a driver that classified its own failure is believed', () => {
42
+ const cases: readonly [string, number, string, boolean][] = [
43
+ ['throttle', 429, 'rate_limit', true],
44
+ ['server', 500, 'server_error', true],
45
+ ['network', 0, 'network', true],
46
+ ['auth', 401, 'auth', false],
47
+ ['bad_request', 400, 'invalid_request', false],
48
+ // The one that mattered most: a 400 whose kind says the prompt was too
49
+ // long is not a bad request, and the difference decides whether the
50
+ // kernel reaches for compaction.
51
+ ['context_overflow', 400, 'context_length_exceeded', false],
52
+ ]
53
+
54
+ for (const [kind, status, code, retryable] of cases) {
55
+ it(`maps kind "${kind}" to ${code}`, () => {
56
+ const classified = classifyProviderError(typed(kind, status), 'test')
57
+ expect(classified.code).toBe(code)
58
+ expect(classified.retryable).toBe(retryable)
59
+ })
60
+ }
61
+
62
+ it('keeps the driver-supplied status and provider id', () => {
63
+ const classified = classifyProviderError(typed('throttle', 429), 'other')
64
+ expect(classified.status).toBe(429)
65
+ expect(classified.providerId).toBe('test')
66
+ })
67
+ })
68
+
69
+ describe('a classified failure still goes through the retry loop', () => {
70
+ it('retries a typed throttle', async () => {
71
+ // This is the regression: a first-party driver reporting a 429 as
72
+ // `kind: 'throttle'` used to get exactly one attempt, while the same
73
+ // failure from a driver that classified nothing got the full backoff.
74
+ const { provider, calls } = providerThatFails(typed('throttle', 429))
75
+ const wrapped = withProviderRetry(provider, {
76
+ config: { maxRetries: 2 },
77
+ sleepFn: async () => {},
78
+ random: () => 0,
79
+ })
80
+
81
+ await expect(async () => {
82
+ for await (const _ of wrapped.chatStream({} as never)) {
83
+ // drain
84
+ }
85
+ }).rejects.toThrow()
86
+
87
+ expect(calls()).toBe(3)
88
+ })
89
+
90
+ it('does not retry a typed auth failure', async () => {
91
+ const { provider, calls } = providerThatFails(typed('auth', 401))
92
+ const wrapped = withProviderRetry(provider, {
93
+ config: { maxRetries: 2 },
94
+ sleepFn: async () => {},
95
+ })
96
+
97
+ await expect(async () => {
98
+ for await (const _ of wrapped.chatStream({} as never)) {
99
+ // drain
100
+ }
101
+ }).rejects.toThrow()
102
+
103
+ expect(calls()).toBe(1)
104
+ })
105
+
106
+ it('does not retry a typed context overflow', async () => {
107
+ // Correctly non-retryable — an identical prompt overflows identically.
108
+ // The remedy is compaction, which the run loop reaches for once the
109
+ // code is `context_length_exceeded`.
110
+ const { provider, calls } = providerThatFails(typed('context_overflow', 400))
111
+ const wrapped = withProviderRetry(provider, {
112
+ config: { maxRetries: 2 },
113
+ sleepFn: async () => {},
114
+ })
115
+
116
+ await expect(async () => {
117
+ for await (const _ of wrapped.chatStream({} as never)) {
118
+ // drain
119
+ }
120
+ // The ORIGINAL escapes, so the boundary still sees the driver's
121
+ // own kind rather than a wrapper's code.
122
+ }).rejects.toMatchObject({ kind: 'context_overflow', status: 400 })
123
+
124
+ expect(calls()).toBe(1)
125
+ })
126
+
127
+ it('leaves an abort alone', async () => {
128
+ const abort = Object.assign(new Error('aborted'), { name: 'AbortError' })
129
+ const { provider, calls } = providerThatFails(abort)
130
+ const wrapped = withProviderRetry(provider, {
131
+ config: { maxRetries: 2 },
132
+ sleepFn: async () => {},
133
+ })
134
+
135
+ await expect(async () => {
136
+ for await (const _ of wrapped.chatStream({} as never)) {
137
+ // drain
138
+ }
139
+ }).rejects.toThrow(/aborted/)
140
+
141
+ expect(calls()).toBe(1)
142
+ })
143
+ })
@@ -111,12 +111,19 @@ export function withProviderRetry(
111
111
  return
112
112
  } catch (err) {
113
113
  if (isAbortError(err) || params.signal?.aborted) throw err
114
- // A driver that already classified its own failure has said
115
- // everything this layer would: re-wrapping it would replace a
116
- // first-hand statement with a guess, and the run boundary reads
117
- // that classification to choose between a pause and a failure.
118
- if (isProviderRequestError(err)) throw err
119
-
114
+ // A driver that already classified its own failure keeps that
115
+ // classification `classifyProviderError` reads its `kind`
116
+ // first and does not re-guess.
117
+ //
118
+ // This used to rethrow such an error outright. The stated reason
119
+ // was sound and the code did more than it said: preserving a
120
+ // first-hand classification is one thing, and skipping the retry
121
+ // loop is another. A first-party driver that correctly reported
122
+ // a 429 as `kind: 'throttle'` got ZERO attempts, while the same
123
+ // failure from a driver that classified nothing got the full
124
+ // backoff — so diagnosing your own error was punished. Whether
125
+ // to retry is now decided the same way for both, by the
126
+ // classification's own `retryable`.
120
127
  const classified = classifyProviderError(err, provider.id)
121
128
  const exhausted = attempt >= config.maxRetries
122
129
 
@@ -133,7 +140,16 @@ export function withProviderRetry(
133
140
  ? 'retries exhausted'
134
141
  : 'not retryable',
135
142
  })
136
- throw classified
143
+ // The ORIGINAL escapes when the driver classified it. Two
144
+ // different consumers want two different things and both are
145
+ // right: this loop needs a retryable verdict, which the
146
+ // classification supplies, and the run boundary reports
147
+ // `lastProviderError` as the driver's own `{kind, status,
148
+ // retryAfterMs}`, which only survives if the error itself
149
+ // does. Wrapping here would have kept the retry fix and lost
150
+ // the vendor's `kind` at the boundary — the existing
151
+ // stream-recovery test caught exactly that.
152
+ throw isProviderRequestError(err) ? err : classified
137
153
  }
138
154
 
139
155
  const serverDirected = classified.retryAfterMs
@@ -12,6 +12,10 @@
12
12
  // ─── Tool definition primitive ───────────────────────────────────────────
13
13
 
14
14
  export { defineTool } from './tools/defineTool.js'
15
+ // Containment, for a host or sibling package that resolves caller-supplied
16
+ // paths against a root. Both were internal while three call sites outside
17
+ // this file needed them.
18
+ export { isWithin, resolveWithin, resolveWithinReal } from './tools/paths.js'
15
19
  // A host that surfaces its own untrusted content to a model needs the same
16
20
  // framing the kernel applies to connector prompts and delegated results.
17
21
  export { neutralizeEnvelopeDelimiter, wrapUntrusted } from './tools/untrusted-envelope.js'
@@ -182,6 +182,11 @@ describe('query stream recovery', () => {
182
182
  const run = await drainQuery(
183
183
  {
184
184
  provider: new ClassifiedFailureProvider(),
185
+ // Retry off: this pins METADATA at the boundary, and a throttle
186
+ // is genuinely retryable — leaving retry on would spend the run's
187
+ // whole timeout backing off and settle it as a timeout instead,
188
+ // testing the retry policy rather than the thing named here.
189
+ retry: { maxRetries: 0 },
185
190
  tools: new ToolRegistry(),
186
191
  runConfig: {
187
192
  model: 'mock-model',
@@ -362,6 +362,62 @@ function codeFromStructure(err: unknown): ProviderErrorCode | undefined {
362
362
  *
363
363
  * Aborts are passed through untouched — see {@link isAbortError}.
364
364
  */
365
+ /**
366
+ * Every `ProviderErrorKind`, mapped to what the runtime acts on.
367
+ *
368
+ * Read structurally rather than with `instanceof`: a driver in one package
369
+ * throws this and the runtime in another reads it, and two copies of the SDK
370
+ * in one process make `instanceof` unreliable — the same reason
371
+ * `isProviderRequestError` exists.
372
+ *
373
+ * `retryable` here is about whether resending the SAME request could succeed.
374
+ * `context_overflow` is correctly false — an identical prompt overflows
375
+ * identically — and it maps to `context_length_exceeded` so the loop can reach
376
+ * for compaction, which is a different remedy than a retry.
377
+ */
378
+ const KIND_TO_CODE: Readonly<Record<string, { code: ProviderErrorCode; retryable: boolean }>> = {
379
+ throttle: { code: 'rate_limit', retryable: true },
380
+ network: { code: 'network', retryable: true },
381
+ server: { code: 'server_error', retryable: true },
382
+ auth: { code: 'auth', retryable: false },
383
+ context_overflow: { code: 'context_length_exceeded', retryable: false },
384
+ bad_request: { code: 'invalid_request', retryable: false },
385
+ }
386
+
387
+ function classifyFromProviderRequestError(
388
+ err: unknown,
389
+ providerId: string | undefined,
390
+ now: number,
391
+ ): ProviderError | undefined {
392
+ if (!(err instanceof Error) || err.name !== 'ProviderRequestError') return undefined
393
+ const candidate = err as Error & {
394
+ kind?: unknown
395
+ providerId?: unknown
396
+ status?: unknown
397
+ retryAfterMs?: unknown
398
+ }
399
+ if (typeof candidate.kind !== 'string') return undefined
400
+ const mapped = KIND_TO_CODE[candidate.kind]
401
+ if (!mapped) return undefined
402
+
403
+ const retryAfterMs =
404
+ typeof candidate.retryAfterMs === 'number' ? candidate.retryAfterMs : readRetryAfterMs(err, now)
405
+
406
+ return new ProviderError({
407
+ code: mapped.code,
408
+ message: err.message,
409
+ retryable: mapped.retryable,
410
+ cause: err,
411
+ ...(typeof candidate.providerId === 'string'
412
+ ? { providerId: candidate.providerId }
413
+ : providerId !== undefined
414
+ ? { providerId }
415
+ : {}),
416
+ ...(typeof candidate.status === 'number' ? { status: candidate.status } : {}),
417
+ ...(retryAfterMs !== undefined ? { retryAfterMs } : {}),
418
+ })
419
+ }
420
+
365
421
  export function classifyProviderError(
366
422
  err: unknown,
367
423
  providerId?: string,
@@ -369,6 +425,21 @@ export function classifyProviderError(
369
425
  ): ProviderError {
370
426
  if (isProviderError(err)) return err
371
427
 
428
+ // A driver that already classified its own failure is read FIRST, and by
429
+ // its `kind` — the field it set on purpose.
430
+ //
431
+ // Without this the classifier fell through to the status heuristics, where
432
+ // a `ProviderRequestError` carrying `kind: 'context_overflow'` and a 400
433
+ // became `invalid_request`, non-retryable. Three of the six kinds landed
434
+ // wrong that way, and the consequences were not cosmetic: the loop's
435
+ // overflow branch tests for `context_length_exceeded`, so compaction relief
436
+ // — the one provider failure this kernel can actually do something about —
437
+ // was unreachable for exactly the drivers that had diagnosed it correctly.
438
+ // A driver that classified its own error came out worse than one that did
439
+ // not, which is the opposite of the incentive the type was created for.
440
+ const fromKind = classifyFromProviderRequestError(err, providerId, now)
441
+ if (fromKind) return fromKind
442
+
372
443
  const message = err instanceof Error ? err.message : String(err)
373
444
  const status = readStatus(err)
374
445
  const errno = readErrnoCode(err)