@monoes/monomindcli 2.9.25 → 2.10.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 (284) hide show
  1. package/.claude/helpers/control-start.cjs +15 -1
  2. package/.claude/helpers/handlers/edit-handler.cjs +3 -2
  3. package/.claude/helpers/handlers/route-handler.cjs +19 -4
  4. package/.claude/helpers/hook-handler.cjs +2 -0
  5. package/.claude/helpers/utils/monograph.cjs +8 -0
  6. package/.claude/skills/mastermind/SKILL.md +21 -0
  7. package/.claude/skills/mastermind/references/antigravity-tools.md +60 -0
  8. package/.claude/skills/mastermind/references/claude-code-tools.md +50 -0
  9. package/.claude/skills/mastermind/references/codex-tools.md +64 -0
  10. package/.claude/skills/mastermind/references/copilot-tools.md +49 -0
  11. package/.claude/skills/mastermind/references/gemini-tools.md +63 -0
  12. package/.claude/skills/mastermind/references/pi-tools.md +28 -0
  13. package/.claude/skills/mastermind-org/SKILL.md +16 -0
  14. package/dist/src/commands/agent-exec.d.ts +19 -0
  15. package/dist/src/commands/agent-exec.d.ts.map +1 -0
  16. package/dist/src/commands/agent-exec.js +301 -0
  17. package/dist/src/commands/agent-exec.js.map +1 -0
  18. package/dist/src/commands/agent.d.ts.map +1 -1
  19. package/dist/src/commands/agent.js +12 -0
  20. package/dist/src/commands/agent.js.map +1 -1
  21. package/dist/src/commands/browse.d.ts +2 -10
  22. package/dist/src/commands/browse.d.ts.map +1 -1
  23. package/dist/src/commands/browse.js +7 -2
  24. package/dist/src/commands/browse.js.map +1 -1
  25. package/dist/src/commands/doctor.d.ts.map +1 -1
  26. package/dist/src/commands/doctor.js +16 -1
  27. package/dist/src/commands/doctor.js.map +1 -1
  28. package/dist/src/commands/index.d.ts +1 -1
  29. package/dist/src/commands/index.d.ts.map +1 -1
  30. package/dist/src/commands/index.js +10 -1
  31. package/dist/src/commands/index.js.map +1 -1
  32. package/dist/src/commands/init.d.ts.map +1 -1
  33. package/dist/src/commands/init.js +63 -5
  34. package/dist/src/commands/init.js.map +1 -1
  35. package/dist/src/commands/mastermind.d.ts +10 -0
  36. package/dist/src/commands/mastermind.d.ts.map +1 -0
  37. package/dist/src/commands/mastermind.js +62 -0
  38. package/dist/src/commands/mastermind.js.map +1 -0
  39. package/dist/src/commands/org-observe.d.ts +11 -0
  40. package/dist/src/commands/org-observe.d.ts.map +1 -1
  41. package/dist/src/commands/org-observe.js +200 -2
  42. package/dist/src/commands/org-observe.js.map +1 -1
  43. package/dist/src/commands/org.d.ts.map +1 -1
  44. package/dist/src/commands/org.js +154 -0
  45. package/dist/src/commands/org.js.map +1 -1
  46. package/dist/src/commands/platforms.d.ts +9 -7
  47. package/dist/src/commands/platforms.d.ts.map +1 -1
  48. package/dist/src/commands/platforms.js +225 -571
  49. package/dist/src/commands/platforms.js.map +1 -1
  50. package/dist/src/commands/status.d.ts.map +1 -1
  51. package/dist/src/commands/status.js +7 -1
  52. package/dist/src/commands/status.js.map +1 -1
  53. package/dist/src/commands/update.d.ts.map +1 -1
  54. package/dist/src/commands/update.js +22 -0
  55. package/dist/src/commands/update.js.map +1 -1
  56. package/dist/src/index.d.ts +3 -1
  57. package/dist/src/index.d.ts.map +1 -1
  58. package/dist/src/index.js +10 -3
  59. package/dist/src/index.js.map +1 -1
  60. package/dist/src/init/codex-generator.d.ts.map +1 -1
  61. package/dist/src/init/codex-generator.js +5 -3
  62. package/dist/src/init/codex-generator.js.map +1 -1
  63. package/dist/src/init/executor.d.ts +6 -0
  64. package/dist/src/init/executor.d.ts.map +1 -1
  65. package/dist/src/init/executor.js +32 -3
  66. package/dist/src/init/executor.js.map +1 -1
  67. package/dist/src/init/mcp-generator.d.ts.map +1 -1
  68. package/dist/src/init/mcp-generator.js +5 -40
  69. package/dist/src/init/mcp-generator.js.map +1 -1
  70. package/dist/src/init/shared.d.ts.map +1 -1
  71. package/dist/src/init/shared.js +6 -5
  72. package/dist/src/init/shared.js.map +1 -1
  73. package/dist/src/init/types.d.ts +4 -0
  74. package/dist/src/init/types.d.ts.map +1 -1
  75. package/dist/src/init/types.js.map +1 -1
  76. package/dist/src/init/upgrade.d.ts.map +1 -1
  77. package/dist/src/init/upgrade.js +11 -1
  78. package/dist/src/init/upgrade.js.map +1 -1
  79. package/dist/src/init/write-antigravity.d.ts.map +1 -1
  80. package/dist/src/init/write-antigravity.js +5 -50
  81. package/dist/src/init/write-antigravity.js.map +1 -1
  82. package/dist/src/init/write-claude.d.ts.map +1 -1
  83. package/dist/src/init/write-claude.js +4 -88
  84. package/dist/src/init/write-claude.js.map +1 -1
  85. package/dist/src/init/write-codex.d.ts.map +1 -1
  86. package/dist/src/init/write-codex.js +12 -8
  87. package/dist/src/init/write-codex.js.map +1 -1
  88. package/dist/src/init/write-kimicode.d.ts.map +1 -1
  89. package/dist/src/init/write-kimicode.js +4 -48
  90. package/dist/src/init/write-kimicode.js.map +1 -1
  91. package/dist/src/knowledge/document-pipeline.d.ts.map +1 -1
  92. package/dist/src/knowledge/document-pipeline.js +6 -4
  93. package/dist/src/knowledge/document-pipeline.js.map +1 -1
  94. package/dist/src/knowledge/eval/harness.d.ts.map +1 -1
  95. package/dist/src/knowledge/eval/harness.js +9 -11
  96. package/dist/src/knowledge/eval/harness.js.map +1 -1
  97. package/dist/src/mastermind/manifest-data.d.ts +10 -0
  98. package/dist/src/mastermind/manifest-data.d.ts.map +1 -0
  99. package/dist/src/mastermind/manifest-data.js +67 -0
  100. package/dist/src/mastermind/manifest-data.js.map +1 -0
  101. package/dist/src/mastermind/manifest.d.ts +22 -0
  102. package/dist/src/mastermind/manifest.d.ts.map +1 -0
  103. package/dist/src/mastermind/manifest.js +36 -0
  104. package/dist/src/mastermind/manifest.js.map +1 -0
  105. package/dist/src/mcp-client.d.ts.map +1 -1
  106. package/dist/src/mcp-client.js +2 -0
  107. package/dist/src/mcp-client.js.map +1 -1
  108. package/dist/src/mcp-tools/index.d.ts +1 -0
  109. package/dist/src/mcp-tools/index.d.ts.map +1 -1
  110. package/dist/src/mcp-tools/index.js +1 -0
  111. package/dist/src/mcp-tools/index.js.map +1 -1
  112. package/dist/src/mcp-tools/platforms-tools.d.ts +5 -0
  113. package/dist/src/mcp-tools/platforms-tools.d.ts.map +1 -0
  114. package/dist/src/mcp-tools/platforms-tools.js +38 -0
  115. package/dist/src/mcp-tools/platforms-tools.js.map +1 -0
  116. package/dist/src/memory/intelligence.d.ts.map +1 -1
  117. package/dist/src/memory/intelligence.js +54 -20
  118. package/dist/src/memory/intelligence.js.map +1 -1
  119. package/dist/src/memory/memory-bridge.d.ts.map +1 -1
  120. package/dist/src/memory/memory-bridge.js +3 -2
  121. package/dist/src/memory/memory-bridge.js.map +1 -1
  122. package/dist/src/memory/memory-kg.js +3 -3
  123. package/dist/src/memory/memory-kg.js.map +1 -1
  124. package/dist/src/monovector/diff-classifier.d.ts +2 -2
  125. package/dist/src/monovector/diff-classifier.d.ts.map +1 -1
  126. package/dist/src/monovector/diff-classifier.js.map +1 -1
  127. package/dist/src/orgrt/agent-exec.d.ts +71 -0
  128. package/dist/src/orgrt/agent-exec.d.ts.map +1 -0
  129. package/dist/src/orgrt/agent-exec.js +463 -0
  130. package/dist/src/orgrt/agent-exec.js.map +1 -0
  131. package/dist/src/orgrt/runner-registry.d.ts +62 -0
  132. package/dist/src/orgrt/runner-registry.d.ts.map +1 -0
  133. package/dist/src/orgrt/runner-registry.js +201 -0
  134. package/dist/src/orgrt/runner-registry.js.map +1 -0
  135. package/dist/src/orgrt/session.d.ts.map +1 -1
  136. package/dist/src/orgrt/session.js +54 -24
  137. package/dist/src/orgrt/session.js.map +1 -1
  138. package/dist/src/orgrt/task-dag.d.ts.map +1 -1
  139. package/dist/src/orgrt/task-dag.js +5 -1
  140. package/dist/src/orgrt/task-dag.js.map +1 -1
  141. package/dist/src/platform-adapters/core.d.ts +20 -0
  142. package/dist/src/platform-adapters/core.d.ts.map +1 -0
  143. package/dist/src/platform-adapters/core.js +34 -0
  144. package/dist/src/platform-adapters/core.js.map +1 -0
  145. package/dist/src/platform-adapters/discovery.d.ts +15 -0
  146. package/dist/src/platform-adapters/discovery.d.ts.map +1 -0
  147. package/dist/src/platform-adapters/discovery.js +64 -0
  148. package/dist/src/platform-adapters/discovery.js.map +1 -0
  149. package/dist/src/platform-adapters/docs.d.ts +4 -0
  150. package/dist/src/platform-adapters/docs.d.ts.map +1 -0
  151. package/dist/src/platform-adapters/docs.js +34 -0
  152. package/dist/src/platform-adapters/docs.js.map +1 -0
  153. package/dist/src/platform-adapters/hook-bridge.d.ts +44 -0
  154. package/dist/src/platform-adapters/hook-bridge.d.ts.map +1 -0
  155. package/dist/src/platform-adapters/hook-bridge.js +133 -0
  156. package/dist/src/platform-adapters/hook-bridge.js.map +1 -0
  157. package/dist/src/platform-adapters/merge.d.ts +32 -0
  158. package/dist/src/platform-adapters/merge.d.ts.map +1 -0
  159. package/dist/src/platform-adapters/merge.js +209 -0
  160. package/dist/src/platform-adapters/merge.js.map +1 -0
  161. package/dist/src/platform-adapters/migration.d.ts +31 -0
  162. package/dist/src/platform-adapters/migration.d.ts.map +1 -0
  163. package/dist/src/platform-adapters/migration.js +402 -0
  164. package/dist/src/platform-adapters/migration.js.map +1 -0
  165. package/dist/src/platform-adapters/operations.d.ts +23 -0
  166. package/dist/src/platform-adapters/operations.d.ts.map +1 -0
  167. package/dist/src/platform-adapters/operations.js +405 -0
  168. package/dist/src/platform-adapters/operations.js.map +1 -0
  169. package/dist/src/platform-adapters/registry.d.ts +9 -0
  170. package/dist/src/platform-adapters/registry.d.ts.map +1 -0
  171. package/dist/src/platform-adapters/registry.js +614 -0
  172. package/dist/src/platform-adapters/registry.js.map +1 -0
  173. package/dist/src/platform-adapters/renderers/agents.d.ts +5 -0
  174. package/dist/src/platform-adapters/renderers/agents.d.ts.map +1 -0
  175. package/dist/src/platform-adapters/renderers/agents.js +46 -0
  176. package/dist/src/platform-adapters/renderers/agents.js.map +1 -0
  177. package/dist/src/platform-adapters/renderers/aider.d.ts +2 -0
  178. package/dist/src/platform-adapters/renderers/aider.d.ts.map +1 -0
  179. package/dist/src/platform-adapters/renderers/aider.js +3 -0
  180. package/dist/src/platform-adapters/renderers/aider.js.map +1 -0
  181. package/dist/src/platform-adapters/renderers/antigravity.d.ts +2 -0
  182. package/dist/src/platform-adapters/renderers/antigravity.d.ts.map +1 -0
  183. package/dist/src/platform-adapters/renderers/antigravity.js +3 -0
  184. package/dist/src/platform-adapters/renderers/antigravity.js.map +1 -0
  185. package/dist/src/platform-adapters/renderers/claude.d.ts +2 -0
  186. package/dist/src/platform-adapters/renderers/claude.d.ts.map +1 -0
  187. package/dist/src/platform-adapters/renderers/claude.js +3 -0
  188. package/dist/src/platform-adapters/renderers/claude.js.map +1 -0
  189. package/dist/src/platform-adapters/renderers/codex.d.ts +2 -0
  190. package/dist/src/platform-adapters/renderers/codex.d.ts.map +1 -0
  191. package/dist/src/platform-adapters/renderers/codex.js +3 -0
  192. package/dist/src/platform-adapters/renderers/codex.js.map +1 -0
  193. package/dist/src/platform-adapters/renderers/commands.d.ts +13 -0
  194. package/dist/src/platform-adapters/renderers/commands.d.ts.map +1 -0
  195. package/dist/src/platform-adapters/renderers/commands.js +78 -0
  196. package/dist/src/platform-adapters/renderers/commands.js.map +1 -0
  197. package/dist/src/platform-adapters/renderers/copilot.d.ts +2 -0
  198. package/dist/src/platform-adapters/renderers/copilot.d.ts.map +1 -0
  199. package/dist/src/platform-adapters/renderers/copilot.js +3 -0
  200. package/dist/src/platform-adapters/renderers/copilot.js.map +1 -0
  201. package/dist/src/platform-adapters/renderers/cursor.d.ts +2 -0
  202. package/dist/src/platform-adapters/renderers/cursor.d.ts.map +1 -0
  203. package/dist/src/platform-adapters/renderers/cursor.js +3 -0
  204. package/dist/src/platform-adapters/renderers/cursor.js.map +1 -0
  205. package/dist/src/platform-adapters/renderers/droid.d.ts +2 -0
  206. package/dist/src/platform-adapters/renderers/droid.d.ts.map +1 -0
  207. package/dist/src/platform-adapters/renderers/droid.js +3 -0
  208. package/dist/src/platform-adapters/renderers/droid.js.map +1 -0
  209. package/dist/src/platform-adapters/renderers/experimental.d.ts +6 -0
  210. package/dist/src/platform-adapters/renderers/experimental.d.ts.map +1 -0
  211. package/dist/src/platform-adapters/renderers/experimental.js +9 -0
  212. package/dist/src/platform-adapters/renderers/experimental.js.map +1 -0
  213. package/dist/src/platform-adapters/renderers/factory.d.ts +14 -0
  214. package/dist/src/platform-adapters/renderers/factory.d.ts.map +1 -0
  215. package/dist/src/platform-adapters/renderers/factory.js +53 -0
  216. package/dist/src/platform-adapters/renderers/factory.js.map +1 -0
  217. package/dist/src/platform-adapters/renderers/gemini.d.ts +2 -0
  218. package/dist/src/platform-adapters/renderers/gemini.d.ts.map +1 -0
  219. package/dist/src/platform-adapters/renderers/gemini.js +3 -0
  220. package/dist/src/platform-adapters/renderers/gemini.js.map +1 -0
  221. package/dist/src/platform-adapters/renderers/hooks.d.ts +37 -0
  222. package/dist/src/platform-adapters/renderers/hooks.d.ts.map +1 -0
  223. package/dist/src/platform-adapters/renderers/hooks.js +166 -0
  224. package/dist/src/platform-adapters/renderers/hooks.js.map +1 -0
  225. package/dist/src/platform-adapters/renderers/index.d.ts +8 -0
  226. package/dist/src/platform-adapters/renderers/index.d.ts.map +1 -0
  227. package/dist/src/platform-adapters/renderers/index.js +39 -0
  228. package/dist/src/platform-adapters/renderers/index.js.map +1 -0
  229. package/dist/src/platform-adapters/renderers/instructions.d.ts +6 -0
  230. package/dist/src/platform-adapters/renderers/instructions.d.ts.map +1 -0
  231. package/dist/src/platform-adapters/renderers/instructions.js +31 -0
  232. package/dist/src/platform-adapters/renderers/instructions.js.map +1 -0
  233. package/dist/src/platform-adapters/renderers/kimi.d.ts +2 -0
  234. package/dist/src/platform-adapters/renderers/kimi.d.ts.map +1 -0
  235. package/dist/src/platform-adapters/renderers/kimi.js +3 -0
  236. package/dist/src/platform-adapters/renderers/kimi.js.map +1 -0
  237. package/dist/src/platform-adapters/renderers/kiro.d.ts +2 -0
  238. package/dist/src/platform-adapters/renderers/kiro.d.ts.map +1 -0
  239. package/dist/src/platform-adapters/renderers/kiro.js +3 -0
  240. package/dist/src/platform-adapters/renderers/kiro.js.map +1 -0
  241. package/dist/src/platform-adapters/renderers/mcp.d.ts +29 -0
  242. package/dist/src/platform-adapters/renderers/mcp.d.ts.map +1 -0
  243. package/dist/src/platform-adapters/renderers/mcp.js +69 -0
  244. package/dist/src/platform-adapters/renderers/mcp.js.map +1 -0
  245. package/dist/src/platform-adapters/renderers/openclaw.d.ts +2 -0
  246. package/dist/src/platform-adapters/renderers/openclaw.d.ts.map +1 -0
  247. package/dist/src/platform-adapters/renderers/openclaw.js +3 -0
  248. package/dist/src/platform-adapters/renderers/openclaw.js.map +1 -0
  249. package/dist/src/platform-adapters/renderers/opencode.d.ts +2 -0
  250. package/dist/src/platform-adapters/renderers/opencode.d.ts.map +1 -0
  251. package/dist/src/platform-adapters/renderers/opencode.js +3 -0
  252. package/dist/src/platform-adapters/renderers/opencode.js.map +1 -0
  253. package/dist/src/platform-adapters/renderers/skills.d.ts +11 -0
  254. package/dist/src/platform-adapters/renderers/skills.d.ts.map +1 -0
  255. package/dist/src/platform-adapters/renderers/skills.js +60 -0
  256. package/dist/src/platform-adapters/renderers/skills.js.map +1 -0
  257. package/dist/src/platform-adapters/renderers/status.d.ts +23 -0
  258. package/dist/src/platform-adapters/renderers/status.d.ts.map +1 -0
  259. package/dist/src/platform-adapters/renderers/status.js +63 -0
  260. package/dist/src/platform-adapters/renderers/status.js.map +1 -0
  261. package/dist/src/platform-adapters/renderers/vscode.d.ts +2 -0
  262. package/dist/src/platform-adapters/renderers/vscode.d.ts.map +1 -0
  263. package/dist/src/platform-adapters/renderers/vscode.js +3 -0
  264. package/dist/src/platform-adapters/renderers/vscode.js.map +1 -0
  265. package/dist/src/platform-adapters/renderers/zed.d.ts +2 -0
  266. package/dist/src/platform-adapters/renderers/zed.d.ts.map +1 -0
  267. package/dist/src/platform-adapters/renderers/zed.js +3 -0
  268. package/dist/src/platform-adapters/renderers/zed.js.map +1 -0
  269. package/dist/src/platform-adapters/types.d.ts +105 -0
  270. package/dist/src/platform-adapters/types.d.ts.map +1 -0
  271. package/dist/src/platform-adapters/types.js +13 -0
  272. package/dist/src/platform-adapters/types.js.map +1 -0
  273. package/dist/src/platform-adapters/verification-ledger.d.ts +8 -0
  274. package/dist/src/platform-adapters/verification-ledger.d.ts.map +1 -0
  275. package/dist/src/platform-adapters/verification-ledger.js +24 -0
  276. package/dist/src/platform-adapters/verification-ledger.js.map +1 -0
  277. package/dist/src/protocol-capabilities.d.ts +29 -0
  278. package/dist/src/protocol-capabilities.d.ts.map +1 -0
  279. package/dist/src/protocol-capabilities.js +31 -0
  280. package/dist/src/protocol-capabilities.js.map +1 -0
  281. package/dist/src/ui/markdown.js +10 -0
  282. package/dist/tsconfig.tsbuildinfo +1 -1
  283. package/package.json +4 -4
  284. package/dist/src/ui/data/mastermind-sessions.json +0 -1
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Agent Exec engine — one-shot exposure of the AgentRunner surface over the
3
+ * public subprocess protocol in doc/agent-exec-protocol.md (§3).
4
+ *
5
+ * Process model: the CALLER (e.g. monoagentcli) spawns `monomind agent exec`;
6
+ * monomind resolves the requested runtime's AgentRunner and drives ONE agent
7
+ * turn, adapting the `--prompt` string into the single-message async stream
8
+ * the runner interface expects (`AgentRunArgs.prompt`). With
9
+ * `--tools stdio` (+ `--tools-file` / `--tool-names`), tool handler
10
+ * invocations are bridged to the caller as `tool_call` frames on stdout and
11
+ * satisfied by `tool_result` frames on stdin — identically for native
12
+ * runners (ClaudeAgentRunner registers them as real SDK tools) and fence
13
+ * runners (subprocess CLIs render + parse the fence protocol in-process).
14
+ *
15
+ * stdout purity (§3): the ONLY thing this engine writes to stdout is NDJSON
16
+ * events via the injected `emit` sink. Everything else goes to stderr.
17
+ *
18
+ * Cancellation semantics: `--timeout`, budget breach, and caller `cancel`
19
+ * frames all funnel through `terminate()` — a fire-and-forget
20
+ * `stream.return()` (the runner's finally-blocks SIGTERM/SIGKILL its child)
21
+ * raced against a grace window, after which the engine resolves regardless.
22
+ * A runner wedged mid-await cannot have its return() propagate until it
23
+ * reaches a yield; the grace bound keeps the exec from hanging forever, and
24
+ * the runner's own 2h/45s ladders remain the backstop for orphaned children.
25
+ */
26
+ import type { Readable } from 'node:stream';
27
+ import type { AgentRunner } from './agent-runner.js';
28
+ import { z } from 'zod';
29
+ export type ExecErrorCode = 'auth' | 'quota' | 'missing-binary' | 'no-runner' | 'budget' | 'runner-error' | 'timeout' | 'cancelled' | 'bad-frame';
30
+ /** Tool definition from `--tools-file` (JSON Schema) or `--tool-names`. */
31
+ export interface ToolSpec {
32
+ name: string;
33
+ description: string;
34
+ /** JSON Schema `{type:'object', properties, required}` (optional for --tool-names). */
35
+ schema?: Record<string, unknown>;
36
+ }
37
+ export interface AgentExecOptions {
38
+ runtime: string;
39
+ prompt: string;
40
+ systemPrompt?: string;
41
+ model?: string;
42
+ cwd?: string;
43
+ resume?: string;
44
+ maxTurns: number;
45
+ /** Overall wall-clock cap (ms); undefined = none. */
46
+ timeoutMs?: number;
47
+ /** Max wait per caller tool_result frame (ms). */
48
+ toolTimeoutMs: number;
49
+ /** Optional spend cap (USD) checked at result granularity (see §3.1 note). */
50
+ budgetUsd?: number;
51
+ env?: Record<string, string>;
52
+ /** null/[] = no caller-side tools. Non-empty enables the stdio bridge. */
53
+ toolSpecs?: ToolSpec[] | null;
54
+ /** Injectable runner for tests; production resolves via resolveExecRunner. */
55
+ runnerOverride?: AgentRunner;
56
+ /** Event sink — the command layer writes each object as one NDJSON line. */
57
+ emit: (ev: Record<string, unknown>) => void;
58
+ /** Frame source for the tool bridge (default: process.stdin at command layer). */
59
+ stdin?: Readable;
60
+ /** Grace window for stream.return() propagation before resolving (ms). */
61
+ returnGraceMs?: number;
62
+ }
63
+ /** Convert `{type:'object', properties, required}` JSON Schema to a zod shape. */
64
+ export declare function jsonSchemaToZodShape(schema?: Record<string, unknown>): Record<string, z.ZodType<any>>;
65
+ /**
66
+ * Run one agent exec turn. Emits protocol events via opts.emit and returns
67
+ * the process exit code (§3.2): 0 success · 1 error · 124 timeout ·
68
+ * 130 cancelled. `done` is emitted exactly once before returning.
69
+ */
70
+ export declare function runAgentExec(opts: AgentExecOptions): Promise<number>;
71
+ //# sourceMappingURL=agent-exec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-exec.d.ts","sourceRoot":"","sources":["../../../src/orgrt/agent-exec.ts"],"names":[],"mappings":"AACA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,KAAK,EAAgB,WAAW,EAAc,MAAM,mBAAmB,CAAC;AAG/E,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,OAAO,GACP,gBAAgB,GAChB,WAAW,GACX,QAAQ,GACR,cAAc,GACd,SAAS,GACT,WAAW,GACX,WAAW,CAAC;AAMhB,2EAA2E;AAC3E,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,uFAAuF;IACvF,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,0EAA0E;IAC1E,SAAS,CAAC,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC9B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,4EAA4E;IAC5E,IAAI,EAAE,CAAC,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5C,kFAAkF;IAClF,KAAK,CAAC,EAAE,QAAQ,CAAC;IACjB,0EAA0E;IAC1E,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAqCD,kFAAkF;AAClF,wBAAgB,oBAAoB,CAClC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAUhC;AAsJD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAwQ1E"}
@@ -0,0 +1,463 @@
1
+ // packages/@monomind/cli/src/orgrt/agent-exec.ts
2
+ /**
3
+ * Agent Exec engine — one-shot exposure of the AgentRunner surface over the
4
+ * public subprocess protocol in doc/agent-exec-protocol.md (§3).
5
+ *
6
+ * Process model: the CALLER (e.g. monoagentcli) spawns `monomind agent exec`;
7
+ * monomind resolves the requested runtime's AgentRunner and drives ONE agent
8
+ * turn, adapting the `--prompt` string into the single-message async stream
9
+ * the runner interface expects (`AgentRunArgs.prompt`). With
10
+ * `--tools stdio` (+ `--tools-file` / `--tool-names`), tool handler
11
+ * invocations are bridged to the caller as `tool_call` frames on stdout and
12
+ * satisfied by `tool_result` frames on stdin — identically for native
13
+ * runners (ClaudeAgentRunner registers them as real SDK tools) and fence
14
+ * runners (subprocess CLIs render + parse the fence protocol in-process).
15
+ *
16
+ * stdout purity (§3): the ONLY thing this engine writes to stdout is NDJSON
17
+ * events via the injected `emit` sink. Everything else goes to stderr.
18
+ *
19
+ * Cancellation semantics: `--timeout`, budget breach, and caller `cancel`
20
+ * frames all funnel through `terminate()` — a fire-and-forget
21
+ * `stream.return()` (the runner's finally-blocks SIGTERM/SIGKILL its child)
22
+ * raced against a grace window, after which the engine resolves regardless.
23
+ * A runner wedged mid-await cannot have its return() propagate until it
24
+ * reaches a yield; the grace bound keeps the exec from hanging forever, and
25
+ * the runner's own 2h/45s ladders remain the backstop for orphaned children.
26
+ */
27
+ import { classifyStderr } from './kimicode-runner.js';
28
+ import { resolveExecRunner, runnerSpec } from './runner-registry.js';
29
+ import { z } from 'zod';
30
+ const FATAL_CODES = new Set(['auth', 'quota', 'missing-binary', 'no-runner', 'budget']);
31
+ // ─── JSON Schema → zod shape (for OrgToolDef.schema) ────────────────────────
32
+ function jsonPropToZod(prop, required) {
33
+ let base = z.any();
34
+ if (prop && typeof prop === 'object') {
35
+ const p = prop;
36
+ if (Array.isArray(p.enum))
37
+ base = z.enum(p.enum);
38
+ else
39
+ switch (p.type) {
40
+ case 'string':
41
+ base = z.string();
42
+ break;
43
+ case 'number':
44
+ case 'integer':
45
+ base = z.number();
46
+ break;
47
+ case 'boolean':
48
+ base = z.boolean();
49
+ break;
50
+ case 'array':
51
+ base = z.array(z.any());
52
+ break;
53
+ case 'object':
54
+ base = z.record(z.string(), z.any());
55
+ break;
56
+ }
57
+ }
58
+ return required ? base : base.optional();
59
+ }
60
+ /** Convert `{type:'object', properties, required}` JSON Schema to a zod shape. */
61
+ export function jsonSchemaToZodShape(schema) {
62
+ const shape = {};
63
+ const props = (schema?.properties ?? {});
64
+ const required = new Set(Array.isArray(schema?.required) ? schema.required : []);
65
+ for (const [key, prop] of Object.entries(props)) {
66
+ shape[key] = jsonPropToZod(prop, required.has(key));
67
+ }
68
+ return shape;
69
+ }
70
+ class StdioToolBridge {
71
+ stdin;
72
+ toolTimeoutMs;
73
+ emit;
74
+ onCancel;
75
+ pending = new Map();
76
+ counter = 0;
77
+ closed = false;
78
+ buffer = '';
79
+ stopped = false;
80
+ constructor(stdin, toolTimeoutMs, emit,
81
+ /** Invoked synchronously on a cancel frame — wired to terminate(). */
82
+ onCancel) {
83
+ this.stdin = stdin;
84
+ this.toolTimeoutMs = toolTimeoutMs;
85
+ this.emit = emit;
86
+ this.onCancel = onCancel;
87
+ }
88
+ start() {
89
+ this.stdin.setEncoding('utf8');
90
+ this.stdin.on('data', (chunk) => {
91
+ if (this.stopped)
92
+ return;
93
+ this.buffer += chunk;
94
+ let nl;
95
+ while ((nl = this.buffer.indexOf('\n')) !== -1) {
96
+ const line = this.buffer.slice(0, nl).trim();
97
+ this.buffer = this.buffer.slice(nl + 1);
98
+ if (line)
99
+ this.handleLine(line);
100
+ }
101
+ });
102
+ this.stdin.on('end', () => {
103
+ // §4.3: EOF fails every pending call and disables further bridging.
104
+ this.closed = true;
105
+ for (const [id, p] of this.pending) {
106
+ clearTimeout(p.timer);
107
+ p.settle('ERROR: caller closed stdin');
108
+ this.pending.delete(id);
109
+ }
110
+ });
111
+ this.stdin.on('error', () => {
112
+ this.closed = true;
113
+ });
114
+ }
115
+ handleLine(line) {
116
+ let frame;
117
+ try {
118
+ frame = JSON.parse(line);
119
+ }
120
+ catch {
121
+ this.emit({ v: 1, type: 'error', code: 'bad-frame', fatal: false, message: `unparseable stdin frame: ${line.slice(0, 120)}` });
122
+ return;
123
+ }
124
+ if (frame?.type === 'cancel') {
125
+ this.cancelRequested = true;
126
+ this.onCancel?.();
127
+ return;
128
+ }
129
+ if (frame?.type === 'tool_result' && typeof frame.id === 'string') {
130
+ const p = this.pending.get(frame.id);
131
+ if (!p) {
132
+ this.emit({ v: 1, type: 'error', code: 'bad-frame', fatal: false, message: `tool_result for unknown or expired id "${frame.id}"` });
133
+ return;
134
+ }
135
+ clearTimeout(p.timer);
136
+ this.pending.delete(frame.id);
137
+ const text = frame.result && typeof frame.result === 'object' && typeof frame.result.text === 'string'
138
+ ? frame.result.text
139
+ : typeof frame.result === 'string'
140
+ ? frame.result
141
+ : JSON.stringify(frame.result ?? '');
142
+ p.settle(frame.ok === false ? `ERROR: ${text}` : text);
143
+ return;
144
+ }
145
+ this.emit({ v: 1, type: 'error', code: 'bad-frame', fatal: false, message: `unrecognized stdin frame type: ${String(frame?.type ?? '(none)')}` });
146
+ }
147
+ /** Set when the caller sends a cancel frame; polled by the engine loop. */
148
+ cancelRequested = false;
149
+ /** Invoke a tool on the caller: emit tool_call, await tool_result, echo it. */
150
+ call(name, args) {
151
+ if (this.closed)
152
+ return Promise.resolve({ text: 'ERROR: caller closed stdin' });
153
+ const id = `tc_${++this.counter}`;
154
+ return new Promise((resolve) => {
155
+ const settle = (text) => {
156
+ this.pending.delete(id);
157
+ this.emit({
158
+ v: 1,
159
+ type: 'tool_result',
160
+ id,
161
+ ok: !text.startsWith('ERROR:'),
162
+ result: { text },
163
+ });
164
+ resolve({ text });
165
+ };
166
+ const timer = setTimeout(() => settle('ERROR: tool timeout'), this.toolTimeoutMs);
167
+ this.pending.set(id, { timer, settle });
168
+ this.emit({ v: 1, type: 'tool_call', id, name, args });
169
+ });
170
+ }
171
+ /** Stop reading; fail anything still pending. */
172
+ stop() {
173
+ this.stopped = true;
174
+ this.closed = true;
175
+ for (const [, p] of this.pending) {
176
+ clearTimeout(p.timer);
177
+ p.settle('ERROR: exec terminated');
178
+ }
179
+ this.pending.clear();
180
+ }
181
+ }
182
+ // ─── usage accounting (cumulative→delta, session.ts parity) ────────────────
183
+ class UsageTracker {
184
+ cumulative = new Map();
185
+ delta(m) {
186
+ const key = m.session_id ?? '';
187
+ const prev = this.cumulative.get(key) ?? { in: 0, out: 0, usd: 0 };
188
+ const cur = { in: m.input_tokens ?? 0, out: m.output_tokens ?? 0, usd: m.cost_usd ?? 0 };
189
+ // Runners that report per-turn (not cumulative) usage would produce
190
+ // negatives under naive differencing; treat decreasing totals as fresh.
191
+ const d = {
192
+ in: Math.max(0, cur.in - prev.in),
193
+ out: Math.max(0, cur.out - prev.out),
194
+ usd: Math.max(0, cur.usd - prev.usd),
195
+ };
196
+ this.cumulative.set(key, cur);
197
+ return d;
198
+ }
199
+ }
200
+ // ─── engine ─────────────────────────────────────────────────────────────────
201
+ function mapStopReason(subtype, rawTexts, terminal) {
202
+ if (terminal?.code === 'timeout')
203
+ return 'timeout';
204
+ if (terminal?.code === 'cancelled')
205
+ return 'cancelled';
206
+ if ((subtype ?? '').includes('max_turns'))
207
+ return 'max_turns';
208
+ if (rawTexts.some((t) => t.includes('tool-call round cap')))
209
+ return 'tool_round_cap';
210
+ return 'end_turn';
211
+ }
212
+ /**
213
+ * Run one agent exec turn. Emits protocol events via opts.emit and returns
214
+ * the process exit code (§3.2): 0 success · 1 error · 124 timeout ·
215
+ * 130 cancelled. `done` is emitted exactly once before returning.
216
+ */
217
+ export async function runAgentExec(opts) {
218
+ const emit = opts.emit;
219
+ const grace = opts.returnGraceMs ?? 5000;
220
+ // Resolve runner (no-runner vs missing-binary is classified here).
221
+ const runner = opts.runnerOverride ?? (await resolveExecRunner(opts.runtime));
222
+ if (!runner) {
223
+ const known = runnerSpec(opts.runtime);
224
+ const message = known
225
+ ? `runtime "${opts.runtime}" could not be constructed`
226
+ : `unknown runtime "${opts.runtime}" — no AgentRunner implementation exists for it`;
227
+ emit({ v: 1, type: 'error', code: 'no-runner', fatal: true, message });
228
+ emit({ v: 1, type: 'done', exit_code: 2 });
229
+ return 2;
230
+ }
231
+ // Tool specs (§4). The bridge itself is constructed below, after
232
+ // terminate() exists (its cancel callback wires into termination).
233
+ const toolSpecs = opts.toolSpecs ?? null;
234
+ let bridge = null;
235
+ const tools = (toolSpecs ?? []).map((t) => ({
236
+ name: t.name,
237
+ description: t.description,
238
+ schema: t.schema ? jsonSchemaToZodShape(t.schema) : {},
239
+ handler: (args) => bridge ? bridge.call(t.name, args) : Promise.resolve({ text: 'ERROR: tools not bridged' }),
240
+ }));
241
+ // Single-message prompt stream — the AgentRunArgs.prompt contract.
242
+ const promptStream = (async function* () {
243
+ yield {
244
+ type: 'user',
245
+ message: { role: 'user', content: opts.prompt },
246
+ parent_tool_use_id: null,
247
+ session_id: undefined,
248
+ };
249
+ })();
250
+ const usage = new UsageTracker();
251
+ const rawTexts = [];
252
+ let lastSession;
253
+ let totals = { in: 0, out: 0, usd: 0 };
254
+ let lastResult;
255
+ // Holder object: `terminal` is assigned inside the terminate() closure and
256
+ // read after the loop — TS flow analysis would otherwise keep the `null`
257
+ // narrowing across closure calls and type the post-loop reads as `never`.
258
+ const state = { terminal: null };
259
+ let stream = null;
260
+ // Post-done suppression: once `done` is emitted, nothing else goes out.
261
+ let finished = false;
262
+ const safeEmit = (ev) => {
263
+ if (finished)
264
+ return;
265
+ emit(ev);
266
+ };
267
+ // Termination races the consumer loop: a runner that goes quiet (wedged
268
+ // child, hung SDK) must not pin the exec open — terminate() resolves the
269
+ // race directly while the abandoned consumer finishes in the background.
270
+ let settleTerminal = () => { };
271
+ const terminalPromise = new Promise((r) => {
272
+ settleTerminal = r;
273
+ });
274
+ safeEmit({
275
+ v: 1,
276
+ type: 'start',
277
+ runtime: opts.runtime,
278
+ ...(opts.model ? { model: opts.model } : {}),
279
+ cwd: opts.cwd ?? process.cwd(),
280
+ ...(opts.resume ? { resume: opts.resume } : {}),
281
+ pid: process.pid,
282
+ });
283
+ const terminate = (code, exitCode) => {
284
+ if (state.terminal)
285
+ return;
286
+ state.terminal = { code, exitCode };
287
+ // Ladder the runner's return() (its finally-blocks kill the child) with
288
+ // a grace bound — a wedged runner may not propagate until its own
289
+ // 2h/45s ladders fire, and the exec must not wait for that.
290
+ if (stream && typeof stream.return === 'function') {
291
+ void Promise.race([
292
+ stream.return(undefined).catch(() => { }),
293
+ new Promise((r) => setTimeout(r, grace)),
294
+ ]);
295
+ }
296
+ settleTerminal(state.terminal);
297
+ };
298
+ bridge =
299
+ toolSpecs && toolSpecs.length > 0
300
+ ? new StdioToolBridge(opts.stdin ?? process.stdin, opts.toolTimeoutMs, safeEmit, () => terminate('cancelled', 130))
301
+ : null;
302
+ bridge?.start();
303
+ const timeoutTimer = opts.timeoutMs
304
+ ? setTimeout(() => terminate('timeout', 124), opts.timeoutMs)
305
+ : null;
306
+ const onSignal = () => terminate('cancelled', 130);
307
+ process.once('SIGINT', onSignal);
308
+ process.once('SIGTERM', onSignal);
309
+ const consumer = (async () => {
310
+ try {
311
+ stream = runner.run({
312
+ tools,
313
+ prompt: promptStream,
314
+ systemPrompt: opts.systemPrompt ?? '',
315
+ model: opts.model,
316
+ cwd: opts.cwd ?? process.cwd(),
317
+ env: opts.env ?? {},
318
+ maxTurns: opts.maxTurns,
319
+ resume: opts.resume,
320
+ });
321
+ for await (const m of stream) {
322
+ if (state.terminal)
323
+ break;
324
+ if (m.session_id && m.session_id !== lastSession) {
325
+ lastSession = m.session_id;
326
+ safeEmit({ v: 1, type: 'session', session_id: m.session_id });
327
+ }
328
+ if (m.type === 'assistant' && m.text) {
329
+ rawTexts.push(m.text);
330
+ safeEmit({ v: 1, type: 'assistant', text: m.text });
331
+ }
332
+ else if (m.type === 'result') {
333
+ const d = usage.delta(m);
334
+ totals = { in: totals.in + d.in, out: totals.out + d.out, usd: totals.usd + d.usd };
335
+ safeEmit({
336
+ v: 1,
337
+ type: 'usage',
338
+ input_tokens: d.in,
339
+ output_tokens: d.out,
340
+ cost_usd: d.usd,
341
+ });
342
+ lastResult = m;
343
+ // Budget is enforced at result granularity on a single-shot exec:
344
+ // the turn has completed, but the overspend is surfaced as the
345
+ // terminal outcome (no success result event) so callers stop.
346
+ if (opts.budgetUsd !== undefined && totals.usd > opts.budgetUsd) {
347
+ terminate('budget', 1);
348
+ safeEmit({
349
+ v: 1,
350
+ type: 'error',
351
+ code: 'budget',
352
+ fatal: true,
353
+ message: `spend cap exceeded: $${totals.usd.toFixed(4)} > --budget-usd ${opts.budgetUsd}`,
354
+ });
355
+ break;
356
+ }
357
+ }
358
+ // m.type === 'tool_use': native-tool liveness only — no protocol event.
359
+ }
360
+ }
361
+ catch (err) {
362
+ const e = err;
363
+ if (e.code === 'ENOENT') {
364
+ const spec = runnerSpec(opts.runtime);
365
+ terminate('missing-binary', 1);
366
+ safeEmit({
367
+ v: 1,
368
+ type: 'error',
369
+ code: 'missing-binary',
370
+ fatal: true,
371
+ message: `${opts.runtime} CLI not found${spec ? ` — ${spec.installHint}` : ''}`,
372
+ });
373
+ }
374
+ else {
375
+ const cls = classifyStderr(e.message ?? String(err));
376
+ const code = cls.fatal
377
+ ? /auth/i.test(cls.label ?? '')
378
+ ? 'auth'
379
+ : 'quota'
380
+ : 'runner-error';
381
+ const spec = runnerSpec(opts.runtime);
382
+ const msg = e.message ?? String(err);
383
+ const login = code === 'auth' && spec?.loginHint && !/login|log in/i.test(msg)
384
+ ? ` Run: ${spec.loginHint}`
385
+ : '';
386
+ terminate(code, 1);
387
+ safeEmit({
388
+ v: 1,
389
+ type: 'error',
390
+ code,
391
+ fatal: FATAL_CODES.has(code),
392
+ message: `${msg}${login}`,
393
+ });
394
+ }
395
+ }
396
+ })();
397
+ try {
398
+ await Promise.race([consumer, terminalPromise]);
399
+ }
400
+ finally {
401
+ if (timeoutTimer)
402
+ clearTimeout(timeoutTimer);
403
+ bridge?.stop();
404
+ process.removeListener('SIGINT', onSignal);
405
+ process.removeListener('SIGTERM', onSignal);
406
+ }
407
+ const finish = (exitCode) => {
408
+ safeEmit({ v: 1, type: 'done', exit_code: exitCode });
409
+ finished = true;
410
+ return exitCode;
411
+ };
412
+ if (state.terminal) {
413
+ // timeout/cancelled errors are emitted here (terminate() only ladders);
414
+ // missing-binary/budget/auth/quota/runner-error already emitted inline.
415
+ if (state.terminal.code === 'timeout' || state.terminal.code === 'cancelled') {
416
+ safeEmit({
417
+ v: 1,
418
+ type: 'error',
419
+ code: state.terminal.code,
420
+ fatal: false,
421
+ message: state.terminal.code === 'timeout'
422
+ ? `exec exceeded overall timeout (${opts.timeoutMs}ms)`
423
+ : 'cancelled by caller',
424
+ });
425
+ }
426
+ return finish(state.terminal.exitCode);
427
+ }
428
+ if (!lastResult) {
429
+ safeEmit({
430
+ v: 1,
431
+ type: 'error',
432
+ code: 'runner-error',
433
+ fatal: false,
434
+ message: 'runner stream ended without a result message',
435
+ });
436
+ return finish(1);
437
+ }
438
+ const isError = lastResult.is_error === true || (lastResult.subtype ?? 'success') !== 'success';
439
+ if (isError) {
440
+ safeEmit({
441
+ v: 1,
442
+ type: 'error',
443
+ code: 'runner-error',
444
+ fatal: false,
445
+ message: lastResult.text ?? `turn failed (${lastResult.subtype ?? 'error'})`,
446
+ });
447
+ }
448
+ safeEmit({
449
+ v: 1,
450
+ type: 'result',
451
+ subtype: isError ? 'error' : 'success',
452
+ is_error: isError,
453
+ stop_reason: mapStopReason(lastResult.subtype, rawTexts, state.terminal),
454
+ ...(lastResult.text
455
+ ? { text: lastResult.text }
456
+ : {}),
457
+ input_tokens: totals.in,
458
+ output_tokens: totals.out,
459
+ cost_usd: totals.usd,
460
+ });
461
+ return finish(isError ? 1 : 0);
462
+ }
463
+ //# sourceMappingURL=agent-exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-exec.js","sourceRoot":"","sources":["../../../src/orgrt/agent-exec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Runner registry — static metadata for every AgentRunner runtime id:
3
+ * binary name, env-var override, install hint. Shared by `agent exec`
4
+ * (error taxonomy: no-runner vs missing-binary, §3.4) and `agent scan`
5
+ * (installed detection + version probe, §6) of doc/agent-exec-protocol.md.
6
+ *
7
+ * Binary names and env overrides MUST mirror the `<X>_CLI_BIN` lookups in
8
+ * each orgrt/*-runner.ts — a mismatch here means scan reports a runner as
9
+ * installed when its runner would spawn a different binary (or vice versa).
10
+ */
11
+ import type { AgentRunner } from './agent-runner.js';
12
+ import { type RuntimeKind } from './daemon.js';
13
+ export interface RunnerSpec {
14
+ /** Runtime id accepted by `agent exec --runtime` and org role `runtime`. */
15
+ id: RuntimeKind;
16
+ /** Binary probed on PATH (null for in-process runtimes like vercel). */
17
+ binary: string | null;
18
+ /** Env var that overrides the binary path (mirrors each runner's lookup). */
19
+ binEnv?: string;
20
+ /** One-line install hint, shown by scan and the missing-binary error. */
21
+ installHint: string;
22
+ /** Login/auth command appended to auth-class errors (§3.4 auth code). */
23
+ loginHint?: string;
24
+ }
25
+ export declare const RUNNER_SPECS: RunnerSpec[];
26
+ export declare function runnerSpec(id: string): RunnerSpec | undefined;
27
+ export declare function isKnownRuntime(id: string): boolean;
28
+ /**
29
+ * Resolve a runner for `agent exec --runtime <id>`.
30
+ *
31
+ * Distinct from daemon.ts's resolveRunner: unknown ids are a protocol
32
+ * `no-runner` error (the id has no implementation), while 'claude' — for
33
+ * which resolveRunner returns undefined as the implicit default path —
34
+ * resolves to the shared defaultClaudeRunner. Dynamic import keeps the
35
+ * Claude Agent SDK out of this module's static graph (scan must stay light).
36
+ */
37
+ export declare function resolveExecRunner(id: string): Promise<AgentRunner | null>;
38
+ export interface ScanEntry {
39
+ id: string;
40
+ installed: boolean;
41
+ binary: string | null;
42
+ version: string | null;
43
+ install_hint: string;
44
+ }
45
+ export interface ScanOptions {
46
+ /** Env used for PATH + `<X>_CLI_BIN` overrides (default process.env). */
47
+ env?: NodeJS.ProcessEnv;
48
+ /** Per-binary `--version` probe timeout (default 5s). */
49
+ versionTimeoutMs?: number;
50
+ /** Skip version probes (binary-presence scan only). */
51
+ skipVersionProbe?: boolean;
52
+ }
53
+ /**
54
+ * Detect every known runtime, in parallel. Exit-0-always by contract —
55
+ * detection, not a test. Auth is deliberately NOT probed (§6): logins are
56
+ * too heterogeneous; auth failures surface at exec time.
57
+ */
58
+ export declare function scanInstalled(opts?: ScanOptions): Promise<{
59
+ v: number;
60
+ agents: ScanEntry[];
61
+ }>;
62
+ //# sourceMappingURL=runner-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner-registry.d.ts","sourceRoot":"","sources":["../../../src/orgrt/runner-registry.ts"],"names":[],"mappings":"AACA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAiB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9D,MAAM,WAAW,UAAU;IACzB,4EAA4E;IAC5E,EAAE,EAAE,WAAW,CAAC;IAChB,wEAAwE;IACxE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,YAAY,EAAE,UAAU,EAqFpC,CAAC;AAIF,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAE7D;AAED,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAO/E;AAID,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AA4DD,MAAM,WAAW,WAAW;IAC1B,yEAAyE;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,uDAAuD;IACvD,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC;IACnE,CAAC,EAAE,MAAM,CAAC;IACV,MAAM,EAAE,SAAS,EAAE,CAAC;CACrB,CAAC,CAoBD"}