@code-yeongyu/senpi-agent-core 2026.9.29-2 → 2026.9.29-4

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 (219) hide show
  1. package/package.json +4 -3
  2. package/dist/agent-loop.d.ts.map +0 -1
  3. package/dist/agent-loop.js.map +0 -1
  4. package/dist/agent.d.ts.map +0 -1
  5. package/dist/agent.js.map +0 -1
  6. package/dist/assistant-terminal-state.d.ts.map +0 -1
  7. package/dist/assistant-terminal-state.js.map +0 -1
  8. package/dist/empty-assistant-recovery.d.ts.map +0 -1
  9. package/dist/empty-assistant-recovery.js.map +0 -1
  10. package/dist/harness/agent-harness.d.ts.map +0 -1
  11. package/dist/harness/agent-harness.js.map +0 -1
  12. package/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
  13. package/dist/harness/compaction/branch-summarization.js.map +0 -1
  14. package/dist/harness/compaction/compaction.d.ts.map +0 -1
  15. package/dist/harness/compaction/compaction.js.map +0 -1
  16. package/dist/harness/compaction/utils.d.ts.map +0 -1
  17. package/dist/harness/compaction/utils.js.map +0 -1
  18. package/dist/harness/config.d.ts.map +0 -1
  19. package/dist/harness/config.js.map +0 -1
  20. package/dist/harness/context.d.ts.map +0 -1
  21. package/dist/harness/context.js.map +0 -1
  22. package/dist/harness/env/nodejs.d.ts.map +0 -1
  23. package/dist/harness/env/nodejs.js.map +0 -1
  24. package/dist/harness/events.d.ts.map +0 -1
  25. package/dist/harness/events.js.map +0 -1
  26. package/dist/harness/execution/assistant.d.ts.map +0 -1
  27. package/dist/harness/execution/assistant.js.map +0 -1
  28. package/dist/harness/execution/effect-gate.d.ts.map +0 -1
  29. package/dist/harness/execution/effect-gate.js.map +0 -1
  30. package/dist/harness/execution/tools.d.ts.map +0 -1
  31. package/dist/harness/execution/tools.js.map +0 -1
  32. package/dist/harness/hooks.d.ts.map +0 -1
  33. package/dist/harness/hooks.js.map +0 -1
  34. package/dist/harness/messages.d.ts.map +0 -1
  35. package/dist/harness/messages.js.map +0 -1
  36. package/dist/harness/prompt-templates.d.ts.map +0 -1
  37. package/dist/harness/prompt-templates.js.map +0 -1
  38. package/dist/harness/result.d.ts.map +0 -1
  39. package/dist/harness/result.js.map +0 -1
  40. package/dist/harness/runtime/drive/boundary.d.ts.map +0 -1
  41. package/dist/harness/runtime/drive/boundary.js.map +0 -1
  42. package/dist/harness/runtime/drive/checkpoint.d.ts.map +0 -1
  43. package/dist/harness/runtime/drive/checkpoint.js.map +0 -1
  44. package/dist/harness/runtime/drive/deferred.d.ts.map +0 -1
  45. package/dist/harness/runtime/drive/deferred.js.map +0 -1
  46. package/dist/harness/runtime/drive/generation.d.ts.map +0 -1
  47. package/dist/harness/runtime/drive/generation.js.map +0 -1
  48. package/dist/harness/runtime/drive/reconcile.d.ts.map +0 -1
  49. package/dist/harness/runtime/drive/reconcile.js.map +0 -1
  50. package/dist/harness/runtime/drive/recovery.d.ts.map +0 -1
  51. package/dist/harness/runtime/drive/recovery.js.map +0 -1
  52. package/dist/harness/runtime/drive/response.d.ts.map +0 -1
  53. package/dist/harness/runtime/drive/response.js.map +0 -1
  54. package/dist/harness/runtime/drive/retry.d.ts.map +0 -1
  55. package/dist/harness/runtime/drive/retry.js.map +0 -1
  56. package/dist/harness/runtime/drive/structural.d.ts.map +0 -1
  57. package/dist/harness/runtime/drive/structural.js.map +0 -1
  58. package/dist/harness/runtime/drive/terminal.d.ts.map +0 -1
  59. package/dist/harness/runtime/drive/terminal.js.map +0 -1
  60. package/dist/harness/runtime/drive/tool-placement.d.ts.map +0 -1
  61. package/dist/harness/runtime/drive/tool-placement.js.map +0 -1
  62. package/dist/harness/runtime/drive/tools.d.ts.map +0 -1
  63. package/dist/harness/runtime/drive/tools.js.map +0 -1
  64. package/dist/harness/runtime/drive.d.ts.map +0 -1
  65. package/dist/harness/runtime/drive.js.map +0 -1
  66. package/dist/harness/runtime/harness.d.ts.map +0 -1
  67. package/dist/harness/runtime/harness.js.map +0 -1
  68. package/dist/harness/runtime/index.d.ts.map +0 -1
  69. package/dist/harness/runtime/index.js.map +0 -1
  70. package/dist/harness/runtime/lane.d.ts.map +0 -1
  71. package/dist/harness/runtime/lane.js.map +0 -1
  72. package/dist/harness/runtime/progress.d.ts.map +0 -1
  73. package/dist/harness/runtime/progress.js.map +0 -1
  74. package/dist/harness/runtime/reducer.d.ts.map +0 -1
  75. package/dist/harness/runtime/reducer.js.map +0 -1
  76. package/dist/harness/runtime/restore.d.ts.map +0 -1
  77. package/dist/harness/runtime/restore.js.map +0 -1
  78. package/dist/harness/runtime/transcript.d.ts.map +0 -1
  79. package/dist/harness/runtime/transcript.js.map +0 -1
  80. package/dist/harness/runtime/types.d.ts.map +0 -1
  81. package/dist/harness/runtime/types.js.map +0 -1
  82. package/dist/harness/session/commit.d.ts.map +0 -1
  83. package/dist/harness/session/commit.js.map +0 -1
  84. package/dist/harness/session/context.d.ts.map +0 -1
  85. package/dist/harness/session/context.js.map +0 -1
  86. package/dist/harness/session/fork-policy.d.ts.map +0 -1
  87. package/dist/harness/session/fork-policy.js.map +0 -1
  88. package/dist/harness/session/fork.d.ts.map +0 -1
  89. package/dist/harness/session/fork.js.map +0 -1
  90. package/dist/harness/session/in-memory-storage-state.d.ts.map +0 -1
  91. package/dist/harness/session/in-memory-storage-state.js.map +0 -1
  92. package/dist/harness/session/index.d.ts.map +0 -1
  93. package/dist/harness/session/index.js.map +0 -1
  94. package/dist/harness/session/jsonl/codec.d.ts.map +0 -1
  95. package/dist/harness/session/jsonl/codec.js.map +0 -1
  96. package/dist/harness/session/jsonl/fork.d.ts.map +0 -1
  97. package/dist/harness/session/jsonl/fork.js.map +0 -1
  98. package/dist/harness/session/jsonl/index.d.ts.map +0 -1
  99. package/dist/harness/session/jsonl/index.js.map +0 -1
  100. package/dist/harness/session/jsonl/io.d.ts.map +0 -1
  101. package/dist/harness/session/jsonl/io.js.map +0 -1
  102. package/dist/harness/session/jsonl/legacy-v3.d.ts.map +0 -1
  103. package/dist/harness/session/jsonl/legacy-v3.js.map +0 -1
  104. package/dist/harness/session/jsonl/repo.d.ts.map +0 -1
  105. package/dist/harness/session/jsonl/repo.js.map +0 -1
  106. package/dist/harness/session/jsonl/storage.d.ts.map +0 -1
  107. package/dist/harness/session/jsonl/storage.js.map +0 -1
  108. package/dist/harness/session/jsonl/types.d.ts.map +0 -1
  109. package/dist/harness/session/jsonl/types.js.map +0 -1
  110. package/dist/harness/session/memory.d.ts.map +0 -1
  111. package/dist/harness/session/memory.js.map +0 -1
  112. package/dist/harness/session/mutation-line.d.ts.map +0 -1
  113. package/dist/harness/session/mutation-line.js.map +0 -1
  114. package/dist/harness/session/session.d.ts.map +0 -1
  115. package/dist/harness/session/session.js.map +0 -1
  116. package/dist/harness/session/testing/benchmark/datasets.d.ts.map +0 -1
  117. package/dist/harness/session/testing/benchmark/datasets.js.map +0 -1
  118. package/dist/harness/session/testing/benchmark/session-repo.d.ts.map +0 -1
  119. package/dist/harness/session/testing/benchmark/session-repo.js.map +0 -1
  120. package/dist/harness/session/testing/benchmark/storage.d.ts.map +0 -1
  121. package/dist/harness/session/testing/benchmark/storage.js.map +0 -1
  122. package/dist/harness/session/testing/conformance/session-repo.d.ts.map +0 -1
  123. package/dist/harness/session/testing/conformance/session-repo.js.map +0 -1
  124. package/dist/harness/session/testing/conformance/storage.d.ts.map +0 -1
  125. package/dist/harness/session/testing/conformance/storage.js.map +0 -1
  126. package/dist/harness/session/testing/gating-storage.d.ts.map +0 -1
  127. package/dist/harness/session/testing/gating-storage.js.map +0 -1
  128. package/dist/harness/session/testing/index.d.ts.map +0 -1
  129. package/dist/harness/session/testing/index.js.map +0 -1
  130. package/dist/harness/session/testing/instrumented-storage.d.ts.map +0 -1
  131. package/dist/harness/session/testing/instrumented-storage.js.map +0 -1
  132. package/dist/harness/session/testing/storage-decorator.d.ts.map +0 -1
  133. package/dist/harness/session/testing/storage-decorator.js.map +0 -1
  134. package/dist/harness/session/testing/types.d.ts.map +0 -1
  135. package/dist/harness/session/testing/types.js.map +0 -1
  136. package/dist/harness/session/types.d.ts.map +0 -1
  137. package/dist/harness/session/types.js.map +0 -1
  138. package/dist/harness/session/values.d.ts.map +0 -1
  139. package/dist/harness/session/values.js.map +0 -1
  140. package/dist/harness/skills.d.ts.map +0 -1
  141. package/dist/harness/skills.js.map +0 -1
  142. package/dist/harness/system-prompt.d.ts.map +0 -1
  143. package/dist/harness/system-prompt.js.map +0 -1
  144. package/dist/harness/telemetry.d.ts.map +0 -1
  145. package/dist/harness/telemetry.js.map +0 -1
  146. package/dist/harness/tools/bash.d.ts.map +0 -1
  147. package/dist/harness/tools/bash.js.map +0 -1
  148. package/dist/harness/tools/edit-diff.d.ts.map +0 -1
  149. package/dist/harness/tools/edit-diff.js.map +0 -1
  150. package/dist/harness/tools/edit.d.ts.map +0 -1
  151. package/dist/harness/tools/edit.js.map +0 -1
  152. package/dist/harness/tools/file-mutation-queue.d.ts.map +0 -1
  153. package/dist/harness/tools/file-mutation-queue.js.map +0 -1
  154. package/dist/harness/tools/image.d.ts.map +0 -1
  155. package/dist/harness/tools/image.js.map +0 -1
  156. package/dist/harness/tools/index.d.ts.map +0 -1
  157. package/dist/harness/tools/index.js.map +0 -1
  158. package/dist/harness/tools/path-utils.d.ts.map +0 -1
  159. package/dist/harness/tools/path-utils.js.map +0 -1
  160. package/dist/harness/tools/post-mutate.d.ts.map +0 -1
  161. package/dist/harness/tools/post-mutate.js.map +0 -1
  162. package/dist/harness/tools/read.d.ts.map +0 -1
  163. package/dist/harness/tools/read.js.map +0 -1
  164. package/dist/harness/tools/tool-context.d.ts.map +0 -1
  165. package/dist/harness/tools/tool-context.js.map +0 -1
  166. package/dist/harness/tools/write.d.ts.map +0 -1
  167. package/dist/harness/tools/write.js.map +0 -1
  168. package/dist/harness/types.d.ts.map +0 -1
  169. package/dist/harness/types.js.map +0 -1
  170. package/dist/harness/utils/adaptive-publisher.d.ts.map +0 -1
  171. package/dist/harness/utils/adaptive-publisher.js.map +0 -1
  172. package/dist/harness/utils/output-capture.d.ts.map +0 -1
  173. package/dist/harness/utils/output-capture.js.map +0 -1
  174. package/dist/harness/utils/read-folders/brace-scanner.d.ts.map +0 -1
  175. package/dist/harness/utils/read-folders/brace-scanner.js.map +0 -1
  176. package/dist/harness/utils/read-folders/compose.d.ts.map +0 -1
  177. package/dist/harness/utils/read-folders/compose.js.map +0 -1
  178. package/dist/harness/utils/read-folders/header-protection.d.ts.map +0 -1
  179. package/dist/harness/utils/read-folders/header-protection.js.map +0 -1
  180. package/dist/harness/utils/read-folders/index.d.ts.map +0 -1
  181. package/dist/harness/utils/read-folders/index.js.map +0 -1
  182. package/dist/harness/utils/read-folders/lexical-context.d.ts.map +0 -1
  183. package/dist/harness/utils/read-folders/lexical-context.js.map +0 -1
  184. package/dist/harness/utils/read-folders/lexical-spans.d.ts.map +0 -1
  185. package/dist/harness/utils/read-folders/lexical-spans.js.map +0 -1
  186. package/dist/harness/utils/read-folders/prepare.d.ts.map +0 -1
  187. package/dist/harness/utils/read-folders/prepare.js.map +0 -1
  188. package/dist/harness/utils/read-folders/tree-sitter/engine.d.ts.map +0 -1
  189. package/dist/harness/utils/read-folders/tree-sitter/engine.js.map +0 -1
  190. package/dist/harness/utils/read-folders/tree-sitter/grammar-assets.d.ts.map +0 -1
  191. package/dist/harness/utils/read-folders/tree-sitter/grammar-assets.js.map +0 -1
  192. package/dist/harness/utils/read-folders/tree-sitter/syntax.d.ts.map +0 -1
  193. package/dist/harness/utils/read-folders/tree-sitter/syntax.js.map +0 -1
  194. package/dist/harness/utils/read-folders/types.d.ts.map +0 -1
  195. package/dist/harness/utils/read-folders/types.js.map +0 -1
  196. package/dist/harness/utils/segmented-read-view.d.ts.map +0 -1
  197. package/dist/harness/utils/segmented-read-view.js.map +0 -1
  198. package/dist/harness/utils/shell-output.d.ts.map +0 -1
  199. package/dist/harness/utils/shell-output.js.map +0 -1
  200. package/dist/harness/utils/truncate.d.ts.map +0 -1
  201. package/dist/harness/utils/truncate.js.map +0 -1
  202. package/dist/harness/utils/usage.d.ts.map +0 -1
  203. package/dist/harness/utils/usage.js.map +0 -1
  204. package/dist/index.d.ts.map +0 -1
  205. package/dist/index.js.map +0 -1
  206. package/dist/node.d.ts.map +0 -1
  207. package/dist/node.js.map +0 -1
  208. package/dist/proxy.d.ts.map +0 -1
  209. package/dist/proxy.js.map +0 -1
  210. package/dist/search/index.d.ts.map +0 -1
  211. package/dist/search/index.js.map +0 -1
  212. package/dist/stream-fn.d.ts.map +0 -1
  213. package/dist/stream-fn.js.map +0 -1
  214. package/dist/tool-arguments.d.ts.map +0 -1
  215. package/dist/tool-arguments.js.map +0 -1
  216. package/dist/tool-name-alias.d.ts.map +0 -1
  217. package/dist/tool-name-alias.js.map +0 -1
  218. package/dist/types.d.ts.map +0 -1
  219. package/dist/types.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/harness/hooks.ts"],"names":[],"mappings":"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","sourcesContent":["import type { HookHandler, HookInvocation, HookMap, HookName, Hooks } from \"./agent-harness.ts\";\nimport { type Context, withAbortSignal } from \"./context.ts\";\nimport type { Gate } from \"./execution/effect-gate.ts\";\nimport { startHarnessSpan } from \"./telemetry.ts\";\nimport type { AgentHarnessStreamOptions, AgentHarnessStreamOptionsPatch } from \"./types.ts\";\n\ninterface HookRegistration {\n\tid?: string;\n\thandler: (event: unknown, context: Context) => unknown | Promise<unknown>;\n}\n\ntype HookErrorReporter = (error: Error, hook: HookName, lane: string, context: Context) => void | Promise<void>;\n\n/** Ordered harness hook registry and aggregate runner. */\nexport class HookRegistry implements Hooks {\n\tprivate readonly registrations = new Map<HookName, HookRegistration[]>();\n\tprivate readonly reportError: HookErrorReporter;\n\tprivate closedError: Error | undefined;\n\n\tconstructor(reportError: HookErrorReporter) {\n\t\tthis.reportError = reportError;\n\t}\n\n\ton<TName extends HookName>(name: TName, handler: HookHandler<TName>, options: { id?: string } = {}): () => void {\n\t\tif (this.closedError !== undefined) throw this.closedError;\n\t\tconst registrations = this.registrations.get(name) ?? [];\n\t\tconst registration: HookRegistration = {\n\t\t\t...(options.id === undefined ? {} : { id: options.id }),\n\t\t\thandler: (event, context) => handler(event as HookInvocation<TName>, context),\n\t\t};\n\t\tregistrations.push(registration);\n\t\tthis.registrations.set(name, registrations);\n\t\treturn () => {\n\t\t\tconst index = registrations.indexOf(registration);\n\t\t\tif (index !== -1) registrations.splice(index, 1);\n\t\t};\n\t}\n\n\thas(name: HookName): boolean {\n\t\treturn (this.registrations.get(name)?.length ?? 0) !== 0;\n\t}\n\n\t/** Invoke one accepted-operation aggregate after synchronously passing its effect gate. */\n\trunWithGate<TName extends HookName>(\n\t\tname: TName,\n\t\tevent: HookInvocation<TName>,\n\t\tgate: Gate,\n\t\tcontext: Context,\n\t): Promise<HookMap[TName][\"result\"]> {\n\t\treturn gate.admit(() => {\n\t\t\tconst admittedContext = withAbortSignal(gate.signal, context);\n\t\t\tadmittedContext.abortSignal?.throwIfAborted();\n\t\t\treturn this.runAdmitted(name, event, admittedContext);\n\t\t});\n\t}\n\n\t/** Invoke a tool-hook aggregate with one telemetry span per registered handler. */\n\trunToolWithGate<TName extends \"before_tool\" | \"after_tool\">(\n\t\tname: TName,\n\t\tevent: HookInvocation<TName>,\n\t\tgate: Gate,\n\t\tcontext: Context,\n\t): Promise<HookMap[TName][\"result\"]> {\n\t\treturn gate.admit(() => {\n\t\t\tconst admittedContext = withAbortSignal(gate.signal, context);\n\t\t\tadmittedContext.abortSignal?.throwIfAborted();\n\t\t\treturn (\n\t\t\t\tname === \"before_tool\"\n\t\t\t\t\t? this.beforeTool(event as HookInvocation<\"before_tool\">, admittedContext)\n\t\t\t\t\t: this.afterTool(event as HookInvocation<\"after_tool\">, admittedContext)\n\t\t\t) as Promise<HookMap[TName][\"result\"]>;\n\t\t});\n\t}\n\n\tclose(error: Error): void {\n\t\tthis.closedError ??= error;\n\t}\n\n\tprivate async runAdmitted<TName extends HookName>(\n\t\tname: TName,\n\t\tevent: HookInvocation<TName>,\n\t\tcontext: Context,\n\t): Promise<HookMap[TName][\"result\"]> {\n\t\tif (this.closedError !== undefined) throw this.closedError;\n\t\tconst result = await this.aggregate(name, event, context);\n\t\treturn result as HookMap[TName][\"result\"];\n\t}\n\n\tprivate async aggregate(name: HookName, event: HookInvocation<HookName>, context: Context): Promise<unknown> {\n\t\tswitch (name) {\n\t\t\tcase \"before_run\":\n\t\t\t\treturn this.beforeRun(event as HookInvocation<\"before_run\">, context);\n\t\t\tcase \"before_drive\":\n\t\t\t\tawait this.invokeAllFailClosed(name, event as HookInvocation<\"before_drive\">, context);\n\t\t\t\treturn undefined;\n\t\t\tcase \"before_run_end\": {\n\t\t\t\tlet followUp: string | undefined;\n\t\t\t\tawait this.invokeAll(\n\t\t\t\t\tname,\n\t\t\t\t\tevent,\n\t\t\t\t\t(value) => {\n\t\t\t\t\t\tconst result = value as HookMap[\"before_run_end\"][\"result\"];\n\t\t\t\t\t\tif (result?.followUp !== undefined) followUp = result.followUp;\n\t\t\t\t\t},\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t\treturn followUp === undefined ? undefined : { followUp };\n\t\t\t}\n\t\t\tcase \"transform_context\":\n\t\t\t\treturn this.transformContext(event as HookInvocation<\"transform_context\">, context);\n\t\t\tcase \"before_request\":\n\t\t\t\treturn this.beforeRequest(event as HookInvocation<\"before_request\">, context);\n\t\t\tcase \"before_payload\":\n\t\t\t\treturn this.beforePayload(event as HookInvocation<\"before_payload\">, context);\n\t\t\tcase \"after_response\":\n\t\t\t\treturn this.afterResponse(event as HookInvocation<\"after_response\">, context);\n\t\t\tcase \"before_tool\":\n\t\t\t\treturn this.beforeTool(event as HookInvocation<\"before_tool\">, context);\n\t\t\tcase \"after_tool\":\n\t\t\t\treturn this.afterTool(event as HookInvocation<\"after_tool\">, context);\n\t\t\tcase \"before_compaction\":\n\t\t\t\treturn this.firstStructural(name, event as HookInvocation<\"before_compaction\">, \"compaction\", context);\n\t\t\tcase \"before_navigation\":\n\t\t\t\treturn this.firstStructural(name, event as HookInvocation<\"before_navigation\">, \"summary\", context);\n\t\t}\n\t}\n\n\tprivate async beforeRun(\n\t\tevent: HookInvocation<\"before_run\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"before_run\"][\"result\"]> {\n\t\tlet prompt = event.prompt;\n\t\tlet injected: HookMap[\"before_run\"][\"event\"][\"prompt\"] = [];\n\t\tfor (const registration of this.registrationsFor(\"before_run\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{ ...event, prompt },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"before_run\"][\"result\"];\n\t\t\t\tif (result?.messages !== undefined) {\n\t\t\t\t\tinjected = [...injected, ...result.messages];\n\t\t\t\t\tprompt = [...prompt, ...result.messages];\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"before_run\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn injected.length === 0 ? undefined : { messages: injected };\n\t}\n\n\tprivate async beforeTool(\n\t\tevent: HookInvocation<\"before_tool\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"before_tool\"][\"result\"]> {\n\t\tlet args = event.args;\n\t\tlet block: { reason: string; terminate?: boolean } | undefined;\n\t\tfor (const registration of this.registrationsFor(\"before_tool\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await this.invokeToolRegistration(\n\t\t\t\t\t\"before_tool\",\n\t\t\t\t\tregistration,\n\t\t\t\t\t{ ...event, args },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"before_tool\"][\"result\"];\n\t\t\t\tif (result?.args !== undefined) args = result.args;\n\t\t\t\tif (result?.block !== undefined) {\n\t\t\t\t\tblock = result.block;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tconst normalized = error instanceof Error ? error : new Error(String(error));\n\t\t\t\tawait this.reportError(normalized, \"before_tool\", event.lane, context);\n\t\t\t\tblock = { reason: normalized.message };\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\t...(args === event.args ? {} : { args }),\n\t\t\t...(block === undefined ? {} : { block }),\n\t\t};\n\t}\n\n\tprivate async transformContext(\n\t\tevent: HookInvocation<\"transform_context\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"transform_context\"][\"result\"]> {\n\t\tlet messages = event.messages;\n\t\tlet systemPrompt = event.systemPrompt;\n\t\tfor (const registration of this.registrationsFor(\"transform_context\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{\n\t\t\t\t\t\t...event,\n\t\t\t\t\t\tmessages,\n\t\t\t\t\t\tsystemPrompt,\n\t\t\t\t\t},\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"transform_context\"][\"result\"];\n\t\t\t\tif (result?.messages !== undefined) messages = result.messages;\n\t\t\t\tif (result?.systemPrompt !== undefined) systemPrompt = result.systemPrompt;\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"transform_context\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { messages, systemPrompt };\n\t}\n\n\tprivate async beforeRequest(\n\t\tevent: HookInvocation<\"before_request\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"before_request\"][\"result\"]> {\n\t\tlet streamOptions = event.streamOptions;\n\t\tlet changed = false;\n\t\tfor (const registration of this.registrationsFor(\"before_request\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{ ...event, streamOptions },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"before_request\"][\"result\"];\n\t\t\t\tif (result?.streamOptions !== undefined) {\n\t\t\t\t\tstreamOptions = applyStreamOptionsPatch(streamOptions, result.streamOptions);\n\t\t\t\t\tchanged = true;\n\t\t\t\t}\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"before_request\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn changed ? { streamOptions: createStreamOptionsPatch(event.streamOptions, streamOptions) } : undefined;\n\t}\n\n\tprivate async beforePayload(\n\t\tevent: HookInvocation<\"before_payload\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"before_payload\"][\"result\"]> {\n\t\tlet payload = event.payload;\n\t\tfor (const registration of this.registrationsFor(\"before_payload\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{ ...event, payload },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"before_payload\"][\"result\"];\n\t\t\t\tif (result?.payload !== undefined) payload = result.payload;\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"before_payload\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { payload };\n\t}\n\n\tprivate async afterResponse(\n\t\tevent: HookInvocation<\"after_response\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"after_response\"][\"result\"]> {\n\t\tlet message = event.message;\n\t\tfor (const registration of this.registrationsFor(\"after_response\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await registration.handler(\n\t\t\t\t\t{ ...event, message },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"after_response\"][\"result\"];\n\t\t\t\tif (result?.message !== undefined) message = result.message;\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"after_response\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn { message };\n\t}\n\n\tprivate async afterTool(\n\t\tevent: HookInvocation<\"after_tool\">,\n\t\tcontext: Context,\n\t): Promise<HookMap[\"after_tool\"][\"result\"]> {\n\t\tlet current = {\n\t\t\tcontent: event.content,\n\t\t\tdetails: event.details,\n\t\t\tisError: event.isError,\n\t\t\tusage: event.usage,\n\t\t};\n\t\tconst aggregate: NonNullable<HookMap[\"after_tool\"][\"result\"]> = {};\n\t\tfor (const registration of this.registrationsFor(\"after_tool\")) {\n\t\t\ttry {\n\t\t\t\tconst result = (await this.invokeToolRegistration(\n\t\t\t\t\t\"after_tool\",\n\t\t\t\t\tregistration,\n\t\t\t\t\t{ ...event, ...current },\n\t\t\t\t\tcontext,\n\t\t\t\t)) as HookMap[\"after_tool\"][\"result\"];\n\t\t\t\tif (result === undefined) continue;\n\t\t\t\tif (result.content !== undefined) aggregate.content = result.content;\n\t\t\t\tif (result.details !== undefined) aggregate.details = result.details;\n\t\t\t\tif (result.isError !== undefined) aggregate.isError = result.isError;\n\t\t\t\tif (result.usage !== undefined) aggregate.usage = result.usage;\n\t\t\t\tif (result.terminate !== undefined) aggregate.terminate = result.terminate;\n\t\t\t\tcurrent = {\n\t\t\t\t\tcontent: result.content === undefined ? current.content : result.content,\n\t\t\t\t\tdetails: result.details === undefined ? current.details : result.details,\n\t\t\t\t\tisError: result.isError === undefined ? current.isError : result.isError,\n\t\t\t\t\tusage: result.usage === undefined ? current.usage : result.usage,\n\t\t\t\t};\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\t\"after_tool\",\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn Object.keys(aggregate).length === 0 ? undefined : aggregate;\n\t}\n\n\tprivate async firstStructural(\n\t\tname: \"before_compaction\" | \"before_navigation\",\n\t\tevent: HookInvocation<\"before_compaction\"> | HookInvocation<\"before_navigation\">,\n\t\tresultField: \"compaction\" | \"summary\",\n\t\tcontext: Context,\n\t): Promise<unknown> {\n\t\tfor (const registration of this.registrationsFor(name)) {\n\t\t\ttry {\n\t\t\t\tconst value = await registration.handler(event, context);\n\t\t\t\tif (value === undefined || value === null || typeof value !== \"object\") continue;\n\t\t\t\tconst result = value as Record<string, unknown>;\n\t\t\t\tif (result.decline === true && result[resultField] !== undefined) {\n\t\t\t\t\tawait this.reportError(\n\t\t\t\t\t\tnew Error(`${name} hook cannot return both decline and ${resultField}`),\n\t\t\t\t\t\tname,\n\t\t\t\t\t\tevent.lane,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tif (result.decline === true || result[resultField] !== undefined) return value;\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\tname,\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tprivate invokeToolRegistration(\n\t\tname: \"before_tool\" | \"after_tool\",\n\t\tregistration: HookRegistration,\n\t\tevent: HookInvocation<\"before_tool\"> | HookInvocation<\"after_tool\">,\n\t\tcontext: Context,\n\t): Promise<unknown> {\n\t\treturn startHarnessSpan(\n\t\t\t\"pi.harness.hook\",\n\t\t\t{\n\t\t\t\t\"pi.lane.name\": event.lane,\n\t\t\t\t\"pi.operation.id\": event.runId,\n\t\t\t\t\"pi.hook.name\": name,\n\t\t\t\t...(registration.id === undefined ? {} : { \"pi.hook.registration_id\": registration.id }),\n\t\t\t},\n\t\t\tasync (span, spanContext) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst result = await registration.handler(event, spanContext);\n\t\t\t\t\tconst blocked =\n\t\t\t\t\t\tname === \"before_tool\" &&\n\t\t\t\t\t\tresult !== null &&\n\t\t\t\t\t\ttypeof result === \"object\" &&\n\t\t\t\t\t\t\"block\" in result &&\n\t\t\t\t\t\tresult.block !== undefined;\n\t\t\t\t\tspan.setAttributes({ \"pi.hook.outcome\": blocked ? \"blocked\" : \"completed\" });\n\t\t\t\t\treturn result;\n\t\t\t\t} catch (error) {\n\t\t\t\t\tspan.setAttributes({ \"pi.hook.outcome\": \"failed\" });\n\t\t\t\t\tspan.setStatus({ status: \"error\" });\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t},\n\t\t\tcontext,\n\t\t);\n\t}\n\n\tprivate registrationsFor(name: HookName): HookRegistration[] {\n\t\treturn [...(this.registrations.get(name) ?? [])];\n\t}\n\n\tprivate async invokeAllFailClosed(\n\t\tname: \"before_drive\",\n\t\tevent: HookInvocation<\"before_drive\">,\n\t\tcontext: Context,\n\t): Promise<void> {\n\t\tfor (const registration of this.registrationsFor(name)) {\n\t\t\ttry {\n\t\t\t\tawait registration.handler(event, context);\n\t\t\t} catch (error) {\n\t\t\t\tconst normalized = error instanceof Error ? error : new Error(String(error));\n\t\t\t\tawait this.reportError(normalized, name, event.lane, context);\n\t\t\t\tthrow normalized;\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate async invokeAll(\n\t\tname: HookName,\n\t\tevent: HookInvocation<HookName>,\n\t\tapply: (value: unknown) => void,\n\t\tcontext: Context,\n\t): Promise<void> {\n\t\tfor (const registration of this.registrationsFor(name)) {\n\t\t\ttry {\n\t\t\t\tapply(await registration.handler(event, context));\n\t\t\t} catch (error) {\n\t\t\t\tawait this.reportError(\n\t\t\t\t\terror instanceof Error ? error : new Error(String(error)),\n\t\t\t\t\tname,\n\t\t\t\t\tevent.lane,\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n}\n\nexport function applyStreamOptionsPatch(\n\tbase: AgentHarnessStreamOptions,\n\tpatch: AgentHarnessStreamOptionsPatch,\n): AgentHarnessStreamOptions {\n\tconst next: AgentHarnessStreamOptions = { ...base };\n\tfor (const key of [\n\t\t\"transport\",\n\t\t\"timeoutMs\",\n\t\t\"maxRetries\",\n\t\t\"maxRetryDelayMs\",\n\t\t\"cacheRetention\",\n\t\t\"deferred\",\n\t] as const) {\n\t\tif (!(key in patch)) continue;\n\t\tconst value = patch[key];\n\t\tif (value === undefined) delete next[key];\n\t\telse Object.assign(next, { [key]: value });\n\t}\n\tif (\"headers\" in patch) {\n\t\tif (patch.headers === undefined) delete next.headers;\n\t\telse {\n\t\t\tconst headers = { ...next.headers };\n\t\t\tfor (const [key, value] of Object.entries(patch.headers)) {\n\t\t\t\tif (value === undefined) delete headers[key];\n\t\t\t\telse headers[key] = value;\n\t\t\t}\n\t\t\tnext.headers = headers;\n\t\t}\n\t}\n\tif (\"metadata\" in patch) {\n\t\tif (patch.metadata === undefined) delete next.metadata;\n\t\telse {\n\t\t\tconst metadata = { ...next.metadata };\n\t\t\tfor (const [key, value] of Object.entries(patch.metadata)) {\n\t\t\t\tif (value === undefined) delete metadata[key];\n\t\t\t\telse metadata[key] = value;\n\t\t\t}\n\t\t\tnext.metadata = metadata;\n\t\t}\n\t}\n\treturn next;\n}\n\nfunction createStreamOptionsPatch(\n\tbase: AgentHarnessStreamOptions,\n\tvalue: AgentHarnessStreamOptions,\n): AgentHarnessStreamOptionsPatch {\n\tconst patch: AgentHarnessStreamOptionsPatch = {};\n\tfor (const key of [\n\t\t\"transport\",\n\t\t\"timeoutMs\",\n\t\t\"maxRetries\",\n\t\t\"maxRetryDelayMs\",\n\t\t\"cacheRetention\",\n\t\t\"deferred\",\n\t] as const) {\n\t\tif (base[key] !== value[key]) Object.assign(patch, { [key]: value[key] });\n\t}\n\tif (base.headers !== value.headers) {\n\t\tif (value.headers === undefined) patch.headers = undefined;\n\t\telse {\n\t\t\tconst headers: Record<string, string | undefined> = {};\n\t\t\tfor (const key of Object.keys(base.headers ?? {})) {\n\t\t\t\tif (!(key in value.headers)) headers[key] = undefined;\n\t\t\t}\n\t\t\tfor (const [key, header] of Object.entries(value.headers)) {\n\t\t\t\tif (base.headers?.[key] !== header) headers[key] = header;\n\t\t\t}\n\t\t\tif (base.headers === undefined && Object.keys(headers).length === 0) patch.headers = {};\n\t\t\telse if (Object.keys(headers).length !== 0) patch.headers = headers;\n\t\t}\n\t}\n\tif (base.metadata !== value.metadata) {\n\t\tif (value.metadata === undefined) patch.metadata = undefined;\n\t\telse {\n\t\t\tconst metadata: Record<string, unknown | undefined> = {};\n\t\t\tfor (const key of Object.keys(base.metadata ?? {})) {\n\t\t\t\tif (!(key in value.metadata)) metadata[key] = undefined;\n\t\t\t}\n\t\t\tfor (const [key, metadataValue] of Object.entries(value.metadata)) {\n\t\t\t\tif (base.metadata?.[key] !== metadataValue) metadata[key] = metadataValue;\n\t\t\t}\n\t\t\tif (base.metadata === undefined && Object.keys(metadata).length === 0) patch.metadata = {};\n\t\t\telse if (Object.keys(metadata).length !== 0) patch.metadata = metadata;\n\t\t}\n\t}\n\treturn patch;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/harness/messages.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,eAAO,MAAM,yBAAyB,wGAGrC,CAAC;AAEF,eAAO,MAAM,yBAAyB,iBAC3B,CAAC;AAEZ,eAAO,MAAM,qBAAqB,iGAGjC,CAAC;AAEF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAElD,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa,CAAC,CAAC,GAAG,OAAO;IACzC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,CAAC;IACjD,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,CAAC,CAAC;IACZ,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,wBAAwB;IACxC,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CAClB;AAED,OAAO,QAAQ,aAAa,CAAC;IAC5B,UAAU,mBAAmB;QAC5B,aAAa,EAAE,oBAAoB,CAAC;QACpC,MAAM,EAAE,aAAa,CAAC;QACtB,aAAa,EAAE,oBAAoB,CAAC;QACpC,iBAAiB,EAAE,wBAAwB,CAAC;KAC5C;CACD;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAgBrE;AAED,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,SAAS,EAAE,MAAM,GAAG,MAAM,GACxB,oBAAoB,CAOtB;AAED,wBAAgB,8BAA8B,CAC7C,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAAG,MAAM,GACxB,wBAAwB,CAO1B;AAED,wBAAgB,mBAAmB,CAClC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG,YAAY,CAAC,EAAE,EAChD,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GAAG,SAAS,EAC5B,SAAS,EAAE,MAAM,GAAG,MAAM,GACxB,aAAa,CASf;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,EAAE,GAAG,OAAO,EAAE,CAgDhE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/harness/messages.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ImageContent, Message, TextContent } from \"@earendil-works/pi-ai\";\nimport { dropFailedAssistantTurns } from \"@earendil-works/pi-ai/utils/drop-failed-assistant-turns\";\nimport type { AgentMessage } from \"../types.ts\";\n\nexport const COMPACTION_SUMMARY_PREFIX = `The conversation history before this point was compacted into the following summary:\n\n<summary>\n`;\n\nexport const COMPACTION_SUMMARY_SUFFIX = `\n</summary>`;\n\nexport const BRANCH_SUMMARY_PREFIX = `The following is a summary of a branch that this conversation came back from:\n\n<summary>\n`;\n\nexport const BRANCH_SUMMARY_SUFFIX = `</summary>`;\n\nexport interface BashExecutionMessage {\n\trole: \"bashExecution\";\n\tcommand: string;\n\toutput: string;\n\texitCode: number | undefined;\n\tcancelled: boolean;\n\ttruncated: boolean;\n\tfullOutputPath?: string;\n\ttimestamp: number;\n\texcludeFromContext?: boolean;\n}\n\nexport interface CustomMessage<T = unknown> {\n\trole: \"custom\";\n\tcustomType: string;\n\tcontent: string | (TextContent | ImageContent)[];\n\tdisplay: boolean;\n\tdetails?: T;\n\ttimestamp: number;\n}\n\nexport interface BranchSummaryMessage {\n\trole: \"branchSummary\";\n\tsummary: string;\n\tfromId: string | null;\n\ttimestamp: number;\n}\n\nexport interface CompactionSummaryMessage {\n\trole: \"compactionSummary\";\n\tsummary: string;\n\ttokensBefore: number;\n\tdetails?: unknown;\n\ttimestamp: number;\n}\n\ndeclare module \"../types.ts\" {\n\tinterface CustomAgentMessages {\n\t\tbashExecution: BashExecutionMessage;\n\t\tcustom: CustomMessage;\n\t\tbranchSummary: BranchSummaryMessage;\n\t\tcompactionSummary: CompactionSummaryMessage;\n\t}\n}\n\nexport function bashExecutionToText(msg: BashExecutionMessage): string {\n\tlet text = `Ran \\`${msg.command}\\`\\n`;\n\tif (msg.output) {\n\t\ttext += `\\`\\`\\`\\n${msg.output}\\n\\`\\`\\``;\n\t} else {\n\t\ttext += \"(no output)\";\n\t}\n\tif (msg.cancelled) {\n\t\ttext += \"\\n\\n(command cancelled)\";\n\t} else if (msg.exitCode !== null && msg.exitCode !== undefined && msg.exitCode !== 0) {\n\t\ttext += `\\n\\nCommand exited with code ${msg.exitCode}`;\n\t}\n\tif (msg.truncated && msg.fullOutputPath) {\n\t\ttext += `\\n\\n[Output truncated. Full output: ${msg.fullOutputPath}]`;\n\t}\n\treturn text;\n}\n\nexport function createBranchSummaryMessage(\n\tsummary: string,\n\tfromId: string | null,\n\ttimestamp: string | number,\n): BranchSummaryMessage {\n\treturn {\n\t\trole: \"branchSummary\",\n\t\tsummary,\n\t\tfromId,\n\t\ttimestamp: typeof timestamp === \"number\" ? timestamp : new Date(timestamp).getTime(),\n\t};\n}\n\nexport function createCompactionSummaryMessage(\n\tsummary: string,\n\ttokensBefore: number,\n\ttimestamp: string | number,\n): CompactionSummaryMessage {\n\treturn {\n\t\trole: \"compactionSummary\",\n\t\tsummary,\n\t\ttokensBefore,\n\t\ttimestamp: typeof timestamp === \"number\" ? timestamp : new Date(timestamp).getTime(),\n\t};\n}\n\nexport function createCustomMessage(\n\tcustomType: string,\n\tcontent: string | (TextContent | ImageContent)[],\n\tdisplay: boolean,\n\tdetails: unknown | undefined,\n\ttimestamp: string | number,\n): CustomMessage {\n\treturn {\n\t\trole: \"custom\",\n\t\tcustomType,\n\t\tcontent,\n\t\tdisplay,\n\t\tdetails,\n\t\ttimestamp: typeof timestamp === \"number\" ? timestamp : new Date(timestamp).getTime(),\n\t};\n}\n\nexport function convertToLlm(messages: AgentMessage[]): Message[] {\n\tconst converted = messages\n\t\t.map((m): Message | undefined => {\n\t\t\tswitch (m.role) {\n\t\t\t\tcase \"bashExecution\":\n\t\t\t\t\tif (m.excludeFromContext) {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\", text: bashExecutionToText(m) }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"custom\": {\n\t\t\t\t\tconst content = typeof m.content === \"string\" ? [{ type: \"text\" as const, text: m.content }] : m.content;\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent,\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tcase \"branchSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [{ type: \"text\" as const, text: BRANCH_SUMMARY_PREFIX + m.summary + BRANCH_SUMMARY_SUFFIX }],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"compactionSummary\":\n\t\t\t\t\treturn {\n\t\t\t\t\t\trole: \"user\",\n\t\t\t\t\t\tcontent: [\n\t\t\t\t\t\t\t{ type: \"text\" as const, text: COMPACTION_SUMMARY_PREFIX + m.summary + COMPACTION_SUMMARY_SUFFIX },\n\t\t\t\t\t\t],\n\t\t\t\t\t\ttimestamp: m.timestamp,\n\t\t\t\t\t};\n\t\t\t\tcase \"user\":\n\t\t\t\tcase \"assistant\":\n\t\t\t\tcase \"toolResult\":\n\t\t\t\t\treturn m;\n\t\t\t\tdefault:\n\t\t\t\t\treturn undefined;\n\t\t\t}\n\t\t})\n\t\t.filter((m): m is Message => m !== undefined);\n\t// Failed provider turns (stopReason error/aborted) must not be replayed by\n\t// any lane that builds an LLM request from this output; dropping is\n\t// deterministic, so earlier requests stay a prefix of later ones.\n\treturn dropFailedAssistantTurns(converted);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-templates.d.ts","sourceRoot":"","sources":["../../src/harness/prompt-templates.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,KAAK,YAAY,EAAiB,KAAK,cAAc,EAAwB,MAAM,YAAY,CAAC;AAEzG,MAAM,MAAM,4BAA4B,GAAG,kBAAkB,GAAG,aAAa,GAAG,aAAa,GAAG,cAAc,CAAC;AAE/G,uDAAuD;AACvD,MAAM,WAAW,wBAAwB;IACxC,gEAAgE;IAChE,IAAI,EAAE,SAAS,CAAC;IAChB,8BAA8B;IAC9B,IAAI,EAAE,4BAA4B,CAAC;IACnC,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,IAAI,EAAE,MAAM,CAAC;CACb;AAQD;;;;;GAKG;AACH,wBAAsB,mBAAmB,CACxC,GAAG,EAAE,YAAY,EACjB,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EACxB,OAAO,EAAE,OAAO,GACd,OAAO,CAAC;IAAE,eAAe,EAAE,cAAc,EAAE,CAAC;IAAC,WAAW,EAAE,wBAAwB,EAAE,CAAA;CAAE,CAAC,CA6BzF;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,eAAe,SAAS,cAAc,GAAG,cAAc,EAChH,GAAG,EAAE,YAAY,EACjB,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,CAAA;CAAE,CAAC,EAChD,iBAAiB,EACd,CAAC,CAAC,cAAc,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,KAAK,eAAe,CAAC,GACxF,SAAS,EACZ,OAAO,EAAE,OAAO,GACd,OAAO,CAAC;IACV,eAAe,EAAE,KAAK,CAAC;QAAE,cAAc,EAAE,eAAe,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC7E,WAAW,EAAE,KAAK,CAAC,wBAAwB,GAAG;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnE,CAAC,CAgBD;AA+HD,kFAAkF;AAClF,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAuB7D;AAED,uHAAuH;AACvH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAatE;AAED,qEAAqE;AACrE,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,cAAc,EAAE,IAAI,GAAE,MAAM,EAAO,GAAG,MAAM,CAEpG"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-templates.js","sourceRoot":"","sources":["../../src/harness/prompt-templates.ts"],"names":[],"mappings":"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","sourcesContent":["import { parse } from \"yaml\";\nimport type { Context } from \"./context.ts\";\nimport { type ExecutionEnv, type FileInfo, type PromptTemplate, type Result, toError } from \"./types.ts\";\n\nexport type PromptTemplateDiagnosticCode = \"file_info_failed\" | \"list_failed\" | \"read_failed\" | \"parse_failed\";\n\n/** Warning produced while loading prompt templates. */\nexport interface PromptTemplateDiagnostic {\n\t/** Diagnostic severity. Currently only warnings are emitted. */\n\ttype: \"warning\";\n\t/** Stable diagnostic code. */\n\tcode: PromptTemplateDiagnosticCode;\n\t/** Human-readable diagnostic message. */\n\tmessage: string;\n\t/** Path associated with the diagnostic. */\n\tpath: string;\n}\n\ninterface PromptTemplateFrontmatter {\n\tdescription?: string;\n\t\"argument-hint\"?: string;\n\t[key: string]: unknown;\n}\n\n/**\n * Load prompt templates from one or more paths.\n *\n * Directory inputs load direct `.md` children non-recursively. File inputs load explicit `.md` files. Missing paths and\n * non-markdown files are skipped. Read and parse failures are returned as diagnostics.\n */\nexport async function loadPromptTemplates(\n\tenv: ExecutionEnv,\n\tpaths: string | string[],\n\tcontext: Context,\n): Promise<{ promptTemplates: PromptTemplate[]; diagnostics: PromptTemplateDiagnostic[] }> {\n\tconst promptTemplates: PromptTemplate[] = [];\n\tconst diagnostics: PromptTemplateDiagnostic[] = [];\n\tfor (const path of Array.isArray(paths) ? paths : [paths]) {\n\t\tconst infoResult = await env.fileInfo(path, context);\n\t\tif (!infoResult.ok) {\n\t\t\tif (infoResult.error.code !== \"not_found\") {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\ttype: \"warning\",\n\t\t\t\t\tcode: \"file_info_failed\",\n\t\t\t\t\tmessage: infoResult.error.message,\n\t\t\t\t\tpath,\n\t\t\t\t});\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\t\tconst info = infoResult.value;\n\t\tconst kind = await resolveKind(env, info, diagnostics, context);\n\t\tif (kind === \"directory\") {\n\t\t\tconst result = await loadTemplatesFromDir(env, info.path, context);\n\t\t\tpromptTemplates.push(...result.promptTemplates);\n\t\t\tdiagnostics.push(...result.diagnostics);\n\t\t} else if (kind === \"file\" && info.name.endsWith(\".md\")) {\n\t\t\tconst result = await loadTemplateFromFile(env, info.path, info.name, context);\n\t\t\tif (result.promptTemplate) promptTemplates.push(result.promptTemplate);\n\t\t\tdiagnostics.push(...result.diagnostics);\n\t\t}\n\t}\n\treturn { promptTemplates, diagnostics };\n}\n\n/**\n * Load prompt templates from source-tagged paths.\n *\n * Source values are preserved exactly and attached to every loaded prompt template and diagnostic. The agent package does\n * not interpret source values; applications define their own provenance shape.\n */\nexport async function loadSourcedPromptTemplates<TSource, TPromptTemplate extends PromptTemplate = PromptTemplate>(\n\tenv: ExecutionEnv,\n\tinputs: Array<{ path: string; source: TSource }>,\n\tmapPromptTemplate:\n\t\t| ((promptTemplate: PromptTemplate, source: TSource, context: Context) => TPromptTemplate)\n\t\t| undefined,\n\tcontext: Context,\n): Promise<{\n\tpromptTemplates: Array<{ promptTemplate: TPromptTemplate; source: TSource }>;\n\tdiagnostics: Array<PromptTemplateDiagnostic & { source: TSource }>;\n}> {\n\tconst promptTemplates: Array<{ promptTemplate: TPromptTemplate; source: TSource }> = [];\n\tconst diagnostics: Array<PromptTemplateDiagnostic & { source: TSource }> = [];\n\tfor (const input of inputs) {\n\t\tconst result = await loadPromptTemplates(env, input.path, context);\n\t\tfor (const promptTemplate of result.promptTemplates) {\n\t\t\tpromptTemplates.push({\n\t\t\t\tpromptTemplate: mapPromptTemplate\n\t\t\t\t\t? mapPromptTemplate(promptTemplate, input.source, context)\n\t\t\t\t\t: (promptTemplate as TPromptTemplate),\n\t\t\t\tsource: input.source,\n\t\t\t});\n\t\t}\n\t\tfor (const diagnostic of result.diagnostics) diagnostics.push({ ...diagnostic, source: input.source });\n\t}\n\treturn { promptTemplates, diagnostics };\n}\n\nasync function loadTemplatesFromDir(\n\tenv: ExecutionEnv,\n\tdir: string,\n\tcontext: Context,\n): Promise<{ promptTemplates: PromptTemplate[]; diagnostics: PromptTemplateDiagnostic[] }> {\n\tconst promptTemplates: PromptTemplate[] = [];\n\tconst diagnostics: PromptTemplateDiagnostic[] = [];\n\tconst entriesResult = await env.listDir(dir, context);\n\tif (!entriesResult.ok) {\n\t\tdiagnostics.push({\n\t\t\ttype: \"warning\",\n\t\t\tcode: \"list_failed\",\n\t\t\tmessage: entriesResult.error.message,\n\t\t\tpath: dir,\n\t\t});\n\t\treturn { promptTemplates, diagnostics };\n\t}\n\tconst entries = entriesResult.value;\n\n\tfor (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {\n\t\tconst kind = await resolveKind(env, entry, diagnostics, context);\n\t\tif (kind !== \"file\" || !entry.name.endsWith(\".md\")) continue;\n\t\tconst result = await loadTemplateFromFile(env, entry.path, entry.name, context);\n\t\tif (result.promptTemplate) promptTemplates.push(result.promptTemplate);\n\t\tdiagnostics.push(...result.diagnostics);\n\t}\n\treturn { promptTemplates, diagnostics };\n}\n\nasync function loadTemplateFromFile(\n\tenv: ExecutionEnv,\n\tfilePath: string,\n\tfileName: string,\n\tcontext: Context,\n): Promise<{ promptTemplate: PromptTemplate | null; diagnostics: PromptTemplateDiagnostic[] }> {\n\tconst diagnostics: PromptTemplateDiagnostic[] = [];\n\tconst rawContent = await env.readTextFile(filePath, context);\n\tif (!rawContent.ok) {\n\t\tdiagnostics.push({\n\t\t\ttype: \"warning\",\n\t\t\tcode: \"read_failed\",\n\t\t\tmessage: rawContent.error.message,\n\t\t\tpath: filePath,\n\t\t});\n\t\treturn { promptTemplate: null, diagnostics };\n\t}\n\n\tconst parsed = parseFrontmatter<PromptTemplateFrontmatter>(rawContent.value);\n\tif (!parsed.ok) {\n\t\tdiagnostics.push({\n\t\t\ttype: \"warning\",\n\t\t\tcode: \"parse_failed\",\n\t\t\tmessage: parsed.error.message,\n\t\t\tpath: filePath,\n\t\t});\n\t\treturn { promptTemplate: null, diagnostics };\n\t}\n\n\tconst { frontmatter, body } = parsed.value;\n\tconst firstLine = body.split(\"\\n\").find((line) => line.trim());\n\tlet description = typeof frontmatter.description === \"string\" ? frontmatter.description : \"\";\n\tif (!description && firstLine) {\n\t\tdescription = firstLine.slice(0, 60);\n\t\tif (firstLine.length > 60) description += \"...\";\n\t}\n\treturn {\n\t\tpromptTemplate: {\n\t\t\tname: fileName.replace(/\\.md$/i, \"\"),\n\t\t\tdescription,\n\t\t\tcontent: body,\n\t\t},\n\t\tdiagnostics,\n\t};\n}\n\nasync function resolveKind(\n\tenv: ExecutionEnv,\n\tinfo: FileInfo,\n\tdiagnostics: PromptTemplateDiagnostic[],\n\tcontext: Context,\n): Promise<\"file\" | \"directory\" | undefined> {\n\tif (info.kind === \"file\" || info.kind === \"directory\") return info.kind;\n\tconst canonicalPath = await env.canonicalPath(info.path, context);\n\tif (!canonicalPath.ok) {\n\t\tif (canonicalPath.error.code !== \"not_found\") {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"warning\",\n\t\t\t\tcode: \"file_info_failed\",\n\t\t\t\tmessage: canonicalPath.error.message,\n\t\t\t\tpath: info.path,\n\t\t\t});\n\t\t}\n\t\treturn undefined;\n\t}\n\tconst target = await env.fileInfo(canonicalPath.value, context);\n\tif (!target.ok) {\n\t\tif (target.error.code !== \"not_found\") {\n\t\t\tdiagnostics.push({\n\t\t\t\ttype: \"warning\",\n\t\t\t\tcode: \"file_info_failed\",\n\t\t\t\tmessage: target.error.message,\n\t\t\t\tpath: info.path,\n\t\t\t});\n\t\t}\n\t\treturn undefined;\n\t}\n\treturn target.value.kind === \"file\" || target.value.kind === \"directory\" ? target.value.kind : undefined;\n}\n\nfunction parseFrontmatter<T extends Record<string, unknown>>(\n\tcontent: string,\n): Result<{ frontmatter: T; body: string }, Error> {\n\ttry {\n\t\tconst normalized = content.replace(/\\r\\n/g, \"\\n\").replace(/\\r/g, \"\\n\");\n\t\tif (!normalized.startsWith(\"---\")) return { ok: true, value: { frontmatter: {} as T, body: normalized } };\n\t\tconst endIndex = normalized.indexOf(\"\\n---\", 3);\n\t\tif (endIndex === -1) return { ok: true, value: { frontmatter: {} as T, body: normalized } };\n\t\tconst yamlString = normalized.slice(4, endIndex);\n\t\tconst body = normalized.slice(endIndex + 4).trim();\n\t\treturn { ok: true, value: { frontmatter: (parse(yamlString) ?? {}) as T, body } };\n\t} catch (error) {\n\t\treturn { ok: false, error: toError(error) };\n\t}\n}\n\n/** Parse an argument string using simple shell-style single and double quotes. */\nexport function parseCommandArgs(argsString: string): string[] {\n\tconst args: string[] = [];\n\tlet current = \"\";\n\tlet inQuote: string | null = null;\n\n\tfor (let i = 0; i < argsString.length; i++) {\n\t\tconst char = argsString[i]!;\n\t\tif (inQuote) {\n\t\t\tif (char === inQuote) inQuote = null;\n\t\t\telse current += char;\n\t\t} else if (char === '\"' || char === \"'\") {\n\t\t\tinQuote = char;\n\t\t} else if (char === \" \" || char === \"\\t\") {\n\t\t\tif (current) {\n\t\t\t\targs.push(current);\n\t\t\t\tcurrent = \"\";\n\t\t\t}\n\t\t} else {\n\t\t\tcurrent += char;\n\t\t}\n\t}\n\tif (current) args.push(current);\n\treturn args;\n}\n\n/** Substitute prompt template placeholders (`$1`, `$@`, `$ARGUMENTS`, `${@:N}`, `${@:N:L}`) with command arguments. */\nexport function substituteArgs(content: string, args: string[]): string {\n\tlet result = content;\n\tresult = result.replace(/\\$(\\d+)/g, (_, num: string) => args[parseInt(num, 10) - 1] ?? \"\");\n\tresult = result.replace(/\\$\\{@:(\\d+)(?::(\\d+))?\\}/g, (_, startStr: string, lengthStr?: string) => {\n\t\tlet start = parseInt(startStr, 10) - 1;\n\t\tif (start < 0) start = 0;\n\t\tif (lengthStr) return args.slice(start, start + parseInt(lengthStr, 10)).join(\" \");\n\t\treturn args.slice(start).join(\" \");\n\t});\n\tconst allArgs = args.join(\" \");\n\tresult = result.replace(/\\$ARGUMENTS/g, allArgs);\n\tresult = result.replace(/\\$@/g, allArgs);\n\treturn result;\n}\n\n/** Format a prompt template invocation with positional arguments. */\nexport function formatPromptTemplateInvocation(template: PromptTemplate, args: string[] = []): string {\n\treturn substituteArgs(template.content, args);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/harness/result.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/harness/result.ts"],"names":[],"mappings":"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","sourcesContent":["export type Result<TValue, TError> = { ok: true; value: TValue } | { ok: false; error: TError };\n\nexport const Result = {\n\tok<TValue>(value: TValue): Result<TValue, never> {\n\t\treturn { ok: true, value };\n\t},\n\terr<TError>(error: TError): Result<never, TError> {\n\t\treturn { ok: false, error };\n\t},\n\tisOk<TValue, TError>(result: Result<TValue, TError>): result is { ok: true; value: TValue } {\n\t\treturn result.ok;\n\t},\n\tisErr<TValue, TError>(result: Result<TValue, TError>): result is { ok: false; error: TError } {\n\t\treturn !result.ok;\n\t},\n};\n\nexport interface TaggedErrorValue<Tag extends string> extends Error {\n\treadonly _tag: Tag;\n\ttoJSON(): { _tag: Tag; message: string } & Record<string, unknown>;\n}\n\nexport interface TaggedErrorFactory<Tag extends string> {\n\tnew <Props extends { message: string }>(props: Props): TaggedErrorValue<Tag> & Readonly<Props>;\n\tis(value: unknown): value is TaggedErrorValue<Tag>;\n}\n\nexport function TaggedError<Tag extends string>(tag: Tag): TaggedErrorFactory<Tag> {\n\tclass TaggedErrorClass extends Error {\n\t\treadonly _tag = tag;\n\n\t\tconstructor(props: { message: string } & Record<string, unknown>) {\n\t\t\tsuper(props.message);\n\t\t\tthis.name = tag;\n\t\t\tObject.assign(this, props);\n\t\t}\n\n\t\ttoJSON(): { _tag: Tag; message: string } & Record<string, unknown> {\n\t\t\tconst payload: Record<string, unknown> = {};\n\t\t\tfor (const key of Object.keys(this)) {\n\t\t\t\tif (key !== \"_tag\") payload[key] = (this as unknown as Record<string, unknown>)[key];\n\t\t\t}\n\t\t\treturn { _tag: tag, message: this.message, ...payload };\n\t\t}\n\n\t\tstatic is(value: unknown): value is TaggedErrorValue<Tag> {\n\t\t\treturn value instanceof TaggedErrorClass;\n\t\t}\n\t}\n\treturn TaggedErrorClass as unknown as TaggedErrorFactory<Tag>;\n}\n\nexport class LaneBusy extends TaggedError(\"LaneBusy\")<{\n\tlane: string;\n\toperationId: string;\n\toperationKind: \"run\" | \"compaction\" | \"navigation\";\n\tmessage: string;\n}> {}\nexport class OperationMismatch extends TaggedError(\"OperationMismatch\")<{\n\tlane: string;\n\texpectedOperationId: string;\n\tcurrentOperationId?: string;\n\tlastOperationId?: string;\n\tmessage: string;\n}> {}\nexport class NoActiveRun extends TaggedError(\"NoActiveRun\")<{ lane: string; message: string }> {}\nexport class NoActiveOperation extends TaggedError(\"NoActiveOperation\")<{ lane: string; message: string }> {}\nexport class NothingToResume extends TaggedError(\"NothingToResume\")<{ lane: string; message: string }> {}\nexport class NothingToCompact extends TaggedError(\"NothingToCompact\")<{ lane: string; message: string }> {}\nexport class InvalidMessage extends TaggedError(\"InvalidMessage\")<{\n\tlane: string;\n\treason: string;\n\tmessage: string;\n}> {}\nexport class InvalidNavigation extends TaggedError(\"InvalidNavigation\")<{\n\tlane: string;\n\treason: string;\n\tmessage: string;\n}> {}\nexport class UnknownSkill extends TaggedError(\"UnknownSkill\")<{ name: string; message: string }> {}\nexport class UnknownTemplate extends TaggedError(\"UnknownTemplate\")<{ name: string; message: string }> {}\nexport class UnknownTarget extends TaggedError(\"UnknownTarget\")<{ targetId: string; message: string }> {}\nexport class InvalidLane extends TaggedError(\"InvalidLane\")<{\n\tlane: string;\n\treason: string;\n\tmessage: string;\n}> {}\nexport class Closed extends TaggedError(\"Closed\")<{ message: string }> {}\n\nexport class HarnessFault extends Error {\n\treadonly cause: unknown;\n\n\tconstructor(message: string, cause: unknown) {\n\t\tsuper(message);\n\t\tthis.name = \"HarnessFault\";\n\t\tthis.cause = cause;\n\t}\n}\n\nexport class HarnessClosed extends Error {\n\tconstructor() {\n\t\tsuper(\"AgentHarness was closed while the operation was active\");\n\t\tthis.name = \"HarnessClosed\";\n\t}\n}\n\nexport type ErrorMatchers<TError extends TaggedErrorValue<string>, TValue> = {\n\t[Tag in TError[\"_tag\"]]: (error: Extract<TError, { _tag: Tag }>) => TValue;\n};\n\nexport function matchError<TError extends TaggedErrorValue<string>, TValue>(\n\terror: TError,\n\tmatchers: ErrorMatchers<TError, TValue>,\n): TValue {\n\tconst matcher = (matchers as unknown as Record<string, (value: TError) => TValue>)[error._tag];\n\treturn matcher(error);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"boundary.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/boundary.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAG3E,OAAO,KAAK,EACX,uBAAuB,EACvB,mBAAmB,EACnB,YAAY,EACZ,QAAQ,EACR,qBAAqB,EACrB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,6BAA6B,EAC7B,qBAAqB,EACrB,KAAK,EACL,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGrE,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IACjC,OAAO,EAAE,QAAQ,EAAE,CAAC;IACpB,MAAM,EAAE,KAAK,EAAE,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,cAAc,EAAE,CAAC;CAC1B;AAED,KAAK,uBAAuB,GACzB,mBAAmB,GACnB,wBAAwB,GACxB,qBAAqB,GACrB,6BAA6B,CAAC;AAEjC,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACxE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,GAClB,qBAAqB,CAOvB;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAC3E,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,cAAc,EACrB,cAAc,EAAE,MAAM,EACtB,oBAAoB,EAAE,OAAO,GAC3B,uBAAuB,CAezB;AAED,oFAAoF;AACpF,wBAAsB,iBAAiB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAC1E,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,SAAS,EAChB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,qBAAqB,EAAE,OAAO,GAC5B,OAAO,CAAC,iBAAiB,CAAC,CA6D5B;AAED,wBAAgB,uBAAuB,CACtC,SAAS,EAAE,iBAAiB,EAC5B,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,MAAM,EACvB,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,GACX,YAAY,EAAE,CAKhB;AAED,6FAA6F;AAC7F,wBAAsB,iBAAiB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAAE,MAAM,SAAS,uBAAuB,EAClH,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,OAAO,CAAC,mBAAmB,CAAC,cAAc,CAAC,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,EAClF,eAAe,EAAE,SAAS,MAAM,EAAE,EAClC,aAAa,GAAE,YAAY,EAAO,GAChC,OAAO,CAAC,eAAe,CAAC,CA2F1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"boundary.js","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/boundary.ts"],"names":[],"mappings":"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","sourcesContent":["import { DEFAULT_MAX_AGENT_RETRY_DELAY_MS } from \"@earendil-works/pi-ai\";\nimport type { HarnessEvent, LaneQueuedItem } from \"../../agent-harness.ts\";\nimport { insertEntry } from \"../../session/commit.ts\";\nimport { SessionInvariantError } from \"../../session/session.ts\";\nimport type {\n\tAssistantReadyOperation,\n\tCheckpointOperation,\n\tCommitResult,\n\tNewEntry,\n\tNormalizedRetryPolicy,\n\tOperationScope,\n\tSessionReader,\n\tSummaryDecidingOperation,\n\tSummaryEffectPendingOperation,\n\tSummaryReadyOperation,\n\tWrite,\n} from \"../../session/types.ts\";\nimport { branchTip, deleteValue, pendingEntry, setValue } from \"../../session/values.ts\";\nimport type { Lane } from \"../lane.ts\";\nimport { committedEntryEvents, entryLifecycleEvents, readBoundedContext, readLaneQueues } from \"../transcript.ts\";\nimport type { Drive, LaneState, ProcedureResult } from \"../types.ts\";\nimport { operationCleanupWrites, operationResultRecord } from \"./terminal.ts\";\n\nexport interface BoundaryFinishPending {\n\tkind: \"finish_pending\";\n\tentryIds: string[];\n}\n\nexport interface BoundaryPlacement {\n\tentries: NewEntry[];\n\twrites: Write[];\n\ttipId: string | null;\n\tinbox: LaneState[\"inbox\"];\n\ttriggerEntryId?: string;\n\tqueues?: LaneQueuedItem[];\n}\n\ntype FinishBoundaryOperation =\n\t| CheckpointOperation\n\t| SummaryDecidingOperation\n\t| SummaryReadyOperation\n\t| SummaryEffectPendingOperation;\n\nexport function normalizedRetryPolicy<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n): NormalizedRetryPolicy {\n\tconst retry = lane.readConfig().retryPolicy;\n\treturn {\n\t\tmaxAttempts: retry.enabled ? retry.maxRetries + 1 : 1,\n\t\tbaseDelayMs: retry.baseDelayMs,\n\t\tmaxAgentDelayMs: retry.maxAgentDelayMs ?? DEFAULT_MAX_AGENT_RETRY_DELAY_MS,\n\t};\n}\n\nexport function assistantReadyAtBoundary<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tstate: LaneState,\n\tscope: OperationScope,\n\ttriggerEntryId: string,\n\toverflowRecoveryUsed: boolean,\n): AssistantReadyOperation {\n\tconst config = lane.readConfig();\n\treturn {\n\t\t...scope,\n\t\tat: \"assistant.ready\",\n\t\tgenerationContext: {\n\t\t\tstepId: lane.session.idGenerator.next(),\n\t\t\ttriggerEntryId,\n\t\t\tconfiguration: state.configuration,\n\t\t\tstreamOptions: config.streamOptions,\n\t\t\tretryPolicy: normalizedRetryPolicy(lane),\n\t\t\toverflowRecoveryUsed,\n\t\t},\n\t\tnextAttempt: 1,\n\t};\n}\n\n/** Select and materialize one boundary's lane-owned input without committing it. */\nexport async function planBoundaryInbox<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tstate: LaneState,\n\tscope: OperationScope,\n\treader: SessionReader,\n\ttipId: string | null,\n\tfollowUpWhenNoTrigger: boolean,\n): Promise<BoundaryPlacement> {\n\tconst steer = state.inbox.filter((item) => item.kind === \"steer\");\n\tconst selectedSteer = scope.settings.steeringMode === \"all\" ? steer : steer.slice(0, 1);\n\tlet selected = state.inbox.filter(\n\t\t(item) => item.kind === \"write\" || selectedSteer.some((candidate) => candidate.entryId === item.entryId),\n\t);\n\tconst load = (items: typeof selected) =>\n\t\tPromise.all(\n\t\t\titems.map(async (item) => {\n\t\t\t\tconst stored = await reader.getValue(pendingEntry(item.entryId), drive.context);\n\t\t\t\tif (stored === undefined) {\n\t\t\t\t\tthrow new SessionInvariantError(`Pending ${item.kind} entry ${item.entryId} is missing its payload`);\n\t\t\t\t}\n\t\t\t\tif (item.kind !== \"write\" && stored.value.type !== \"message\") {\n\t\t\t\t\tthrow new SessionInvariantError(`Queued ${item.kind} entry ${item.entryId} is not a message`);\n\t\t\t\t}\n\t\t\t\treturn { item, pending: stored.value };\n\t\t\t}),\n\t\t);\n\tlet pending = await load(selected);\n\tconst projects = (value: (typeof pending)[number][\"pending\"]): boolean =>\n\t\tvalue.type === \"message\" || lane.readConfig().entryProjectors[value.customType] !== undefined;\n\tif (followUpWhenNoTrigger && !pending.some(({ pending: value }) => projects(value))) {\n\t\tconst followUp = state.inbox.filter((item) => item.kind === \"followUp\");\n\t\tconst selectedFollowUp = scope.settings.followUpMode === \"all\" ? followUp : followUp.slice(0, 1);\n\t\tselected = [...selected, ...selectedFollowUp].sort((a, b) => state.inbox.indexOf(a) - state.inbox.indexOf(b));\n\t\tpending = await load(selected);\n\t}\n\n\tlet parentId = tipId;\n\tlet triggerEntryId: string | undefined;\n\tconst entries: NewEntry[] = pending.map(({ item, pending: value }) => {\n\t\tconst entry: NewEntry =\n\t\t\tvalue.type === \"message\"\n\t\t\t\t? { id: item.entryId, parentId, type: \"message\", message: value.payload }\n\t\t\t\t: {\n\t\t\t\t\t\tid: item.entryId,\n\t\t\t\t\t\tparentId,\n\t\t\t\t\t\ttype: \"custom\",\n\t\t\t\t\t\tcustomType: value.customType,\n\t\t\t\t\t\t...(value.payload === undefined ? {} : { data: value.payload }),\n\t\t\t\t\t};\n\t\tparentId = item.entryId;\n\t\tif (projects(value)) triggerEntryId = item.entryId;\n\t\treturn entry;\n\t});\n\tconst selectedIds = new Set(selected.map((item) => item.entryId));\n\tconst inbox = state.inbox.filter((item) => !selectedIds.has(item.entryId));\n\tconst queues = selected.length === 0 ? undefined : await readLaneQueues(reader, inbox, drive.context);\n\treturn {\n\t\tentries,\n\t\twrites: [\n\t\t\t...entries.map((entry) => insertEntry(entry)),\n\t\t\t...selected.map((item) => deleteValue(pendingEntry(item.entryId))),\n\t\t\t...(entries.length === 0 ? [] : [setValue(branchTip(lane.name), parentId)]),\n\t\t],\n\t\ttipId: parentId,\n\t\tinbox,\n\t\t...(triggerEntryId === undefined ? {} : { triggerEntryId }),\n\t\t...(queues === undefined ? {} : { queues }),\n\t};\n}\n\nexport function boundaryPlacementEvents(\n\tplacement: BoundaryPlacement,\n\tcommit: CommitResult,\n\tfirstWriteIndex: number,\n\tlane: string,\n\trunId: string,\n): HarnessEvent[] {\n\treturn [\n\t\t...committedEntryEvents(placement.entries, commit, lane, runId, firstWriteIndex),\n\t\t...(placement.queues === undefined ? [] : [{ type: \"queue_update\" as const, lane, queues: placement.queues }]),\n\t];\n}\n\n/** Replan after before_run_end and commit either renewed work or the terminal run result. */\nexport async function finishRunBoundary<TContext extends object | undefined, TState extends FinishBoundaryOperation>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tcapability: TState,\n\tcontinuation: Extract<CheckpointOperation[\"continuation\"], { kind: \"may_finish\" }>,\n\tplannedEntryIds: readonly string[],\n\tpendingEvents: HarnessEvent[] = [],\n): Promise<ProcedureResult> {\n\tconst context = await readBoundedContext(lane, drive, capability);\n\tif (context.kind === \"cancel_requested\") return { kind: \"continue\" };\n\tconst hook = await lane.hooks.runWithGate(\n\t\t\"before_run_end\",\n\t\t{ lane: lane.name, runId: drive.operationId, messages: context.value },\n\t\tdrive.gate,\n\t\tdrive.context,\n\t);\n\tconst followUp =\n\t\thook?.followUp === undefined\n\t\t\t? undefined\n\t\t\t: {\n\t\t\t\t\tid: lane.session.idGenerator.next(),\n\t\t\t\t\tmessage: { role: \"user\" as const, content: hook.followUp, timestamp: Date.now() },\n\t\t\t\t};\n\tconst result = await lane.continueOperation<TState, ProcedureResult>(\n\t\tcapability,\n\t\tasync (state, current, meta, reader) => {\n\t\t\tconst placement = await planBoundaryInbox(lane, drive, state, current, reader, state.tipId, true);\n\t\t\tif (placement.triggerEntryId !== undefined) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"commit\",\n\t\t\t\t\twrites: placement.writes,\n\t\t\t\t\toperationState: assistantReadyAtBoundary(lane, state, current, placement.triggerEntryId, false),\n\t\t\t\t\tlane: { tipId: placement.tipId, inbox: placement.inbox },\n\t\t\t\t\tmaterialize: () => ({ kind: \"continue\" }) as const,\n\t\t\t\t\tevents: (commit) => [\n\t\t\t\t\t\t...pendingEvents,\n\t\t\t\t\t\t...boundaryPlacementEvents(placement, commit, 0, lane.name, drive.operationId),\n\t\t\t\t\t],\n\t\t\t\t};\n\t\t\t}\n\t\t\tconst hookPlanIsCurrent =\n\t\t\t\tplacement.entries.length === plannedEntryIds.length &&\n\t\t\t\tplacement.entries.every((entry, index) => entry.id === plannedEntryIds[index]);\n\t\t\tif (hookPlanIsCurrent && followUp !== undefined) {\n\t\t\t\tconst entry: NewEntry = {\n\t\t\t\t\tid: followUp.id,\n\t\t\t\t\tparentId: placement.tipId,\n\t\t\t\t\ttype: \"message\",\n\t\t\t\t\tmessage: followUp.message,\n\t\t\t\t};\n\t\t\t\tconst entryWriteIndex = placement.writes.length;\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"commit\",\n\t\t\t\t\twrites: [...placement.writes, insertEntry(entry), setValue(branchTip(lane.name), followUp.id)],\n\t\t\t\t\toperationState: assistantReadyAtBoundary(lane, state, current, followUp.id, false),\n\t\t\t\t\tlane: { tipId: followUp.id, inbox: placement.inbox },\n\t\t\t\t\tmaterialize: () => ({ kind: \"continue\" }) as const,\n\t\t\t\t\tevents: (commit) => [\n\t\t\t\t\t\t...pendingEvents,\n\t\t\t\t\t\t...boundaryPlacementEvents(placement, commit, 0, lane.name, drive.operationId),\n\t\t\t\t\t\t...entryLifecycleEvents(\n\t\t\t\t\t\t\t{ ...entry, seq: commit.seqs[entryWriteIndex]!, timestamp: commit.timestamp },\n\t\t\t\t\t\t\tlane.name,\n\t\t\t\t\t\t\tdrive.operationId,\n\t\t\t\t\t\t),\n\t\t\t\t\t],\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (placement.tipId === null) throw new SessionInvariantError(\"Completed run has no tip\");\n\t\t\tif (continuation.includeFinalAssistant && current.latestAssistantEntryId === null) {\n\t\t\t\tthrow new SessionInvariantError(\"Completed run is missing its final assistant\");\n\t\t\t}\n\t\t\tconst record = operationResultRecord(meta, \"completed\", placement.tipId);\n\t\t\tconst cleanup = await operationCleanupWrites(reader, drive.operationId, current, drive.context);\n\t\t\treturn {\n\t\t\t\tkind: \"finish\",\n\t\t\t\twrites: [...placement.writes, ...cleanup],\n\t\t\t\trecord,\n\t\t\t\tlane: { tipId: placement.tipId, inbox: placement.inbox },\n\t\t\t\tmaterialize: () => ({ kind: \"settled\", outcome: record }) as const,\n\t\t\t\tevents: (commit) => [\n\t\t\t\t\t...pendingEvents,\n\t\t\t\t\t...boundaryPlacementEvents(placement, commit, 0, lane.name, drive.operationId),\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"run_end\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\tstatus: \"completed\",\n\t\t\t\t\t\tfromTipId: meta.sourceTipId,\n\t\t\t\t\t\ttipId: placement.tipId,\n\t\t\t\t\t\tendedAt: record.endedAt,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n\treturn result.kind === \"cancel_requested\" ? { kind: \"continue\" } : result.value;\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkpoint.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/checkpoint.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,KAAK,mBAAmB,EAIxB,KAAK,iBAAiB,EAEtB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAU1D,4DAA4D;AAC5D,wBAAsB,QAAQ,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACjE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,iBAAiB,GACpB,OAAO,CAAC,eAAe,CAAC,CA+D1B;AAED,gEAAgE;AAChE,wBAAsB,aAAa,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACtE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,GAAG,EAAE,mBAAmB,GACtB,OAAO,CAAC,eAAe,CAAC,CA2F1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"checkpoint.js","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/checkpoint.ts"],"names":[],"mappings":"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","sourcesContent":["import { insertEntry } from \"../../session/commit.ts\";\nimport { SessionInvariantError } from \"../../session/session.ts\";\nimport {\n\ttype CheckpointOperation,\n\ttype MessageEntry,\n\ttype NewEntry,\n\toperationScopeOf,\n\ttype StartingOperation,\n\ttype SummaryDecidingOperation,\n} from \"../../session/types.ts\";\nimport { branchTip, operationPreparation, setValue } from \"../../session/values.ts\";\nimport type { Lane } from \"../lane.ts\";\nimport { chainEntries, committedEntryEvents } from \"../transcript.ts\";\nimport type { Drive, ProcedureResult } from \"../types.ts\";\nimport {\n\tassistantReadyAtBoundary,\n\ttype BoundaryFinishPending,\n\tboundaryPlacementEvents,\n\tfinishRunBoundary,\n\tplanBoundaryInbox,\n} from \"./boundary.ts\";\nimport { prepareCompactionThreshold } from \"./structural.ts\";\n\n/** Consume before_run and commit the initial checkpoint. */\nexport async function startRun<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\trun: StartingOperation,\n): Promise<ProcedureResult> {\n\tconst prompt = await lane.continueOperation(\n\t\trun,\n\t\tasync (_state, _current, meta, reader) => {\n\t\t\tif (meta.intent.kind !== \"run\") throw new SessionInvariantError(\"Run operation has non-run intent\");\n\t\t\tconst entries = await reader.getEntries(meta.intent.promptEntryIds, drive.context);\n\t\t\tconst messages = meta.intent.promptEntryIds.map((id) => {\n\t\t\t\tconst entry = entries.get(id);\n\t\t\t\tif (entry?.type !== \"message\") {\n\t\t\t\t\tthrow new SessionInvariantError(`Run prompt entry ${id} is missing its message`);\n\t\t\t\t}\n\t\t\t\treturn entry.message;\n\t\t\t});\n\t\t\treturn { kind: \"return\", result: messages };\n\t\t},\n\t\tdrive.context,\n\t);\n\tif (prompt.kind === \"cancel_requested\") return { kind: \"continue\" };\n\n\tconst hook = await lane.hooks.runWithGate(\n\t\t\"before_run\",\n\t\t{ lane: lane.name, runId: drive.operationId, prompt: prompt.value, resources: lane.readConfig().resources },\n\t\tdrive.gate,\n\t\tdrive.context,\n\t);\n\tconst injected = hook?.messages ?? [];\n\tfor (const message of injected) {\n\t\tif (message.role === \"assistant\" && message.stopReason === \"pending\") {\n\t\t\tthrow new SessionInvariantError(\"before_run returned a pending assistant message\");\n\t\t}\n\t}\n\tconst reserved = injected.map((message) => ({ id: lane.session.idGenerator.next(), message }));\n\n\tconst result = await lane.continueOperation(\n\t\trun,\n\t\t(state, current) => {\n\t\t\tconst entries: NewEntry<MessageEntry>[] = chainEntries(\n\t\t\t\tstate.tipId,\n\t\t\t\treserved.map(({ id, message }) => ({ id, type: \"message\" as const, message })),\n\t\t\t);\n\t\t\tconst triggerEntryId = entries.at(-1)?.id ?? state.tipId;\n\t\t\tif (triggerEntryId === null) throw new SessionInvariantError(\"Run start has no trigger entry\");\n\t\t\tconst nextState: CheckpointOperation = {\n\t\t\t\t...operationScopeOf(current),\n\t\t\t\tat: \"checkpoint\",\n\t\t\t\tcontinuation: { kind: \"need_assistant\", overflowRecoveryUsed: false },\n\t\t\t\ttriggerEntryId,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tkind: \"commit\",\n\t\t\t\twrites: [\n\t\t\t\t\t...entries.map((entry) => insertEntry(entry)),\n\t\t\t\t\t...(entries.length === 0 ? [] : [setValue(branchTip(lane.name), triggerEntryId)]),\n\t\t\t\t],\n\t\t\t\toperationState: nextState,\n\t\t\t\tlane: { tipId: triggerEntryId },\n\t\t\t\tmaterialize: () => ({ kind: \"continue\" }) as const,\n\t\t\t\tevents: (commit) => committedEntryEvents(entries, commit, lane.name, drive.operationId),\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n\treturn result.kind === \"cancel_requested\" ? { kind: \"continue\" } : result.value;\n}\n\n/** Advance one durable run boundary with at most one commit. */\nexport async function runCheckpoint<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\trun: CheckpointOperation,\n): Promise<ProcedureResult> {\n\tconst threshold = await prepareCompactionThreshold(lane, drive, run);\n\tif (threshold.kind === \"cancel_requested\") return { kind: \"continue\" };\n\tconst planned = await lane.continueOperation<CheckpointOperation, ProcedureResult | BoundaryFinishPending>(\n\t\trun,\n\t\tasync (state, current, _meta, reader) => {\n\t\t\tconst placement = await planBoundaryInbox(\n\t\t\t\tlane,\n\t\t\t\tdrive,\n\t\t\t\tstate,\n\t\t\t\tcurrent,\n\t\t\t\treader,\n\t\t\t\tstate.tipId,\n\t\t\t\tthreshold.value === undefined && current.continuation.kind === \"may_finish\",\n\t\t\t);\n\t\t\tif (placement.triggerEntryId !== undefined) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"commit\",\n\t\t\t\t\twrites: placement.writes,\n\t\t\t\t\toperationState: assistantReadyAtBoundary(lane, state, current, placement.triggerEntryId, false),\n\t\t\t\t\tlane: { tipId: placement.tipId, inbox: placement.inbox },\n\t\t\t\t\tmaterialize: () => ({ kind: \"continue\" }) as const,\n\t\t\t\t\tevents: (commit) => boundaryPlacementEvents(placement, commit, 0, lane.name, drive.operationId),\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (threshold.value !== undefined) {\n\t\t\t\tconst structural: SummaryDecidingOperation = {\n\t\t\t\t\t...operationScopeOf(current),\n\t\t\t\t\tat: \"summary.deciding\",\n\t\t\t\t\ttask: {\n\t\t\t\t\t\ttaskId: threshold.value.taskId,\n\t\t\t\t\t\treason: \"threshold\",\n\t\t\t\t\t\tboundary: {\n\t\t\t\t\t\t\tkind: \"resume_checkpoint\",\n\t\t\t\t\t\t\tresumeAfter: { continuation: current.continuation, triggerEntryId: current.triggerEntryId },\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"commit\",\n\t\t\t\t\twrites: [\n\t\t\t\t\t\t...placement.writes,\n\t\t\t\t\t\tsetValue(\n\t\t\t\t\t\t\toperationPreparation(drive.operationId, threshold.value.taskId),\n\t\t\t\t\t\t\tthreshold.value.preparation,\n\t\t\t\t\t\t),\n\t\t\t\t\t],\n\t\t\t\t\toperationState: structural,\n\t\t\t\t\tlane: { tipId: placement.tipId, inbox: placement.inbox },\n\t\t\t\t\tmaterialize: () => ({ kind: \"continue\" }) as const,\n\t\t\t\t\tevents: (commit) => [\n\t\t\t\t\t\t...boundaryPlacementEvents(placement, commit, 0, lane.name, drive.operationId),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\ttype: \"compaction_start\",\n\t\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\t\treason: \"threshold\",\n\t\t\t\t\t\t\tstartedAt: commit.timestamp,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (current.continuation.kind === \"need_assistant\") {\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"commit\",\n\t\t\t\t\twrites: placement.writes,\n\t\t\t\t\toperationState: assistantReadyAtBoundary(\n\t\t\t\t\t\tlane,\n\t\t\t\t\t\tstate,\n\t\t\t\t\t\tcurrent,\n\t\t\t\t\t\tcurrent.triggerEntryId,\n\t\t\t\t\t\tcurrent.continuation.overflowRecoveryUsed,\n\t\t\t\t\t),\n\t\t\t\t\tlane: { tipId: placement.tipId, inbox: placement.inbox },\n\t\t\t\t\tmaterialize: () => ({ kind: \"continue\" }) as const,\n\t\t\t\t\tevents: (commit) => boundaryPlacementEvents(placement, commit, 0, lane.name, drive.operationId),\n\t\t\t\t};\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tkind: \"return\",\n\t\t\t\tresult: { kind: \"finish_pending\", entryIds: placement.entries.map((entry) => entry.id) } as const,\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n\tif (planned.kind === \"cancel_requested\") return { kind: \"continue\" };\n\tif (planned.value.kind !== \"finish_pending\") return planned.value;\n\tif (run.continuation.kind !== \"may_finish\") {\n\t\tthrow new SessionInvariantError(\"Checkpoint finish mediation requires a finish continuation\");\n\t}\n\treturn finishRunBoundary(lane, drive, run, run.continuation, planned.value.entryIds);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deferred.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/deferred.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAO,cAAc,EAAS,MAAM,uBAAuB,CAAC;AACxE,OAAO,EAAE,KAAK,OAAO,EAAwC,MAAM,kBAAkB,CAAC;AAItF,OAAO,EACN,KAAK,8BAA8B,EACnC,KAAK,0BAA0B,EAK/B,KAAK,aAAa,EAElB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAA2B,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnF,KAAK,YAAY,GAAG,0BAA0B,GAAG,8BAA8B,CAAC;AA0BhF,wBAAsB,wBAAwB,CAC7C,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,YAAY,EACtB,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,cAAc,CAAC,CAqBzB;AA2LD,oFAAoF;AACpF,wBAAgB,oBAAoB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACvE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,0BAA0B,GAClC,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,iGAAiG;AACjG,wBAAgB,mBAAmB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACtE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,8BAA8B,GACtC,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAC9D,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,0BAA0B,GAAG,8BAA8B,GACnE,OAAO,CAAC,eAAe,CAAC,CAI1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"deferred.js","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/deferred.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, DeferredHandle, Model } from \"@earendil-works/pi-ai\";\nimport { type Context, getTelemetryContext, withAbortSignal } from \"../../context.ts\";\nimport { consumeAssistantStream } from \"../../execution/assistant.ts\";\nimport { applyStreamOptionsPatch } from \"../../hooks.ts\";\nimport { SessionInvariantError } from \"../../session/session.ts\";\nimport {\n\ttype DeferredEffectPendingOperation,\n\ttype DeferredSuspendedOperation,\n\ttype LaneConfiguration,\n\ttype OperationError,\n\ttype OperationScope,\n\toperationScopeOf,\n\ttype SessionReader,\n\ttype SettledAssistantMessage,\n} from \"../../session/types.ts\";\nimport { deleteList, pendingAssistantFrames } from \"../../session/values.ts\";\nimport type { AgentHarnessStreamOptions } from \"../../types.ts\";\nimport type { Lane } from \"../lane.ts\";\nimport type { ContinueOperationResult, Drive, ProcedureResult } from \"../types.ts\";\nimport { openAssistantResponse, publishConfigurationFailure, publishResponse } from \"./response.ts\";\n\ntype DeferredLeaf = DeferredSuspendedOperation | DeferredEffectPendingOperation;\n/** Deferred effect payload without the run-wide scope fields. */\ntype EffectPendingFields = Omit<DeferredEffectPendingOperation, keyof OperationScope>;\n\ntype PreparedDeferredPoll = {\n\tkind: \"ready\";\n\tsource: DeferredHandle;\n\tmodel: Model<Api>;\n\tpoll: number;\n\tstreamOptions: AgentHarnessStreamOptions;\n};\n\ntype DeferredPreparation =\n\t| PreparedDeferredPoll\n\t| { kind: \"cancel_requested\" }\n\t| { kind: \"waiting\"; source: DeferredHandle }\n\t| { kind: \"configuration_failure\" };\n\nfunction configurationError(identity: LaneConfiguration[\"model\"]): OperationError {\n\treturn {\n\t\tcode: \"model_unavailable\",\n\t\tmessage: \"The configured model is unavailable in this process\",\n\t\tdetails: identity,\n\t};\n}\n\nexport async function readDeferredSourceHandle(\n\treader: SessionReader,\n\tdeferred: DeferredLeaf,\n\tcontext: Context,\n): Promise<DeferredHandle> {\n\tconst source = (await reader.getEntries([deferred.sourceEntryId], context)).get(deferred.sourceEntryId);\n\tif (\n\t\tsource?.type !== \"message\" ||\n\t\tsource.message.role !== \"assistant\" ||\n\t\tsource.message.stopReason !== \"deferred\" ||\n\t\tsource.message.deferred === undefined\n\t) {\n\t\tthrow new SessionInvariantError(`Deferred source ${deferred.sourceEntryId} is missing its assistant handle`);\n\t}\n\tconst handle = source.message.deferred;\n\tconst identity = deferred.configuration.model;\n\tif (\n\t\thandle.id.length === 0 ||\n\t\thandle.provider !== identity.provider ||\n\t\thandle.modelId !== identity.modelId ||\n\t\thandle.api !== source.message.api\n\t) {\n\t\tthrow new SessionInvariantError(`Deferred source ${deferred.sourceEntryId} has an invalid handle`);\n\t}\n\treturn handle;\n}\n\nasync function readSourceHandle<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tdeferred: DeferredLeaf,\n): Promise<ContinueOperationResult<DeferredHandle>> {\n\treturn lane.continueOperation(\n\t\tdeferred,\n\t\tasync (_state, _current, _meta, reader) => ({\n\t\t\tkind: \"return\",\n\t\t\tresult: await readDeferredSourceHandle(reader, deferred, drive.context),\n\t\t}),\n\t\tdrive.context,\n\t);\n}\n\nasync function prepareDeferredPoll<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\texpected: DeferredLeaf,\n): Promise<DeferredPreparation> {\n\tconst source = await readSourceHandle(lane, drive, expected);\n\tif (source.kind === \"cancel_requested\") return source;\n\tif (drive.deferredPermits === 0) return { kind: \"waiting\", source: source.value };\n\n\tconst identity = expected.configuration.model;\n\tconst model = lane.models.getModel(identity.provider, identity.modelId);\n\tif (model === undefined) return { kind: \"configuration_failure\" };\n\tconst baseOptions: AgentHarnessStreamOptions = { ...expected.streamOptions, deferred: false };\n\tconst poll = expected.at === \"deferred.suspended\" ? expected.poll + 1 : expected.poll;\n\tconst beforeRequest = await lane.hooks.runWithGate(\n\t\t\"before_request\",\n\t\t{\n\t\t\tlane: lane.name,\n\t\t\trunId: drive.operationId,\n\t\t\tmodel,\n\t\t\tstep: \"deferred\",\n\t\t\tattempt: poll,\n\t\t\tstreamOptions: baseOptions,\n\t\t},\n\t\tdrive.gate,\n\t\tdrive.context,\n\t);\n\treturn {\n\t\tkind: \"ready\",\n\t\tsource: source.value,\n\t\tmodel,\n\t\tpoll,\n\t\tstreamOptions: {\n\t\t\t...(beforeRequest?.streamOptions === undefined\n\t\t\t\t? baseOptions\n\t\t\t\t: applyStreamOptionsPatch(baseOptions, beforeRequest.streamOptions)),\n\t\t\tdeferred: false,\n\t\t},\n\t};\n}\n\nasync function publishPollIntent<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tdeferred: DeferredLeaf,\n\tprepared: PreparedDeferredPoll,\n\trecovery: boolean,\n): Promise<ContinueOperationResult<DeferredEffectPendingOperation>> {\n\tconst at = Date.now();\n\tconst next: EffectPendingFields = {\n\t\tat: \"deferred.effect_pending\",\n\t\tstepId: deferred.stepId,\n\t\tsourceEntryId: deferred.sourceEntryId,\n\t\tpoll: prepared.poll,\n\t\tresponseEntryId: lane.session.idGenerator.next(at),\n\t\tusageId: lane.session.idGenerator.next(at),\n\t\tconfiguration: deferred.configuration,\n\t\tstreamOptions: deferred.streamOptions,\n\t};\n\treturn lane.continueOperation(\n\t\tdeferred,\n\t\t(_state, current) => {\n\t\t\tconst nextState: DeferredEffectPendingOperation = { ...operationScopeOf(current), ...next };\n\t\t\treturn {\n\t\t\t\tkind: \"commit\",\n\t\t\t\twrites:\n\t\t\t\t\tdeferred.at === \"deferred.effect_pending\"\n\t\t\t\t\t\t? [deleteList(pendingAssistantFrames(drive.operationId, deferred.responseEntryId))]\n\t\t\t\t\t\t: [],\n\t\t\t\toperationState: nextState,\n\t\t\t\tmaterialize: () => {\n\t\t\t\t\tdrive.deferredPermits--;\n\t\t\t\t\treturn nextState;\n\t\t\t\t},\n\t\t\t\tevents: () => [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"run_resume\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\t...(recovery ? { recovery: true as const } : {}),\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"turn_start\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\tturnId: `${next.stepId}:poll:${next.poll}`,\n\t\t\t\t\t\t...(recovery ? { recovery: true as const } : {}),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n}\n\nasync function performDeferredPoll<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tprepared: PreparedDeferredPoll,\n\tintent: DeferredEffectPendingOperation,\n\trecovery: boolean,\n): Promise<SettledAssistantMessage> {\n\tconst response = openAssistantResponse(lane, drive, intent.responseEntryId, recovery);\n\tlet metadata: { status?: number; headers?: Record<string, string> } = {};\n\tconst admitted = withAbortSignal(drive.gate.signal, drive.context);\n\tconst stream = drive.gate.admit(() =>\n\t\tlane.models.streamDeferred(prepared.model, prepared.source, {\n\t\t\twait: 0,\n\t\t\tsignal: admitted.abortSignal,\n\t\t\ttelemetryContext: getTelemetryContext(admitted),\n\t\t\ttimeoutMs: prepared.streamOptions.timeoutMs,\n\t\t\tmaxRetries: prepared.streamOptions.maxRetries,\n\t\t\tmaxRetryDelayMs: prepared.streamOptions.maxRetryDelayMs,\n\t\t\theaders: prepared.streamOptions.headers,\n\t\t\tonPayload: async (payload, requestModel) => {\n\t\t\t\tconst result = await lane.hooks.runWithGate(\n\t\t\t\t\t\"before_payload\",\n\t\t\t\t\t{ lane: lane.name, runId: drive.operationId, model: requestModel, payload },\n\t\t\t\t\tdrive.gate,\n\t\t\t\t\tdrive.context,\n\t\t\t\t);\n\t\t\t\treturn result?.payload;\n\t\t\t},\n\t\t\tonResponse: (response) => {\n\t\t\t\tmetadata = { status: response.status, headers: response.headers };\n\t\t\t},\n\t\t}),\n\t);\n\n\ttry {\n\t\treturn await consumeAssistantStream(\n\t\t\tstream,\n\t\t\tresponse.observer,\n\t\t\t(message, context) => response.afterResponse(message, metadata, context),\n\t\t\tdrive.context,\n\t\t);\n\t} finally {\n\t\tawait response.close();\n\t}\n}\n\nasync function pollDeferred<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\texpected: DeferredLeaf,\n\trecovery: boolean,\n): Promise<ProcedureResult> {\n\tconst prepared = await prepareDeferredPoll(lane, drive, expected);\n\tif (prepared.kind === \"cancel_requested\") return { kind: \"continue\" };\n\tif (prepared.kind === \"waiting\") {\n\t\treturn {\n\t\t\tkind: \"waiting\",\n\t\t\toutcome: {\n\t\t\t\tkind: \"waiting\",\n\t\t\t\toperationId: drive.operationId,\n\t\t\t\treason: \"deferred\",\n\t\t\t\tdeferred: prepared.source,\n\t\t\t},\n\t\t};\n\t}\n\tif (prepared.kind === \"configuration_failure\") {\n\t\treturn publishConfigurationFailure(lane, drive, expected, configurationError(expected.configuration.model));\n\t}\n\n\tconst intent = await publishPollIntent(lane, drive, expected, prepared, recovery);\n\tif (intent.kind === \"cancel_requested\") return { kind: \"continue\" };\n\tconst response = await performDeferredPoll(lane, drive, prepared, intent.value, recovery);\n\treturn publishResponse(lane, drive, intent.value, response, recovery ? { recovery: true } : {});\n}\n\n/** Poll one durably suspended deferred response when this pass carries a permit. */\nexport function runDeferredSuspended<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tdeferred: DeferredSuspendedOperation,\n): Promise<ProcedureResult> {\n\treturn pollDeferred(lane, drive, deferred, false);\n}\n\n/** Replace one orphaned unknown-outcome poll under fresh ids when this pass carries a permit. */\nexport function recoverDeferredPoll<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tdeferred: DeferredEffectPendingOperation,\n): Promise<ProcedureResult> {\n\treturn pollDeferred(lane, drive, deferred, true);\n}\n\n/** Advance or report the wait for one deferred run phase. */\nexport function runDeferred<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tdeferred: DeferredSuspendedOperation | DeferredEffectPendingOperation,\n): Promise<ProcedureResult> {\n\treturn deferred.at === \"deferred.suspended\"\n\t\t? runDeferredSuspended(lane, drive, deferred)\n\t\t: recoverDeferredPoll(lane, drive, deferred);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generation.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/generation.ts"],"names":[],"mappings":"AAMA,OAAO,EAEN,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAMhC,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAA2B,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAqNnF,2FAA2F;AAC3F,wBAAsB,YAAY,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACrE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,2BAA2B,GACrC,OAAO,CAAC,eAAe,CAAC,CA4C1B;AAED,gFAAgF;AAChF,wBAAsB,aAAa,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACtE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,uBAAuB,GAAG,2BAA2B,GAC/D,OAAO,CAAC,eAAe,CAAC,CAa1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"generation.js","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/generation.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Api, Model, Tool } from \"@earendil-works/pi-ai\";\nimport type { AgentMessage } from \"../../../types.ts\";\nimport { type Context, getTelemetryContext, withAbortSignal } from \"../../context.ts\";\nimport { type HarnessAssistantStreamConfig, streamHarnessAssistant } from \"../../execution/assistant.ts\";\nimport { applyStreamOptionsPatch } from \"../../hooks.ts\";\nimport { SessionInvariantError } from \"../../session/session.ts\";\nimport {\n\ttype AssistantEffectPendingOperation,\n\ttype AssistantReadyOperation,\n\ttype AssistantRetryWaitOperation,\n\ttype JsonValue,\n\ttype OperationError,\n\ttype OperationScope,\n\toperationScopeOf,\n\ttype SettledAssistantMessage,\n} from \"../../session/types.ts\";\nimport type { AgentHarnessStreamOptions } from \"../../types.ts\";\nimport type { Lane } from \"../lane.ts\";\nimport { readBoundedContext } from \"../transcript.ts\";\nimport type { ContinueOperationResult, Drive, ProcedureResult } from \"../types.ts\";\nimport { openAssistantResponse, publishConfigurationFailure, publishResponse } from \"./response.ts\";\nimport { waitUntil } from \"./retry.ts\";\n\n/** Assistant effect-pending payload without the run-wide scope fields. */\ntype AssistantEffectPending = Omit<AssistantEffectPendingOperation, keyof OperationScope>;\n\ntype PreparedGeneration = {\n\tkind: \"ready\";\n\tmodel: Model<Api>;\n\ttools: Tool[];\n\tmessages: AgentMessage[];\n\tsystemPrompt: string;\n\tstreamOptions: AgentHarnessStreamOptions;\n\ttoProviderMessages: HarnessAssistantStreamConfig[\"toProviderMessages\"];\n};\n\ntype GenerationPreparation =\n\t| PreparedGeneration\n\t| { kind: \"configuration_failure\"; error: OperationError }\n\t| { kind: \"cancel_requested\" };\n\nfunction configurationError(\n\tcode: \"model_unavailable\" | \"configured_tools_unavailable\",\n\tdetails: JsonValue,\n): OperationError {\n\treturn {\n\t\tcode,\n\t\tmessage:\n\t\t\tcode === \"model_unavailable\"\n\t\t\t\t? \"The configured model is unavailable in this process\"\n\t\t\t\t: \"One or more configured tools are unavailable in this process\",\n\t\tdetails,\n\t};\n}\n\nasync function resolveSystemPrompt<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tcontext: Context,\n): Promise<string> {\n\tconst config = lane.readConfig();\n\tif (config.systemPrompt === undefined) return \"\";\n\tif (typeof config.systemPrompt === \"string\") return config.systemPrompt;\n\tconst source = config.toolContext;\n\tconst toolContext = typeof source === \"function\" ? await source(context) : source;\n\treturn config.systemPrompt(toolContext as TContext, context);\n}\n\nasync function prepareGeneration<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tgeneration: AssistantReadyOperation,\n): Promise<GenerationPreparation> {\n\tconst identity = generation.generationContext.configuration.model;\n\tconst model = lane.models.getModel(identity.provider, identity.modelId);\n\tif (model === undefined) {\n\t\treturn { kind: \"configuration_failure\", error: configurationError(\"model_unavailable\", identity) };\n\t}\n\n\tconst config = lane.readConfig();\n\tconst toolsByName = new Map(config.tools.map((tool) => [tool.name, tool]));\n\tconst missingTools = generation.generationContext.configuration.activeToolNames.filter(\n\t\t(name) => !toolsByName.has(name),\n\t);\n\tif (missingTools.length !== 0) {\n\t\treturn {\n\t\t\tkind: \"configuration_failure\",\n\t\t\terror: configurationError(\"configured_tools_unavailable\", { tools: missingTools }),\n\t\t};\n\t}\n\tconst tools: Tool[] = generation.generationContext.configuration.activeToolNames.map((name) => {\n\t\tconst tool = toolsByName.get(name);\n\t\tif (tool === undefined) throw new SessionInvariantError(`Configured tool ${name} disappeared during resolution`);\n\t\treturn {\n\t\t\tname: tool.name,\n\t\t\tdescription: tool.description,\n\t\t\tparameters: tool.parameters,\n\t\t\t...(tool.constrainedSampling === undefined ? {} : { constrainedSampling: tool.constrainedSampling }),\n\t\t};\n\t});\n\n\tconst messages = await readBoundedContext(lane, drive, generation);\n\tif (messages.kind === \"cancel_requested\") return messages;\n\tconst systemPrompt = await resolveSystemPrompt(lane, drive.context);\n\tconst beforeRequest = await lane.hooks.runWithGate(\n\t\t\"before_request\",\n\t\t{\n\t\t\tlane: lane.name,\n\t\t\trunId: drive.operationId,\n\t\t\tmodel,\n\t\t\tstep: \"assistant\",\n\t\t\tattempt: generation.nextAttempt,\n\t\t\tstreamOptions: generation.generationContext.streamOptions,\n\t\t},\n\t\tdrive.gate,\n\t\tdrive.context,\n\t);\n\tconst streamOptions =\n\t\tbeforeRequest?.streamOptions === undefined\n\t\t\t? generation.generationContext.streamOptions\n\t\t\t: applyStreamOptionsPatch(generation.generationContext.streamOptions, beforeRequest.streamOptions);\n\treturn {\n\t\tkind: \"ready\",\n\t\tmodel,\n\t\ttools,\n\t\tmessages: messages.value,\n\t\tsystemPrompt,\n\t\tstreamOptions,\n\t\ttoProviderMessages: config.toProviderMessages,\n\t};\n}\n\nasync function publishGenerationIntent<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tready: AssistantReadyOperation,\n\tprepared: PreparedGeneration,\n): Promise<ContinueOperationResult<AssistantEffectPendingOperation>> {\n\tconst at = Date.now();\n\tconst pending: AssistantEffectPending = {\n\t\tat: \"assistant.effect_pending\",\n\t\tgenerationContext: ready.generationContext,\n\t\tattempt: ready.nextAttempt,\n\t\tresponseEntryId: lane.session.idGenerator.next(at),\n\t\tusageId: lane.session.idGenerator.next(at),\n\t\tintendedOutputLimit: prepared.model.maxTokens,\n\t\tcontextWindow: prepared.model.contextWindow,\n\t};\n\treturn lane.continueOperation(\n\t\tready,\n\t\t(_state, current) => {\n\t\t\tconst nextState: AssistantEffectPendingOperation = { ...operationScopeOf(current), ...pending };\n\t\t\treturn {\n\t\t\t\tkind: \"commit\",\n\t\t\t\twrites: [],\n\t\t\t\toperationState: nextState,\n\t\t\t\tmaterialize: () => nextState,\n\t\t\t\tevents: () =>\n\t\t\t\t\tready.nextAttempt === 1\n\t\t\t\t\t\t? [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\ttype: \"turn_start\",\n\t\t\t\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\t\t\t\tturnId: ready.generationContext.stepId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t: [],\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n}\n\nasync function performGeneration<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tintent: AssistantEffectPendingOperation,\n\tprepared: PreparedGeneration,\n): Promise<SettledAssistantMessage> {\n\tconst response = openAssistantResponse(lane, drive, intent.responseEntryId);\n\ttry {\n\t\treturn await streamHarnessAssistant(\n\t\t\tprepared.messages,\n\t\t\t{\n\t\t\t\tmodel: prepared.model,\n\t\t\t\tsystemPrompt: prepared.systemPrompt,\n\t\t\t\ttools: prepared.tools,\n\t\t\t\tthinkingLevel: intent.generationContext.configuration.thinkingLevel,\n\t\t\t\tstreamOptions: prepared.streamOptions,\n\t\t\t\ttransformContext: async (requestContext, context) => {\n\t\t\t\t\tconst result = await lane.hooks.runWithGate(\n\t\t\t\t\t\t\"transform_context\",\n\t\t\t\t\t\t{ lane: lane.name, runId: drive.operationId, ...requestContext },\n\t\t\t\t\t\tdrive.gate,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\t\t\t\t\treturn {\n\t\t\t\t\t\tmessages: result?.messages ?? requestContext.messages,\n\t\t\t\t\t\tsystemPrompt: result?.systemPrompt ?? requestContext.systemPrompt,\n\t\t\t\t\t};\n\t\t\t\t},\n\t\t\t\ttoProviderMessages: prepared.toProviderMessages,\n\t\t\t\tbeforePayload: async (payload, requestModel, context) => {\n\t\t\t\t\tconst result = await lane.hooks.runWithGate(\n\t\t\t\t\t\t\"before_payload\",\n\t\t\t\t\t\t{ lane: lane.name, runId: drive.operationId, model: requestModel, payload },\n\t\t\t\t\t\tdrive.gate,\n\t\t\t\t\t\tcontext,\n\t\t\t\t\t);\n\t\t\t\t\treturn result?.payload;\n\t\t\t\t},\n\t\t\t\tafterResponse: response.afterResponse,\n\t\t\t\trequest: (aiContext, options, context) => {\n\t\t\t\t\tconst admitted = withAbortSignal(drive.gate.signal, context);\n\t\t\t\t\treturn drive.gate.admit(() =>\n\t\t\t\t\t\tlane.models.streamSimple(prepared.model, aiContext, {\n\t\t\t\t\t\t\t...options,\n\t\t\t\t\t\t\tsessionId: `${lane.session.metadata.id}:${lane.name}`,\n\t\t\t\t\t\t\tsignal: admitted.abortSignal,\n\t\t\t\t\t\t\ttelemetryContext: getTelemetryContext(admitted),\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t},\n\t\t\t\tobserver: response.observer,\n\t\t\t},\n\t\t\tdrive.context,\n\t\t);\n\t} finally {\n\t\tawait response.close();\n\t}\n}\n\n/** Advance one durable assistant retry wait according to this pass's local wait policy. */\nexport async function runRetryWait<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tgeneration: AssistantRetryWaitOperation,\n): Promise<ProcedureResult> {\n\tif (Date.now() < generation.notBefore) {\n\t\tif (!drive.waitForRetry) {\n\t\t\treturn {\n\t\t\t\tkind: \"waiting\",\n\t\t\t\toutcome: {\n\t\t\t\t\tkind: \"waiting\",\n\t\t\t\t\toperationId: drive.operationId,\n\t\t\t\t\treason: \"retry\",\n\t\t\t\t\tnotBefore: generation.notBefore,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t\tawait drive.gate.admit(() => waitUntil(generation.notBefore, drive.gate.signal));\n\t}\n\n\tconst result = await lane.continueOperation(\n\t\tgeneration,\n\t\t(_state, current) => {\n\t\t\tconst nextState: AssistantReadyOperation = {\n\t\t\t\t...operationScopeOf(current),\n\t\t\t\tat: \"assistant.ready\",\n\t\t\t\tgenerationContext: generation.generationContext,\n\t\t\t\tnextAttempt: generation.nextAttempt,\n\t\t\t};\n\t\t\treturn {\n\t\t\t\tkind: \"commit\",\n\t\t\t\twrites: [],\n\t\t\t\toperationState: nextState,\n\t\t\t\tmaterialize: () => ({ kind: \"continue\" }) as const,\n\t\t\t\tevents: () => [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"retry_start\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\tstep: generation.generationContext.stepId,\n\t\t\t\t\t\tattempt: generation.nextAttempt,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n\treturn result.kind === \"cancel_requested\" ? { kind: \"continue\" } : result.value;\n}\n\n/** Execute one ready assistant generation or advance its durable retry wait. */\nexport async function runGeneration<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tgeneration: AssistantReadyOperation | AssistantRetryWaitOperation,\n): Promise<ProcedureResult> {\n\tif (generation.at === \"assistant.retry_wait\") return runRetryWait(lane, drive, generation);\n\n\tconst prepared = await prepareGeneration(lane, drive, generation);\n\tif (prepared.kind === \"configuration_failure\") {\n\t\treturn publishConfigurationFailure(lane, drive, generation, prepared.error);\n\t}\n\tif (prepared.kind === \"cancel_requested\") return { kind: \"continue\" };\n\n\tconst intent = await publishGenerationIntent(lane, drive, generation, prepared);\n\tif (intent.kind === \"cancel_requested\") return { kind: \"continue\" };\n\tconst response = await performGeneration(lane, drive, intent.value, prepared);\n\treturn publishResponse(lane, drive, intent.value, response);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/reconcile.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAwH1D,6EAA6E;AAC7E,wBAAsB,kBAAkB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAC3E,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,GACV,OAAO,CAAC,eAAe,CAAC,CAsC1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/reconcile.ts"],"names":[],"mappings":"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","sourcesContent":["import type { DeferredHandle } from \"@earendil-works/pi-ai\";\nimport type { HarnessEvent } from \"../../agent-harness.ts\";\nimport { getTelemetryContext } from \"../../context.ts\";\nimport { SessionInvariantError } from \"../../session/session.ts\";\nimport type {\n\tDeferredEffectPendingOperation,\n\tDeferredSuspendedOperation,\n\tOperationState,\n} from \"../../session/types.ts\";\nimport type { Lane } from \"../lane.ts\";\nimport type { Drive, ProcedureResult } from \"../types.ts\";\nimport { readDeferredSourceHandle } from \"./deferred.ts\";\nimport { recoverCancelledAssistantEffect } from \"./recovery.ts\";\nimport { operationCleanupWrites, operationResultRecord } from \"./terminal.ts\";\nimport { runTools } from \"./tools.ts\";\n\nasync function cancelDeferredBestEffort<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tdeferred: DeferredSuspendedOperation | DeferredEffectPendingOperation,\n\thandle: DeferredHandle,\n): Promise<void> {\n\tconst identity = deferred.configuration.model;\n\tconst model = lane.models.getModel(identity.provider, identity.modelId);\n\tif (model === undefined) return;\n\ttry {\n\t\tawait lane.models.cancelDeferred(model, handle, {\n\t\t\tsignal: drive.closeSignal,\n\t\t\ttelemetryContext: getTelemetryContext(drive.context),\n\t\t\ttimeoutMs: deferred.streamOptions.timeoutMs,\n\t\t\tmaxRetries: deferred.streamOptions.maxRetries,\n\t\t\tmaxRetryDelayMs: deferred.streamOptions.maxRetryDelayMs,\n\t\t\theaders: deferred.streamOptions.headers,\n\t\t});\n\t} catch {\n\t\t// Remote cancellation is best-effort; durable local reconciliation must continue.\n\t}\n}\n\nasync function readDeferredHandle<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tdeferred: DeferredSuspendedOperation | DeferredEffectPendingOperation,\n): Promise<DeferredHandle> {\n\treturn lane.settleOperation(\n\t\tdeferred,\n\t\tasync (_state, _current, _meta, reader) => ({\n\t\t\tkind: \"return\",\n\t\t\tresult: await readDeferredSourceHandle(reader, deferred, drive.context),\n\t\t}),\n\t\tdrive.context,\n\t);\n}\n\nasync function publishAbortedTerminal<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tcapability: OperationState,\n): Promise<ProcedureResult> {\n\treturn lane.settleOperation(\n\t\tcapability,\n\t\tasync (state, current, meta, reader) => {\n\t\t\tif (current.control.status !== \"cancel_requested\") {\n\t\t\t\tthrow new SessionInvariantError(\"Cancellation reconciliation requires cancelled durable control\");\n\t\t\t}\n\t\t\tconst record = operationResultRecord(meta, \"aborted\", state.tipId);\n\t\t\tconst cleanup = await operationCleanupWrites(reader, drive.operationId, current, drive.context);\n\t\t\tconst events: HarnessEvent[] = [];\n\t\t\tif (meta.intent.kind === \"run\") {\n\t\t\t\tswitch (current.at) {\n\t\t\t\t\tcase \"summary.deciding\":\n\t\t\t\t\tcase \"summary.ready\":\n\t\t\t\t\tcase \"summary.effect_pending\":\n\t\t\t\t\tcase \"summary.retry_wait\":\n\t\t\t\t\t\tif (current.task.boundary.kind !== \"resume_checkpoint\" || current.task.reason === undefined) {\n\t\t\t\t\t\t\tthrow new SessionInvariantError(\"Cancelled run summary has an invalid result boundary\");\n\t\t\t\t\t\t}\n\t\t\t\t\t\tevents.push({\n\t\t\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\t\treason: current.task.reason,\n\t\t\t\t\t\t\tstatus: \"aborted\",\n\t\t\t\t\t\t\tendedAt: record.endedAt,\n\t\t\t\t\t\t});\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tevents.push({\n\t\t\t\t\ttype: \"run_end\",\n\t\t\t\t\tlane: lane.name,\n\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\tstatus: \"aborted\",\n\t\t\t\t\tfromTipId: meta.sourceTipId,\n\t\t\t\t\ttipId: state.tipId,\n\t\t\t\t\tendedAt: record.endedAt,\n\t\t\t\t});\n\t\t\t} else if (meta.intent.kind === \"compaction\") {\n\t\t\t\tevents.push({\n\t\t\t\t\ttype: \"compaction_end\",\n\t\t\t\t\tlane: lane.name,\n\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\treason: \"manual\",\n\t\t\t\t\tstatus: \"aborted\",\n\t\t\t\t\tendedAt: record.endedAt,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tevents.push({\n\t\t\t\t\ttype: \"navigation_end\",\n\t\t\t\t\tlane: lane.name,\n\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\tstatus: \"aborted\",\n\t\t\t\t\tfromTipId: meta.sourceTipId,\n\t\t\t\t\ttipId: state.tipId,\n\t\t\t\t\tendedAt: record.endedAt,\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tkind: \"finish\",\n\t\t\t\twrites: cleanup,\n\t\t\t\trecord,\n\t\t\t\tmaterialize: () => ({ kind: \"settled\", outcome: record }) as const,\n\t\t\t\tevents: () => events,\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n}\n\n/** Advance one cancelled durable leaf without starting new ordinary work. */\nexport async function reconcileOperation<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n): Promise<ProcedureResult> {\n\tconst operation = lane.state.operation;\n\tif (operation === null || operation.meta.operationId !== drive.operationId) {\n\t\tthrow new SessionInvariantError(`Drive ${drive.operationId} has no matching operation to reconcile`);\n\t}\n\tif (operation.state.control.status !== \"cancel_requested\") {\n\t\tthrow new SessionInvariantError(`Operation ${drive.operationId} is not cancelled`);\n\t}\n\tdrive.beginAbort(Promise.resolve());\n\tdrive.signalAbort();\n\n\tconst state = operation.state;\n\tswitch (state.at) {\n\t\tcase \"assistant.effect_pending\":\n\t\t\treturn recoverCancelledAssistantEffect(lane, drive, state);\n\t\tcase \"tools\":\n\t\t\treturn runTools(lane, drive, state);\n\t\tcase \"deferred.suspended\": {\n\t\t\tconst handle = await readDeferredHandle(lane, drive, state);\n\t\t\tawait cancelDeferredBestEffort(lane, drive, state, handle);\n\t\t\treturn publishAbortedTerminal(lane, drive, state);\n\t\t}\n\t\tcase \"deferred.effect_pending\": {\n\t\t\tconst handle = await readDeferredHandle(lane, drive, state);\n\t\t\tawait cancelDeferredBestEffort(lane, drive, state, handle);\n\t\t\treturn recoverCancelledAssistantEffect(lane, drive, state);\n\t\t}\n\t\tcase \"starting\":\n\t\tcase \"checkpoint\":\n\t\tcase \"assistant.ready\":\n\t\tcase \"assistant.retry_wait\":\n\t\tcase \"summary.deciding\":\n\t\tcase \"summary.ready\":\n\t\tcase \"summary.effect_pending\":\n\t\tcase \"summary.retry_wait\":\n\t\tcase \"navigation.ready_to_commit\":\n\t\t\treturn publishAbortedTerminal(lane, drive, state);\n\t}\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/recovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,+BAA+B,EAC/B,8BAA8B,EAG9B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAiC1D,kHAAkH;AAClH,wBAAsB,0BAA0B,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACnF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,+BAA+B,GACzC,OAAO,CAAC,eAAe,CAAC,CAoC1B;AAED,uGAAuG;AACvG,wBAAsB,+BAA+B,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACxF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,+BAA+B,GAAG,8BAA8B,GACtE,OAAO,CAAC,eAAe,CAAC,CAmC1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/recovery.ts"],"names":[],"mappings":"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","sourcesContent":["import { type AssistantMessage, reduceAssistantMessageFrames } from \"@earendil-works/pi-ai\";\nimport type {\n\tAssistantEffectPendingOperation,\n\tDeferredEffectPendingOperation,\n\tLaneConfiguration,\n\tSettledAssistantMessage,\n} from \"../../session/types.ts\";\nimport type { Lane } from \"../lane.ts\";\nimport { readAssistantFrames } from \"../progress.ts\";\nimport type { Drive, ProcedureResult } from \"../types.ts\";\nimport { publishResponse } from \"./response.ts\";\n\nconst ZERO_USAGE = {\n\tinput: 0,\n\toutput: 0,\n\tcacheRead: 0,\n\tcacheWrite: 0,\n\ttotalTokens: 0,\n\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },\n};\n\nfunction interruptedAssistantMessage(\n\tidentity: LaneConfiguration[\"model\"],\n\tpartial: AssistantMessage | undefined,\n): SettledAssistantMessage {\n\tconst warning =\n\t\t\"Assistant request was interrupted. The preceding content is the latest committed partial; newer live output may be missing and the external outcome is unknown.\";\n\treturn partial === undefined\n\t\t? {\n\t\t\t\trole: \"assistant\",\n\t\t\t\tcontent: [],\n\t\t\t\tapi: \"unknown\",\n\t\t\t\tprovider: identity.provider,\n\t\t\t\tmodel: identity.modelId,\n\t\t\t\tusage: ZERO_USAGE,\n\t\t\t\tstopReason: \"error\",\n\t\t\t\terrorMessage: warning,\n\t\t\t\ttimestamp: Date.now(),\n\t\t\t}\n\t\t: { ...partial, usage: ZERO_USAGE, stopReason: \"error\", errorMessage: warning };\n}\n\n/** Settle an orphaned assistant request from its bounded committed frame prefix without another provider call. */\nexport async function recoverAssistantGeneration<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tgeneration: AssistantEffectPendingOperation,\n): Promise<ProcedureResult> {\n\tconst frames = await lane.continueOperation(\n\t\tgeneration,\n\t\tasync (_state, _current, _meta, reader) => ({\n\t\t\tkind: \"return\",\n\t\t\tresult: await readAssistantFrames(reader, drive.operationId, generation.responseEntryId, drive.context),\n\t\t}),\n\t\tdrive.context,\n\t);\n\tif (frames.kind === \"cancel_requested\") return { kind: \"continue\" };\n\n\tconst message = interruptedAssistantMessage(\n\t\tgeneration.generationContext.configuration.model,\n\t\treduceAssistantMessageFrames(frames.value),\n\t);\n\tawait lane.emitBatch(\n\t\t[\n\t\t\t{\n\t\t\t\ttype: \"message_start\",\n\t\t\t\tlane: lane.name,\n\t\t\t\trunId: drive.operationId,\n\t\t\t\tmessage,\n\t\t\t\trecovery: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"message_end\",\n\t\t\t\tlane: lane.name,\n\t\t\t\trunId: drive.operationId,\n\t\t\t\tmessage,\n\t\t\t\tentryId: generation.responseEntryId,\n\t\t\t\trecovery: true,\n\t\t\t},\n\t\t],\n\t\tdrive.context,\n\t);\n\treturn publishResponse(lane, drive, generation, message, { recovery: true });\n}\n\n/** Synthetically settle one cancelled orphaned assistant or deferred effect under its reserved ids. */\nexport async function recoverCancelledAssistantEffect<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\teffect: AssistantEffectPendingOperation | DeferredEffectPendingOperation,\n): Promise<ProcedureResult> {\n\tconst frames = await lane.settleOperation(\n\t\teffect,\n\t\tasync (_state, _current, _meta, reader) => ({\n\t\t\tkind: \"return\",\n\t\t\tresult: await readAssistantFrames(reader, drive.operationId, effect.responseEntryId, drive.context),\n\t\t}),\n\t\tdrive.context,\n\t);\n\tconst identity =\n\t\teffect.at === \"assistant.effect_pending\"\n\t\t\t? effect.generationContext.configuration.model\n\t\t\t: effect.configuration.model;\n\tconst message = interruptedAssistantMessage(identity, reduceAssistantMessageFrames(frames));\n\tawait lane.emitBatch(\n\t\t[\n\t\t\t{\n\t\t\t\ttype: \"message_start\",\n\t\t\t\tlane: lane.name,\n\t\t\t\trunId: drive.operationId,\n\t\t\t\tmessage,\n\t\t\t\trecovery: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\ttype: \"message_end\",\n\t\t\t\tlane: lane.name,\n\t\t\t\trunId: drive.operationId,\n\t\t\t\tmessage,\n\t\t\t\tentryId: effect.responseEntryId,\n\t\t\t\trecovery: true,\n\t\t\t},\n\t\t],\n\t\tdrive.context,\n\t);\n\treturn publishResponse(lane, drive, effect, message, { recovery: true });\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/response.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvG,OAAO,EACN,KAAK,+BAA+B,EAEpC,KAAK,8BAA8B,EAGnC,KAAK,cAAc,EACnB,KAAK,cAAc,EAEnB,KAAK,uBAAuB,EAI5B,MAAM,wBAAwB,CAAC;AAEhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAK1D,MAAM,MAAM,0BAA0B,GAAG;IACxC,QAAQ,EAAE,uBAAuB,CAAC;IAClC,aAAa,CACZ,OAAO,EAAE,uBAAuB,EAChC,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,OAAO,GACd,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACxE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,eAAe,EAAE,MAAM,EACvB,QAAQ,UAAQ,GACd,0BAA0B,CA8C5B;AAED,KAAK,cAAc,GAAG,+BAA+B,GAAG,8BAA8B,CAAC;AACvF,KAAK,yBAAyB,GAAG,OAAO,CACvC,cAAc,EACd;IAAE,EAAE,EAAE,iBAAiB,GAAG,sBAAsB,GAAG,oBAAoB,GAAG,yBAAyB,CAAA;CAAE,CACrG,CAAC;AAEF,2FAA2F;AAC3F,wBAAsB,2BAA2B,CAChD,QAAQ,SAAS,MAAM,GAAG,SAAS,EACnC,MAAM,SAAS,yBAAyB,EACvC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA6BzG;AA2CD,yFAAyF;AACzF,wBAAsB,eAAe,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACxE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,cAAc,EACtB,QAAQ,EAAE,uBAAuB,EACjC,OAAO,GAAE;IAAE,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAO,GAC/B,OAAO,CAAC,eAAe,CAAC,CAyS1B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/response.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n\ttype AssistantMessageEvent,\n\tAssistantMessageFrameEncoder,\n\tisContextOverflow,\n\tisRecoverableLength,\n\tisRetryableAssistantError,\n\tretryDelayMs,\n} from \"@earendil-works/pi-ai\";\nimport type { HarnessEvent } from \"../../agent-harness.ts\";\nimport type { Context } from \"../../context.ts\";\nimport type { AssistantResponseMetadata, AssistantStreamObserver } from \"../../execution/assistant.ts\";\nimport { insertEntry, insertUsage } from \"../../session/commit.ts\";\nimport { SessionInvariantError } from \"../../session/session.ts\";\nimport {\n\ttype AssistantEffectPendingOperation,\n\ttype CommitResult,\n\ttype DeferredEffectPendingOperation,\n\ttype MessageEntry,\n\ttype NewEntry,\n\ttype OperationError,\n\ttype OperationState,\n\toperationScopeOf,\n\ttype SettledAssistantMessage,\n\ttype SummaryDecidingOperation,\n\ttype ToolCall,\n\ttype UsageRow,\n} from \"../../session/types.ts\";\nimport { branchTip, deleteList, operationPreparation, pendingAssistantFrames, setValue } from \"../../session/values.ts\";\nimport type { Lane } from \"../lane.ts\";\nimport { openFrameProgress } from \"../progress.ts\";\nimport type { Drive, ProcedureResult } from \"../types.ts\";\nimport { retryNotBefore } from \"./retry.ts\";\nimport { prepareOverflowCompaction } from \"./structural.ts\";\nimport { operationCleanupWrites, operationResultRecord } from \"./terminal.ts\";\n\nexport type AssistantResponseLifecycle = {\n\tobserver: AssistantStreamObserver;\n\tafterResponse(\n\t\tmessage: SettledAssistantMessage,\n\t\tmetadata: AssistantResponseMetadata,\n\t\tcontext: Context,\n\t): Promise<SettledAssistantMessage>;\n\tclose(): Promise<void>;\n};\n\nexport function openAssistantResponse<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tresponseEntryId: string,\n\trecovery = false,\n): AssistantResponseLifecycle {\n\tconst progress = openFrameProgress(lane, drive, responseEntryId);\n\tconst frameEncoder = new AssistantMessageFrameEncoder();\n\tconst eventContext = {\n\t\tlane: lane.name,\n\t\trunId: drive.operationId,\n\t\t...(recovery ? { recovery: true as const } : {}),\n\t};\n\tconst close = async () => {\n\t\tprogress.seal();\n\t\tawait progress.drain();\n\t};\n\treturn {\n\t\tobserver: {\n\t\t\tstart(message, event, context) {\n\t\t\t\tconst frame = frameEncoder.encode(event);\n\t\t\t\tif (frame !== undefined) progress.write(frame);\n\t\t\t\treturn lane.emitBatch([{ type: \"message_start\", ...eventContext, message }], context);\n\t\t\t},\n\t\t\tupdate(message, event: AssistantMessageEvent, context) {\n\t\t\t\tconst frame = frameEncoder.encode(event);\n\t\t\t\tif (frame !== undefined) progress.write(frame);\n\t\t\t\treturn lane.emitBatch(\n\t\t\t\t\t[{ type: \"message_update\", ...eventContext, message, event, ...(frame === undefined ? {} : { frame }) }],\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t},\n\t\t\tend(message, context) {\n\t\t\t\treturn lane.emitBatch(\n\t\t\t\t\t[{ type: \"message_end\", ...eventContext, message, entryId: responseEntryId }],\n\t\t\t\t\tcontext,\n\t\t\t\t);\n\t\t\t},\n\t\t},\n\t\tasync afterResponse(message, metadata, context) {\n\t\t\tawait close();\n\t\t\tconst result = await lane.hooks.runWithGate(\n\t\t\t\t\"after_response\",\n\t\t\t\t{ lane: lane.name, runId: drive.operationId, ...metadata, message },\n\t\t\t\tdrive.gate,\n\t\t\t\tcontext,\n\t\t\t);\n\t\t\treturn result?.message ?? message;\n\t\t},\n\t\tclose,\n\t};\n}\n\ntype ResponseIntent = AssistantEffectPendingOperation | DeferredEffectPendingOperation;\ntype ConfigurationFailureState = Extract<\n\tOperationState,\n\t{ at: \"assistant.ready\" | \"assistant.retry_wait\" | \"deferred.suspended\" | \"deferred.effect_pending\" }\n>;\n\n/** Publish a non-retryable request-configuration failure before reserving response ids. */\nexport async function publishConfigurationFailure<\n\tTContext extends object | undefined,\n\tTState extends ConfigurationFailureState,\n>(lane: Lane<TContext>, drive: Drive, capability: TState, error: OperationError): Promise<ProcedureResult> {\n\tconst result = await lane.continueOperation(\n\t\tcapability,\n\t\tasync (state, current, meta, reader) => {\n\t\t\tif (state.tipId === null) throw new SessionInvariantError(\"Failed run has no Branch tip\");\n\t\t\tconst record = operationResultRecord(meta, \"failed\", state.tipId, error);\n\t\t\tconst cleanup = await operationCleanupWrites(reader, drive.operationId, current, drive.context);\n\t\t\treturn {\n\t\t\t\tkind: \"finish\",\n\t\t\t\twrites: cleanup,\n\t\t\t\trecord,\n\t\t\t\tmaterialize: () => ({ kind: \"settled\", outcome: record }) as const,\n\t\t\t\tevents: () => [\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"run_end\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\t\terror,\n\t\t\t\t\t\tfromTipId: meta.sourceTipId,\n\t\t\t\t\t\ttipId: state.tipId,\n\t\t\t\t\t\tendedAt: record.endedAt,\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n\treturn result.kind === \"cancel_requested\" ? { kind: \"continue\" } : result.value;\n}\n\nfunction uuidV7Timestamp(id: string): number {\n\tconst timestamp = Number.parseInt(id.slice(0, 8) + id.slice(9, 13), 16);\n\tif (!Number.isSafeInteger(timestamp)) throw new SessionInvariantError(`Invalid reserved UUIDv7 ${id}`);\n\treturn timestamp;\n}\n\nfunction providerError(source: \"assistant\" | \"deferred\", message: SettledAssistantMessage): OperationError {\n\treturn {\n\t\tcode: \"assistant_error\",\n\t\tmessage:\n\t\t\tmessage.errorMessage ??\n\t\t\t`${source === \"assistant\" ? \"Assistant\" : \"Deferred\"} request ended with ${message.stopReason}`,\n\t};\n}\n\nfunction normalizeError(message: SettledAssistantMessage, errorMessage: string): SettledAssistantMessage {\n\treturn { ...message, stopReason: \"error\", errorMessage };\n}\n\nfunction normalizeAborted(source: \"assistant\" | \"deferred\", message: SettledAssistantMessage): SettledAssistantMessage {\n\treturn {\n\t\t...message,\n\t\tstopReason: \"aborted\",\n\t\terrorMessage:\n\t\t\tmessage.errorMessage ?? `${source === \"assistant\" ? \"Assistant\" : \"Deferred\"} request was cancelled`,\n\t};\n}\n\nfunction deferredHandleIsValid(message: SettledAssistantMessage, generation: AssistantEffectPendingOperation): boolean {\n\tconst handle = message.deferred;\n\tconst identity = generation.generationContext.configuration.model;\n\treturn (\n\t\tmessage.stopReason === \"deferred\" &&\n\t\thandle !== undefined &&\n\t\thandle.id.length !== 0 &&\n\t\thandle.provider === identity.provider &&\n\t\thandle.modelId === identity.modelId &&\n\t\thandle.api === message.api\n\t);\n}\n\n/** Classify and atomically settle one assistant-generation or deferred-poll response. */\nexport async function publishResponse<TContext extends object | undefined>(\n\tlane: Lane<TContext>,\n\tdrive: Drive,\n\tintent: ResponseIntent,\n\tresponse: SettledAssistantMessage,\n\toptions: { recovery?: true } = {},\n): Promise<ProcedureResult> {\n\tconst overflow =\n\t\tintent.at === \"assistant.effect_pending\" &&\n\t\t(isContextOverflow(response, intent.contextWindow) || isRecoverableLength(response, intent.intendedOutputLimit));\n\tconst overflowPreparation =\n\t\toverflow && !intent.generationContext.overflowRecoveryUsed\n\t\t\t? await prepareOverflowCompaction(lane, drive, intent)\n\t\t\t: undefined;\n\treturn lane.settleOperation<ResponseIntent, ProcedureResult>(\n\t\tintent,\n\t\tasync (state, current, meta, reader) => {\n\t\t\tconst source = current.at === \"assistant.effect_pending\" ? \"assistant\" : \"deferred\";\n\t\t\tconst responseEntryId = intent.responseEntryId;\n\t\t\tconst configuration =\n\t\t\t\tcurrent.at === \"assistant.effect_pending\" ? current.generationContext.configuration : current.configuration;\n\t\t\tconst turnId =\n\t\t\t\tcurrent.at === \"assistant.effect_pending\"\n\t\t\t\t\t? current.generationContext.stepId\n\t\t\t\t\t: `${current.stepId}:poll:${current.poll}`;\n\t\t\tconst scope = { ...operationScopeOf(current), latestAssistantEntryId: responseEntryId };\n\t\t\tlet committed = response;\n\t\t\tlet settled: OperationState | undefined;\n\t\t\tlet failure: OperationError | undefined;\n\n\t\t\tif (current.control.status === \"cancel_requested\") {\n\t\t\t\tcommitted = normalizeAborted(source, response);\n\t\t\t\tsettled = {\n\t\t\t\t\t...scope,\n\t\t\t\t\tat: \"checkpoint\",\n\t\t\t\t\tcontinuation: { kind: \"may_finish\", includeFinalAssistant: true },\n\t\t\t\t\ttriggerEntryId: responseEntryId,\n\t\t\t\t};\n\t\t\t} else if (response.stopReason === \"aborted\") {\n\t\t\t\tthrow new SessionInvariantError(\n\t\t\t\t\t`${source === \"assistant\" ? \"Assistant\" : \"Deferred\"} response is aborted while durable control is running`,\n\t\t\t\t);\n\t\t\t} else if (current.at === \"assistant.effect_pending\" && overflow) {\n\t\t\t\tcommitted = normalizeError(\n\t\t\t\t\tresponse,\n\t\t\t\t\tresponse.errorMessage ?? \"Assistant request exceeded the context window\",\n\t\t\t\t);\n\t\t\t\tif (current.generationContext.overflowRecoveryUsed || overflowPreparation === undefined) {\n\t\t\t\t\tfailure = providerError(source, committed);\n\t\t\t\t} else {\n\t\t\t\t\tconst structural: SummaryDecidingOperation = {\n\t\t\t\t\t\t...scope,\n\t\t\t\t\t\tat: \"summary.deciding\",\n\t\t\t\t\t\ttask: {\n\t\t\t\t\t\t\ttaskId: overflowPreparation.taskId,\n\t\t\t\t\t\t\treason: \"overflow\",\n\t\t\t\t\t\t\tboundary: {\n\t\t\t\t\t\t\t\tkind: \"resume_checkpoint\",\n\t\t\t\t\t\t\t\tresumeAfter: {\n\t\t\t\t\t\t\t\t\tcontinuation: { kind: \"need_assistant\", overflowRecoveryUsed: true },\n\t\t\t\t\t\t\t\t\ttriggerEntryId: current.generationContext.triggerEntryId,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t};\n\t\t\t\t\tsettled = structural;\n\t\t\t\t}\n\t\t\t} else if (response.stopReason === \"deferred\") {\n\t\t\t\tif (current.at === \"assistant.effect_pending\") {\n\t\t\t\t\tif (deferredHandleIsValid(response, current)) {\n\t\t\t\t\t\tsettled = {\n\t\t\t\t\t\t\t...scope,\n\t\t\t\t\t\t\tat: \"deferred.suspended\",\n\t\t\t\t\t\t\tstepId: current.generationContext.stepId,\n\t\t\t\t\t\t\tsourceEntryId: responseEntryId,\n\t\t\t\t\t\t\tpoll: 0,\n\t\t\t\t\t\t\tconfiguration,\n\t\t\t\t\t\t\tstreamOptions: current.generationContext.streamOptions,\n\t\t\t\t\t\t};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tcommitted = normalizeError(response, \"Provider returned an invalid deferred handle\");\n\t\t\t\t\t\tfailure = providerError(source, committed);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tsettled = {\n\t\t\t\t\t\t...scope,\n\t\t\t\t\t\tat: \"deferred.suspended\",\n\t\t\t\t\t\tstepId: current.stepId,\n\t\t\t\t\t\tsourceEntryId: responseEntryId,\n\t\t\t\t\t\tpoll: current.poll,\n\t\t\t\t\t\tconfiguration,\n\t\t\t\t\t\tstreamOptions: current.streamOptions,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t} else if (response.stopReason === \"error\") {\n\t\t\t\tif (\n\t\t\t\t\tcurrent.at === \"assistant.effect_pending\" &&\n\t\t\t\t\t(options.recovery === true || isRetryableAssistantError(response)) &&\n\t\t\t\t\tcurrent.attempt < current.generationContext.retryPolicy.maxAttempts\n\t\t\t\t) {\n\t\t\t\t\tsettled = {\n\t\t\t\t\t\t...scope,\n\t\t\t\t\t\tat: \"assistant.retry_wait\",\n\t\t\t\t\t\tgenerationContext: current.generationContext,\n\t\t\t\t\t\tnextAttempt: current.attempt + 1,\n\t\t\t\t\t\tnotBefore: retryNotBefore(current.generationContext.retryPolicy, current.attempt),\n\t\t\t\t\t\terrorMessage: response.errorMessage ?? \"Assistant request failed\",\n\t\t\t\t\t};\n\t\t\t\t} else {\n\t\t\t\t\tfailure = providerError(source, response);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tconst calls = response.content.flatMap((content, sourceIndex) =>\n\t\t\t\t\tcontent.type === \"toolCall\" ? [{ sourceIndex }] : [],\n\t\t\t\t);\n\t\t\t\tif (calls.length !== 0) {\n\t\t\t\t\tconst timestamp = uuidV7Timestamp(responseEntryId);\n\t\t\t\t\tconst planned: ToolCall[] = calls.map(({ sourceIndex }) => ({\n\t\t\t\t\t\tstatus: \"planned\",\n\t\t\t\t\t\tsourceIndex,\n\t\t\t\t\t\tresultEntryId: lane.session.idGenerator.next(timestamp),\n\t\t\t\t\t}));\n\t\t\t\t\tsettled = {\n\t\t\t\t\t\t...scope,\n\t\t\t\t\t\tat: \"tools\",\n\t\t\t\t\t\tbatch: { assistantEntryId: responseEntryId, configuration, turnId, calls: planned },\n\t\t\t\t\t};\n\t\t\t\t} else if (response.stopReason === \"toolUse\") {\n\t\t\t\t\tcommitted = normalizeError(response, \"Provider reported tool use without any tool calls\");\n\t\t\t\t\tfailure = providerError(source, committed);\n\t\t\t\t} else {\n\t\t\t\t\tsettled = {\n\t\t\t\t\t\t...scope,\n\t\t\t\t\t\tat: \"checkpoint\",\n\t\t\t\t\t\tcontinuation: { kind: \"may_finish\", includeFinalAssistant: true },\n\t\t\t\t\t\ttriggerEntryId: responseEntryId,\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst responseEntry: NewEntry<MessageEntry> = {\n\t\t\t\tid: responseEntryId,\n\t\t\t\tparentId: state.tipId,\n\t\t\t\ttype: \"message\",\n\t\t\t\tmessage: committed,\n\t\t\t};\n\t\t\tconst usageRow: Omit<UsageRow, \"seq\"> = {\n\t\t\t\tid: intent.usageId,\n\t\t\t\tusage: committed.usage,\n\t\t\t\tentryId: responseEntryId,\n\t\t\t\tadjustment: false,\n\t\t\t};\n\t\t\tif (settled === undefined && failure === undefined) {\n\t\t\t\tthrow new SessionInvariantError(\"Response settlement has no durable disposition\");\n\t\t\t}\n\t\t\tconst record =\n\t\t\t\tfailure === undefined ? undefined : operationResultRecord(meta, \"failed\", responseEntryId, failure);\n\t\t\tconst cleanup =\n\t\t\t\trecord === undefined ? [] : await operationCleanupWrites(reader, drive.operationId, current, drive.context);\n\t\t\tconst writes = [\n\t\t\t\tinsertEntry(responseEntry),\n\t\t\t\tinsertUsage(usageRow),\n\t\t\t\tsetValue(branchTip(lane.name), responseEntryId),\n\t\t\t\t...(record === undefined\n\t\t\t\t\t? [deleteList(pendingAssistantFrames(drive.operationId, responseEntryId))]\n\t\t\t\t\t: cleanup),\n\t\t\t\t...(settled?.at === \"summary.deciding\" && overflowPreparation !== undefined\n\t\t\t\t\t? [\n\t\t\t\t\t\t\tsetValue(\n\t\t\t\t\t\t\t\toperationPreparation(drive.operationId, overflowPreparation.taskId),\n\t\t\t\t\t\t\t\toverflowPreparation.preparation,\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t]\n\t\t\t\t\t: []),\n\t\t\t];\n\t\t\tconst materializeEntry = (commit: CommitResult): MessageEntry => ({\n\t\t\t\t...responseEntry,\n\t\t\t\tseq: commit.seqs[0]!,\n\t\t\t\ttimestamp: commit.timestamp,\n\t\t\t});\n\t\t\tconst events = (commit: CommitResult): HarnessEvent[] => {\n\t\t\t\tconst entry = materializeEntry(commit);\n\t\t\t\tconst batch: HarnessEvent[] = [\n\t\t\t\t\t{ type: \"entry_added\", lane: lane.name, entry, ...options },\n\t\t\t\t\t{\n\t\t\t\t\t\ttype: \"usage\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trow: { ...usageRow, seq: commit.seqs[1]! },\n\t\t\t\t\t\ttotals: commit.stats.usage,\n\t\t\t\t\t},\n\t\t\t\t];\n\t\t\t\tif (current.at === \"assistant.effect_pending\") {\n\t\t\t\t\tif (options.recovery !== true && current.attempt > 1 && settled?.at !== \"assistant.retry_wait\") {\n\t\t\t\t\t\tconst success = committed.stopReason !== \"error\" && committed.stopReason !== \"aborted\";\n\t\t\t\t\t\tbatch.push({\n\t\t\t\t\t\t\ttype: \"retry_end\",\n\t\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\t\tstep: turnId,\n\t\t\t\t\t\t\tattempt: current.attempt,\n\t\t\t\t\t\t\tsuccess,\n\t\t\t\t\t\t\t...(success\n\t\t\t\t\t\t\t\t? {}\n\t\t\t\t\t\t\t\t: {\n\t\t\t\t\t\t\t\t\t\tfinalError:\n\t\t\t\t\t\t\t\t\t\t\tcommitted.errorMessage ?? `Assistant request ended with ${committed.stopReason}`,\n\t\t\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (options.recovery !== true && settled?.at === \"assistant.retry_wait\") {\n\t\t\t\t\t\tbatch.push({\n\t\t\t\t\t\t\ttype: \"retry_scheduled\",\n\t\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\t\tstep: turnId,\n\t\t\t\t\t\t\tattempt: settled.nextAttempt,\n\t\t\t\t\t\t\tmaxAttempts: settled.generationContext.retryPolicy.maxAttempts,\n\t\t\t\t\t\t\tdelayMs: retryDelayMs(current.generationContext.retryPolicy, current.attempt),\n\t\t\t\t\t\t\tnotBefore: settled.notBefore,\n\t\t\t\t\t\t\terrorMessage: settled.errorMessage,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (options.recovery !== true && settled?.at !== \"tools\" && settled?.at !== \"assistant.retry_wait\") {\n\t\t\t\t\t\tbatch.push({\n\t\t\t\t\t\t\ttype: \"turn_end\",\n\t\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\t\tturnId,\n\t\t\t\t\t\t\tmessage: committed,\n\t\t\t\t\t\t\ttoolResults: [],\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t\tif (settled?.at === \"summary.deciding\") {\n\t\t\t\t\t\tbatch.push({\n\t\t\t\t\t\t\ttype: \"compaction_start\",\n\t\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\t\treason: \"overflow\",\n\t\t\t\t\t\t\tstartedAt: commit.timestamp,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} else if (settled?.at !== \"tools\") {\n\t\t\t\t\tbatch.push({\n\t\t\t\t\t\ttype: \"turn_end\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\tturnId,\n\t\t\t\t\t\tmessage: committed,\n\t\t\t\t\t\ttoolResults: [],\n\t\t\t\t\t\t...options,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (\n\t\t\t\t\t(current.at === \"deferred.effect_pending\" || options.recovery !== true) &&\n\t\t\t\t\tsettled?.at === \"deferred.suspended\" &&\n\t\t\t\t\tcommitted.deferred !== undefined\n\t\t\t\t) {\n\t\t\t\t\tbatch.push({\n\t\t\t\t\t\ttype: \"run_suspend\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\treason: \"deferred\",\n\t\t\t\t\t\tdeferred: committed.deferred,\n\t\t\t\t\t\tpoll: settled.poll,\n\t\t\t\t\t\t...(current.at === \"deferred.effect_pending\" ? options : {}),\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (record !== undefined && failure !== undefined) {\n\t\t\t\t\tbatch.push({\n\t\t\t\t\t\ttype: \"run_end\",\n\t\t\t\t\t\tlane: lane.name,\n\t\t\t\t\t\trunId: drive.operationId,\n\t\t\t\t\t\tstatus: \"failed\",\n\t\t\t\t\t\terror: failure,\n\t\t\t\t\t\tfromTipId: meta.sourceTipId,\n\t\t\t\t\t\ttipId: responseEntryId,\n\t\t\t\t\t\tendedAt: record.endedAt,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\treturn batch;\n\t\t\t};\n\t\t\tif (record !== undefined) {\n\t\t\t\treturn {\n\t\t\t\t\tkind: \"finish\",\n\t\t\t\t\twrites,\n\t\t\t\t\trecord,\n\t\t\t\t\tlane: { tipId: responseEntryId },\n\t\t\t\t\tmaterialize: () => ({ kind: \"settled\", outcome: record }) as const,\n\t\t\t\t\tevents,\n\t\t\t\t};\n\t\t\t}\n\t\t\tif (settled === undefined) throw new SessionInvariantError(\"Response settlement is missing its next state\");\n\t\t\treturn {\n\t\t\t\tkind: \"commit\",\n\t\t\t\twrites,\n\t\t\t\toperationState: settled,\n\t\t\t\tlane: { tipId: responseEntryId },\n\t\t\t\tmaterialize: () => ({ kind: \"continue\" }) as const,\n\t\t\t\tevents,\n\t\t\t};\n\t\t},\n\t\tdrive.context,\n\t);\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAgB,MAAM,uBAAuB,CAAC;AAEvE,wBAAgB,cAAc,CAC7B,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,iBAAiB,GAAG,QAAQ,CAAC,EACvE,OAAO,EAAE,MAAM,EACf,GAAG,SAAa,GACd,MAAM,CAGR;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB/E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"retry.js","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/retry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEvE,MAAM,UAAU,cAAc,CAC7B,MAAuE,EACvE,OAAe,EACf,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,MAAM,GAAG,GAAG,GAAG,GAAG,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChD,OAAO,MAAM,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,SAAiB,EAAE,MAAmB;IAC/D,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC5C,IAAI,KAAgD,CAAC;QACrD,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,IAAI,KAAK,KAAK,SAAS;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC7C,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACpB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,GAAG,EAAE;YAClB,MAAM,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACzC,IAAI,SAAS,IAAI,CAAC,EAAE,CAAC;gBACpB,OAAO,EAAE,CAAC;gBACV,OAAO,EAAE,CAAC;gBACV,OAAO;YACR,CAAC;YACD,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC,CAAC;QAC/D,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;;YACzB,KAAK,EAAE,CAAC;IACd,CAAC,CAAC,CAAC;AACJ,CAAC","sourcesContent":["import { type RetryPolicy, retryDelayMs } from \"@earendil-works/pi-ai\";\n\nexport function retryNotBefore(\n\tpolicy: Pick<RetryPolicy, \"baseDelayMs\" | \"maxAgentDelayMs\" | \"random\">,\n\tattempt: number,\n\tnow = Date.now(),\n): number {\n\tconst sum = now + retryDelayMs(policy, attempt);\n\treturn Number.isSafeInteger(sum) ? sum : Number.MAX_SAFE_INTEGER;\n}\n\nexport function waitUntil(notBefore: number, signal: AbortSignal): Promise<void> {\n\treturn new Promise<void>((resolve, reject) => {\n\t\tlet timer: ReturnType<typeof setTimeout> | undefined;\n\t\tconst cleanup = () => {\n\t\t\tif (timer !== undefined) clearTimeout(timer);\n\t\t\tsignal.removeEventListener(\"abort\", onAbort);\n\t\t};\n\t\tconst onAbort = () => {\n\t\t\tcleanup();\n\t\t\treject(signal.reason);\n\t\t};\n\t\tconst check = () => {\n\t\t\tconst remaining = notBefore - Date.now();\n\t\t\tif (remaining <= 0) {\n\t\t\t\tcleanup();\n\t\t\t\tresolve();\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttimer = setTimeout(check, Math.min(remaining, 2_147_483_647));\n\t\t};\n\t\tsignal.addEventListener(\"abort\", onAbort, { once: true });\n\t\tif (signal.aborted) onAbort();\n\t\telse check();\n\t});\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"structural.d.ts","sourceRoot":"","sources":["../../../../src/harness/runtime/drive/structural.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iBAAiB,EAAuB,MAAM,0CAA0C,CAAC;AAEvG,OAAO,KAAK,EAAE,qBAAqB,EAAiC,MAAM,gCAAgC,CAAC;AAO3G,OAAO,EACN,KAAK,+BAA+B,EAGpC,KAAK,mBAAmB,EAIxB,KAAK,4BAA4B,EAGjC,KAAK,gCAAgC,EAMrC,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAClC,KAAK,qBAAqB,EAC1B,KAAK,yBAAyB,EAI9B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEvC,OAAO,KAAK,EAAE,uBAAuB,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AA2BnF,wBAAgB,4BAA4B,CAC3C,WAAW,EAAE,qBAAqB,GAChC,OAAO,CAAC,4BAA4B,EAAE;IAAE,IAAI,EAAE,YAAY,CAAA;CAAE,CAAC,CAY/D;AAED,wBAAgB,wBAAwB,CACvC,WAAW,EAAE,iBAAiB,GAC5B,OAAO,CAAC,4BAA4B,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAOnE;AA2fD,oEAAoE;AACpE,wBAAsB,qBAAqB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAC9E,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,wBAAwB,GAChC,OAAO,CAAC,eAAe,CAAC,CA4D1B;AAiVD,uDAAuD;AACvD,wBAAsB,uBAAuB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAChF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,qBAAqB,GAC1B,OAAO,CAAC,eAAe,CAAC,CAe1B;AAED,4EAA4E;AAC5E,wBAAsB,sBAAsB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAC/E,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,yBAAyB,GAC9B,OAAO,CAAC,eAAe,CAAC,CAsC1B;AAED,gGAAgG;AAChG,wBAAsB,2BAA2B,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACpF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,6BAA6B,GACnC,OAAO,CAAC,eAAe,CAAC,CAkC1B;AAED,8FAA8F;AAC9F,wBAAsB,0BAA0B,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACnF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,mBAAmB,GAC7B,OAAO,CAAC,uBAAuB,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,4BAA4B,CAAA;CAAE,GAAG,SAAS,CAAC,CAAC,CA8B7G;AAED,kFAAkF;AAClF,wBAAsB,yBAAyB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EAClF,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,+BAA+B,GACzC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,4BAA4B,CAAA;CAAE,GAAG,SAAS,CAAC,CAWpF;AAED,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,EACnE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,EACpB,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,gCAAgC,GAC1C,OAAO,CAAC,eAAe,CAAC,CA6C1B"}