@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,79 @@
1
+ /**
2
+ * Git Merge Utilities
3
+ *
4
+ * Shared squash-merge-in-temp-worktree logic used by both the Merge Steward
5
+ * and the Docs Steward services.
6
+ *
7
+ * Pattern:
8
+ * 1. Fetch origin
9
+ * 2. (Optional) Pre-flight conflict detection via git merge-tree
10
+ * 3. Create temp worktree with detached HEAD at origin/<target>
11
+ * 4. Squash merge (or regular merge) source branch
12
+ * 5. Commit with provided message
13
+ * 6. Push HEAD:<target> to remote
14
+ * 7. Remove temp worktree (always, in finally)
15
+ * 8. (Optional) Sync local target branch via fast-forward
16
+ *
17
+ * @module
18
+ */
19
+ export interface MergeBranchOptions {
20
+ /** Workspace root (the main repo checkout) */
21
+ workspaceRoot: string;
22
+ /** Branch to merge from */
23
+ sourceBranch: string;
24
+ /** Branch to merge into (auto-detected if omitted) */
25
+ targetBranch?: string;
26
+ /** 'squash' (default) or 'merge' (--no-ff) */
27
+ mergeStrategy?: 'squash' | 'merge';
28
+ /** Push to remote after merge (default: true) */
29
+ autoPush?: boolean;
30
+ /** Commit message (required for squash, auto-generated for merge) */
31
+ commitMessage?: string;
32
+ /** Run pre-flight conflict detection via merge-tree (default: true) */
33
+ preflight?: boolean;
34
+ /** Fast-forward local target branch after push (default: true) */
35
+ syncLocal?: boolean;
36
+ }
37
+ export interface MergeBranchResult {
38
+ /** Whether the merge succeeded */
39
+ success: boolean;
40
+ /** Merge/squash commit hash if successful */
41
+ commitHash?: string;
42
+ /** Whether a conflict was detected */
43
+ hasConflict: boolean;
44
+ /** Error message if merge failed */
45
+ error?: string;
46
+ /** Files with conflicts, if any */
47
+ conflictFiles?: string[];
48
+ }
49
+ /**
50
+ * Run a git command in a worktree directory.
51
+ * Refuses to run in the workspace root to prevent corrupting the main repo HEAD.
52
+ */
53
+ export declare function execGitSafe(command: string, worktreePath: string, workspaceRoot: string): Promise<{
54
+ stdout: string;
55
+ stderr: string;
56
+ }>;
57
+ /**
58
+ * Detect the default target branch for the repo by checking origin/HEAD,
59
+ * then falling back to origin/main, then origin/master, then 'main'.
60
+ */
61
+ export declare function detectTargetBranch(workspaceRoot: string): Promise<string>;
62
+ /**
63
+ * Perform a merge of `sourceBranch` into `targetBranch` using a temporary
64
+ * worktree. This never touches the main repo's HEAD or index.
65
+ */
66
+ export declare function mergeBranch(options: MergeBranchOptions): Promise<MergeBranchResult>;
67
+ /**
68
+ * Fast-forward the local target branch ref to match origin, without
69
+ * the dangerous checkout dance.
70
+ *
71
+ * - When NOT on the target branch: `git fetch origin target:target`
72
+ * updates the local ref without touching the working tree at all.
73
+ * - When ON the target branch: `git merge --ff-only origin/target`
74
+ * fast-forwards in place (unavoidably touches working tree files).
75
+ * - If either fails (e.g. non-ff divergence): logs a warning and
76
+ * returns silently. The merge is already pushed to remote.
77
+ */
78
+ export declare function syncLocalBranch(workspaceRoot: string, targetBranch: string): Promise<void>;
79
+ //# sourceMappingURL=merge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.d.ts","sourceRoot":"","sources":["../../src/git/merge.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAaH,MAAM,WAAW,kBAAkB;IACjC,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8CAA8C;IAC9C,aAAa,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IACnC,iDAAiD;IACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uEAAuE;IACvE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,kCAAkC;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,sCAAsC;IACtC,WAAW,EAAE,OAAO,CAAC;IACrB,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAMD;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAO7C;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAoC/E;AAMD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmJzF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,eAAe,CACnC,aAAa,EAAE,MAAM,EACrB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,IAAI,CAAC,CAmCf"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * Git Merge Utilities
3
+ *
4
+ * Shared squash-merge-in-temp-worktree logic used by both the Merge Steward
5
+ * and the Docs Steward services.
6
+ *
7
+ * Pattern:
8
+ * 1. Fetch origin
9
+ * 2. (Optional) Pre-flight conflict detection via git merge-tree
10
+ * 3. Create temp worktree with detached HEAD at origin/<target>
11
+ * 4. Squash merge (or regular merge) source branch
12
+ * 5. Commit with provided message
13
+ * 6. Push HEAD:<target> to remote
14
+ * 7. Remove temp worktree (always, in finally)
15
+ * 8. (Optional) Sync local target branch via fast-forward
16
+ *
17
+ * @module
18
+ */
19
+ import { exec } from 'node:child_process';
20
+ import fs from 'node:fs';
21
+ import path from 'node:path';
22
+ import { promisify } from 'node:util';
23
+ const execAsync = promisify(exec);
24
+ // ============================================================================
25
+ // Helpers
26
+ // ============================================================================
27
+ /**
28
+ * Run a git command in a worktree directory.
29
+ * Refuses to run in the workspace root to prevent corrupting the main repo HEAD.
30
+ */
31
+ export async function execGitSafe(command, worktreePath, workspaceRoot) {
32
+ if (path.resolve(worktreePath) === path.resolve(workspaceRoot)) {
33
+ throw new Error(`SAFETY: Refusing to run "git ${command}" in main repo. Use a worktree.`);
34
+ }
35
+ return execAsync(`git ${command}`, { cwd: worktreePath, encoding: 'utf8' });
36
+ }
37
+ /**
38
+ * Detect the default target branch for the repo by checking origin/HEAD,
39
+ * then falling back to origin/main, then origin/master, then 'main'.
40
+ */
41
+ export async function detectTargetBranch(workspaceRoot) {
42
+ // Try origin/HEAD symref
43
+ try {
44
+ const { stdout } = await execAsync('git symbolic-ref refs/remotes/origin/HEAD', {
45
+ cwd: workspaceRoot,
46
+ encoding: 'utf8',
47
+ });
48
+ const match = stdout.trim().match(/refs\/remotes\/origin\/(.+)/);
49
+ if (match)
50
+ return match[1];
51
+ }
52
+ catch {
53
+ // Fall through
54
+ }
55
+ // Try origin/main
56
+ try {
57
+ await execAsync('git rev-parse --verify origin/main', {
58
+ cwd: workspaceRoot,
59
+ encoding: 'utf8',
60
+ });
61
+ return 'main';
62
+ }
63
+ catch {
64
+ // Fall through
65
+ }
66
+ // Try origin/master
67
+ try {
68
+ await execAsync('git rev-parse --verify origin/master', {
69
+ cwd: workspaceRoot,
70
+ encoding: 'utf8',
71
+ });
72
+ return 'master';
73
+ }
74
+ catch {
75
+ // Fall through
76
+ }
77
+ return 'main';
78
+ }
79
+ // ============================================================================
80
+ // Main
81
+ // ============================================================================
82
+ /**
83
+ * Perform a merge of `sourceBranch` into `targetBranch` using a temporary
84
+ * worktree. This never touches the main repo's HEAD or index.
85
+ */
86
+ export async function mergeBranch(options) {
87
+ const { workspaceRoot, sourceBranch, mergeStrategy = 'squash', autoPush = true, commitMessage, preflight = true, syncLocal = true, } = options;
88
+ const targetBranch = options.targetBranch ?? await detectTargetBranch(workspaceRoot);
89
+ // Build commit message
90
+ const message = commitMessage
91
+ ?? (mergeStrategy === 'squash'
92
+ ? `Squash merge ${sourceBranch} into ${targetBranch}`
93
+ : `Merge branch '${sourceBranch}'`);
94
+ // 1. Fetch latest remote state
95
+ await execAsync('git fetch origin', { cwd: workspaceRoot, encoding: 'utf8' });
96
+ // 2. Pre-flight conflict detection via merge-tree
97
+ if (preflight) {
98
+ try {
99
+ const { stdout: mergeBase } = await execAsync(`git merge-base origin/${targetBranch} ${sourceBranch}`, { cwd: workspaceRoot, encoding: 'utf8' });
100
+ const dryRun = await execAsync(`git merge-tree ${mergeBase.trim()} origin/${targetBranch} ${sourceBranch}`, { cwd: workspaceRoot, encoding: 'utf8' }).catch((e) => e);
101
+ if (dryRun.stdout?.includes('<<<<<<<')) {
102
+ const dryRunOutput = dryRun.stdout;
103
+ const conflictFiles = [...dryRunOutput.matchAll(/\+\+\+ b\/(.+)/g)].map(m => m[1]);
104
+ return {
105
+ success: false,
106
+ hasConflict: true,
107
+ error: 'Pre-flight: merge conflicts detected',
108
+ conflictFiles: conflictFiles.length > 0 ? conflictFiles : undefined,
109
+ };
110
+ }
111
+ }
112
+ catch {
113
+ // merge-base can fail if branches have no common ancestor; continue to worktree merge
114
+ }
115
+ }
116
+ // 3. Create temp worktree
117
+ const safeName = sourceBranch.replace(/[^a-zA-Z0-9-]/g, '-');
118
+ const mergeDirName = `_merge-${safeName}-${Date.now()}`;
119
+ const mergeDir = path.join(workspaceRoot, '.stoneforge/.worktrees', mergeDirName);
120
+ // Clean up leftover worktree from a previously crashed run
121
+ if (fs.existsSync(mergeDir)) {
122
+ await execAsync(`git worktree remove --force "${mergeDir}"`, {
123
+ cwd: workspaceRoot, encoding: 'utf8',
124
+ });
125
+ }
126
+ // Create with detached HEAD at origin/<target> (avoids locking the target branch)
127
+ await execAsync(`git worktree add --detach "${mergeDir}" origin/${targetBranch}`, {
128
+ cwd: workspaceRoot, encoding: 'utf8',
129
+ });
130
+ let mergeResult;
131
+ try {
132
+ let commitHash;
133
+ if (mergeStrategy === 'squash') {
134
+ await execGitSafe(`merge --squash ${sourceBranch}`, mergeDir, workspaceRoot);
135
+ await execGitSafe(`commit -m "${message.replace(/"/g, '\\"')}"`, mergeDir, workspaceRoot);
136
+ const { stdout: hash } = await execGitSafe('rev-parse HEAD', mergeDir, workspaceRoot);
137
+ commitHash = hash.trim();
138
+ }
139
+ else {
140
+ await execGitSafe(`merge --no-ff -m "${message.replace(/"/g, '\\"')}" ${sourceBranch}`, mergeDir, workspaceRoot);
141
+ const { stdout: hash } = await execGitSafe('rev-parse HEAD', mergeDir, workspaceRoot);
142
+ commitHash = hash.trim();
143
+ }
144
+ // 6. Push to remote
145
+ if (autoPush) {
146
+ try {
147
+ await execGitSafe(`push origin HEAD:${targetBranch}`, mergeDir, workspaceRoot);
148
+ }
149
+ catch (pushError) {
150
+ const pushErrorMsg = pushError instanceof Error ? pushError.message : String(pushError);
151
+ console.warn(`[git/merge] Failed to push to remote: ${pushErrorMsg}`);
152
+ }
153
+ }
154
+ mergeResult = { success: true, commitHash, hasConflict: false };
155
+ }
156
+ catch (error) {
157
+ const execError = error;
158
+ const output = (execError.stdout ?? '') + (execError.stderr ?? '') + (execError.message ?? '');
159
+ if (output.includes('CONFLICT') || output.includes('Automatic merge failed')) {
160
+ // Abort the merge to clean up
161
+ try {
162
+ if (mergeStrategy === 'squash') {
163
+ await execGitSafe('reset --hard HEAD', mergeDir, workspaceRoot);
164
+ }
165
+ else {
166
+ await execGitSafe('merge --abort', mergeDir, workspaceRoot);
167
+ }
168
+ }
169
+ catch {
170
+ // Ignore abort errors
171
+ }
172
+ const conflictMatch = output.match(/CONFLICT \([^)]+\): Merge conflict in (.+)/g);
173
+ const conflictFiles = conflictMatch?.map((m) => {
174
+ const match = m.match(/in (.+)$/);
175
+ return match ? match[1] : '';
176
+ }).filter(Boolean);
177
+ mergeResult = {
178
+ success: false,
179
+ hasConflict: true,
180
+ error: 'Merge conflict detected',
181
+ conflictFiles,
182
+ };
183
+ }
184
+ else {
185
+ mergeResult = {
186
+ success: false,
187
+ hasConflict: false,
188
+ error: output || 'Merge failed',
189
+ };
190
+ }
191
+ }
192
+ finally {
193
+ // 7. Always remove temp worktree
194
+ try {
195
+ await execAsync(`git worktree remove --force "${mergeDir}"`, {
196
+ cwd: workspaceRoot, encoding: 'utf8',
197
+ });
198
+ }
199
+ catch {
200
+ // Ignore cleanup errors
201
+ }
202
+ }
203
+ // 8. Sync local target branch with remote (best-effort)
204
+ if (mergeResult.success && autoPush && syncLocal) {
205
+ await syncLocalBranch(workspaceRoot, targetBranch);
206
+ }
207
+ return mergeResult;
208
+ }
209
+ /**
210
+ * Fast-forward the local target branch ref to match origin, without
211
+ * the dangerous checkout dance.
212
+ *
213
+ * - When NOT on the target branch: `git fetch origin target:target`
214
+ * updates the local ref without touching the working tree at all.
215
+ * - When ON the target branch: `git merge --ff-only origin/target`
216
+ * fast-forwards in place (unavoidably touches working tree files).
217
+ * - If either fails (e.g. non-ff divergence): logs a warning and
218
+ * returns silently. The merge is already pushed to remote.
219
+ */
220
+ export async function syncLocalBranch(workspaceRoot, targetBranch) {
221
+ try {
222
+ // Determine current branch (may be detached HEAD in worktrees)
223
+ let currentBranch;
224
+ try {
225
+ const { stdout } = await execAsync('git symbolic-ref --short HEAD', { cwd: workspaceRoot, encoding: 'utf8' });
226
+ currentBranch = stdout.trim();
227
+ }
228
+ catch {
229
+ // Detached HEAD — not on any branch
230
+ }
231
+ if (!currentBranch) {
232
+ console.warn('[git/merge] WARNING: workspace is in detached HEAD state during syncLocalBranch. Skipping sync. Run `git checkout master` to fix.');
233
+ return;
234
+ }
235
+ if (currentBranch === targetBranch) {
236
+ // We're on the target branch — fast-forward in place
237
+ await execAsync(`git merge --ff-only origin/${targetBranch}`, {
238
+ cwd: workspaceRoot, encoding: 'utf8',
239
+ });
240
+ }
241
+ else {
242
+ // Not on target branch — update the ref without touching the worktree
243
+ await execAsync(`git fetch origin ${targetBranch}:${targetBranch}`, {
244
+ cwd: workspaceRoot, encoding: 'utf8',
245
+ });
246
+ }
247
+ }
248
+ catch {
249
+ // Non-fatal: local branch sync is best-effort.
250
+ // The merge is already pushed to remote — user can `git pull` manually.
251
+ console.warn('[git/merge] Failed to fast-forward local target branch (non-ff divergence or missing ref). Run `git pull` to sync manually.');
252
+ }
253
+ }
254
+ //# sourceMappingURL=merge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"merge.js","sourceRoot":"","sources":["../../src/git/merge.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,299 @@
1
+ /**
2
+ * Worktree Manager
3
+ *
4
+ * This module provides git worktree management for the orchestration system.
5
+ * Each worker agent gets a dedicated git worktree for true parallel development.
6
+ *
7
+ * Key features:
8
+ * - Verify git repo exists before operations
9
+ * - Create isolated worktrees for workers
10
+ * - Branch naming: agent/{worker-name}/{task-id}-{slug}
11
+ * - Worktree path: .stoneforge/.worktrees/{worker-name}-{task-slug}/
12
+ * - Clean up worktrees after merge
13
+ *
14
+ * @module
15
+ */
16
+ import type { ElementId, Timestamp } from '@stoneforge/core';
17
+ /**
18
+ * Lifecycle state of a worktree
19
+ */
20
+ export type WorktreeState = 'creating' | 'active' | 'suspended' | 'merging' | 'cleaning' | 'archived';
21
+ /**
22
+ * All valid worktree states
23
+ */
24
+ export declare const WorktreeStates: readonly ["creating", "active", "suspended", "merging", "cleaning", "archived"];
25
+ /**
26
+ * Valid state transitions for worktrees
27
+ */
28
+ export declare const WorktreeStateTransitions: Record<WorktreeState, WorktreeState[]>;
29
+ /**
30
+ * Information about a git worktree
31
+ */
32
+ export interface WorktreeInfo {
33
+ /** Full path to the worktree directory */
34
+ readonly path: string;
35
+ /** Relative path from workspace root (e.g., ".stoneforge/.worktrees/alice-feature") */
36
+ readonly relativePath: string;
37
+ /** Branch checked out in this worktree */
38
+ readonly branch: string;
39
+ /** HEAD commit hash */
40
+ readonly head: string;
41
+ /** Whether this is the main worktree */
42
+ readonly isMain: boolean;
43
+ /** Worktree lifecycle state */
44
+ state: WorktreeState;
45
+ /** Agent name associated with this worktree */
46
+ readonly agentName?: string;
47
+ /** Task ID associated with this worktree */
48
+ readonly taskId?: string;
49
+ /** When the worktree was created */
50
+ readonly createdAt?: Timestamp;
51
+ }
52
+ /**
53
+ * Options for creating a worktree
54
+ */
55
+ export interface CreateWorktreeOptions {
56
+ /** Agent name for path generation */
57
+ readonly agentName: string;
58
+ /** Task ID for branch naming */
59
+ readonly taskId: ElementId;
60
+ /** Task title for slug generation (optional) */
61
+ readonly taskTitle?: string;
62
+ /** Custom branch name (overrides auto-generated) */
63
+ readonly customBranch?: string;
64
+ /** Custom worktree path (overrides auto-generated) */
65
+ readonly customPath?: string;
66
+ /** Base branch to create from (default: current branch) */
67
+ readonly baseBranch?: string;
68
+ /** Track remote branch (default: true) */
69
+ readonly trackRemote?: boolean;
70
+ /** Install dependencies after worktree creation (default: false) */
71
+ readonly installDependencies?: boolean;
72
+ }
73
+ /**
74
+ * Options for removing a worktree
75
+ */
76
+ export interface RemoveWorktreeOptions {
77
+ /** Force removal even if there are uncommitted changes */
78
+ readonly force?: boolean;
79
+ /** Also delete the branch (local) */
80
+ readonly deleteBranch?: boolean;
81
+ /** Force delete branch even if not fully merged */
82
+ readonly forceBranchDelete?: boolean;
83
+ /** Also delete the remote branch (requires deleteBranch to be true) */
84
+ readonly deleteRemoteBranch?: boolean;
85
+ }
86
+ /**
87
+ * Result of creating a worktree
88
+ */
89
+ export interface CreateWorktreeResult {
90
+ /** The created worktree info */
91
+ readonly worktree: WorktreeInfo;
92
+ /** The branch name created/checked out */
93
+ readonly branch: string;
94
+ /** Full path to the worktree */
95
+ readonly path: string;
96
+ /** Whether a new branch was created */
97
+ readonly branchCreated: boolean;
98
+ }
99
+ /**
100
+ * Configuration for the WorktreeManager
101
+ */
102
+ export interface WorktreeManagerConfig {
103
+ /** Workspace root directory (must be a git repo) */
104
+ readonly workspaceRoot: string;
105
+ /** Directory for worktrees relative to workspace root (default: ".stoneforge/.worktrees") */
106
+ readonly worktreeDir?: string;
107
+ /** Default base branch (default: auto-detect from git) */
108
+ readonly defaultBaseBranch?: string;
109
+ }
110
+ /**
111
+ * Error thrown when git repository is not found
112
+ */
113
+ export declare class GitRepositoryNotFoundError extends Error {
114
+ constructor(path: string);
115
+ }
116
+ /**
117
+ * Error thrown when a worktree operation fails
118
+ */
119
+ export declare class WorktreeError extends Error {
120
+ readonly code: string;
121
+ readonly details?: string;
122
+ constructor(message: string, code: string, details?: string);
123
+ }
124
+ /**
125
+ * WorktreeManager interface for git worktree operations.
126
+ *
127
+ * The manager provides methods for:
128
+ * - Initializing workspace and verifying git repo
129
+ * - Creating worktrees for workers
130
+ * - Removing worktrees after merge
131
+ * - Listing and querying worktrees
132
+ */
133
+ export interface WorktreeManager {
134
+ /**
135
+ * Initializes the workspace, verifying git repo exists.
136
+ *
137
+ * @throws GitRepositoryNotFoundError if no git repo found
138
+ */
139
+ initWorkspace(): Promise<void>;
140
+ /**
141
+ * Checks if the workspace has been initialized.
142
+ */
143
+ isInitialized(): boolean;
144
+ /**
145
+ * Gets the workspace root directory.
146
+ */
147
+ getWorkspaceRoot(): string;
148
+ /**
149
+ * Creates a new worktree for a worker.
150
+ *
151
+ * @param options - Worktree creation options
152
+ * @returns The created worktree result
153
+ */
154
+ createWorktree(options: CreateWorktreeOptions): Promise<CreateWorktreeResult>;
155
+ /**
156
+ * Creates a read-only worktree detached on the default branch.
157
+ * Used for triage sessions that should not create new branches.
158
+ *
159
+ * @param options - Agent name and purpose for path generation
160
+ * @returns The created worktree result
161
+ */
162
+ createReadOnlyWorktree(options: {
163
+ agentName: string;
164
+ purpose: string;
165
+ }): Promise<CreateWorktreeResult>;
166
+ /**
167
+ * Removes a worktree.
168
+ *
169
+ * @param worktreePath - Path to the worktree (relative or absolute)
170
+ * @param options - Removal options
171
+ */
172
+ removeWorktree(worktreePath: string, options?: RemoveWorktreeOptions): Promise<void>;
173
+ /**
174
+ * Suspends a worktree (marks it inactive but preserves it).
175
+ *
176
+ * @param worktreePath - Path to the worktree
177
+ */
178
+ suspendWorktree(worktreePath: string): Promise<void>;
179
+ /**
180
+ * Resumes a suspended worktree.
181
+ *
182
+ * @param worktreePath - Path to the worktree
183
+ */
184
+ resumeWorktree(worktreePath: string): Promise<void>;
185
+ /**
186
+ * Lists all worktrees in the workspace.
187
+ *
188
+ * @param includeMain - Whether to include the main worktree (default: false)
189
+ */
190
+ listWorktrees(includeMain?: boolean): Promise<WorktreeInfo[]>;
191
+ /**
192
+ * Gets information about a specific worktree.
193
+ *
194
+ * @param worktreePath - Path to the worktree (relative or absolute)
195
+ */
196
+ getWorktree(worktreePath: string): Promise<WorktreeInfo | undefined>;
197
+ /**
198
+ * Gets the worktree path for an agent/task combination.
199
+ *
200
+ * @param agentName - The agent's name
201
+ * @param taskTitle - The task title (optional, used for slug)
202
+ */
203
+ getWorktreePath(agentName: string, taskTitle?: string): string;
204
+ /**
205
+ * Gets worktrees for a specific agent.
206
+ *
207
+ * @param agentName - The agent's name
208
+ */
209
+ getWorktreesForAgent(agentName: string): Promise<WorktreeInfo[]>;
210
+ /**
211
+ * Checks if a worktree exists at the given path.
212
+ *
213
+ * @param worktreePath - Path to check
214
+ */
215
+ worktreeExists(worktreePath: string): Promise<boolean>;
216
+ /**
217
+ * Gets the current branch of the main worktree.
218
+ */
219
+ getCurrentBranch(): Promise<string>;
220
+ /**
221
+ * Gets the default base branch (main, master, etc).
222
+ */
223
+ getDefaultBranch(): Promise<string>;
224
+ /**
225
+ * Checks if a branch exists.
226
+ *
227
+ * @param branchName - The branch name to check
228
+ */
229
+ branchExists(branchName: string): Promise<boolean>;
230
+ }
231
+ /**
232
+ * Implementation of the WorktreeManager.
233
+ */
234
+ export declare class WorktreeManagerImpl implements WorktreeManager {
235
+ private readonly config;
236
+ private initialized;
237
+ private defaultBranch;
238
+ private worktreeStates;
239
+ private realWorkspaceRoot;
240
+ constructor(config: WorktreeManagerConfig);
241
+ initWorkspace(): Promise<void>;
242
+ isInitialized(): boolean;
243
+ getWorkspaceRoot(): string;
244
+ createWorktree(options: CreateWorktreeOptions): Promise<CreateWorktreeResult>;
245
+ /**
246
+ * Create a read-only (detached HEAD) worktree for triage sessions.
247
+ * Uses `git worktree add --detach` so no new branch is created.
248
+ */
249
+ createReadOnlyWorktree(options: {
250
+ agentName: string;
251
+ purpose: string;
252
+ }): Promise<CreateWorktreeResult>;
253
+ removeWorktree(worktreePath: string, options?: RemoveWorktreeOptions): Promise<void>;
254
+ suspendWorktree(worktreePath: string): Promise<void>;
255
+ resumeWorktree(worktreePath: string): Promise<void>;
256
+ listWorktrees(includeMain?: boolean): Promise<WorktreeInfo[]>;
257
+ getWorktree(worktreePath: string): Promise<WorktreeInfo | undefined>;
258
+ getWorktreePath(agentName: string, taskTitle?: string): string;
259
+ getWorktreesForAgent(agentName: string): Promise<WorktreeInfo[]>;
260
+ worktreeExists(worktreePath: string): Promise<boolean>;
261
+ getCurrentBranch(): Promise<string>;
262
+ getDefaultBranch(): Promise<string>;
263
+ branchExists(branchName: string): Promise<boolean>;
264
+ private ensureInitialized;
265
+ private execGit;
266
+ /**
267
+ * Installs dependencies in a worktree directory.
268
+ * Detects the package manager (pnpm, npm, yarn, bun) and runs install.
269
+ * Uses a longer timeout since dependency installation can take a while.
270
+ *
271
+ * Tries a strict install first (--frozen-lockfile / ci) and falls back to
272
+ * a plain install when the lockfile is out of sync with package.json
273
+ * (common when the base branch has uncommitted lockfile changes).
274
+ */
275
+ private installDependencies;
276
+ private resolvePath;
277
+ private getRelativePath;
278
+ private parseWorktreeList;
279
+ private finalizeWorktreeInfo;
280
+ private detectDefaultBranch;
281
+ private ensureGitignore;
282
+ }
283
+ /**
284
+ * Creates a WorktreeManager instance
285
+ */
286
+ export declare function createWorktreeManager(config: WorktreeManagerConfig): WorktreeManager;
287
+ /**
288
+ * Type guard to check if a value is a valid WorktreeState
289
+ */
290
+ export declare function isWorktreeState(value: unknown): value is WorktreeState;
291
+ /**
292
+ * Checks if a state transition is valid
293
+ */
294
+ export declare function isValidStateTransition(from: WorktreeState, to: WorktreeState): boolean;
295
+ /**
296
+ * Gets human-readable description of a worktree state
297
+ */
298
+ export declare function getWorktreeStateDescription(state: WorktreeState): string;
299
+ //# sourceMappingURL=worktree-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"worktree-manager.d.ts","sourceRoot":"","sources":["../../src/git/worktree-manager.ts"],"names":[],"mappings":"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"}