@arden-hq/loop 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +121 -2
  3. package/dist/abort.d.ts +9 -0
  4. package/dist/abort.d.ts.map +1 -0
  5. package/dist/abort.js +31 -0
  6. package/dist/abort.js.map +1 -0
  7. package/dist/agent/agent.d.ts +48 -0
  8. package/dist/agent/agent.d.ts.map +1 -0
  9. package/dist/agent/agent.js +146 -0
  10. package/dist/agent/agent.js.map +1 -0
  11. package/dist/agent/background-tools.d.ts +51 -0
  12. package/dist/agent/background-tools.d.ts.map +1 -0
  13. package/dist/agent/background-tools.js +257 -0
  14. package/dist/agent/background-tools.js.map +1 -0
  15. package/dist/agent/budget.d.ts +5 -0
  16. package/dist/agent/budget.d.ts.map +1 -0
  17. package/dist/agent/budget.js +48 -0
  18. package/dist/agent/budget.js.map +1 -0
  19. package/dist/agent/config.d.ts +61 -0
  20. package/dist/agent/config.d.ts.map +1 -0
  21. package/dist/agent/config.js +99 -0
  22. package/dist/agent/config.js.map +1 -0
  23. package/dist/agent/guards.d.ts +10 -0
  24. package/dist/agent/guards.d.ts.map +1 -0
  25. package/dist/agent/guards.js +136 -0
  26. package/dist/agent/guards.js.map +1 -0
  27. package/dist/agent/history-journal.d.ts +18 -0
  28. package/dist/agent/history-journal.d.ts.map +1 -0
  29. package/dist/agent/history-journal.js +87 -0
  30. package/dist/agent/history-journal.js.map +1 -0
  31. package/dist/agent/history-projection.d.ts +6 -0
  32. package/dist/agent/history-projection.d.ts.map +1 -0
  33. package/dist/agent/history-projection.js +62 -0
  34. package/dist/agent/history-projection.js.map +1 -0
  35. package/dist/agent/interactions.d.ts +14 -0
  36. package/dist/agent/interactions.d.ts.map +1 -0
  37. package/dist/agent/interactions.js +85 -0
  38. package/dist/agent/interactions.js.map +1 -0
  39. package/dist/agent/middleware.d.ts +5 -0
  40. package/dist/agent/middleware.d.ts.map +1 -0
  41. package/dist/agent/middleware.js +55 -0
  42. package/dist/agent/middleware.js.map +1 -0
  43. package/dist/agent/model-output-projection.d.ts +27 -0
  44. package/dist/agent/model-output-projection.d.ts.map +1 -0
  45. package/dist/agent/model-output-projection.js +138 -0
  46. package/dist/agent/model-output-projection.js.map +1 -0
  47. package/dist/agent/model-output.d.ts +19 -0
  48. package/dist/agent/model-output.d.ts.map +1 -0
  49. package/dist/agent/model-output.js +172 -0
  50. package/dist/agent/model-output.js.map +1 -0
  51. package/dist/agent/model-turn.d.ts +29 -0
  52. package/dist/agent/model-turn.d.ts.map +1 -0
  53. package/dist/agent/model-turn.js +401 -0
  54. package/dist/agent/model-turn.js.map +1 -0
  55. package/dist/agent/policy.d.ts +28 -0
  56. package/dist/agent/policy.d.ts.map +1 -0
  57. package/dist/agent/policy.js +109 -0
  58. package/dist/agent/policy.js.map +1 -0
  59. package/dist/agent/provider-capabilities.d.ts +12 -0
  60. package/dist/agent/provider-capabilities.d.ts.map +1 -0
  61. package/dist/agent/provider-capabilities.js +76 -0
  62. package/dist/agent/provider-capabilities.js.map +1 -0
  63. package/dist/agent/recovery.d.ts +8 -0
  64. package/dist/agent/recovery.d.ts.map +1 -0
  65. package/dist/agent/recovery.js +21 -0
  66. package/dist/agent/recovery.js.map +1 -0
  67. package/dist/agent/replies.d.ts +3 -0
  68. package/dist/agent/replies.d.ts.map +1 -0
  69. package/dist/agent/replies.js +24 -0
  70. package/dist/agent/replies.js.map +1 -0
  71. package/dist/agent/run-state.d.ts +98 -0
  72. package/dist/agent/run-state.d.ts.map +1 -0
  73. package/dist/agent/run-state.js +454 -0
  74. package/dist/agent/run-state.js.map +1 -0
  75. package/dist/agent/run.d.ts +6 -0
  76. package/dist/agent/run.d.ts.map +1 -0
  77. package/dist/agent/run.js +462 -0
  78. package/dist/agent/run.js.map +1 -0
  79. package/dist/agent/streamed-call-history.d.ts +20 -0
  80. package/dist/agent/streamed-call-history.d.ts.map +1 -0
  81. package/dist/agent/streamed-call-history.js +71 -0
  82. package/dist/agent/streamed-call-history.js.map +1 -0
  83. package/dist/agent/streaming-tools.d.ts +23 -0
  84. package/dist/agent/streaming-tools.d.ts.map +1 -0
  85. package/dist/agent/streaming-tools.js +67 -0
  86. package/dist/agent/streaming-tools.js.map +1 -0
  87. package/dist/agent/structured-output.d.ts +27 -0
  88. package/dist/agent/structured-output.d.ts.map +1 -0
  89. package/dist/agent/structured-output.js +26 -0
  90. package/dist/agent/structured-output.js.map +1 -0
  91. package/dist/agent/tool-admission.d.ts +18 -0
  92. package/dist/agent/tool-admission.d.ts.map +1 -0
  93. package/dist/agent/tool-admission.js +22 -0
  94. package/dist/agent/tool-admission.js.map +1 -0
  95. package/dist/contracts/events.d.ts +236 -0
  96. package/dist/contracts/events.d.ts.map +1 -0
  97. package/dist/contracts/events.js +13 -0
  98. package/dist/contracts/events.js.map +1 -0
  99. package/dist/contracts/messages.d.ts +234 -0
  100. package/dist/contracts/messages.d.ts.map +1 -0
  101. package/dist/contracts/messages.js +11 -0
  102. package/dist/contracts/messages.js.map +1 -0
  103. package/dist/contracts/provider.d.ts +177 -0
  104. package/dist/contracts/provider.d.ts.map +1 -0
  105. package/dist/contracts/provider.js +26 -0
  106. package/dist/contracts/provider.js.map +1 -0
  107. package/dist/contracts/tools.d.ts +217 -0
  108. package/dist/contracts/tools.d.ts.map +1 -0
  109. package/dist/contracts/tools.js +16 -0
  110. package/dist/contracts/tools.js.map +1 -0
  111. package/dist/errors.d.ts +112 -0
  112. package/dist/errors.d.ts.map +1 -0
  113. package/dist/errors.js +190 -0
  114. package/dist/errors.js.map +1 -0
  115. package/dist/index.d.ts +34 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +20 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/internal/concurrency.d.ts +11 -0
  120. package/dist/internal/concurrency.d.ts.map +1 -0
  121. package/dist/internal/concurrency.js +86 -0
  122. package/dist/internal/concurrency.js.map +1 -0
  123. package/dist/internal/stream.d.ts +25 -0
  124. package/dist/internal/stream.d.ts.map +1 -0
  125. package/dist/internal/stream.js +97 -0
  126. package/dist/internal/stream.js.map +1 -0
  127. package/dist/internal/validate.d.ts +30 -0
  128. package/dist/internal/validate.d.ts.map +1 -0
  129. package/dist/internal/validate.js +480 -0
  130. package/dist/internal/validate.js.map +1 -0
  131. package/dist/providers/kit/errors.d.ts +40 -0
  132. package/dist/providers/kit/errors.d.ts.map +1 -0
  133. package/dist/providers/kit/errors.js +48 -0
  134. package/dist/providers/kit/errors.js.map +1 -0
  135. package/dist/providers/kit/index.d.ts +10 -0
  136. package/dist/providers/kit/index.d.ts.map +1 -0
  137. package/dist/providers/kit/index.js +10 -0
  138. package/dist/providers/kit/index.js.map +1 -0
  139. package/dist/providers/kit/retry.d.ts +43 -0
  140. package/dist/providers/kit/retry.d.ts.map +1 -0
  141. package/dist/providers/kit/retry.js +118 -0
  142. package/dist/providers/kit/retry.js.map +1 -0
  143. package/dist/providers/kit/sse.d.ts +22 -0
  144. package/dist/providers/kit/sse.d.ts.map +1 -0
  145. package/dist/providers/kit/sse.js +70 -0
  146. package/dist/providers/kit/sse.js.map +1 -0
  147. package/dist/providers/openai-responses/citations.d.ts +21 -0
  148. package/dist/providers/openai-responses/citations.d.ts.map +1 -0
  149. package/dist/providers/openai-responses/citations.js +65 -0
  150. package/dist/providers/openai-responses/citations.js.map +1 -0
  151. package/dist/providers/openai-responses/continuation.d.ts +19 -0
  152. package/dist/providers/openai-responses/continuation.d.ts.map +1 -0
  153. package/dist/providers/openai-responses/continuation.js +28 -0
  154. package/dist/providers/openai-responses/continuation.js.map +1 -0
  155. package/dist/providers/openai-responses/errors.d.ts +28 -0
  156. package/dist/providers/openai-responses/errors.d.ts.map +1 -0
  157. package/dist/providers/openai-responses/errors.js +103 -0
  158. package/dist/providers/openai-responses/errors.js.map +1 -0
  159. package/dist/providers/openai-responses/history.d.ts +8 -0
  160. package/dist/providers/openai-responses/history.d.ts.map +1 -0
  161. package/dist/providers/openai-responses/history.js +93 -0
  162. package/dist/providers/openai-responses/history.js.map +1 -0
  163. package/dist/providers/openai-responses/items.d.ts +106 -0
  164. package/dist/providers/openai-responses/items.d.ts.map +1 -0
  165. package/dist/providers/openai-responses/items.js +124 -0
  166. package/dist/providers/openai-responses/items.js.map +1 -0
  167. package/dist/providers/openai-responses/parameter-schema.d.ts +11 -0
  168. package/dist/providers/openai-responses/parameter-schema.d.ts.map +1 -0
  169. package/dist/providers/openai-responses/parameter-schema.js +186 -0
  170. package/dist/providers/openai-responses/parameter-schema.js.map +1 -0
  171. package/dist/providers/openai-responses/provider.d.ts +54 -0
  172. package/dist/providers/openai-responses/provider.d.ts.map +1 -0
  173. package/dist/providers/openai-responses/provider.js +270 -0
  174. package/dist/providers/openai-responses/provider.js.map +1 -0
  175. package/dist/providers/openai-responses/request.d.ts +41 -0
  176. package/dist/providers/openai-responses/request.d.ts.map +1 -0
  177. package/dist/providers/openai-responses/request.js +276 -0
  178. package/dist/providers/openai-responses/request.js.map +1 -0
  179. package/dist/providers/openai-responses/response.d.ts +7 -0
  180. package/dist/providers/openai-responses/response.d.ts.map +1 -0
  181. package/dist/providers/openai-responses/response.js +354 -0
  182. package/dist/providers/openai-responses/response.js.map +1 -0
  183. package/dist/providers/openai-responses/stored-items.d.ts +9 -0
  184. package/dist/providers/openai-responses/stored-items.d.ts.map +1 -0
  185. package/dist/providers/openai-responses/stored-items.js +133 -0
  186. package/dist/providers/openai-responses/stored-items.js.map +1 -0
  187. package/dist/providers/openai-responses/tool-search.d.ts +12 -0
  188. package/dist/providers/openai-responses/tool-search.d.ts.map +1 -0
  189. package/dist/providers/openai-responses/tool-search.js +68 -0
  190. package/dist/providers/openai-responses/tool-search.js.map +1 -0
  191. package/dist/providers/openai-responses/tools.d.ts +33 -0
  192. package/dist/providers/openai-responses/tools.d.ts.map +1 -0
  193. package/dist/providers/openai-responses/tools.js +53 -0
  194. package/dist/providers/openai-responses/tools.js.map +1 -0
  195. package/dist/providers/openai-responses/web-search.d.ts +5 -0
  196. package/dist/providers/openai-responses/web-search.d.ts.map +1 -0
  197. package/dist/providers/openai-responses/web-search.js +114 -0
  198. package/dist/providers/openai-responses/web-search.js.map +1 -0
  199. package/dist/providers/openai-responses/websocket.d.ts +29 -0
  200. package/dist/providers/openai-responses/websocket.d.ts.map +1 -0
  201. package/dist/providers/openai-responses/websocket.js +400 -0
  202. package/dist/providers/openai-responses/websocket.js.map +1 -0
  203. package/dist/tools/dispatch.d.ts +65 -0
  204. package/dist/tools/dispatch.d.ts.map +1 -0
  205. package/dist/tools/dispatch.js +536 -0
  206. package/dist/tools/dispatch.js.map +1 -0
  207. package/dist/tools/display-title.d.ts +18 -0
  208. package/dist/tools/display-title.d.ts.map +1 -0
  209. package/dist/tools/display-title.js +50 -0
  210. package/dist/tools/display-title.js.map +1 -0
  211. package/dist/tools/search.d.ts +36 -0
  212. package/dist/tools/search.d.ts.map +1 -0
  213. package/dist/tools/search.js +224 -0
  214. package/dist/tools/search.js.map +1 -0
  215. package/dist/tools/tool.d.ts +200 -0
  216. package/dist/tools/tool.d.ts.map +1 -0
  217. package/dist/tools/tool.js +275 -0
  218. package/dist/tools/tool.js.map +1 -0
  219. package/dist/tools/truncate.d.ts +18 -0
  220. package/dist/tools/truncate.d.ts.map +1 -0
  221. package/dist/tools/truncate.js +76 -0
  222. package/dist/tools/truncate.js.map +1 -0
  223. package/package.json +67 -4
@@ -0,0 +1,462 @@
1
+ import { isBackgroundCall } from "./streaming-tools.js";
2
+ import { pendingBackgroundCalls } from "./background-tools.js";
3
+ import { isAbortError } from "../abort.js";
4
+ import { decorateToolResult } from "../tools/dispatch.js";
5
+ import { admitToolCalls, loadDeferredCalls } from "./tool-admission.js";
6
+ import { StructuredOutputError } from "../errors.js";
7
+ import { messageId } from "../contracts/messages.js";
8
+ import { ToolChoice } from "../contracts/provider.js";
9
+ import { StopReason } from "../contracts/events.js";
10
+ import { incompleteToolStep } from "./recovery.js";
11
+ import { normalizeToolResult } from "../internal/validate.js";
12
+ import { hookCall, invoke } from "./guards.js";
13
+ import { appendBudgetDenials, budgetDenialResult, nextNoProgressCount, recoveredTerminalText, terminalCompletionText, turnEndingToolBatchRejection, turnEndingBatchRefusal } from "./policy.js";
14
+ import { announceInputTaken, callModel, drainPending, finalize, isOwnerMessage, makeRun, pauseResult, prepare, runTools, stepFinished, stopForBudget } from "./run-state.js";
15
+ import { correctionContent, formatIssues, validateOutputText } from "./structured-output.js";
16
+ export const runLoop = async (wiring, sourceMessages, emit, signal, output, tryEmit) => {
17
+ const run = makeRun({ wiring, sourceMessages, emit, signal, output, tryEmit });
18
+ let failure;
19
+ let failed = false;
20
+ try {
21
+ await launchPendingBackground(run);
22
+ if (await resumeIncomplete(run))
23
+ return;
24
+ while (true) {
25
+ if ((await step(run)) === "done")
26
+ return;
27
+ }
28
+ }
29
+ catch (cause) {
30
+ failed = true;
31
+ failure = cause;
32
+ if (!(isAbortError(cause) || signal.aborted)) {
33
+ await hookCall("onError", () => wiring.hooks.onError?.(cause));
34
+ }
35
+ throw cause;
36
+ }
37
+ finally {
38
+ run.toolsController.abort();
39
+ try {
40
+ await hookCall("onFinish", () => wiring.hooks.onFinish?.(run.state.resultText, run.state.step, run.messages));
41
+ }
42
+ catch (finishCause) {
43
+ if (!failed)
44
+ throw finishCause;
45
+ void failure;
46
+ }
47
+ }
48
+ };
49
+ const launchPendingBackground = async (run) => {
50
+ const { wiring } = run;
51
+ const pendingBackground = pendingBackgroundCalls(run.messages, {
52
+ displayTitle: wiring.toolset.displayTitle
53
+ });
54
+ if (pendingBackground.length === 0)
55
+ return;
56
+ const entries = await wiring.toolset.entries();
57
+ const claimed = await hookCall("claimBackgroundCalls", async () => new Map((await wiring.hooks.claimBackgroundCalls?.(pendingBackground.map((call) => call.toolCall.id))) ?? []));
58
+ for (const held of claimed.values()) {
59
+ if (run.backgroundSignal.aborted)
60
+ held.stop();
61
+ else
62
+ run.backgroundSignal.addEventListener("abort", held.stop, { once: true });
63
+ }
64
+ const unclaimed = pendingBackground.filter((call) => !claimed.has(call.toolCall.id));
65
+ const recovered = await hookCall("recoverToolCalls", async () => new Map([
66
+ ...((unclaimed.length === 0
67
+ ? undefined
68
+ : await wiring.hooks.recoverToolCalls?.(unclaimed)) ?? [])
69
+ ].map(([id, value]) => [id, normalizeToolResult(value)])));
70
+ await run.background.launch({
71
+ calls: pendingBackground,
72
+ metas: new Map(entries.map((entry) => [entry.meta.name, entry.meta])),
73
+ mode: "message",
74
+ recovered,
75
+ claimed
76
+ });
77
+ };
78
+ const resumeIncomplete = async (run) => {
79
+ const { wiring, state, messages } = run;
80
+ const incomplete = incompleteToolStep(messages, wiring.toolset.displayTitle);
81
+ if (incomplete === null)
82
+ return false;
83
+ const entries = await wiring.toolset.entries();
84
+ const metas = new Map(entries.map((entry) => [entry.meta.name, entry.meta]));
85
+ const metadata = wiring.toolset.metadata;
86
+ if (metadata !== undefined) {
87
+ const hiddenNames = new Set(incomplete.pendingCalls.map((call) => call.name).filter((name) => !metas.has(name)));
88
+ for (const name of hiddenNames) {
89
+ const meta = await metadata(name);
90
+ if (meta?.name === name)
91
+ metas.set(name, meta);
92
+ }
93
+ }
94
+ const deferredPendingNames = new Set(incomplete.pendingCalls
95
+ .filter((call) => metas.get(call.name)?.deferred === true)
96
+ .map((call) => call.name));
97
+ await loadDeferredCalls({
98
+ calls: incomplete.pendingCalls,
99
+ deferredNames: deferredPendingNames,
100
+ load: (names) => wiring.toolset.seedLoadedNames === undefined
101
+ ? wiring.toolset.load(names)
102
+ : wiring.toolset.seedLoadedNames(names)
103
+ });
104
+ const recovered = await hookCall("recoverToolCalls", async () => {
105
+ const raw = new Map((await wiring.hooks.recoverToolCalls?.(incomplete.pendingCalls)) ?? []);
106
+ const callsById = new Map(incomplete.pendingCalls.map((call) => [call.toolCall.id, call]));
107
+ return new Map([...raw].map(([id, value]) => {
108
+ const call = callsById.get(id);
109
+ if (call === undefined)
110
+ return [id, normalizeToolResult(value)];
111
+ return [
112
+ id,
113
+ decorateToolResult({
114
+ name: call.name,
115
+ args: structuredClone(call.args),
116
+ toolCallId: id,
117
+ signal: run.signal,
118
+ messages
119
+ }, value, wiring.toolset)
120
+ ];
121
+ }));
122
+ });
123
+ const callsToExecute = incomplete.pendingCalls.filter((call) => !recovered.has(call.toolCall.id));
124
+ const missingIds = new Set(incomplete.pendingCalls.map((call) => call.toolCall.id));
125
+ const missingRaw = incomplete.rawToolCalls.filter((call) => missingIds.has(call.id));
126
+ const rejection = turnEndingToolBatchRejection(incomplete.pendingCalls, metas);
127
+ if (rejection === null) {
128
+ const reserved = await run.budget.reserveToolCalls(callsToExecute.length, wiring.config.maxToolCalls);
129
+ if (!reserved) {
130
+ const denial = invoke("policy.budgetDenialContent", () => budgetDenialResult(StopReason.MAX_TOOL_CALLS, wiring.config.policy));
131
+ const settled = new Map(recovered);
132
+ for (const call of callsToExecute)
133
+ settled.set(call.toolCall.id, denial);
134
+ await runTools(run, [], missingRaw, metas, { recoveredResults: settled });
135
+ state.step = 1;
136
+ await stepFinished(run);
137
+ await finalize(run, state.resultText, StopReason.MAX_TOOL_CALLS, 1);
138
+ return true;
139
+ }
140
+ }
141
+ const executed = await runTools(run, callsToExecute, missingRaw, metas, {
142
+ recoveredResults: recovered,
143
+ ...(rejection === null ? { foreground: true } : { rejection })
144
+ });
145
+ state.step = 1;
146
+ if (executed.paused.length > 0) {
147
+ await finalizePaused(run, 1, executed.paused);
148
+ return true;
149
+ }
150
+ if (rejection === null) {
151
+ const terminal = recoveredTerminalText(incomplete.pendingCalls, recovered, metas) ??
152
+ terminalCompletionText(executed.completions);
153
+ if (terminal !== undefined) {
154
+ await stepFinished(run);
155
+ await finalize(run, terminal, StopReason.END_TURN, 1);
156
+ return true;
157
+ }
158
+ }
159
+ await stepFinished(run);
160
+ return false;
161
+ };
162
+ const finalizePaused = async (run, steps, paused) => {
163
+ const running = run.background.running();
164
+ const hold = run.wiring.hooks.holdBackgroundCalls;
165
+ if (running.length > 0 && hold !== undefined) {
166
+ try {
167
+ await hookCall("holdBackgroundCalls", () => hold(running));
168
+ }
169
+ catch (error) {
170
+ for (const call of running)
171
+ call.stop();
172
+ throw error;
173
+ }
174
+ }
175
+ run.detachBackground();
176
+ await finalize(run, "", StopReason.PAUSED, steps, pauseResult(paused));
177
+ };
178
+ const remainingWallTime = (run) => {
179
+ const { wiring, state } = run;
180
+ return wiring.config.maxWallTimeMs === undefined
181
+ ? {}
182
+ : {
183
+ maxWaitMs: wiring.config.maxWallTimeMs - (invoke("clock", wiring.clock) - state.startedAtMs)
184
+ };
185
+ };
186
+ const step = async (run) => {
187
+ const { wiring, state, messages } = run;
188
+ const settled = await run.background.drain({ grace: true });
189
+ if (settled.completions.length > 0)
190
+ state.noProgressSteps = nextNoProgressCount(state.noProgressSteps, settled.completions);
191
+ if (wiring.config.maxNoProgressSteps > 0 &&
192
+ state.noProgressSteps >= wiring.config.maxNoProgressSteps) {
193
+ await finalize(run, state.resultText, StopReason.NO_PROGRESS, state.step);
194
+ return "done";
195
+ }
196
+ if (settled.paused.length > 0) {
197
+ await finalizePaused(run, state.step, settled.paused);
198
+ return "done";
199
+ }
200
+ const drained = await drainPending(run);
201
+ state.inputAdmission = { pending: false };
202
+ const newest = messages.at(-1);
203
+ if (drained === 0 &&
204
+ state.modelTurnCount === 0 &&
205
+ newest !== undefined &&
206
+ isOwnerMessage(run, newest))
207
+ await announceInputTaken(run);
208
+ if (wiring.config.maxIterations !== undefined && state.step >= wiring.config.maxIterations) {
209
+ await finalize(run, state.resultText, StopReason.MAX_ITERATIONS, state.step);
210
+ return "done";
211
+ }
212
+ const initialBudgetStop = await stopForBudget(run);
213
+ if (initialBudgetStop !== null) {
214
+ await finalize(run, state.resultText, initialBudgetStop, state.step);
215
+ return "done";
216
+ }
217
+ const view = await prepare(run);
218
+ const preparedBudgetStop = await stopForBudget(run);
219
+ if (preparedBudgetStop !== null) {
220
+ await finalize(run, state.resultText, preparedBudgetStop, state.step);
221
+ return "done";
222
+ }
223
+ const turnStart = messages.length;
224
+ const turn = await callModel(run, view);
225
+ const response = turn.response;
226
+ const message = response.message;
227
+ const rawCalls = message.tool_calls ?? [];
228
+ const undispatched = rawCalls.filter((call) => !state.streamedTools.ids.has(call.id));
229
+ if (state.streamedTools.output.paused.length > 0) {
230
+ await finalizePaused(run, state.step + 1, state.streamedTools.output.paused);
231
+ return "done";
232
+ }
233
+ const afterModelBudgetStop = await stopForBudget(run);
234
+ if (afterModelBudgetStop !== null) {
235
+ if (rawCalls.length > 0) {
236
+ invoke("policy.budgetDenialContent", () => {
237
+ appendBudgetDenials(messages, undispatched, afterModelBudgetStop, wiring.config.policy);
238
+ });
239
+ }
240
+ await finalize(run, state.resultText, afterModelBudgetStop, state.step);
241
+ return "done";
242
+ }
243
+ if (response.finish_reason === "length") {
244
+ if (rawCalls.length > 0) {
245
+ invoke("policy.budgetDenialContent", () => {
246
+ appendBudgetDenials(messages, undispatched, StopReason.MAX_OUTPUT_LENGTH, wiring.config.policy);
247
+ });
248
+ }
249
+ await finalize(run, (message.content ?? "").trim(), StopReason.MAX_OUTPUT_LENGTH, state.step);
250
+ return "done";
251
+ }
252
+ if (rawCalls.length === 0 && response.continuation === true && !run.background.pending) {
253
+ state.step += 1;
254
+ return "continue";
255
+ }
256
+ return rawCalls.length === 0
257
+ ? settleTextTurn(run, view, message, turnStart)
258
+ : runToolTurn(run, view, message);
259
+ };
260
+ const settleTextTurn = async (run, view, message, turnStart) => {
261
+ const { wiring, state, messages } = run;
262
+ const providerCalls = message.provider_tool_calls ?? [];
263
+ const deferredNames = new Set(view.deferredTools.map((tool) => tool.name));
264
+ const providerLoaded = await loadDeferredCalls({
265
+ calls: [],
266
+ deferredNames,
267
+ providerCalls,
268
+ load: (names) => wiring.toolset.load(names)
269
+ });
270
+ const silentMiss = providerCalls.length > 0 &&
271
+ view.deferredTools.length > 0 &&
272
+ (message.content ?? "").trim().length === 0;
273
+ if (providerLoaded.size > 0 || silentMiss) {
274
+ state.step += 1;
275
+ await stepFinished(run);
276
+ return "continue";
277
+ }
278
+ if (run.background.pending) {
279
+ const arrival = new AbortController();
280
+ const wake = wiring.hooks
281
+ .waitForPendingMessages?.(arrival.signal)
282
+ .catch(() => new Promise(() => { }));
283
+ let settled;
284
+ try {
285
+ settled =
286
+ (await drainPending(run)) > 0
287
+ ? { completions: [], paused: [] }
288
+ : await run.background.drain({
289
+ wait: true,
290
+ ...(wake === undefined ? {} : { wake }),
291
+ ...remainingWallTime(run)
292
+ });
293
+ }
294
+ finally {
295
+ arrival.abort();
296
+ }
297
+ if (settled.paused.length > 0) {
298
+ await finalizePaused(run, state.step, settled.paused);
299
+ return "done";
300
+ }
301
+ if (settled.completions.length > 0)
302
+ state.noProgressSteps = nextNoProgressCount(state.noProgressSteps, settled.completions);
303
+ state.step += 1;
304
+ return "continue";
305
+ }
306
+ const pendingCount = await drainPending(run);
307
+ if (pendingCount > 0)
308
+ return "continue";
309
+ const finalText = (message.content ?? "").trim();
310
+ if (!state.finalTextChecked &&
311
+ finalText.length > 0 &&
312
+ wiring.hooks.checkFinalText !== undefined) {
313
+ state.finalTextChecked = true;
314
+ const correction = await hookCall("checkFinalText", () => wiring.hooks.checkFinalText?.(finalText));
315
+ if (correction !== undefined) {
316
+ const rejected = messages
317
+ .slice(turnStart)
318
+ .flatMap((record) => record.role === "assistant" && typeof record.message_id === "string"
319
+ ? [record.message_id]
320
+ : []);
321
+ const correctionId = messageId("text");
322
+ messages.push({
323
+ role: "user",
324
+ message_id: correctionId,
325
+ is_meta: true,
326
+ content: correction,
327
+ rejected_message_ids: rejected
328
+ });
329
+ await run.emit({
330
+ _tag: "FinalTextSuperseded",
331
+ depth: 0,
332
+ parent_id: null,
333
+ message_ids: rejected,
334
+ correction_message_id: correctionId
335
+ });
336
+ state.step += 1;
337
+ await stepFinished(run);
338
+ return "continue";
339
+ }
340
+ }
341
+ if (run.output !== undefined) {
342
+ const validated = await validateOutputText(run.output.schema, finalText);
343
+ if ("issues" in validated) {
344
+ if (!state.outputCorrectionUsed) {
345
+ state.outputCorrectionUsed = true;
346
+ messages.push({
347
+ role: "user",
348
+ message_id: messageId("text"),
349
+ is_meta: true,
350
+ content: correctionContent(validated.issues)
351
+ });
352
+ state.step += 1;
353
+ await stepFinished(run);
354
+ return "continue";
355
+ }
356
+ throw new StructuredOutputError(`structured output failed validation after one correction retry: ${formatIssues(validated.issues) || "the value does not match the schema"}`, validated.issues);
357
+ }
358
+ state.structuredObject = { value: validated.value };
359
+ }
360
+ await finalize(run, finalText, StopReason.END_TURN, state.step);
361
+ return "done";
362
+ };
363
+ const runToolTurn = async (run, view, message) => {
364
+ const { wiring, state, messages } = run;
365
+ const rawCalls = message.tool_calls ?? [];
366
+ const { calls, deferredNames } = admitToolCalls({
367
+ rawCalls,
368
+ view,
369
+ displayTitle: wiring.toolset.displayTitle
370
+ });
371
+ await loadDeferredCalls({
372
+ calls,
373
+ deferredNames,
374
+ providerCalls: message.provider_tool_calls ?? [],
375
+ load: (names) => wiring.toolset.load(names)
376
+ });
377
+ const refusal = turnEndingBatchRefusal(calls, rawCalls, view.metas);
378
+ if (refusal !== null) {
379
+ await runTools(run, refusal.refused, refusal.refusedRaw, view.metas, {
380
+ rejection: refusal.rejection
381
+ });
382
+ }
383
+ const others = calls.filter((call) => !(refusal?.refused ?? []).includes(call) && !state.streamedTools.ids.has(call.toolCall.id));
384
+ const othersRaw = rawCalls.filter((call) => !state.streamedTools.ids.has(call.id) && !(refusal?.refusedRaw ?? []).includes(call));
385
+ if (refusal !== null && others.length === 0 && state.streamedTools.ids.size === 0) {
386
+ state.noProgressSteps += 1;
387
+ state.step += 1;
388
+ if (wiring.config.maxNoProgressSteps > 0 &&
389
+ state.noProgressSteps >= wiring.config.maxNoProgressSteps) {
390
+ await finalize(run, state.resultText, StopReason.NO_PROGRESS, state.step);
391
+ return "done";
392
+ }
393
+ await stepFinished(run);
394
+ return "continue";
395
+ }
396
+ const reserved = await run.budget.reserveToolCalls(others.length, wiring.config.maxToolCalls);
397
+ if (!reserved) {
398
+ invoke("policy.budgetDenialContent", () => {
399
+ appendBudgetDenials(messages, othersRaw, StopReason.MAX_TOOL_CALLS, wiring.config.policy);
400
+ });
401
+ await finalize(run, state.resultText, StopReason.MAX_TOOL_CALLS, state.step);
402
+ return "done";
403
+ }
404
+ const backgroundCalls = others.filter((call) => isBackgroundCall(call, view.metas.get(call.name), view.asyncMode));
405
+ const backgroundOutput = await run.background.launch({
406
+ calls: backgroundCalls,
407
+ metas: view.metas,
408
+ mode: view.asyncMode
409
+ });
410
+ const backgroundIds = new Set(backgroundCalls.map((call) => call.toolCall.id));
411
+ const remaining = await runTools(run, others.filter((call) => !backgroundIds.has(call.toolCall.id)), othersRaw.filter((call) => !backgroundIds.has(call.id)), view.metas, { foreground: true });
412
+ const executed = {
413
+ completions: [
414
+ ...state.streamedTools.output.completions,
415
+ ...backgroundOutput.completions,
416
+ ...remaining.completions
417
+ ],
418
+ paused: [...state.streamedTools.output.paused, ...backgroundOutput.paused, ...remaining.paused]
419
+ };
420
+ if (executed.paused.length > 0) {
421
+ state.step += 1;
422
+ await finalizePaused(run, state.step, executed.paused);
423
+ return "done";
424
+ }
425
+ const terminal = terminalCompletionText(executed.completions);
426
+ if (terminal !== undefined) {
427
+ state.step += 1;
428
+ await stepFinished(run);
429
+ await finalize(run, terminal, StopReason.END_TURN, state.step);
430
+ return "done";
431
+ }
432
+ if (executed.completions.length > 0)
433
+ state.noProgressSteps = nextNoProgressCount(state.noProgressSteps, executed.completions);
434
+ if (wiring.config.maxNoProgressSteps > 0 &&
435
+ state.noProgressSteps >= wiring.config.maxNoProgressSteps) {
436
+ state.step += 1;
437
+ await finalize(run, state.resultText, StopReason.NO_PROGRESS, state.step);
438
+ return "done";
439
+ }
440
+ const afterToolsBudgetStop = await stopForBudget(run);
441
+ if (afterToolsBudgetStop !== null) {
442
+ const finalizeInstruction = wiring.config.policy.finalizeInstruction;
443
+ if (afterToolsBudgetStop === StopReason.MAX_TOKEN_BUDGET && finalizeInstruction !== undefined) {
444
+ const { toolSearch: _, ...searchless } = view;
445
+ const finalizeView = {
446
+ ...searchless,
447
+ messages,
448
+ tools: [],
449
+ deferredTools: [],
450
+ toolChoice: ToolChoice.NONE
451
+ };
452
+ const finalTurn = await callModel(run, finalizeView, finalizeInstruction);
453
+ state.resultText = (finalTurn.response.message.content ?? "").trim();
454
+ }
455
+ await finalize(run, state.resultText, afterToolsBudgetStop, state.step);
456
+ return "done";
457
+ }
458
+ state.step += 1;
459
+ await stepFinished(run);
460
+ return "continue";
461
+ };
462
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/agent/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { AssistantMessage, ChatMessage, ProviderToolCall, ToolCall } from "../contracts/messages.js";
2
+ import type { CompletionResponse, ProviderMessage } from "../contracts/provider.js";
3
+ export declare class StreamedCallHistory {
4
+ private readonly history;
5
+ readonly calls: Map<string, ToolCall>;
6
+ readonly persistedIds: Set<string>;
7
+ readonly providerCalls: Map<string, ProviderToolCall>;
8
+ private fragments;
9
+ private readonly text;
10
+ constructor(history: ChatMessage[]);
11
+ get persisted(): boolean;
12
+ get count(): number;
13
+ add(call: ToolCall): void;
14
+ persist(message: AssistantMessage): void;
15
+ reset(): void;
16
+ committed(model: string): CompletionResponse;
17
+ validate(message: ProviderMessage): void;
18
+ finish(message: AssistantMessage): void;
19
+ }
20
+ //# sourceMappingURL=streamed-call-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamed-call-history.d.ts","sourceRoot":"","sources":["../../src/agent/streamed-call-history.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACT,MAAM,0BAA0B,CAAA;AACjC,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AASnF,qBAAa,mBAAmB;IAOlB,OAAO,CAAC,QAAQ,CAAC,OAAO;IANpC,QAAQ,CAAC,KAAK,wBAA8B;IAC5C,QAAQ,CAAC,YAAY,cAAoB;IACzC,QAAQ,CAAC,aAAa,gCAAsC;IAC5D,OAAO,CAAC,SAAS,CAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAe;IAEpC,YAA6B,OAAO,EAAE,WAAW,EAAE,EAAI;IAEvD,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,CAExB;IAED,OAAO,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAMvC;IAED,KAAK,IAAI,IAAI,CAEZ;IAED,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,kBAAkB,CAgB3C;IAED,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAiBvC;IAED,MAAM,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAEtC;CACF"}
@@ -0,0 +1,71 @@
1
+ import { InvalidModelResponseError } from "../errors.js";
2
+ const sameCall = (left, right) => left.id === right.id &&
3
+ left.function.name === right.function.name &&
4
+ left.function.arguments === right.function.arguments &&
5
+ left.async === right.async;
6
+ export class StreamedCallHistory {
7
+ history;
8
+ calls = new Map();
9
+ persistedIds = new Set();
10
+ providerCalls = new Map();
11
+ fragments = 0;
12
+ text = [];
13
+ constructor(history) {
14
+ this.history = history;
15
+ }
16
+ get persisted() {
17
+ return this.fragments > 0;
18
+ }
19
+ get count() {
20
+ return this.fragments;
21
+ }
22
+ add(call) {
23
+ this.calls.set(call.id, call);
24
+ }
25
+ persist(message) {
26
+ this.history.push(message);
27
+ this.text.push(typeof message.content === "string" ? message.content : "");
28
+ this.fragments += 1;
29
+ for (const call of message.tool_calls ?? [])
30
+ this.persistedIds.add(call.id);
31
+ for (const call of message.provider_tool_calls ?? [])
32
+ this.providerCalls.set(call.id, call);
33
+ }
34
+ reset() {
35
+ this.calls.clear();
36
+ }
37
+ committed(model) {
38
+ const calls = [...this.calls.values()];
39
+ return {
40
+ _tag: "Completed",
41
+ model,
42
+ finish_reason: calls.length > 0 ? "tool_calls" : "stop",
43
+ ...(calls.length > 0 ? {} : { continuation: true }),
44
+ usage: { completion_tokens: 0 },
45
+ message: {
46
+ role: "assistant",
47
+ content: this.text.join(""),
48
+ tool_calls: calls,
49
+ reasoning_content: null,
50
+ provider_tool_calls: [...this.providerCalls.values()]
51
+ }
52
+ };
53
+ }
54
+ validate(message) {
55
+ const calls = message.tool_calls ?? [];
56
+ if (this.persisted && this.text.join("") !== (message.content ?? ""))
57
+ throw new InvalidModelResponseError("terminal response changed or omitted completed text fragments");
58
+ for (const ready of this.calls.values()) {
59
+ const final = calls.find((call) => call.id === ready.id);
60
+ if (final === undefined || !sameCall(ready, final))
61
+ throw new InvalidModelResponseError("terminal response changed or omitted a completed tool call");
62
+ }
63
+ if (this.persisted && calls.some((call) => !this.calls.has(call.id)))
64
+ throw new InvalidModelResponseError("terminal response contains a tool call without its completed fragment");
65
+ }
66
+ finish(message) {
67
+ if (!this.persisted)
68
+ this.history.push(message);
69
+ }
70
+ }
71
+ //# sourceMappingURL=streamed-call-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamed-call-history.js","sourceRoot":"","sources":["../../src/agent/streamed-call-history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import type { ChatMessage, ToolCall } from "../contracts/messages.js";
2
+ import { type PendingToolCall, type ToolMeta } from "../contracts/tools.js";
3
+ import type { DispatchOutput } from "../tools/dispatch.js";
4
+ import type { Run, StepView } from "./run-state.js";
5
+ export declare const isBackgroundCall: (call: PendingToolCall, meta: ToolMeta | undefined, mode: "native" | "message") => boolean;
6
+ export interface StreamedToolResults {
7
+ readonly ids: ReadonlySet<string>;
8
+ readonly output: DispatchOutput;
9
+ }
10
+ export declare class StreamingTools {
11
+ private readonly options;
12
+ private readonly ids;
13
+ private readonly pending;
14
+ constructor(options: {
15
+ readonly run: Run;
16
+ readonly view: StepView;
17
+ readonly canStart: () => Promise<boolean>;
18
+ readonly execute: (call: PendingToolCall, messages: ChatMessage[]) => Promise<DispatchOutput>;
19
+ });
20
+ start(raw: ToolCall, checkpoint: () => Promise<void>): Promise<void>;
21
+ settle(): Promise<StreamedToolResults>;
22
+ }
23
+ //# sourceMappingURL=streaming-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-tools.d.ts","sourceRoot":"","sources":["../../src/agent/streaming-tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACrE,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,QAAQ,EACd,MAAM,uBAAuB,CAAA;AAC9B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAG1D,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AAEnD,eAAO,MAAM,gBAAgB,SACrB,eAAe,QACf,QAAQ,GAAG,SAAS,QACpB,QAAQ,GAAG,SAAS,KACzB,OAImD,CAAA;AAEtD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,GAAG,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;IACjC,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAA;CAChC;AAUD,qBAAa,cAAc;IAKvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAJ1B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiC;IAEzD,YACmB,OAAO,EAAE;QACxB,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAA;QACjB,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAA;QACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,OAAO,CAAC,CAAA;QACzC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,OAAO,CAAC,cAAc,CAAC,CAAA;KAC9F,EACC;IAEE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE;IAEK,MAAM,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAiB3C;CACF"}