@phnx-labs/agents-cli 0.1.0 → 1.14.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (554) hide show
  1. package/CHANGELOG.md +7 -1
  2. package/README.md +283 -372
  3. package/dist/commands/alias.d.ts +11 -0
  4. package/dist/commands/alias.js +117 -0
  5. package/dist/commands/beta.d.ts +2 -0
  6. package/dist/commands/beta.js +53 -0
  7. package/dist/commands/cloud.d.ts +8 -1
  8. package/dist/commands/cloud.js +108 -22
  9. package/dist/commands/commands.d.ts +9 -1
  10. package/dist/commands/commands.js +24 -172
  11. package/dist/commands/daemon.d.ts +8 -1
  12. package/dist/commands/daemon.js +13 -5
  13. package/dist/commands/doctor.d.ts +15 -0
  14. package/dist/commands/doctor.js +132 -0
  15. package/dist/commands/drive.d.ts +8 -1
  16. package/dist/commands/drive.js +20 -3
  17. package/dist/commands/exec.d.ts +8 -1
  18. package/dist/commands/exec.js +96 -27
  19. package/dist/commands/factory.d.ts +19 -0
  20. package/dist/commands/factory.js +71 -0
  21. package/dist/commands/fork.d.ts +8 -1
  22. package/dist/commands/fork.js +11 -4
  23. package/dist/commands/hooks.d.ts +9 -1
  24. package/dist/commands/hooks.js +30 -182
  25. package/dist/commands/init.d.ts +15 -1
  26. package/dist/commands/init.js +168 -74
  27. package/dist/commands/mcp.d.ts +9 -1
  28. package/dist/commands/mcp.js +11 -7
  29. package/dist/commands/models.d.ts +8 -1
  30. package/dist/commands/models.js +16 -4
  31. package/dist/commands/packages.d.ts +8 -1
  32. package/dist/commands/packages.js +13 -7
  33. package/dist/commands/permissions.d.ts +9 -1
  34. package/dist/commands/permissions.js +3 -3
  35. package/dist/commands/plugins.d.ts +8 -1
  36. package/dist/commands/plugins.js +13 -2
  37. package/dist/commands/profiles.d.ts +9 -1
  38. package/dist/commands/profiles.js +56 -7
  39. package/dist/commands/prune.d.ts +22 -0
  40. package/dist/commands/prune.js +191 -0
  41. package/dist/commands/pty.d.ts +1 -1
  42. package/dist/commands/pty.js +2 -1
  43. package/dist/commands/pull.d.ts +8 -1
  44. package/dist/commands/pull.js +58 -128
  45. package/dist/commands/refresh-memory.d.ts +7 -1
  46. package/dist/commands/refresh-memory.js +7 -1
  47. package/dist/commands/repo.d.ts +15 -0
  48. package/dist/commands/repo.js +570 -0
  49. package/dist/commands/resource-view.d.ts +10 -3
  50. package/dist/commands/resource-view.js +18 -5
  51. package/dist/commands/routines.d.ts +8 -1
  52. package/dist/commands/routines.js +17 -4
  53. package/dist/commands/rules.d.ts +9 -1
  54. package/dist/commands/rules.js +16 -11
  55. package/dist/commands/secrets.d.ts +8 -1
  56. package/dist/commands/secrets.js +235 -63
  57. package/dist/commands/sessions-picker.d.ts +2 -1
  58. package/dist/commands/sessions-picker.js +88 -11
  59. package/dist/commands/sessions-tail.d.ts +19 -0
  60. package/dist/commands/sessions-tail.js +235 -0
  61. package/dist/commands/sessions.d.ts +2 -1
  62. package/dist/commands/sessions.js +188 -7
  63. package/dist/commands/skills.d.ts +9 -1
  64. package/dist/commands/skills.js +28 -178
  65. package/dist/commands/status.d.ts +7 -1
  66. package/dist/commands/status.js +7 -1
  67. package/dist/commands/subagents.d.ts +8 -1
  68. package/dist/commands/subagents.js +11 -1
  69. package/dist/commands/sync.d.ts +8 -1
  70. package/dist/commands/sync.js +8 -1
  71. package/dist/commands/teams-picker.d.ts +4 -1
  72. package/dist/commands/teams-picker.js +55 -3
  73. package/dist/commands/teams.d.ts +15 -1
  74. package/dist/commands/teams.js +323 -69
  75. package/dist/commands/usage.d.ts +11 -0
  76. package/dist/commands/usage.js +60 -0
  77. package/dist/commands/utils.d.ts +6 -1
  78. package/dist/commands/utils.js +6 -1
  79. package/dist/commands/versions.d.ts +8 -1
  80. package/dist/commands/versions.js +4 -3
  81. package/dist/commands/view.d.ts +47 -2
  82. package/dist/commands/view.js +317 -24
  83. package/dist/index.d.ts +7 -2
  84. package/dist/index.js +172 -34
  85. package/dist/lib/acp/client.d.ts +31 -0
  86. package/dist/lib/acp/client.js +117 -0
  87. package/dist/lib/acp/harnesses.d.ts +26 -0
  88. package/dist/lib/acp/harnesses.js +65 -0
  89. package/dist/lib/acp/run.d.ts +18 -0
  90. package/dist/lib/acp/run.js +39 -0
  91. package/dist/lib/agents.d.ts +74 -2
  92. package/dist/lib/agents.js +197 -21
  93. package/dist/lib/artifact-actions.d.ts +8 -4
  94. package/dist/lib/artifact-actions.js +8 -6
  95. package/dist/lib/auto-pull-worker.d.ts +11 -0
  96. package/dist/lib/auto-pull-worker.js +121 -0
  97. package/dist/lib/auto-pull.d.ts +31 -0
  98. package/dist/lib/auto-pull.js +97 -0
  99. package/dist/lib/beta.d.ts +23 -0
  100. package/dist/lib/beta.js +90 -0
  101. package/dist/lib/capabilities.d.ts +29 -0
  102. package/dist/lib/capabilities.js +74 -0
  103. package/dist/lib/cloud/codex.d.ts +9 -3
  104. package/dist/lib/cloud/codex.js +53 -13
  105. package/dist/lib/cloud/factory.d.ts +8 -3
  106. package/dist/lib/cloud/factory.js +19 -3
  107. package/dist/lib/cloud/registry.d.ts +10 -1
  108. package/dist/lib/cloud/registry.js +14 -3
  109. package/dist/lib/cloud/rush.d.ts +63 -3
  110. package/dist/lib/cloud/rush.js +273 -20
  111. package/dist/lib/cloud/store.d.ts +13 -1
  112. package/dist/lib/cloud/store.js +23 -4
  113. package/dist/lib/cloud/stream.d.ts +6 -1
  114. package/dist/lib/cloud/stream.js +95 -39
  115. package/dist/lib/cloud/types.d.ts +153 -8
  116. package/dist/lib/cloud/types.js +34 -2
  117. package/dist/lib/command-skills.d.ts +20 -0
  118. package/dist/lib/command-skills.js +142 -0
  119. package/dist/lib/commands.d.ts +22 -2
  120. package/dist/lib/commands.js +51 -11
  121. package/dist/lib/convert.d.ts +10 -1
  122. package/dist/lib/convert.js +9 -1
  123. package/dist/lib/daemon.d.ts +21 -1
  124. package/dist/lib/daemon.js +97 -4
  125. package/dist/lib/drive-sync.d.ts +18 -1
  126. package/dist/lib/drive-sync.js +57 -15
  127. package/dist/lib/exec.d.ts +23 -6
  128. package/dist/lib/exec.js +53 -17
  129. package/dist/lib/fs-walk.d.ts +2 -0
  130. package/dist/lib/fs-walk.js +40 -0
  131. package/dist/lib/fuzzy.d.ts +53 -0
  132. package/dist/lib/fuzzy.js +72 -0
  133. package/dist/lib/gemini-settings.d.ts +4 -0
  134. package/dist/lib/gemini-settings.js +33 -0
  135. package/dist/lib/git.d.ts +12 -2
  136. package/dist/lib/git.js +17 -6
  137. package/dist/lib/help.d.ts +20 -1
  138. package/dist/lib/help.js +45 -6
  139. package/dist/lib/hooks/match.d.ts +32 -0
  140. package/dist/lib/hooks/match.js +120 -0
  141. package/dist/lib/hooks.d.ts +17 -4
  142. package/dist/lib/hooks.js +119 -101
  143. package/dist/lib/manifest.d.ts +6 -1
  144. package/dist/lib/manifest.js +15 -4
  145. package/dist/lib/markdown.d.ts +0 -1
  146. package/dist/lib/markdown.js +6 -1
  147. package/dist/lib/mcp.d.ts +0 -1
  148. package/dist/lib/mcp.js +29 -33
  149. package/dist/lib/memory-compile.d.ts +13 -3
  150. package/dist/lib/memory-compile.js +31 -9
  151. package/dist/lib/memory.d.ts +14 -7
  152. package/dist/lib/memory.js +67 -38
  153. package/dist/lib/migrate.d.ts +8 -0
  154. package/dist/lib/migrate.js +85 -0
  155. package/dist/lib/models.d.ts +10 -4
  156. package/dist/lib/models.js +36 -15
  157. package/dist/lib/onepassword.d.ts +63 -0
  158. package/dist/lib/onepassword.js +186 -0
  159. package/dist/lib/paths.d.ts +8 -0
  160. package/dist/lib/paths.js +20 -0
  161. package/dist/lib/permissions.d.ts +24 -2
  162. package/dist/lib/permissions.js +117 -48
  163. package/dist/lib/picker.d.ts +10 -1
  164. package/dist/lib/picker.js +15 -1
  165. package/dist/lib/plugins.d.ts +7 -1
  166. package/dist/lib/plugins.js +10 -1
  167. package/dist/lib/profiles-presets.d.ts +10 -1
  168. package/dist/lib/profiles-presets.js +9 -1
  169. package/dist/lib/profiles.d.ts +35 -1
  170. package/dist/lib/profiles.js +36 -15
  171. package/dist/lib/pty-client.d.ts +1 -1
  172. package/dist/lib/pty-client.js +0 -1
  173. package/dist/lib/pty-server.d.ts +16 -2
  174. package/dist/lib/pty-server.js +92 -3
  175. package/dist/lib/registry.d.ts +23 -3
  176. package/dist/lib/registry.js +153 -8
  177. package/dist/lib/resources.d.ts +28 -1
  178. package/dist/lib/resources.js +79 -1
  179. package/dist/lib/rotate.d.ts +40 -13
  180. package/dist/lib/rotate.js +238 -40
  181. package/dist/lib/routines.d.ts +29 -1
  182. package/dist/lib/routines.js +32 -5
  183. package/dist/lib/runner.d.ts +14 -1
  184. package/dist/lib/runner.js +22 -3
  185. package/dist/lib/sandbox.d.ts +16 -1
  186. package/dist/lib/sandbox.js +39 -16
  187. package/dist/lib/scheduler.d.ts +8 -1
  188. package/dist/lib/scheduler.js +8 -1
  189. package/dist/lib/secrets/AgentsKeychain.app/Contents/CodeResources +0 -0
  190. package/dist/lib/secrets/AgentsKeychain.app/Contents/Info.plist +22 -0
  191. package/dist/lib/secrets/AgentsKeychain.app/Contents/MacOS/AgentsKeychain +0 -0
  192. package/dist/lib/secrets/AgentsKeychain.app/Contents/_CodeSignature/CodeResources +123 -0
  193. package/dist/lib/secrets/AgentsKeychain.app/Contents/embedded.provisionprofile +0 -0
  194. package/dist/lib/{secrets-bundles.d.ts → secrets/bundles.d.ts} +12 -2
  195. package/dist/lib/{secrets-bundles.js → secrets/bundles.js} +38 -17
  196. package/dist/lib/secrets/index.d.ts +55 -0
  197. package/dist/lib/secrets/index.js +211 -0
  198. package/dist/lib/secrets/profiles.d.ts +10 -0
  199. package/dist/lib/secrets/profiles.js +13 -0
  200. package/dist/lib/session/active.d.ts +43 -0
  201. package/dist/lib/session/active.js +392 -0
  202. package/dist/lib/session/artifacts.d.ts +12 -1
  203. package/dist/lib/session/artifacts.js +25 -5
  204. package/dist/lib/session/cloud.d.ts +30 -0
  205. package/dist/lib/session/cloud.js +121 -0
  206. package/dist/lib/session/db.d.ts +23 -2
  207. package/dist/lib/session/db.js +76 -12
  208. package/dist/lib/session/discover.d.ts +19 -4
  209. package/dist/lib/session/discover.js +344 -48
  210. package/dist/lib/session/parse.d.ts +28 -1
  211. package/dist/lib/session/parse.js +267 -9
  212. package/dist/lib/session/prompt.d.ts +9 -1
  213. package/dist/lib/session/prompt.js +17 -3
  214. package/dist/lib/session/render.d.ts +13 -1
  215. package/dist/lib/session/render.js +20 -1
  216. package/dist/lib/session/team-filter.d.ts +9 -1
  217. package/dist/lib/session/team-filter.js +11 -2
  218. package/dist/lib/session/types.d.ts +16 -2
  219. package/dist/lib/session/types.js +10 -2
  220. package/dist/lib/shims.d.ts +64 -5
  221. package/dist/lib/shims.js +309 -47
  222. package/dist/lib/skills.d.ts +27 -2
  223. package/dist/lib/skills.js +127 -65
  224. package/dist/lib/sqlite.d.ts +43 -0
  225. package/dist/lib/sqlite.js +94 -0
  226. package/dist/lib/state.d.ts +112 -27
  227. package/dist/lib/state.js +320 -148
  228. package/dist/lib/subagents.d.ts +9 -1
  229. package/dist/lib/subagents.js +70 -63
  230. package/dist/lib/sync-manifest.d.ts +81 -0
  231. package/dist/lib/sync-manifest.js +450 -0
  232. package/dist/lib/teams/agents.d.ts +103 -5
  233. package/dist/lib/teams/agents.js +414 -91
  234. package/dist/lib/teams/api.d.ts +26 -3
  235. package/dist/lib/teams/api.js +63 -3
  236. package/dist/lib/teams/debug.d.ts +6 -1
  237. package/dist/lib/teams/debug.js +6 -1
  238. package/dist/lib/teams/file_ops.d.ts +7 -1
  239. package/dist/lib/teams/file_ops.js +7 -1
  240. package/dist/lib/teams/index.d.ts +15 -0
  241. package/dist/lib/teams/index.js +14 -0
  242. package/dist/lib/teams/parsers.d.ts +4 -1
  243. package/dist/lib/teams/parsers.js +11 -1
  244. package/dist/lib/teams/persistence.d.ts +15 -1
  245. package/dist/lib/teams/persistence.js +102 -20
  246. package/dist/lib/teams/registry.d.ts +12 -1
  247. package/dist/lib/teams/registry.js +116 -33
  248. package/dist/lib/teams/summarizer.d.ts +15 -1
  249. package/dist/lib/teams/summarizer.js +14 -1
  250. package/dist/lib/teams/supervisor.d.ts +48 -0
  251. package/dist/lib/teams/supervisor.js +73 -0
  252. package/dist/lib/template.d.ts +8 -6
  253. package/dist/lib/template.js +8 -6
  254. package/dist/lib/types.d.ts +147 -8
  255. package/dist/lib/types.js +26 -3
  256. package/dist/lib/usage.d.ts +32 -1
  257. package/dist/lib/usage.js +70 -6
  258. package/dist/lib/version-duplicates.d.ts +21 -0
  259. package/dist/lib/version-duplicates.js +90 -0
  260. package/dist/lib/versions.d.ts +33 -4
  261. package/dist/lib/versions.js +376 -108
  262. package/package.json +32 -17
  263. package/scripts/postinstall.js +126 -30
  264. package/dist/commands/__tests__/sessions.test.d.ts +0 -2
  265. package/dist/commands/__tests__/sessions.test.d.ts.map +0 -1
  266. package/dist/commands/__tests__/sessions.test.js +0 -636
  267. package/dist/commands/__tests__/sessions.test.js.map +0 -1
  268. package/dist/commands/cloud.d.ts.map +0 -1
  269. package/dist/commands/cloud.js.map +0 -1
  270. package/dist/commands/commands.d.ts.map +0 -1
  271. package/dist/commands/commands.js.map +0 -1
  272. package/dist/commands/daemon.d.ts.map +0 -1
  273. package/dist/commands/daemon.js.map +0 -1
  274. package/dist/commands/drive.d.ts.map +0 -1
  275. package/dist/commands/drive.js.map +0 -1
  276. package/dist/commands/exec.d.ts.map +0 -1
  277. package/dist/commands/exec.js.map +0 -1
  278. package/dist/commands/fork.d.ts.map +0 -1
  279. package/dist/commands/fork.js.map +0 -1
  280. package/dist/commands/hooks.d.ts.map +0 -1
  281. package/dist/commands/hooks.js.map +0 -1
  282. package/dist/commands/init.d.ts.map +0 -1
  283. package/dist/commands/init.js.map +0 -1
  284. package/dist/commands/mcp.d.ts.map +0 -1
  285. package/dist/commands/mcp.js.map +0 -1
  286. package/dist/commands/models.d.ts.map +0 -1
  287. package/dist/commands/models.js.map +0 -1
  288. package/dist/commands/packages.d.ts.map +0 -1
  289. package/dist/commands/packages.js.map +0 -1
  290. package/dist/commands/permissions.d.ts.map +0 -1
  291. package/dist/commands/permissions.js.map +0 -1
  292. package/dist/commands/plugins.d.ts.map +0 -1
  293. package/dist/commands/plugins.js.map +0 -1
  294. package/dist/commands/profiles.d.ts.map +0 -1
  295. package/dist/commands/profiles.js.map +0 -1
  296. package/dist/commands/pty.d.ts.map +0 -1
  297. package/dist/commands/pty.js.map +0 -1
  298. package/dist/commands/pull.d.ts.map +0 -1
  299. package/dist/commands/pull.js.map +0 -1
  300. package/dist/commands/push.d.ts +0 -3
  301. package/dist/commands/push.d.ts.map +0 -1
  302. package/dist/commands/push.js +0 -180
  303. package/dist/commands/push.js.map +0 -1
  304. package/dist/commands/refresh-memory.d.ts.map +0 -1
  305. package/dist/commands/refresh-memory.js.map +0 -1
  306. package/dist/commands/resource-view.d.ts.map +0 -1
  307. package/dist/commands/resource-view.js.map +0 -1
  308. package/dist/commands/routines.d.ts.map +0 -1
  309. package/dist/commands/routines.js.map +0 -1
  310. package/dist/commands/rules.d.ts.map +0 -1
  311. package/dist/commands/rules.js.map +0 -1
  312. package/dist/commands/secrets.d.ts.map +0 -1
  313. package/dist/commands/secrets.js.map +0 -1
  314. package/dist/commands/sessions-picker.d.ts.map +0 -1
  315. package/dist/commands/sessions-picker.js.map +0 -1
  316. package/dist/commands/sessions.d.ts.map +0 -1
  317. package/dist/commands/sessions.js.map +0 -1
  318. package/dist/commands/skills.d.ts.map +0 -1
  319. package/dist/commands/skills.js.map +0 -1
  320. package/dist/commands/status.d.ts.map +0 -1
  321. package/dist/commands/status.js.map +0 -1
  322. package/dist/commands/subagents.d.ts.map +0 -1
  323. package/dist/commands/subagents.js.map +0 -1
  324. package/dist/commands/sync.d.ts.map +0 -1
  325. package/dist/commands/sync.js.map +0 -1
  326. package/dist/commands/teams-picker.d.ts.map +0 -1
  327. package/dist/commands/teams-picker.js.map +0 -1
  328. package/dist/commands/teams.d.ts.map +0 -1
  329. package/dist/commands/teams.js.map +0 -1
  330. package/dist/commands/utils.d.ts.map +0 -1
  331. package/dist/commands/utils.js.map +0 -1
  332. package/dist/commands/versions.d.ts.map +0 -1
  333. package/dist/commands/versions.js.map +0 -1
  334. package/dist/commands/view.d.ts.map +0 -1
  335. package/dist/commands/view.js.map +0 -1
  336. package/dist/index.d.ts.map +0 -1
  337. package/dist/index.js.map +0 -1
  338. package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
  339. package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
  340. package/dist/lib/__tests__/bugfixes.test.js +0 -192
  341. package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
  342. package/dist/lib/__tests__/exec.test.d.ts +0 -2
  343. package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
  344. package/dist/lib/__tests__/exec.test.js +0 -446
  345. package/dist/lib/__tests__/exec.test.js.map +0 -1
  346. package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
  347. package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
  348. package/dist/lib/__tests__/git-sync.test.js +0 -138
  349. package/dist/lib/__tests__/git-sync.test.js.map +0 -1
  350. package/dist/lib/__tests__/hooks.test.d.ts +0 -2
  351. package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
  352. package/dist/lib/__tests__/hooks.test.js +0 -203
  353. package/dist/lib/__tests__/hooks.test.js.map +0 -1
  354. package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
  355. package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
  356. package/dist/lib/__tests__/memory-compile.test.js +0 -95
  357. package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
  358. package/dist/lib/__tests__/models.test.d.ts +0 -2
  359. package/dist/lib/__tests__/models.test.d.ts.map +0 -1
  360. package/dist/lib/__tests__/models.test.js +0 -239
  361. package/dist/lib/__tests__/models.test.js.map +0 -1
  362. package/dist/lib/__tests__/rotate.test.d.ts +0 -2
  363. package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
  364. package/dist/lib/__tests__/rotate.test.js +0 -80
  365. package/dist/lib/__tests__/rotate.test.js.map +0 -1
  366. package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
  367. package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
  368. package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
  369. package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
  370. package/dist/lib/__tests__/secrets.test.d.ts +0 -2
  371. package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
  372. package/dist/lib/__tests__/secrets.test.js +0 -90
  373. package/dist/lib/__tests__/secrets.test.js.map +0 -1
  374. package/dist/lib/__tests__/shims.test.d.ts +0 -2
  375. package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
  376. package/dist/lib/__tests__/shims.test.js +0 -39
  377. package/dist/lib/__tests__/shims.test.js.map +0 -1
  378. package/dist/lib/__tests__/usage.test.d.ts +0 -2
  379. package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
  380. package/dist/lib/__tests__/usage.test.js +0 -220
  381. package/dist/lib/__tests__/usage.test.js.map +0 -1
  382. package/dist/lib/__tests__/versions.test.d.ts +0 -2
  383. package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
  384. package/dist/lib/__tests__/versions.test.js +0 -63
  385. package/dist/lib/__tests__/versions.test.js.map +0 -1
  386. package/dist/lib/agents.d.ts.map +0 -1
  387. package/dist/lib/agents.js.map +0 -1
  388. package/dist/lib/artifact-actions.d.ts.map +0 -1
  389. package/dist/lib/artifact-actions.js.map +0 -1
  390. package/dist/lib/cloud/codex.d.ts.map +0 -1
  391. package/dist/lib/cloud/codex.js.map +0 -1
  392. package/dist/lib/cloud/factory.d.ts.map +0 -1
  393. package/dist/lib/cloud/factory.js.map +0 -1
  394. package/dist/lib/cloud/registry.d.ts.map +0 -1
  395. package/dist/lib/cloud/registry.js.map +0 -1
  396. package/dist/lib/cloud/rush.d.ts.map +0 -1
  397. package/dist/lib/cloud/rush.js.map +0 -1
  398. package/dist/lib/cloud/store.d.ts.map +0 -1
  399. package/dist/lib/cloud/store.js.map +0 -1
  400. package/dist/lib/cloud/stream.d.ts.map +0 -1
  401. package/dist/lib/cloud/stream.js.map +0 -1
  402. package/dist/lib/cloud/types.d.ts.map +0 -1
  403. package/dist/lib/cloud/types.js.map +0 -1
  404. package/dist/lib/commands.d.ts.map +0 -1
  405. package/dist/lib/commands.js.map +0 -1
  406. package/dist/lib/convert.d.ts.map +0 -1
  407. package/dist/lib/convert.js.map +0 -1
  408. package/dist/lib/daemon.d.ts.map +0 -1
  409. package/dist/lib/daemon.js.map +0 -1
  410. package/dist/lib/drive-sync.d.ts.map +0 -1
  411. package/dist/lib/drive-sync.js.map +0 -1
  412. package/dist/lib/exec.d.ts.map +0 -1
  413. package/dist/lib/exec.js.map +0 -1
  414. package/dist/lib/factory.d.ts +0 -57
  415. package/dist/lib/factory.d.ts.map +0 -1
  416. package/dist/lib/factory.js +0 -110
  417. package/dist/lib/factory.js.map +0 -1
  418. package/dist/lib/git.d.ts.map +0 -1
  419. package/dist/lib/git.js.map +0 -1
  420. package/dist/lib/help.d.ts.map +0 -1
  421. package/dist/lib/help.js.map +0 -1
  422. package/dist/lib/hooks.d.ts.map +0 -1
  423. package/dist/lib/hooks.js.map +0 -1
  424. package/dist/lib/manifest.d.ts.map +0 -1
  425. package/dist/lib/manifest.js.map +0 -1
  426. package/dist/lib/markdown.d.ts.map +0 -1
  427. package/dist/lib/markdown.js.map +0 -1
  428. package/dist/lib/mcp.d.ts.map +0 -1
  429. package/dist/lib/mcp.js.map +0 -1
  430. package/dist/lib/memory-compile.d.ts.map +0 -1
  431. package/dist/lib/memory-compile.js.map +0 -1
  432. package/dist/lib/memory.d.ts.map +0 -1
  433. package/dist/lib/memory.js.map +0 -1
  434. package/dist/lib/models.d.ts.map +0 -1
  435. package/dist/lib/models.js.map +0 -1
  436. package/dist/lib/permissions.d.ts.map +0 -1
  437. package/dist/lib/permissions.js.map +0 -1
  438. package/dist/lib/picker.d.ts.map +0 -1
  439. package/dist/lib/picker.js.map +0 -1
  440. package/dist/lib/plugins.d.ts.map +0 -1
  441. package/dist/lib/plugins.js.map +0 -1
  442. package/dist/lib/profiles-keychain.d.ts +0 -3
  443. package/dist/lib/profiles-keychain.d.ts.map +0 -1
  444. package/dist/lib/profiles-keychain.js +0 -10
  445. package/dist/lib/profiles-keychain.js.map +0 -1
  446. package/dist/lib/profiles-presets.d.ts.map +0 -1
  447. package/dist/lib/profiles-presets.js.map +0 -1
  448. package/dist/lib/profiles.d.ts.map +0 -1
  449. package/dist/lib/profiles.js.map +0 -1
  450. package/dist/lib/pty-client.d.ts.map +0 -1
  451. package/dist/lib/pty-client.js.map +0 -1
  452. package/dist/lib/pty-server.d.ts.map +0 -1
  453. package/dist/lib/pty-server.js.map +0 -1
  454. package/dist/lib/registry.d.ts.map +0 -1
  455. package/dist/lib/registry.js.map +0 -1
  456. package/dist/lib/resources.d.ts.map +0 -1
  457. package/dist/lib/resources.js.map +0 -1
  458. package/dist/lib/rotate.d.ts.map +0 -1
  459. package/dist/lib/rotate.js.map +0 -1
  460. package/dist/lib/routines.d.ts.map +0 -1
  461. package/dist/lib/routines.js.map +0 -1
  462. package/dist/lib/runner.d.ts.map +0 -1
  463. package/dist/lib/runner.js.map +0 -1
  464. package/dist/lib/sandbox.d.ts.map +0 -1
  465. package/dist/lib/sandbox.js.map +0 -1
  466. package/dist/lib/scheduler.d.ts.map +0 -1
  467. package/dist/lib/scheduler.js.map +0 -1
  468. package/dist/lib/secrets-bundles.d.ts.map +0 -1
  469. package/dist/lib/secrets-bundles.js.map +0 -1
  470. package/dist/lib/secrets.d.ts +0 -27
  471. package/dist/lib/secrets.d.ts.map +0 -1
  472. package/dist/lib/secrets.js +0 -127
  473. package/dist/lib/secrets.js.map +0 -1
  474. package/dist/lib/session/__tests__/db.test.d.ts +0 -2
  475. package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
  476. package/dist/lib/session/__tests__/db.test.js +0 -54
  477. package/dist/lib/session/__tests__/db.test.js.map +0 -1
  478. package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
  479. package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
  480. package/dist/lib/session/__tests__/discover.test.js +0 -63
  481. package/dist/lib/session/__tests__/discover.test.js.map +0 -1
  482. package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
  483. package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
  484. package/dist/lib/session/__tests__/prompt.test.js +0 -44
  485. package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
  486. package/dist/lib/session/__tests__/render.test.d.ts +0 -2
  487. package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
  488. package/dist/lib/session/__tests__/render.test.js +0 -602
  489. package/dist/lib/session/__tests__/render.test.js.map +0 -1
  490. package/dist/lib/session/artifacts.d.ts.map +0 -1
  491. package/dist/lib/session/artifacts.js.map +0 -1
  492. package/dist/lib/session/db.d.ts.map +0 -1
  493. package/dist/lib/session/db.js.map +0 -1
  494. package/dist/lib/session/discover.d.ts.map +0 -1
  495. package/dist/lib/session/discover.js.map +0 -1
  496. package/dist/lib/session/parse.d.ts.map +0 -1
  497. package/dist/lib/session/parse.js.map +0 -1
  498. package/dist/lib/session/prompt.d.ts.map +0 -1
  499. package/dist/lib/session/prompt.js.map +0 -1
  500. package/dist/lib/session/prompt.test.d.ts +0 -2
  501. package/dist/lib/session/prompt.test.d.ts.map +0 -1
  502. package/dist/lib/session/prompt.test.js +0 -57
  503. package/dist/lib/session/prompt.test.js.map +0 -1
  504. package/dist/lib/session/render.d.ts.map +0 -1
  505. package/dist/lib/session/render.js.map +0 -1
  506. package/dist/lib/session/team-filter.d.ts.map +0 -1
  507. package/dist/lib/session/team-filter.js.map +0 -1
  508. package/dist/lib/session/team-filter.test.d.ts +0 -2
  509. package/dist/lib/session/team-filter.test.d.ts.map +0 -1
  510. package/dist/lib/session/team-filter.test.js +0 -157
  511. package/dist/lib/session/team-filter.test.js.map +0 -1
  512. package/dist/lib/session/types.d.ts.map +0 -1
  513. package/dist/lib/session/types.js.map +0 -1
  514. package/dist/lib/shims.d.ts.map +0 -1
  515. package/dist/lib/shims.js.map +0 -1
  516. package/dist/lib/skills.d.ts.map +0 -1
  517. package/dist/lib/skills.js.map +0 -1
  518. package/dist/lib/state.d.ts.map +0 -1
  519. package/dist/lib/state.js.map +0 -1
  520. package/dist/lib/subagents.d.ts.map +0 -1
  521. package/dist/lib/subagents.js.map +0 -1
  522. package/dist/lib/teams/agents.d.ts.map +0 -1
  523. package/dist/lib/teams/agents.js.map +0 -1
  524. package/dist/lib/teams/api.d.ts.map +0 -1
  525. package/dist/lib/teams/api.js.map +0 -1
  526. package/dist/lib/teams/cloud.d.ts +0 -11
  527. package/dist/lib/teams/cloud.d.ts.map +0 -1
  528. package/dist/lib/teams/cloud.js +0 -169
  529. package/dist/lib/teams/cloud.js.map +0 -1
  530. package/dist/lib/teams/debug.d.ts.map +0 -1
  531. package/dist/lib/teams/debug.js.map +0 -1
  532. package/dist/lib/teams/file_ops.d.ts.map +0 -1
  533. package/dist/lib/teams/file_ops.js.map +0 -1
  534. package/dist/lib/teams/parsers.d.ts.map +0 -1
  535. package/dist/lib/teams/parsers.js.map +0 -1
  536. package/dist/lib/teams/persistence.d.ts.map +0 -1
  537. package/dist/lib/teams/persistence.js.map +0 -1
  538. package/dist/lib/teams/ralph.d.ts +0 -8
  539. package/dist/lib/teams/ralph.d.ts.map +0 -1
  540. package/dist/lib/teams/ralph.js +0 -59
  541. package/dist/lib/teams/ralph.js.map +0 -1
  542. package/dist/lib/teams/registry.d.ts.map +0 -1
  543. package/dist/lib/teams/registry.js.map +0 -1
  544. package/dist/lib/teams/summarizer.d.ts.map +0 -1
  545. package/dist/lib/teams/summarizer.js.map +0 -1
  546. package/dist/lib/template.d.ts.map +0 -1
  547. package/dist/lib/template.js.map +0 -1
  548. package/dist/lib/types.d.ts.map +0 -1
  549. package/dist/lib/types.js.map +0 -1
  550. package/dist/lib/usage.d.ts.map +0 -1
  551. package/dist/lib/usage.js.map +0 -1
  552. package/dist/lib/versions.d.ts.map +0 -1
  553. package/dist/lib/versions.js.map +0 -1
  554. package/scripts/rebuild-sqlite.sh +0 -46
@@ -1,16 +1,25 @@
1
+ /**
2
+ * Skill management -- discovery, installation, and syncing of SKILL.md bundles.
3
+ *
4
+ * Skills are knowledge packs stored in ~/.agents/skills/. Each skill directory
5
+ * contains a SKILL.md (with frontmatter metadata) and optional supporting files
6
+ * (rules/, examples/, etc.). This module handles parsing skill metadata,
7
+ * installing skills into agent version homes, and tracking installation state.
8
+ */
1
9
  import * as fs from 'fs';
2
10
  import * as path from 'path';
3
11
  import * as os from 'os';
4
12
  import * as yaml from 'yaml';
5
13
  import { SKILLS_CAPABLE_AGENTS, ensureSkillsDir } from './agents.js';
6
- import { getAgentsDir, getProjectAgentsDir } from './state.js';
14
+ import { getUserSkillsDir, getSkillsDir as getSystemSkillsDir, getProjectAgentsDir, getEnabledExtraRepos } from './state.js';
7
15
  import { getEffectiveHome, getVersionHomePath, listInstalledVersions } from './versions.js';
8
16
  const HOME = os.homedir();
17
+ /** User-scoped skills dir (~/.agents/skills/). Used for installs. */
9
18
  export function getSkillsDir() {
10
- return path.join(getAgentsDir(), 'skills');
19
+ return getUserSkillsDir();
11
20
  }
12
21
  export function ensureCentralSkillsDir() {
13
- const dir = getSkillsDir();
22
+ const dir = getUserSkillsDir();
14
23
  if (!fs.existsSync(dir)) {
15
24
  fs.mkdirSync(dir, { recursive: true });
16
25
  }
@@ -317,17 +326,60 @@ export function skillContentMatches(agentId, skillName, sourcePath) {
317
326
  }
318
327
  }
319
328
  /**
320
- * List skill names in the central ~/.agents/skills/ directory.
329
+ * List skill names from user (~/.agents/skills/) and system (~/.agents-system/skills/) dirs.
330
+ * User dir takes priority; deduplication preserves first occurrence.
321
331
  */
322
332
  export function listCentralSkills() {
323
- const dir = getSkillsDir();
324
- if (!fs.existsSync(dir))
325
- return [];
326
- return fs.readdirSync(dir, { withFileTypes: true })
327
- .filter((e) => e.isDirectory() && !e.name.startsWith('.'))
328
- .filter((e) => fs.existsSync(path.join(dir, e.name, 'SKILL.md')))
329
- .map((e) => e.name)
330
- .sort();
333
+ const seen = new Set();
334
+ for (const dir of [getUserSkillsDir(), getSystemSkillsDir()]) {
335
+ if (!fs.existsSync(dir))
336
+ continue;
337
+ for (const e of fs.readdirSync(dir, { withFileTypes: true })) {
338
+ if (!e.isDirectory() || e.name.startsWith('.'))
339
+ continue;
340
+ if (!fs.existsSync(path.join(dir, e.name, 'SKILL.md')))
341
+ continue;
342
+ seen.add(e.name);
343
+ }
344
+ }
345
+ return Array.from(seen).sort();
346
+ }
347
+ /**
348
+ * Resolve a skill name to its source directory. Searches user dir first,
349
+ * then system dir, then extra repos. Returns null if no source has a SKILL.md.
350
+ */
351
+ export function resolveSkillSourcePath(skillName) {
352
+ for (const dir of [getUserSkillsDir(), getSystemSkillsDir()]) {
353
+ const candidate = path.join(dir, skillName);
354
+ if (fs.existsSync(path.join(candidate, 'SKILL.md')))
355
+ return candidate;
356
+ }
357
+ for (const extra of getEnabledExtraRepos()) {
358
+ const candidate = path.join(extra.dir, 'skills', skillName);
359
+ if (fs.existsSync(path.join(candidate, 'SKILL.md')))
360
+ return candidate;
361
+ }
362
+ return null;
363
+ }
364
+ /**
365
+ * Union of skill names available across the primary and all enabled extras.
366
+ * Primary wins on name collision.
367
+ */
368
+ export function listAllSkills() {
369
+ const seen = new Set(listCentralSkills());
370
+ for (const extra of getEnabledExtraRepos()) {
371
+ const dir = path.join(extra.dir, 'skills');
372
+ if (!fs.existsSync(dir))
373
+ continue;
374
+ for (const e of fs.readdirSync(dir, { withFileTypes: true })) {
375
+ if (!e.isDirectory() || e.name.startsWith('.'))
376
+ continue;
377
+ if (!fs.existsSync(path.join(dir, e.name, 'SKILL.md')))
378
+ continue;
379
+ seen.add(e.name);
380
+ }
381
+ }
382
+ return Array.from(seen).sort();
331
383
  }
332
384
  /**
333
385
  * Path to the skills dir of a specific version home (not the active one).
@@ -354,35 +406,35 @@ export function listSkillsInVersionHome(agent, version) {
354
406
  */
355
407
  function versionSkillMatches(agent, version, skillName) {
356
408
  const installedPath = path.join(getVersionSkillsDir(agent, version), skillName);
357
- const centralPath = path.join(getSkillsDir(), skillName);
358
- if (!fs.existsSync(installedPath) || !fs.existsSync(centralPath))
409
+ const sourcePath = resolveSkillSourcePath(skillName);
410
+ if (!fs.existsSync(installedPath) || !sourcePath)
359
411
  return false;
360
412
  const installedSkillMd = path.join(installedPath, 'SKILL.md');
361
- const centralSkillMd = path.join(centralPath, 'SKILL.md');
362
- if (!fs.existsSync(installedSkillMd) || !fs.existsSync(centralSkillMd))
413
+ const sourceSkillMd = path.join(sourcePath, 'SKILL.md');
414
+ if (!fs.existsSync(installedSkillMd) || !fs.existsSync(sourceSkillMd))
363
415
  return false;
364
416
  try {
365
417
  if (normalizeContent(fs.readFileSync(installedSkillMd, 'utf-8')) !==
366
- normalizeContent(fs.readFileSync(centralSkillMd, 'utf-8'))) {
418
+ normalizeContent(fs.readFileSync(sourceSkillMd, 'utf-8'))) {
367
419
  return false;
368
420
  }
369
421
  }
370
422
  catch {
371
423
  return false;
372
424
  }
373
- return directoriesMatch(path.join(installedPath, 'rules'), path.join(centralPath, 'rules'));
425
+ return directoriesMatch(path.join(installedPath, 'rules'), path.join(sourcePath, 'rules'));
374
426
  }
375
427
  /**
376
428
  * Compare a version home's skills against central. Returns the reconciliation diff.
377
429
  */
378
430
  export function diffVersionSkills(agent, version) {
379
- const central = new Set(listCentralSkills());
431
+ const available = new Set(listAllSkills());
380
432
  const installed = new Set(listSkillsInVersionHome(agent, version));
381
433
  const toAdd = [];
382
434
  const toUpdate = [];
383
435
  const matched = [];
384
436
  const orphans = [];
385
- for (const name of central) {
437
+ for (const name of available) {
386
438
  if (!installed.has(name)) {
387
439
  toAdd.push(name);
388
440
  }
@@ -394,7 +446,7 @@ export function diffVersionSkills(agent, version) {
394
446
  }
395
447
  }
396
448
  for (const name of installed) {
397
- if (!central.has(name))
449
+ if (!available.has(name))
398
450
  orphans.push(name);
399
451
  }
400
452
  return { agent, version, toAdd: toAdd.sort(), toUpdate: toUpdate.sort(), matched, orphans: orphans.sort() };
@@ -439,9 +491,9 @@ function walkRelativeFiles(base) {
439
491
  * local secrets.
440
492
  */
441
493
  export function installSkillToVersion(agent, version, skillName, method = 'copy') {
442
- const centralPath = path.join(getSkillsDir(), skillName);
443
- if (!fs.existsSync(centralPath)) {
444
- return { success: false, error: `Skill '${skillName}' not found in central` };
494
+ const sourcePath = resolveSkillSourcePath(skillName);
495
+ if (!sourcePath) {
496
+ return { success: false, error: `Skill '${skillName}' not found in central or any extra repo` };
445
497
  }
446
498
  const skillsDir = getVersionSkillsDir(agent, version);
447
499
  if (!fs.existsSync(skillsDir)) {
@@ -449,15 +501,15 @@ export function installSkillToVersion(agent, version, skillName, method = 'copy'
449
501
  }
450
502
  const target = path.join(skillsDir, skillName);
451
503
  // Snapshot files unique to the version home so we can restore them after
452
- // the fresh copy (copy mode only; symlink shares central so there's nothing
453
- // local to preserve — and writing a .env into a symlinked skill would
454
- // pollute the git-tracked central dir anyway).
504
+ // the fresh copy (copy mode only; symlink shares the source so there's
505
+ // nothing local to preserve — and writing a .env into a symlinked skill
506
+ // would pollute the git-tracked source dir anyway).
455
507
  const preserved = [];
456
508
  if (method === 'copy' && fs.existsSync(target) && !fs.lstatSync(target).isSymbolicLink()) {
457
- const centralFiles = walkRelativeFiles(centralPath);
509
+ const sourceFiles = walkRelativeFiles(sourcePath);
458
510
  const installedFiles = walkRelativeFiles(target);
459
511
  for (const rel of installedFiles) {
460
- if (centralFiles.has(rel))
512
+ if (sourceFiles.has(rel))
461
513
  continue;
462
514
  try {
463
515
  const abs = path.join(target, rel);
@@ -482,10 +534,10 @@ export function installSkillToVersion(agent, version, skillName, method = 'copy'
482
534
  }
483
535
  try {
484
536
  if (method === 'symlink') {
485
- fs.symlinkSync(centralPath, target, 'dir');
537
+ fs.symlinkSync(sourcePath, target, 'dir');
486
538
  }
487
539
  else {
488
- fs.cpSync(centralPath, target, { recursive: true });
540
+ fs.cpSync(sourcePath, target, { recursive: true });
489
541
  }
490
542
  }
491
543
  catch (err) {
@@ -568,34 +620,42 @@ export function uninstallSkill(skillName) {
568
620
  }
569
621
  export function listInstalledSkills() {
570
622
  const skills = new Map();
571
- const centralDir = getSkillsDir();
572
- if (!fs.existsSync(centralDir)) {
573
- return skills;
574
- }
575
- try {
576
- const entries = fs.readdirSync(centralDir, { withFileTypes: true });
577
- for (const entry of entries) {
578
- if (!entry.isDirectory())
579
- continue;
580
- // Skip hidden directories (e.g., .system)
581
- if (entry.name.startsWith('.'))
582
- continue;
583
- const skillDir = path.join(centralDir, entry.name);
584
- const metadata = parseSkillMetadata(skillDir);
585
- const validation = validateSkillMetadata(metadata, entry.name);
586
- if (metadata) {
587
- skills.set(entry.name, {
588
- name: entry.name,
589
- path: skillDir,
590
- metadata,
591
- ruleCount: countSkillRules(skillDir),
592
- validation,
593
- });
623
+ const scan = (dir, source) => {
624
+ if (!fs.existsSync(dir))
625
+ return;
626
+ try {
627
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
628
+ for (const entry of entries) {
629
+ if (!entry.isDirectory())
630
+ continue;
631
+ // Skip hidden directories (e.g., .system)
632
+ if (entry.name.startsWith('.'))
633
+ continue;
634
+ // Primary wins on name collisions.
635
+ if (skills.has(entry.name))
636
+ continue;
637
+ const skillDir = path.join(dir, entry.name);
638
+ const metadata = parseSkillMetadata(skillDir);
639
+ const validation = validateSkillMetadata(metadata, entry.name);
640
+ if (metadata) {
641
+ skills.set(entry.name, {
642
+ name: entry.name,
643
+ path: skillDir,
644
+ metadata,
645
+ ruleCount: countSkillRules(skillDir),
646
+ validation,
647
+ source,
648
+ });
649
+ }
594
650
  }
595
651
  }
596
- }
597
- catch {
598
- // Ignore errors
652
+ catch {
653
+ // Ignore errors
654
+ }
655
+ };
656
+ scan(getSkillsDir());
657
+ for (const extra of getEnabledExtraRepos()) {
658
+ scan(path.join(extra.dir, 'skills'), extra.alias);
599
659
  }
600
660
  return skills;
601
661
  }
@@ -710,26 +770,29 @@ export function listInstalledSkillsWithScope(agentId, cwd = process.cwd(), optio
710
770
  return results;
711
771
  }
712
772
  export function getSkillInfo(skillName) {
713
- const centralPath = path.join(getSkillsDir(), skillName);
714
- if (!fs.existsSync(centralPath)) {
773
+ const sourcePath = resolveSkillSourcePath(skillName);
774
+ if (!sourcePath) {
715
775
  return null;
716
776
  }
717
- const metadata = parseSkillMetadata(centralPath);
777
+ const metadata = parseSkillMetadata(sourcePath);
718
778
  const validation = validateSkillMetadata(metadata, skillName);
719
779
  if (!metadata) {
720
780
  return null;
721
781
  }
722
782
  return {
723
783
  name: skillName,
724
- path: centralPath,
784
+ path: sourcePath,
725
785
  metadata,
726
- ruleCount: countSkillRules(centralPath),
786
+ ruleCount: countSkillRules(sourcePath),
727
787
  validation,
728
788
  };
729
789
  }
730
790
  export function getSkillRules(skillName) {
731
- const centralPath = path.join(getSkillsDir(), skillName);
732
- const rulesDir = path.join(centralPath, 'rules');
791
+ const sourcePath = resolveSkillSourcePath(skillName);
792
+ if (!sourcePath) {
793
+ return [];
794
+ }
795
+ const rulesDir = path.join(sourcePath, 'rules');
733
796
  if (!fs.existsSync(rulesDir)) {
734
797
  return [];
735
798
  }
@@ -780,4 +843,3 @@ export function installSkillCentrally(sourcePath, skillName) {
780
843
  return { success: false, error: `Failed to copy skill: ${err.message}` };
781
844
  }
782
845
  }
783
- //# sourceMappingURL=skills.js.map
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Runtime-aware compatibility shim for SQLite.
3
+ *
4
+ * Picks `bun:sqlite` under Bun and `node:sqlite` under Node (>=22.5). Avoids
5
+ * the native `better-sqlite3` addon entirely so there is no prebuild compile
6
+ * and no Node/Bun ABI mismatch when the same source runs in tests (Bun) and
7
+ * production (Node).
8
+ *
9
+ * Exposes the small better-sqlite3-shaped surface area the rest of the
10
+ * codebase already uses: `prepare/exec/pragma/transaction/close` on the DB,
11
+ * `run/get/all` on statements.
12
+ */
13
+ interface NativeStmt {
14
+ run(...args: unknown[]): RunResult;
15
+ get(...args: unknown[]): unknown;
16
+ all(...args: unknown[]): unknown[];
17
+ }
18
+ export interface RunResult {
19
+ changes: number | bigint;
20
+ lastInsertRowid: number | bigint;
21
+ }
22
+ declare class StatementImpl<_T = unknown> {
23
+ private readonly inner;
24
+ constructor(inner: NativeStmt);
25
+ run(...params: unknown[]): RunResult;
26
+ get(...params: unknown[]): unknown;
27
+ all(...params: unknown[]): unknown[];
28
+ }
29
+ declare class Database {
30
+ private readonly inner;
31
+ constructor(filename: string);
32
+ prepare<T = unknown>(sql: string): StatementImpl<T>;
33
+ exec(sql: string): void;
34
+ pragma(stmt: string): void;
35
+ transaction<Args extends unknown[], R>(fn: (...args: Args) => R): (...args: Args) => R;
36
+ close(): void;
37
+ }
38
+ declare namespace Database {
39
+ type Database = InstanceType<typeof DatabaseConstructor>;
40
+ type Statement<T = unknown> = StatementImpl<T>;
41
+ }
42
+ declare const DatabaseConstructor: typeof Database;
43
+ export default Database;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Runtime-aware compatibility shim for SQLite.
3
+ *
4
+ * Picks `bun:sqlite` under Bun and `node:sqlite` under Node (>=22.5). Avoids
5
+ * the native `better-sqlite3` addon entirely so there is no prebuild compile
6
+ * and no Node/Bun ABI mismatch when the same source runs in tests (Bun) and
7
+ * production (Node).
8
+ *
9
+ * Exposes the small better-sqlite3-shaped surface area the rest of the
10
+ * codebase already uses: `prepare/exec/pragma/transaction/close` on the DB,
11
+ * `run/get/all` on statements.
12
+ */
13
+ import { createRequire } from 'module';
14
+ const isBun = typeof globalThis.Bun !== 'undefined';
15
+ const require = createRequire(import.meta.url);
16
+ // Keep Node on createRequire() so Vitest doesn't try to prebundle the built-in
17
+ // sqlite module as a userland package during test collection.
18
+ const sqliteMod = isBun
19
+ ? await import('bun:sqlite')
20
+ : require('node:sqlite');
21
+ // bun:sqlite exports `Database`; node:sqlite exports `DatabaseSync`.
22
+ const NativeDatabase = sqliteMod.Database
23
+ ?? sqliteMod.DatabaseSync;
24
+ function bindArgs(params) {
25
+ // Both bindings accept positional `(a, b, c)` and named `({ a, b, c })`
26
+ // forms. Pass an object through unchanged so callers using named binds work.
27
+ if (params.length === 1 &&
28
+ params[0] !== null &&
29
+ typeof params[0] === 'object' &&
30
+ !Array.isArray(params[0])) {
31
+ return [params[0]];
32
+ }
33
+ return params;
34
+ }
35
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
36
+ class StatementImpl {
37
+ inner;
38
+ constructor(inner) {
39
+ this.inner = inner;
40
+ }
41
+ run(...params) {
42
+ return this.inner.run(...bindArgs(params));
43
+ }
44
+ get(...params) {
45
+ return this.inner.get(...bindArgs(params));
46
+ }
47
+ all(...params) {
48
+ return this.inner.all(...bindArgs(params));
49
+ }
50
+ }
51
+ class Database {
52
+ inner;
53
+ constructor(filename) {
54
+ this.inner = new NativeDatabase(filename);
55
+ }
56
+ prepare(sql) {
57
+ return new StatementImpl(this.inner.prepare(sql));
58
+ }
59
+ exec(sql) {
60
+ this.inner.exec(sql);
61
+ }
62
+ // node:sqlite has no dedicated `pragma()` and bun:sqlite's signature differs
63
+ // slightly from better-sqlite3. `exec('PRAGMA ...')` works on both and is
64
+ // sufficient for the setter pragmas (`journal_mode = WAL`) used here.
65
+ // Reader pragmas in this codebase use `db.prepare(...).all()`.
66
+ pragma(stmt) {
67
+ this.inner.exec(`PRAGMA ${stmt}`);
68
+ }
69
+ // Wrap fn in BEGIN/COMMIT, ROLLBACK on throw. Manual on both runtimes
70
+ // because node:sqlite has no `db.transaction(fn)` and the manual form is
71
+ // identical in shape to what better-sqlite3 / bun:sqlite produce.
72
+ transaction(fn) {
73
+ return (...args) => {
74
+ this.inner.exec('BEGIN');
75
+ try {
76
+ const result = fn(...args);
77
+ this.inner.exec('COMMIT');
78
+ return result;
79
+ }
80
+ catch (err) {
81
+ try {
82
+ this.inner.exec('ROLLBACK');
83
+ }
84
+ catch { /* original error wins */ }
85
+ throw err;
86
+ }
87
+ };
88
+ }
89
+ close() {
90
+ this.inner.close();
91
+ }
92
+ }
93
+ const DatabaseConstructor = Database;
94
+ export default Database;
@@ -1,53 +1,138 @@
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 type { Meta } from './types.js';
13
+ /** Root of the system data directory (~/.agents-system/). Legacy alias — prefer getSystemAgentsDir(). */
2
14
  export declare function getAgentsDir(): string;
15
+ /** Root of the system data directory (~/.agents-system/). */
16
+ export declare function getSystemAgentsDir(): string;
17
+ /** Root of the user repo (~/.agents/). Always present after ensureAgentsDir(). */
18
+ export declare function getUserAgentsDir(): string;
19
+ /**
20
+ * Backward-compat shim. Returns null when ~/.agents/ is a symlink to the
21
+ * system dir; otherwise returns USER_AGENTS_DIR.
22
+ *
23
+ * @deprecated Use getUserAgentsDir() directly.
24
+ */
25
+ export declare function getOptionalUserAgentsDir(): string | null;
26
+ /** Walk up from startPath to find a project-scoped .agents/ directory (skipping both roots). */
3
27
  export declare function getProjectAgentsDir(startPath?: string): string | null;
28
+ /** Return all .agents/ directories in scope: project, user, then system. */
4
29
  export declare function getScopedAgentsDirs(startPath?: string): Array<{
5
- scope: 'project' | 'user';
30
+ scope: 'project' | 'user' | 'system';
6
31
  path: string;
7
32
  }>;
33
+ /** Path to slash command markdown files — system repo. */
34
+ export declare function getCommandsDir(): string;
35
+ /** Path to hook script directories — system repo. */
36
+ export declare function getHooksDir(): string;
37
+ /** Path to skill bundles — system repo. */
38
+ export declare function getSkillsDir(): string;
39
+ /** Path to the canonical rules directory — system repo. */
40
+ export declare function getRulesDir(): string;
41
+ /** Back-compat export; resolves to system rules dir. */
42
+ export declare function getMemoryDir(): string;
43
+ /**
44
+ * Read-side resolution for the canonical rules dir.
45
+ *
46
+ * Returns SYSTEM_RULES_DIR normally. Falls back to the legacy
47
+ * SYSTEM_LEGACY_MEMORY_DIR (~/.agents-system/memory/) only when the upstream
48
+ * still uses the old layout and the user hasn't pulled the rename yet —
49
+ * detected by absence of rules/AGENTS.md and presence of memory/AGENTS.md.
50
+ *
51
+ * Prints a single warning per process the first time the fallback fires.
52
+ * Per the read-only system-repo invariant, this never moves files; the rename
53
+ * is applied when the user pulls upstream.
54
+ */
55
+ export declare function getResolvedRulesDir(): string;
56
+ /** Path to MCP server YAML configs — system repo. */
57
+ export declare function getMcpDir(): string;
58
+ /** Path to permission group YAML files — system repo. */
59
+ export declare function getPermissionsDir(): string;
60
+ /** Path to subagent definition directories — system repo. */
61
+ export declare function getSubagentsDir(): string;
62
+ /** Path to encrypted secret bundles — system repo. */
63
+ export declare function getSecretsDir(): string;
64
+ /** Path to ~/.agents-system/promptcuts.yaml. */
65
+ export declare function getPromptcutsPath(): string;
66
+ /** Path to the legacy MCP config JSON. */
67
+ export declare function getMcpConfigPath(): string;
68
+ /** Path to the global instructions file. */
69
+ export declare function getInstructionsPath(): string;
70
+ export declare function getSystemCommandsDir(): string;
71
+ export declare function getSystemHooksDir(): string;
72
+ export declare function getSystemSkillsDir(): string;
73
+ export declare function getSystemRulesDir(): string;
74
+ export declare function getSystemMcpDir(): string;
75
+ export declare function getSystemPermissionsDir(): string;
76
+ export declare function getSystemSubagentsDir(): string;
77
+ export declare function getSystemSecretsDir(): string;
78
+ export declare function getSystemPromptcutsPath(): string;
79
+ export declare function getUserCommandsDir(): string;
80
+ export declare function getUserHooksDir(): string;
81
+ export declare function getUserSkillsDir(): string;
82
+ export declare function getUserRulesDir(): string;
83
+ export declare function getUserMcpDir(): string;
84
+ export declare function getUserPermissionsDir(): string;
85
+ export declare function getUserSubagentsDir(): string;
86
+ export declare function getUserSecretsDir(): string;
87
+ export declare function getUserPromptcutsPath(): string;
88
+ /** Path to cloned packages (~/.agents-system/packages/). */
8
89
  export declare function getPackagesDir(): string;
90
+ /** Path to routine YAML definitions (~/.agents-system/routines/). */
9
91
  export declare function getRoutinesDir(): string;
92
+ /** Path to routine execution logs (~/.agents-system/runs/). */
10
93
  export declare function getRunsDir(): string;
94
+ /** Path to installed agent CLI binaries (~/.agents-system/versions/). */
11
95
  export declare function getVersionsDir(): string;
96
+ /** Path to version-switching shim scripts (~/.agents-system/shims/). */
12
97
  export declare function getShimsDir(): string;
13
- export declare function getPermissionsDir(): string;
14
- export declare function getMcpDir(): string;
98
+ /** Path to config backups (~/.agents-system/backups/). */
15
99
  export declare function getBackupsDir(): string;
16
- export declare function getSubagentsDir(): string;
100
+ /** Path to plugin bundles (~/.agents-system/plugins/). */
17
101
  export declare function getPluginsDir(): string;
102
+ /** Path to synced remote session data (~/.agents-system/drive/). */
18
103
  export declare function getDriveDir(): string;
19
- export declare function getSecretsDir(): string;
20
- export declare function getCommandsDir(): string;
21
- export declare function getHooksDir(): string;
22
- export declare function getSkillsDir(): string;
23
- export declare function getMemoryDir(): string;
24
- export declare function getInstructionsPath(): string;
25
104
  /**
26
- * Path to ~/.agents/promptcuts.yaml the canonical, version-independent
27
- * source for prompt shortcuts. The expand-promptcuts hook reads directly
28
- * from this file, so it survives agent-version upgrades without any sync.
105
+ * Path to a single user-level extra DotAgent repo clone (~/.agents-<alias>/).
106
+ *
107
+ * Extra repos are user-defined config they live as peer dirs to ~/.agents/,
108
+ * not under the system repo. `agents repo add` clones here by default.
29
109
  */
30
- export declare function getPromptcutsPath(): string;
31
- export declare function getMcpConfigPath(): string;
110
+ export declare function getExtraRepoDir(alias: string): string;
111
+ /** Resolve the on-disk path for an extra repo, whether managed or user-owned. */
112
+ export declare function resolveExtraRepoDir(alias: string, config?: {
113
+ path?: string;
114
+ }): string;
115
+ /**
116
+ * Return enabled extra repos that exist on disk, in insertion order.
117
+ */
118
+ export declare function getEnabledExtraRepos(): Array<{
119
+ alias: string;
120
+ dir: string;
121
+ url: string;
122
+ }>;
123
+ /** Create both the system and user directory trees if any subdirectories are missing. */
32
124
  export declare function ensureAgentsDir(): void;
125
+ /** Return an empty Meta object used when no agents.yaml exists yet. */
33
126
  export declare function createDefaultMeta(): Meta;
127
+ /** Read and cache ~/.agents/agents.yaml, migrating from legacy locations if needed. */
34
128
  export declare function readMeta(): Meta;
129
+ /** Serialize and write agents.yaml to the user repo, invalidating the in-memory cache. */
35
130
  export declare function writeMeta(meta: Meta): void;
131
+ /** Shallow-merge updates into agents.yaml and return the new state. */
36
132
  export declare function updateMeta(updates: Partial<Meta>): Meta;
133
+ /** Derive a filesystem-safe local clone path for a package source URL. */
37
134
  export declare function getPackageLocalPath(source: string): string;
38
135
  import type { AgentId, ResourceType, VersionResources } from './types.js';
39
- /**
40
- * Record that resources were synced to a specific version.
41
- * Creates nested entries if they don't exist (handles existing installs gracefully).
42
- * Merges with existing resources (uses Set for deduplication).
43
- */
44
136
  export declare function recordVersionResources(agent: AgentId, version: string, resourceType: ResourceType, resources: string[]): void;
45
- /**
46
- * Get tracked resources for a specific version.
47
- */
48
137
  export declare function getVersionResources(agent: AgentId, version: string): VersionResources | null;
49
- /**
50
- * Clear resource tracking when a version is removed.
51
- */
52
138
  export declare function clearVersionResources(agent: AgentId, version: string): void;
53
- //# sourceMappingURL=state.d.ts.map