@rarebit-one/harness-kernel 0.7.0 → 0.8.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 (97) hide show
  1. package/README.md +65 -7
  2. package/dist/agent.d.ts +12 -3
  3. package/dist/agent.d.ts.map +1 -1
  4. package/dist/agent.js +191 -94
  5. package/dist/agent.js.map +1 -1
  6. package/dist/connectors/mcpClient.d.ts +6 -1
  7. package/dist/connectors/mcpClient.d.ts.map +1 -1
  8. package/dist/connectors/mcpClient.js +1 -1
  9. package/dist/connectors/mcpClient.js.map +1 -1
  10. package/dist/engines/acp.d.ts +22 -0
  11. package/dist/engines/acp.d.ts.map +1 -1
  12. package/dist/engines/acp.js +45 -10
  13. package/dist/engines/acp.js.map +1 -1
  14. package/dist/engines/acpDriver.d.ts +7 -0
  15. package/dist/engines/acpDriver.d.ts.map +1 -1
  16. package/dist/engines/acpDriver.js +60 -17
  17. package/dist/engines/acpDriver.js.map +1 -1
  18. package/dist/engines/claudeCode.d.ts +6 -0
  19. package/dist/engines/claudeCode.d.ts.map +1 -1
  20. package/dist/engines/claudeCode.js +32 -10
  21. package/dist/engines/claudeCode.js.map +1 -1
  22. package/dist/engines/claudeCodeDriver.d.ts +11 -0
  23. package/dist/engines/claudeCodeDriver.d.ts.map +1 -1
  24. package/dist/engines/claudeCodeDriver.js +35 -5
  25. package/dist/engines/claudeCodeDriver.js.map +1 -1
  26. package/dist/engines/codex.d.ts +12 -0
  27. package/dist/engines/codex.d.ts.map +1 -1
  28. package/dist/engines/codex.js +15 -1
  29. package/dist/engines/codex.js.map +1 -1
  30. package/dist/engines/codexDriver.d.ts.map +1 -1
  31. package/dist/engines/codexDriver.js +51 -12
  32. package/dist/engines/codexDriver.js.map +1 -1
  33. package/dist/engines/native.d.ts.map +1 -1
  34. package/dist/engines/native.js +59 -4
  35. package/dist/engines/native.js.map +1 -1
  36. package/dist/engines/types.d.ts +16 -1
  37. package/dist/engines/types.d.ts.map +1 -1
  38. package/dist/events.d.ts +55 -10
  39. package/dist/events.d.ts.map +1 -1
  40. package/dist/events.js.map +1 -1
  41. package/dist/index.d.ts +5 -5
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +1 -1
  44. package/dist/index.js.map +1 -1
  45. package/dist/loop.d.ts +21 -2
  46. package/dist/loop.d.ts.map +1 -1
  47. package/dist/loop.js +7 -2
  48. package/dist/loop.js.map +1 -1
  49. package/dist/models/chat.d.ts +6 -2
  50. package/dist/models/chat.d.ts.map +1 -1
  51. package/dist/models/chat.js +15 -9
  52. package/dist/models/chat.js.map +1 -1
  53. package/dist/models/types.d.ts +15 -1
  54. package/dist/models/types.d.ts.map +1 -1
  55. package/dist/models/types.js.map +1 -1
  56. package/dist/primitives/codeExec.d.ts +7 -0
  57. package/dist/primitives/codeExec.d.ts.map +1 -1
  58. package/dist/primitives/codeExec.js +32 -4
  59. package/dist/primitives/codeExec.js.map +1 -1
  60. package/dist/primitives/http.d.ts +6 -0
  61. package/dist/primitives/http.d.ts.map +1 -1
  62. package/dist/primitives/http.js +28 -11
  63. package/dist/primitives/http.js.map +1 -1
  64. package/dist/processGroup.d.ts +16 -0
  65. package/dist/processGroup.d.ts.map +1 -0
  66. package/dist/processGroup.js +39 -0
  67. package/dist/processGroup.js.map +1 -0
  68. package/dist/providers/anthropic.d.ts +12 -2
  69. package/dist/providers/anthropic.d.ts.map +1 -1
  70. package/dist/providers/anthropic.js +30 -3
  71. package/dist/providers/anthropic.js.map +1 -1
  72. package/dist/providers/mock.d.ts +2 -2
  73. package/dist/providers/mock.d.ts.map +1 -1
  74. package/dist/providers/mock.js +5 -1
  75. package/dist/providers/mock.js.map +1 -1
  76. package/dist/providers/openai.d.ts +11 -2
  77. package/dist/providers/openai.d.ts.map +1 -1
  78. package/dist/providers/openai.js +25 -5
  79. package/dist/providers/openai.js.map +1 -1
  80. package/dist/providers/types.d.ts +21 -1
  81. package/dist/providers/types.d.ts.map +1 -1
  82. package/dist/signals.d.ts +46 -0
  83. package/dist/signals.d.ts.map +1 -0
  84. package/dist/signals.js +72 -0
  85. package/dist/signals.js.map +1 -0
  86. package/dist/tools/metadata.d.ts +18 -2
  87. package/dist/tools/metadata.d.ts.map +1 -1
  88. package/dist/tools/metadata.js +7 -0
  89. package/dist/tools/metadata.js.map +1 -1
  90. package/dist/tools/modelTool.d.ts.map +1 -1
  91. package/dist/tools/modelTool.js +7 -3
  92. package/dist/tools/modelTool.js.map +1 -1
  93. package/dist/tools/registry.d.ts +24 -5
  94. package/dist/tools/registry.d.ts.map +1 -1
  95. package/dist/tools/registry.js +43 -12
  96. package/dist/tools/registry.js.map +1 -1
  97. package/package.json +3 -3
package/dist/loop.d.ts CHANGED
@@ -61,6 +61,15 @@ export interface LoopRequest {
61
61
  export interface LoopContext {
62
62
  log: (line: string) => void;
63
63
  events: LoopEventEmitter;
64
+ /**
65
+ * The caller's cancellation signal. A loop should stop promptly when it
66
+ * fires and report `outcome: "canceled"` rather than throw; the native loop
67
+ * also threads it (merged with its own deadline) into every model call and
68
+ * every tool call. Absent means the caller cannot cancel.
69
+ */
70
+ signal?: AbortSignal;
71
+ /** The run's id, when the caller has one; handed to tools on `ToolContext`. */
72
+ runId?: string;
64
73
  }
65
74
  /**
66
75
  * What {@link runWithEvents} is given: the same shape, but with the unrestricted
@@ -69,6 +78,10 @@ export interface LoopContext {
69
78
  export interface RunContext {
70
79
  log: (line: string) => void;
71
80
  events: RunEventEmitter;
81
+ /** Passed through to the loop; see {@link LoopContext.signal}. */
82
+ signal?: AbortSignal;
83
+ /** Passed through to the loop; see {@link LoopContext.runId}. */
84
+ runId?: string;
72
85
  }
73
86
  /**
74
87
  * What a loop returns.
@@ -87,7 +100,9 @@ export interface LoopResult {
87
100
  * Why the run stopped. The native loop never *returns* `"failed"` — that path
88
101
  * throws, and the terminal event is emitted before the error propagates. The
89
102
  * value is in the union because a custom loop may legitimately choose to
90
- * report a failure rather than throw one.
103
+ * report a failure rather than throw one. A caller abort or a deadline hit
104
+ * mid-call is NOT a failure: the native loop returns `"canceled"` or
105
+ * `"timed_out"` with the prose it had accumulated.
91
106
  */
92
107
  outcome: RunOutcome;
93
108
  }
@@ -126,7 +141,11 @@ export declare const nativeLoop: Loop;
126
141
  * On a throw it closes the stream with `outcome: "failed"` and then **rethrows
127
142
  * the original error, untouched**. This changes what is observed, never what is
128
143
  * thrown. `steps` and `text` are omitted on that path: the loop never returned
129
- * a result, so there is no honest value for them.
144
+ * a result, so there is no honest value for them. If the caller's signal had
145
+ * fired AND the throw is that abort (the signal's own reason, an error caused
146
+ * by it, or an `AbortError`/`TimeoutError`), it is recorded as `"canceled"` instead — a custom loop that
147
+ * throws on abort was still canceled, not broken — and still rethrown. A real
148
+ * bug that happens to throw after the abort is still `"failed"`.
130
149
  */
131
150
  export declare function runWithEvents(loop: Loop, req: LoopRequest, ctx: RunContext): Promise<LoopResult>;
132
151
  //# sourceMappingURL=loop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,MAAM,EAAE,gBAAgB,CAAA;CACzB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,MAAM,EAAE,eAAe,CAAA;CACxB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb;;;;;OAKG;IACH,OAAO,EAAE,UAAU,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,IAGxB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,UAAU,CAAC,CA2BrB"}
1
+ {"version":3,"file":"loop.d.ts","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAE/C;;;;;;;;GAQG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,KAAK,EAAE,IAAI,EAAE,CAAA;IACb,MAAM,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAA;CACpD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,MAAM,EAAE,gBAAgB,CAAA;IACxB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,MAAM,EAAE,eAAe,CAAA;IACvB,kEAAkE;IAClE,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,iEAAiE;IACjE,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb;;;;;;;OAOG;IACH,OAAO,EAAE,UAAU,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,IAAI;IACnB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,GAAG,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CAC7D;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,EAAE,IAGxB,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,IAAI,EACV,GAAG,EAAE,WAAW,EAChB,GAAG,EAAE,UAAU,GACd,OAAO,CAAC,UAAU,CAAC,CA2BrB"}
package/dist/loop.js CHANGED
@@ -20,6 +20,7 @@
20
20
  * alternative to it.
21
21
  */
22
22
  import { runNativeLoop } from "./agent.js";
23
+ import { isAbortError } from "./signals.js";
23
24
  /**
24
25
  * The kernel's one loop: the provider-neutral tool-use loop that `runAgent` has
25
26
  * always run, behind the interface.
@@ -45,7 +46,11 @@ export const nativeLoop = {
45
46
  * On a throw it closes the stream with `outcome: "failed"` and then **rethrows
46
47
  * the original error, untouched**. This changes what is observed, never what is
47
48
  * thrown. `steps` and `text` are omitted on that path: the loop never returned
48
- * a result, so there is no honest value for them.
49
+ * a result, so there is no honest value for them. If the caller's signal had
50
+ * fired AND the throw is that abort (the signal's own reason, an error caused
51
+ * by it, or an `AbortError`/`TimeoutError`), it is recorded as `"canceled"` instead — a custom loop that
52
+ * throws on abort was still canceled, not broken — and still rethrown. A real
53
+ * bug that happens to throw after the abort is still `"failed"`.
49
54
  */
50
55
  export async function runWithEvents(loop, req, ctx) {
51
56
  ctx.events.emit({
@@ -61,7 +66,7 @@ export async function runWithEvents(loop, req, ctx) {
61
66
  catch (err) {
62
67
  ctx.events.emit({
63
68
  type: "run.finished",
64
- outcome: "failed",
69
+ outcome: isAbortError(err, ctx.signal) ? "canceled" : "failed",
65
70
  error: err instanceof Error ? err.message : String(err),
66
71
  });
67
72
  throw err;
package/dist/loop.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAyF1C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;CAC3C,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAU,EACV,GAAgB,EAChB,GAAe;IAEf,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ;QAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;QACvC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KACzC,CAAC,CAAA;IAEF,IAAI,MAAkB,CAAA;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,QAAQ;YACjB,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAA;QACF,MAAM,GAAG,CAAA;IACX,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"loop.js","sourceRoot":"","sources":["../src/loop.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAwG3C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,UAAU,GAAS;IAC9B,IAAI,EAAE,QAAQ;IACd,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC;CAC3C,CAAA;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,IAAU,EACV,GAAgB,EAChB,GAAe;IAEf,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,aAAa;QACnB,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,QAAQ;QAC7B,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,aAAa;QACvC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;KACzC,CAAC,CAAA;IAEF,IAAI,MAAkB,CAAA;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ;YAC9D,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC,CAAA;QACF,MAAM,GAAG,CAAA;IACX,CAAC;IAED,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC;QACd,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC,CAAA;IACF,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -52,8 +52,12 @@ export declare const CHAT_KIND = "chat";
52
52
  * the same place a perception model sits.
53
53
  *
54
54
  * Capabilities are reported conservatively, from what the `Provider` interface
55
- * can actually express: it has no streaming method, no attachment channel and
56
- * reports no usage, so only `tools` is true. A richer adapter can declare more.
55
+ * can actually express: it has no streaming method and no attachment channel,
56
+ * so those stay false. `usage` follows the provider's own `reportsUsage`
57
+ * declaration: the SDK-backed adapters set it (their `ConverseResult.usage`
58
+ * becomes `ModelResult.usage`), while a provider that declares nothing — the
59
+ * mock, a custom provider — reports `usage: false` rather than promising
60
+ * accounting it does not deliver.
57
61
  */
58
62
  export declare function chatModel(provider: Provider, caps?: Partial<ModelCaps>): ChatModel;
59
63
  /** True when a value is already a model invocation rather than a bare `Provider`. */
@@ -1 +1 @@
1
- {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/models/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,QAAQ,EACR,QAAQ,EACT,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,eAAe,EAErB,MAAM,YAAY,CAAA;AAEnB;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA;AAEzC;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,6EAA6E;IAC7E,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;CACnB;AAED,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG,cAAc,CAAA;AAEzC,yCAAyC;AACzC,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;AAElE,wDAAwD;AACxD,eAAO,MAAM,SAAS,SAAS,CAAA;AAE/B;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS,CAiDtF;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,KAAK,IAAI,SAAS,CAE3E;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAElE;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,QAAQ,EAAE,EACjB,KAAK,CAAC,EAAE,QAAQ,EAAE,GACjB,WAAW,CAEb"}
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../src/models/chat.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,eAAe,EACf,cAAc,EACd,QAAQ,EACR,QAAQ,EACT,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,eAAe,EAErB,MAAM,YAAY,CAAA;AAEnB;;;GAGG;AACH,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAA;AAEpD;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAChB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,SAAS,CAAA;CAAE,CAAA;AAEzC;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,eAAe;IAClD,6EAA6E;IAC7E,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAA;CACnB;AAED,+EAA+E;AAC/E,MAAM,MAAM,YAAY,GAAG,cAAc,CAAA;AAEzC,yCAAyC;AACzC,MAAM,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;AAElE,wDAAwD;AACxD,eAAO,MAAM,SAAS,SAAS,CAAA;AAE/B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,GAAE,OAAO,CAAC,SAAS,CAAM,GAAG,SAAS,CAmDtF;AAED,qFAAqF;AACrF,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,KAAK,IAAI,SAAS,CAE3E;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAElE;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,YAAY,EAAE,EACxB,KAAK,EAAE,QAAQ,EAAE,EACjB,KAAK,CAAC,EAAE,QAAQ,EAAE,GACjB,WAAW,CAEb"}
@@ -10,15 +10,19 @@ export const CHAT_KIND = "chat";
10
10
  * the same place a perception model sits.
11
11
  *
12
12
  * Capabilities are reported conservatively, from what the `Provider` interface
13
- * can actually express: it has no streaming method, no attachment channel and
14
- * reports no usage, so only `tools` is true. A richer adapter can declare more.
13
+ * can actually express: it has no streaming method and no attachment channel,
14
+ * so those stay false. `usage` follows the provider's own `reportsUsage`
15
+ * declaration: the SDK-backed adapters set it (their `ConverseResult.usage`
16
+ * becomes `ModelResult.usage`), while a provider that declares nothing — the
17
+ * mock, a custom provider — reports `usage: false` rather than promising
18
+ * accounting it does not deliver.
15
19
  */
16
20
  export function chatModel(provider, caps = {}) {
17
21
  const resolved = {
18
22
  streaming: false,
19
23
  tools: true,
20
24
  multimodalInput: false,
21
- usage: false,
25
+ usage: provider.reportsUsage === true,
22
26
  ...caps,
23
27
  };
24
28
  return {
@@ -33,12 +37,14 @@ export function chatModel(provider, caps = {}) {
33
37
  requireCapability({ id: provider.name, kind: CHAT_KIND, caps: resolved }, "tools", "request carries tool definitions");
34
38
  }
35
39
  ctx.signal?.throwIfAborted();
36
- const value = await provider.converse({
37
- system: req.system,
38
- messages: req.messages,
39
- tools: req.tools,
40
- });
41
- return { value };
40
+ const converseReq = { system: req.system, messages: req.messages, tools: req.tools };
41
+ // The signal rides through to the provider's HTTP call, so an abort stops
42
+ // the request in flight rather than after it returns. Passed only when
43
+ // present so a provider with a one-argument `converse` sees no change.
44
+ const value = ctx.signal
45
+ ? await provider.converse(converseReq, { signal: ctx.signal })
46
+ : await provider.converse(converseReq);
47
+ return { value, ...(value.usage ? { usage: value.usage } : {}) };
42
48
  },
43
49
  // The `Provider` interface exposes no health endpoint, so report the honest
44
50
  // answer rather than inventing an `up` — a probe that always says "fine" is
@@ -1 +1 @@
1
- {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/models/chat.ts"],"names":[],"mappings":"AAOA,OAAO,EACL,iBAAiB,GAMlB,MAAM,YAAY,CAAA;AAoCnB,wDAAwD;AACxD,MAAM,CAAC,MAAM,SAAS,GAAG,MAAM,CAAA;AAE/B;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,QAAkB,EAAE,OAA2B,EAAE;IACzE,MAAM,QAAQ,GAAc;QAC1B,SAAS,EAAE,KAAK;QAChB,KAAK,EAAE,IAAI;QACX,eAAe,EAAE,KAAK;QACtB,KAAK,EAAE,KAAK;QACZ,GAAG,IAAI;KACR,CAAA;IAED,OAAO;QACL,EAAE,EAAE,QAAQ,CAAC,IAAI;QACjB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QAEd,KAAK,CAAC,MAAM,CAAC,GAAgB,EAAE,GAAkB;YAC/C,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;gBACtB,iBAAiB,CACf,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EACtD,iBAAiB,EACjB,uBAAuB,CACxB,CAAA;YACH,CAAC;YACD,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzB,iBAAiB,CACf,EAAE,EAAE,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,EACtD,OAAO,EACP,kCAAkC,CACnC,CAAA;YACH,CAAC;YACD,GAAG,CAAC,MAAM,EAAE,cAAc,EAAE,CAAA;YAE5B,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC;gBACpC,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;gBACtB,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CAAC,CAAA;YACF,OAAO,EAAE,KAAK,EAAE,CAAA;QAClB,CAAC;QAED,4EAA4E;QAC5E,4EAA4E;QAC5E,8CAA8C;QAC9C,KAAK;YACH,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,YAAY,QAAQ,CAAC,IAAI,6BAA6B;aAC/D,CAAC,CAAA;QACJ,CAAC;KACF,CAAA;AACH,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,WAAW,CAAC,KAA2B;IACrD,OAAO,QAAQ,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,IAAI,MAAM,IAAI,KAAK,CAAA;AAChE,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,WAAW,CAAC,KAA2B;IACrD,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;AACtD,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,QAAwB,EACxB,KAAiB,EACjB,KAAkB;IAElB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;AACzE,CAAC"}
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../../src/models/chat.ts"],"names":[],"mappings":"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"}
@@ -34,11 +34,25 @@ export interface ModelCaps {
34
34
  /** Results carry a populated `usage`. */
35
35
  usage: boolean;
36
36
  }
37
- /** Token accounting, for kinds billed per token. */
37
+ /**
38
+ * Token accounting, for kinds billed per token.
39
+ *
40
+ * `inputTokens` is ALL input the model processed, cached or not, so
41
+ * `totalTokens === inputTokens + outputTokens` holds whatever the provider's
42
+ * cache did. The cache fields are a breakdown of `inputTokens`, never in
43
+ * addition to it: `cacheReadTokens` were served from a prompt cache,
44
+ * `cacheWriteTokens` were written to one. They are priced differently from
45
+ * uncached input, which is why they are split out; absent means the provider
46
+ * reported no cache activity (or no breakdown), not zero.
47
+ */
38
48
  export interface TokenUsage {
39
49
  inputTokens?: number;
40
50
  outputTokens?: number;
41
51
  totalTokens?: number;
52
+ /** Input tokens read from a prompt cache — a subset of `inputTokens`. */
53
+ cacheReadTokens?: number;
54
+ /** Input tokens written to a prompt cache — a subset of `inputTokens`. */
55
+ cacheWriteTokens?: number;
42
56
  }
43
57
  /**
44
58
  * Accounting for kinds that aren't billed per token — frames processed, seconds
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH;;;;GAIG;AACH,MAAM,MAAM,SAAS,GACnB,MAAM,GAAG,eAAe,GAAG,WAAW,GAAG,qBAAqB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAA;AAEhF;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAA;IAClB,kFAAkF;IAClF,KAAK,EAAE,OAAO,CAAA;IACd,sDAAsD;IACtD,eAAe,EAAE,OAAO,CAAA;IACxB,yCAAyC;IACzC,KAAK,EAAE,OAAO,CAAA;CACf;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAED;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,MAAM,KAAK,GAAG,UAAU,GAAG,SAAS,CAAA;AAE1C,wEAAwE;AACxE,MAAM,WAAW,WAAW,CAAC,GAAG;IAC9B,0DAA0D;IAC1D,KAAK,EAAE,GAAG,CAAA;IACV,2EAA2E;IAC3E,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,4EAA4E;IAC5E,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,6CAA6C;IAC7C,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC3B,iFAAiF;IACjF,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,iEAAiE;IACjE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,8CAA8C;IAC9C,MAAM,CAAC,EAAE;QAAE,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CACpC;AAED,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,MAAM,GAAG,UAAU,GAAG,SAAS,CAAA;AAEjE,sDAAsD;AACtD,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,YAAY,CAAA;IACpB,8EAA8E;IAC9E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACzB,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACrC,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAA;IAChE,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,KAAK,IAAI,CAAA;IACtE,kBAAkB,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAClF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,IAAI,CAIN;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,GAAG,EAAE,GAAG;IACvC,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/D,yFAAyF;IACzF,YAAY,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,aAAa,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAA;IACxF,KAAK,IAAI,OAAO,CAAC,MAAM,CAAC,CAAA;CACzB;AAED,uFAAuF;AACvF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,SAAS,CAAA;IACf,IAAI,EAAE,SAAS,CAAA;CAChB;AAED,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,aAAa,CAEnF;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,KAAK;IACxC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAA;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,SAAS,CAAA;gBAExB,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM;CAQ/E;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,aAAa,EACpB,UAAU,EAAE,MAAM,SAAS,EAC3B,MAAM,CAAC,EAAE,MAAM,GACd,IAAI,CAEN;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,GAAG,EAAE,GAAG,EAC5C,KAAK,EAAE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,EAChC,GAAG,EAAE,GAAG,EACR,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE,aAAa,GACjB,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAO3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA+FH;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAgB,EAChB,UAAkB,EAClB,QAAgB,EAChB,IAAY;IAEZ,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;AACvD,CAAC;AA0BD,wDAAwD;AACxD,MAAM,UAAU,aAAa,CAAC,KAAsC;IAClE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,KAAK,CAAe;IACpB,UAAU,CAAiB;IAEpC,YAAY,KAAoB,EAAE,UAA2B,EAAE,MAAe;QAC5E,KAAK,CACH,SAAS,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,qBAAqB,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChG,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAC/B,KAAoB,EACpB,UAA2B,EAC3B,MAAe;IAEf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AACnF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAgC,EAChC,GAAQ,EACR,IAAgB,EAChB,GAAkB;IAElB,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACrC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,4CAA4C,CAAC,CAAA;IAChG,CAAC;IACD,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;AAC3C,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/models/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA6GH;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,IAAgB,EAChB,UAAkB,EAClB,QAAgB,EAChB,IAAY;IAEZ,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,eAAe,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,kBAAkB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;AACvD,CAAC;AA0BD,wDAAwD;AACxD,MAAM,UAAU,aAAa,CAAC,KAAsC;IAClE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;AAC7D,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAC/B,KAAK,CAAe;IACpB,UAAU,CAAiB;IAEpC,YAAY,KAAoB,EAAE,UAA2B,EAAE,MAAe;QAC5E,KAAK,CACH,SAAS,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,qBAAqB,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAChG,CAAA;QACD,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAA;QAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAA;QAClB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;IAC9B,CAAC;CACF;AAED,+EAA+E;AAC/E,MAAM,UAAU,iBAAiB,CAC/B,KAAoB,EACpB,UAA2B,EAC3B,MAAe;IAEf,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;AACnF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAgC,EAChC,GAAQ,EACR,IAAgB,EAChB,GAAkB;IAElB,MAAM,QAAQ,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACrC,iBAAiB,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,IAAI,eAAe,CAAC,QAAQ,EAAE,WAAW,EAAE,4CAA4C,CAAC,CAAA;IAChG,CAAC;IACD,OAAO,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;AAC3C,CAAC"}
@@ -8,6 +8,13 @@ export interface RunCodeOptions {
8
8
  timeoutMs?: number;
9
9
  stdin?: string;
10
10
  maxBuffer?: number;
11
+ /**
12
+ * Cancels the command: on abort the WHOLE process group is killed (as on
13
+ * timeout) and the promise rejects once the child has exited — with the
14
+ * signal's reason when it is an `Error`, else an `Error` wrapping it. An
15
+ * already-aborted signal rejects without spawning anything.
16
+ */
17
+ signal?: AbortSignal;
11
18
  }
12
19
  export interface RunCodeResult {
13
20
  stdout: string;
@@ -1 +1 @@
1
- {"version":3,"file":"codeExec.d.ts","sourceRoot":"","sources":["../../src/primitives/codeExec.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAKD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAuEvE"}
1
+ {"version":3,"file":"codeExec.d.ts","sourceRoot":"","sources":["../../src/primitives/codeExec.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,gFAAgF;IAChF,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAA;IACvB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,QAAQ,EAAE,OAAO,CAAA;CAClB;AAaD;;;;;GAKG;AACH,wBAAgB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CA4FvE"}
@@ -1,4 +1,12 @@
1
1
  import { spawn } from "node:child_process";
2
+ /** The signal's reason as an `Error`, so a rejection always carries a message. */
3
+ function abortError(signal) {
4
+ const reason = signal.reason;
5
+ if (reason instanceof Error)
6
+ return reason;
7
+ const detail = typeof reason === "string" ? `: ${reason}` : "";
8
+ return new Error(`run_code aborted${detail}`, { cause: reason });
9
+ }
2
10
  const DEFAULT_TIMEOUT_MS = 60_000;
3
11
  const DEFAULT_MAX_BUFFER = 8 * 1024 * 1024;
4
12
  /**
@@ -8,8 +16,12 @@ const DEFAULT_MAX_BUFFER = 8 * 1024 * 1024;
8
16
  * Secrets are passed via `env` (see secretsToEnv) and are never logged here.
9
17
  */
10
18
  export function runCode(options) {
11
- const { cwd, command, args = [], env, stdin, timeoutMs = DEFAULT_TIMEOUT_MS, maxBuffer = DEFAULT_MAX_BUFFER, } = options;
19
+ const { cwd, command, args = [], env, stdin, timeoutMs = DEFAULT_TIMEOUT_MS, maxBuffer = DEFAULT_MAX_BUFFER, signal, } = options;
12
20
  return new Promise((resolve, reject) => {
21
+ if (signal?.aborted) {
22
+ reject(abortError(signal));
23
+ return;
24
+ }
13
25
  // A minimal base env with the caller's env — including resolved secrets —
14
26
  // layered on top. We forward only non-secret runtime vars: PATH (so binaries
15
27
  // resolve) and HOME (so npm/tooling use a stable cache dir — `$HOME/.npm`
@@ -41,6 +53,19 @@ export function runCode(options) {
41
53
  timedOut = true;
42
54
  killTree();
43
55
  }, timeoutMs);
56
+ // An abort takes the same path as the timeout — kill the process GROUP, so
57
+ // a script's own children die with it — but settles as a rejection: the
58
+ // caller asked for the work to stop, so there is no result to report.
59
+ let aborted = false;
60
+ const onAbort = () => {
61
+ aborted = true;
62
+ killTree();
63
+ };
64
+ signal?.addEventListener("abort", onAbort, { once: true });
65
+ const cleanup = () => {
66
+ clearTimeout(timer);
67
+ signal?.removeEventListener("abort", onAbort);
68
+ };
44
69
  child.stdout?.on("data", (c) => {
45
70
  stdout = cap(stdout, c);
46
71
  });
@@ -51,15 +76,18 @@ export function runCode(options) {
51
76
  if (settled)
52
77
  return;
53
78
  settled = true;
54
- clearTimeout(timer);
79
+ cleanup();
55
80
  reject(err);
56
81
  });
57
82
  child.on("close", (code) => {
58
83
  if (settled)
59
84
  return;
60
85
  settled = true;
61
- clearTimeout(timer);
62
- resolve({ stdout, stderr, exitCode: code, timedOut });
86
+ cleanup();
87
+ if (aborted && signal)
88
+ reject(abortError(signal));
89
+ else
90
+ resolve({ stdout, stderr, exitCode: code, timedOut });
63
91
  });
64
92
  if (stdin !== undefined)
65
93
  child.stdin?.write(stdin);
@@ -1 +1 @@
1
- {"version":3,"file":"codeExec.js","sourceRoot":"","sources":["../../src/primitives/codeExec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codeExec.js","sourceRoot":"","sources":["../../src/primitives/codeExec.ts"],"names":[],"mappings":"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"}
@@ -34,6 +34,12 @@ export interface HttpFetchOptions {
34
34
  lookup?: Lookup;
35
35
  /** `fetch` implementation (defaults to undici's `fetch`); injectable for tests. */
36
36
  fetchImpl?: FetchImpl;
37
+ /**
38
+ * Cancels the request. Merged with the per-hop timeout controller, so it
39
+ * aborts the header wait, a redirect hop and the body read alike; an abort
40
+ * surfaces as `http aborted`, distinct from `http timeout`.
41
+ */
42
+ signal?: AbortSignal;
37
43
  }
38
44
  export interface HttpResponse {
39
45
  status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/primitives/http.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpD,iFAAiF;AACjF,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAA;AAI1F;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,WAAW,CAAA;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,CAAA;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;CACb;AAYD,yFAAyF;AACzF,KAAK,gBAAgB,GAAG,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAElE;;;;;;;;;;;GAWG;AACH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAO3D;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,OAAO,CAAC,gBAAgB,CAAC,CA6B3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,KAAK,CAW5D;AA8DD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CA4DhF"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/primitives/http.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,KAAK,IAAI,WAAW,EAAE,MAAM,QAAQ,CAAA;AAEpD,iFAAiF;AACjF,MAAM,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAA;AAI1F;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,WAAW,CAAA;AAE1C,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAChC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,6FAA6F;IAC7F,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,kFAAkF;IAClF,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,+BAA+B;IAC/B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB;;;;OAIG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oFAAoF;IACpF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,mFAAmF;IACnF,SAAS,CAAC,EAAE,SAAS,CAAA;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,IAAI,EAAE,MAAM,CAAA;CACb;AAYD,yFAAyF;AACzF,KAAK,gBAAgB,GAAG,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAElE;;;;;;;;;;;GAWG;AACH;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAO3D;AAED,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,OAAO,CAAC,gBAAgB,CAAC,CA6B3B;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,gBAAgB,GAAG,KAAK,CAW5D;AA8ED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CA+DhF"}
@@ -115,32 +115,47 @@ export function pinnedAgent(records) {
115
115
  * A fresh dispatcher is built per hop (each hop is validated + pinned to its own
116
116
  * address) and closed in `done()` so connections aren't reused across hosts.
117
117
  */
118
- async function fetchWithTimeout(fetchImpl, target, init, records, timeoutMs) {
118
+ async function fetchWithTimeout(fetchImpl, target, init, records, timeoutMs, signal) {
119
+ // Same error whether the signal fired before this hop or during it.
120
+ if (signal?.aborted)
121
+ throw new Error(`http aborted: ${target}`, { cause: signal.reason });
119
122
  const controller = new AbortController();
120
123
  const agent = pinnedAgent(records);
121
124
  let timedOut = false;
125
+ let aborted = false;
122
126
  const timer = setTimeout(() => {
123
127
  timedOut = true;
124
128
  controller.abort();
125
129
  }, timeoutMs);
130
+ // The caller's signal drives the SAME controller as the timeout, so whatever
131
+ // the timeout bounds (headers and the streamed body) an abort bounds too.
132
+ const onAbort = () => {
133
+ aborted = true;
134
+ controller.abort(signal?.reason);
135
+ };
136
+ signal?.addEventListener("abort", onAbort, { once: true });
126
137
  const closeAgent = () => {
127
138
  void agent.close().catch(() => { });
128
139
  };
140
+ const release = () => {
141
+ clearTimeout(timer);
142
+ signal?.removeEventListener("abort", onAbort);
143
+ closeAgent();
144
+ };
129
145
  try {
130
146
  const res = await fetchImpl(target, { ...init, signal: controller.signal, dispatcher: agent });
131
147
  return {
132
148
  res,
133
149
  controller,
134
150
  timedOut: () => timedOut,
135
- done: () => {
136
- clearTimeout(timer);
137
- closeAgent();
138
- },
151
+ aborted: () => aborted,
152
+ done: release,
139
153
  };
140
154
  }
141
155
  catch (err) {
142
- clearTimeout(timer);
143
- closeAgent();
156
+ release();
157
+ if (aborted)
158
+ throw new Error(`http aborted: ${target}`, { cause: err });
144
159
  if (timedOut) {
145
160
  throw new Error(`http timeout after ${timeoutMs}ms: ${target}`, { cause: err });
146
161
  }
@@ -165,11 +180,11 @@ async function fetchWithTimeout(fetchImpl, target, init, records, timeoutMs) {
165
180
  * allowlist for untrusted callers regardless.
166
181
  */
167
182
  export async function httpFetch(options) {
168
- const { url, method = "GET", headers, body, allowHosts, maxBytes = DEFAULT_MAX_BYTES, maxRedirects = DEFAULT_MAX_REDIRECTS, timeoutMs = defaultTimeoutMs(), lookup = defaultLookup, fetchImpl = undiciFetch, } = options;
183
+ const { url, method = "GET", headers, body, allowHosts, maxBytes = DEFAULT_MAX_BYTES, maxRedirects = DEFAULT_MAX_REDIRECTS, timeoutMs = defaultTimeoutMs(), lookup = defaultLookup, fetchImpl = undiciFetch, signal, } = options;
169
184
  const assertSafe = (target) => assertSafeUrl(target, { allowHosts, lookup });
170
185
  let currentUrl = url;
171
186
  let records = await assertSafe(currentUrl);
172
- let hop = await fetchWithTimeout(fetchImpl, currentUrl, { method, headers, body, redirect: "manual" }, records, timeoutMs);
187
+ let hop = await fetchWithTimeout(fetchImpl, currentUrl, { method, headers, body, redirect: "manual" }, records, timeoutMs, signal);
173
188
  let hops = 0;
174
189
  while (hop.res.status >= 300 && hop.res.status < 400 && hop.res.headers.has("location")) {
175
190
  // Cancel the unread redirect body so the socket isn't left half-open before
@@ -181,7 +196,7 @@ export async function httpFetch(options) {
181
196
  const next = new URL(hop.res.headers.get("location"), currentUrl).toString();
182
197
  records = await assertSafe(next); // validate AND re-pin the new hop's address
183
198
  currentUrl = next;
184
- hop = await fetchWithTimeout(fetchImpl, currentUrl, { method, headers, redirect: "manual" }, records, timeoutMs);
199
+ hop = await fetchWithTimeout(fetchImpl, currentUrl, { method, headers, redirect: "manual" }, records, timeoutMs, signal);
185
200
  hops += 1;
186
201
  }
187
202
  const res = hop.res;
@@ -203,7 +218,7 @@ export async function httpFetch(options) {
203
218
  * sends headers then drip-feeds the body still can't stall the run.
204
219
  */
205
220
  async function readBodyCapped(hop, target, maxBytes) {
206
- const { res, controller, timedOut, done } = hop;
221
+ const { res, controller, timedOut, aborted, done } = hop;
207
222
  try {
208
223
  if (!res.body)
209
224
  return await res.text();
@@ -228,6 +243,8 @@ async function readBodyCapped(hop, target, maxBytes) {
228
243
  catch (err) {
229
244
  // The timer aborts the controller, which surfaces here as an abort/read
230
245
  // error — translate it to the same clear timeout message as the header phase.
246
+ if (aborted())
247
+ throw new Error(`http aborted: ${target}`, { cause: err });
231
248
  if (timedOut() || controller.signal.aborted) {
232
249
  throw new Error(`http timeout: ${target}`, { cause: err });
233
250
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/primitives/http.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/primitives/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Internal: stop a child process that leads its own process group (spawned
3
+ * with `detached: true`). Not exported from `index.ts`.
4
+ */
5
+ import type { ChildProcess } from "node:child_process";
6
+ /** How long a stopped harness gets to exit on SIGTERM before SIGKILL. */
7
+ export declare const DEFAULT_STOP_GRACE_MS = 5000;
8
+ /**
9
+ * SIGTERM the group, wait up to `graceMs` for the leader to exit, then SIGKILL
10
+ * whatever remains of the group — unconditionally, so a descendant that
11
+ * ignored SIGTERM (or outlived its parent) cannot keep running after this
12
+ * resolves. SIGKILL cannot be ignored, so when this resolves nothing in the
13
+ * group is still executing.
14
+ */
15
+ export declare function terminateProcessGroup(child: ChildProcess, graceMs: number): Promise<void>;
16
+ //# sourceMappingURL=processGroup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processGroup.d.ts","sourceRoot":"","sources":["../src/processGroup.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAEtD,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,OAAQ,CAAA;AAe1C;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAa/F"}
@@ -0,0 +1,39 @@
1
+ /** How long a stopped harness gets to exit on SIGTERM before SIGKILL. */
2
+ export const DEFAULT_STOP_GRACE_MS = 5_000;
3
+ /** Signal the whole group; fall back to the leader if the group is gone. */
4
+ function signalGroup(child, sig) {
5
+ try {
6
+ if (child.pid !== undefined)
7
+ process.kill(-child.pid, sig);
8
+ }
9
+ catch {
10
+ try {
11
+ child.kill(sig);
12
+ }
13
+ catch {
14
+ // already gone
15
+ }
16
+ }
17
+ }
18
+ /**
19
+ * SIGTERM the group, wait up to `graceMs` for the leader to exit, then SIGKILL
20
+ * whatever remains of the group — unconditionally, so a descendant that
21
+ * ignored SIGTERM (or outlived its parent) cannot keep running after this
22
+ * resolves. SIGKILL cannot be ignored, so when this resolves nothing in the
23
+ * group is still executing.
24
+ */
25
+ export async function terminateProcessGroup(child, graceMs) {
26
+ const exited = () => child.exitCode !== null || child.signalCode !== null;
27
+ signalGroup(child, "SIGTERM");
28
+ if (!exited()) {
29
+ await new Promise((resolve) => {
30
+ const timer = setTimeout(resolve, graceMs);
31
+ child.once("exit", () => {
32
+ clearTimeout(timer);
33
+ resolve();
34
+ });
35
+ });
36
+ }
37
+ signalGroup(child, "SIGKILL");
38
+ }
39
+ //# sourceMappingURL=processGroup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"processGroup.js","sourceRoot":"","sources":["../src/processGroup.ts"],"names":[],"mappings":"AAMA,yEAAyE;AACzE,MAAM,CAAC,MAAM,qBAAqB,GAAG,KAAK,CAAA;AAE1C,4EAA4E;AAC5E,SAAS,WAAW,CAAC,KAAmB,EAAE,GAAmB;IAC3D,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC5D,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC;QAAC,MAAM,CAAC;YACP,eAAe;QACjB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,KAAmB,EAAE,OAAe;IAC9E,MAAM,MAAM,GAAG,GAAY,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,UAAU,KAAK,IAAI,CAAA;IAClF,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;IAC7B,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;YAClC,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAA;YAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;gBACtB,YAAY,CAAC,KAAK,CAAC,CAAA;gBACnB,OAAO,EAAE,CAAA;YACX,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC;IACD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;AAC/B,CAAC"}
@@ -1,15 +1,25 @@
1
1
  import Anthropic from "@anthropic-ai/sdk";
2
- import type { AgentMessage, CompletionRequest, ConverseRequest, ConverseResult, Provider } from "./types.js";
2
+ import type { TokenUsage } from "../models/types.js";
3
+ import type { AgentMessage, CompletionRequest, ConverseOptions, ConverseRequest, ConverseResult, Provider } from "./types.js";
3
4
  /** Map provider-neutral messages to Anthropic's message params (pure; tested). */
4
5
  export declare function toAnthropicMessages(messages: AgentMessage[]): Anthropic.MessageParam[];
5
6
  /** Reduce an Anthropic response's content blocks to text + tool calls (pure; tested). */
6
7
  export declare function parseAnthropicContent(content: Anthropic.ContentBlock[]): ConverseResult;
8
+ /**
9
+ * Map an Anthropic `usage` block to the kernel's token accounting (pure; tested).
10
+ *
11
+ * Anthropic's `input_tokens` counts only UNCACHED input; cache reads and cache
12
+ * writes are reported separately. Total input is the sum of all three, so that
13
+ * is what `inputTokens` carries, with the cache split out alongside.
14
+ */
15
+ export declare function anthropicUsage(usage: Pick<Anthropic.Usage, "input_tokens" | "output_tokens" | "cache_read_input_tokens" | "cache_creation_input_tokens"> | Pick<Anthropic.Usage, "input_tokens" | "output_tokens"> | null | undefined): TokenUsage | undefined;
7
16
  export declare class AnthropicProvider implements Provider {
8
17
  readonly name = "anthropic";
18
+ readonly reportsUsage = true;
9
19
  private client;
10
20
  private model;
11
21
  constructor(apiKey: string, model?: string);
12
22
  complete(req: CompletionRequest): Promise<string>;
13
- converse(req: ConverseRequest): Promise<ConverseResult>;
23
+ converse(req: ConverseRequest, opts?: ConverseOptions): Promise<ConverseResult>;
14
24
  }
15
25
  //# sourceMappingURL=anthropic.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AAEzC,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,QAAQ,EAET,MAAM,YAAY,CAAA;AAEnB,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,YAAY,EAAE,CAwBtF;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,cAAc,CAevF;AAED,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,QAAQ,CAAC,IAAI,eAAc;IAC3B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,EAAE,MAAM,EAAE,KAAK,SAAqD;IAYhF,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAcjD,QAAQ,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAe9D"}
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../src/providers/anthropic.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAA;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,KAAK,EACV,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,cAAc,EACd,QAAQ,EAET,MAAM,YAAY,CAAA;AAEnB,kFAAkF;AAClF,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,SAAS,CAAC,YAAY,EAAE,CAwBtF;AAED,yFAAyF;AACzF,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,SAAS,CAAC,YAAY,EAAE,GAAG,cAAc,CAevF;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EACD,IAAI,CACF,SAAS,CAAC,KAAK,EACf,cAAc,GAAG,eAAe,GAAG,yBAAyB,GAAG,6BAA6B,CAC7F,GACD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CAAC,GACvD,IAAI,GACJ,SAAS,GACZ,UAAU,GAAG,SAAS,CAcxB;AAED,qBAAa,iBAAkB,YAAW,QAAQ;IAChD,QAAQ,CAAC,IAAI,eAAc;IAC3B,QAAQ,CAAC,YAAY,QAAO;IAC5B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,KAAK,CAAQ;gBAET,MAAM,EAAE,MAAM,EAAE,KAAK,SAAqD;IAYhF,QAAQ,CAAC,GAAG,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC;IAcjD,QAAQ,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;CAqBtF"}