@amodalai/runtime 0.1.26 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/__fixtures__/README.md +88 -0
- package/dist/src/__fixtures__/e2e.test.js +211 -0
- package/dist/src/__fixtures__/e2e.test.js.map +1 -0
- package/dist/src/__fixtures__/smoke-agent/amodal.json +11 -0
- package/dist/src/__fixtures__/smoke-agent/automations/delivery-callback-test.json +9 -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 +1404 -0
- package/dist/src/__fixtures__/smoke.test.js.map +1 -0
- package/dist/src/__fixtures__/test-env.d.ts +27 -0
- package/dist/src/__fixtures__/test-env.js +64 -0
- package/dist/src/__fixtures__/test-env.js.map +1 -0
- package/dist/src/__fixtures__/test-helpers.d.ts +30 -0
- package/dist/src/__fixtures__/test-helpers.js +120 -0
- package/dist/src/__fixtures__/test-helpers.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 +22 -0
- package/dist/src/agent/agent-types.js.map +1 -1
- package/dist/src/agent/automation-bridge.d.ts +9 -0
- package/dist/src/agent/automation-bridge.js +26 -0
- package/dist/src/agent/automation-bridge.js.map +1 -1
- package/dist/src/agent/automation-bridge.test.js +63 -0
- package/dist/src/agent/automation-bridge.test.js.map +1 -1
- package/dist/src/agent/local-server.d.ts +1 -8
- package/dist/src/agent/local-server.js +398 -163
- package/dist/src/agent/local-server.js.map +1 -1
- package/dist/src/agent/local-server.test.js +14 -8
- package/dist/src/agent/local-server.test.js.map +1 -1
- package/dist/src/agent/loop-types.d.ts +254 -0
- package/dist/src/agent/loop-types.js +24 -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 +152 -0
- package/dist/src/agent/loop.js.map +1 -0
- package/dist/src/agent/loop.test.js +1594 -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/delivery-router.d.ts +68 -0
- package/dist/src/agent/proactive/delivery-router.js +337 -0
- package/dist/src/agent/proactive/delivery-router.js.map +1 -0
- package/dist/src/agent/{stores-e2e.test.d.ts → proactive/delivery-router.test.d.ts} +1 -1
- package/dist/src/agent/proactive/delivery-router.test.js +455 -0
- package/dist/src/agent/proactive/delivery-router.test.js.map +1 -0
- package/dist/src/agent/proactive/proactive-runner.d.ts +46 -8
- package/dist/src/agent/proactive/proactive-runner.js +67 -37
- 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 +73 -87
- package/dist/src/agent/proactive/proactive-runner.test.js.map +1 -1
- package/dist/src/agent/routes/admin-chat-abort.test.d.ts +6 -0
- package/dist/src/agent/routes/admin-chat-abort.test.js +206 -0
- package/dist/src/agent/routes/admin-chat-abort.test.js.map +1 -0
- package/dist/src/agent/routes/admin-chat.d.ts +15 -3
- package/dist/src/agent/routes/admin-chat.js +61 -18
- package/dist/src/agent/routes/admin-chat.js.map +1 -1
- package/dist/src/agent/routes/automations.js +5 -6
- 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 -12
- package/dist/src/agent/routes/evals.js.map +1 -1
- package/dist/src/agent/routes/files.js +7 -9
- 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 +31 -17
- 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 -12
- 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 -7
- 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 +68 -53
- package/dist/src/agent/routes/task.test.js.map +1 -1
- package/dist/src/agent/routes/webhooks.js +12 -3
- package/dist/src/agent/routes/webhooks.js.map +1 -1
- package/dist/src/agent/snapshot-server.d.ts +2 -22
- package/dist/src/agent/snapshot-server.js +48 -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 +260 -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 +79 -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 +285 -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 +452 -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 +169 -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 +450 -0
- package/dist/src/agent/states/thinking.js.map +1 -0
- package/dist/src/agent/token-estimate.d.ts +31 -0
- package/dist/src/agent/token-estimate.js +34 -0
- package/dist/src/agent/token-estimate.js.map +1 -0
- package/dist/src/agent/token-estimate.test.d.ts +6 -0
- package/dist/src/agent/token-estimate.test.js +44 -0
- package/dist/src/agent/token-estimate.test.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 +134 -0
- package/dist/src/api/create-agent.js.map +1 -0
- package/dist/src/api/types.d.ts +66 -0
- package/dist/src/api/types.js +7 -0
- package/dist/src/api/types.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/env-ref.d.ts +13 -0
- package/dist/src/env-ref.js +31 -0
- package/dist/src/env-ref.js.map +1 -0
- package/dist/src/env-ref.test.d.ts +6 -0
- package/dist/src/env-ref.test.js +34 -0
- package/dist/src/env-ref.test.js.map +1 -0
- package/dist/src/errors.d.ts +15 -0
- package/dist/src/errors.js +22 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/errors.test.js +2 -2
- package/dist/src/errors.test.js.map +1 -1
- package/dist/src/events/event-bus.d.ts +54 -0
- package/dist/src/events/event-bus.js +84 -0
- package/dist/src/events/event-bus.js.map +1 -0
- package/dist/src/events/event-bus.test.d.ts +6 -0
- package/dist/src/events/event-bus.test.js +112 -0
- package/dist/src/events/event-bus.test.js.map +1 -0
- package/dist/src/events/events-route.d.ts +36 -0
- package/dist/src/events/events-route.js +80 -0
- package/dist/src/events/events-route.js.map +1 -0
- package/dist/src/events/events-route.test.d.ts +6 -0
- package/dist/src/events/events-route.test.js +134 -0
- package/dist/src/events/events-route.test.js.map +1 -0
- package/dist/src/events/store-event-wrapper.d.ts +19 -0
- package/dist/src/events/store-event-wrapper.js +57 -0
- package/dist/src/events/store-event-wrapper.js.map +1 -0
- package/dist/src/events/store-event-wrapper.test.d.ts +6 -0
- package/dist/src/events/store-event-wrapper.test.js +91 -0
- package/dist/src/events/store-event-wrapper.test.js.map +1 -0
- package/dist/src/index.d.ts +33 -6
- package/dist/src/index.js +35 -21
- package/dist/src/index.js.map +1 -1
- package/dist/src/middleware/auth.d.ts +0 -2
- package/dist/src/middleware/auth.js.map +1 -1
- 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/search-provider.d.ts +64 -0
- package/dist/src/providers/search-provider.js +174 -0
- package/dist/src/providers/search-provider.js.map +1 -0
- package/dist/src/providers/types.d.ts +118 -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 +28 -10
- package/dist/src/routes/ai-stream.js +85 -41
- 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 +20 -4
- package/dist/src/routes/chat-stream.js +49 -29
- package/dist/src/routes/chat-stream.js.map +1 -1
- package/dist/src/routes/chat.d.ts +19 -4
- package/dist/src/routes/chat.js +62 -23
- 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 +77 -0
- package/dist/src/routes/session-resolver.js +109 -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 +207 -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 -4
- 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 +18 -11
- package/dist/src/server.js +46 -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 -144
- package/dist/src/server.test.js.map +1 -1
- package/dist/src/session/drizzle-session-store.d.ts +56 -0
- package/dist/src/session/drizzle-session-store.js +203 -0
- package/dist/src/session/drizzle-session-store.js.map +1 -0
- package/dist/src/session/manager.d.ts +101 -0
- package/dist/src/session/manager.js +394 -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 +309 -0
- package/dist/src/session/manager.test.js.map +1 -0
- package/dist/src/session/pglite-session-store.d.ts +23 -0
- package/dist/src/session/pglite-session-store.js +70 -0
- package/dist/src/session/pglite-session-store.js.map +1 -0
- package/dist/src/session/postgres-session-store.d.ts +44 -0
- package/dist/src/session/postgres-session-store.js +138 -0
- package/dist/src/session/postgres-session-store.js.map +1 -0
- package/dist/src/session/session-builder.d.ts +69 -0
- package/dist/src/session/session-builder.js +384 -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 +350 -0
- package/dist/src/session/session-builder.test.js.map +1 -0
- package/dist/src/session/session-store-selector.d.ts +49 -0
- package/dist/src/session/session-store-selector.js +60 -0
- package/dist/src/session/session-store-selector.js.map +1 -0
- package/dist/src/session/session-store-selector.test.d.ts +6 -0
- package/dist/src/session/session-store-selector.test.js +79 -0
- package/dist/src/session/session-store-selector.test.js.map +1 -0
- package/dist/src/session/store.d.ts +171 -0
- package/dist/src/session/store.js +155 -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 +423 -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 +61 -0
- package/dist/src/session/tool-context-factory.js +189 -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 +284 -0
- package/dist/src/session/tool-context-factory.test.js.map +1 -0
- package/dist/src/session/types.d.ts +195 -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 -239
- 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 +457 -0
- package/dist/src/stores/schema.js +59 -0
- package/dist/src/stores/schema.js.map +1 -0
- package/dist/src/tools/admin-file-tools.d.ts +42 -0
- package/dist/src/tools/admin-file-tools.js +714 -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 +521 -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 +243 -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/fetch-url-tool.d.ts +23 -0
- package/dist/src/tools/fetch-url-tool.js +333 -0
- package/dist/src/tools/fetch-url-tool.js.map +1 -0
- package/dist/src/tools/fetch-url-tool.test.d.ts +6 -0
- package/dist/src/tools/fetch-url-tool.test.js +228 -0
- package/dist/src/tools/fetch-url-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 +226 -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 +120 -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 +253 -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 +215 -0
- package/dist/src/tools/store-tools.test.js.map +1 -0
- package/dist/src/tools/types.d.ts +129 -0
- package/dist/src/tools/types.js +7 -0
- package/dist/src/tools/types.js.map +1 -0
- package/dist/src/tools/web-search-tool.d.ts +31 -0
- package/dist/src/tools/web-search-tool.js +170 -0
- package/dist/src/tools/web-search-tool.js.map +1 -0
- package/dist/src/tools/web-search-tool.test.d.ts +6 -0
- package/dist/src/tools/web-search-tool.test.js +153 -0
- package/dist/src/tools/web-search-tool.test.js.map +1 -0
- package/dist/src/tools/web-tools-shared.d.ts +21 -0
- package/dist/src/tools/web-tools-shared.js +32 -0
- package/dist/src/tools/web-tools-shared.js.map +1 -0
- package/dist/src/types.d.ts +40 -12
- package/dist/src/types.js +16 -2
- package/dist/src/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +27 -4
- package/dist/src/__tests__/sse-contract.test.js +0 -464
- package/dist/src/__tests__/sse-contract.test.js.map +0 -1
- package/dist/src/__tests__/tools.test.js +0 -583
- package/dist/src/__tests__/tools.test.js.map +0 -1
- 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.d.ts +0 -6
- 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/session-store.d.ts +0 -62
- package/dist/src/agent/session-store.js +0 -151
- package/dist/src/agent/session-store.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.d.ts +0 -6
- 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/admin-file-tools.d.ts +0 -136
- package/dist/src/session/admin-file-tools.js +0 -240
- package/dist/src/session/admin-file-tools.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 -455
- 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 -834
- package/dist/src/session/session-runner.test.js.map +0 -1
- /package/dist/src/{__tests__/sse-contract.test.d.ts → __fixtures__/e2e.test.d.ts} +0 -0
- /package/dist/src/{__tests__/tools.test.d.ts → __fixtures__/smoke.test.d.ts} +0 -0
- /package/dist/src/agent/{write-repo-file.test.d.ts → loop.test.d.ts} +0 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
import { describe, expect, it, vi } from 'vitest';
|
|
7
|
+
import { createWebSearchTool } from './web-search-tool.js';
|
|
8
|
+
import { ProviderError } from '../errors.js';
|
|
9
|
+
function makeCtx(overrides) {
|
|
10
|
+
return {
|
|
11
|
+
request: vi.fn(),
|
|
12
|
+
store: vi.fn(),
|
|
13
|
+
env: vi.fn(),
|
|
14
|
+
log: vi.fn(),
|
|
15
|
+
user: { roles: [] },
|
|
16
|
+
signal: AbortSignal.timeout(5000),
|
|
17
|
+
sessionId: 'test-session',
|
|
18
|
+
...overrides,
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
function makeProvider(result) {
|
|
22
|
+
return {
|
|
23
|
+
model: 'gemini-2.5-flash',
|
|
24
|
+
search: vi.fn().mockResolvedValue(result),
|
|
25
|
+
fetchUrl: vi.fn(),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
// Helper to execute the tool and get a typed result.
|
|
29
|
+
async function runTool(ctx, params) {
|
|
30
|
+
const tool = createWebSearchTool();
|
|
31
|
+
const raw = await tool.execute(params, ctx);
|
|
32
|
+
return raw;
|
|
33
|
+
}
|
|
34
|
+
describe('web_search tool', () => {
|
|
35
|
+
it('returns a friendly error when no searchProvider is configured', async () => {
|
|
36
|
+
const ctx = makeCtx();
|
|
37
|
+
const result = await runTool(ctx, { query: 'anything' });
|
|
38
|
+
expect(result.status).toBe('error');
|
|
39
|
+
expect(result.content).toContain('not configured');
|
|
40
|
+
expect(result.content).toContain('webTools');
|
|
41
|
+
});
|
|
42
|
+
it('formats synthesized answer with numbered source citations', async () => {
|
|
43
|
+
const provider = makeProvider({
|
|
44
|
+
text: 'Node.js 22 is the current LTS.',
|
|
45
|
+
sources: [
|
|
46
|
+
{ uri: 'https://nodejs.org/en/blog/release/v22.0.0', title: 'Node.js 22 Release' },
|
|
47
|
+
{ uri: 'https://en.wikipedia.org/wiki/Node.js' },
|
|
48
|
+
],
|
|
49
|
+
});
|
|
50
|
+
const ctx = makeCtx({ searchProvider: provider });
|
|
51
|
+
const result = await runTool(ctx, { query: 'latest node version' });
|
|
52
|
+
expect(result.status).toBe('ok');
|
|
53
|
+
expect(result.content).toContain('Node.js 22 is the current LTS.');
|
|
54
|
+
expect(result.content).toContain('[1] https://nodejs.org/en/blog/release/v22.0.0 — Node.js 22 Release');
|
|
55
|
+
expect(result.content).toContain('[2] https://en.wikipedia.org/wiki/Node.js');
|
|
56
|
+
expect(result.source_count).toBe(2);
|
|
57
|
+
});
|
|
58
|
+
it('notes when no sources were returned', async () => {
|
|
59
|
+
const provider = makeProvider({ text: 'Answer without sources.', sources: [] });
|
|
60
|
+
const ctx = makeCtx({ searchProvider: provider });
|
|
61
|
+
const result = await runTool(ctx, { query: 'something' });
|
|
62
|
+
expect(result.status).toBe('ok');
|
|
63
|
+
expect(result.content).toContain('(no sources cited)');
|
|
64
|
+
expect(result.source_count).toBe(0);
|
|
65
|
+
});
|
|
66
|
+
it('caps source list at max_results', async () => {
|
|
67
|
+
const sources = Array.from({ length: 8 }, (_, i) => ({ uri: `https://example.com/${String(i)}` }));
|
|
68
|
+
const provider = makeProvider({ text: 'answer', sources });
|
|
69
|
+
const ctx = makeCtx({ searchProvider: provider });
|
|
70
|
+
const result = await runTool(ctx, { query: 'q', max_results: 3 });
|
|
71
|
+
expect(result.source_count).toBe(3);
|
|
72
|
+
expect(result.content).toContain('[1]');
|
|
73
|
+
expect(result.content).toContain('[3]');
|
|
74
|
+
expect(result.content).not.toContain('[4]');
|
|
75
|
+
});
|
|
76
|
+
it('passes ctx.signal through to the provider', async () => {
|
|
77
|
+
const searchMock = vi.fn().mockResolvedValue({ text: 'x', sources: [] });
|
|
78
|
+
const provider = {
|
|
79
|
+
model: 'test',
|
|
80
|
+
search: searchMock,
|
|
81
|
+
fetchUrl: vi.fn(),
|
|
82
|
+
};
|
|
83
|
+
const signal = AbortSignal.timeout(1000);
|
|
84
|
+
const ctx = makeCtx({ searchProvider: provider, signal });
|
|
85
|
+
await runTool(ctx, { query: 'q' });
|
|
86
|
+
expect(searchMock).toHaveBeenCalledWith('q', { signal });
|
|
87
|
+
});
|
|
88
|
+
it('truncates very long output with a marker', async () => {
|
|
89
|
+
const huge = 'a'.repeat(50_000);
|
|
90
|
+
const provider = makeProvider({ text: huge, sources: [] });
|
|
91
|
+
const ctx = makeCtx({ searchProvider: provider });
|
|
92
|
+
const result = await runTool(ctx, { query: 'q' });
|
|
93
|
+
expect(result.status).toBe('ok');
|
|
94
|
+
expect(result.content.length).toBeLessThan(9_000); // 2000 tokens × 4 chars/token = 8000
|
|
95
|
+
expect(result.content).toContain('(truncated)');
|
|
96
|
+
});
|
|
97
|
+
describe('provider error classification (retry guidance)', () => {
|
|
98
|
+
function makeProviderErrorProvider(status) {
|
|
99
|
+
const err = new ProviderError('Grounded search failed', {
|
|
100
|
+
provider: 'google',
|
|
101
|
+
statusCode: status,
|
|
102
|
+
retryable: status >= 500,
|
|
103
|
+
});
|
|
104
|
+
return {
|
|
105
|
+
model: 'test',
|
|
106
|
+
search: vi.fn().mockRejectedValue(err),
|
|
107
|
+
fetchUrl: vi.fn(),
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
it('tells the agent NOT to retry on 401 (auth)', async () => {
|
|
111
|
+
const ctx = makeCtx({ searchProvider: makeProviderErrorProvider(401) });
|
|
112
|
+
const result = await runTool(ctx, { query: 'q' });
|
|
113
|
+
expect(result.status).toBe('error');
|
|
114
|
+
expect(result.content).toContain('DO NOT retry');
|
|
115
|
+
expect(result.content).toContain('GOOGLE_API_KEY');
|
|
116
|
+
expect(result.retryable).toBe(false);
|
|
117
|
+
});
|
|
118
|
+
it('tells the agent NOT to retry on 400 (bad key)', async () => {
|
|
119
|
+
const ctx = makeCtx({ searchProvider: makeProviderErrorProvider(400) });
|
|
120
|
+
const result = await runTool(ctx, { query: 'q' });
|
|
121
|
+
expect(result.content).toContain('DO NOT retry');
|
|
122
|
+
expect(result.retryable).toBe(false);
|
|
123
|
+
});
|
|
124
|
+
it('tells the agent NOT to retry on 429 (quota)', async () => {
|
|
125
|
+
const ctx = makeCtx({ searchProvider: makeProviderErrorProvider(429) });
|
|
126
|
+
const result = await runTool(ctx, { query: 'q' });
|
|
127
|
+
expect(result.content).toContain('rate-limited');
|
|
128
|
+
expect(result.content).toContain('DO NOT retry');
|
|
129
|
+
expect(result.retryable).toBe(false);
|
|
130
|
+
});
|
|
131
|
+
it('says retry is OK on 5xx (transient)', async () => {
|
|
132
|
+
const ctx = makeCtx({ searchProvider: makeProviderErrorProvider(503) });
|
|
133
|
+
const result = await runTool(ctx, { query: 'q' });
|
|
134
|
+
expect(result.content).toContain('transient');
|
|
135
|
+
expect(result.content).toContain('may retry');
|
|
136
|
+
expect(result.retryable).toBe(true);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
it('wraps unexpected (non-ProviderError) errors in ToolExecutionError', async () => {
|
|
140
|
+
const provider = {
|
|
141
|
+
model: 'test',
|
|
142
|
+
search: vi.fn().mockRejectedValue(new Error('boom')),
|
|
143
|
+
fetchUrl: vi.fn(),
|
|
144
|
+
};
|
|
145
|
+
const ctx = makeCtx({ searchProvider: provider });
|
|
146
|
+
const tool = createWebSearchTool();
|
|
147
|
+
await expect(tool.execute({ query: 'q' }, ctx)).rejects.toMatchObject({
|
|
148
|
+
name: 'ToolExecutionError',
|
|
149
|
+
toolName: 'web_search',
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
});
|
|
153
|
+
//# sourceMappingURL=web-search-tool.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-search-tool.test.js","sourceRoot":"","sources":["../../../src/tools/web-search-tool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Shared helpers for the `web_search` and `fetch_url` tools.
|
|
8
|
+
*
|
|
9
|
+
* - `MAX_WEB_TOOL_RESULT_TOKENS` — uniform 2000-token cap on tool output.
|
|
10
|
+
* - `truncateToTokens()` — token-estimate truncation using the 4 chars/token
|
|
11
|
+
* heuristic (matches `packages/runtime/src/agent/token-estimate.ts`).
|
|
12
|
+
*/
|
|
13
|
+
/** Max token budget for any single web-tool result, before truncation. */
|
|
14
|
+
export declare const MAX_WEB_TOOL_RESULT_TOKENS = 2000;
|
|
15
|
+
/**
|
|
16
|
+
* Truncate a string to fit within `maxTokens` tokens, using the same
|
|
17
|
+
* 4-chars-per-token heuristic the rest of the runtime uses. When the
|
|
18
|
+
* input fits, it is returned unchanged; otherwise it is trimmed and a
|
|
19
|
+
* truncation marker is appended so the model sees that content was cut.
|
|
20
|
+
*/
|
|
21
|
+
export declare function truncateToTokens(text: string, maxTokens: number): string;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Amodal Labs, Inc.
|
|
4
|
+
* SPDX-License-Identifier: MIT
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Shared helpers for the `web_search` and `fetch_url` tools.
|
|
8
|
+
*
|
|
9
|
+
* - `MAX_WEB_TOOL_RESULT_TOKENS` — uniform 2000-token cap on tool output.
|
|
10
|
+
* - `truncateToTokens()` — token-estimate truncation using the 4 chars/token
|
|
11
|
+
* heuristic (matches `packages/runtime/src/agent/token-estimate.ts`).
|
|
12
|
+
*/
|
|
13
|
+
/** Max token budget for any single web-tool result, before truncation. */
|
|
14
|
+
export const MAX_WEB_TOOL_RESULT_TOKENS = 2000;
|
|
15
|
+
/** Chars-per-token approximation — matches `estimateTokenCount()`. */
|
|
16
|
+
const CHARS_PER_TOKEN = 4;
|
|
17
|
+
/** Suffix appended when content is truncated, so the model knows it is clipped. */
|
|
18
|
+
const TRUNCATION_SUFFIX = '\n\n…(truncated)';
|
|
19
|
+
/**
|
|
20
|
+
* Truncate a string to fit within `maxTokens` tokens, using the same
|
|
21
|
+
* 4-chars-per-token heuristic the rest of the runtime uses. When the
|
|
22
|
+
* input fits, it is returned unchanged; otherwise it is trimmed and a
|
|
23
|
+
* truncation marker is appended so the model sees that content was cut.
|
|
24
|
+
*/
|
|
25
|
+
export function truncateToTokens(text, maxTokens) {
|
|
26
|
+
const maxChars = maxTokens * CHARS_PER_TOKEN;
|
|
27
|
+
if (text.length <= maxChars)
|
|
28
|
+
return text;
|
|
29
|
+
const roomForSuffix = Math.max(0, maxChars - TRUNCATION_SUFFIX.length);
|
|
30
|
+
return text.slice(0, roomForSuffix) + TRUNCATION_SUFFIX;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=web-tools-shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-tools-shared.js","sourceRoot":"","sources":["../../../src/tools/web-tools-shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AAEH,0EAA0E;AAC1E,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAE/C,sEAAsE;AACtE,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B,mFAAmF;AACnF,MAAM,iBAAiB,GAAG,kBAAkB,CAAC;AAE7C;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,SAAiB;IAC9D,MAAM,QAAQ,GAAG,SAAS,GAAG,eAAe,CAAC;IAC7C,IAAI,IAAI,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,GAAG,iBAAiB,CAAC;AAC1D,CAAC"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* SPDX-License-Identifier: MIT
|
|
5
5
|
*/
|
|
6
6
|
import { z } from 'zod';
|
|
7
|
-
import type { AutomationDefinition
|
|
7
|
+
import type { AutomationDefinition } from '@amodalai/core';
|
|
8
8
|
export declare const ChatRequestSchema: z.ZodObject<{
|
|
9
9
|
/** The user message to send to the agent */
|
|
10
10
|
message: z.ZodString;
|
|
@@ -13,21 +13,36 @@ export declare const ChatRequestSchema: z.ZodObject<{
|
|
|
13
13
|
/** Optional role override for this session */
|
|
14
14
|
role: z.ZodOptional<z.ZodString>;
|
|
15
15
|
/** Optional session type — controls which skills, tools, KB docs load */
|
|
16
|
-
session_type: z.ZodOptional<z.
|
|
16
|
+
session_type: z.ZodOptional<z.ZodEnum<["chat", "admin", "automation"]>>;
|
|
17
17
|
/** Optional deployment ID — load a specific snapshot instead of the active one */
|
|
18
18
|
deploy_id: z.ZodOptional<z.ZodString>;
|
|
19
|
+
/**
|
|
20
|
+
* Optional session-wide **token** budget cap (not dollars; cost varies
|
|
21
|
+
* by model). When cumulative usage reaches this value the loop
|
|
22
|
+
* terminates with `reason: 'budget_exceeded'`. Absent = no cap.
|
|
23
|
+
*
|
|
24
|
+
* This is a **soft ceiling** — the check runs after each turn, so a
|
|
25
|
+
* single in-flight turn can overshoot by up to `maxOutputTokens` +
|
|
26
|
+
* tool result sizes. Size the cap ~20% below your hard limit.
|
|
27
|
+
*
|
|
28
|
+
* Distinct from the LLM-API `max_tokens` (per-call output cap) —
|
|
29
|
+
* this is a session-wide cumulative total across all turns.
|
|
30
|
+
*/
|
|
31
|
+
max_session_tokens: z.ZodOptional<z.ZodNumber>;
|
|
19
32
|
}, "strip", z.ZodTypeAny, {
|
|
20
33
|
message: string;
|
|
21
34
|
session_id?: string | undefined;
|
|
22
35
|
role?: string | undefined;
|
|
23
|
-
session_type?:
|
|
36
|
+
session_type?: "chat" | "admin" | "automation" | undefined;
|
|
24
37
|
deploy_id?: string | undefined;
|
|
38
|
+
max_session_tokens?: number | undefined;
|
|
25
39
|
}, {
|
|
26
40
|
message: string;
|
|
27
41
|
session_id?: string | undefined;
|
|
28
42
|
role?: string | undefined;
|
|
29
|
-
session_type?:
|
|
43
|
+
session_type?: "chat" | "admin" | "automation" | undefined;
|
|
30
44
|
deploy_id?: string | undefined;
|
|
45
|
+
max_session_tokens?: number | undefined;
|
|
31
46
|
}>;
|
|
32
47
|
export type ChatRequest = z.infer<typeof ChatRequestSchema>;
|
|
33
48
|
export declare const WebhookPayloadSchema: z.ZodObject<{
|
|
@@ -75,12 +90,13 @@ export declare enum SSEEventType {
|
|
|
75
90
|
KBProposal = "kb_proposal",
|
|
76
91
|
CredentialSaved = "credential_saved",
|
|
77
92
|
Approved = "approved",
|
|
78
|
-
AskUser = "ask_user",
|
|
79
93
|
ExploreStart = "explore_start",
|
|
80
94
|
ExploreEnd = "explore_end",
|
|
81
95
|
PlanMode = "plan_mode",
|
|
82
96
|
FieldScrub = "field_scrub",
|
|
83
97
|
ConfirmationRequired = "confirmation_required",
|
|
98
|
+
CompactionStart = "compaction_start",
|
|
99
|
+
CompactionEnd = "compaction_end",
|
|
84
100
|
ToolLog = "tool_log",
|
|
85
101
|
Error = "error",
|
|
86
102
|
Done = "done"
|
|
@@ -160,15 +176,14 @@ export interface SSEApprovedEvent {
|
|
|
160
176
|
preview_id: string;
|
|
161
177
|
timestamp: string;
|
|
162
178
|
}
|
|
163
|
-
export interface SSEAskUserEvent {
|
|
164
|
-
type: SSEEventType.AskUser;
|
|
165
|
-
ask_id: string;
|
|
166
|
-
questions: Question[];
|
|
167
|
-
timestamp: string;
|
|
168
|
-
}
|
|
169
179
|
export interface SSEDoneEvent {
|
|
170
180
|
type: SSEEventType.Done;
|
|
171
181
|
timestamp: string;
|
|
182
|
+
/**
|
|
183
|
+
* Why the loop stopped. Consumers use this to distinguish normal
|
|
184
|
+
* termination from enforced caps (budget, turns, loop detection).
|
|
185
|
+
*/
|
|
186
|
+
reason?: 'model_stop' | 'max_turns' | 'user_abort' | 'error' | 'budget_exceeded' | 'loop_detected';
|
|
172
187
|
usage?: {
|
|
173
188
|
input_tokens: number;
|
|
174
189
|
output_tokens: number;
|
|
@@ -209,7 +224,20 @@ export interface SSEConfirmationRequiredEvent {
|
|
|
209
224
|
escalated: boolean;
|
|
210
225
|
timestamp: string;
|
|
211
226
|
}
|
|
212
|
-
export
|
|
227
|
+
export interface SSECompactionStartEvent {
|
|
228
|
+
type: SSEEventType.CompactionStart;
|
|
229
|
+
estimated_tokens: number;
|
|
230
|
+
threshold: number;
|
|
231
|
+
timestamp: string;
|
|
232
|
+
}
|
|
233
|
+
export interface SSECompactionEndEvent {
|
|
234
|
+
type: SSEEventType.CompactionEnd;
|
|
235
|
+
tokens_before: number;
|
|
236
|
+
tokens_after: number;
|
|
237
|
+
compaction_tokens: number;
|
|
238
|
+
timestamp: string;
|
|
239
|
+
}
|
|
240
|
+
export type SSEEvent = SSEInitEvent | SSETextDeltaEvent | SSEToolCallStartEvent | SSEToolCallResultEvent | SSESubagentEvent | SSESkillActivatedEvent | SSEWidgetEvent | SSEKBProposalEvent | SSECredentialSavedEvent | SSEApprovedEvent | SSEExploreStartEvent | SSEExploreEndEvent | SSEPlanModeEvent | SSEFieldScrubEvent | SSEConfirmationRequiredEvent | SSECompactionStartEvent | SSECompactionEndEvent | SSEToolLogEvent | SSEErrorEvent | SSEDoneEvent;
|
|
213
241
|
export interface SSEToolLogEvent {
|
|
214
242
|
type: SSEEventType.ToolLog;
|
|
215
243
|
tool_name: string;
|
package/dist/src/types.js
CHANGED
|
@@ -15,9 +15,22 @@ export const ChatRequestSchema = z.object({
|
|
|
15
15
|
/** Optional role override for this session */
|
|
16
16
|
role: z.string().optional(),
|
|
17
17
|
/** Optional session type — controls which skills, tools, KB docs load */
|
|
18
|
-
session_type: z.
|
|
18
|
+
session_type: z.enum(['chat', 'admin', 'automation']).optional(),
|
|
19
19
|
/** Optional deployment ID — load a specific snapshot instead of the active one */
|
|
20
20
|
deploy_id: z.string().optional(),
|
|
21
|
+
/**
|
|
22
|
+
* Optional session-wide **token** budget cap (not dollars; cost varies
|
|
23
|
+
* by model). When cumulative usage reaches this value the loop
|
|
24
|
+
* terminates with `reason: 'budget_exceeded'`. Absent = no cap.
|
|
25
|
+
*
|
|
26
|
+
* This is a **soft ceiling** — the check runs after each turn, so a
|
|
27
|
+
* single in-flight turn can overshoot by up to `maxOutputTokens` +
|
|
28
|
+
* tool result sizes. Size the cap ~20% below your hard limit.
|
|
29
|
+
*
|
|
30
|
+
* Distinct from the LLM-API `max_tokens` (per-call output cap) —
|
|
31
|
+
* this is a session-wide cumulative total across all turns.
|
|
32
|
+
*/
|
|
33
|
+
max_session_tokens: z.number().int().positive().optional(),
|
|
21
34
|
});
|
|
22
35
|
export const WebhookPayloadSchema = z.object({
|
|
23
36
|
/** Optional event data passed to the automation prompt */
|
|
@@ -38,12 +51,13 @@ export var SSEEventType;
|
|
|
38
51
|
SSEEventType["KBProposal"] = "kb_proposal";
|
|
39
52
|
SSEEventType["CredentialSaved"] = "credential_saved";
|
|
40
53
|
SSEEventType["Approved"] = "approved";
|
|
41
|
-
SSEEventType["AskUser"] = "ask_user";
|
|
42
54
|
SSEEventType["ExploreStart"] = "explore_start";
|
|
43
55
|
SSEEventType["ExploreEnd"] = "explore_end";
|
|
44
56
|
SSEEventType["PlanMode"] = "plan_mode";
|
|
45
57
|
SSEEventType["FieldScrub"] = "field_scrub";
|
|
46
58
|
SSEEventType["ConfirmationRequired"] = "confirmation_required";
|
|
59
|
+
SSEEventType["CompactionStart"] = "compaction_start";
|
|
60
|
+
SSEEventType["CompactionEnd"] = "compaction_end";
|
|
47
61
|
SSEEventType["ToolLog"] = "tool_log";
|
|
48
62
|
SSEEventType["Error"] = "error";
|
|
49
63
|
SSEEventType["Done"] = "done";
|
package/dist/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,4CAA4C;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,qDAAqD;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,8CAA8C;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,4CAA4C;IAC5C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,qDAAqD;IACrD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,8CAA8C;IAC9C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,yEAAyE;IACzE,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChE,kFAAkF;IAClF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC;;;;;;;;;;;OAWG;IACH,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CAC3D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,0DAA0D;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CACvC,CAAC,CAAC;AAoCH,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,CAAN,IAAY,YAqBX;AArBD,WAAY,YAAY;IACtB,6BAAa,CAAA;IACb,wCAAwB,CAAA;IACxB,iDAAiC,CAAA;IACjC,mDAAmC,CAAA;IACnC,gDAAgC,CAAA;IAChC,kDAAkC,CAAA;IAClC,iCAAiB,CAAA;IACjB,0CAA0B,CAAA;IAC1B,oDAAoC,CAAA;IACpC,qCAAqB,CAAA;IACrB,8CAA8B,CAAA;IAC9B,0CAA0B,CAAA;IAC1B,sCAAsB,CAAA;IACtB,0CAA0B,CAAA;IAC1B,8DAA8C,CAAA;IAC9C,oDAAoC,CAAA;IACpC,gDAAgC,CAAA;IAChC,oCAAoB,CAAA;IACpB,+BAAe,CAAA;IACf,6BAAa,CAAA;AACf,CAAC,EArBW,YAAY,KAAZ,YAAY,QAqBvB"}
|