borgmcp 1.1.14 → 2.0.1

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 (459) hide show
  1. package/CONTRIBUTING.md +15 -0
  2. package/LICENSE +201 -33
  3. package/NOTICE +2 -0
  4. package/README.md +86 -37
  5. package/SECURITY.md +7 -0
  6. package/dist/agent-runtime.d.ts.map +1 -0
  7. package/dist/agent-runtime.js +63 -1
  8. package/dist/agent-runtime.js.map +1 -0
  9. package/dist/assimilate-cmd.d.ts +96 -17
  10. package/dist/assimilate-cmd.d.ts.map +1 -0
  11. package/dist/assimilate-cmd.js +1396 -48
  12. package/dist/assimilate-cmd.js.map +1 -0
  13. package/dist/assimilate-deps.d.ts.map +1 -0
  14. package/dist/assimilate-deps.js +384 -3
  15. package/dist/assimilate-deps.js.map +1 -0
  16. package/dist/assimilate-guard.d.ts +5 -7
  17. package/dist/assimilate-guard.d.ts.map +1 -0
  18. package/dist/assimilate-guard.js +60 -2
  19. package/dist/assimilate-guard.js.map +1 -0
  20. package/dist/assimilate-welcome.d.ts +1 -1
  21. package/dist/assimilate-welcome.d.ts.map +1 -0
  22. package/dist/assimilate-welcome.js +32 -2
  23. package/dist/assimilate-welcome.js.map +1 -0
  24. package/dist/auth-env.d.ts +7 -50
  25. package/dist/auth-env.d.ts.map +1 -0
  26. package/dist/auth-env.js +22 -1
  27. package/dist/auth-env.js.map +1 -0
  28. package/dist/backends/launch-all-pastelist.d.ts.map +1 -0
  29. package/dist/backends/launch-all-pastelist.js +11 -4
  30. package/dist/backends/launch-all-pastelist.js.map +1 -0
  31. package/dist/backends/launch-all-tmux.d.ts.map +1 -0
  32. package/dist/backends/launch-all-tmux.js +49 -1
  33. package/dist/backends/launch-all-tmux.js.map +1 -0
  34. package/dist/backends/launch-all-windows.d.ts.map +1 -0
  35. package/dist/backends/launch-all-windows.js +86 -12
  36. package/dist/backends/launch-all-windows.js.map +1 -0
  37. package/dist/bare-launch-menu.d.ts.map +1 -0
  38. package/dist/bare-launch-menu.js +83 -6
  39. package/dist/bare-launch-menu.js.map +1 -0
  40. package/dist/claude-launch-args.d.ts.map +1 -0
  41. package/dist/claude-launch-args.js +34 -1
  42. package/dist/claude-launch-args.js.map +1 -0
  43. package/dist/claude.d.ts.map +1 -0
  44. package/dist/claude.js +486 -14
  45. package/dist/claude.js.map +1 -0
  46. package/dist/cleanup-cmd.d.ts +5 -5
  47. package/dist/cleanup-cmd.d.ts.map +1 -0
  48. package/dist/cleanup-cmd.js +453 -14
  49. package/dist/cleanup-cmd.js.map +1 -0
  50. package/dist/clear-rewake-core.d.ts.map +1 -0
  51. package/dist/clear-rewake-core.js +23 -2
  52. package/dist/clear-rewake-core.js.map +1 -0
  53. package/dist/clear-rewake.d.ts.map +1 -0
  54. package/dist/clear-rewake.js +19 -1
  55. package/dist/clear-rewake.js.map +1 -0
  56. package/dist/cli-help.d.ts +5 -0
  57. package/dist/cli-help.d.ts.map +1 -0
  58. package/dist/cli-help.js +104 -56
  59. package/dist/cli-help.js.map +1 -0
  60. package/dist/cli-platform.d.ts.map +1 -0
  61. package/dist/cli-platform.js +106 -4
  62. package/dist/cli-platform.js.map +1 -0
  63. package/dist/cli-tool-approval.d.ts +84 -0
  64. package/dist/cli-tool-approval.d.ts.map +1 -0
  65. package/dist/cli-tool-approval.js +583 -0
  66. package/dist/cli-tool-approval.js.map +1 -0
  67. package/dist/codex-app-server.d.ts.map +1 -0
  68. package/dist/codex-app-server.js +228 -4
  69. package/dist/codex-app-server.js.map +1 -0
  70. package/dist/codex-app-wake.d.ts.map +1 -0
  71. package/dist/codex-app-wake.js +432 -2
  72. package/dist/codex-app-wake.js.map +1 -0
  73. package/dist/codex-launch.d.ts.map +1 -0
  74. package/dist/codex-launch.js +102 -2
  75. package/dist/codex-launch.js.map +1 -0
  76. package/dist/codex-remote.d.ts +6 -1
  77. package/dist/codex-remote.d.ts.map +1 -0
  78. package/dist/codex-remote.js +394 -1
  79. package/dist/codex-remote.js.map +1 -0
  80. package/dist/codex-wake-resolve.d.ts.map +1 -0
  81. package/dist/codex-wake-resolve.js +127 -1
  82. package/dist/codex-wake-resolve.js.map +1 -0
  83. package/dist/config-utils.d.ts +2 -2
  84. package/dist/config-utils.d.ts.map +1 -0
  85. package/dist/config-utils.js +766 -3
  86. package/dist/config-utils.js.map +1 -0
  87. package/dist/config.d.ts +98 -61
  88. package/dist/config.d.ts.map +1 -0
  89. package/dist/config.js +426 -1
  90. package/dist/config.js.map +1 -0
  91. package/dist/console-prefix.d.ts.map +1 -0
  92. package/dist/console-prefix.js +96 -1
  93. package/dist/console-prefix.js.map +1 -0
  94. package/dist/cube-name.d.ts.map +1 -0
  95. package/dist/cube-name.js +67 -1
  96. package/dist/cube-name.js.map +1 -0
  97. package/dist/cubes.d.ts +126 -18
  98. package/dist/cubes.d.ts.map +1 -0
  99. package/dist/cubes.js +412 -4
  100. package/dist/cubes.js.map +1 -0
  101. package/dist/debug.d.ts.map +1 -0
  102. package/dist/debug.js +71 -1
  103. package/dist/debug.js.map +1 -0
  104. package/dist/direct-log.d.ts.map +1 -0
  105. package/dist/direct-log.js +11 -1
  106. package/dist/direct-log.js.map +1 -0
  107. package/dist/docs-sections.d.ts +11 -10
  108. package/dist/docs-sections.d.ts.map +1 -0
  109. package/dist/docs-sections.js +113 -3
  110. package/dist/docs-sections.js.map +1 -0
  111. package/dist/drone-lifecycle.d.ts +5 -21
  112. package/dist/drone-lifecycle.d.ts.map +1 -0
  113. package/dist/drone-lifecycle.js +57 -8
  114. package/dist/drone-lifecycle.js.map +1 -0
  115. package/dist/drone-management.d.ts +29 -0
  116. package/dist/drone-management.d.ts.map +1 -0
  117. package/dist/drone-management.js +109 -0
  118. package/dist/drone-management.js.map +1 -0
  119. package/dist/ensure-mcp-config.d.ts.map +1 -0
  120. package/dist/ensure-mcp-config.js +36 -1
  121. package/dist/ensure-mcp-config.js.map +1 -0
  122. package/dist/evict-drone.d.ts +10 -2
  123. package/dist/evict-drone.d.ts.map +1 -0
  124. package/dist/evict-drone.js +60 -1
  125. package/dist/evict-drone.js.map +1 -0
  126. package/dist/gc-orphan-inboxes.d.ts.map +1 -0
  127. package/dist/gc-orphan-inboxes.js +177 -1
  128. package/dist/gc-orphan-inboxes.js.map +1 -0
  129. package/dist/inbox-monitor.d.ts +1 -1
  130. package/dist/inbox-monitor.d.ts.map +1 -0
  131. package/dist/inbox-monitor.js +856 -3
  132. package/dist/inbox-monitor.js.map +1 -0
  133. package/dist/index.d.ts +6 -4
  134. package/dist/index.d.ts.map +1 -0
  135. package/dist/index.js +1034 -37
  136. package/dist/index.js.map +1 -0
  137. package/dist/launch-all-cmd.d.ts.map +1 -0
  138. package/dist/launch-all-cmd.js +377 -37
  139. package/dist/launch-all-cmd.js.map +1 -0
  140. package/dist/launch-all-command.d.ts.map +1 -0
  141. package/dist/launch-all-command.js +24 -1
  142. package/dist/launch-all-command.js.map +1 -0
  143. package/dist/launch-all-deps.d.ts +3 -8
  144. package/dist/launch-all-deps.d.ts.map +1 -0
  145. package/dist/launch-all-deps.js +99 -1
  146. package/dist/launch-all-deps.js.map +1 -0
  147. package/dist/launch-all-discovery.d.ts +1 -0
  148. package/dist/launch-all-discovery.d.ts.map +1 -0
  149. package/dist/launch-all-discovery.js +90 -4
  150. package/dist/launch-all-discovery.js.map +1 -0
  151. package/dist/launch-all-locks.d.ts.map +1 -0
  152. package/dist/launch-all-locks.js +54 -1
  153. package/dist/launch-all-locks.js.map +1 -0
  154. package/dist/launch-gate.d.ts +2 -2
  155. package/dist/launch-gate.d.ts.map +1 -0
  156. package/dist/launch-gate.js +73 -1
  157. package/dist/launch-gate.js.map +1 -0
  158. package/dist/lifecycle-log-guard.d.ts.map +1 -0
  159. package/dist/lifecycle-log-guard.js +93 -2
  160. package/dist/lifecycle-log-guard.js.map +1 -0
  161. package/dist/list-roles-render.d.ts.map +1 -0
  162. package/dist/list-roles-render.js +40 -6
  163. package/dist/list-roles-render.js.map +1 -0
  164. package/dist/local-log-routing.d.ts +19 -0
  165. package/dist/local-log-routing.d.ts.map +1 -0
  166. package/dist/local-log-routing.js +67 -0
  167. package/dist/local-log-routing.js.map +1 -0
  168. package/dist/local-manage-tool-result.d.ts +8 -0
  169. package/dist/local-manage-tool-result.d.ts.map +1 -0
  170. package/dist/local-manage-tool-result.js +10 -0
  171. package/dist/local-manage-tool-result.js.map +1 -0
  172. package/dist/local-server-cursor.d.ts +34 -0
  173. package/dist/local-server-cursor.d.ts.map +1 -0
  174. package/dist/local-server-cursor.js +151 -0
  175. package/dist/local-server-cursor.js.map +1 -0
  176. package/dist/log-audit.d.ts.map +1 -0
  177. package/dist/log-audit.js +194 -3
  178. package/dist/log-audit.js.map +1 -0
  179. package/dist/log-stream.d.ts +31 -18
  180. package/dist/log-stream.d.ts.map +1 -0
  181. package/dist/log-stream.js +1214 -12
  182. package/dist/log-stream.js.map +1 -0
  183. package/dist/model-presets.d.ts.map +1 -0
  184. package/dist/model-presets.js +19 -1
  185. package/dist/model-presets.js.map +1 -0
  186. package/dist/name-validator.d.ts.map +1 -0
  187. package/dist/name-validator.js +22 -1
  188. package/dist/name-validator.js.map +1 -0
  189. package/dist/opencode-drone.d.ts.map +1 -0
  190. package/dist/opencode-drone.js +438 -4
  191. package/dist/opencode-drone.js.map +1 -0
  192. package/dist/opencode-plugin.d.ts +1 -1
  193. package/dist/opencode-plugin.d.ts.map +1 -0
  194. package/dist/opencode-plugin.js +29 -4
  195. package/dist/opencode-plugin.js.map +1 -0
  196. package/dist/parse-assimilate-args.d.ts +1 -1
  197. package/dist/parse-assimilate-args.d.ts.map +1 -0
  198. package/dist/parse-assimilate-args.js +125 -1
  199. package/dist/parse-assimilate-args.js.map +1 -0
  200. package/dist/parse-launch-all-args.d.ts.map +1 -0
  201. package/dist/parse-launch-all-args.js +70 -1
  202. package/dist/parse-launch-all-args.js.map +1 -0
  203. package/dist/postinstall-banner.d.ts.map +1 -0
  204. package/dist/postinstall-banner.js +27 -2
  205. package/dist/postinstall-banner.js.map +1 -0
  206. package/dist/postinstall.d.ts.map +1 -0
  207. package/dist/postinstall.js +32 -5
  208. package/dist/postinstall.js.map +1 -0
  209. package/dist/readiness-probe.d.ts.map +1 -0
  210. package/dist/readiness-probe.js +9 -1
  211. package/dist/readiness-probe.js.map +1 -0
  212. package/dist/regen-format.d.ts.map +1 -0
  213. package/dist/regen-format.js +545 -13
  214. package/dist/regen-format.js.map +1 -0
  215. package/dist/regen.d.ts.map +1 -0
  216. package/dist/regen.js +141 -5
  217. package/dist/regen.js.map +1 -0
  218. package/dist/remote-client.d.ts +65 -175
  219. package/dist/remote-client.d.ts.map +1 -0
  220. package/dist/remote-client.js +942 -1
  221. package/dist/remote-client.js.map +1 -0
  222. package/dist/reset-local-seat-cmd.d.ts +50 -0
  223. package/dist/reset-local-seat-cmd.d.ts.map +1 -0
  224. package/dist/reset-local-seat-cmd.js +169 -0
  225. package/dist/reset-local-seat-cmd.js.map +1 -0
  226. package/dist/role-match.d.ts.map +1 -0
  227. package/dist/role-match.js +23 -1
  228. package/dist/role-match.js.map +1 -0
  229. package/dist/role-resolver.d.ts.map +1 -0
  230. package/dist/role-resolver.js +60 -1
  231. package/dist/role-resolver.js.map +1 -0
  232. package/dist/roster-render.d.ts.map +1 -0
  233. package/dist/roster-render.js +121 -3
  234. package/dist/roster-render.js.map +1 -0
  235. package/dist/seat-probe.d.ts +32 -13
  236. package/dist/seat-probe.d.ts.map +1 -0
  237. package/dist/seat-probe.js +78 -1
  238. package/dist/seat-probe.js.map +1 -0
  239. package/dist/seat-store.d.ts +76 -0
  240. package/dist/seat-store.d.ts.map +1 -0
  241. package/dist/seat-store.js +309 -0
  242. package/dist/seat-store.js.map +1 -0
  243. package/dist/seats.d.ts +303 -0
  244. package/dist/seats.d.ts.map +1 -0
  245. package/dist/seats.js +551 -0
  246. package/dist/seats.js.map +1 -0
  247. package/dist/self-path.d.ts +27 -0
  248. package/dist/self-path.d.ts.map +1 -0
  249. package/dist/self-path.js +43 -0
  250. package/dist/self-path.js.map +1 -0
  251. package/dist/server-endpoint.d.ts +9 -0
  252. package/dist/server-endpoint.d.ts.map +1 -0
  253. package/dist/server-endpoint.js +38 -0
  254. package/dist/server-endpoint.js.map +1 -0
  255. package/dist/server-errors.d.ts +50 -0
  256. package/dist/server-errors.d.ts.map +1 -0
  257. package/dist/server-errors.js +79 -0
  258. package/dist/server-errors.js.map +1 -0
  259. package/dist/server-handshake.d.ts +197 -0
  260. package/dist/server-handshake.d.ts.map +1 -0
  261. package/dist/server-handshake.js +505 -0
  262. package/dist/server-handshake.js.map +1 -0
  263. package/dist/server-response.d.ts +3 -0
  264. package/dist/server-response.d.ts.map +1 -0
  265. package/dist/server-response.js +67 -0
  266. package/dist/server-response.js.map +1 -0
  267. package/dist/server-trust.d.ts +14 -0
  268. package/dist/server-trust.d.ts.map +1 -0
  269. package/dist/server-trust.js +225 -0
  270. package/dist/server-trust.js.map +1 -0
  271. package/dist/setup-confirm.d.ts +3 -3
  272. package/dist/setup-confirm.d.ts.map +1 -0
  273. package/dist/setup-confirm.js +126 -2
  274. package/dist/setup-confirm.js.map +1 -0
  275. package/dist/setup.d.ts +5 -3
  276. package/dist/setup.d.ts.map +1 -0
  277. package/dist/setup.js +169 -46
  278. package/dist/setup.js.map +1 -0
  279. package/dist/shell-escape.d.ts.map +1 -0
  280. package/dist/shell-escape.js +22 -1
  281. package/dist/shell-escape.js.map +1 -0
  282. package/dist/spawn.d.ts +2 -2
  283. package/dist/spawn.d.ts.map +1 -0
  284. package/dist/spawn.js +29 -10
  285. package/dist/spawn.js.map +1 -0
  286. package/dist/startup-services.d.ts +0 -1
  287. package/dist/startup-services.d.ts.map +1 -0
  288. package/dist/startup-services.js +26 -1
  289. package/dist/startup-services.js.map +1 -0
  290. package/dist/stream-owner.d.ts +6 -2
  291. package/dist/stream-owner.d.ts.map +1 -0
  292. package/dist/stream-owner.js +547 -2
  293. package/dist/stream-owner.js.map +1 -0
  294. package/dist/stream-status.d.ts +1 -1
  295. package/dist/stream-status.d.ts.map +1 -0
  296. package/dist/stream-status.js +268 -3
  297. package/dist/stream-status.js.map +1 -0
  298. package/dist/sync-roles-render.d.ts.map +1 -0
  299. package/dist/sync-roles-render.js +118 -3
  300. package/dist/sync-roles-render.js.map +1 -0
  301. package/dist/sync.d.ts +1 -1
  302. package/dist/sync.d.ts.map +1 -0
  303. package/dist/sync.js +286 -22
  304. package/dist/sync.js.map +1 -0
  305. package/dist/terminal-title.d.ts.map +1 -0
  306. package/dist/terminal-title.js +68 -1
  307. package/dist/terminal-title.js.map +1 -0
  308. package/dist/token-store.d.ts +17 -111
  309. package/dist/token-store.d.ts.map +1 -0
  310. package/dist/token-store.js +81 -1
  311. package/dist/token-store.js.map +1 -0
  312. package/dist/tool-manifest.d.ts +4 -8
  313. package/dist/tool-manifest.d.ts.map +1 -0
  314. package/dist/tool-manifest.js +554 -1
  315. package/dist/tool-manifest.js.map +1 -0
  316. package/dist/tool-scope.d.ts +8 -12
  317. package/dist/tool-scope.d.ts.map +1 -0
  318. package/dist/tool-scope.js +97 -1
  319. package/dist/tool-scope.js.map +1 -0
  320. package/dist/types.d.ts +1 -5
  321. package/dist/types.d.ts.map +1 -0
  322. package/dist/types.js +5 -0
  323. package/dist/types.js.map +1 -0
  324. package/dist/unknown-subcommand.d.ts +1 -1
  325. package/dist/unknown-subcommand.d.ts.map +1 -0
  326. package/dist/unknown-subcommand.js +37 -1
  327. package/dist/unknown-subcommand.js.map +1 -0
  328. package/dist/version.d.ts +1 -1
  329. package/dist/version.d.ts.map +1 -0
  330. package/dist/version.js +78 -2
  331. package/dist/version.js.map +1 -0
  332. package/dist/working-repo.d.ts.map +1 -0
  333. package/dist/working-repo.js +81 -1
  334. package/dist/working-repo.js.map +1 -0
  335. package/dist/worktree-lifecycle.d.ts.map +1 -0
  336. package/dist/worktree-lifecycle.js +205 -2
  337. package/dist/worktree-lifecycle.js.map +1 -0
  338. package/docs/EXTRACTION_PROVENANCE.md +40 -0
  339. package/docs/LOCAL_SERVER.md +103 -0
  340. package/docs/RELEASING.md +120 -0
  341. package/package.json +52 -34
  342. package/src/agent-runtime.ts +69 -0
  343. package/src/assimilate-cmd.ts +1864 -0
  344. package/src/assimilate-deps.ts +444 -0
  345. package/src/assimilate-guard.ts +84 -0
  346. package/src/assimilate-welcome.ts +39 -0
  347. package/src/auth-env.ts +21 -0
  348. package/src/backends/launch-all-pastelist.ts +18 -0
  349. package/src/backends/launch-all-tmux.ts +75 -0
  350. package/src/backends/launch-all-windows.ts +110 -0
  351. package/src/bare-launch-menu.ts +148 -0
  352. package/src/claude-launch-args.ts +35 -0
  353. package/src/claude.ts +561 -0
  354. package/src/cleanup-cmd.ts +581 -0
  355. package/src/clear-rewake-core.ts +34 -0
  356. package/src/clear-rewake.ts +18 -0
  357. package/src/cli-help.ts +116 -0
  358. package/src/cli-platform.ts +127 -0
  359. package/src/cli-tool-approval.ts +716 -0
  360. package/src/codex-app-server.ts +238 -0
  361. package/src/codex-app-wake.ts +512 -0
  362. package/src/codex-launch.ts +140 -0
  363. package/src/codex-remote.ts +500 -0
  364. package/src/codex-wake-resolve.ts +155 -0
  365. package/src/config-utils.ts +811 -0
  366. package/src/config.ts +595 -0
  367. package/src/console-prefix.ts +99 -0
  368. package/src/cube-name.ts +69 -0
  369. package/src/cubes.ts +583 -0
  370. package/src/debug.ts +73 -0
  371. package/src/direct-log.ts +9 -0
  372. package/src/docs-sections.ts +129 -0
  373. package/src/drone-lifecycle.ts +62 -0
  374. package/src/drone-management.ts +162 -0
  375. package/src/ensure-mcp-config.ts +54 -0
  376. package/src/evict-drone.ts +82 -0
  377. package/src/gc-orphan-inboxes.ts +229 -0
  378. package/src/inbox-monitor.ts +1005 -0
  379. package/src/index.ts +1201 -0
  380. package/src/launch-all-cmd.ts +450 -0
  381. package/src/launch-all-command.ts +30 -0
  382. package/src/launch-all-deps.ts +188 -0
  383. package/src/launch-all-discovery.ts +118 -0
  384. package/src/launch-all-locks.ts +74 -0
  385. package/src/launch-gate.ts +80 -0
  386. package/src/lifecycle-log-guard.ts +144 -0
  387. package/src/list-roles-render.ts +52 -0
  388. package/src/local-log-routing.ts +106 -0
  389. package/src/local-manage-tool-result.ts +10 -0
  390. package/src/local-server-cursor.ts +188 -0
  391. package/src/log-audit.ts +207 -0
  392. package/src/log-stream.ts +1505 -0
  393. package/src/model-presets.ts +22 -0
  394. package/src/name-validator.ts +23 -0
  395. package/src/opencode-drone.ts +528 -0
  396. package/src/opencode-plugin.ts +38 -0
  397. package/src/parse-assimilate-args.ts +125 -0
  398. package/src/parse-launch-all-args.ts +100 -0
  399. package/src/postinstall-banner.ts +37 -0
  400. package/src/postinstall.ts +36 -0
  401. package/src/readiness-probe.ts +12 -0
  402. package/src/regen-format.ts +651 -0
  403. package/src/regen.ts +150 -0
  404. package/src/remote-client.ts +1379 -0
  405. package/src/reset-local-seat-cmd.ts +227 -0
  406. package/src/role-match.ts +29 -0
  407. package/src/role-resolver.ts +93 -0
  408. package/src/roster-render.ts +196 -0
  409. package/src/seat-probe.ts +115 -0
  410. package/src/seat-store.ts +333 -0
  411. package/src/seats.ts +741 -0
  412. package/src/self-path.ts +51 -0
  413. package/src/server-endpoint.ts +38 -0
  414. package/src/server-errors.ts +93 -0
  415. package/src/server-handshake.ts +783 -0
  416. package/src/server-response.ts +76 -0
  417. package/src/server-trust.ts +245 -0
  418. package/src/setup-confirm.ts +171 -0
  419. package/src/setup.ts +186 -0
  420. package/src/shell-escape.ts +22 -0
  421. package/src/spawn.ts +31 -0
  422. package/src/startup-services.ts +36 -0
  423. package/src/stream-owner.ts +686 -0
  424. package/src/stream-status.ts +337 -0
  425. package/src/sync-roles-render.ts +163 -0
  426. package/src/sync.ts +363 -0
  427. package/src/terminal-title.ts +76 -0
  428. package/src/token-store.ts +102 -0
  429. package/src/tool-manifest.ts +610 -0
  430. package/src/tool-scope.ts +110 -0
  431. package/src/types.ts +5 -0
  432. package/src/unknown-subcommand.ts +35 -0
  433. package/src/version.ts +82 -0
  434. package/src/working-repo.ts +99 -0
  435. package/src/worktree-lifecycle.ts +254 -0
  436. package/dist/auth-recovery.d.ts +0 -33
  437. package/dist/auth-recovery.js +0 -1
  438. package/dist/auth.d.ts +0 -103
  439. package/dist/auth.js +0 -39
  440. package/dist/device-auth.d.ts +0 -75
  441. package/dist/device-auth.js +0 -1
  442. package/dist/drone-address.d.ts +0 -26
  443. package/dist/drone-address.js +0 -1
  444. package/dist/get-started.d.ts +0 -20
  445. package/dist/get-started.js +0 -2
  446. package/dist/health-beat.d.ts +0 -134
  447. package/dist/health-beat.js +0 -1
  448. package/dist/role-section.d.ts +0 -110
  449. package/dist/role-section.js +0 -8
  450. package/dist/setup-action.d.ts +0 -20
  451. package/dist/setup-action.js +0 -1
  452. package/dist/stale-version-check.d.ts +0 -40
  453. package/dist/stale-version-check.js +0 -1
  454. package/dist/subscription-retry.d.ts +0 -40
  455. package/dist/subscription-retry.js +0 -1
  456. package/dist/templates.d.ts +0 -107
  457. package/dist/templates.js +0 -359
  458. package/dist/token-crypto.d.ts +0 -50
  459. package/dist/token-crypto.js +0 -1
package/dist/cli-help.js CHANGED
@@ -1,56 +1,104 @@
1
- function n(e){return e==="--help"||e==="-h"}function o(e){return`borgmcp ${e} \u2014 run several AI coding agents on one project, together.
2
- They coordinate through a shared log (a "cube"). For Claude Code, Codex & OpenCode.
3
-
4
- Docs & quickstart: https://borgmcp.ai/get-started
5
-
6
- Install Claude Code, Codex, or OpenCode first. Type \`borg ...\` in your terminal;
7
- type \`borg_...\` inside your agent session once you've joined a cube ("assimilate").
8
-
9
- Usage:
10
- borg Launch your agent CLI; in a TTY, bare borg may show the launch menu
11
- borg setup Set up OAuth + register MCP server
12
- borg setup --no-browser Set up from SSH/headless terminals
13
- borg assimilate [role] Join a cube (creates one if needed)
14
- borg assimilate --worktree <name> Spawn a worktree drone (in ~/.borg/worktrees/<repo>/<name>)
15
- borg sync [--prune] Sync this worktree's branch to origin/main
16
- borg cleanup [--prune] Report (or --prune) worktrees orphaned by evicted drones
17
- borg launch-all [cube] Launch all drone worktrees of a cube (default: active cube)
18
- borg launch-all [cube] --cli claude|codex|opencode
19
- Launch all drone worktrees with that agent CLI
20
- borg --cli claude|codex|opencode Launch that agent CLI directly
21
- borg --version Show installed version
22
-
23
- All other arguments are passed through to the selected agent CLI.
24
- `}function r(e){return`borg assimilate (borgmcp ${e}) \u2014 join a cube under a role (creates the cube if needed)
25
-
26
- Usage:
27
- borg assimilate [role] Join the active cube under [role] (default role if omitted)
28
- borg assimilate [role] --worktree <name> Spawn the drone in an isolated git worktree
29
- (~/.borg/worktrees/<repo>/<name>)
30
- borg assimilate --here Assimilate in the current worktree (no sibling spawn)
31
- borg assimilate --help Show this help
32
-
33
- Flags:
34
- --worktree <name> Create + launch the drone in a sibling git worktree
35
- --here Stay in the current worktree (no sibling spawn)
36
- --cube-name <name> Cube to join/create (default: repo basename)
37
- --template <name> Bootstrap a new cube from a bundled role template
38
- --no-template Create the cube with no template roles
39
- --cli claude|codex|opencode Agent CLI to launch (default: claude)
40
- --model claude:<model> Legacy Claude model override (configure models in the agent CLI)
41
- --yes, -y Skip confirmation prompts
42
-
43
- For local or provider-specific models, configure the selected agent CLI directly.
44
- OpenCode supports Ollama and other providers through its own model configuration.
45
- `}function t(e){return`borg setup (borgmcp ${e}) \u2014 set up OAuth + register the borg MCP server
46
-
47
- Borg MCP needs Claude Code, Codex, or OpenCode installed first.
48
-
49
- Usage:
50
- borg setup Run the interactive setup wizard (OAuth sign-in +
51
- register the borg MCP server with your agent CLI)
52
- borg setup --no-browser Sign in without a local browser (device-code flow)
53
- for SSH / headless / container terminals. Alias: --device.
54
- Auto-detected on SSH/headless; this forces it.
55
- borg setup --help Show this help
56
- `}export{r as assimilateHelpText,n as isHelpFlag,t as setupHelpText,o as topLevelHelpText};
1
+ /**
2
+ * Pure CLI help-text + flag helpers.
3
+ *
4
+ * Kept in its own module (not in claude.ts) so importing them in tests does NOT
5
+ * run claude.ts's `main()` side effects — the same pattern as parse-assimilate-args.ts
6
+ * and cli-platform.ts.
7
+ */
8
+ /** True for the standard help flags `--help` / `-h`. */
9
+ export function isHelpFlag(arg) {
10
+ return arg === '--help' || arg === '-h';
11
+ }
12
+ /**
13
+ * Help text for top-level `borg --help`.
14
+ *
15
+ * Kept pure so tests can pin user-facing discoverability without importing
16
+ * claude.ts, which launches agent CLIs as a side effect.
17
+ */
18
+ export function topLevelHelpText(version) {
19
+ return (`borgmcp ${version} run several AI coding agents on one project, together.\n` +
20
+ ` They coordinate through a shared log (a "cube"). For Claude Code, Codex & OpenCode.\n\n` +
21
+ `Docs & quickstart: https://github.com/Byte-Ventures/borg-mcp-client#readme\n\n` +
22
+ `Install Claude Code, Codex, or OpenCode first. Type \`borg ...\` in your terminal;\n` +
23
+ `type \`borg_...\` inside your agent session once you've joined a cube ("assimilate").\n\n` +
24
+ `Usage:\n` +
25
+ ` borg Launch your agent CLI; in a TTY, bare borg may show the launch menu\n` +
26
+ ` borg setup Set up borg MCP server + agent CLI integration\n` +
27
+ ` borg assimilate [role] Join or create a cube\n` +
28
+ ` borg assimilate --host <host> Join or create on an explicit server\n` +
29
+ ` borg assimilate --worktree <name> Spawn a worktree drone (in ~/.borg/worktrees/<repo>/<name>)\n` +
30
+ ` borg reset-local-seat Clear ONLY this worktree's saved local seat (offline; after a rejection)\n` +
31
+ ` borg sync [--prune] Sync this worktree's branch to origin/main\n` +
32
+ ` borg cleanup [--prune] Report (or --prune) worktrees orphaned by evicted drones\n` +
33
+ ` borg launch-all [cube] Launch all drone worktrees of a cube (default: active cube)\n` +
34
+ ` borg launch-all [cube] --cli claude|codex|opencode\n` +
35
+ ` Launch all drone worktrees with that agent CLI\n` +
36
+ ` borg --cli claude|codex|opencode Launch that agent CLI directly\n` +
37
+ ` borg --version Show installed version\n\n` +
38
+ `All other arguments are passed through to the selected agent CLI.\n`);
39
+ }
40
+ /**
41
+ * Help text for `borg assimilate --help` the home for the full assimilate flag
42
+ * set. Model/provider configuration belongs to the selected agent CLI.
43
+ */
44
+ export function assimilateHelpText(version) {
45
+ return (`borg assimilate (borgmcp ${version}) join or create a cube under a role\n\n` +
46
+ `Usage:\n` +
47
+ ` borg assimilate [role] Join the active cube under [role] (default role if omitted)\n` +
48
+ ` borg assimilate [role] --worktree <name> Spawn the drone in an isolated git worktree\n` +
49
+ ` (~/.borg/worktrees/<repo>/<name>)\n` +
50
+ ` borg assimilate --here Assimilate in the current worktree (no sibling spawn)\n` +
51
+ ` borg assimilate --host <host> Join an authorized self-hosted cube\n` +
52
+ ` borg assimilate --host <host> --enroll Operator-terminal enrollment, then create/join (preview)\n` +
53
+ ` borg assimilate --help Show this help\n\n` +
54
+ `Flags:\n` +
55
+ ` --worktree <name> Create + launch the drone in a sibling git worktree\n` +
56
+ ` --here Stay in the current worktree (no sibling spawn)\n` +
57
+ ` --cube-name <name> Cube to join/create (otherwise confirm repo basename)\n` +
58
+ ` --host <host> Borg server host or URL (bare hosts default to HTTPS)\n` +
59
+ ` --enroll Prompt for a hidden enrollment invitation in the operator terminal\n` +
60
+ ` --template <name> Bootstrap a new cube from a bundled role template\n` +
61
+ ` --no-template Create the cube with no template roles\n` +
62
+ ` --cli claude|codex|opencode Agent CLI to launch (default: claude)\n` +
63
+ ` --model claude:<model> Legacy Claude model override (configure models in the agent CLI)\n` +
64
+ ` --yes, -y Skip confirmation prompts\n\n` +
65
+ `An enrolled owner client may create an idempotent repository cube; ordinary clients\n` +
66
+ `require an explicit cube grant. Agent seats begin only after enrollment. Preview only.\n` +
67
+ `See docs/LOCAL_SERVER.md for self-hosted setup and current status.\n\n` +
68
+ `For local or provider-specific models, configure the selected agent CLI directly.\n` +
69
+ `OpenCode supports Ollama and other providers through its own model configuration.\n`);
70
+ }
71
+ /**
72
+ * Help text for `borg reset-local-seat --help`. The offline, network-free seat
73
+ * reset recommended by the pin-matched SESSION_REJECTED diagnostic (#1082).
74
+ */
75
+ export function resetLocalSeatHelpText(version) {
76
+ return (`borg reset-local-seat (borgmcp ${version}) — clear ONLY this worktree's saved local seat\n\n` +
77
+ `Offline and network-free: it contacts no server and revokes nothing server-side. It clears\n` +
78
+ `just this worktree's saved local seat — its credential and cube binding together — from the\n` +
79
+ `local seat store on this machine. Server, trust anchor, cube, and every sibling worktree are\n` +
80
+ `left untouched.\n\n` +
81
+ `Use it after \`borg assimilate\` reports this worktree's seat was revoked or taken over\n` +
82
+ `(a pin-matched rejection), then ask the operator for a new invitation and re-enroll.\n\n` +
83
+ `Usage:\n` +
84
+ ` borg reset-local-seat Reset this worktree's saved seat (TTY confirms [y/N])\n` +
85
+ ` borg reset-local-seat --host <host> No-op unless this worktree's seat is on <host>\n` +
86
+ ` borg reset-local-seat --yes Reset without a prompt (required when non-interactive)\n` +
87
+ ` borg reset-local-seat --help Show this help\n\n` +
88
+ `Flags:\n` +
89
+ ` --host <host> Only act if this worktree's saved seat is on <host> (else no-op)\n` +
90
+ ` --yes, -y Skip the confirmation prompt (required in non-TTY contexts)\n`);
91
+ }
92
+ /**
93
+ * Help text for `borg setup --help` (gh#520 — previously this ran the setup
94
+ * wizard instead of showing help). Mirrors the `borg setup` description in the
95
+ * top-level `borg --help`.
96
+ */
97
+ export function setupHelpText(version) {
98
+ return (`borg setup (borgmcp ${version}) — set up borg MCP server + agent CLI integration\n\n` +
99
+ `Borg MCP needs Claude Code, Codex, or OpenCode installed first.\n\n` +
100
+ `Usage:\n` +
101
+ ` borg setup Run the interactive setup wizard\n` +
102
+ ` borg setup --help Show this help\n`);
103
+ }
104
+ //# sourceMappingURL=cli-help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-help.js","sourceRoot":"","sources":["../src/cli-help.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,wDAAwD;AACxD,MAAM,UAAU,UAAU,CAAC,GAAuB;IAChD,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,CAAC;AAC1C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,CACL,WAAW,OAAO,6DAA6D;QAC/E,uGAAuG;QACvG,gFAAgF;QAChF,sFAAsF;QACtF,2FAA2F;QAC3F,UAAU;QACV,kGAAkG;QAClG,6EAA6E;QAC7E,oDAAoD;QACpD,0EAA0E;QAC1E,qGAAqG;QACrG,uGAAuG;QACvG,yEAAyE;QACzE,uFAAuF;QACvF,0FAA0F;QAC1F,wDAAwD;QACxD,6EAA6E;QAC7E,sEAAsE;QACtE,uDAAuD;QACvD,qEAAqE,CACtE,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,CACL,4BAA4B,OAAO,4CAA4C;QAC/E,UAAU;QACV,sGAAsG;QACtG,4FAA4F;QAC5F,4EAA4E;QAC5E,gGAAgG;QAChG,8EAA8E;QAC9E,uGAAuG;QACvG,2DAA2D;QAC3D,UAAU;QACV,oFAAoF;QACpF,gFAAgF;QAChF,sFAAsF;QACtF,sFAAsF;QACtF,mGAAmG;QACnG,kFAAkF;QAClF,uEAAuE;QACvE,+EAA+E;QAC/E,+FAA+F;QAC/F,4DAA4D;QAC5D,uFAAuF;QACvF,0FAA0F;QAC1F,wEAAwE;QACxE,qFAAqF;QACrF,qFAAqF,CACtF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,CACL,kCAAkC,OAAO,qDAAqD;QAC9F,8FAA8F;QAC9F,+FAA+F;QAC/F,gGAAgG;QAChG,qBAAqB;QACrB,2FAA2F;QAC3F,0FAA0F;QAC1F,UAAU;QACV,iGAAiG;QACjG,0FAA0F;QAC1F,kGAAkG;QAClG,4DAA4D;QAC5D,UAAU;QACV,iGAAiG;QACjG,4FAA4F,CAC7F,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,OAAO,CACL,uBAAuB,OAAO,wDAAwD;QACtF,qEAAqE;QACrE,UAAU;QACV,+DAA+D;QAC/D,6CAA6C,CAC9C,CAAC;AACJ,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-platform.d.ts","sourceRoot":"","sources":["../src/cli-platform.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,eAAe,CAAC;IACjC,aAAa,EAAE,MAAM,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;IAC7C,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,KAAK,EAAE,MAAM,OAAO,CAAC;CACtB;AAED,wBAAgB,qBAAqB,IAAI,eAAe,CAMvD;AAUD,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,eAAe,GAAG,OAAO,EAAE,CAM1E;AAOD,wBAAsB,gBAAgB,CACpC,QAAQ,EAAE,OAAO,GAAG,SAAS,EAC7B,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,OAAO,CAAC,CAuClB;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,OAAO,GAAG,aAAa,CAQtH;AAID,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;IAAE,GAAG,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAuB9F"}
@@ -1,4 +1,106 @@
1
- import C from"which";import{getProjectCliPreference as p,setProjectCliPreference as w}from"./cubes.js";function m(){return{claude:f("claude"),codex:f("codex"),opencode:f("opencode")}}function f(r){try{return C.sync(r)}catch{return null}}function g(r){const e=[];return r.claude&&e.push("claude"),r.codex&&e.push("codex"),r.opencode&&e.push("opencode"),e}async function a(r,e){return await e.setPreference(r),r}async function I(r,e){const c=e.detectCli(),n=g(c);if(n.length===0)throw new Error("No supported agent CLI found (claude, codex, opencode). Install one of them, then run borg again.");if(r){if(!n.includes(r))throw new Error(`${r} CLI is not installed.`);return await e.setPreference(r),r}const t=await e.getPreference();if(t&&n.includes(t))return t;if(n.length===1)return await e.setPreference(n[0]),n[0];if(!e.isTTY())throw new Error("Multiple agent CLIs detected. Pass --cli claude, --cli codex, or --cli opencode to choose.");const o=n.map((s,h)=>` ${h+1}) ${s}`),i=(await e.prompt(`Use which CLI for this project?
2
- ${o.join(`
3
- `)}
4
- [1]: `)).trim();if(i===""||i==="1")return a(n[0],e);const l=parseInt(i,10);if(!Number.isNaN(l)&&l>=1&&l<=n.length)return a(n[l-1],e);const d=i.toLowerCase();for(const s of n)if(d===s)return a(s,e);throw new Error(`invalid CLI choice "${i}"`)}function L(r,e){return{detectCli:m,getPreference:p,setPreference:w,prompt:r,isTTY:e}}const u=["claude","codex","opencode"];function $(r){const e=[];let c;for(let n=0;n<r.length;n++){const t=r[n];if(t==="--cli"){const o=r[n+1];if(!o||!u.includes(o))return{rest:e,error:`--cli requires one of: ${u.join(", ")}`};c=o,n+=1}else if(t.startsWith("--cli=")){const o=t.slice(6);if(!u.includes(o))return{rest:e,error:`--cli requires one of: ${u.join(", ")}`};c=o}else e.push(t)}return{cli:c,rest:e}}export{L as defaultCliChoiceDeps,m as detectCliAvailability,g as installedCliNames,$ as parseCliFlag,I as resolveCliChoice};
1
+ import which from 'which';
2
+ import { getProjectCliPreference, setProjectCliPreference } from './cubes.js';
3
+ export function detectCliAvailability() {
4
+ return {
5
+ claude: findCommand('claude'),
6
+ codex: findCommand('codex'),
7
+ opencode: findCommand('opencode'),
8
+ };
9
+ }
10
+ function findCommand(name) {
11
+ try {
12
+ return which.sync(name);
13
+ }
14
+ catch {
15
+ return null;
16
+ }
17
+ }
18
+ export function installedCliNames(availability) {
19
+ const out = [];
20
+ if (availability.claude)
21
+ out.push('claude');
22
+ if (availability.codex)
23
+ out.push('codex');
24
+ if (availability.opencode)
25
+ out.push('opencode');
26
+ return out;
27
+ }
28
+ async function setPreferenceAndReturn(cli, deps) {
29
+ await deps.setPreference(cli);
30
+ return cli;
31
+ }
32
+ export async function resolveCliChoice(explicit, deps) {
33
+ const availability = deps.detectCli();
34
+ const installed = installedCliNames(availability);
35
+ if (installed.length === 0) {
36
+ throw new Error('No supported agent CLI found (claude, codex, opencode). Install one of them, then run borg again.');
37
+ }
38
+ if (explicit) {
39
+ if (!installed.includes(explicit)) {
40
+ throw new Error(`${explicit} CLI is not installed.`);
41
+ }
42
+ await deps.setPreference(explicit);
43
+ return explicit;
44
+ }
45
+ const stored = await deps.getPreference();
46
+ if (stored && installed.includes(stored))
47
+ return stored;
48
+ if (installed.length === 1) {
49
+ await deps.setPreference(installed[0]);
50
+ return installed[0];
51
+ }
52
+ if (!deps.isTTY()) {
53
+ throw new Error('Multiple agent CLIs detected. Pass --cli claude, --cli codex, or --cli opencode to choose.');
54
+ }
55
+ const promptLines = installed.map((cli, i) => ` ${i + 1}) ${cli}`);
56
+ const answer = (await deps.prompt(`Use which CLI for this project?\n${promptLines.join('\n')}\n[1]: `)).trim();
57
+ if (answer === '' || answer === '1')
58
+ return setPreferenceAndReturn(installed[0], deps);
59
+ const num = parseInt(answer, 10);
60
+ if (!Number.isNaN(num) && num >= 1 && num <= installed.length) {
61
+ return setPreferenceAndReturn(installed[num - 1], deps);
62
+ }
63
+ const lower = answer.toLowerCase();
64
+ for (const cli of installed) {
65
+ if (lower === cli)
66
+ return setPreferenceAndReturn(cli, deps);
67
+ }
68
+ throw new Error(`invalid CLI choice "${answer}"`);
69
+ }
70
+ export function defaultCliChoiceDeps(prompt, isTTY) {
71
+ return {
72
+ detectCli: detectCliAvailability,
73
+ getPreference: getProjectCliPreference,
74
+ setPreference: setProjectCliPreference,
75
+ prompt,
76
+ isTTY,
77
+ };
78
+ }
79
+ const VALID_CLIS = ['claude', 'codex', 'opencode'];
80
+ export function parseCliFlag(args) {
81
+ const rest = [];
82
+ let cli;
83
+ for (let i = 0; i < args.length; i++) {
84
+ const arg = args[i];
85
+ if (arg === '--cli') {
86
+ const next = args[i + 1];
87
+ if (!next || !VALID_CLIS.includes(next)) {
88
+ return { rest, error: `--cli requires one of: ${VALID_CLIS.join(', ')}` };
89
+ }
90
+ cli = next;
91
+ i += 1;
92
+ }
93
+ else if (arg.startsWith('--cli=')) {
94
+ const value = arg.slice('--cli='.length);
95
+ if (!VALID_CLIS.includes(value)) {
96
+ return { rest, error: `--cli requires one of: ${VALID_CLIS.join(', ')}` };
97
+ }
98
+ cli = value;
99
+ }
100
+ else {
101
+ rest.push(arg);
102
+ }
103
+ }
104
+ return { cli, rest };
105
+ }
106
+ //# sourceMappingURL=cli-platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-platform.js","sourceRoot":"","sources":["../src/cli-platform.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ import { spawn } from 'node:child_process';
2
+ import type { BorgCli } from './cubes.js';
3
+ /**
4
+ * Client #20: the narrow coordination surface a borg-launched agent needs
5
+ * without an approval round-trip. Keep the direct-tool list deliberately
6
+ * smaller than the complete Borg MCP surface. borg_tool's transitive scope is
7
+ * disclosed separately before consent.
8
+ */
9
+ export declare const BORG_COORDINATION_TOOLS: readonly ["regen", "log", "read-log", "roster", "ack", "stream-status", "whoami", "cube", "role", "playbook", "tool", "describe-tool"];
10
+ export declare const CODEX_BORG_COORDINATION_TOOLS: string[];
11
+ export declare const OPENCODE_BORG_COORDINATION_TOOLS: string[];
12
+ export declare const BORG_DISPATCHER_APPROVAL_DISCLOSURE = "This set includes borg_tool: approving the dispatcher also approves any Borg operation invoked through it.";
13
+ type OpenCodePermissionAction = 'allow' | 'ask' | 'deny';
14
+ export interface ApprovalInspection {
15
+ restrictiveTools: string[];
16
+ repairSnippet: string;
17
+ }
18
+ export interface LaunchApprovalDecision {
19
+ codexArgs: string[];
20
+ openCodePermission?: string;
21
+ warning?: string;
22
+ }
23
+ export declare function codexApprovalRepairSnippet(tools?: string[]): string;
24
+ export declare function inspectCodexBorgApprovals(config: unknown): ApprovalInspection;
25
+ export declare function openCodeApprovalRepairObject(tools?: string[]): Record<string, OpenCodePermissionAction>;
26
+ /** Preserve every existing OpenCode permission rule, then append the exact
27
+ * Borg coordination allows. This remains safe whether OPENCODE_PERMISSION is
28
+ * deep-merged or replaces the configured permission value. */
29
+ export declare function mergeOpenCodePermission(permission: unknown, tools?: string[]): Record<string, unknown>;
30
+ export declare function inspectOpenCodeBorgApprovals(config: unknown): ApprovalInspection;
31
+ export declare function codexBorgApprovalArgs(tools?: string[]): string[];
32
+ export interface ApprovalIo {
33
+ readCodexConfig: (approvalArgs?: string[]) => Promise<unknown> | unknown;
34
+ readOpenCodeConfig: (permissionOverride?: string) => Promise<unknown> | unknown;
35
+ isTTY: () => boolean;
36
+ confirm: (message: string) => Promise<string>;
37
+ }
38
+ export interface EffectiveConfigOptions {
39
+ cwd: string;
40
+ env: NodeJS.ProcessEnv;
41
+ /** User-selected Codex profile/config flags, in their launch precedence. */
42
+ codexArgs: string[];
43
+ loadCodex?: (args: string[], cwd: string, env: NodeJS.ProcessEnv, profile?: string) => Promise<unknown>;
44
+ loadOpenCode?: (cwd: string, env: NodeJS.ProcessEnv) => Promise<unknown> | unknown;
45
+ }
46
+ export interface CodexEffectiveConfigRuntime {
47
+ spawnProcess?: typeof spawn;
48
+ timeoutMs?: number;
49
+ maxResponseBytes?: number;
50
+ profile?: string;
51
+ }
52
+ /** Keep only flags that app-server supports and that participate in config
53
+ * resolution. Runtime-only --profile/-p is resolved separately because Codex
54
+ * rejects it on the app-server subcommand. */
55
+ export declare function codexEffectiveConfigArgs(args: string[]): string[];
56
+ /** Resolve Codex's selected runtime profile. Short attached forms are accepted
57
+ * by Codex/clap; the final occurrence before -- wins. */
58
+ export declare function codexSelectedProfile(args: string[]): string | undefined;
59
+ interface CodexConfigLayer {
60
+ name?: {
61
+ type?: string;
62
+ profile?: string | null;
63
+ };
64
+ config?: unknown;
65
+ disabledReason?: string | null;
66
+ }
67
+ interface CodexConfigSnapshot {
68
+ config?: unknown;
69
+ layers?: CodexConfigLayer[] | null;
70
+ }
71
+ /** Rebuild the native ordered layer stack with the selected profile inserted
72
+ * immediately above the base user layer, matching Codex's runtime loader. */
73
+ export declare function composeCodexProfileConfig(snapshot: CodexConfigSnapshot, profileConfig: unknown): unknown;
74
+ export declare function readCodexEffectiveConfig(args: string[], cwd: string, env: NodeJS.ProcessEnv, runtime?: CodexEffectiveConfigRuntime): Promise<unknown>;
75
+ export declare function readOpenCodeEffectiveConfig(cwd: string, env: NodeJS.ProcessEnv): unknown;
76
+ export declare function defaultApprovalIo(confirm: (message: string) => Promise<string>, isTTY: () => boolean, options?: Partial<EffectiveConfigOptions>): ApprovalIo;
77
+ export declare function resolveLaunchBorgApprovals(cli: BorgCli, io: ApprovalIo): Promise<LaunchApprovalDecision>;
78
+ export declare function buildOpenCodeLaunchArgs(cwd: string, port: number, prompt: string, passthroughArgs?: string[]): string[];
79
+ export declare function setupApprovalWarnings(deps: Pick<ApprovalIo, 'readCodexConfig' | 'readOpenCodeConfig'>, selected?: {
80
+ codex?: boolean;
81
+ opencode?: boolean;
82
+ }): Promise<string[]>;
83
+ export {};
84
+ //# sourceMappingURL=cli-tool-approval.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli-tool-approval.d.ts","sourceRoot":"","sources":["../src/cli-tool-approval.ts"],"names":[],"mappings":"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"}