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.
- package/.gitattributes +3 -0
- package/.nvmrc +1 -0
- package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.json +65 -0
- package/.trajectories/completed/2026-01/traj_1dviorhnkcb5.md +37 -0
- package/.trajectories/completed/2026-01/traj_1k5if5snst2e.json +65 -0
- package/.trajectories/completed/2026-01/traj_1k5if5snst2e.md +37 -0
- package/.trajectories/completed/2026-01/traj_1rp3rges5811.json +49 -0
- package/.trajectories/completed/2026-01/traj_1rp3rges5811.md +31 -0
- package/.trajectories/completed/2026-01/traj_22bhyulruouw.json +113 -0
- package/.trajectories/completed/2026-01/traj_22bhyulruouw.md +57 -0
- package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.json +53 -0
- package/.trajectories/completed/2026-01/traj_2dao7ddgnta0.md +32 -0
- package/.trajectories/completed/2026-01/traj_3t0440mjeunc.json +26 -0
- package/.trajectories/completed/2026-01/traj_3t0440mjeunc.md +6 -0
- package/.trajectories/completed/2026-01/traj_45x9494d9xnr.json +47 -0
- package/.trajectories/completed/2026-01/traj_45x9494d9xnr.md +32 -0
- package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.json +53 -0
- package/.trajectories/completed/2026-01/traj_4aa0bb77s4nh.md +32 -0
- package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.json +59 -0
- package/.trajectories/completed/2026-01/traj_5lhmzq8rxpqv.md +33 -0
- package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.json +53 -0
- package/.trajectories/completed/2026-01/traj_5vr4e9erb1fs.md +32 -0
- package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.json +48 -0
- package/.trajectories/completed/2026-01/traj_6fgiwdoklvym.md +24 -0
- package/.trajectories/completed/2026-01/traj_7ludwvz45veh.json +209 -0
- package/.trajectories/completed/2026-01/traj_7ludwvz45veh.md +97 -0
- package/.trajectories/completed/2026-01/traj_9921cuhel0pj.json +48 -0
- package/.trajectories/completed/2026-01/traj_9921cuhel0pj.md +24 -0
- package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.json +49 -0
- package/.trajectories/completed/2026-01/traj_ajs7zqfux4wc.md +23 -0
- package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.json +53 -0
- package/.trajectories/completed/2026-01/traj_cvtqhlwcq9s0.md +32 -0
- package/.trajectories/completed/2026-01/traj_cxofprm2m2en.json +49 -0
- package/.trajectories/completed/2026-01/traj_cxofprm2m2en.md +31 -0
- package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.json +26 -0
- package/.trajectories/completed/2026-01/traj_d2hhz3k0vrhn.md +6 -0
- package/.trajectories/completed/2026-01/traj_dfuvww9pege5.json +59 -0
- package/.trajectories/completed/2026-01/traj_dfuvww9pege5.md +37 -0
- package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.json +77 -0
- package/.trajectories/completed/2026-01/traj_g0fisy9h51mf.md +42 -0
- package/.trajectories/completed/2026-01/traj_gjdre5voouod.json +53 -0
- package/.trajectories/completed/2026-01/traj_gjdre5voouod.md +32 -0
- package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.json +25 -0
- package/.trajectories/completed/2026-01/traj_gtlyqtta3x8l.md +15 -0
- package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.json +101 -0
- package/.trajectories/completed/2026-01/traj_h4xijiuip3w4.md +44 -0
- package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.json +22 -0
- package/.trajectories/completed/2026-01/traj_hhxte7w4gjjx.md +5 -0
- package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.json +53 -0
- package/.trajectories/completed/2026-01/traj_hpungyhoj6v5.md +32 -0
- package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.json +25 -0
- package/.trajectories/completed/2026-01/traj_m2xkjv0w2sq7.md +15 -0
- package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.json +53 -0
- package/.trajectories/completed/2026-01/traj_noq5zbvnrdvz.md +32 -0
- package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.json +53 -0
- package/.trajectories/completed/2026-01/traj_ntbs6ppopf46.md +32 -0
- package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.json +48 -0
- package/.trajectories/completed/2026-01/traj_ozd98si6a7ns.md +24 -0
- package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.json +53 -0
- package/.trajectories/completed/2026-01/traj_prdza7a5cxp5.md +32 -0
- package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.json +77 -0
- package/.trajectories/completed/2026-01/traj_qb3twvvywfwi.md +42 -0
- package/.trajectories/completed/2026-01/traj_qft54mi7nfor.json +53 -0
- package/.trajectories/completed/2026-01/traj_qft54mi7nfor.md +32 -0
- package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.json +83 -0
- package/.trajectories/completed/2026-01/traj_qx9uhf8whhxo.md +47 -0
- package/.trajectories/completed/2026-01/traj_rd9toccj18a0.json +59 -0
- package/.trajectories/completed/2026-01/traj_rd9toccj18a0.md +37 -0
- package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.json +48 -0
- package/.trajectories/completed/2026-01/traj_rt4fiw3ecp50.md +16 -0
- package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.json +59 -0
- package/.trajectories/completed/2026-01/traj_st8j35b0hrlc.md +37 -0
- package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.json +53 -0
- package/.trajectories/completed/2026-01/traj_t1yy8m7hbuxp.md +32 -0
- package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.json +84 -0
- package/.trajectories/completed/2026-01/traj_tmux_orchestrator_analysis.md +109 -0
- package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.json +53 -0
- package/.trajectories/completed/2026-01/traj_u9n9eqasw16k.md +32 -0
- package/.trajectories/completed/2026-01/traj_v87hypnongqx.json +71 -0
- package/.trajectories/completed/2026-01/traj_v87hypnongqx.md +42 -0
- package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.json +53 -0
- package/.trajectories/completed/2026-01/traj_wkp2fgzdyinb.md +32 -0
- package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.json +20 -0
- package/.trajectories/completed/2026-01/traj_x14t8w8rn7xg.md +6 -0
- package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.json +175 -0
- package/.trajectories/completed/2026-01/traj_xnwbznkvv8ua.md +82 -0
- package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.json +47 -0
- package/.trajectories/completed/2026-01/traj_ysjc8zaeqtd3.md +32 -0
- package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.json +59 -0
- package/.trajectories/completed/2026-01/traj_yvdadtvdgnz3.md +37 -0
- package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.json +53 -0
- package/.trajectories/completed/2026-01/traj_z0vcw1wrzide.md +32 -0
- package/.trajectories/index.json +314 -0
- package/ARCHITECTURE.md +1245 -0
- package/README.md +1 -1
- package/TESTING.md +278 -0
- package/deploy/init-db.sql +5 -0
- package/deploy/scripts/setup-fly-workspaces.sh +69 -0
- package/deploy/scripts/setup-railway.sh +75 -0
- package/deploy/workspace/entrypoint-browser.sh +118 -0
- package/deploy/workspace/entrypoint.sh +348 -0
- package/deploy/workspace/git-credential-relay +111 -0
- package/dist/bridge/spawner.d.ts +53 -0
- package/dist/bridge/spawner.js +203 -19
- package/dist/bridge/types.d.ts +12 -0
- package/dist/cli/index.js +618 -5
- package/dist/cloud/api/auth.d.ts +3 -2
- package/dist/cloud/api/auth.js +10 -98
- package/dist/cloud/api/billing.js +30 -9
- package/dist/cloud/api/cli-pty-runner.d.ts +54 -0
- package/dist/cloud/api/cli-pty-runner.js +119 -0
- package/dist/cloud/api/codex-auth-helper.d.ts +15 -0
- package/dist/cloud/api/codex-auth-helper.js +100 -0
- package/dist/cloud/api/generic-webhooks.d.ts +8 -0
- package/dist/cloud/api/generic-webhooks.js +129 -0
- package/dist/cloud/api/git.d.ts +8 -0
- package/dist/cloud/api/git.js +152 -0
- package/dist/cloud/api/github-app.d.ts +11 -0
- package/dist/cloud/api/github-app.js +189 -0
- package/dist/cloud/api/middleware/planLimits.d.ts +7 -0
- package/dist/cloud/api/middleware/planLimits.js +39 -1
- package/dist/cloud/api/monitoring.d.ts +11 -0
- package/dist/cloud/api/monitoring.js +578 -0
- package/dist/cloud/api/nango-auth.d.ts +9 -0
- package/dist/cloud/api/nango-auth.js +377 -0
- package/dist/cloud/api/onboarding.d.ts +8 -1
- package/dist/cloud/api/onboarding.js +313 -119
- package/dist/cloud/api/policy.d.ts +8 -0
- package/dist/cloud/api/policy.js +229 -0
- package/dist/cloud/api/providers.js +114 -42
- package/dist/cloud/api/repos.d.ts +1 -0
- package/dist/cloud/api/repos.js +186 -0
- package/dist/cloud/api/test-helpers.d.ts +10 -0
- package/dist/cloud/api/test-helpers.js +575 -0
- package/dist/cloud/api/webhooks.d.ts +8 -0
- package/dist/cloud/api/webhooks.js +645 -0
- package/dist/cloud/api/workspaces.js +320 -12
- package/dist/cloud/billing/plans.js +32 -19
- package/dist/cloud/billing/types.d.ts +9 -3
- package/dist/cloud/config.d.ts +9 -2
- package/dist/cloud/config.js +13 -4
- package/dist/cloud/db/drizzle.d.ts +84 -1
- package/dist/cloud/db/drizzle.js +470 -0
- package/dist/cloud/db/index.d.ts +9 -4
- package/dist/cloud/db/index.js +11 -3
- package/dist/cloud/db/schema.d.ts +3283 -556
- package/dist/cloud/db/schema.js +314 -1
- package/dist/cloud/index.d.ts +1 -0
- package/dist/cloud/index.js +2 -0
- package/dist/cloud/provisioner/index.d.ts +56 -0
- package/dist/cloud/provisioner/index.js +676 -34
- package/dist/cloud/server.d.ts +1 -0
- package/dist/cloud/server.js +362 -13
- package/dist/cloud/services/auto-scaler.d.ts +152 -0
- package/dist/cloud/services/auto-scaler.js +439 -0
- package/dist/cloud/services/capacity-manager.d.ts +148 -0
- package/dist/cloud/services/capacity-manager.js +449 -0
- package/dist/cloud/services/ci-agent-spawner.d.ts +49 -0
- package/dist/cloud/services/ci-agent-spawner.js +373 -0
- package/dist/cloud/services/index.d.ts +12 -0
- package/dist/cloud/services/index.js +15 -0
- package/dist/cloud/services/mention-handler.d.ts +65 -0
- package/dist/cloud/services/mention-handler.js +405 -0
- package/dist/cloud/services/nango.d.ts +186 -0
- package/dist/cloud/services/nango.js +344 -0
- package/dist/cloud/services/persistence.d.ts +131 -0
- package/dist/cloud/services/persistence.js +200 -0
- package/dist/cloud/services/planLimits.d.ts +37 -0
- package/dist/cloud/services/planLimits.js +86 -5
- package/dist/cloud/services/scaling-orchestrator.d.ts +159 -0
- package/dist/cloud/services/scaling-orchestrator.js +502 -0
- package/dist/cloud/services/scaling-policy.d.ts +121 -0
- package/dist/cloud/services/scaling-policy.js +415 -0
- package/dist/cloud/vault/index.js +1 -1
- package/dist/cloud/webhooks/index.d.ts +24 -0
- package/dist/cloud/webhooks/index.js +29 -0
- package/dist/cloud/webhooks/parsers/github.d.ts +8 -0
- package/dist/cloud/webhooks/parsers/github.js +234 -0
- package/dist/cloud/webhooks/parsers/index.d.ts +23 -0
- package/dist/cloud/webhooks/parsers/index.js +30 -0
- package/dist/cloud/webhooks/parsers/linear.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/linear.js +258 -0
- package/dist/cloud/webhooks/parsers/slack.d.ts +9 -0
- package/dist/cloud/webhooks/parsers/slack.js +214 -0
- package/dist/cloud/webhooks/responders/github.d.ts +8 -0
- package/dist/cloud/webhooks/responders/github.js +73 -0
- package/dist/cloud/webhooks/responders/index.d.ts +23 -0
- package/dist/cloud/webhooks/responders/index.js +30 -0
- package/dist/cloud/webhooks/responders/linear.d.ts +9 -0
- package/dist/cloud/webhooks/responders/linear.js +149 -0
- package/dist/cloud/webhooks/responders/slack.d.ts +20 -0
- package/dist/cloud/webhooks/responders/slack.js +178 -0
- package/dist/cloud/webhooks/router.d.ts +25 -0
- package/dist/cloud/webhooks/router.js +504 -0
- package/dist/cloud/webhooks/rules-engine.d.ts +24 -0
- package/dist/cloud/webhooks/rules-engine.js +287 -0
- package/dist/cloud/webhooks/types.d.ts +186 -0
- package/dist/cloud/webhooks/types.js +8 -0
- package/dist/continuity/formatter.d.ts +51 -0
- package/dist/continuity/formatter.js +313 -0
- package/dist/continuity/handoff-store.d.ts +67 -0
- package/dist/continuity/handoff-store.js +472 -0
- package/dist/continuity/index.d.ts +45 -0
- package/dist/continuity/index.js +48 -0
- package/dist/continuity/ledger-store.d.ts +110 -0
- package/dist/continuity/ledger-store.js +500 -0
- package/dist/continuity/manager.d.ts +178 -0
- package/dist/continuity/manager.js +562 -0
- package/dist/continuity/parser.d.ts +76 -0
- package/dist/continuity/parser.js +579 -0
- package/dist/continuity/types.d.ts +180 -0
- package/dist/continuity/types.js +9 -0
- package/dist/daemon/agent-manager.d.ts +27 -0
- package/dist/daemon/agent-manager.js +107 -6
- package/dist/daemon/agent-registry.d.ts +32 -0
- package/dist/daemon/agent-registry.js +42 -2
- package/dist/daemon/api.d.ts +12 -0
- package/dist/daemon/api.js +131 -2
- package/dist/daemon/cli-auth.d.ts +67 -0
- package/dist/daemon/cli-auth.js +537 -0
- package/dist/daemon/cloud-sync.js +9 -7
- package/dist/daemon/orchestrator.js +30 -0
- package/dist/daemon/router.d.ts +5 -0
- package/dist/daemon/router.js +78 -26
- package/dist/daemon/server.d.ts +5 -0
- package/dist/daemon/server.js +9 -1
- package/dist/daemon/services/browser-testing.d.ts +88 -0
- package/dist/daemon/services/browser-testing.js +244 -0
- package/dist/daemon/services/container-spawner.d.ts +135 -0
- package/dist/daemon/services/container-spawner.js +313 -0
- package/dist/daemon/types.d.ts +5 -1
- package/dist/dashboard/out/404.html +1 -1
- package/dist/dashboard/out/_next/static/chunks/116-2502180def231162.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/282-980c2eb8fff20123.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/699-3b1cd6618a45d259.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/724-2dae7627550ab88f.js +9 -0
- package/dist/dashboard/out/_next/static/chunks/766-1f2dd8cb7f766b0b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/onboarding/page-3fdfa60e53f2810d.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/app/page-e6381e5a6e1fbcfd.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/connect-repos/page-3538dfe0ffe984b8.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/history/{page-b6edd4dde8d08194.js → page-abb9ab2d329f56e9.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/app/layout-c0d118c0f92d969c.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/login/page-c22d080201cbd9fb.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-67a3e98d9a43a6ed.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/page-77e9c65420a06cfb.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-b08ed1c34d14434a.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/providers/page-e88bc117ef7671c3.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/app/signup/page-68d34f50baa8ab6b.js +1 -0
- package/dist/dashboard/out/_next/static/chunks/e868780c-48e5f147c90a3a41.js +18 -0
- package/dist/dashboard/out/_next/static/chunks/{main-app-5d692157a8eb1fd9.js → main-app-6e8e8d3ef4e0192a.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/{main-c2f423b9c9f4591b.js → main-ed4e1fb6f29c34cf.js} +1 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-1cdd8ed57114d5e1.js +1 -0
- package/dist/dashboard/out/_next/static/css/29852f26181969a0.css +1 -0
- package/dist/dashboard/out/_next/static/css/7c3ae9e8617d42a5.css +1 -0
- package/dist/dashboard/out/app/onboarding.html +1 -0
- package/dist/dashboard/out/app/onboarding.txt +7 -0
- package/dist/dashboard/out/app.html +1 -14
- package/dist/dashboard/out/app.txt +2 -2
- package/dist/dashboard/out/connect-repos.html +1 -0
- package/dist/dashboard/out/connect-repos.txt +7 -0
- package/dist/dashboard/out/history.html +1 -1
- package/dist/dashboard/out/history.txt +2 -2
- package/dist/dashboard/out/index.html +1 -1
- package/dist/dashboard/out/index.txt +2 -2
- package/dist/dashboard/out/login.html +6 -0
- package/dist/dashboard/out/login.txt +7 -0
- package/dist/dashboard/out/metrics.html +1 -1
- package/dist/dashboard/out/metrics.txt +2 -2
- package/dist/dashboard/out/pricing.html +3 -3
- package/dist/dashboard/out/pricing.txt +2 -2
- package/dist/dashboard/out/providers.html +1 -0
- package/dist/dashboard/out/providers.txt +7 -0
- package/dist/dashboard/out/signup.html +6 -0
- package/dist/dashboard/out/signup.txt +7 -0
- package/dist/dashboard-server/server.js +1308 -8
- package/dist/hooks/emitter.d.ts +40 -0
- package/dist/hooks/emitter.js +63 -0
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/registry.d.ts +173 -0
- package/dist/hooks/registry.js +476 -0
- package/dist/hooks/trajectory-hooks.d.ts +52 -0
- package/dist/hooks/trajectory-hooks.js +183 -0
- package/dist/hooks/types.d.ts +141 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/memory/adapters/index.d.ts +8 -0
- package/dist/memory/adapters/index.js +8 -0
- package/dist/memory/adapters/inmemory.d.ts +59 -0
- package/dist/memory/adapters/inmemory.js +195 -0
- package/dist/memory/adapters/supermemory.d.ts +71 -0
- package/dist/memory/adapters/supermemory.js +338 -0
- package/dist/memory/factory.d.ts +48 -0
- package/dist/memory/factory.js +143 -0
- package/dist/memory/index.d.ts +32 -0
- package/dist/memory/index.js +32 -0
- package/dist/memory/memory-hooks.d.ts +60 -0
- package/dist/memory/memory-hooks.js +313 -0
- package/dist/memory/service.d.ts +49 -0
- package/dist/memory/service.js +146 -0
- package/dist/memory/types.d.ts +195 -0
- package/dist/memory/types.js +8 -0
- package/dist/policy/agent-policy.d.ts +225 -0
- package/dist/policy/agent-policy.js +665 -0
- package/dist/policy/cloud-policy-fetcher.d.ts +12 -0
- package/dist/policy/cloud-policy-fetcher.js +64 -0
- package/dist/resiliency/crash-insights.d.ts +156 -0
- package/dist/resiliency/crash-insights.js +492 -0
- package/dist/resiliency/gossip-health.d.ts +137 -0
- package/dist/resiliency/gossip-health.js +241 -0
- package/dist/resiliency/index.d.ts +5 -0
- package/dist/resiliency/index.js +5 -0
- package/dist/resiliency/leader-watchdog.d.ts +109 -0
- package/dist/resiliency/leader-watchdog.js +189 -0
- package/dist/resiliency/memory-monitor.d.ts +172 -0
- package/dist/resiliency/memory-monitor.js +593 -0
- package/dist/resiliency/stateless-lead.d.ts +149 -0
- package/dist/resiliency/stateless-lead.js +308 -0
- package/dist/resiliency/supervisor.d.ts +38 -0
- package/dist/resiliency/supervisor.js +122 -0
- package/dist/shared/cli-auth-config.d.ts +91 -0
- package/dist/shared/cli-auth-config.js +264 -0
- package/dist/storage/adapter.d.ts +1 -1
- package/dist/trajectory/config.d.ts +84 -0
- package/dist/trajectory/config.js +163 -0
- package/dist/trajectory/index.d.ts +8 -0
- package/dist/trajectory/index.js +8 -0
- package/dist/trajectory/integration.d.ts +292 -0
- package/dist/trajectory/integration.js +834 -0
- package/dist/utils/logger.js +1 -1
- package/dist/utils/project-namespace.d.ts +24 -0
- package/dist/utils/project-namespace.js +84 -0
- package/dist/wrapper/parser.d.ts +10 -0
- package/dist/wrapper/parser.js +100 -33
- package/dist/wrapper/pty-wrapper.d.ts +197 -16
- package/dist/wrapper/pty-wrapper.js +943 -106
- package/dist/wrapper/shared.d.ts +165 -0
- package/dist/wrapper/shared.js +270 -0
- package/dist/wrapper/tmux-wrapper.d.ts +73 -11
- package/dist/wrapper/tmux-wrapper.js +541 -120
- package/package.json +16 -16
- package/scripts/postinstall.js +60 -0
- package/test-push.txt +1 -0
- package/bin/tmux +0 -0
- package/dist/bridge/config.d.ts.map +0 -1
- package/dist/bridge/config.js.map +0 -1
- package/dist/bridge/index.d.ts.map +0 -1
- package/dist/bridge/index.js.map +0 -1
- package/dist/bridge/multi-project-client.d.ts.map +0 -1
- package/dist/bridge/multi-project-client.js.map +0 -1
- package/dist/bridge/shadow-cli.d.ts.map +0 -1
- package/dist/bridge/shadow-cli.js.map +0 -1
- package/dist/bridge/shadow-config.d.ts.map +0 -1
- package/dist/bridge/shadow-config.js.map +0 -1
- package/dist/bridge/spawner.d.ts.map +0 -1
- package/dist/bridge/spawner.js.map +0 -1
- package/dist/bridge/teams-config.d.ts.map +0 -1
- package/dist/bridge/teams-config.js.map +0 -1
- package/dist/bridge/types.d.ts.map +0 -1
- package/dist/bridge/types.js.map +0 -1
- package/dist/bridge/utils.d.ts.map +0 -1
- package/dist/bridge/utils.js.map +0 -1
- package/dist/cli/index.d.ts.map +0 -1
- package/dist/cli/index.js.map +0 -1
- package/dist/cloud/api/auth.d.ts.map +0 -1
- package/dist/cloud/api/auth.js.map +0 -1
- package/dist/cloud/api/billing.d.ts.map +0 -1
- package/dist/cloud/api/billing.js.map +0 -1
- package/dist/cloud/api/coordinators.d.ts.map +0 -1
- package/dist/cloud/api/coordinators.js.map +0 -1
- package/dist/cloud/api/daemons.d.ts.map +0 -1
- package/dist/cloud/api/daemons.js.map +0 -1
- package/dist/cloud/api/middleware/planLimits.d.ts.map +0 -1
- package/dist/cloud/api/middleware/planLimits.js.map +0 -1
- package/dist/cloud/api/onboarding.d.ts.map +0 -1
- package/dist/cloud/api/onboarding.js.map +0 -1
- package/dist/cloud/api/providers.d.ts.map +0 -1
- package/dist/cloud/api/providers.js.map +0 -1
- package/dist/cloud/api/repos.d.ts.map +0 -1
- package/dist/cloud/api/repos.js.map +0 -1
- package/dist/cloud/api/teams.d.ts.map +0 -1
- package/dist/cloud/api/teams.js.map +0 -1
- package/dist/cloud/api/usage.d.ts.map +0 -1
- package/dist/cloud/api/usage.js.map +0 -1
- package/dist/cloud/api/workspaces.d.ts.map +0 -1
- package/dist/cloud/api/workspaces.js.map +0 -1
- package/dist/cloud/billing/index.d.ts.map +0 -1
- package/dist/cloud/billing/index.js.map +0 -1
- package/dist/cloud/billing/plans.d.ts.map +0 -1
- package/dist/cloud/billing/plans.js.map +0 -1
- package/dist/cloud/billing/service.d.ts.map +0 -1
- package/dist/cloud/billing/service.js.map +0 -1
- package/dist/cloud/billing/types.d.ts.map +0 -1
- package/dist/cloud/billing/types.js.map +0 -1
- package/dist/cloud/config.d.ts.map +0 -1
- package/dist/cloud/config.js.map +0 -1
- package/dist/cloud/db/drizzle.d.ts.map +0 -1
- package/dist/cloud/db/drizzle.js.map +0 -1
- package/dist/cloud/db/index.d.ts.map +0 -1
- package/dist/cloud/db/index.js.map +0 -1
- package/dist/cloud/db/schema.d.ts.map +0 -1
- package/dist/cloud/db/schema.js.map +0 -1
- package/dist/cloud/index.d.ts.map +0 -1
- package/dist/cloud/index.js.map +0 -1
- package/dist/cloud/provisioner/index.d.ts.map +0 -1
- package/dist/cloud/provisioner/index.js.map +0 -1
- package/dist/cloud/server.d.ts.map +0 -1
- package/dist/cloud/server.js.map +0 -1
- package/dist/cloud/services/coordinator.d.ts.map +0 -1
- package/dist/cloud/services/coordinator.js.map +0 -1
- package/dist/cloud/services/planLimits.d.ts.map +0 -1
- package/dist/cloud/services/planLimits.js.map +0 -1
- package/dist/cloud/vault/index.d.ts.map +0 -1
- package/dist/cloud/vault/index.js.map +0 -1
- package/dist/daemon/agent-manager.d.ts.map +0 -1
- package/dist/daemon/agent-manager.js.map +0 -1
- package/dist/daemon/agent-registry.d.ts.map +0 -1
- package/dist/daemon/agent-registry.js.map +0 -1
- package/dist/daemon/api.d.ts.map +0 -1
- package/dist/daemon/api.js.map +0 -1
- package/dist/daemon/auth.d.ts.map +0 -1
- package/dist/daemon/auth.js.map +0 -1
- package/dist/daemon/cloud-sync.d.ts.map +0 -1
- package/dist/daemon/cloud-sync.js.map +0 -1
- package/dist/daemon/connection.d.ts.map +0 -1
- package/dist/daemon/connection.js.map +0 -1
- package/dist/daemon/index.d.ts.map +0 -1
- package/dist/daemon/index.js.map +0 -1
- package/dist/daemon/orchestrator.d.ts.map +0 -1
- package/dist/daemon/orchestrator.js.map +0 -1
- package/dist/daemon/registry.d.ts.map +0 -1
- package/dist/daemon/registry.js.map +0 -1
- package/dist/daemon/router.d.ts.map +0 -1
- package/dist/daemon/router.js.map +0 -1
- package/dist/daemon/server.d.ts.map +0 -1
- package/dist/daemon/server.js.map +0 -1
- package/dist/daemon/types.d.ts.map +0 -1
- package/dist/daemon/types.js.map +0 -1
- package/dist/daemon/workspace-manager.d.ts.map +0 -1
- package/dist/daemon/workspace-manager.js.map +0 -1
- package/dist/dashboard/out/_next/static/chunks/693-7b3301d8f6bc5014.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/713-f78477eb185f1f4d.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/766-e53e1cfe39b0b5b5.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/900-037c64bfd797fb2a.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/app/page-e3d9e1f4466b9bae.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/layout-2433bb48965f4333.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/metrics/page-e68825a81db67ba1.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/page-cc108bf68c8a657f.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/app/pricing/page-d80e03a5297f95b6.js +0 -1
- package/dist/dashboard/out/_next/static/chunks/webpack-a5acc2831d094776.js +0 -1
- package/dist/dashboard/out/_next/static/css/79b80143647a07d7.css +0 -1
- package/dist/dashboard/out/_next/static/css/8cf277370ad48cfe.css +0 -1
- package/dist/dashboard-server/metrics.d.ts.map +0 -1
- package/dist/dashboard-server/metrics.js.map +0 -1
- package/dist/dashboard-server/needs-attention.d.ts.map +0 -1
- package/dist/dashboard-server/needs-attention.js.map +0 -1
- package/dist/dashboard-server/server.d.ts.map +0 -1
- package/dist/dashboard-server/server.js.map +0 -1
- package/dist/dashboard-server/start.d.ts.map +0 -1
- package/dist/dashboard-server/start.js.map +0 -1
- package/dist/hooks/inbox-check/hook.d.ts.map +0 -1
- package/dist/hooks/inbox-check/hook.js.map +0 -1
- package/dist/hooks/inbox-check/index.d.ts.map +0 -1
- package/dist/hooks/inbox-check/index.js.map +0 -1
- package/dist/hooks/inbox-check/types.d.ts.map +0 -1
- package/dist/hooks/inbox-check/types.js.map +0 -1
- package/dist/hooks/inbox-check/utils.d.ts.map +0 -1
- package/dist/hooks/inbox-check/utils.js.map +0 -1
- package/dist/hooks/index.d.ts.map +0 -1
- package/dist/hooks/index.js.map +0 -1
- package/dist/hooks/types.d.ts.map +0 -1
- package/dist/hooks/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/protocol/framing.d.ts.map +0 -1
- package/dist/protocol/framing.js.map +0 -1
- package/dist/protocol/index.d.ts.map +0 -1
- package/dist/protocol/index.js.map +0 -1
- package/dist/protocol/types.d.ts.map +0 -1
- package/dist/protocol/types.js.map +0 -1
- package/dist/resiliency/context-persistence.d.ts.map +0 -1
- package/dist/resiliency/context-persistence.js.map +0 -1
- package/dist/resiliency/health-monitor.d.ts.map +0 -1
- package/dist/resiliency/health-monitor.js.map +0 -1
- package/dist/resiliency/index.d.ts.map +0 -1
- package/dist/resiliency/index.js.map +0 -1
- package/dist/resiliency/logger.d.ts.map +0 -1
- package/dist/resiliency/logger.js.map +0 -1
- package/dist/resiliency/metrics.d.ts.map +0 -1
- package/dist/resiliency/metrics.js.map +0 -1
- package/dist/resiliency/provider-context.d.ts.map +0 -1
- package/dist/resiliency/provider-context.js.map +0 -1
- package/dist/resiliency/supervisor.d.ts.map +0 -1
- package/dist/resiliency/supervisor.js.map +0 -1
- package/dist/state/agent-state.d.ts.map +0 -1
- package/dist/state/agent-state.js.map +0 -1
- package/dist/storage/adapter.d.ts.map +0 -1
- package/dist/storage/adapter.js.map +0 -1
- package/dist/storage/sqlite-adapter.d.ts.map +0 -1
- package/dist/storage/sqlite-adapter.js.map +0 -1
- package/dist/utils/agent-config.d.ts.map +0 -1
- package/dist/utils/agent-config.js.map +0 -1
- package/dist/utils/command-resolver.d.ts.map +0 -1
- package/dist/utils/command-resolver.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/name-generator.d.ts.map +0 -1
- package/dist/utils/name-generator.js.map +0 -1
- package/dist/utils/project-namespace.d.ts.map +0 -1
- package/dist/utils/project-namespace.js.map +0 -1
- package/dist/utils/tmux-resolver.d.ts.map +0 -1
- package/dist/utils/tmux-resolver.js.map +0 -1
- package/dist/utils/update-checker.d.ts.map +0 -1
- package/dist/utils/update-checker.js.map +0 -1
- package/dist/wrapper/client.d.ts.map +0 -1
- package/dist/wrapper/client.js.map +0 -1
- package/dist/wrapper/inbox.d.ts.map +0 -1
- package/dist/wrapper/inbox.js.map +0 -1
- package/dist/wrapper/index.d.ts.map +0 -1
- package/dist/wrapper/index.js.map +0 -1
- package/dist/wrapper/parser.d.ts.map +0 -1
- package/dist/wrapper/parser.js.map +0 -1
- package/dist/wrapper/pty-wrapper.d.ts.map +0 -1
- package/dist/wrapper/pty-wrapper.js.map +0 -1
- package/dist/wrapper/tmux-wrapper.d.ts.map +0 -1
- package/dist/wrapper/tmux-wrapper.js.map +0 -1
- package/docs/AGENTS.md +0 -513
- package/docs/ARCHITECTURE_DECISIONS.md +0 -175
- package/docs/CHANGELOG.md +0 -11
- package/docs/CLI-SIMPLIFICATION-COMPLETE.md +0 -48
- package/docs/CLOUD-ARCHITECTURE.md +0 -652
- package/docs/CLOUD-ONBOARDING-DESIGN.md +0 -1983
- package/docs/COMPETITIVE_ANALYSIS.md +0 -897
- package/docs/CONTRIBUTING.md +0 -151
- package/docs/DESIGN_BRIDGE_STAFFING.md +0 -878
- package/docs/DESIGN_V2.md +0 -1079
- package/docs/INTEGRATION-GUIDE.md +0 -926
- package/docs/MONETIZATION.md +0 -1679
- package/docs/PROPOSAL-trajectories.md +0 -1582
- package/docs/PROTOCOL.md +0 -325
- package/docs/SCALING_ANALYSIS.md +0 -280
- package/docs/TESTING_PRESENCE_FEATURES.md +0 -327
- package/docs/TMUX_IMPLEMENTATION_NOTES.md +0 -364
- package/docs/TMUX_IMPROVEMENTS.md +0 -968
- package/docs/agent-relay-snippet.md +0 -168
- package/docs/competitive-analysis-mcp-agent-mail.md +0 -389
- package/docs/dashboard-v2-plan.md +0 -179
- package/docs/guides/CLOUD.md +0 -236
- package/docs/guides/LOCAL.md +0 -535
- package/docs/guides/SELF-HOSTED.md +0 -494
- package/docs/proposals/shadow-as-subagent.md +0 -765
- package/docs/proposals/slack-bot-integration.md +0 -1457
- package/docs/removable-code-analysis.md +0 -24
- package/scripts/dev/PUBLIC_RELEASE_PLAN.md +0 -88
- package/scripts/dev/dev-team-setup.sh +0 -431
- package/scripts/e2e-test.sh +0 -119
- package/scripts/games/game-protocol.md +0 -79
- package/scripts/games/hearts-setup.sh +0 -264
- package/scripts/tictactoe-setup.sh +0 -181
- /package/dist/dashboard/out/_next/static/chunks/{117-b2cd8d6485aacf2b.js → 117-f7b8ab0809342e77.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{648-8f3f26864ce515e5.js → 648-5cc6e1921389a58a.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/app/_not-found/{page-0b990dbb71d72a98.js → page-53b8a69f76db17d0.js} +0 -0
- /package/dist/dashboard/out/_next/static/chunks/{fd9d1056-bf46c09eb57e019c.js → fd9d1056-609918ca7b6280bb.js} +0 -0
- /package/dist/dashboard/out/_next/static/{6HHWb2ZmnJ4OSm0zUP7h4 → wPgKJtcOmTFLpUncDg16A}/_buildManifest.js +0 -0
- /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
|