@phnx-labs/agents-cli 1.22.38 → 1.22.40

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 (554) hide show
  1. package/CHANGELOG.md +302 -0
  2. package/README.md +111 -70
  3. package/dist/bin/agents +0 -0
  4. package/dist/bootstrap.js +46 -27
  5. package/dist/browser.js +2 -2
  6. package/dist/cli/command-registry.d.ts +135 -0
  7. package/dist/cli/command-registry.js +260 -0
  8. package/dist/commands/accounts.d.ts +20 -0
  9. package/dist/commands/accounts.js +186 -25
  10. package/dist/commands/apply.d.ts +3 -3
  11. package/dist/commands/apply.js +20 -63
  12. package/dist/commands/browser.js +206 -94
  13. package/dist/commands/budget.d.ts +7 -6
  14. package/dist/commands/budget.js +8 -7
  15. package/dist/commands/cloud.js +17 -20
  16. package/dist/commands/commands.js +1 -1
  17. package/dist/commands/computer-actions.d.ts +1 -35
  18. package/dist/commands/computer-actions.js +13 -181
  19. package/dist/commands/computer.d.ts +28 -3
  20. package/dist/commands/computer.js +93 -65
  21. package/dist/commands/config.js +47 -4
  22. package/dist/commands/cost.d.ts +2 -1
  23. package/dist/commands/cost.js +7 -6
  24. package/dist/commands/daemon.js +151 -4
  25. package/dist/commands/detach.js +1 -1
  26. package/dist/commands/doctor.js +19 -11
  27. package/dist/commands/events.js +1 -1
  28. package/dist/commands/exec.d.ts +2 -50
  29. package/dist/commands/exec.js +161 -216
  30. package/dist/commands/factory.js +1 -1
  31. package/dist/commands/feed.d.ts +2 -2
  32. package/dist/commands/feed.js +9 -12
  33. package/dist/commands/fleet-capture.js +25 -27
  34. package/dist/commands/focus.d.ts +2 -3
  35. package/dist/commands/focus.js +34 -9
  36. package/dist/commands/go.js +15 -5
  37. package/dist/commands/harness.d.ts +3 -3
  38. package/dist/commands/harness.js +53 -5
  39. package/dist/commands/hooks.js +1 -1
  40. package/dist/commands/import.js +2 -2
  41. package/dist/commands/insights.d.ts +5 -5
  42. package/dist/commands/insights.js +15 -9
  43. package/dist/commands/inspect.d.ts +2 -3
  44. package/dist/commands/inspect.js +4 -16
  45. package/dist/commands/logs.d.ts +2 -2
  46. package/dist/commands/logs.js +9 -9
  47. package/dist/commands/mcp.js +2 -2
  48. package/dist/commands/memory.js +1 -1
  49. package/dist/commands/message.d.ts +1 -1
  50. package/dist/commands/message.js +7 -7
  51. package/dist/commands/mine.d.ts +11 -8
  52. package/dist/commands/mine.js +11 -10
  53. package/dist/commands/models.js +1 -1
  54. package/dist/commands/modes.js +1 -1
  55. package/dist/commands/monitors.js +23 -6
  56. package/dist/commands/output.d.ts +7 -6
  57. package/dist/commands/output.js +11 -10
  58. package/dist/commands/packages.js +4 -4
  59. package/dist/commands/perf.js +1 -1
  60. package/dist/commands/permissions.js +49 -32
  61. package/dist/commands/plugins.d.ts +1 -1
  62. package/dist/commands/plugins.js +3 -3
  63. package/dist/commands/profiles.d.ts +6 -9
  64. package/dist/commands/profiles.js +8 -321
  65. package/dist/commands/projects.d.ts +9 -0
  66. package/dist/commands/projects.js +140 -8
  67. package/dist/commands/prune.js +5 -13
  68. package/dist/commands/refresh-rules.js +1 -1
  69. package/dist/commands/repo.d.ts +5 -7
  70. package/dist/commands/repo.js +34 -18
  71. package/dist/commands/resource-view.js +4 -0
  72. package/dist/commands/resume.d.ts +11 -7
  73. package/dist/commands/resume.js +82 -98
  74. package/dist/commands/route.d.ts +12 -0
  75. package/dist/commands/route.js +261 -0
  76. package/dist/commands/routines.d.ts +2 -3
  77. package/dist/commands/routines.js +120 -145
  78. package/dist/commands/rules.js +1 -1
  79. package/dist/commands/run-account-picker.d.ts +1 -1
  80. package/dist/commands/run-account-picker.js +2 -2
  81. package/dist/commands/run-broadcast.d.ts +21 -0
  82. package/dist/commands/run-broadcast.js +89 -0
  83. package/dist/commands/run-cloud.js +1 -1
  84. package/dist/commands/secrets-vault.d.ts +10 -0
  85. package/dist/commands/{login.js → secrets-vault.js} +34 -14
  86. package/dist/commands/secrets.d.ts +4 -4
  87. package/dist/commands/secrets.js +72 -63
  88. package/dist/commands/sessions-backfill.js +1 -1
  89. package/dist/commands/sessions-browser.d.ts +1 -1
  90. package/dist/commands/sessions-browser.js +9 -5
  91. package/dist/commands/sessions-export.js +2 -2
  92. package/dist/commands/sessions-inject.js +4 -5
  93. package/dist/commands/sessions-migrate.js +16 -27
  94. package/dist/commands/sessions-picker.d.ts +13 -0
  95. package/dist/commands/sessions-picker.js +182 -8
  96. package/dist/commands/sessions-resume.d.ts +7 -3
  97. package/dist/commands/sessions-resume.js +81 -33
  98. package/dist/commands/sessions-stats.js +2 -2
  99. package/dist/commands/sessions.d.ts +75 -68
  100. package/dist/commands/sessions.js +142 -180
  101. package/dist/commands/setup-computer.js +1 -1
  102. package/dist/commands/setup-fleet.js +3 -0
  103. package/dist/commands/setup-mine.d.ts +7 -3
  104. package/dist/commands/setup-mine.js +13 -8
  105. package/dist/commands/setup-secrets.js +2 -2
  106. package/dist/commands/setup-watchdog.js +2 -2
  107. package/dist/commands/setup.js +7 -2
  108. package/dist/commands/share.d.ts +65 -0
  109. package/dist/commands/share.js +253 -20
  110. package/dist/commands/skills.js +3 -3
  111. package/dist/commands/snapshot.d.ts +2 -2
  112. package/dist/commands/snapshot.js +9 -9
  113. package/dist/commands/ssh.d.ts +1 -1
  114. package/dist/commands/ssh.js +318 -48
  115. package/dist/commands/subagents.js +1 -1
  116. package/dist/commands/sync.js +24 -9
  117. package/dist/commands/teams.d.ts +2 -2
  118. package/dist/commands/teams.js +9 -18
  119. package/dist/commands/tmux.js +5 -1
  120. package/dist/commands/trash.js +1 -1
  121. package/dist/commands/usage.d.ts +1 -1
  122. package/dist/commands/usage.js +2 -2
  123. package/dist/commands/utils.d.ts +4 -14
  124. package/dist/commands/utils.js +6 -27
  125. package/dist/commands/versions.js +2 -2
  126. package/dist/commands/view.d.ts +9 -77
  127. package/dist/commands/view.js +23 -8
  128. package/dist/commands/watchdog.js +1 -1
  129. package/dist/commands/webhook.js +11 -25
  130. package/dist/commands/workflows.js +1 -1
  131. package/dist/index.js +1 -1
  132. package/dist/lib/account-capabilities.d.ts +39 -0
  133. package/dist/lib/account-capabilities.js +59 -0
  134. package/dist/lib/account-catalog.js +1 -1
  135. package/dist/lib/account-registry.d.ts +66 -0
  136. package/dist/lib/account-registry.js +151 -5
  137. package/dist/lib/{rotate.d.ts → accounting/rotate.d.ts} +4 -4
  138. package/dist/lib/{rotate.js → accounting/rotate.js} +8 -8
  139. package/dist/lib/{usage.d.ts → accounting/usage.d.ts} +4 -4
  140. package/dist/lib/{usage.js → accounting/usage.js} +11 -11
  141. package/dist/lib/agent-spec/provider.js +1 -1
  142. package/dist/lib/agents.d.ts +72 -4
  143. package/dist/lib/agents.js +231 -199
  144. package/dist/lib/answer-router.d.ts +2 -2
  145. package/dist/lib/ask-classifier.d.ts +1 -1
  146. package/dist/lib/ask-classifier.js +1 -1
  147. package/dist/lib/audit/log.js +1 -1
  148. package/dist/lib/auth-health.d.ts +1 -1
  149. package/dist/lib/auth-health.js +2 -2
  150. package/dist/lib/brand.js +1 -1
  151. package/dist/lib/browser/caller-identity.d.ts +28 -0
  152. package/dist/lib/browser/caller-identity.js +156 -0
  153. package/dist/lib/browser/cdp.js +1 -1
  154. package/dist/lib/browser/drivers/ssh.d.ts +1 -1
  155. package/dist/lib/browser/drivers/ssh.js +2 -2
  156. package/dist/lib/browser/hygiene.d.ts +10 -2
  157. package/dist/lib/browser/hygiene.js +7 -4
  158. package/dist/lib/browser/ipc.d.ts +22 -2
  159. package/dist/lib/browser/ipc.js +185 -21
  160. package/dist/lib/browser/profiles.d.ts +67 -3
  161. package/dist/lib/browser/profiles.js +129 -7
  162. package/dist/lib/browser/remote-control.d.ts +2 -2
  163. package/dist/lib/browser/remote-control.js +3 -3
  164. package/dist/lib/browser/runtime-state.d.ts +79 -0
  165. package/dist/lib/browser/runtime-state.js +119 -1
  166. package/dist/lib/browser/service.d.ts +113 -1
  167. package/dist/lib/browser/service.js +454 -40
  168. package/dist/lib/browser/sessions-list.d.ts +2 -1
  169. package/dist/lib/browser/sessions-list.js +4 -13
  170. package/dist/lib/browser/types.d.ts +18 -0
  171. package/dist/lib/budget/config.js +1 -1
  172. package/dist/lib/budget/ledger.js +1 -1
  173. package/dist/lib/byok-usage.js +1 -1
  174. package/dist/lib/capabilities.js +3 -15
  175. package/dist/lib/catchup.d.ts +1 -1
  176. package/dist/lib/catchup.js +1 -1
  177. package/dist/lib/cloud/dispatch.js +1 -1
  178. package/dist/lib/cloud/host.d.ts +3 -3
  179. package/dist/lib/cloud/host.js +5 -5
  180. package/dist/lib/cloud/rush.d.ts +9 -21
  181. package/dist/lib/cloud/rush.js +33 -120
  182. package/dist/lib/cloud/types.d.ts +2 -2
  183. package/dist/lib/commands.js +3 -13
  184. package/dist/lib/computer/actions.d.ts +36 -0
  185. package/dist/lib/computer/actions.js +162 -0
  186. package/dist/lib/computer/dispatch.d.ts +2 -2
  187. package/dist/lib/computer/dispatch.js +2 -2
  188. package/dist/lib/computer/sessions-list.d.ts +3 -3
  189. package/dist/lib/computer/sessions-list.js +2 -2
  190. package/dist/lib/config-keys.d.ts +12 -3
  191. package/dist/lib/config-keys.js +29 -6
  192. package/dist/lib/config-machine-keys.d.ts +4 -2
  193. package/dist/lib/config-machine-keys.js +6 -2
  194. package/dist/lib/crabbox/lease.js +9 -1
  195. package/dist/lib/crabbox/runtimes.d.ts +32 -7
  196. package/dist/lib/crabbox/runtimes.js +72 -30
  197. package/dist/lib/{daemon.d.ts → daemon/daemon.d.ts} +59 -1
  198. package/dist/lib/{daemon.js → daemon/daemon.js} +237 -49
  199. package/dist/lib/daemon-services.d.ts +1 -1
  200. package/dist/lib/daemon-services.js +5 -0
  201. package/dist/lib/daemon-ticks.d.ts +25 -0
  202. package/dist/lib/daemon-ticks.js +31 -1
  203. package/dist/lib/daemon-webhooks.d.ts +102 -0
  204. package/dist/lib/daemon-webhooks.js +210 -0
  205. package/dist/lib/device-config.d.ts +116 -72
  206. package/dist/lib/device-config.js +366 -132
  207. package/dist/lib/devices/config-migration.d.ts +29 -34
  208. package/dist/lib/devices/config-migration.js +209 -130
  209. package/dist/lib/devices/connect.d.ts +2 -2
  210. package/dist/lib/devices/connect.js +2 -2
  211. package/dist/lib/devices/discovery-policy.d.ts +30 -0
  212. package/dist/lib/devices/discovery-policy.js +101 -0
  213. package/dist/lib/devices/fleet-inventory.js +8 -3
  214. package/dist/lib/devices/harness-inventory.d.ts +1 -1
  215. package/dist/lib/devices/harness-inventory.js +12 -3
  216. package/dist/lib/devices/known-hosts.js +1 -1
  217. package/dist/lib/devices/pool.d.ts +61 -0
  218. package/dist/lib/devices/pool.js +83 -0
  219. package/dist/lib/devices/registry.d.ts +1 -1
  220. package/dist/lib/devices/registry.js +1 -1
  221. package/dist/lib/devices/resolve-profile.d.ts +2 -2
  222. package/dist/lib/devices/resolve-profile.js +2 -2
  223. package/dist/lib/devices/resolve-target.d.ts +1 -1
  224. package/dist/lib/devices/resolve-target.js +4 -4
  225. package/dist/lib/devices/self-host.d.ts +1 -1
  226. package/dist/lib/devices/self-host.js +3 -3
  227. package/dist/lib/devices/ssh-config.d.ts +1 -1
  228. package/dist/lib/devices/stats-cache.js +1 -1
  229. package/dist/lib/devices/sync.d.ts +3 -1
  230. package/dist/lib/devices/sync.js +3 -3
  231. package/dist/lib/doctor-diff.js +4 -4
  232. package/dist/lib/drift-sync.js +2 -2
  233. package/dist/lib/drift.js +2 -2
  234. package/dist/lib/event-families.d.ts +1 -1
  235. package/dist/lib/event-stream.d.ts +1 -1
  236. package/dist/lib/event-stream.js +2 -2
  237. package/dist/lib/events-ingest.js +2 -2
  238. package/dist/lib/exec.d.ts +8 -5
  239. package/dist/lib/exec.js +19 -13
  240. package/dist/lib/factory/snapshot.d.ts +1 -1
  241. package/dist/lib/factory/snapshot.js +1 -1
  242. package/dist/lib/{activity.d.ts → feed/activity.d.ts} +1 -1
  243. package/dist/lib/{activity.js → feed/activity.js} +7 -7
  244. package/dist/lib/{events.d.ts → feed/events.d.ts} +2 -2
  245. package/dist/lib/{events.js → feed/events.js} +5 -5
  246. package/dist/lib/{feed.js → feed/feed.js} +4 -4
  247. package/dist/lib/feed-outcome.d.ts +1 -1
  248. package/dist/lib/feed-policy.d.ts +1 -1
  249. package/dist/lib/feed-policy.js +1 -1
  250. package/dist/lib/feed-post.d.ts +1 -1
  251. package/dist/lib/feed-post.js +1 -1
  252. package/dist/lib/feed-ranking.d.ts +1 -1
  253. package/dist/lib/fleet/apply.d.ts +0 -6
  254. package/dist/lib/fleet/apply.js +18 -45
  255. package/dist/lib/fleet/auth-sync.d.ts +16 -35
  256. package/dist/lib/fleet/auth-sync.js +16 -75
  257. package/dist/lib/fleet/capture.js +8 -6
  258. package/dist/lib/fleet/manifest.js +23 -11
  259. package/dist/lib/fleet/types.d.ts +19 -7
  260. package/dist/lib/fleet-cache.d.ts +1 -1
  261. package/dist/lib/fleet-cache.js +1 -1
  262. package/dist/lib/format.d.ts +19 -0
  263. package/dist/lib/format.js +44 -1
  264. package/dist/lib/friction-heuristics.d.ts +1 -1
  265. package/dist/lib/git.d.ts +24 -1
  266. package/dist/lib/git.js +82 -38
  267. package/dist/lib/heal.js +3 -3
  268. package/dist/lib/hooks.d.ts +18 -0
  269. package/dist/lib/hooks.js +113 -1
  270. package/dist/lib/hosts/credentials.d.ts +30 -10
  271. package/dist/lib/hosts/credentials.js +38 -26
  272. package/dist/lib/hosts/dispatch.d.ts +3 -3
  273. package/dist/lib/hosts/dispatch.js +3 -3
  274. package/dist/lib/hosts/option.d.ts +3 -3
  275. package/dist/lib/hosts/option.js +7 -8
  276. package/dist/lib/hosts/passthrough.d.ts +17 -17
  277. package/dist/lib/hosts/passthrough.js +67 -50
  278. package/dist/lib/hosts/providers/devices.d.ts +1 -1
  279. package/dist/lib/hosts/providers/devices.js +1 -1
  280. package/dist/lib/hosts/reconcile.d.ts +1 -1
  281. package/dist/lib/hosts/reconcile.js +1 -1
  282. package/dist/lib/hosts/reconnect.d.ts +1 -1
  283. package/dist/lib/hosts/reconnect.js +2 -2
  284. package/dist/lib/hosts/registry.d.ts +5 -5
  285. package/dist/lib/hosts/registry.js +5 -5
  286. package/dist/lib/hosts/remote-cmd.d.ts +10 -10
  287. package/dist/lib/hosts/remote-cmd.js +25 -18
  288. package/dist/lib/hosts/remote-os.d.ts +4 -4
  289. package/dist/lib/hosts/remote-os.js +4 -4
  290. package/dist/lib/hosts/remote-session-id.d.ts +2 -2
  291. package/dist/lib/hosts/remote-session-id.js +2 -2
  292. package/dist/lib/hosts/routing-flag.d.ts +3 -3
  293. package/dist/lib/hosts/routing-flag.js +4 -5
  294. package/dist/lib/hosts/run-target.d.ts +4 -4
  295. package/dist/lib/hosts/run-target.js +4 -4
  296. package/dist/lib/hosts/session-index.d.ts +2 -2
  297. package/dist/lib/hosts/session-index.js +1 -1
  298. package/dist/lib/hosts/session-marker.d.ts +1 -1
  299. package/dist/lib/hosts/session-marker.js +1 -1
  300. package/dist/lib/hosts/types.d.ts +2 -2
  301. package/dist/lib/hosts/types.js +2 -2
  302. package/dist/lib/import.js +1 -1
  303. package/dist/lib/{migrate.d.ts → installations/migrate.d.ts} +49 -1
  304. package/dist/lib/{migrate.js → installations/migrate.js} +265 -38
  305. package/dist/lib/installations/resolve.js +1 -1
  306. package/dist/lib/installations/strategies.js +1 -1
  307. package/dist/lib/installations/update.js +2 -2
  308. package/dist/lib/{versions.d.ts → installations/versions.d.ts} +12 -3
  309. package/dist/lib/{versions.js → installations/versions.js} +51 -31
  310. package/dist/lib/isolation-boundary-report.js +1 -1
  311. package/dist/lib/linear-projects.d.ts +28 -0
  312. package/dist/lib/linear-projects.js +30 -0
  313. package/dist/lib/loop.js +1 -1
  314. package/dist/lib/mailbox-gc.js +1 -1
  315. package/dist/lib/mailbox.js +1 -1
  316. package/dist/lib/mcp-registry.d.ts +62 -0
  317. package/dist/lib/mcp-registry.js +177 -0
  318. package/dist/lib/mcp.d.ts +5 -0
  319. package/dist/lib/mcp.js +124 -307
  320. package/dist/lib/menubar/MenubarHelper.app/Contents/CodeResources +0 -0
  321. package/dist/lib/menubar/MenubarHelper.app/Contents/MacOS/MenubarHelper +0 -0
  322. package/dist/lib/menubar/install-menubar.d.ts +7 -0
  323. package/dist/lib/menubar/install-menubar.js +24 -6
  324. package/dist/lib/menubar/snapshot.d.ts +7 -0
  325. package/dist/lib/menubar/snapshot.js +8 -6
  326. package/dist/lib/models.js +1 -1
  327. package/dist/lib/monitors/config.d.ts +12 -0
  328. package/dist/lib/monitors/config.js +3 -0
  329. package/dist/lib/monitors/dispatch.js +26 -5
  330. package/dist/lib/monitors/engine.js +10 -0
  331. package/dist/lib/monitors/sources/webhook.d.ts +1 -1
  332. package/dist/lib/monitors/state.d.ts +42 -0
  333. package/dist/lib/monitors/state.js +30 -0
  334. package/dist/lib/notify.d.ts +1 -1
  335. package/dist/lib/observe-aliases.d.ts +2 -2
  336. package/dist/lib/observe-aliases.js +2 -11
  337. package/dist/lib/output/git-output.js +2 -2
  338. package/dist/lib/overdue.d.ts +1 -1
  339. package/dist/lib/overdue.js +1 -1
  340. package/dist/lib/permissions-registry.d.ts +65 -0
  341. package/dist/lib/permissions-registry.js +599 -0
  342. package/dist/lib/permissions.d.ts +24 -13
  343. package/dist/lib/permissions.js +52 -271
  344. package/dist/lib/picker.d.ts +16 -0
  345. package/dist/lib/picker.js +33 -3
  346. package/dist/lib/placement.d.ts +1 -1
  347. package/dist/lib/placement.js +4 -4
  348. package/dist/lib/platform/paths.d.ts +8 -0
  349. package/dist/lib/platform/paths.js +11 -0
  350. package/dist/lib/platform/posixpath.js +3 -3
  351. package/dist/lib/{plugin-marketplace.d.ts → plugins/plugin-marketplace.d.ts} +1 -1
  352. package/dist/lib/{plugin-marketplace.js → plugins/plugin-marketplace.js} +2 -2
  353. package/dist/lib/{plugins.d.ts → plugins/plugins.d.ts} +1 -1
  354. package/dist/lib/{plugins.js → plugins/plugins.js} +7 -7
  355. package/dist/lib/{skills.d.ts → plugins/skills.d.ts} +1 -1
  356. package/dist/lib/{skills.js → plugins/skills.js} +7 -7
  357. package/dist/lib/pricing/cost.d.ts +1 -1
  358. package/dist/lib/pricing/cost.js +1 -1
  359. package/dist/lib/profiles-presets.d.ts +1 -1
  360. package/dist/lib/profiles-presets.js +1 -1
  361. package/dist/lib/profiles.js +2 -2
  362. package/dist/lib/project-import.js +4 -1
  363. package/dist/lib/project-launch.d.ts +1 -1
  364. package/dist/lib/project-launch.js +3 -3
  365. package/dist/lib/project-pull.d.ts +128 -0
  366. package/dist/lib/project-pull.js +384 -0
  367. package/dist/lib/project-root.d.ts +2 -2
  368. package/dist/lib/project-root.js +2 -2
  369. package/dist/lib/project-status.js +1 -1
  370. package/dist/lib/projects.d.ts +23 -0
  371. package/dist/lib/projects.js +29 -6
  372. package/dist/lib/refresh.d.ts +12 -1
  373. package/dist/lib/refresh.js +16 -9
  374. package/dist/lib/registry.d.ts +9 -2
  375. package/dist/lib/registry.js +11 -4
  376. package/dist/lib/resources.d.ts +2 -2
  377. package/dist/lib/resources.js +2 -2
  378. package/dist/lib/routers.d.ts +81 -0
  379. package/dist/lib/routers.js +153 -0
  380. package/dist/lib/routine-context.d.ts +1 -0
  381. package/dist/lib/routine-context.js +7 -2
  382. package/dist/lib/routine-notify-owner.d.ts +1 -1
  383. package/dist/lib/routine-notify.d.ts +1 -1
  384. package/dist/lib/routine-notify.js +1 -1
  385. package/dist/lib/routine-process-cleanup.d.ts +1 -1
  386. package/dist/lib/routine-readiness.d.ts +1 -1
  387. package/dist/lib/routine-readiness.js +11 -4
  388. package/dist/lib/routines-placement.d.ts +12 -2
  389. package/dist/lib/routines-placement.js +20 -3
  390. package/dist/lib/routines-project.d.ts +1 -1
  391. package/dist/lib/routines-project.js +1 -1
  392. package/dist/lib/rules/compile.d.ts +1 -0
  393. package/dist/lib/rules/compile.js +10 -2
  394. package/dist/lib/rules/rules.js +1 -1
  395. package/dist/lib/run-notify.js +1 -1
  396. package/dist/lib/runner.d.ts +80 -2
  397. package/dist/lib/runner.js +241 -62
  398. package/dist/lib/sandbox.d.ts +1 -1
  399. package/dist/lib/scheduler.d.ts +1 -1
  400. package/dist/lib/scheduler.js +1 -1
  401. package/dist/lib/{routines.d.ts → scheduling/routines.d.ts} +54 -9
  402. package/dist/lib/{routines.js → scheduling/routines.js} +173 -14
  403. package/dist/lib/secrets/Agents CLI.app/Contents/CodeResources +0 -0
  404. package/dist/lib/secrets/Agents CLI.app/Contents/MacOS/Agents CLI +0 -0
  405. package/dist/lib/secrets/agent.js +2 -2
  406. package/dist/lib/secrets/audit.js +1 -1
  407. package/dist/lib/secrets/bundles.d.ts +3 -3
  408. package/dist/lib/secrets/bundles.js +7 -7
  409. package/dist/lib/secrets/index.js +1 -1
  410. package/dist/lib/secrets/list-filter.d.ts +1 -1
  411. package/dist/lib/secrets/list-filter.js +2 -2
  412. package/dist/lib/secrets/push.d.ts +1 -1
  413. package/dist/lib/secrets/push.js +10 -12
  414. package/dist/lib/secrets/remote.d.ts +12 -10
  415. package/dist/lib/secrets/remote.js +21 -14
  416. package/dist/lib/secrets/vault.js +2 -2
  417. package/dist/lib/self-heal/checks/shadowing.js +1 -1
  418. package/dist/lib/self-heal/checks/shims.js +1 -1
  419. package/dist/lib/self-update.d.ts +39 -4
  420. package/dist/lib/self-update.js +78 -25
  421. package/dist/lib/serve/control.d.ts +1 -1
  422. package/dist/lib/serve/control.js +4 -4
  423. package/dist/lib/serve/data.d.ts +1 -1
  424. package/dist/lib/serve/data.js +1 -1
  425. package/dist/lib/serve/stream.js +1 -1
  426. package/dist/lib/service-manifest.d.ts +29 -0
  427. package/dist/lib/service-manifest.js +80 -0
  428. package/dist/lib/session/active.d.ts +59 -7
  429. package/dist/lib/session/active.js +158 -17
  430. package/dist/lib/session/bash-command.js +1 -1
  431. package/dist/lib/session/claude-accounts.d.ts +1 -1
  432. package/dist/lib/session/claude-accounts.js +1 -1
  433. package/dist/lib/session/db.d.ts +10 -2
  434. package/dist/lib/session/db.js +25 -6
  435. package/dist/lib/session/discover.d.ts +77 -0
  436. package/dist/lib/session/discover.js +130 -25
  437. package/dist/lib/session/fork.js +1 -1
  438. package/dist/lib/session/inject.d.ts +1 -1
  439. package/dist/lib/session/insights.d.ts +1 -1
  440. package/dist/lib/session/insights.js +1 -1
  441. package/dist/lib/session/live-metadata.d.ts +15 -0
  442. package/dist/lib/session/live-metadata.js +76 -0
  443. package/dist/lib/session/migrate-targets.d.ts +1 -1
  444. package/dist/lib/session/recovery.d.ts +1 -1
  445. package/dist/lib/session/recovery.js +2 -2
  446. package/dist/lib/session/remote-active.d.ts +10 -1
  447. package/dist/lib/session/remote-active.js +8 -3
  448. package/dist/lib/session/remote-bundle.d.ts +1 -1
  449. package/dist/lib/session/remote-bundle.js +2 -2
  450. package/dist/lib/session/remote-list.d.ts +15 -4
  451. package/dist/lib/session/remote-list.js +40 -3
  452. package/dist/lib/session/remote.d.ts +5 -5
  453. package/dist/lib/session/remote.js +13 -17
  454. package/dist/lib/session/resume-command.d.ts +3 -2
  455. package/dist/lib/session/resume-command.js +4 -3
  456. package/dist/lib/session/resume-owner.d.ts +3 -3
  457. package/dist/lib/session/resume-owner.js +3 -3
  458. package/dist/lib/session/session-cache.d.ts +12 -0
  459. package/dist/lib/session/session-cache.js +2 -0
  460. package/dist/lib/session/shell-programs.js +1 -1
  461. package/dist/lib/session/state.js +5 -5
  462. package/dist/lib/session/team-filter.d.ts +1 -1
  463. package/dist/lib/session/team-filter.js +1 -1
  464. package/dist/lib/session/types.d.ts +3 -3
  465. package/dist/lib/session/width.d.ts +2 -2
  466. package/dist/lib/session/width.js +2 -2
  467. package/dist/lib/share/delete.d.ts +21 -0
  468. package/dist/lib/share/delete.js +42 -0
  469. package/dist/lib/share/publish.d.ts +82 -0
  470. package/dist/lib/share/publish.js +170 -18
  471. package/dist/lib/share/worker-template.js +172 -9
  472. package/dist/lib/shims.js +35 -7
  473. package/dist/lib/smart-launch.d.ts +36 -6
  474. package/dist/lib/smart-launch.js +65 -8
  475. package/dist/lib/snapshot.d.ts +4 -4
  476. package/dist/lib/snapshot.js +2 -2
  477. package/dist/lib/ssh-exec.d.ts +1 -1
  478. package/dist/lib/ssh-exec.js +2 -2
  479. package/dist/lib/ssh-tunnel.d.ts +10 -10
  480. package/dist/lib/ssh-tunnel.js +12 -12
  481. package/dist/lib/staleness/checkers/hooks.d.ts +1 -1
  482. package/dist/lib/staleness/checkers/hooks.js +1 -1
  483. package/dist/lib/staleness/detectors/permissions.js +0 -23
  484. package/dist/lib/staleness/detectors/plugins.js +1 -1
  485. package/dist/lib/staleness/fingerprint.js +1 -1
  486. package/dist/lib/staleness/layers.d.ts +1 -1
  487. package/dist/lib/staleness/layers.js +1 -1
  488. package/dist/lib/staleness/writers/mcp.js +3 -1
  489. package/dist/lib/staleness/writers/plugins.js +1 -1
  490. package/dist/lib/staleness/writers/types.d.ts +8 -0
  491. package/dist/lib/startup/command-registry.d.ts +5 -147
  492. package/dist/lib/startup/command-registry.js +38 -303
  493. package/dist/lib/startup/dev-build.d.ts +0 -21
  494. package/dist/lib/startup/dev-build.js +29 -8
  495. package/dist/lib/state.d.ts +19 -1
  496. package/dist/lib/state.js +120 -51
  497. package/dist/lib/subagents.js +1 -1
  498. package/dist/lib/sync-status.js +1 -1
  499. package/dist/lib/sync-umbrella.d.ts +6 -1
  500. package/dist/lib/sync-umbrella.js +9 -4
  501. package/dist/lib/teams/agents.js +2 -2
  502. package/dist/lib/teams/registry.js +1 -1
  503. package/dist/lib/terminal/backends/vscodium-agent.js +1 -1
  504. package/dist/lib/terminal/engine.js +1 -1
  505. package/dist/lib/terminal/index.d.ts +4 -0
  506. package/dist/lib/terminal/index.js +3 -0
  507. package/dist/lib/terminal/inject.d.ts +2 -2
  508. package/dist/lib/terminal/inject.js +2 -2
  509. package/dist/lib/terminal/transport.js +1 -1
  510. package/dist/lib/tmux/index.d.ts +1 -1
  511. package/dist/lib/tmux/index.js +1 -1
  512. package/dist/lib/tmux/session.d.ts +21 -5
  513. package/dist/lib/tmux/session.js +76 -22
  514. package/dist/lib/triggers/handlers.d.ts +1 -1
  515. package/dist/lib/triggers/handlers.js +2 -2
  516. package/dist/lib/triggers/webhook.d.ts +36 -2
  517. package/dist/lib/triggers/webhook.js +97 -42
  518. package/dist/lib/types.d.ts +18 -6
  519. package/dist/lib/usage-fleet.d.ts +1 -1
  520. package/dist/lib/usage-fleet.js +1 -1
  521. package/dist/lib/usage-refresh.d.ts +1 -1
  522. package/dist/lib/usage-refresh.js +3 -3
  523. package/dist/lib/version-duplicates.js +2 -2
  524. package/dist/lib/view-types.d.ts +56 -0
  525. package/dist/lib/view-types.js +1 -0
  526. package/dist/lib/watchdog/rotate.d.ts +2 -2
  527. package/dist/lib/watchdog/rotate.js +3 -3
  528. package/dist/lib/watchdog/runner.d.ts +2 -3
  529. package/dist/lib/watchdog/runner.js +3 -4
  530. package/dist/lib/workflows.js +1 -1
  531. package/package.json +2 -1
  532. package/scripts/postinstall.js +2 -2
  533. package/dist/commands/bench.d.ts +0 -2
  534. package/dist/commands/bench.js +0 -101
  535. package/dist/commands/cp.d.ts +0 -84
  536. package/dist/commands/cp.js +0 -231
  537. package/dist/commands/login.d.ts +0 -2
  538. package/dist/lib/resources/commands.d.ts +0 -46
  539. package/dist/lib/resources/commands.js +0 -211
  540. package/dist/lib/resources/hooks.d.ts +0 -16
  541. package/dist/lib/resources/hooks.js +0 -153
  542. package/dist/lib/resources/mcp.d.ts +0 -34
  543. package/dist/lib/resources/mcp.js +0 -250
  544. package/dist/lib/resources/memory.d.ts +0 -15
  545. package/dist/lib/resources/memory.js +0 -46
  546. package/dist/lib/resources/permissions.d.ts +0 -13
  547. package/dist/lib/resources/permissions.js +0 -202
  548. package/dist/lib/resources/rules.d.ts +0 -46
  549. package/dist/lib/resources/rules.js +0 -179
  550. package/dist/lib/resources/skills.d.ts +0 -37
  551. package/dist/lib/resources/skills.js +0 -247
  552. package/dist/lib/resources/subagents.d.ts +0 -46
  553. package/dist/lib/resources/subagents.js +0 -202
  554. /package/dist/lib/{feed.d.ts → feed/feed.d.ts} +0 -0
@@ -142,3 +142,33 @@ export function listLinearProjects() {
142
142
  return [];
143
143
  });
144
144
  }
145
+ /**
146
+ * The `linear` block a def should carry after binding it to `project`.
147
+ *
148
+ * Pure so the write rule is testable without a `linear` CLI or a filesystem —
149
+ * `agents projects link` is the only caller and does nothing else to the field.
150
+ *
151
+ * Two rules, both learned from real drift:
152
+ *
153
+ * - `name` is REFRESHED, never merely preserved. It used to be written by
154
+ * spreading `prior`, so a project renamed on the board kept its old label in
155
+ * the YAML forever — and that label is what the status card, the AGI EXT
156
+ * Fleet panel (`linearProjectName`), and agents naming the work all read.
157
+ * - `url` is dropped when the projectId CHANGES and the incoming row has none.
158
+ * Carrying it over would leave a def pointing at the previous project's page
159
+ * beside the new project's name, and the status card prefers `url` over the
160
+ * id — so the one field a reader clicks would go to the wrong project.
161
+ * Re-linking the SAME id keeps a previously stored url, since the CLI's list
162
+ * row omitting `url` says nothing about whether the project has one.
163
+ */
164
+ export function nextLinearLink(prior, project) {
165
+ const next = { projectId: project.id, name: project.name };
166
+ // A stored url is kept ONLY when the prior block names the same project. Not
167
+ // `prior.projectId && prior.projectId !== id`: `projects add --linear <url>`
168
+ // writes `{ url }` with no projectId at all, and treating that as "same
169
+ // project" carried a url belonging to whatever the user had pasted.
170
+ const url = project.url ?? (prior?.projectId === project.id ? prior?.url : undefined);
171
+ if (url)
172
+ next.url = url;
173
+ return next;
174
+ }
package/dist/lib/loop.js CHANGED
@@ -24,7 +24,7 @@ import * as fs from 'fs';
24
24
  import * as path from 'path';
25
25
  import { buildExecCommand, buildExecEnv } from './exec.js';
26
26
  import { extractUsageEvents } from './budget/enforce.js';
27
- import { parseTimeout } from './routines.js';
27
+ import { parseTimeout } from './scheduling/routines.js';
28
28
  import { writeCheckpoint } from './checkpoint.js';
29
29
  import { mailboxDir } from './mailbox.js';
30
30
  import { composeWin32CommandLine } from './platform/index.js';
@@ -10,7 +10,7 @@ import * as fs from 'fs';
10
10
  import * as path from 'path';
11
11
  import { getFeedDir, getMailboxRootDir } from './state.js';
12
12
  import { mailboxDir, isValidMailboxId, readMessage, sweepExpired, } from './mailbox.js';
13
- import { listBlocks, removeBlock, recordMessageReceipt } from './feed.js';
13
+ import { listBlocks, removeBlock, recordMessageReceipt } from './feed/feed.js';
14
14
  const DEFAULT_MAX_CONSUMED_AGE_MINUTES = 24 * 60;
15
15
  function consumedAgeMinutes(file, now) {
16
16
  try {
@@ -19,7 +19,7 @@ import * as fs from 'fs';
19
19
  import * as path from 'path';
20
20
  import { randomUUID } from 'crypto';
21
21
  import { getMailboxRootDir } from './state.js';
22
- import { recordMessageReceipt } from './feed.js';
22
+ import { recordMessageReceipt } from './feed/feed.js';
23
23
  import { parseDuration } from './hooks/cache.js';
24
24
  /** Default delivery TTL for messages enqueued without an explicit one (24 hours). */
25
25
  export const DEFAULT_TTL_SECONDS = 24 * 60 * 60;
@@ -0,0 +1,62 @@
1
+ import type { AgentId } from './types.js';
2
+ /**
3
+ * On-disk schema of an agent's MCP config file. One entry per distinct
4
+ * serialization, NOT one per agent -- most harnesses share Claude's shape.
5
+ */
6
+ export type McpFormat =
7
+ /** `{ "mcpServers": { "<name>": {command,args,env} | {url,headers?} } }` */
8
+ 'claude-json'
9
+ /** Claude shape, but a remote server is keyed `serverUrl` and has no headers. */
10
+ | 'antigravity-json'
11
+ /** `{ "mcp": { "servers": { "<name>": ... } } }`, remote carries `transport`. */
12
+ | 'openclaw-json'
13
+ /** `{ "mcp": { "<name>": {type:'local',command:[...]} | {type:'remote',url} } }` */
14
+ | 'opencode-jsonc'
15
+ /** `[mcp_servers.<name>]` TOML table. */
16
+ | 'toml'
17
+ /** `mcp_servers:` YAML mapping. */
18
+ | 'yaml'
19
+ /** `{ schema_version, mcp_servers: { "<name>": {transport, ..., enabled} } }` */
20
+ | 'muse-json';
21
+ /** The complete MCP contract for one agent. */
22
+ export interface McpTarget {
23
+ /** MCP config file under a HOME root (a version home, or the real HOME). */
24
+ home(home: string): string;
25
+ /** Project-scoped MCP config file for a repo at `cwd`. */
26
+ project(cwd: string): string;
27
+ /**
28
+ * Serialization of that file, or `null` when agents-cli cannot yet write this
29
+ * harness's MCP config. Paths still resolve for the read/detect side.
30
+ */
31
+ format: McpFormat | null;
32
+ /** Required when `format` is null: why the write path refuses. */
33
+ unsupportedReason?: string;
34
+ /**
35
+ * True when the harness reads this config from the user's REAL home rather
36
+ * than a per-version home, so `home()` ignores its argument. Callers that
37
+ * reason about version isolation must check this rather than assuming every
38
+ * target is version-scoped.
39
+ */
40
+ homeGlobal?: boolean;
41
+ /**
42
+ * When set, `installMcpServers` registers through the harness's own CLI
43
+ * (`claude mcp add` / `codex mcp add`) instead of writing the file directly.
44
+ * The path/format above still describe where that CLI lands the entry.
45
+ */
46
+ cli?: 'claude' | 'codex';
47
+ }
48
+ /**
49
+ * Single source of truth for every MCP-capable agent's config location and
50
+ * format. Keys MUST equal `capableAgents('mcp')` -- pinned by
51
+ * `mcp-registry.test.ts`.
52
+ */
53
+ export declare const MCP_TARGETS: Partial<Record<AgentId, McpTarget>>;
54
+ /** The registry entry for `agent`, or undefined when it stores no MCP config. */
55
+ export declare function mcpTarget(agent: AgentId): McpTarget | undefined;
56
+ /**
57
+ * Why the write path refuses `agent`, or null when it can write.
58
+ *
59
+ * Two distinct refusals, both loud: the agent has no entry at all (not
60
+ * MCP-capable, or a hard-deprecated id), or it has one with `format: null`.
61
+ */
62
+ export declare function mcpWriteUnsupportedReason(agent: AgentId): string | null;
@@ -0,0 +1,177 @@
1
+ /**
2
+ * Declarative MCP-target registry.
3
+ *
4
+ * Every MCP-capable agent gets ONE entry (`MCP_TARGETS`) describing where its
5
+ * MCP config lives (version home, global user scope, project scope) and which
6
+ * serialization format that file uses. Generic path resolution, config writing,
7
+ * config parsing, and install now read this table instead of the four
8
+ * independent `switch (agentId)` / `if (agentId === '...')` chains that used to
9
+ * be copy-pasted across `lib/agents.ts`, `lib/mcp.ts`, and a since-deleted
10
+ * `lib/resources/mcp.ts` (RUSH-2695) -- which had *different* membership sets, so
11
+ * a harness could resolve a config path and then be silently skipped by the
12
+ * writer, or be written to one file and read back from another.
13
+ *
14
+ * The membership set is pinned to `capableAgents('mcp')` by
15
+ * `mcp-registry.test.ts`, so a newly added harness cannot start out "capable"
16
+ * and quietly no-op: it must either declare a format here or declare, in
17
+ * `format: null` + `unsupportedReason`, that agents-cli cannot write its config
18
+ * yet. A `null` format still resolves paths (the reader and the staleness
19
+ * detector need them); only the write path refuses, and it refuses loudly.
20
+ *
21
+ * Drift this table fixed, each verified against the harness's own docs or an
22
+ * installed config dir:
23
+ *
24
+ * - antigravity: MCP lives in the shared `~/.gemini/config/`, not the
25
+ * per-version `~/.gemini/antigravity-cli/` state dir (agy's bundled
26
+ * `agy-customizations/docs/mcp_servers.md`, and the file agy itself creates
27
+ * at `~/.gemini/config/mcp_config.json`) -- and its remote transport key is
28
+ * `serverUrl`, not `url`.
29
+ * - grok: MCP is `[mcp_servers.<name>]` inside `~/.grok/config.toml`
30
+ * (`~/.grok/docs/user-guide/07-mcp-servers.md`). The user-scope path said
31
+ * `.grok/mcp.json` and the parser read it as JSON, so nothing round-tripped.
32
+ * - kimi: the installer wrote `.kimi-code/mcp.json` while the path resolver
33
+ * answered `.kimi-code/settings.json`, so the staleness detector never saw
34
+ * what the writer had just written.
35
+ */
36
+ import * as os from 'os';
37
+ import * as path from 'path';
38
+ /** The user's real home — read at call time so a test's HOME override applies. */
39
+ function realHome() {
40
+ return process.env.HOME ?? os.homedir();
41
+ }
42
+ /**
43
+ * Single source of truth for every MCP-capable agent's config location and
44
+ * format. Keys MUST equal `capableAgents('mcp')` -- pinned by
45
+ * `mcp-registry.test.ts`.
46
+ */
47
+ export const MCP_TARGETS = {
48
+ claude: {
49
+ // Claude reads user-scope MCP from ~/.claude.json, not .claude/settings.json.
50
+ home: (h) => path.join(h, '.claude.json'),
51
+ project: (cwd) => path.join(cwd, '.mcp.json'),
52
+ format: 'claude-json',
53
+ cli: 'claude',
54
+ },
55
+ codex: {
56
+ home: (h) => path.join(h, '.codex', 'config.toml'),
57
+ project: (cwd) => path.join(cwd, '.codex', 'config.toml'),
58
+ format: 'toml',
59
+ cli: 'codex',
60
+ },
61
+ cursor: {
62
+ home: (h) => path.join(h, '.cursor', 'mcp.json'),
63
+ project: (cwd) => path.join(cwd, '.cursor', 'mcp.json'),
64
+ format: 'claude-json',
65
+ },
66
+ opencode: {
67
+ // OpenCode loads ~/.config/opencode/opencode.jsonc, not ~/.opencode/.
68
+ home: (h) => path.join(h, '.config', 'opencode', 'opencode.jsonc'),
69
+ project: (cwd) => path.join(cwd, 'opencode.jsonc'),
70
+ format: 'opencode-jsonc',
71
+ },
72
+ openclaw: {
73
+ home: (h) => path.join(h, '.openclaw', 'openclaw.json'),
74
+ project: (cwd) => path.join(cwd, '.openclaw', 'openclaw.json'),
75
+ format: 'openclaw-json',
76
+ },
77
+ antigravity: {
78
+ // NOT version-isolated, and `home` is deliberately ignored. agy reads MCP
79
+ // from `~/.gemini/config/mcp_config.json` in the user's REAL home: only
80
+ // `~/.gemini/antigravity-cli` is symlinked into a version home, while
81
+ // `~/.gemini/config` is a plain directory agy opens directly. Writing under
82
+ // a version home therefore lands somewhere agy never reads -- the same
83
+ // reason `antigravityWorkflowsDir` (lib/workflows.ts) ignores versionHome,
84
+ // where it is strace-verified against a running agy.
85
+ home: () => path.join(realHome(), '.gemini', 'config', 'mcp_config.json'),
86
+ project: (cwd) => path.join(cwd, '.gemini', 'config', 'mcp_config.json'),
87
+ format: 'antigravity-json',
88
+ homeGlobal: true,
89
+ },
90
+ grok: {
91
+ // Grok's MCP servers are [mcp_servers.<name>] tables in config.toml.
92
+ home: (h) => path.join(h, '.grok', 'config.toml'),
93
+ project: (cwd) => path.join(cwd, '.grok', 'config.toml'),
94
+ format: 'toml',
95
+ },
96
+ kimi: {
97
+ home: (h) => path.join(h, '.kimi-code', 'mcp.json'),
98
+ project: (cwd) => path.join(cwd, '.kimi-code', 'mcp.json'),
99
+ format: 'claude-json',
100
+ },
101
+ droid: {
102
+ home: (h) => path.join(h, '.factory', 'mcp.json'),
103
+ project: (cwd) => path.join(cwd, '.factory', 'mcp.json'),
104
+ format: 'claude-json',
105
+ },
106
+ hermes: {
107
+ home: (h) => path.join(h, '.hermes', 'config.yaml'),
108
+ project: (cwd) => path.join(cwd, '.hermes', 'config.yaml'),
109
+ format: 'yaml',
110
+ },
111
+ pi: {
112
+ // omp reads user-scope MCP from ~/.omp/agent/.mcp.json and project MCP from
113
+ // <root>/.mcp.json (both the Claude schema).
114
+ home: (h) => path.join(h, '.omp', 'agent', '.mcp.json'),
115
+ project: (cwd) => path.join(cwd, '.mcp.json'),
116
+ format: 'claude-json',
117
+ },
118
+ muse: {
119
+ home: (h) => path.join(h, '.config', 'muse', 'settings.json'),
120
+ project: (cwd) => path.join(cwd, '.muse', 'settings.json'),
121
+ format: 'muse-json',
122
+ },
123
+ warp: {
124
+ // Oz reads the Claude .mcp.json schema from ~/.warp/ and <root>/.warp/.
125
+ home: (h) => path.join(h, '.warp', '.mcp.json'),
126
+ project: (cwd) => path.join(cwd, '.warp', '.mcp.json'),
127
+ format: 'claude-json',
128
+ },
129
+ // ── paths known, write format not implemented ──────────────────────────────
130
+ // These four resolve paths (so `agents mcp list` and the staleness detector
131
+ // still work) but refuse the write instead of no-opping. Implementing one
132
+ // means verifying its schema against the installed harness, then setting
133
+ // `format` here -- nothing else changes.
134
+ copilot: {
135
+ home: (h) => path.join(h, '.copilot', 'mcp-config.json'),
136
+ project: (cwd) => path.join(cwd, '.copilot', 'mcp-config.json'),
137
+ format: null,
138
+ unsupportedReason: 'mcp-config.json schema not verified against an installed Copilot CLI',
139
+ },
140
+ amp: {
141
+ home: (h) => path.join(h, '.config', 'amp', 'settings.json'),
142
+ project: (cwd) => path.join(cwd, '.amp', 'settings.json'),
143
+ format: null,
144
+ unsupportedReason: 'Amp nests MCP under a settings key rather than a top-level map; schema not verified',
145
+ },
146
+ kiro: {
147
+ home: (h) => path.join(h, '.kiro', 'settings', 'mcp.json'),
148
+ project: (cwd) => path.join(cwd, '.kiro', 'settings', 'mcp.json'),
149
+ format: null,
150
+ unsupportedReason: 'mcp.json schema not verified against an installed Kiro',
151
+ },
152
+ goose: {
153
+ home: (h) => path.join(h, '.config', 'goose', 'config.yaml'),
154
+ project: (cwd) => path.join(cwd, '.goose', 'config.yaml'),
155
+ format: null,
156
+ unsupportedReason: 'Goose declares MCP servers as `extensions:` entries, not an mcp_servers map',
157
+ },
158
+ };
159
+ /** The registry entry for `agent`, or undefined when it stores no MCP config. */
160
+ export function mcpTarget(agent) {
161
+ return MCP_TARGETS[agent];
162
+ }
163
+ /**
164
+ * Why the write path refuses `agent`, or null when it can write.
165
+ *
166
+ * Two distinct refusals, both loud: the agent has no entry at all (not
167
+ * MCP-capable, or a hard-deprecated id), or it has one with `format: null`.
168
+ */
169
+ export function mcpWriteUnsupportedReason(agent) {
170
+ const target = MCP_TARGETS[agent];
171
+ if (!target)
172
+ return `${agent} has no MCP target registered`;
173
+ if (target.format === null) {
174
+ return `${agent}: ${target.unsupportedReason ?? 'MCP config format not implemented'}`;
175
+ }
176
+ return null;
177
+ }
package/dist/lib/mcp.d.ts CHANGED
@@ -133,6 +133,11 @@ export interface WritableMcpServer {
133
133
  /**
134
134
  * Serialize MCP servers into an agent-specific config file.
135
135
  *
136
+ * The format comes from `MCP_TARGETS` (lib/mcp-registry.ts), so a harness whose
137
+ * schema is not implemented **throws** here rather than falling through the
138
+ * switch and returning as if it had written something. `installMcpServers`
139
+ * catches that and reports it as an error, never as a silent success.
140
+ *
136
141
  * `mode: 'overwrite'` replaces the whole MCP section (used for tool-managed
137
142
  * version-home configs). `mode: 'merge'` updates/adds the provided server
138
143
  * entries while preserving existing entries (used for project-level configs