@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,127 @@
|
|
|
1
|
+
import { type ToolCall, type ToolResult, type ExecutableTool, type ToolConfirmationResult } from "../tool/tool";
|
|
2
|
+
import type { COM } from "../com/object-model";
|
|
3
|
+
import type { ToolHookRegistry } from "../tool/tool-hooks";
|
|
4
|
+
import { ClientToolCoordinator } from "./client-tool-coordinator";
|
|
5
|
+
import { ToolConfirmationCoordinator } from "./tool-confirmation-coordinator";
|
|
6
|
+
/**
|
|
7
|
+
* Result of checking if a tool requires confirmation.
|
|
8
|
+
*/
|
|
9
|
+
export interface ConfirmationCheckResult {
|
|
10
|
+
/** Whether confirmation is required */
|
|
11
|
+
required: boolean;
|
|
12
|
+
/** Message to show user (if required) */
|
|
13
|
+
message?: string;
|
|
14
|
+
/** The tool that was checked */
|
|
15
|
+
tool: ExecutableTool;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Tool Execution Service
|
|
19
|
+
*
|
|
20
|
+
* Handles tool execution with error handling, parallel execution support,
|
|
21
|
+
* and structured error reporting. Designed to be extensible for future
|
|
22
|
+
* features like retries, timeouts, circuit breakers, etc.
|
|
23
|
+
*/
|
|
24
|
+
export declare class ToolExecutor {
|
|
25
|
+
private toolHooks?;
|
|
26
|
+
private clientToolCoordinator;
|
|
27
|
+
private confirmationCoordinator;
|
|
28
|
+
constructor(toolHooks?: ToolHookRegistry | undefined);
|
|
29
|
+
/**
|
|
30
|
+
* Get the client tool coordinator for managing client-executed tools.
|
|
31
|
+
*/
|
|
32
|
+
getClientToolCoordinator(): ClientToolCoordinator;
|
|
33
|
+
/**
|
|
34
|
+
* Get the confirmation coordinator for managing tool confirmations.
|
|
35
|
+
*/
|
|
36
|
+
getConfirmationCoordinator(): ToolConfirmationCoordinator;
|
|
37
|
+
/**
|
|
38
|
+
* Check if a tool call requires confirmation.
|
|
39
|
+
* Evaluates the requiresConfirmation option (boolean or function).
|
|
40
|
+
*
|
|
41
|
+
* @param call - The tool call to check
|
|
42
|
+
* @param ctx - COM for tool resolution
|
|
43
|
+
* @param configTools - Optional config tools for fallback
|
|
44
|
+
* @returns ConfirmationCheckResult or null if tool not found
|
|
45
|
+
*/
|
|
46
|
+
checkConfirmationRequired(call: ToolCall, ctx: COM, configTools?: ExecutableTool[]): Promise<ConfirmationCheckResult | null>;
|
|
47
|
+
/**
|
|
48
|
+
* Wait for confirmation for a tool call.
|
|
49
|
+
* Should be called after yielding 'tool_confirmation_required' event.
|
|
50
|
+
*
|
|
51
|
+
* @param call - The tool call awaiting confirmation
|
|
52
|
+
* @returns The confirmation result
|
|
53
|
+
*/
|
|
54
|
+
waitForConfirmation(call: ToolCall): Promise<ToolConfirmationResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Create a denial result for when user denies tool execution.
|
|
57
|
+
*/
|
|
58
|
+
createDenialResult(call: ToolCall): ToolResult;
|
|
59
|
+
/**
|
|
60
|
+
* Wrap tool.run with hooks if hooks are registered.
|
|
61
|
+
* Since tool.run is already a Procedure, we apply middleware directly to it
|
|
62
|
+
* using applyRegistryMiddleware, which preserves the Procedure interface.
|
|
63
|
+
*
|
|
64
|
+
* Returns undefined if tool has no handler (e.g., client tools without server-side execution).
|
|
65
|
+
*/
|
|
66
|
+
private wrapToolRun;
|
|
67
|
+
/**
|
|
68
|
+
* Execute tool calls sequentially or in parallel.
|
|
69
|
+
*
|
|
70
|
+
* @param toolCalls Array of tool calls to execute
|
|
71
|
+
* @param ctx COM for tool resolution
|
|
72
|
+
* @param parallel Whether to execute tools in parallel (default: false)
|
|
73
|
+
* @param configTools Optional array of tools from Engine config for fallback resolution
|
|
74
|
+
* @returns Array of tool results
|
|
75
|
+
*/
|
|
76
|
+
executeToolCalls(toolCalls: ToolCall[], ctx: COM, parallel?: boolean, configTools?: ExecutableTool[]): Promise<ToolResult[]>;
|
|
77
|
+
/**
|
|
78
|
+
* Execute tools sequentially (current implementation).
|
|
79
|
+
* Provides better error isolation and easier debugging.
|
|
80
|
+
*/
|
|
81
|
+
private executeSequential;
|
|
82
|
+
/**
|
|
83
|
+
* Execute tools in parallel.
|
|
84
|
+
*/
|
|
85
|
+
private executeParallel;
|
|
86
|
+
/**
|
|
87
|
+
* Execute a single tool call with comprehensive error handling.
|
|
88
|
+
* This method does NOT handle confirmation - caller should check confirmation first.
|
|
89
|
+
*
|
|
90
|
+
* @param call - The tool call to execute
|
|
91
|
+
* @param ctx - COM for tool resolution
|
|
92
|
+
* @param configTools - Optional config tools for fallback
|
|
93
|
+
* @returns The tool result
|
|
94
|
+
*/
|
|
95
|
+
executeSingleTool(call: ToolCall, ctx: COM, configTools?: ExecutableTool[]): Promise<ToolResult>;
|
|
96
|
+
/**
|
|
97
|
+
* Create an error result with structured error information.
|
|
98
|
+
*/
|
|
99
|
+
private createErrorResult;
|
|
100
|
+
/**
|
|
101
|
+
* Process a single tool call with confirmation flow.
|
|
102
|
+
*
|
|
103
|
+
* This method handles the full lifecycle of a tool call:
|
|
104
|
+
* 1. Check if confirmation is required
|
|
105
|
+
* 2. If yes, emit confirmation_required event and wait for response
|
|
106
|
+
* 3. Execute tool (or create denial result if denied)
|
|
107
|
+
* 4. Return result with any events that occurred
|
|
108
|
+
*
|
|
109
|
+
* This is designed for parallel execution - each tool can independently
|
|
110
|
+
* wait for confirmation while other tools are being processed.
|
|
111
|
+
*
|
|
112
|
+
* @param call - The tool call to process
|
|
113
|
+
* @param ctx - COM for tool resolution
|
|
114
|
+
* @param configTools - Optional config tools for fallback
|
|
115
|
+
* @param callbacks - Callbacks for emitting events during processing
|
|
116
|
+
* @returns The tool result and metadata about the processing
|
|
117
|
+
*/
|
|
118
|
+
processToolWithConfirmation(call: ToolCall, ctx: COM, configTools?: ExecutableTool[], callbacks?: {
|
|
119
|
+
onConfirmationRequired?: (call: ToolCall, message: string) => void | Promise<void>;
|
|
120
|
+
onConfirmationResult?: (confirmation: ToolConfirmationResult, call: ToolCall) => void | Promise<void>;
|
|
121
|
+
}): Promise<{
|
|
122
|
+
result: ToolResult;
|
|
123
|
+
confirmCheck: ConfirmationCheckResult | null;
|
|
124
|
+
confirmation: ToolConfirmationResult | null;
|
|
125
|
+
}>;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=tool-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/engine/tool-executor.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAE5B,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAG/C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAI3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAE9E;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,uCAAuC;IACvC,QAAQ,EAAE,OAAO,CAAC;IAClB,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,IAAI,EAAE,cAAc,CAAC;CACtB;AAeD;;;;;;GAMG;AACH,qBAAa,YAAY;IAIX,OAAO,CAAC,SAAS,CAAC;IAH9B,OAAO,CAAC,qBAAqB,CAAwB;IACrD,OAAO,CAAC,uBAAuB,CAA8B;gBAEzC,SAAS,CAAC,EAAE,gBAAgB,YAAA;IAKhD;;OAEG;IACH,wBAAwB,IAAI,qBAAqB;IAIjD;;OAEG;IACH,0BAA0B,IAAI,2BAA2B;IAIzD;;;;;;;;OAQG;IACG,yBAAyB,CAC7B,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,GAAG,EACR,WAAW,GAAE,cAAc,EAAO,GACjC,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC;IA0C1C;;;;;;OAMG;IACG,mBAAmB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAI1E;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU;IAe9C;;;;;;OAMG;IACH,OAAO,CAAC,WAAW;IAsBnB;;;;;;;;OAQG;IACG,gBAAgB,CACpB,SAAS,EAAE,QAAQ,EAAE,EACrB,GAAG,EAAE,GAAG,EACR,QAAQ,GAAE,OAAe,EACzB,WAAW,GAAE,cAAc,EAAO,GACjC,OAAO,CAAC,UAAU,EAAE,CAAC;IAOxB;;;OAGG;YACW,iBAAiB;IAe/B;;OAEG;YACW,eAAe;IAS7B;;;;;;;;OAQG;IACG,iBAAiB,CACrB,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,GAAG,EACR,WAAW,GAAE,cAAc,EAAO,GACjC,OAAO,CAAC,UAAU,CAAC;IA0ItB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoCzB;;;;;;;;;;;;;;;;;OAiBG;IACG,2BAA2B,CAC/B,IAAI,EAAE,QAAQ,EACd,GAAG,EAAE,GAAG,EACR,WAAW,GAAE,cAAc,EAAO,EAClC,SAAS,GAAE;QACT,sBAAsB,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;QACnF,oBAAoB,CAAC,EAAE,CACrB,YAAY,EAAE,sBAAsB,EACpC,IAAI,EAAE,QAAQ,KACX,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACtB,GACL,OAAO,CAAC;QACT,MAAM,EAAE,UAAU,CAAC;QACnB,YAAY,EAAE,uBAAuB,GAAG,IAAI,CAAC;QAC7C,YAAY,EAAE,sBAAsB,GAAG,IAAI,CAAC;KAC7C,CAAC;CAsCH"}
|
|
@@ -0,0 +1,363 @@
|
|
|
1
|
+
import { ToolExecutionType, } from "../tool/tool";
|
|
2
|
+
import {} from "@agentick/shared";
|
|
3
|
+
import {} from "@agentick/kernel";
|
|
4
|
+
import {} from "../tool/tool-hooks";
|
|
5
|
+
import { applyRegistryMiddleware } from "../procedure";
|
|
6
|
+
import { classifyError } from "../utils/classify-error";
|
|
7
|
+
import { ClientToolCoordinator } from "./client-tool-coordinator";
|
|
8
|
+
import { ToolConfirmationCoordinator } from "./tool-confirmation-coordinator";
|
|
9
|
+
/**
|
|
10
|
+
* Normalize tool hook middleware to the format required by applyRegistryMiddleware.
|
|
11
|
+
* This is a type-cast helper since the middleware types are compatible at runtime.
|
|
12
|
+
*/
|
|
13
|
+
function normalizeToolHookMiddleware(middleware) {
|
|
14
|
+
if (!middleware || middleware.length === 0) {
|
|
15
|
+
return [];
|
|
16
|
+
}
|
|
17
|
+
return middleware;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Tool Execution Service
|
|
21
|
+
*
|
|
22
|
+
* Handles tool execution with error handling, parallel execution support,
|
|
23
|
+
* and structured error reporting. Designed to be extensible for future
|
|
24
|
+
* features like retries, timeouts, circuit breakers, etc.
|
|
25
|
+
*/
|
|
26
|
+
export class ToolExecutor {
|
|
27
|
+
toolHooks;
|
|
28
|
+
clientToolCoordinator;
|
|
29
|
+
confirmationCoordinator;
|
|
30
|
+
constructor(toolHooks) {
|
|
31
|
+
this.toolHooks = toolHooks;
|
|
32
|
+
this.clientToolCoordinator = new ClientToolCoordinator();
|
|
33
|
+
this.confirmationCoordinator = new ToolConfirmationCoordinator();
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Get the client tool coordinator for managing client-executed tools.
|
|
37
|
+
*/
|
|
38
|
+
getClientToolCoordinator() {
|
|
39
|
+
return this.clientToolCoordinator;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the confirmation coordinator for managing tool confirmations.
|
|
43
|
+
*/
|
|
44
|
+
getConfirmationCoordinator() {
|
|
45
|
+
return this.confirmationCoordinator;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Check if a tool call requires confirmation.
|
|
49
|
+
* Evaluates the requiresConfirmation option (boolean or function).
|
|
50
|
+
*
|
|
51
|
+
* @param call - The tool call to check
|
|
52
|
+
* @param ctx - COM for tool resolution
|
|
53
|
+
* @param configTools - Optional config tools for fallback
|
|
54
|
+
* @returns ConfirmationCheckResult or null if tool not found
|
|
55
|
+
*/
|
|
56
|
+
async checkConfirmationRequired(call, ctx, configTools = []) {
|
|
57
|
+
// Resolve tool
|
|
58
|
+
let tool = ctx.getTool(call.name);
|
|
59
|
+
if (!tool && configTools.length > 0) {
|
|
60
|
+
tool = configTools.find((t) => t.metadata.name === call.name);
|
|
61
|
+
}
|
|
62
|
+
if (!tool) {
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
const { requiresConfirmation, confirmationMessage } = tool.metadata;
|
|
66
|
+
// No confirmation configured
|
|
67
|
+
if (requiresConfirmation === undefined || requiresConfirmation === false) {
|
|
68
|
+
return { required: false, tool };
|
|
69
|
+
}
|
|
70
|
+
// Evaluate if it's a function
|
|
71
|
+
let required;
|
|
72
|
+
if (typeof requiresConfirmation === "function") {
|
|
73
|
+
required = await requiresConfirmation(call.input);
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
required = requiresConfirmation;
|
|
77
|
+
}
|
|
78
|
+
if (!required) {
|
|
79
|
+
return { required: false, tool };
|
|
80
|
+
}
|
|
81
|
+
// Build confirmation message
|
|
82
|
+
let message;
|
|
83
|
+
if (typeof confirmationMessage === "function") {
|
|
84
|
+
message = confirmationMessage(call.input);
|
|
85
|
+
}
|
|
86
|
+
else if (confirmationMessage) {
|
|
87
|
+
message = confirmationMessage;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
message = `Allow ${call.name} to execute?`;
|
|
91
|
+
}
|
|
92
|
+
return { required: true, message, tool };
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Wait for confirmation for a tool call.
|
|
96
|
+
* Should be called after yielding 'tool_confirmation_required' event.
|
|
97
|
+
*
|
|
98
|
+
* @param call - The tool call awaiting confirmation
|
|
99
|
+
* @returns The confirmation result
|
|
100
|
+
*/
|
|
101
|
+
async waitForConfirmation(call) {
|
|
102
|
+
return this.confirmationCoordinator.waitForConfirmation(call.id, call.name);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Create a denial result for when user denies tool execution.
|
|
106
|
+
*/
|
|
107
|
+
createDenialResult(call) {
|
|
108
|
+
return {
|
|
109
|
+
toolUseId: call.id,
|
|
110
|
+
name: call.name || call.id,
|
|
111
|
+
success: false,
|
|
112
|
+
content: [
|
|
113
|
+
{
|
|
114
|
+
type: "text",
|
|
115
|
+
text: "Tool execution was denied by user.",
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
error: "User denied tool execution",
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Wrap tool.run with hooks if hooks are registered.
|
|
123
|
+
* Since tool.run is already a Procedure, we apply middleware directly to it
|
|
124
|
+
* using applyRegistryMiddleware, which preserves the Procedure interface.
|
|
125
|
+
*
|
|
126
|
+
* Returns undefined if tool has no handler (e.g., client tools without server-side execution).
|
|
127
|
+
*/
|
|
128
|
+
wrapToolRun(tool) {
|
|
129
|
+
if (!tool.run) {
|
|
130
|
+
return undefined; // Tool has no handler
|
|
131
|
+
}
|
|
132
|
+
if (!this.toolHooks) {
|
|
133
|
+
return tool.run;
|
|
134
|
+
}
|
|
135
|
+
const middleware = this.toolHooks.getMiddleware("run");
|
|
136
|
+
if (middleware.length === 0) {
|
|
137
|
+
return tool.run;
|
|
138
|
+
}
|
|
139
|
+
// Apply tool hooks middleware to the existing Procedure
|
|
140
|
+
// applyRegistryMiddleware preserves the Procedure interface while adding middleware
|
|
141
|
+
return applyRegistryMiddleware(tool.run, ...normalizeToolHookMiddleware(middleware));
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Execute tool calls sequentially or in parallel.
|
|
145
|
+
*
|
|
146
|
+
* @param toolCalls Array of tool calls to execute
|
|
147
|
+
* @param ctx COM for tool resolution
|
|
148
|
+
* @param parallel Whether to execute tools in parallel (default: false)
|
|
149
|
+
* @param configTools Optional array of tools from Engine config for fallback resolution
|
|
150
|
+
* @returns Array of tool results
|
|
151
|
+
*/
|
|
152
|
+
async executeToolCalls(toolCalls, ctx, parallel = false, configTools = []) {
|
|
153
|
+
if (parallel && toolCalls.length > 1) {
|
|
154
|
+
return this.executeParallel(toolCalls, ctx, configTools);
|
|
155
|
+
}
|
|
156
|
+
return this.executeSequential(toolCalls, ctx, configTools);
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Execute tools sequentially (current implementation).
|
|
160
|
+
* Provides better error isolation and easier debugging.
|
|
161
|
+
*/
|
|
162
|
+
async executeSequential(toolCalls, ctx, configTools = []) {
|
|
163
|
+
const results = [];
|
|
164
|
+
for (const call of toolCalls) {
|
|
165
|
+
const result = await this.executeSingleTool(call, ctx, configTools);
|
|
166
|
+
results.push(result);
|
|
167
|
+
}
|
|
168
|
+
return results;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Execute tools in parallel.
|
|
172
|
+
*/
|
|
173
|
+
async executeParallel(toolCalls, ctx, configTools = []) {
|
|
174
|
+
const promises = toolCalls.map((call) => this.executeSingleTool(call, ctx, configTools));
|
|
175
|
+
return Promise.all(promises);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Execute a single tool call with comprehensive error handling.
|
|
179
|
+
* This method does NOT handle confirmation - caller should check confirmation first.
|
|
180
|
+
*
|
|
181
|
+
* @param call - The tool call to execute
|
|
182
|
+
* @param ctx - COM for tool resolution
|
|
183
|
+
* @param configTools - Optional config tools for fallback
|
|
184
|
+
* @returns The tool result
|
|
185
|
+
*/
|
|
186
|
+
async executeSingleTool(call, ctx, configTools = []) {
|
|
187
|
+
// 1. Resolve tool
|
|
188
|
+
let tool = ctx.getTool(call.name);
|
|
189
|
+
// 2. Fallback to config tools
|
|
190
|
+
if (!tool && configTools.length > 0) {
|
|
191
|
+
tool = configTools.find((t) => t.metadata.name === call.name);
|
|
192
|
+
}
|
|
193
|
+
if (!tool) {
|
|
194
|
+
return this.createErrorResult(call, `Tool "${call.name}" is not available`, "TOOL_NOT_FOUND");
|
|
195
|
+
}
|
|
196
|
+
// 3. Check execution type and route accordingly
|
|
197
|
+
const executionType = tool.metadata.type ?? ToolExecutionType.SERVER;
|
|
198
|
+
// Provider tools should be handled in ModelAdapter, not here
|
|
199
|
+
if (executionType === ToolExecutionType.PROVIDER) {
|
|
200
|
+
return this.createErrorResult(call, `Provider-executed tool "${call.name}" should be handled by ModelAdapter`, "INVALID_EXECUTION_TYPE");
|
|
201
|
+
}
|
|
202
|
+
// Client tools - delegate to client and wait for result if needed
|
|
203
|
+
if (executionType === ToolExecutionType.CLIENT) {
|
|
204
|
+
const requiresResponse = tool.metadata.requiresResponse ?? false;
|
|
205
|
+
const timeout = tool.metadata.timeout ?? 30000;
|
|
206
|
+
const defaultResult = {
|
|
207
|
+
toolUseId: call.id,
|
|
208
|
+
name: call.name || call.id,
|
|
209
|
+
success: true,
|
|
210
|
+
content: tool.metadata.defaultResult ?? [
|
|
211
|
+
{ type: "text", text: `[${call.name} rendered on client]` },
|
|
212
|
+
],
|
|
213
|
+
};
|
|
214
|
+
// If doesn't require response, return default immediately
|
|
215
|
+
if (!requiresResponse) {
|
|
216
|
+
return defaultResult;
|
|
217
|
+
}
|
|
218
|
+
// Otherwise wait for client to send result
|
|
219
|
+
try {
|
|
220
|
+
return await this.clientToolCoordinator.waitForResult(call.id, defaultResult, requiresResponse, timeout);
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
return this.createErrorResult(call, error.message || "Client tool execution failed", "CLIENT_TOOL_ERROR", error);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// 4. Execute tool with error handling (SERVER or MCP)
|
|
227
|
+
try {
|
|
228
|
+
// Wrap tool.run with hooks if hooks are registered
|
|
229
|
+
const wrappedRun = this.wrapToolRun(tool);
|
|
230
|
+
if (!wrappedRun) {
|
|
231
|
+
// Tool has no handler (e.g., client tool without server-side execution)
|
|
232
|
+
// Return error - tools without handlers cannot be executed server-side
|
|
233
|
+
return this.createErrorResult(call, `Tool "${call.name}" has no handler. Tools without handlers cannot be executed server-side.`, "TOOL_NO_HANDLER");
|
|
234
|
+
}
|
|
235
|
+
// Execute tool (execution type doesn't change the call pattern,
|
|
236
|
+
// but MCP/CLIENT tools have different run() implementations)
|
|
237
|
+
// Add per-call metadata (toolName is set at definition time by createTool)
|
|
238
|
+
const toolProcedure = wrappedRun.withMetadata({
|
|
239
|
+
toolCallId: call.id,
|
|
240
|
+
});
|
|
241
|
+
// Procedure returns ExecutionHandle by default - access .result for actual return value
|
|
242
|
+
// Pass ctx so tool handlers can access agent state during execution
|
|
243
|
+
const result = await toolProcedure(call.input, ctx).result;
|
|
244
|
+
// Handle async iterable result (shouldn't happen for tools, but be safe)
|
|
245
|
+
let content;
|
|
246
|
+
if (result && typeof result === "object" && Symbol.asyncIterator in result) {
|
|
247
|
+
// If it's an async iterable, collect all chunks
|
|
248
|
+
const chunks = [];
|
|
249
|
+
for await (const chunk of result) {
|
|
250
|
+
chunks.push(chunk);
|
|
251
|
+
}
|
|
252
|
+
content = chunks;
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
content = result;
|
|
256
|
+
}
|
|
257
|
+
// Validate return type
|
|
258
|
+
if (!Array.isArray(content)) {
|
|
259
|
+
return this.createErrorResult(call, "Tool must return ContentBlock[]", "INVALID_RETURN_TYPE");
|
|
260
|
+
}
|
|
261
|
+
// Validate content blocks
|
|
262
|
+
for (const block of content) {
|
|
263
|
+
if (!block || typeof block !== "object" || !block.type) {
|
|
264
|
+
return this.createErrorResult(call, "Tool returned invalid ContentBlock", "INVALID_CONTENT_BLOCK");
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
const toolResult = {
|
|
268
|
+
toolUseId: call.id,
|
|
269
|
+
name: call.name || call.id,
|
|
270
|
+
success: true,
|
|
271
|
+
content,
|
|
272
|
+
};
|
|
273
|
+
call.result = toolResult;
|
|
274
|
+
return toolResult;
|
|
275
|
+
}
|
|
276
|
+
catch (error) {
|
|
277
|
+
// Enhanced error handling
|
|
278
|
+
const errorMessage = error?.message || "Tool execution failed";
|
|
279
|
+
const errorType = classifyError(error);
|
|
280
|
+
return this.createErrorResult(call, errorMessage, errorType, error);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Create an error result with structured error information.
|
|
285
|
+
*/
|
|
286
|
+
createErrorResult(call, message, errorType, originalError) {
|
|
287
|
+
const errorContent = [
|
|
288
|
+
{
|
|
289
|
+
type: "text",
|
|
290
|
+
text: JSON.stringify({
|
|
291
|
+
error: message,
|
|
292
|
+
error_type: errorType,
|
|
293
|
+
...(originalError && {
|
|
294
|
+
error_details: {
|
|
295
|
+
name: originalError?.name,
|
|
296
|
+
code: originalError?.code,
|
|
297
|
+
stack: process.env["NODE_ENV"] === "development" ? originalError?.stack : undefined,
|
|
298
|
+
},
|
|
299
|
+
}),
|
|
300
|
+
}),
|
|
301
|
+
},
|
|
302
|
+
];
|
|
303
|
+
const toolResult = {
|
|
304
|
+
toolUseId: call.id,
|
|
305
|
+
name: call.name || call.id,
|
|
306
|
+
success: false,
|
|
307
|
+
content: errorContent,
|
|
308
|
+
error: message,
|
|
309
|
+
};
|
|
310
|
+
call.result = toolResult;
|
|
311
|
+
return toolResult;
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Process a single tool call with confirmation flow.
|
|
315
|
+
*
|
|
316
|
+
* This method handles the full lifecycle of a tool call:
|
|
317
|
+
* 1. Check if confirmation is required
|
|
318
|
+
* 2. If yes, emit confirmation_required event and wait for response
|
|
319
|
+
* 3. Execute tool (or create denial result if denied)
|
|
320
|
+
* 4. Return result with any events that occurred
|
|
321
|
+
*
|
|
322
|
+
* This is designed for parallel execution - each tool can independently
|
|
323
|
+
* wait for confirmation while other tools are being processed.
|
|
324
|
+
*
|
|
325
|
+
* @param call - The tool call to process
|
|
326
|
+
* @param ctx - COM for tool resolution
|
|
327
|
+
* @param configTools - Optional config tools for fallback
|
|
328
|
+
* @param callbacks - Callbacks for emitting events during processing
|
|
329
|
+
* @returns The tool result and metadata about the processing
|
|
330
|
+
*/
|
|
331
|
+
async processToolWithConfirmation(call, ctx, configTools = [], callbacks = {}) {
|
|
332
|
+
// Check if confirmation is required
|
|
333
|
+
const confirmCheck = await this.checkConfirmationRequired(call, ctx, configTools);
|
|
334
|
+
let result;
|
|
335
|
+
let confirmation = null;
|
|
336
|
+
if (confirmCheck?.required) {
|
|
337
|
+
// Notify that confirmation is required
|
|
338
|
+
if (callbacks.onConfirmationRequired) {
|
|
339
|
+
await callbacks.onConfirmationRequired(call, confirmCheck.message || `Allow ${call.name} to execute?`);
|
|
340
|
+
}
|
|
341
|
+
// Wait for confirmation (this blocks until client responds)
|
|
342
|
+
confirmation = await this.waitForConfirmation(call);
|
|
343
|
+
// Notify of confirmation result
|
|
344
|
+
if (callbacks.onConfirmationResult) {
|
|
345
|
+
await callbacks.onConfirmationResult(confirmation, call);
|
|
346
|
+
}
|
|
347
|
+
if (!confirmation.confirmed) {
|
|
348
|
+
// User denied - create denial result
|
|
349
|
+
result = this.createDenialResult(call);
|
|
350
|
+
}
|
|
351
|
+
else {
|
|
352
|
+
// User confirmed - execute the tool
|
|
353
|
+
result = await this.executeSingleTool(call, ctx, configTools);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
// No confirmation needed - execute directly
|
|
358
|
+
result = await this.executeSingleTool(call, ctx, configTools);
|
|
359
|
+
}
|
|
360
|
+
return { result, confirmCheck, confirmation };
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
//# sourceMappingURL=tool-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../src/engine/tool-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V2 Session Hibernation
|
|
3
|
+
*
|
|
4
|
+
* Serialize and restore session state for persistence.
|
|
5
|
+
*
|
|
6
|
+
* Unlike React's hydration (which is about attaching to pre-rendered DOM),
|
|
7
|
+
* this is about serializing our state and restoring it later.
|
|
8
|
+
*
|
|
9
|
+
* Key insight: We don't need to serialize React's fiber tree. We serialize
|
|
10
|
+
* OUR state, and React rebuilds its tree from scratch on restore. Since our
|
|
11
|
+
* hooks (useData, etc.) read from our caches, the render produces the same
|
|
12
|
+
* output as before hibernation.
|
|
13
|
+
*/
|
|
14
|
+
import type { FiberCompiler } from "../compiler/fiber-compiler";
|
|
15
|
+
import type { TimelineEntry } from "../hooks/types";
|
|
16
|
+
import type { SerializableCacheEntry } from "../hooks/runtime-context";
|
|
17
|
+
/**
|
|
18
|
+
* Serializable session snapshot.
|
|
19
|
+
* This is what gets persisted to storage.
|
|
20
|
+
*/
|
|
21
|
+
export interface SessionSnapshot {
|
|
22
|
+
/** Version for migration support */
|
|
23
|
+
version: 1;
|
|
24
|
+
/** Session ID */
|
|
25
|
+
sessionId: string;
|
|
26
|
+
/** Current tick number */
|
|
27
|
+
tick: number;
|
|
28
|
+
/** Conversation timeline */
|
|
29
|
+
timeline: SerializableTimelineEntry[];
|
|
30
|
+
/** COM state (key-value pairs) */
|
|
31
|
+
comState: Record<string, unknown>;
|
|
32
|
+
/** Data cache from useData */
|
|
33
|
+
dataCache: Record<string, SerializableCacheEntry>;
|
|
34
|
+
/** Timestamp when snapshot was taken */
|
|
35
|
+
createdAt: string;
|
|
36
|
+
/** Optional metadata */
|
|
37
|
+
metadata?: Record<string, unknown>;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Timeline entry without non-serializable fields.
|
|
41
|
+
*/
|
|
42
|
+
export interface SerializableTimelineEntry {
|
|
43
|
+
id: string;
|
|
44
|
+
role: "user" | "assistant" | "system" | "tool";
|
|
45
|
+
content: unknown;
|
|
46
|
+
createdAt: string;
|
|
47
|
+
}
|
|
48
|
+
export interface HibernateOptions {
|
|
49
|
+
/** Additional metadata to include in snapshot */
|
|
50
|
+
metadata?: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Create a serializable snapshot of the session state.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* const snapshot = hibernate(compiler, {
|
|
58
|
+
* sessionId: session.id,
|
|
59
|
+
* tick: session.currentTick,
|
|
60
|
+
* timeline: session.timeline,
|
|
61
|
+
* comState: session.ctx.state,
|
|
62
|
+
* });
|
|
63
|
+
*
|
|
64
|
+
* // Store snapshot
|
|
65
|
+
* await db.sessions.save(session.id, JSON.stringify(snapshot));
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function hibernate(compiler: FiberCompiler, state: {
|
|
69
|
+
sessionId: string;
|
|
70
|
+
tick: number;
|
|
71
|
+
timeline: TimelineEntry[];
|
|
72
|
+
comState: Map<string, unknown>;
|
|
73
|
+
}, options?: HibernateOptions): SessionSnapshot;
|
|
74
|
+
export interface HydrateResult {
|
|
75
|
+
/** Session ID from snapshot */
|
|
76
|
+
sessionId: string;
|
|
77
|
+
/** Tick number to resume from */
|
|
78
|
+
tick: number;
|
|
79
|
+
/** Restored timeline */
|
|
80
|
+
timeline: TimelineEntry[];
|
|
81
|
+
/** Restored COM state */
|
|
82
|
+
comState: Map<string, unknown>;
|
|
83
|
+
/** Snapshot metadata */
|
|
84
|
+
metadata?: Record<string, unknown>;
|
|
85
|
+
/** When the snapshot was created */
|
|
86
|
+
snapshotCreatedAt: Date;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Restore session state from a snapshot.
|
|
90
|
+
*
|
|
91
|
+
* This restores our caches and returns the state to apply to a session.
|
|
92
|
+
* The session can then render and React will produce the same output
|
|
93
|
+
* because our hooks read from the restored caches.
|
|
94
|
+
*
|
|
95
|
+
* @example
|
|
96
|
+
* ```typescript
|
|
97
|
+
* // Load snapshot from storage
|
|
98
|
+
* const json = await db.sessions.get(sessionId);
|
|
99
|
+
* const snapshot = JSON.parse(json) as SessionSnapshot;
|
|
100
|
+
*
|
|
101
|
+
* // Create compiler first
|
|
102
|
+
* const compiler = new FiberCompiler(ctx);
|
|
103
|
+
*
|
|
104
|
+
* // Hydrate - restores data cache into compiler
|
|
105
|
+
* const state = hydrate(compiler, snapshot);
|
|
106
|
+
*
|
|
107
|
+
* // Now create/configure session with restored state
|
|
108
|
+
* session.timeline = state.timeline;
|
|
109
|
+
* session.currentTick = state.tick;
|
|
110
|
+
* // etc.
|
|
111
|
+
* ```
|
|
112
|
+
*/
|
|
113
|
+
export declare function hydrate(compiler: FiberCompiler, snapshot: SessionSnapshot): HydrateResult;
|
|
114
|
+
/**
|
|
115
|
+
* Check if a snapshot is valid.
|
|
116
|
+
*/
|
|
117
|
+
export declare function isValidSnapshot(obj: unknown): obj is SessionSnapshot;
|
|
118
|
+
/**
|
|
119
|
+
* Get snapshot age in milliseconds.
|
|
120
|
+
*/
|
|
121
|
+
export declare function getSnapshotAge(snapshot: SessionSnapshot): number;
|
|
122
|
+
/**
|
|
123
|
+
* Create a deep clone of a snapshot (for testing/debugging).
|
|
124
|
+
*/
|
|
125
|
+
export declare function cloneSnapshot(snapshot: SessionSnapshot): SessionSnapshot;
|
|
126
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hibernation/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMvE;;;GAGG;AACH,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,OAAO,EAAE,CAAC,CAAC;IAEX,iBAAiB;IACjB,SAAS,EAAE,MAAM,CAAC;IAElB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,4BAA4B;IAC5B,QAAQ,EAAE,yBAAyB,EAAE,CAAC;IAEtC,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElC,8BAA8B;IAC9B,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IAElD,wCAAwC;IACxC,SAAS,EAAE,MAAM,CAAC;IAElB,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;CACnB;AAMD,MAAM,WAAW,gBAAgB;IAC/B,iDAAiD;IACjD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,SAAS,CACvB,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE;IACL,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,EACD,OAAO,GAAE,gBAAqB,GAC7B,eAAe,CAgBjB;AAMD,MAAM,WAAW,aAAa;IAC5B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAC;IAElB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAE1B,yBAAyB;IACzB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B,wBAAwB;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC,oCAAoC;IACpC,iBAAiB,EAAE,IAAI,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,EAAE,eAAe,GAAG,aAAa,CA4BzF;AAMD;;GAEG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,eAAe,CAapE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAEhE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,eAAe,GAAG,eAAe,CAExE"}
|