@stoneforge/smithy 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (497) hide show
  1. package/LICENSE +13 -0
  2. package/README.md +114 -0
  3. package/dist/api/index.d.ts +7 -0
  4. package/dist/api/index.d.ts.map +1 -0
  5. package/dist/api/index.js +7 -0
  6. package/dist/api/index.js.map +1 -0
  7. package/dist/api/orchestrator-api.d.ts +153 -0
  8. package/dist/api/orchestrator-api.d.ts.map +1 -0
  9. package/dist/api/orchestrator-api.js +374 -0
  10. package/dist/api/orchestrator-api.js.map +1 -0
  11. package/dist/bin/sf.d.ts +3 -0
  12. package/dist/bin/sf.d.ts.map +1 -0
  13. package/dist/bin/sf.js +10 -0
  14. package/dist/bin/sf.js.map +1 -0
  15. package/dist/cli/commands/agent.d.ts +20 -0
  16. package/dist/cli/commands/agent.d.ts.map +1 -0
  17. package/dist/cli/commands/agent.js +861 -0
  18. package/dist/cli/commands/agent.js.map +1 -0
  19. package/dist/cli/commands/daemon.d.ts +14 -0
  20. package/dist/cli/commands/daemon.d.ts.map +1 -0
  21. package/dist/cli/commands/daemon.js +272 -0
  22. package/dist/cli/commands/daemon.js.map +1 -0
  23. package/dist/cli/commands/dispatch.d.ts +9 -0
  24. package/dist/cli/commands/dispatch.d.ts.map +1 -0
  25. package/dist/cli/commands/dispatch.js +128 -0
  26. package/dist/cli/commands/dispatch.js.map +1 -0
  27. package/dist/cli/commands/merge.d.ts +11 -0
  28. package/dist/cli/commands/merge.d.ts.map +1 -0
  29. package/dist/cli/commands/merge.js +246 -0
  30. package/dist/cli/commands/merge.js.map +1 -0
  31. package/dist/cli/commands/pool.d.ts +21 -0
  32. package/dist/cli/commands/pool.d.ts.map +1 -0
  33. package/dist/cli/commands/pool.js +762 -0
  34. package/dist/cli/commands/pool.js.map +1 -0
  35. package/dist/cli/commands/serve.d.ts +54 -0
  36. package/dist/cli/commands/serve.d.ts.map +1 -0
  37. package/dist/cli/commands/serve.js +57 -0
  38. package/dist/cli/commands/serve.js.map +1 -0
  39. package/dist/cli/commands/task.d.ts +36 -0
  40. package/dist/cli/commands/task.d.ts.map +1 -0
  41. package/dist/cli/commands/task.js +889 -0
  42. package/dist/cli/commands/task.js.map +1 -0
  43. package/dist/cli/commands/test-orchestration.d.ts +32 -0
  44. package/dist/cli/commands/test-orchestration.d.ts.map +1 -0
  45. package/dist/cli/commands/test-orchestration.js +392 -0
  46. package/dist/cli/commands/test-orchestration.js.map +1 -0
  47. package/dist/cli/index.d.ts +13 -0
  48. package/dist/cli/index.d.ts.map +1 -0
  49. package/dist/cli/index.js +15 -0
  50. package/dist/cli/index.js.map +1 -0
  51. package/dist/cli/plugin.d.ts +23 -0
  52. package/dist/cli/plugin.d.ts.map +1 -0
  53. package/dist/cli/plugin.js +36 -0
  54. package/dist/cli/plugin.js.map +1 -0
  55. package/dist/git/index.d.ts +10 -0
  56. package/dist/git/index.d.ts.map +1 -0
  57. package/dist/git/index.js +12 -0
  58. package/dist/git/index.js.map +1 -0
  59. package/dist/git/merge.d.ts +79 -0
  60. package/dist/git/merge.d.ts.map +1 -0
  61. package/dist/git/merge.js +254 -0
  62. package/dist/git/merge.js.map +1 -0
  63. package/dist/git/worktree-manager.d.ts +299 -0
  64. package/dist/git/worktree-manager.d.ts.map +1 -0
  65. package/dist/git/worktree-manager.js +744 -0
  66. package/dist/git/worktree-manager.js.map +1 -0
  67. package/dist/index.d.ts +24 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +31 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/prompts/director.md +272 -0
  72. package/dist/prompts/index.d.ts +100 -0
  73. package/dist/prompts/index.d.ts.map +1 -0
  74. package/dist/prompts/index.js +294 -0
  75. package/dist/prompts/index.js.map +1 -0
  76. package/dist/prompts/message-triage.md +50 -0
  77. package/dist/prompts/persistent-worker.md +240 -0
  78. package/dist/prompts/steward-base.md +64 -0
  79. package/dist/prompts/steward-docs.md +118 -0
  80. package/dist/prompts/steward-health.md +39 -0
  81. package/dist/prompts/steward-merge.md +168 -0
  82. package/dist/prompts/steward-ops.md +28 -0
  83. package/dist/prompts/steward-reminder.md +26 -0
  84. package/dist/prompts/worker.md +282 -0
  85. package/dist/providers/claude/headless.d.ts +18 -0
  86. package/dist/providers/claude/headless.d.ts.map +1 -0
  87. package/dist/providers/claude/headless.js +307 -0
  88. package/dist/providers/claude/headless.js.map +1 -0
  89. package/dist/providers/claude/index.d.ts +24 -0
  90. package/dist/providers/claude/index.d.ts.map +1 -0
  91. package/dist/providers/claude/index.js +80 -0
  92. package/dist/providers/claude/index.js.map +1 -0
  93. package/dist/providers/claude/interactive.d.ts +21 -0
  94. package/dist/providers/claude/interactive.d.ts.map +1 -0
  95. package/dist/providers/claude/interactive.js +142 -0
  96. package/dist/providers/claude/interactive.js.map +1 -0
  97. package/dist/providers/codex/event-mapper.d.ts +91 -0
  98. package/dist/providers/codex/event-mapper.d.ts.map +1 -0
  99. package/dist/providers/codex/event-mapper.js +299 -0
  100. package/dist/providers/codex/event-mapper.js.map +1 -0
  101. package/dist/providers/codex/headless.d.ts +20 -0
  102. package/dist/providers/codex/headless.d.ts.map +1 -0
  103. package/dist/providers/codex/headless.js +174 -0
  104. package/dist/providers/codex/headless.js.map +1 -0
  105. package/dist/providers/codex/index.d.ts +30 -0
  106. package/dist/providers/codex/index.d.ts.map +1 -0
  107. package/dist/providers/codex/index.js +55 -0
  108. package/dist/providers/codex/index.js.map +1 -0
  109. package/dist/providers/codex/interactive.d.ts +21 -0
  110. package/dist/providers/codex/interactive.d.ts.map +1 -0
  111. package/dist/providers/codex/interactive.js +141 -0
  112. package/dist/providers/codex/interactive.js.map +1 -0
  113. package/dist/providers/codex/jsonrpc-client.d.ts +52 -0
  114. package/dist/providers/codex/jsonrpc-client.d.ts.map +1 -0
  115. package/dist/providers/codex/jsonrpc-client.js +141 -0
  116. package/dist/providers/codex/jsonrpc-client.js.map +1 -0
  117. package/dist/providers/codex/server-manager.d.ts +100 -0
  118. package/dist/providers/codex/server-manager.d.ts.map +1 -0
  119. package/dist/providers/codex/server-manager.js +153 -0
  120. package/dist/providers/codex/server-manager.js.map +1 -0
  121. package/dist/providers/index.d.ts +15 -0
  122. package/dist/providers/index.d.ts.map +1 -0
  123. package/dist/providers/index.js +19 -0
  124. package/dist/providers/index.js.map +1 -0
  125. package/dist/providers/opencode/async-queue.d.ts +21 -0
  126. package/dist/providers/opencode/async-queue.d.ts.map +1 -0
  127. package/dist/providers/opencode/async-queue.js +51 -0
  128. package/dist/providers/opencode/async-queue.js.map +1 -0
  129. package/dist/providers/opencode/event-mapper.d.ts +132 -0
  130. package/dist/providers/opencode/event-mapper.d.ts.map +1 -0
  131. package/dist/providers/opencode/event-mapper.js +204 -0
  132. package/dist/providers/opencode/event-mapper.js.map +1 -0
  133. package/dist/providers/opencode/headless.d.ts +25 -0
  134. package/dist/providers/opencode/headless.d.ts.map +1 -0
  135. package/dist/providers/opencode/headless.js +190 -0
  136. package/dist/providers/opencode/headless.js.map +1 -0
  137. package/dist/providers/opencode/index.d.ts +33 -0
  138. package/dist/providers/opencode/index.d.ts.map +1 -0
  139. package/dist/providers/opencode/index.js +42 -0
  140. package/dist/providers/opencode/index.js.map +1 -0
  141. package/dist/providers/opencode/interactive.d.ts +21 -0
  142. package/dist/providers/opencode/interactive.d.ts.map +1 -0
  143. package/dist/providers/opencode/interactive.js +135 -0
  144. package/dist/providers/opencode/interactive.js.map +1 -0
  145. package/dist/providers/opencode/server-manager.d.ts +145 -0
  146. package/dist/providers/opencode/server-manager.d.ts.map +1 -0
  147. package/dist/providers/opencode/server-manager.js +163 -0
  148. package/dist/providers/opencode/server-manager.js.map +1 -0
  149. package/dist/providers/registry.d.ts +38 -0
  150. package/dist/providers/registry.d.ts.map +1 -0
  151. package/dist/providers/registry.js +82 -0
  152. package/dist/providers/registry.js.map +1 -0
  153. package/dist/providers/types.d.ts +144 -0
  154. package/dist/providers/types.d.ts.map +1 -0
  155. package/dist/providers/types.js +25 -0
  156. package/dist/providers/types.js.map +1 -0
  157. package/dist/runtime/event-utils.d.ts +8 -0
  158. package/dist/runtime/event-utils.d.ts.map +1 -0
  159. package/dist/runtime/event-utils.js +23 -0
  160. package/dist/runtime/event-utils.js.map +1 -0
  161. package/dist/runtime/handoff.d.ts +195 -0
  162. package/dist/runtime/handoff.d.ts.map +1 -0
  163. package/dist/runtime/handoff.js +332 -0
  164. package/dist/runtime/handoff.js.map +1 -0
  165. package/dist/runtime/index.d.ts +17 -0
  166. package/dist/runtime/index.d.ts.map +1 -0
  167. package/dist/runtime/index.js +60 -0
  168. package/dist/runtime/index.js.map +1 -0
  169. package/dist/runtime/message-mapper.d.ts +99 -0
  170. package/dist/runtime/message-mapper.d.ts.map +1 -0
  171. package/dist/runtime/message-mapper.js +202 -0
  172. package/dist/runtime/message-mapper.js.map +1 -0
  173. package/dist/runtime/predecessor-query.d.ts +212 -0
  174. package/dist/runtime/predecessor-query.d.ts.map +1 -0
  175. package/dist/runtime/predecessor-query.js +283 -0
  176. package/dist/runtime/predecessor-query.js.map +1 -0
  177. package/dist/runtime/session-manager.d.ts +466 -0
  178. package/dist/runtime/session-manager.d.ts.map +1 -0
  179. package/dist/runtime/session-manager.js +986 -0
  180. package/dist/runtime/session-manager.js.map +1 -0
  181. package/dist/runtime/spawner.d.ts +407 -0
  182. package/dist/runtime/spawner.d.ts.map +1 -0
  183. package/dist/runtime/spawner.js +781 -0
  184. package/dist/runtime/spawner.js.map +1 -0
  185. package/dist/server/config.d.ts +22 -0
  186. package/dist/server/config.d.ts.map +1 -0
  187. package/dist/server/config.js +59 -0
  188. package/dist/server/config.js.map +1 -0
  189. package/dist/server/daemon-state.d.ts +50 -0
  190. package/dist/server/daemon-state.d.ts.map +1 -0
  191. package/dist/server/daemon-state.js +100 -0
  192. package/dist/server/daemon-state.js.map +1 -0
  193. package/dist/server/events-websocket.d.ts +32 -0
  194. package/dist/server/events-websocket.d.ts.map +1 -0
  195. package/dist/server/events-websocket.js +96 -0
  196. package/dist/server/events-websocket.js.map +1 -0
  197. package/dist/server/formatters.d.ts +94 -0
  198. package/dist/server/formatters.d.ts.map +1 -0
  199. package/dist/server/formatters.js +142 -0
  200. package/dist/server/formatters.js.map +1 -0
  201. package/dist/server/index.d.ts +17 -0
  202. package/dist/server/index.d.ts.map +1 -0
  203. package/dist/server/index.js +153 -0
  204. package/dist/server/index.js.map +1 -0
  205. package/dist/server/lsp-websocket.d.ts +33 -0
  206. package/dist/server/lsp-websocket.d.ts.map +1 -0
  207. package/dist/server/lsp-websocket.js +161 -0
  208. package/dist/server/lsp-websocket.js.map +1 -0
  209. package/dist/server/routes/agents.d.ts +9 -0
  210. package/dist/server/routes/agents.d.ts.map +1 -0
  211. package/dist/server/routes/agents.js +369 -0
  212. package/dist/server/routes/agents.js.map +1 -0
  213. package/dist/server/routes/daemon.d.ts +13 -0
  214. package/dist/server/routes/daemon.d.ts.map +1 -0
  215. package/dist/server/routes/daemon.js +187 -0
  216. package/dist/server/routes/daemon.js.map +1 -0
  217. package/dist/server/routes/events.d.ts +23 -0
  218. package/dist/server/routes/events.d.ts.map +1 -0
  219. package/dist/server/routes/events.js +282 -0
  220. package/dist/server/routes/events.js.map +1 -0
  221. package/dist/server/routes/extensions.d.ts +9 -0
  222. package/dist/server/routes/extensions.d.ts.map +1 -0
  223. package/dist/server/routes/extensions.js +202 -0
  224. package/dist/server/routes/extensions.js.map +1 -0
  225. package/dist/server/routes/health.d.ts +7 -0
  226. package/dist/server/routes/health.d.ts.map +1 -0
  227. package/dist/server/routes/health.js +33 -0
  228. package/dist/server/routes/health.js.map +1 -0
  229. package/dist/server/routes/index.d.ts +21 -0
  230. package/dist/server/routes/index.d.ts.map +1 -0
  231. package/dist/server/routes/index.js +21 -0
  232. package/dist/server/routes/index.js.map +1 -0
  233. package/dist/server/routes/lsp.d.ts +9 -0
  234. package/dist/server/routes/lsp.d.ts.map +1 -0
  235. package/dist/server/routes/lsp.js +50 -0
  236. package/dist/server/routes/lsp.js.map +1 -0
  237. package/dist/server/routes/plugins.d.ts +9 -0
  238. package/dist/server/routes/plugins.d.ts.map +1 -0
  239. package/dist/server/routes/plugins.js +109 -0
  240. package/dist/server/routes/plugins.js.map +1 -0
  241. package/dist/server/routes/pools.d.ts +9 -0
  242. package/dist/server/routes/pools.d.ts.map +1 -0
  243. package/dist/server/routes/pools.js +189 -0
  244. package/dist/server/routes/pools.js.map +1 -0
  245. package/dist/server/routes/scheduler.d.ts +9 -0
  246. package/dist/server/routes/scheduler.d.ts.map +1 -0
  247. package/dist/server/routes/scheduler.js +162 -0
  248. package/dist/server/routes/scheduler.js.map +1 -0
  249. package/dist/server/routes/sessions.d.ts +27 -0
  250. package/dist/server/routes/sessions.d.ts.map +1 -0
  251. package/dist/server/routes/sessions.js +773 -0
  252. package/dist/server/routes/sessions.js.map +1 -0
  253. package/dist/server/routes/tasks.d.ts +9 -0
  254. package/dist/server/routes/tasks.d.ts.map +1 -0
  255. package/dist/server/routes/tasks.js +954 -0
  256. package/dist/server/routes/tasks.js.map +1 -0
  257. package/dist/server/routes/upload.d.ts +8 -0
  258. package/dist/server/routes/upload.d.ts.map +1 -0
  259. package/dist/server/routes/upload.js +40 -0
  260. package/dist/server/routes/upload.js.map +1 -0
  261. package/dist/server/routes/workflows.d.ts +9 -0
  262. package/dist/server/routes/workflows.d.ts.map +1 -0
  263. package/dist/server/routes/workflows.js +532 -0
  264. package/dist/server/routes/workflows.js.map +1 -0
  265. package/dist/server/routes/workspace-files.d.ts +12 -0
  266. package/dist/server/routes/workspace-files.d.ts.map +1 -0
  267. package/dist/server/routes/workspace-files.js +520 -0
  268. package/dist/server/routes/workspace-files.js.map +1 -0
  269. package/dist/server/routes/worktrees.d.ts +9 -0
  270. package/dist/server/routes/worktrees.d.ts.map +1 -0
  271. package/dist/server/routes/worktrees.js +94 -0
  272. package/dist/server/routes/worktrees.js.map +1 -0
  273. package/dist/server/server.d.ts +14 -0
  274. package/dist/server/server.d.ts.map +1 -0
  275. package/dist/server/server.js +258 -0
  276. package/dist/server/server.js.map +1 -0
  277. package/dist/server/services/lsp-manager.d.ts +93 -0
  278. package/dist/server/services/lsp-manager.d.ts.map +1 -0
  279. package/dist/server/services/lsp-manager.js +291 -0
  280. package/dist/server/services/lsp-manager.js.map +1 -0
  281. package/dist/server/services/session-messages.d.ts +61 -0
  282. package/dist/server/services/session-messages.d.ts.map +1 -0
  283. package/dist/server/services/session-messages.js +101 -0
  284. package/dist/server/services/session-messages.js.map +1 -0
  285. package/dist/server/services.d.ts +35 -0
  286. package/dist/server/services.d.ts.map +1 -0
  287. package/dist/server/services.js +159 -0
  288. package/dist/server/services.js.map +1 -0
  289. package/dist/server/static.d.ts +18 -0
  290. package/dist/server/static.d.ts.map +1 -0
  291. package/dist/server/static.js +71 -0
  292. package/dist/server/static.js.map +1 -0
  293. package/dist/server/types.d.ts +20 -0
  294. package/dist/server/types.d.ts.map +1 -0
  295. package/dist/server/types.js +7 -0
  296. package/dist/server/types.js.map +1 -0
  297. package/dist/server/websocket.d.ts +16 -0
  298. package/dist/server/websocket.d.ts.map +1 -0
  299. package/dist/server/websocket.js +143 -0
  300. package/dist/server/websocket.js.map +1 -0
  301. package/dist/services/agent-pool-service.d.ts +181 -0
  302. package/dist/services/agent-pool-service.d.ts.map +1 -0
  303. package/dist/services/agent-pool-service.js +590 -0
  304. package/dist/services/agent-pool-service.js.map +1 -0
  305. package/dist/services/agent-registry.d.ts +185 -0
  306. package/dist/services/agent-registry.d.ts.map +1 -0
  307. package/dist/services/agent-registry.js +432 -0
  308. package/dist/services/agent-registry.js.map +1 -0
  309. package/dist/services/dispatch-daemon.d.ts +429 -0
  310. package/dist/services/dispatch-daemon.d.ts.map +1 -0
  311. package/dist/services/dispatch-daemon.js +1833 -0
  312. package/dist/services/dispatch-daemon.js.map +1 -0
  313. package/dist/services/dispatch-service.d.ts +148 -0
  314. package/dist/services/dispatch-service.d.ts.map +1 -0
  315. package/dist/services/dispatch-service.js +170 -0
  316. package/dist/services/dispatch-service.js.map +1 -0
  317. package/dist/services/docs-steward-service.d.ts +199 -0
  318. package/dist/services/docs-steward-service.d.ts.map +1 -0
  319. package/dist/services/docs-steward-service.js +599 -0
  320. package/dist/services/docs-steward-service.js.map +1 -0
  321. package/dist/services/health-steward-service.d.ts +446 -0
  322. package/dist/services/health-steward-service.d.ts.map +1 -0
  323. package/dist/services/health-steward-service.js +866 -0
  324. package/dist/services/health-steward-service.js.map +1 -0
  325. package/dist/services/index.d.ts +26 -0
  326. package/dist/services/index.d.ts.map +1 -0
  327. package/dist/services/index.js +111 -0
  328. package/dist/services/index.js.map +1 -0
  329. package/dist/services/merge-request-provider.d.ts +59 -0
  330. package/dist/services/merge-request-provider.d.ts.map +1 -0
  331. package/dist/services/merge-request-provider.js +89 -0
  332. package/dist/services/merge-request-provider.js.map +1 -0
  333. package/dist/services/merge-steward-service.d.ts +268 -0
  334. package/dist/services/merge-steward-service.d.ts.map +1 -0
  335. package/dist/services/merge-steward-service.js +568 -0
  336. package/dist/services/merge-steward-service.js.map +1 -0
  337. package/dist/services/plugin-executor.d.ts +247 -0
  338. package/dist/services/plugin-executor.d.ts.map +1 -0
  339. package/dist/services/plugin-executor.js +451 -0
  340. package/dist/services/plugin-executor.js.map +1 -0
  341. package/dist/services/role-definition-service.d.ts +117 -0
  342. package/dist/services/role-definition-service.d.ts.map +1 -0
  343. package/dist/services/role-definition-service.js +289 -0
  344. package/dist/services/role-definition-service.js.map +1 -0
  345. package/dist/services/steward-scheduler.d.ts +336 -0
  346. package/dist/services/steward-scheduler.d.ts.map +1 -0
  347. package/dist/services/steward-scheduler.js +732 -0
  348. package/dist/services/steward-scheduler.js.map +1 -0
  349. package/dist/services/task-assignment-service.d.ts +291 -0
  350. package/dist/services/task-assignment-service.d.ts.map +1 -0
  351. package/dist/services/task-assignment-service.js +454 -0
  352. package/dist/services/task-assignment-service.js.map +1 -0
  353. package/dist/services/worker-task-service.d.ts +202 -0
  354. package/dist/services/worker-task-service.d.ts.map +1 -0
  355. package/dist/services/worker-task-service.js +228 -0
  356. package/dist/services/worker-task-service.js.map +1 -0
  357. package/dist/testing/index.d.ts +13 -0
  358. package/dist/testing/index.d.ts.map +1 -0
  359. package/dist/testing/index.js +17 -0
  360. package/dist/testing/index.js.map +1 -0
  361. package/dist/testing/orchestration-tests.d.ts +62 -0
  362. package/dist/testing/orchestration-tests.d.ts.map +1 -0
  363. package/dist/testing/orchestration-tests.js +1115 -0
  364. package/dist/testing/orchestration-tests.js.map +1 -0
  365. package/dist/testing/test-context.d.ts +171 -0
  366. package/dist/testing/test-context.d.ts.map +1 -0
  367. package/dist/testing/test-context.js +665 -0
  368. package/dist/testing/test-context.js.map +1 -0
  369. package/dist/testing/test-prompts.d.ts +46 -0
  370. package/dist/testing/test-prompts.d.ts.map +1 -0
  371. package/dist/testing/test-prompts.js +140 -0
  372. package/dist/testing/test-prompts.js.map +1 -0
  373. package/dist/testing/test-utils.d.ts +200 -0
  374. package/dist/testing/test-utils.d.ts.map +1 -0
  375. package/dist/testing/test-utils.js +378 -0
  376. package/dist/testing/test-utils.js.map +1 -0
  377. package/dist/types/agent-pool.d.ts +215 -0
  378. package/dist/types/agent-pool.d.ts.map +1 -0
  379. package/dist/types/agent-pool.js +143 -0
  380. package/dist/types/agent-pool.js.map +1 -0
  381. package/dist/types/agent.d.ts +265 -0
  382. package/dist/types/agent.d.ts.map +1 -0
  383. package/dist/types/agent.js +127 -0
  384. package/dist/types/agent.js.map +1 -0
  385. package/dist/types/index.d.ts +11 -0
  386. package/dist/types/index.d.ts.map +1 -0
  387. package/dist/types/index.js +40 -0
  388. package/dist/types/index.js.map +1 -0
  389. package/dist/types/message-types.d.ts +294 -0
  390. package/dist/types/message-types.d.ts.map +1 -0
  391. package/dist/types/message-types.js +354 -0
  392. package/dist/types/message-types.js.map +1 -0
  393. package/dist/types/role-definition.d.ts +272 -0
  394. package/dist/types/role-definition.d.ts.map +1 -0
  395. package/dist/types/role-definition.js +144 -0
  396. package/dist/types/role-definition.js.map +1 -0
  397. package/dist/types/task-meta.d.ts +248 -0
  398. package/dist/types/task-meta.d.ts.map +1 -0
  399. package/dist/types/task-meta.js +213 -0
  400. package/dist/types/task-meta.js.map +1 -0
  401. package/package.json +120 -0
  402. package/web/assets/abap-BrgZPUOV.js +6 -0
  403. package/web/assets/apex-DyP6w7ZV.js +6 -0
  404. package/web/assets/azcli-BaLxmfj-.js +6 -0
  405. package/web/assets/bat-CFOPXBzS.js +6 -0
  406. package/web/assets/bicep-BfEKNvv3.js +7 -0
  407. package/web/assets/cameligo-BFG1Mk7z.js +6 -0
  408. package/web/assets/clojure-DTECt2xU.js +6 -0
  409. package/web/assets/codicon-DCmgc-ay.ttf +0 -0
  410. package/web/assets/coffee-CDGzqUPQ.js +6 -0
  411. package/web/assets/cpp-CLLBncYj.js +6 -0
  412. package/web/assets/csharp-dUCx_-0o.js +6 -0
  413. package/web/assets/csp-5Rap-vPy.js +6 -0
  414. package/web/assets/css-D3h14YRZ.js +8 -0
  415. package/web/assets/cssMode-DMo-5YLA.js +9 -0
  416. package/web/assets/cypher-DrQuvNYM.js +6 -0
  417. package/web/assets/dart-CFKIUWau.js +6 -0
  418. package/web/assets/dockerfile-Zznr-cwX.js +6 -0
  419. package/web/assets/ecl-Ce3n6wWz.js +6 -0
  420. package/web/assets/elixir-deUWdS0T.js +6 -0
  421. package/web/assets/flow9-i9-g7ZhI.js +6 -0
  422. package/web/assets/freemarker2-D4qgkQzN.js +8 -0
  423. package/web/assets/fsharp-CzKuDChf.js +6 -0
  424. package/web/assets/go-Cphgjts3.js +6 -0
  425. package/web/assets/graphql-Cg7bfA9N.js +6 -0
  426. package/web/assets/handlebars-CXFvNjQC.js +6 -0
  427. package/web/assets/hcl-0cvrggvQ.js +6 -0
  428. package/web/assets/html-oyuB_D-B.js +6 -0
  429. package/web/assets/htmlMode-iWuZ24-r.js +9 -0
  430. package/web/assets/index-DqP-_E4F.css +32 -0
  431. package/web/assets/index-R1cylSgw.js +1665 -0
  432. package/web/assets/ini-Drc7WvVn.js +6 -0
  433. package/web/assets/java-B_fMsGYe.js +6 -0
  434. package/web/assets/javascript-CRIkN2Pg.js +6 -0
  435. package/web/assets/jsonMode-DVDkDgex.js +15 -0
  436. package/web/assets/julia-Bqgm2twL.js +6 -0
  437. package/web/assets/kotlin-BSkB5QuD.js +6 -0
  438. package/web/assets/less-BsTHnhdd.js +7 -0
  439. package/web/assets/lexon-YWi4-JPR.js +6 -0
  440. package/web/assets/liquid-CSfldbB5.js +6 -0
  441. package/web/assets/lua-nf6ki56Z.js +6 -0
  442. package/web/assets/m3-Cpb6xl2v.js +6 -0
  443. package/web/assets/markdown-DSZPf7rp.js +6 -0
  444. package/web/assets/mdx-Dd58iymR.js +6 -0
  445. package/web/assets/mips-B_c3zf-v.js +6 -0
  446. package/web/assets/monaco-editor-B4lwqA13.js +751 -0
  447. package/web/assets/monaco-editor-CQpyCxOA.css +1 -0
  448. package/web/assets/msdax-rUNN04Wq.js +6 -0
  449. package/web/assets/mysql-DDwshQtU.js +6 -0
  450. package/web/assets/objective-c-B5zXfXm9.js +6 -0
  451. package/web/assets/pascal-CXOwvkN_.js +6 -0
  452. package/web/assets/pascaligo-Bc-ZgV77.js +6 -0
  453. package/web/assets/perl-CwNk8-XU.js +6 -0
  454. package/web/assets/pgsql-tGk8EFnU.js +6 -0
  455. package/web/assets/php-CpIb_Oan.js +6 -0
  456. package/web/assets/pla-B03wrqEc.js +6 -0
  457. package/web/assets/postiats-BKlk5iyT.js +6 -0
  458. package/web/assets/powerquery-Bhzvs7bI.js +6 -0
  459. package/web/assets/powershell-Dd3NCNK9.js +6 -0
  460. package/web/assets/protobuf-COyEY5Pt.js +7 -0
  461. package/web/assets/pug-BaJupSGV.js +6 -0
  462. package/web/assets/python-XWrMqdhO.js +6 -0
  463. package/web/assets/qsharp-DXyYeYxl.js +6 -0
  464. package/web/assets/r-CdQndTaG.js +6 -0
  465. package/web/assets/razor-DPlhCpIs.js +6 -0
  466. package/web/assets/redis-CVwtpugi.js +6 -0
  467. package/web/assets/redshift-25W9uPmb.js +6 -0
  468. package/web/assets/restructuredtext-DfzH4Xui.js +6 -0
  469. package/web/assets/router-vendor-DHlGizSU.js +41 -0
  470. package/web/assets/ruby-Cp1zYvxS.js +6 -0
  471. package/web/assets/rust-D5C2fndG.js +6 -0
  472. package/web/assets/sb-CDntyWJ8.js +6 -0
  473. package/web/assets/scala-BoFRg7Ot.js +6 -0
  474. package/web/assets/scheme-Bio4gycK.js +6 -0
  475. package/web/assets/scss-4Ik7cdeQ.js +8 -0
  476. package/web/assets/shell-CX-rkNHf.js +6 -0
  477. package/web/assets/solidity-Tw7wswEv.js +6 -0
  478. package/web/assets/sophia-C5WLch3f.js +6 -0
  479. package/web/assets/sparql-DHaeiCBh.js +6 -0
  480. package/web/assets/sql-CCSDG5nI.js +6 -0
  481. package/web/assets/st-pnP8ivHi.js +6 -0
  482. package/web/assets/swift-DwJ7jVG9.js +8 -0
  483. package/web/assets/systemverilog-B9Xyijhd.js +6 -0
  484. package/web/assets/tcl-DnHyzjbg.js +6 -0
  485. package/web/assets/tsMode-BbA1Jbf3.js +16 -0
  486. package/web/assets/twig-CPajHgWi.js +6 -0
  487. package/web/assets/typescript-DcLHYzvH.js +6 -0
  488. package/web/assets/typespec-D-MeaMDU.js +6 -0
  489. package/web/assets/ui-vendor-BSco96uv.js +51 -0
  490. package/web/assets/utils-vendor-DaJ2Dubl.js +911 -0
  491. package/web/assets/vb-DgyLZaXg.js +6 -0
  492. package/web/assets/wgsl-DYQUnd45.js +303 -0
  493. package/web/assets/xml-xKYS3dO6.js +6 -0
  494. package/web/assets/yaml-CNmlXqzH.js +6 -0
  495. package/web/favicon.ico +0 -0
  496. package/web/index.html +22 -0
  497. package/web/logo.png +0 -0
@@ -0,0 +1,153 @@
1
+ /**
2
+ * Codex Server Manager (Singleton)
3
+ *
4
+ * Manages the lifecycle of a single shared Codex app-server process.
5
+ * Multiple sessions share one server; ref counting shuts it down
6
+ * when the last session releases.
7
+ *
8
+ * Communicates via JSON-RPC 2.0 over JSONL stdio.
9
+ *
10
+ * @module
11
+ */
12
+ import { spawn } from 'node:child_process';
13
+ import { CodexJsonRpcClient } from './jsonrpc-client.js';
14
+ /**
15
+ * Manages a single shared Codex app-server instance.
16
+ *
17
+ * - `acquire()` starts or reuses the server, increments ref count
18
+ * - `release()` decrements ref count, stops server at zero
19
+ * - Concurrent acquire() calls are coalesced into a single startup
20
+ */
21
+ class CodexServerManager {
22
+ client = null;
23
+ process = null;
24
+ rpcClient = null;
25
+ refCount = 0;
26
+ startPromise = null;
27
+ async acquire(config) {
28
+ this.refCount++;
29
+ if (this.client) {
30
+ return this.client;
31
+ }
32
+ // Coalesce concurrent startup requests
33
+ if (this.startPromise) {
34
+ return this.startPromise;
35
+ }
36
+ this.startPromise = this.startServer(config);
37
+ try {
38
+ const client = await this.startPromise;
39
+ return client;
40
+ }
41
+ catch (error) {
42
+ this.refCount--;
43
+ this.startPromise = null;
44
+ throw error;
45
+ }
46
+ }
47
+ release() {
48
+ this.refCount = Math.max(0, this.refCount - 1);
49
+ if (this.refCount === 0) {
50
+ this.shutdown();
51
+ }
52
+ }
53
+ shutdown() {
54
+ if (this.rpcClient) {
55
+ this.rpcClient.close();
56
+ this.rpcClient = null;
57
+ }
58
+ if (this.process) {
59
+ this.process.kill();
60
+ this.process = null;
61
+ }
62
+ this.client = null;
63
+ this.startPromise = null;
64
+ this.refCount = 0;
65
+ }
66
+ async startServer(config) {
67
+ const env = {
68
+ ...process.env,
69
+ };
70
+ if (config?.stoneforgeRoot) {
71
+ env.STONEFORGE_ROOT = config.stoneforgeRoot;
72
+ }
73
+ const child = spawn('codex', ['app-server'], {
74
+ stdio: ['pipe', 'pipe', 'pipe'],
75
+ cwd: config?.cwd,
76
+ env,
77
+ });
78
+ // Wait for the process to confirm stdio is ready, or fail with a
79
+ // descriptive error if the binary is missing / not executable.
80
+ // Note: ENOENT can mean the binary OR the cwd doesn't exist.
81
+ await new Promise((resolve, reject) => {
82
+ child.on('error', (err) => {
83
+ const detail = config?.cwd ? ` (cwd: ${config.cwd})` : '';
84
+ reject(new Error(`Failed to spawn codex app-server${detail}: ${err.message}`));
85
+ });
86
+ child.on('spawn', () => resolve());
87
+ });
88
+ if (!child.stdin || !child.stdout) {
89
+ child.kill();
90
+ throw new Error('Failed to spawn codex app-server: stdio not available');
91
+ }
92
+ const rpcClient = new CodexJsonRpcClient(child.stdin, child.stdout);
93
+ // Pipe stderr to debug logging
94
+ child.stderr?.on('data', () => {
95
+ // Debug: stderr output consumed to prevent backpressure
96
+ });
97
+ // Monitor process exit
98
+ child.on('exit', () => {
99
+ rpcClient.close();
100
+ this.process = null;
101
+ this.rpcClient = null;
102
+ this.client = null;
103
+ this.startPromise = null;
104
+ });
105
+ // Send initialize handshake
106
+ await rpcClient.request('initialize', {
107
+ clientInfo: { name: 'stoneforge', title: 'Stoneforge', version: '0.1.0' },
108
+ });
109
+ // Send initialized notification
110
+ rpcClient.notify('initialized');
111
+ // Register auto-approval handler for requestApproval server requests
112
+ rpcClient.onServerRequest((id, method, _params) => {
113
+ if (method === 'requestApproval') {
114
+ rpcClient.respond(id, { decision: 'accept' });
115
+ }
116
+ });
117
+ this.process = child;
118
+ this.rpcClient = rpcClient;
119
+ // Build typed client facade
120
+ const notificationHandlers = new Set();
121
+ rpcClient.onNotification((method, params) => {
122
+ for (const handler of notificationHandlers) {
123
+ handler(method, params);
124
+ }
125
+ });
126
+ const client = {
127
+ model: {
128
+ list: (params) => rpcClient.request('model/list', params ?? {}),
129
+ },
130
+ thread: {
131
+ start: (params) => rpcClient.request('thread/start', params),
132
+ resume: (params) => rpcClient.request('thread/resume', params),
133
+ read: (params) => rpcClient.request('thread/read', params),
134
+ },
135
+ turn: {
136
+ start: (params) => rpcClient.request('turn/start', params),
137
+ interrupt: (params) => rpcClient.request('turn/interrupt', params),
138
+ },
139
+ onNotification: (handler) => {
140
+ notificationHandlers.add(handler);
141
+ return () => { notificationHandlers.delete(handler); };
142
+ },
143
+ respondToServer: (id, result) => rpcClient.respond(id, result),
144
+ close: () => rpcClient.close(),
145
+ };
146
+ this.client = client;
147
+ this.startPromise = null;
148
+ return client;
149
+ }
150
+ }
151
+ /** Singleton instance */
152
+ export const serverManager = new CodexServerManager();
153
+ //# sourceMappingURL=server-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-manager.js","sourceRoot":"","sources":["../../../src/providers/codex/server-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Agent Providers
3
+ *
4
+ * Provider abstraction layer that enables drop-in replacement of the
5
+ * underlying agent CLI/SDK. The default provider is Claude Code.
6
+ *
7
+ * @module
8
+ */
9
+ export type { ProviderSessionId, AgentProviderConfig, AgentMessage, HeadlessSession, HeadlessSpawnOptions, HeadlessProvider, InteractiveSession, InteractiveSpawnOptions, InteractiveProvider, AgentProvider, ModelInfo, } from './types.js';
10
+ export { ProviderError } from './types.js';
11
+ export { AgentProviderRegistry, getProviderRegistry, } from './registry.js';
12
+ export { ClaudeAgentProvider, ClaudeHeadlessProvider, ClaudeInteractiveProvider, } from './claude/index.js';
13
+ export { OpenCodeAgentProvider, OpenCodeHeadlessProvider, OpenCodeInteractiveProvider, OpenCodeEventMapper, AsyncQueue, } from './opencode/index.js';
14
+ export { CodexAgentProvider, CodexHeadlessProvider, CodexInteractiveProvider, CodexEventMapper, } from './codex/index.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,YAAY,EACV,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,aAAa,EACb,SAAS,GACV,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG3C,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAGvB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,mBAAmB,EACnB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Agent Providers
3
+ *
4
+ * Provider abstraction layer that enables drop-in replacement of the
5
+ * underlying agent CLI/SDK. The default provider is Claude Code.
6
+ *
7
+ * @module
8
+ */
9
+ // Errors
10
+ export { ProviderError } from './types.js';
11
+ // Registry
12
+ export { AgentProviderRegistry, getProviderRegistry, } from './registry.js';
13
+ // Claude provider
14
+ export { ClaudeAgentProvider, ClaudeHeadlessProvider, ClaudeInteractiveProvider, } from './claude/index.js';
15
+ // OpenCode provider
16
+ export { OpenCodeAgentProvider, OpenCodeHeadlessProvider, OpenCodeInteractiveProvider, OpenCodeEventMapper, AsyncQueue, } from './opencode/index.js';
17
+ // Codex provider
18
+ export { CodexAgentProvider, CodexHeadlessProvider, CodexInteractiveProvider, CodexEventMapper, } from './codex/index.js';
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAiBH,SAAS;AACT,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,WAAW;AACX,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAEvB,kBAAkB;AAClB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,oBAAoB;AACpB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,2BAA2B,EAC3B,mBAAmB,EACnB,UAAU,GACX,MAAM,qBAAqB,CAAC;AAE7B,iBAAiB;AACjB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Async Queue
3
+ *
4
+ * Push-to-pull bridge that adapts push-based SSE events into a
5
+ * pull-based async iterable for the HeadlessSession interface.
6
+ *
7
+ * @module
8
+ */
9
+ /**
10
+ * A simple async iterable queue that bridges push-based producers
11
+ * (SSE event processor) to pull-based consumers (async iteration).
12
+ */
13
+ export declare class AsyncQueue<T> implements AsyncIterable<T> {
14
+ private queue;
15
+ private waitingResolve;
16
+ private closed;
17
+ push(item: T): void;
18
+ close(): void;
19
+ [Symbol.asyncIterator](): AsyncIterator<T>;
20
+ }
21
+ //# sourceMappingURL=async-queue.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-queue.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode/async-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,qBAAa,UAAU,CAAC,CAAC,CAAE,YAAW,aAAa,CAAC,CAAC,CAAC;IACpD,OAAO,CAAC,KAAK,CAAW;IACxB,OAAO,CAAC,cAAc,CAAsD;IAC5E,OAAO,CAAC,MAAM,CAAS;IAEvB,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI;IAWnB,KAAK,IAAI,IAAI;IAQb,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC;CAe3C"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Async Queue
3
+ *
4
+ * Push-to-pull bridge that adapts push-based SSE events into a
5
+ * pull-based async iterable for the HeadlessSession interface.
6
+ *
7
+ * @module
8
+ */
9
+ /**
10
+ * A simple async iterable queue that bridges push-based producers
11
+ * (SSE event processor) to pull-based consumers (async iteration).
12
+ */
13
+ export class AsyncQueue {
14
+ queue = [];
15
+ waitingResolve = null;
16
+ closed = false;
17
+ push(item) {
18
+ if (this.closed)
19
+ return;
20
+ if (this.waitingResolve) {
21
+ this.waitingResolve({ value: item, done: false });
22
+ this.waitingResolve = null;
23
+ }
24
+ else {
25
+ this.queue.push(item);
26
+ }
27
+ }
28
+ close() {
29
+ this.closed = true;
30
+ if (this.waitingResolve) {
31
+ this.waitingResolve({ value: undefined, done: true });
32
+ this.waitingResolve = null;
33
+ }
34
+ }
35
+ [Symbol.asyncIterator]() {
36
+ return {
37
+ next: () => {
38
+ if (this.queue.length > 0) {
39
+ return Promise.resolve({ value: this.queue.shift(), done: false });
40
+ }
41
+ if (this.closed) {
42
+ return Promise.resolve({ value: undefined, done: true });
43
+ }
44
+ return new Promise((resolve) => {
45
+ this.waitingResolve = resolve;
46
+ });
47
+ },
48
+ };
49
+ }
50
+ }
51
+ //# sourceMappingURL=async-queue.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"async-queue.js","sourceRoot":"","sources":["../../../src/providers/opencode/async-queue.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;GAGG;AACH,MAAM,OAAO,UAAU;IACb,KAAK,GAAQ,EAAE,CAAC;IAChB,cAAc,GAAiD,IAAI,CAAC;IACpE,MAAM,GAAG,KAAK,CAAC;IAEvB,IAAI,CAAC,IAAO;QACV,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAExB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAClD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,SAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAED,CAAC,MAAM,CAAC,aAAa,CAAC;QACpB,OAAO;YACL,IAAI,EAAE,GAA+B,EAAE;gBACrC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC1B,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAG,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtE,CAAC;gBACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;oBAChB,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC3E,CAAC;gBACD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;oBAC7B,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC;gBAChC,CAAC,CAAC,CAAC;YACL,CAAC;SACF,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,132 @@
1
+ /**
2
+ * OpenCode Event Mapper
3
+ *
4
+ * Maps OpenCode SSE events to the provider-agnostic AgentMessage interface.
5
+ * Handles deduplication of tool_use/tool_result events and text delta streaming.
6
+ *
7
+ * Types here mirror the real @opencode-ai/sdk event shapes:
8
+ * - ToolPart.state is an object with `status` + nested `input`/`output`/`error`
9
+ * - TextPart has `text` but delta comes from `event.properties.delta`
10
+ * - Tool name lives in `ToolPart.tool`, not `ToolPart.name`
11
+ *
12
+ * @module
13
+ */
14
+ import type { AgentMessage } from "../types.js";
15
+ /** Tool state objects — the `state` field on ToolPart is a discriminated union */
16
+ interface ToolStatePending {
17
+ status: "pending";
18
+ input: Record<string, unknown>;
19
+ }
20
+ interface ToolStateRunning {
21
+ status: "running";
22
+ input: Record<string, unknown>;
23
+ title?: string;
24
+ }
25
+ interface ToolStateCompleted {
26
+ status: "completed";
27
+ input: Record<string, unknown>;
28
+ output: string;
29
+ title: string;
30
+ }
31
+ interface ToolStateError {
32
+ status: "error";
33
+ input: Record<string, unknown>;
34
+ error: string;
35
+ }
36
+ type ToolState = ToolStatePending | ToolStateRunning | ToolStateCompleted | ToolStateError;
37
+ /** Part types emitted by OpenCode */
38
+ interface TextPart {
39
+ type: "text";
40
+ id: string;
41
+ sessionID: string;
42
+ text: string;
43
+ }
44
+ interface ToolPart {
45
+ type: "tool";
46
+ id: string;
47
+ sessionID: string;
48
+ callID: string;
49
+ tool: string;
50
+ state: ToolState;
51
+ }
52
+ interface ReasoningPart {
53
+ type: "reasoning";
54
+ id: string;
55
+ sessionID: string;
56
+ }
57
+ interface StepStartPart {
58
+ type: "step-start";
59
+ id: string;
60
+ sessionID: string;
61
+ }
62
+ interface StepFinishPart {
63
+ type: "step-finish";
64
+ id: string;
65
+ sessionID: string;
66
+ }
67
+ interface AgentPart {
68
+ type: "agent";
69
+ id: string;
70
+ sessionID: string;
71
+ }
72
+ type OpenCodePart = TextPart | ReasoningPart | ToolPart | StepStartPart | StepFinishPart | AgentPart;
73
+ /** OpenCode SSE event structure */
74
+ export interface OpenCodeEvent {
75
+ type: string;
76
+ properties?: {
77
+ sessionID?: string;
78
+ /** Incremental text delta (only on message.part.updated for TextPart) */
79
+ delta?: string;
80
+ part?: OpenCodePart & {
81
+ sessionID?: string;
82
+ };
83
+ info?: {
84
+ id?: string;
85
+ };
86
+ /** Structured error object (on session.error events) */
87
+ error?: {
88
+ message?: string;
89
+ type?: string;
90
+ } | string;
91
+ status?: unknown;
92
+ [key: string]: unknown;
93
+ };
94
+ }
95
+ /**
96
+ * Maps OpenCode SSE events to AgentMessage arrays.
97
+ *
98
+ * Tracks emitted tool IDs to avoid duplicate tool_use/tool_result messages
99
+ * when OpenCode fires multiple `message.part.updated` events for the same tool
100
+ * as it transitions through states.
101
+ *
102
+ * Buffers streaming text deltas and emits a single accumulated `assistant`
103
+ * message when the text part is complete (i.e. a non-text event arrives).
104
+ * This matches the Claude provider behavior where each AgentMessage is a
105
+ * complete response, not a streaming chunk.
106
+ */
107
+ export declare class OpenCodeEventMapper {
108
+ private emittedToolUses;
109
+ private emittedToolResults;
110
+ /** Buffered text content from streaming deltas, keyed by part ID */
111
+ private pendingText;
112
+ /**
113
+ * Maps an OpenCode SSE event to zero or more AgentMessages.
114
+ *
115
+ * @param event - The raw OpenCode SSE event
116
+ * @param sessionId - Our session ID for filtering
117
+ * @returns Array of AgentMessages (may be empty)
118
+ */
119
+ mapEvent(event: OpenCodeEvent, sessionId: string): AgentMessage[];
120
+ /** Flush any buffered text as a final assistant message. Call after stream ends. */
121
+ flush(): AgentMessage[];
122
+ /** Reset state for a new conversation turn */
123
+ reset(): void;
124
+ private extractSessionId;
125
+ private extractErrorMessage;
126
+ private flushPendingText;
127
+ private mapPartUpdated;
128
+ private bufferTextPart;
129
+ private mapToolPart;
130
+ }
131
+ export {};
132
+ //# sourceMappingURL=event-mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-mapper.d.ts","sourceRoot":"","sources":["../../../src/providers/opencode/event-mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,204 @@
1
+ /**
2
+ * OpenCode Event Mapper
3
+ *
4
+ * Maps OpenCode SSE events to the provider-agnostic AgentMessage interface.
5
+ * Handles deduplication of tool_use/tool_result events and text delta streaming.
6
+ *
7
+ * Types here mirror the real @opencode-ai/sdk event shapes:
8
+ * - ToolPart.state is an object with `status` + nested `input`/`output`/`error`
9
+ * - TextPart has `text` but delta comes from `event.properties.delta`
10
+ * - Tool name lives in `ToolPart.tool`, not `ToolPart.name`
11
+ *
12
+ * @module
13
+ */
14
+ // ============================================================================
15
+ // Event Mapper
16
+ // ============================================================================
17
+ /**
18
+ * Maps OpenCode SSE events to AgentMessage arrays.
19
+ *
20
+ * Tracks emitted tool IDs to avoid duplicate tool_use/tool_result messages
21
+ * when OpenCode fires multiple `message.part.updated` events for the same tool
22
+ * as it transitions through states.
23
+ *
24
+ * Buffers streaming text deltas and emits a single accumulated `assistant`
25
+ * message when the text part is complete (i.e. a non-text event arrives).
26
+ * This matches the Claude provider behavior where each AgentMessage is a
27
+ * complete response, not a streaming chunk.
28
+ */
29
+ export class OpenCodeEventMapper {
30
+ emittedToolUses = new Set();
31
+ emittedToolResults = new Set();
32
+ /** Buffered text content from streaming deltas, keyed by part ID */
33
+ pendingText = null;
34
+ /**
35
+ * Maps an OpenCode SSE event to zero or more AgentMessages.
36
+ *
37
+ * @param event - The raw OpenCode SSE event
38
+ * @param sessionId - Our session ID for filtering
39
+ * @returns Array of AgentMessages (may be empty)
40
+ */
41
+ mapEvent(event, sessionId) {
42
+ // Filter events by session ID
43
+ const eventSessionId = this.extractSessionId(event);
44
+ if (eventSessionId && eventSessionId !== sessionId) {
45
+ return [];
46
+ }
47
+ switch (event.type) {
48
+ case "message.part.updated":
49
+ return this.mapPartUpdated(event);
50
+ case "session.idle": {
51
+ // Flush buffered text before emitting result
52
+ const messages = this.flushPendingText();
53
+ messages.push({
54
+ type: "result",
55
+ subtype: "success",
56
+ raw: event,
57
+ });
58
+ return messages;
59
+ }
60
+ case "session.error": {
61
+ const messages = this.flushPendingText();
62
+ messages.push({
63
+ type: "error",
64
+ content: this.extractErrorMessage(event.properties?.error),
65
+ raw: event,
66
+ });
67
+ return messages;
68
+ }
69
+ // Internal state events - no AgentMessage needed
70
+ case "session.status":
71
+ case "message.updated":
72
+ return [];
73
+ default:
74
+ return [];
75
+ }
76
+ }
77
+ /** Flush any buffered text as a final assistant message. Call after stream ends. */
78
+ flush() {
79
+ return this.flushPendingText();
80
+ }
81
+ /** Reset state for a new conversation turn */
82
+ reset() {
83
+ this.emittedToolUses.clear();
84
+ this.emittedToolResults.clear();
85
+ this.pendingText = null;
86
+ }
87
+ // ----------------------------------------
88
+ // Private
89
+ // ----------------------------------------
90
+ extractSessionId(event) {
91
+ return (event.properties?.sessionID ??
92
+ event.properties?.part?.sessionID ??
93
+ event.properties?.info?.id);
94
+ }
95
+ extractErrorMessage(error) {
96
+ if (!error)
97
+ return "Unknown session error";
98
+ if (typeof error === "string")
99
+ return error;
100
+ if (typeof error === "object" && error !== null) {
101
+ const obj = error;
102
+ if (typeof obj.message === "string")
103
+ return obj.message;
104
+ if (typeof obj.type === "string")
105
+ return obj.type;
106
+ }
107
+ return String(error);
108
+ }
109
+ flushPendingText() {
110
+ if (!this.pendingText || !this.pendingText.content) {
111
+ this.pendingText = null;
112
+ return [];
113
+ }
114
+ const msg = {
115
+ type: "assistant",
116
+ content: this.pendingText.content,
117
+ raw: null,
118
+ };
119
+ this.pendingText = null;
120
+ return [msg];
121
+ }
122
+ mapPartUpdated(event) {
123
+ const part = event.properties?.part;
124
+ if (!part)
125
+ return [];
126
+ switch (part.type) {
127
+ case "text":
128
+ return this.bufferTextPart(part, event);
129
+ case "tool": {
130
+ // Flush buffered text before emitting tool events
131
+ const messages = this.flushPendingText();
132
+ messages.push(...this.mapToolPart(part, event));
133
+ return messages;
134
+ }
135
+ // Non-text parts flush any buffered text
136
+ case "reasoning":
137
+ case "step-start":
138
+ case "step-finish":
139
+ case "agent":
140
+ return this.flushPendingText();
141
+ default:
142
+ return this.flushPendingText();
143
+ }
144
+ }
145
+ bufferTextPart(part, event) {
146
+ const delta = event.properties?.delta;
147
+ const messages = [];
148
+ // If a different text part starts, flush the previous one
149
+ if (this.pendingText && this.pendingText.partId !== part.id) {
150
+ messages.push(...this.flushPendingText());
151
+ }
152
+ if (delta) {
153
+ // Append incremental delta to buffer
154
+ if (this.pendingText) {
155
+ this.pendingText.content += delta;
156
+ }
157
+ else {
158
+ this.pendingText = { partId: part.id, content: delta };
159
+ }
160
+ }
161
+ else if (part.text) {
162
+ // Full text replacement (no delta available)
163
+ this.pendingText = { partId: part.id, content: part.text };
164
+ }
165
+ return messages;
166
+ }
167
+ mapToolPart(part, event) {
168
+ const partId = part.id;
169
+ if (!partId)
170
+ return [];
171
+ const status = part.state?.status;
172
+ const messages = [];
173
+ // Emit tool_use once when running (pending state often has empty input {})
174
+ // Also emit on completed/error if we never saw running state
175
+ if (!this.emittedToolUses.has(partId) && status !== "pending") {
176
+ this.emittedToolUses.add(partId);
177
+ messages.push({
178
+ type: "tool_use",
179
+ tool: {
180
+ name: part.tool,
181
+ id: partId,
182
+ input: part.state?.input,
183
+ },
184
+ raw: event,
185
+ });
186
+ }
187
+ // Emit tool_result once when completed or error
188
+ if ((status === "completed" || status === "error") &&
189
+ !this.emittedToolResults.has(partId)) {
190
+ this.emittedToolResults.add(partId);
191
+ const resultContent = status === "error"
192
+ ? (part.state.error ?? "Tool error")
193
+ : (part.state.output ?? "");
194
+ messages.push({
195
+ type: "tool_result",
196
+ content: resultContent,
197
+ tool: { id: partId },
198
+ raw: event,
199
+ });
200
+ }
201
+ return messages;
202
+ }
203
+ }
204
+ //# sourceMappingURL=event-mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-mapper.js","sourceRoot":"","sources":["../../../src/providers/opencode/event-mapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * OpenCode Headless Provider
3
+ *
4
+ * Implements the HeadlessProvider interface using the OpenCode SDK.
5
+ * Manages a shared server, creates sessions, and maps SSE events
6
+ * to the AgentMessage stream.
7
+ *
8
+ * @module
9
+ */
10
+ import type { HeadlessProvider, HeadlessSession, HeadlessSpawnOptions } from '../types.js';
11
+ export interface OpenCodeHeadlessConfig {
12
+ port?: number;
13
+ }
14
+ /**
15
+ * OpenCode headless provider using @opencode-ai/sdk.
16
+ * Manages a shared server and creates sessions on demand.
17
+ */
18
+ export declare class OpenCodeHeadlessProvider implements HeadlessProvider {
19
+ readonly name = "opencode-headless";
20
+ private config?;
21
+ constructor(config?: OpenCodeHeadlessConfig);
22
+ spawn(options: HeadlessSpawnOptions): Promise<HeadlessSession>;
23
+ isAvailable(): Promise<boolean>;
24
+ }
25
+ //# sourceMappingURL=headless.d.ts.map