@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,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V2 Hooks
|
|
3
|
+
*
|
|
4
|
+
* Custom hooks for Agentick components.
|
|
5
|
+
*/
|
|
6
|
+
// Re-export React hooks for convenience
|
|
7
|
+
export { useState, useEffect, useRef, useCallback, useMemo, useContext } from "react";
|
|
8
|
+
// Context hooks
|
|
9
|
+
export { useCom, useTickState, COMProvider, TickStateProvider, AgentickProvider } from "./context";
|
|
10
|
+
// COM state hook
|
|
11
|
+
export { useComState } from "./com-state";
|
|
12
|
+
// Runtime context (per-session state)
|
|
13
|
+
export { createRuntimeStore, useRuntimeStore, RuntimeProvider, storeHasPendingData, storeResolvePendingData, storeRunTickStartCallbacks, storeRunTickEndCallbacks, storeRunAfterCompileCallbacks, storeClearLifecycleCallbacks, storeClearDataCache, storeGetSerializableDataCache, storeSetDataCache, storeInvalidateData, } from "./runtime-context";
|
|
14
|
+
// Knobs
|
|
15
|
+
export { knob, isKnob, useKnob, } from "./knob";
|
|
16
|
+
export { Knobs, useKnobsContext, useKnobsContextOptional, } from "./knobs-component";
|
|
17
|
+
// Lifecycle hooks
|
|
18
|
+
export { useOnMount, useOnUnmount, useOnTickStart, useOnTickEnd, useAfterCompile, useContinuation, } from "./lifecycle";
|
|
19
|
+
// Data hook
|
|
20
|
+
export { useData, useInvalidateData } from "./data";
|
|
21
|
+
// Signal hooks and utilities
|
|
22
|
+
export {
|
|
23
|
+
// React hooks
|
|
24
|
+
useSignal, useComputed,
|
|
25
|
+
// Standalone signal functions
|
|
26
|
+
signal, computed, effect, createSignal,
|
|
27
|
+
// Batching and utilities
|
|
28
|
+
batch, untracked,
|
|
29
|
+
// Type guards
|
|
30
|
+
isSignal, isComputed, isEffect,
|
|
31
|
+
// COM state integration
|
|
32
|
+
createCOMStateSignal, createReadonlyCOMStateSignal,
|
|
33
|
+
// Context utilities
|
|
34
|
+
runWithSignalContext, runWithSignalContextAsync,
|
|
35
|
+
// Symbols (for advanced use)
|
|
36
|
+
SIGNAL_SYMBOL, COMPUTED_SYMBOL, EFFECT_SYMBOL, COM_SIGNAL_SYMBOL, WATCH_SIGNAL_SYMBOL, PROPS_SIGNAL_SYMBOL, REQUIRED_INPUT_SYMBOL, } from "./signal";
|
|
37
|
+
// Formatter context
|
|
38
|
+
export { FormatterBoundary, useFormatter } from "./formatter-context";
|
|
39
|
+
// Message context
|
|
40
|
+
export { createMessageStore, MessageProvider, useMessageContext, useOnMessage, useQueuedMessages, useLastMessage, } from "./message-context";
|
|
41
|
+
// Timeline hooks (re-exported from jsx/components/timeline for convenience)
|
|
42
|
+
export { useTimelineContext, useTimelineContextOptional, useConversationHistory, } from "../jsx/components/timeline";
|
|
43
|
+
// Context info hook (real-time context utilization)
|
|
44
|
+
export { useContextInfo, useContextInfoStore, createContextInfoStore, ContextInfoProvider, } from "./context-info";
|
|
45
|
+
// Types
|
|
46
|
+
export * from "./types";
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,wCAAwC;AACxC,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAEtF,gBAAgB;AAChB,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEnG,iBAAiB;AACjB,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,sCAAsC;AACtC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,uBAAuB,EACvB,0BAA0B,EAC1B,wBAAwB,EACxB,6BAA6B,EAC7B,4BAA4B,EAC5B,mBAAmB,EACnB,6BAA6B,EAC7B,iBAAiB,EACjB,mBAAmB,GAKpB,MAAM,mBAAmB,CAAC;AAE3B,QAAQ;AACR,OAAO,EACL,IAAI,EACJ,MAAM,EACN,OAAO,GAKR,MAAM,QAAQ,CAAC;AAChB,OAAO,EACL,KAAK,EACL,eAAe,EACf,uBAAuB,GAKxB,MAAM,mBAAmB,CAAC;AAE3B,kBAAkB;AAClB,OAAO,EACL,UAAU,EACV,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,eAAe,EACf,eAAe,GAChB,MAAM,aAAa,CAAC;AAErB,YAAY;AACZ,OAAO,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,QAAQ,CAAC;AAEpD,6BAA6B;AAC7B,OAAO;AACL,cAAc;AACd,SAAS,EACT,WAAW;AACX,8BAA8B;AAC9B,MAAM,EACN,QAAQ,EACR,MAAM,EACN,YAAY;AACZ,yBAAyB;AACzB,KAAK,EACL,SAAS;AACT,cAAc;AACd,QAAQ,EACR,UAAU,EACV,QAAQ;AACR,wBAAwB;AACxB,oBAAoB,EACpB,4BAA4B;AAC5B,oBAAoB;AACpB,oBAAoB,EACpB,yBAAyB;AACzB,6BAA6B;AAC7B,aAAa,EACb,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,GAOtB,MAAM,UAAU,CAAC;AAElB,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAA8B,MAAM,qBAAqB,CAAC;AAElG,kBAAkB;AAClB,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,cAAc,GAIf,MAAM,mBAAmB,CAAC;AAE3B,4EAA4E;AAC5E,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,4BAA4B,CAAC;AAEpC,oDAAoD;AACpD,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,GAGpB,MAAM,gBAAgB,CAAC;AAExB,QAAQ;AACR,cAAc,SAAS,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knob — model-visible, model-settable reactive state.
|
|
3
|
+
*
|
|
4
|
+
* Three pieces:
|
|
5
|
+
* 1. `knob()` — descriptor factory for config-level declaration
|
|
6
|
+
* 2. `useKnob()` — hook returning [value, setter] tuple + registers in knobRegistry
|
|
7
|
+
* 3. `isKnob()` — type guard for detecting KnobDescriptor values
|
|
8
|
+
*
|
|
9
|
+
* Knobs present primitive values (string, number, boolean) to the model.
|
|
10
|
+
* An optional resolve callback maps the primitive to a rich application value.
|
|
11
|
+
*
|
|
12
|
+
* Constraints are type-safe: number knobs accept min/max/step,
|
|
13
|
+
* string knobs accept maxLength/pattern. Boolean knobs have no constraints.
|
|
14
|
+
*/
|
|
15
|
+
declare const KNOB_SYMBOL: unique symbol;
|
|
16
|
+
export type KnobPrimitive = string | number | boolean;
|
|
17
|
+
/**
|
|
18
|
+
* Type-safe constraints based on value type.
|
|
19
|
+
* Numbers get min/max/step. Strings get maxLength/pattern.
|
|
20
|
+
*/
|
|
21
|
+
export type KnobConstraints<T extends KnobPrimitive> = T extends number ? {
|
|
22
|
+
min?: number;
|
|
23
|
+
max?: number;
|
|
24
|
+
step?: number;
|
|
25
|
+
} : T extends string ? {
|
|
26
|
+
maxLength?: number;
|
|
27
|
+
pattern?: string;
|
|
28
|
+
} : {};
|
|
29
|
+
/**
|
|
30
|
+
* Options for knob() and useKnob(). Type-safe constraints based on value type.
|
|
31
|
+
*/
|
|
32
|
+
export type KnobOpts<T extends KnobPrimitive> = KnobConstraints<T> & {
|
|
33
|
+
description: string;
|
|
34
|
+
options?: T[];
|
|
35
|
+
group?: string;
|
|
36
|
+
required?: boolean;
|
|
37
|
+
validate?: (value: T) => true | string;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Descriptor carrying a knob's default value, constraints, and optional resolver.
|
|
41
|
+
* Created by knob(), consumed by useKnob() and <Knobs />.
|
|
42
|
+
*
|
|
43
|
+
* Stores the superset of all constraint fields (the user-facing KnobOpts<T>
|
|
44
|
+
* provides compile-time safety; the descriptor is a runtime carrier).
|
|
45
|
+
*/
|
|
46
|
+
export interface KnobDescriptor<T extends KnobPrimitive = KnobPrimitive, R = T> {
|
|
47
|
+
[KNOB_SYMBOL]: true;
|
|
48
|
+
defaultValue: T;
|
|
49
|
+
description: string;
|
|
50
|
+
options?: T[];
|
|
51
|
+
valueType: "string" | "number" | "boolean";
|
|
52
|
+
resolve?: (value: T) => R;
|
|
53
|
+
group?: string;
|
|
54
|
+
required?: boolean;
|
|
55
|
+
validate?: (value: T) => true | string;
|
|
56
|
+
min?: number;
|
|
57
|
+
max?: number;
|
|
58
|
+
step?: number;
|
|
59
|
+
maxLength?: number;
|
|
60
|
+
pattern?: string;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Create a knob descriptor (no resolver — primitive IS the value).
|
|
64
|
+
*/
|
|
65
|
+
export declare function knob<T extends KnobPrimitive>(defaultValue: T, opts: KnobOpts<T>): KnobDescriptor<T, T>;
|
|
66
|
+
/**
|
|
67
|
+
* Create a knob descriptor with a resolver (primitive → rich value).
|
|
68
|
+
*/
|
|
69
|
+
export declare function knob<T extends KnobPrimitive, R>(defaultValue: T, opts: KnobOpts<T>, resolve: (value: T) => R): KnobDescriptor<T, R>;
|
|
70
|
+
/**
|
|
71
|
+
* Check if a value is a KnobDescriptor.
|
|
72
|
+
*/
|
|
73
|
+
export declare function isKnob(value: unknown): value is KnobDescriptor;
|
|
74
|
+
/**
|
|
75
|
+
* Create a knob (no resolver). Returns [value, setter].
|
|
76
|
+
*/
|
|
77
|
+
export declare function useKnob<T extends KnobPrimitive>(name: string, defaultValue: T, opts: KnobOpts<T>): [T, (value: T) => void];
|
|
78
|
+
/**
|
|
79
|
+
* Create a knob with a resolver. Returns [resolvedValue, primitiveSetter].
|
|
80
|
+
*/
|
|
81
|
+
export declare function useKnob<T extends KnobPrimitive, R>(name: string, defaultValue: T, opts: KnobOpts<T>, resolve: (value: T) => R): [R, (value: T) => void];
|
|
82
|
+
/**
|
|
83
|
+
* Create a knob from a KnobDescriptor. Returns [resolvedValue, primitiveSetter].
|
|
84
|
+
*/
|
|
85
|
+
export declare function useKnob<T extends KnobPrimitive, R>(name: string, descriptor: KnobDescriptor<T, R>): [R, (value: T) => void];
|
|
86
|
+
export {};
|
|
87
|
+
//# sourceMappingURL=knob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knob.d.ts","sourceRoot":"","sources":["../../src/hooks/knob.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,QAAA,MAAM,WAAW,eAA8B,CAAC;AAEhD,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;AAEtD;;;GAGG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,aAAa,IAAI,CAAC,SAAS,MAAM,GACnE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7C,CAAC,SAAS,MAAM,GACd;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAExC,EAAE,CAAC;AAET;;GAEG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS,aAAa,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG;IACnE,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC;CACxC,CAAC;AAMF;;;;;;GAMG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,aAAa,GAAG,aAAa,EAAE,CAAC,GAAG,CAAC;IAC5E,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC;IACpB,YAAY,EAAE,CAAC,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,GAAG,MAAM,CAAC;IAEvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,aAAa,EAC1C,YAAY,EAAE,CAAC,EACf,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAChB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAExB;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAC7C,YAAY,EAAE,CAAC,EACf,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACvB,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAyBxB;;GAEG;AACH,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAE9D;AAMD;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,aAAa,EAC7C,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,EACf,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,GAChB,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;AAE3B;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAChD,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,EACf,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GACvB,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC;AAE3B;;GAEG;AACH,wBAAgB,OAAO,CAAC,CAAC,SAAS,aAAa,EAAE,CAAC,EAChD,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,CAAC,GAC/B,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC,CAAC"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knob — model-visible, model-settable reactive state.
|
|
3
|
+
*
|
|
4
|
+
* Three pieces:
|
|
5
|
+
* 1. `knob()` — descriptor factory for config-level declaration
|
|
6
|
+
* 2. `useKnob()` — hook returning [value, setter] tuple + registers in knobRegistry
|
|
7
|
+
* 3. `isKnob()` — type guard for detecting KnobDescriptor values
|
|
8
|
+
*
|
|
9
|
+
* Knobs present primitive values (string, number, boolean) to the model.
|
|
10
|
+
* An optional resolve callback maps the primitive to a rich application value.
|
|
11
|
+
*
|
|
12
|
+
* Constraints are type-safe: number knobs accept min/max/step,
|
|
13
|
+
* string knobs accept maxLength/pattern. Boolean knobs have no constraints.
|
|
14
|
+
*/
|
|
15
|
+
import { useEffect, useMemo } from "react";
|
|
16
|
+
import { useRuntimeStore } from "./runtime-context";
|
|
17
|
+
import { useComState } from "./com-state";
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Types — Primitives, Constraints, Options
|
|
20
|
+
// ============================================================================
|
|
21
|
+
const KNOB_SYMBOL = Symbol.for("agentick.knob");
|
|
22
|
+
export function knob(defaultValue, opts, resolve) {
|
|
23
|
+
return {
|
|
24
|
+
[KNOB_SYMBOL]: true,
|
|
25
|
+
defaultValue,
|
|
26
|
+
description: opts.description,
|
|
27
|
+
options: opts.options,
|
|
28
|
+
valueType: typeof defaultValue,
|
|
29
|
+
resolve,
|
|
30
|
+
group: opts.group,
|
|
31
|
+
required: opts.required,
|
|
32
|
+
validate: opts.validate,
|
|
33
|
+
min: opts.min,
|
|
34
|
+
max: opts.max,
|
|
35
|
+
step: opts.step,
|
|
36
|
+
maxLength: opts.maxLength,
|
|
37
|
+
pattern: opts.pattern,
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Check if a value is a KnobDescriptor.
|
|
42
|
+
*/
|
|
43
|
+
export function isKnob(value) {
|
|
44
|
+
return typeof value === "object" && value !== null && KNOB_SYMBOL in value;
|
|
45
|
+
}
|
|
46
|
+
export function useKnob(name, defaultOrDescriptor, optsOrUndefined, maybeResolve) {
|
|
47
|
+
// Normalize arguments — extract all fields from descriptor or opts
|
|
48
|
+
let defaultValue;
|
|
49
|
+
let description;
|
|
50
|
+
let options;
|
|
51
|
+
let valueType;
|
|
52
|
+
let resolve;
|
|
53
|
+
let group;
|
|
54
|
+
let required;
|
|
55
|
+
let validate;
|
|
56
|
+
let min;
|
|
57
|
+
let max;
|
|
58
|
+
let step;
|
|
59
|
+
let maxLength;
|
|
60
|
+
let pattern;
|
|
61
|
+
if (isKnob(defaultOrDescriptor)) {
|
|
62
|
+
defaultValue = defaultOrDescriptor.defaultValue;
|
|
63
|
+
description = defaultOrDescriptor.description;
|
|
64
|
+
options = defaultOrDescriptor.options;
|
|
65
|
+
valueType = defaultOrDescriptor.valueType;
|
|
66
|
+
resolve = defaultOrDescriptor.resolve;
|
|
67
|
+
group = defaultOrDescriptor.group;
|
|
68
|
+
required = defaultOrDescriptor.required;
|
|
69
|
+
validate = defaultOrDescriptor.validate;
|
|
70
|
+
min = defaultOrDescriptor.min;
|
|
71
|
+
max = defaultOrDescriptor.max;
|
|
72
|
+
step = defaultOrDescriptor.step;
|
|
73
|
+
maxLength = defaultOrDescriptor.maxLength;
|
|
74
|
+
pattern = defaultOrDescriptor.pattern;
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
defaultValue = defaultOrDescriptor;
|
|
78
|
+
const opts = optsOrUndefined;
|
|
79
|
+
description = opts.description;
|
|
80
|
+
options = opts.options;
|
|
81
|
+
valueType = typeof defaultValue;
|
|
82
|
+
resolve = maybeResolve;
|
|
83
|
+
group = opts.group;
|
|
84
|
+
required = opts.required;
|
|
85
|
+
validate = opts.validate;
|
|
86
|
+
min = opts.min;
|
|
87
|
+
max = opts.max;
|
|
88
|
+
step = opts.step;
|
|
89
|
+
maxLength = opts.maxLength;
|
|
90
|
+
pattern = opts.pattern;
|
|
91
|
+
}
|
|
92
|
+
const store = useRuntimeStore();
|
|
93
|
+
const comKey = `knob:${name}`;
|
|
94
|
+
// COM-persisted state with automatic re-render on external changes
|
|
95
|
+
const primitiveSignal = useComState(comKey, defaultValue);
|
|
96
|
+
// Register in knobRegistry eagerly so <Knobs /> sees it on the same render pass.
|
|
97
|
+
// NOTE: Intentional render-time side effect — safe because Agentick's reconciler
|
|
98
|
+
// is synchronous/single-pass. Would not be safe in concurrent React.
|
|
99
|
+
useMemo(() => {
|
|
100
|
+
store.knobRegistry.set(name, {
|
|
101
|
+
name,
|
|
102
|
+
description,
|
|
103
|
+
getPrimitive: () => primitiveSignal(),
|
|
104
|
+
setPrimitive: (v) => primitiveSignal.set(v),
|
|
105
|
+
defaultValue,
|
|
106
|
+
options,
|
|
107
|
+
valueType,
|
|
108
|
+
group,
|
|
109
|
+
required,
|
|
110
|
+
validate,
|
|
111
|
+
min,
|
|
112
|
+
max,
|
|
113
|
+
step,
|
|
114
|
+
maxLength,
|
|
115
|
+
pattern,
|
|
116
|
+
});
|
|
117
|
+
}, [name]);
|
|
118
|
+
// Cleanup on unmount
|
|
119
|
+
useEffect(() => {
|
|
120
|
+
return () => {
|
|
121
|
+
store.knobRegistry.delete(name);
|
|
122
|
+
};
|
|
123
|
+
}, [name, store]);
|
|
124
|
+
// Current value — resolved if callback provided, primitive otherwise
|
|
125
|
+
const primitive = primitiveSignal();
|
|
126
|
+
const value = resolve ? resolve(primitive) : primitive;
|
|
127
|
+
return [value, (v) => primitiveSignal.set(v)];
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=knob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knob.js","sourceRoot":"","sources":["../../src/hooks/knob.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knobs — provider pattern for model-visible knob state.
|
|
3
|
+
*
|
|
4
|
+
* Three modes:
|
|
5
|
+
* 1. `<Knobs />` — default rendering (tool + section)
|
|
6
|
+
* 2. `<Knobs>{(groups) => …}</Knobs>` — render prop for custom section
|
|
7
|
+
* 3. `<Knobs.Provider>` + `useKnobsContext()` — full custom rendering
|
|
8
|
+
*
|
|
9
|
+
* The set_knob tool is always registered automatically in all three modes.
|
|
10
|
+
*/
|
|
11
|
+
import React, { type ReactNode } from "react";
|
|
12
|
+
/** Read-only snapshot of a knob for rendering. */
|
|
13
|
+
export interface KnobInfo {
|
|
14
|
+
name: string;
|
|
15
|
+
description: string;
|
|
16
|
+
value: string | number | boolean;
|
|
17
|
+
defaultValue: string | number | boolean;
|
|
18
|
+
semanticType: "toggle" | "range" | "number" | "select" | "text";
|
|
19
|
+
valueType: "string" | "number" | "boolean";
|
|
20
|
+
group?: string;
|
|
21
|
+
options?: (string | number | boolean)[];
|
|
22
|
+
min?: number;
|
|
23
|
+
max?: number;
|
|
24
|
+
step?: number;
|
|
25
|
+
maxLength?: number;
|
|
26
|
+
pattern?: string;
|
|
27
|
+
required?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface KnobGroup {
|
|
30
|
+
name: string;
|
|
31
|
+
knobs: KnobInfo[];
|
|
32
|
+
}
|
|
33
|
+
export interface KnobsContextValue {
|
|
34
|
+
knobs: KnobInfo[];
|
|
35
|
+
groups: KnobGroup[];
|
|
36
|
+
get: (name: string) => KnobInfo | undefined;
|
|
37
|
+
}
|
|
38
|
+
export type KnobsRenderFn = (groups: KnobGroup[]) => React.ReactElement | null;
|
|
39
|
+
export interface KnobsProps {
|
|
40
|
+
children?: KnobsRenderFn;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Renders the set_knob tool + knob section when knobs are registered.
|
|
44
|
+
*
|
|
45
|
+
* Three modes:
|
|
46
|
+
* - `<Knobs />` — default section rendering
|
|
47
|
+
* - `<Knobs>{(groups) => <section>…</section>}</Knobs>` — custom section via render prop
|
|
48
|
+
* - Use `<Knobs.Provider>` + `<Knobs.Controls />` for full custom rendering
|
|
49
|
+
*/
|
|
50
|
+
export declare function Knobs(props: KnobsProps): React.ReactElement | null;
|
|
51
|
+
export declare namespace Knobs {
|
|
52
|
+
var Provider: ({ children }: {
|
|
53
|
+
children: ReactNode;
|
|
54
|
+
}) => React.ReactElement;
|
|
55
|
+
var Controls: (props: KnobsControlsProps) => React.ReactElement;
|
|
56
|
+
}
|
|
57
|
+
interface KnobsControlsProps {
|
|
58
|
+
renderKnob?: (knob: KnobInfo) => React.ReactElement | null;
|
|
59
|
+
renderGroup?: (group: KnobGroup) => React.ReactElement | null;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Access knob context from within Knobs.Provider. Throws if not in provider.
|
|
63
|
+
*/
|
|
64
|
+
export declare function useKnobsContext(): KnobsContextValue;
|
|
65
|
+
/**
|
|
66
|
+
* Access knob context, returning null if not within provider.
|
|
67
|
+
*/
|
|
68
|
+
export declare function useKnobsContextOptional(): KnobsContextValue | null;
|
|
69
|
+
export {};
|
|
70
|
+
//# sourceMappingURL=knobs-component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"knobs-component.d.ts","sourceRoot":"","sources":["../../src/hooks/knobs-component.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAgBzE,kDAAkD;AAClD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACxC,YAAY,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;IAChE,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,CAAC,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,GAAG,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,QAAQ,GAAG,SAAS,CAAC;CAC7C;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;AAE/E,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC1B;AA0ND;;;;;;;GAOG;AACH,wBAAgB,KAAK,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAyBlE;yBAzBe,KAAK;iCA0CiC;QAAE,QAAQ,EAAE,SAAS,CAAA;KAAE,KAAG,KAAK,CAAC,YAAY;0BA2CnD,kBAAkB,KAAG,KAAK,CAAC,YAAY;;AAZtF,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3D,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;CAC/D;AA6BD;;GAEG;AACH,wBAAgB,eAAe,IAAI,iBAAiB,CAMnD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,GAAG,IAAI,CAElE"}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Knobs — provider pattern for model-visible knob state.
|
|
3
|
+
*
|
|
4
|
+
* Three modes:
|
|
5
|
+
* 1. `<Knobs />` — default rendering (tool + section)
|
|
6
|
+
* 2. `<Knobs>{(groups) => …}</Knobs>` — render prop for custom section
|
|
7
|
+
* 3. `<Knobs.Provider>` + `useKnobsContext()` — full custom rendering
|
|
8
|
+
*
|
|
9
|
+
* The set_knob tool is always registered automatically in all three modes.
|
|
10
|
+
*/
|
|
11
|
+
import React, { createContext, useContext } from "react";
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
import { useRuntimeStore } from "./runtime-context";
|
|
14
|
+
import { useCom } from "./context";
|
|
15
|
+
import { createTool } from "../tool/tool";
|
|
16
|
+
const h = React.createElement;
|
|
17
|
+
/** COM state key where the knob registry is stashed for the tool handler. */
|
|
18
|
+
const KNOB_REGISTRY_KEY = "__knobRegistry";
|
|
19
|
+
// ============================================================================
|
|
20
|
+
// React Context
|
|
21
|
+
// ============================================================================
|
|
22
|
+
const KnobsContext = createContext(null);
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// Semantic Type Inference
|
|
25
|
+
// ============================================================================
|
|
26
|
+
function inferSemanticType(knob) {
|
|
27
|
+
if (knob.valueType === "boolean")
|
|
28
|
+
return "toggle";
|
|
29
|
+
if (knob.valueType === "number" && (knob.min !== undefined || knob.max !== undefined))
|
|
30
|
+
return "range";
|
|
31
|
+
if (knob.valueType === "number")
|
|
32
|
+
return "number";
|
|
33
|
+
if (knob.valueType === "string" && knob.options?.length)
|
|
34
|
+
return "select";
|
|
35
|
+
return "text";
|
|
36
|
+
}
|
|
37
|
+
// ============================================================================
|
|
38
|
+
// KnobInfo / KnobGroup Builders
|
|
39
|
+
// ============================================================================
|
|
40
|
+
function buildKnobInfo(reg) {
|
|
41
|
+
return {
|
|
42
|
+
name: reg.name,
|
|
43
|
+
description: reg.description,
|
|
44
|
+
value: reg.getPrimitive(),
|
|
45
|
+
defaultValue: reg.defaultValue,
|
|
46
|
+
semanticType: inferSemanticType(reg),
|
|
47
|
+
valueType: reg.valueType,
|
|
48
|
+
group: reg.group,
|
|
49
|
+
options: reg.options,
|
|
50
|
+
min: reg.min,
|
|
51
|
+
max: reg.max,
|
|
52
|
+
step: reg.step,
|
|
53
|
+
maxLength: reg.maxLength,
|
|
54
|
+
pattern: reg.pattern,
|
|
55
|
+
required: reg.required,
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function buildGroups(knobs) {
|
|
59
|
+
const ungrouped = [];
|
|
60
|
+
const grouped = new Map();
|
|
61
|
+
for (const [, reg] of knobs) {
|
|
62
|
+
const info = buildKnobInfo(reg);
|
|
63
|
+
if (reg.group) {
|
|
64
|
+
const list = grouped.get(reg.group) ?? [];
|
|
65
|
+
list.push(info);
|
|
66
|
+
grouped.set(reg.group, list);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
ungrouped.push(info);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
const result = [];
|
|
73
|
+
if (ungrouped.length > 0) {
|
|
74
|
+
result.push({ name: "", knobs: ungrouped });
|
|
75
|
+
}
|
|
76
|
+
for (const [name, knobs] of grouped) {
|
|
77
|
+
result.push({ name, knobs });
|
|
78
|
+
}
|
|
79
|
+
return result;
|
|
80
|
+
}
|
|
81
|
+
// ============================================================================
|
|
82
|
+
// Formatting
|
|
83
|
+
// ============================================================================
|
|
84
|
+
function formatValue(value) {
|
|
85
|
+
return typeof value === "string" ? `"${value}"` : String(value);
|
|
86
|
+
}
|
|
87
|
+
function formatKnobLine(knob) {
|
|
88
|
+
const parts = [
|
|
89
|
+
`${knob.name} [${knob.semanticType}]: ${formatValue(knob.value)} — ${knob.description}`,
|
|
90
|
+
];
|
|
91
|
+
const hints = [];
|
|
92
|
+
if (knob.options?.length) {
|
|
93
|
+
hints.push(`options: ${knob.options.map(formatValue).join(", ")}`);
|
|
94
|
+
}
|
|
95
|
+
if (knob.min !== undefined || knob.max !== undefined) {
|
|
96
|
+
const range = `${knob.min ?? "*"} - ${knob.max ?? "*"}`;
|
|
97
|
+
hints.push(range);
|
|
98
|
+
}
|
|
99
|
+
if (knob.step !== undefined)
|
|
100
|
+
hints.push(`step ${knob.step}`);
|
|
101
|
+
if (knob.maxLength !== undefined)
|
|
102
|
+
hints.push(`max ${knob.maxLength} chars`);
|
|
103
|
+
if (knob.pattern !== undefined)
|
|
104
|
+
hints.push(`pattern: ${knob.pattern}`);
|
|
105
|
+
if (knob.required)
|
|
106
|
+
hints.push("required");
|
|
107
|
+
if (hints.length > 0) {
|
|
108
|
+
parts.push(` (${hints.join(", ")})`);
|
|
109
|
+
}
|
|
110
|
+
return parts.join("");
|
|
111
|
+
}
|
|
112
|
+
function formatKnobsForModel(groups) {
|
|
113
|
+
const lines = [
|
|
114
|
+
"Knobs are adjustable parameters you can modify using the set_knob tool.",
|
|
115
|
+
"",
|
|
116
|
+
];
|
|
117
|
+
let firstGroup = true;
|
|
118
|
+
for (const group of groups) {
|
|
119
|
+
if (group.name === "") {
|
|
120
|
+
// Ungrouped knobs (no header)
|
|
121
|
+
for (const knob of group.knobs) {
|
|
122
|
+
lines.push(formatKnobLine(knob));
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
else {
|
|
126
|
+
if (!firstGroup || lines.length > 2)
|
|
127
|
+
lines.push("");
|
|
128
|
+
lines.push(`### ${group.name}`);
|
|
129
|
+
for (const knob of group.knobs) {
|
|
130
|
+
lines.push(formatKnobLine(knob));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
firstGroup = false;
|
|
134
|
+
}
|
|
135
|
+
return lines.join("\n").trimEnd();
|
|
136
|
+
}
|
|
137
|
+
// ============================================================================
|
|
138
|
+
// Validation
|
|
139
|
+
// ============================================================================
|
|
140
|
+
function error(text) {
|
|
141
|
+
return [{ type: "text", text }];
|
|
142
|
+
}
|
|
143
|
+
function executeSetKnob(knobs, input) {
|
|
144
|
+
const knob = knobs.get(input.name);
|
|
145
|
+
if (!knob) {
|
|
146
|
+
return error(`Unknown knob "${input.name}". Available: ${[...knobs.keys()].join(", ")}`);
|
|
147
|
+
}
|
|
148
|
+
// Type check
|
|
149
|
+
if (typeof input.value !== knob.valueType) {
|
|
150
|
+
return error(`Invalid type for "${input.name}". Expected ${knob.valueType}, got ${typeof input.value}.`);
|
|
151
|
+
}
|
|
152
|
+
// Options check (enum constraint)
|
|
153
|
+
if (knob.options?.length && !knob.options.some((o) => o === input.value)) {
|
|
154
|
+
const opts = knob.options.map(formatValue).join(", ");
|
|
155
|
+
return error(`Invalid value for "${input.name}". Valid options: ${opts}`);
|
|
156
|
+
}
|
|
157
|
+
// Number constraints
|
|
158
|
+
if (typeof input.value === "number") {
|
|
159
|
+
if (knob.min !== undefined && input.value < knob.min) {
|
|
160
|
+
return error(`Value for "${input.name}" must be >= ${knob.min}. Got ${input.value}.`);
|
|
161
|
+
}
|
|
162
|
+
if (knob.max !== undefined && input.value > knob.max) {
|
|
163
|
+
return error(`Value for "${input.name}" must be <= ${knob.max}. Got ${input.value}.`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// String constraints
|
|
167
|
+
if (typeof input.value === "string") {
|
|
168
|
+
if (knob.maxLength !== undefined && input.value.length > knob.maxLength) {
|
|
169
|
+
return error(`Value for "${input.name}" exceeds max length of ${knob.maxLength}. Got ${input.value.length} chars.`);
|
|
170
|
+
}
|
|
171
|
+
if (knob.pattern !== undefined && !new RegExp(knob.pattern).test(input.value)) {
|
|
172
|
+
return error(`Value for "${input.name}" does not match pattern: ${knob.pattern}`);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// Custom validate
|
|
176
|
+
if (knob.validate) {
|
|
177
|
+
const result = knob.validate(input.value);
|
|
178
|
+
if (result !== true) {
|
|
179
|
+
return error(`Validation failed for "${input.name}": ${result}`);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
knob.setPrimitive(input.value);
|
|
183
|
+
return [{ type: "text", text: `Set ${input.name} to ${formatValue(input.value)}.` }];
|
|
184
|
+
}
|
|
185
|
+
// ============================================================================
|
|
186
|
+
// SetKnobTool — tool-only, no render
|
|
187
|
+
// ============================================================================
|
|
188
|
+
const SetKnobTool = createTool({
|
|
189
|
+
name: "set_knob",
|
|
190
|
+
description: "Set a knob value. See the knobs section for available knobs and options.",
|
|
191
|
+
input: z.object({
|
|
192
|
+
name: z.string().describe("Name of the knob to set"),
|
|
193
|
+
value: z.union([z.string(), z.number(), z.boolean()]).describe("New value for the knob"),
|
|
194
|
+
}),
|
|
195
|
+
handler: (input, ctx) => {
|
|
196
|
+
const knobs = ctx?.getState(KNOB_REGISTRY_KEY);
|
|
197
|
+
if (!knobs?.size) {
|
|
198
|
+
return [{ type: "text", text: "No knobs are currently registered." }];
|
|
199
|
+
}
|
|
200
|
+
return executeSetKnob(knobs, input);
|
|
201
|
+
},
|
|
202
|
+
// No render — tool registration only. Section rendered by Knobs/Provider.
|
|
203
|
+
});
|
|
204
|
+
// ============================================================================
|
|
205
|
+
// <Knobs /> — default + render prop
|
|
206
|
+
// ============================================================================
|
|
207
|
+
/**
|
|
208
|
+
* Renders the set_knob tool + knob section when knobs are registered.
|
|
209
|
+
*
|
|
210
|
+
* Three modes:
|
|
211
|
+
* - `<Knobs />` — default section rendering
|
|
212
|
+
* - `<Knobs>{(groups) => <section>…</section>}</Knobs>` — custom section via render prop
|
|
213
|
+
* - Use `<Knobs.Provider>` + `<Knobs.Controls />` for full custom rendering
|
|
214
|
+
*/
|
|
215
|
+
export function Knobs(props) {
|
|
216
|
+
const store = useRuntimeStore();
|
|
217
|
+
const ctx = useCom();
|
|
218
|
+
if (store.knobRegistry.size === 0) {
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
// Stash registry on COM so the tool handler can access it via ctx.getState().
|
|
222
|
+
ctx.setState(KNOB_REGISTRY_KEY, store.knobRegistry);
|
|
223
|
+
const groups = buildGroups(store.knobRegistry);
|
|
224
|
+
if (typeof props.children === "function") {
|
|
225
|
+
// Render prop: tool + custom content
|
|
226
|
+
return h(React.Fragment, null, h(SetKnobTool), props.children(groups));
|
|
227
|
+
}
|
|
228
|
+
// Default: tool + default section
|
|
229
|
+
return h(React.Fragment, null, h(SetKnobTool), h("section", { id: "knobs", audience: "model" }, formatKnobsForModel(groups)));
|
|
230
|
+
}
|
|
231
|
+
// ============================================================================
|
|
232
|
+
// <Knobs.Provider>
|
|
233
|
+
// ============================================================================
|
|
234
|
+
/**
|
|
235
|
+
* Provider that exposes knob context to descendants.
|
|
236
|
+
* Always registers the set_knob tool.
|
|
237
|
+
*
|
|
238
|
+
* @example
|
|
239
|
+
* ```tsx
|
|
240
|
+
* <Knobs.Provider>
|
|
241
|
+
* <Knobs.Controls />
|
|
242
|
+
* </Knobs.Provider>
|
|
243
|
+
* ```
|
|
244
|
+
*/
|
|
245
|
+
Knobs.Provider = function KnobsProvider({ children }) {
|
|
246
|
+
const store = useRuntimeStore();
|
|
247
|
+
const ctx = useCom();
|
|
248
|
+
if (store.knobRegistry.size === 0) {
|
|
249
|
+
return h(React.Fragment, null, children);
|
|
250
|
+
}
|
|
251
|
+
ctx.setState(KNOB_REGISTRY_KEY, store.knobRegistry);
|
|
252
|
+
const groups = buildGroups(store.knobRegistry);
|
|
253
|
+
const knobs = groups.flatMap((g) => g.knobs);
|
|
254
|
+
const contextValue = {
|
|
255
|
+
knobs,
|
|
256
|
+
groups,
|
|
257
|
+
get: (name) => knobs.find((k) => k.name === name),
|
|
258
|
+
};
|
|
259
|
+
return h(React.Fragment, null, h(SetKnobTool), h(KnobsContext.Provider, { value: contextValue }, children));
|
|
260
|
+
};
|
|
261
|
+
/**
|
|
262
|
+
* Renders knob content from Knobs.Provider context.
|
|
263
|
+
*
|
|
264
|
+
* - No props: default section rendering
|
|
265
|
+
* - `renderKnob`: custom per-knob rendering
|
|
266
|
+
* - `renderGroup`: custom per-group rendering
|
|
267
|
+
*/
|
|
268
|
+
Knobs.Controls = function KnobsControls(props) {
|
|
269
|
+
const context = useContext(KnobsContext);
|
|
270
|
+
if (!context)
|
|
271
|
+
return h(React.Fragment, null);
|
|
272
|
+
if (props.renderGroup) {
|
|
273
|
+
return h(React.Fragment, null, ...context.groups.map((g) => props.renderGroup(g)));
|
|
274
|
+
}
|
|
275
|
+
if (props.renderKnob) {
|
|
276
|
+
return h(React.Fragment, null, ...context.knobs.map((k) => props.renderKnob(k)));
|
|
277
|
+
}
|
|
278
|
+
// Default rendering from context
|
|
279
|
+
return h("section", { id: "knobs", audience: "model" }, formatKnobsForModel(context.groups));
|
|
280
|
+
};
|
|
281
|
+
// ============================================================================
|
|
282
|
+
// Hooks
|
|
283
|
+
// ============================================================================
|
|
284
|
+
/**
|
|
285
|
+
* Access knob context from within Knobs.Provider. Throws if not in provider.
|
|
286
|
+
*/
|
|
287
|
+
export function useKnobsContext() {
|
|
288
|
+
const context = useContext(KnobsContext);
|
|
289
|
+
if (!context) {
|
|
290
|
+
throw new Error("useKnobsContext must be used within a Knobs.Provider");
|
|
291
|
+
}
|
|
292
|
+
return context;
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Access knob context, returning null if not within provider.
|
|
296
|
+
*/
|
|
297
|
+
export function useKnobsContextOptional() {
|
|
298
|
+
return useContext(KnobsContext);
|
|
299
|
+
}
|
|
300
|
+
//# sourceMappingURL=knobs-component.js.map
|