@phnx-labs/agents-cli 1.12.0 → 1.14.2

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 (496) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/README.md +308 -297
  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 +10 -0
  8. package/dist/commands/cloud.js +408 -0
  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 +207 -20
  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 +45 -6
  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 +11 -0
  38. package/dist/commands/profiles.js +291 -0
  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 +93 -129
  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 +10 -0
  56. package/dist/commands/secrets.js +518 -0
  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 +288 -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 +353 -20
  83. package/dist/index.d.ts +7 -2
  84. package/dist/index.js +205 -38
  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 +207 -23
  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 +25 -0
  104. package/dist/lib/cloud/codex.js +250 -0
  105. package/dist/lib/cloud/factory.d.ts +31 -0
  106. package/dist/lib/cloud/factory.js +53 -0
  107. package/dist/lib/cloud/registry.d.ts +15 -0
  108. package/dist/lib/cloud/registry.js +67 -0
  109. package/dist/lib/cloud/rush.d.ts +75 -0
  110. package/dist/lib/cloud/rush.js +438 -0
  111. package/dist/lib/cloud/store.d.ts +22 -0
  112. package/dist/lib/cloud/store.js +115 -0
  113. package/dist/lib/cloud/stream.d.ts +23 -0
  114. package/dist/lib/cloud/stream.js +194 -0
  115. package/dist/lib/cloud/types.d.ts +205 -0
  116. package/dist/lib/cloud/types.js +34 -0
  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 +25 -5
  128. package/dist/lib/exec.js +72 -27
  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 +191 -21
  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 +25 -11
  156. package/dist/lib/models.js +405 -16
  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 +24 -0
  168. package/dist/lib/profiles-presets.js +103 -0
  169. package/dist/lib/profiles.d.ts +69 -0
  170. package/dist/lib/profiles.js +144 -0
  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 +89 -0
  180. package/dist/lib/rotate.js +327 -0
  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 +39 -0
  195. package/dist/lib/secrets/bundles.js +189 -0
  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 +16 -0
  203. package/dist/lib/session/artifacts.js +95 -0
  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 +24 -2
  219. package/dist/lib/session/types.js +10 -2
  220. package/dist/lib/shims.d.ts +93 -5
  221. package/dist/lib/shims.js +380 -67
  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 +114 -22
  227. package/dist/lib/state.js +323 -138
  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 +48 -1
  257. package/dist/lib/usage.js +97 -16
  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 +39 -4
  261. package/dist/lib/versions.js +401 -111
  262. package/package.json +33 -18
  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/commands.d.ts.map +0 -1
  269. package/dist/commands/commands.js.map +0 -1
  270. package/dist/commands/daemon.d.ts.map +0 -1
  271. package/dist/commands/daemon.js.map +0 -1
  272. package/dist/commands/drive.d.ts.map +0 -1
  273. package/dist/commands/drive.js.map +0 -1
  274. package/dist/commands/exec.d.ts.map +0 -1
  275. package/dist/commands/exec.js.map +0 -1
  276. package/dist/commands/fork.d.ts.map +0 -1
  277. package/dist/commands/fork.js.map +0 -1
  278. package/dist/commands/hooks.d.ts.map +0 -1
  279. package/dist/commands/hooks.js.map +0 -1
  280. package/dist/commands/init.d.ts.map +0 -1
  281. package/dist/commands/init.js.map +0 -1
  282. package/dist/commands/mcp.d.ts.map +0 -1
  283. package/dist/commands/mcp.js.map +0 -1
  284. package/dist/commands/models.d.ts.map +0 -1
  285. package/dist/commands/models.js.map +0 -1
  286. package/dist/commands/packages.d.ts.map +0 -1
  287. package/dist/commands/packages.js.map +0 -1
  288. package/dist/commands/permissions.d.ts.map +0 -1
  289. package/dist/commands/permissions.js.map +0 -1
  290. package/dist/commands/plugins.d.ts.map +0 -1
  291. package/dist/commands/plugins.js.map +0 -1
  292. package/dist/commands/pty.d.ts.map +0 -1
  293. package/dist/commands/pty.js.map +0 -1
  294. package/dist/commands/pull.d.ts.map +0 -1
  295. package/dist/commands/pull.js.map +0 -1
  296. package/dist/commands/push.d.ts +0 -3
  297. package/dist/commands/push.d.ts.map +0 -1
  298. package/dist/commands/push.js +0 -180
  299. package/dist/commands/push.js.map +0 -1
  300. package/dist/commands/refresh-memory.d.ts.map +0 -1
  301. package/dist/commands/refresh-memory.js.map +0 -1
  302. package/dist/commands/resource-view.d.ts.map +0 -1
  303. package/dist/commands/resource-view.js.map +0 -1
  304. package/dist/commands/routines.d.ts.map +0 -1
  305. package/dist/commands/routines.js.map +0 -1
  306. package/dist/commands/rules.d.ts.map +0 -1
  307. package/dist/commands/rules.js.map +0 -1
  308. package/dist/commands/sessions-picker.d.ts.map +0 -1
  309. package/dist/commands/sessions-picker.js.map +0 -1
  310. package/dist/commands/sessions.d.ts.map +0 -1
  311. package/dist/commands/sessions.js.map +0 -1
  312. package/dist/commands/skills.d.ts.map +0 -1
  313. package/dist/commands/skills.js.map +0 -1
  314. package/dist/commands/status.d.ts.map +0 -1
  315. package/dist/commands/status.js.map +0 -1
  316. package/dist/commands/subagents.d.ts.map +0 -1
  317. package/dist/commands/subagents.js.map +0 -1
  318. package/dist/commands/sync.d.ts.map +0 -1
  319. package/dist/commands/sync.js.map +0 -1
  320. package/dist/commands/teams-picker.d.ts.map +0 -1
  321. package/dist/commands/teams-picker.js.map +0 -1
  322. package/dist/commands/teams.d.ts.map +0 -1
  323. package/dist/commands/teams.js.map +0 -1
  324. package/dist/commands/utils.d.ts.map +0 -1
  325. package/dist/commands/utils.js.map +0 -1
  326. package/dist/commands/versions.d.ts.map +0 -1
  327. package/dist/commands/versions.js.map +0 -1
  328. package/dist/commands/view.d.ts.map +0 -1
  329. package/dist/commands/view.js.map +0 -1
  330. package/dist/index.d.ts.map +0 -1
  331. package/dist/index.js.map +0 -1
  332. package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
  333. package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
  334. package/dist/lib/__tests__/bugfixes.test.js +0 -192
  335. package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
  336. package/dist/lib/__tests__/exec.test.d.ts +0 -2
  337. package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
  338. package/dist/lib/__tests__/exec.test.js +0 -446
  339. package/dist/lib/__tests__/exec.test.js.map +0 -1
  340. package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
  341. package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
  342. package/dist/lib/__tests__/git-sync.test.js +0 -138
  343. package/dist/lib/__tests__/git-sync.test.js.map +0 -1
  344. package/dist/lib/__tests__/hooks.test.d.ts +0 -2
  345. package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
  346. package/dist/lib/__tests__/hooks.test.js +0 -203
  347. package/dist/lib/__tests__/hooks.test.js.map +0 -1
  348. package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
  349. package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
  350. package/dist/lib/__tests__/memory-compile.test.js +0 -95
  351. package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
  352. package/dist/lib/__tests__/models.test.d.ts +0 -2
  353. package/dist/lib/__tests__/models.test.d.ts.map +0 -1
  354. package/dist/lib/__tests__/models.test.js +0 -184
  355. package/dist/lib/__tests__/models.test.js.map +0 -1
  356. package/dist/lib/__tests__/usage.test.d.ts +0 -2
  357. package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
  358. package/dist/lib/__tests__/usage.test.js +0 -218
  359. package/dist/lib/__tests__/usage.test.js.map +0 -1
  360. package/dist/lib/agents.d.ts.map +0 -1
  361. package/dist/lib/agents.js.map +0 -1
  362. package/dist/lib/artifact-actions.d.ts.map +0 -1
  363. package/dist/lib/artifact-actions.js.map +0 -1
  364. package/dist/lib/commands.d.ts.map +0 -1
  365. package/dist/lib/commands.js.map +0 -1
  366. package/dist/lib/convert.d.ts.map +0 -1
  367. package/dist/lib/convert.js.map +0 -1
  368. package/dist/lib/daemon.d.ts.map +0 -1
  369. package/dist/lib/daemon.js.map +0 -1
  370. package/dist/lib/drive-sync.d.ts.map +0 -1
  371. package/dist/lib/drive-sync.js.map +0 -1
  372. package/dist/lib/exec.d.ts.map +0 -1
  373. package/dist/lib/exec.js.map +0 -1
  374. package/dist/lib/factory.d.ts +0 -57
  375. package/dist/lib/factory.d.ts.map +0 -1
  376. package/dist/lib/factory.js +0 -110
  377. package/dist/lib/factory.js.map +0 -1
  378. package/dist/lib/git.d.ts.map +0 -1
  379. package/dist/lib/git.js.map +0 -1
  380. package/dist/lib/help.d.ts.map +0 -1
  381. package/dist/lib/help.js.map +0 -1
  382. package/dist/lib/hooks.d.ts.map +0 -1
  383. package/dist/lib/hooks.js.map +0 -1
  384. package/dist/lib/manifest.d.ts.map +0 -1
  385. package/dist/lib/manifest.js.map +0 -1
  386. package/dist/lib/markdown.d.ts.map +0 -1
  387. package/dist/lib/markdown.js.map +0 -1
  388. package/dist/lib/mcp.d.ts.map +0 -1
  389. package/dist/lib/mcp.js.map +0 -1
  390. package/dist/lib/memory-compile.d.ts.map +0 -1
  391. package/dist/lib/memory-compile.js.map +0 -1
  392. package/dist/lib/memory.d.ts.map +0 -1
  393. package/dist/lib/memory.js.map +0 -1
  394. package/dist/lib/models.d.ts.map +0 -1
  395. package/dist/lib/models.js.map +0 -1
  396. package/dist/lib/permissions.d.ts.map +0 -1
  397. package/dist/lib/permissions.js.map +0 -1
  398. package/dist/lib/picker.d.ts.map +0 -1
  399. package/dist/lib/picker.js.map +0 -1
  400. package/dist/lib/plugins.d.ts.map +0 -1
  401. package/dist/lib/plugins.js.map +0 -1
  402. package/dist/lib/pty-client.d.ts.map +0 -1
  403. package/dist/lib/pty-client.js.map +0 -1
  404. package/dist/lib/pty-server.d.ts.map +0 -1
  405. package/dist/lib/pty-server.js.map +0 -1
  406. package/dist/lib/registry.d.ts.map +0 -1
  407. package/dist/lib/registry.js.map +0 -1
  408. package/dist/lib/resources.d.ts.map +0 -1
  409. package/dist/lib/resources.js.map +0 -1
  410. package/dist/lib/routines.d.ts.map +0 -1
  411. package/dist/lib/routines.js.map +0 -1
  412. package/dist/lib/runner.d.ts.map +0 -1
  413. package/dist/lib/runner.js.map +0 -1
  414. package/dist/lib/sandbox.d.ts.map +0 -1
  415. package/dist/lib/sandbox.js.map +0 -1
  416. package/dist/lib/scheduler.d.ts.map +0 -1
  417. package/dist/lib/scheduler.js.map +0 -1
  418. package/dist/lib/session/__tests__/db.test.d.ts +0 -2
  419. package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
  420. package/dist/lib/session/__tests__/db.test.js +0 -54
  421. package/dist/lib/session/__tests__/db.test.js.map +0 -1
  422. package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
  423. package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
  424. package/dist/lib/session/__tests__/discover.test.js +0 -63
  425. package/dist/lib/session/__tests__/discover.test.js.map +0 -1
  426. package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
  427. package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
  428. package/dist/lib/session/__tests__/prompt.test.js +0 -44
  429. package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
  430. package/dist/lib/session/__tests__/render.test.d.ts +0 -2
  431. package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
  432. package/dist/lib/session/__tests__/render.test.js +0 -602
  433. package/dist/lib/session/__tests__/render.test.js.map +0 -1
  434. package/dist/lib/session/db.d.ts.map +0 -1
  435. package/dist/lib/session/db.js.map +0 -1
  436. package/dist/lib/session/discover.d.ts.map +0 -1
  437. package/dist/lib/session/discover.js.map +0 -1
  438. package/dist/lib/session/parse.d.ts.map +0 -1
  439. package/dist/lib/session/parse.js.map +0 -1
  440. package/dist/lib/session/prompt.d.ts.map +0 -1
  441. package/dist/lib/session/prompt.js.map +0 -1
  442. package/dist/lib/session/prompt.test.d.ts +0 -2
  443. package/dist/lib/session/prompt.test.d.ts.map +0 -1
  444. package/dist/lib/session/prompt.test.js +0 -57
  445. package/dist/lib/session/prompt.test.js.map +0 -1
  446. package/dist/lib/session/render.d.ts.map +0 -1
  447. package/dist/lib/session/render.js.map +0 -1
  448. package/dist/lib/session/team-filter.d.ts.map +0 -1
  449. package/dist/lib/session/team-filter.js.map +0 -1
  450. package/dist/lib/session/team-filter.test.d.ts +0 -2
  451. package/dist/lib/session/team-filter.test.d.ts.map +0 -1
  452. package/dist/lib/session/team-filter.test.js +0 -157
  453. package/dist/lib/session/team-filter.test.js.map +0 -1
  454. package/dist/lib/session/types.d.ts.map +0 -1
  455. package/dist/lib/session/types.js.map +0 -1
  456. package/dist/lib/shims.d.ts.map +0 -1
  457. package/dist/lib/shims.js.map +0 -1
  458. package/dist/lib/skills.d.ts.map +0 -1
  459. package/dist/lib/skills.js.map +0 -1
  460. package/dist/lib/state.d.ts.map +0 -1
  461. package/dist/lib/state.js.map +0 -1
  462. package/dist/lib/subagents.d.ts.map +0 -1
  463. package/dist/lib/subagents.js.map +0 -1
  464. package/dist/lib/teams/agents.d.ts.map +0 -1
  465. package/dist/lib/teams/agents.js.map +0 -1
  466. package/dist/lib/teams/api.d.ts.map +0 -1
  467. package/dist/lib/teams/api.js.map +0 -1
  468. package/dist/lib/teams/cloud.d.ts +0 -11
  469. package/dist/lib/teams/cloud.d.ts.map +0 -1
  470. package/dist/lib/teams/cloud.js +0 -169
  471. package/dist/lib/teams/cloud.js.map +0 -1
  472. package/dist/lib/teams/debug.d.ts.map +0 -1
  473. package/dist/lib/teams/debug.js.map +0 -1
  474. package/dist/lib/teams/file_ops.d.ts.map +0 -1
  475. package/dist/lib/teams/file_ops.js.map +0 -1
  476. package/dist/lib/teams/parsers.d.ts.map +0 -1
  477. package/dist/lib/teams/parsers.js.map +0 -1
  478. package/dist/lib/teams/persistence.d.ts.map +0 -1
  479. package/dist/lib/teams/persistence.js.map +0 -1
  480. package/dist/lib/teams/ralph.d.ts +0 -8
  481. package/dist/lib/teams/ralph.d.ts.map +0 -1
  482. package/dist/lib/teams/ralph.js +0 -59
  483. package/dist/lib/teams/ralph.js.map +0 -1
  484. package/dist/lib/teams/registry.d.ts.map +0 -1
  485. package/dist/lib/teams/registry.js.map +0 -1
  486. package/dist/lib/teams/summarizer.d.ts.map +0 -1
  487. package/dist/lib/teams/summarizer.js.map +0 -1
  488. package/dist/lib/template.d.ts.map +0 -1
  489. package/dist/lib/template.js.map +0 -1
  490. package/dist/lib/types.d.ts.map +0 -1
  491. package/dist/lib/types.js.map +0 -1
  492. package/dist/lib/usage.d.ts.map +0 -1
  493. package/dist/lib/usage.js.map +0 -1
  494. package/dist/lib/versions.d.ts.map +0 -1
  495. package/dist/lib/versions.js.map +0 -1
  496. package/scripts/rebuild-sqlite.sh +0 -46
package/dist/lib/state.js CHANGED
@@ -1,173 +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 MCP_CONFIG_FILE = path.join(AGENTS_DIR, 'mcp.json');
14
- const PACKAGES_DIR = path.join(AGENTS_DIR, 'packages');
15
- const ROUTINES_DIR = path.join(AGENTS_DIR, 'routines');
16
- const RUNS_DIR = path.join(AGENTS_DIR, 'runs');
17
- const VERSIONS_DIR = path.join(AGENTS_DIR, 'versions');
18
- const SHIMS_DIR = path.join(AGENTS_DIR, 'shims');
19
- const PERMISSIONS_DIR = path.join(AGENTS_DIR, 'permissions');
20
- const MCP_DIR = path.join(AGENTS_DIR, 'mcp');
21
- const BACKUPS_DIR = path.join(AGENTS_DIR, 'backups');
22
- const SUBAGENTS_DIR = path.join(AGENTS_DIR, 'subagents');
23
- const PLUGINS_DIR = path.join(AGENTS_DIR, 'plugins');
24
- const DRIVE_DIR = path.join(AGENTS_DIR, 'drive');
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');
25
59
  const META_HEADER = `# agents-cli metadata
26
60
  # Auto-generated - do not edit manually
27
- # https://github.com/muqsitnawaz/agents-cli
61
+ # https://github.com/phnx-labs/agents-cli
28
62
 
29
63
  `;
64
+ // ─── Root getters ─────────────────────────────────────────────────────────────
65
+ /** Root of the system data directory (~/.agents-system/). Legacy alias — prefer getSystemAgentsDir(). */
30
66
  export function getAgentsDir() {
31
- 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;
32
100
  }
101
+ /** Walk up from startPath to find a project-scoped .agents/ directory (skipping both roots). */
33
102
  export function getProjectAgentsDir(startPath = process.cwd()) {
34
103
  let dir = path.resolve(startPath);
35
104
  while (true) {
36
105
  const agentsPath = path.join(dir, '.agents');
37
106
  if (fs.existsSync(agentsPath) && fs.statSync(agentsPath).isDirectory()) {
38
- // Skip if this is ~/.agents (user scope, not project scope)
39
- if (agentsPath !== AGENTS_DIR) {
107
+ if (agentsPath !== SYSTEM_AGENTS_DIR && agentsPath !== USER_AGENTS_DIR) {
40
108
  return agentsPath;
41
109
  }
42
110
  }
43
- const isProjectBoundary = fs.existsSync(path.join(dir, '.git')) || fs.existsSync(path.join(dir, '.agents-version'));
111
+ const isProjectBoundary = fs.existsSync(path.join(dir, '.git')) || fs.existsSync(path.join(dir, 'agents.yaml'));
44
112
  const parent = path.dirname(dir);
45
- if (parent === dir) {
113
+ if (parent === dir)
46
114
  break;
47
- }
48
- if (isProjectBoundary) {
49
- // Check this boundary dir but don't go further
115
+ if (isProjectBoundary)
50
116
  break;
51
- }
52
117
  dir = parent;
53
118
  }
54
119
  return null;
55
120
  }
121
+ /** Return all .agents/ directories in scope: project, user, then system. */
56
122
  export function getScopedAgentsDirs(startPath = process.cwd()) {
57
123
  const dirs = [];
58
124
  const projectDir = getProjectAgentsDir(startPath);
59
125
  if (projectDir) {
60
126
  dirs.push({ scope: 'project', path: projectDir });
61
127
  }
62
- 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 });
63
130
  return dirs;
64
131
  }
65
- export function getPackagesDir() {
66
- return PACKAGES_DIR;
67
- }
68
- export function getRoutinesDir() {
69
- return ROUTINES_DIR;
70
- }
71
- export function getRunsDir() {
72
- return RUNS_DIR;
73
- }
74
- export function getVersionsDir() {
75
- return VERSIONS_DIR;
76
- }
77
- export function getShimsDir() {
78
- return SHIMS_DIR;
79
- }
80
- export function getPermissionsDir() {
81
- return PERMISSIONS_DIR;
82
- }
83
- export function getMcpDir() {
84
- return MCP_DIR;
85
- }
86
- export function getBackupsDir() {
87
- return BACKUPS_DIR;
88
- }
89
- export function getSubagentsDir() {
90
- return SUBAGENTS_DIR;
91
- }
92
- export function getPluginsDir() {
93
- return PLUGINS_DIR;
94
- }
95
- export function getDriveDir() {
96
- return DRIVE_DIR;
97
- }
98
- export function getCommandsDir() {
99
- return COMMANDS_DIR;
100
- }
101
- export function getHooksDir() {
102
- return HOOKS_DIR;
103
- }
104
- export function getSkillsDir() {
105
- 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;
106
170
  }
107
- export function getMemoryDir() {
108
- 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}`);
109
230
  }
110
- export function getInstructionsPath() {
111
- 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);
112
237
  }
113
- export function getMcpConfigPath() {
114
- return MCP_CONFIG_FILE;
238
+ /**
239
+ * Return enabled extra repos that exist on disk, in insertion order.
240
+ */
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;
115
254
  }
255
+ // ─── Directory setup ───────────────────────────────────────────────────────────
256
+ /** Create both the system and user directory trees if any subdirectories are missing. */
116
257
  export function ensureAgentsDir() {
117
- if (!fs.existsSync(AGENTS_DIR)) {
118
- fs.mkdirSync(AGENTS_DIR, { recursive: true });
119
- }
120
- if (!fs.existsSync(PACKAGES_DIR)) {
121
- fs.mkdirSync(PACKAGES_DIR, { recursive: true });
122
- }
123
- if (!fs.existsSync(ROUTINES_DIR)) {
124
- fs.mkdirSync(ROUTINES_DIR, { recursive: true });
125
- }
126
- if (!fs.existsSync(RUNS_DIR)) {
127
- fs.mkdirSync(RUNS_DIR, { recursive: true });
128
- }
129
- if (!fs.existsSync(VERSIONS_DIR)) {
130
- fs.mkdirSync(VERSIONS_DIR, { recursive: true });
131
- }
132
- if (!fs.existsSync(SHIMS_DIR)) {
133
- fs.mkdirSync(SHIMS_DIR, { recursive: true });
134
- }
135
- if (!fs.existsSync(COMMANDS_DIR)) {
136
- 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);
137
262
  }
138
- if (!fs.existsSync(HOOKS_DIR)) {
139
- fs.mkdirSync(HOOKS_DIR, { recursive: true });
263
+ try {
264
+ fs.chmodSync(USER_AGENTS_DIR, 0o700);
140
265
  }
141
- if (!fs.existsSync(SKILLS_DIR)) {
142
- 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);
143
270
  }
144
- if (!fs.existsSync(MEMORY_DIR)) {
145
- fs.mkdirSync(MEMORY_DIR, { recursive: true });
146
- }
147
- if (!fs.existsSync(PERMISSIONS_DIR)) {
148
- fs.mkdirSync(PERMISSIONS_DIR, { recursive: true });
149
- }
150
- if (!fs.existsSync(SUBAGENTS_DIR)) {
151
- fs.mkdirSync(SUBAGENTS_DIR, { recursive: true });
152
- }
153
- if (!fs.existsSync(DRIVE_DIR)) {
154
- 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);
155
297
  }
298
+ catch { }
156
299
  }
300
+ // ─── Meta (agents.yaml) ────────────────────────────────────────────────────────
301
+ /** Return an empty Meta object used when no agents.yaml exists yet. */
157
302
  export function createDefaultMeta() {
158
303
  return {};
159
304
  }
160
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. */
161
350
  export function readMeta() {
162
351
  ensureAgentsDir();
163
- // Migration: check for old meta.yaml
164
- 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');
165
359
  if (fs.existsSync(oldMetaFile) && !fs.existsSync(META_FILE)) {
166
360
  try {
167
361
  const content = fs.readFileSync(oldMetaFile, 'utf-8');
168
362
  const parsed = yaml.parse(content);
169
363
  const meta = {};
170
- // Migrate versions.*.default -> agents.*
171
364
  if (parsed.versions) {
172
365
  meta.agents = {};
173
366
  for (const [agent, state] of Object.entries(parsed.versions)) {
@@ -177,20 +370,18 @@ export function readMeta() {
177
370
  }
178
371
  }
179
372
  }
180
- // Migrate registries
181
373
  if (parsed.registries) {
182
374
  meta.registries = parsed.registries;
183
375
  }
184
376
  writeMeta(meta);
185
- // Remove old meta.yaml to prevent stale reads by shims
186
377
  try {
187
378
  fs.unlinkSync(oldMetaFile);
188
379
  }
189
- catch { /* old meta file cleanup, non-critical */ }
380
+ catch { /* non-critical */ }
190
381
  return meta;
191
382
  }
192
383
  catch {
193
- /* meta.yaml migration failed, continue with fresh state */
384
+ /* meta.yaml migration failed */
194
385
  }
195
386
  }
196
387
  if (fs.existsSync(META_FILE)) {
@@ -198,9 +389,7 @@ export function readMeta() {
198
389
  try {
199
390
  mtime = fs.statSync(META_FILE).mtimeMs;
200
391
  }
201
- catch {
202
- /* file vanished between existsSync and statSync */
203
- }
392
+ catch { /* file vanished */ }
204
393
  if (metaCache && metaCache.mtime === mtime) {
205
394
  return metaCache.meta;
206
395
  }
@@ -208,28 +397,38 @@ export function readMeta() {
208
397
  const content = fs.readFileSync(META_FILE, 'utf-8');
209
398
  const parsed = yaml.parse(content);
210
399
  const meta = parsed || createDefaultMeta();
400
+ if (applyRegistrySeeds(meta)) {
401
+ writeMeta(meta);
402
+ return meta;
403
+ }
211
404
  metaCache = { mtime, meta };
212
405
  return meta;
213
406
  }
214
407
  catch {
215
- /* agents.yaml corrupt or unreadable, use defaults */
216
408
  return createDefaultMeta();
217
409
  }
218
410
  }
219
- return createDefaultMeta();
411
+ const meta = createDefaultMeta();
412
+ if (applyRegistrySeeds(meta)) {
413
+ writeMeta(meta);
414
+ }
415
+ return meta;
220
416
  }
417
+ /** Serialize and write agents.yaml to the user repo, invalidating the in-memory cache. */
221
418
  export function writeMeta(meta) {
222
419
  ensureAgentsDir();
223
420
  const content = META_HEADER + yaml.stringify(meta);
224
421
  fs.writeFileSync(META_FILE, content, 'utf-8');
225
422
  metaCache = null;
226
423
  }
424
+ /** Shallow-merge updates into agents.yaml and return the new state. */
227
425
  export function updateMeta(updates) {
228
426
  const meta = readMeta();
229
427
  const newMeta = { ...meta, ...updates };
230
428
  writeMeta(newMeta);
231
429
  return newMeta;
232
430
  }
431
+ /** Derive a filesystem-safe local clone path for a package source URL. */
233
432
  export function getPackageLocalPath(source) {
234
433
  const sanitized = source
235
434
  .replace(/^gh:/, '')
@@ -238,11 +437,6 @@ export function getPackageLocalPath(source) {
238
437
  .replace(/\//g, '-');
239
438
  return path.join(PACKAGES_DIR, sanitized);
240
439
  }
241
- /**
242
- * Record that resources were synced to a specific version.
243
- * Creates nested entries if they don't exist (handles existing installs gracefully).
244
- * Merges with existing resources (uses Set for deduplication).
245
- */
246
440
  export function recordVersionResources(agent, version, resourceType, resources) {
247
441
  if (resources.length === 0)
248
442
  return;
@@ -258,29 +452,20 @@ export function recordVersionResources(agent, version, resourceType, resources)
258
452
  meta.versions[agent][version][resourceType] = merged;
259
453
  writeMeta(meta);
260
454
  }
261
- /**
262
- * Get tracked resources for a specific version.
263
- */
264
455
  export function getVersionResources(agent, version) {
265
456
  const meta = readMeta();
266
457
  return meta.versions?.[agent]?.[version] || null;
267
458
  }
268
- /**
269
- * Clear resource tracking when a version is removed.
270
- */
271
459
  export function clearVersionResources(agent, version) {
272
460
  const meta = readMeta();
273
461
  if (meta.versions?.[agent]?.[version]) {
274
462
  delete meta.versions[agent][version];
275
- // Clean up empty agent entry
276
463
  if (Object.keys(meta.versions[agent]).length === 0) {
277
464
  delete meta.versions[agent];
278
465
  }
279
- // Clean up empty versions section
280
466
  if (Object.keys(meta.versions).length === 0) {
281
467
  delete meta.versions;
282
468
  }
283
469
  writeMeta(meta);
284
470
  }
285
471
  }
286
- //# 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