@assemblyline-agents/runtime 6.1.4 → 7.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 (211) hide show
  1. package/README.md +6 -0
  2. package/dist/background-review.d.ts.map +1 -1
  3. package/dist/background-review.js +10 -1
  4. package/dist/background-review.js.map +1 -1
  5. package/dist/background-subagents.d.ts +9 -11
  6. package/dist/background-subagents.d.ts.map +1 -1
  7. package/dist/background-subagents.js +69 -127
  8. package/dist/background-subagents.js.map +1 -1
  9. package/dist/background-work-summary.d.ts +21 -0
  10. package/dist/background-work-summary.d.ts.map +1 -0
  11. package/dist/background-work-summary.js +94 -0
  12. package/dist/background-work-summary.js.map +1 -0
  13. package/dist/background-work-tool.d.ts +7 -0
  14. package/dist/background-work-tool.d.ts.map +1 -0
  15. package/dist/background-work-tool.js +73 -0
  16. package/dist/background-work-tool.js.map +1 -0
  17. package/dist/builtin-tool-executors.d.ts.map +1 -1
  18. package/dist/builtin-tool-executors.js +4 -0
  19. package/dist/builtin-tool-executors.js.map +1 -1
  20. package/dist/builtin-tools.d.ts +1 -1
  21. package/dist/builtin-tools.d.ts.map +1 -1
  22. package/dist/builtin-tools.js +6 -0
  23. package/dist/builtin-tools.js.map +1 -1
  24. package/dist/connection-wait-recovery.d.ts +5 -0
  25. package/dist/connection-wait-recovery.d.ts.map +1 -0
  26. package/dist/connection-wait-recovery.js +106 -0
  27. package/dist/connection-wait-recovery.js.map +1 -0
  28. package/dist/conversation-turn-dispatch.d.ts.map +1 -1
  29. package/dist/conversation-turn-dispatch.js +2 -1
  30. package/dist/conversation-turn-dispatch.js.map +1 -1
  31. package/dist/delivery-queue.d.ts.map +1 -1
  32. package/dist/delivery-queue.js +2 -0
  33. package/dist/delivery-queue.js.map +1 -1
  34. package/dist/delivery-send.d.ts.map +1 -1
  35. package/dist/delivery-send.js +8 -6
  36. package/dist/delivery-send.js.map +1 -1
  37. package/dist/harness-execution-context.d.ts +2 -0
  38. package/dist/harness-execution-context.d.ts.map +1 -1
  39. package/dist/harness-execution-context.js +29 -3
  40. package/dist/harness-execution-context.js.map +1 -1
  41. package/dist/harness-tool-execution.d.ts.map +1 -1
  42. package/dist/harness-tool-execution.js +38 -112
  43. package/dist/harness-tool-execution.js.map +1 -1
  44. package/dist/harness-turn-execution.d.ts.map +1 -1
  45. package/dist/harness-turn-execution.js +8 -1
  46. package/dist/harness-turn-execution.js.map +1 -1
  47. package/dist/in-memory-run-store.d.ts +5 -0
  48. package/dist/in-memory-run-store.d.ts.map +1 -1
  49. package/dist/in-memory-run-store.js +34 -82
  50. package/dist/in-memory-run-store.js.map +1 -1
  51. package/dist/in-memory-run-transactions.d.ts +14 -0
  52. package/dist/in-memory-run-transactions.d.ts.map +1 -0
  53. package/dist/in-memory-run-transactions.js +163 -0
  54. package/dist/in-memory-run-transactions.js.map +1 -0
  55. package/dist/index.d.ts +1 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/operator-controls.d.ts.map +1 -1
  58. package/dist/operator-controls.js +10 -21
  59. package/dist/operator-controls.js.map +1 -1
  60. package/dist/read-tool-result.d.ts +3 -0
  61. package/dist/read-tool-result.d.ts.map +1 -0
  62. package/dist/read-tool-result.js +25 -0
  63. package/dist/read-tool-result.js.map +1 -0
  64. package/dist/replay-resume-authorization.d.ts.map +1 -1
  65. package/dist/replay-resume-authorization.js +4 -14
  66. package/dist/replay-resume-authorization.js.map +1 -1
  67. package/dist/replay-resume-connection.d.ts.map +1 -1
  68. package/dist/replay-resume-connection.js +3 -1
  69. package/dist/replay-resume-connection.js.map +1 -1
  70. package/dist/replay-resume-controls.d.ts.map +1 -1
  71. package/dist/replay-resume-controls.js +43 -27
  72. package/dist/replay-resume-controls.js.map +1 -1
  73. package/dist/replay-resume-recovery.d.ts.map +1 -1
  74. package/dist/replay-resume-recovery.js +13 -4
  75. package/dist/replay-resume-recovery.js.map +1 -1
  76. package/dist/replay-resume-shared.d.ts +3 -4
  77. package/dist/replay-resume-shared.d.ts.map +1 -1
  78. package/dist/replay-resume-shared.js +4 -13
  79. package/dist/replay-resume-shared.js.map +1 -1
  80. package/dist/replay-resume-types.d.ts +3 -1
  81. package/dist/replay-resume-types.d.ts.map +1 -1
  82. package/dist/run-command-settlement.d.ts +6 -0
  83. package/dist/run-command-settlement.d.ts.map +1 -0
  84. package/dist/run-command-settlement.js +35 -0
  85. package/dist/run-command-settlement.js.map +1 -0
  86. package/dist/run-commands.d.ts +16 -0
  87. package/dist/run-commands.d.ts.map +1 -0
  88. package/dist/run-commands.js +195 -0
  89. package/dist/run-commands.js.map +1 -0
  90. package/dist/run-execution-host.d.ts +1 -0
  91. package/dist/run-execution-host.d.ts.map +1 -1
  92. package/dist/run-execution-lease.d.ts +15 -0
  93. package/dist/run-execution-lease.d.ts.map +1 -0
  94. package/dist/run-execution-lease.js +160 -0
  95. package/dist/run-execution-lease.js.map +1 -0
  96. package/dist/run-execution.d.ts.map +1 -1
  97. package/dist/run-execution.js +2 -0
  98. package/dist/run-execution.js.map +1 -1
  99. package/dist/run-heartbeat.d.ts.map +1 -1
  100. package/dist/run-heartbeat.js +25 -0
  101. package/dist/run-heartbeat.js.map +1 -1
  102. package/dist/run-initialization.d.ts.map +1 -1
  103. package/dist/run-initialization.js +6 -0
  104. package/dist/run-initialization.js.map +1 -1
  105. package/dist/run-outcome.d.ts.map +1 -1
  106. package/dist/run-outcome.js +5 -7
  107. package/dist/run-outcome.js.map +1 -1
  108. package/dist/run-recovery.d.ts +2 -2
  109. package/dist/run-recovery.d.ts.map +1 -1
  110. package/dist/run-recovery.js +77 -216
  111. package/dist/run-recovery.js.map +1 -1
  112. package/dist/run-stream.d.ts.map +1 -1
  113. package/dist/run-stream.js +9 -3
  114. package/dist/run-stream.js.map +1 -1
  115. package/dist/run-tree-cancellation.d.ts +9 -0
  116. package/dist/run-tree-cancellation.d.ts.map +1 -0
  117. package/dist/run-tree-cancellation.js +166 -0
  118. package/dist/run-tree-cancellation.js.map +1 -0
  119. package/dist/run-tree.d.ts +9 -0
  120. package/dist/run-tree.d.ts.map +1 -0
  121. package/dist/run-tree.js +37 -0
  122. package/dist/run-tree.js.map +1 -0
  123. package/dist/runtime-engine-base.d.ts +1 -0
  124. package/dist/runtime-engine-base.d.ts.map +1 -1
  125. package/dist/runtime-engine-base.js +11 -1
  126. package/dist/runtime-engine-base.js.map +1 -1
  127. package/dist/runtime-engine-capabilities.d.ts.map +1 -1
  128. package/dist/runtime-engine-capabilities.js +5 -2
  129. package/dist/runtime-engine-capabilities.js.map +1 -1
  130. package/dist/runtime-engine-config.d.ts +1 -0
  131. package/dist/runtime-engine-config.d.ts.map +1 -1
  132. package/dist/runtime-engine-config.js +4 -1
  133. package/dist/runtime-engine-config.js.map +1 -1
  134. package/dist/runtime-engine-operations.d.ts +12 -1
  135. package/dist/runtime-engine-operations.d.ts.map +1 -1
  136. package/dist/runtime-engine-operations.js +57 -3
  137. package/dist/runtime-engine-operations.js.map +1 -1
  138. package/dist/runtime-types.d.ts +8 -0
  139. package/dist/runtime-types.d.ts.map +1 -1
  140. package/dist/state/run-lifecycle.d.ts +111 -0
  141. package/dist/state/run-lifecycle.d.ts.map +1 -0
  142. package/dist/state/run-lifecycle.js +70 -0
  143. package/dist/state/run-lifecycle.js.map +1 -0
  144. package/dist/state/run-state.d.ts +3 -2
  145. package/dist/state/run-state.d.ts.map +1 -1
  146. package/dist/state/run-state.js.map +1 -1
  147. package/dist/state/store-contracts.d.ts +3 -0
  148. package/dist/state/store-contracts.d.ts.map +1 -1
  149. package/dist/state/store-contracts.js +1 -1
  150. package/dist/state/store-contracts.js.map +1 -1
  151. package/dist/state/task-budget.d.ts +39 -0
  152. package/dist/state/task-budget.d.ts.map +1 -0
  153. package/dist/state/task-budget.js +2 -0
  154. package/dist/state/task-budget.js.map +1 -0
  155. package/dist/state-stores.d.ts.map +1 -1
  156. package/dist/state-stores.js +1 -0
  157. package/dist/state-stores.js.map +1 -1
  158. package/dist/state.d.ts +2 -0
  159. package/dist/state.d.ts.map +1 -1
  160. package/dist/state.js +2 -0
  161. package/dist/state.js.map +1 -1
  162. package/dist/storage.d.ts +3 -0
  163. package/dist/storage.d.ts.map +1 -1
  164. package/dist/storage.js +6 -0
  165. package/dist/storage.js.map +1 -1
  166. package/dist/subagent-background-resume.d.ts +5 -0
  167. package/dist/subagent-background-resume.d.ts.map +1 -0
  168. package/dist/subagent-background-resume.js +17 -0
  169. package/dist/subagent-background-resume.js.map +1 -0
  170. package/dist/subagent-delegate-tool.d.ts +6 -0
  171. package/dist/subagent-delegate-tool.d.ts.map +1 -0
  172. package/dist/subagent-delegate-tool.js +35 -0
  173. package/dist/subagent-delegate-tool.js.map +1 -0
  174. package/dist/subagent-execution.d.ts +4 -0
  175. package/dist/subagent-execution.d.ts.map +1 -1
  176. package/dist/subagent-execution.js +83 -27
  177. package/dist/subagent-execution.js.map +1 -1
  178. package/dist/subagent-settlement.d.ts +10 -1
  179. package/dist/subagent-settlement.d.ts.map +1 -1
  180. package/dist/subagent-settlement.js +80 -42
  181. package/dist/subagent-settlement.js.map +1 -1
  182. package/dist/task-budget-accounting.d.ts +13 -0
  183. package/dist/task-budget-accounting.d.ts.map +1 -0
  184. package/dist/task-budget-accounting.js +35 -0
  185. package/dist/task-budget-accounting.js.map +1 -0
  186. package/dist/task-budget-config.d.ts +5 -0
  187. package/dist/task-budget-config.d.ts.map +1 -0
  188. package/dist/task-budget-config.js +55 -0
  189. package/dist/task-budget-config.js.map +1 -0
  190. package/dist/task-budget-harness.d.ts +5 -0
  191. package/dist/task-budget-harness.d.ts.map +1 -0
  192. package/dist/task-budget-harness.js +44 -0
  193. package/dist/task-budget-harness.js.map +1 -0
  194. package/dist/task-budget.d.ts +14 -0
  195. package/dist/task-budget.d.ts.map +1 -0
  196. package/dist/task-budget.js +212 -0
  197. package/dist/task-budget.js.map +1 -0
  198. package/dist/task-deadline.d.ts +4 -0
  199. package/dist/task-deadline.d.ts.map +1 -0
  200. package/dist/task-deadline.js +36 -0
  201. package/dist/task-deadline.js.map +1 -0
  202. package/dist/tool-execution-host.d.ts +5 -1
  203. package/dist/tool-execution-host.d.ts.map +1 -1
  204. package/dist/tool-execution.d.ts.map +1 -1
  205. package/dist/tool-execution.js +24 -9
  206. package/dist/tool-execution.js.map +1 -1
  207. package/dist/tool-result-output.d.ts +14 -0
  208. package/dist/tool-result-output.d.ts.map +1 -0
  209. package/dist/tool-result-output.js +66 -0
  210. package/dist/tool-result-output.js.map +1 -0
  211. package/package.json +3 -3
@@ -0,0 +1,55 @@
1
+ const FIELDS = ["maxModelRequests", "maxTokens", "maxCostUsd", "maxDurationMs"];
2
+ export function taskBudgetLimits(defaults, requested) {
3
+ const result = {};
4
+ for (const source of [defaults, requested]) {
5
+ if (!source)
6
+ continue;
7
+ for (const key of Object.keys(source))
8
+ if (!FIELDS.includes(key))
9
+ throw new Error(`Unknown task budget limit: ${key}`);
10
+ for (const key of FIELDS) {
11
+ const value = source[key];
12
+ if (value === undefined)
13
+ continue;
14
+ if (!Number.isFinite(value) ||
15
+ value <= 0 ||
16
+ (key !== "maxCostUsd" && !Number.isSafeInteger(value)) ||
17
+ (key === "maxCostUsd" && (!Number.isSafeInteger(Math.ceil(value * 1e6)) || value < 1e-6))) {
18
+ throw new Error(`Task budget ${key} must be a positive ${key === "maxCostUsd" ? "USD amount of at least 0.000001" : "safe integer"}.`);
19
+ }
20
+ result[key] = Math.min(result[key] ?? Infinity, value);
21
+ }
22
+ }
23
+ return Object.keys(result).length ? result : undefined;
24
+ }
25
+ export function createTaskBudget(limits, now = new Date()) {
26
+ if (!limits)
27
+ return;
28
+ const startedAt = now.toISOString();
29
+ return {
30
+ limits,
31
+ startedAt,
32
+ ...(limits.maxDurationMs ? { deadlineAt: new Date(now.getTime() + limits.maxDurationMs).toISOString() } : {}),
33
+ modelRequests: 0,
34
+ pendingRequests: 0,
35
+ tokens: 0,
36
+ costMicros: 0,
37
+ requests: {}
38
+ };
39
+ }
40
+ export function taskBudgetFromEnv(env) {
41
+ const result = {};
42
+ const names = {
43
+ maxModelRequests: "MAX_MODEL_REQUESTS",
44
+ maxTokens: "MAX_TOKENS",
45
+ maxCostUsd: "MAX_COST_USD",
46
+ maxDurationMs: "MAX_DURATION_MS"
47
+ };
48
+ for (const key of FIELDS) {
49
+ const raw = env[`ASSEMBLY_LINE_TASK_BUDGET_${names[key]}`];
50
+ if (raw !== undefined)
51
+ result[key] = Number(raw);
52
+ }
53
+ return taskBudgetLimits(result);
54
+ }
55
+ //# sourceMappingURL=task-budget-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-budget-config.js","sourceRoot":"","sources":["../src/task-budget-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { AgentHarness, AgentHarnessContext } from "@assemblyline-agents/core";
2
+ import type { StateAdapter } from "./state.js";
3
+ /** Apply the task contract to a runtime-owned harness outside the interactive loop. */
4
+ export declare function runTaskBudgetHarness(state: StateAdapter, harness: AgentHarness, input: Parameters<AgentHarness["runTurn"]>[0], context: AgentHarnessContext): Promise<import("@assemblyline-agents/core").AgentTurnResult>;
5
+ //# sourceMappingURL=task-budget-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-budget-harness.d.ts","sourceRoot":"","sources":["../src/task-budget-harness.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAK/C,uFAAuF;AACvF,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,UAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7C,OAAO,EAAE,mBAAmB,gEAwC7B"}
@@ -0,0 +1,44 @@
1
+ import { TaskBudgetAccounting } from "./task-budget-accounting.js";
2
+ import { checkTaskBudget } from "./task-budget.js";
3
+ import { armTaskDeadline } from "./task-deadline.js";
4
+ /** Apply the task contract to a runtime-owned harness outside the interactive loop. */
5
+ export async function runTaskBudgetHarness(state, harness, input, context) {
6
+ await checkTaskBudget(state, context.runId);
7
+ const accounting = new TaskBudgetAccounting(state, context.runId);
8
+ const controller = new AbortController();
9
+ const stopDeadline = armTaskDeadline(state, context.runId, () => controller.abort(), () => { });
10
+ const timer = setInterval(() => {
11
+ void checkTaskBudget(state, context.runId).catch(() => controller.abort());
12
+ }, 1000);
13
+ timer.unref?.();
14
+ try {
15
+ return await harness.runTurn(input, {
16
+ ...context,
17
+ signal: context.signal ? AbortSignal.any([context.signal, controller.signal]) : controller.signal,
18
+ shouldStop: () => controller.signal.aborted || (context.shouldStop?.() ?? false),
19
+ tools: async (options) => {
20
+ await checkTaskBudget(state, context.runId);
21
+ return context.tools(options);
22
+ },
23
+ executeTool: async (call) => {
24
+ await checkTaskBudget(state, context.runId);
25
+ return context.executeTool(call);
26
+ },
27
+ emit: async (event) => {
28
+ if (event.type === "request_started")
29
+ await accounting.start(event.iteration);
30
+ if (event.type === "model_retry")
31
+ await accounting.retry(event.iteration);
32
+ if (event.type === "response_completed")
33
+ await accounting.complete(event.iteration, event.usage);
34
+ await context.emit(event);
35
+ }
36
+ });
37
+ }
38
+ finally {
39
+ clearInterval(timer);
40
+ stopDeadline();
41
+ await accounting.finalize();
42
+ }
43
+ }
44
+ //# sourceMappingURL=task-budget-harness.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-budget-harness.js","sourceRoot":"","sources":["../src/task-budget-harness.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,KAAmB,EACnB,OAAqB,EACrB,KAA6C,EAC7C,OAA4B;IAE5B,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,oBAAoB,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAClE,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,YAAY,GAAG,eAAe,CAClC,KAAK,EACL,OAAO,CAAC,KAAK,EACb,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EACxB,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;IACF,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,KAAK,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC7E,CAAC,EAAE,IAAI,CAAC,CAAC;IACT,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAChB,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE;YAClC,GAAG,OAAO;YACV,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM;YACjG,UAAU,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,IAAI,KAAK,CAAC;YAChF,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;gBACvB,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5C,OAAO,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAChC,CAAC;YACD,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC1B,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5C,OAAO,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACpB,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB;oBAAE,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC9E,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;oBAAE,MAAM,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBAC1E,IAAI,KAAK,CAAC,IAAI,KAAK,oBAAoB;oBAAE,MAAM,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACjG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC;SACF,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACrB,YAAY,EAAE,CAAC;QACf,MAAM,UAAU,CAAC,QAAQ,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { HarnessUsage } from "@assemblyline-agents/core";
2
+ import type { StateAdapter, TaskBudget } from "./state.js";
3
+ /** Short durable admission on the common root serializes concurrent siblings. */
4
+ export declare function admitTaskBudgetRequest(state: StateAdapter, runId: string, requestId: string): Promise<string | undefined>;
5
+ /** Budget enforcement is independent of the best-effort observability usage ledger. */
6
+ export declare function completeTaskBudgetRequest(state: StateAdapter, rootId: string, requestId: string, usage?: HarnessUsage): Promise<void>;
7
+ export declare function checkTaskBudget(state: StateAdapter, runId: string): Promise<void>;
8
+ /** Dead workers cannot make unobserved token/cash usage look like zero on restart. */
9
+ export declare function recoverTaskBudgets(state: StateAdapter): Promise<void>;
10
+ export declare function getTaskBudget(state: StateAdapter, runId: string): Promise<{
11
+ rootRunId: string;
12
+ budget?: TaskBudget;
13
+ }>;
14
+ //# sourceMappingURL=task-budget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-budget.d.ts","sourceRoot":"","sources":["../src/task-budget.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAI9D,OAAO,KAAK,EAAmC,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAkE5F,iFAAiF;AACjF,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAuC7B;AAED,uFAAuF;AACvF,wBAAsB,yBAAyB,CAC7C,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAkEf;AAED,wBAAsB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYvF;AAED,sFAAsF;AACtF,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAoB3E;AAED,wBAAsB,aAAa,CACjC,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC,CAMrD"}
@@ -0,0 +1,212 @@
1
+ import { cancellationUpdate, propagateRunCancellation } from "./run-tree-cancellation.js";
2
+ import { assertRunTreeOpen, runAncestry, RunTreeStoppedError } from "./run-tree.js";
3
+ import { outsideRunExecution } from "./run-execution-lease.js";
4
+ function stopUpdate(root, budget, reason) {
5
+ const at = new Date().toISOString();
6
+ const stopped = { ...budget, stopped: budget.stopped ?? { reason, at } };
7
+ const update = cancellationUpdate(root, root.lifecycle?.cancellation ?? {
8
+ id: `budget:${root.id}`,
9
+ rootRunId: root.id,
10
+ requestedAt: at,
11
+ reason,
12
+ pending: true
13
+ });
14
+ return {
15
+ ...update,
16
+ patch: {
17
+ ...update.patch,
18
+ lifecycle: { ...update.patch.lifecycle, taskBudget: stopped }
19
+ },
20
+ events: [
21
+ ...(update.events ?? []),
22
+ {
23
+ id: `task-budget-stopped:${root.id}`,
24
+ type: "task.budget_exhausted",
25
+ data: {
26
+ reason,
27
+ modelRequests: budget.modelRequests,
28
+ tokens: budget.tokens,
29
+ costMicros: budget.costMicros
30
+ }
31
+ }
32
+ ]
33
+ };
34
+ }
35
+ function reached(budget, admission = false) {
36
+ if (budget.stopped)
37
+ return budget.stopped.reason;
38
+ if (budget.deadlineAt && Date.parse(budget.deadlineAt) <= Date.now())
39
+ return "budget.deadline";
40
+ if (admission &&
41
+ budget.limits.maxModelRequests !== undefined &&
42
+ budget.modelRequests >= budget.limits.maxModelRequests)
43
+ return "budget.model_requests";
44
+ if (budget.limits.maxTokens !== undefined && budget.tokens >= budget.limits.maxTokens)
45
+ return "budget.tokens";
46
+ if (budget.limits.maxCostUsd !== undefined &&
47
+ budget.costMicros >= Math.floor(budget.limits.maxCostUsd * 1e6))
48
+ return "budget.cost";
49
+ if ((budget.limits.maxTokens !== undefined || budget.limits.maxCostUsd !== undefined) &&
50
+ Object.values(budget.requests).some((request) => request.status === "unknown"))
51
+ return "budget.usage_unavailable";
52
+ }
53
+ async function enforceStop(state, root) {
54
+ if (!root.lifecycle?.taskBudget?.stopped)
55
+ return;
56
+ await propagateRunCancellation(state, root.id);
57
+ throw new RunTreeStoppedError(root.id, root.lifecycle.taskBudget.stopped.reason);
58
+ }
59
+ /** Short durable admission on the common root serializes concurrent siblings. */
60
+ export async function admitTaskBudgetRequest(state, runId, requestId) {
61
+ const ancestry = await assertRunTreeOpen(state, runId);
62
+ const root = ancestry.at(-1);
63
+ if (!root.lifecycle?.taskBudget)
64
+ return;
65
+ const result = await outsideRunExecution(() => state.transactRun(root.id, ({ run }) => {
66
+ const budget = run.lifecycle.taskBudget;
67
+ if (run.lifecycle?.cancellation)
68
+ return;
69
+ if (budget.requests[requestId])
70
+ return;
71
+ const reason = reached(budget, true);
72
+ if (reason)
73
+ return stopUpdate(run, budget, reason);
74
+ const next = {
75
+ ...budget,
76
+ modelRequests: budget.modelRequests + 1,
77
+ pendingRequests: budget.pendingRequests + 1,
78
+ requests: {
79
+ ...budget.requests,
80
+ [requestId]: {
81
+ runId,
82
+ status: "pending",
83
+ startedAt: new Date().toISOString()
84
+ }
85
+ }
86
+ };
87
+ return {
88
+ patch: { lifecycle: { ...run.lifecycle, taskBudget: next } },
89
+ events: [
90
+ {
91
+ type: "task.budget_request_admitted",
92
+ data: { requestId, runId, modelRequests: next.modelRequests }
93
+ }
94
+ ]
95
+ };
96
+ }));
97
+ await enforceStop(state, result.run);
98
+ if (result.run.lifecycle?.cancellation)
99
+ throw new RunTreeStoppedError(root.id, result.run.lifecycle.cancellation.reason);
100
+ return root.id;
101
+ }
102
+ /** Budget enforcement is independent of the best-effort observability usage ledger. */
103
+ export async function completeTaskBudgetRequest(state, rootId, requestId, usage) {
104
+ const result = await outsideRunExecution(() => state.transactRun(rootId, ({ run }) => {
105
+ const budget = run.lifecycle?.taskBudget;
106
+ const previous = budget?.requests[requestId];
107
+ if (!budget || !previous || previous.status === "settled")
108
+ return;
109
+ const valid = (value) => typeof value === "number" && Number.isFinite(value) && value >= 0;
110
+ const measuredTokens = valid(usage?.inputTokens) &&
111
+ valid(usage?.outputTokens) &&
112
+ Number.isSafeInteger(usage.inputTokens + usage.outputTokens) &&
113
+ Number.isSafeInteger(usage.inputTokens) &&
114
+ usage?.tokenSource !== "unavailable"
115
+ ? usage.inputTokens + usage.outputTokens
116
+ : undefined;
117
+ const measuredCostMicros = valid(usage?.costUsd) &&
118
+ Number.isSafeInteger(Math.ceil(usage.costUsd * 1e6)) &&
119
+ (usage.costSource === "provider_reported" || usage.costSource === "provider_reconciled") &&
120
+ (usage.currency === undefined || usage.currency === "USD")
121
+ ? Math.ceil(usage.costUsd * 1e6)
122
+ : undefined;
123
+ // A late provider receipt may fill in a lost observation, but never reopen a stopped task.
124
+ const tokens = previous.tokens ?? measuredTokens;
125
+ const costMicros = previous.costMicros ?? measuredCostMicros;
126
+ if (previous.status === "unknown" && tokens === previous.tokens && costMicros === previous.costMicros)
127
+ return;
128
+ const unknown = (budget.limits.maxTokens !== undefined && tokens === undefined) ||
129
+ (budget.limits.maxCostUsd !== undefined && costMicros === undefined);
130
+ const next = {
131
+ ...budget,
132
+ pendingRequests: budget.pendingRequests - (previous.status === "pending" ? 1 : 0),
133
+ tokens: budget.tokens + (tokens ?? 0) - (previous.tokens ?? 0),
134
+ costMicros: budget.costMicros + (costMicros ?? 0) - (previous.costMicros ?? 0),
135
+ requests: {
136
+ ...budget.requests,
137
+ [requestId]: {
138
+ ...previous,
139
+ status: unknown ? "unknown" : "settled",
140
+ ...(tokens !== undefined ? { tokens } : {}),
141
+ ...(costMicros !== undefined ? { costMicros } : {})
142
+ }
143
+ }
144
+ };
145
+ const reason = reached(next);
146
+ if (reason && !budget.stopped)
147
+ return stopUpdate(run, next, reason);
148
+ return {
149
+ patch: { lifecycle: { ...run.lifecycle, taskBudget: next } },
150
+ events: [
151
+ {
152
+ type: "task.budget_usage_recorded",
153
+ data: {
154
+ requestId,
155
+ status: next.requests[requestId].status,
156
+ tokens: tokens ?? null,
157
+ costMicros: costMicros ?? null
158
+ }
159
+ }
160
+ ]
161
+ };
162
+ }));
163
+ // Cancellation remains durable even when the response recorder is interrupted.
164
+ if (result.run.lifecycle?.taskBudget?.stopped)
165
+ await propagateRunCancellation(state, rootId);
166
+ }
167
+ export async function checkTaskBudget(state, runId) {
168
+ const ancestry = await assertRunTreeOpen(state, runId);
169
+ const root = ancestry.at(-1);
170
+ if (!root.lifecycle?.taskBudget || !reached(root.lifecycle.taskBudget))
171
+ return;
172
+ const result = await outsideRunExecution(() => state.transactRun(root.id, ({ run }) => {
173
+ const budget = run.lifecycle?.taskBudget;
174
+ const reason = budget && reached(budget);
175
+ return reason && !budget.stopped ? stopUpdate(run, budget, reason) : undefined;
176
+ }));
177
+ await enforceStop(state, result.run);
178
+ }
179
+ /** Dead workers cannot make unobserved token/cash usage look like zero on restart. */
180
+ export async function recoverTaskBudgets(state) {
181
+ for (const root of await state.queryRuns({ taskBudgetPending: true })) {
182
+ const budget = root.lifecycle.taskBudget;
183
+ for (const [id, request] of Object.entries(budget.requests)) {
184
+ if (request.status !== "pending")
185
+ continue;
186
+ const run = await state.getRun(request.runId);
187
+ const lease = run?.lifecycle?.lease;
188
+ const active = lease
189
+ ? Date.parse(lease.expiresAt) > Date.now()
190
+ : run &&
191
+ (run.status === "running" || run.controlIntent === "cancel") &&
192
+ Date.now() - Date.parse(run.updatedAt) < 5 * 60_000;
193
+ if (!active)
194
+ await completeTaskBudgetRequest(state, root.id, id);
195
+ }
196
+ try {
197
+ await checkTaskBudget(state, root.id);
198
+ }
199
+ catch (error) {
200
+ if (!(error instanceof RunTreeStoppedError))
201
+ throw error;
202
+ }
203
+ }
204
+ }
205
+ export async function getTaskBudget(state, runId) {
206
+ const root = (await runAncestry(state, runId)).at(-1);
207
+ return {
208
+ rootRunId: root.id,
209
+ ...(root.lifecycle?.taskBudget ? { budget: root.lifecycle.taskBudget } : {})
210
+ };
211
+ }
212
+ //# sourceMappingURL=task-budget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-budget.js","sourceRoot":"","sources":["../src/task-budget.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { StateAdapter } from "./state.js";
2
+ /** Timers are only an accelerator; the persisted deadline is checked again at every boundary. */
3
+ export declare function armTaskDeadline(state: StateAdapter, runId: string, abort: () => void, onError: (error: unknown) => void): () => void;
4
+ //# sourceMappingURL=task-deadline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-deadline.d.ts","sourceRoot":"","sources":["../src/task-deadline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,iGAAiG;AACjG,wBAAgB,eAAe,CAC7B,KAAK,EAAE,YAAY,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,MAAM,IAAI,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAChC,MAAM,IAAI,CAkCZ"}
@@ -0,0 +1,36 @@
1
+ import { checkTaskBudget, getTaskBudget } from "./task-budget.js";
2
+ /** Timers are only an accelerator; the persisted deadline is checked again at every boundary. */
3
+ export function armTaskDeadline(state, runId, abort, onError) {
4
+ let stopped = false;
5
+ let timer;
6
+ const arm = async () => {
7
+ const { budget } = await getTaskBudget(state, runId);
8
+ if (stopped || !budget?.deadlineAt)
9
+ return;
10
+ const remaining = Date.parse(budget.deadlineAt) - Date.now();
11
+ if (remaining <= 0) {
12
+ abort();
13
+ try {
14
+ await checkTaskBudget(state, runId);
15
+ }
16
+ catch (error) {
17
+ onError(error);
18
+ }
19
+ return;
20
+ }
21
+ timer = setTimeout(() => void arm().catch((error) => {
22
+ abort();
23
+ onError(error);
24
+ }), Math.min(remaining, 2_147_483_647));
25
+ timer.unref?.();
26
+ };
27
+ void arm().catch((error) => {
28
+ abort();
29
+ onError(error);
30
+ });
31
+ return () => {
32
+ stopped = true;
33
+ clearTimeout(timer);
34
+ };
35
+ }
36
+ //# sourceMappingURL=task-deadline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-deadline.js","sourceRoot":"","sources":["../src/task-deadline.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElE,iGAAiG;AACjG,MAAM,UAAU,eAAe,CAC7B,KAAmB,EACnB,KAAa,EACb,KAAiB,EACjB,OAAiC;IAEjC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,IAAI,KAAgD,CAAC;IACrD,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACrB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,IAAI,OAAO,IAAI,CAAC,MAAM,EAAE,UAAU;YAAE,OAAO;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7D,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;YACnB,KAAK,EAAE,CAAC;YACR,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACtC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YACD,OAAO;QACT,CAAC;QACD,KAAK,GAAG,UAAU,CAChB,GAAG,EAAE,CACH,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACzB,KAAK,EAAE,CAAC;YACR,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,CAAC,EACJ,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CACnC,CAAC;QACF,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IAClB,CAAC,CAAC;IACF,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,KAAK,EAAE,CAAC;QACR,OAAO,CAAC,KAAK,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,GAAG,EAAE;QACV,OAAO,GAAG,IAAI,CAAC;QACf,YAAY,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC,CAAC;AACJ,CAAC"}
@@ -17,6 +17,7 @@ export interface ToolRuntimeContext {
17
17
  manifest: AgentManifest;
18
18
  coreToolPolicy: ResolvedCoreToolPolicy;
19
19
  authoredToolExecution: AuthoredToolExecutionPolicy;
20
+ backgroundOnlySubagents: ReadonlySet<string>;
20
21
  toolOutputMaxChars: number;
21
22
  toolTimeoutMs: number;
22
23
  surfaceForRun(run: RunRecord): AgentSurface;
@@ -104,10 +105,12 @@ export interface ToolLearningServices {
104
105
  }
105
106
  export interface ToolSubagentServices {
106
107
  runSubagent(parentRunId: string, subagentName: string, task: JsonObject): Promise<RunTimeline>;
107
- queueSubagent(parentRunId: string, subagentName: string, task: JsonObject): Promise<RunRecord>;
108
+ queueSubagent(parentRunId: string, subagentName: string, task: JsonObject, commandId?: string): Promise<RunRecord>;
109
+ queueSubagentResume(parentRunId: string, childRunId: string, subagentName: string, message: string, commandId?: string): Promise<RunRecord>;
108
110
  resumeSubagent(parentRunId: string, childRunId: string, subagentName: string, message: string): Promise<RunTimeline>;
109
111
  listBackgroundWork(rootRunId: string, includeTerminal?: boolean): Promise<JsonObject[]>;
110
112
  getBackgroundWork(rootRunId: string, childRunId: string): Promise<RunRecord>;
113
+ commandBackgroundWork(rootRunId: string, childRunId: string, input: import("./run-commands.js").RunCommandInput): Promise<import("./state.js").RunCommand>;
111
114
  cancelBackgroundWork(rootRunId: string, childRunId: string): Promise<JsonObject>;
112
115
  }
113
116
  export interface ToolPersistenceServices {
@@ -118,5 +121,6 @@ export interface ToolPersistenceServices {
118
121
  projectResourcesForRun(run: RunRecord, scope: MemoryScope, sandbox: SandboxSession, input: ResourceProjectInput): Promise<ResourceProjectResult>;
119
122
  }
120
123
  export interface ToolExecutionHost extends ToolRuntimeContext, ToolSandboxServices, ToolConnectionServices, ToolLearningServices, ToolSubagentServices, ToolPersistenceServices {
124
+ registerRunAbort(runId: string, controller: AbortController): () => void;
121
125
  }
122
126
  //# sourceMappingURL=tool-execution-host.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution-host.d.ts","sourceRoot":"","sources":["../src/tool-execution-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EACV,mCAAmC,EACnC,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,2BAA2B,EAC3B,WAAW,EACX,2BAA2B,EAC3B,eAAe,EACf,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,sBAAsB,CAAC;IACvC,qBAAqB,EAAE,2BAA2B,CAAC;IACnD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,YAAY,CAAC;IAC5C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAClD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnG,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAChH,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5G,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAClE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;CACpE;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1C,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IACxE,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACxG,oBAAoB,CAClB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,oBAAoB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,yBAAyB,CACvB,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7F,oBAAoB,CAClB,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,mCAAmC,EAAE,mCAAmC,CAAC;IACzE,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;IAC1C,wBAAwB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,wBAAwB,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,wBAAwB,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,UAAU,CAAC;QACvB,KAAK,CAAC,EAAE,2BAA2B,CAAC;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9B,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACjE,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,oBAAoB,CAAC;IACzD,eAAe,EAAE,uBAAuB,CAAC;IACzC,wBAAwB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC;IACzC,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5C,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAAC;IAC/C,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,eAAe,CACb,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,EAChE,GAAG,EAAE,SAAS,GACb,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/C,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IAC1H,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,uBAAuB,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/F,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACxE,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/F,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC/F,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxF,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/F,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpE,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChH,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9G,sBAAsB,CACpB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,iBACf,SAAQ,kBAAkB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB;CAAG"}
1
+ {"version":3,"file":"tool-execution-host.d.ts","sourceRoot":"","sources":["../src/tool-execution-host.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,cAAc,EACd,cAAc,EACd,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,KAAK,EACV,mCAAmC,EACnC,oBAAoB,EACrB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,+BAA+B,CAAC;AACpF,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAC5D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,KAAK,EACV,qBAAqB,EACrB,yBAAyB,EACzB,uBAAuB,EACvB,oBAAoB,EACpB,UAAU,EACV,wBAAwB,EACzB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,YAAY,EACb,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,2BAA2B,EAC3B,WAAW,EACX,2BAA2B,EAC3B,eAAe,EACf,WAAW,EACX,WAAW,EACX,oBAAoB,EACpB,cAAc,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IACxC,KAAK,EAAE,OAAO,KAAK,CAAC;IACpB,QAAQ,EAAE,aAAa,CAAC;IACxB,cAAc,EAAE,sBAAsB,CAAC;IACvC,qBAAqB,EAAE,2BAA2B,CAAC;IACnD,uBAAuB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,YAAY,CAAC;IAC5C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAAC;IAClD,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IACnG,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAChH,QAAQ,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5G,iBAAiB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IAClE,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAClC,qBAAqB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,GAAG,UAAU,CAAC;CACpE;AAED,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,cAAc,CAAC;IACxB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC;IAC1C,yBAAyB,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;IACxE,qBAAqB,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACxG,oBAAoB,CAClB,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,oBAAoB,EAC7B,aAAa,EAAE,oBAAoB,EACnC,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,cAAc,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAChF,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnG,yBAAyB,CACvB,GAAG,EAAE,SAAS,EACd,OAAO,EAAE,cAAc,EACvB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7F,oBAAoB,CAClB,GAAG,EAAE,SAAS,EACd,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,GAClC,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,mCAAmC,EAAE,mCAAmC,CAAC;IACzE,yBAAyB,EAAE,MAAM,GAAG,SAAS,CAAC;IAC9C,iBAAiB,EAAE,yBAAyB,CAAC;IAC7C,iBAAiB,IAAI,kBAAkB,EAAE,CAAC;IAC1C,wBAAwB,CAAC,UAAU,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC3E,wBAAwB,CAAC,KAAK,EAAE;QAC9B,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,wBAAwB,CAAC;QACnC,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,UAAU,CAAC;QACvB,KAAK,CAAC,EAAE,2BAA2B,CAAC;QACpC,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9B,yBAAyB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACjE,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,UAAU,CAAC;IACvB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,WAAW,EAAE,WAAW,CAAC;IACzB,kBAAkB,CAAC,GAAG,EAAE,SAAS,GAAG,oBAAoB,CAAC;IACzD,eAAe,EAAE,uBAAuB,CAAC;IACzC,wBAAwB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC;IACzC,mBAAmB,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5C,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW,CAAC;IAC/C,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC/D,eAAe,CACb,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;KAAE,EAChE,GAAG,EAAE,SAAS,GACb,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC/C,gBAAgB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;IAC1H,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/D,uBAAuB,CAAC,KAAK,EAAE,8BAA8B,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/F,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC;IACxE,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACtG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,oBAAoB;IACnC,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC/F,aAAa,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IACnH,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC5I,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACrH,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;IACxF,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7E,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,mBAAmB,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,YAAY,EAAE,UAAU,CAAC,CAAC;IAC3J,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAClF;AAED,MAAM,WAAW,uBAAuB;IACtC,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC/F,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACpE,mBAAmB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;IAChH,kBAAkB,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC9G,sBAAsB,CACpB,GAAG,EAAE,SAAS,EACd,KAAK,EAAE,WAAW,EAClB,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,iBACf,SAAQ,kBAAkB,EACxB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,uBAAuB;IACzB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,GAAG,MAAM,IAAI,CAAC;CAC1E"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../src/tool-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAc,cAAc,EAAE,MAAM,2BAA2B,CAAC;AA+B1F,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,KAAK,EACV,SAAS,EAET,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE;;;;;;;;;;;GAWG;AAEH,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,SAAS,CAM1G;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,EACnC,QAAQ,EAAE,OAAO,EACjB,cAAc,SAAgC,EAC9C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IACT,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC,CAmED;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,EACnC,gBAAgB,UAAQ,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgLvH;AAsBD,sIAAsI;AACtI,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAMlH;AA8CD,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,cAAc,CAiD/G"}
1
+ {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../src/tool-execution.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAc,cAAc,EAAE,MAAM,2BAA2B,CAAC;AA8B1F,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAGhF,OAAO,KAAK,EACV,SAAS,EAET,cAAc,EACf,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE;;;;;;;;;;;GAWG;AAEH,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAElE,wBAAgB,cAAc,CAAC,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,eAAe,GAAG,YAAY,GAAG,SAAS,CAM1G;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,EACnC,QAAQ,EAAE,OAAO,EACjB,cAAc,SAAgC,EAC9C,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IACT,GAAG,EAAE,SAAS,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,CAAC,CAoED;AAED,wBAAsB,yBAAyB,CAC7C,IAAI,EAAE,iBAAiB,EACvB,GAAG,EAAE,SAAS,EACd,IAAI,EAAE,YAAY,EAClB,QAAQ,EAAE,cAAc,EACxB,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,oBAAoB,EACnC,gBAAgB,UAAQ,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQvH;AAmND,sIAAsI;AACtI,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAMlH;AA8CD,wBAAgB,eAAe,CAAC,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,cAAc,CAiD/G"}
@@ -1,4 +1,5 @@
1
- import { boundModelOutput, normalizeApprovalPolicy, sandboxFilesystemContractMetadata, validateAgainstJsonSchema } from "@assemblyline-agents/core";
1
+ import { checkTaskBudget } from "./task-budget.js";
2
+ import { normalizeApprovalPolicy, sandboxFilesystemContractMetadata, validateAgainstJsonSchema } from "@assemblyline-agents/core";
2
3
  import { HISTORY_SEARCH_TOOL_NAME, FILES_MOUNT_TOOL_NAME, FILES_SEARCH_TOOL_NAME, runtimeToolsForSurface, TOOL_SEARCH_TOOL_NAME, WORKSPACE_CHECKPOINT_CREATE_TOOL_NAME, WORKSPACE_CHECKPOINT_LIST_TOOL_NAME, WORKSPACE_CHECKPOINT_RESTORE_TOOL_NAME, WORKSPACE_FORK_TOOL_NAME, WORKSPACE_SEARCH_TOOL_NAME, WORKSPACE_STATUS_TOOL_NAME } from "./builtin-tools.js";
3
4
  import { createConnectionRegistryForRunImpl, executeHistorySearchTool, executeToolSearchTool, failRuntimeHandledTool, } from "./builtin-tool-executors.js";
4
5
  import { resolvePositiveIntegerEnv } from "./env-config.js";
@@ -9,6 +10,7 @@ import { sandboxWriteByteLength } from "./resource-projection-util.js";
9
10
  import { stringValue, timestamp, toolRequiresSandbox } from "./runtime-util.js";
10
11
  import { applyCoreToolPolicy } from "./security.js";
11
12
  import { createToolContext, HumanInputRequired } from "./tool-apis.js";
13
+ import { READ_TOOL_RESULT_TOOL_NAME, readToolResult, retainToolModelOutput } from "./tool-result-output.js";
12
14
  export function selectToolImpl(host, options) {
13
15
  if (options.toolName) {
14
16
  const surface = options.existingRun ? host.surfaceForRun(options.existingRun) : undefined;
@@ -17,6 +19,7 @@ export function selectToolImpl(host, options) {
17
19
  return undefined;
18
20
  }
19
21
  export async function executeToolImpl(host, run, tool, input, sandboxHandle, approved, idempotencyKey = `tool:${run.id}:${tool.name}`, signal) {
22
+ await checkTaskBudget(host.state, run.id);
20
23
  const policyTool = applyCoreToolPolicy(tool, host.coreToolPolicy);
21
24
  if (!policyTool) {
22
25
  await host.state.appendEvent(run.id, "tool.call_requested", { toolName: tool.name, input: redactedToolInput(input) });
@@ -84,6 +87,17 @@ export async function executeToolImpl(host, run, tool, input, sandboxHandle, app
84
87
  return executeToolWithRecordImpl(host, run, tool, toolCall, input, sandboxHandle, approved, signal);
85
88
  }
86
89
  export async function executeToolWithRecordImpl(host, run, tool, toolCall, input, sandboxHandle, approvedToolCall = false, signal) {
90
+ await checkTaskBudget(host.state, run.id);
91
+ const controller = new AbortController();
92
+ const unregister = host.registerRunAbort(run.id, controller);
93
+ try {
94
+ return await executeToolWithRecordControlled(host, run, tool, toolCall, input, sandboxHandle, approvedToolCall, signal ? AbortSignal.any([signal, controller.signal]) : controller.signal);
95
+ }
96
+ finally {
97
+ unregister();
98
+ }
99
+ }
100
+ async function executeToolWithRecordControlled(host, run, tool, toolCall, input, sandboxHandle, approvedToolCall = false, signal) {
87
101
  const authoredTool = !tool.source.path.startsWith("__builtin__");
88
102
  const sandboxedAuthoredTool = authoredTool && host.shouldSandboxAuthoredTool(tool, run);
89
103
  await host.state.updateToolCall(toolCall.id, { status: "running" });
@@ -113,17 +127,18 @@ export async function executeToolWithRecordImpl(host, run, tool, toolCall, input
113
127
  const ctx = createToolContext(host, run, sandboxHandle, tool, approvedToolCall, sandboxedAuthoredTool);
114
128
  if (sandboxedAuthoredTool) {
115
129
  const sandboxed = await host.executeSandboxedTool(tool, input, ctx, sandboxHandle, operationSignal);
116
- const modelOutput = sandboxed.hasModelOutput
117
- ? boundModelOutput(sandboxed.modelOutput, host.toolOutputMaxChars)
118
- : boundModelOutput(sandboxed.result, host.toolOutputMaxChars);
130
+ const modelOutput = await retainToolModelOutput(host, run.id, sandboxed.hasModelOutput ? sandboxed.modelOutput : sandboxed.result);
119
131
  return { result: sandboxed.result, modelOutput };
120
132
  }
121
- const result = workspaceTool
122
- ? await host.executeWorkspaceTool(run, tool.name, input, sandboxHandle)
123
- : await Promise.resolve(definition.execute(input, ctx));
124
- const modelOutput = definition?.toModelOutput
133
+ const result = tool.name === READ_TOOL_RESULT_TOOL_NAME
134
+ ? await readToolResult(host, run.id, input)
135
+ : workspaceTool
136
+ ? await host.executeWorkspaceTool(run, tool.name, input, sandboxHandle)
137
+ : await Promise.resolve(definition.execute(input, ctx));
138
+ const projection = definition?.toModelOutput
125
139
  ? await definition.toModelOutput(result)
126
- : boundModelOutput(result, host.toolOutputMaxChars);
140
+ : result;
141
+ const modelOutput = await retainToolModelOutput(host, run.id, projection);
127
142
  return { result, modelOutput };
128
143
  }, definition?.timeoutMs ?? host.toolTimeoutMs, tool.name, signal);
129
144
  const { result, modelOutput } = executed;