@swarmify/agents-cli 1.12.0 → 1.13.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 (539) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/LICENSE +21 -0
  3. package/README.md +212 -232
  4. package/dist/commands/__tests__/sessions.test.js +90 -20
  5. package/dist/commands/__tests__/sessions.test.js.map +1 -1
  6. package/dist/commands/cloud.d.ts +11 -0
  7. package/dist/commands/cloud.d.ts.map +1 -0
  8. package/dist/commands/cloud.js +363 -0
  9. package/dist/commands/cloud.js.map +1 -0
  10. package/dist/commands/commands.d.ts +9 -0
  11. package/dist/commands/commands.d.ts.map +1 -1
  12. package/dist/commands/commands.js +330 -139
  13. package/dist/commands/commands.js.map +1 -1
  14. package/dist/commands/daemon.d.ts +8 -0
  15. package/dist/commands/daemon.d.ts.map +1 -1
  16. package/dist/commands/daemon.js +38 -222
  17. package/dist/commands/daemon.js.map +1 -1
  18. package/dist/commands/drive.d.ts +8 -0
  19. package/dist/commands/drive.d.ts.map +1 -1
  20. package/dist/commands/drive.js +70 -7
  21. package/dist/commands/drive.js.map +1 -1
  22. package/dist/commands/exec.d.ts +9 -1
  23. package/dist/commands/exec.d.ts.map +1 -1
  24. package/dist/commands/exec.js +198 -24
  25. package/dist/commands/exec.js.map +1 -1
  26. package/dist/commands/factory.d.ts +11 -0
  27. package/dist/commands/factory.d.ts.map +1 -0
  28. package/dist/commands/factory.js +445 -0
  29. package/dist/commands/factory.js.map +1 -0
  30. package/dist/commands/fork.d.ts +8 -0
  31. package/dist/commands/fork.d.ts.map +1 -1
  32. package/dist/commands/fork.js +38 -4
  33. package/dist/commands/fork.js.map +1 -1
  34. package/dist/commands/hooks.d.ts +9 -0
  35. package/dist/commands/hooks.d.ts.map +1 -1
  36. package/dist/commands/hooks.js +252 -18
  37. package/dist/commands/hooks.js.map +1 -1
  38. package/dist/commands/init.d.ts +15 -0
  39. package/dist/commands/init.d.ts.map +1 -0
  40. package/dist/commands/init.js +137 -0
  41. package/dist/commands/init.js.map +1 -0
  42. package/dist/commands/mcp.d.ts +9 -0
  43. package/dist/commands/mcp.d.ts.map +1 -1
  44. package/dist/commands/mcp.js +250 -169
  45. package/dist/commands/mcp.js.map +1 -1
  46. package/dist/commands/models.d.ts +11 -0
  47. package/dist/commands/models.d.ts.map +1 -0
  48. package/dist/commands/models.js +170 -0
  49. package/dist/commands/models.js.map +1 -0
  50. package/dist/commands/packages.d.ts +8 -0
  51. package/dist/commands/packages.d.ts.map +1 -1
  52. package/dist/commands/packages.js +155 -14
  53. package/dist/commands/packages.js.map +1 -1
  54. package/dist/commands/permissions.d.ts +9 -0
  55. package/dist/commands/permissions.d.ts.map +1 -1
  56. package/dist/commands/permissions.js +72 -13
  57. package/dist/commands/permissions.js.map +1 -1
  58. package/dist/commands/plugins.d.ts +8 -0
  59. package/dist/commands/plugins.d.ts.map +1 -1
  60. package/dist/commands/plugins.js +265 -44
  61. package/dist/commands/plugins.js.map +1 -1
  62. package/dist/commands/profiles.d.ts +12 -0
  63. package/dist/commands/profiles.d.ts.map +1 -0
  64. package/dist/commands/profiles.js +255 -0
  65. package/dist/commands/profiles.js.map +1 -0
  66. package/dist/commands/pty.d.ts +1 -0
  67. package/dist/commands/pty.d.ts.map +1 -1
  68. package/dist/commands/pty.js +133 -22
  69. package/dist/commands/pty.js.map +1 -1
  70. package/dist/commands/pull.d.ts +8 -0
  71. package/dist/commands/pull.d.ts.map +1 -1
  72. package/dist/commands/pull.js +103 -14
  73. package/dist/commands/pull.js.map +1 -1
  74. package/dist/commands/push.d.ts +8 -0
  75. package/dist/commands/push.d.ts.map +1 -1
  76. package/dist/commands/push.js +37 -3
  77. package/dist/commands/push.js.map +1 -1
  78. package/dist/commands/refresh-memory.d.ts +16 -0
  79. package/dist/commands/refresh-memory.d.ts.map +1 -0
  80. package/dist/commands/refresh-memory.js +52 -0
  81. package/dist/commands/refresh-memory.js.map +1 -0
  82. package/dist/commands/resource-view.d.ts +39 -0
  83. package/dist/commands/resource-view.d.ts.map +1 -0
  84. package/dist/commands/resource-view.js +197 -0
  85. package/dist/commands/resource-view.js.map +1 -0
  86. package/dist/commands/routines.d.ts +8 -0
  87. package/dist/commands/routines.d.ts.map +1 -1
  88. package/dist/commands/routines.js +163 -34
  89. package/dist/commands/routines.js.map +1 -1
  90. package/dist/commands/rules.d.ts +9 -0
  91. package/dist/commands/rules.d.ts.map +1 -1
  92. package/dist/commands/rules.js +83 -12
  93. package/dist/commands/rules.js.map +1 -1
  94. package/dist/commands/secrets.d.ts +11 -0
  95. package/dist/commands/secrets.d.ts.map +1 -0
  96. package/dist/commands/secrets.js +352 -0
  97. package/dist/commands/secrets.js.map +1 -0
  98. package/dist/commands/sessions-picker.d.ts +18 -0
  99. package/dist/commands/sessions-picker.d.ts.map +1 -0
  100. package/dist/commands/sessions-picker.js +265 -0
  101. package/dist/commands/sessions-picker.js.map +1 -0
  102. package/dist/commands/sessions.d.ts +15 -0
  103. package/dist/commands/sessions.d.ts.map +1 -1
  104. package/dist/commands/sessions.js +700 -263
  105. package/dist/commands/sessions.js.map +1 -1
  106. package/dist/commands/skills.d.ts +9 -0
  107. package/dist/commands/skills.d.ts.map +1 -1
  108. package/dist/commands/skills.js +355 -233
  109. package/dist/commands/skills.js.map +1 -1
  110. package/dist/commands/status.d.ts +7 -0
  111. package/dist/commands/status.d.ts.map +1 -1
  112. package/dist/commands/status.js +7 -0
  113. package/dist/commands/status.js.map +1 -1
  114. package/dist/commands/subagents.d.ts +8 -0
  115. package/dist/commands/subagents.d.ts.map +1 -1
  116. package/dist/commands/subagents.js +214 -74
  117. package/dist/commands/subagents.js.map +1 -1
  118. package/dist/commands/sync.d.ts +8 -0
  119. package/dist/commands/sync.d.ts.map +1 -1
  120. package/dist/commands/sync.js +15 -7
  121. package/dist/commands/sync.js.map +1 -1
  122. package/dist/commands/teams-picker.d.ts +18 -0
  123. package/dist/commands/teams-picker.d.ts.map +1 -0
  124. package/dist/commands/teams-picker.js +290 -0
  125. package/dist/commands/teams-picker.js.map +1 -0
  126. package/dist/commands/teams.d.ts +18 -0
  127. package/dist/commands/teams.d.ts.map +1 -0
  128. package/dist/commands/teams.js +1098 -0
  129. package/dist/commands/teams.js.map +1 -0
  130. package/dist/commands/utils.d.ts +20 -0
  131. package/dist/commands/utils.d.ts.map +1 -1
  132. package/dist/commands/utils.js +34 -0
  133. package/dist/commands/utils.js.map +1 -1
  134. package/dist/commands/versions.d.ts +8 -0
  135. package/dist/commands/versions.d.ts.map +1 -1
  136. package/dist/commands/versions.js +71 -8
  137. package/dist/commands/versions.js.map +1 -1
  138. package/dist/commands/view.d.ts +36 -1
  139. package/dist/commands/view.d.ts.map +1 -1
  140. package/dist/commands/view.js +375 -15
  141. package/dist/commands/view.js.map +1 -1
  142. package/dist/index.d.ts +6 -0
  143. package/dist/index.d.ts.map +1 -1
  144. package/dist/index.js +136 -51
  145. package/dist/index.js.map +1 -1
  146. package/dist/lib/__tests__/bugfixes.test.js +3 -3
  147. package/dist/lib/__tests__/bugfixes.test.js.map +1 -1
  148. package/dist/lib/__tests__/exec.test.js +125 -19
  149. package/dist/lib/__tests__/exec.test.js.map +1 -1
  150. package/dist/lib/__tests__/hooks.test.d.ts +2 -0
  151. package/dist/lib/__tests__/hooks.test.d.ts.map +1 -0
  152. package/dist/lib/__tests__/hooks.test.js +203 -0
  153. package/dist/lib/__tests__/hooks.test.js.map +1 -0
  154. package/dist/lib/__tests__/memory-compile.test.d.ts +2 -0
  155. package/dist/lib/__tests__/memory-compile.test.d.ts.map +1 -0
  156. package/dist/lib/__tests__/memory-compile.test.js +95 -0
  157. package/dist/lib/__tests__/memory-compile.test.js.map +1 -0
  158. package/dist/lib/__tests__/models.test.d.ts +2 -0
  159. package/dist/lib/__tests__/models.test.d.ts.map +1 -0
  160. package/dist/lib/__tests__/models.test.js +239 -0
  161. package/dist/lib/__tests__/models.test.js.map +1 -0
  162. package/dist/lib/__tests__/rotate.test.d.ts +2 -0
  163. package/dist/lib/__tests__/rotate.test.d.ts.map +1 -0
  164. package/dist/lib/__tests__/rotate.test.js +80 -0
  165. package/dist/lib/__tests__/rotate.test.js.map +1 -0
  166. package/dist/lib/__tests__/secrets-bundles.test.d.ts +2 -0
  167. package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +1 -0
  168. package/dist/lib/__tests__/secrets-bundles.test.js +104 -0
  169. package/dist/lib/__tests__/secrets-bundles.test.js.map +1 -0
  170. package/dist/lib/__tests__/secrets.test.d.ts +2 -0
  171. package/dist/lib/__tests__/secrets.test.d.ts.map +1 -0
  172. package/dist/lib/__tests__/secrets.test.js +90 -0
  173. package/dist/lib/__tests__/secrets.test.js.map +1 -0
  174. package/dist/lib/__tests__/shims.test.d.ts +2 -0
  175. package/dist/lib/__tests__/shims.test.d.ts.map +1 -0
  176. package/dist/lib/__tests__/shims.test.js +39 -0
  177. package/dist/lib/__tests__/shims.test.js.map +1 -0
  178. package/dist/lib/__tests__/usage.test.js +4 -2
  179. package/dist/lib/__tests__/usage.test.js.map +1 -1
  180. package/dist/lib/__tests__/versions.test.d.ts +2 -0
  181. package/dist/lib/__tests__/versions.test.d.ts.map +1 -0
  182. package/dist/lib/__tests__/versions.test.js +63 -0
  183. package/dist/lib/__tests__/versions.test.js.map +1 -0
  184. package/dist/lib/agents.d.ts +53 -1
  185. package/dist/lib/agents.d.ts.map +1 -1
  186. package/dist/lib/agents.js +178 -37
  187. package/dist/lib/agents.js.map +1 -1
  188. package/dist/lib/artifact-actions.d.ts +8 -3
  189. package/dist/lib/artifact-actions.d.ts.map +1 -1
  190. package/dist/lib/artifact-actions.js +8 -5
  191. package/dist/lib/artifact-actions.js.map +1 -1
  192. package/dist/lib/cloud/codex.d.ts +26 -0
  193. package/dist/lib/cloud/codex.d.ts.map +1 -0
  194. package/dist/lib/cloud/codex.js +237 -0
  195. package/dist/lib/cloud/codex.js.map +1 -0
  196. package/dist/lib/cloud/factory.d.ts +32 -0
  197. package/dist/lib/cloud/factory.d.ts.map +1 -0
  198. package/dist/lib/cloud/factory.js +43 -0
  199. package/dist/lib/cloud/factory.js.map +1 -0
  200. package/dist/lib/cloud/registry.d.ts +16 -0
  201. package/dist/lib/cloud/registry.d.ts.map +1 -0
  202. package/dist/lib/cloud/registry.js +68 -0
  203. package/dist/lib/cloud/registry.js.map +1 -0
  204. package/dist/lib/cloud/rush.d.ts +37 -0
  205. package/dist/lib/cloud/rush.d.ts.map +1 -0
  206. package/dist/lib/cloud/rush.js +230 -0
  207. package/dist/lib/cloud/rush.js.map +1 -0
  208. package/dist/lib/cloud/rush.test.d.ts +2 -0
  209. package/dist/lib/cloud/rush.test.d.ts.map +1 -0
  210. package/dist/lib/cloud/rush.test.js +63 -0
  211. package/dist/lib/cloud/rush.test.js.map +1 -0
  212. package/dist/lib/cloud/store.d.ts +23 -0
  213. package/dist/lib/cloud/store.d.ts.map +1 -0
  214. package/dist/lib/cloud/store.js +116 -0
  215. package/dist/lib/cloud/store.js.map +1 -0
  216. package/dist/lib/cloud/stream.d.ts +24 -0
  217. package/dist/lib/cloud/stream.d.ts.map +1 -0
  218. package/dist/lib/cloud/stream.js +145 -0
  219. package/dist/lib/cloud/stream.js.map +1 -0
  220. package/dist/lib/cloud/types.d.ts +109 -0
  221. package/dist/lib/cloud/types.d.ts.map +1 -0
  222. package/dist/lib/cloud/types.js +33 -0
  223. package/dist/lib/cloud/types.js.map +1 -0
  224. package/dist/lib/cloud/types.test.d.ts +2 -0
  225. package/dist/lib/cloud/types.test.d.ts.map +1 -0
  226. package/dist/lib/cloud/types.test.js +41 -0
  227. package/dist/lib/cloud/types.test.js.map +1 -0
  228. package/dist/lib/commands.d.ts +67 -0
  229. package/dist/lib/commands.d.ts.map +1 -1
  230. package/dist/lib/commands.js +161 -2
  231. package/dist/lib/commands.js.map +1 -1
  232. package/dist/lib/convert.d.ts +10 -0
  233. package/dist/lib/convert.d.ts.map +1 -1
  234. package/dist/lib/convert.js +9 -0
  235. package/dist/lib/convert.js.map +1 -1
  236. package/dist/lib/daemon.d.ts +21 -0
  237. package/dist/lib/daemon.d.ts.map +1 -1
  238. package/dist/lib/daemon.js +21 -0
  239. package/dist/lib/daemon.js.map +1 -1
  240. package/dist/lib/drive-sync.d.ts +18 -0
  241. package/dist/lib/drive-sync.d.ts.map +1 -1
  242. package/dist/lib/drive-sync.js +16 -0
  243. package/dist/lib/drive-sync.js.map +1 -1
  244. package/dist/lib/exec.d.ts +64 -3
  245. package/dist/lib/exec.d.ts.map +1 -1
  246. package/dist/lib/exec.js +218 -80
  247. package/dist/lib/exec.js.map +1 -1
  248. package/dist/lib/factory/__tests__/config.test.d.ts +2 -0
  249. package/dist/lib/factory/__tests__/config.test.d.ts.map +1 -0
  250. package/dist/lib/factory/__tests__/config.test.js +128 -0
  251. package/dist/lib/factory/__tests__/config.test.js.map +1 -0
  252. package/dist/lib/factory/config.d.ts +49 -0
  253. package/dist/lib/factory/config.d.ts.map +1 -0
  254. package/dist/lib/factory/config.js +127 -0
  255. package/dist/lib/factory/config.js.map +1 -0
  256. package/dist/lib/factory.js +1 -1
  257. package/dist/lib/factory.js.map +1 -1
  258. package/dist/lib/git.d.ts +16 -1
  259. package/dist/lib/git.d.ts.map +1 -1
  260. package/dist/lib/git.js +33 -4
  261. package/dist/lib/git.js.map +1 -1
  262. package/dist/lib/help.d.ts +7 -0
  263. package/dist/lib/help.d.ts.map +1 -1
  264. package/dist/lib/help.js +3 -0
  265. package/dist/lib/help.js.map +1 -1
  266. package/dist/lib/hooks.d.ts +59 -3
  267. package/dist/lib/hooks.d.ts.map +1 -1
  268. package/dist/lib/hooks.js +413 -33
  269. package/dist/lib/hooks.js.map +1 -1
  270. package/dist/lib/ledger/__tests__/local.test.d.ts +2 -0
  271. package/dist/lib/ledger/__tests__/local.test.d.ts.map +1 -0
  272. package/dist/lib/ledger/__tests__/local.test.js +177 -0
  273. package/dist/lib/ledger/__tests__/local.test.js.map +1 -0
  274. package/dist/lib/ledger/__tests__/sync.test.d.ts +2 -0
  275. package/dist/lib/ledger/__tests__/sync.test.d.ts.map +1 -0
  276. package/dist/lib/ledger/__tests__/sync.test.js +117 -0
  277. package/dist/lib/ledger/__tests__/sync.test.js.map +1 -0
  278. package/dist/lib/ledger/index.d.ts +18 -0
  279. package/dist/lib/ledger/index.d.ts.map +1 -0
  280. package/dist/lib/ledger/index.js +32 -0
  281. package/dist/lib/ledger/index.js.map +1 -0
  282. package/dist/lib/ledger/local.d.ts +22 -0
  283. package/dist/lib/ledger/local.d.ts.map +1 -0
  284. package/dist/lib/ledger/local.js +333 -0
  285. package/dist/lib/ledger/local.js.map +1 -0
  286. package/dist/lib/ledger/r2.d.ts +41 -0
  287. package/dist/lib/ledger/r2.d.ts.map +1 -0
  288. package/dist/lib/ledger/r2.js +335 -0
  289. package/dist/lib/ledger/r2.js.map +1 -0
  290. package/dist/lib/ledger/sync.d.ts +33 -0
  291. package/dist/lib/ledger/sync.d.ts.map +1 -0
  292. package/dist/lib/ledger/sync.js +106 -0
  293. package/dist/lib/ledger/sync.js.map +1 -0
  294. package/dist/lib/ledger/types.d.ts +100 -0
  295. package/dist/lib/ledger/types.d.ts.map +1 -0
  296. package/dist/lib/ledger/types.js +21 -0
  297. package/dist/lib/ledger/types.js.map +1 -0
  298. package/dist/lib/manifest.d.ts +6 -0
  299. package/dist/lib/manifest.d.ts.map +1 -1
  300. package/dist/lib/manifest.js +12 -0
  301. package/dist/lib/manifest.js.map +1 -1
  302. package/dist/lib/markdown.d.ts.map +1 -1
  303. package/dist/lib/markdown.js +6 -0
  304. package/dist/lib/markdown.js.map +1 -1
  305. package/dist/lib/mcp.d.ts +0 -9
  306. package/dist/lib/mcp.d.ts.map +1 -1
  307. package/dist/lib/mcp.js +0 -20
  308. package/dist/lib/mcp.js.map +1 -1
  309. package/dist/lib/memory-compile.d.ts +65 -0
  310. package/dist/lib/memory-compile.d.ts.map +1 -0
  311. package/dist/lib/memory-compile.js +174 -0
  312. package/dist/lib/memory-compile.js.map +1 -0
  313. package/dist/lib/memory.d.ts +8 -0
  314. package/dist/lib/memory.d.ts.map +1 -1
  315. package/dist/lib/memory.js +8 -0
  316. package/dist/lib/memory.js.map +1 -1
  317. package/dist/lib/models.d.ts +98 -0
  318. package/dist/lib/models.d.ts.map +1 -0
  319. package/dist/lib/models.js +728 -0
  320. package/dist/lib/models.js.map +1 -0
  321. package/dist/lib/permissions.d.ts +24 -1
  322. package/dist/lib/permissions.d.ts.map +1 -1
  323. package/dist/lib/permissions.js +52 -3
  324. package/dist/lib/permissions.js.map +1 -1
  325. package/dist/lib/picker.d.ts +27 -0
  326. package/dist/lib/picker.d.ts.map +1 -0
  327. package/dist/lib/picker.js +110 -0
  328. package/dist/lib/picker.js.map +1 -0
  329. package/dist/lib/plugins.d.ts +22 -0
  330. package/dist/lib/plugins.d.ts.map +1 -1
  331. package/dist/lib/plugins.js +114 -0
  332. package/dist/lib/plugins.js.map +1 -1
  333. package/dist/lib/profiles-keychain.d.ts +11 -0
  334. package/dist/lib/profiles-keychain.d.ts.map +1 -0
  335. package/dist/lib/profiles-keychain.js +14 -0
  336. package/dist/lib/profiles-keychain.js.map +1 -0
  337. package/dist/lib/profiles-presets.d.ts +25 -0
  338. package/dist/lib/profiles-presets.d.ts.map +1 -0
  339. package/dist/lib/profiles-presets.js +104 -0
  340. package/dist/lib/profiles-presets.js.map +1 -0
  341. package/dist/lib/profiles.d.ts +70 -0
  342. package/dist/lib/profiles.d.ts.map +1 -0
  343. package/dist/lib/profiles.js +145 -0
  344. package/dist/lib/profiles.js.map +1 -0
  345. package/dist/lib/pty-client.d.ts +1 -0
  346. package/dist/lib/pty-client.d.ts.map +1 -1
  347. package/dist/lib/pty-client.js.map +1 -1
  348. package/dist/lib/pty-server.d.ts +5 -0
  349. package/dist/lib/pty-server.d.ts.map +1 -1
  350. package/dist/lib/pty-server.js +5 -0
  351. package/dist/lib/pty-server.js.map +1 -1
  352. package/dist/lib/registry.d.ts +17 -0
  353. package/dist/lib/registry.d.ts.map +1 -1
  354. package/dist/lib/registry.js +17 -0
  355. package/dist/lib/registry.js.map +1 -1
  356. package/dist/lib/resources.d.ts +5 -0
  357. package/dist/lib/resources.d.ts.map +1 -1
  358. package/dist/lib/resources.js.map +1 -1
  359. package/dist/lib/rotate.d.ts +58 -0
  360. package/dist/lib/rotate.d.ts.map +1 -0
  361. package/dist/lib/rotate.js +93 -0
  362. package/dist/lib/rotate.js.map +1 -0
  363. package/dist/lib/routines.d.ts +30 -1
  364. package/dist/lib/routines.d.ts.map +1 -1
  365. package/dist/lib/routines.js +31 -4
  366. package/dist/lib/routines.js.map +1 -1
  367. package/dist/lib/runner.d.ts +14 -0
  368. package/dist/lib/runner.d.ts.map +1 -1
  369. package/dist/lib/runner.js +45 -11
  370. package/dist/lib/runner.js.map +1 -1
  371. package/dist/lib/sandbox.d.ts +16 -0
  372. package/dist/lib/sandbox.d.ts.map +1 -1
  373. package/dist/lib/sandbox.js +19 -2
  374. package/dist/lib/sandbox.js.map +1 -1
  375. package/dist/lib/scheduler.d.ts +8 -0
  376. package/dist/lib/scheduler.d.ts.map +1 -1
  377. package/dist/lib/scheduler.js +8 -0
  378. package/dist/lib/scheduler.js.map +1 -1
  379. package/dist/lib/secrets-bundles.d.ts +38 -0
  380. package/dist/lib/secrets-bundles.d.ts.map +1 -0
  381. package/dist/lib/secrets-bundles.js +176 -0
  382. package/dist/lib/secrets-bundles.js.map +1 -0
  383. package/dist/lib/secrets.d.ts +53 -0
  384. package/dist/lib/secrets.d.ts.map +1 -0
  385. package/dist/lib/secrets.js +140 -0
  386. package/dist/lib/secrets.js.map +1 -0
  387. package/dist/lib/session/__tests__/db.test.d.ts +2 -0
  388. package/dist/lib/session/__tests__/db.test.d.ts.map +1 -0
  389. package/dist/lib/session/__tests__/db.test.js +54 -0
  390. package/dist/lib/session/__tests__/db.test.js.map +1 -0
  391. package/dist/lib/session/__tests__/discover.test.js +54 -91
  392. package/dist/lib/session/__tests__/discover.test.js.map +1 -1
  393. package/dist/lib/session/__tests__/prompt.test.d.ts +2 -0
  394. package/dist/lib/session/__tests__/prompt.test.d.ts.map +1 -0
  395. package/dist/lib/session/__tests__/prompt.test.js +44 -0
  396. package/dist/lib/session/__tests__/prompt.test.js.map +1 -0
  397. package/dist/lib/session/__tests__/render.test.d.ts +2 -0
  398. package/dist/lib/session/__tests__/render.test.d.ts.map +1 -0
  399. package/dist/lib/session/__tests__/render.test.js +602 -0
  400. package/dist/lib/session/__tests__/render.test.js.map +1 -0
  401. package/dist/lib/session/artifacts.d.ts +15 -0
  402. package/dist/lib/session/artifacts.d.ts.map +1 -0
  403. package/dist/lib/session/artifacts.js +86 -0
  404. package/dist/lib/session/artifacts.js.map +1 -0
  405. package/dist/lib/session/db.d.ts +140 -0
  406. package/dist/lib/session/db.d.ts.map +1 -0
  407. package/dist/lib/session/db.js +599 -0
  408. package/dist/lib/session/db.js.map +1 -0
  409. package/dist/lib/session/discover.d.ts +44 -32
  410. package/dist/lib/session/discover.d.ts.map +1 -1
  411. package/dist/lib/session/discover.js +418 -464
  412. package/dist/lib/session/discover.js.map +1 -1
  413. package/dist/lib/session/parse.d.ts +11 -0
  414. package/dist/lib/session/parse.d.ts.map +1 -1
  415. package/dist/lib/session/parse.js +50 -0
  416. package/dist/lib/session/parse.js.map +1 -1
  417. package/dist/lib/session/prompt.d.ts +10 -0
  418. package/dist/lib/session/prompt.d.ts.map +1 -1
  419. package/dist/lib/session/prompt.js +38 -2
  420. package/dist/lib/session/prompt.js.map +1 -1
  421. package/dist/lib/session/prompt.test.d.ts +2 -0
  422. package/dist/lib/session/prompt.test.d.ts.map +1 -0
  423. package/dist/lib/session/prompt.test.js +57 -0
  424. package/dist/lib/session/prompt.test.js.map +1 -0
  425. package/dist/lib/session/render.d.ts +91 -10
  426. package/dist/lib/session/render.d.ts.map +1 -1
  427. package/dist/lib/session/render.js +708 -180
  428. package/dist/lib/session/render.js.map +1 -1
  429. package/dist/lib/session/team-filter.d.ts +35 -0
  430. package/dist/lib/session/team-filter.d.ts.map +1 -0
  431. package/dist/lib/session/team-filter.js +75 -0
  432. package/dist/lib/session/team-filter.js.map +1 -0
  433. package/dist/lib/session/team-filter.test.d.ts +2 -0
  434. package/dist/lib/session/team-filter.test.d.ts.map +1 -0
  435. package/dist/lib/session/team-filter.test.js +157 -0
  436. package/dist/lib/session/team-filter.test.js.map +1 -0
  437. package/dist/lib/session/types.d.ts +48 -6
  438. package/dist/lib/session/types.d.ts.map +1 -1
  439. package/dist/lib/session/types.js +9 -0
  440. package/dist/lib/session/types.js.map +1 -1
  441. package/dist/lib/shims.d.ts +101 -2
  442. package/dist/lib/shims.d.ts.map +1 -1
  443. package/dist/lib/shims.js +282 -25
  444. package/dist/lib/shims.js.map +1 -1
  445. package/dist/lib/skills.d.ts +68 -0
  446. package/dist/lib/skills.d.ts.map +1 -1
  447. package/dist/lib/skills.js +267 -1
  448. package/dist/lib/skills.js.map +1 -1
  449. package/dist/lib/state.d.ts +41 -2
  450. package/dist/lib/state.d.ts.map +1 -1
  451. package/dist/lib/state.js +63 -4
  452. package/dist/lib/state.js.map +1 -1
  453. package/dist/lib/subagents.d.ts +9 -0
  454. package/dist/lib/subagents.d.ts.map +1 -1
  455. package/dist/lib/subagents.js +9 -1
  456. package/dist/lib/subagents.js.map +1 -1
  457. package/dist/lib/teams/__tests__/oracle.test.d.ts +2 -0
  458. package/dist/lib/teams/__tests__/oracle.test.d.ts.map +1 -0
  459. package/dist/lib/teams/__tests__/oracle.test.js +89 -0
  460. package/dist/lib/teams/__tests__/oracle.test.js.map +1 -0
  461. package/dist/lib/teams/__tests__/supervisor.test.d.ts +2 -0
  462. package/dist/lib/teams/__tests__/supervisor.test.d.ts.map +1 -0
  463. package/dist/lib/teams/__tests__/supervisor.test.js +179 -0
  464. package/dist/lib/teams/__tests__/supervisor.test.js.map +1 -0
  465. package/dist/lib/teams/agents.d.ts +247 -0
  466. package/dist/lib/teams/agents.d.ts.map +1 -0
  467. package/dist/lib/teams/agents.js +1244 -0
  468. package/dist/lib/teams/agents.js.map +1 -0
  469. package/dist/lib/teams/api.d.ts +91 -0
  470. package/dist/lib/teams/api.d.ts.map +1 -0
  471. package/dist/lib/teams/api.js +239 -0
  472. package/dist/lib/teams/api.js.map +1 -0
  473. package/dist/lib/teams/cloud.d.ts +11 -0
  474. package/dist/lib/teams/cloud.d.ts.map +1 -0
  475. package/dist/lib/teams/cloud.js +169 -0
  476. package/dist/lib/teams/cloud.js.map +1 -0
  477. package/dist/lib/teams/debug.d.ts +8 -0
  478. package/dist/lib/teams/debug.d.ts.map +1 -0
  479. package/dist/lib/teams/debug.js +12 -0
  480. package/dist/lib/teams/debug.js.map +1 -0
  481. package/dist/lib/teams/file_ops.d.ts +13 -0
  482. package/dist/lib/teams/file_ops.d.ts.map +1 -0
  483. package/dist/lib/teams/file_ops.js +66 -0
  484. package/dist/lib/teams/file_ops.js.map +1 -0
  485. package/dist/lib/teams/index.d.ts +16 -0
  486. package/dist/lib/teams/index.d.ts.map +1 -0
  487. package/dist/lib/teams/index.js +15 -0
  488. package/dist/lib/teams/index.js.map +1 -0
  489. package/dist/lib/teams/oracle.d.ts +20 -0
  490. package/dist/lib/teams/oracle.d.ts.map +1 -0
  491. package/dist/lib/teams/oracle.js +59 -0
  492. package/dist/lib/teams/oracle.js.map +1 -0
  493. package/dist/lib/teams/parsers.d.ts +9 -0
  494. package/dist/lib/teams/parsers.d.ts.map +1 -0
  495. package/dist/lib/teams/parsers.js +837 -0
  496. package/dist/lib/teams/parsers.js.map +1 -0
  497. package/dist/lib/teams/persistence.d.ts +43 -0
  498. package/dist/lib/teams/persistence.d.ts.map +1 -0
  499. package/dist/lib/teams/persistence.js +299 -0
  500. package/dist/lib/teams/persistence.js.map +1 -0
  501. package/dist/lib/teams/ralph.d.ts +8 -0
  502. package/dist/lib/teams/ralph.d.ts.map +1 -0
  503. package/dist/lib/teams/ralph.js +59 -0
  504. package/dist/lib/teams/ralph.js.map +1 -0
  505. package/dist/lib/teams/registry.d.ts +18 -0
  506. package/dist/lib/teams/registry.d.ts.map +1 -0
  507. package/dist/lib/teams/registry.js +68 -0
  508. package/dist/lib/teams/registry.js.map +1 -0
  509. package/dist/lib/teams/summarizer.d.ts +73 -0
  510. package/dist/lib/teams/summarizer.d.ts.map +1 -0
  511. package/dist/lib/teams/summarizer.js +780 -0
  512. package/dist/lib/teams/summarizer.js.map +1 -0
  513. package/dist/lib/teams/supervisor.d.ts +49 -0
  514. package/dist/lib/teams/supervisor.d.ts.map +1 -0
  515. package/dist/lib/teams/supervisor.js +74 -0
  516. package/dist/lib/teams/supervisor.js.map +1 -0
  517. package/dist/lib/template.d.ts +8 -5
  518. package/dist/lib/template.d.ts.map +1 -1
  519. package/dist/lib/template.js +8 -5
  520. package/dist/lib/template.js.map +1 -1
  521. package/dist/lib/types.d.ts +58 -1
  522. package/dist/lib/types.d.ts.map +1 -1
  523. package/dist/lib/types.js +16 -1
  524. package/dist/lib/types.js.map +1 -1
  525. package/dist/lib/usage.d.ts +48 -0
  526. package/dist/lib/usage.d.ts.map +1 -1
  527. package/dist/lib/usage.js +106 -14
  528. package/dist/lib/usage.js.map +1 -1
  529. package/dist/lib/versions.d.ts +12 -1
  530. package/dist/lib/versions.d.ts.map +1 -1
  531. package/dist/lib/versions.js +124 -41
  532. package/dist/lib/versions.js.map +1 -1
  533. package/package.json +20 -6
  534. package/scripts/postinstall.js +1 -1
  535. package/scripts/rebuild-sqlite.sh +46 -0
  536. package/dist/commands/sessions.test.d.ts +0 -2
  537. package/dist/commands/sessions.test.d.ts.map +0 -1
  538. package/dist/commands/sessions.test.js +0 -53
  539. package/dist/commands/sessions.test.js.map +0 -1
@@ -0,0 +1,335 @@
1
+ /**
2
+ * R2 (S3-compatible) Ledger implementation.
3
+ *
4
+ * Layout mirrors LocalDiskLedger — objects are keyed as:
5
+ * teams/<team_id>/registry.json
6
+ * teams/<team_id>/team.md
7
+ * teams/<team_id>/sessions/<task_id>-<teammate>.jsonl
8
+ * teams/<team_id>/artifacts/<task_id>/<filename>
9
+ * teams/<team_id>/bugs/<task_id>.md
10
+ *
11
+ * Credentials come from the AGENTS_R2_* env vars (or `agents.yaml.ledger`
12
+ * when we add that later). Two patterns are supported:
13
+ *
14
+ * 1. Cloudflare R2: set endpoint to https://<account>.r2.cloudflarestorage.com
15
+ * and AGENTS_R2_ACCESS_KEY_ID / AGENTS_R2_SECRET_ACCESS_KEY.
16
+ * 2. Plain S3: omit endpoint; region picks up from AGENTS_R2_REGION.
17
+ *
18
+ * The ledger degrades gracefully: `resolveLedger()` only returns an R2Ledger
19
+ * when credentials + bucket are present. Otherwise it falls back to
20
+ * LocalDiskLedger so non-cloud workflows never touch the network.
21
+ */
22
+ import { S3Client, GetObjectCommand, PutObjectCommand, ListObjectsV2Command, } from '@aws-sdk/client-s3';
23
+ function artifactFilename(kind) {
24
+ switch (kind) {
25
+ case 'diff': return 'diff.patch';
26
+ case 'test-output': return 'test-output.txt';
27
+ case 'notes': return 'notes.md';
28
+ default: return `${String(kind)}.txt`;
29
+ }
30
+ }
31
+ function kindFromFilename(filename) {
32
+ if (filename === 'diff.patch')
33
+ return 'diff';
34
+ if (filename === 'test-output.txt')
35
+ return 'test-output';
36
+ if (filename === 'notes.md')
37
+ return 'notes';
38
+ const dot = filename.lastIndexOf('.');
39
+ return dot > 0 ? filename.slice(0, dot) : filename;
40
+ }
41
+ /**
42
+ * Read R2 config from environment. Returns null when required fields are
43
+ * missing so `resolveLedger()` can fall back to local disk without crashing.
44
+ *
45
+ * Required: AGENTS_R2_BUCKET. Optional: endpoint, region, access key pair.
46
+ */
47
+ export function r2ConfigFromEnv() {
48
+ const bucket = process.env.AGENTS_R2_BUCKET?.trim();
49
+ if (!bucket)
50
+ return null;
51
+ return {
52
+ bucket,
53
+ endpoint: process.env.AGENTS_R2_ENDPOINT?.trim() || undefined,
54
+ region: process.env.AGENTS_R2_REGION?.trim() || 'auto',
55
+ accessKeyId: process.env.AGENTS_R2_ACCESS_KEY_ID?.trim() || undefined,
56
+ secretAccessKey: process.env.AGENTS_R2_SECRET_ACCESS_KEY?.trim() || undefined,
57
+ prefix: process.env.AGENTS_R2_PREFIX?.trim() || '',
58
+ };
59
+ }
60
+ export class R2Ledger {
61
+ kind = 'r2';
62
+ client;
63
+ bucket;
64
+ prefix;
65
+ constructor(config) {
66
+ this.bucket = config.bucket;
67
+ this.prefix = (config.prefix ?? '').replace(/^\/+|\/+$/g, '');
68
+ const clientConfig = {
69
+ region: config.region ?? 'auto',
70
+ forcePathStyle: true, // R2 and most S3-compatible stores need this
71
+ };
72
+ if (config.endpoint)
73
+ clientConfig.endpoint = config.endpoint;
74
+ if (config.accessKeyId && config.secretAccessKey) {
75
+ clientConfig.credentials = {
76
+ accessKeyId: config.accessKeyId,
77
+ secretAccessKey: config.secretAccessKey,
78
+ };
79
+ }
80
+ this.client = new S3Client(clientConfig);
81
+ }
82
+ key(...parts) {
83
+ const joined = parts.filter(Boolean).join('/').replace(/\/+/g, '/');
84
+ return this.prefix ? `${this.prefix}/${joined}` : joined;
85
+ }
86
+ teamKey(team_id, ...rest) {
87
+ return this.key('teams', team_id, ...rest);
88
+ }
89
+ async putText(key, content) {
90
+ await this.client.send(new PutObjectCommand({
91
+ Bucket: this.bucket,
92
+ Key: key,
93
+ Body: content,
94
+ ContentType: 'text/plain; charset=utf-8',
95
+ }));
96
+ }
97
+ async getText(key) {
98
+ try {
99
+ const r = await this.client.send(new GetObjectCommand({ Bucket: this.bucket, Key: key }));
100
+ const content = await r.Body?.transformToString('utf-8') ?? '';
101
+ const lastModified = r.LastModified?.toISOString() ?? new Date().toISOString();
102
+ return { content, lastModified };
103
+ }
104
+ catch (err) {
105
+ if (err?.$metadata?.httpStatusCode === 404 || err?.name === 'NoSuchKey')
106
+ return null;
107
+ throw err;
108
+ }
109
+ }
110
+ async listKeys(prefix) {
111
+ const out = [];
112
+ let continuationToken;
113
+ do {
114
+ const r = await this.client.send(new ListObjectsV2Command({
115
+ Bucket: this.bucket,
116
+ Prefix: prefix,
117
+ ContinuationToken: continuationToken,
118
+ }));
119
+ for (const obj of r.Contents ?? []) {
120
+ if (obj.Key) {
121
+ out.push({
122
+ key: obj.Key,
123
+ lastModified: obj.LastModified?.toISOString() ?? new Date().toISOString(),
124
+ });
125
+ }
126
+ }
127
+ continuationToken = r.IsTruncated ? r.NextContinuationToken : undefined;
128
+ } while (continuationToken);
129
+ return out;
130
+ }
131
+ async appendText(key, chunk) {
132
+ // S3 has no native append; read-modify-write is the canonical workaround
133
+ // and fine for small artifacts like notes.md and session jsonl lines.
134
+ const existing = (await this.getText(key))?.content ?? '';
135
+ await this.putText(key, existing + chunk);
136
+ }
137
+ async putArtifact(team_id, task_id, kind, content, _teammate) {
138
+ if (kind === 'bug') {
139
+ await this.putText(this.teamKey(team_id, 'bugs', `${task_id}.md`), content);
140
+ return;
141
+ }
142
+ await this.putText(this.teamKey(team_id, 'artifacts', task_id, artifactFilename(kind)), content);
143
+ }
144
+ async appendSession(team_id, task_id, teammate, line) {
145
+ const safe = teammate.replace(/[/\\]/g, '_');
146
+ const key = this.teamKey(team_id, 'sessions', `${task_id}-${safe}.jsonl`);
147
+ await this.appendText(key, line.endsWith('\n') ? line : line + '\n');
148
+ }
149
+ async putRegistry(registry) {
150
+ await this.putText(this.teamKey(registry.team_id, 'registry.json'), JSON.stringify(registry, null, 2));
151
+ }
152
+ async getRegistry(team_id) {
153
+ const got = await this.getText(this.teamKey(team_id, 'registry.json'));
154
+ if (!got)
155
+ return null;
156
+ try {
157
+ return JSON.parse(got.content);
158
+ }
159
+ catch {
160
+ return null;
161
+ }
162
+ }
163
+ async appendNarrative(team_id, text) {
164
+ await this.appendText(this.teamKey(team_id, 'team.md'), text.endsWith('\n') ? text : text + '\n');
165
+ }
166
+ async getNarrative(team_id) {
167
+ const got = await this.getText(this.teamKey(team_id, 'team.md'));
168
+ return got?.content ?? null;
169
+ }
170
+ async note(team_id, task_id, teammate, text) {
171
+ const key = this.teamKey(team_id, 'artifacts', task_id, 'notes.md');
172
+ const ts = new Date().toISOString();
173
+ const entry = `\n### ${ts} — ${teammate}\n\n${text.endsWith('\n') ? text : text + '\n'}`;
174
+ await this.appendText(key, entry);
175
+ }
176
+ async read(team_id, task_id, kind) {
177
+ const artifacts = [];
178
+ if (kind && kind !== 'session' && kind !== 'bug') {
179
+ const key = this.teamKey(team_id, 'artifacts', task_id, artifactFilename(kind));
180
+ const got = await this.getText(key);
181
+ if (got) {
182
+ artifacts.push({
183
+ team_id, task_id, kind, content: got.content,
184
+ created_at: got.lastModified, updated_at: got.lastModified,
185
+ });
186
+ }
187
+ }
188
+ else if (kind === 'bug') {
189
+ const key = this.teamKey(team_id, 'bugs', `${task_id}.md`);
190
+ const got = await this.getText(key);
191
+ if (got) {
192
+ artifacts.push({
193
+ team_id, task_id, kind: 'bug', content: got.content,
194
+ created_at: got.lastModified, updated_at: got.lastModified,
195
+ });
196
+ }
197
+ }
198
+ else if (kind === 'session') {
199
+ const prefix = this.teamKey(team_id, 'sessions') + '/';
200
+ for (const { key, lastModified } of await this.listKeys(prefix)) {
201
+ const name = key.slice(prefix.length);
202
+ if (!name.startsWith(`${task_id}-`) || !name.endsWith('.jsonl'))
203
+ continue;
204
+ const got = await this.getText(key);
205
+ const teammate = name.slice(task_id.length + 1, -'.jsonl'.length);
206
+ artifacts.push({
207
+ team_id, task_id, teammate, kind: 'session',
208
+ content: got?.content ?? '',
209
+ created_at: lastModified, updated_at: lastModified,
210
+ });
211
+ }
212
+ }
213
+ else {
214
+ // No kind — gather everything for the task.
215
+ const artPrefix = this.teamKey(team_id, 'artifacts', task_id) + '/';
216
+ for (const { key, lastModified } of await this.listKeys(artPrefix)) {
217
+ const name = key.slice(artPrefix.length);
218
+ const got = await this.getText(key);
219
+ artifacts.push({
220
+ team_id, task_id, kind: kindFromFilename(name),
221
+ content: got?.content ?? '',
222
+ created_at: lastModified, updated_at: lastModified,
223
+ });
224
+ }
225
+ const sessionPrefix = this.teamKey(team_id, 'sessions') + '/';
226
+ for (const { key, lastModified } of await this.listKeys(sessionPrefix)) {
227
+ const name = key.slice(sessionPrefix.length);
228
+ if (!name.startsWith(`${task_id}-`) || !name.endsWith('.jsonl'))
229
+ continue;
230
+ const got = await this.getText(key);
231
+ const teammate = name.slice(task_id.length + 1, -'.jsonl'.length);
232
+ artifacts.push({
233
+ team_id, task_id, teammate, kind: 'session',
234
+ content: got?.content ?? '',
235
+ created_at: lastModified, updated_at: lastModified,
236
+ });
237
+ }
238
+ const bugKey = this.teamKey(team_id, 'bugs', `${task_id}.md`);
239
+ const bug = await this.getText(bugKey);
240
+ if (bug) {
241
+ artifacts.push({
242
+ team_id, task_id, kind: 'bug', content: bug.content,
243
+ created_at: bug.lastModified, updated_at: bug.lastModified,
244
+ });
245
+ }
246
+ }
247
+ const reg = await this.getRegistry(team_id);
248
+ const entry = reg?.teammates.find((t) => t.agent_id === task_id);
249
+ return {
250
+ team_id, task_id,
251
+ teammate: entry?.name ?? null,
252
+ task_type: entry?.task_type ?? null,
253
+ status: entry?.status ?? null,
254
+ artifacts,
255
+ completed_at: entry?.completed_at ?? null,
256
+ };
257
+ }
258
+ async recent(team_id, n = 5) {
259
+ const reg = await this.getRegistry(team_id);
260
+ if (!reg)
261
+ return [];
262
+ const done = reg.teammates
263
+ .filter((t) => t.status === 'completed' || t.status === 'failed')
264
+ .sort((a, b) => {
265
+ const at = a.completed_at ?? a.started_at;
266
+ const bt = b.completed_at ?? b.started_at;
267
+ return new Date(bt).getTime() - new Date(at).getTime();
268
+ })
269
+ .slice(0, n);
270
+ const views = [];
271
+ for (const t of done)
272
+ views.push(await this.read(team_id, t.agent_id));
273
+ return views;
274
+ }
275
+ async search(team_id, query, limit = 50) {
276
+ const hits = [];
277
+ const needle = query.toLowerCase();
278
+ const teamPrefix = this.teamKey(team_id) + '/';
279
+ for (const { key } of await this.listKeys(teamPrefix)) {
280
+ if (hits.length >= limit)
281
+ break;
282
+ const got = await this.getText(key);
283
+ if (!got)
284
+ continue;
285
+ const lines = got.content.split('\n');
286
+ for (let i = 0; i < lines.length; i++) {
287
+ if (hits.length >= limit)
288
+ break;
289
+ if (!lines[i].toLowerCase().includes(needle))
290
+ continue;
291
+ // Infer metadata from the key shape.
292
+ const rel = key.slice(teamPrefix.length);
293
+ let kind = 'narrative';
294
+ let task_id = '_team';
295
+ let teammate = null;
296
+ if (rel.startsWith('sessions/') && rel.endsWith('.jsonl')) {
297
+ kind = 'session';
298
+ const name = rel.slice('sessions/'.length, -'.jsonl'.length);
299
+ const dash = name.lastIndexOf('-');
300
+ if (dash > 0) {
301
+ task_id = name.slice(0, dash);
302
+ teammate = name.slice(dash + 1);
303
+ }
304
+ else {
305
+ task_id = name;
306
+ }
307
+ }
308
+ else if (rel.startsWith('artifacts/')) {
309
+ const parts = rel.split('/');
310
+ task_id = parts[1] ?? '_';
311
+ kind = kindFromFilename(parts[2] ?? '');
312
+ }
313
+ else if (rel.startsWith('bugs/') && rel.endsWith('.md')) {
314
+ kind = 'bug';
315
+ task_id = rel.slice('bugs/'.length, -'.md'.length);
316
+ }
317
+ else if (rel === 'team.md') {
318
+ kind = 'narrative';
319
+ task_id = '_team';
320
+ }
321
+ else if (rel === 'registry.json') {
322
+ continue; // skip registry — not meaningful for text search
323
+ }
324
+ hits.push({
325
+ team_id, task_id, teammate, kind,
326
+ line_number: i + 1,
327
+ line: lines[i].slice(0, 500),
328
+ path: key,
329
+ });
330
+ }
331
+ }
332
+ return hits.slice(0, limit);
333
+ }
334
+ }
335
+ //# sourceMappingURL=r2.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"r2.js","sourceRoot":"","sources":["../../../src/lib/ledger/r2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { LedgerStore } from './types.js';
2
+ export interface TeammateSnapshot {
3
+ agent_id: string;
4
+ team_id: string;
5
+ teammate_name: string | null;
6
+ agent_type: string;
7
+ task_type: string | null;
8
+ status: string;
9
+ started_at: string;
10
+ completed_at: string | null;
11
+ after: string[];
12
+ cloud_provider: string | null;
13
+ cloud_session_id: string | null;
14
+ cloud_repo: string | null;
15
+ cloud_branch: string | null;
16
+ /** Absolute path to the teammate's on-disk agent dir (stdout.log + meta.json). */
17
+ agent_dir: string;
18
+ /** Working dir the agent ran in — used to collect a git diff. */
19
+ cwd: string | null;
20
+ }
21
+ /**
22
+ * Push a teammate's outputs to the ledger: session transcript, git diff (if
23
+ * any), and a registry update. Test output is written separately via
24
+ * `putArtifact(..., 'test-output', ...)` by the caller that runs the tests.
25
+ */
26
+ export declare function syncTeammate(snap: TeammateSnapshot, ledger?: LedgerStore): Promise<void>;
27
+ /**
28
+ * Called from a pod's preStop hook right before SIGTERM. Same as syncTeammate
29
+ * but tolerates a still-running status. The remote orchestrator will re-sync
30
+ * once the workload finishes in its replacement.
31
+ */
32
+ export declare function syncOnEviction(snap: TeammateSnapshot, ledger?: LedgerStore): Promise<void>;
33
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/lib/ledger/sync.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,WAAW,EAAkB,MAAM,YAAY,CAAC;AAE9D,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,kFAAkF;IAClF,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,gBAAgB,EACtB,MAAM,GAAE,WAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAsDf;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,gBAAgB,EACtB,MAAM,GAAE,WAA6B,GACpC,OAAO,CAAC,IAAI,CAAC,CAcf"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Sync hooks between teammate process state (on disk at ~/.agents/teams/) and
3
+ * the team Ledger (LocalDiskLedger by default, R2Ledger in cloud pods).
4
+ *
5
+ * Callers:
6
+ * - `teams add/start` on teammate completion → syncTeammate()
7
+ * - `agents factory evict` (runs in a pod's preStop hook) → syncOnEviction()
8
+ *
9
+ * The sync is deliberately idempotent: safe to run multiple times, safe to
10
+ * run mid-flight (captures whatever's there now). The ledger layout mirrors
11
+ * the on-disk layout so the same data is queryable via MCP tools from any
12
+ * other teammate.
13
+ */
14
+ import * as fs from 'fs/promises';
15
+ import * as path from 'path';
16
+ import { execSync } from 'child_process';
17
+ import { resolveLedger } from './index.js';
18
+ /**
19
+ * Push a teammate's outputs to the ledger: session transcript, git diff (if
20
+ * any), and a registry update. Test output is written separately via
21
+ * `putArtifact(..., 'test-output', ...)` by the caller that runs the tests.
22
+ */
23
+ export async function syncTeammate(snap, ledger = resolveLedger()) {
24
+ const teammate = snap.teammate_name ?? snap.agent_id.slice(0, 8);
25
+ // 1. Session transcript (replace whole file each sync — simple and correct).
26
+ const stdoutPath = path.join(snap.agent_dir, 'stdout.log');
27
+ const raw = await readSafe(stdoutPath);
28
+ if (raw !== null && raw.length > 0) {
29
+ // Use putArtifact with a custom kind so R2 doesn't need append semantics.
30
+ // For a local ledger this still round-trips cleanly — read() picks it up
31
+ // under artifacts/<task_id>/session.txt.
32
+ await ledger.putArtifact(snap.team_id, snap.agent_id, 'session-log', raw, teammate);
33
+ }
34
+ // 2. Git diff in the teammate's cwd, if it's a git repo. Best-effort — a
35
+ // missing git binary or a non-repo cwd should not fail the whole sync.
36
+ if (snap.cwd) {
37
+ const diff = safeGitDiff(snap.cwd);
38
+ if (diff) {
39
+ await ledger.putArtifact(snap.team_id, snap.agent_id, 'diff', diff, teammate);
40
+ }
41
+ }
42
+ // 3. Registry upsert — merge this teammate into whatever's already there.
43
+ const existing = await ledger.getRegistry(snap.team_id);
44
+ const entry = {
45
+ agent_id: snap.agent_id,
46
+ name: snap.teammate_name,
47
+ agent_type: snap.agent_type,
48
+ task_type: snap.task_type,
49
+ dispatch: snap.cloud_provider
50
+ ? { cloud: snap.cloud_provider, repo: snap.cloud_repo ?? undefined, branch: snap.cloud_branch ?? undefined }
51
+ : 'local',
52
+ after: snap.after,
53
+ status: snap.status,
54
+ started_at: snap.started_at,
55
+ completed_at: snap.completed_at,
56
+ };
57
+ const next = existing
58
+ ? {
59
+ team_id: snap.team_id,
60
+ updated_at: new Date().toISOString(),
61
+ teammates: [
62
+ ...existing.teammates.filter((t) => t.agent_id !== snap.agent_id),
63
+ entry,
64
+ ],
65
+ }
66
+ : {
67
+ team_id: snap.team_id,
68
+ updated_at: new Date().toISOString(),
69
+ teammates: [entry],
70
+ };
71
+ await ledger.putRegistry(next);
72
+ }
73
+ /**
74
+ * Called from a pod's preStop hook right before SIGTERM. Same as syncTeammate
75
+ * but tolerates a still-running status. The remote orchestrator will re-sync
76
+ * once the workload finishes in its replacement.
77
+ */
78
+ export async function syncOnEviction(snap, ledger = resolveLedger()) {
79
+ await syncTeammate({ ...snap, status: snap.status === 'running' ? 'evicted' : snap.status }, ledger);
80
+ const note = `Pod evicted at ${new Date().toISOString()} — status=${snap.status}, ` +
81
+ `cloud=${snap.cloud_provider ?? 'local'} session=${snap.cloud_session_id ?? '-'}`;
82
+ await ledger.note(snap.team_id, snap.agent_id, snap.teammate_name ?? snap.agent_id.slice(0, 8), note);
83
+ }
84
+ async function readSafe(p) {
85
+ try {
86
+ return await fs.readFile(p, 'utf-8');
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ function safeGitDiff(cwd) {
93
+ try {
94
+ const diff = execSync('git diff --no-color HEAD', {
95
+ cwd,
96
+ encoding: 'utf-8',
97
+ maxBuffer: 16 * 1024 * 1024,
98
+ stdio: ['ignore', 'pipe', 'ignore'],
99
+ });
100
+ return diff.length > 0 ? diff : null;
101
+ }
102
+ catch {
103
+ return null;
104
+ }
105
+ }
106
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/lib/ledger/sync.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Team Ledger — shared substrate for cross-agent memory.
3
+ *
4
+ * The Ledger is a team-scoped, blob-per-task store that survives pod eviction
5
+ * and lets teammates read each other's outputs by task_id. It is NOT a semantic
6
+ * knowledge graph — just files grouped by team_id + task_id, with simple
7
+ * read/recent/search/note operations.
8
+ *
9
+ * Layout:
10
+ * <root>/teams/<team_id>/
11
+ * registry.json teammate list + DAG snapshot
12
+ * team.md planner's running narrative
13
+ * sessions/<task_id>-<teammate>.jsonl full agent event stream
14
+ * artifacts/<task_id>/
15
+ * diff.patch git diff of the task
16
+ * test-output.txt test runner output (if any)
17
+ * notes.md teammate's own notes (append-only)
18
+ * bugs/<task_id>.md reviewer-filed bugs
19
+ */
20
+ /** Canonical artifact kinds we know how to serialize. Free-form `kind` still works. */
21
+ export type ArtifactKind = 'diff' | 'test-output' | 'notes' | 'session' | 'bug' | 'registry' | 'narrative' | string;
22
+ /** A single artifact stored in the ledger. */
23
+ export interface LedgerArtifact {
24
+ team_id: string;
25
+ task_id: string;
26
+ teammate?: string;
27
+ kind: ArtifactKind;
28
+ content: string;
29
+ created_at: string;
30
+ updated_at: string;
31
+ }
32
+ /** A single task's rolled-up view: all artifacts under one task_id. */
33
+ export interface LedgerTaskView {
34
+ team_id: string;
35
+ task_id: string;
36
+ teammate: string | null;
37
+ task_type: string | null;
38
+ status: string | null;
39
+ artifacts: LedgerArtifact[];
40
+ completed_at: string | null;
41
+ }
42
+ /** Search hit — includes artifact + line number for context. */
43
+ export interface LedgerSearchHit {
44
+ team_id: string;
45
+ task_id: string;
46
+ teammate: string | null;
47
+ kind: ArtifactKind;
48
+ line_number: number;
49
+ line: string;
50
+ path: string;
51
+ }
52
+ /** Registry snapshot — mirrors the teammate DAG state for a team. */
53
+ export interface LedgerRegistry {
54
+ team_id: string;
55
+ updated_at: string;
56
+ teammates: Array<{
57
+ agent_id: string;
58
+ name: string | null;
59
+ agent_type: string;
60
+ task_type: string | null;
61
+ dispatch: 'local' | {
62
+ cloud: string;
63
+ repo?: string;
64
+ branch?: string;
65
+ };
66
+ after: string[];
67
+ status: string;
68
+ started_at: string;
69
+ completed_at: string | null;
70
+ }>;
71
+ }
72
+ /**
73
+ * Contract every ledger backend implements.
74
+ *
75
+ * Local-disk is the default; R2 is the durable remote. Both implement the
76
+ * same interface so cloud-evicted pods and local pods share a substrate.
77
+ */
78
+ export interface LedgerStore {
79
+ /** Backend identifier, for debug output. */
80
+ readonly kind: 'local' | 'r2';
81
+ /** Read a single artifact kind for a task, or all kinds if `kind` omitted. */
82
+ read(team_id: string, task_id: string, kind?: ArtifactKind): Promise<LedgerTaskView>;
83
+ /** Last N completed tasks across the team, newest first. */
84
+ recent(team_id: string, n?: number): Promise<LedgerTaskView[]>;
85
+ /** Case-insensitive substring search across sessions + notes + bugs + team.md. */
86
+ search(team_id: string, query: string, limit?: number): Promise<LedgerSearchHit[]>;
87
+ /** Append text to <task_id>'s notes.md (creates if missing). */
88
+ note(team_id: string, task_id: string, teammate: string, text: string): Promise<void>;
89
+ /** Write an artifact. Overwrites if (task_id, kind) already exists. */
90
+ putArtifact(team_id: string, task_id: string, kind: ArtifactKind, content: string, teammate?: string): Promise<void>;
91
+ /** Append one line (JSON or text) to sessions/<task_id>-<teammate>.jsonl. */
92
+ appendSession(team_id: string, task_id: string, teammate: string, line: string): Promise<void>;
93
+ /** Snapshot or update the team registry. */
94
+ putRegistry(registry: LedgerRegistry): Promise<void>;
95
+ getRegistry(team_id: string): Promise<LedgerRegistry | null>;
96
+ /** Append a sentence to team.md (the planner's running narrative). */
97
+ appendNarrative(team_id: string, text: string): Promise<void>;
98
+ getNarrative(team_id: string): Promise<string | null>;
99
+ }
100
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/lib/ledger/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Team Ledger — shared substrate for cross-agent memory.
3
+ *
4
+ * The Ledger is a team-scoped, blob-per-task store that survives pod eviction
5
+ * and lets teammates read each other's outputs by task_id. It is NOT a semantic
6
+ * knowledge graph — just files grouped by team_id + task_id, with simple
7
+ * read/recent/search/note operations.
8
+ *
9
+ * Layout:
10
+ * <root>/teams/<team_id>/
11
+ * registry.json teammate list + DAG snapshot
12
+ * team.md planner's running narrative
13
+ * sessions/<task_id>-<teammate>.jsonl full agent event stream
14
+ * artifacts/<task_id>/
15
+ * diff.patch git diff of the task
16
+ * test-output.txt test runner output (if any)
17
+ * notes.md teammate's own notes (append-only)
18
+ * bugs/<task_id>.md reviewer-filed bugs
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/ledger/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -1,8 +1,14 @@
1
1
  import type { Manifest } from './types.js';
2
+ /** Canonical filename for the manifest in any agents repo or project root. */
2
3
  export declare const MANIFEST_FILENAME = "agents.yaml";
4
+ /** Parse a YAML string into a typed Manifest object. */
3
5
  export declare function parseManifest(content: string): Manifest;
6
+ /** Serialize a Manifest object to a YAML string with 2-space indentation. */
4
7
  export declare function serializeManifest(manifest: Manifest): string;
8
+ /** Read and parse agents.yaml from a directory. Returns null if the file does not exist. */
5
9
  export declare function readManifest(repoPath: string): Manifest | null;
10
+ /** Write a Manifest object to agents.yaml in the given directory. */
6
11
  export declare function writeManifest(repoPath: string, manifest: Manifest): void;
12
+ /** Create a Manifest with sensible defaults for a fresh agents repo. */
7
13
  export declare function createDefaultManifest(): Manifest;
8
14
  //# sourceMappingURL=manifest.d.ts.map