@ixo/oracle-runtime 0.0.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/bootstrap/ambient-factory.d.ts +32 -0
- package/dist/bootstrap/ambient-factory.d.ts.map +1 -0
- package/dist/bootstrap/ambient-factory.js +128 -0
- package/dist/bootstrap/create-oracle-app.d.ts +112 -0
- package/dist/bootstrap/create-oracle-app.d.ts.map +1 -0
- package/dist/bootstrap/create-oracle-app.js +530 -0
- package/dist/bootstrap/graceful-shutdown.d.ts +20 -0
- package/dist/bootstrap/graceful-shutdown.d.ts.map +1 -0
- package/dist/bootstrap/graceful-shutdown.js +61 -0
- package/dist/bootstrap/index.d.ts +13 -0
- package/dist/bootstrap/index.d.ts.map +1 -0
- package/dist/bootstrap/index.js +6 -0
- package/dist/bootstrap/inspect.d.ts +74 -0
- package/dist/bootstrap/inspect.d.ts.map +1 -0
- package/dist/bootstrap/inspect.js +111 -0
- package/dist/bootstrap/plugin-loader.d.ts +50 -0
- package/dist/bootstrap/plugin-loader.d.ts.map +1 -0
- package/dist/bootstrap/plugin-loader.js +119 -0
- package/dist/bootstrap/runtime-app-module.d.ts +38 -0
- package/dist/bootstrap/runtime-app-module.d.ts.map +1 -0
- package/dist/bootstrap/runtime-app-module.js +114 -0
- package/dist/bootstrap/schema-composer.d.ts +46 -0
- package/dist/bootstrap/schema-composer.d.ts.map +1 -0
- package/dist/bootstrap/schema-composer.js +65 -0
- package/dist/config/base-env-config.d.ts +31 -0
- package/dist/config/base-env-config.d.ts.map +1 -0
- package/dist/config/base-env-config.js +70 -0
- package/dist/config/base-env-schema.d.ts +77 -0
- package/dist/config/base-env-schema.d.ts.map +1 -0
- package/dist/config/base-env-schema.js +102 -0
- package/dist/events/scoped-emitter.d.ts +33 -0
- package/dist/events/scoped-emitter.d.ts.map +1 -0
- package/dist/events/scoped-emitter.js +32 -0
- package/dist/graph/index.d.ts +8 -0
- package/dist/graph/index.d.ts.map +1 -0
- package/dist/graph/index.js +6 -0
- package/dist/graph/main-agent-types.d.ts +88 -0
- package/dist/graph/main-agent-types.d.ts.map +1 -0
- package/dist/graph/main-agent-types.js +20 -0
- package/dist/graph/main-agent.d.ts +16 -0
- package/dist/graph/main-agent.d.ts.map +1 -0
- package/dist/graph/main-agent.js +251 -0
- package/dist/graph/middlewares/capability-gate-middleware.d.ts +35 -0
- package/dist/graph/middlewares/capability-gate-middleware.d.ts.map +1 -0
- package/dist/graph/middlewares/capability-gate-middleware.js +54 -0
- package/dist/graph/middlewares/index.d.ts +7 -0
- package/dist/graph/middlewares/index.d.ts.map +1 -0
- package/dist/graph/middlewares/index.js +6 -0
- package/dist/graph/middlewares/page-context-middleware.d.ts +23 -0
- package/dist/graph/middlewares/page-context-middleware.d.ts.map +1 -0
- package/dist/graph/middlewares/page-context-middleware.js +68 -0
- package/dist/graph/middlewares/safety-guardrail-middleware.d.ts +26 -0
- package/dist/graph/middlewares/safety-guardrail-middleware.d.ts.map +1 -0
- package/dist/graph/middlewares/safety-guardrail-middleware.js +88 -0
- package/dist/graph/middlewares/summarization-middleware.d.ts +17 -0
- package/dist/graph/middlewares/summarization-middleware.d.ts.map +1 -0
- package/dist/graph/middlewares/summarization-middleware.js +62 -0
- package/dist/graph/middlewares/tool-repetition-guard-middleware.d.ts +24 -0
- package/dist/graph/middlewares/tool-repetition-guard-middleware.d.ts.map +1 -0
- package/dist/graph/middlewares/tool-repetition-guard-middleware.js +112 -0
- package/dist/graph/middlewares/tool-validation-middleware.d.ts +24 -0
- package/dist/graph/middlewares/tool-validation-middleware.d.ts.map +1 -0
- package/dist/graph/middlewares/tool-validation-middleware.js +61 -0
- package/dist/graph/prompt-composer.d.ts +69 -0
- package/dist/graph/prompt-composer.d.ts.map +1 -0
- package/dist/graph/prompt-composer.js +315 -0
- package/dist/graph/state.d.ts +65 -0
- package/dist/graph/state.d.ts.map +1 -0
- package/dist/graph/state.js +60 -0
- package/dist/graph/sub-agent-fallback.d.ts +56 -0
- package/dist/graph/sub-agent-fallback.d.ts.map +1 -0
- package/dist/graph/sub-agent-fallback.js +79 -0
- package/dist/graph/subagent-as-tool.d.ts +77 -0
- package/dist/graph/subagent-as-tool.d.ts.map +1 -0
- package/dist/graph/subagent-as-tool.js +197 -0
- package/dist/graph/wrap-plugin-tool.d.ts +28 -0
- package/dist/graph/wrap-plugin-tool.d.ts.map +1 -0
- package/dist/graph/wrap-plugin-tool.js +30 -0
- package/dist/index.d.ts +33 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/llm/index.d.ts +2 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +1 -0
- package/dist/llm/llm-provider.d.ts +41 -0
- package/dist/llm/llm-provider.d.ts.map +1 -0
- package/dist/llm/llm-provider.js +130 -0
- package/dist/manifest/index.d.ts +6 -0
- package/dist/manifest/index.d.ts.map +1 -0
- package/dist/manifest/index.js +3 -0
- package/dist/manifest/schema.d.ts +31 -0
- package/dist/manifest/schema.d.ts.map +1 -0
- package/dist/manifest/schema.js +44 -0
- package/dist/manifest/tier1-renderer.d.ts +31 -0
- package/dist/manifest/tier1-renderer.d.ts.map +1 -0
- package/dist/manifest/tier1-renderer.js +68 -0
- package/dist/manifest/validator.d.ts +34 -0
- package/dist/manifest/validator.d.ts.map +1 -0
- package/dist/manifest/validator.js +111 -0
- package/dist/matrix/checkpointer/matrix-upload-utils.d.ts +66 -0
- package/dist/matrix/checkpointer/matrix-upload-utils.d.ts.map +1 -0
- package/dist/matrix/checkpointer/matrix-upload-utils.js +228 -0
- package/dist/matrix/checkpointer/type.d.ts +4 -0
- package/dist/matrix/checkpointer/type.d.ts.map +1 -0
- package/dist/matrix/checkpointer/type.js +1 -0
- package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.module.d.ts +3 -0
- package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.module.d.ts.map +1 -0
- package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.module.js +22 -0
- package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.service.d.ts +93 -0
- package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.service.d.ts.map +1 -0
- package/dist/matrix/checkpointer/user-matrix-sqlite-sync-service.service.js +856 -0
- package/dist/matrix/room-membership.d.ts +11 -0
- package/dist/matrix/room-membership.d.ts.map +1 -0
- package/dist/matrix/room-membership.js +33 -0
- package/dist/meta-tools/index.d.ts +28 -0
- package/dist/meta-tools/index.d.ts.map +1 -0
- package/dist/meta-tools/index.js +24 -0
- package/dist/meta-tools/list-capabilities.d.ts +12 -0
- package/dist/meta-tools/list-capabilities.d.ts.map +1 -0
- package/dist/meta-tools/list-capabilities.js +55 -0
- package/dist/meta-tools/load-capability.d.ts +24 -0
- package/dist/meta-tools/load-capability.d.ts.map +1 -0
- package/dist/meta-tools/load-capability.js +82 -0
- package/dist/modules/auth/auth-header.middleware.d.ts +37 -0
- package/dist/modules/auth/auth-header.middleware.d.ts.map +1 -0
- package/dist/modules/auth/auth-header.middleware.js +115 -0
- package/dist/modules/auth/auth.module.d.ts +9 -0
- package/dist/modules/auth/auth.module.d.ts.map +1 -0
- package/dist/modules/auth/auth.module.js +27 -0
- package/dist/modules/auth/index.d.ts +3 -0
- package/dist/modules/auth/index.d.ts.map +1 -0
- package/dist/modules/auth/index.js +2 -0
- package/dist/modules/auth/validate-ucan-delegation.d.ts +31 -0
- package/dist/modules/auth/validate-ucan-delegation.d.ts.map +1 -0
- package/dist/modules/auth/validate-ucan-delegation.js +36 -0
- package/dist/modules/blob-store/blob-store.module.d.ts +10 -0
- package/dist/modules/blob-store/blob-store.module.d.ts.map +1 -0
- package/dist/modules/blob-store/blob-store.module.js +25 -0
- package/dist/modules/blob-store/blob-store.service.d.ts +66 -0
- package/dist/modules/blob-store/blob-store.service.d.ts.map +1 -0
- package/dist/modules/blob-store/blob-store.service.js +108 -0
- package/dist/modules/blob-store/index.d.ts +3 -0
- package/dist/modules/blob-store/index.d.ts.map +1 -0
- package/dist/modules/blob-store/index.js +2 -0
- package/dist/modules/health/health.controller.d.ts +18 -0
- package/dist/modules/health/health.controller.d.ts.map +1 -0
- package/dist/modules/health/health.controller.js +48 -0
- package/dist/modules/health/health.module.d.ts +8 -0
- package/dist/modules/health/health.module.d.ts.map +1 -0
- package/dist/modules/health/health.module.js +21 -0
- package/dist/modules/index.d.ts +8 -0
- package/dist/modules/index.d.ts.map +1 -0
- package/dist/modules/index.js +6 -0
- package/dist/modules/messages/__test-fixtures__/deps.d.ts +41 -0
- package/dist/modules/messages/__test-fixtures__/deps.d.ts.map +1 -0
- package/dist/modules/messages/__test-fixtures__/deps.js +73 -0
- package/dist/modules/messages/__test-fixtures__/fake-agent.d.ts +27 -0
- package/dist/modules/messages/__test-fixtures__/fake-agent.d.ts.map +1 -0
- package/dist/modules/messages/__test-fixtures__/fake-agent.js +41 -0
- package/dist/modules/messages/__test-fixtures__/fake-response.d.ts +29 -0
- package/dist/modules/messages/__test-fixtures__/fake-response.d.ts.map +1 -0
- package/dist/modules/messages/__test-fixtures__/fake-response.js +55 -0
- package/dist/modules/messages/agent-builder.d.ts +64 -0
- package/dist/modules/messages/agent-builder.d.ts.map +1 -0
- package/dist/modules/messages/agent-builder.js +219 -0
- package/dist/modules/messages/batch-invoker.d.ts +36 -0
- package/dist/modules/messages/batch-invoker.d.ts.map +1 -0
- package/dist/modules/messages/batch-invoker.js +58 -0
- package/dist/modules/messages/dto/list-messages.dto.d.ts +4 -0
- package/dist/modules/messages/dto/list-messages.dto.d.ts.map +1 -0
- package/dist/modules/messages/dto/list-messages.dto.js +17 -0
- package/dist/modules/messages/dto/send-message.dto.d.ts +73 -0
- package/dist/modules/messages/dto/send-message.dto.d.ts.map +1 -0
- package/dist/modules/messages/dto/send-message.dto.js +318 -0
- package/dist/modules/messages/file-processing-credit-sink.port.d.ts +20 -0
- package/dist/modules/messages/file-processing-credit-sink.port.d.ts.map +1 -0
- package/dist/modules/messages/file-processing-credit-sink.port.js +1 -0
- package/dist/modules/messages/file-processing.service.d.ts +195 -0
- package/dist/modules/messages/file-processing.service.d.ts.map +1 -0
- package/dist/modules/messages/file-processing.service.js +1278 -0
- package/dist/modules/messages/homeserver-cache.d.ts +11 -0
- package/dist/modules/messages/homeserver-cache.d.ts.map +1 -0
- package/dist/modules/messages/homeserver-cache.js +31 -0
- package/dist/modules/messages/matrix-listener-bridge.d.ts +63 -0
- package/dist/modules/messages/matrix-listener-bridge.d.ts.map +1 -0
- package/dist/modules/messages/matrix-listener-bridge.js +280 -0
- package/dist/modules/messages/messages.controller.d.ts +13 -0
- package/dist/modules/messages/messages.controller.d.ts.map +1 -0
- package/dist/modules/messages/messages.controller.js +95 -0
- package/dist/modules/messages/messages.module.d.ts +3 -0
- package/dist/modules/messages/messages.module.d.ts.map +1 -0
- package/dist/modules/messages/messages.module.js +75 -0
- package/dist/modules/messages/messages.service.d.ts +112 -0
- package/dist/modules/messages/messages.service.d.ts.map +1 -0
- package/dist/modules/messages/messages.service.js +279 -0
- package/dist/modules/messages/oracle-runtime-bundle.d.ts +38 -0
- package/dist/modules/messages/oracle-runtime-bundle.d.ts.map +1 -0
- package/dist/modules/messages/oracle-runtime-bundle.js +40 -0
- package/dist/modules/messages/post-message-syncer.d.ts +30 -0
- package/dist/modules/messages/post-message-syncer.d.ts.map +1 -0
- package/dist/modules/messages/post-message-syncer.js +73 -0
- package/dist/modules/messages/request-preparer.d.ts +53 -0
- package/dist/modules/messages/request-preparer.d.ts.map +1 -0
- package/dist/modules/messages/request-preparer.js +139 -0
- package/dist/modules/messages/sse-stream-runner.d.ts +73 -0
- package/dist/modules/messages/sse-stream-runner.d.ts.map +1 -0
- package/dist/modules/messages/sse-stream-runner.js +352 -0
- package/dist/modules/messages/sse.utils.d.ts +29 -0
- package/dist/modules/messages/sse.utils.d.ts.map +1 -0
- package/dist/modules/messages/sse.utils.js +77 -0
- package/dist/modules/messages/user-context-fetcher.d.ts +41 -0
- package/dist/modules/messages/user-context-fetcher.d.ts.map +1 -0
- package/dist/modules/messages/user-context-fetcher.js +117 -0
- package/dist/modules/secrets/index.d.ts +2 -0
- package/dist/modules/secrets/index.d.ts.map +1 -0
- package/dist/modules/secrets/index.js +1 -0
- package/dist/modules/secrets/secrets.service.d.ts +29 -0
- package/dist/modules/secrets/secrets.service.d.ts.map +1 -0
- package/dist/modules/secrets/secrets.service.js +107 -0
- package/dist/modules/sessions/dto/create-session.dto.d.ts +6 -0
- package/dist/modules/sessions/dto/create-session.dto.d.ts.map +1 -0
- package/dist/modules/sessions/dto/create-session.dto.js +5 -0
- package/dist/modules/sessions/dto/delete-session.dto.d.ts +6 -0
- package/dist/modules/sessions/dto/delete-session.dto.d.ts.map +1 -0
- package/dist/modules/sessions/dto/delete-session.dto.js +5 -0
- package/dist/modules/sessions/dto/list-sessions.dto.d.ts +7 -0
- package/dist/modules/sessions/dto/list-sessions.dto.d.ts.map +1 -0
- package/dist/modules/sessions/dto/list-sessions.dto.js +6 -0
- package/dist/modules/sessions/session-history-processor.service.d.ts +48 -0
- package/dist/modules/sessions/session-history-processor.service.d.ts.map +1 -0
- package/dist/modules/sessions/session-history-processor.service.js +254 -0
- package/dist/modules/sessions/sessions.controller.d.ts +13 -0
- package/dist/modules/sessions/sessions.controller.d.ts.map +1 -0
- package/dist/modules/sessions/sessions.controller.js +113 -0
- package/dist/modules/sessions/sessions.module.d.ts +3 -0
- package/dist/modules/sessions/sessions.module.d.ts.map +1 -0
- package/dist/modules/sessions/sessions.module.js +49 -0
- package/dist/modules/sessions/sessions.service.d.ts +23 -0
- package/dist/modules/sessions/sessions.service.d.ts.map +1 -0
- package/dist/modules/sessions/sessions.service.js +168 -0
- package/dist/modules/subscription/subscription.middleware.d.ts +37 -0
- package/dist/modules/subscription/subscription.middleware.d.ts.map +1 -0
- package/dist/modules/subscription/subscription.middleware.js +141 -0
- package/dist/modules/subscription/subscription.module.d.ts +12 -0
- package/dist/modules/subscription/subscription.module.d.ts.map +1 -0
- package/dist/modules/subscription/subscription.module.js +26 -0
- package/dist/modules/throttler/throttler.module.d.ts +11 -0
- package/dist/modules/throttler/throttler.module.d.ts.map +1 -0
- package/dist/modules/throttler/throttler.module.js +32 -0
- package/dist/modules/ucan/index.d.ts +7 -0
- package/dist/modules/ucan/index.d.ts.map +1 -0
- package/dist/modules/ucan/index.js +6 -0
- package/dist/modules/ucan/ucan.config.d.ts +87 -0
- package/dist/modules/ucan/ucan.config.d.ts.map +1 -0
- package/dist/modules/ucan/ucan.config.js +114 -0
- package/dist/modules/ucan/ucan.module.d.ts +29 -0
- package/dist/modules/ucan/ucan.module.d.ts.map +1 -0
- package/dist/modules/ucan/ucan.module.js +46 -0
- package/dist/modules/ucan/ucan.service.d.ts +129 -0
- package/dist/modules/ucan/ucan.service.d.ts.map +1 -0
- package/dist/modules/ucan/ucan.service.js +582 -0
- package/dist/modules/ws/emitter.d.ts +12 -0
- package/dist/modules/ws/emitter.d.ts.map +1 -0
- package/dist/modules/ws/emitter.js +12 -0
- package/dist/modules/ws/ws.gateway.d.ts +34 -0
- package/dist/modules/ws/ws.gateway.d.ts.map +1 -0
- package/dist/modules/ws/ws.gateway.js +241 -0
- package/dist/modules/ws/ws.module.d.ts +3 -0
- package/dist/modules/ws/ws.module.d.ts.map +1 -0
- package/dist/modules/ws/ws.module.js +21 -0
- package/dist/modules/ws/ws.service.d.ts +25 -0
- package/dist/modules/ws/ws.service.d.ts.map +1 -0
- package/dist/modules/ws/ws.service.js +113 -0
- package/dist/plugin-api/define-plugin.d.ts +19 -0
- package/dist/plugin-api/define-plugin.d.ts.map +1 -0
- package/dist/plugin-api/define-plugin.js +25 -0
- package/dist/plugin-api/oracle-plugin.d.ts +92 -0
- package/dist/plugin-api/oracle-plugin.d.ts.map +1 -0
- package/dist/plugin-api/oracle-plugin.js +15 -0
- package/dist/plugin-api/tool-helper.d.ts +33 -0
- package/dist/plugin-api/tool-helper.d.ts.map +1 -0
- package/dist/plugin-api/tool-helper.js +40 -0
- package/dist/plugin-api/types.d.ts +378 -0
- package/dist/plugin-api/types.d.ts.map +1 -0
- package/dist/plugin-api/types.js +1 -0
- package/dist/plugins/agui/agui-agent.d.ts +10 -0
- package/dist/plugins/agui/agui-agent.d.ts.map +1 -0
- package/dist/plugins/agui/agui-agent.js +110 -0
- package/dist/plugins/agui/agui.plugin.d.ts +16 -0
- package/dist/plugins/agui/agui.plugin.d.ts.map +1 -0
- package/dist/plugins/agui/agui.plugin.js +117 -0
- package/dist/plugins/agui/index.d.ts +3 -0
- package/dist/plugins/agui/index.d.ts.map +1 -0
- package/dist/plugins/agui/index.js +2 -0
- package/dist/plugins/composio/composio-tools.d.ts +59 -0
- package/dist/plugins/composio/composio-tools.d.ts.map +1 -0
- package/dist/plugins/composio/composio-tools.js +88 -0
- package/dist/plugins/composio/composio-ucan.d.ts +14 -0
- package/dist/plugins/composio/composio-ucan.d.ts.map +1 -0
- package/dist/plugins/composio/composio-ucan.js +32 -0
- package/dist/plugins/composio/composio.plugin.d.ts +45 -0
- package/dist/plugins/composio/composio.plugin.d.ts.map +1 -0
- package/dist/plugins/composio/composio.plugin.js +116 -0
- package/dist/plugins/composio/index.d.ts +4 -0
- package/dist/plugins/composio/index.d.ts.map +1 -0
- package/dist/plugins/composio/index.js +3 -0
- package/dist/plugins/credits/claim-processing.module.d.ts +28 -0
- package/dist/plugins/credits/claim-processing.module.d.ts.map +1 -0
- package/dist/plugins/credits/claim-processing.module.js +37 -0
- package/dist/plugins/credits/claim-processing.service.d.ts +92 -0
- package/dist/plugins/credits/claim-processing.service.d.ts.map +1 -0
- package/dist/plugins/credits/claim-processing.service.js +406 -0
- package/dist/plugins/credits/credits-middleware.d.ts +23 -0
- package/dist/plugins/credits/credits-middleware.d.ts.map +1 -0
- package/dist/plugins/credits/credits-middleware.js +154 -0
- package/dist/plugins/credits/credits.plugin.d.ts +55 -0
- package/dist/plugins/credits/credits.plugin.d.ts.map +1 -0
- package/dist/plugins/credits/credits.plugin.js +95 -0
- package/dist/plugins/credits/file-processing-sink.module.d.ts +18 -0
- package/dist/plugins/credits/file-processing-sink.module.d.ts.map +1 -0
- package/dist/plugins/credits/file-processing-sink.module.js +56 -0
- package/dist/plugins/credits/index.d.ts +8 -0
- package/dist/plugins/credits/index.d.ts.map +1 -0
- package/dist/plugins/credits/index.js +7 -0
- package/dist/plugins/credits/subscription-sink.module.d.ts +23 -0
- package/dist/plugins/credits/subscription-sink.module.d.ts.map +1 -0
- package/dist/plugins/credits/subscription-sink.module.js +54 -0
- package/dist/plugins/credits/token-limiter.d.ts +139 -0
- package/dist/plugins/credits/token-limiter.d.ts.map +1 -0
- package/dist/plugins/credits/token-limiter.js +302 -0
- package/dist/plugins/domain-indexer/domain-indexer-agent.d.ts +7 -0
- package/dist/plugins/domain-indexer/domain-indexer-agent.d.ts.map +1 -0
- package/dist/plugins/domain-indexer/domain-indexer-agent.js +48 -0
- package/dist/plugins/domain-indexer/domain-indexer-tools.d.ts +8 -0
- package/dist/plugins/domain-indexer/domain-indexer-tools.d.ts.map +1 -0
- package/dist/plugins/domain-indexer/domain-indexer-tools.js +194 -0
- package/dist/plugins/domain-indexer/domain-indexer.plugin.d.ts +20 -0
- package/dist/plugins/domain-indexer/domain-indexer.plugin.d.ts.map +1 -0
- package/dist/plugins/domain-indexer/domain-indexer.plugin.js +78 -0
- package/dist/plugins/domain-indexer/index.d.ts +2 -0
- package/dist/plugins/domain-indexer/index.d.ts.map +1 -0
- package/dist/plugins/domain-indexer/index.js +1 -0
- package/dist/plugins/editor/apply-sandbox-output.d.ts +33 -0
- package/dist/plugins/editor/apply-sandbox-output.d.ts.map +1 -0
- package/dist/plugins/editor/apply-sandbox-output.js +302 -0
- package/dist/plugins/editor/block-actions.d.ts +84 -0
- package/dist/plugins/editor/block-actions.d.ts.map +1 -0
- package/dist/plugins/editor/block-actions.js +471 -0
- package/dist/plugins/editor/blocknote-helper.d.ts +147 -0
- package/dist/plugins/editor/blocknote-helper.d.ts.map +1 -0
- package/dist/plugins/editor/blocknote-helper.js +542 -0
- package/dist/plugins/editor/blocknote-tools.d.ts +364 -0
- package/dist/plugins/editor/blocknote-tools.d.ts.map +1 -0
- package/dist/plugins/editor/blocknote-tools.js +2123 -0
- package/dist/plugins/editor/editor-agent.d.ts +47 -0
- package/dist/plugins/editor/editor-agent.d.ts.map +1 -0
- package/dist/plugins/editor/editor-agent.js +158 -0
- package/dist/plugins/editor/editor-mx.d.ts +56 -0
- package/dist/plugins/editor/editor-mx.d.ts.map +1 -0
- package/dist/plugins/editor/editor-mx.js +100 -0
- package/dist/plugins/editor/editor.plugin.d.ts +32 -0
- package/dist/plugins/editor/editor.plugin.d.ts.map +1 -0
- package/dist/plugins/editor/editor.plugin.js +189 -0
- package/dist/plugins/editor/index.d.ts +6 -0
- package/dist/plugins/editor/index.d.ts.map +1 -0
- package/dist/plugins/editor/index.js +5 -0
- package/dist/plugins/editor/mint-invocation-tool.d.ts +72 -0
- package/dist/plugins/editor/mint-invocation-tool.d.ts.map +1 -0
- package/dist/plugins/editor/mint-invocation-tool.js +173 -0
- package/dist/plugins/editor/page-functions.d.ts +100 -0
- package/dist/plugins/editor/page-functions.d.ts.map +1 -0
- package/dist/plugins/editor/page-functions.js +317 -0
- package/dist/plugins/editor/page-tools.d.ts +75 -0
- package/dist/plugins/editor/page-tools.d.ts.map +1 -0
- package/dist/plugins/editor/page-tools.js +238 -0
- package/dist/plugins/editor/prompts.d.ts +22 -0
- package/dist/plugins/editor/prompts.d.ts.map +1 -0
- package/dist/plugins/editor/prompts.js +451 -0
- package/dist/plugins/editor/provider.d.ts +101 -0
- package/dist/plugins/editor/provider.d.ts.map +1 -0
- package/dist/plugins/editor/provider.js +249 -0
- package/dist/plugins/editor/standalone-editor-tool.d.ts +17 -0
- package/dist/plugins/editor/standalone-editor-tool.d.ts.map +1 -0
- package/dist/plugins/editor/standalone-editor-tool.js +136 -0
- package/dist/plugins/editor/survey-helpers.d.ts +112 -0
- package/dist/plugins/editor/survey-helpers.d.ts.map +1 -0
- package/dist/plugins/editor/survey-helpers.js +358 -0
- package/dist/plugins/firecrawl/firecrawl-agent.d.ts +7 -0
- package/dist/plugins/firecrawl/firecrawl-agent.d.ts.map +1 -0
- package/dist/plugins/firecrawl/firecrawl-agent.js +84 -0
- package/dist/plugins/firecrawl/firecrawl-tools.d.ts +37 -0
- package/dist/plugins/firecrawl/firecrawl-tools.d.ts.map +1 -0
- package/dist/plugins/firecrawl/firecrawl-tools.js +129 -0
- package/dist/plugins/firecrawl/firecrawl.plugin.d.ts +32 -0
- package/dist/plugins/firecrawl/firecrawl.plugin.d.ts.map +1 -0
- package/dist/plugins/firecrawl/firecrawl.plugin.js +69 -0
- package/dist/plugins/firecrawl/index.d.ts +3 -0
- package/dist/plugins/firecrawl/index.d.ts.map +1 -0
- package/dist/plugins/firecrawl/index.js +2 -0
- package/dist/plugins/index.d.ts +47 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +69 -0
- package/dist/plugins/matrix-group-chats/channel-memory.module.d.ts +7 -0
- package/dist/plugins/matrix-group-chats/channel-memory.module.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/channel-memory.module.js +22 -0
- package/dist/plugins/matrix-group-chats/channel-memory.repo.d.ts +62 -0
- package/dist/plugins/matrix-group-chats/channel-memory.repo.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/channel-memory.repo.js +311 -0
- package/dist/plugins/matrix-group-chats/channel-memory.service.d.ts +89 -0
- package/dist/plugins/matrix-group-chats/channel-memory.service.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/channel-memory.service.js +565 -0
- package/dist/plugins/matrix-group-chats/channel-memory.summarizer.d.ts +18 -0
- package/dist/plugins/matrix-group-chats/channel-memory.summarizer.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/channel-memory.summarizer.js +128 -0
- package/dist/plugins/matrix-group-chats/channel-memory.types.d.ts +50 -0
- package/dist/plugins/matrix-group-chats/channel-memory.types.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/channel-memory.types.js +2 -0
- package/dist/plugins/matrix-group-chats/guard.d.ts +83 -0
- package/dist/plugins/matrix-group-chats/guard.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/guard.js +138 -0
- package/dist/plugins/matrix-group-chats/index.d.ts +59 -0
- package/dist/plugins/matrix-group-chats/index.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/index.js +140 -0
- package/dist/plugins/matrix-group-chats/middleware.d.ts +31 -0
- package/dist/plugins/matrix-group-chats/middleware.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/middleware.js +186 -0
- package/dist/plugins/matrix-group-chats/power-levels.d.ts +15 -0
- package/dist/plugins/matrix-group-chats/power-levels.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/power-levels.js +36 -0
- package/dist/plugins/matrix-group-chats/room-info.d.ts +23 -0
- package/dist/plugins/matrix-group-chats/room-info.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/room-info.js +34 -0
- package/dist/plugins/matrix-group-chats/tools.d.ts +8 -0
- package/dist/plugins/matrix-group-chats/tools.d.ts.map +1 -0
- package/dist/plugins/matrix-group-chats/tools.js +154 -0
- package/dist/plugins/memory/index.d.ts +5 -0
- package/dist/plugins/memory/index.d.ts.map +1 -0
- package/dist/plugins/memory/index.js +3 -0
- package/dist/plugins/memory/memory-tools.d.ts +52 -0
- package/dist/plugins/memory/memory-tools.d.ts.map +1 -0
- package/dist/plugins/memory/memory-tools.js +88 -0
- package/dist/plugins/memory/memory-ucan.d.ts +17 -0
- package/dist/plugins/memory/memory-ucan.d.ts.map +1 -0
- package/dist/plugins/memory/memory-ucan.js +43 -0
- package/dist/plugins/memory/memory.plugin.d.ts +51 -0
- package/dist/plugins/memory/memory.plugin.d.ts.map +1 -0
- package/dist/plugins/memory/memory.plugin.js +76 -0
- package/dist/plugins/memory/types.d.ts +75 -0
- package/dist/plugins/memory/types.d.ts.map +1 -0
- package/dist/plugins/memory/types.js +2 -0
- package/dist/plugins/portal/index.d.ts +3 -0
- package/dist/plugins/portal/index.d.ts.map +1 -0
- package/dist/plugins/portal/index.js +2 -0
- package/dist/plugins/portal/portal-agent.d.ts +9 -0
- package/dist/plugins/portal/portal-agent.d.ts.map +1 -0
- package/dist/plugins/portal/portal-agent.js +70 -0
- package/dist/plugins/portal/portal.plugin.d.ts +16 -0
- package/dist/plugins/portal/portal.plugin.d.ts.map +1 -0
- package/dist/plugins/portal/portal.plugin.js +115 -0
- package/dist/plugins/sandbox/index.d.ts +3 -0
- package/dist/plugins/sandbox/index.d.ts.map +1 -0
- package/dist/plugins/sandbox/index.js +2 -0
- package/dist/plugins/sandbox/sandbox-mcp.d.ts +46 -0
- package/dist/plugins/sandbox/sandbox-mcp.d.ts.map +1 -0
- package/dist/plugins/sandbox/sandbox-mcp.js +80 -0
- package/dist/plugins/sandbox/sandbox-write-blob.d.ts +22 -0
- package/dist/plugins/sandbox/sandbox-write-blob.d.ts.map +1 -0
- package/dist/plugins/sandbox/sandbox-write-blob.js +80 -0
- package/dist/plugins/sandbox/sandbox.plugin.d.ts +80 -0
- package/dist/plugins/sandbox/sandbox.plugin.d.ts.map +1 -0
- package/dist/plugins/sandbox/sandbox.plugin.js +204 -0
- package/dist/plugins/skills/index.d.ts +3 -0
- package/dist/plugins/skills/index.d.ts.map +1 -0
- package/dist/plugins/skills/index.js +2 -0
- package/dist/plugins/skills/skills-tools.d.ts +20 -0
- package/dist/plugins/skills/skills-tools.d.ts.map +1 -0
- package/dist/plugins/skills/skills-tools.js +204 -0
- package/dist/plugins/skills/skills-ucan.d.ts +24 -0
- package/dist/plugins/skills/skills-ucan.d.ts.map +1 -0
- package/dist/plugins/skills/skills-ucan.js +28 -0
- package/dist/plugins/skills/skills.plugin.d.ts +37 -0
- package/dist/plugins/skills/skills.plugin.d.ts.map +1 -0
- package/dist/plugins/skills/skills.plugin.js +82 -0
- package/dist/plugins/slack/index.d.ts +4 -0
- package/dist/plugins/slack/index.d.ts.map +1 -0
- package/dist/plugins/slack/index.js +3 -0
- package/dist/plugins/slack/slack.module.d.ts +9 -0
- package/dist/plugins/slack/slack.module.d.ts.map +1 -0
- package/dist/plugins/slack/slack.module.js +27 -0
- package/dist/plugins/slack/slack.plugin.d.ts +30 -0
- package/dist/plugins/slack/slack.plugin.d.ts.map +1 -0
- package/dist/plugins/slack/slack.plugin.js +40 -0
- package/dist/plugins/slack/slack.service.d.ts +32 -0
- package/dist/plugins/slack/slack.service.d.ts.map +1 -0
- package/dist/plugins/slack/slack.service.js +157 -0
- package/dist/plugins/user-preferences/index.d.ts +4 -0
- package/dist/plugins/user-preferences/index.d.ts.map +1 -0
- package/dist/plugins/user-preferences/index.js +3 -0
- package/dist/plugins/user-preferences/service/user-preferences.service.d.ts +61 -0
- package/dist/plugins/user-preferences/service/user-preferences.service.d.ts.map +1 -0
- package/dist/plugins/user-preferences/service/user-preferences.service.js +105 -0
- package/dist/plugins/user-preferences/user-preferences-http.module.d.ts +10 -0
- package/dist/plugins/user-preferences/user-preferences-http.module.d.ts.map +1 -0
- package/dist/plugins/user-preferences/user-preferences-http.module.js +23 -0
- package/dist/plugins/user-preferences/user-preferences-tool.d.ts +22 -0
- package/dist/plugins/user-preferences/user-preferences-tool.d.ts.map +1 -0
- package/dist/plugins/user-preferences/user-preferences-tool.js +103 -0
- package/dist/plugins/user-preferences/user-preferences.controller.d.ts +18 -0
- package/dist/plugins/user-preferences/user-preferences.controller.d.ts.map +1 -0
- package/dist/plugins/user-preferences/user-preferences.controller.js +72 -0
- package/dist/plugins/user-preferences/user-preferences.plugin.d.ts +27 -0
- package/dist/plugins/user-preferences/user-preferences.plugin.d.ts.map +1 -0
- package/dist/plugins/user-preferences/user-preferences.plugin.js +66 -0
- package/dist/registries/config-schema-registry.d.ts +24 -0
- package/dist/registries/config-schema-registry.d.ts.map +1 -0
- package/dist/registries/config-schema-registry.js +27 -0
- package/dist/registries/index.d.ts +13 -0
- package/dist/registries/index.d.ts.map +1 -0
- package/dist/registries/index.js +6 -0
- package/dist/registries/manifest-registry.d.ts +49 -0
- package/dist/registries/manifest-registry.d.ts.map +1 -0
- package/dist/registries/manifest-registry.js +53 -0
- package/dist/registries/middleware-registry.d.ts +41 -0
- package/dist/registries/middleware-registry.d.ts.map +1 -0
- package/dist/registries/middleware-registry.js +52 -0
- package/dist/registries/shared-state-registry.d.ts +41 -0
- package/dist/registries/shared-state-registry.d.ts.map +1 -0
- package/dist/registries/shared-state-registry.js +65 -0
- package/dist/registries/subagent-registry.d.ts +55 -0
- package/dist/registries/subagent-registry.d.ts.map +1 -0
- package/dist/registries/subagent-registry.js +106 -0
- package/dist/registries/test-fixtures.d.ts +47 -0
- package/dist/registries/test-fixtures.d.ts.map +1 -0
- package/dist/registries/test-fixtures.js +168 -0
- package/dist/registries/tool-registry.d.ts +74 -0
- package/dist/registries/tool-registry.d.ts.map +1 -0
- package/dist/registries/tool-registry.js +130 -0
- package/dist/runtime-context/ambient.d.ts +118 -0
- package/dist/runtime-context/ambient.d.ts.map +1 -0
- package/dist/runtime-context/ambient.js +1 -0
- package/dist/runtime-context/build-plugin.d.ts +20 -0
- package/dist/runtime-context/build-plugin.d.ts.map +1 -0
- package/dist/runtime-context/build-plugin.js +16 -0
- package/dist/runtime-context/build-runtime.d.ts +60 -0
- package/dist/runtime-context/build-runtime.d.ts.map +1 -0
- package/dist/runtime-context/build-runtime.js +81 -0
- package/dist/testing/create-test-runtime.d.ts +95 -0
- package/dist/testing/create-test-runtime.d.ts.map +1 -0
- package/dist/testing/create-test-runtime.js +302 -0
- package/dist/testing/index.d.ts +5 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +5 -0
- package/dist/testing/integration/chat-client.d.ts +143 -0
- package/dist/testing/integration/chat-client.d.ts.map +1 -0
- package/dist/testing/integration/chat-client.js +238 -0
- package/dist/testing/integration/harness.d.ts +189 -0
- package/dist/testing/integration/harness.d.ts.map +1 -0
- package/dist/testing/integration/harness.js +461 -0
- package/dist/testing/integration/index.d.ts +14 -0
- package/dist/testing/integration/index.d.ts.map +1 -0
- package/dist/testing/integration/index.js +18 -0
- package/dist/testing/integration/setup.d.ts +2 -0
- package/dist/testing/integration/setup.d.ts.map +1 -0
- package/dist/testing/integration/setup.js +41 -0
- package/dist/testing/integration/sse-parser.d.ts +99 -0
- package/dist/testing/integration/sse-parser.d.ts.map +1 -0
- package/dist/testing/integration/sse-parser.js +125 -0
- package/dist/testing/integration/ucan.d.ts +74 -0
- package/dist/testing/integration/ucan.d.ts.map +1 -0
- package/dist/testing/integration/ucan.js +95 -0
- package/dist/testing/integration/wait-for-matrix-loaded.d.ts +19 -0
- package/dist/testing/integration/wait-for-matrix-loaded.d.ts.map +1 -0
- package/dist/testing/integration/wait-for-matrix-loaded.js +31 -0
- package/dist/testing/mocks.d.ts +64 -0
- package/dist/testing/mocks.d.ts.map +1 -0
- package/dist/testing/mocks.js +141 -0
- package/dist/testing/nest-doubles.d.ts +10 -0
- package/dist/testing/nest-doubles.d.ts.map +1 -0
- package/dist/testing/nest-doubles.js +19 -0
- package/dist/utils/emoji.d.ts +3 -0
- package/dist/utils/emoji.d.ts.map +1 -0
- package/dist/utils/emoji.js +36 -0
- package/package.json +102 -0
|
@@ -0,0 +1,238 @@
|
|
|
1
|
+
import { parseSSEStream } from './sse-parser.js';
|
|
2
|
+
export class ChatClient {
|
|
3
|
+
baseUrl;
|
|
4
|
+
delegation;
|
|
5
|
+
timezone;
|
|
6
|
+
timeoutMs;
|
|
7
|
+
fetchImpl;
|
|
8
|
+
constructor(baseUrl, opts = {}) {
|
|
9
|
+
this.baseUrl = baseUrl.replace(/\/+$/, '');
|
|
10
|
+
this.delegation = opts.delegation;
|
|
11
|
+
this.timezone = opts.timezone ?? 'UTC';
|
|
12
|
+
this.timeoutMs = opts.timeoutMs ?? 60_000;
|
|
13
|
+
this.fetchImpl = opts.fetch ?? globalThis.fetch.bind(globalThis);
|
|
14
|
+
}
|
|
15
|
+
/** Headers shared by every request. `timezone` is NOT here — it's in the body. */
|
|
16
|
+
authHeaders(extra = {}) {
|
|
17
|
+
const out = {
|
|
18
|
+
'content-type': 'application/json',
|
|
19
|
+
...extra,
|
|
20
|
+
};
|
|
21
|
+
if (this.delegation && this.delegation.length > 0) {
|
|
22
|
+
out['x-ucan-delegation'] = this.delegation;
|
|
23
|
+
}
|
|
24
|
+
return out;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Compose the JSON body the SDK sends — keys match
|
|
28
|
+
* `apps/qiforge-example` → SDK → controller exactly.
|
|
29
|
+
*/
|
|
30
|
+
composeBody(message, stream, opts) {
|
|
31
|
+
return JSON.stringify({
|
|
32
|
+
message,
|
|
33
|
+
stream,
|
|
34
|
+
timezone: opts.timezone ?? this.timezone,
|
|
35
|
+
// ChatClient defaults `returnAllMessages` to true — tests get the full
|
|
36
|
+
// transcript by default and can opt out with `returnAllMessages: false`.
|
|
37
|
+
// Stream requests ignore the flag server-side, so only send it when
|
|
38
|
+
// non-stream.
|
|
39
|
+
...(!stream && {
|
|
40
|
+
returnAllMessages: opts.returnAllMessages ?? true,
|
|
41
|
+
}),
|
|
42
|
+
...(opts.metadata && { metadata: opts.metadata }),
|
|
43
|
+
...(opts.attachments?.length && { attachments: opts.attachments }),
|
|
44
|
+
...(opts.tools?.length && { tools: opts.tools }),
|
|
45
|
+
...(opts.agActions?.length && { agActions: opts.agActions }),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
/** Raw `fetch` against the oracle's base URL — for plugin HTTP routes. */
|
|
49
|
+
async fetch(path, init = {}) {
|
|
50
|
+
const url = `${this.baseUrl}${path.startsWith('/') ? path : `/${path}`}`;
|
|
51
|
+
const mergedHeaders = this.authHeaders(Object.fromEntries(new Headers(init.headers).entries()));
|
|
52
|
+
return this.fetchImpl(url, { ...init, headers: mergedHeaders });
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* `POST /messages/:sessionId` with `stream: false`.
|
|
56
|
+
*
|
|
57
|
+
* `ChatClient` defaults `returnAllMessages: true`, so `body.messages`
|
|
58
|
+
* holds the full session transcript and `body.message` is the last
|
|
59
|
+
* assistant message (same shape the production payload returns). The
|
|
60
|
+
* caller can opt out via `opts.returnAllMessages = false` — in that case
|
|
61
|
+
* `body.messages` will be `undefined` at runtime but the type stays
|
|
62
|
+
* non-optional for the default case; narrow manually if you opt out.
|
|
63
|
+
*/
|
|
64
|
+
async send(sessionId, message, opts = {}) {
|
|
65
|
+
const start = Date.now();
|
|
66
|
+
const headers = this.authHeaders(opts.delegation ? { 'x-ucan-delegation': opts.delegation } : {});
|
|
67
|
+
const controller = new AbortController();
|
|
68
|
+
const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
69
|
+
const signal = opts.signal
|
|
70
|
+
? mergeSignals(controller.signal, opts.signal)
|
|
71
|
+
: controller.signal;
|
|
72
|
+
try {
|
|
73
|
+
const res = await this.fetchImpl(`${this.baseUrl}/messages/${encodeURIComponent(sessionId)}`, {
|
|
74
|
+
method: 'POST',
|
|
75
|
+
headers,
|
|
76
|
+
body: this.composeBody(message, false, opts),
|
|
77
|
+
signal,
|
|
78
|
+
});
|
|
79
|
+
const requestId = res.headers.get('x-request-id') ?? undefined;
|
|
80
|
+
const text = await res.text();
|
|
81
|
+
const body = JSON.parse(text);
|
|
82
|
+
return {
|
|
83
|
+
body,
|
|
84
|
+
status: res.status,
|
|
85
|
+
durationMs: Date.now() - start,
|
|
86
|
+
requestId,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
finally {
|
|
90
|
+
clearTimeout(timeoutId);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* `POST /messages/:sessionId` with `stream: true`. Returns an async
|
|
95
|
+
* iterable of typed SSE events plus a `final()` method resolving to the
|
|
96
|
+
* complete event list + accumulated text.
|
|
97
|
+
*/
|
|
98
|
+
stream(sessionId, message, opts = {}) {
|
|
99
|
+
const headers = this.authHeaders({
|
|
100
|
+
accept: 'text/event-stream',
|
|
101
|
+
...(opts.delegation ? { 'x-ucan-delegation': opts.delegation } : {}),
|
|
102
|
+
});
|
|
103
|
+
const start = Date.now();
|
|
104
|
+
const events = [];
|
|
105
|
+
let text = '';
|
|
106
|
+
let requestId;
|
|
107
|
+
let doneResolve;
|
|
108
|
+
let doneReject;
|
|
109
|
+
const donePromise = new Promise((res, rej) => {
|
|
110
|
+
doneResolve = res;
|
|
111
|
+
doneReject = rej;
|
|
112
|
+
});
|
|
113
|
+
const generator = async function* () {
|
|
114
|
+
const res = await this.fetchImpl(`${this.baseUrl}/messages/${encodeURIComponent(sessionId)}`, {
|
|
115
|
+
method: 'POST',
|
|
116
|
+
headers,
|
|
117
|
+
body: this.composeBody(message, true, opts),
|
|
118
|
+
signal: opts.signal,
|
|
119
|
+
});
|
|
120
|
+
requestId = res.headers.get('x-request-id') ?? undefined;
|
|
121
|
+
if (!requestId) {
|
|
122
|
+
// Mirror the SDK invariant — stream responses MUST carry x-request-id.
|
|
123
|
+
const err = new Error(`Stream response missing x-request-id header (status ${res.status})`);
|
|
124
|
+
doneReject(err);
|
|
125
|
+
throw err;
|
|
126
|
+
}
|
|
127
|
+
if (!res.body) {
|
|
128
|
+
doneResolve({
|
|
129
|
+
events,
|
|
130
|
+
text,
|
|
131
|
+
durationMs: Date.now() - start,
|
|
132
|
+
requestId,
|
|
133
|
+
});
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const reader = res.body.getReader();
|
|
137
|
+
try {
|
|
138
|
+
for await (const evt of parseSSEStream(reader)) {
|
|
139
|
+
events.push(evt);
|
|
140
|
+
if (evt.event === 'message') {
|
|
141
|
+
text += evt.data.content;
|
|
142
|
+
}
|
|
143
|
+
yield evt;
|
|
144
|
+
}
|
|
145
|
+
doneResolve({
|
|
146
|
+
events,
|
|
147
|
+
text,
|
|
148
|
+
durationMs: Date.now() - start,
|
|
149
|
+
requestId,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
catch (err) {
|
|
153
|
+
const error = err instanceof Error ? err : new Error(String(err));
|
|
154
|
+
doneReject(error);
|
|
155
|
+
throw error;
|
|
156
|
+
}
|
|
157
|
+
}.call(this);
|
|
158
|
+
const iterable = generator;
|
|
159
|
+
iterable.final = () => donePromise;
|
|
160
|
+
return iterable;
|
|
161
|
+
}
|
|
162
|
+
/**
|
|
163
|
+
* `POST /sessions` — create a new chat session and return its id.
|
|
164
|
+
*
|
|
165
|
+
* Required before `send`/`stream` against a sessionId — `MessagesService`
|
|
166
|
+
* throws 404 if the session doesn't already exist. Tests call this in
|
|
167
|
+
* `beforeAll` and reuse the returned id, matching the SDK's
|
|
168
|
+
* `useSessionManager` flow on the frontend.
|
|
169
|
+
*/
|
|
170
|
+
async createSession() {
|
|
171
|
+
const res = await this.fetchImpl(`${this.baseUrl}/sessions`, {
|
|
172
|
+
method: 'POST',
|
|
173
|
+
headers: this.authHeaders(),
|
|
174
|
+
});
|
|
175
|
+
if (!res.ok) {
|
|
176
|
+
throw new Error(`createSession failed: ${res.status} ${JSON.stringify(await res.json().catch(() => ''))}`);
|
|
177
|
+
}
|
|
178
|
+
const body = (await res.json());
|
|
179
|
+
if (!body.sessionId) {
|
|
180
|
+
throw new Error(`createSession response missing sessionId: ${JSON.stringify(body)}`);
|
|
181
|
+
}
|
|
182
|
+
return body.sessionId;
|
|
183
|
+
}
|
|
184
|
+
/** `GET /messages/:sessionId` — list messages in a session. */
|
|
185
|
+
async list(sessionId) {
|
|
186
|
+
const start = Date.now();
|
|
187
|
+
const res = await this.fetchImpl(`${this.baseUrl}/messages/${encodeURIComponent(sessionId)}`, { method: 'GET', headers: this.authHeaders() });
|
|
188
|
+
const text = await res.text();
|
|
189
|
+
let body = text;
|
|
190
|
+
try {
|
|
191
|
+
body = JSON.parse(text);
|
|
192
|
+
}
|
|
193
|
+
catch {
|
|
194
|
+
// non-JSON
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
body,
|
|
198
|
+
status: res.status,
|
|
199
|
+
durationMs: Date.now() - start,
|
|
200
|
+
requestId: res.headers.get('x-request-id') ?? undefined,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
/** `POST /messages/abort` — cancel an ongoing stream by session id. */
|
|
204
|
+
async abort(sessionId) {
|
|
205
|
+
const start = Date.now();
|
|
206
|
+
const res = await this.fetchImpl(`${this.baseUrl}/messages/abort`, {
|
|
207
|
+
method: 'POST',
|
|
208
|
+
headers: this.authHeaders(),
|
|
209
|
+
body: JSON.stringify({ sessionId }),
|
|
210
|
+
});
|
|
211
|
+
const text = await res.text();
|
|
212
|
+
let body = text;
|
|
213
|
+
try {
|
|
214
|
+
body = JSON.parse(text);
|
|
215
|
+
}
|
|
216
|
+
catch {
|
|
217
|
+
// non-JSON
|
|
218
|
+
}
|
|
219
|
+
return {
|
|
220
|
+
body,
|
|
221
|
+
status: res.status,
|
|
222
|
+
durationMs: Date.now() - start,
|
|
223
|
+
requestId: res.headers.get('x-request-id') ?? undefined,
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
/** Merge a timeout signal with a caller-supplied one. */
|
|
228
|
+
function mergeSignals(a, b) {
|
|
229
|
+
if (a.aborted)
|
|
230
|
+
return a;
|
|
231
|
+
if (b.aborted)
|
|
232
|
+
return b;
|
|
233
|
+
const controller = new AbortController();
|
|
234
|
+
const onAbort = () => controller.abort();
|
|
235
|
+
a.addEventListener('abort', onAbort, { once: true });
|
|
236
|
+
b.addEventListener('abort', onAbort, { once: true });
|
|
237
|
+
return controller.signal;
|
|
238
|
+
}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration test harness — real ambient services + real Nest boot.
|
|
3
|
+
*
|
|
4
|
+
* - `createIntegrationOracle()` boots the full Nest app on an ephemeral
|
|
5
|
+
* port. Tier B tests drive it via `ChatClient`. This is the sibling of
|
|
6
|
+
* `createOracleApp()` — same boot path, same Matrix init, same graceful
|
|
7
|
+
* shutdown. The only differences are: ephemeral port (`port: 0`) and
|
|
8
|
+
* captured lifecycle events. There are intentionally no
|
|
9
|
+
* `skipMatrixInit` / `skipGracefulShutdown` flags — integration tests
|
|
10
|
+
* boot the same stack production does. If Matrix is unreachable, the
|
|
11
|
+
* test fails; that failure IS the signal (spec §6, §11 #10).
|
|
12
|
+
*
|
|
13
|
+
* - `createIntegrationRuntime()` builds a real `RuntimeContext` against
|
|
14
|
+
* real ambient services and lets a test invoke a plugin's tool / sub-
|
|
15
|
+
* agent / middleware directly — no Nest, no HTTP, no model. This is
|
|
16
|
+
* the sibling of `createTestRuntime()`, with `mockLlm`/`mockMatrix`
|
|
17
|
+
* swapped for the production adapters.
|
|
18
|
+
*
|
|
19
|
+
* Both surfaces deliberately reuse `resolvePlugins` / registry population
|
|
20
|
+
* from the unit-test runtime so they validate the same wiring code that
|
|
21
|
+
* production goes through.
|
|
22
|
+
*/
|
|
23
|
+
import { type BaseMessage } from '@langchain/core/messages';
|
|
24
|
+
import { type DynamicModule, type Type } from '@nestjs/common';
|
|
25
|
+
import { type OracleApp, type PluginStatusChangeEvent } from '../../bootstrap/create-oracle-app.js';
|
|
26
|
+
import { type FeatureToggle } from '../../bootstrap/plugin-loader.js';
|
|
27
|
+
import type { MainAgentHooks } from '../../graph/main-agent-types.js';
|
|
28
|
+
import type { OraclePlugin } from '../../plugin-api/oracle-plugin.js';
|
|
29
|
+
import type { AuthExcludedRoute, OracleConfig, OracleIdentity, Logger as PluginLogger, ReadonlyState, RuntimeContext } from '../../plugin-api/types.js';
|
|
30
|
+
import type { AmbientServices, UcanAdapter } from '../../runtime-context/ambient.js';
|
|
31
|
+
/**
|
|
32
|
+
* Capability shape exposed to tests on the `RuntimeContext`. Matches the
|
|
33
|
+
* `{ resource, action }` pair the production `UcanAdapter` reads.
|
|
34
|
+
*/
|
|
35
|
+
export interface IntegrationCapability {
|
|
36
|
+
resource: string;
|
|
37
|
+
action: string;
|
|
38
|
+
}
|
|
39
|
+
/** Options for `createIntegrationOracle`. */
|
|
40
|
+
export interface CreateIntegrationOracleOptions {
|
|
41
|
+
/**
|
|
42
|
+
* App-level plugins. Defaults to `[]` so the harness can boot the
|
|
43
|
+
* minimum oracle (just core modules). Bundled plugins are independent —
|
|
44
|
+
* they come in via `bundledPlugins`.
|
|
45
|
+
*/
|
|
46
|
+
plugins?: OraclePlugin[];
|
|
47
|
+
/**
|
|
48
|
+
* Override the bundled plugin set. `[]` keeps the canonical bundled
|
|
49
|
+
* catalog out of the test boot — useful for hello-world / health
|
|
50
|
+
* checks that shouldn't drag in real upstreams.
|
|
51
|
+
*/
|
|
52
|
+
bundledPlugins?: OraclePlugin[];
|
|
53
|
+
/**
|
|
54
|
+
* Same shape as `createOracleApp`. Defaults to `{ name: '...' }` from
|
|
55
|
+
* `IDENTITY_DEFAULTS` below — override for plugins that read identity
|
|
56
|
+
* config (`prompt.opening`, …).
|
|
57
|
+
*/
|
|
58
|
+
config?: OracleConfig;
|
|
59
|
+
/** Feature toggles. Identical to `createOracleApp.features`. */
|
|
60
|
+
features?: Partial<Record<string, FeatureToggle>>;
|
|
61
|
+
/** Host-declared Nest modules. */
|
|
62
|
+
nestModules?: Array<Type | DynamicModule>;
|
|
63
|
+
/** Host-declared auth-excluded routes (e.g. `/version` in qiforge-example). */
|
|
64
|
+
authExcludedRoutes?: AuthExcludedRoute[];
|
|
65
|
+
/** Override `process.env` for the boot. Defaults to `process.env`. */
|
|
66
|
+
env?: NodeJS.ProcessEnv;
|
|
67
|
+
/**
|
|
68
|
+
* Bind port — `0` (default) means "OS picks an ephemeral port". The
|
|
69
|
+
* actual port shows up in `result.baseUrl` after `listen()`.
|
|
70
|
+
*/
|
|
71
|
+
port?: number;
|
|
72
|
+
/** Override the bootstrap logger. Defaults to a captured `Logger`. */
|
|
73
|
+
logger?: PluginLogger;
|
|
74
|
+
/**
|
|
75
|
+
* Override / extend the main-agent hooks. The harness always installs a
|
|
76
|
+
* default `resolveModel` that swaps the production model map to the
|
|
77
|
+
* PR-tier test model map (spec §7) — `main` → `moonshotai/kimi-k2.5`,
|
|
78
|
+
* `subagent` → `openai/gpt-oss-120b`. Caller-supplied hooks merge on top
|
|
79
|
+
* (caller wins per-key).
|
|
80
|
+
*/
|
|
81
|
+
hooks?: MainAgentHooks;
|
|
82
|
+
}
|
|
83
|
+
/** Public surface of a booted integration oracle. */
|
|
84
|
+
export interface IntegrationOracle {
|
|
85
|
+
/** `http://127.0.0.1:<port>` of the running Nest app. */
|
|
86
|
+
baseUrl: string;
|
|
87
|
+
/** The `OracleApp` handle from `createOracleApp`. */
|
|
88
|
+
app: OracleApp;
|
|
89
|
+
/** Captured plugin lifecycle events + boot errors. */
|
|
90
|
+
events: {
|
|
91
|
+
statusChanges: PluginStatusChangeEvent[];
|
|
92
|
+
errors: Array<{
|
|
93
|
+
err: Error;
|
|
94
|
+
source: string;
|
|
95
|
+
}>;
|
|
96
|
+
};
|
|
97
|
+
/** Snapshot of plugin loader state. */
|
|
98
|
+
status: () => ReturnType<OracleApp['plugins']['status']>;
|
|
99
|
+
/** Stop the HTTP server + close Nest. Idempotent. */
|
|
100
|
+
close: () => Promise<void>;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Boot the runtime on an ephemeral port with real ambient services. Wraps
|
|
104
|
+
* `createOracleApp` identically to production — Matrix init still runs in
|
|
105
|
+
* the background, graceful shutdown still registers. The only test-time
|
|
106
|
+
* concessions are the ephemeral `port: 0` default and the captured
|
|
107
|
+
* lifecycle-event buffers exposed on `result.events`.
|
|
108
|
+
*/
|
|
109
|
+
export declare function createIntegrationOracle(opts?: CreateIntegrationOracleOptions): Promise<IntegrationOracle>;
|
|
110
|
+
/** Options for `createIntegrationRuntime`. */
|
|
111
|
+
export interface CreateIntegrationRuntimeOptions {
|
|
112
|
+
/** Plugins under test. Resolved via the production loader. */
|
|
113
|
+
plugins: OraclePlugin[];
|
|
114
|
+
/** Feature toggles — same shape as `createOracleApp`. */
|
|
115
|
+
features?: Partial<Record<string, FeatureToggle>>;
|
|
116
|
+
/** Merged config the runtime exposes to plugins. Defaults to `process.env`. */
|
|
117
|
+
config?: Record<string, unknown>;
|
|
118
|
+
/**
|
|
119
|
+
* Test user identity. `did` is required; `matrixUserId` defaults to a
|
|
120
|
+
* synthesized `@did-...:test-host` value.
|
|
121
|
+
*/
|
|
122
|
+
user: {
|
|
123
|
+
did: string;
|
|
124
|
+
matrixUserId?: string;
|
|
125
|
+
};
|
|
126
|
+
/** Base64 UCAN delegation string — sent as `userContext.ucanDelegation.raw`. */
|
|
127
|
+
delegation?: string;
|
|
128
|
+
/** Parsed delegation capabilities, when callers want strict UCAN checks. */
|
|
129
|
+
capabilities?: IntegrationCapability[];
|
|
130
|
+
/** Override the synthesized session. */
|
|
131
|
+
session?: Partial<RuntimeContext['session']>;
|
|
132
|
+
/** Override the read-only state used for tool invocations. */
|
|
133
|
+
state?: Partial<ReadonlyState>;
|
|
134
|
+
/** Override the oracle identity. */
|
|
135
|
+
identity?: Partial<OracleIdentity>;
|
|
136
|
+
/** Logger; defaults to a NestJS `Logger`. */
|
|
137
|
+
logger?: PluginLogger;
|
|
138
|
+
/**
|
|
139
|
+
* Optional `fetch` override — when set, plugin handlers that call
|
|
140
|
+
* `globalThis.fetch` route through this instead. Tests that need to
|
|
141
|
+
* stub upstreams can pass `undici.MockAgent`-style implementations.
|
|
142
|
+
*/
|
|
143
|
+
fetch?: typeof globalThis.fetch;
|
|
144
|
+
/**
|
|
145
|
+
* Optional real `UcanAdapter` override. The default stub throws on
|
|
146
|
+
* `mintInvocation` because the Tier A entry point doesn't boot a
|
|
147
|
+
* `UcanService`. Tests for plugins whose tools mint downstream UCAN
|
|
148
|
+
* invocations (memory, sandbox, skills, composio, …) supply a real
|
|
149
|
+
* adapter — typically `bootedOracle.app.ambient.ucan`, after seeding
|
|
150
|
+
* the user's delegation into the booted oracle's `UcanService` cache.
|
|
151
|
+
*/
|
|
152
|
+
ucan?: UcanAdapter;
|
|
153
|
+
}
|
|
154
|
+
/** Public surface of a Tier A integration runtime. */
|
|
155
|
+
export interface IntegrationRuntime {
|
|
156
|
+
/** Invoke a tool by name against the real runtime context. */
|
|
157
|
+
invokeTool: (name: string, args: unknown) => Promise<unknown>;
|
|
158
|
+
/** Invoke a middleware's lifecycle hooks in isolation. */
|
|
159
|
+
invokeMiddleware: (nameOrIndex: string | number, state: Record<string, unknown>, runtime?: {
|
|
160
|
+
context?: Record<string, unknown>;
|
|
161
|
+
}) => Promise<{
|
|
162
|
+
before?: unknown;
|
|
163
|
+
after?: unknown;
|
|
164
|
+
}>;
|
|
165
|
+
/** Invoke a sub-agent with a textual task — returns its first LLM reply. */
|
|
166
|
+
invokeSubAgent: (name: string, task: string) => Promise<string>;
|
|
167
|
+
/** The real `AmbientServices` bag exposed to plugin builders. */
|
|
168
|
+
ambient: AmbientServices;
|
|
169
|
+
/** No-op today; reserved for future resource holders. */
|
|
170
|
+
close: () => Promise<void>;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Build a Tier A runtime backed by real ambient services. The harness:
|
|
174
|
+
*
|
|
175
|
+
* 1. Resolves the plugin list via the production loader (same `autoDetect`
|
|
176
|
+
* gates a real boot would run).
|
|
177
|
+
* 2. Populates the six registries.
|
|
178
|
+
* 3. Wires real adapters for `llm`, `secrets`, `matrix`, `ucan`, `emit`
|
|
179
|
+
* (in-memory no-ops for Matrix and secrets — the harness doesn't need
|
|
180
|
+
* a live homeserver to call a plugin tool that doesn't depend on one).
|
|
181
|
+
* 4. Builds a fresh `RuntimeContext` per invocation using the test
|
|
182
|
+
* user/session/delegation.
|
|
183
|
+
*
|
|
184
|
+
* Use this when you want to call a tool *directly* against the real upstream
|
|
185
|
+
* (Memory Engine, Sandbox, Skills, Composio, Firecrawl, …) without a model.
|
|
186
|
+
*/
|
|
187
|
+
export declare function createIntegrationRuntime(opts: CreateIntegrationRuntimeOptions): Promise<IntegrationRuntime>;
|
|
188
|
+
export type { BaseMessage };
|
|
189
|
+
//# sourceMappingURL=harness.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"harness.d.ts","sourceRoot":"","sources":["../../../src/testing/integration/harness.ts"],"names":[],"mappings":"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"}
|