@namzu/sdk 23.0.0 → 25.0.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.
Files changed (60) hide show
  1. package/CHANGELOG.md +94 -0
  2. package/dist/agents/ReactiveAgent.d.ts.map +1 -1
  3. package/dist/agents/ReactiveAgent.js +3 -0
  4. package/dist/agents/ReactiveAgent.js.map +1 -1
  5. package/dist/provider/retry.d.ts +10 -5
  6. package/dist/provider/retry.d.ts.map +1 -1
  7. package/dist/provider/retry.js +1 -29
  8. package/dist/provider/retry.js.map +1 -1
  9. package/dist/public-runtime.d.ts +1 -0
  10. package/dist/public-runtime.d.ts.map +1 -1
  11. package/dist/public-runtime.js.map +1 -1
  12. package/dist/runtime/query/executor.d.ts +34 -0
  13. package/dist/runtime/query/executor.d.ts.map +1 -1
  14. package/dist/runtime/query/executor.js +61 -0
  15. package/dist/runtime/query/executor.js.map +1 -1
  16. package/dist/runtime/query/index.d.ts +31 -13
  17. package/dist/runtime/query/index.d.ts.map +1 -1
  18. package/dist/runtime/query/index.js +28 -6
  19. package/dist/runtime/query/index.js.map +1 -1
  20. package/dist/runtime/query/iteration/index.d.ts.map +1 -1
  21. package/dist/runtime/query/iteration/index.js +178 -20
  22. package/dist/runtime/query/iteration/index.js.map +1 -1
  23. package/dist/runtime/query/iteration/stream-turn.d.ts +14 -1
  24. package/dist/runtime/query/iteration/stream-turn.d.ts.map +1 -1
  25. package/dist/runtime/query/iteration/stream-turn.js +19 -3
  26. package/dist/runtime/query/iteration/stream-turn.js.map +1 -1
  27. package/dist/runtime/query/resume-pending.d.ts.map +1 -1
  28. package/dist/runtime/query/resume-pending.js +10 -1
  29. package/dist/runtime/query/resume-pending.js.map +1 -1
  30. package/dist/runtime/query/tool-pause.d.ts +35 -0
  31. package/dist/runtime/query/tool-pause.d.ts.map +1 -1
  32. package/dist/runtime/query/tool-pause.js +35 -0
  33. package/dist/runtime/query/tool-pause.js.map +1 -1
  34. package/dist/runtime/query/tooling.d.ts +2 -0
  35. package/dist/runtime/query/tooling.d.ts.map +1 -1
  36. package/dist/runtime/query/tooling.js +3 -0
  37. package/dist/runtime/query/tooling.js.map +1 -1
  38. package/dist/types/agent/reactive.d.ts +1 -0
  39. package/dist/types/agent/reactive.d.ts.map +1 -1
  40. package/dist/types/run/step.d.ts +75 -3
  41. package/dist/types/run/step.d.ts.map +1 -1
  42. package/dist/types/run/step.js.map +1 -1
  43. package/dist/utils/backoff.d.ts +44 -0
  44. package/dist/utils/backoff.d.ts.map +1 -0
  45. package/dist/utils/backoff.js +58 -0
  46. package/dist/utils/backoff.js.map +1 -0
  47. package/package.json +1 -1
  48. package/src/agents/ReactiveAgent.ts +3 -0
  49. package/src/provider/retry.ts +10 -35
  50. package/src/public-runtime.ts +5 -0
  51. package/src/runtime/query/executor.ts +74 -0
  52. package/src/runtime/query/index.ts +59 -18
  53. package/src/runtime/query/iteration/index.ts +199 -22
  54. package/src/runtime/query/iteration/stream-turn.ts +24 -3
  55. package/src/runtime/query/resume-pending.ts +10 -1
  56. package/src/runtime/query/tool-pause.ts +37 -0
  57. package/src/runtime/query/tooling.ts +5 -0
  58. package/src/types/agent/reactive.ts +1 -0
  59. package/src/types/run/step.ts +76 -3
  60. package/src/utils/backoff.ts +70 -0
@@ -1 +1 @@
1
- {"version":3,"file":"resume-pending.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/resume-pending.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,KAAK,EACX,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAEnD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IACpC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;IACzC,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAChC,UAAU,EAAE,mBAAmB,EAC/B,QAAQ,EAAE,kBAAkB,EAC5B,GAAG,EAAE,MAAM,GACT,iBAAiB,GAAG,IAAI,CAyD1B;AAwDD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC9B,UAAU,EAAE,mBAAmB,EAC/B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,GAAG,EAAE,MAAM,GACT,iBAAiB,GAAG,IAAI,CAsB1B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAC1C,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAsB5D;AA+ED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,QAAQ,EAAE,CAS5E"}
1
+ {"version":3,"file":"resume-pending.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/resume-pending.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACtE,OAAO,KAAK,EACX,YAAY,EACZ,kBAAkB,EAClB,mBAAmB,EACnB,MAAM,2BAA2B,CAAA;AAClC,OAAO,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAGnD;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,iBAAiB;IACjC;;;;OAIG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IACpC,kDAAkD;IAClD,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;IACzC,mDAAmD;IACnD,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAA;IACjC;;;OAGG;IACH,QAAQ,CAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CACjC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAChC,UAAU,EAAE,mBAAmB,EAC/B,QAAQ,EAAE,kBAAkB,EAC5B,GAAG,EAAE,MAAM,GACT,iBAAiB,GAAG,IAAI,CAyD1B;AAgED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC9B,UAAU,EAAE,mBAAmB,EAC/B,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,EACvC,GAAG,EAAE,MAAM,GACT,iBAAiB,GAAG,IAAI,CAsB1B;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACvC,IAAI,EAAE,iBAAiB,EACvB,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,YAAY,EACtB,KAAK,CAAC,EAAE,gBAAgB,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAC1C,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,SAAS,QAAQ,EAAE,EAC9B,GAAG,EAAE,MAAM,GACT,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAsB5D;AA+ED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,SAAS,OAAO,EAAE,GAAG,QAAQ,EAAE,CAS5E"}
@@ -1,4 +1,5 @@
1
1
  import { PendingAnswers } from './question-park.js';
2
+ import { isPauseForCall } from './tool-pause.js';
2
3
  /**
3
4
  * Decide whether a restored checkpoint can have `decision` applied to it
4
5
  * directly.
@@ -94,7 +95,15 @@ function planQuestionResume(checkpoint, decision, questionId, log) {
94
95
  // otherwise have its answer delivered to whatever tool now holds that
95
96
  // slot — the misdirection the asking tool's own id guard exists to
96
97
  // prevent, checked here too because by then the tool has been entered.
97
- if (!assistant.toolCalls.some((tc) => tc.id === questionId)) {
98
+ //
99
+ // Through `isPauseForCall` rather than by equality, because a parked
100
+ // question id is not a call id. The general seam appends the tool
101
+ // author's pause name to it, so equality compared
102
+ // `call_1:target_environment` against `call_1`, could never hold, and
103
+ // refused every cross-process resume of a host-authored pause. Only
104
+ // the built-in question tool got through, and only because it parks
105
+ // under the bare tool-use id.
106
+ if (!assistant.toolCalls.some((tc) => isPauseForCall(questionId, tc.id))) {
98
107
  log.error('The parked question does not belong to any unanswered call in this turn', {
99
108
  checkpointId: checkpoint.id,
100
109
  questionId,
@@ -1 +1 @@
1
- {"version":3,"file":"resume-pending.js","sourceRoot":"","sources":["../../../src/runtime/query/resume-pending.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resume-pending.js","sourceRoot":"","sources":["../../../src/runtime/query/resume-pending.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,41 @@ import type { PendingAnswers, QuestionParkRecorder } from './question-park.js';
29
29
  * author's, so a resume payload can name what it is answering.
30
30
  */
31
31
  export declare const pauseId: (toolUseId: string, name: string) => string;
32
+ /**
33
+ * Does this pause id belong to `callId`?
34
+ *
35
+ * The other half of the scheme above, and it lives beside the mint rather
36
+ * than at the gate that asks it, so the two cannot drift apart again. They
37
+ * already had: the resume gate compared the whole parked id against a raw
38
+ * tool-use id, which a composite can never equal, so a pause raised
39
+ * through {@link createToolPause} was refused by every cross-process
40
+ * resume — while the built-in question tool, whose `questionId` IS the raw
41
+ * id, passed the same gate and worked.
42
+ *
43
+ * Asked against an id actually present in the turn rather than by
44
+ * splitting the composite on `:`. The left half is the provider's tool-use
45
+ * id and nothing forbids a colon in it, so a split takes `call:9:confirm`
46
+ * apart at the wrong place and then compares against `call` — a string no
47
+ * provider minted. Testing a `<callId>:` prefix asks about candidates that
48
+ * exist instead.
49
+ *
50
+ * It is not exact, and the inexactness is bounded rather than absent: a
51
+ * call whose id is literally `call` matches a pause raised on `call:9`.
52
+ * That costs nothing while the real call is also in the turn, because the
53
+ * pause does belong to a call there; and when it is not, the answer is
54
+ * filed under a key no tool asks for, so the tool asks again. A resume
55
+ * that re-asks, never one that misdelivers — routing below is still an
56
+ * exact key match.
57
+ *
58
+ * Membership only — is there a call in this turn that this pause was
59
+ * raised from. The full composite still ROUTES the answer, by exact key in
60
+ * `PendingAnswers`, which is what keeps a call that pauses twice from
61
+ * delivering its second answer against its first question.
62
+ *
63
+ * Every sentence above that names a condition and an outcome is pinned in
64
+ * `__tests__/tool-pause.test.ts`, under "the id a resume gate matches on".
65
+ */
66
+ export declare const isPauseForCall: (pause: string, callId: string) => boolean;
32
67
  interface ToolPauseDeps {
33
68
  readonly runId: RunId;
34
69
  readonly toolUseId: string;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-pause.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/tool-pause.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,aAAa,EAAoB,MAAM,2BAA2B,CAAA;AACpG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,2BAA2B,CAAA;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE9E;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,WAAW,MAAM,EAAE,MAAM,MAAM,KAAG,MAAgC,CAAA;AAE1F,UAAU,aAAa;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;CACxC;AA0BD,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,gBAAgB,CAoDrE"}
1
+ {"version":3,"file":"tool-pause.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/tool-pause.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,aAAa,EAAoB,MAAM,2BAA2B,CAAA;AACpG,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,2BAA2B,CAAA;AACnF,OAAO,KAAK,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE9E;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;;;GAQG;AACH,eAAO,MAAM,OAAO,GAAI,WAAW,MAAM,EAAE,MAAM,MAAM,KAAG,MAAgC,CAAA;AAE1F;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,EAAE,QAAQ,MAAM,KAAG,OACZ,CAAA;AAEnD,UAAU,aAAa;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAA;IACrB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,WAAW,EAAE,aAAa,CAAA;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE,oBAAoB,CAAA;IACxC,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;CACxC;AA0BD,wBAAgB,eAAe,CAAC,IAAI,EAAE,aAAa,GAAG,gBAAgB,CAoDrE"}
@@ -25,6 +25,41 @@
25
25
  * author's, so a resume payload can name what it is answering.
26
26
  */
27
27
  export const pauseId = (toolUseId, name) => `${toolUseId}:${name}`;
28
+ /**
29
+ * Does this pause id belong to `callId`?
30
+ *
31
+ * The other half of the scheme above, and it lives beside the mint rather
32
+ * than at the gate that asks it, so the two cannot drift apart again. They
33
+ * already had: the resume gate compared the whole parked id against a raw
34
+ * tool-use id, which a composite can never equal, so a pause raised
35
+ * through {@link createToolPause} was refused by every cross-process
36
+ * resume — while the built-in question tool, whose `questionId` IS the raw
37
+ * id, passed the same gate and worked.
38
+ *
39
+ * Asked against an id actually present in the turn rather than by
40
+ * splitting the composite on `:`. The left half is the provider's tool-use
41
+ * id and nothing forbids a colon in it, so a split takes `call:9:confirm`
42
+ * apart at the wrong place and then compares against `call` — a string no
43
+ * provider minted. Testing a `<callId>:` prefix asks about candidates that
44
+ * exist instead.
45
+ *
46
+ * It is not exact, and the inexactness is bounded rather than absent: a
47
+ * call whose id is literally `call` matches a pause raised on `call:9`.
48
+ * That costs nothing while the real call is also in the turn, because the
49
+ * pause does belong to a call there; and when it is not, the answer is
50
+ * filed under a key no tool asks for, so the tool asks again. A resume
51
+ * that re-asks, never one that misdelivers — routing below is still an
52
+ * exact key match.
53
+ *
54
+ * Membership only — is there a call in this turn that this pause was
55
+ * raised from. The full composite still ROUTES the answer, by exact key in
56
+ * `PendingAnswers`, which is what keeps a call that pauses twice from
57
+ * delivering its second answer against its first question.
58
+ *
59
+ * Every sentence above that names a condition and an outcome is pinned in
60
+ * `__tests__/tool-pause.test.ts`, under "the id a resume gate matches on".
61
+ */
62
+ export const isPauseForCall = (pause, callId) => pause === callId || pause.startsWith(`${callId}:`);
28
63
  function toQuestion(request, id) {
29
64
  return {
30
65
  questionId: id,
@@ -1 +1 @@
1
- {"version":3,"file":"tool-pause.js","sourceRoot":"","sources":["../../../src/runtime/query/tool-pause.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-pause.js","sourceRoot":"","sources":["../../../src/runtime/query/tool-pause.ts"],"names":[],"mappings":"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"}
@@ -6,6 +6,7 @@ import type { PermissionMode } from '../../types/permission/index.js';
6
6
  import type { RunEvent } from '../../types/run/index.js';
7
7
  import type { RequestToolPause, ToolRegistryContract } from '../../types/tool/index.js';
8
8
  import type { RepairToolCall } from '../../types/tool/repair.js';
9
+ import type { BackoffPolicy } from '../../utils/backoff.js';
9
10
  import type { Logger } from '../../utils/logger.js';
10
11
  import { ToolExecutor } from './executor.js';
11
12
  export type EmitEvent = (event: RunEvent) => Promise<void>;
@@ -20,6 +21,7 @@ export interface ToolingBootstrapConfig {
20
21
  invocationState?: InvocationState;
21
22
  pluginManager?: PluginLifecycleManager;
22
23
  toolTimeoutMs?: number;
24
+ toolRetryBackoff?: Partial<BackoffPolicy>;
23
25
  maxToolConcurrency?: number;
24
26
  maxToolOutputChars?: number;
25
27
  maxToolContentBytes?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"tooling.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/tooling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE1D,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,oBAAoB,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,cAAc,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,aAAa,CAAC,EAAE,sBAAsB,CAAA;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,qFAAqF;IACrF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,gBAAgB,CAAA;CACnD;AAED,qBAAa,gBAAgB;IAC5B,MAAM,CAAC,IAAI,CACV,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,GACT,YAAY;CA+Bf"}
1
+ {"version":3,"file":"tooling.d.ts","sourceRoot":"","sources":["../../../src/runtime/query/tooling.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAA;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAA;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAA;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAA;AACvF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAA;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAE5C,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,QAAQ,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;AAE1D,MAAM,WAAW,sBAAsB;IACtC,KAAK,EAAE,oBAAoB,CAAA;IAC3B,KAAK,EAAE,KAAK,CAAA;IACZ,gBAAgB,EAAE,MAAM,CAAA;IACxB,cAAc,EAAE,cAAc,CAAA;IAC9B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,WAAW,EAAE,WAAW,CAAA;IACxB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC,eAAe,CAAC,EAAE,eAAe,CAAA;IACjC,aAAa,CAAC,EAAE,sBAAsB,CAAA;IACtC,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAA;IACzC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,cAAc,CAAC,EAAE,cAAc,CAAA;IAC/B,qFAAqF;IACrF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,gBAAgB,CAAA;CACnD;AAED,qBAAa,gBAAgB;IAC5B,MAAM,CAAC,IAAI,CACV,MAAM,EAAE,sBAAsB,EAC9B,aAAa,EAAE,aAAa,EAC5B,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,MAAM,GACT,YAAY;CAkCf"}
@@ -12,6 +12,9 @@ export class ToolingBootstrap {
12
12
  invocationState: config.invocationState,
13
13
  pluginManager: config.pluginManager,
14
14
  ...(config.toolTimeoutMs !== undefined ? { toolTimeoutMs: config.toolTimeoutMs } : {}),
15
+ ...(config.toolRetryBackoff !== undefined
16
+ ? { toolRetryBackoff: config.toolRetryBackoff }
17
+ : {}),
15
18
  ...(config.maxToolConcurrency !== undefined
16
19
  ? { maxToolConcurrency: config.maxToolConcurrency }
17
20
  : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"tooling.js","sourceRoot":"","sources":["../../../src/runtime/query/tooling.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAwB5C,MAAM,OAAO,gBAAgB;IAC5B,MAAM,CAAC,IAAI,CACV,MAA8B,EAC9B,aAA4B,EAC5B,SAAoB,EACpB,GAAW;QAEX,OAAO,IAAI,YAAY,CACtB;YACC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE;gBACrD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,EACD,aAAa,EACb,SAAS,EACT,GAAG,CACH,CAAA;IACF,CAAC;CACD"}
1
+ {"version":3,"file":"tooling.js","sourceRoot":"","sources":["../../../src/runtime/query/tooling.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAyB5C,MAAM,OAAO,gBAAgB;IAC5B,MAAM,CAAC,IAAI,CACV,MAA8B,EAC9B,aAA4B,EAC5B,SAAoB,EACpB,GAAW;QAEX,OAAO,IAAI,YAAY,CACtB;YACC,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;YACzC,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;gBACxC,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE;gBAC/C,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,kBAAkB,KAAK,SAAS;gBAC1C,CAAC,CAAC,EAAE,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,EAAE;gBACnD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS;gBAC3C,CAAC,CAAC,EAAE,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,EAAE;gBACrD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,MAAM,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzF,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1E,EACD,aAAa,EACb,SAAS,EACT,GAAG,CACH,CAAA;IACF,CAAC;CACD"}
@@ -76,6 +76,7 @@ export interface ReactiveAgentConfig extends BaseAgentConfig {
76
76
  retry?: QueryParams['retry'];
77
77
  emergencySave?: boolean;
78
78
  toolTimeoutMs?: number;
79
+ toolRetryBackoff?: QueryParams['toolRetryBackoff'];
79
80
  maxToolConcurrency?: number;
80
81
  maxToolOutputChars?: number;
81
82
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../../../src/types/agent/reactive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reactive.d.ts","sourceRoot":"","sources":["../../../src/types/agent/reactive.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { CostInfo, TokenUsage } from '../common/index.js';
2
2
  import type { MessageId } from '../ids/index.js';
3
3
  import type { ToolCall } from '../message/index.js';
4
+ import type { ProviderErrorCode } from '../provider/errors.js';
4
5
  /**
5
6
  * What one iteration of the agent loop did.
6
7
  *
@@ -54,13 +55,56 @@ export interface StepResult {
54
55
  * it is handed.
55
56
  */
56
57
  servedBy?: StepProvenance;
57
- messageId: MessageId;
58
+ /**
59
+ * The assistant message this step produced.
60
+ *
61
+ * Absent only on a step whose iteration ended before the model's message
62
+ * was announced — a compaction failure, a lifecycle hook that threw, a
63
+ * transport error raised before the first chunk. Absence is left meaning
64
+ * "there was no message" rather than filled with an id the event stream
65
+ * never carried: a `messageId` a reader cannot find a `message_started`
66
+ * for is worse evidence than no id at all, because it invites the
67
+ * correlation and then loses it.
68
+ *
69
+ * Present, and correlatable, on every step whose iteration got as far as
70
+ * the provider call — including one that failed mid-stream. The loop
71
+ * mints the id before the call that announces it, and a dying stream
72
+ * emits `message_completed` on its way out, so the events carry both
73
+ * ends of the message a failed step points at.
74
+ */
75
+ messageId?: MessageId;
58
76
  /** Assistant text for this step, if any. */
59
77
  content: string | null;
60
78
  toolCalls: readonly ToolCall[];
61
- /** Tool outcomes, in the same order as `toolCalls`. */
79
+ /**
80
+ * Tool outcomes, in the same order as `toolCalls`.
81
+ *
82
+ * Shorter than `toolCalls` on a step that ended in failure: only the
83
+ * outcomes that exist are recorded, so a call with no entry here reads
84
+ * as "never came back" rather than as an empty success. Pair by
85
+ * `toolCallId`, not by index.
86
+ */
62
87
  toolResults: readonly StepToolResult[];
63
- finishReason: 'stop' | 'tool_calls' | 'length' | 'content_filter';
88
+ /**
89
+ * How the turn ended.
90
+ *
91
+ * `error` and `cancelled` are not provider verdicts — no provider reports
92
+ * them — but a step exists for a failed iteration too, and it has to say
93
+ * how it ended in the same field a reader already sorts by. `error` comes
94
+ * with {@link failure}; `cancelled` means a Stop tore the turn down and
95
+ * there is no failure to report.
96
+ */
97
+ finishReason: 'stop' | 'tool_calls' | 'length' | 'content_filter' | 'error' | 'cancelled';
98
+ /**
99
+ * What went wrong, on a step with `finishReason: 'error'`.
100
+ *
101
+ * Absent everywhere else. A run whose ledger is complete except on the
102
+ * turns that failed reads as "nothing went wrong" precisely when
103
+ * something did, which is worse than an absent record — so the failed
104
+ * turn gets the same record as every other, and this is what makes it
105
+ * legible as a failure.
106
+ */
107
+ failure?: StepFailure;
64
108
  /** Usage for THIS step, not the run's cumulative total. */
65
109
  usage: TokenUsage;
66
110
  /** Cost delta attributable to this step. Zero without a pricing table. */
@@ -85,6 +129,34 @@ export interface StepProvenance {
85
129
  /** 0 is the head, i.e. the provider the run was configured with. */
86
130
  readonly chainIndex: number;
87
131
  }
132
+ /**
133
+ * Why a step ended in `finishReason: 'error'`.
134
+ *
135
+ * The step-level counterpart of the pair a failed run already carries —
136
+ * {@link import('./entity.js').Run.lastError} and
137
+ * {@link import('./entity.js').Run.lastProviderError} — and shaped from the
138
+ * same classification, so the two agree when the failed step is the one that
139
+ * ended the run. What a run records once, a run of twenty iterations records
140
+ * per iteration, which is the difference between "this run failed" and "this
141
+ * turn failed, and the next four succeeded".
142
+ */
143
+ export interface StepFailure {
144
+ /** The failure's message, as the iteration's span and log recorded it. */
145
+ readonly message: string;
146
+ /**
147
+ * Where the classifier placed it.
148
+ *
149
+ * `unknown` for a failure that is not a provider failure at all — a
150
+ * plugin hook that threw, a bug in a tool wrapper. That is the honest
151
+ * reading of the code's own contract ("unclassifiable"), and it is left
152
+ * saying so rather than being given a more specific-looking code.
153
+ */
154
+ readonly code: ProviderErrorCode;
155
+ /** HTTP status, when the failure carried one. */
156
+ readonly status?: number;
157
+ /** Whether sending the same request again could have worked. */
158
+ readonly retryable: boolean;
159
+ }
88
160
  export interface StepToolResult {
89
161
  toolCallId: string;
90
162
  toolName: string;
@@ -1 +1 @@
1
- {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../../src/types/run/step.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAEnD;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IAC1B,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAA;IAClB;;;;;;;;;;;;OAYG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAA;IACzB,SAAS,EAAE,SAAS,CAAA;IACpB,4CAA4C;IAC5C,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,EAAE,SAAS,QAAQ,EAAE,CAAA;IAC9B,uDAAuD;IACvD,WAAW,EAAE,SAAS,cAAc,EAAE,CAAA;IACtC,YAAY,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,GAAG,gBAAgB,CAAA;IACjE,2DAA2D;IAC3D,KAAK,EAAE,UAAU,CAAA;IACjB,0EAA0E;IAC1E,SAAS,EAAE,QAAQ,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,+DAA+D;IAC/D,UAAU,EAAE,MAAM,CAAA;IAClB,kDAAkD;IAClD,eAAe,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,oEAAoE;IACpE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC3B;AAED,MAAM,WAAW,cAAc;IAC9B,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAA;AAErF,MAAM,WAAW,kBAAkB;IAClC,2CAA2C;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,UAAU,EAAE,CAAA;IACrC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAA;CAC5B;AAED,0CAA0C;AAC1C,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,GAAG,aAAa,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,KAAK,EAAE,MAAM,EAAE,GAAG,aAAa,CAG7D;AAED,kDAAkD;AAClD,wBAAgB,KAAK,CAAC,GAAG,UAAU,EAAE,aAAa,EAAE,GAAG,aAAa,CAOnE"}
1
+ {"version":3,"file":"step.d.ts","sourceRoot":"","sources":["../../../src/types/run/step.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"step.js","sourceRoot":"","sources":["../../../src/types/run/step.ts"],"names":[],"mappings":"AA2HA,0CAA0C;AAC1C,MAAM,UAAU,WAAW,CAAC,CAAS;IACpC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAA;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG,KAAe;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3F,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,KAAK,CAAC,GAAG,UAA2B;IACnD,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACtB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,IAAI,MAAM,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;QACxC,CAAC;QACD,OAAO,KAAK,CAAA;IACb,CAAC,CAAA;AACF,CAAC"}
1
+ {"version":3,"file":"step.js","sourceRoot":"","sources":["../../../src/types/run/step.ts"],"names":[],"mappings":"AAoMA,0CAA0C;AAC1C,MAAM,UAAU,WAAW,CAAC,CAAS;IACpC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAA;AACxC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,GAAG,KAAe;IAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAA;IAC7B,OAAO,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAA;AAC3F,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,KAAK,CAAC,GAAG,UAA2B;IACnD,OAAO,KAAK,EAAE,KAAK,EAAE,EAAE;QACtB,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACpC,IAAI,MAAM,SAAS,CAAC,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;QACxC,CAAC;QACD,OAAO,KAAK,CAAA;IACb,CAAC,CAAA;AACF,CAAC"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Exponential backoff with full jitter, and an abortable sleep.
3
+ *
4
+ * Both were private to `provider/retry.ts`, which is where they were needed
5
+ * first and is not where they stop being needed. The tool executor's in-loop
6
+ * retry re-ran a failed call immediately, several times, which is the pattern
7
+ * most likely to prolong the very condition it is retrying against — and the
8
+ * correct implementation was one directory away, already reviewed, already
9
+ * doing the hard part right.
10
+ *
11
+ * So they live here, in one copy, and both retry loops call them. A second
12
+ * implementation of a backoff curve is a second thing to get wrong, and the
13
+ * two would drift on exactly the axis nobody re-derives: jitter.
14
+ */
15
+ /** The shape a backoff curve needs. */
16
+ export interface BackoffPolicy {
17
+ /** First backoff, doubled each attempt. */
18
+ readonly initialDelayMs: number;
19
+ /** Ceiling for a single backoff, before jitter. */
20
+ readonly maxDelayMs: number;
21
+ }
22
+ /**
23
+ * Full jitter (AWS's formulation): sleep a uniform random amount in
24
+ * `[0, backoff]` rather than `backoff` exactly. Equal-jitter and no-jitter
25
+ * both keep a fleet of clients that failed together retrying together;
26
+ * full jitter is what actually spreads a thundering herd.
27
+ *
28
+ * `attempt` is 0-based: attempt 0 draws from `[0, initialDelayMs]`.
29
+ *
30
+ * The concurrency this matters for is not hypothetical on the tool path. A
31
+ * model emits a batch of parallel calls, they hit one rate-limited endpoint
32
+ * together, and they fail together — so a fixed delay would resynchronise
33
+ * them on every attempt, which is a herd this loop creates itself.
34
+ */
35
+ export declare function backoffWithJitter(attempt: number, policy: BackoffPolicy, random?: () => number): number;
36
+ /**
37
+ * Sleep, unless the signal says not to.
38
+ *
39
+ * Rejects with the signal's reason when aborted — before sleeping if it is
40
+ * already aborted, and mid-sleep otherwise. A caller that must not throw over
41
+ * an abort catches it; a caller that wants the abort to propagate does not.
42
+ */
43
+ export declare function sleep(ms: number, signal?: AbortSignal): Promise<void>;
44
+ //# sourceMappingURL=backoff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backoff.d.ts","sourceRoot":"","sources":["../../src/utils/backoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,uCAAuC;AACvC,MAAM,WAAW,aAAa;IAC7B,2CAA2C;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAChC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,aAAa,EACrB,MAAM,GAAE,MAAM,MAAoB,GAChC,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBrE"}
@@ -0,0 +1,58 @@
1
+ /**
2
+ * Exponential backoff with full jitter, and an abortable sleep.
3
+ *
4
+ * Both were private to `provider/retry.ts`, which is where they were needed
5
+ * first and is not where they stop being needed. The tool executor's in-loop
6
+ * retry re-ran a failed call immediately, several times, which is the pattern
7
+ * most likely to prolong the very condition it is retrying against — and the
8
+ * correct implementation was one directory away, already reviewed, already
9
+ * doing the hard part right.
10
+ *
11
+ * So they live here, in one copy, and both retry loops call them. A second
12
+ * implementation of a backoff curve is a second thing to get wrong, and the
13
+ * two would drift on exactly the axis nobody re-derives: jitter.
14
+ */
15
+ /**
16
+ * Full jitter (AWS's formulation): sleep a uniform random amount in
17
+ * `[0, backoff]` rather than `backoff` exactly. Equal-jitter and no-jitter
18
+ * both keep a fleet of clients that failed together retrying together;
19
+ * full jitter is what actually spreads a thundering herd.
20
+ *
21
+ * `attempt` is 0-based: attempt 0 draws from `[0, initialDelayMs]`.
22
+ *
23
+ * The concurrency this matters for is not hypothetical on the tool path. A
24
+ * model emits a batch of parallel calls, they hit one rate-limited endpoint
25
+ * together, and they fail together — so a fixed delay would resynchronise
26
+ * them on every attempt, which is a herd this loop creates itself.
27
+ */
28
+ export function backoffWithJitter(attempt, policy, random = Math.random) {
29
+ const exponential = Math.min(policy.initialDelayMs * 2 ** attempt, policy.maxDelayMs);
30
+ return Math.round(random() * exponential);
31
+ }
32
+ /**
33
+ * Sleep, unless the signal says not to.
34
+ *
35
+ * Rejects with the signal's reason when aborted — before sleeping if it is
36
+ * already aborted, and mid-sleep otherwise. A caller that must not throw over
37
+ * an abort catches it; a caller that wants the abort to propagate does not.
38
+ */
39
+ export function sleep(ms, signal) {
40
+ if (ms <= 0)
41
+ return Promise.resolve();
42
+ return new Promise((resolve, reject) => {
43
+ if (signal?.aborted) {
44
+ reject(signal.reason);
45
+ return;
46
+ }
47
+ const timer = setTimeout(() => {
48
+ signal?.removeEventListener('abort', onAbort);
49
+ resolve();
50
+ }, ms);
51
+ const onAbort = () => {
52
+ clearTimeout(timer);
53
+ reject(signal?.reason);
54
+ };
55
+ signal?.addEventListener('abort', onAbort, { once: true });
56
+ });
57
+ }
58
+ //# sourceMappingURL=backoff.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backoff.js","sourceRoot":"","sources":["../../src/utils/backoff.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,iBAAiB,CAChC,OAAe,EACf,MAAqB,EACrB,SAAuB,IAAI,CAAC,MAAM;IAElC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,GAAG,CAAC,IAAI,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAA;IACrF,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAA;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,KAAK,CAAC,EAAU,EAAE,MAAoB;IACrD,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IACrC,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YACrB,OAAM;QACP,CAAC;QACD,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC7B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC7C,OAAO,EAAE,CAAA;QACV,CAAC,EAAE,EAAE,CAAC,CAAA;QACN,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;QACvB,CAAC,CAAA;QACD,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,CAAC,CAAC,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namzu/sdk",
3
- "version": "23.0.0",
3
+ "version": "25.0.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",
@@ -82,6 +82,9 @@ export class ReactiveAgent extends AbstractAgent<ReactiveAgentConfig, ReactiveAg
82
82
  ...(config.retry !== undefined ? { retry: config.retry } : {}),
83
83
  ...(config.emergencySave !== undefined ? { emergencySave: config.emergencySave } : {}),
84
84
  ...(config.toolTimeoutMs !== undefined ? { toolTimeoutMs: config.toolTimeoutMs } : {}),
85
+ ...(config.toolRetryBackoff !== undefined
86
+ ? { toolRetryBackoff: config.toolRetryBackoff }
87
+ : {}),
85
88
  ...(config.maxToolConcurrency !== undefined
86
89
  ? { maxToolConcurrency: config.maxToolConcurrency }
87
90
  : {}),
@@ -1,15 +1,20 @@
1
1
  import { classifyProviderError, isAbortError } from '../types/provider/errors.js'
2
2
  import type { ChatCompletionParams, LLMProvider, StreamChunk } from '../types/provider/index.js'
3
+ import { type BackoffPolicy, backoffWithJitter, sleep } from '../utils/backoff.js'
3
4
  import type { Logger } from '../utils/logger.js'
4
5
  import { isProviderRequestError } from './errors.js'
5
6
 
6
- export interface ProviderRetryConfig {
7
+ /**
8
+ * `BackoffPolicy` plus the provider-specific parts: how many attempts, and
9
+ * how long a server-directed wait may be honoured for.
10
+ *
11
+ * The curve itself lives in `utils/backoff.ts` and is shared with the tool
12
+ * executor's in-loop retry — which had no backoff at all while this one was
13
+ * being careful about jitter two directories away.
14
+ */
15
+ export interface ProviderRetryConfig extends BackoffPolicy {
7
16
  /** Retry attempts AFTER the initial try. `0` disables retrying. */
8
17
  readonly maxRetries: number
9
- /** First backoff, doubled each attempt. */
10
- readonly initialDelayMs: number
11
- /** Ceiling for a single backoff, before jitter. */
12
- readonly maxDelayMs: number
13
18
  /**
14
19
  * Cap on a server-directed `Retry-After`. A provider asking for 15
15
20
  * minutes should not silently park an interactive run for 15 minutes;
@@ -34,36 +39,6 @@ export const DEFAULT_PROVIDER_RETRY: ProviderRetryConfig = {
34
39
  maxRetryAfterMs: 60_000,
35
40
  }
36
41
 
37
- /**
38
- * Full jitter (AWS's formulation): sleep a uniform random amount in
39
- * `[0, backoff]` rather than `backoff` exactly. Equal-jitter and no-jitter
40
- * both keep a fleet of clients that failed together retrying together;
41
- * full jitter is what actually spreads a thundering herd.
42
- */
43
- function backoffWithJitter(attempt: number, config: ProviderRetryConfig, random: () => number) {
44
- const exponential = Math.min(config.initialDelayMs * 2 ** attempt, config.maxDelayMs)
45
- return Math.round(random() * exponential)
46
- }
47
-
48
- function sleep(ms: number, signal?: AbortSignal): Promise<void> {
49
- if (ms <= 0) return Promise.resolve()
50
- return new Promise<void>((resolve, reject) => {
51
- if (signal?.aborted) {
52
- reject(signal.reason)
53
- return
54
- }
55
- const timer = setTimeout(() => {
56
- signal?.removeEventListener('abort', onAbort)
57
- resolve()
58
- }, ms)
59
- const onAbort = () => {
60
- clearTimeout(timer)
61
- reject(signal?.reason)
62
- }
63
- signal?.addEventListener('abort', onAbort, { once: true })
64
- })
65
- }
66
-
67
42
  export interface WithProviderRetryOptions {
68
43
  readonly config?: Partial<ProviderRetryConfig>
69
44
  readonly log?: Logger
@@ -357,6 +357,11 @@ export type {
357
357
  WithProviderFallbackOptions,
358
358
  WithProviderRetryOptions,
359
359
  } from './provider/index.js'
360
+ // The curve `ProviderRetryConfig` extends and `query({ toolRetryBackoff })`
361
+ // takes a partial of. Both public surfaces name it, so a consumer has to be
362
+ // able to name it too — a type reachable only through an inline `import(...)`
363
+ // in a `.d.ts` is not a type anyone writes down.
364
+ export type { BackoffPolicy } from './utils/backoff.js'
360
365
 
361
366
  export {
362
367
  assertIsolation,