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,313 @@
|
|
|
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 { createMemoryAdapter } from './factory.js';
|
|
10
|
+
/**
|
|
11
|
+
* Default patterns that indicate content worth auto-saving
|
|
12
|
+
*
|
|
13
|
+
* Categories:
|
|
14
|
+
* - Learnings: discoveries, realizations, insights
|
|
15
|
+
* - Decisions: significant choices made
|
|
16
|
+
* - Breakthroughs: problems solved, aha moments
|
|
17
|
+
* - Failures: things that went wrong, errors encountered
|
|
18
|
+
* - Preferences: user/project preferences
|
|
19
|
+
* - Retrospectives: end-of-task reflections
|
|
20
|
+
*/
|
|
21
|
+
const DEFAULT_SAVE_PATTERNS = [
|
|
22
|
+
// Learnings and discoveries
|
|
23
|
+
/(?:learned|discovered|found out|realized|important|remember|note to self)/i,
|
|
24
|
+
/(?:key insight|takeaway|lesson learned|now I understand)/i,
|
|
25
|
+
// Significant decisions
|
|
26
|
+
/(?:decided to|decision:|chose to|going with|settled on|approach:|strategy:)/i,
|
|
27
|
+
/(?:trade-?off|weighing|considering|opting for)/i,
|
|
28
|
+
// Breakthroughs and solutions
|
|
29
|
+
/(?:breakthrough|finally|solved|figured out|the fix was|root cause)/i,
|
|
30
|
+
/(?:aha|eureka|that's why|the issue was|problem was)/i,
|
|
31
|
+
// Failures and problems
|
|
32
|
+
/(?:failed because|mistake was|should have|shouldn't have|next time)/i,
|
|
33
|
+
/(?:went wrong|broke because|error was due to|caused by)/i,
|
|
34
|
+
/(?:avoid|don't repeat|pitfall|gotcha|watch out)/i,
|
|
35
|
+
// User/project preferences
|
|
36
|
+
/(?:user prefers?|preference|always use|never use|don't use)/i,
|
|
37
|
+
/(?:project uses?|codebase uses?|this repo|this project)/i,
|
|
38
|
+
/(?:convention|pattern|style guide|best practice)/i,
|
|
39
|
+
// Retrospectives
|
|
40
|
+
/(?:in retrospect|looking back|reflecting|summary:|recap:)/i,
|
|
41
|
+
/(?:what worked|what didn't|improvements for next time)/i,
|
|
42
|
+
];
|
|
43
|
+
/**
|
|
44
|
+
* Create memory hooks for automatic context loading and saving
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* ```typescript
|
|
48
|
+
* const hooks = createMemoryHooks({
|
|
49
|
+
* config: { type: 'supermemory', apiKey: 'xxx' },
|
|
50
|
+
* agentId: 'my-agent',
|
|
51
|
+
* projectId: 'my-project',
|
|
52
|
+
* });
|
|
53
|
+
*
|
|
54
|
+
* registry.registerLifecycleHooks(hooks);
|
|
55
|
+
* ```
|
|
56
|
+
*/
|
|
57
|
+
export function createMemoryHooks(options = {}) {
|
|
58
|
+
const state = {
|
|
59
|
+
adapter: options.adapter ?? null,
|
|
60
|
+
adapterPromise: null,
|
|
61
|
+
sessionLearnings: [],
|
|
62
|
+
options: {
|
|
63
|
+
agentId: options.agentId ?? 'default',
|
|
64
|
+
projectId: options.projectId ?? 'default',
|
|
65
|
+
injectOnStart: options.injectOnStart ?? true,
|
|
66
|
+
maxStartMemories: options.maxStartMemories ?? 5,
|
|
67
|
+
startSearchQuery: options.startSearchQuery ?? '',
|
|
68
|
+
promptOnEnd: options.promptOnEnd ?? false,
|
|
69
|
+
autoSave: options.autoSave ?? true,
|
|
70
|
+
autoSaveOnEnd: options.autoSaveOnEnd ?? true,
|
|
71
|
+
savePatterns: options.savePatterns ?? DEFAULT_SAVE_PATTERNS,
|
|
72
|
+
config: options.config,
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
return {
|
|
76
|
+
onSessionStart: createSessionStartHook(state),
|
|
77
|
+
onSessionEnd: createSessionEndHook(state),
|
|
78
|
+
onOutput: createOutputHook(state),
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Lazily get or create the memory adapter
|
|
83
|
+
*/
|
|
84
|
+
async function getAdapter(state) {
|
|
85
|
+
if (state.adapter) {
|
|
86
|
+
return state.adapter;
|
|
87
|
+
}
|
|
88
|
+
if (!state.adapterPromise) {
|
|
89
|
+
state.adapterPromise = createMemoryAdapter({
|
|
90
|
+
...state.options.config,
|
|
91
|
+
defaultAgentId: state.options.agentId,
|
|
92
|
+
defaultProjectId: state.options.projectId,
|
|
93
|
+
}).catch(error => {
|
|
94
|
+
console.error('[memory-hooks] Failed to create adapter:', error);
|
|
95
|
+
return null;
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
state.adapter = await state.adapterPromise;
|
|
99
|
+
return state.adapter;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Session start hook - loads relevant memories
|
|
103
|
+
*/
|
|
104
|
+
function createSessionStartHook(state) {
|
|
105
|
+
return async (ctx) => {
|
|
106
|
+
if (!state.options.injectOnStart) {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
state.sessionId = ctx.sessionId;
|
|
110
|
+
const adapter = await getAdapter(state);
|
|
111
|
+
if (!adapter) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
// Build search query based on context
|
|
116
|
+
const searchQuery = state.options.startSearchQuery ||
|
|
117
|
+
`project: ${ctx.workingDir} OR agent: ${state.options.agentId}`;
|
|
118
|
+
const memories = await adapter.search({
|
|
119
|
+
query: searchQuery,
|
|
120
|
+
limit: state.options.maxStartMemories,
|
|
121
|
+
agentId: state.options.agentId,
|
|
122
|
+
projectId: state.options.projectId,
|
|
123
|
+
});
|
|
124
|
+
if (memories.length === 0) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const formattedMemories = formatMemoriesForInjection(memories);
|
|
128
|
+
return {
|
|
129
|
+
inject: `\n[CONTEXT FROM MEMORY]\n${formattedMemories}\n`,
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
catch (error) {
|
|
133
|
+
console.error('[memory-hooks] Failed to load memories:', error);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* Session end hook - logs learnings summary and optionally prompts for more
|
|
139
|
+
*/
|
|
140
|
+
function createSessionEndHook(state) {
|
|
141
|
+
return async (ctx) => {
|
|
142
|
+
// Log session summary (learnings were already saved immediately during output)
|
|
143
|
+
if (state.options.autoSaveOnEnd && ctx.graceful && state.sessionLearnings.length > 0) {
|
|
144
|
+
const uniqueLearnings = [...new Set(state.sessionLearnings)];
|
|
145
|
+
console.log(`[memory-hooks] Session captured ${uniqueLearnings.length} learnings (saved during session)`);
|
|
146
|
+
// Clear for next session
|
|
147
|
+
state.sessionLearnings = [];
|
|
148
|
+
}
|
|
149
|
+
// Optional prompt for additional saves
|
|
150
|
+
if (state.options.promptOnEnd && ctx.graceful) {
|
|
151
|
+
return {
|
|
152
|
+
inject: `
|
|
153
|
+
[SESSION ENDING]
|
|
154
|
+
If you learned anything important, save it for future sessions:
|
|
155
|
+
@memory:save <what you learned>
|
|
156
|
+
|
|
157
|
+
Examples:
|
|
158
|
+
@memory:save User prefers TypeScript over JavaScript
|
|
159
|
+
@memory:save This project uses Prisma for database access
|
|
160
|
+
@memory:save Auth tokens stored in httpOnly cookies
|
|
161
|
+
`,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Output hook - handles @memory: patterns and auto-save
|
|
168
|
+
*/
|
|
169
|
+
function createOutputHook(state) {
|
|
170
|
+
return async (ctx) => {
|
|
171
|
+
const { content } = ctx;
|
|
172
|
+
// Handle @memory: patterns (explicit saves)
|
|
173
|
+
const memoryMatch = content.match(/@memory:(\w+)\s+(.+)/);
|
|
174
|
+
if (memoryMatch) {
|
|
175
|
+
const [, action, payload] = memoryMatch;
|
|
176
|
+
return handleMemoryCommand(state, action, payload.trim());
|
|
177
|
+
}
|
|
178
|
+
// Auto-detect and save learnings
|
|
179
|
+
if (state.options.autoSave) {
|
|
180
|
+
for (const pattern of state.options.savePatterns) {
|
|
181
|
+
if (pattern.test(content)) {
|
|
182
|
+
// Extract the relevant sentence/phrase
|
|
183
|
+
const relevantContent = extractRelevantContent(content, pattern);
|
|
184
|
+
if (relevantContent && relevantContent.length > 10) {
|
|
185
|
+
// Collect for session-end retrospective
|
|
186
|
+
if (state.options.autoSaveOnEnd) {
|
|
187
|
+
state.sessionLearnings.push(relevantContent);
|
|
188
|
+
}
|
|
189
|
+
// Also save immediately (ensures persistence even on crash)
|
|
190
|
+
const adapter = await getAdapter(state);
|
|
191
|
+
if (adapter) {
|
|
192
|
+
await adapter.add(relevantContent, {
|
|
193
|
+
source: 'auto-detected',
|
|
194
|
+
sessionId: state.sessionId,
|
|
195
|
+
tags: ['auto-saved'],
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
break;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Handle @memory: commands
|
|
207
|
+
*/
|
|
208
|
+
async function handleMemoryCommand(state, action, payload) {
|
|
209
|
+
const adapter = await getAdapter(state);
|
|
210
|
+
if (!adapter) {
|
|
211
|
+
return { inject: '[memory] Memory service not available' };
|
|
212
|
+
}
|
|
213
|
+
switch (action.toLowerCase()) {
|
|
214
|
+
case 'save':
|
|
215
|
+
case 'add': {
|
|
216
|
+
const result = await adapter.add(payload, {
|
|
217
|
+
source: 'agent-command',
|
|
218
|
+
sessionId: state.sessionId,
|
|
219
|
+
});
|
|
220
|
+
if (result.success) {
|
|
221
|
+
return { inject: `[memory] Saved: "${truncate(payload, 50)}"` };
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
return { inject: `[memory] Failed to save: ${result.error}` };
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
case 'search':
|
|
228
|
+
case 'find':
|
|
229
|
+
case 'recall': {
|
|
230
|
+
const memories = await adapter.search({
|
|
231
|
+
query: payload,
|
|
232
|
+
limit: 5,
|
|
233
|
+
});
|
|
234
|
+
if (memories.length === 0) {
|
|
235
|
+
return { inject: '[memory] No relevant memories found' };
|
|
236
|
+
}
|
|
237
|
+
const formatted = formatMemoriesForInjection(memories);
|
|
238
|
+
return { inject: `[memory] Found ${memories.length} memories:\n${formatted}` };
|
|
239
|
+
}
|
|
240
|
+
case 'forget':
|
|
241
|
+
case 'delete': {
|
|
242
|
+
const result = await adapter.delete(payload);
|
|
243
|
+
if (result.success) {
|
|
244
|
+
return { inject: `[memory] Deleted memory: ${payload}` };
|
|
245
|
+
}
|
|
246
|
+
else {
|
|
247
|
+
return { inject: `[memory] Failed to delete: ${result.error}` };
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
case 'list': {
|
|
251
|
+
if (!adapter.list) {
|
|
252
|
+
return { inject: '[memory] List not supported by this adapter' };
|
|
253
|
+
}
|
|
254
|
+
const limit = parseInt(payload) || 10;
|
|
255
|
+
const memories = await adapter.list({ limit });
|
|
256
|
+
if (memories.length === 0) {
|
|
257
|
+
return { inject: '[memory] No memories stored' };
|
|
258
|
+
}
|
|
259
|
+
const formatted = formatMemoriesForInjection(memories);
|
|
260
|
+
return { inject: `[memory] Recent memories:\n${formatted}` };
|
|
261
|
+
}
|
|
262
|
+
default:
|
|
263
|
+
return {
|
|
264
|
+
inject: `[memory] Unknown action: ${action}. Use: save, search, forget, list`,
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Format memories for injection into agent context
|
|
270
|
+
*/
|
|
271
|
+
function formatMemoriesForInjection(memories) {
|
|
272
|
+
return memories
|
|
273
|
+
.map((m, i) => {
|
|
274
|
+
const score = m.score ? ` (relevance: ${Math.round(m.score * 100)}%)` : '';
|
|
275
|
+
const tags = m.tags?.length ? ` [${m.tags.join(', ')}]` : '';
|
|
276
|
+
return `${i + 1}. ${m.content}${tags}${score}`;
|
|
277
|
+
})
|
|
278
|
+
.join('\n');
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Extract relevant content around a pattern match
|
|
282
|
+
*/
|
|
283
|
+
function extractRelevantContent(content, pattern) {
|
|
284
|
+
const match = content.match(pattern);
|
|
285
|
+
if (!match)
|
|
286
|
+
return null;
|
|
287
|
+
// Find the sentence containing the match
|
|
288
|
+
const sentences = content.split(/[.!?]+/);
|
|
289
|
+
for (const sentence of sentences) {
|
|
290
|
+
if (pattern.test(sentence)) {
|
|
291
|
+
return sentence.trim();
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return match[0];
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Truncate string with ellipsis
|
|
298
|
+
*/
|
|
299
|
+
function truncate(str, maxLen) {
|
|
300
|
+
if (str.length <= maxLen)
|
|
301
|
+
return str;
|
|
302
|
+
return str.slice(0, maxLen - 3) + '...';
|
|
303
|
+
}
|
|
304
|
+
/**
|
|
305
|
+
* Get memory hooks with default settings
|
|
306
|
+
*
|
|
307
|
+
* @param agentId - Agent identifier
|
|
308
|
+
* @param projectId - Project identifier
|
|
309
|
+
*/
|
|
310
|
+
export function getMemoryHooks(agentId, projectId) {
|
|
311
|
+
return createMemoryHooks({ agentId, projectId });
|
|
312
|
+
}
|
|
313
|
+
//# sourceMappingURL=memory-hooks.js.map
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Service
|
|
3
|
+
*
|
|
4
|
+
* A simplified service wrapper around memory adapters for use in hooks.
|
|
5
|
+
* Provides a consistent interface and handles common operations.
|
|
6
|
+
*/
|
|
7
|
+
import type { MemoryAdapter, MemoryService, MemoryConfig } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Options for creating a memory service
|
|
10
|
+
*/
|
|
11
|
+
export interface MemoryServiceOptions {
|
|
12
|
+
/** Pre-configured adapter to use */
|
|
13
|
+
adapter?: MemoryAdapter;
|
|
14
|
+
/** Configuration for creating a new adapter */
|
|
15
|
+
config?: Partial<MemoryConfig>;
|
|
16
|
+
/** Default agent ID for all operations */
|
|
17
|
+
agentId?: string;
|
|
18
|
+
/** Default project ID for all operations */
|
|
19
|
+
projectId?: string;
|
|
20
|
+
/** Default session ID for all operations */
|
|
21
|
+
sessionId?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create a memory service instance
|
|
25
|
+
*
|
|
26
|
+
* @param options - Service configuration
|
|
27
|
+
* @returns Memory service instance
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // Create with default in-memory adapter
|
|
32
|
+
* const memory = createMemoryService();
|
|
33
|
+
*
|
|
34
|
+
* // Create with specific adapter
|
|
35
|
+
* const adapter = await createMemoryAdapter({ type: 'supermemory', apiKey });
|
|
36
|
+
* const memory = createMemoryService({ adapter });
|
|
37
|
+
*
|
|
38
|
+
* // Create with config
|
|
39
|
+
* const memory = createMemoryService({
|
|
40
|
+
* config: { type: 'supermemory' },
|
|
41
|
+
* agentId: 'my-agent',
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*/
|
|
45
|
+
export declare function createMemoryService(options?: MemoryServiceOptions): MemoryService & {
|
|
46
|
+
getUnderlyingAdapter(): MemoryAdapter | null;
|
|
47
|
+
close(): Promise<void>;
|
|
48
|
+
};
|
|
49
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory Service
|
|
3
|
+
*
|
|
4
|
+
* A simplified service wrapper around memory adapters for use in hooks.
|
|
5
|
+
* Provides a consistent interface and handles common operations.
|
|
6
|
+
*/
|
|
7
|
+
import { createMemoryAdapter } from './factory.js';
|
|
8
|
+
/**
|
|
9
|
+
* Internal memory service implementation
|
|
10
|
+
*/
|
|
11
|
+
class MemoryServiceImpl {
|
|
12
|
+
adapter = null;
|
|
13
|
+
adapterPromise = null;
|
|
14
|
+
options;
|
|
15
|
+
available = false;
|
|
16
|
+
constructor(options = {}) {
|
|
17
|
+
this.options = options;
|
|
18
|
+
if (options.adapter) {
|
|
19
|
+
this.adapter = options.adapter;
|
|
20
|
+
this.available = true;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Lazily initialize the adapter
|
|
25
|
+
*/
|
|
26
|
+
async getAdapter() {
|
|
27
|
+
if (this.adapter) {
|
|
28
|
+
return this.adapter;
|
|
29
|
+
}
|
|
30
|
+
if (!this.adapterPromise) {
|
|
31
|
+
this.adapterPromise = this.initAdapter();
|
|
32
|
+
}
|
|
33
|
+
return this.adapterPromise;
|
|
34
|
+
}
|
|
35
|
+
async initAdapter() {
|
|
36
|
+
try {
|
|
37
|
+
const config = this.options.config ?? {};
|
|
38
|
+
this.adapter = await createMemoryAdapter({
|
|
39
|
+
...config,
|
|
40
|
+
defaultAgentId: config.defaultAgentId ?? this.options.agentId,
|
|
41
|
+
defaultProjectId: config.defaultProjectId ?? this.options.projectId,
|
|
42
|
+
});
|
|
43
|
+
this.available = true;
|
|
44
|
+
return this.adapter;
|
|
45
|
+
}
|
|
46
|
+
catch (error) {
|
|
47
|
+
console.error('[memory] Failed to initialize adapter:', error);
|
|
48
|
+
this.available = false;
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async add(content, options) {
|
|
53
|
+
const adapter = await this.getAdapter();
|
|
54
|
+
if (!adapter) {
|
|
55
|
+
return { success: false, error: 'Memory adapter not available' };
|
|
56
|
+
}
|
|
57
|
+
return adapter.add(content, {
|
|
58
|
+
...options,
|
|
59
|
+
agentId: options?.agentId ?? this.options.agentId,
|
|
60
|
+
projectId: options?.projectId ?? this.options.projectId,
|
|
61
|
+
sessionId: options?.sessionId ?? this.options.sessionId,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
async search(query) {
|
|
65
|
+
const adapter = await this.getAdapter();
|
|
66
|
+
if (!adapter) {
|
|
67
|
+
return [];
|
|
68
|
+
}
|
|
69
|
+
const searchQuery = typeof query === 'string'
|
|
70
|
+
? {
|
|
71
|
+
query,
|
|
72
|
+
agentId: this.options.agentId,
|
|
73
|
+
projectId: this.options.projectId,
|
|
74
|
+
}
|
|
75
|
+
: {
|
|
76
|
+
...query,
|
|
77
|
+
agentId: query.agentId ?? this.options.agentId,
|
|
78
|
+
projectId: query.projectId ?? this.options.projectId,
|
|
79
|
+
};
|
|
80
|
+
return adapter.search(searchQuery);
|
|
81
|
+
}
|
|
82
|
+
async delete(id) {
|
|
83
|
+
const adapter = await this.getAdapter();
|
|
84
|
+
if (!adapter) {
|
|
85
|
+
return { success: false, error: 'Memory adapter not available' };
|
|
86
|
+
}
|
|
87
|
+
return adapter.delete(id);
|
|
88
|
+
}
|
|
89
|
+
async list(limit) {
|
|
90
|
+
const adapter = await this.getAdapter();
|
|
91
|
+
if (!adapter || !adapter.list) {
|
|
92
|
+
return [];
|
|
93
|
+
}
|
|
94
|
+
return adapter.list({
|
|
95
|
+
limit,
|
|
96
|
+
agentId: this.options.agentId,
|
|
97
|
+
projectId: this.options.projectId,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
isAvailable() {
|
|
101
|
+
return this.available;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get the underlying adapter (for advanced use)
|
|
105
|
+
*/
|
|
106
|
+
getUnderlyingAdapter() {
|
|
107
|
+
return this.adapter;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Close the adapter
|
|
111
|
+
*/
|
|
112
|
+
async close() {
|
|
113
|
+
if (this.adapter?.close) {
|
|
114
|
+
await this.adapter.close();
|
|
115
|
+
}
|
|
116
|
+
this.adapter = null;
|
|
117
|
+
this.adapterPromise = null;
|
|
118
|
+
this.available = false;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Create a memory service instance
|
|
123
|
+
*
|
|
124
|
+
* @param options - Service configuration
|
|
125
|
+
* @returns Memory service instance
|
|
126
|
+
*
|
|
127
|
+
* @example
|
|
128
|
+
* ```typescript
|
|
129
|
+
* // Create with default in-memory adapter
|
|
130
|
+
* const memory = createMemoryService();
|
|
131
|
+
*
|
|
132
|
+
* // Create with specific adapter
|
|
133
|
+
* const adapter = await createMemoryAdapter({ type: 'supermemory', apiKey });
|
|
134
|
+
* const memory = createMemoryService({ adapter });
|
|
135
|
+
*
|
|
136
|
+
* // Create with config
|
|
137
|
+
* const memory = createMemoryService({
|
|
138
|
+
* config: { type: 'supermemory' },
|
|
139
|
+
* agentId: 'my-agent',
|
|
140
|
+
* });
|
|
141
|
+
* ```
|
|
142
|
+
*/
|
|
143
|
+
export function createMemoryService(options) {
|
|
144
|
+
return new MemoryServiceImpl(options);
|
|
145
|
+
}
|
|
146
|
+
//# sourceMappingURL=service.js.map
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Relay Memory Types
|
|
3
|
+
*
|
|
4
|
+
* Core types for the memory adapter system. Memory adapters provide
|
|
5
|
+
* semantic storage and retrieval of agent learnings and context.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A memory entry stored in the system
|
|
9
|
+
*/
|
|
10
|
+
export interface MemoryEntry {
|
|
11
|
+
/** Unique identifier for the memory */
|
|
12
|
+
id: string;
|
|
13
|
+
/** The actual content of the memory */
|
|
14
|
+
content: string;
|
|
15
|
+
/** Timestamp when memory was created */
|
|
16
|
+
createdAt: number;
|
|
17
|
+
/** Timestamp when memory was last accessed */
|
|
18
|
+
lastAccessedAt?: number;
|
|
19
|
+
/** Optional metadata tags */
|
|
20
|
+
tags?: string[];
|
|
21
|
+
/** Source of the memory (e.g., 'agent', 'user', 'session') */
|
|
22
|
+
source?: string;
|
|
23
|
+
/** Agent that created the memory */
|
|
24
|
+
agentId?: string;
|
|
25
|
+
/** Project associated with this memory */
|
|
26
|
+
projectId?: string;
|
|
27
|
+
/** Session ID where memory was created */
|
|
28
|
+
sessionId?: string;
|
|
29
|
+
/** Relevance score (when returned from search) */
|
|
30
|
+
score?: number;
|
|
31
|
+
/** Additional structured metadata */
|
|
32
|
+
metadata?: Record<string, unknown>;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Query options for searching memories
|
|
36
|
+
*/
|
|
37
|
+
export interface MemorySearchQuery {
|
|
38
|
+
/** Semantic search query text */
|
|
39
|
+
query: string;
|
|
40
|
+
/** Maximum number of results to return */
|
|
41
|
+
limit?: number;
|
|
42
|
+
/** Minimum relevance score threshold (0-1) */
|
|
43
|
+
minScore?: number;
|
|
44
|
+
/** Filter by tags */
|
|
45
|
+
tags?: string[];
|
|
46
|
+
/** Filter by agent ID */
|
|
47
|
+
agentId?: string;
|
|
48
|
+
/** Filter by project ID */
|
|
49
|
+
projectId?: string;
|
|
50
|
+
/** Filter by memories created after this timestamp */
|
|
51
|
+
since?: number;
|
|
52
|
+
/** Filter by memories created before this timestamp */
|
|
53
|
+
before?: number;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Options for adding a memory
|
|
57
|
+
*/
|
|
58
|
+
export interface AddMemoryOptions {
|
|
59
|
+
/** Optional tags for the memory */
|
|
60
|
+
tags?: string[];
|
|
61
|
+
/** Source of the memory */
|
|
62
|
+
source?: string;
|
|
63
|
+
/** Agent creating the memory */
|
|
64
|
+
agentId?: string;
|
|
65
|
+
/** Project context */
|
|
66
|
+
projectId?: string;
|
|
67
|
+
/** Session context */
|
|
68
|
+
sessionId?: string;
|
|
69
|
+
/** Additional metadata */
|
|
70
|
+
metadata?: Record<string, unknown>;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Result of a memory operation
|
|
74
|
+
*/
|
|
75
|
+
export interface MemoryResult {
|
|
76
|
+
/** Whether the operation succeeded */
|
|
77
|
+
success: boolean;
|
|
78
|
+
/** ID of the affected memory (if applicable) */
|
|
79
|
+
id?: string;
|
|
80
|
+
/** Error message if operation failed */
|
|
81
|
+
error?: string;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Memory adapter interface
|
|
85
|
+
*
|
|
86
|
+
* All memory backends must implement this interface to be used
|
|
87
|
+
* with the agent-relay memory system.
|
|
88
|
+
*/
|
|
89
|
+
export interface MemoryAdapter {
|
|
90
|
+
/** Unique identifier for this adapter type */
|
|
91
|
+
readonly type: string;
|
|
92
|
+
/**
|
|
93
|
+
* Initialize the adapter (connect to backend, etc.)
|
|
94
|
+
*/
|
|
95
|
+
init(): Promise<void>;
|
|
96
|
+
/**
|
|
97
|
+
* Add a new memory to the system
|
|
98
|
+
* @param content - The content to remember
|
|
99
|
+
* @param options - Optional metadata and context
|
|
100
|
+
* @returns Result with the new memory's ID
|
|
101
|
+
*/
|
|
102
|
+
add(content: string, options?: AddMemoryOptions): Promise<MemoryResult>;
|
|
103
|
+
/**
|
|
104
|
+
* Search for relevant memories
|
|
105
|
+
* @param query - Search parameters
|
|
106
|
+
* @returns Array of matching memories, ordered by relevance
|
|
107
|
+
*/
|
|
108
|
+
search(query: MemorySearchQuery): Promise<MemoryEntry[]>;
|
|
109
|
+
/**
|
|
110
|
+
* Get a specific memory by ID
|
|
111
|
+
* @param id - The memory ID
|
|
112
|
+
* @returns The memory entry or null if not found
|
|
113
|
+
*/
|
|
114
|
+
get(id: string): Promise<MemoryEntry | null>;
|
|
115
|
+
/**
|
|
116
|
+
* Delete a memory
|
|
117
|
+
* @param id - The memory ID to delete
|
|
118
|
+
* @returns Result indicating success/failure
|
|
119
|
+
*/
|
|
120
|
+
delete(id: string): Promise<MemoryResult>;
|
|
121
|
+
/**
|
|
122
|
+
* Update an existing memory
|
|
123
|
+
* @param id - The memory ID
|
|
124
|
+
* @param content - New content
|
|
125
|
+
* @param options - Optional updated metadata
|
|
126
|
+
* @returns Result indicating success/failure
|
|
127
|
+
*/
|
|
128
|
+
update?(id: string, content: string, options?: Partial<AddMemoryOptions>): Promise<MemoryResult>;
|
|
129
|
+
/**
|
|
130
|
+
* List recent memories
|
|
131
|
+
* @param options - Filter options
|
|
132
|
+
* @returns Array of recent memories
|
|
133
|
+
*/
|
|
134
|
+
list?(options?: {
|
|
135
|
+
limit?: number;
|
|
136
|
+
agentId?: string;
|
|
137
|
+
projectId?: string;
|
|
138
|
+
}): Promise<MemoryEntry[]>;
|
|
139
|
+
/**
|
|
140
|
+
* Clear all memories matching criteria
|
|
141
|
+
* @param options - Filter for what to clear
|
|
142
|
+
*/
|
|
143
|
+
clear?(options?: {
|
|
144
|
+
agentId?: string;
|
|
145
|
+
projectId?: string;
|
|
146
|
+
before?: number;
|
|
147
|
+
}): Promise<MemoryResult>;
|
|
148
|
+
/**
|
|
149
|
+
* Get statistics about stored memories
|
|
150
|
+
*/
|
|
151
|
+
stats?(): Promise<{
|
|
152
|
+
totalCount: number;
|
|
153
|
+
byAgent?: Record<string, number>;
|
|
154
|
+
byProject?: Record<string, number>;
|
|
155
|
+
}>;
|
|
156
|
+
/**
|
|
157
|
+
* Close the adapter and release resources
|
|
158
|
+
*/
|
|
159
|
+
close?(): Promise<void>;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Configuration for memory adapters
|
|
163
|
+
*/
|
|
164
|
+
export interface MemoryConfig {
|
|
165
|
+
/** Adapter type: 'inmemory', 'supermemory', 'claude', etc. */
|
|
166
|
+
type: string;
|
|
167
|
+
/** API key for external services */
|
|
168
|
+
apiKey?: string;
|
|
169
|
+
/** API endpoint URL (for supermemory, etc.) */
|
|
170
|
+
endpoint?: string;
|
|
171
|
+
/** Default agent ID to use */
|
|
172
|
+
defaultAgentId?: string;
|
|
173
|
+
/** Default project ID to use */
|
|
174
|
+
defaultProjectId?: string;
|
|
175
|
+
/** Additional adapter-specific options */
|
|
176
|
+
options?: Record<string, unknown>;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Memory service interface for hooks
|
|
180
|
+
*
|
|
181
|
+
* This is a simplified interface exposed to hooks for memory operations.
|
|
182
|
+
*/
|
|
183
|
+
export interface MemoryService {
|
|
184
|
+
/** Add a memory */
|
|
185
|
+
add(content: string, options?: AddMemoryOptions): Promise<MemoryResult>;
|
|
186
|
+
/** Search for memories */
|
|
187
|
+
search(query: string | MemorySearchQuery): Promise<MemoryEntry[]>;
|
|
188
|
+
/** Delete a memory */
|
|
189
|
+
delete(id: string): Promise<MemoryResult>;
|
|
190
|
+
/** List recent memories */
|
|
191
|
+
list(limit?: number): Promise<MemoryEntry[]>;
|
|
192
|
+
/** Check if memory service is available */
|
|
193
|
+
isAvailable(): boolean;
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=types.d.ts.map
|