@sammorrowdrums/mcpi-agent-core 0.85.0-bootstrap.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +513 -0
  3. package/dist/agent-loop.d.ts +24 -0
  4. package/dist/agent-loop.d.ts.map +1 -0
  5. package/dist/agent-loop.js +553 -0
  6. package/dist/agent-loop.js.map +1 -0
  7. package/dist/agent.d.ts +122 -0
  8. package/dist/agent.d.ts.map +1 -0
  9. package/dist/agent.js +422 -0
  10. package/dist/agent.js.map +1 -0
  11. package/dist/harness/agent-harness.d.ts +461 -0
  12. package/dist/harness/agent-harness.d.ts.map +1 -0
  13. package/dist/harness/agent-harness.js +252 -0
  14. package/dist/harness/agent-harness.js.map +1 -0
  15. package/dist/harness/compaction/branch-summarization.d.ts +62 -0
  16. package/dist/harness/compaction/branch-summarization.d.ts.map +1 -0
  17. package/dist/harness/compaction/branch-summarization.js +169 -0
  18. package/dist/harness/compaction/branch-summarization.js.map +1 -0
  19. package/dist/harness/compaction/compaction.d.ts +104 -0
  20. package/dist/harness/compaction/compaction.d.ts.map +1 -0
  21. package/dist/harness/compaction/compaction.js +570 -0
  22. package/dist/harness/compaction/compaction.js.map +1 -0
  23. package/dist/harness/compaction/utils.d.ts +25 -0
  24. package/dist/harness/compaction/utils.d.ts.map +1 -0
  25. package/dist/harness/compaction/utils.js +120 -0
  26. package/dist/harness/compaction/utils.js.map +1 -0
  27. package/dist/harness/env/nodejs.d.ts +46 -0
  28. package/dist/harness/env/nodejs.d.ts.map +1 -0
  29. package/dist/harness/env/nodejs.js +639 -0
  30. package/dist/harness/env/nodejs.js.map +1 -0
  31. package/dist/harness/events.d.ts +43 -0
  32. package/dist/harness/events.d.ts.map +1 -0
  33. package/dist/harness/events.js +65 -0
  34. package/dist/harness/events.js.map +1 -0
  35. package/dist/harness/messages.d.ts +51 -0
  36. package/dist/harness/messages.d.ts.map +1 -0
  37. package/dist/harness/messages.js +102 -0
  38. package/dist/harness/messages.js.map +1 -0
  39. package/dist/harness/prompt-templates.d.ts +48 -0
  40. package/dist/harness/prompt-templates.d.ts.map +1 -0
  41. package/dist/harness/prompt-templates.js +225 -0
  42. package/dist/harness/prompt-templates.js.map +1 -0
  43. package/dist/harness/reducer.d.ts +100 -0
  44. package/dist/harness/reducer.d.ts.map +1 -0
  45. package/dist/harness/reducer.js +415 -0
  46. package/dist/harness/reducer.js.map +1 -0
  47. package/dist/harness/result.d.ts +40 -0
  48. package/dist/harness/result.d.ts.map +1 -0
  49. package/dist/harness/result.js +41 -0
  50. package/dist/harness/result.js.map +1 -0
  51. package/dist/harness/session/context.d.ts +22 -0
  52. package/dist/harness/session/context.d.ts.map +1 -0
  53. package/dist/harness/session/context.js +67 -0
  54. package/dist/harness/session/context.js.map +1 -0
  55. package/dist/harness/session/index.d.ts +7 -0
  56. package/dist/harness/session/index.d.ts.map +1 -0
  57. package/dist/harness/session/index.js +6 -0
  58. package/dist/harness/session/index.js.map +1 -0
  59. package/dist/harness/session/jsonl/codec.d.ts +10 -0
  60. package/dist/harness/session/jsonl/codec.d.ts.map +1 -0
  61. package/dist/harness/session/jsonl/codec.js +229 -0
  62. package/dist/harness/session/jsonl/codec.js.map +1 -0
  63. package/dist/harness/session/jsonl/errors.d.ts +9 -0
  64. package/dist/harness/session/jsonl/errors.d.ts.map +1 -0
  65. package/dist/harness/session/jsonl/errors.js +19 -0
  66. package/dist/harness/session/jsonl/errors.js.map +1 -0
  67. package/dist/harness/session/jsonl/repo.d.ts +27 -0
  68. package/dist/harness/session/jsonl/repo.d.ts.map +1 -0
  69. package/dist/harness/session/jsonl/repo.js +175 -0
  70. package/dist/harness/session/jsonl/repo.js.map +1 -0
  71. package/dist/harness/session/jsonl/storage.d.ts +43 -0
  72. package/dist/harness/session/jsonl/storage.d.ts.map +1 -0
  73. package/dist/harness/session/jsonl/storage.js +217 -0
  74. package/dist/harness/session/jsonl/storage.js.map +1 -0
  75. package/dist/harness/session/jsonl/types.d.ts +38 -0
  76. package/dist/harness/session/jsonl/types.d.ts.map +1 -0
  77. package/dist/harness/session/jsonl/types.js +2 -0
  78. package/dist/harness/session/jsonl/types.js.map +1 -0
  79. package/dist/harness/session/jsonl.d.ts +3 -0
  80. package/dist/harness/session/jsonl.d.ts.map +1 -0
  81. package/dist/harness/session/jsonl.js +2 -0
  82. package/dist/harness/session/jsonl.js.map +1 -0
  83. package/dist/harness/session/memory.d.ts +44 -0
  84. package/dist/harness/session/memory.d.ts.map +1 -0
  85. package/dist/harness/session/memory.js +141 -0
  86. package/dist/harness/session/memory.js.map +1 -0
  87. package/dist/harness/session/session.d.ts +50 -0
  88. package/dist/harness/session/session.d.ts.map +1 -0
  89. package/dist/harness/session/session.js +227 -0
  90. package/dist/harness/session/session.js.map +1 -0
  91. package/dist/harness/session/state.d.ts +65 -0
  92. package/dist/harness/session/state.d.ts.map +1 -0
  93. package/dist/harness/session/state.js +319 -0
  94. package/dist/harness/session/state.js.map +1 -0
  95. package/dist/harness/session/testing/conformance.d.ts +4 -0
  96. package/dist/harness/session/testing/conformance.d.ts.map +1 -0
  97. package/dist/harness/session/testing/conformance.js +762 -0
  98. package/dist/harness/session/testing/conformance.js.map +1 -0
  99. package/dist/harness/session/testing/index.d.ts +3 -0
  100. package/dist/harness/session/testing/index.d.ts.map +1 -0
  101. package/dist/harness/session/testing/index.js +2 -0
  102. package/dist/harness/session/testing/index.js.map +1 -0
  103. package/dist/harness/session/testing/types.d.ts +14 -0
  104. package/dist/harness/session/testing/types.d.ts.map +1 -0
  105. package/dist/harness/session/testing/types.js +2 -0
  106. package/dist/harness/session/testing/types.js.map +1 -0
  107. package/dist/harness/session/types.d.ts +346 -0
  108. package/dist/harness/session/types.d.ts.map +1 -0
  109. package/dist/harness/session/types.js +10 -0
  110. package/dist/harness/session/types.js.map +1 -0
  111. package/dist/harness/skills.d.ts +44 -0
  112. package/dist/harness/skills.d.ts.map +1 -0
  113. package/dist/harness/skills.js +313 -0
  114. package/dist/harness/skills.js.map +1 -0
  115. package/dist/harness/system-prompt.d.ts +3 -0
  116. package/dist/harness/system-prompt.d.ts.map +1 -0
  117. package/dist/harness/system-prompt.js +30 -0
  118. package/dist/harness/system-prompt.js.map +1 -0
  119. package/dist/harness/telemetry.d.ts +1221 -0
  120. package/dist/harness/telemetry.d.ts.map +1 -0
  121. package/dist/harness/telemetry.js +508 -0
  122. package/dist/harness/telemetry.js.map +1 -0
  123. package/dist/harness/tools/bash.d.ts +27 -0
  124. package/dist/harness/tools/bash.d.ts.map +1 -0
  125. package/dist/harness/tools/bash.js +132 -0
  126. package/dist/harness/tools/bash.js.map +1 -0
  127. package/dist/harness/tools/edit-diff.d.ts +89 -0
  128. package/dist/harness/tools/edit-diff.d.ts.map +1 -0
  129. package/dist/harness/tools/edit-diff.js +386 -0
  130. package/dist/harness/tools/edit-diff.js.map +1 -0
  131. package/dist/harness/tools/edit.d.ts +19 -0
  132. package/dist/harness/tools/edit.d.ts.map +1 -0
  133. package/dist/harness/tools/edit.js +95 -0
  134. package/dist/harness/tools/edit.js.map +1 -0
  135. package/dist/harness/tools/file-mutation-queue.d.ts +4 -0
  136. package/dist/harness/tools/file-mutation-queue.d.ts.map +1 -0
  137. package/dist/harness/tools/file-mutation-queue.js +46 -0
  138. package/dist/harness/tools/file-mutation-queue.js.map +1 -0
  139. package/dist/harness/tools/image.d.ts +3 -0
  140. package/dist/harness/tools/image.d.ts.map +1 -0
  141. package/dist/harness/tools/image.js +106 -0
  142. package/dist/harness/tools/image.js.map +1 -0
  143. package/dist/harness/tools/index.d.ts +6 -0
  144. package/dist/harness/tools/index.d.ts.map +1 -0
  145. package/dist/harness/tools/index.js +5 -0
  146. package/dist/harness/tools/index.js.map +1 -0
  147. package/dist/harness/tools/path-utils.d.ts +4 -0
  148. package/dist/harness/tools/path-utils.d.ts.map +1 -0
  149. package/dist/harness/tools/path-utils.js +26 -0
  150. package/dist/harness/tools/path-utils.js.map +1 -0
  151. package/dist/harness/tools/read.d.ts +34 -0
  152. package/dist/harness/tools/read.d.ts.map +1 -0
  153. package/dist/harness/tools/read.js +110 -0
  154. package/dist/harness/tools/read.js.map +1 -0
  155. package/dist/harness/tools/tool-context.d.ts +6 -0
  156. package/dist/harness/tools/tool-context.d.ts.map +1 -0
  157. package/dist/harness/tools/tool-context.js +2 -0
  158. package/dist/harness/tools/tool-context.js.map +1 -0
  159. package/dist/harness/tools/write.d.ts +11 -0
  160. package/dist/harness/tools/write.d.ts.map +1 -0
  161. package/dist/harness/tools/write.js +31 -0
  162. package/dist/harness/tools/write.js.map +1 -0
  163. package/dist/harness/types.d.ts +228 -0
  164. package/dist/harness/types.d.ts.map +1 -0
  165. package/dist/harness/types.js +75 -0
  166. package/dist/harness/types.js.map +1 -0
  167. package/dist/harness/utils/shell-output.d.ts +22 -0
  168. package/dist/harness/utils/shell-output.d.ts.map +1 -0
  169. package/dist/harness/utils/shell-output.js +181 -0
  170. package/dist/harness/utils/shell-output.js.map +1 -0
  171. package/dist/harness/utils/truncate.d.ts +70 -0
  172. package/dist/harness/utils/truncate.d.ts.map +1 -0
  173. package/dist/harness/utils/truncate.js +296 -0
  174. package/dist/harness/utils/truncate.js.map +1 -0
  175. package/dist/index.d.ts +25 -0
  176. package/dist/index.d.ts.map +1 -0
  177. package/dist/index.js +29 -0
  178. package/dist/index.js.map +1 -0
  179. package/dist/node.d.ts +3 -0
  180. package/dist/node.d.ts.map +1 -0
  181. package/dist/node.js +3 -0
  182. package/dist/node.js.map +1 -0
  183. package/dist/proxy.d.ts +70 -0
  184. package/dist/proxy.d.ts.map +1 -0
  185. package/dist/proxy.js +280 -0
  186. package/dist/proxy.js.map +1 -0
  187. package/dist/search/index.d.ts +21 -0
  188. package/dist/search/index.d.ts.map +1 -0
  189. package/dist/search/index.js +2 -0
  190. package/dist/search/index.js.map +1 -0
  191. package/dist/search/scanning.d.ts +29 -0
  192. package/dist/search/scanning.d.ts.map +1 -0
  193. package/dist/search/scanning.js +103 -0
  194. package/dist/search/scanning.js.map +1 -0
  195. package/dist/stream-fn.d.ts +10 -0
  196. package/dist/stream-fn.d.ts.map +1 -0
  197. package/dist/stream-fn.js +17 -0
  198. package/dist/stream-fn.js.map +1 -0
  199. package/dist/types.d.ts +413 -0
  200. package/dist/types.d.ts.map +1 -0
  201. package/dist/types.js +2 -0
  202. package/dist/types.js.map +1 -0
  203. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tImageContent,\n\tMessage,\n\tModel,\n\tSimpleStreamOptions,\n\tTextContent,\n\tThinkingBudgets,\n\tTransport,\n} from \"@sammorrowdrums/mcpi-ai\";\nimport { runAgentLoop, runAgentLoopContinue } from \"./agent-loop.ts\";\nimport { getDefaultStreamFn } from \"./stream-fn.ts\";\nimport type {\n\tAfterToolCallContext,\n\tAfterToolCallResult,\n\tAgentContext,\n\tAgentEvent,\n\tAgentLoopConfig,\n\tAgentLoopTurnUpdate,\n\tAgentMessage,\n\tAgentState,\n\tAgentTool,\n\tBeforeToolCallContext,\n\tBeforeToolCallResult,\n\tPrepareNextTurnContext,\n\tQueueMode,\n\tShouldStopAfterTurnContext,\n\tStreamFn,\n\tToolExecutionMode,\n} from \"./types.ts\";\n\nexport type { QueueMode } from \"./types.ts\";\n\nfunction defaultConvertToLlm(messages: AgentMessage[]): Message[] {\n\treturn messages.filter(\n\t\t(message) => message.role === \"user\" || message.role === \"assistant\" || message.role === \"toolResult\",\n\t);\n}\n\nconst EMPTY_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\nconst DEFAULT_MODEL = {\n\tid: \"unknown\",\n\tname: \"unknown\",\n\tapi: \"unknown\",\n\tprovider: \"unknown\",\n\tbaseUrl: \"\",\n\treasoning: false,\n\tinput: [],\n\tcost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },\n\tcontextWindow: 0,\n\tmaxTokens: 0,\n} satisfies Model<any>;\n\ntype MutableAgentState = Omit<AgentState, \"isStreaming\" | \"streamingMessage\" | \"pendingToolCalls\" | \"errorMessage\"> & {\n\tisStreaming: boolean;\n\tstreamingMessage?: AgentMessage;\n\tpendingToolCalls: Set<string>;\n\terrorMessage?: string;\n};\n\nfunction createMutableAgentState(\n\tinitialState?: Partial<Omit<AgentState, \"pendingToolCalls\" | \"isStreaming\" | \"streamingMessage\" | \"errorMessage\">>,\n): MutableAgentState {\n\tlet tools = initialState?.tools?.slice() ?? [];\n\tlet messages = initialState?.messages?.slice() ?? [];\n\n\treturn {\n\t\tsystemPrompt: initialState?.systemPrompt ?? \"\",\n\t\tmodel: initialState?.model ?? DEFAULT_MODEL,\n\t\tthinkingLevel: initialState?.thinkingLevel ?? \"off\",\n\t\tget tools() {\n\t\t\treturn tools;\n\t\t},\n\t\tset tools(nextTools: AgentTool<any>[]) {\n\t\t\ttools = nextTools.slice();\n\t\t},\n\t\tget messages() {\n\t\t\treturn messages;\n\t\t},\n\t\tset messages(nextMessages: AgentMessage[]) {\n\t\t\tmessages = nextMessages.slice();\n\t\t},\n\t\tisStreaming: false,\n\t\tstreamingMessage: undefined,\n\t\tpendingToolCalls: new Set<string>(),\n\t\terrorMessage: undefined,\n\t};\n}\n\n/** Options for constructing an {@link Agent}. */\nexport interface AgentOptions {\n\tinitialState?: Partial<Omit<AgentState, \"pendingToolCalls\" | \"isStreaming\" | \"streamingMessage\" | \"errorMessage\">>;\n\tconvertToLlm?: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;\n\ttransformContext?: (messages: AgentMessage[], signal?: AbortSignal) => Promise<AgentMessage[]>;\n\tstreamFn: StreamFn;\n\tgetApiKey?: (provider: string) => Promise<string | undefined> | string | undefined;\n\tonPayload?: SimpleStreamOptions[\"onPayload\"];\n\tonResponse?: SimpleStreamOptions[\"onResponse\"];\n\tbeforeToolCall?: (context: BeforeToolCallContext, signal?: AbortSignal) => Promise<BeforeToolCallResult | undefined>;\n\tafterToolCall?: (context: AfterToolCallContext, signal?: AbortSignal) => Promise<AfterToolCallResult | undefined>;\n\tshouldStopAfterTurn?: (context: ShouldStopAfterTurnContext, signal?: AbortSignal) => boolean | Promise<boolean>;\n\tprepareNextTurn?: (\n\t\tsignal?: AbortSignal,\n\t) => Promise<AgentLoopTurnUpdate | undefined> | AgentLoopTurnUpdate | undefined;\n\tprepareNextTurnWithContext?: (\n\t\tcontext: PrepareNextTurnContext,\n\t\tsignal?: AbortSignal,\n\t) => Promise<AgentLoopTurnUpdate | undefined> | AgentLoopTurnUpdate | undefined;\n\tsteeringMode?: QueueMode;\n\tfollowUpMode?: QueueMode;\n\tsessionId?: string;\n\tthinkingBudgets?: ThinkingBudgets;\n\ttransport?: Transport;\n\tmaxRetryDelayMs?: number;\n\ttoolExecution?: ToolExecutionMode;\n}\n\nclass PendingMessageQueue {\n\tprivate messages: AgentMessage[] = [];\n\tpublic mode: QueueMode;\n\n\tconstructor(mode: QueueMode) {\n\t\tthis.mode = mode;\n\t}\n\n\tenqueue(message: AgentMessage): void {\n\t\tthis.messages.push(message);\n\t}\n\n\thasItems(): boolean {\n\t\treturn this.messages.length > 0;\n\t}\n\n\tdrain(): AgentMessage[] {\n\t\tif (this.mode === \"all\") {\n\t\t\tconst drained = this.messages.slice();\n\t\t\tthis.messages = [];\n\t\t\treturn drained;\n\t\t}\n\n\t\tconst first = this.messages[0];\n\t\tif (!first) {\n\t\t\treturn [];\n\t\t}\n\t\tthis.messages = this.messages.slice(1);\n\t\treturn [first];\n\t}\n\n\tclear(): void {\n\t\tthis.messages = [];\n\t}\n}\n\ntype ActiveRun = {\n\tpromise: Promise<void>;\n\tresolve: () => void;\n\tabortController: AbortController;\n};\n\n/**\n * Stateful wrapper around the low-level agent loop.\n *\n * `Agent` owns the current transcript, emits lifecycle events, executes tools,\n * and exposes queueing APIs for steering and follow-up messages.\n */\nexport class Agent {\n\tprivate _state: MutableAgentState;\n\tprivate readonly listeners = new Set<(event: AgentEvent, signal: AbortSignal) => Promise<void> | void>();\n\tprivate readonly steeringQueue: PendingMessageQueue;\n\tprivate readonly followUpQueue: PendingMessageQueue;\n\n\tpublic convertToLlm: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;\n\tpublic transformContext?: (messages: AgentMessage[], signal?: AbortSignal) => Promise<AgentMessage[]>;\n\tpublic streamFunction: StreamFn;\n\tpublic getApiKey?: (provider: string) => Promise<string | undefined> | string | undefined;\n\tpublic onPayload?: SimpleStreamOptions[\"onPayload\"];\n\tpublic onResponse?: SimpleStreamOptions[\"onResponse\"];\n\tpublic beforeToolCall?: (\n\t\tcontext: BeforeToolCallContext,\n\t\tsignal?: AbortSignal,\n\t) => Promise<BeforeToolCallResult | undefined>;\n\tpublic afterToolCall?: (\n\t\tcontext: AfterToolCallContext,\n\t\tsignal?: AbortSignal,\n\t) => Promise<AfterToolCallResult | undefined>;\n\tpublic shouldStopAfterTurn?: (\n\t\tcontext: ShouldStopAfterTurnContext,\n\t\tsignal?: AbortSignal,\n\t) => boolean | Promise<boolean>;\n\tpublic prepareNextTurn?: (\n\t\tsignal?: AbortSignal,\n\t) => Promise<AgentLoopTurnUpdate | undefined> | AgentLoopTurnUpdate | undefined;\n\tpublic prepareNextTurnWithContext?: (\n\t\tcontext: PrepareNextTurnContext,\n\t\tsignal?: AbortSignal,\n\t) => Promise<AgentLoopTurnUpdate | undefined> | AgentLoopTurnUpdate | undefined;\n\tprivate activeRun?: ActiveRun;\n\t/** Session identifier forwarded to providers for cache-aware backends. */\n\tpublic sessionId?: string;\n\t/** Optional per-level thinking token budgets forwarded to the stream function. */\n\tpublic thinkingBudgets?: ThinkingBudgets;\n\t/** Preferred transport forwarded to the stream function. */\n\tpublic transport: Transport;\n\t/** Optional cap for provider-requested retry delays. */\n\tpublic maxRetryDelayMs?: number;\n\t/** Tool execution strategy for assistant messages that contain multiple tool calls. */\n\tpublic toolExecution: ToolExecutionMode;\n\n\tconstructor(options: AgentOptions) {\n\t\t// Older compiled consumers may omit options or streamFn even though the current API requires them.\n\t\tconst runtimeOptions: Partial<AgentOptions> = options ?? {};\n\t\tthis._state = createMutableAgentState(runtimeOptions.initialState);\n\t\tthis.convertToLlm = runtimeOptions.convertToLlm ?? defaultConvertToLlm;\n\t\tthis.transformContext = runtimeOptions.transformContext;\n\t\tthis.streamFunction = runtimeOptions.streamFn ?? getDefaultStreamFn();\n\t\tthis.getApiKey = runtimeOptions.getApiKey;\n\t\tthis.onPayload = runtimeOptions.onPayload;\n\t\tthis.onResponse = runtimeOptions.onResponse;\n\t\tthis.beforeToolCall = runtimeOptions.beforeToolCall;\n\t\tthis.afterToolCall = runtimeOptions.afterToolCall;\n\t\tthis.shouldStopAfterTurn = runtimeOptions.shouldStopAfterTurn;\n\t\tthis.prepareNextTurn = runtimeOptions.prepareNextTurn;\n\t\tthis.prepareNextTurnWithContext = runtimeOptions.prepareNextTurnWithContext;\n\t\tthis.steeringQueue = new PendingMessageQueue(runtimeOptions.steeringMode ?? \"one-at-a-time\");\n\t\tthis.followUpQueue = new PendingMessageQueue(runtimeOptions.followUpMode ?? \"one-at-a-time\");\n\t\tthis.sessionId = runtimeOptions.sessionId;\n\t\tthis.thinkingBudgets = runtimeOptions.thinkingBudgets;\n\t\tthis.transport = runtimeOptions.transport ?? \"auto\";\n\t\tthis.maxRetryDelayMs = runtimeOptions.maxRetryDelayMs;\n\t\tthis.toolExecution = runtimeOptions.toolExecution ?? \"parallel\";\n\t}\n\n\t/**\n\t * Subscribe to agent lifecycle events.\n\t *\n\t * Listener promises are awaited in subscription order and are included in\n\t * the current run's settlement. Listeners also receive the active abort\n\t * signal for the current run.\n\t *\n\t * `agent_end` is the final emitted event for a run, but the agent does not\n\t * become idle until all awaited listeners for that event have settled.\n\t */\n\tsubscribe(listener: (event: AgentEvent, signal: AbortSignal) => Promise<void> | void): () => void {\n\t\tthis.listeners.add(listener);\n\t\treturn () => this.listeners.delete(listener);\n\t}\n\n\t/**\n\t * Current agent state.\n\t *\n\t * Assigning `state.tools` or `state.messages` copies the provided top-level array.\n\t */\n\tget state(): AgentState {\n\t\treturn this._state;\n\t}\n\n\t/** Controls how queued steering messages are drained. */\n\tset steeringMode(mode: QueueMode) {\n\t\tthis.steeringQueue.mode = mode;\n\t}\n\n\tget steeringMode(): QueueMode {\n\t\treturn this.steeringQueue.mode;\n\t}\n\n\t/** Controls how queued follow-up messages are drained. */\n\tset followUpMode(mode: QueueMode) {\n\t\tthis.followUpQueue.mode = mode;\n\t}\n\n\tget followUpMode(): QueueMode {\n\t\treturn this.followUpQueue.mode;\n\t}\n\n\t/** Queue a message to be injected after the current assistant turn finishes. */\n\tsteer(message: AgentMessage): void {\n\t\tthis.steeringQueue.enqueue(message);\n\t}\n\n\t/** Queue a message to run only after the agent would otherwise stop. */\n\tfollowUp(message: AgentMessage): void {\n\t\tthis.followUpQueue.enqueue(message);\n\t}\n\n\t/** Remove all queued steering messages. */\n\tclearSteeringQueue(): void {\n\t\tthis.steeringQueue.clear();\n\t}\n\n\t/** Remove all queued follow-up messages. */\n\tclearFollowUpQueue(): void {\n\t\tthis.followUpQueue.clear();\n\t}\n\n\t/** Remove all queued steering and follow-up messages. */\n\tclearAllQueues(): void {\n\t\tthis.clearSteeringQueue();\n\t\tthis.clearFollowUpQueue();\n\t}\n\n\t/** Returns true when either queue still contains pending messages. */\n\thasQueuedMessages(): boolean {\n\t\treturn this.steeringQueue.hasItems() || this.followUpQueue.hasItems();\n\t}\n\n\t/** Active abort signal for the current run, if any. */\n\tget signal(): AbortSignal | undefined {\n\t\treturn this.activeRun?.abortController.signal;\n\t}\n\n\t/** Abort the current run, if one is active. */\n\tabort(): void {\n\t\tthis.activeRun?.abortController.abort();\n\t}\n\n\t/**\n\t * Resolve when the current run and all awaited event listeners have finished.\n\t *\n\t * This resolves after `agent_end` listeners settle.\n\t */\n\twaitForIdle(): Promise<void> {\n\t\treturn this.activeRun?.promise ?? Promise.resolve();\n\t}\n\n\t/** Clear transcript state, runtime state, and queued messages. */\n\treset(): void {\n\t\tif (this.activeRun) {\n\t\t\tthrow new Error(\"Agent is already processing. Wait for completion before resetting.\");\n\t\t}\n\n\t\tthis._state.messages = [];\n\t\tthis._state.isStreaming = false;\n\t\tthis._state.streamingMessage = undefined;\n\t\tthis._state.pendingToolCalls = new Set<string>();\n\t\tthis._state.errorMessage = undefined;\n\t\tthis.clearFollowUpQueue();\n\t\tthis.clearSteeringQueue();\n\t}\n\n\t/** Start a new prompt from text, a single message, or a batch of messages. */\n\tasync prompt(message: AgentMessage | AgentMessage[]): Promise<void>;\n\tasync prompt(input: string, images?: ImageContent[]): Promise<void>;\n\tasync prompt(input: string | AgentMessage | AgentMessage[], images?: ImageContent[]): Promise<void> {\n\t\tif (this.activeRun) {\n\t\t\tthrow new Error(\n\t\t\t\t\"Agent is already processing a prompt. Use steer() or followUp() to queue messages, or wait for completion.\",\n\t\t\t);\n\t\t}\n\t\tconst messages = this.normalizePromptInput(input, images);\n\t\tawait this.runPromptMessages(messages);\n\t}\n\n\t/** Continue from the current transcript. The last message must be a user or tool-result message. */\n\tasync continue(): Promise<void> {\n\t\tif (this.activeRun) {\n\t\t\tthrow new Error(\"Agent is already processing. Wait for completion before continuing.\");\n\t\t}\n\n\t\tconst lastMessage = this._state.messages[this._state.messages.length - 1];\n\t\tif (!lastMessage) {\n\t\t\tthrow new Error(\"No messages to continue from\");\n\t\t}\n\n\t\tif (lastMessage.role === \"assistant\") {\n\t\t\tconst queuedSteering = this.steeringQueue.drain();\n\t\t\tif (queuedSteering.length > 0) {\n\t\t\t\tawait this.runPromptMessages(queuedSteering, { skipInitialSteeringPoll: true });\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst queuedFollowUps = this.followUpQueue.drain();\n\t\t\tif (queuedFollowUps.length > 0) {\n\t\t\t\tawait this.runPromptMessages(queuedFollowUps);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthrow new Error(\"Cannot continue from message role: assistant\");\n\t\t}\n\n\t\tawait this.runContinuation();\n\t}\n\n\tprivate normalizePromptInput(\n\t\tinput: string | AgentMessage | AgentMessage[],\n\t\timages?: ImageContent[],\n\t): AgentMessage[] {\n\t\tif (Array.isArray(input)) {\n\t\t\treturn input;\n\t\t}\n\n\t\tif (typeof input !== \"string\") {\n\t\t\treturn [input];\n\t\t}\n\n\t\tconst content: Array<TextContent | ImageContent> = [{ type: \"text\", text: input }];\n\t\tif (images && images.length > 0) {\n\t\t\tcontent.push(...images);\n\t\t}\n\t\treturn [{ role: \"user\", content, timestamp: Date.now() }];\n\t}\n\n\tprivate async runPromptMessages(\n\t\tmessages: AgentMessage[],\n\t\toptions: { skipInitialSteeringPoll?: boolean } = {},\n\t): Promise<void> {\n\t\tawait this.runWithLifecycle(async (signal) => {\n\t\t\tawait runAgentLoop(\n\t\t\t\tmessages,\n\t\t\t\tthis.createContextSnapshot(),\n\t\t\t\tthis.createLoopConfig(options),\n\t\t\t\t(event) => this.processEvents(event),\n\t\t\t\tsignal,\n\t\t\t\tthis.streamFunction,\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate async runContinuation(): Promise<void> {\n\t\tawait this.runWithLifecycle(async (signal) => {\n\t\t\tawait runAgentLoopContinue(\n\t\t\t\tthis.createContextSnapshot(),\n\t\t\t\tthis.createLoopConfig(),\n\t\t\t\t(event) => this.processEvents(event),\n\t\t\t\tsignal,\n\t\t\t\tthis.streamFunction,\n\t\t\t);\n\t\t});\n\t}\n\n\tprivate createContextSnapshot(): AgentContext {\n\t\treturn {\n\t\t\tsystemPrompt: this._state.systemPrompt,\n\t\t\tmessages: this._state.messages.slice(),\n\t\t\ttools: this._state.tools.slice(),\n\t\t};\n\t}\n\n\tprivate createLoopConfig(options: { skipInitialSteeringPoll?: boolean } = {}): AgentLoopConfig {\n\t\tlet skipInitialSteeringPoll = options.skipInitialSteeringPoll === true;\n\t\tconst shouldStopAfterTurn = this.shouldStopAfterTurn;\n\t\treturn {\n\t\t\tmodel: this._state.model,\n\t\t\treasoning: this._state.thinkingLevel === \"off\" ? undefined : this._state.thinkingLevel,\n\t\t\tsessionId: this.sessionId,\n\t\t\tonPayload: this.onPayload,\n\t\t\tonResponse: this.onResponse,\n\t\t\ttransport: this.transport,\n\t\t\tthinkingBudgets: this.thinkingBudgets,\n\t\t\tmaxRetryDelayMs: this.maxRetryDelayMs,\n\t\t\ttoolExecution: this.toolExecution,\n\t\t\tbeforeToolCall: this.beforeToolCall,\n\t\t\tafterToolCall: this.afterToolCall,\n\t\t\tshouldStopAfterTurn: shouldStopAfterTurn\n\t\t\t\t? async (context) => await shouldStopAfterTurn(context, this.signal)\n\t\t\t\t: undefined,\n\t\t\tprepareNextTurn:\n\t\t\t\tthis.prepareNextTurnWithContext || this.prepareNextTurn\n\t\t\t\t\t? async (context) => {\n\t\t\t\t\t\t\tif (this.prepareNextTurnWithContext) {\n\t\t\t\t\t\t\t\treturn await this.prepareNextTurnWithContext(context, this.signal);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn await this.prepareNextTurn?.(this.signal);\n\t\t\t\t\t\t}\n\t\t\t\t\t: undefined,\n\t\t\tconvertToLlm: this.convertToLlm,\n\t\t\ttransformContext: this.transformContext,\n\t\t\tgetApiKey: this.getApiKey,\n\t\t\tgetSteeringMessages: async () => {\n\t\t\t\tif (skipInitialSteeringPoll) {\n\t\t\t\t\tskipInitialSteeringPoll = false;\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\t\t\t\treturn this.steeringQueue.drain();\n\t\t\t},\n\t\t\tgetFollowUpMessages: async () => this.followUpQueue.drain(),\n\t\t};\n\t}\n\n\tprivate async runWithLifecycle(executor: (signal: AbortSignal) => Promise<void>): Promise<void> {\n\t\tif (this.activeRun) {\n\t\t\tthrow new Error(\"Agent is already processing.\");\n\t\t}\n\n\t\tconst abortController = new AbortController();\n\t\tlet resolvePromise = () => {};\n\t\tconst promise = new Promise<void>((resolve) => {\n\t\t\tresolvePromise = resolve;\n\t\t});\n\t\tthis.activeRun = { promise, resolve: resolvePromise, abortController };\n\n\t\tthis._state.isStreaming = true;\n\t\tthis._state.streamingMessage = undefined;\n\t\tthis._state.errorMessage = undefined;\n\n\t\ttry {\n\t\t\tawait executor(abortController.signal);\n\t\t} catch (error) {\n\t\t\tawait this.handleRunFailure(error, abortController.signal.aborted);\n\t\t} finally {\n\t\t\tthis.finishRun();\n\t\t}\n\t}\n\n\tprivate async handleRunFailure(error: unknown, aborted: boolean): Promise<void> {\n\t\tconst failureMessage = {\n\t\t\trole: \"assistant\",\n\t\t\tcontent: [{ type: \"text\", text: \"\" }],\n\t\t\tapi: this._state.model.api,\n\t\t\tprovider: this._state.model.provider,\n\t\t\tmodel: this._state.model.id,\n\t\t\tusage: EMPTY_USAGE,\n\t\t\tstopReason: aborted ? \"aborted\" : \"error\",\n\t\t\terrorMessage: error instanceof Error ? error.message : String(error),\n\t\t\ttimestamp: Date.now(),\n\t\t} satisfies AgentMessage;\n\t\tawait this.processEvents({ type: \"message_start\", message: failureMessage });\n\t\tawait this.processEvents({ type: \"message_end\", message: failureMessage });\n\t\tawait this.processEvents({ type: \"turn_end\", message: failureMessage, toolResults: [] });\n\t\tawait this.processEvents({ type: \"agent_end\", messages: [failureMessage] });\n\t}\n\n\tprivate finishRun(): void {\n\t\tthis._state.isStreaming = false;\n\t\tthis._state.streamingMessage = undefined;\n\t\tthis._state.pendingToolCalls = new Set<string>();\n\t\tthis.activeRun?.resolve();\n\t\tthis.activeRun = undefined;\n\t}\n\n\t/**\n\t * Reduce internal state for a loop event, then await listeners.\n\t *\n\t * `agent_end` only means no further loop events will be emitted. The run is\n\t * considered idle later, after all awaited listeners for `agent_end` finish\n\t * and `finishRun()` clears runtime-owned state.\n\t */\n\tprivate async processEvents(event: AgentEvent): Promise<void> {\n\t\tswitch (event.type) {\n\t\t\tcase \"message_start\":\n\t\t\t\tthis._state.streamingMessage = event.message;\n\t\t\t\tbreak;\n\n\t\t\tcase \"message_update\":\n\t\t\t\tthis._state.streamingMessage = event.message;\n\t\t\t\tbreak;\n\n\t\t\tcase \"message_end\":\n\t\t\t\tthis._state.streamingMessage = undefined;\n\t\t\t\tthis._state.messages.push(event.message);\n\t\t\t\tbreak;\n\n\t\t\tcase \"tool_execution_start\": {\n\t\t\t\tconst pendingToolCalls = new Set(this._state.pendingToolCalls);\n\t\t\t\tpendingToolCalls.add(event.toolCallId);\n\t\t\t\tthis._state.pendingToolCalls = pendingToolCalls;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"tool_execution_end\": {\n\t\t\t\tconst pendingToolCalls = new Set(this._state.pendingToolCalls);\n\t\t\t\tpendingToolCalls.delete(event.toolCallId);\n\t\t\t\tthis._state.pendingToolCalls = pendingToolCalls;\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tcase \"turn_end\":\n\t\t\t\tif (event.message.role === \"assistant\" && event.message.errorMessage) {\n\t\t\t\t\tthis._state.errorMessage = event.message.errorMessage;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase \"agent_end\":\n\t\t\t\tthis._state.streamingMessage = undefined;\n\t\t\t\tbreak;\n\t\t}\n\n\t\tconst signal = this.activeRun?.abortController.signal;\n\t\tif (!signal) {\n\t\t\tthrow new Error(\"Agent listener invoked outside active run\");\n\t\t}\n\t\tfor (const listener of this.listeners) {\n\t\t\tawait listener(event, signal);\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,461 @@
1
+ import type { Api, AssistantMessage, DeferredHandle, ImageContent, Message, Model, Models, RetryPolicy, SimpleStreamOptions, Usage } from "@sammorrowdrums/mcpi-ai";
2
+ import type { AgentMessage, AgentTool, QueueMode, ThinkingLevel } from "../types.ts";
3
+ import type { CompactionSettings } from "./compaction/compaction.ts";
4
+ import { type Result as ResultValue } from "./result.ts";
5
+ import type { BranchSummaryEntry, CompactionEntry, Entry, JsonValue, ProvisionedEntry, Session, SessionTree } from "./session/index.ts";
6
+ import type { TelemetryContext } from "./telemetry.ts";
7
+ import type { AgentHarnessResources, PromptTemplate, Skill } from "./types.ts";
8
+ declare const LaneBusy_base: import("./result.ts").TaggedErrorFactory<"LaneBusy">;
9
+ export declare class LaneBusy extends LaneBusy_base<{
10
+ lane: string;
11
+ operationId: string;
12
+ operationKind: "run" | "compaction" | "navigation";
13
+ message: string;
14
+ }> {
15
+ }
16
+ declare const MissingIdentities_base: import("./result.ts").TaggedErrorFactory<"MissingIdentities">;
17
+ export declare class MissingIdentities extends MissingIdentities_base<{
18
+ lane: string;
19
+ tools: string[];
20
+ models: string[];
21
+ message: string;
22
+ }> {
23
+ }
24
+ declare const NoActiveRun_base: import("./result.ts").TaggedErrorFactory<"NoActiveRun">;
25
+ export declare class NoActiveRun extends NoActiveRun_base<{
26
+ lane: string;
27
+ message: string;
28
+ }> {
29
+ }
30
+ declare const NoActiveOperation_base: import("./result.ts").TaggedErrorFactory<"NoActiveOperation">;
31
+ export declare class NoActiveOperation extends NoActiveOperation_base<{
32
+ lane: string;
33
+ message: string;
34
+ }> {
35
+ }
36
+ declare const NothingToResume_base: import("./result.ts").TaggedErrorFactory<"NothingToResume">;
37
+ export declare class NothingToResume extends NothingToResume_base<{
38
+ lane: string;
39
+ message: string;
40
+ }> {
41
+ }
42
+ declare const InvalidMessage_base: import("./result.ts").TaggedErrorFactory<"InvalidMessage">;
43
+ export declare class InvalidMessage extends InvalidMessage_base<{
44
+ lane: string;
45
+ reason: string;
46
+ message: string;
47
+ }> {
48
+ }
49
+ declare const UnknownSkill_base: import("./result.ts").TaggedErrorFactory<"UnknownSkill">;
50
+ export declare class UnknownSkill extends UnknownSkill_base<{
51
+ name: string;
52
+ message: string;
53
+ }> {
54
+ }
55
+ declare const UnknownTemplate_base: import("./result.ts").TaggedErrorFactory<"UnknownTemplate">;
56
+ export declare class UnknownTemplate extends UnknownTemplate_base<{
57
+ name: string;
58
+ message: string;
59
+ }> {
60
+ }
61
+ declare const UnknownTarget_base: import("./result.ts").TaggedErrorFactory<"UnknownTarget">;
62
+ export declare class UnknownTarget extends UnknownTarget_base<{
63
+ targetId: string;
64
+ message: string;
65
+ }> {
66
+ }
67
+ declare const UnknownQueueItem_base: import("./result.ts").TaggedErrorFactory<"UnknownQueueItem">;
68
+ export declare class UnknownQueueItem extends UnknownQueueItem_base<{
69
+ lane: string;
70
+ entryId: string;
71
+ message: string;
72
+ }> {
73
+ }
74
+ declare const LaneExists_base: import("./result.ts").TaggedErrorFactory<"LaneExists">;
75
+ export declare class LaneExists extends LaneExists_base<{
76
+ lane: string;
77
+ message: string;
78
+ }> {
79
+ }
80
+ declare const InvalidLane_base: import("./result.ts").TaggedErrorFactory<"InvalidLane">;
81
+ export declare class InvalidLane extends InvalidLane_base<{
82
+ lane: string;
83
+ reason: string;
84
+ message: string;
85
+ }> {
86
+ }
87
+ declare const NothingToCompact_base: import("./result.ts").TaggedErrorFactory<"NothingToCompact">;
88
+ export declare class NothingToCompact extends NothingToCompact_base<{
89
+ lane: string;
90
+ message: string;
91
+ }> {
92
+ }
93
+ declare const Closed_base: import("./result.ts").TaggedErrorFactory<"Closed">;
94
+ export declare class Closed extends Closed_base<{
95
+ message: string;
96
+ }> {
97
+ }
98
+ export declare class HarnessFault extends Error {
99
+ readonly cause: unknown;
100
+ constructor(message: string, cause: unknown);
101
+ }
102
+ export declare class HarnessClosed extends Error {
103
+ constructor();
104
+ }
105
+ export declare class HarnessNotImplemented extends Error {
106
+ readonly operation: string;
107
+ constructor(operation: string);
108
+ }
109
+ export interface OperationError {
110
+ code: string;
111
+ message: string;
112
+ }
113
+ export type RunOutcome = {
114
+ kind: "completed";
115
+ leafId: string;
116
+ finalEntryId: string;
117
+ finalMessage: AssistantMessage;
118
+ } | {
119
+ kind: "aborted";
120
+ leafId: string;
121
+ finalEntryId: string;
122
+ finalMessage: AssistantMessage;
123
+ } | {
124
+ kind: "failed";
125
+ leafId: string;
126
+ error: OperationError;
127
+ finalEntryId?: string;
128
+ finalMessage?: AssistantMessage;
129
+ } | {
130
+ kind: "suspended";
131
+ leafId: string;
132
+ finalEntryId: string;
133
+ deferred: DeferredHandle;
134
+ };
135
+ export type CompactionOutcome = {
136
+ kind: "completed";
137
+ leafId: string;
138
+ entry: CompactionEntry;
139
+ } | {
140
+ kind: "declined" | "aborted";
141
+ leafId: string;
142
+ } | {
143
+ kind: "failed";
144
+ leafId: string;
145
+ error: OperationError;
146
+ };
147
+ export type NavigationOutcome = {
148
+ kind: "completed";
149
+ newLeafId: string | null;
150
+ summaryEntry?: BranchSummaryEntry;
151
+ } | {
152
+ kind: "declined" | "aborted";
153
+ leafId: string | null;
154
+ } | {
155
+ kind: "failed";
156
+ leafId: string | null;
157
+ error: OperationError;
158
+ };
159
+ export type RunRejected = LaneBusy | InvalidMessage | UnknownSkill | UnknownTemplate | Closed;
160
+ export type CompactionRejected = LaneBusy | NothingToCompact | Closed;
161
+ export type NavigationRejected = LaneBusy | UnknownTarget | Closed;
162
+ export type ResumeRejected = LaneBusy | NothingToResume | MissingIdentities | Closed;
163
+ export type QueueRejected = NoActiveRun | InvalidMessage | Closed;
164
+ export type CancelQueuedRejected = UnknownQueueItem | Closed;
165
+ export type AbortRejected = NoActiveOperation | Closed;
166
+ export type RunResult = ResultValue<{
167
+ runId: string;
168
+ } & RunOutcome, RunRejected>;
169
+ export type CompactionResult = ResultValue<{
170
+ runId: string;
171
+ } & CompactionOutcome, CompactionRejected>;
172
+ export type NavigationResult = ResultValue<{
173
+ runId: string;
174
+ } & NavigationOutcome, NavigationRejected>;
175
+ export type QueueResult = ResultValue<{
176
+ entryId: string;
177
+ }, QueueRejected>;
178
+ export type CancelQueuedResult = ResultValue<{
179
+ outcome: "cancelled" | "already_consumed" | "already_cleared";
180
+ }, CancelQueuedRejected>;
181
+ export type RecordUsageResult = ResultValue<void, Closed>;
182
+ export type AbortResult = ResultValue<{
183
+ runId: string;
184
+ steer: AgentMessage[];
185
+ followUp: AgentMessage[];
186
+ }, AbortRejected>;
187
+ export type ResumeOutcome = ({
188
+ operation: "run";
189
+ runId: string;
190
+ } & RunOutcome) | ({
191
+ operation: "compaction";
192
+ runId: string;
193
+ } & CompactionOutcome) | ({
194
+ operation: "navigation";
195
+ runId: string;
196
+ } & NavigationOutcome);
197
+ export type ResumeResult = ResultValue<ResumeOutcome, ResumeRejected>;
198
+ export type CreateLaneResult = ResultValue<AgentLane, LaneExists | InvalidLane | UnknownTarget | Closed>;
199
+ export interface NavigateOptions {
200
+ summarize?: boolean;
201
+ customInstructions?: string;
202
+ label?: string;
203
+ }
204
+ export interface SuspendedOperation {
205
+ lane: string;
206
+ kind: "run" | "compaction" | "navigation";
207
+ id: string;
208
+ startedAt: number;
209
+ reason: "crash" | "deferred";
210
+ prompt?: AgentMessage[];
211
+ deferred?: DeferredHandle;
212
+ aborting?: {
213
+ steer: AgentMessage[];
214
+ followUp: AgentMessage[];
215
+ };
216
+ missing: {
217
+ tools: string[];
218
+ models: string[];
219
+ };
220
+ }
221
+ export interface LaneInfo {
222
+ name: string;
223
+ leafId: string | null;
224
+ operation: null | {
225
+ id: string;
226
+ kind: "run" | "compaction" | "navigation";
227
+ status: "running" | "suspended" | "aborting";
228
+ };
229
+ }
230
+ export interface QueuedItem {
231
+ entryId: string;
232
+ message: AgentMessage;
233
+ }
234
+ export interface LaneSnapshot {
235
+ lane: string;
236
+ transcript: Entry[];
237
+ leafId: string | null;
238
+ operation: LaneInfo["operation"];
239
+ queues: {
240
+ steer: QueuedItem[];
241
+ followUp: QueuedItem[];
242
+ nextRun: QueuedItem[];
243
+ };
244
+ pendingWrites: {
245
+ id: string;
246
+ entry: ProvisionedEntry;
247
+ }[];
248
+ faulted: boolean;
249
+ }
250
+ export interface SessionSnapshot {
251
+ lanes: (LaneInfo & {
252
+ suspended?: SuspendedOperation;
253
+ })[];
254
+ faulted: boolean;
255
+ }
256
+ export type ActionInfo = {
257
+ kind: "append_entry";
258
+ entryType: Entry["type"];
259
+ entryId: string;
260
+ } | {
261
+ kind: "append_record";
262
+ recordType: string;
263
+ } | {
264
+ kind: "move_lane";
265
+ to: string | null;
266
+ } | {
267
+ kind: "set_fact";
268
+ fact: "name" | "label";
269
+ } | {
270
+ kind: "try_finish_run";
271
+ outcome: "completed" | "failed";
272
+ } | {
273
+ kind: "finish_operation";
274
+ outcome: "completed" | "declined" | "failed" | "aborted";
275
+ } | {
276
+ kind: "commit_follow_up";
277
+ } | {
278
+ kind: "consume_queue_item";
279
+ queue: "steer" | "followUp";
280
+ entryId: string;
281
+ } | {
282
+ kind: "apply_pending_write";
283
+ entryId: string;
284
+ } | {
285
+ kind: "stream_assistant";
286
+ step: "assistant" | "compaction" | "branch_summary";
287
+ attempt: number;
288
+ } | {
289
+ kind: "execute_tool";
290
+ toolCallId: string;
291
+ toolName: string;
292
+ } | {
293
+ kind: "fetch_deferred" | "cancel_deferred";
294
+ provider: string;
295
+ id: string;
296
+ } | {
297
+ kind: "hook";
298
+ name: HookName;
299
+ } | {
300
+ kind: "sleep";
301
+ delayMs: number;
302
+ };
303
+ export type HookName = "before_run" | "before_resume" | "before_run_end" | "transform_context" | "before_request" | "before_payload" | "after_response" | "before_tool" | "after_tool" | "before_compaction" | "before_navigation";
304
+ export interface Hooks {
305
+ on(name: HookName, handler: (event: unknown) => unknown | Promise<unknown>, options?: {
306
+ id?: string;
307
+ }): () => void;
308
+ }
309
+ export interface Events {
310
+ on(type: string, listener: (event: unknown) => void | Promise<void>): () => void;
311
+ }
312
+ export type HarnessTool = AgentTool & {
313
+ replay?: "never" | "safe";
314
+ };
315
+ export type Resources = AgentHarnessResources<Skill, PromptTemplate>;
316
+ export type StreamOptions = SimpleStreamOptions;
317
+ export type StreamOptionsPatch = Partial<SimpleStreamOptions>;
318
+ export type EntryProjector = (entry: Entry) => AgentMessage[] | Promise<AgentMessage[]>;
319
+ export interface AgentHarnessOptions {
320
+ session: Session;
321
+ models: Models;
322
+ model: Model<Api>;
323
+ thinkingLevel?: ThinkingLevel;
324
+ activeToolNames?: string[];
325
+ tools?: HarnessTool[];
326
+ toolContext?: object | (() => object | Promise<object>);
327
+ systemPrompt?: string | (() => string | Promise<string>);
328
+ resources?: Resources;
329
+ streamOptions?: StreamOptions;
330
+ retry?: RetryPolicy;
331
+ compaction?: CompactionSettings;
332
+ steeringMode?: QueueMode;
333
+ followUpMode?: QueueMode;
334
+ toolExecution?: "sequential" | "parallel";
335
+ drive?: "automatic" | "manual";
336
+ toProviderMessages?: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;
337
+ entryProjectors?: Record<string, EntryProjector>;
338
+ context?: TelemetryContext;
339
+ }
340
+ export interface WatchHandle<TSnapshot> {
341
+ snapshot: TSnapshot;
342
+ start(listener: (event: unknown) => void): void;
343
+ unsubscribe(): void;
344
+ }
345
+ export interface AgentLane {
346
+ readonly name: string;
347
+ getLeafId(): Promise<string | null>;
348
+ prompt(text: string, images?: ImageContent[]): Promise<RunResult>;
349
+ prompt(message: AgentMessage | AgentMessage[]): Promise<RunResult>;
350
+ skill(name: string, additionalInstructions?: string): Promise<RunResult>;
351
+ promptFromTemplate(name: string, args?: string[]): Promise<RunResult>;
352
+ compact(options?: {
353
+ customInstructions?: string;
354
+ }): Promise<CompactionResult>;
355
+ navigateTree(targetId: string | null, options?: NavigateOptions): Promise<NavigationResult>;
356
+ resume(): Promise<ResumeResult>;
357
+ abort(): Promise<AbortResult>;
358
+ steer(text: string, images?: ImageContent[]): Promise<QueueResult>;
359
+ steer(message: AgentMessage): Promise<QueueResult>;
360
+ followUp(text: string, images?: ImageContent[]): Promise<QueueResult>;
361
+ followUp(message: AgentMessage): Promise<QueueResult>;
362
+ nextRun(text: string, images?: ImageContent[]): Promise<QueueResult>;
363
+ nextRun(message: AgentMessage): Promise<QueueResult>;
364
+ cancelQueued(entryId: string): Promise<CancelQueuedResult>;
365
+ recordUsage(usage: Usage, options?: {
366
+ entryId?: string;
367
+ details?: JsonValue;
368
+ }): Promise<RecordUsageResult>;
369
+ waitForIdle(): Promise<void>;
370
+ runWhenIdle(callback: () => void | Promise<void>): Promise<void>;
371
+ peekAction(): Promise<ActionInfo | undefined>;
372
+ executeAction(): Promise<ActionInfo | undefined>;
373
+ runToCompletion(): Promise<void>;
374
+ getModel(): Promise<Model<Api>>;
375
+ setModel(model: Model<Api>): Promise<void>;
376
+ getThinkingLevel(): Promise<ThinkingLevel>;
377
+ setThinkingLevel(level: ThinkingLevel): Promise<void>;
378
+ getActiveTools(): Promise<string[]>;
379
+ setActiveTools(names: string[]): Promise<void>;
380
+ readonly session: SessionTree;
381
+ watch(): Promise<WatchHandle<LaneSnapshot>>;
382
+ }
383
+ export declare class AgentHarness implements AgentLane {
384
+ readonly name = "main";
385
+ readonly session: SessionTree;
386
+ readonly hooks: Hooks;
387
+ readonly events: Events;
388
+ private readonly durableSession;
389
+ private model;
390
+ private thinkingLevel;
391
+ private activeToolNames;
392
+ private tools;
393
+ private resources;
394
+ private streamOptions;
395
+ private retryPolicy;
396
+ private compactionSettings;
397
+ private steeringMode;
398
+ private followUpMode;
399
+ private closed;
400
+ private constructor();
401
+ static create(options: AgentHarnessOptions): Promise<{
402
+ harness: AgentHarness;
403
+ suspended: SuspendedOperation[];
404
+ }>;
405
+ private unavailable;
406
+ getLeafId(): Promise<string | null>;
407
+ prompt(_text: string, _images?: ImageContent[]): Promise<RunResult>;
408
+ prompt(_message: AgentMessage | AgentMessage[]): Promise<RunResult>;
409
+ skill(_name: string, _additionalInstructions?: string): Promise<RunResult>;
410
+ promptFromTemplate(_name: string, _args?: string[]): Promise<RunResult>;
411
+ compact(_options?: {
412
+ customInstructions?: string;
413
+ }): Promise<CompactionResult>;
414
+ navigateTree(_targetId: string | null, _options?: NavigateOptions): Promise<NavigationResult>;
415
+ resume(): Promise<ResumeResult>;
416
+ abort(): Promise<AbortResult>;
417
+ steer(_text: string, _images?: ImageContent[]): Promise<QueueResult>;
418
+ steer(_message: AgentMessage): Promise<QueueResult>;
419
+ followUp(_text: string, _images?: ImageContent[]): Promise<QueueResult>;
420
+ followUp(_message: AgentMessage): Promise<QueueResult>;
421
+ nextRun(_text: string, _images?: ImageContent[]): Promise<QueueResult>;
422
+ nextRun(_message: AgentMessage): Promise<QueueResult>;
423
+ cancelQueued(_entryId: string): Promise<CancelQueuedResult>;
424
+ recordUsage(_usage: Usage, _options?: {
425
+ entryId?: string;
426
+ details?: JsonValue;
427
+ }): Promise<RecordUsageResult>;
428
+ waitForIdle(): Promise<void>;
429
+ runWhenIdle(_callback: () => void | Promise<void>): Promise<void>;
430
+ peekAction(): Promise<ActionInfo | undefined>;
431
+ executeAction(): Promise<ActionInfo | undefined>;
432
+ runToCompletion(): Promise<void>;
433
+ getModel(): Promise<Model<Api>>;
434
+ setModel(model: Model<Api>): Promise<void>;
435
+ getThinkingLevel(): Promise<ThinkingLevel>;
436
+ setThinkingLevel(level: ThinkingLevel): Promise<void>;
437
+ getActiveTools(): Promise<string[]>;
438
+ setActiveTools(names: string[]): Promise<void>;
439
+ watch(): Promise<WatchHandle<LaneSnapshot>>;
440
+ lane(_name: string): Promise<AgentLane | undefined>;
441
+ createLane(_name: string, _at: string | null): Promise<CreateLaneResult>;
442
+ lanes(): Promise<LaneInfo[]>;
443
+ getTools(): Promise<HarnessTool[]>;
444
+ setTools(tools: HarnessTool[], activeNames?: string[]): Promise<void>;
445
+ getResources(): Promise<Resources>;
446
+ setResources(resources: Resources): Promise<void>;
447
+ getStreamOptions(): Promise<StreamOptions>;
448
+ setStreamOptions(options: StreamOptions): Promise<void>;
449
+ getRetryPolicy(): Promise<RetryPolicy>;
450
+ setRetryPolicy(policy: RetryPolicy): Promise<void>;
451
+ getCompactionSettings(): Promise<CompactionSettings>;
452
+ setCompactionSettings(settings: CompactionSettings): Promise<void>;
453
+ getSteeringMode(): Promise<QueueMode>;
454
+ setSteeringMode(mode: QueueMode): Promise<void>;
455
+ getFollowUpMode(): Promise<QueueMode>;
456
+ setFollowUpMode(mode: QueueMode): Promise<void>;
457
+ watchSession(): Promise<WatchHandle<SessionSnapshot>>;
458
+ close(): Promise<void>;
459
+ }
460
+ export {};
461
+ //# sourceMappingURL=agent-harness.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-harness.d.ts","sourceRoot":"","sources":["../../src/harness/agent-harness.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tApi,\n\tAssistantMessage,\n\tDeferredHandle,\n\tImageContent,\n\tMessage,\n\tModel,\n\tModels,\n\tRetryPolicy,\n\tSimpleStreamOptions,\n\tUsage,\n} from \"@sammorrowdrums/mcpi-ai\";\nimport type { AgentMessage, AgentTool, QueueMode, ThinkingLevel } from \"../types.ts\";\nimport type { CompactionSettings } from \"./compaction/compaction.ts\";\nimport { type Result as ResultValue, TaggedError } from \"./result.ts\";\nimport type {\n\tBranchSummaryEntry,\n\tCompactionEntry,\n\tEntry,\n\tJsonValue,\n\tProvisionedEntry,\n\tSession,\n\tSessionTree,\n} from \"./session/index.ts\";\nimport type { TelemetryContext } from \"./telemetry.ts\";\nimport type { AgentHarnessResources, PromptTemplate, Skill } from \"./types.ts\";\n\nexport class LaneBusy extends TaggedError(\"LaneBusy\")<{\n\tlane: string;\n\toperationId: string;\n\toperationKind: \"run\" | \"compaction\" | \"navigation\";\n\tmessage: string;\n}> {}\nexport class MissingIdentities extends TaggedError(\"MissingIdentities\")<{\n\tlane: string;\n\ttools: string[];\n\tmodels: 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 InvalidMessage extends TaggedError(\"InvalidMessage\")<{ lane: string; reason: string; message: string }> {}\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 UnknownQueueItem extends TaggedError(\"UnknownQueueItem\")<{\n\tlane: string;\n\tentryId: string;\n\tmessage: string;\n}> {}\nexport class LaneExists extends TaggedError(\"LaneExists\")<{ lane: string; message: string }> {}\nexport class InvalidLane extends TaggedError(\"InvalidLane\")<{ lane: string; reason: string; message: string }> {}\nexport class NothingToCompact extends TaggedError(\"NothingToCompact\")<{ lane: string; message: string }> {}\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 class HarnessNotImplemented extends Error {\n\treadonly operation: string;\n\n\tconstructor(operation: string) {\n\t\tsuper(`AgentHarness.${operation} is not implemented yet`);\n\t\tthis.name = \"HarnessNotImplemented\";\n\t\tthis.operation = operation;\n\t}\n}\n\nexport interface OperationError {\n\tcode: string;\n\tmessage: string;\n}\n\nexport type RunOutcome =\n\t| { kind: \"completed\"; leafId: string; finalEntryId: string; finalMessage: AssistantMessage }\n\t| { kind: \"aborted\"; leafId: string; finalEntryId: string; finalMessage: AssistantMessage }\n\t| { kind: \"failed\"; leafId: string; error: OperationError; finalEntryId?: string; finalMessage?: AssistantMessage }\n\t| { kind: \"suspended\"; leafId: string; finalEntryId: string; deferred: DeferredHandle };\n\nexport type CompactionOutcome =\n\t| { kind: \"completed\"; leafId: string; entry: CompactionEntry }\n\t| { kind: \"declined\" | \"aborted\"; leafId: string }\n\t| { kind: \"failed\"; leafId: string; error: OperationError };\n\nexport type NavigationOutcome =\n\t| { kind: \"completed\"; newLeafId: string | null; summaryEntry?: BranchSummaryEntry }\n\t| { kind: \"declined\" | \"aborted\"; leafId: string | null }\n\t| { kind: \"failed\"; leafId: string | null; error: OperationError };\n\nexport type RunRejected = LaneBusy | InvalidMessage | UnknownSkill | UnknownTemplate | Closed;\nexport type CompactionRejected = LaneBusy | NothingToCompact | Closed;\nexport type NavigationRejected = LaneBusy | UnknownTarget | Closed;\nexport type ResumeRejected = LaneBusy | NothingToResume | MissingIdentities | Closed;\nexport type QueueRejected = NoActiveRun | InvalidMessage | Closed;\nexport type CancelQueuedRejected = UnknownQueueItem | Closed;\nexport type AbortRejected = NoActiveOperation | Closed;\n\nexport type RunResult = ResultValue<{ runId: string } & RunOutcome, RunRejected>;\nexport type CompactionResult = ResultValue<{ runId: string } & CompactionOutcome, CompactionRejected>;\nexport type NavigationResult = ResultValue<{ runId: string } & NavigationOutcome, NavigationRejected>;\nexport type QueueResult = ResultValue<{ entryId: string }, QueueRejected>;\nexport type CancelQueuedResult = ResultValue<\n\t{ outcome: \"cancelled\" | \"already_consumed\" | \"already_cleared\" },\n\tCancelQueuedRejected\n>;\nexport type RecordUsageResult = ResultValue<void, Closed>;\nexport type AbortResult = ResultValue<\n\t{ runId: string; steer: AgentMessage[]; followUp: AgentMessage[] },\n\tAbortRejected\n>;\n\nexport type ResumeOutcome =\n\t| ({ operation: \"run\"; runId: string } & RunOutcome)\n\t| ({ operation: \"compaction\"; runId: string } & CompactionOutcome)\n\t| ({ operation: \"navigation\"; runId: string } & NavigationOutcome);\nexport type ResumeResult = ResultValue<ResumeOutcome, ResumeRejected>;\nexport type CreateLaneResult = ResultValue<AgentLane, LaneExists | InvalidLane | UnknownTarget | Closed>;\n\nexport interface NavigateOptions {\n\tsummarize?: boolean;\n\tcustomInstructions?: string;\n\tlabel?: string;\n}\n\nexport interface SuspendedOperation {\n\tlane: string;\n\tkind: \"run\" | \"compaction\" | \"navigation\";\n\tid: string;\n\tstartedAt: number;\n\treason: \"crash\" | \"deferred\";\n\tprompt?: AgentMessage[];\n\tdeferred?: DeferredHandle;\n\taborting?: { steer: AgentMessage[]; followUp: AgentMessage[] };\n\tmissing: { tools: string[]; models: string[] };\n}\n\nexport interface LaneInfo {\n\tname: string;\n\tleafId: string | null;\n\toperation: null | {\n\t\tid: string;\n\t\tkind: \"run\" | \"compaction\" | \"navigation\";\n\t\tstatus: \"running\" | \"suspended\" | \"aborting\";\n\t};\n}\n\nexport interface QueuedItem {\n\tentryId: string;\n\tmessage: AgentMessage;\n}\n\nexport interface LaneSnapshot {\n\tlane: string;\n\ttranscript: Entry[];\n\tleafId: string | null;\n\toperation: LaneInfo[\"operation\"];\n\tqueues: { steer: QueuedItem[]; followUp: QueuedItem[]; nextRun: QueuedItem[] };\n\tpendingWrites: { id: string; entry: ProvisionedEntry }[];\n\tfaulted: boolean;\n}\n\nexport interface SessionSnapshot {\n\tlanes: (LaneInfo & { suspended?: SuspendedOperation })[];\n\tfaulted: boolean;\n}\n\nexport type ActionInfo =\n\t| { kind: \"append_entry\"; entryType: Entry[\"type\"]; entryId: string }\n\t| { kind: \"append_record\"; recordType: string }\n\t| { kind: \"move_lane\"; to: string | null }\n\t| { kind: \"set_fact\"; fact: \"name\" | \"label\" }\n\t| { kind: \"try_finish_run\"; outcome: \"completed\" | \"failed\" }\n\t| { kind: \"finish_operation\"; outcome: \"completed\" | \"declined\" | \"failed\" | \"aborted\" }\n\t| { kind: \"commit_follow_up\" }\n\t| { kind: \"consume_queue_item\"; queue: \"steer\" | \"followUp\"; entryId: string }\n\t| { kind: \"apply_pending_write\"; entryId: string }\n\t| { kind: \"stream_assistant\"; step: \"assistant\" | \"compaction\" | \"branch_summary\"; attempt: number }\n\t| { kind: \"execute_tool\"; toolCallId: string; toolName: string }\n\t| { kind: \"fetch_deferred\" | \"cancel_deferred\"; provider: string; id: string }\n\t| { kind: \"hook\"; name: HookName }\n\t| { kind: \"sleep\"; delayMs: number };\n\nexport type HookName =\n\t| \"before_run\"\n\t| \"before_resume\"\n\t| \"before_run_end\"\n\t| \"transform_context\"\n\t| \"before_request\"\n\t| \"before_payload\"\n\t| \"after_response\"\n\t| \"before_tool\"\n\t| \"after_tool\"\n\t| \"before_compaction\"\n\t| \"before_navigation\";\n\nexport interface Hooks {\n\ton(name: HookName, handler: (event: unknown) => unknown | Promise<unknown>, options?: { id?: string }): () => void;\n}\n\nexport interface Events {\n\ton(type: string, listener: (event: unknown) => void | Promise<void>): () => void;\n}\n\nclass UnavailableRegistry implements Hooks, Events {\n\tprivate readonly operation: string;\n\tprivate readonly isClosed: () => boolean;\n\n\tconstructor(operation: string, isClosed: () => boolean) {\n\t\tthis.operation = operation;\n\t\tthis.isClosed = isClosed;\n\t}\n\n\ton(\n\t\t_name: HookName | string,\n\t\t_handler: (event: unknown) => unknown | Promise<unknown>,\n\t\t_options?: { id?: string },\n\t): () => void {\n\t\tthrow this.isClosed() ? new HarnessClosed() : new HarnessNotImplemented(this.operation);\n\t}\n}\n\nexport type HarnessTool = AgentTool & { replay?: \"never\" | \"safe\" };\nexport type Resources = AgentHarnessResources<Skill, PromptTemplate>;\nexport type StreamOptions = SimpleStreamOptions;\nexport type StreamOptionsPatch = Partial<SimpleStreamOptions>;\nexport type EntryProjector = (entry: Entry) => AgentMessage[] | Promise<AgentMessage[]>;\n\nexport interface AgentHarnessOptions {\n\tsession: Session;\n\tmodels: Models;\n\tmodel: Model<Api>;\n\tthinkingLevel?: ThinkingLevel;\n\tactiveToolNames?: string[];\n\ttools?: HarnessTool[];\n\ttoolContext?: object | (() => object | Promise<object>);\n\tsystemPrompt?: string | (() => string | Promise<string>);\n\tresources?: Resources;\n\tstreamOptions?: StreamOptions;\n\tretry?: RetryPolicy;\n\tcompaction?: CompactionSettings;\n\tsteeringMode?: QueueMode;\n\tfollowUpMode?: QueueMode;\n\ttoolExecution?: \"sequential\" | \"parallel\";\n\tdrive?: \"automatic\" | \"manual\";\n\ttoProviderMessages?: (messages: AgentMessage[]) => Message[] | Promise<Message[]>;\n\tentryProjectors?: Record<string, EntryProjector>;\n\tcontext?: TelemetryContext;\n}\n\nexport interface WatchHandle<TSnapshot> {\n\tsnapshot: TSnapshot;\n\tstart(listener: (event: unknown) => void): void;\n\tunsubscribe(): void;\n}\n\nexport interface AgentLane {\n\treadonly name: string;\n\tgetLeafId(): Promise<string | null>;\n\tprompt(text: string, images?: ImageContent[]): Promise<RunResult>;\n\tprompt(message: AgentMessage | AgentMessage[]): Promise<RunResult>;\n\tskill(name: string, additionalInstructions?: string): Promise<RunResult>;\n\tpromptFromTemplate(name: string, args?: string[]): Promise<RunResult>;\n\tcompact(options?: { customInstructions?: string }): Promise<CompactionResult>;\n\tnavigateTree(targetId: string | null, options?: NavigateOptions): Promise<NavigationResult>;\n\tresume(): Promise<ResumeResult>;\n\tabort(): Promise<AbortResult>;\n\tsteer(text: string, images?: ImageContent[]): Promise<QueueResult>;\n\tsteer(message: AgentMessage): Promise<QueueResult>;\n\tfollowUp(text: string, images?: ImageContent[]): Promise<QueueResult>;\n\tfollowUp(message: AgentMessage): Promise<QueueResult>;\n\tnextRun(text: string, images?: ImageContent[]): Promise<QueueResult>;\n\tnextRun(message: AgentMessage): Promise<QueueResult>;\n\tcancelQueued(entryId: string): Promise<CancelQueuedResult>;\n\trecordUsage(usage: Usage, options?: { entryId?: string; details?: JsonValue }): Promise<RecordUsageResult>;\n\twaitForIdle(): Promise<void>;\n\trunWhenIdle(callback: () => void | Promise<void>): Promise<void>;\n\tpeekAction(): Promise<ActionInfo | undefined>;\n\texecuteAction(): Promise<ActionInfo | undefined>;\n\trunToCompletion(): Promise<void>;\n\tgetModel(): Promise<Model<Api>>;\n\tsetModel(model: Model<Api>): Promise<void>;\n\tgetThinkingLevel(): Promise<ThinkingLevel>;\n\tsetThinkingLevel(level: ThinkingLevel): Promise<void>;\n\tgetActiveTools(): Promise<string[]>;\n\tsetActiveTools(names: string[]): Promise<void>;\n\treadonly session: SessionTree;\n\twatch(): Promise<WatchHandle<LaneSnapshot>>;\n}\n\nexport class AgentHarness implements AgentLane {\n\treadonly name = \"main\";\n\treadonly session: SessionTree;\n\treadonly hooks: Hooks;\n\treadonly events: Events;\n\tprivate readonly durableSession: Session;\n\tprivate model: Model<Api>;\n\tprivate thinkingLevel: ThinkingLevel;\n\tprivate activeToolNames: string[];\n\tprivate tools: HarnessTool[];\n\tprivate resources: Resources;\n\tprivate streamOptions: StreamOptions;\n\tprivate retryPolicy: RetryPolicy;\n\tprivate compactionSettings: CompactionSettings;\n\tprivate steeringMode: QueueMode;\n\tprivate followUpMode: QueueMode;\n\tprivate closed = false;\n\n\tprivate constructor(options: AgentHarnessOptions) {\n\t\tthis.durableSession = options.session;\n\t\tthis.session = options.session;\n\t\tthis.hooks = new UnavailableRegistry(\"hooks.on\", () => this.closed);\n\t\tthis.events = new UnavailableRegistry(\"events.on\", () => this.closed);\n\t\tthis.model = options.model;\n\t\tthis.thinkingLevel = options.thinkingLevel ?? \"off\";\n\t\tthis.activeToolNames = [...(options.activeToolNames ?? options.tools?.map((tool) => tool.name) ?? [])];\n\t\tthis.tools = [...(options.tools ?? [])];\n\t\tthis.resources = {\n\t\t\tskills: options.resources?.skills ? [...options.resources.skills] : undefined,\n\t\t\tpromptTemplates: options.resources?.promptTemplates ? [...options.resources.promptTemplates] : undefined,\n\t\t};\n\t\tthis.streamOptions = { ...(options.streamOptions ?? {}) };\n\t\tthis.retryPolicy = options.retry ?? { enabled: false, maxRetries: 0, baseDelayMs: 1000 };\n\t\tthis.compactionSettings = options.compaction ?? {\n\t\t\tenabled: true,\n\t\t\treserveTokens: 16384,\n\t\t\tkeepRecentTokens: 20000,\n\t\t};\n\t\tthis.steeringMode = options.steeringMode ?? \"one-at-a-time\";\n\t\tthis.followUpMode = options.followUpMode ?? \"one-at-a-time\";\n\t}\n\n\tstatic async create(\n\t\toptions: AgentHarnessOptions,\n\t): Promise<{ harness: AgentHarness; suspended: SuspendedOperation[] }> {\n\t\tconst [record] = await options.session.findRecords({ limit: 1 });\n\t\tif (record !== undefined) throw new HarnessNotImplemented(\"create.restore\");\n\t\treturn { harness: new AgentHarness(options), suspended: [] };\n\t}\n\n\tprivate unavailable<T>(operation: string): Promise<T> {\n\t\treturn Promise.reject(this.closed ? new HarnessClosed() : new HarnessNotImplemented(operation));\n\t}\n\n\tasync getLeafId(): Promise<string | null> {\n\t\treturn this.durableSession.getLeafId();\n\t}\n\n\tasync prompt(_text: string, _images?: ImageContent[]): Promise<RunResult>;\n\tasync prompt(_message: AgentMessage | AgentMessage[]): Promise<RunResult>;\n\tasync prompt(_input: string | AgentMessage | AgentMessage[], _images?: ImageContent[]): Promise<RunResult> {\n\t\treturn this.unavailable(\"prompt\");\n\t}\n\tasync skill(_name: string, _additionalInstructions?: string): Promise<RunResult> {\n\t\treturn this.unavailable(\"skill\");\n\t}\n\tasync promptFromTemplate(_name: string, _args?: string[]): Promise<RunResult> {\n\t\treturn this.unavailable(\"promptFromTemplate\");\n\t}\n\tasync compact(_options?: { customInstructions?: string }): Promise<CompactionResult> {\n\t\treturn this.unavailable(\"compact\");\n\t}\n\tasync navigateTree(_targetId: string | null, _options?: NavigateOptions): Promise<NavigationResult> {\n\t\treturn this.unavailable(\"navigateTree\");\n\t}\n\tasync resume(): Promise<ResumeResult> {\n\t\treturn this.unavailable(\"resume\");\n\t}\n\tasync abort(): Promise<AbortResult> {\n\t\treturn this.unavailable(\"abort\");\n\t}\n\tasync steer(_text: string, _images?: ImageContent[]): Promise<QueueResult>;\n\tasync steer(_message: AgentMessage): Promise<QueueResult>;\n\tasync steer(_input: string | AgentMessage, _images?: ImageContent[]): Promise<QueueResult> {\n\t\treturn this.unavailable(\"steer\");\n\t}\n\tasync followUp(_text: string, _images?: ImageContent[]): Promise<QueueResult>;\n\tasync followUp(_message: AgentMessage): Promise<QueueResult>;\n\tasync followUp(_input: string | AgentMessage, _images?: ImageContent[]): Promise<QueueResult> {\n\t\treturn this.unavailable(\"followUp\");\n\t}\n\tasync nextRun(_text: string, _images?: ImageContent[]): Promise<QueueResult>;\n\tasync nextRun(_message: AgentMessage): Promise<QueueResult>;\n\tasync nextRun(_input: string | AgentMessage, _images?: ImageContent[]): Promise<QueueResult> {\n\t\treturn this.unavailable(\"nextRun\");\n\t}\n\tasync cancelQueued(_entryId: string): Promise<CancelQueuedResult> {\n\t\treturn this.unavailable(\"cancelQueued\");\n\t}\n\tasync recordUsage(_usage: Usage, _options?: { entryId?: string; details?: JsonValue }): Promise<RecordUsageResult> {\n\t\treturn this.unavailable(\"recordUsage\");\n\t}\n\tasync waitForIdle(): Promise<void> {\n\t\treturn this.unavailable(\"waitForIdle\");\n\t}\n\tasync runWhenIdle(_callback: () => void | Promise<void>): Promise<void> {\n\t\treturn this.unavailable(\"runWhenIdle\");\n\t}\n\tasync peekAction(): Promise<ActionInfo | undefined> {\n\t\treturn this.unavailable(\"peekAction\");\n\t}\n\tasync executeAction(): Promise<ActionInfo | undefined> {\n\t\treturn this.unavailable(\"executeAction\");\n\t}\n\tasync runToCompletion(): Promise<void> {\n\t\treturn this.unavailable(\"runToCompletion\");\n\t}\n\tasync getModel(): Promise<Model<Api>> {\n\t\treturn this.model;\n\t}\n\tasync setModel(model: Model<Api>): Promise<void> {\n\t\tthis.model = model;\n\t}\n\tasync getThinkingLevel(): Promise<ThinkingLevel> {\n\t\treturn this.thinkingLevel;\n\t}\n\tasync setThinkingLevel(level: ThinkingLevel): Promise<void> {\n\t\tthis.thinkingLevel = level;\n\t}\n\tasync getActiveTools(): Promise<string[]> {\n\t\treturn [...this.activeToolNames];\n\t}\n\tasync setActiveTools(names: string[]): Promise<void> {\n\t\tthis.activeToolNames = [...names];\n\t}\n\tasync watch(): Promise<WatchHandle<LaneSnapshot>> {\n\t\treturn this.unavailable(\"watch\");\n\t}\n\n\tasync lane(_name: string): Promise<AgentLane | undefined> {\n\t\treturn this.unavailable(\"lane\");\n\t}\n\tasync createLane(_name: string, _at: string | null): Promise<CreateLaneResult> {\n\t\treturn this.unavailable(\"createLane\");\n\t}\n\tasync lanes(): Promise<LaneInfo[]> {\n\t\treturn this.unavailable(\"lanes\");\n\t}\n\tasync getTools(): Promise<HarnessTool[]> {\n\t\treturn [...this.tools];\n\t}\n\tasync setTools(tools: HarnessTool[], activeNames?: string[]): Promise<void> {\n\t\tthis.tools = [...tools];\n\t\tthis.activeToolNames = [...(activeNames ?? tools.map((tool) => tool.name))];\n\t}\n\tasync getResources(): Promise<Resources> {\n\t\treturn {\n\t\t\tskills: this.resources.skills ? [...this.resources.skills] : undefined,\n\t\t\tpromptTemplates: this.resources.promptTemplates ? [...this.resources.promptTemplates] : undefined,\n\t\t};\n\t}\n\tasync setResources(resources: Resources): Promise<void> {\n\t\tthis.resources = {\n\t\t\tskills: resources.skills ? [...resources.skills] : undefined,\n\t\t\tpromptTemplates: resources.promptTemplates ? [...resources.promptTemplates] : undefined,\n\t\t};\n\t}\n\tasync getStreamOptions(): Promise<StreamOptions> {\n\t\treturn { ...this.streamOptions };\n\t}\n\tasync setStreamOptions(options: StreamOptions): Promise<void> {\n\t\tthis.streamOptions = { ...options };\n\t}\n\tasync getRetryPolicy(): Promise<RetryPolicy> {\n\t\treturn { ...this.retryPolicy };\n\t}\n\tasync setRetryPolicy(policy: RetryPolicy): Promise<void> {\n\t\tthis.retryPolicy = { ...policy };\n\t}\n\tasync getCompactionSettings(): Promise<CompactionSettings> {\n\t\treturn { ...this.compactionSettings };\n\t}\n\tasync setCompactionSettings(settings: CompactionSettings): Promise<void> {\n\t\tthis.compactionSettings = { ...settings };\n\t}\n\tasync getSteeringMode(): Promise<QueueMode> {\n\t\treturn this.steeringMode;\n\t}\n\tasync setSteeringMode(mode: QueueMode): Promise<void> {\n\t\tthis.steeringMode = mode;\n\t}\n\tasync getFollowUpMode(): Promise<QueueMode> {\n\t\treturn this.followUpMode;\n\t}\n\tasync setFollowUpMode(mode: QueueMode): Promise<void> {\n\t\tthis.followUpMode = mode;\n\t}\n\tasync watchSession(): Promise<WatchHandle<SessionSnapshot>> {\n\t\treturn this.unavailable(\"watchSession\");\n\t}\n\tasync close(): Promise<void> {\n\t\tthis.closed = true;\n\t}\n}\n"]}