@amodalai/runtime 0.1.25 → 0.2.0
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/dist/src/__fixtures__/README.md +84 -0
- package/dist/src/__fixtures__/smoke-agent/amodal.json +11 -0
- package/dist/src/__fixtures__/smoke-agent/automations/test-auto.md +5 -0
- package/dist/src/__fixtures__/smoke-agent/connections/mock-api/access.json +11 -0
- package/dist/src/__fixtures__/smoke-agent/connections/mock-api/spec.json +4 -0
- package/dist/src/__fixtures__/smoke-agent/connections/mock-api/surface.md +9 -0
- package/dist/src/__fixtures__/smoke-agent/connections/mock-mcp/access.json +3 -0
- package/dist/src/__fixtures__/smoke-agent/connections/mock-mcp/spec.json +8 -0
- package/dist/src/__fixtures__/smoke-agent/evals/basic-eval.md +12 -0
- package/dist/src/__fixtures__/smoke-agent/knowledge/test-knowledge.md +3 -0
- package/dist/src/__fixtures__/smoke-agent/skills/test-skill/SKILL.md +11 -0
- package/dist/src/__fixtures__/smoke-agent/stores/test-items.json +11 -0
- package/dist/src/__fixtures__/smoke-agent/tools/echo_tool/handler.d.ts +18 -0
- package/dist/src/__fixtures__/smoke-agent/tools/echo_tool/handler.js +22 -0
- package/dist/src/__fixtures__/smoke-agent/tools/echo_tool/handler.js.map +1 -0
- package/dist/src/__fixtures__/smoke-agent/tools/echo_tool/tool.json +17 -0
- package/dist/src/__fixtures__/smoke.test.js +718 -0
- package/dist/src/__fixtures__/smoke.test.js.map +1 -0
- package/dist/src/{agent/stores-e2e.test.d.ts → __tests__/providers.test.d.ts} +1 -1
- package/dist/src/__tests__/providers.test.js +209 -0
- package/dist/src/__tests__/providers.test.js.map +1 -0
- package/dist/src/__tests__/test-providers.d.ts +40 -0
- package/dist/src/__tests__/test-providers.js +61 -0
- package/dist/src/__tests__/test-providers.js.map +1 -0
- package/dist/src/agent/agent-types.d.ts +2 -2
- package/dist/src/agent/config-watcher.test.js +18 -14
- package/dist/src/agent/config-watcher.test.js.map +1 -1
- package/dist/src/agent/local-server.d.ts +3 -3
- package/dist/src/agent/local-server.js +213 -122
- package/dist/src/agent/local-server.js.map +1 -1
- package/dist/src/agent/local-server.test.js +17 -13
- package/dist/src/agent/local-server.test.js.map +1 -1
- package/dist/src/agent/loop-types.d.ts +175 -0
- package/dist/src/agent/loop-types.js +20 -0
- package/dist/src/agent/loop-types.js.map +1 -0
- package/dist/src/agent/loop.d.ts +31 -0
- package/dist/src/agent/loop.js +139 -0
- package/dist/src/agent/loop.js.map +1 -0
- package/dist/src/agent/{tool-context-builder.test.d.ts → loop.test.d.ts} +1 -1
- package/dist/src/agent/loop.test.js +1030 -0
- package/dist/src/agent/loop.test.js.map +1 -0
- package/dist/src/agent/mcp-config.d.ts +28 -0
- package/dist/src/agent/mcp-config.js +57 -0
- package/dist/src/agent/mcp-config.js.map +1 -0
- package/dist/src/agent/page-builder.js +6 -1
- package/dist/src/agent/page-builder.js.map +1 -1
- package/dist/src/agent/proactive/proactive-runner.d.ts +24 -8
- package/dist/src/agent/proactive/proactive-runner.js +36 -33
- package/dist/src/agent/proactive/proactive-runner.js.map +1 -1
- package/dist/src/agent/proactive/proactive-runner.test.d.ts +1 -1
- package/dist/src/agent/proactive/proactive-runner.test.js +75 -87
- package/dist/src/agent/proactive/proactive-runner.test.js.map +1 -1
- package/dist/src/agent/routes/admin-chat.d.ts +15 -3
- package/dist/src/agent/routes/admin-chat.js +63 -17
- package/dist/src/agent/routes/admin-chat.js.map +1 -1
- package/dist/src/agent/routes/automations.js +5 -4
- package/dist/src/agent/routes/automations.js.map +1 -1
- package/dist/src/agent/routes/evals.d.ts +3 -2
- package/dist/src/agent/routes/evals.js +25 -11
- package/dist/src/agent/routes/evals.js.map +1 -1
- package/dist/src/agent/routes/files.js +7 -6
- package/dist/src/agent/routes/files.js.map +1 -1
- package/dist/src/agent/routes/inspect.d.ts +6 -2
- package/dist/src/agent/routes/inspect.js +32 -15
- package/dist/src/agent/routes/inspect.js.map +1 -1
- package/dist/src/agent/routes/inspect.test.js +18 -42
- package/dist/src/agent/routes/inspect.test.js.map +1 -1
- package/dist/src/agent/routes/stores.js +9 -8
- package/dist/src/agent/routes/stores.js.map +1 -1
- package/dist/src/agent/routes/task.d.ts +15 -3
- package/dist/src/agent/routes/task.js +16 -6
- package/dist/src/agent/routes/task.js.map +1 -1
- package/dist/src/agent/routes/task.test.d.ts +1 -1
- package/dist/src/agent/routes/task.test.js +70 -53
- package/dist/src/agent/routes/task.test.js.map +1 -1
- package/dist/src/agent/routes/webhooks.js +12 -2
- package/dist/src/agent/routes/webhooks.js.map +1 -1
- package/dist/src/agent/session-store.d.ts +11 -2
- package/dist/src/agent/session-store.js +1 -1
- package/dist/src/agent/session-store.js.map +1 -1
- package/dist/src/agent/snapshot-server.d.ts +2 -22
- package/dist/src/agent/snapshot-server.js +50 -27
- package/dist/src/agent/snapshot-server.js.map +1 -1
- package/dist/src/agent/states/compacting.d.ts +14 -0
- package/dist/src/agent/states/compacting.js +258 -0
- package/dist/src/agent/states/compacting.js.map +1 -0
- package/dist/src/agent/states/confirming.d.ts +10 -0
- package/dist/src/agent/states/confirming.js +76 -0
- package/dist/src/agent/states/confirming.js.map +1 -0
- package/dist/src/agent/states/dispatching.d.ts +18 -0
- package/dist/src/agent/states/dispatching.js +241 -0
- package/dist/src/agent/states/dispatching.js.map +1 -0
- package/dist/src/agent/states/executing.d.ts +21 -0
- package/dist/src/agent/states/executing.js +308 -0
- package/dist/src/agent/states/executing.js.map +1 -0
- package/dist/src/agent/states/streaming.d.ts +10 -0
- package/dist/src/agent/states/streaming.js +155 -0
- package/dist/src/agent/states/streaming.js.map +1 -0
- package/dist/src/agent/states/thinking.d.ts +13 -0
- package/dist/src/agent/states/thinking.js +233 -0
- package/dist/src/agent/states/thinking.js.map +1 -0
- package/dist/src/agent/token-estimate.d.ts +17 -0
- package/dist/src/agent/token-estimate.js +13 -0
- package/dist/src/agent/token-estimate.js.map +1 -0
- package/dist/src/agent/tool-executor-local.js +9 -18
- package/dist/src/agent/tool-executor-local.js.map +1 -1
- package/dist/src/agent/tool-executor-local.test.js +3 -5
- package/dist/src/agent/tool-executor-local.test.js.map +1 -1
- package/dist/src/api/create-agent.d.ts +15 -0
- package/dist/src/api/create-agent.js +137 -0
- package/dist/src/api/create-agent.js.map +1 -0
- package/dist/src/api/types.d.ts +68 -0
- package/dist/src/api/types.js +7 -0
- package/dist/src/api/types.js.map +1 -0
- package/dist/src/config.d.ts +96 -0
- package/dist/src/config.js +221 -0
- package/dist/src/config.js.map +1 -0
- package/dist/src/{agent/custom-tools-e2e.test.d.ts → config.test.d.ts} +1 -1
- package/dist/src/config.test.js +235 -0
- package/dist/src/config.test.js.map +1 -0
- package/dist/src/context/compiler.d.ts +13 -0
- package/dist/src/context/compiler.js +358 -0
- package/dist/src/context/compiler.js.map +1 -0
- package/dist/src/context/compiler.test.d.ts +6 -0
- package/dist/src/context/compiler.test.js +532 -0
- package/dist/src/context/compiler.test.js.map +1 -0
- package/dist/src/context/types.d.ts +110 -0
- package/dist/src/context/types.js +7 -0
- package/dist/src/context/types.js.map +1 -0
- package/dist/src/errors.d.ts +145 -0
- package/dist/src/errors.js +218 -0
- package/dist/src/errors.js.map +1 -0
- package/dist/src/errors.test.d.ts +6 -0
- package/dist/src/errors.test.js +203 -0
- package/dist/src/errors.test.js.map +1 -0
- package/dist/src/index.d.ts +38 -6
- package/dist/src/index.js +40 -22
- package/dist/src/index.js.map +1 -1
- package/dist/src/logger.d.ts +15 -31
- package/dist/src/logger.js +19 -78
- package/dist/src/logger.js.map +1 -1
- package/dist/src/logger.test.d.ts +6 -0
- package/dist/src/logger.test.js +198 -0
- package/dist/src/logger.test.js.map +1 -0
- package/dist/src/providers/create-provider.d.ts +23 -0
- package/dist/src/providers/create-provider.js +185 -0
- package/dist/src/providers/create-provider.js.map +1 -0
- package/dist/src/providers/create-provider.test.d.ts +6 -0
- package/dist/src/providers/create-provider.test.js +95 -0
- package/dist/src/providers/create-provider.test.js.map +1 -0
- package/dist/src/providers/failover.d.ts +38 -0
- package/dist/src/providers/failover.js +147 -0
- package/dist/src/providers/failover.js.map +1 -0
- package/dist/src/providers/failover.test.d.ts +6 -0
- package/dist/src/providers/failover.test.js +169 -0
- package/dist/src/providers/failover.test.js.map +1 -0
- package/dist/src/providers/types.d.ts +110 -0
- package/dist/src/providers/types.js +7 -0
- package/dist/src/providers/types.js.map +1 -0
- package/dist/src/routes/ai-stream.d.ts +13 -10
- package/dist/src/routes/ai-stream.js +76 -38
- package/dist/src/routes/ai-stream.js.map +1 -1
- package/dist/src/routes/chat-new.test.d.ts +6 -0
- package/dist/src/routes/chat-new.test.js +107 -0
- package/dist/src/routes/chat-new.test.js.map +1 -0
- package/dist/src/routes/chat-stream-new.test.d.ts +6 -0
- package/dist/src/routes/chat-stream-new.test.js +135 -0
- package/dist/src/routes/chat-stream-new.test.js.map +1 -0
- package/dist/src/routes/chat-stream.d.ts +14 -4
- package/dist/src/routes/chat-stream.js +47 -27
- package/dist/src/routes/chat-stream.js.map +1 -1
- package/dist/src/routes/chat.d.ts +13 -4
- package/dist/src/routes/chat.js +60 -22
- package/dist/src/routes/chat.js.map +1 -1
- package/dist/src/routes/health.d.ts +3 -2
- package/dist/src/routes/health.js.map +1 -1
- package/dist/src/routes/route-helpers.d.ts +50 -0
- package/dist/src/routes/route-helpers.js +80 -0
- package/dist/src/routes/route-helpers.js.map +1 -0
- package/dist/src/routes/session-resolver.d.ts +72 -0
- package/dist/src/routes/session-resolver.js +123 -0
- package/dist/src/routes/session-resolver.js.map +1 -0
- package/dist/src/routes/session-resolver.test.d.ts +6 -0
- package/dist/src/routes/session-resolver.test.js +206 -0
- package/dist/src/routes/session-resolver.test.js.map +1 -0
- package/dist/src/routes/webhooks.d.ts +3 -1
- package/dist/src/routes/webhooks.js +12 -2
- package/dist/src/routes/webhooks.js.map +1 -1
- package/dist/src/security/permission-checker.d.ts +80 -0
- package/dist/src/security/permission-checker.js +75 -0
- package/dist/src/security/permission-checker.js.map +1 -0
- package/dist/src/security/permission-checker.test.d.ts +6 -0
- package/dist/src/security/permission-checker.test.js +208 -0
- package/dist/src/security/permission-checker.test.js.map +1 -0
- package/dist/src/server.d.ts +12 -11
- package/dist/src/server.js +44 -46
- package/dist/src/server.js.map +1 -1
- package/dist/src/server.test.d.ts +1 -1
- package/dist/src/server.test.js +6 -140
- package/dist/src/server.test.js.map +1 -1
- package/dist/src/session/manager.d.ts +98 -0
- package/dist/src/session/manager.js +364 -0
- package/dist/src/session/manager.js.map +1 -0
- package/dist/src/session/manager.test.d.ts +6 -0
- package/dist/src/session/manager.test.js +315 -0
- package/dist/src/session/manager.test.js.map +1 -0
- package/dist/src/session/session-builder.d.ts +71 -0
- package/dist/src/session/session-builder.js +364 -0
- package/dist/src/session/session-builder.js.map +1 -0
- package/dist/src/session/session-builder.test.d.ts +6 -0
- package/dist/src/session/session-builder.test.js +352 -0
- package/dist/src/session/session-builder.test.js.map +1 -0
- package/dist/src/session/store.d.ts +57 -0
- package/dist/src/session/store.js +167 -0
- package/dist/src/session/store.js.map +1 -0
- package/dist/src/session/store.test.d.ts +6 -0
- package/dist/src/session/store.test.js +145 -0
- package/dist/src/session/store.test.js.map +1 -0
- package/dist/src/session/stream-hooks.d.ts +39 -0
- package/dist/src/session/stream-hooks.js +7 -0
- package/dist/src/session/stream-hooks.js.map +1 -0
- package/dist/src/session/tool-context-factory.d.ts +60 -0
- package/dist/src/session/tool-context-factory.js +190 -0
- package/dist/src/session/tool-context-factory.js.map +1 -0
- package/dist/src/session/tool-context-factory.test.d.ts +6 -0
- package/dist/src/session/tool-context-factory.test.js +287 -0
- package/dist/src/session/tool-context-factory.test.js.map +1 -0
- package/dist/src/session/types.d.ts +188 -0
- package/dist/src/session/types.js +7 -0
- package/dist/src/session/types.js.map +1 -0
- package/dist/src/stores/drizzle-store-backend.d.ts +49 -0
- package/dist/src/stores/drizzle-store-backend.js +306 -0
- package/dist/src/stores/drizzle-store-backend.js.map +1 -0
- package/dist/src/stores/drizzle-store-backend.test.d.ts +6 -0
- package/dist/src/stores/drizzle-store-backend.test.js +215 -0
- package/dist/src/stores/drizzle-store-backend.test.js.map +1 -0
- package/dist/src/stores/index.d.ts +4 -0
- package/dist/src/stores/index.js +2 -0
- package/dist/src/stores/index.js.map +1 -1
- package/dist/src/stores/pglite-store-backend.d.ts +16 -19
- package/dist/src/stores/pglite-store-backend.js +85 -233
- package/dist/src/stores/pglite-store-backend.js.map +1 -1
- package/dist/src/stores/postgres-store-backend.d.ts +30 -0
- package/dist/src/stores/postgres-store-backend.js +100 -0
- package/dist/src/stores/postgres-store-backend.js.map +1 -0
- package/dist/src/stores/schema.d.ts +491 -0
- package/dist/src/stores/schema.js +57 -0
- package/dist/src/stores/schema.js.map +1 -0
- package/dist/src/tools/admin-file-tools.d.ts +13 -0
- package/dist/src/tools/admin-file-tools.js +200 -0
- package/dist/src/tools/admin-file-tools.js.map +1 -0
- package/dist/src/tools/admin-file-tools.test.d.ts +6 -0
- package/dist/src/tools/admin-file-tools.test.js +152 -0
- package/dist/src/tools/admin-file-tools.test.js.map +1 -0
- package/dist/src/tools/custom-tool-adapter.d.ts +41 -0
- package/dist/src/tools/custom-tool-adapter.js +190 -0
- package/dist/src/tools/custom-tool-adapter.js.map +1 -0
- package/dist/src/tools/custom-tool-adapter.test.d.ts +6 -0
- package/dist/src/tools/custom-tool-adapter.test.js +244 -0
- package/dist/src/tools/custom-tool-adapter.test.js.map +1 -0
- package/dist/src/tools/dispatch-tool.d.ts +52 -0
- package/dist/src/tools/dispatch-tool.js +71 -0
- package/dist/src/tools/dispatch-tool.js.map +1 -0
- package/dist/src/tools/dispatch-tool.test.d.ts +6 -0
- package/dist/src/tools/dispatch-tool.test.js +75 -0
- package/dist/src/tools/dispatch-tool.test.js.map +1 -0
- package/dist/src/tools/mcp-tool-adapter.d.ts +18 -0
- package/dist/src/tools/mcp-tool-adapter.js +135 -0
- package/dist/src/tools/mcp-tool-adapter.js.map +1 -0
- package/dist/src/tools/mcp-tool-adapter.test.d.ts +6 -0
- package/dist/src/tools/mcp-tool-adapter.test.js +227 -0
- package/dist/src/tools/mcp-tool-adapter.test.js.map +1 -0
- package/dist/src/tools/registry.d.ts +25 -0
- package/dist/src/tools/registry.js +72 -0
- package/dist/src/tools/registry.js.map +1 -0
- package/dist/src/tools/registry.test.d.ts +6 -0
- package/dist/src/tools/registry.test.js +121 -0
- package/dist/src/tools/registry.test.js.map +1 -0
- package/dist/src/tools/request-tool.d.ts +42 -0
- package/dist/src/tools/request-tool.js +190 -0
- package/dist/src/tools/request-tool.js.map +1 -0
- package/dist/src/tools/request-tool.test.d.ts +6 -0
- package/dist/src/tools/request-tool.test.js +254 -0
- package/dist/src/tools/request-tool.test.js.map +1 -0
- package/dist/src/tools/store-tools.d.ts +29 -0
- package/dist/src/tools/store-tools.js +224 -0
- package/dist/src/tools/store-tools.js.map +1 -0
- package/dist/src/tools/store-tools.test.d.ts +6 -0
- package/dist/src/tools/store-tools.test.js +216 -0
- package/dist/src/tools/store-tools.test.js.map +1 -0
- package/dist/src/tools/types.d.ts +111 -0
- package/dist/src/tools/types.js +7 -0
- package/dist/src/tools/types.js.map +1 -0
- package/dist/src/types.d.ts +20 -12
- package/dist/src/types.js +3 -2
- package/dist/src/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -3
- package/dist/src/agent/agent-runner.d.ts +0 -33
- package/dist/src/agent/agent-runner.js +0 -1040
- package/dist/src/agent/agent-runner.js.map +0 -1
- package/dist/src/agent/custom-tools-e2e.test.js +0 -566
- package/dist/src/agent/custom-tools-e2e.test.js.map +0 -1
- package/dist/src/agent/request-helper.d.ts +0 -16
- package/dist/src/agent/request-helper.js +0 -96
- package/dist/src/agent/request-helper.js.map +0 -1
- package/dist/src/agent/stores-e2e.test.js +0 -433
- package/dist/src/agent/stores-e2e.test.js.map +0 -1
- package/dist/src/agent/tool-context-builder.d.ts +0 -11
- package/dist/src/agent/tool-context-builder.js +0 -102
- package/dist/src/agent/tool-context-builder.js.map +0 -1
- package/dist/src/agent/tool-context-builder.test.js +0 -152
- package/dist/src/agent/tool-context-builder.test.js.map +0 -1
- package/dist/src/agent/write-repo-file.test.js +0 -270
- package/dist/src/agent/write-repo-file.test.js.map +0 -1
- package/dist/src/cron/heartbeat-runner.d.ts +0 -21
- package/dist/src/cron/heartbeat-runner.js +0 -79
- package/dist/src/cron/heartbeat-runner.js.map +0 -1
- package/dist/src/cron/heartbeat-runner.test.d.ts +0 -6
- package/dist/src/cron/heartbeat-runner.test.js +0 -120
- package/dist/src/cron/heartbeat-runner.test.js.map +0 -1
- package/dist/src/cron/heartbeat-scheduler.d.ts +0 -26
- package/dist/src/cron/heartbeat-scheduler.js +0 -55
- package/dist/src/cron/heartbeat-scheduler.js.map +0 -1
- package/dist/src/cron/heartbeat-scheduler.test.d.ts +0 -6
- package/dist/src/cron/heartbeat-scheduler.test.js +0 -61
- package/dist/src/cron/heartbeat-scheduler.test.js.map +0 -1
- package/dist/src/routes/ai-stream.test.d.ts +0 -6
- package/dist/src/routes/ai-stream.test.js +0 -586
- package/dist/src/routes/ai-stream.test.js.map +0 -1
- package/dist/src/routes/ask-user-response.d.ts +0 -30
- package/dist/src/routes/ask-user-response.js +0 -61
- package/dist/src/routes/ask-user-response.js.map +0 -1
- package/dist/src/routes/ask-user-response.test.d.ts +0 -6
- package/dist/src/routes/ask-user-response.test.js +0 -88
- package/dist/src/routes/ask-user-response.test.js.map +0 -1
- package/dist/src/routes/chat-stream.test.d.ts +0 -6
- package/dist/src/routes/chat-stream.test.js +0 -155
- package/dist/src/routes/chat-stream.test.js.map +0 -1
- package/dist/src/routes/chat.test.d.ts +0 -6
- package/dist/src/routes/chat.test.js +0 -99
- package/dist/src/routes/chat.test.js.map +0 -1
- package/dist/src/routes/widget-actions.d.ts +0 -49
- package/dist/src/routes/widget-actions.js +0 -78
- package/dist/src/routes/widget-actions.js.map +0 -1
- package/dist/src/session/custom-tool-adapter.d.ts +0 -74
- package/dist/src/session/custom-tool-adapter.js +0 -180
- package/dist/src/session/custom-tool-adapter.js.map +0 -1
- package/dist/src/session/history-converter.d.ts +0 -21
- package/dist/src/session/history-converter.js +0 -59
- package/dist/src/session/history-converter.js.map +0 -1
- package/dist/src/session/history-converter.test.d.ts +0 -6
- package/dist/src/session/history-converter.test.js +0 -130
- package/dist/src/session/history-converter.test.js.map +0 -1
- package/dist/src/session/session-manager.d.ts +0 -219
- package/dist/src/session/session-manager.js +0 -915
- package/dist/src/session/session-manager.js.map +0 -1
- package/dist/src/session/session-manager.test.d.ts +0 -6
- package/dist/src/session/session-manager.test.js +0 -451
- package/dist/src/session/session-manager.test.js.map +0 -1
- package/dist/src/session/session-runner.d.ts +0 -45
- package/dist/src/session/session-runner.js +0 -719
- package/dist/src/session/session-runner.js.map +0 -1
- package/dist/src/session/session-runner.test.d.ts +0 -6
- package/dist/src/session/session-runner.test.js +0 -830
- package/dist/src/session/session-runner.test.js.map +0 -1
- /package/dist/src/{agent/write-repo-file.test.d.ts → __fixtures__/smoke.test.d.ts} +0 -0
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Tests for StandaloneSessionManager.
|
|
8
|
+
*
|
|
9
|
+
* Tests session lifecycle: create, persist, resume, destroy, cleanup.
|
|
10
|
+
* Uses a real PGLiteSessionStore — no mocks for persistence.
|
|
11
|
+
* LLM provider is stubbed since we're testing the manager, not the loop.
|
|
12
|
+
*/
|
|
13
|
+
import { describe, it, expect, vi, beforeAll, afterAll } from 'vitest';
|
|
14
|
+
import { StandaloneSessionManager } from './manager.js';
|
|
15
|
+
import { PGLiteSessionStore } from './store.js';
|
|
16
|
+
import { SSEEventType } from '../types.js';
|
|
17
|
+
import { createLogger } from '../logger.js';
|
|
18
|
+
import { createToolRegistry } from '../tools/registry.js';
|
|
19
|
+
const logger = createLogger({ component: 'test:session-manager' });
|
|
20
|
+
// ---------------------------------------------------------------------------
|
|
21
|
+
// Stubs
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
function stubProvider(model = 'test-model', provider = 'test-provider') {
|
|
24
|
+
return {
|
|
25
|
+
model,
|
|
26
|
+
provider,
|
|
27
|
+
languageModel: {},
|
|
28
|
+
streamText: () => {
|
|
29
|
+
throw new Error('streamText not implemented in stub');
|
|
30
|
+
},
|
|
31
|
+
generateText: () => Promise.reject(new Error('generateText not implemented in stub')),
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Create a provider that streams a single text response and finishes.
|
|
36
|
+
*/
|
|
37
|
+
function streamingProvider(responseText) {
|
|
38
|
+
return {
|
|
39
|
+
model: 'test-model',
|
|
40
|
+
provider: 'test-provider',
|
|
41
|
+
languageModel: {},
|
|
42
|
+
streamText() {
|
|
43
|
+
const usage = { inputTokens: 10, outputTokens: 5, totalTokens: 15 };
|
|
44
|
+
const events = [
|
|
45
|
+
{ type: 'text-delta', textDelta: responseText },
|
|
46
|
+
{ type: 'finish', usage },
|
|
47
|
+
];
|
|
48
|
+
async function* makeFullStream() {
|
|
49
|
+
for (const e of events)
|
|
50
|
+
yield e;
|
|
51
|
+
}
|
|
52
|
+
async function* makeTextStream() {
|
|
53
|
+
yield responseText;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
fullStream: makeFullStream(),
|
|
57
|
+
textStream: makeTextStream(),
|
|
58
|
+
usage: Promise.resolve(usage),
|
|
59
|
+
text: Promise.resolve(responseText),
|
|
60
|
+
};
|
|
61
|
+
},
|
|
62
|
+
generateText: () => Promise.reject(new Error('not implemented')),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
function stubPermissionChecker() {
|
|
66
|
+
return {
|
|
67
|
+
check: () => ({ allowed: true }),
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function makeCreateOpts(overrides = {}) {
|
|
71
|
+
return {
|
|
72
|
+
tenantId: 'tenant-1',
|
|
73
|
+
userId: 'user-1',
|
|
74
|
+
provider: stubProvider(),
|
|
75
|
+
toolRegistry: createToolRegistry(),
|
|
76
|
+
permissionChecker: stubPermissionChecker(),
|
|
77
|
+
systemPrompt: 'You are a helpful assistant.',
|
|
78
|
+
...overrides,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// Tests
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
describe('StandaloneSessionManager', () => {
|
|
85
|
+
let store;
|
|
86
|
+
beforeAll(async () => {
|
|
87
|
+
store = new PGLiteSessionStore({ logger });
|
|
88
|
+
await store.initialize();
|
|
89
|
+
});
|
|
90
|
+
afterAll(async () => {
|
|
91
|
+
await store.close();
|
|
92
|
+
});
|
|
93
|
+
describe('create', () => {
|
|
94
|
+
it('creates a session with a generated ID', () => {
|
|
95
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
96
|
+
const session = mgr.create(makeCreateOpts());
|
|
97
|
+
expect(session.id).toBeTruthy();
|
|
98
|
+
expect(session.tenantId).toBe('tenant-1');
|
|
99
|
+
expect(session.userId).toBe('user-1');
|
|
100
|
+
expect(session.model).toBe('test-model');
|
|
101
|
+
expect(session.providerName).toBe('test-provider');
|
|
102
|
+
expect(session.messages).toEqual([]);
|
|
103
|
+
expect(session.usage.inputTokens).toBe(0);
|
|
104
|
+
});
|
|
105
|
+
it('stores session in memory', () => {
|
|
106
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
107
|
+
const session = mgr.create(makeCreateOpts());
|
|
108
|
+
expect(mgr.has(session.id)).toBe(true);
|
|
109
|
+
expect(mgr.get(session.id)).toBe(session);
|
|
110
|
+
expect(mgr.size).toBe(1);
|
|
111
|
+
});
|
|
112
|
+
it('uses custom maxTurns and maxContextTokens', () => {
|
|
113
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
114
|
+
const session = mgr.create(makeCreateOpts({
|
|
115
|
+
maxTurns: 10,
|
|
116
|
+
maxContextTokens: 100_000,
|
|
117
|
+
}));
|
|
118
|
+
expect(session.maxTurns).toBe(10);
|
|
119
|
+
expect(session.maxContextTokens).toBe(100_000);
|
|
120
|
+
});
|
|
121
|
+
it('uses manager defaults when not specified', () => {
|
|
122
|
+
const mgr = new StandaloneSessionManager({
|
|
123
|
+
logger,
|
|
124
|
+
store,
|
|
125
|
+
defaultMaxTurns: 25,
|
|
126
|
+
defaultMaxContextTokens: 150_000,
|
|
127
|
+
});
|
|
128
|
+
const session = mgr.create(makeCreateOpts());
|
|
129
|
+
expect(session.maxTurns).toBe(25);
|
|
130
|
+
expect(session.maxContextTokens).toBe(150_000);
|
|
131
|
+
});
|
|
132
|
+
});
|
|
133
|
+
describe('persist and resume', () => {
|
|
134
|
+
it('persists a session and resumes it with preserved messages', async () => {
|
|
135
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
136
|
+
const session = mgr.create(makeCreateOpts());
|
|
137
|
+
// Simulate some messages
|
|
138
|
+
session.messages = [
|
|
139
|
+
{ role: 'user', content: 'Hello' },
|
|
140
|
+
{ role: 'assistant', content: 'Hi there!' },
|
|
141
|
+
];
|
|
142
|
+
session.usage = { inputTokens: 100, outputTokens: 50, totalTokens: 150 };
|
|
143
|
+
await mgr.persist(session);
|
|
144
|
+
// Destroy and resume
|
|
145
|
+
await mgr.destroy(session.id);
|
|
146
|
+
expect(mgr.has(session.id)).toBe(false);
|
|
147
|
+
const resumed = await mgr.resume(session.id, makeCreateOpts({
|
|
148
|
+
systemPrompt: 'Updated system prompt',
|
|
149
|
+
}));
|
|
150
|
+
expect(resumed).not.toBeNull();
|
|
151
|
+
expect(resumed.id).toBe(session.id);
|
|
152
|
+
expect(resumed.messages).toHaveLength(2);
|
|
153
|
+
expect(resumed.usage.totalTokens).toBe(150);
|
|
154
|
+
// System prompt should be fresh, not stale
|
|
155
|
+
expect(resumed.systemPrompt).toBe('Updated system prompt');
|
|
156
|
+
});
|
|
157
|
+
it('resume returns null for missing session', async () => {
|
|
158
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
159
|
+
const result = await mgr.resume('nonexistent', makeCreateOpts());
|
|
160
|
+
expect(result).toBeNull();
|
|
161
|
+
});
|
|
162
|
+
it('version field is present on persisted sessions', async () => {
|
|
163
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
164
|
+
const session = mgr.create(makeCreateOpts());
|
|
165
|
+
await mgr.persist(session);
|
|
166
|
+
const persisted = await store.load(session.id);
|
|
167
|
+
expect(persisted.version).toBe(1);
|
|
168
|
+
});
|
|
169
|
+
it('deduplicates concurrent resume calls for the same session ID', async () => {
|
|
170
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
171
|
+
const session = mgr.create(makeCreateOpts());
|
|
172
|
+
session.messages = [{ role: 'user', content: 'test' }];
|
|
173
|
+
await mgr.persist(session);
|
|
174
|
+
await mgr.destroy(session.id);
|
|
175
|
+
// Spy on store.load to verify it's called once
|
|
176
|
+
const loadSpy = vi.spyOn(store, 'load');
|
|
177
|
+
// Fire two concurrent resumes for the same session
|
|
178
|
+
const opts = makeCreateOpts({ systemPrompt: 'fresh' });
|
|
179
|
+
const [result1, result2] = await Promise.all([
|
|
180
|
+
mgr.resume(session.id, opts),
|
|
181
|
+
mgr.resume(session.id, opts),
|
|
182
|
+
]);
|
|
183
|
+
// Both should resolve to the same session (same ID)
|
|
184
|
+
expect(result1).not.toBeNull();
|
|
185
|
+
expect(result2).not.toBeNull();
|
|
186
|
+
expect(result1.id).toBe(session.id);
|
|
187
|
+
expect(result2.id).toBe(session.id);
|
|
188
|
+
// Store should only be hit once (deduplication)
|
|
189
|
+
expect(loadSpy).toHaveBeenCalledTimes(1);
|
|
190
|
+
loadSpy.mockRestore();
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
describe('list persisted', () => {
|
|
194
|
+
it('lists sessions filtered by tenant', async () => {
|
|
195
|
+
const tenantId = `tenant-list-mgr-${Date.now()}`;
|
|
196
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
197
|
+
const s1 = mgr.create(makeCreateOpts({ tenantId }));
|
|
198
|
+
const s2 = mgr.create(makeCreateOpts({ tenantId }));
|
|
199
|
+
mgr.create(makeCreateOpts({ tenantId: 'other-tenant' }));
|
|
200
|
+
await mgr.persist(s1);
|
|
201
|
+
await mgr.persist(s2);
|
|
202
|
+
const list = await mgr.listPersisted(tenantId);
|
|
203
|
+
expect(list.length).toBeGreaterThanOrEqual(2);
|
|
204
|
+
expect(list.every((s) => s.tenantId === tenantId)).toBe(true);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
describe('destroy', () => {
|
|
208
|
+
it('removes session from memory', async () => {
|
|
209
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
210
|
+
const session = mgr.create(makeCreateOpts());
|
|
211
|
+
await mgr.destroy(session.id);
|
|
212
|
+
expect(mgr.has(session.id)).toBe(false);
|
|
213
|
+
expect(mgr.size).toBe(0);
|
|
214
|
+
});
|
|
215
|
+
it('optionally deletes from store', async () => {
|
|
216
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
217
|
+
const session = mgr.create(makeCreateOpts());
|
|
218
|
+
await mgr.persist(session);
|
|
219
|
+
await mgr.destroy(session.id, { deleteFromStore: true });
|
|
220
|
+
const loaded = await store.load(session.id);
|
|
221
|
+
expect(loaded).toBeNull();
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
describe('cleanup', () => {
|
|
225
|
+
it('destroys sessions idle beyond TTL', async () => {
|
|
226
|
+
const mgr = new StandaloneSessionManager({ logger, store, ttlMs: 1 });
|
|
227
|
+
const session = mgr.create(makeCreateOpts());
|
|
228
|
+
// Force old lastAccessedAt
|
|
229
|
+
session.lastAccessedAt = Date.now() - 1000;
|
|
230
|
+
const destroyed = await mgr.cleanup();
|
|
231
|
+
expect(destroyed).toBeGreaterThanOrEqual(1);
|
|
232
|
+
expect(mgr.has(session.id)).toBe(false);
|
|
233
|
+
});
|
|
234
|
+
it('does not destroy recently accessed sessions', async () => {
|
|
235
|
+
const mgr = new StandaloneSessionManager({ logger, store, ttlMs: 60_000 });
|
|
236
|
+
const session = mgr.create(makeCreateOpts());
|
|
237
|
+
const destroyed = await mgr.cleanup();
|
|
238
|
+
expect(destroyed).toBe(0);
|
|
239
|
+
expect(mgr.has(session.id)).toBe(true);
|
|
240
|
+
});
|
|
241
|
+
});
|
|
242
|
+
describe('shutdown', () => {
|
|
243
|
+
it('destroys all sessions and closes store', async () => {
|
|
244
|
+
const shutdownStore = new PGLiteSessionStore({ logger });
|
|
245
|
+
await shutdownStore.initialize();
|
|
246
|
+
const mgr = new StandaloneSessionManager({ logger, store: shutdownStore });
|
|
247
|
+
mgr.start();
|
|
248
|
+
mgr.create(makeCreateOpts());
|
|
249
|
+
mgr.create(makeCreateOpts());
|
|
250
|
+
expect(mgr.size).toBe(2);
|
|
251
|
+
await mgr.shutdown();
|
|
252
|
+
expect(mgr.size).toBe(0);
|
|
253
|
+
});
|
|
254
|
+
});
|
|
255
|
+
describe('runMessage', () => {
|
|
256
|
+
it('executes a message through the agent loop and yields SSE events', async () => {
|
|
257
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
258
|
+
const session = mgr.create(makeCreateOpts({
|
|
259
|
+
provider: streamingProvider('Hello from the agent!'),
|
|
260
|
+
}));
|
|
261
|
+
const events = [];
|
|
262
|
+
for await (const event of mgr.runMessage(session.id, 'Hi there')) {
|
|
263
|
+
events.push(event);
|
|
264
|
+
}
|
|
265
|
+
// Should have init, text delta, and done events
|
|
266
|
+
const types = events.map((e) => e.type);
|
|
267
|
+
expect(types).toContain(SSEEventType.Init);
|
|
268
|
+
expect(types).toContain(SSEEventType.TextDelta);
|
|
269
|
+
expect(types).toContain(SSEEventType.Done);
|
|
270
|
+
});
|
|
271
|
+
it('persists session after execution', async () => {
|
|
272
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
273
|
+
const session = mgr.create(makeCreateOpts({
|
|
274
|
+
provider: streamingProvider('Persisted response'),
|
|
275
|
+
}));
|
|
276
|
+
// Drain the generator
|
|
277
|
+
for await (const _event of mgr.runMessage(session.id, 'Save me')) {
|
|
278
|
+
// consume
|
|
279
|
+
}
|
|
280
|
+
// Session should be persisted
|
|
281
|
+
const persisted = await store.load(session.id);
|
|
282
|
+
expect(persisted).not.toBeNull();
|
|
283
|
+
expect(persisted.messages.length).toBeGreaterThan(0);
|
|
284
|
+
});
|
|
285
|
+
it('fires onUsage callback with token counts', async () => {
|
|
286
|
+
const usageEvents = [];
|
|
287
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
288
|
+
const session = mgr.create(makeCreateOpts({
|
|
289
|
+
provider: streamingProvider('Usage test'),
|
|
290
|
+
}));
|
|
291
|
+
for await (const _event of mgr.runMessage(session.id, 'Count tokens', {
|
|
292
|
+
onUsage: (usage) => usageEvents.push(usage),
|
|
293
|
+
})) {
|
|
294
|
+
// consume
|
|
295
|
+
}
|
|
296
|
+
expect(usageEvents.length).toBe(1);
|
|
297
|
+
expect(usageEvents[0].inputTokens).toBe(10);
|
|
298
|
+
expect(usageEvents[0].outputTokens).toBe(5);
|
|
299
|
+
expect(usageEvents[0].turnNumber).toBe(1);
|
|
300
|
+
});
|
|
301
|
+
it('syncs messages back to session after execution', async () => {
|
|
302
|
+
const mgr = new StandaloneSessionManager({ logger, store });
|
|
303
|
+
const session = mgr.create(makeCreateOpts({
|
|
304
|
+
provider: streamingProvider('Response text'),
|
|
305
|
+
}));
|
|
306
|
+
expect(session.messages).toHaveLength(0);
|
|
307
|
+
for await (const _event of mgr.runMessage(session.id, 'Hello')) {
|
|
308
|
+
// consume
|
|
309
|
+
}
|
|
310
|
+
// Should have user + assistant messages
|
|
311
|
+
expect(session.messages.length).toBeGreaterThanOrEqual(2);
|
|
312
|
+
});
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
//# sourceMappingURL=manager.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.test.js","sourceRoot":"","sources":["../../../src/session/manager.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import type { AgentBundle, CustomToolExecutor, StoreBackend } from '@amodalai/types';
|
|
7
|
+
import type { McpManager, AdminAgentContent, FieldScrubber } from '@amodalai/core';
|
|
8
|
+
import type { LLMProvider } from '../providers/types.js';
|
|
9
|
+
import type { ToolRegistry, ToolContext } from '../tools/types.js';
|
|
10
|
+
import type { PermissionChecker } from '../security/permission-checker.js';
|
|
11
|
+
import { DISPATCH_TOOL_NAME } from '../tools/dispatch-tool.js';
|
|
12
|
+
import type { Logger } from '../logger.js';
|
|
13
|
+
/** Session type determines which content and tools are available. */
|
|
14
|
+
export type SessionType = 'chat' | 'admin' | 'automation';
|
|
15
|
+
/** Components needed to create a session via StandaloneSessionManager. */
|
|
16
|
+
export interface SessionComponents {
|
|
17
|
+
provider: LLMProvider;
|
|
18
|
+
toolRegistry: ToolRegistry;
|
|
19
|
+
permissionChecker: PermissionChecker;
|
|
20
|
+
systemPrompt: string;
|
|
21
|
+
toolContextFactory: (callId: string) => ToolContext;
|
|
22
|
+
userRoles: string[];
|
|
23
|
+
}
|
|
24
|
+
/** Options for building session components. */
|
|
25
|
+
export interface BuildSessionComponentsOptions {
|
|
26
|
+
/** The agent bundle (repo config). */
|
|
27
|
+
bundle: AgentBundle;
|
|
28
|
+
/** Shared store backend (lifecycle managed by the server). */
|
|
29
|
+
storeBackend: StoreBackend | null;
|
|
30
|
+
/** Shared MCP manager (lifecycle managed by the server). */
|
|
31
|
+
mcpManager: McpManager | null;
|
|
32
|
+
/** Session type — determines which content and tools are available. */
|
|
33
|
+
sessionType?: SessionType;
|
|
34
|
+
/** User roles for permission checks and field guidance. */
|
|
35
|
+
userRoles?: string[];
|
|
36
|
+
/** Pinned model override (takes precedence over bundle config). */
|
|
37
|
+
pinnedModel?: {
|
|
38
|
+
provider: string;
|
|
39
|
+
model: string;
|
|
40
|
+
};
|
|
41
|
+
/** Logger instance. */
|
|
42
|
+
logger: Logger;
|
|
43
|
+
/** App ID for store isolation (default: 'local'). */
|
|
44
|
+
appId?: string;
|
|
45
|
+
/** Custom tool executor for running compiled tool handlers. */
|
|
46
|
+
toolExecutor?: CustomToolExecutor;
|
|
47
|
+
/** Admin agent content (required when sessionType is 'admin'). */
|
|
48
|
+
adminContent?: AdminAgentContent;
|
|
49
|
+
/** Repo root path (required when sessionType is 'admin' for file tools). */
|
|
50
|
+
repoRoot?: string;
|
|
51
|
+
/** Callback to get the server port (for admin internal_api tool). */
|
|
52
|
+
getPort?: () => number | null;
|
|
53
|
+
/** Session ID for correlation in tool context (default: generated). */
|
|
54
|
+
sessionId?: string;
|
|
55
|
+
/** Tenant ID for multi-tenant isolation. */
|
|
56
|
+
tenantId?: string;
|
|
57
|
+
/** Optional field scrubber for response sanitization on ctx.request() */
|
|
58
|
+
fieldScrubber?: FieldScrubber;
|
|
59
|
+
}
|
|
60
|
+
declare const PRESENT_TOOL_NAME = "present";
|
|
61
|
+
declare const STOP_EXECUTION_TOOL_NAME = "stop_execution";
|
|
62
|
+
/**
|
|
63
|
+
* Build all session components from a bundle.
|
|
64
|
+
*
|
|
65
|
+
* This is the single entry point for translating repo config into runtime
|
|
66
|
+
* components. The caller (route handler or session manager) provides the
|
|
67
|
+
* bundle and shared resources; the builder returns everything needed to
|
|
68
|
+
* create a session.
|
|
69
|
+
*/
|
|
70
|
+
export declare function buildSessionComponents(opts: BuildSessionComponentsOptions): SessionComponents;
|
|
71
|
+
export { PRESENT_TOOL_NAME, STOP_EXECUTION_TOOL_NAME, DISPATCH_TOOL_NAME };
|