@phnx-labs/agents-cli 0.1.0 → 1.14.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 (554) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/README.md +283 -372
  3. package/dist/commands/alias.d.ts +11 -0
  4. package/dist/commands/alias.js +117 -0
  5. package/dist/commands/beta.d.ts +2 -0
  6. package/dist/commands/beta.js +53 -0
  7. package/dist/commands/cloud.d.ts +8 -1
  8. package/dist/commands/cloud.js +108 -22
  9. package/dist/commands/commands.d.ts +9 -1
  10. package/dist/commands/commands.js +24 -172
  11. package/dist/commands/daemon.d.ts +8 -1
  12. package/dist/commands/daemon.js +13 -5
  13. package/dist/commands/doctor.d.ts +15 -0
  14. package/dist/commands/doctor.js +132 -0
  15. package/dist/commands/drive.d.ts +8 -1
  16. package/dist/commands/drive.js +20 -3
  17. package/dist/commands/exec.d.ts +8 -1
  18. package/dist/commands/exec.js +96 -27
  19. package/dist/commands/factory.d.ts +19 -0
  20. package/dist/commands/factory.js +71 -0
  21. package/dist/commands/fork.d.ts +8 -1
  22. package/dist/commands/fork.js +11 -4
  23. package/dist/commands/hooks.d.ts +9 -1
  24. package/dist/commands/hooks.js +30 -182
  25. package/dist/commands/init.d.ts +15 -1
  26. package/dist/commands/init.js +168 -74
  27. package/dist/commands/mcp.d.ts +9 -1
  28. package/dist/commands/mcp.js +11 -7
  29. package/dist/commands/models.d.ts +8 -1
  30. package/dist/commands/models.js +16 -4
  31. package/dist/commands/packages.d.ts +8 -1
  32. package/dist/commands/packages.js +13 -7
  33. package/dist/commands/permissions.d.ts +9 -1
  34. package/dist/commands/permissions.js +3 -3
  35. package/dist/commands/plugins.d.ts +8 -1
  36. package/dist/commands/plugins.js +13 -2
  37. package/dist/commands/profiles.d.ts +9 -1
  38. package/dist/commands/profiles.js +56 -7
  39. package/dist/commands/prune.d.ts +22 -0
  40. package/dist/commands/prune.js +191 -0
  41. package/dist/commands/pty.d.ts +1 -1
  42. package/dist/commands/pty.js +2 -1
  43. package/dist/commands/pull.d.ts +8 -1
  44. package/dist/commands/pull.js +58 -128
  45. package/dist/commands/refresh-memory.d.ts +7 -1
  46. package/dist/commands/refresh-memory.js +7 -1
  47. package/dist/commands/repo.d.ts +15 -0
  48. package/dist/commands/repo.js +570 -0
  49. package/dist/commands/resource-view.d.ts +10 -3
  50. package/dist/commands/resource-view.js +18 -5
  51. package/dist/commands/routines.d.ts +8 -1
  52. package/dist/commands/routines.js +17 -4
  53. package/dist/commands/rules.d.ts +9 -1
  54. package/dist/commands/rules.js +16 -11
  55. package/dist/commands/secrets.d.ts +8 -1
  56. package/dist/commands/secrets.js +235 -63
  57. package/dist/commands/sessions-picker.d.ts +2 -1
  58. package/dist/commands/sessions-picker.js +88 -11
  59. package/dist/commands/sessions-tail.d.ts +19 -0
  60. package/dist/commands/sessions-tail.js +235 -0
  61. package/dist/commands/sessions.d.ts +2 -1
  62. package/dist/commands/sessions.js +188 -7
  63. package/dist/commands/skills.d.ts +9 -1
  64. package/dist/commands/skills.js +28 -178
  65. package/dist/commands/status.d.ts +7 -1
  66. package/dist/commands/status.js +7 -1
  67. package/dist/commands/subagents.d.ts +8 -1
  68. package/dist/commands/subagents.js +11 -1
  69. package/dist/commands/sync.d.ts +8 -1
  70. package/dist/commands/sync.js +8 -1
  71. package/dist/commands/teams-picker.d.ts +4 -1
  72. package/dist/commands/teams-picker.js +55 -3
  73. package/dist/commands/teams.d.ts +15 -1
  74. package/dist/commands/teams.js +323 -69
  75. package/dist/commands/usage.d.ts +11 -0
  76. package/dist/commands/usage.js +60 -0
  77. package/dist/commands/utils.d.ts +6 -1
  78. package/dist/commands/utils.js +6 -1
  79. package/dist/commands/versions.d.ts +8 -1
  80. package/dist/commands/versions.js +4 -3
  81. package/dist/commands/view.d.ts +47 -2
  82. package/dist/commands/view.js +317 -24
  83. package/dist/index.d.ts +7 -2
  84. package/dist/index.js +172 -34
  85. package/dist/lib/acp/client.d.ts +31 -0
  86. package/dist/lib/acp/client.js +117 -0
  87. package/dist/lib/acp/harnesses.d.ts +26 -0
  88. package/dist/lib/acp/harnesses.js +65 -0
  89. package/dist/lib/acp/run.d.ts +18 -0
  90. package/dist/lib/acp/run.js +39 -0
  91. package/dist/lib/agents.d.ts +74 -2
  92. package/dist/lib/agents.js +197 -21
  93. package/dist/lib/artifact-actions.d.ts +8 -4
  94. package/dist/lib/artifact-actions.js +8 -6
  95. package/dist/lib/auto-pull-worker.d.ts +11 -0
  96. package/dist/lib/auto-pull-worker.js +121 -0
  97. package/dist/lib/auto-pull.d.ts +31 -0
  98. package/dist/lib/auto-pull.js +97 -0
  99. package/dist/lib/beta.d.ts +23 -0
  100. package/dist/lib/beta.js +90 -0
  101. package/dist/lib/capabilities.d.ts +29 -0
  102. package/dist/lib/capabilities.js +74 -0
  103. package/dist/lib/cloud/codex.d.ts +9 -3
  104. package/dist/lib/cloud/codex.js +53 -13
  105. package/dist/lib/cloud/factory.d.ts +8 -3
  106. package/dist/lib/cloud/factory.js +19 -3
  107. package/dist/lib/cloud/registry.d.ts +10 -1
  108. package/dist/lib/cloud/registry.js +14 -3
  109. package/dist/lib/cloud/rush.d.ts +63 -3
  110. package/dist/lib/cloud/rush.js +273 -20
  111. package/dist/lib/cloud/store.d.ts +13 -1
  112. package/dist/lib/cloud/store.js +23 -4
  113. package/dist/lib/cloud/stream.d.ts +6 -1
  114. package/dist/lib/cloud/stream.js +95 -39
  115. package/dist/lib/cloud/types.d.ts +153 -8
  116. package/dist/lib/cloud/types.js +34 -2
  117. package/dist/lib/command-skills.d.ts +20 -0
  118. package/dist/lib/command-skills.js +142 -0
  119. package/dist/lib/commands.d.ts +22 -2
  120. package/dist/lib/commands.js +51 -11
  121. package/dist/lib/convert.d.ts +10 -1
  122. package/dist/lib/convert.js +9 -1
  123. package/dist/lib/daemon.d.ts +21 -1
  124. package/dist/lib/daemon.js +97 -4
  125. package/dist/lib/drive-sync.d.ts +18 -1
  126. package/dist/lib/drive-sync.js +57 -15
  127. package/dist/lib/exec.d.ts +23 -6
  128. package/dist/lib/exec.js +53 -17
  129. package/dist/lib/fs-walk.d.ts +2 -0
  130. package/dist/lib/fs-walk.js +40 -0
  131. package/dist/lib/fuzzy.d.ts +53 -0
  132. package/dist/lib/fuzzy.js +72 -0
  133. package/dist/lib/gemini-settings.d.ts +4 -0
  134. package/dist/lib/gemini-settings.js +33 -0
  135. package/dist/lib/git.d.ts +12 -2
  136. package/dist/lib/git.js +17 -6
  137. package/dist/lib/help.d.ts +20 -1
  138. package/dist/lib/help.js +45 -6
  139. package/dist/lib/hooks/match.d.ts +32 -0
  140. package/dist/lib/hooks/match.js +120 -0
  141. package/dist/lib/hooks.d.ts +17 -4
  142. package/dist/lib/hooks.js +119 -101
  143. package/dist/lib/manifest.d.ts +6 -1
  144. package/dist/lib/manifest.js +15 -4
  145. package/dist/lib/markdown.d.ts +0 -1
  146. package/dist/lib/markdown.js +6 -1
  147. package/dist/lib/mcp.d.ts +0 -1
  148. package/dist/lib/mcp.js +29 -33
  149. package/dist/lib/memory-compile.d.ts +13 -3
  150. package/dist/lib/memory-compile.js +31 -9
  151. package/dist/lib/memory.d.ts +14 -7
  152. package/dist/lib/memory.js +67 -38
  153. package/dist/lib/migrate.d.ts +8 -0
  154. package/dist/lib/migrate.js +85 -0
  155. package/dist/lib/models.d.ts +10 -4
  156. package/dist/lib/models.js +36 -15
  157. package/dist/lib/onepassword.d.ts +63 -0
  158. package/dist/lib/onepassword.js +186 -0
  159. package/dist/lib/paths.d.ts +8 -0
  160. package/dist/lib/paths.js +20 -0
  161. package/dist/lib/permissions.d.ts +24 -2
  162. package/dist/lib/permissions.js +117 -48
  163. package/dist/lib/picker.d.ts +10 -1
  164. package/dist/lib/picker.js +15 -1
  165. package/dist/lib/plugins.d.ts +7 -1
  166. package/dist/lib/plugins.js +10 -1
  167. package/dist/lib/profiles-presets.d.ts +10 -1
  168. package/dist/lib/profiles-presets.js +9 -1
  169. package/dist/lib/profiles.d.ts +35 -1
  170. package/dist/lib/profiles.js +36 -15
  171. package/dist/lib/pty-client.d.ts +1 -1
  172. package/dist/lib/pty-client.js +0 -1
  173. package/dist/lib/pty-server.d.ts +16 -2
  174. package/dist/lib/pty-server.js +92 -3
  175. package/dist/lib/registry.d.ts +23 -3
  176. package/dist/lib/registry.js +153 -8
  177. package/dist/lib/resources.d.ts +28 -1
  178. package/dist/lib/resources.js +79 -1
  179. package/dist/lib/rotate.d.ts +40 -13
  180. package/dist/lib/rotate.js +238 -40
  181. package/dist/lib/routines.d.ts +29 -1
  182. package/dist/lib/routines.js +32 -5
  183. package/dist/lib/runner.d.ts +14 -1
  184. package/dist/lib/runner.js +22 -3
  185. package/dist/lib/sandbox.d.ts +16 -1
  186. package/dist/lib/sandbox.js +39 -16
  187. package/dist/lib/scheduler.d.ts +8 -1
  188. package/dist/lib/scheduler.js +8 -1
  189. package/dist/lib/secrets/AgentsKeychain.app/Contents/CodeResources +0 -0
  190. package/dist/lib/secrets/AgentsKeychain.app/Contents/Info.plist +22 -0
  191. package/dist/lib/secrets/AgentsKeychain.app/Contents/MacOS/AgentsKeychain +0 -0
  192. package/dist/lib/secrets/AgentsKeychain.app/Contents/_CodeSignature/CodeResources +123 -0
  193. package/dist/lib/secrets/AgentsKeychain.app/Contents/embedded.provisionprofile +0 -0
  194. package/dist/lib/{secrets-bundles.d.ts → secrets/bundles.d.ts} +12 -2
  195. package/dist/lib/{secrets-bundles.js → secrets/bundles.js} +38 -17
  196. package/dist/lib/secrets/index.d.ts +55 -0
  197. package/dist/lib/secrets/index.js +211 -0
  198. package/dist/lib/secrets/profiles.d.ts +10 -0
  199. package/dist/lib/secrets/profiles.js +13 -0
  200. package/dist/lib/session/active.d.ts +43 -0
  201. package/dist/lib/session/active.js +392 -0
  202. package/dist/lib/session/artifacts.d.ts +12 -1
  203. package/dist/lib/session/artifacts.js +25 -5
  204. package/dist/lib/session/cloud.d.ts +30 -0
  205. package/dist/lib/session/cloud.js +121 -0
  206. package/dist/lib/session/db.d.ts +23 -2
  207. package/dist/lib/session/db.js +76 -12
  208. package/dist/lib/session/discover.d.ts +19 -4
  209. package/dist/lib/session/discover.js +344 -48
  210. package/dist/lib/session/parse.d.ts +28 -1
  211. package/dist/lib/session/parse.js +267 -9
  212. package/dist/lib/session/prompt.d.ts +9 -1
  213. package/dist/lib/session/prompt.js +17 -3
  214. package/dist/lib/session/render.d.ts +13 -1
  215. package/dist/lib/session/render.js +20 -1
  216. package/dist/lib/session/team-filter.d.ts +9 -1
  217. package/dist/lib/session/team-filter.js +11 -2
  218. package/dist/lib/session/types.d.ts +16 -2
  219. package/dist/lib/session/types.js +10 -2
  220. package/dist/lib/shims.d.ts +64 -5
  221. package/dist/lib/shims.js +309 -47
  222. package/dist/lib/skills.d.ts +27 -2
  223. package/dist/lib/skills.js +127 -65
  224. package/dist/lib/sqlite.d.ts +43 -0
  225. package/dist/lib/sqlite.js +94 -0
  226. package/dist/lib/state.d.ts +112 -27
  227. package/dist/lib/state.js +320 -148
  228. package/dist/lib/subagents.d.ts +9 -1
  229. package/dist/lib/subagents.js +70 -63
  230. package/dist/lib/sync-manifest.d.ts +81 -0
  231. package/dist/lib/sync-manifest.js +450 -0
  232. package/dist/lib/teams/agents.d.ts +103 -5
  233. package/dist/lib/teams/agents.js +414 -91
  234. package/dist/lib/teams/api.d.ts +26 -3
  235. package/dist/lib/teams/api.js +63 -3
  236. package/dist/lib/teams/debug.d.ts +6 -1
  237. package/dist/lib/teams/debug.js +6 -1
  238. package/dist/lib/teams/file_ops.d.ts +7 -1
  239. package/dist/lib/teams/file_ops.js +7 -1
  240. package/dist/lib/teams/index.d.ts +15 -0
  241. package/dist/lib/teams/index.js +14 -0
  242. package/dist/lib/teams/parsers.d.ts +4 -1
  243. package/dist/lib/teams/parsers.js +11 -1
  244. package/dist/lib/teams/persistence.d.ts +15 -1
  245. package/dist/lib/teams/persistence.js +102 -20
  246. package/dist/lib/teams/registry.d.ts +12 -1
  247. package/dist/lib/teams/registry.js +116 -33
  248. package/dist/lib/teams/summarizer.d.ts +15 -1
  249. package/dist/lib/teams/summarizer.js +14 -1
  250. package/dist/lib/teams/supervisor.d.ts +48 -0
  251. package/dist/lib/teams/supervisor.js +73 -0
  252. package/dist/lib/template.d.ts +8 -6
  253. package/dist/lib/template.js +8 -6
  254. package/dist/lib/types.d.ts +147 -8
  255. package/dist/lib/types.js +26 -3
  256. package/dist/lib/usage.d.ts +32 -1
  257. package/dist/lib/usage.js +70 -6
  258. package/dist/lib/version-duplicates.d.ts +21 -0
  259. package/dist/lib/version-duplicates.js +90 -0
  260. package/dist/lib/versions.d.ts +33 -4
  261. package/dist/lib/versions.js +376 -108
  262. package/package.json +32 -17
  263. package/scripts/postinstall.js +126 -30
  264. package/dist/commands/__tests__/sessions.test.d.ts +0 -2
  265. package/dist/commands/__tests__/sessions.test.d.ts.map +0 -1
  266. package/dist/commands/__tests__/sessions.test.js +0 -636
  267. package/dist/commands/__tests__/sessions.test.js.map +0 -1
  268. package/dist/commands/cloud.d.ts.map +0 -1
  269. package/dist/commands/cloud.js.map +0 -1
  270. package/dist/commands/commands.d.ts.map +0 -1
  271. package/dist/commands/commands.js.map +0 -1
  272. package/dist/commands/daemon.d.ts.map +0 -1
  273. package/dist/commands/daemon.js.map +0 -1
  274. package/dist/commands/drive.d.ts.map +0 -1
  275. package/dist/commands/drive.js.map +0 -1
  276. package/dist/commands/exec.d.ts.map +0 -1
  277. package/dist/commands/exec.js.map +0 -1
  278. package/dist/commands/fork.d.ts.map +0 -1
  279. package/dist/commands/fork.js.map +0 -1
  280. package/dist/commands/hooks.d.ts.map +0 -1
  281. package/dist/commands/hooks.js.map +0 -1
  282. package/dist/commands/init.d.ts.map +0 -1
  283. package/dist/commands/init.js.map +0 -1
  284. package/dist/commands/mcp.d.ts.map +0 -1
  285. package/dist/commands/mcp.js.map +0 -1
  286. package/dist/commands/models.d.ts.map +0 -1
  287. package/dist/commands/models.js.map +0 -1
  288. package/dist/commands/packages.d.ts.map +0 -1
  289. package/dist/commands/packages.js.map +0 -1
  290. package/dist/commands/permissions.d.ts.map +0 -1
  291. package/dist/commands/permissions.js.map +0 -1
  292. package/dist/commands/plugins.d.ts.map +0 -1
  293. package/dist/commands/plugins.js.map +0 -1
  294. package/dist/commands/profiles.d.ts.map +0 -1
  295. package/dist/commands/profiles.js.map +0 -1
  296. package/dist/commands/pty.d.ts.map +0 -1
  297. package/dist/commands/pty.js.map +0 -1
  298. package/dist/commands/pull.d.ts.map +0 -1
  299. package/dist/commands/pull.js.map +0 -1
  300. package/dist/commands/push.d.ts +0 -3
  301. package/dist/commands/push.d.ts.map +0 -1
  302. package/dist/commands/push.js +0 -180
  303. package/dist/commands/push.js.map +0 -1
  304. package/dist/commands/refresh-memory.d.ts.map +0 -1
  305. package/dist/commands/refresh-memory.js.map +0 -1
  306. package/dist/commands/resource-view.d.ts.map +0 -1
  307. package/dist/commands/resource-view.js.map +0 -1
  308. package/dist/commands/routines.d.ts.map +0 -1
  309. package/dist/commands/routines.js.map +0 -1
  310. package/dist/commands/rules.d.ts.map +0 -1
  311. package/dist/commands/rules.js.map +0 -1
  312. package/dist/commands/secrets.d.ts.map +0 -1
  313. package/dist/commands/secrets.js.map +0 -1
  314. package/dist/commands/sessions-picker.d.ts.map +0 -1
  315. package/dist/commands/sessions-picker.js.map +0 -1
  316. package/dist/commands/sessions.d.ts.map +0 -1
  317. package/dist/commands/sessions.js.map +0 -1
  318. package/dist/commands/skills.d.ts.map +0 -1
  319. package/dist/commands/skills.js.map +0 -1
  320. package/dist/commands/status.d.ts.map +0 -1
  321. package/dist/commands/status.js.map +0 -1
  322. package/dist/commands/subagents.d.ts.map +0 -1
  323. package/dist/commands/subagents.js.map +0 -1
  324. package/dist/commands/sync.d.ts.map +0 -1
  325. package/dist/commands/sync.js.map +0 -1
  326. package/dist/commands/teams-picker.d.ts.map +0 -1
  327. package/dist/commands/teams-picker.js.map +0 -1
  328. package/dist/commands/teams.d.ts.map +0 -1
  329. package/dist/commands/teams.js.map +0 -1
  330. package/dist/commands/utils.d.ts.map +0 -1
  331. package/dist/commands/utils.js.map +0 -1
  332. package/dist/commands/versions.d.ts.map +0 -1
  333. package/dist/commands/versions.js.map +0 -1
  334. package/dist/commands/view.d.ts.map +0 -1
  335. package/dist/commands/view.js.map +0 -1
  336. package/dist/index.d.ts.map +0 -1
  337. package/dist/index.js.map +0 -1
  338. package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
  339. package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
  340. package/dist/lib/__tests__/bugfixes.test.js +0 -192
  341. package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
  342. package/dist/lib/__tests__/exec.test.d.ts +0 -2
  343. package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
  344. package/dist/lib/__tests__/exec.test.js +0 -446
  345. package/dist/lib/__tests__/exec.test.js.map +0 -1
  346. package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
  347. package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
  348. package/dist/lib/__tests__/git-sync.test.js +0 -138
  349. package/dist/lib/__tests__/git-sync.test.js.map +0 -1
  350. package/dist/lib/__tests__/hooks.test.d.ts +0 -2
  351. package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
  352. package/dist/lib/__tests__/hooks.test.js +0 -203
  353. package/dist/lib/__tests__/hooks.test.js.map +0 -1
  354. package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
  355. package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
  356. package/dist/lib/__tests__/memory-compile.test.js +0 -95
  357. package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
  358. package/dist/lib/__tests__/models.test.d.ts +0 -2
  359. package/dist/lib/__tests__/models.test.d.ts.map +0 -1
  360. package/dist/lib/__tests__/models.test.js +0 -239
  361. package/dist/lib/__tests__/models.test.js.map +0 -1
  362. package/dist/lib/__tests__/rotate.test.d.ts +0 -2
  363. package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
  364. package/dist/lib/__tests__/rotate.test.js +0 -80
  365. package/dist/lib/__tests__/rotate.test.js.map +0 -1
  366. package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
  367. package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
  368. package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
  369. package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
  370. package/dist/lib/__tests__/secrets.test.d.ts +0 -2
  371. package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
  372. package/dist/lib/__tests__/secrets.test.js +0 -90
  373. package/dist/lib/__tests__/secrets.test.js.map +0 -1
  374. package/dist/lib/__tests__/shims.test.d.ts +0 -2
  375. package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
  376. package/dist/lib/__tests__/shims.test.js +0 -39
  377. package/dist/lib/__tests__/shims.test.js.map +0 -1
  378. package/dist/lib/__tests__/usage.test.d.ts +0 -2
  379. package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
  380. package/dist/lib/__tests__/usage.test.js +0 -220
  381. package/dist/lib/__tests__/usage.test.js.map +0 -1
  382. package/dist/lib/__tests__/versions.test.d.ts +0 -2
  383. package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
  384. package/dist/lib/__tests__/versions.test.js +0 -63
  385. package/dist/lib/__tests__/versions.test.js.map +0 -1
  386. package/dist/lib/agents.d.ts.map +0 -1
  387. package/dist/lib/agents.js.map +0 -1
  388. package/dist/lib/artifact-actions.d.ts.map +0 -1
  389. package/dist/lib/artifact-actions.js.map +0 -1
  390. package/dist/lib/cloud/codex.d.ts.map +0 -1
  391. package/dist/lib/cloud/codex.js.map +0 -1
  392. package/dist/lib/cloud/factory.d.ts.map +0 -1
  393. package/dist/lib/cloud/factory.js.map +0 -1
  394. package/dist/lib/cloud/registry.d.ts.map +0 -1
  395. package/dist/lib/cloud/registry.js.map +0 -1
  396. package/dist/lib/cloud/rush.d.ts.map +0 -1
  397. package/dist/lib/cloud/rush.js.map +0 -1
  398. package/dist/lib/cloud/store.d.ts.map +0 -1
  399. package/dist/lib/cloud/store.js.map +0 -1
  400. package/dist/lib/cloud/stream.d.ts.map +0 -1
  401. package/dist/lib/cloud/stream.js.map +0 -1
  402. package/dist/lib/cloud/types.d.ts.map +0 -1
  403. package/dist/lib/cloud/types.js.map +0 -1
  404. package/dist/lib/commands.d.ts.map +0 -1
  405. package/dist/lib/commands.js.map +0 -1
  406. package/dist/lib/convert.d.ts.map +0 -1
  407. package/dist/lib/convert.js.map +0 -1
  408. package/dist/lib/daemon.d.ts.map +0 -1
  409. package/dist/lib/daemon.js.map +0 -1
  410. package/dist/lib/drive-sync.d.ts.map +0 -1
  411. package/dist/lib/drive-sync.js.map +0 -1
  412. package/dist/lib/exec.d.ts.map +0 -1
  413. package/dist/lib/exec.js.map +0 -1
  414. package/dist/lib/factory.d.ts +0 -57
  415. package/dist/lib/factory.d.ts.map +0 -1
  416. package/dist/lib/factory.js +0 -110
  417. package/dist/lib/factory.js.map +0 -1
  418. package/dist/lib/git.d.ts.map +0 -1
  419. package/dist/lib/git.js.map +0 -1
  420. package/dist/lib/help.d.ts.map +0 -1
  421. package/dist/lib/help.js.map +0 -1
  422. package/dist/lib/hooks.d.ts.map +0 -1
  423. package/dist/lib/hooks.js.map +0 -1
  424. package/dist/lib/manifest.d.ts.map +0 -1
  425. package/dist/lib/manifest.js.map +0 -1
  426. package/dist/lib/markdown.d.ts.map +0 -1
  427. package/dist/lib/markdown.js.map +0 -1
  428. package/dist/lib/mcp.d.ts.map +0 -1
  429. package/dist/lib/mcp.js.map +0 -1
  430. package/dist/lib/memory-compile.d.ts.map +0 -1
  431. package/dist/lib/memory-compile.js.map +0 -1
  432. package/dist/lib/memory.d.ts.map +0 -1
  433. package/dist/lib/memory.js.map +0 -1
  434. package/dist/lib/models.d.ts.map +0 -1
  435. package/dist/lib/models.js.map +0 -1
  436. package/dist/lib/permissions.d.ts.map +0 -1
  437. package/dist/lib/permissions.js.map +0 -1
  438. package/dist/lib/picker.d.ts.map +0 -1
  439. package/dist/lib/picker.js.map +0 -1
  440. package/dist/lib/plugins.d.ts.map +0 -1
  441. package/dist/lib/plugins.js.map +0 -1
  442. package/dist/lib/profiles-keychain.d.ts +0 -3
  443. package/dist/lib/profiles-keychain.d.ts.map +0 -1
  444. package/dist/lib/profiles-keychain.js +0 -10
  445. package/dist/lib/profiles-keychain.js.map +0 -1
  446. package/dist/lib/profiles-presets.d.ts.map +0 -1
  447. package/dist/lib/profiles-presets.js.map +0 -1
  448. package/dist/lib/profiles.d.ts.map +0 -1
  449. package/dist/lib/profiles.js.map +0 -1
  450. package/dist/lib/pty-client.d.ts.map +0 -1
  451. package/dist/lib/pty-client.js.map +0 -1
  452. package/dist/lib/pty-server.d.ts.map +0 -1
  453. package/dist/lib/pty-server.js.map +0 -1
  454. package/dist/lib/registry.d.ts.map +0 -1
  455. package/dist/lib/registry.js.map +0 -1
  456. package/dist/lib/resources.d.ts.map +0 -1
  457. package/dist/lib/resources.js.map +0 -1
  458. package/dist/lib/rotate.d.ts.map +0 -1
  459. package/dist/lib/rotate.js.map +0 -1
  460. package/dist/lib/routines.d.ts.map +0 -1
  461. package/dist/lib/routines.js.map +0 -1
  462. package/dist/lib/runner.d.ts.map +0 -1
  463. package/dist/lib/runner.js.map +0 -1
  464. package/dist/lib/sandbox.d.ts.map +0 -1
  465. package/dist/lib/sandbox.js.map +0 -1
  466. package/dist/lib/scheduler.d.ts.map +0 -1
  467. package/dist/lib/scheduler.js.map +0 -1
  468. package/dist/lib/secrets-bundles.d.ts.map +0 -1
  469. package/dist/lib/secrets-bundles.js.map +0 -1
  470. package/dist/lib/secrets.d.ts +0 -27
  471. package/dist/lib/secrets.d.ts.map +0 -1
  472. package/dist/lib/secrets.js +0 -127
  473. package/dist/lib/secrets.js.map +0 -1
  474. package/dist/lib/session/__tests__/db.test.d.ts +0 -2
  475. package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
  476. package/dist/lib/session/__tests__/db.test.js +0 -54
  477. package/dist/lib/session/__tests__/db.test.js.map +0 -1
  478. package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
  479. package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
  480. package/dist/lib/session/__tests__/discover.test.js +0 -63
  481. package/dist/lib/session/__tests__/discover.test.js.map +0 -1
  482. package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
  483. package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
  484. package/dist/lib/session/__tests__/prompt.test.js +0 -44
  485. package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
  486. package/dist/lib/session/__tests__/render.test.d.ts +0 -2
  487. package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
  488. package/dist/lib/session/__tests__/render.test.js +0 -602
  489. package/dist/lib/session/__tests__/render.test.js.map +0 -1
  490. package/dist/lib/session/artifacts.d.ts.map +0 -1
  491. package/dist/lib/session/artifacts.js.map +0 -1
  492. package/dist/lib/session/db.d.ts.map +0 -1
  493. package/dist/lib/session/db.js.map +0 -1
  494. package/dist/lib/session/discover.d.ts.map +0 -1
  495. package/dist/lib/session/discover.js.map +0 -1
  496. package/dist/lib/session/parse.d.ts.map +0 -1
  497. package/dist/lib/session/parse.js.map +0 -1
  498. package/dist/lib/session/prompt.d.ts.map +0 -1
  499. package/dist/lib/session/prompt.js.map +0 -1
  500. package/dist/lib/session/prompt.test.d.ts +0 -2
  501. package/dist/lib/session/prompt.test.d.ts.map +0 -1
  502. package/dist/lib/session/prompt.test.js +0 -57
  503. package/dist/lib/session/prompt.test.js.map +0 -1
  504. package/dist/lib/session/render.d.ts.map +0 -1
  505. package/dist/lib/session/render.js.map +0 -1
  506. package/dist/lib/session/team-filter.d.ts.map +0 -1
  507. package/dist/lib/session/team-filter.js.map +0 -1
  508. package/dist/lib/session/team-filter.test.d.ts +0 -2
  509. package/dist/lib/session/team-filter.test.d.ts.map +0 -1
  510. package/dist/lib/session/team-filter.test.js +0 -157
  511. package/dist/lib/session/team-filter.test.js.map +0 -1
  512. package/dist/lib/session/types.d.ts.map +0 -1
  513. package/dist/lib/session/types.js.map +0 -1
  514. package/dist/lib/shims.d.ts.map +0 -1
  515. package/dist/lib/shims.js.map +0 -1
  516. package/dist/lib/skills.d.ts.map +0 -1
  517. package/dist/lib/skills.js.map +0 -1
  518. package/dist/lib/state.d.ts.map +0 -1
  519. package/dist/lib/state.js.map +0 -1
  520. package/dist/lib/subagents.d.ts.map +0 -1
  521. package/dist/lib/subagents.js.map +0 -1
  522. package/dist/lib/teams/agents.d.ts.map +0 -1
  523. package/dist/lib/teams/agents.js.map +0 -1
  524. package/dist/lib/teams/api.d.ts.map +0 -1
  525. package/dist/lib/teams/api.js.map +0 -1
  526. package/dist/lib/teams/cloud.d.ts +0 -11
  527. package/dist/lib/teams/cloud.d.ts.map +0 -1
  528. package/dist/lib/teams/cloud.js +0 -169
  529. package/dist/lib/teams/cloud.js.map +0 -1
  530. package/dist/lib/teams/debug.d.ts.map +0 -1
  531. package/dist/lib/teams/debug.js.map +0 -1
  532. package/dist/lib/teams/file_ops.d.ts.map +0 -1
  533. package/dist/lib/teams/file_ops.js.map +0 -1
  534. package/dist/lib/teams/parsers.d.ts.map +0 -1
  535. package/dist/lib/teams/parsers.js.map +0 -1
  536. package/dist/lib/teams/persistence.d.ts.map +0 -1
  537. package/dist/lib/teams/persistence.js.map +0 -1
  538. package/dist/lib/teams/ralph.d.ts +0 -8
  539. package/dist/lib/teams/ralph.d.ts.map +0 -1
  540. package/dist/lib/teams/ralph.js +0 -59
  541. package/dist/lib/teams/ralph.js.map +0 -1
  542. package/dist/lib/teams/registry.d.ts.map +0 -1
  543. package/dist/lib/teams/registry.js.map +0 -1
  544. package/dist/lib/teams/summarizer.d.ts.map +0 -1
  545. package/dist/lib/teams/summarizer.js.map +0 -1
  546. package/dist/lib/template.d.ts.map +0 -1
  547. package/dist/lib/template.js.map +0 -1
  548. package/dist/lib/types.d.ts.map +0 -1
  549. package/dist/lib/types.js.map +0 -1
  550. package/dist/lib/usage.d.ts.map +0 -1
  551. package/dist/lib/usage.js.map +0 -1
  552. package/dist/lib/versions.d.ts.map +0 -1
  553. package/dist/lib/versions.js.map +0 -1
  554. package/scripts/rebuild-sqlite.sh +0 -46
@@ -1,22 +1,26 @@
1
1
  /**
2
- * Artifact action types and validation
3
- * Ported from agents/halo/cli/pkg/config
2
+ * Artifact action types and validation.
3
+ * Ported from agents/halo/cli/pkg/config.
4
+ *
5
+ * Artifact actions map tool invocations to artifact labels, allowing agents to
6
+ * trigger tools automatically when specific artifacts are produced.
4
7
  */
8
+ /** A single action that binds a tool invocation to matching artifact labels. */
5
9
  export interface ArtifactAction {
6
10
  tool: string;
7
11
  label: string;
8
12
  matches?: string[];
9
13
  input?: Record<string, string>;
10
14
  }
15
+ /** Agent-level configuration block containing artifact action definitions. */
11
16
  export interface AgentArtifactConfig {
12
17
  artifact_actions?: ArtifactAction[];
13
18
  }
14
19
  /**
15
- * Validate artifact actions configuration
20
+ * Validate artifact actions configuration.
16
21
  * @param actions - List of artifact actions to validate
17
22
  * @param httpToolNames - Set of tool names defined in http_tools section
18
23
  * @param applicationTools - Set of valid application tool names
19
24
  * @returns Array of validation errors (empty if valid)
20
25
  */
21
26
  export declare function validateArtifactActions(actions: ArtifactAction[], httpToolNames: Set<string>, applicationTools: Set<string>): string[];
22
- //# sourceMappingURL=artifact-actions.d.ts.map
@@ -1,9 +1,12 @@
1
1
  /**
2
- * Artifact action types and validation
3
- * Ported from agents/halo/cli/pkg/config
2
+ * Artifact action types and validation.
3
+ * Ported from agents/halo/cli/pkg/config.
4
+ *
5
+ * Artifact actions map tool invocations to artifact labels, allowing agents to
6
+ * trigger tools automatically when specific artifacts are produced.
4
7
  */
5
8
  /**
6
- * Validate artifact actions configuration
9
+ * Validate artifact actions configuration.
7
10
  * @param actions - List of artifact actions to validate
8
11
  * @param httpToolNames - Set of tool names defined in http_tools section
9
12
  * @param applicationTools - Set of valid application tool names
@@ -38,8 +41,8 @@ export function validateArtifactActions(actions, httpToolNames, applicationTools
38
41
  return errors;
39
42
  }
40
43
  /**
41
- * Validate template string uses only allowed patterns
42
- * Only allows {{artifact.X}} and {{preflight.X}} patterns
44
+ * Validate template string uses only allowed patterns.
45
+ * Only allows {{artifact.X}} and {{preflight.X}} patterns.
43
46
  */
44
47
  function validateTemplate(tmpl) {
45
48
  const re = /\{\{(\w+)\.(\w+)\}\}/g;
@@ -52,4 +55,3 @@ function validateTemplate(tmpl) {
52
55
  }
53
56
  return null;
54
57
  }
55
- //# sourceMappingURL=artifact-actions.js.map
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Detached worker entry point for background sync. See auto-pull.ts for the public API.
3
+ *
4
+ * For the system repo: fast-forward pull (safe — repo is read-only locally).
5
+ * For the user repo + enabled extras: `git fetch` + write a status marker the foreground
6
+ * CLI surfaces on its next invocation.
7
+ *
8
+ * Per-repo lock files at ~/.agents-system/.fetch/<alias>.lock prevent concurrent fetches.
9
+ * Lock mtime under 5 min => skip (another invocation already in flight).
10
+ */
11
+ export {};
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Detached worker entry point for background sync. See auto-pull.ts for the public API.
3
+ *
4
+ * For the system repo: fast-forward pull (safe — repo is read-only locally).
5
+ * For the user repo + enabled extras: `git fetch` + write a status marker the foreground
6
+ * CLI surfaces on its next invocation.
7
+ *
8
+ * Per-repo lock files at ~/.agents-system/.fetch/<alias>.lock prevent concurrent fetches.
9
+ * Lock mtime under 5 min => skip (another invocation already in flight).
10
+ */
11
+ import * as fs from 'fs';
12
+ import * as path from 'path';
13
+ import { simpleGit } from 'simple-git';
14
+ import { tryAutoPull, isGitRepo } from './git.js';
15
+ import { getSystemAgentsDir, getUserAgentsDir, getEnabledExtraRepos, } from './state.js';
16
+ import { lockFilePath, statusFilePath } from './auto-pull.js';
17
+ const LOCK_TTL_MS = 5 * 60 * 1000;
18
+ function ensureFetchDir() {
19
+ const dir = path.join(getSystemAgentsDir(), '.fetch');
20
+ if (!fs.existsSync(dir)) {
21
+ try {
22
+ fs.mkdirSync(dir, { recursive: true });
23
+ }
24
+ catch { /* ignore */ }
25
+ }
26
+ return dir;
27
+ }
28
+ function tryAcquireLock(alias) {
29
+ ensureFetchDir();
30
+ const lock = lockFilePath(alias);
31
+ try {
32
+ const stat = fs.statSync(lock);
33
+ if (Date.now() - stat.mtimeMs < LOCK_TTL_MS)
34
+ return false;
35
+ }
36
+ catch {
37
+ /* no lock yet */
38
+ }
39
+ try {
40
+ fs.writeFileSync(lock, String(process.pid));
41
+ return true;
42
+ }
43
+ catch {
44
+ return false;
45
+ }
46
+ }
47
+ function releaseLock(alias) {
48
+ try {
49
+ fs.unlinkSync(lockFilePath(alias));
50
+ }
51
+ catch { /* ignore */ }
52
+ }
53
+ function writeStatusMarker(marker) {
54
+ ensureFetchDir();
55
+ try {
56
+ fs.writeFileSync(statusFilePath(marker.alias), JSON.stringify(marker));
57
+ }
58
+ catch {
59
+ /* best-effort */
60
+ }
61
+ }
62
+ async function notifyRepo(target) {
63
+ if (!isGitRepo(target.dir))
64
+ return;
65
+ const git = simpleGit(target.dir);
66
+ const remotes = await git.getRemotes(true);
67
+ const origin = remotes.find((r) => r.name === 'origin');
68
+ if (!origin?.refs?.fetch)
69
+ return;
70
+ await git.fetch('origin');
71
+ const status = await git.status();
72
+ if (!status.tracking)
73
+ return;
74
+ writeStatusMarker({
75
+ alias: target.alias,
76
+ dir: target.dir,
77
+ ahead: status.ahead ?? 0,
78
+ behind: status.behind ?? 0,
79
+ branch: status.tracking,
80
+ fetchedAt: Date.now(),
81
+ });
82
+ }
83
+ async function processTarget(target) {
84
+ if (!tryAcquireLock(target.alias))
85
+ return;
86
+ try {
87
+ if (target.mode === 'pull') {
88
+ await tryAutoPull(target.dir);
89
+ }
90
+ else {
91
+ await notifyRepo(target);
92
+ }
93
+ }
94
+ catch {
95
+ /* network / git failures are non-fatal */
96
+ }
97
+ finally {
98
+ releaseLock(target.alias);
99
+ }
100
+ }
101
+ async function main() {
102
+ const targets = [];
103
+ const systemDir = getSystemAgentsDir();
104
+ if (isGitRepo(systemDir)) {
105
+ targets.push({ alias: 'system', dir: systemDir, mode: 'pull' });
106
+ }
107
+ const userDir = getUserAgentsDir();
108
+ if (isGitRepo(userDir)) {
109
+ targets.push({ alias: 'user', dir: userDir, mode: 'notify' });
110
+ }
111
+ for (const extra of getEnabledExtraRepos()) {
112
+ if (isGitRepo(extra.dir)) {
113
+ targets.push({ alias: extra.alias, dir: extra.dir, mode: 'notify' });
114
+ }
115
+ }
116
+ await Promise.all(targets.map(processTarget));
117
+ }
118
+ main().catch(() => {
119
+ /* swallow — detached worker must never crash the parent's terminal */
120
+ process.exit(0);
121
+ });
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Background sync for tracked git repos:
3
+ * - System repo (~/.agents-system/) is read-only locally — fast-forward auto-pull is safe.
4
+ * - User repo (~/.agents/) and enabled extras may have local commits, so we only
5
+ * `git fetch` and write a status marker. Next CLI invocation surfaces a one-line
6
+ * notice if upstream is ahead. Pulling is left to the user via `agents repo pull`.
7
+ *
8
+ * Public API:
9
+ * spawnDetachedSync() — fire-and-forget; never blocks the foreground command.
10
+ * printPendingUpdateNotices() — synchronous; reads markers and prints + consumes them.
11
+ */
12
+ /** Per-repo lock file path. mtime acts as a recency check. */
13
+ export declare function lockFilePath(alias: string): string;
14
+ /** Per-repo status marker path (for user/extras only). */
15
+ export declare function statusFilePath(alias: string): string;
16
+ export interface FetchStatusMarker {
17
+ alias: string;
18
+ dir: string;
19
+ ahead: number;
20
+ behind: number;
21
+ branch: string;
22
+ fetchedAt: number;
23
+ }
24
+ /** Spawn the detached worker. No-op when AGENTS_NO_AUTOPULL=1 is set. */
25
+ export declare function spawnDetachedSync(): void;
26
+ /**
27
+ * Read any pending status markers and print one-line notices for repos that
28
+ * are behind upstream. Markers are deleted after printing so notices don't
29
+ * repeat on every invocation. Synchronous, cheap (small JSON files).
30
+ */
31
+ export declare function printPendingUpdateNotices(): void;
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Background sync for tracked git repos:
3
+ * - System repo (~/.agents-system/) is read-only locally — fast-forward auto-pull is safe.
4
+ * - User repo (~/.agents/) and enabled extras may have local commits, so we only
5
+ * `git fetch` and write a status marker. Next CLI invocation surfaces a one-line
6
+ * notice if upstream is ahead. Pulling is left to the user via `agents repo pull`.
7
+ *
8
+ * Public API:
9
+ * spawnDetachedSync() — fire-and-forget; never blocks the foreground command.
10
+ * printPendingUpdateNotices() — synchronous; reads markers and prints + consumes them.
11
+ */
12
+ import * as fs from 'fs';
13
+ import * as path from 'path';
14
+ import { spawn } from 'child_process';
15
+ import { fileURLToPath } from 'url';
16
+ import { getSystemAgentsDir } from './state.js';
17
+ /** Where lock files and per-repo status markers live. */
18
+ function fetchStateDir() {
19
+ return path.join(getSystemAgentsDir(), '.fetch');
20
+ }
21
+ /** Per-repo lock file path. mtime acts as a recency check. */
22
+ export function lockFilePath(alias) {
23
+ return path.join(fetchStateDir(), `${alias}.lock`);
24
+ }
25
+ /** Per-repo status marker path (for user/extras only). */
26
+ export function statusFilePath(alias) {
27
+ return path.join(fetchStateDir(), `${alias}.status.json`);
28
+ }
29
+ /** Spawn the detached worker. No-op when AGENTS_NO_AUTOPULL=1 is set. */
30
+ export function spawnDetachedSync() {
31
+ if (process.env.AGENTS_NO_AUTOPULL === '1')
32
+ return;
33
+ // Resolve the worker path relative to the compiled location of this module.
34
+ // After `tsc`, both files land in the same directory under dist/lib/.
35
+ const here = path.dirname(fileURLToPath(import.meta.url));
36
+ const workerPath = path.join(here, 'auto-pull-worker.js');
37
+ if (!fs.existsSync(workerPath))
38
+ return;
39
+ try {
40
+ const child = spawn(process.execPath, [workerPath], {
41
+ detached: true,
42
+ stdio: 'ignore',
43
+ env: process.env,
44
+ });
45
+ child.unref();
46
+ }
47
+ catch {
48
+ /* best-effort: never break the foreground command */
49
+ }
50
+ }
51
+ /**
52
+ * Read any pending status markers and print one-line notices for repos that
53
+ * are behind upstream. Markers are deleted after printing so notices don't
54
+ * repeat on every invocation. Synchronous, cheap (small JSON files).
55
+ */
56
+ export function printPendingUpdateNotices() {
57
+ const dir = fetchStateDir();
58
+ if (!fs.existsSync(dir))
59
+ return;
60
+ let entries = [];
61
+ try {
62
+ entries = fs.readdirSync(dir);
63
+ }
64
+ catch {
65
+ return;
66
+ }
67
+ for (const name of entries) {
68
+ if (!name.endsWith('.status.json'))
69
+ continue;
70
+ const file = path.join(dir, name);
71
+ let marker = null;
72
+ try {
73
+ marker = JSON.parse(fs.readFileSync(file, 'utf-8'));
74
+ }
75
+ catch {
76
+ try {
77
+ fs.unlinkSync(file);
78
+ }
79
+ catch { /* ignore */ }
80
+ continue;
81
+ }
82
+ if (!marker || marker.behind <= 0) {
83
+ try {
84
+ fs.unlinkSync(file);
85
+ }
86
+ catch { /* ignore */ }
87
+ continue;
88
+ }
89
+ const repoLabel = marker.alias === 'user' ? '~/.agents/' : marker.alias;
90
+ process.stderr.write(`agents-cli: ${repoLabel} is ${marker.behind} commit${marker.behind === 1 ? '' : 's'} ` +
91
+ `behind ${marker.branch} — run 'agents repo pull ${marker.alias}' to update.\n`);
92
+ try {
93
+ fs.unlinkSync(file);
94
+ }
95
+ catch { /* ignore */ }
96
+ }
97
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * User-opt-in beta feature flags.
3
+ *
4
+ * Preview features live in the git-trackable user repo (~/.agents/agents.yaml)
5
+ * when present, and otherwise fall back to the local system state file
6
+ * (~/.agents-system/agents.yaml). This keeps opt-ins portable for users with a
7
+ * personal agents repo without mixing them into unrelated version capability
8
+ * checks.
9
+ */
10
+ import type { BetaFeatureName } from './types.js';
11
+ export declare const ALL_BETA_FEATURES: readonly ["drive", "factory"];
12
+ export declare function getEnabledBetaFeatures(): BetaFeatureName[];
13
+ export declare function isBetaEnabled(feature: BetaFeatureName): boolean;
14
+ export declare function getBetaConfigLocation(): {
15
+ scope: 'user' | 'system';
16
+ path: string;
17
+ };
18
+ export declare function setBetaEnabled(features: readonly BetaFeatureName[], enabled: boolean): {
19
+ scope: 'user' | 'system';
20
+ path: string;
21
+ enabledFeatures: BetaFeatureName[];
22
+ };
23
+ export declare function betaEnableHint(feature: BetaFeatureName): string;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * User-opt-in beta feature flags.
3
+ *
4
+ * Preview features live in the git-trackable user repo (~/.agents/agents.yaml)
5
+ * when present, and otherwise fall back to the local system state file
6
+ * (~/.agents-system/agents.yaml). This keeps opt-ins portable for users with a
7
+ * personal agents repo without mixing them into unrelated version capability
8
+ * checks.
9
+ */
10
+ import * as path from 'path';
11
+ import { getAgentsDir, getOptionalUserAgentsDir, readMeta, writeMeta } from './state.js';
12
+ import { readManifest, writeManifest } from './manifest.js';
13
+ export const ALL_BETA_FEATURES = ['drive', 'factory'];
14
+ function isBetaFeatureName(value) {
15
+ return typeof value === 'string' && ALL_BETA_FEATURES.includes(value);
16
+ }
17
+ function normalizeEnabledFeatures(input) {
18
+ if (!Array.isArray(input))
19
+ return [];
20
+ const seen = new Set();
21
+ for (const value of input) {
22
+ if (!isBetaFeatureName(value))
23
+ continue;
24
+ seen.add(value);
25
+ }
26
+ return [...seen];
27
+ }
28
+ function readUserManifestBeta() {
29
+ const userAgentsDir = getOptionalUserAgentsDir();
30
+ if (!userAgentsDir)
31
+ return null;
32
+ const manifest = readManifest(userAgentsDir);
33
+ if (!manifest?.beta)
34
+ return null;
35
+ return normalizeEnabledFeatures(manifest.beta.enabled);
36
+ }
37
+ function readSystemMetaBeta() {
38
+ return normalizeEnabledFeatures(readMeta().beta?.enabled);
39
+ }
40
+ export function getEnabledBetaFeatures() {
41
+ return readUserManifestBeta() ?? readSystemMetaBeta();
42
+ }
43
+ export function isBetaEnabled(feature) {
44
+ return getEnabledBetaFeatures().includes(feature);
45
+ }
46
+ export function getBetaConfigLocation() {
47
+ const userAgentsDir = getOptionalUserAgentsDir();
48
+ if (userAgentsDir) {
49
+ return { scope: 'user', path: path.join(userAgentsDir, 'agents.yaml') };
50
+ }
51
+ return { scope: 'system', path: path.join(getAgentsDir(), 'agents.yaml') };
52
+ }
53
+ export function setBetaEnabled(features, enabled) {
54
+ const location = getBetaConfigLocation();
55
+ const next = new Set(getEnabledBetaFeatures());
56
+ for (const feature of features) {
57
+ if (enabled)
58
+ next.add(feature);
59
+ else
60
+ next.delete(feature);
61
+ }
62
+ const enabledFeatures = [...next];
63
+ if (location.scope === 'user') {
64
+ const userAgentsDir = getOptionalUserAgentsDir();
65
+ if (!userAgentsDir) {
66
+ throw new Error('Expected ~/.agents/ to exist while writing beta config.');
67
+ }
68
+ const manifest = readManifest(userAgentsDir) ?? {};
69
+ if (enabledFeatures.length > 0) {
70
+ manifest.beta = { enabled: enabledFeatures };
71
+ }
72
+ else {
73
+ delete manifest.beta;
74
+ }
75
+ writeManifest(userAgentsDir, manifest);
76
+ return { ...location, enabledFeatures };
77
+ }
78
+ const meta = readMeta();
79
+ if (enabledFeatures.length > 0) {
80
+ meta.beta = { enabled: enabledFeatures };
81
+ }
82
+ else {
83
+ delete meta.beta;
84
+ }
85
+ writeMeta(meta);
86
+ return { ...location, enabledFeatures };
87
+ }
88
+ export function betaEnableHint(feature) {
89
+ return `Enable it with: agents beta enable ${feature}`;
90
+ }
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Capability gate for agent features.
3
+ *
4
+ * Every install path that touches an agent-version (hooks, plugins, MCP,
5
+ * skills, commands) calls `supports(agent, cap, version?)` before writing to
6
+ * the version's config dir. When the capability is unsupported or the version
7
+ * is below `since`, the install path skips the write and surfaces a clear
8
+ * reason instead of silently corrupting an older binary's settings file.
9
+ */
10
+ import type { AgentId, CapabilityName, CapabilityResult } from './types.js';
11
+ /**
12
+ * True when the agent supports the capability on at least some version.
13
+ * Useful for filtering UI lists; does not check installed version.
14
+ */
15
+ export declare function isCapable(agent: AgentId, cap: CapabilityName): boolean;
16
+ /**
17
+ * Check whether the given agent (optionally pinned to a specific installed
18
+ * version) supports `cap`. Pass `version` whenever you know it -- omitting it
19
+ * only checks the agent-level flag, which is fine for "is this agent ever
20
+ * capable" filters but NOT for install-time gating.
21
+ */
22
+ export declare function supports(agent: AgentId, cap: CapabilityName, version?: string): CapabilityResult;
23
+ /**
24
+ * Human-readable explanation for skipping an install. Stable shape so callers
25
+ * can either log it or push it onto an `errors[]` collector.
26
+ */
27
+ export declare function explainSkip(agent: AgentId, cap: CapabilityName, result: CapabilityResult, version?: string): string;
28
+ /** All agents whose `capabilities[cap]` is anything other than `false`. */
29
+ export declare function capableAgents(cap: CapabilityName): AgentId[];
@@ -0,0 +1,74 @@
1
+ /**
2
+ * Capability gate for agent features.
3
+ *
4
+ * Every install path that touches an agent-version (hooks, plugins, MCP,
5
+ * skills, commands) calls `supports(agent, cap, version?)` before writing to
6
+ * the version's config dir. When the capability is unsupported or the version
7
+ * is below `since`, the install path skips the write and surfaces a clear
8
+ * reason instead of silently corrupting an older binary's settings file.
9
+ */
10
+ import { AGENTS } from './agents.js';
11
+ /**
12
+ * Compare semver-like versions ("0.116.0" vs "0.115.9"). Local copy to avoid
13
+ * importing versions.ts (which imports agents.ts, which imports this file).
14
+ */
15
+ function compareVersions(a, b) {
16
+ const aParts = a.split('.').map((n) => parseInt(n, 10) || 0);
17
+ const bParts = b.split('.').map((n) => parseInt(n, 10) || 0);
18
+ for (let i = 0; i < Math.max(aParts.length, bParts.length); i++) {
19
+ const aVal = aParts[i] || 0;
20
+ const bVal = bParts[i] || 0;
21
+ if (aVal !== bVal)
22
+ return aVal - bVal;
23
+ }
24
+ return 0;
25
+ }
26
+ function getCapability(agent, cap) {
27
+ return AGENTS[agent].capabilities[cap];
28
+ }
29
+ /**
30
+ * True when the agent supports the capability on at least some version.
31
+ * Useful for filtering UI lists; does not check installed version.
32
+ */
33
+ export function isCapable(agent, cap) {
34
+ const c = getCapability(agent, cap);
35
+ return c !== false;
36
+ }
37
+ /**
38
+ * Check whether the given agent (optionally pinned to a specific installed
39
+ * version) supports `cap`. Pass `version` whenever you know it -- omitting it
40
+ * only checks the agent-level flag, which is fine for "is this agent ever
41
+ * capable" filters but NOT for install-time gating.
42
+ */
43
+ export function supports(agent, cap, version) {
44
+ const c = getCapability(agent, cap);
45
+ if (c === false)
46
+ return { ok: false, reason: 'unsupported' };
47
+ if (c === true)
48
+ return { ok: true };
49
+ if (!version)
50
+ return { ok: true };
51
+ if (c.since && compareVersions(version, c.since) < 0) {
52
+ return { ok: false, reason: 'too_old', need: `>= ${c.since}` };
53
+ }
54
+ if (c.until && compareVersions(version, c.until) >= 0) {
55
+ return { ok: false, reason: 'too_new', need: `< ${c.until}` };
56
+ }
57
+ return { ok: true };
58
+ }
59
+ /**
60
+ * Human-readable explanation for skipping an install. Stable shape so callers
61
+ * can either log it or push it onto an `errors[]` collector.
62
+ */
63
+ export function explainSkip(agent, cap, result, version) {
64
+ if (result.ok)
65
+ return '';
66
+ const tag = version ? `${agent}@${version}` : agent;
67
+ if (result.reason === 'unsupported')
68
+ return `${tag}: ${cap} not supported`;
69
+ return `${tag}: ${cap} requires ${result.need}`;
70
+ }
71
+ /** All agents whose `capabilities[cap]` is anything other than `false`. */
72
+ export function capableAgents(cap) {
73
+ return Object.keys(AGENTS).filter((id) => isCapable(id, cap));
74
+ }
@@ -1,4 +1,11 @@
1
- import type { CloudProvider, CloudTask, CloudTaskStatus, CloudEvent, DispatchOptions } from './types.js';
1
+ /**
2
+ * Codex Cloud provider -- wraps the `codex` CLI for cloud dispatch.
3
+ *
4
+ * Delegates to `codex cloud exec/status/list` subcommands, parsing their
5
+ * JSON or text output into the unified CloudTask format. Streaming is
6
+ * emulated via polling since Codex Cloud lacks an SSE endpoint.
7
+ */
8
+ import type { CloudProvider, CloudTask, CloudTaskStatus, CloudEvent, DispatchOptions, ProviderCapabilities } from './types.js';
2
9
  export declare class CodexCloudProvider implements CloudProvider {
3
10
  id: "codex";
4
11
  name: string;
@@ -6,7 +13,7 @@ export declare class CodexCloudProvider implements CloudProvider {
6
13
  constructor(config?: {
7
14
  env?: string;
8
15
  });
9
- supports(_options: DispatchOptions): boolean;
16
+ capabilities(): ProviderCapabilities;
10
17
  dispatch(options: DispatchOptions): Promise<CloudTask>;
11
18
  status(taskId: string): Promise<CloudTask>;
12
19
  list(filter?: {
@@ -16,4 +23,3 @@ export declare class CodexCloudProvider implements CloudProvider {
16
23
  cancel(_taskId: string): Promise<void>;
17
24
  message(_taskId: string, _content: string): Promise<void>;
18
25
  }
19
- //# sourceMappingURL=codex.d.ts.map