@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
package/dist/lib/state.js CHANGED
@@ -1,186 +1,366 @@
1
+ /**
2
+ * Filesystem layout and persistent state for agents-cli.
3
+ *
4
+ * Two roots:
5
+ * - ~/.agents-system/ — system repo (npm-shipped resources, versions, shims, backups, runs)
6
+ * - ~/.agents/ — user repo (user-authored commands, skills, hooks, rules, mcp,
7
+ * permissions, subagents, profiles, secrets, agents.yaml)
8
+ *
9
+ * Resolution precedence for resources: project > user > system.
10
+ * Every module that needs a path or reads/writes agents.yaml goes through here.
11
+ */
1
12
  import * as fs from 'fs';
2
13
  import * as path from 'path';
3
14
  import * as os from 'os';
4
15
  import * as yaml from 'yaml';
16
+ import { SEEDED_REGISTRIES } from './types.js';
5
17
  const HOME = os.homedir();
6
- const AGENTS_DIR = path.join(HOME, '.agents');
7
- const META_FILE = path.join(AGENTS_DIR, 'agents.yaml');
8
- const COMMANDS_DIR = path.join(AGENTS_DIR, 'commands');
9
- const HOOKS_DIR = path.join(AGENTS_DIR, 'hooks');
10
- const SKILLS_DIR = path.join(AGENTS_DIR, 'skills');
11
- const MEMORY_DIR = path.join(AGENTS_DIR, 'memory');
12
- const INSTRUCTIONS_FILE = path.join(AGENTS_DIR, 'instructions.md');
13
- const PROMPTCUTS_FILE = path.join(AGENTS_DIR, 'promptcuts.yaml');
14
- const MCP_CONFIG_FILE = path.join(AGENTS_DIR, 'mcp.json');
15
- const PACKAGES_DIR = path.join(AGENTS_DIR, 'packages');
16
- const ROUTINES_DIR = path.join(AGENTS_DIR, 'routines');
17
- const RUNS_DIR = path.join(AGENTS_DIR, 'runs');
18
- const VERSIONS_DIR = path.join(AGENTS_DIR, 'versions');
19
- const SHIMS_DIR = path.join(AGENTS_DIR, 'shims');
20
- const PERMISSIONS_DIR = path.join(AGENTS_DIR, 'permissions');
21
- const MCP_DIR = path.join(AGENTS_DIR, 'mcp');
22
- const BACKUPS_DIR = path.join(AGENTS_DIR, 'backups');
23
- const SUBAGENTS_DIR = path.join(AGENTS_DIR, 'subagents');
24
- const PLUGINS_DIR = path.join(AGENTS_DIR, 'plugins');
25
- const DRIVE_DIR = path.join(AGENTS_DIR, 'drive');
26
- const SECRETS_DIR = path.join(AGENTS_DIR, 'secrets');
18
+ // ─── Root directories ─────────────────────────────────────────────────────────
19
+ /** System repo — npm-shipped, read-only from user commands. */
20
+ const SYSTEM_AGENTS_DIR = path.join(HOME, '.agents-system');
21
+ /** User repo — user-authored resources and agents.yaml. Always-on. */
22
+ const USER_AGENTS_DIR = path.join(HOME, '.agents');
23
+ // ─── Meta file (agents.yaml lives in the user repo) ──────────────────────────
24
+ const META_FILE = path.join(USER_AGENTS_DIR, 'agents.yaml');
25
+ /** Legacy location — used only for one-shot migration in readMeta(). */
26
+ const SYSTEM_META_FILE = path.join(SYSTEM_AGENTS_DIR, 'agents.yaml');
27
+ // ─── System resource dirs ─────────────────────────────────────────────────────
28
+ const SYSTEM_COMMANDS_DIR = path.join(SYSTEM_AGENTS_DIR, 'commands');
29
+ const SYSTEM_HOOKS_DIR = path.join(SYSTEM_AGENTS_DIR, 'hooks');
30
+ const SYSTEM_SKILLS_DIR = path.join(SYSTEM_AGENTS_DIR, 'skills');
31
+ const SYSTEM_RULES_DIR = path.join(SYSTEM_AGENTS_DIR, 'rules');
32
+ const SYSTEM_LEGACY_MEMORY_DIR = path.join(SYSTEM_AGENTS_DIR, 'memory');
33
+ const SYSTEM_MCP_DIR = path.join(SYSTEM_AGENTS_DIR, 'mcp');
34
+ const SYSTEM_PERMISSIONS_DIR = path.join(SYSTEM_AGENTS_DIR, 'permissions');
35
+ const SYSTEM_SUBAGENTS_DIR = path.join(SYSTEM_AGENTS_DIR, 'subagents');
36
+ const SYSTEM_SECRETS_DIR = path.join(SYSTEM_AGENTS_DIR, 'secrets');
37
+ const SYSTEM_PROMPTCUTS_FILE = path.join(SYSTEM_AGENTS_DIR, 'hooks', 'promptcuts.yaml');
38
+ const SYSTEM_MCP_CONFIG_FILE = path.join(SYSTEM_AGENTS_DIR, 'mcp.json');
39
+ const SYSTEM_INSTRUCTIONS_FILE = path.join(SYSTEM_AGENTS_DIR, 'instructions.md');
40
+ // System-only paths (never duplicated in user repo)
41
+ const PACKAGES_DIR = path.join(SYSTEM_AGENTS_DIR, 'packages');
42
+ const ROUTINES_DIR = path.join(SYSTEM_AGENTS_DIR, 'routines');
43
+ const RUNS_DIR = path.join(SYSTEM_AGENTS_DIR, 'runs');
44
+ const VERSIONS_DIR = path.join(SYSTEM_AGENTS_DIR, 'versions');
45
+ const SHIMS_DIR = path.join(SYSTEM_AGENTS_DIR, 'shims');
46
+ const BACKUPS_DIR = path.join(SYSTEM_AGENTS_DIR, 'backups');
47
+ const PLUGINS_DIR = path.join(SYSTEM_AGENTS_DIR, 'plugins');
48
+ const DRIVE_DIR = path.join(SYSTEM_AGENTS_DIR, 'drive');
49
+ // ─── User resource dirs ───────────────────────────────────────────────────────
50
+ const USER_COMMANDS_DIR = path.join(USER_AGENTS_DIR, 'commands');
51
+ const USER_HOOKS_DIR = path.join(USER_AGENTS_DIR, 'hooks');
52
+ const USER_SKILLS_DIR = path.join(USER_AGENTS_DIR, 'skills');
53
+ const USER_RULES_DIR = path.join(USER_AGENTS_DIR, 'rules');
54
+ const USER_MCP_DIR = path.join(USER_AGENTS_DIR, 'mcp');
55
+ const USER_PERMISSIONS_DIR = path.join(USER_AGENTS_DIR, 'permissions');
56
+ const USER_SUBAGENTS_DIR = path.join(USER_AGENTS_DIR, 'subagents');
57
+ const USER_SECRETS_DIR = path.join(USER_AGENTS_DIR, 'secrets');
58
+ const USER_PROMPTCUTS_FILE = path.join(USER_AGENTS_DIR, 'hooks', 'promptcuts.yaml');
27
59
  const META_HEADER = `# agents-cli metadata
28
60
  # Auto-generated - do not edit manually
29
- # https://github.com/muqsitnawaz/agents-cli
61
+ # https://github.com/phnx-labs/agents-cli
30
62
 
31
63
  `;
64
+ // ─── Root getters ─────────────────────────────────────────────────────────────
65
+ /** Root of the system data directory (~/.agents-system/). Legacy alias — prefer getSystemAgentsDir(). */
32
66
  export function getAgentsDir() {
33
- return AGENTS_DIR;
67
+ return SYSTEM_AGENTS_DIR;
68
+ }
69
+ /** Root of the system data directory (~/.agents-system/). */
70
+ export function getSystemAgentsDir() {
71
+ return SYSTEM_AGENTS_DIR;
72
+ }
73
+ /** Root of the user repo (~/.agents/). Always present after ensureAgentsDir(). */
74
+ export function getUserAgentsDir() {
75
+ return USER_AGENTS_DIR;
76
+ }
77
+ /**
78
+ * Backward-compat shim. Returns null when ~/.agents/ is a symlink to the
79
+ * system dir; otherwise returns USER_AGENTS_DIR.
80
+ *
81
+ * @deprecated Use getUserAgentsDir() directly.
82
+ */
83
+ export function getOptionalUserAgentsDir() {
84
+ if (fs.existsSync(USER_AGENTS_DIR)) {
85
+ try {
86
+ const stat = fs.lstatSync(USER_AGENTS_DIR);
87
+ if (stat.isSymbolicLink()) {
88
+ try {
89
+ if (fs.realpathSync(USER_AGENTS_DIR) === fs.realpathSync(SYSTEM_AGENTS_DIR))
90
+ return null;
91
+ }
92
+ catch {
93
+ return null;
94
+ }
95
+ }
96
+ }
97
+ catch { /* dir may not exist yet */ }
98
+ }
99
+ return USER_AGENTS_DIR;
34
100
  }
101
+ /** Walk up from startPath to find a project-scoped .agents/ directory (skipping both roots). */
35
102
  export function getProjectAgentsDir(startPath = process.cwd()) {
36
103
  let dir = path.resolve(startPath);
37
104
  while (true) {
38
105
  const agentsPath = path.join(dir, '.agents');
39
106
  if (fs.existsSync(agentsPath) && fs.statSync(agentsPath).isDirectory()) {
40
- // Skip if this is ~/.agents (user scope, not project scope)
41
- if (agentsPath !== AGENTS_DIR) {
107
+ if (agentsPath !== SYSTEM_AGENTS_DIR && agentsPath !== USER_AGENTS_DIR) {
42
108
  return agentsPath;
43
109
  }
44
110
  }
45
111
  const isProjectBoundary = fs.existsSync(path.join(dir, '.git')) || fs.existsSync(path.join(dir, 'agents.yaml'));
46
112
  const parent = path.dirname(dir);
47
- if (parent === dir) {
113
+ if (parent === dir)
48
114
  break;
49
- }
50
- if (isProjectBoundary) {
51
- // Check this boundary dir but don't go further
115
+ if (isProjectBoundary)
52
116
  break;
53
- }
54
117
  dir = parent;
55
118
  }
56
119
  return null;
57
120
  }
121
+ /** Return all .agents/ directories in scope: project, user, then system. */
58
122
  export function getScopedAgentsDirs(startPath = process.cwd()) {
59
123
  const dirs = [];
60
124
  const projectDir = getProjectAgentsDir(startPath);
61
125
  if (projectDir) {
62
126
  dirs.push({ scope: 'project', path: projectDir });
63
127
  }
64
- dirs.push({ scope: 'user', path: AGENTS_DIR });
128
+ dirs.push({ scope: 'user', path: USER_AGENTS_DIR });
129
+ dirs.push({ scope: 'system', path: SYSTEM_AGENTS_DIR });
65
130
  return dirs;
66
131
  }
67
- export function getPackagesDir() {
68
- return PACKAGES_DIR;
69
- }
70
- export function getRoutinesDir() {
71
- return ROUTINES_DIR;
72
- }
73
- export function getRunsDir() {
74
- return RUNS_DIR;
75
- }
76
- export function getVersionsDir() {
77
- return VERSIONS_DIR;
78
- }
79
- export function getShimsDir() {
80
- return SHIMS_DIR;
81
- }
82
- export function getPermissionsDir() {
83
- return PERMISSIONS_DIR;
84
- }
85
- export function getMcpDir() {
86
- return MCP_DIR;
87
- }
88
- export function getBackupsDir() {
89
- return BACKUPS_DIR;
90
- }
91
- export function getSubagentsDir() {
92
- return SUBAGENTS_DIR;
93
- }
94
- export function getPluginsDir() {
95
- return PLUGINS_DIR;
96
- }
97
- export function getDriveDir() {
98
- return DRIVE_DIR;
99
- }
100
- export function getSecretsDir() {
101
- return SECRETS_DIR;
102
- }
103
- export function getCommandsDir() {
104
- return COMMANDS_DIR;
105
- }
106
- export function getHooksDir() {
107
- return HOOKS_DIR;
108
- }
109
- export function getSkillsDir() {
110
- return SKILLS_DIR;
132
+ // ─── System resource getters (legacy aliases for read/sync paths) ─────────────
133
+ /** Path to slash command markdown files — system repo. */
134
+ export function getCommandsDir() { return SYSTEM_COMMANDS_DIR; }
135
+ /** Path to hook script directories — system repo. */
136
+ export function getHooksDir() { return SYSTEM_HOOKS_DIR; }
137
+ /** Path to skill bundles — system repo. */
138
+ export function getSkillsDir() { return SYSTEM_SKILLS_DIR; }
139
+ /** Path to the canonical rules directory — system repo. */
140
+ export function getRulesDir() { return SYSTEM_RULES_DIR; }
141
+ /** Back-compat export; resolves to system rules dir. */
142
+ export function getMemoryDir() { return SYSTEM_RULES_DIR; }
143
+ let legacyMemoryWarned = false;
144
+ /**
145
+ * Read-side resolution for the canonical rules dir.
146
+ *
147
+ * Returns SYSTEM_RULES_DIR normally. Falls back to the legacy
148
+ * SYSTEM_LEGACY_MEMORY_DIR (~/.agents-system/memory/) only when the upstream
149
+ * still uses the old layout and the user hasn't pulled the rename yet —
150
+ * detected by absence of rules/AGENTS.md and presence of memory/AGENTS.md.
151
+ *
152
+ * Prints a single warning per process the first time the fallback fires.
153
+ * Per the read-only system-repo invariant, this never moves files; the rename
154
+ * is applied when the user pulls upstream.
155
+ */
156
+ export function getResolvedRulesDir() {
157
+ const rulesAgents = path.join(SYSTEM_RULES_DIR, 'AGENTS.md');
158
+ const legacyAgents = path.join(SYSTEM_LEGACY_MEMORY_DIR, 'AGENTS.md');
159
+ if (fs.existsSync(rulesAgents))
160
+ return SYSTEM_RULES_DIR;
161
+ if (fs.existsSync(legacyAgents)) {
162
+ if (!legacyMemoryWarned) {
163
+ legacyMemoryWarned = true;
164
+ process.stderr.write('agents-cli: Legacy memory/ directory detected — agents-cli still works, ' +
165
+ "but run 'agents repo pull system' to migrate to rules/.\n");
166
+ }
167
+ return SYSTEM_LEGACY_MEMORY_DIR;
168
+ }
169
+ return SYSTEM_RULES_DIR;
111
170
  }
112
- export function getMemoryDir() {
113
- return MEMORY_DIR;
171
+ /** Path to MCP server YAML configs — system repo. */
172
+ export function getMcpDir() { return SYSTEM_MCP_DIR; }
173
+ /** Path to permission group YAML files — system repo. */
174
+ export function getPermissionsDir() { return SYSTEM_PERMISSIONS_DIR; }
175
+ /** Path to subagent definition directories — system repo. */
176
+ export function getSubagentsDir() { return SYSTEM_SUBAGENTS_DIR; }
177
+ /** Path to encrypted secret bundles — system repo. */
178
+ export function getSecretsDir() { return SYSTEM_SECRETS_DIR; }
179
+ /** Path to ~/.agents-system/promptcuts.yaml. */
180
+ export function getPromptcutsPath() { return SYSTEM_PROMPTCUTS_FILE; }
181
+ /** Path to the legacy MCP config JSON. */
182
+ export function getMcpConfigPath() { return SYSTEM_MCP_CONFIG_FILE; }
183
+ /** Path to the global instructions file. */
184
+ export function getInstructionsPath() { return SYSTEM_INSTRUCTIONS_FILE; }
185
+ // ─── System-specific getters ───────────────────────────────────────────────────
186
+ export function getSystemCommandsDir() { return SYSTEM_COMMANDS_DIR; }
187
+ export function getSystemHooksDir() { return SYSTEM_HOOKS_DIR; }
188
+ export function getSystemSkillsDir() { return SYSTEM_SKILLS_DIR; }
189
+ export function getSystemRulesDir() { return SYSTEM_RULES_DIR; }
190
+ export function getSystemMcpDir() { return SYSTEM_MCP_DIR; }
191
+ export function getSystemPermissionsDir() { return SYSTEM_PERMISSIONS_DIR; }
192
+ export function getSystemSubagentsDir() { return SYSTEM_SUBAGENTS_DIR; }
193
+ export function getSystemSecretsDir() { return SYSTEM_SECRETS_DIR; }
194
+ export function getSystemPromptcutsPath() { return SYSTEM_PROMPTCUTS_FILE; }
195
+ // ─── User resource getters ────────────────────────────────────────────────────
196
+ export function getUserCommandsDir() { return USER_COMMANDS_DIR; }
197
+ export function getUserHooksDir() { return USER_HOOKS_DIR; }
198
+ export function getUserSkillsDir() { return USER_SKILLS_DIR; }
199
+ export function getUserRulesDir() { return USER_RULES_DIR; }
200
+ export function getUserMcpDir() { return USER_MCP_DIR; }
201
+ export function getUserPermissionsDir() { return USER_PERMISSIONS_DIR; }
202
+ export function getUserSubagentsDir() { return USER_SUBAGENTS_DIR; }
203
+ export function getUserSecretsDir() { return USER_SECRETS_DIR; }
204
+ export function getUserPromptcutsPath() { return USER_PROMPTCUTS_FILE; }
205
+ // ─── System-only path getters ─────────────────────────────────────────────────
206
+ /** Path to cloned packages (~/.agents-system/packages/). */
207
+ export function getPackagesDir() { return PACKAGES_DIR; }
208
+ /** Path to routine YAML definitions (~/.agents-system/routines/). */
209
+ export function getRoutinesDir() { return ROUTINES_DIR; }
210
+ /** Path to routine execution logs (~/.agents-system/runs/). */
211
+ export function getRunsDir() { return RUNS_DIR; }
212
+ /** Path to installed agent CLI binaries (~/.agents-system/versions/). */
213
+ export function getVersionsDir() { return VERSIONS_DIR; }
214
+ /** Path to version-switching shim scripts (~/.agents-system/shims/). */
215
+ export function getShimsDir() { return SHIMS_DIR; }
216
+ /** Path to config backups (~/.agents-system/backups/). */
217
+ export function getBackupsDir() { return BACKUPS_DIR; }
218
+ /** Path to plugin bundles (~/.agents-system/plugins/). */
219
+ export function getPluginsDir() { return PLUGINS_DIR; }
220
+ /** Path to synced remote session data (~/.agents-system/drive/). */
221
+ export function getDriveDir() { return DRIVE_DIR; }
222
+ /**
223
+ * Path to a single user-level extra DotAgent repo clone (~/.agents-<alias>/).
224
+ *
225
+ * Extra repos are user-defined config — they live as peer dirs to ~/.agents/,
226
+ * not under the system repo. `agents repo add` clones here by default.
227
+ */
228
+ export function getExtraRepoDir(alias) {
229
+ return path.join(HOME, `.agents-${alias}`);
114
230
  }
115
- export function getInstructionsPath() {
116
- return INSTRUCTIONS_FILE;
231
+ /** Resolve the on-disk path for an extra repo, whether managed or user-owned. */
232
+ export function resolveExtraRepoDir(alias, config) {
233
+ if (config?.path) {
234
+ return path.resolve(config.path);
235
+ }
236
+ return getExtraRepoDir(alias);
117
237
  }
118
238
  /**
119
- * Path to ~/.agents/promptcuts.yaml the canonical, version-independent
120
- * source for prompt shortcuts. The expand-promptcuts hook reads directly
121
- * from this file, so it survives agent-version upgrades without any sync.
239
+ * Return enabled extra repos that exist on disk, in insertion order.
122
240
  */
123
- export function getPromptcutsPath() {
124
- return PROMPTCUTS_FILE;
125
- }
126
- export function getMcpConfigPath() {
127
- return MCP_CONFIG_FILE;
241
+ export function getEnabledExtraRepos() {
242
+ const meta = readMeta();
243
+ const extras = meta.extraRepos || {};
244
+ const out = [];
245
+ for (const [alias, config] of Object.entries(extras)) {
246
+ if (!config.enabled)
247
+ continue;
248
+ const dir = resolveExtraRepoDir(alias, config);
249
+ if (!fs.existsSync(dir))
250
+ continue;
251
+ out.push({ alias, dir, url: config.url });
252
+ }
253
+ return out;
128
254
  }
255
+ // ─── Directory setup ───────────────────────────────────────────────────────────
256
+ /** Create both the system and user directory trees if any subdirectories are missing. */
129
257
  export function ensureAgentsDir() {
130
- if (!fs.existsSync(AGENTS_DIR)) {
131
- fs.mkdirSync(AGENTS_DIR, { recursive: true });
132
- }
133
- if (!fs.existsSync(PACKAGES_DIR)) {
134
- fs.mkdirSync(PACKAGES_DIR, { recursive: true });
135
- }
136
- if (!fs.existsSync(ROUTINES_DIR)) {
137
- fs.mkdirSync(ROUTINES_DIR, { recursive: true });
138
- }
139
- if (!fs.existsSync(RUNS_DIR)) {
140
- fs.mkdirSync(RUNS_DIR, { recursive: true });
141
- }
142
- if (!fs.existsSync(VERSIONS_DIR)) {
143
- fs.mkdirSync(VERSIONS_DIR, { recursive: true });
144
- }
145
- if (!fs.existsSync(SHIMS_DIR)) {
146
- fs.mkdirSync(SHIMS_DIR, { recursive: true });
147
- }
148
- if (!fs.existsSync(COMMANDS_DIR)) {
149
- fs.mkdirSync(COMMANDS_DIR, { recursive: true });
258
+ const opts = { recursive: true, mode: 0o700 };
259
+ // User repo — minimal scaffold (sub-dirs created on first write)
260
+ if (!fs.existsSync(USER_AGENTS_DIR)) {
261
+ fs.mkdirSync(USER_AGENTS_DIR, opts);
150
262
  }
151
- if (!fs.existsSync(HOOKS_DIR)) {
152
- fs.mkdirSync(HOOKS_DIR, { recursive: true });
263
+ try {
264
+ fs.chmodSync(USER_AGENTS_DIR, 0o700);
153
265
  }
154
- if (!fs.existsSync(SKILLS_DIR)) {
155
- fs.mkdirSync(SKILLS_DIR, { recursive: true });
266
+ catch { }
267
+ // System repo
268
+ if (!fs.existsSync(SYSTEM_AGENTS_DIR)) {
269
+ fs.mkdirSync(SYSTEM_AGENTS_DIR, opts);
156
270
  }
157
- if (!fs.existsSync(MEMORY_DIR)) {
158
- fs.mkdirSync(MEMORY_DIR, { recursive: true });
159
- }
160
- if (!fs.existsSync(PERMISSIONS_DIR)) {
161
- fs.mkdirSync(PERMISSIONS_DIR, { recursive: true });
162
- }
163
- if (!fs.existsSync(SUBAGENTS_DIR)) {
164
- fs.mkdirSync(SUBAGENTS_DIR, { recursive: true });
165
- }
166
- if (!fs.existsSync(DRIVE_DIR)) {
167
- fs.mkdirSync(DRIVE_DIR, { recursive: true });
271
+ if (!fs.existsSync(PACKAGES_DIR))
272
+ fs.mkdirSync(PACKAGES_DIR, opts);
273
+ if (!fs.existsSync(ROUTINES_DIR))
274
+ fs.mkdirSync(ROUTINES_DIR, opts);
275
+ if (!fs.existsSync(RUNS_DIR))
276
+ fs.mkdirSync(RUNS_DIR, opts);
277
+ if (!fs.existsSync(VERSIONS_DIR))
278
+ fs.mkdirSync(VERSIONS_DIR, opts);
279
+ if (!fs.existsSync(SHIMS_DIR))
280
+ fs.mkdirSync(SHIMS_DIR, opts);
281
+ if (!fs.existsSync(SYSTEM_COMMANDS_DIR))
282
+ fs.mkdirSync(SYSTEM_COMMANDS_DIR, opts);
283
+ if (!fs.existsSync(SYSTEM_HOOKS_DIR))
284
+ fs.mkdirSync(SYSTEM_HOOKS_DIR, opts);
285
+ if (!fs.existsSync(SYSTEM_SKILLS_DIR))
286
+ fs.mkdirSync(SYSTEM_SKILLS_DIR, opts);
287
+ if (!fs.existsSync(SYSTEM_RULES_DIR))
288
+ fs.mkdirSync(SYSTEM_RULES_DIR, opts);
289
+ if (!fs.existsSync(SYSTEM_PERMISSIONS_DIR))
290
+ fs.mkdirSync(SYSTEM_PERMISSIONS_DIR, opts);
291
+ if (!fs.existsSync(SYSTEM_SUBAGENTS_DIR))
292
+ fs.mkdirSync(SYSTEM_SUBAGENTS_DIR, opts);
293
+ if (!fs.existsSync(DRIVE_DIR))
294
+ fs.mkdirSync(DRIVE_DIR, opts);
295
+ try {
296
+ fs.chmodSync(SYSTEM_AGENTS_DIR, 0o700);
168
297
  }
298
+ catch { }
169
299
  }
300
+ // ─── Meta (agents.yaml) ────────────────────────────────────────────────────────
301
+ /** Return an empty Meta object used when no agents.yaml exists yet. */
170
302
  export function createDefaultMeta() {
171
303
  return {};
172
304
  }
173
305
  let metaCache = null;
306
+ function applyRegistrySeeds(meta) {
307
+ const seeded = new Set(meta.seededPresets || []);
308
+ let changed = false;
309
+ for (const [type, presets] of Object.entries(SEEDED_REGISTRIES)) {
310
+ for (const [name, config] of Object.entries(presets)) {
311
+ const key = `${type}.${name}`;
312
+ if (seeded.has(key))
313
+ continue;
314
+ if (!meta.registries)
315
+ meta.registries = { mcp: {}, skill: {} };
316
+ if (!meta.registries[type])
317
+ meta.registries[type] = {};
318
+ if (!meta.registries[type][name]) {
319
+ meta.registries[type][name] = { ...config };
320
+ }
321
+ seeded.add(key);
322
+ changed = true;
323
+ }
324
+ }
325
+ if (changed)
326
+ meta.seededPresets = [...seeded];
327
+ return changed;
328
+ }
329
+ /**
330
+ * One-shot migration: move agents.yaml from system repo to user repo.
331
+ * Idempotent — no-ops if user file already exists or system file absent.
332
+ */
333
+ function migrateSystemMetaToUser() {
334
+ if (fs.existsSync(META_FILE))
335
+ return;
336
+ if (!fs.existsSync(SYSTEM_META_FILE))
337
+ return;
338
+ try {
339
+ if (!fs.existsSync(USER_AGENTS_DIR)) {
340
+ fs.mkdirSync(USER_AGENTS_DIR, { recursive: true, mode: 0o700 });
341
+ }
342
+ fs.renameSync(SYSTEM_META_FILE, META_FILE);
343
+ console.log('Migrated agents.yaml to ~/.agents/');
344
+ }
345
+ catch {
346
+ // Best-effort; proceed with fresh state if it fails.
347
+ }
348
+ }
349
+ /** Read and cache ~/.agents/agents.yaml, migrating from legacy locations if needed. */
174
350
  export function readMeta() {
175
351
  ensureAgentsDir();
176
- // Migration: check for old meta.yaml
177
- const oldMetaFile = path.join(AGENTS_DIR, 'meta.yaml');
352
+ // NOTE: agents.yaml migration from ~/.agents-system/ to ~/.agents/ is handled
353
+ // exclusively by runMigration() in migrate.ts, called from postinstall and
354
+ // explicit command-time fallbacks (agents view/use/pull). Calling it here
355
+ // would mutate real-user filesystem state during test runs that import this
356
+ // module, causing cross-test pollution.
357
+ // Legacy migration: check for old meta.yaml in system dir
358
+ const oldMetaFile = path.join(SYSTEM_AGENTS_DIR, 'meta.yaml');
178
359
  if (fs.existsSync(oldMetaFile) && !fs.existsSync(META_FILE)) {
179
360
  try {
180
361
  const content = fs.readFileSync(oldMetaFile, 'utf-8');
181
362
  const parsed = yaml.parse(content);
182
363
  const meta = {};
183
- // Migrate versions.*.default -> agents.*
184
364
  if (parsed.versions) {
185
365
  meta.agents = {};
186
366
  for (const [agent, state] of Object.entries(parsed.versions)) {
@@ -190,20 +370,18 @@ export function readMeta() {
190
370
  }
191
371
  }
192
372
  }
193
- // Migrate registries
194
373
  if (parsed.registries) {
195
374
  meta.registries = parsed.registries;
196
375
  }
197
376
  writeMeta(meta);
198
- // Remove old meta.yaml to prevent stale reads by shims
199
377
  try {
200
378
  fs.unlinkSync(oldMetaFile);
201
379
  }
202
- catch { /* old meta file cleanup, non-critical */ }
380
+ catch { /* non-critical */ }
203
381
  return meta;
204
382
  }
205
383
  catch {
206
- /* meta.yaml migration failed, continue with fresh state */
384
+ /* meta.yaml migration failed */
207
385
  }
208
386
  }
209
387
  if (fs.existsSync(META_FILE)) {
@@ -211,9 +389,7 @@ export function readMeta() {
211
389
  try {
212
390
  mtime = fs.statSync(META_FILE).mtimeMs;
213
391
  }
214
- catch {
215
- /* file vanished between existsSync and statSync */
216
- }
392
+ catch { /* file vanished */ }
217
393
  if (metaCache && metaCache.mtime === mtime) {
218
394
  return metaCache.meta;
219
395
  }
@@ -221,28 +397,38 @@ export function readMeta() {
221
397
  const content = fs.readFileSync(META_FILE, 'utf-8');
222
398
  const parsed = yaml.parse(content);
223
399
  const meta = parsed || createDefaultMeta();
400
+ if (applyRegistrySeeds(meta)) {
401
+ writeMeta(meta);
402
+ return meta;
403
+ }
224
404
  metaCache = { mtime, meta };
225
405
  return meta;
226
406
  }
227
407
  catch {
228
- /* agents.yaml corrupt or unreadable, use defaults */
229
408
  return createDefaultMeta();
230
409
  }
231
410
  }
232
- return createDefaultMeta();
411
+ const meta = createDefaultMeta();
412
+ if (applyRegistrySeeds(meta)) {
413
+ writeMeta(meta);
414
+ }
415
+ return meta;
233
416
  }
417
+ /** Serialize and write agents.yaml to the user repo, invalidating the in-memory cache. */
234
418
  export function writeMeta(meta) {
235
419
  ensureAgentsDir();
236
420
  const content = META_HEADER + yaml.stringify(meta);
237
421
  fs.writeFileSync(META_FILE, content, 'utf-8');
238
422
  metaCache = null;
239
423
  }
424
+ /** Shallow-merge updates into agents.yaml and return the new state. */
240
425
  export function updateMeta(updates) {
241
426
  const meta = readMeta();
242
427
  const newMeta = { ...meta, ...updates };
243
428
  writeMeta(newMeta);
244
429
  return newMeta;
245
430
  }
431
+ /** Derive a filesystem-safe local clone path for a package source URL. */
246
432
  export function getPackageLocalPath(source) {
247
433
  const sanitized = source
248
434
  .replace(/^gh:/, '')
@@ -251,11 +437,6 @@ export function getPackageLocalPath(source) {
251
437
  .replace(/\//g, '-');
252
438
  return path.join(PACKAGES_DIR, sanitized);
253
439
  }
254
- /**
255
- * Record that resources were synced to a specific version.
256
- * Creates nested entries if they don't exist (handles existing installs gracefully).
257
- * Merges with existing resources (uses Set for deduplication).
258
- */
259
440
  export function recordVersionResources(agent, version, resourceType, resources) {
260
441
  if (resources.length === 0)
261
442
  return;
@@ -271,29 +452,20 @@ export function recordVersionResources(agent, version, resourceType, resources)
271
452
  meta.versions[agent][version][resourceType] = merged;
272
453
  writeMeta(meta);
273
454
  }
274
- /**
275
- * Get tracked resources for a specific version.
276
- */
277
455
  export function getVersionResources(agent, version) {
278
456
  const meta = readMeta();
279
457
  return meta.versions?.[agent]?.[version] || null;
280
458
  }
281
- /**
282
- * Clear resource tracking when a version is removed.
283
- */
284
459
  export function clearVersionResources(agent, version) {
285
460
  const meta = readMeta();
286
461
  if (meta.versions?.[agent]?.[version]) {
287
462
  delete meta.versions[agent][version];
288
- // Clean up empty agent entry
289
463
  if (Object.keys(meta.versions[agent]).length === 0) {
290
464
  delete meta.versions[agent];
291
465
  }
292
- // Clean up empty versions section
293
466
  if (Object.keys(meta.versions).length === 0) {
294
467
  delete meta.versions;
295
468
  }
296
469
  writeMeta(meta);
297
470
  }
298
471
  }
299
- //# sourceMappingURL=state.js.map
@@ -1,3 +1,11 @@
1
+ /**
2
+ * Subagent management -- discovery, installation, and format conversion.
3
+ *
4
+ * Subagents are named agent definitions in ~/.agents/subagents/, each a directory
5
+ * with an agent.md file (frontmatter + instructions). This module discovers them,
6
+ * transforms them into agent-native formats (Claude .mdc, OpenClaw YAML),
7
+ * and syncs them into version homes.
8
+ */
1
9
  import type { AgentId, DiscoveredSubagent, InstalledSubagent, SubagentFrontmatter } from './types.js';
2
10
  /**
3
11
  * Parse AGENT.md frontmatter to extract subagent metadata
@@ -65,6 +73,7 @@ export declare function removeSubagentFromAgent(subagentName: string, agent: Age
65
73
  * Check if subagent content matches between source and installed
66
74
  */
67
75
  export declare function subagentContentMatches(installedDir: string, sourceDir: string): boolean;
76
+ /** Agents that support the subagent system (Claude via flattened .md, OpenClaw via directory copy). */
68
77
  export declare const SUBAGENT_CAPABLE_AGENTS: AgentId[];
69
78
  /**
70
79
  * List subagents installed to a specific agent's home
@@ -72,4 +81,3 @@ export declare const SUBAGENT_CAPABLE_AGENTS: AgentId[];
72
81
  * OpenClaw: scans ~/.openclaw/{name}/AGENTS.md
73
82
  */
74
83
  export declare function listSubagentsForAgent(agentId: AgentId, home: string): InstalledSubagent[];
75
- //# sourceMappingURL=subagents.d.ts.map