agent-relay 1.1.0 → 1.2.3

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 (567) hide show
  1. package/.gitattributes +3 -0
  2. package/.nvmrc +1 -0
  3. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +65 -0
  4. package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +37 -0
  5. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +65 -0
  6. package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +37 -0
  7. package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +49 -0
  8. package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +31 -0
  9. package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +113 -0
  10. package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +57 -0
  11. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +53 -0
  12. package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +32 -0
  13. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +26 -0
  14. package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +6 -0
  15. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +47 -0
  16. package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +32 -0
  17. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +53 -0
  18. package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +32 -0
  19. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +59 -0
  20. package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +33 -0
  21. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +53 -0
  22. package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +32 -0
  23. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +48 -0
  24. package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +24 -0
  25. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +209 -0
  26. package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +97 -0
  27. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +48 -0
  28. package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +24 -0
  29. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +49 -0
  30. package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +23 -0
  31. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +53 -0
  32. package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +32 -0
  33. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +49 -0
  34. package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +31 -0
  35. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +26 -0
  36. package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +6 -0
  37. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +59 -0
  38. package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +37 -0
  39. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +77 -0
  40. package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +42 -0
  41. package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +53 -0
  42. package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +32 -0
  43. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +25 -0
  44. package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +15 -0
  45. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +101 -0
  46. package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +44 -0
  47. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +22 -0
  48. package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +5 -0
  49. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +53 -0
  50. package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +32 -0
  51. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +25 -0
  52. package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +15 -0
  53. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +53 -0
  54. package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +32 -0
  55. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +53 -0
  56. package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +32 -0
  57. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +48 -0
  58. package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +24 -0
  59. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +53 -0
  60. package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +32 -0
  61. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +77 -0
  62. package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +42 -0
  63. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +53 -0
  64. package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +32 -0
  65. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +83 -0
  66. package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +47 -0
  67. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +59 -0
  68. package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +37 -0
  69. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +48 -0
  70. package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +16 -0
  71. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +59 -0
  72. package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +37 -0
  73. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +53 -0
  74. package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +32 -0
  75. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +84 -0
  76. package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +109 -0
  77. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +53 -0
  78. package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +32 -0
  79. package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +71 -0
  80. package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +42 -0
  81. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +53 -0
  82. package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +32 -0
  83. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +20 -0
  84. package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +6 -0
  85. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +175 -0
  86. package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +82 -0
  87. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +47 -0
  88. package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +32 -0
  89. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +59 -0
  90. package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +37 -0
  91. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +53 -0
  92. package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +32 -0
  93. package/.trajectories/index.json +314 -0
  94. package/ARCHITECTURE.md +1245 -0
  95. package/README.md +1 -1
  96. package/TESTING.md +278 -0
  97. package/deploy/init-db.sql +5 -0
  98. package/deploy/scripts/setup-fly-workspaces.sh +69 -0
  99. package/deploy/scripts/setup-railway.sh +75 -0
  100. package/deploy/workspace/entrypoint-browser.sh +118 -0
  101. package/deploy/workspace/entrypoint.sh +348 -0
  102. package/deploy/workspace/git-credential-relay +111 -0
  103. package/dist/bridge/spawner.d.ts +53 -0
  104. package/dist/bridge/spawner.js +203 -19
  105. package/dist/bridge/types.d.ts +12 -0
  106. package/dist/cli/index.js +618 -5
  107. package/dist/cloud/api/auth.d.ts +3 -2
  108. package/dist/cloud/api/auth.js +10 -98
  109. package/dist/cloud/api/billing.js +30 -9
  110. package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
  111. package/dist/cloud/api/cli-pty-runner.js +119 -0
  112. package/dist/cloud/api/codex-auth-helper.d.ts +15 -0
  113. package/dist/cloud/api/codex-auth-helper.js +100 -0
  114. package/dist/cloud/api/generic-webhooks.d.ts +8 -0
  115. package/dist/cloud/api/generic-webhooks.js +129 -0
  116. package/dist/cloud/api/git.d.ts +8 -0
  117. package/dist/cloud/api/git.js +152 -0
  118. package/dist/cloud/api/github-app.d.ts +11 -0
  119. package/dist/cloud/api/github-app.js +189 -0
  120. package/dist/cloud/api/middleware/planLimits.d.ts +7 -0
  121. package/dist/cloud/api/middleware/planLimits.js +39 -1
  122. package/dist/cloud/api/monitoring.d.ts +11 -0
  123. package/dist/cloud/api/monitoring.js +578 -0
  124. package/dist/cloud/api/nango-auth.d.ts +9 -0
  125. package/dist/cloud/api/nango-auth.js +377 -0
  126. package/dist/cloud/api/onboarding.d.ts +8 -1
  127. package/dist/cloud/api/onboarding.js +313 -119
  128. package/dist/cloud/api/policy.d.ts +8 -0
  129. package/dist/cloud/api/policy.js +229 -0
  130. package/dist/cloud/api/providers.js +114 -42
  131. package/dist/cloud/api/repos.d.ts +1 -0
  132. package/dist/cloud/api/repos.js +186 -0
  133. package/dist/cloud/api/test-helpers.d.ts +10 -0
  134. package/dist/cloud/api/test-helpers.js +575 -0
  135. package/dist/cloud/api/webhooks.d.ts +8 -0
  136. package/dist/cloud/api/webhooks.js +645 -0
  137. package/dist/cloud/api/workspaces.js +320 -12
  138. package/dist/cloud/billing/plans.js +32 -19
  139. package/dist/cloud/billing/types.d.ts +9 -3
  140. package/dist/cloud/config.d.ts +9 -2
  141. package/dist/cloud/config.js +13 -4
  142. package/dist/cloud/db/drizzle.d.ts +84 -1
  143. package/dist/cloud/db/drizzle.js +470 -0
  144. package/dist/cloud/db/index.d.ts +9 -4
  145. package/dist/cloud/db/index.js +11 -3
  146. package/dist/cloud/db/schema.d.ts +3283 -556
  147. package/dist/cloud/db/schema.js +314 -1
  148. package/dist/cloud/index.d.ts +1 -0
  149. package/dist/cloud/index.js +2 -0
  150. package/dist/cloud/provisioner/index.d.ts +56 -0
  151. package/dist/cloud/provisioner/index.js +676 -34
  152. package/dist/cloud/server.d.ts +1 -0
  153. package/dist/cloud/server.js +362 -13
  154. package/dist/cloud/services/auto-scaler.d.ts +152 -0
  155. package/dist/cloud/services/auto-scaler.js +439 -0
  156. package/dist/cloud/services/capacity-manager.d.ts +148 -0
  157. package/dist/cloud/services/capacity-manager.js +449 -0
  158. package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
  159. package/dist/cloud/services/ci-agent-spawner.js +373 -0
  160. package/dist/cloud/services/index.d.ts +12 -0
  161. package/dist/cloud/services/index.js +15 -0
  162. package/dist/cloud/services/mention-handler.d.ts +65 -0
  163. package/dist/cloud/services/mention-handler.js +405 -0
  164. package/dist/cloud/services/nango.d.ts +186 -0
  165. package/dist/cloud/services/nango.js +344 -0
  166. package/dist/cloud/services/persistence.d.ts +131 -0
  167. package/dist/cloud/services/persistence.js +200 -0
  168. package/dist/cloud/services/planLimits.d.ts +37 -0
  169. package/dist/cloud/services/planLimits.js +86 -5
  170. package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
  171. package/dist/cloud/services/scaling-orchestrator.js +502 -0
  172. package/dist/cloud/services/scaling-policy.d.ts +121 -0
  173. package/dist/cloud/services/scaling-policy.js +415 -0
  174. package/dist/cloud/vault/index.js +1 -1
  175. package/dist/cloud/webhooks/index.d.ts +24 -0
  176. package/dist/cloud/webhooks/index.js +29 -0
  177. package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
  178. package/dist/cloud/webhooks/parsers/github.js +234 -0
  179. package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
  180. package/dist/cloud/webhooks/parsers/index.js +30 -0
  181. package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
  182. package/dist/cloud/webhooks/parsers/linear.js +258 -0
  183. package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
  184. package/dist/cloud/webhooks/parsers/slack.js +214 -0
  185. package/dist/cloud/webhooks/responders/github.d.ts +8 -0
  186. package/dist/cloud/webhooks/responders/github.js +73 -0
  187. package/dist/cloud/webhooks/responders/index.d.ts +23 -0
  188. package/dist/cloud/webhooks/responders/index.js +30 -0
  189. package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
  190. package/dist/cloud/webhooks/responders/linear.js +149 -0
  191. package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
  192. package/dist/cloud/webhooks/responders/slack.js +178 -0
  193. package/dist/cloud/webhooks/router.d.ts +25 -0
  194. package/dist/cloud/webhooks/router.js +504 -0
  195. package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
  196. package/dist/cloud/webhooks/rules-engine.js +287 -0
  197. package/dist/cloud/webhooks/types.d.ts +186 -0
  198. package/dist/cloud/webhooks/types.js +8 -0
  199. package/dist/continuity/formatter.d.ts +51 -0
  200. package/dist/continuity/formatter.js +313 -0
  201. package/dist/continuity/handoff-store.d.ts +67 -0
  202. package/dist/continuity/handoff-store.js +472 -0
  203. package/dist/continuity/index.d.ts +45 -0
  204. package/dist/continuity/index.js +48 -0
  205. package/dist/continuity/ledger-store.d.ts +110 -0
  206. package/dist/continuity/ledger-store.js +500 -0
  207. package/dist/continuity/manager.d.ts +178 -0
  208. package/dist/continuity/manager.js +562 -0
  209. package/dist/continuity/parser.d.ts +76 -0
  210. package/dist/continuity/parser.js +579 -0
  211. package/dist/continuity/types.d.ts +180 -0
  212. package/dist/continuity/types.js +9 -0
  213. package/dist/daemon/agent-manager.d.ts +27 -0
  214. package/dist/daemon/agent-manager.js +107 -6
  215. package/dist/daemon/agent-registry.d.ts +32 -0
  216. package/dist/daemon/agent-registry.js +42 -2
  217. package/dist/daemon/api.d.ts +12 -0
  218. package/dist/daemon/api.js +131 -2
  219. package/dist/daemon/cli-auth.d.ts +67 -0
  220. package/dist/daemon/cli-auth.js +537 -0
  221. package/dist/daemon/cloud-sync.js +9 -7
  222. package/dist/daemon/orchestrator.js +30 -0
  223. package/dist/daemon/router.d.ts +5 -0
  224. package/dist/daemon/router.js +78 -26
  225. package/dist/daemon/server.d.ts +5 -0
  226. package/dist/daemon/server.js +9 -1
  227. package/dist/daemon/services/browser-testing.d.ts +88 -0
  228. package/dist/daemon/services/browser-testing.js +244 -0
  229. package/dist/daemon/services/container-spawner.d.ts +135 -0
  230. package/dist/daemon/services/container-spawner.js +313 -0
  231. package/dist/daemon/types.d.ts +5 -1
  232. package/dist/dashboard/out/404.html +1 -1
  233. package/dist/dashboard/out/_next/static/chunks/116-2502180def231162.js +1 -0
  234. package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
  235. package/dist/dashboard/out/_next/static/chunks/699-3b1cd6618a45d259.js +1 -0
  236. package/dist/dashboard/out/_next/static/chunks/724-2dae7627550ab88f.js +9 -0
  237. package/dist/dashboard/out/_next/static/chunks/766-1f2dd8cb7f766b0b.js +1 -0
  238. package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-3fdfa60e53f2810d.js +1 -0
  239. package/dist/dashboard/out/_next/static/chunks/app/app/page-e6381e5a6e1fbcfd.js +1 -0
  240. package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-3538dfe0ffe984b8.js +1 -0
  241. package/dist/dashboard/out/_next/static/chunks/app/history/{page-b6edd4dde8d08194.js → page-abb9ab2d329f56e9.js} +1 -1
  242. package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
  243. package/dist/dashboard/out/_next/static/chunks/app/login/page-c22d080201cbd9fb.js +1 -0
  244. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-67a3e98d9a43a6ed.js +1 -0
  245. package/dist/dashboard/out/_next/static/chunks/app/page-77e9c65420a06cfb.js +1 -0
  246. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-b08ed1c34d14434a.js +1 -0
  247. package/dist/dashboard/out/_next/static/chunks/app/providers/page-e88bc117ef7671c3.js +1 -0
  248. package/dist/dashboard/out/_next/static/chunks/app/signup/page-68d34f50baa8ab6b.js +1 -0
  249. package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
  250. package/dist/dashboard/out/_next/static/chunks/{main-app-5d692157a8eb1fd9.js → main-app-6e8e8d3ef4e0192a.js} +1 -1
  251. package/dist/dashboard/out/_next/static/chunks/{main-c2f423b9c9f4591b.js → main-ed4e1fb6f29c34cf.js} +1 -1
  252. package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
  253. package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +1 -0
  254. package/dist/dashboard/out/_next/static/css/7c3ae9e8617d42a5.css +1 -0
  255. package/dist/dashboard/out/app/onboarding.html +1 -0
  256. package/dist/dashboard/out/app/onboarding.txt +7 -0
  257. package/dist/dashboard/out/app.html +1 -14
  258. package/dist/dashboard/out/app.txt +2 -2
  259. package/dist/dashboard/out/connect-repos.html +1 -0
  260. package/dist/dashboard/out/connect-repos.txt +7 -0
  261. package/dist/dashboard/out/history.html +1 -1
  262. package/dist/dashboard/out/history.txt +2 -2
  263. package/dist/dashboard/out/index.html +1 -1
  264. package/dist/dashboard/out/index.txt +2 -2
  265. package/dist/dashboard/out/login.html +6 -0
  266. package/dist/dashboard/out/login.txt +7 -0
  267. package/dist/dashboard/out/metrics.html +1 -1
  268. package/dist/dashboard/out/metrics.txt +2 -2
  269. package/dist/dashboard/out/pricing.html +3 -3
  270. package/dist/dashboard/out/pricing.txt +2 -2
  271. package/dist/dashboard/out/providers.html +1 -0
  272. package/dist/dashboard/out/providers.txt +7 -0
  273. package/dist/dashboard/out/signup.html +6 -0
  274. package/dist/dashboard/out/signup.txt +7 -0
  275. package/dist/dashboard-server/server.js +1308 -8
  276. package/dist/hooks/emitter.d.ts +40 -0
  277. package/dist/hooks/emitter.js +63 -0
  278. package/dist/hooks/index.d.ts +3 -0
  279. package/dist/hooks/index.js +3 -0
  280. package/dist/hooks/registry.d.ts +173 -0
  281. package/dist/hooks/registry.js +476 -0
  282. package/dist/hooks/trajectory-hooks.d.ts +52 -0
  283. package/dist/hooks/trajectory-hooks.js +183 -0
  284. package/dist/hooks/types.d.ts +141 -0
  285. package/dist/index.d.ts +2 -0
  286. package/dist/index.js +3 -0
  287. package/dist/memory/adapters/index.d.ts +8 -0
  288. package/dist/memory/adapters/index.js +8 -0
  289. package/dist/memory/adapters/inmemory.d.ts +59 -0
  290. package/dist/memory/adapters/inmemory.js +195 -0
  291. package/dist/memory/adapters/supermemory.d.ts +71 -0
  292. package/dist/memory/adapters/supermemory.js +338 -0
  293. package/dist/memory/factory.d.ts +48 -0
  294. package/dist/memory/factory.js +143 -0
  295. package/dist/memory/index.d.ts +32 -0
  296. package/dist/memory/index.js +32 -0
  297. package/dist/memory/memory-hooks.d.ts +60 -0
  298. package/dist/memory/memory-hooks.js +313 -0
  299. package/dist/memory/service.d.ts +49 -0
  300. package/dist/memory/service.js +146 -0
  301. package/dist/memory/types.d.ts +195 -0
  302. package/dist/memory/types.js +8 -0
  303. package/dist/policy/agent-policy.d.ts +225 -0
  304. package/dist/policy/agent-policy.js +665 -0
  305. package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
  306. package/dist/policy/cloud-policy-fetcher.js +64 -0
  307. package/dist/resiliency/crash-insights.d.ts +156 -0
  308. package/dist/resiliency/crash-insights.js +492 -0
  309. package/dist/resiliency/gossip-health.d.ts +137 -0
  310. package/dist/resiliency/gossip-health.js +241 -0
  311. package/dist/resiliency/index.d.ts +5 -0
  312. package/dist/resiliency/index.js +5 -0
  313. package/dist/resiliency/leader-watchdog.d.ts +109 -0
  314. package/dist/resiliency/leader-watchdog.js +189 -0
  315. package/dist/resiliency/memory-monitor.d.ts +172 -0
  316. package/dist/resiliency/memory-monitor.js +593 -0
  317. package/dist/resiliency/stateless-lead.d.ts +149 -0
  318. package/dist/resiliency/stateless-lead.js +308 -0
  319. package/dist/resiliency/supervisor.d.ts +38 -0
  320. package/dist/resiliency/supervisor.js +122 -0
  321. package/dist/shared/cli-auth-config.d.ts +91 -0
  322. package/dist/shared/cli-auth-config.js +264 -0
  323. package/dist/storage/adapter.d.ts +1 -1
  324. package/dist/trajectory/config.d.ts +84 -0
  325. package/dist/trajectory/config.js +163 -0
  326. package/dist/trajectory/index.d.ts +8 -0
  327. package/dist/trajectory/index.js +8 -0
  328. package/dist/trajectory/integration.d.ts +292 -0
  329. package/dist/trajectory/integration.js +834 -0
  330. package/dist/utils/logger.js +1 -1
  331. package/dist/utils/project-namespace.d.ts +24 -0
  332. package/dist/utils/project-namespace.js +84 -0
  333. package/dist/wrapper/parser.d.ts +10 -0
  334. package/dist/wrapper/parser.js +100 -33
  335. package/dist/wrapper/pty-wrapper.d.ts +197 -16
  336. package/dist/wrapper/pty-wrapper.js +943 -106
  337. package/dist/wrapper/shared.d.ts +165 -0
  338. package/dist/wrapper/shared.js +270 -0
  339. package/dist/wrapper/tmux-wrapper.d.ts +73 -11
  340. package/dist/wrapper/tmux-wrapper.js +541 -120
  341. package/package.json +16 -16
  342. package/scripts/postinstall.js +60 -0
  343. package/test-push.txt +1 -0
  344. package/bin/tmux +0 -0
  345. package/dist/bridge/config.d.ts.map +0 -1
  346. package/dist/bridge/config.js.map +0 -1
  347. package/dist/bridge/index.d.ts.map +0 -1
  348. package/dist/bridge/index.js.map +0 -1
  349. package/dist/bridge/multi-project-client.d.ts.map +0 -1
  350. package/dist/bridge/multi-project-client.js.map +0 -1
  351. package/dist/bridge/shadow-cli.d.ts.map +0 -1
  352. package/dist/bridge/shadow-cli.js.map +0 -1
  353. package/dist/bridge/shadow-config.d.ts.map +0 -1
  354. package/dist/bridge/shadow-config.js.map +0 -1
  355. package/dist/bridge/spawner.d.ts.map +0 -1
  356. package/dist/bridge/spawner.js.map +0 -1
  357. package/dist/bridge/teams-config.d.ts.map +0 -1
  358. package/dist/bridge/teams-config.js.map +0 -1
  359. package/dist/bridge/types.d.ts.map +0 -1
  360. package/dist/bridge/types.js.map +0 -1
  361. package/dist/bridge/utils.d.ts.map +0 -1
  362. package/dist/bridge/utils.js.map +0 -1
  363. package/dist/cli/index.d.ts.map +0 -1
  364. package/dist/cli/index.js.map +0 -1
  365. package/dist/cloud/api/auth.d.ts.map +0 -1
  366. package/dist/cloud/api/auth.js.map +0 -1
  367. package/dist/cloud/api/billing.d.ts.map +0 -1
  368. package/dist/cloud/api/billing.js.map +0 -1
  369. package/dist/cloud/api/coordinators.d.ts.map +0 -1
  370. package/dist/cloud/api/coordinators.js.map +0 -1
  371. package/dist/cloud/api/daemons.d.ts.map +0 -1
  372. package/dist/cloud/api/daemons.js.map +0 -1
  373. package/dist/cloud/api/middleware/planLimits.d.ts.map +0 -1
  374. package/dist/cloud/api/middleware/planLimits.js.map +0 -1
  375. package/dist/cloud/api/onboarding.d.ts.map +0 -1
  376. package/dist/cloud/api/onboarding.js.map +0 -1
  377. package/dist/cloud/api/providers.d.ts.map +0 -1
  378. package/dist/cloud/api/providers.js.map +0 -1
  379. package/dist/cloud/api/repos.d.ts.map +0 -1
  380. package/dist/cloud/api/repos.js.map +0 -1
  381. package/dist/cloud/api/teams.d.ts.map +0 -1
  382. package/dist/cloud/api/teams.js.map +0 -1
  383. package/dist/cloud/api/usage.d.ts.map +0 -1
  384. package/dist/cloud/api/usage.js.map +0 -1
  385. package/dist/cloud/api/workspaces.d.ts.map +0 -1
  386. package/dist/cloud/api/workspaces.js.map +0 -1
  387. package/dist/cloud/billing/index.d.ts.map +0 -1
  388. package/dist/cloud/billing/index.js.map +0 -1
  389. package/dist/cloud/billing/plans.d.ts.map +0 -1
  390. package/dist/cloud/billing/plans.js.map +0 -1
  391. package/dist/cloud/billing/service.d.ts.map +0 -1
  392. package/dist/cloud/billing/service.js.map +0 -1
  393. package/dist/cloud/billing/types.d.ts.map +0 -1
  394. package/dist/cloud/billing/types.js.map +0 -1
  395. package/dist/cloud/config.d.ts.map +0 -1
  396. package/dist/cloud/config.js.map +0 -1
  397. package/dist/cloud/db/drizzle.d.ts.map +0 -1
  398. package/dist/cloud/db/drizzle.js.map +0 -1
  399. package/dist/cloud/db/index.d.ts.map +0 -1
  400. package/dist/cloud/db/index.js.map +0 -1
  401. package/dist/cloud/db/schema.d.ts.map +0 -1
  402. package/dist/cloud/db/schema.js.map +0 -1
  403. package/dist/cloud/index.d.ts.map +0 -1
  404. package/dist/cloud/index.js.map +0 -1
  405. package/dist/cloud/provisioner/index.d.ts.map +0 -1
  406. package/dist/cloud/provisioner/index.js.map +0 -1
  407. package/dist/cloud/server.d.ts.map +0 -1
  408. package/dist/cloud/server.js.map +0 -1
  409. package/dist/cloud/services/coordinator.d.ts.map +0 -1
  410. package/dist/cloud/services/coordinator.js.map +0 -1
  411. package/dist/cloud/services/planLimits.d.ts.map +0 -1
  412. package/dist/cloud/services/planLimits.js.map +0 -1
  413. package/dist/cloud/vault/index.d.ts.map +0 -1
  414. package/dist/cloud/vault/index.js.map +0 -1
  415. package/dist/daemon/agent-manager.d.ts.map +0 -1
  416. package/dist/daemon/agent-manager.js.map +0 -1
  417. package/dist/daemon/agent-registry.d.ts.map +0 -1
  418. package/dist/daemon/agent-registry.js.map +0 -1
  419. package/dist/daemon/api.d.ts.map +0 -1
  420. package/dist/daemon/api.js.map +0 -1
  421. package/dist/daemon/auth.d.ts.map +0 -1
  422. package/dist/daemon/auth.js.map +0 -1
  423. package/dist/daemon/cloud-sync.d.ts.map +0 -1
  424. package/dist/daemon/cloud-sync.js.map +0 -1
  425. package/dist/daemon/connection.d.ts.map +0 -1
  426. package/dist/daemon/connection.js.map +0 -1
  427. package/dist/daemon/index.d.ts.map +0 -1
  428. package/dist/daemon/index.js.map +0 -1
  429. package/dist/daemon/orchestrator.d.ts.map +0 -1
  430. package/dist/daemon/orchestrator.js.map +0 -1
  431. package/dist/daemon/registry.d.ts.map +0 -1
  432. package/dist/daemon/registry.js.map +0 -1
  433. package/dist/daemon/router.d.ts.map +0 -1
  434. package/dist/daemon/router.js.map +0 -1
  435. package/dist/daemon/server.d.ts.map +0 -1
  436. package/dist/daemon/server.js.map +0 -1
  437. package/dist/daemon/types.d.ts.map +0 -1
  438. package/dist/daemon/types.js.map +0 -1
  439. package/dist/daemon/workspace-manager.d.ts.map +0 -1
  440. package/dist/daemon/workspace-manager.js.map +0 -1
  441. package/dist/dashboard/out/_next/static/chunks/693-7b3301d8f6bc5014.js +0 -1
  442. package/dist/dashboard/out/_next/static/chunks/713-f78477eb185f1f4d.js +0 -1
  443. package/dist/dashboard/out/_next/static/chunks/766-e53e1cfe39b0b5b5.js +0 -1
  444. package/dist/dashboard/out/_next/static/chunks/900-037c64bfd797fb2a.js +0 -1
  445. package/dist/dashboard/out/_next/static/chunks/app/app/page-e3d9e1f4466b9bae.js +0 -1
  446. package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +0 -1
  447. package/dist/dashboard/out/_next/static/chunks/app/metrics/page-e68825a81db67ba1.js +0 -1
  448. package/dist/dashboard/out/_next/static/chunks/app/page-cc108bf68c8a657f.js +0 -1
  449. package/dist/dashboard/out/_next/static/chunks/app/pricing/page-d80e03a5297f95b6.js +0 -1
  450. package/dist/dashboard/out/_next/static/chunks/webpack-a5acc2831d094776.js +0 -1
  451. package/dist/dashboard/out/_next/static/css/79b80143647a07d7.css +0 -1
  452. package/dist/dashboard/out/_next/static/css/8cf277370ad48cfe.css +0 -1
  453. package/dist/dashboard-server/metrics.d.ts.map +0 -1
  454. package/dist/dashboard-server/metrics.js.map +0 -1
  455. package/dist/dashboard-server/needs-attention.d.ts.map +0 -1
  456. package/dist/dashboard-server/needs-attention.js.map +0 -1
  457. package/dist/dashboard-server/server.d.ts.map +0 -1
  458. package/dist/dashboard-server/server.js.map +0 -1
  459. package/dist/dashboard-server/start.d.ts.map +0 -1
  460. package/dist/dashboard-server/start.js.map +0 -1
  461. package/dist/hooks/inbox-check/hook.d.ts.map +0 -1
  462. package/dist/hooks/inbox-check/hook.js.map +0 -1
  463. package/dist/hooks/inbox-check/index.d.ts.map +0 -1
  464. package/dist/hooks/inbox-check/index.js.map +0 -1
  465. package/dist/hooks/inbox-check/types.d.ts.map +0 -1
  466. package/dist/hooks/inbox-check/types.js.map +0 -1
  467. package/dist/hooks/inbox-check/utils.d.ts.map +0 -1
  468. package/dist/hooks/inbox-check/utils.js.map +0 -1
  469. package/dist/hooks/index.d.ts.map +0 -1
  470. package/dist/hooks/index.js.map +0 -1
  471. package/dist/hooks/types.d.ts.map +0 -1
  472. package/dist/hooks/types.js.map +0 -1
  473. package/dist/index.d.ts.map +0 -1
  474. package/dist/index.js.map +0 -1
  475. package/dist/protocol/framing.d.ts.map +0 -1
  476. package/dist/protocol/framing.js.map +0 -1
  477. package/dist/protocol/index.d.ts.map +0 -1
  478. package/dist/protocol/index.js.map +0 -1
  479. package/dist/protocol/types.d.ts.map +0 -1
  480. package/dist/protocol/types.js.map +0 -1
  481. package/dist/resiliency/context-persistence.d.ts.map +0 -1
  482. package/dist/resiliency/context-persistence.js.map +0 -1
  483. package/dist/resiliency/health-monitor.d.ts.map +0 -1
  484. package/dist/resiliency/health-monitor.js.map +0 -1
  485. package/dist/resiliency/index.d.ts.map +0 -1
  486. package/dist/resiliency/index.js.map +0 -1
  487. package/dist/resiliency/logger.d.ts.map +0 -1
  488. package/dist/resiliency/logger.js.map +0 -1
  489. package/dist/resiliency/metrics.d.ts.map +0 -1
  490. package/dist/resiliency/metrics.js.map +0 -1
  491. package/dist/resiliency/provider-context.d.ts.map +0 -1
  492. package/dist/resiliency/provider-context.js.map +0 -1
  493. package/dist/resiliency/supervisor.d.ts.map +0 -1
  494. package/dist/resiliency/supervisor.js.map +0 -1
  495. package/dist/state/agent-state.d.ts.map +0 -1
  496. package/dist/state/agent-state.js.map +0 -1
  497. package/dist/storage/adapter.d.ts.map +0 -1
  498. package/dist/storage/adapter.js.map +0 -1
  499. package/dist/storage/sqlite-adapter.d.ts.map +0 -1
  500. package/dist/storage/sqlite-adapter.js.map +0 -1
  501. package/dist/utils/agent-config.d.ts.map +0 -1
  502. package/dist/utils/agent-config.js.map +0 -1
  503. package/dist/utils/command-resolver.d.ts.map +0 -1
  504. package/dist/utils/command-resolver.js.map +0 -1
  505. package/dist/utils/index.d.ts.map +0 -1
  506. package/dist/utils/index.js.map +0 -1
  507. package/dist/utils/logger.d.ts.map +0 -1
  508. package/dist/utils/logger.js.map +0 -1
  509. package/dist/utils/name-generator.d.ts.map +0 -1
  510. package/dist/utils/name-generator.js.map +0 -1
  511. package/dist/utils/project-namespace.d.ts.map +0 -1
  512. package/dist/utils/project-namespace.js.map +0 -1
  513. package/dist/utils/tmux-resolver.d.ts.map +0 -1
  514. package/dist/utils/tmux-resolver.js.map +0 -1
  515. package/dist/utils/update-checker.d.ts.map +0 -1
  516. package/dist/utils/update-checker.js.map +0 -1
  517. package/dist/wrapper/client.d.ts.map +0 -1
  518. package/dist/wrapper/client.js.map +0 -1
  519. package/dist/wrapper/inbox.d.ts.map +0 -1
  520. package/dist/wrapper/inbox.js.map +0 -1
  521. package/dist/wrapper/index.d.ts.map +0 -1
  522. package/dist/wrapper/index.js.map +0 -1
  523. package/dist/wrapper/parser.d.ts.map +0 -1
  524. package/dist/wrapper/parser.js.map +0 -1
  525. package/dist/wrapper/pty-wrapper.d.ts.map +0 -1
  526. package/dist/wrapper/pty-wrapper.js.map +0 -1
  527. package/dist/wrapper/tmux-wrapper.d.ts.map +0 -1
  528. package/dist/wrapper/tmux-wrapper.js.map +0 -1
  529. package/docs/AGENTS.md +0 -513
  530. package/docs/ARCHITECTURE_DECISIONS.md +0 -175
  531. package/docs/CHANGELOG.md +0 -11
  532. package/docs/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
  533. package/docs/CLOUD-ARCHITECTURE.md +0 -652
  534. package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
  535. package/docs/COMPETITIVE_ANALYSIS.md +0 -897
  536. package/docs/CONTRIBUTING.md +0 -151
  537. package/docs/DESIGN_BRIDGE_STAFFING.md +0 -878
  538. package/docs/DESIGN_V2.md +0 -1079
  539. package/docs/INTEGRATION-GUIDE.md +0 -926
  540. package/docs/MONETIZATION.md +0 -1679
  541. package/docs/PROPOSAL-trajectories.md +0 -1582
  542. package/docs/PROTOCOL.md +0 -325
  543. package/docs/SCALING_ANALYSIS.md +0 -280
  544. package/docs/TESTING_PRESENCE_FEATURES.md +0 -327
  545. package/docs/TMUX_IMPLEMENTATION_NOTES.md +0 -364
  546. package/docs/TMUX_IMPROVEMENTS.md +0 -968
  547. package/docs/agent-relay-snippet.md +0 -168
  548. package/docs/competitive-analysis-mcp-agent-mail.md +0 -389
  549. package/docs/dashboard-v2-plan.md +0 -179
  550. package/docs/guides/CLOUD.md +0 -236
  551. package/docs/guides/LOCAL.md +0 -535
  552. package/docs/guides/SELF-HOSTED.md +0 -494
  553. package/docs/proposals/shadow-as-subagent.md +0 -765
  554. package/docs/proposals/slack-bot-integration.md +0 -1457
  555. package/docs/removable-code-analysis.md +0 -24
  556. package/scripts/dev/PUBLIC_RELEASE_PLAN.md +0 -88
  557. package/scripts/dev/dev-team-setup.sh +0 -431
  558. package/scripts/e2e-test.sh +0 -119
  559. package/scripts/games/game-protocol.md +0 -79
  560. package/scripts/games/hearts-setup.sh +0 -264
  561. package/scripts/tictactoe-setup.sh +0 -181
  562. /package/dist/dashboard/out/_next/static/chunks/{117-b2cd8d6485aacf2b.js → 117-f7b8ab0809342e77.js} +0 -0
  563. /package/dist/dashboard/out/_next/static/chunks/{648-8f3f26864ce515e5.js → 648-5cc6e1921389a58a.js} +0 -0
  564. /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-0b990dbb71d72a98.js → page-53b8a69f76db17d0.js} +0 -0
  565. /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-bf46c09eb57e019c.js → fd9d1056-609918ca7b6280bb.js} +0 -0
  566. /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_buildManifest.js +0 -0
  567. /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_ssgManifest.js +0 -0
@@ -0,0 +1,338 @@
1
+ /**
2
+ * Supermemory.ai Memory Adapter
3
+ *
4
+ * Integration with supermemory.ai for semantic memory storage and retrieval.
5
+ * Provides AI-optimized search with embedding-based similarity.
6
+ *
7
+ * @see https://supermemory.ai/docs
8
+ */
9
+ /**
10
+ * Supermemory.ai adapter for semantic memory storage
11
+ */
12
+ export class SupermemoryAdapter {
13
+ type = 'supermemory';
14
+ apiKey;
15
+ endpoint;
16
+ container;
17
+ defaultAgentId;
18
+ defaultProjectId;
19
+ timeout;
20
+ initialized = false;
21
+ constructor(options) {
22
+ if (!options.apiKey) {
23
+ throw new Error('SupermemoryAdapter requires an API key');
24
+ }
25
+ this.apiKey = options.apiKey;
26
+ this.endpoint = options.endpoint ?? 'https://api.supermemory.ai';
27
+ this.container = options.container;
28
+ this.defaultAgentId = options.defaultAgentId;
29
+ this.defaultProjectId = options.defaultProjectId;
30
+ this.timeout = options.timeout ?? 30000;
31
+ }
32
+ async init() {
33
+ // Verify API key by making a simple request
34
+ try {
35
+ const response = await this.fetch('/v3/documents/list', {
36
+ method: 'POST',
37
+ body: JSON.stringify({ limit: 1 }),
38
+ });
39
+ if (!response.ok && response.status !== 404) {
40
+ const error = await response.text();
41
+ throw new Error(`Supermemory API error: ${error}`);
42
+ }
43
+ this.initialized = true;
44
+ }
45
+ catch (error) {
46
+ if (error instanceof Error && error.message.includes('fetch')) {
47
+ throw new Error(`Failed to connect to Supermemory API: ${error.message}`);
48
+ }
49
+ throw error;
50
+ }
51
+ }
52
+ async add(content, options) {
53
+ try {
54
+ const metadata = {
55
+ source: options?.source ?? 'agent-relay',
56
+ agentId: options?.agentId ?? this.defaultAgentId,
57
+ projectId: options?.projectId ?? this.defaultProjectId,
58
+ sessionId: options?.sessionId,
59
+ tags: options?.tags,
60
+ ...options?.metadata,
61
+ };
62
+ // Remove undefined values
63
+ Object.keys(metadata).forEach(key => {
64
+ if (metadata[key] === undefined) {
65
+ delete metadata[key];
66
+ }
67
+ });
68
+ const body = {
69
+ content,
70
+ metadata,
71
+ };
72
+ if (this.container) {
73
+ body.containerTags = [this.container];
74
+ }
75
+ const response = await this.fetch('/v3/documents', {
76
+ method: 'POST',
77
+ body: JSON.stringify(body),
78
+ });
79
+ if (!response.ok) {
80
+ const error = await response.text();
81
+ return { success: false, error: `Failed to add memory: ${error}` };
82
+ }
83
+ const result = await response.json();
84
+ return { success: true, id: result.id ?? result.documentId };
85
+ }
86
+ catch (error) {
87
+ return {
88
+ success: false,
89
+ error: error instanceof Error ? error.message : 'Unknown error',
90
+ };
91
+ }
92
+ }
93
+ async search(query) {
94
+ try {
95
+ const filters = {};
96
+ if (query.agentId) {
97
+ filters.agentId = query.agentId;
98
+ }
99
+ if (query.projectId) {
100
+ filters.projectId = query.projectId;
101
+ }
102
+ if (query.tags && query.tags.length > 0) {
103
+ filters.tags = query.tags;
104
+ }
105
+ const body = {
106
+ query: query.query,
107
+ limit: query.limit ?? 10,
108
+ minScore: query.minScore ?? 0.5,
109
+ };
110
+ if (Object.keys(filters).length > 0) {
111
+ body.filters = filters;
112
+ }
113
+ if (this.container) {
114
+ body.containerTags = [this.container];
115
+ }
116
+ // Use v4 search for lower latency
117
+ const response = await this.fetch('/v4/search', {
118
+ method: 'POST',
119
+ body: JSON.stringify(body),
120
+ });
121
+ if (!response.ok) {
122
+ console.error('[supermemory] Search failed:', await response.text());
123
+ return [];
124
+ }
125
+ const result = await response.json();
126
+ const results = result.results ?? [];
127
+ return results.map(doc => this.documentToMemoryEntry(doc));
128
+ }
129
+ catch (error) {
130
+ console.error('[supermemory] Search error:', error);
131
+ return [];
132
+ }
133
+ }
134
+ async get(id) {
135
+ try {
136
+ const response = await this.fetch(`/v3/documents/${encodeURIComponent(id)}`, {
137
+ method: 'GET',
138
+ });
139
+ if (!response.ok) {
140
+ if (response.status === 404) {
141
+ return null;
142
+ }
143
+ console.error('[supermemory] Get failed:', await response.text());
144
+ return null;
145
+ }
146
+ const doc = await response.json();
147
+ return this.documentToMemoryEntry(doc);
148
+ }
149
+ catch (error) {
150
+ console.error('[supermemory] Get error:', error);
151
+ return null;
152
+ }
153
+ }
154
+ async delete(id) {
155
+ try {
156
+ const response = await this.fetch(`/v3/documents/${encodeURIComponent(id)}`, {
157
+ method: 'DELETE',
158
+ });
159
+ if (!response.ok && response.status !== 404) {
160
+ const error = await response.text();
161
+ return { success: false, error: `Failed to delete: ${error}` };
162
+ }
163
+ return { success: true, id };
164
+ }
165
+ catch (error) {
166
+ return {
167
+ success: false,
168
+ error: error instanceof Error ? error.message : 'Unknown error',
169
+ };
170
+ }
171
+ }
172
+ async update(id, content, options) {
173
+ try {
174
+ const body = { content };
175
+ if (options) {
176
+ const metadata = {};
177
+ if (options.tags)
178
+ metadata.tags = options.tags;
179
+ if (options.metadata)
180
+ Object.assign(metadata, options.metadata);
181
+ if (Object.keys(metadata).length > 0) {
182
+ body.metadata = metadata;
183
+ }
184
+ }
185
+ const response = await this.fetch(`/v3/documents/${encodeURIComponent(id)}`, {
186
+ method: 'PATCH',
187
+ body: JSON.stringify(body),
188
+ });
189
+ if (!response.ok) {
190
+ const error = await response.text();
191
+ return { success: false, error: `Failed to update: ${error}` };
192
+ }
193
+ return { success: true, id };
194
+ }
195
+ catch (error) {
196
+ return {
197
+ success: false,
198
+ error: error instanceof Error ? error.message : 'Unknown error',
199
+ };
200
+ }
201
+ }
202
+ async list(options) {
203
+ try {
204
+ const body = {
205
+ limit: options?.limit ?? 50,
206
+ sortBy: 'createdAt',
207
+ sortOrder: 'desc',
208
+ };
209
+ const filters = {};
210
+ if (options?.agentId)
211
+ filters.agentId = options.agentId;
212
+ if (options?.projectId)
213
+ filters.projectId = options.projectId;
214
+ if (Object.keys(filters).length > 0) {
215
+ body.filters = filters;
216
+ }
217
+ if (this.container) {
218
+ body.containerTags = [this.container];
219
+ }
220
+ const response = await this.fetch('/v3/documents/list', {
221
+ method: 'POST',
222
+ body: JSON.stringify(body),
223
+ });
224
+ if (!response.ok) {
225
+ console.error('[supermemory] List failed:', await response.text());
226
+ return [];
227
+ }
228
+ const result = await response.json();
229
+ return (result.documents ?? []).map(doc => this.documentToMemoryEntry(doc));
230
+ }
231
+ catch (error) {
232
+ console.error('[supermemory] List error:', error);
233
+ return [];
234
+ }
235
+ }
236
+ async clear(options) {
237
+ try {
238
+ // Supermemory supports bulk delete by container tags
239
+ // For more specific filtering, we need to list and delete individually
240
+ if (!options?.agentId && !options?.projectId && this.container) {
241
+ // Delete by container
242
+ const response = await this.fetch('/v3/documents/bulk', {
243
+ method: 'DELETE',
244
+ body: JSON.stringify({ containerTags: [this.container] }),
245
+ });
246
+ if (!response.ok) {
247
+ return { success: false, error: await response.text() };
248
+ }
249
+ return { success: true };
250
+ }
251
+ // List and delete matching memories
252
+ const memories = await this.list({
253
+ limit: 1000,
254
+ agentId: options?.agentId,
255
+ projectId: options?.projectId,
256
+ });
257
+ const toDelete = options?.before
258
+ ? memories.filter(m => m.createdAt < options.before)
259
+ : memories;
260
+ for (const memory of toDelete) {
261
+ await this.delete(memory.id);
262
+ }
263
+ return { success: true };
264
+ }
265
+ catch (error) {
266
+ return {
267
+ success: false,
268
+ error: error instanceof Error ? error.message : 'Unknown error',
269
+ };
270
+ }
271
+ }
272
+ async stats() {
273
+ // Supermemory doesn't have a stats endpoint, so we approximate
274
+ const memories = await this.list({ limit: 1000 });
275
+ const byAgent = {};
276
+ const byProject = {};
277
+ for (const memory of memories) {
278
+ if (memory.agentId) {
279
+ byAgent[memory.agentId] = (byAgent[memory.agentId] ?? 0) + 1;
280
+ }
281
+ if (memory.projectId) {
282
+ byProject[memory.projectId] = (byProject[memory.projectId] ?? 0) + 1;
283
+ }
284
+ }
285
+ return {
286
+ totalCount: memories.length,
287
+ byAgent,
288
+ byProject,
289
+ };
290
+ }
291
+ async close() {
292
+ this.initialized = false;
293
+ }
294
+ /**
295
+ * Make a fetch request to the Supermemory API
296
+ */
297
+ async fetch(path, options) {
298
+ const url = `${this.endpoint}${path}`;
299
+ const controller = new AbortController();
300
+ const timeoutId = setTimeout(() => controller.abort(), this.timeout);
301
+ try {
302
+ const response = await fetch(url, {
303
+ ...options,
304
+ headers: {
305
+ 'Content-Type': 'application/json',
306
+ 'Authorization': `Bearer ${this.apiKey}`,
307
+ ...options.headers,
308
+ },
309
+ signal: controller.signal,
310
+ });
311
+ return response;
312
+ }
313
+ finally {
314
+ clearTimeout(timeoutId);
315
+ }
316
+ }
317
+ /**
318
+ * Convert a Supermemory document to a MemoryEntry
319
+ */
320
+ documentToMemoryEntry(doc) {
321
+ const metadata = doc.metadata ?? {};
322
+ return {
323
+ id: doc.id,
324
+ content: doc.content,
325
+ createdAt: doc.createdAt
326
+ ? new Date(doc.createdAt).getTime()
327
+ : Date.now(),
328
+ tags: metadata.tags,
329
+ source: metadata.source,
330
+ agentId: metadata.agentId,
331
+ projectId: metadata.projectId,
332
+ sessionId: metadata.sessionId,
333
+ score: doc.score,
334
+ metadata,
335
+ };
336
+ }
337
+ }
338
+ //# sourceMappingURL=supermemory.js.map
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Memory Adapter Factory
3
+ *
4
+ * Creates memory adapters based on configuration.
5
+ * Supports environment variables for configuration.
6
+ */
7
+ import type { MemoryAdapter, MemoryConfig } from './types.js';
8
+ /**
9
+ * Get memory configuration from environment variables
10
+ *
11
+ * Environment variables:
12
+ * - AGENT_RELAY_MEMORY_TYPE: 'inmemory', 'supermemory', 'claude'
13
+ * - AGENT_RELAY_MEMORY_API_KEY: API key for external services
14
+ * - AGENT_RELAY_MEMORY_ENDPOINT: Custom API endpoint
15
+ * - SUPERMEMORY_API_KEY: Supermemory-specific API key (fallback)
16
+ */
17
+ export declare function getMemoryConfigFromEnv(): MemoryConfig;
18
+ /**
19
+ * Create a memory adapter based on configuration
20
+ *
21
+ * @param config - Memory configuration (merged with env vars)
22
+ * @returns Initialized memory adapter
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * // Use environment variables
27
+ * const memory = await createMemoryAdapter();
28
+ *
29
+ * // Explicit configuration
30
+ * const memory = await createMemoryAdapter({
31
+ * type: 'supermemory',
32
+ * apiKey: 'my-api-key',
33
+ * });
34
+ * ```
35
+ */
36
+ export declare function createMemoryAdapter(config?: Partial<MemoryConfig>): Promise<MemoryAdapter>;
37
+ /**
38
+ * Check if a memory adapter type is available
39
+ *
40
+ * @param type - Adapter type to check
41
+ * @returns Whether the adapter is available
42
+ */
43
+ export declare function isMemoryAdapterAvailable(type: string): boolean;
44
+ /**
45
+ * Get list of available memory adapter types
46
+ */
47
+ export declare function getAvailableMemoryAdapters(): string[];
48
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Memory Adapter Factory
3
+ *
4
+ * Creates memory adapters based on configuration.
5
+ * Supports environment variables for configuration.
6
+ */
7
+ import { InMemoryAdapter } from './adapters/inmemory.js';
8
+ import { SupermemoryAdapter } from './adapters/supermemory.js';
9
+ /**
10
+ * Get memory configuration from environment variables
11
+ *
12
+ * Environment variables:
13
+ * - AGENT_RELAY_MEMORY_TYPE: 'inmemory', 'supermemory', 'claude'
14
+ * - AGENT_RELAY_MEMORY_API_KEY: API key for external services
15
+ * - AGENT_RELAY_MEMORY_ENDPOINT: Custom API endpoint
16
+ * - SUPERMEMORY_API_KEY: Supermemory-specific API key (fallback)
17
+ */
18
+ export function getMemoryConfigFromEnv() {
19
+ const type = process.env.AGENT_RELAY_MEMORY_TYPE ?? 'inmemory';
20
+ const apiKey = process.env.AGENT_RELAY_MEMORY_API_KEY ??
21
+ process.env.SUPERMEMORY_API_KEY;
22
+ return {
23
+ type,
24
+ apiKey,
25
+ endpoint: process.env.AGENT_RELAY_MEMORY_ENDPOINT,
26
+ defaultAgentId: process.env.AGENT_RELAY_AGENT_ID,
27
+ defaultProjectId: process.env.AGENT_RELAY_PROJECT_ID,
28
+ };
29
+ }
30
+ /**
31
+ * Create a memory adapter based on configuration
32
+ *
33
+ * @param config - Memory configuration (merged with env vars)
34
+ * @returns Initialized memory adapter
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * // Use environment variables
39
+ * const memory = await createMemoryAdapter();
40
+ *
41
+ * // Explicit configuration
42
+ * const memory = await createMemoryAdapter({
43
+ * type: 'supermemory',
44
+ * apiKey: 'my-api-key',
45
+ * });
46
+ * ```
47
+ */
48
+ export async function createMemoryAdapter(config) {
49
+ // Merge with environment config
50
+ const envConfig = getMemoryConfigFromEnv();
51
+ const finalConfig = {
52
+ type: config?.type ?? envConfig.type ?? 'inmemory',
53
+ apiKey: config?.apiKey ?? envConfig.apiKey,
54
+ endpoint: config?.endpoint ?? envConfig.endpoint,
55
+ defaultAgentId: config?.defaultAgentId ?? envConfig.defaultAgentId,
56
+ defaultProjectId: config?.defaultProjectId ?? envConfig.defaultProjectId,
57
+ options: { ...envConfig.options, ...config?.options },
58
+ };
59
+ const adapterType = finalConfig.type.toLowerCase();
60
+ let adapter;
61
+ switch (adapterType) {
62
+ case 'supermemory':
63
+ case 'supermemory.ai': {
64
+ if (!finalConfig.apiKey) {
65
+ throw new Error('Supermemory adapter requires an API key. ' +
66
+ 'Set AGENT_RELAY_MEMORY_API_KEY or SUPERMEMORY_API_KEY environment variable, ' +
67
+ 'or provide apiKey in config.');
68
+ }
69
+ adapter = new SupermemoryAdapter({
70
+ apiKey: finalConfig.apiKey,
71
+ endpoint: finalConfig.endpoint,
72
+ defaultAgentId: finalConfig.defaultAgentId,
73
+ defaultProjectId: finalConfig.defaultProjectId,
74
+ container: finalConfig.options?.container,
75
+ timeout: finalConfig.options?.timeout,
76
+ });
77
+ break;
78
+ }
79
+ case 'claude':
80
+ case 'claude-memory': {
81
+ // Claude memory is not yet available as a public API
82
+ // Fall back to in-memory with a warning
83
+ console.warn('[memory] Claude memory adapter not yet available. ' +
84
+ 'Using in-memory adapter as fallback.');
85
+ adapter = new InMemoryAdapter({
86
+ defaultAgentId: finalConfig.defaultAgentId,
87
+ defaultProjectId: finalConfig.defaultProjectId,
88
+ maxMemories: finalConfig.options?.maxMemories,
89
+ });
90
+ break;
91
+ }
92
+ case 'inmemory':
93
+ case 'memory':
94
+ case 'none':
95
+ default: {
96
+ adapter = new InMemoryAdapter({
97
+ defaultAgentId: finalConfig.defaultAgentId,
98
+ defaultProjectId: finalConfig.defaultProjectId,
99
+ maxMemories: finalConfig.options?.maxMemories,
100
+ });
101
+ break;
102
+ }
103
+ }
104
+ await adapter.init();
105
+ return adapter;
106
+ }
107
+ /**
108
+ * Check if a memory adapter type is available
109
+ *
110
+ * @param type - Adapter type to check
111
+ * @returns Whether the adapter is available
112
+ */
113
+ export function isMemoryAdapterAvailable(type) {
114
+ const adapterType = type.toLowerCase();
115
+ switch (adapterType) {
116
+ case 'inmemory':
117
+ case 'memory':
118
+ case 'none':
119
+ return true;
120
+ case 'supermemory':
121
+ case 'supermemory.ai':
122
+ // Available if API key is configured
123
+ return !!(process.env.AGENT_RELAY_MEMORY_API_KEY ||
124
+ process.env.SUPERMEMORY_API_KEY);
125
+ case 'claude':
126
+ case 'claude-memory':
127
+ // Not yet available
128
+ return false;
129
+ default:
130
+ return false;
131
+ }
132
+ }
133
+ /**
134
+ * Get list of available memory adapter types
135
+ */
136
+ export function getAvailableMemoryAdapters() {
137
+ const adapters = ['inmemory'];
138
+ if (process.env.AGENT_RELAY_MEMORY_API_KEY || process.env.SUPERMEMORY_API_KEY) {
139
+ adapters.push('supermemory');
140
+ }
141
+ return adapters;
142
+ }
143
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Agent Relay Memory System
3
+ *
4
+ * Provides semantic memory storage and retrieval with multiple backend support.
5
+ * Memory adapters can be used standalone or integrated with the hooks system.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createMemoryAdapter } from 'agent-relay/memory';
10
+ *
11
+ * // Create an in-memory adapter for testing
12
+ * const memory = await createMemoryAdapter({ type: 'inmemory' });
13
+ *
14
+ * // Or use supermemory.ai for production
15
+ * const memory = await createMemoryAdapter({
16
+ * type: 'supermemory',
17
+ * apiKey: process.env.SUPERMEMORY_API_KEY,
18
+ * });
19
+ *
20
+ * // Add a memory
21
+ * await memory.add('User prefers TypeScript', { tags: ['preference'] });
22
+ *
23
+ * // Search for relevant memories
24
+ * const results = await memory.search({ query: 'programming language' });
25
+ * ```
26
+ */
27
+ export * from './types.js';
28
+ export * from './adapters/index.js';
29
+ export { createMemoryAdapter, getMemoryConfigFromEnv } from './factory.js';
30
+ export { createMemoryService } from './service.js';
31
+ export { createMemoryHooks, getMemoryHooks } from './memory-hooks.js';
32
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Agent Relay Memory System
3
+ *
4
+ * Provides semantic memory storage and retrieval with multiple backend support.
5
+ * Memory adapters can be used standalone or integrated with the hooks system.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * import { createMemoryAdapter } from 'agent-relay/memory';
10
+ *
11
+ * // Create an in-memory adapter for testing
12
+ * const memory = await createMemoryAdapter({ type: 'inmemory' });
13
+ *
14
+ * // Or use supermemory.ai for production
15
+ * const memory = await createMemoryAdapter({
16
+ * type: 'supermemory',
17
+ * apiKey: process.env.SUPERMEMORY_API_KEY,
18
+ * });
19
+ *
20
+ * // Add a memory
21
+ * await memory.add('User prefers TypeScript', { tags: ['preference'] });
22
+ *
23
+ * // Search for relevant memories
24
+ * const results = await memory.search({ query: 'programming language' });
25
+ * ```
26
+ */
27
+ export * from './types.js';
28
+ export * from './adapters/index.js';
29
+ export { createMemoryAdapter, getMemoryConfigFromEnv } from './factory.js';
30
+ export { createMemoryService } from './service.js';
31
+ export { createMemoryHooks, getMemoryHooks } from './memory-hooks.js';
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Memory Hooks
3
+ *
4
+ * Provides memory-aware lifecycle hooks that automatically:
5
+ * - Load relevant context on session start
6
+ * - Prompt for memory save on session end
7
+ * - Handle @memory: pattern output
8
+ */
9
+ import type { LifecycleHooks } from '../hooks/types.js';
10
+ import type { MemoryAdapter, MemoryConfig } from './types.js';
11
+ /**
12
+ * Options for memory hooks
13
+ */
14
+ export interface MemoryHooksOptions {
15
+ /** Pre-configured memory adapter */
16
+ adapter?: MemoryAdapter;
17
+ /** Configuration for creating a new adapter */
18
+ config?: Partial<MemoryConfig>;
19
+ /** Agent ID for memory operations */
20
+ agentId?: string;
21
+ /** Project ID for memory operations */
22
+ projectId?: string;
23
+ /** Whether to inject relevant memories on session start */
24
+ injectOnStart?: boolean;
25
+ /** Maximum memories to inject on start */
26
+ maxStartMemories?: number;
27
+ /** Search query for session start (default: project-based) */
28
+ startSearchQuery?: string;
29
+ /** Whether to prompt for memory save on session end */
30
+ promptOnEnd?: boolean;
31
+ /** Whether to auto-save important learnings from output */
32
+ autoSave?: boolean;
33
+ /** Whether to auto-save session summary on graceful end */
34
+ autoSaveOnEnd?: boolean;
35
+ /** Patterns that indicate content worth saving */
36
+ savePatterns?: RegExp[];
37
+ }
38
+ /**
39
+ * Create memory hooks for automatic context loading and saving
40
+ *
41
+ * @example
42
+ * ```typescript
43
+ * const hooks = createMemoryHooks({
44
+ * config: { type: 'supermemory', apiKey: 'xxx' },
45
+ * agentId: 'my-agent',
46
+ * projectId: 'my-project',
47
+ * });
48
+ *
49
+ * registry.registerLifecycleHooks(hooks);
50
+ * ```
51
+ */
52
+ export declare function createMemoryHooks(options?: MemoryHooksOptions): LifecycleHooks;
53
+ /**
54
+ * Get memory hooks with default settings
55
+ *
56
+ * @param agentId - Agent identifier
57
+ * @param projectId - Project identifier
58
+ */
59
+ export declare function getMemoryHooks(agentId: string, projectId: string): LifecycleHooks;
60
+ //# sourceMappingURL=memory-hooks.d.ts.map