@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,700 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agentick Configuration Instance
|
|
3
|
+
*
|
|
4
|
+
* `Agentick` is the default global instance. Users interact with instances, never the class directly.
|
|
5
|
+
*
|
|
6
|
+
* ```typescript
|
|
7
|
+
* import { Agentick, createApp } from 'agentick';
|
|
8
|
+
*
|
|
9
|
+
* // Configure global instance
|
|
10
|
+
* Agentick.use('*', loggingMiddleware);
|
|
11
|
+
* Agentick.use('tool:*', authMiddleware);
|
|
12
|
+
*
|
|
13
|
+
* // createApp uses Agentick by default
|
|
14
|
+
* const app = createApp(MyAgent, { model });
|
|
15
|
+
*
|
|
16
|
+
* // Create a scoped instance (inherits from Agentick)
|
|
17
|
+
* const scoped = Agentick.create();
|
|
18
|
+
* scoped.use('model:generate', rateLimitMiddleware);
|
|
19
|
+
* const scopedApp = scoped.createApp(MyAgent, { model });
|
|
20
|
+
*
|
|
21
|
+
* // Create isolated instance (no inheritance)
|
|
22
|
+
* const isolated = Agentick.create({ inheritDefaults: false });
|
|
23
|
+
* ```
|
|
24
|
+
*
|
|
25
|
+
* @module agentick/@agentick/instance
|
|
26
|
+
*/
|
|
27
|
+
import { createProcedure, } from "@agentick/kernel";
|
|
28
|
+
import { SessionImpl } from "./app/session";
|
|
29
|
+
import { createSessionStore } from "./app/sqlite-session-store";
|
|
30
|
+
class SessionRegistry {
|
|
31
|
+
options;
|
|
32
|
+
sessions = new Map();
|
|
33
|
+
lastActivity = new Map();
|
|
34
|
+
sweepTimer;
|
|
35
|
+
// Resolved options
|
|
36
|
+
store;
|
|
37
|
+
idleTimeout;
|
|
38
|
+
maxActive;
|
|
39
|
+
autoHibernate;
|
|
40
|
+
constructor(options) {
|
|
41
|
+
this.options = options;
|
|
42
|
+
// Resolve options with backwards compatibility
|
|
43
|
+
const sessionsConfig = options.sessions ?? {};
|
|
44
|
+
// Resolve store configuration (string path, config object, or SessionStore instance)
|
|
45
|
+
this.store = createSessionStore(sessionsConfig.store);
|
|
46
|
+
this.idleTimeout = sessionsConfig.idleTimeout ?? 0;
|
|
47
|
+
this.maxActive = sessionsConfig.maxActive ?? 0;
|
|
48
|
+
this.autoHibernate = sessionsConfig.autoHibernate ?? !!this.store;
|
|
49
|
+
// Start sweep timer if we have an idle timeout
|
|
50
|
+
if (this.idleTimeout > 0) {
|
|
51
|
+
const interval = Math.max(1000, Math.min(this.idleTimeout, 30000));
|
|
52
|
+
this.sweepTimer = setInterval(() => this.sweep(), interval);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
get(sessionId) {
|
|
56
|
+
const session = this.sessions.get(sessionId);
|
|
57
|
+
if (session) {
|
|
58
|
+
this.touch(sessionId);
|
|
59
|
+
}
|
|
60
|
+
return session;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Try to get a session, hydrating from store if necessary.
|
|
64
|
+
* Returns undefined if session doesn't exist anywhere.
|
|
65
|
+
*/
|
|
66
|
+
async getOrHydrate(sessionId, createSession) {
|
|
67
|
+
// Check in-memory first
|
|
68
|
+
const existing = this.get(sessionId);
|
|
69
|
+
if (existing) {
|
|
70
|
+
return existing;
|
|
71
|
+
}
|
|
72
|
+
// Try to hydrate from store
|
|
73
|
+
if (!this.store) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
const snapshot = await this.store.load(sessionId);
|
|
77
|
+
if (!snapshot) {
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
// Call onBeforeHydrate hook
|
|
81
|
+
if (this.options.onBeforeHydrate) {
|
|
82
|
+
const result = await this.options.onBeforeHydrate(sessionId, snapshot);
|
|
83
|
+
if (result === false) {
|
|
84
|
+
return undefined; // Hydration cancelled
|
|
85
|
+
}
|
|
86
|
+
if (result && typeof result === "object" && "version" in result) {
|
|
87
|
+
// Use modified snapshot
|
|
88
|
+
const session = createSession(result);
|
|
89
|
+
this.register(session.id, session);
|
|
90
|
+
// Call onAfterHydrate
|
|
91
|
+
await this.options.onAfterHydrate?.(session, result);
|
|
92
|
+
// Delete from store since it's now in memory
|
|
93
|
+
await this.store.delete(sessionId);
|
|
94
|
+
return session;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// Create session from snapshot
|
|
98
|
+
const session = createSession(snapshot);
|
|
99
|
+
this.register(session.id, session);
|
|
100
|
+
// Call onAfterHydrate
|
|
101
|
+
await this.options.onAfterHydrate?.(session, snapshot);
|
|
102
|
+
// Delete from store since it's now in memory
|
|
103
|
+
await this.store.delete(sessionId);
|
|
104
|
+
return session;
|
|
105
|
+
}
|
|
106
|
+
register(sessionId, session) {
|
|
107
|
+
this.sessions.set(sessionId, session);
|
|
108
|
+
this.touch(sessionId);
|
|
109
|
+
this.enforceMaxActive();
|
|
110
|
+
}
|
|
111
|
+
has(sessionId) {
|
|
112
|
+
return this.sessions.has(sessionId);
|
|
113
|
+
}
|
|
114
|
+
async isHibernated(sessionId) {
|
|
115
|
+
if (!this.store) {
|
|
116
|
+
return false;
|
|
117
|
+
}
|
|
118
|
+
if (this.store.has) {
|
|
119
|
+
return this.store.has(sessionId);
|
|
120
|
+
}
|
|
121
|
+
// Fallback: try to load
|
|
122
|
+
const snapshot = await this.store.load(sessionId);
|
|
123
|
+
return snapshot !== null;
|
|
124
|
+
}
|
|
125
|
+
list() {
|
|
126
|
+
return Array.from(this.sessions.keys());
|
|
127
|
+
}
|
|
128
|
+
async listHibernated() {
|
|
129
|
+
if (!this.store?.list) {
|
|
130
|
+
return [];
|
|
131
|
+
}
|
|
132
|
+
return this.store.list();
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Hibernate a session (save to store and remove from memory).
|
|
136
|
+
* Returns the snapshot if successful, null if cancelled or no store.
|
|
137
|
+
*/
|
|
138
|
+
async hibernate(sessionId) {
|
|
139
|
+
const session = this.sessions.get(sessionId);
|
|
140
|
+
if (!session) {
|
|
141
|
+
return null;
|
|
142
|
+
}
|
|
143
|
+
if (!this.store) {
|
|
144
|
+
// No store configured - just close the session
|
|
145
|
+
this.remove(sessionId, true);
|
|
146
|
+
return null;
|
|
147
|
+
}
|
|
148
|
+
// Get snapshot
|
|
149
|
+
const snapshot = session.snapshot();
|
|
150
|
+
// Call onBeforeHibernate hook
|
|
151
|
+
if (this.options.onBeforeHibernate) {
|
|
152
|
+
const result = await this.options.onBeforeHibernate(session, snapshot);
|
|
153
|
+
if (result === false) {
|
|
154
|
+
return null; // Hibernation cancelled
|
|
155
|
+
}
|
|
156
|
+
if (result && typeof result === "object" && "version" in result) {
|
|
157
|
+
// Use modified snapshot
|
|
158
|
+
await this.store.save(sessionId, result);
|
|
159
|
+
this.remove(sessionId, true);
|
|
160
|
+
await this.options.onAfterHibernate?.(sessionId, result);
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Save to store
|
|
165
|
+
await this.store.save(sessionId, snapshot);
|
|
166
|
+
// Remove from memory (close session)
|
|
167
|
+
this.remove(sessionId, true);
|
|
168
|
+
// Call onAfterHibernate
|
|
169
|
+
await this.options.onAfterHibernate?.(sessionId, snapshot);
|
|
170
|
+
return snapshot;
|
|
171
|
+
}
|
|
172
|
+
remove(sessionId, closeSession = true) {
|
|
173
|
+
const session = this.sessions.get(sessionId);
|
|
174
|
+
if (!session)
|
|
175
|
+
return;
|
|
176
|
+
this.sessions.delete(sessionId);
|
|
177
|
+
this.lastActivity.delete(sessionId);
|
|
178
|
+
if (closeSession) {
|
|
179
|
+
session.close();
|
|
180
|
+
}
|
|
181
|
+
this.options.onSessionClose?.(sessionId);
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Permanently delete a session from both memory and store.
|
|
185
|
+
*/
|
|
186
|
+
async delete(sessionId) {
|
|
187
|
+
this.remove(sessionId, true);
|
|
188
|
+
if (this.store) {
|
|
189
|
+
await this.store.delete(sessionId);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
destroy() {
|
|
193
|
+
if (this.sweepTimer) {
|
|
194
|
+
clearInterval(this.sweepTimer);
|
|
195
|
+
this.sweepTimer = undefined;
|
|
196
|
+
}
|
|
197
|
+
for (const sessionId of this.sessions.keys()) {
|
|
198
|
+
this.remove(sessionId, true);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
touch(sessionId) {
|
|
202
|
+
const session = this.sessions.get(sessionId);
|
|
203
|
+
if (!session)
|
|
204
|
+
return;
|
|
205
|
+
this.lastActivity.set(sessionId, Date.now());
|
|
206
|
+
// Maintain LRU order by re-inserting
|
|
207
|
+
this.sessions.delete(sessionId);
|
|
208
|
+
this.sessions.set(sessionId, session);
|
|
209
|
+
}
|
|
210
|
+
markActive(sessionId) {
|
|
211
|
+
this.touch(sessionId);
|
|
212
|
+
}
|
|
213
|
+
async sweep() {
|
|
214
|
+
if (this.idleTimeout <= 0)
|
|
215
|
+
return;
|
|
216
|
+
const now = Date.now();
|
|
217
|
+
const toHibernate = [];
|
|
218
|
+
for (const [sessionId, last] of this.lastActivity.entries()) {
|
|
219
|
+
if (now - last >= this.idleTimeout) {
|
|
220
|
+
toHibernate.push(sessionId);
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
// Hibernate idle sessions
|
|
224
|
+
for (const sessionId of toHibernate) {
|
|
225
|
+
if (this.autoHibernate && this.store) {
|
|
226
|
+
await this.hibernate(sessionId);
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
this.remove(sessionId, true);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async enforceMaxActive() {
|
|
234
|
+
if (this.maxActive <= 0)
|
|
235
|
+
return;
|
|
236
|
+
while (this.sessions.size > this.maxActive) {
|
|
237
|
+
const oldestId = this.sessions.keys().next().value;
|
|
238
|
+
if (!oldestId)
|
|
239
|
+
break;
|
|
240
|
+
if (this.autoHibernate && this.store) {
|
|
241
|
+
await this.hibernate(oldestId);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
this.remove(oldestId, true);
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
// ============================================================================
|
|
250
|
+
// App Implementation
|
|
251
|
+
// ============================================================================
|
|
252
|
+
class AppImpl {
|
|
253
|
+
Component;
|
|
254
|
+
options;
|
|
255
|
+
run;
|
|
256
|
+
registry;
|
|
257
|
+
sessionCreateHandlers = new Set();
|
|
258
|
+
sessionCloseHandlers = new Set();
|
|
259
|
+
constructor(Component, options) {
|
|
260
|
+
this.Component = Component;
|
|
261
|
+
this.options = options;
|
|
262
|
+
this.registry = new SessionRegistry({
|
|
263
|
+
sessions: options.sessions,
|
|
264
|
+
// Callbacks
|
|
265
|
+
onSessionClose: (sessionId) => {
|
|
266
|
+
this.options.onSessionClose?.(sessionId);
|
|
267
|
+
for (const handler of this.sessionCloseHandlers) {
|
|
268
|
+
handler(sessionId);
|
|
269
|
+
}
|
|
270
|
+
},
|
|
271
|
+
onBeforeHibernate: options.onBeforeHibernate,
|
|
272
|
+
onAfterHibernate: options.onAfterHibernate,
|
|
273
|
+
onBeforeHydrate: options.onBeforeHydrate,
|
|
274
|
+
onAfterHydrate: options.onAfterHydrate,
|
|
275
|
+
});
|
|
276
|
+
this.run = createProcedure({
|
|
277
|
+
name: "app:run",
|
|
278
|
+
handleFactory: false,
|
|
279
|
+
}, async (input) => {
|
|
280
|
+
const { props = {}, messages = [], history = [], maxTicks, signal, devTools, recording, } = input;
|
|
281
|
+
const sessionOptions = {
|
|
282
|
+
initialTimeline: history.length > 0 ? history : undefined,
|
|
283
|
+
devTools: devTools ?? this.options.devTools,
|
|
284
|
+
recording,
|
|
285
|
+
};
|
|
286
|
+
const executionOptions = {
|
|
287
|
+
maxTicks,
|
|
288
|
+
signal,
|
|
289
|
+
};
|
|
290
|
+
const session = this.createSession(undefined, sessionOptions);
|
|
291
|
+
for (const message of messages) {
|
|
292
|
+
session.queue.exec(message);
|
|
293
|
+
}
|
|
294
|
+
const handle = await session.render(props, executionOptions);
|
|
295
|
+
handle.result
|
|
296
|
+
.finally(() => session.close())
|
|
297
|
+
.catch(() => {
|
|
298
|
+
// Prevent unhandled rejection - errors are captured in handle
|
|
299
|
+
});
|
|
300
|
+
return handle;
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
async send(input, options) {
|
|
304
|
+
const sessionId = options?.sessionId;
|
|
305
|
+
if (!sessionId) {
|
|
306
|
+
const session = this.createSession(undefined, {});
|
|
307
|
+
const handle = await session.send(input);
|
|
308
|
+
handle.result
|
|
309
|
+
.finally(() => session.close())
|
|
310
|
+
.catch(() => {
|
|
311
|
+
// Prevent unhandled rejection - errors are captured in handle
|
|
312
|
+
});
|
|
313
|
+
return handle;
|
|
314
|
+
}
|
|
315
|
+
const session = await this.session(sessionId);
|
|
316
|
+
const maybeModified = this.options.onBeforeSend?.(session, input) ?? input;
|
|
317
|
+
const handle = await session.send(maybeModified);
|
|
318
|
+
handle.result
|
|
319
|
+
.then((result) => {
|
|
320
|
+
this.options.onAfterSend?.(session, result);
|
|
321
|
+
})
|
|
322
|
+
.catch(() => {
|
|
323
|
+
// Errors are already surfaced via lifecycle callbacks
|
|
324
|
+
});
|
|
325
|
+
return handle;
|
|
326
|
+
}
|
|
327
|
+
async session(idOrOptions) {
|
|
328
|
+
// Parse arguments: string is ID, object is options
|
|
329
|
+
let sessionId;
|
|
330
|
+
let options = {};
|
|
331
|
+
if (typeof idOrOptions === "string") {
|
|
332
|
+
sessionId = idOrOptions;
|
|
333
|
+
}
|
|
334
|
+
else if (idOrOptions !== undefined) {
|
|
335
|
+
options = idOrOptions;
|
|
336
|
+
sessionId = options.sessionId;
|
|
337
|
+
}
|
|
338
|
+
// If we have an ID, try to get existing or hydrate from store
|
|
339
|
+
if (sessionId) {
|
|
340
|
+
const existing = await this.registry.getOrHydrate(sessionId, (snapshot) => this.createSessionFromSnapshot(snapshot, options));
|
|
341
|
+
if (existing)
|
|
342
|
+
return existing;
|
|
343
|
+
}
|
|
344
|
+
// Create new session (ID will be generated if undefined)
|
|
345
|
+
return this.createSession(sessionId, options);
|
|
346
|
+
}
|
|
347
|
+
async close(sessionId) {
|
|
348
|
+
this.registry.remove(sessionId, true);
|
|
349
|
+
}
|
|
350
|
+
get sessions() {
|
|
351
|
+
return this.registry.list();
|
|
352
|
+
}
|
|
353
|
+
has(sessionId) {
|
|
354
|
+
return this.registry.has(sessionId);
|
|
355
|
+
}
|
|
356
|
+
async isHibernated(sessionId) {
|
|
357
|
+
return this.registry.isHibernated(sessionId);
|
|
358
|
+
}
|
|
359
|
+
async hibernate(sessionId) {
|
|
360
|
+
return this.registry.hibernate(sessionId);
|
|
361
|
+
}
|
|
362
|
+
async hibernatedSessions() {
|
|
363
|
+
return this.registry.listHibernated();
|
|
364
|
+
}
|
|
365
|
+
onSessionCreate(handler) {
|
|
366
|
+
this.sessionCreateHandlers.add(handler);
|
|
367
|
+
return () => {
|
|
368
|
+
this.sessionCreateHandlers.delete(handler);
|
|
369
|
+
};
|
|
370
|
+
}
|
|
371
|
+
onSessionClose(handler) {
|
|
372
|
+
this.sessionCloseHandlers.add(handler);
|
|
373
|
+
return () => {
|
|
374
|
+
this.sessionCloseHandlers.delete(handler);
|
|
375
|
+
};
|
|
376
|
+
}
|
|
377
|
+
createSession(sessionId, options) {
|
|
378
|
+
const sessionOptions = {
|
|
379
|
+
...options,
|
|
380
|
+
sessionId,
|
|
381
|
+
devTools: options.devTools ?? this.options.devTools,
|
|
382
|
+
};
|
|
383
|
+
const session = new SessionImpl(this.Component, this.options, sessionOptions);
|
|
384
|
+
this.initializeSession(session);
|
|
385
|
+
this.registry.register(session.id, session);
|
|
386
|
+
return session;
|
|
387
|
+
}
|
|
388
|
+
/**
|
|
389
|
+
* Create a session from a hibernation snapshot.
|
|
390
|
+
* Used by registry.getOrHydrate() - does NOT register (getOrHydrate handles that).
|
|
391
|
+
*/
|
|
392
|
+
createSessionFromSnapshot(snapshot, options) {
|
|
393
|
+
const sessionOptions = {
|
|
394
|
+
...options,
|
|
395
|
+
sessionId: snapshot.sessionId,
|
|
396
|
+
snapshot,
|
|
397
|
+
devTools: options.devTools ?? this.options.devTools,
|
|
398
|
+
};
|
|
399
|
+
const session = new SessionImpl(this.Component, this.options, sessionOptions);
|
|
400
|
+
this.initializeSession(session);
|
|
401
|
+
return session;
|
|
402
|
+
}
|
|
403
|
+
/**
|
|
404
|
+
* Initialize session with callbacks and listeners.
|
|
405
|
+
* Shared by createSession and createSessionFromSnapshot.
|
|
406
|
+
*/
|
|
407
|
+
initializeSession(session) {
|
|
408
|
+
// Set hibernate callback so session.hibernate() delegates to the registry
|
|
409
|
+
session.setHibernateCallback(() => this.registry.hibernate(session.id));
|
|
410
|
+
session.on("event", () => {
|
|
411
|
+
this.registry.markActive(session.id);
|
|
412
|
+
});
|
|
413
|
+
session.once("close", () => {
|
|
414
|
+
this.registry.remove(session.id, false);
|
|
415
|
+
});
|
|
416
|
+
this.options.onSessionCreate?.(session);
|
|
417
|
+
for (const handler of this.sessionCreateHandlers) {
|
|
418
|
+
handler(session);
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
}
|
|
422
|
+
/**
|
|
423
|
+
* Agentick configuration instance.
|
|
424
|
+
*
|
|
425
|
+
* Users interact with instances, never the class directly.
|
|
426
|
+
* `Agentick` is the default global instance.
|
|
427
|
+
*/
|
|
428
|
+
export class AgentickInstance {
|
|
429
|
+
middlewareRegistry = new Map();
|
|
430
|
+
_telemetryProvider;
|
|
431
|
+
/**
|
|
432
|
+
* One-shot execution of a JSX component.
|
|
433
|
+
*
|
|
434
|
+
* Accepts a JSX element and optional RunInput. Creates a temporary app and session,
|
|
435
|
+
* runs to completion, then cleans up.
|
|
436
|
+
*
|
|
437
|
+
* **Prop merging:** Element props are defaults, `input.props` override them.
|
|
438
|
+
* `{ ...element.props, ...input.props }` — so `<Agent query="default" />` with
|
|
439
|
+
* `{ props: { query: "override" } }` uses `"override"`.
|
|
440
|
+
*
|
|
441
|
+
* Returns SessionExecutionHandle (AsyncIterable, not PromiseLike):
|
|
442
|
+
* - `await run(...).result` → SendResult
|
|
443
|
+
* - `for await (const event of await run(...))` → StreamEvent
|
|
444
|
+
*
|
|
445
|
+
* @example Get result
|
|
446
|
+
* ```typescript
|
|
447
|
+
* const result = await Agentick.run(
|
|
448
|
+
* <MyAgent />,
|
|
449
|
+
* { messages: [{ role: "user", content: [...] }], model }
|
|
450
|
+
* ).result;
|
|
451
|
+
* ```
|
|
452
|
+
*
|
|
453
|
+
* @example Stream events
|
|
454
|
+
* ```typescript
|
|
455
|
+
* const handle = await Agentick.run(<MyAgent />, { messages, model });
|
|
456
|
+
* for await (const event of handle) {
|
|
457
|
+
* if (event.type === 'content_delta') {
|
|
458
|
+
* process.stdout.write(event.delta);
|
|
459
|
+
* }
|
|
460
|
+
* }
|
|
461
|
+
* ```
|
|
462
|
+
*
|
|
463
|
+
* @example Add middleware to run
|
|
464
|
+
* ```typescript
|
|
465
|
+
* const loggedRun = Agentick.run.use(loggingMiddleware);
|
|
466
|
+
* const result = await loggedRun(<MyAgent />, { messages, model }).result;
|
|
467
|
+
* ```
|
|
468
|
+
*/
|
|
469
|
+
run;
|
|
470
|
+
/**
|
|
471
|
+
* @internal
|
|
472
|
+
*/
|
|
473
|
+
constructor(options) {
|
|
474
|
+
this._telemetryProvider = options?.telemetryProvider;
|
|
475
|
+
// Create the run procedure bound to this instance
|
|
476
|
+
const instance = this;
|
|
477
|
+
this.run = createProcedure({ name: "agentick:run", handleFactory: false }, async (element, input = {}) => {
|
|
478
|
+
const { model, props, ...runInput } = input;
|
|
479
|
+
// Extract component and element props, input props override element props
|
|
480
|
+
const Component = element.type;
|
|
481
|
+
const mergedProps = { ...element.props, ...props };
|
|
482
|
+
// Create app options
|
|
483
|
+
const appOptions = {};
|
|
484
|
+
if (model)
|
|
485
|
+
appOptions.model = model;
|
|
486
|
+
// Create app and run using this instance
|
|
487
|
+
const app = instance.createApp(Component, appOptions);
|
|
488
|
+
return app.run({
|
|
489
|
+
...runInput,
|
|
490
|
+
props: mergedProps,
|
|
491
|
+
});
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Register middleware for a procedure pattern.
|
|
496
|
+
*
|
|
497
|
+
* Keys can be:
|
|
498
|
+
* - `'*'` - all procedures
|
|
499
|
+
* - `'tool:*'` - all tool procedures (tool:run, etc.)
|
|
500
|
+
* - `'model:*'` - all model procedures (model:generate, model:stream)
|
|
501
|
+
* - `'tool:run'` - specific procedure name
|
|
502
|
+
* - `'model:generate'` - specific procedure name
|
|
503
|
+
*
|
|
504
|
+
* Middleware is executed in order: global → category → specific
|
|
505
|
+
*
|
|
506
|
+
* @param key - Procedure pattern to match
|
|
507
|
+
* @param middleware - Middleware functions to register
|
|
508
|
+
* @returns this for chaining
|
|
509
|
+
*
|
|
510
|
+
* @example
|
|
511
|
+
* ```typescript
|
|
512
|
+
* Agentick
|
|
513
|
+
* .use('*', loggingMiddleware)
|
|
514
|
+
* .use('tool:*', authMiddleware)
|
|
515
|
+
* .use('model:generate', rateLimitMiddleware);
|
|
516
|
+
* ```
|
|
517
|
+
*/
|
|
518
|
+
use(key, ...middleware) {
|
|
519
|
+
const existing = this.middlewareRegistry.get(key) || [];
|
|
520
|
+
this.middlewareRegistry.set(key, [...existing, ...middleware]);
|
|
521
|
+
return this;
|
|
522
|
+
}
|
|
523
|
+
/**
|
|
524
|
+
* Get middleware matching a procedure name.
|
|
525
|
+
*
|
|
526
|
+
* Resolution order:
|
|
527
|
+
* 1. Global ('*')
|
|
528
|
+
* 2. Category wildcard (e.g., 'tool:*' matches 'tool:run')
|
|
529
|
+
* 3. Exact match (e.g., 'tool:run')
|
|
530
|
+
*
|
|
531
|
+
* @param procedureName - The procedure name to match (e.g., 'tool:run', 'model:generate')
|
|
532
|
+
* @returns Array of middleware functions in execution order
|
|
533
|
+
*/
|
|
534
|
+
getMiddlewareFor(procedureName) {
|
|
535
|
+
const result = [];
|
|
536
|
+
// 1. Global middleware ('*')
|
|
537
|
+
const global = this.middlewareRegistry.get("*");
|
|
538
|
+
if (global)
|
|
539
|
+
result.push(...global);
|
|
540
|
+
// 2. Category wildcard (e.g., 'tool:*' matches 'tool:run')
|
|
541
|
+
const colonIndex = procedureName.indexOf(":");
|
|
542
|
+
if (colonIndex > 0) {
|
|
543
|
+
const category = procedureName.slice(0, colonIndex);
|
|
544
|
+
const categoryWildcard = this.middlewareRegistry.get(`${category}:*`);
|
|
545
|
+
if (categoryWildcard)
|
|
546
|
+
result.push(...categoryWildcard);
|
|
547
|
+
}
|
|
548
|
+
// 3. Exact match
|
|
549
|
+
const exact = this.middlewareRegistry.get(procedureName);
|
|
550
|
+
if (exact)
|
|
551
|
+
result.push(...exact);
|
|
552
|
+
return result;
|
|
553
|
+
}
|
|
554
|
+
/**
|
|
555
|
+
* Clear all registered middleware.
|
|
556
|
+
* Useful for testing or resetting state.
|
|
557
|
+
*/
|
|
558
|
+
clear() {
|
|
559
|
+
this.middlewareRegistry.clear();
|
|
560
|
+
return this;
|
|
561
|
+
}
|
|
562
|
+
/**
|
|
563
|
+
* Get the telemetry provider.
|
|
564
|
+
*/
|
|
565
|
+
get telemetryProvider() {
|
|
566
|
+
return this._telemetryProvider;
|
|
567
|
+
}
|
|
568
|
+
/**
|
|
569
|
+
* Set the telemetry provider.
|
|
570
|
+
*/
|
|
571
|
+
set telemetryProvider(provider) {
|
|
572
|
+
this._telemetryProvider = provider;
|
|
573
|
+
}
|
|
574
|
+
/**
|
|
575
|
+
* Create a child instance.
|
|
576
|
+
*
|
|
577
|
+
* By default, the child inherits all middleware from this instance.
|
|
578
|
+
* Use `inheritDefaults: false` for a completely isolated instance.
|
|
579
|
+
*
|
|
580
|
+
* @param options - Instance options
|
|
581
|
+
* @returns A new AgentickInstance
|
|
582
|
+
*
|
|
583
|
+
* @example
|
|
584
|
+
* ```typescript
|
|
585
|
+
* // Create scoped instance that inherits global middleware
|
|
586
|
+
* const scoped = Agentick.create();
|
|
587
|
+
* scoped.use('model:generate', rateLimitMiddleware);
|
|
588
|
+
* const app = scoped.createApp(MyAgent);
|
|
589
|
+
*
|
|
590
|
+
* // Create isolated instance (no inheritance)
|
|
591
|
+
* const isolated = Agentick.create({ inheritDefaults: false });
|
|
592
|
+
* ```
|
|
593
|
+
*/
|
|
594
|
+
create(options = {}) {
|
|
595
|
+
const child = new AgentickInstance({
|
|
596
|
+
telemetryProvider: options.telemetryProvider ?? this._telemetryProvider,
|
|
597
|
+
});
|
|
598
|
+
// Copy middleware from parent unless inheritDefaults: false
|
|
599
|
+
if (options.inheritDefaults !== false) {
|
|
600
|
+
for (const [key, mws] of this.middlewareRegistry) {
|
|
601
|
+
child.middlewareRegistry.set(key, [...mws]);
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
return child;
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* Create an app from a component function.
|
|
608
|
+
*
|
|
609
|
+
* The app inherits middleware from this Agentick instance.
|
|
610
|
+
*
|
|
611
|
+
* @param Component - The component function that defines the Model Interface
|
|
612
|
+
* @param options - App configuration options
|
|
613
|
+
* @returns An App instance with run, send, and session methods
|
|
614
|
+
*
|
|
615
|
+
* @example
|
|
616
|
+
* ```typescript
|
|
617
|
+
* const MyAgent = ({ query }) => (
|
|
618
|
+
* <>
|
|
619
|
+
* <System>You are helpful.</System>
|
|
620
|
+
* <Timeline />
|
|
621
|
+
* <User>{query}</User>
|
|
622
|
+
* </>
|
|
623
|
+
* );
|
|
624
|
+
*
|
|
625
|
+
* // Use global Agentick
|
|
626
|
+
* const app = createApp(MyAgent, { model });
|
|
627
|
+
*
|
|
628
|
+
* // Use scoped instance
|
|
629
|
+
* const scoped = Agentick.create();
|
|
630
|
+
* scoped.use('tool:*', authMiddleware);
|
|
631
|
+
* const scopedApp = scoped.createApp(MyAgent, { model });
|
|
632
|
+
* ```
|
|
633
|
+
*/
|
|
634
|
+
createApp(Component, options = {}) {
|
|
635
|
+
const optionsWithInstance = { ...options, _agentickInstance: this };
|
|
636
|
+
return new AppImpl(Component, optionsWithInstance);
|
|
637
|
+
}
|
|
638
|
+
}
|
|
639
|
+
/**
|
|
640
|
+
* The default global Agentick instance.
|
|
641
|
+
*
|
|
642
|
+
* All configuration and middleware registration starts here.
|
|
643
|
+
* The exported `createApp` and `run` are bound to this instance.
|
|
644
|
+
*
|
|
645
|
+
* @example
|
|
646
|
+
* ```typescript
|
|
647
|
+
* import { Agentick, createApp, run } from 'agentick';
|
|
648
|
+
*
|
|
649
|
+
* // Configure global middleware
|
|
650
|
+
* Agentick.use('*', loggingMiddleware);
|
|
651
|
+
* Agentick.telemetryProvider = myProvider;
|
|
652
|
+
*
|
|
653
|
+
* // createApp and run use Agentick
|
|
654
|
+
* const app = createApp(MyAgent, { model });
|
|
655
|
+
* const result = await run(<MyAgent />, { messages, model });
|
|
656
|
+
*
|
|
657
|
+
* // Create scoped instance with its own middleware
|
|
658
|
+
* const scoped = Agentick.create();
|
|
659
|
+
* scoped.use('model:generate', specialMiddleware);
|
|
660
|
+
* const scopedResult = await scoped.run(<MyAgent />, { messages, model });
|
|
661
|
+
* ```
|
|
662
|
+
*/
|
|
663
|
+
export const Agentick = new AgentickInstance();
|
|
664
|
+
/**
|
|
665
|
+
* Create an app from a component function.
|
|
666
|
+
*
|
|
667
|
+
* This is `Agentick.createApp` - apps inherit middleware from the global Agentick instance.
|
|
668
|
+
*
|
|
669
|
+
* @example
|
|
670
|
+
* ```typescript
|
|
671
|
+
* import { createApp } from 'agentick';
|
|
672
|
+
*
|
|
673
|
+
* const app = createApp(MyAgent, { model });
|
|
674
|
+
* const result = await app.run({ props: { query: "Hello!" } });
|
|
675
|
+
* ```
|
|
676
|
+
*/
|
|
677
|
+
export const createApp = Agentick.createApp.bind(Agentick);
|
|
678
|
+
/**
|
|
679
|
+
* One-shot execution of a JSX component.
|
|
680
|
+
*
|
|
681
|
+
* This is `Agentick.run` - the simplest way to run an agent.
|
|
682
|
+
* Returns SessionExecutionHandle (AsyncIterable, not PromiseLike).
|
|
683
|
+
*
|
|
684
|
+
* @example
|
|
685
|
+
* ```typescript
|
|
686
|
+
* import { run } from 'agentick';
|
|
687
|
+
*
|
|
688
|
+
* // Get result
|
|
689
|
+
* const result = await run(<MyAgent />, { messages, model }).result;
|
|
690
|
+
*
|
|
691
|
+
* // Stream events
|
|
692
|
+
* const handle = await run(<MyAgent />, { messages, model });
|
|
693
|
+
* for await (const event of handle) {
|
|
694
|
+
* console.log(event);
|
|
695
|
+
* }
|
|
696
|
+
* ```
|
|
697
|
+
*/
|
|
698
|
+
export const run = Agentick.run.bind(Agentick);
|
|
699
|
+
// RunInput is now defined in ./app/types and exported from the package index.
|
|
700
|
+
//# sourceMappingURL=agentick-instance.js.map
|