@agentick/core 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/LICENSE +21 -0
- package/README.md +875 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/.tsbuildinfo.build +1 -0
- package/dist/agent.d.ts +32 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +26 -0
- package/dist/agent.js.map +1 -0
- package/dist/agentick-instance.d.ts +285 -0
- package/dist/agentick-instance.d.ts.map +1 -0
- package/dist/agentick-instance.js +700 -0
- package/dist/agentick-instance.js.map +1 -0
- package/dist/aidk-instance.d.ts +294 -0
- package/dist/aidk-instance.d.ts.map +1 -0
- package/dist/aidk-instance.js +340 -0
- package/dist/aidk-instance.js.map +1 -0
- package/dist/app/session-store.d.ts +57 -0
- package/dist/app/session-store.d.ts.map +1 -0
- package/dist/app/session-store.js +87 -0
- package/dist/app/session-store.js.map +1 -0
- package/dist/app/session.d.ts +209 -0
- package/dist/app/session.d.ts.map +1 -0
- package/dist/app/session.js +2131 -0
- package/dist/app/session.js.map +1 -0
- package/dist/app/sqlite-session-store.d.ts +60 -0
- package/dist/app/sqlite-session-store.d.ts.map +1 -0
- package/dist/app/sqlite-session-store.js +234 -0
- package/dist/app/sqlite-session-store.js.map +1 -0
- package/dist/app/types.d.ts +1461 -0
- package/dist/app/types.d.ts.map +1 -0
- package/dist/app/types.js +14 -0
- package/dist/app/types.js.map +1 -0
- package/dist/app.d.ts +79 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +83 -0
- package/dist/app.js.map +1 -0
- package/dist/channels/adapters/index.d.ts +2 -0
- package/dist/channels/adapters/index.d.ts.map +1 -0
- package/dist/channels/adapters/index.js +2 -0
- package/dist/channels/adapters/index.js.map +1 -0
- package/dist/channels/adapters/redis.d.ts +77 -0
- package/dist/channels/adapters/redis.d.ts.map +1 -0
- package/dist/channels/adapters/redis.js +259 -0
- package/dist/channels/adapters/redis.js.map +1 -0
- package/dist/channels/index.d.ts +38 -0
- package/dist/channels/index.d.ts.map +1 -0
- package/dist/channels/index.js +38 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/service.d.ts +684 -0
- package/dist/channels/service.d.ts.map +1 -0
- package/dist/channels/service.js +870 -0
- package/dist/channels/service.js.map +1 -0
- package/dist/channels/transports/index.d.ts +4 -0
- package/dist/channels/transports/index.d.ts.map +1 -0
- package/dist/channels/transports/index.js +4 -0
- package/dist/channels/transports/index.js.map +1 -0
- package/dist/channels/transports/socketio.d.ts +98 -0
- package/dist/channels/transports/socketio.d.ts.map +1 -0
- package/dist/channels/transports/socketio.js +246 -0
- package/dist/channels/transports/socketio.js.map +1 -0
- package/dist/channels/transports/streamable-http.d.ts +107 -0
- package/dist/channels/transports/streamable-http.d.ts.map +1 -0
- package/dist/channels/transports/streamable-http.js +353 -0
- package/dist/channels/transports/streamable-http.js.map +1 -0
- package/dist/channels/transports/websocket.d.ts +117 -0
- package/dist/channels/transports/websocket.d.ts.map +1 -0
- package/dist/channels/transports/websocket.js +416 -0
- package/dist/channels/transports/websocket.js.map +1 -0
- package/dist/com/index.d.ts +29 -0
- package/dist/com/index.d.ts.map +1 -0
- package/dist/com/index.js +29 -0
- package/dist/com/index.js.map +1 -0
- package/dist/com/object-model.d.ts +634 -0
- package/dist/com/object-model.d.ts.map +1 -0
- package/dist/com/object-model.js +963 -0
- package/dist/com/object-model.js.map +1 -0
- package/dist/com/types.d.ts +192 -0
- package/dist/com/types.d.ts.map +1 -0
- package/dist/com/types.js +1 -0
- package/dist/com/types.js.map +1 -0
- package/dist/compiler/collector.d.ts +16 -0
- package/dist/compiler/collector.d.ts.map +1 -0
- package/dist/compiler/collector.js +388 -0
- package/dist/compiler/collector.js.map +1 -0
- package/dist/compiler/content-block-registry.d.ts +11 -0
- package/dist/compiler/content-block-registry.d.ts.map +1 -0
- package/dist/compiler/content-block-registry.js +312 -0
- package/dist/compiler/content-block-registry.js.map +1 -0
- package/dist/compiler/extractors.d.ts +68 -0
- package/dist/compiler/extractors.d.ts.map +1 -0
- package/dist/compiler/extractors.js +547 -0
- package/dist/compiler/extractors.js.map +1 -0
- package/dist/compiler/fiber-compiler.d.ts +203 -0
- package/dist/compiler/fiber-compiler.d.ts.map +1 -0
- package/dist/compiler/fiber-compiler.js +498 -0
- package/dist/compiler/fiber-compiler.js.map +1 -0
- package/dist/compiler/fiber.d.ts +61 -0
- package/dist/compiler/fiber.d.ts.map +1 -0
- package/dist/compiler/fiber.js +244 -0
- package/dist/compiler/fiber.js.map +1 -0
- package/dist/compiler/index.d.ts +18 -0
- package/dist/compiler/index.d.ts.map +1 -0
- package/dist/compiler/index.js +38 -0
- package/dist/compiler/index.js.map +1 -0
- package/dist/compiler/scheduler.d.ts +95 -0
- package/dist/compiler/scheduler.d.ts.map +1 -0
- package/dist/compiler/scheduler.js +138 -0
- package/dist/compiler/scheduler.js.map +1 -0
- package/dist/compiler/structure-renderer.d.ts +42 -0
- package/dist/compiler/structure-renderer.d.ts.map +1 -0
- package/dist/compiler/structure-renderer.js +189 -0
- package/dist/compiler/structure-renderer.js.map +1 -0
- package/dist/compiler/types.d.ts +96 -0
- package/dist/compiler/types.d.ts.map +1 -0
- package/dist/compiler/types.js +19 -0
- package/dist/compiler/types.js.map +1 -0
- package/dist/component/component-hooks.d.ts +68 -0
- package/dist/component/component-hooks.d.ts.map +1 -0
- package/dist/component/component-hooks.js +112 -0
- package/dist/component/component-hooks.js.map +1 -0
- package/dist/component/component.d.ts +314 -0
- package/dist/component/component.d.ts.map +1 -0
- package/dist/component/component.js +64 -0
- package/dist/component/component.js.map +1 -0
- package/dist/component/index.d.ts +47 -0
- package/dist/component/index.d.ts.map +1 -0
- package/dist/component/index.js +47 -0
- package/dist/component/index.js.map +1 -0
- package/dist/component/tentickle-component.d.ts +185 -0
- package/dist/component/tentickle-component.d.ts.map +1 -0
- package/dist/component/tentickle-component.js +182 -0
- package/dist/component/tentickle-component.js.map +1 -0
- package/dist/content/index.d.ts +12 -0
- package/dist/content/index.d.ts.map +1 -0
- package/dist/content/index.js +17 -0
- package/dist/content/index.js.map +1 -0
- package/dist/context/index.d.ts +51 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +69 -0
- package/dist/context/index.js.map +1 -0
- package/dist/core/channel-helpers.d.ts +31 -0
- package/dist/core/channel-helpers.d.ts.map +1 -0
- package/dist/core/channel-helpers.js +62 -0
- package/dist/core/channel-helpers.js.map +1 -0
- package/dist/core/channel.d.ts +164 -0
- package/dist/core/channel.d.ts.map +1 -0
- package/dist/core/channel.js +199 -0
- package/dist/core/channel.js.map +1 -0
- package/dist/core/context.d.ts +412 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +290 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/event-buffer.d.ts +212 -0
- package/dist/core/event-buffer.d.ts.map +1 -0
- package/dist/core/event-buffer.js +346 -0
- package/dist/core/event-buffer.js.map +1 -0
- package/dist/core/execution-helpers.d.ts +179 -0
- package/dist/core/execution-helpers.d.ts.map +1 -0
- package/dist/core/execution-helpers.js +212 -0
- package/dist/core/execution-helpers.js.map +1 -0
- package/dist/core/execution-tracker.d.ts +53 -0
- package/dist/core/execution-tracker.d.ts.map +1 -0
- package/dist/core/execution-tracker.js +309 -0
- package/dist/core/execution-tracker.js.map +1 -0
- package/dist/core/index.d.ts +58 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +58 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/logger.d.ts +341 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +346 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/metrics-helpers.d.ts +40 -0
- package/dist/core/metrics-helpers.d.ts.map +1 -0
- package/dist/core/metrics-helpers.js +72 -0
- package/dist/core/metrics-helpers.js.map +1 -0
- package/dist/core/otel-provider.d.ts +54 -0
- package/dist/core/otel-provider.d.ts.map +1 -0
- package/dist/core/otel-provider.js +107 -0
- package/dist/core/otel-provider.js.map +1 -0
- package/dist/core/procedure-graph.d.ts +136 -0
- package/dist/core/procedure-graph.d.ts.map +1 -0
- package/dist/core/procedure-graph.js +272 -0
- package/dist/core/procedure-graph.js.map +1 -0
- package/dist/core/procedure.d.ts +755 -0
- package/dist/core/procedure.d.ts.map +1 -0
- package/dist/core/procedure.js +899 -0
- package/dist/core/procedure.js.map +1 -0
- package/dist/core/stream.d.ts +106 -0
- package/dist/core/stream.d.ts.map +1 -0
- package/dist/core/stream.js +186 -0
- package/dist/core/stream.js.map +1 -0
- package/dist/core/telemetry.d.ts +182 -0
- package/dist/core/telemetry.d.ts.map +1 -0
- package/dist/core/telemetry.js +124 -0
- package/dist/core/telemetry.js.map +1 -0
- package/dist/engine/client-tool-coordinator.d.ts +50 -0
- package/dist/engine/client-tool-coordinator.d.ts.map +1 -0
- package/dist/engine/client-tool-coordinator.js +121 -0
- package/dist/engine/client-tool-coordinator.js.map +1 -0
- package/dist/engine/engine-events.d.ts +117 -0
- package/dist/engine/engine-events.d.ts.map +1 -0
- package/dist/engine/engine-events.js +178 -0
- package/dist/engine/engine-events.js.map +1 -0
- package/dist/engine/engine-response.d.ts +48 -0
- package/dist/engine/engine-response.d.ts.map +1 -0
- package/dist/engine/engine-response.js +2 -0
- package/dist/engine/engine-response.js.map +1 -0
- package/dist/engine/execution-graph.d.ts +104 -0
- package/dist/engine/execution-graph.d.ts.map +1 -0
- package/dist/engine/execution-graph.js +257 -0
- package/dist/engine/execution-graph.js.map +1 -0
- package/dist/engine/execution-handle.d.ts +212 -0
- package/dist/engine/execution-handle.d.ts.map +1 -0
- package/dist/engine/execution-handle.js +602 -0
- package/dist/engine/execution-handle.js.map +1 -0
- package/dist/engine/execution-types.d.ts +248 -0
- package/dist/engine/execution-types.d.ts.map +1 -0
- package/dist/engine/execution-types.js +23 -0
- package/dist/engine/execution-types.js.map +1 -0
- package/dist/engine/index.d.ts +21 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +23 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/tool-confirmation-coordinator.d.ts +74 -0
- package/dist/engine/tool-confirmation-coordinator.d.ts.map +1 -0
- package/dist/engine/tool-confirmation-coordinator.js +137 -0
- package/dist/engine/tool-confirmation-coordinator.js.map +1 -0
- package/dist/engine/tool-executor.d.ts +127 -0
- package/dist/engine/tool-executor.d.ts.map +1 -0
- package/dist/engine/tool-executor.js +363 -0
- package/dist/engine/tool-executor.js.map +1 -0
- package/dist/hibernation/index.d.ts +126 -0
- package/dist/hibernation/index.d.ts.map +1 -0
- package/dist/hibernation/index.js +127 -0
- package/dist/hibernation/index.js.map +1 -0
- package/dist/hooks/base-hook-registry.d.ts +41 -0
- package/dist/hooks/base-hook-registry.d.ts.map +1 -0
- package/dist/hooks/base-hook-registry.js +76 -0
- package/dist/hooks/base-hook-registry.js.map +1 -0
- package/dist/hooks/com-state.d.ts +40 -0
- package/dist/hooks/com-state.d.ts.map +1 -0
- package/dist/hooks/com-state.js +90 -0
- package/dist/hooks/com-state.js.map +1 -0
- package/dist/hooks/context-info.d.ts +139 -0
- package/dist/hooks/context-info.d.ts.map +1 -0
- package/dist/hooks/context-info.js +115 -0
- package/dist/hooks/context-info.js.map +1 -0
- package/dist/hooks/context-internal.d.ts +21 -0
- package/dist/hooks/context-internal.d.ts.map +1 -0
- package/dist/hooks/context-internal.js +20 -0
- package/dist/hooks/context-internal.js.map +1 -0
- package/dist/hooks/context.d.ts +64 -0
- package/dist/hooks/context.d.ts.map +1 -0
- package/dist/hooks/context.js +83 -0
- package/dist/hooks/context.js.map +1 -0
- package/dist/hooks/data.d.ts +33 -0
- package/dist/hooks/data.d.ts.map +1 -0
- package/dist/hooks/data.js +84 -0
- package/dist/hooks/data.js.map +1 -0
- package/dist/hooks/formatter-context.d.ts +34 -0
- package/dist/hooks/formatter-context.d.ts.map +1 -0
- package/dist/hooks/formatter-context.js +34 -0
- package/dist/hooks/formatter-context.js.map +1 -0
- package/dist/hooks/hook-registry.d.ts +45 -0
- package/dist/hooks/hook-registry.d.ts.map +1 -0
- package/dist/hooks/hook-registry.js +109 -0
- package/dist/hooks/hook-registry.js.map +1 -0
- package/dist/hooks/index.d.ts +20 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +47 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/knob.d.ts +87 -0
- package/dist/hooks/knob.d.ts.map +1 -0
- package/dist/hooks/knob.js +129 -0
- package/dist/hooks/knob.js.map +1 -0
- package/dist/hooks/knobs-component.d.ts +70 -0
- package/dist/hooks/knobs-component.d.ts.map +1 -0
- package/dist/hooks/knobs-component.js +300 -0
- package/dist/hooks/knobs-component.js.map +1 -0
- package/dist/hooks/lifecycle.d.ts +158 -0
- package/dist/hooks/lifecycle.d.ts.map +1 -0
- package/dist/hooks/lifecycle.js +217 -0
- package/dist/hooks/lifecycle.js.map +1 -0
- package/dist/hooks/message-context.d.ts +101 -0
- package/dist/hooks/message-context.d.ts.map +1 -0
- package/dist/hooks/message-context.js +145 -0
- package/dist/hooks/message-context.js.map +1 -0
- package/dist/hooks/policy-context.d.ts.map +1 -0
- package/dist/hooks/runtime-context.d.ts +122 -0
- package/dist/hooks/runtime-context.d.ts.map +1 -0
- package/dist/hooks/runtime-context.js +149 -0
- package/dist/hooks/runtime-context.js.map +1 -0
- package/dist/hooks/signal.d.ts +267 -0
- package/dist/hooks/signal.d.ts.map +1 -0
- package/dist/hooks/signal.js +825 -0
- package/dist/hooks/signal.js.map +1 -0
- package/dist/hooks/types.d.ts +179 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +5 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +50 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx/components/agent.d.ts +64 -0
- package/dist/jsx/components/agent.d.ts.map +1 -0
- package/dist/jsx/components/agent.js +80 -0
- package/dist/jsx/components/agent.js.map +1 -0
- package/dist/jsx/components/complete.d.ts +65 -0
- package/dist/jsx/components/complete.d.ts.map +1 -0
- package/dist/jsx/components/complete.js +64 -0
- package/dist/jsx/components/complete.js.map +1 -0
- package/dist/jsx/components/content.d.ts +98 -0
- package/dist/jsx/components/content.d.ts.map +1 -0
- package/dist/jsx/components/content.js +51 -0
- package/dist/jsx/components/content.js.map +1 -0
- package/dist/jsx/components/harness.d.ts +118 -0
- package/dist/jsx/components/harness.d.ts.map +1 -0
- package/dist/jsx/components/harness.js +117 -0
- package/dist/jsx/components/harness.js.map +1 -0
- package/dist/jsx/components/index.d.ts +11 -0
- package/dist/jsx/components/index.d.ts.map +1 -0
- package/dist/jsx/components/index.js +11 -0
- package/dist/jsx/components/index.js.map +1 -0
- package/dist/jsx/components/markdown.d.ts +31 -0
- package/dist/jsx/components/markdown.d.ts.map +1 -0
- package/dist/jsx/components/markdown.js +17 -0
- package/dist/jsx/components/markdown.js.map +1 -0
- package/dist/jsx/components/messages.d.ts +283 -0
- package/dist/jsx/components/messages.d.ts.map +1 -0
- package/dist/jsx/components/messages.js +257 -0
- package/dist/jsx/components/messages.js.map +1 -0
- package/dist/jsx/components/model.d.ts +94 -0
- package/dist/jsx/components/model.d.ts.map +1 -0
- package/dist/jsx/components/model.js +96 -0
- package/dist/jsx/components/model.js.map +1 -0
- package/dist/jsx/components/primitives.d.ts +117 -0
- package/dist/jsx/components/primitives.d.ts.map +1 -0
- package/dist/jsx/components/primitives.js +83 -0
- package/dist/jsx/components/primitives.js.map +1 -0
- package/dist/jsx/components/renderer.d.ts +24 -0
- package/dist/jsx/components/renderer.d.ts.map +1 -0
- package/dist/jsx/components/renderer.js +11 -0
- package/dist/jsx/components/renderer.js.map +1 -0
- package/dist/jsx/components/semantic.d.ts +155 -0
- package/dist/jsx/components/semantic.d.ts.map +1 -0
- package/dist/jsx/components/semantic.js +39 -0
- package/dist/jsx/components/semantic.js.map +1 -0
- package/dist/jsx/components/timeline.d.ts +157 -0
- package/dist/jsx/components/timeline.d.ts.map +1 -0
- package/dist/jsx/components/timeline.js +357 -0
- package/dist/jsx/components/timeline.js.map +1 -0
- package/dist/jsx/components/token-budget.d.ts +70 -0
- package/dist/jsx/components/token-budget.d.ts.map +1 -0
- package/dist/jsx/components/token-budget.js +135 -0
- package/dist/jsx/components/token-budget.js.map +1 -0
- package/dist/jsx/components/xml.d.ts +27 -0
- package/dist/jsx/components/xml.d.ts.map +1 -0
- package/dist/jsx/components/xml.js +17 -0
- package/dist/jsx/components/xml.js.map +1 -0
- package/dist/jsx/index.d.ts +58 -0
- package/dist/jsx/index.d.ts.map +1 -0
- package/dist/jsx/index.js +59 -0
- package/dist/jsx/index.js.map +1 -0
- package/dist/jsx/jsx-runtime.d.ts +370 -0
- package/dist/jsx/jsx-runtime.d.ts.map +1 -0
- package/dist/jsx/jsx-runtime.js +79 -0
- package/dist/jsx/jsx-runtime.js.map +1 -0
- package/dist/jsx/jsx-types.d.ts +23 -0
- package/dist/jsx/jsx-types.d.ts.map +1 -0
- package/dist/jsx/jsx-types.js +1 -0
- package/dist/jsx/jsx-types.js.map +1 -0
- package/dist/mcp/client.d.ts +46 -0
- package/dist/mcp/client.d.ts.map +1 -0
- package/dist/mcp/client.js +138 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/component.d.ts +95 -0
- package/dist/mcp/component.d.ts.map +1 -0
- package/dist/mcp/component.js +185 -0
- package/dist/mcp/component.js.map +1 -0
- package/dist/mcp/create-mcp-tool.d.ts +191 -0
- package/dist/mcp/create-mcp-tool.d.ts.map +1 -0
- package/dist/mcp/create-mcp-tool.js +228 -0
- package/dist/mcp/create-mcp-tool.js.map +1 -0
- package/dist/mcp/index.d.ts +49 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +48 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/service.d.ts +39 -0
- package/dist/mcp/service.d.ts.map +1 -0
- package/dist/mcp/service.js +77 -0
- package/dist/mcp/service.js.map +1 -0
- package/dist/mcp/tool.d.ts +55 -0
- package/dist/mcp/tool.d.ts.map +1 -0
- package/dist/mcp/tool.js +119 -0
- package/dist/mcp/tool.js.map +1 -0
- package/dist/mcp/types.d.ts +72 -0
- package/dist/mcp/types.d.ts.map +1 -0
- package/dist/mcp/types.js +6 -0
- package/dist/mcp/types.js.map +1 -0
- package/dist/middleware/defaults.d.ts +9 -0
- package/dist/middleware/defaults.d.ts.map +1 -0
- package/dist/middleware/defaults.js +47 -0
- package/dist/middleware/defaults.js.map +1 -0
- package/dist/model/adapter-helpers.d.ts +161 -0
- package/dist/model/adapter-helpers.d.ts.map +1 -0
- package/dist/model/adapter-helpers.js +351 -0
- package/dist/model/adapter-helpers.js.map +1 -0
- package/dist/model/adapter.d.ts +399 -0
- package/dist/model/adapter.d.ts.map +1 -0
- package/dist/model/adapter.js +497 -0
- package/dist/model/adapter.js.map +1 -0
- package/dist/model/index.d.ts +54 -0
- package/dist/model/index.d.ts.map +1 -0
- package/dist/model/index.js +55 -0
- package/dist/model/index.js.map +1 -0
- package/dist/model/model-hooks.d.ts +45 -0
- package/dist/model/model-hooks.d.ts.map +1 -0
- package/dist/model/model-hooks.js +24 -0
- package/dist/model/model-hooks.js.map +1 -0
- package/dist/model/model.d.ts +302 -0
- package/dist/model/model.d.ts.map +1 -0
- package/dist/model/model.js +20 -0
- package/dist/model/model.js.map +1 -0
- package/dist/model/simple-adapter.d.ts +176 -0
- package/dist/model/simple-adapter.d.ts.map +1 -0
- package/dist/model/simple-adapter.js +264 -0
- package/dist/model/simple-adapter.js.map +1 -0
- package/dist/model/stream-accumulator.d.ts +284 -0
- package/dist/model/stream-accumulator.d.ts.map +1 -0
- package/dist/model/stream-accumulator.js +532 -0
- package/dist/model/stream-accumulator.js.map +1 -0
- package/dist/model/utils/index.d.ts +2 -0
- package/dist/model/utils/index.d.ts.map +1 -0
- package/dist/model/utils/index.js +2 -0
- package/dist/model/utils/index.js.map +1 -0
- package/dist/model/utils/language-model.d.ts +26 -0
- package/dist/model/utils/language-model.d.ts.map +1 -0
- package/dist/model/utils/language-model.js +706 -0
- package/dist/model/utils/language-model.js.map +1 -0
- package/dist/procedure/index.d.ts +20 -0
- package/dist/procedure/index.d.ts.map +1 -0
- package/dist/procedure/index.js +19 -0
- package/dist/procedure/index.js.map +1 -0
- package/dist/reconciler/devtools-bridge.d.ts +40 -0
- package/dist/reconciler/devtools-bridge.d.ts.map +1 -0
- package/dist/reconciler/devtools-bridge.js +79 -0
- package/dist/reconciler/devtools-bridge.js.map +1 -0
- package/dist/reconciler/host-config.d.ts +39 -0
- package/dist/reconciler/host-config.d.ts.map +1 -0
- package/dist/reconciler/host-config.js +195 -0
- package/dist/reconciler/host-config.js.map +1 -0
- package/dist/reconciler/index.d.ts +7 -0
- package/dist/reconciler/index.d.ts.map +1 -0
- package/dist/reconciler/index.js +7 -0
- package/dist/reconciler/index.js.map +1 -0
- package/dist/reconciler/reconciler.d.ts +47 -0
- package/dist/reconciler/reconciler.d.ts.map +1 -0
- package/dist/reconciler/reconciler.js +89 -0
- package/dist/reconciler/reconciler.js.map +1 -0
- package/dist/reconciler/types.d.ts +86 -0
- package/dist/reconciler/types.d.ts.map +1 -0
- package/dist/reconciler/types.js +37 -0
- package/dist/reconciler/types.js.map +1 -0
- package/dist/renderers/base.d.ts +98 -0
- package/dist/renderers/base.d.ts.map +1 -0
- package/dist/renderers/base.js +82 -0
- package/dist/renderers/base.js.map +1 -0
- package/dist/renderers/index.d.ts +31 -0
- package/dist/renderers/index.d.ts.map +1 -0
- package/dist/renderers/index.js +31 -0
- package/dist/renderers/index.js.map +1 -0
- package/dist/renderers/markdown.d.ts +48 -0
- package/dist/renderers/markdown.d.ts.map +1 -0
- package/dist/renderers/markdown.js +432 -0
- package/dist/renderers/markdown.js.map +1 -0
- package/dist/renderers/types.d.ts +7 -0
- package/dist/renderers/types.d.ts.map +1 -0
- package/dist/renderers/types.js +7 -0
- package/dist/renderers/types.js.map +1 -0
- package/dist/renderers/xml.d.ts +49 -0
- package/dist/renderers/xml.d.ts.map +1 -0
- package/dist/renderers/xml.js +444 -0
- package/dist/renderers/xml.js.map +1 -0
- package/dist/state/boundary.d.ts +347 -0
- package/dist/state/boundary.d.ts.map +1 -0
- package/dist/state/boundary.js +341 -0
- package/dist/state/boundary.js.map +1 -0
- package/dist/state/context.d.ts +138 -0
- package/dist/state/context.d.ts.map +1 -0
- package/dist/state/context.js +139 -0
- package/dist/state/context.js.map +1 -0
- package/dist/state/hooks.d.ts +798 -0
- package/dist/state/hooks.d.ts.map +1 -0
- package/dist/state/hooks.js +1437 -0
- package/dist/state/hooks.js.map +1 -0
- package/dist/state/index.d.ts +72 -0
- package/dist/state/index.d.ts.map +1 -0
- package/dist/state/index.js +73 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/signal.d.ts +223 -0
- package/dist/state/signal.d.ts.map +1 -0
- package/dist/state/signal.js +699 -0
- package/dist/state/signal.js.map +1 -0
- package/dist/state/use-state.d.ts +210 -0
- package/dist/state/use-state.d.ts.map +1 -0
- package/dist/state/use-state.js +327 -0
- package/dist/state/use-state.js.map +1 -0
- package/dist/tentickle-instance.d.ts +285 -0
- package/dist/tentickle-instance.d.ts.map +1 -0
- package/dist/tentickle-instance.js +700 -0
- package/dist/tentickle-instance.js.map +1 -0
- package/dist/testing/act.d.ts +59 -0
- package/dist/testing/act.d.ts.map +1 -0
- package/dist/testing/act.js +92 -0
- package/dist/testing/act.js.map +1 -0
- package/dist/testing/async-helpers.d.ts +99 -0
- package/dist/testing/async-helpers.d.ts.map +1 -0
- package/dist/testing/async-helpers.js +193 -0
- package/dist/testing/async-helpers.js.map +1 -0
- package/dist/testing/compile-agent.d.ts +101 -0
- package/dist/testing/compile-agent.d.ts.map +1 -0
- package/dist/testing/compile-agent.js +136 -0
- package/dist/testing/compile-agent.js.map +1 -0
- package/dist/testing/index.d.ts +57 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +59 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/mock-app.d.ts +163 -0
- package/dist/testing/mock-app.d.ts.map +1 -0
- package/dist/testing/mock-app.js +393 -0
- package/dist/testing/mock-app.js.map +1 -0
- package/dist/testing/mocks.d.ts +142 -0
- package/dist/testing/mocks.d.ts.map +1 -0
- package/dist/testing/mocks.js +191 -0
- package/dist/testing/mocks.js.map +1 -0
- package/dist/testing/render-agent.d.ts +146 -0
- package/dist/testing/render-agent.d.ts.map +1 -0
- package/dist/testing/render-agent.js +200 -0
- package/dist/testing/render-agent.js.map +1 -0
- package/dist/testing/test-adapter.d.ts +157 -0
- package/dist/testing/test-adapter.d.ts.map +1 -0
- package/dist/testing/test-adapter.js +297 -0
- package/dist/testing/test-adapter.js.map +1 -0
- package/dist/testing/test-model.d.ts +132 -0
- package/dist/testing/test-model.d.ts.map +1 -0
- package/dist/testing/test-model.js +260 -0
- package/dist/testing/test-model.js.map +1 -0
- package/dist/tool/index.d.ts +61 -0
- package/dist/tool/index.d.ts.map +1 -0
- package/dist/tool/index.js +63 -0
- package/dist/tool/index.js.map +1 -0
- package/dist/tool/tool-hooks.d.ts +45 -0
- package/dist/tool/tool-hooks.d.ts.map +1 -0
- package/dist/tool/tool-hooks.js +35 -0
- package/dist/tool/tool-hooks.js.map +1 -0
- package/dist/tool/tool.d.ts +403 -0
- package/dist/tool/tool.d.ts.map +1 -0
- package/dist/tool/tool.js +176 -0
- package/dist/tool/tool.js.map +1 -0
- package/dist/types.d.ts +442 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +97 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/abort-utils.d.ts +5 -0
- package/dist/utils/abort-utils.d.ts.map +1 -0
- package/dist/utils/abort-utils.js +50 -0
- package/dist/utils/abort-utils.js.map +1 -0
- package/dist/utils/classify-error.d.ts +19 -0
- package/dist/utils/classify-error.d.ts.map +1 -0
- package/dist/utils/classify-error.js +77 -0
- package/dist/utils/classify-error.js.map +1 -0
- package/dist/utils/index.d.ts +21 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +21 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/normalization.d.ts +6 -0
- package/dist/utils/normalization.d.ts.map +1 -0
- package/dist/utils/normalization.js +103 -0
- package/dist/utils/normalization.js.map +1 -0
- package/dist/utils/registry.d.ts +15 -0
- package/dist/utils/registry.d.ts.map +1 -0
- package/dist/utils/registry.js +28 -0
- package/dist/utils/registry.js.map +1 -0
- package/dist/utils/schema.d.ts +7 -0
- package/dist/utils/schema.d.ts.map +1 -0
- package/dist/utils/schema.js +13 -0
- package/dist/utils/schema.js.map +1 -0
- package/dist/utils/token-estimate.d.ts +87 -0
- package/dist/utils/token-estimate.d.ts.map +1 -0
- package/dist/utils/token-estimate.js +199 -0
- package/dist/utils/token-estimate.js.map +1 -0
- package/dist/v2/reconciler/host-config.d.ts +31 -0
- package/dist/v2/reconciler/host-config.d.ts.map +1 -0
- package/dist/v2/reconciler/host-config.js +197 -0
- package/dist/v2/reconciler/host-config.js.map +1 -0
- package/dist/v2/reconciler/index.d.ts +7 -0
- package/dist/v2/reconciler/index.d.ts.map +1 -0
- package/dist/v2/reconciler/index.js +7 -0
- package/dist/v2/reconciler/index.js.map +1 -0
- package/dist/v2/reconciler/reconciler.d.ts +39 -0
- package/dist/v2/reconciler/reconciler.d.ts.map +1 -0
- package/dist/v2/reconciler/reconciler.js +54 -0
- package/dist/v2/reconciler/reconciler.js.map +1 -0
- package/dist/v2/reconciler/types.d.ts +64 -0
- package/dist/v2/reconciler/types.d.ts.map +1 -0
- package/dist/v2/reconciler/types.js +20 -0
- package/dist/v2/reconciler/types.js.map +1 -0
- package/dist/v2/renderers/index.d.ts +7 -0
- package/dist/v2/renderers/index.d.ts.map +1 -0
- package/dist/v2/renderers/index.js +7 -0
- package/dist/v2/renderers/index.js.map +1 -0
- package/dist/v2/renderers/markdown.d.ts +16 -0
- package/dist/v2/renderers/markdown.d.ts.map +1 -0
- package/dist/v2/renderers/markdown.js +65 -0
- package/dist/v2/renderers/markdown.js.map +1 -0
- package/dist/v2/renderers/types.d.ts +26 -0
- package/dist/v2/renderers/types.d.ts.map +1 -0
- package/dist/v2/renderers/types.js +6 -0
- package/dist/v2/renderers/types.js.map +1 -0
- package/dist/v2/renderers/xml.d.ts +17 -0
- package/dist/v2/renderers/xml.d.ts.map +1 -0
- package/dist/v2/renderers/xml.js +73 -0
- package/dist/v2/renderers/xml.js.map +1 -0
- package/package.json +49 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import { Context } from "./context";
|
|
3
|
+
import { Telemetry } from "./telemetry";
|
|
4
|
+
/**
|
|
5
|
+
* Core Channel primitive.
|
|
6
|
+
* Works standalone in any Node environment.
|
|
7
|
+
* Uses EventEmitter internally for pub/sub.
|
|
8
|
+
*/
|
|
9
|
+
export class Channel {
|
|
10
|
+
name;
|
|
11
|
+
emitter = new EventEmitter();
|
|
12
|
+
pendingRequests = new Map();
|
|
13
|
+
// Store recent responses to handle race conditions (response before wait)
|
|
14
|
+
recentResponses = new Map();
|
|
15
|
+
constructor(name) {
|
|
16
|
+
this.name = name;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Publish an event to the channel.
|
|
20
|
+
*/
|
|
21
|
+
publish(event) {
|
|
22
|
+
// Ensure channel name matches
|
|
23
|
+
const normalizedEvent = {
|
|
24
|
+
...event,
|
|
25
|
+
channel: this.name,
|
|
26
|
+
metadata: {
|
|
27
|
+
timestamp: Date.now(),
|
|
28
|
+
...event.metadata,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
// Track channel events as metrics
|
|
32
|
+
const ctx = Context.tryGet();
|
|
33
|
+
if (ctx?.procedureGraph && ctx.procedurePid) {
|
|
34
|
+
const node = ctx.procedureGraph.get(ctx.procedurePid);
|
|
35
|
+
if (node) {
|
|
36
|
+
// Track as metric in node
|
|
37
|
+
node.addMetric(`channel.${this.name}.events`, 1);
|
|
38
|
+
// Also track in context metrics (for consistency)
|
|
39
|
+
if (ctx.metrics) {
|
|
40
|
+
ctx.metrics[`channel.${this.name}.events`] =
|
|
41
|
+
(ctx.metrics[`channel.${this.name}.events`] || 0) + 1;
|
|
42
|
+
}
|
|
43
|
+
// Send to telemetry immediately
|
|
44
|
+
Telemetry.getCounter(`channel.${this.name}.events`).add(1, {
|
|
45
|
+
channel: this.name,
|
|
46
|
+
event_type: normalizedEvent.type,
|
|
47
|
+
procedure: node.name || "anonymous",
|
|
48
|
+
procedure_pid: node.pid,
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
// Emit to all subscribers
|
|
53
|
+
this.emitter.emit("event", normalizedEvent);
|
|
54
|
+
// If this is a response, resolve any pending requests or store for later
|
|
55
|
+
if (normalizedEvent.type === "response" && normalizedEvent.id) {
|
|
56
|
+
const responseId = normalizedEvent.id; // Type guard
|
|
57
|
+
const pending = this.pendingRequests.get(responseId);
|
|
58
|
+
if (pending) {
|
|
59
|
+
clearTimeout(pending.timeout);
|
|
60
|
+
this.pendingRequests.delete(responseId);
|
|
61
|
+
pending.resolve(normalizedEvent);
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// Store response in case waitForResponse is called later (race condition)
|
|
65
|
+
this.recentResponses.set(responseId, normalizedEvent);
|
|
66
|
+
// Clean up after 5 seconds
|
|
67
|
+
setTimeout(() => {
|
|
68
|
+
this.recentResponses.delete(responseId);
|
|
69
|
+
}, 5000);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Subscribe to events on this channel.
|
|
75
|
+
* @returns Unsubscribe function
|
|
76
|
+
*/
|
|
77
|
+
subscribe(handler) {
|
|
78
|
+
this.emitter.on("event", handler);
|
|
79
|
+
return () => {
|
|
80
|
+
this.emitter.off("event", handler);
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Wait for a response to a specific request.
|
|
85
|
+
* Used by tools/components for bidirectional communication.
|
|
86
|
+
*
|
|
87
|
+
* @param requestId The request ID to wait for
|
|
88
|
+
* @param timeoutMs Timeout in milliseconds (default: 30000)
|
|
89
|
+
* @returns Promise that resolves when response is received
|
|
90
|
+
*/
|
|
91
|
+
waitForResponse(requestId, timeoutMs = 30000) {
|
|
92
|
+
return new Promise((resolve, reject) => {
|
|
93
|
+
// Check if response was already received (race condition: response before wait)
|
|
94
|
+
const cachedResponse = this.recentResponses.get(requestId);
|
|
95
|
+
if (cachedResponse) {
|
|
96
|
+
this.recentResponses.delete(requestId);
|
|
97
|
+
resolve(cachedResponse);
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
const timeout = setTimeout(() => {
|
|
101
|
+
this.pendingRequests.delete(requestId);
|
|
102
|
+
reject(new Error(`Channel "${this.name}": Request "${requestId}" timed out after ${timeoutMs}ms`));
|
|
103
|
+
}, timeoutMs);
|
|
104
|
+
this.pendingRequests.set(requestId, {
|
|
105
|
+
resolve,
|
|
106
|
+
reject,
|
|
107
|
+
timeout,
|
|
108
|
+
});
|
|
109
|
+
// Subscribe to catch responses that arrive after we set up the pending request
|
|
110
|
+
const unsubscribe = this.subscribe((event) => {
|
|
111
|
+
if (event.type === "response" && event.id === requestId) {
|
|
112
|
+
unsubscribe();
|
|
113
|
+
clearTimeout(timeout);
|
|
114
|
+
this.pendingRequests.delete(requestId);
|
|
115
|
+
resolve(event);
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get the number of active subscribers.
|
|
122
|
+
*/
|
|
123
|
+
getSubscriberCount() {
|
|
124
|
+
return this.emitter.listenerCount("event");
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Cleanup: remove all subscribers and pending requests.
|
|
128
|
+
*/
|
|
129
|
+
destroy() {
|
|
130
|
+
// Reject all pending requests
|
|
131
|
+
for (const [requestId, pending] of this.pendingRequests.entries()) {
|
|
132
|
+
clearTimeout(pending.timeout);
|
|
133
|
+
pending.reject(new Error(`Channel "${this.name}" destroyed while waiting for request "${requestId}"`));
|
|
134
|
+
}
|
|
135
|
+
this.pendingRequests.clear();
|
|
136
|
+
// Clear cached responses
|
|
137
|
+
this.recentResponses.clear();
|
|
138
|
+
// Remove all listeners
|
|
139
|
+
this.emitter.removeAllListeners();
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Channel session manages a collection of channels.
|
|
144
|
+
* Sessions persist across multiple engine executions.
|
|
145
|
+
*/
|
|
146
|
+
export class ChannelSession {
|
|
147
|
+
id;
|
|
148
|
+
channels = new Map();
|
|
149
|
+
createdAt;
|
|
150
|
+
lastActivity;
|
|
151
|
+
constructor(id) {
|
|
152
|
+
this.id = id;
|
|
153
|
+
this.createdAt = Date.now();
|
|
154
|
+
this.lastActivity = Date.now();
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Get or create a channel within this session.
|
|
158
|
+
*/
|
|
159
|
+
getChannel(name) {
|
|
160
|
+
if (!this.channels.has(name)) {
|
|
161
|
+
this.channels.set(name, new Channel(name));
|
|
162
|
+
}
|
|
163
|
+
this.lastActivity = Date.now();
|
|
164
|
+
return this.channels.get(name);
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Remove a channel from the session.
|
|
168
|
+
*/
|
|
169
|
+
removeChannel(name) {
|
|
170
|
+
const channel = this.channels.get(name);
|
|
171
|
+
if (channel) {
|
|
172
|
+
channel.destroy();
|
|
173
|
+
this.channels.delete(name);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* Default session ID generator.
|
|
178
|
+
* Uses user context + conversation ID or trace ID.
|
|
179
|
+
* Users can override this via ChannelService config.
|
|
180
|
+
*/
|
|
181
|
+
static generateId(ctx) {
|
|
182
|
+
const userId = ctx.user?.id || "anonymous";
|
|
183
|
+
// Use conversationId if present and not 'na', otherwise fall back to traceId
|
|
184
|
+
const conversationId = ctx.metadata["conversationId"] && ctx.metadata["conversationId"] !== "na"
|
|
185
|
+
? ctx.metadata["conversationId"]
|
|
186
|
+
: ctx.traceId;
|
|
187
|
+
return `${userId}-${conversationId}`;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Cleanup all channels in the session.
|
|
191
|
+
*/
|
|
192
|
+
destroy() {
|
|
193
|
+
for (const channel of this.channels.values()) {
|
|
194
|
+
channel.destroy();
|
|
195
|
+
}
|
|
196
|
+
this.channels.clear();
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"channel.js","sourceRoot":"","sources":["../../src/core/channel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
import { EventEmitter } from "node:events";
|
|
2
|
+
import { type ChannelServiceInterface } from "./channel";
|
|
3
|
+
import { ProcedureGraph } from "./procedure-graph";
|
|
4
|
+
import type { ProcedureNode } from "./procedure-graph";
|
|
5
|
+
import type { Middleware } from "./procedure";
|
|
6
|
+
/**
|
|
7
|
+
* User information associated with the current execution context.
|
|
8
|
+
*
|
|
9
|
+
* This is typically populated from authentication/authorization systems
|
|
10
|
+
* and flows through all operations via the `KernelContext`.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const ctx = Context.create({
|
|
15
|
+
* user: {
|
|
16
|
+
* id: 'user-123',
|
|
17
|
+
* tenantId: 'tenant-abc',
|
|
18
|
+
* roles: ['admin', 'editor'],
|
|
19
|
+
* email: 'user@example.com', // Custom fields allowed
|
|
20
|
+
* }
|
|
21
|
+
* });
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* @see {@link KernelContext.user} - Where user context is stored
|
|
25
|
+
*/
|
|
26
|
+
export interface UserContext {
|
|
27
|
+
/** Unique identifier for the user */
|
|
28
|
+
id: string;
|
|
29
|
+
/** Multi-tenant organization identifier */
|
|
30
|
+
tenantId?: string;
|
|
31
|
+
/** User's roles for authorization */
|
|
32
|
+
roles?: string[];
|
|
33
|
+
/** Additional user properties (extensible) */
|
|
34
|
+
[key: string]: any;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Event emitted during procedure execution.
|
|
38
|
+
*
|
|
39
|
+
* Events are emitted to both the global request bus (`ctx.events`)
|
|
40
|
+
* and the operation handle (`ctx.executionHandle`) if present.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```typescript
|
|
44
|
+
* ctx.events.on('stream:chunk', (event: ExecutionEvent) => {
|
|
45
|
+
* console.log(`[${event.source}] ${event.type}:`, event.payload);
|
|
46
|
+
* });
|
|
47
|
+
*
|
|
48
|
+
* // Listen to all events
|
|
49
|
+
* ctx.events.on('*', (event: ExecutionEvent) => {
|
|
50
|
+
* console.log(`Event: ${event.type}`);
|
|
51
|
+
* });
|
|
52
|
+
* ```
|
|
53
|
+
*
|
|
54
|
+
* @see {@link Context.emit} - Emit events to the current context
|
|
55
|
+
*/
|
|
56
|
+
export interface ExecutionEvent {
|
|
57
|
+
/** Event type (e.g., 'stream:chunk', 'procedure:error') */
|
|
58
|
+
type: string;
|
|
59
|
+
/** Event payload data */
|
|
60
|
+
payload: any;
|
|
61
|
+
/** Unix timestamp when the event occurred */
|
|
62
|
+
timestamp: number;
|
|
63
|
+
/** Source of the event (e.g., 'agent:sales', 'model:openai') */
|
|
64
|
+
source: string;
|
|
65
|
+
/** Trace ID for correlation (distributed tracing) */
|
|
66
|
+
traceId: string;
|
|
67
|
+
/** Request ID for this execution context */
|
|
68
|
+
requestId?: string;
|
|
69
|
+
/** Execution ID from context (auto-populated if available) */
|
|
70
|
+
executionId?: string;
|
|
71
|
+
/** Parent execution ID for nested executions (fork, spawn, component_tool) */
|
|
72
|
+
parentExecutionId?: string;
|
|
73
|
+
/** Procedure ID from context (auto-populated if available) */
|
|
74
|
+
procedureId?: string;
|
|
75
|
+
/** Current tick number if in a tick context */
|
|
76
|
+
tick?: number;
|
|
77
|
+
/** User ID from context (for attribution and multi-tenant filtering) */
|
|
78
|
+
userId?: string;
|
|
79
|
+
/** Tenant ID from context (for multi-tenant dashboards) */
|
|
80
|
+
tenantId?: string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Extensible metadata storage within the context.
|
|
84
|
+
*
|
|
85
|
+
* Use this to store application-specific data that should flow
|
|
86
|
+
* through the execution context.
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```typescript
|
|
90
|
+
* const ctx = Context.create({
|
|
91
|
+
* metadata: {
|
|
92
|
+
* conversationId: 'conv-123',
|
|
93
|
+
* feature_flags: { beta: true },
|
|
94
|
+
* }
|
|
95
|
+
* });
|
|
96
|
+
*
|
|
97
|
+
* // Access later
|
|
98
|
+
* const convId = Context.get().metadata.conversationId;
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export interface ContextMetadata extends Record<string, any> {
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Metrics accumulated during procedure execution.
|
|
105
|
+
*
|
|
106
|
+
* Metrics are automatically propagated from child procedures to parents
|
|
107
|
+
* when execution completes.
|
|
108
|
+
*
|
|
109
|
+
* @example
|
|
110
|
+
* ```typescript
|
|
111
|
+
* // In a procedure
|
|
112
|
+
* addMetric(ctx, 'tokens.input', 100);
|
|
113
|
+
* addMetric(ctx, 'api_calls', 1);
|
|
114
|
+
*
|
|
115
|
+
* // After execution, parent has accumulated metrics
|
|
116
|
+
* const totalTokens = ctx.metrics['tokens.input'];
|
|
117
|
+
* ```
|
|
118
|
+
*
|
|
119
|
+
* @see {@link addMetric} - Accumulate a metric value
|
|
120
|
+
* @see {@link getUsageMetrics} - Get token usage metrics
|
|
121
|
+
*/
|
|
122
|
+
export interface ContextMetrics extends Record<string, any> {
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Execution context that flows through all async operations via AsyncLocalStorage.
|
|
126
|
+
*
|
|
127
|
+
* The `KernelContext` contains all state needed during execution:
|
|
128
|
+
* - Identity and tracing (requestId, traceId, user)
|
|
129
|
+
* - Event buses (events, executionHandle)
|
|
130
|
+
* - Cancellation (signal)
|
|
131
|
+
* - Communication (channels)
|
|
132
|
+
* - Execution tracking (procedureGraph, procedurePid, origin)
|
|
133
|
+
* - Extensible storage (metadata, metrics)
|
|
134
|
+
*
|
|
135
|
+
* Access the current context with `Context.get()` from anywhere in your code -
|
|
136
|
+
* no need to pass it explicitly through function calls.
|
|
137
|
+
*
|
|
138
|
+
* @example Creating and running with context
|
|
139
|
+
* ```typescript
|
|
140
|
+
* const ctx = Context.create({
|
|
141
|
+
* user: { id: 'user-1' },
|
|
142
|
+
* metadata: { conversationId: 'conv-123' }
|
|
143
|
+
* });
|
|
144
|
+
*
|
|
145
|
+
* await Context.run(ctx, async () => {
|
|
146
|
+
* // Context is available here and in all async calls
|
|
147
|
+
* const current = Context.get();
|
|
148
|
+
* console.log(current.user?.id); // 'user-1'
|
|
149
|
+
* });
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* @example Extending for your application
|
|
153
|
+
* ```typescript
|
|
154
|
+
* interface AppContext extends KernelContext {
|
|
155
|
+
* customHandle?: MyCustomHandle;
|
|
156
|
+
* appMetadata: AppSpecificMetadata;
|
|
157
|
+
* }
|
|
158
|
+
* ```
|
|
159
|
+
*
|
|
160
|
+
* @see {@link Context} - Static methods to create/access context
|
|
161
|
+
* @see {@link UserContext} - User information structure
|
|
162
|
+
*/
|
|
163
|
+
export interface KernelContext {
|
|
164
|
+
/** Unique identifier for this request/execution */
|
|
165
|
+
requestId: string;
|
|
166
|
+
/** Correlation ID for distributed tracing */
|
|
167
|
+
traceId: string;
|
|
168
|
+
/** User information (from auth) */
|
|
169
|
+
user?: UserContext;
|
|
170
|
+
/** Application-specific metadata */
|
|
171
|
+
metadata: ContextMetadata;
|
|
172
|
+
/** Accumulated execution metrics */
|
|
173
|
+
metrics: ContextMetrics;
|
|
174
|
+
/** Global request event bus for subscribing to all events */
|
|
175
|
+
events: EventEmitter;
|
|
176
|
+
/** Abort signal for cooperative cancellation */
|
|
177
|
+
signal?: AbortSignal;
|
|
178
|
+
/** Operation-specific event emitter (from `.withHandle()`) */
|
|
179
|
+
executionHandle?: EventEmitter;
|
|
180
|
+
/**
|
|
181
|
+
* Channel service for bidirectional communication (optional).
|
|
182
|
+
* Injected by Engine when channels are configured.
|
|
183
|
+
* Tools and components can access channels via this service.
|
|
184
|
+
*/
|
|
185
|
+
channels?: ChannelServiceInterface;
|
|
186
|
+
/**
|
|
187
|
+
* Procedure graph for tracking procedure execution hierarchy.
|
|
188
|
+
* Automatically initialized when first procedure is executed.
|
|
189
|
+
*/
|
|
190
|
+
procedureGraph?: ProcedureGraph;
|
|
191
|
+
/**
|
|
192
|
+
* Current procedure PID (for tracking nested procedures).
|
|
193
|
+
*/
|
|
194
|
+
procedurePid?: string;
|
|
195
|
+
/** Current procedure node in the graph */
|
|
196
|
+
procedureNode?: ProcedureNode;
|
|
197
|
+
/**
|
|
198
|
+
* Origin procedure node - the root procedure that initiated this execution chain.
|
|
199
|
+
* Undefined for the root procedure itself (since it IS the origin).
|
|
200
|
+
* Set automatically by ExecutionTracker when procedures are executed.
|
|
201
|
+
*/
|
|
202
|
+
origin?: ProcedureNode;
|
|
203
|
+
/**
|
|
204
|
+
* Current execution ID. Set when entering an execution boundary.
|
|
205
|
+
* All procedures within this execution share this ID.
|
|
206
|
+
*/
|
|
207
|
+
executionId?: string;
|
|
208
|
+
/**
|
|
209
|
+
* Type of execution at this boundary (e.g., 'engine', 'model', 'component_tool', 'fork', 'spawn').
|
|
210
|
+
* Only meaningful at execution boundaries.
|
|
211
|
+
*/
|
|
212
|
+
executionType?: string;
|
|
213
|
+
/**
|
|
214
|
+
* Parent execution ID for nested executions (e.g., component_tool called from engine).
|
|
215
|
+
* Enables DevTools to show execution hierarchy.
|
|
216
|
+
*/
|
|
217
|
+
parentExecutionId?: string;
|
|
218
|
+
/**
|
|
219
|
+
* Current tick number (set by engine during tick loop).
|
|
220
|
+
* Enables events to include tick context for correlation.
|
|
221
|
+
*/
|
|
222
|
+
tick?: number;
|
|
223
|
+
/**
|
|
224
|
+
* Middleware registry for procedure execution.
|
|
225
|
+
* Procedures read this at execution time to get instance-level middleware.
|
|
226
|
+
* Typically set by createApp() from the Tentickle instance.
|
|
227
|
+
*/
|
|
228
|
+
middleware?: {
|
|
229
|
+
getMiddlewareFor(procedureName: string): Middleware[];
|
|
230
|
+
};
|
|
231
|
+
/**
|
|
232
|
+
* Type brand for context detection
|
|
233
|
+
*/
|
|
234
|
+
[KERNEL_CONTEXT_SYMBOL]?: boolean;
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Static class for managing execution context via AsyncLocalStorage.
|
|
238
|
+
*
|
|
239
|
+
* Context flows automatically through all async operations without explicit passing.
|
|
240
|
+
* Use `Context.run()` to establish context, and `Context.get()` to access it.
|
|
241
|
+
*
|
|
242
|
+
* @example Basic usage
|
|
243
|
+
* ```typescript
|
|
244
|
+
* // Create and run with context
|
|
245
|
+
* const ctx = Context.create({ user: { id: 'user-1' } });
|
|
246
|
+
* await Context.run(ctx, async () => {
|
|
247
|
+
* const current = Context.get();
|
|
248
|
+
* console.log(current.user?.id); // 'user-1'
|
|
249
|
+
*
|
|
250
|
+
* // Context flows to nested calls
|
|
251
|
+
* await someAsyncFunction(); // Can access Context.get() inside
|
|
252
|
+
* });
|
|
253
|
+
* ```
|
|
254
|
+
*
|
|
255
|
+
* @example Parallel execution with child contexts
|
|
256
|
+
* ```typescript
|
|
257
|
+
* // Each parallel task gets its own context to avoid races
|
|
258
|
+
* const [a, b] = await Promise.all([
|
|
259
|
+
* Context.fork({ procedurePid: 'task-1' }, () => doTask1()),
|
|
260
|
+
* Context.fork({ procedurePid: 'task-2' }, () => doTask2()),
|
|
261
|
+
* ]);
|
|
262
|
+
* ```
|
|
263
|
+
*
|
|
264
|
+
* @example Emitting events
|
|
265
|
+
* ```typescript
|
|
266
|
+
* // Events go to both global bus and operation handle
|
|
267
|
+
* Context.emit('progress', { percent: 50 }, 'my-tool');
|
|
268
|
+
* ```
|
|
269
|
+
*
|
|
270
|
+
* @see {@link KernelContext} - The context interface
|
|
271
|
+
* @see {@link context} - Brand an object as context for procedure detection
|
|
272
|
+
*/
|
|
273
|
+
export declare class Context {
|
|
274
|
+
/**
|
|
275
|
+
* Creates a new root context with default values.
|
|
276
|
+
*
|
|
277
|
+
* @param overrides - Partial context to merge with defaults
|
|
278
|
+
* @returns A new KernelContext
|
|
279
|
+
*
|
|
280
|
+
* @example
|
|
281
|
+
* ```typescript
|
|
282
|
+
* const ctx = Context.create({
|
|
283
|
+
* user: { id: 'user-1' },
|
|
284
|
+
* metadata: { feature: 'chat' }
|
|
285
|
+
* });
|
|
286
|
+
* ```
|
|
287
|
+
*/
|
|
288
|
+
static create(overrides?: Partial<Omit<KernelContext, "events">>): KernelContext;
|
|
289
|
+
static brand(ctx: Partial<KernelContext>): KernelContext;
|
|
290
|
+
/**
|
|
291
|
+
* Runs a function within the given context.
|
|
292
|
+
* All async operations within `fn` will have access to this context.
|
|
293
|
+
*
|
|
294
|
+
* @param context - The context to run within
|
|
295
|
+
* @param fn - Async function to execute
|
|
296
|
+
* @returns The result of the function
|
|
297
|
+
*/
|
|
298
|
+
static run<T>(ctx: Partial<KernelContext>, fn: () => Promise<T>): Promise<T>;
|
|
299
|
+
/**
|
|
300
|
+
* Creates a child context that inherits from the current context (or creates a new root).
|
|
301
|
+
* The child context is a shallow copy - objects like `events`, `procedureGraph`, and `channels`
|
|
302
|
+
* are shared with the parent (intentionally, for coordination).
|
|
303
|
+
*
|
|
304
|
+
* Scalar values like `procedurePid`, `procedureNode`, and `origin` can be safely
|
|
305
|
+
* overridden in the child without affecting the parent.
|
|
306
|
+
*
|
|
307
|
+
* @param overrides - Properties to override in the child context
|
|
308
|
+
* @returns A new context object inheriting from the current context
|
|
309
|
+
*
|
|
310
|
+
* @example
|
|
311
|
+
* ```typescript
|
|
312
|
+
* // Create child context with new procedure ID
|
|
313
|
+
* const childCtx = Context.child({ procedurePid: 'new-pid' });
|
|
314
|
+
* await Context.run(childCtx, async () => {
|
|
315
|
+
* // This context has its own procedurePid but shares events, graph, etc.
|
|
316
|
+
* });
|
|
317
|
+
* ```
|
|
318
|
+
*/
|
|
319
|
+
static child(overrides?: Partial<KernelContext>): KernelContext;
|
|
320
|
+
/**
|
|
321
|
+
* Creates a child context and runs a function within it.
|
|
322
|
+
* Convenience method combining `child()` and `run()`.
|
|
323
|
+
*
|
|
324
|
+
* This is the safe way to run parallel procedures - each gets its own
|
|
325
|
+
* context object so mutations don't race.
|
|
326
|
+
*
|
|
327
|
+
* @param overrides - Properties to override in the child context
|
|
328
|
+
* @param fn - Function to run within the child context
|
|
329
|
+
* @returns The result of the function
|
|
330
|
+
*
|
|
331
|
+
* @example
|
|
332
|
+
* ```typescript
|
|
333
|
+
* // Run parallel procedures safely
|
|
334
|
+
* const [result1, result2] = await Promise.all([
|
|
335
|
+
* Context.fork({ procedurePid: 'proc-1' }, async () => doWork1()),
|
|
336
|
+
* Context.fork({ procedurePid: 'proc-2' }, async () => doWork2()),
|
|
337
|
+
* ]);
|
|
338
|
+
* ```
|
|
339
|
+
*/
|
|
340
|
+
static fork<T>(overrides: Partial<KernelContext>, fn: () => Promise<T>): Promise<T>;
|
|
341
|
+
/**
|
|
342
|
+
* Gets the current context. Throws if not found.
|
|
343
|
+
*/
|
|
344
|
+
static get(): KernelContext;
|
|
345
|
+
/**
|
|
346
|
+
* Gets the current context or returns undefined if not found.
|
|
347
|
+
*/
|
|
348
|
+
static tryGet(): KernelContext | undefined;
|
|
349
|
+
/**
|
|
350
|
+
* Set the current tick number in the context.
|
|
351
|
+
* Called by the engine at the start of each tick.
|
|
352
|
+
*/
|
|
353
|
+
static setTick(tick: number): void;
|
|
354
|
+
/**
|
|
355
|
+
* Helper to emit an event on the current context.
|
|
356
|
+
* Events are broadcast to:
|
|
357
|
+
* 1. The context's local event bus (ctx.events)
|
|
358
|
+
* 2. The operation handle (ctx.executionHandle) if present
|
|
359
|
+
* 3. All global subscribers registered via subscribeGlobal()
|
|
360
|
+
*/
|
|
361
|
+
static emit(type: string, payload: any, source?: string): void;
|
|
362
|
+
/**
|
|
363
|
+
* Subscribe to ALL context events globally.
|
|
364
|
+
* This is useful for observability tools like DevTools that need to see
|
|
365
|
+
* all procedure:start/end/error events across all contexts.
|
|
366
|
+
*
|
|
367
|
+
* @param handler - Callback that receives every event with its context
|
|
368
|
+
* @returns Unsubscribe function
|
|
369
|
+
*
|
|
370
|
+
* @example
|
|
371
|
+
* ```typescript
|
|
372
|
+
* const unsubscribe = Context.subscribeGlobal((event, ctx) => {
|
|
373
|
+
* if (event.type === 'procedure:start') {
|
|
374
|
+
* console.log(`Procedure ${event.payload.name} started`);
|
|
375
|
+
* }
|
|
376
|
+
* });
|
|
377
|
+
*
|
|
378
|
+
* // Later, to stop receiving events:
|
|
379
|
+
* unsubscribe();
|
|
380
|
+
* ```
|
|
381
|
+
*/
|
|
382
|
+
static subscribeGlobal(handler: (event: ExecutionEvent, ctx: KernelContext) => void): () => void;
|
|
383
|
+
/**
|
|
384
|
+
* Check if there are any global subscribers.
|
|
385
|
+
* Useful for conditional event emission to avoid overhead when no one is listening.
|
|
386
|
+
*/
|
|
387
|
+
static hasGlobalSubscribers(): boolean;
|
|
388
|
+
}
|
|
389
|
+
export declare class ContextProvider {
|
|
390
|
+
withContext<T>(context: KernelContext, fn: () => Promise<T>): Promise<T>;
|
|
391
|
+
}
|
|
392
|
+
/**
|
|
393
|
+
* Symbol used to brand context objects for deterministic detection.
|
|
394
|
+
* This allows procedures to distinguish context from regular arguments.
|
|
395
|
+
*/
|
|
396
|
+
export declare const KERNEL_CONTEXT_SYMBOL: unique symbol;
|
|
397
|
+
/**
|
|
398
|
+
* Brand a context object with a Symbol for deterministic detection.
|
|
399
|
+
* This allows procedures to deterministically identify context vs regular args.
|
|
400
|
+
*
|
|
401
|
+
* @example
|
|
402
|
+
* ```typescript
|
|
403
|
+
* await proc(input, agent, context({ traceId: "123" }));
|
|
404
|
+
* ```
|
|
405
|
+
*/
|
|
406
|
+
export declare function context(ctx: Partial<KernelContext>): Partial<KernelContext>;
|
|
407
|
+
/**
|
|
408
|
+
* Check if an object is a branded context (deterministic check via Symbol).
|
|
409
|
+
* This is 100% reliable - no heuristics needed.
|
|
410
|
+
*/
|
|
411
|
+
export declare function isKernelContext(obj: any): obj is Partial<KernelContext>;
|
|
412
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/core/context.ts"],"names":[],"mappings":"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"}
|