@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,138 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Client Service
|
|
3
|
+
*
|
|
4
|
+
* Wraps the official @modelcontextprotocol/sdk Client to manage connections
|
|
5
|
+
* to multiple MCP servers.
|
|
6
|
+
*/
|
|
7
|
+
import { Client } from "@modelcontextprotocol/sdk/client";
|
|
8
|
+
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
9
|
+
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
10
|
+
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
|
|
11
|
+
import {} from "./types";
|
|
12
|
+
import { Logger } from "../index";
|
|
13
|
+
/**
|
|
14
|
+
* Wrapper around official MCP SDK Client
|
|
15
|
+
* Manages connections to multiple MCP servers
|
|
16
|
+
*/
|
|
17
|
+
export class MCPClient {
|
|
18
|
+
logger = Logger.for(this);
|
|
19
|
+
clients = new Map();
|
|
20
|
+
tools = new Map(); // refreshed on connect
|
|
21
|
+
/**
|
|
22
|
+
* Connect to an MCP server using the official SDK
|
|
23
|
+
*/
|
|
24
|
+
async connect(config) {
|
|
25
|
+
const existing = this.getClient(config.serverName);
|
|
26
|
+
if (existing) {
|
|
27
|
+
return existing;
|
|
28
|
+
}
|
|
29
|
+
const client = new Client({
|
|
30
|
+
name: "@agentick/engine",
|
|
31
|
+
version: "1.0.0",
|
|
32
|
+
}, {
|
|
33
|
+
// Capabilities are optional - Client will work without explicit capabilities
|
|
34
|
+
// The SDK handles tool discovery automatically
|
|
35
|
+
});
|
|
36
|
+
// Create transport based on config
|
|
37
|
+
const transport = this.createTransport(config);
|
|
38
|
+
// Connect using SDK
|
|
39
|
+
await client.connect(transport);
|
|
40
|
+
// List and cache tools
|
|
41
|
+
await this.listTools(config.serverName);
|
|
42
|
+
client.onclose = () => {
|
|
43
|
+
this.disconnect(config.serverName);
|
|
44
|
+
this.logger.warn({ serverName: config.serverName }, "MCP client disconnected");
|
|
45
|
+
};
|
|
46
|
+
client.onerror = (error) => {
|
|
47
|
+
this.disconnect(config.serverName);
|
|
48
|
+
this.logger.error({ err: error, serverName: config.serverName }, "MCP client error");
|
|
49
|
+
};
|
|
50
|
+
this.clients.set(config.serverName, client);
|
|
51
|
+
return client;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Get an existing client connection
|
|
55
|
+
*/
|
|
56
|
+
getClient(serverName) {
|
|
57
|
+
return this.clients.get(serverName);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* List tools from an MCP server
|
|
61
|
+
*/
|
|
62
|
+
async listTools(serverName) {
|
|
63
|
+
const tools = this.tools.get(serverName);
|
|
64
|
+
if (tools) {
|
|
65
|
+
return tools;
|
|
66
|
+
}
|
|
67
|
+
const client = await this.getClient(serverName);
|
|
68
|
+
if (!client) {
|
|
69
|
+
throw new Error(`MCP client not found for server name: ${serverName}`);
|
|
70
|
+
}
|
|
71
|
+
const toolsList = await client.listTools();
|
|
72
|
+
const mcpTools = toolsList.tools.map((tool) => ({
|
|
73
|
+
name: tool.name,
|
|
74
|
+
description: tool.description || "",
|
|
75
|
+
inputSchema: tool.inputSchema,
|
|
76
|
+
}));
|
|
77
|
+
this.tools.set(serverName, mcpTools);
|
|
78
|
+
return mcpTools;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Disconnect from an MCP server
|
|
82
|
+
*/
|
|
83
|
+
async disconnect(serverName) {
|
|
84
|
+
this.clients.delete(serverName);
|
|
85
|
+
this.tools.delete(serverName);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Disconnect from all servers
|
|
89
|
+
*/
|
|
90
|
+
async disconnectAll() {
|
|
91
|
+
const promises = Array.from(this.clients.keys()).map((name) => this.disconnect(name));
|
|
92
|
+
await Promise.all(promises);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Call a tool on an MCP server
|
|
96
|
+
*/
|
|
97
|
+
async callTool(serverName, toolName, input) {
|
|
98
|
+
const client = this.clients.get(serverName);
|
|
99
|
+
if (!client) {
|
|
100
|
+
throw new Error(`MCP server "${serverName}" is not connected`);
|
|
101
|
+
}
|
|
102
|
+
// Use SDK's callTool method
|
|
103
|
+
const result = await client.callTool({
|
|
104
|
+
name: toolName,
|
|
105
|
+
arguments: input,
|
|
106
|
+
});
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Create transport based on config
|
|
111
|
+
*/
|
|
112
|
+
createTransport(config) {
|
|
113
|
+
switch (config.transport) {
|
|
114
|
+
case "stdio":
|
|
115
|
+
if (!config.connection.command) {
|
|
116
|
+
throw new Error("Stdio transport requires command in connection config");
|
|
117
|
+
}
|
|
118
|
+
return new StdioClientTransport({
|
|
119
|
+
command: config.connection.command,
|
|
120
|
+
args: config.connection.args || [],
|
|
121
|
+
});
|
|
122
|
+
case "sse":
|
|
123
|
+
if (!config.connection.url) {
|
|
124
|
+
throw new Error("SSE transport requires url in connection config");
|
|
125
|
+
}
|
|
126
|
+
return new SSEClientTransport(new URL(config.connection.url));
|
|
127
|
+
case "websocket":
|
|
128
|
+
// Use Streamable HTTP (modern replacement for WebSocket)
|
|
129
|
+
if (!config.connection.url) {
|
|
130
|
+
throw new Error("Streamable HTTP transport requires url in connection config");
|
|
131
|
+
}
|
|
132
|
+
return new StreamableHTTPClientTransport(new URL(config.connection.url));
|
|
133
|
+
default:
|
|
134
|
+
throw new Error(`Unsupported MCP transport: ${config.transport}`);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/mcp/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Component
|
|
3
|
+
*
|
|
4
|
+
* A component that connects to an MCP server and registers its tools.
|
|
5
|
+
* Supports runtime configuration (auth tokens, etc.) and tool filtering.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
import type { EngineComponent } from "../component/component";
|
|
9
|
+
import { MCPClient } from "./client";
|
|
10
|
+
import type { MCPConfig, MCPServerConfig } from "./types";
|
|
11
|
+
import type { JSX } from "../jsx/jsx-runtime";
|
|
12
|
+
import type { ComponentBaseProps } from "../jsx/jsx-types";
|
|
13
|
+
/**
|
|
14
|
+
* Props for MCPToolComponent
|
|
15
|
+
*/
|
|
16
|
+
export interface MCPToolComponentProps extends ComponentBaseProps, Partial<EngineComponent> {
|
|
17
|
+
/**
|
|
18
|
+
* MCP server name (used as identifier)
|
|
19
|
+
*/
|
|
20
|
+
server: string;
|
|
21
|
+
/**
|
|
22
|
+
* Base MCP server configuration (Cursor-style or full MCPConfig)
|
|
23
|
+
* This is the static configuration defined at component creation time.
|
|
24
|
+
*/
|
|
25
|
+
config: MCPServerConfig | MCPConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Runtime configuration (merged with base config).
|
|
28
|
+
* Useful for user-specific auth tokens, dynamic URLs, etc.
|
|
29
|
+
* Can be passed from user context, execution input, etc.
|
|
30
|
+
*/
|
|
31
|
+
runtimeConfig?: Partial<MCPConfig>;
|
|
32
|
+
/**
|
|
33
|
+
* List of tool names to exclude from registration.
|
|
34
|
+
* If provided, only tools NOT in this list will be registered.
|
|
35
|
+
*/
|
|
36
|
+
exclude?: string[];
|
|
37
|
+
/**
|
|
38
|
+
* List of tool names to include (whitelist).
|
|
39
|
+
* If provided, only tools in this list will be registered.
|
|
40
|
+
* Takes precedence over exclude.
|
|
41
|
+
*/
|
|
42
|
+
include?: string[];
|
|
43
|
+
/**
|
|
44
|
+
* Optional MCPClient instance (for sharing connections across components).
|
|
45
|
+
* If not provided, creates a new instance.
|
|
46
|
+
*/
|
|
47
|
+
mcpClient?: MCPClient;
|
|
48
|
+
/**
|
|
49
|
+
* Optional prefix for tool names (to avoid conflicts).
|
|
50
|
+
* Example: prefix="mcp_" → tool "read_file" becomes "mcp_read_file"
|
|
51
|
+
*/
|
|
52
|
+
toolPrefix?: string;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* MCPToolComponent connects to an MCP server and registers its tools into the context.
|
|
56
|
+
*
|
|
57
|
+
* Usage:
|
|
58
|
+
* ```tsx
|
|
59
|
+
* // Simple usage with Cursor-style config
|
|
60
|
+
* <MCPToolComponent
|
|
61
|
+
* server="postgres"
|
|
62
|
+
* config={{
|
|
63
|
+
* command: 'npx',
|
|
64
|
+
* args: ['-y', '@modelcontextprotocol/server-postgres', 'postgresql://localhost/mydb'],
|
|
65
|
+
* }}
|
|
66
|
+
* />
|
|
67
|
+
*
|
|
68
|
+
* // With runtime config (auth token from user context)
|
|
69
|
+
* <MCPToolComponent
|
|
70
|
+
* server="api-server"
|
|
71
|
+
* config={{
|
|
72
|
+
* transport: 'sse',
|
|
73
|
+
* connection: { url: 'https://api.example.com/mcp' },
|
|
74
|
+
* }}
|
|
75
|
+
* runtimeConfig={{
|
|
76
|
+
* auth: { type: 'bearer', token: userContext.apiToken },
|
|
77
|
+
* }}
|
|
78
|
+
* exclude={['dangerous_tool']}
|
|
79
|
+
* />
|
|
80
|
+
*
|
|
81
|
+
* // With tool filtering
|
|
82
|
+
* <MCPToolComponent
|
|
83
|
+
* server="filesystem"
|
|
84
|
+
* config={{ command: 'npx', args: [...] }}
|
|
85
|
+
* include={['read_file', 'list_directory']} // Only these tools
|
|
86
|
+
* toolPrefix="fs_"
|
|
87
|
+
* />
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
export declare function MCPToolComponent(props: MCPToolComponentProps): React.ReactElement | null;
|
|
91
|
+
/**
|
|
92
|
+
* Factory function for creating MCPToolComponent in JSX
|
|
93
|
+
*/
|
|
94
|
+
export declare function MCPTool(props: MCPToolComponentProps): JSX.Element;
|
|
95
|
+
//# sourceMappingURL=component.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../src/mcp/component.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1D,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AA4C3D;;GAEG;AACH,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB,EAAE,OAAO,CAAC,eAAe,CAAC;IACzF;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;OAGG;IACH,MAAM,EAAE,eAAe,GAAG,SAAS,CAAC;IAEpC;;;;OAIG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;IAEnC;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CA4GxF;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,KAAK,EAAE,qBAAqB,GAAG,GAAG,CAAC,OAAO,CAEjE"}
|
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Component
|
|
3
|
+
*
|
|
4
|
+
* A component that connects to an MCP server and registers its tools.
|
|
5
|
+
* Supports runtime configuration (auth tokens, etc.) and tool filtering.
|
|
6
|
+
*/
|
|
7
|
+
import React, { useEffect, useRef } from "react";
|
|
8
|
+
import { MCPClient } from "./client";
|
|
9
|
+
import { MCPService } from "./service";
|
|
10
|
+
import { useCom } from "../hooks";
|
|
11
|
+
/**
|
|
12
|
+
* Normalizes Cursor-style config to full MCPConfig
|
|
13
|
+
*/
|
|
14
|
+
function normalizeMCPConfig(serverName, config) {
|
|
15
|
+
// If it's already a full MCPConfig, return as-is
|
|
16
|
+
if ("transport" in config && "connection" in config) {
|
|
17
|
+
return config;
|
|
18
|
+
}
|
|
19
|
+
// Convert Cursor-style config (assumes stdio transport)
|
|
20
|
+
const mcpServerConfig = config;
|
|
21
|
+
return {
|
|
22
|
+
serverName,
|
|
23
|
+
transport: "stdio",
|
|
24
|
+
connection: {
|
|
25
|
+
command: mcpServerConfig.command,
|
|
26
|
+
args: mcpServerConfig.args || [],
|
|
27
|
+
env: mcpServerConfig.env,
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Merges base config with runtime config (runtime overrides base)
|
|
33
|
+
*/
|
|
34
|
+
function mergeMCPConfig(base, runtime) {
|
|
35
|
+
if (!runtime) {
|
|
36
|
+
return base;
|
|
37
|
+
}
|
|
38
|
+
return {
|
|
39
|
+
...base,
|
|
40
|
+
...runtime,
|
|
41
|
+
connection: {
|
|
42
|
+
...base.connection,
|
|
43
|
+
...runtime.connection,
|
|
44
|
+
},
|
|
45
|
+
auth: runtime.auth || base.auth,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* MCPToolComponent connects to an MCP server and registers its tools into the context.
|
|
50
|
+
*
|
|
51
|
+
* Usage:
|
|
52
|
+
* ```tsx
|
|
53
|
+
* // Simple usage with Cursor-style config
|
|
54
|
+
* <MCPToolComponent
|
|
55
|
+
* server="postgres"
|
|
56
|
+
* config={{
|
|
57
|
+
* command: 'npx',
|
|
58
|
+
* args: ['-y', '@modelcontextprotocol/server-postgres', 'postgresql://localhost/mydb'],
|
|
59
|
+
* }}
|
|
60
|
+
* />
|
|
61
|
+
*
|
|
62
|
+
* // With runtime config (auth token from user context)
|
|
63
|
+
* <MCPToolComponent
|
|
64
|
+
* server="api-server"
|
|
65
|
+
* config={{
|
|
66
|
+
* transport: 'sse',
|
|
67
|
+
* connection: { url: 'https://api.example.com/mcp' },
|
|
68
|
+
* }}
|
|
69
|
+
* runtimeConfig={{
|
|
70
|
+
* auth: { type: 'bearer', token: userContext.apiToken },
|
|
71
|
+
* }}
|
|
72
|
+
* exclude={['dangerous_tool']}
|
|
73
|
+
* />
|
|
74
|
+
*
|
|
75
|
+
* // With tool filtering
|
|
76
|
+
* <MCPToolComponent
|
|
77
|
+
* server="filesystem"
|
|
78
|
+
* config={{ command: 'npx', args: [...] }}
|
|
79
|
+
* include={['read_file', 'list_directory']} // Only these tools
|
|
80
|
+
* toolPrefix="fs_"
|
|
81
|
+
* />
|
|
82
|
+
* ```
|
|
83
|
+
*/
|
|
84
|
+
export function MCPToolComponent(props) {
|
|
85
|
+
const ctx = useCom();
|
|
86
|
+
// Refs for managing state across renders
|
|
87
|
+
const mcpClientRef = useRef(null);
|
|
88
|
+
const mcpServiceRef = useRef(null);
|
|
89
|
+
const registeredToolNamesRef = useRef([]);
|
|
90
|
+
const hasInitializedRef = useRef(false);
|
|
91
|
+
// Initialize refs on first render
|
|
92
|
+
if (!mcpClientRef.current) {
|
|
93
|
+
mcpClientRef.current = props.mcpClient || new MCPClient();
|
|
94
|
+
mcpServiceRef.current = new MCPService(mcpClientRef.current);
|
|
95
|
+
}
|
|
96
|
+
// Mount/unmount effect
|
|
97
|
+
useEffect(() => {
|
|
98
|
+
if (hasInitializedRef.current) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
hasInitializedRef.current = true;
|
|
102
|
+
const baseConfig = normalizeMCPConfig(props.server, props.config);
|
|
103
|
+
const effectiveConfig = mergeMCPConfig(baseConfig, props.runtimeConfig);
|
|
104
|
+
const mcpClient = mcpClientRef.current;
|
|
105
|
+
const mcpService = mcpServiceRef.current;
|
|
106
|
+
const initMCP = async () => {
|
|
107
|
+
try {
|
|
108
|
+
// Discover tools from MCP server
|
|
109
|
+
const tools = await mcpService.connectAndDiscover(effectiveConfig);
|
|
110
|
+
// Filter tools based on include/exclude
|
|
111
|
+
let filteredTools = tools;
|
|
112
|
+
if (props.include && props.include.length > 0) {
|
|
113
|
+
// Whitelist: only include specified tools
|
|
114
|
+
filteredTools = tools.filter((t) => props.include.includes(t.name));
|
|
115
|
+
}
|
|
116
|
+
else if (props.exclude && props.exclude.length > 0) {
|
|
117
|
+
// Blacklist: exclude specified tools
|
|
118
|
+
filteredTools = tools.filter((t) => !props.exclude.includes(t.name));
|
|
119
|
+
}
|
|
120
|
+
// Register each filtered tool
|
|
121
|
+
for (const mcpToolDef of filteredTools) {
|
|
122
|
+
// Apply tool prefix if specified
|
|
123
|
+
const toolName = props.toolPrefix
|
|
124
|
+
? `${props.toolPrefix}${mcpToolDef.name}`
|
|
125
|
+
: mcpToolDef.name;
|
|
126
|
+
// Create tool with prefixed name
|
|
127
|
+
const toolDef = {
|
|
128
|
+
...mcpToolDef,
|
|
129
|
+
name: toolName,
|
|
130
|
+
};
|
|
131
|
+
mcpService.registerMCPTool(effectiveConfig, toolDef, ctx);
|
|
132
|
+
registeredToolNamesRef.current.push(toolName);
|
|
133
|
+
}
|
|
134
|
+
// Call onMount callback if provided
|
|
135
|
+
if (props.onMount) {
|
|
136
|
+
await props.onMount(ctx);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
catch (error) {
|
|
140
|
+
console.error(`Failed to initialize MCP server "${props.server}":`, error);
|
|
141
|
+
// Call onMount even on error (for error handling)
|
|
142
|
+
if (props.onMount) {
|
|
143
|
+
await props.onMount(ctx);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
};
|
|
147
|
+
initMCP();
|
|
148
|
+
// Cleanup on unmount
|
|
149
|
+
return () => {
|
|
150
|
+
// Remove registered tools
|
|
151
|
+
for (const toolName of registeredToolNamesRef.current) {
|
|
152
|
+
ctx.removeTool(toolName);
|
|
153
|
+
}
|
|
154
|
+
registeredToolNamesRef.current = [];
|
|
155
|
+
// Disconnect MCP client if we created it (not shared)
|
|
156
|
+
if (!props.mcpClient && mcpClient) {
|
|
157
|
+
mcpClient.disconnect(baseConfig.serverName);
|
|
158
|
+
}
|
|
159
|
+
// Call onUnmount callback if provided
|
|
160
|
+
if (props.onUnmount) {
|
|
161
|
+
props.onUnmount(ctx);
|
|
162
|
+
}
|
|
163
|
+
};
|
|
164
|
+
}, [
|
|
165
|
+
ctx,
|
|
166
|
+
props.server,
|
|
167
|
+
props.config,
|
|
168
|
+
props.runtimeConfig,
|
|
169
|
+
props.include,
|
|
170
|
+
props.exclude,
|
|
171
|
+
props.toolPrefix,
|
|
172
|
+
props.mcpClient,
|
|
173
|
+
props.onMount,
|
|
174
|
+
props.onUnmount,
|
|
175
|
+
]);
|
|
176
|
+
// MCP components don't render anything
|
|
177
|
+
return null;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Factory function for creating MCPToolComponent in JSX
|
|
181
|
+
*/
|
|
182
|
+
export function MCPTool(props) {
|
|
183
|
+
return React.createElement(MCPToolComponent, props);
|
|
184
|
+
}
|
|
185
|
+
//# sourceMappingURL=component.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"component.js","sourceRoot":"","sources":["../../src/mcp/component.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP Tool Creation
|
|
3
|
+
*
|
|
4
|
+
* Factory functions for creating MCP tools that work like regular tools:
|
|
5
|
+
* - Pass to models: engine.execute({ tools: [tool] })
|
|
6
|
+
* - Run directly: await tool.run(input)
|
|
7
|
+
* - Use in JSX: <MyMCPTool />
|
|
8
|
+
*
|
|
9
|
+
* Three main entry points:
|
|
10
|
+
* 1. createMCPTool() - Component factory with discovery, for JSX usage
|
|
11
|
+
* 2. createMCPToolFromDefinition() - Direct creation from known definition
|
|
12
|
+
* 3. discoverMCPTools() - Batch discovery of all tools on a server
|
|
13
|
+
*/
|
|
14
|
+
import React from "react";
|
|
15
|
+
import { MCPClient } from "./client";
|
|
16
|
+
import type { MCPConfig, MCPServerConfig, MCPToolDefinition } from "./types";
|
|
17
|
+
import type { ExecutableTool } from "../tool/tool";
|
|
18
|
+
import { type MCPToolComponentProps } from "./component";
|
|
19
|
+
/**
|
|
20
|
+
* Normalizes Cursor-style config to full MCPConfig.
|
|
21
|
+
*
|
|
22
|
+
* Cursor-style: { command: 'npx', args: [...], env: {...} }
|
|
23
|
+
* Full MCPConfig: { serverName, transport, connection: {...} }
|
|
24
|
+
*/
|
|
25
|
+
export declare function normalizeMCPConfig(serverName: string, config: MCPServerConfig | MCPConfig): MCPConfig;
|
|
26
|
+
/**
|
|
27
|
+
* Merges base config with runtime overrides.
|
|
28
|
+
* Runtime values take precedence.
|
|
29
|
+
*/
|
|
30
|
+
export declare function mergeMCPConfig(base: MCPConfig, runtime?: Partial<MCPConfig>): MCPConfig;
|
|
31
|
+
/**
|
|
32
|
+
* Options for createMCPTool().
|
|
33
|
+
* Extends MCPToolComponentProps but adds `toolName` for single-tool selection.
|
|
34
|
+
*/
|
|
35
|
+
export interface CreateMCPToolOptions extends Omit<MCPToolComponentProps, "include" | "exclude" | "mcpClient"> {
|
|
36
|
+
/**
|
|
37
|
+
* Specific tool name to discover.
|
|
38
|
+
* If omitted, registers first tool found.
|
|
39
|
+
*/
|
|
40
|
+
toolName?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Shared MCPClient instance.
|
|
43
|
+
* If not provided, creates a new one.
|
|
44
|
+
*/
|
|
45
|
+
client?: MCPClient;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Creates an MCP tool component that discovers and registers on mount.
|
|
49
|
+
*
|
|
50
|
+
* Use this when you need:
|
|
51
|
+
* - Dynamic discovery at runtime
|
|
52
|
+
* - Runtime configuration (auth tokens)
|
|
53
|
+
* - JSX-based tool declaration
|
|
54
|
+
*
|
|
55
|
+
* @example Basic usage
|
|
56
|
+
* ```tsx
|
|
57
|
+
* const ReadFile = createMCPTool({
|
|
58
|
+
* server: 'filesystem',
|
|
59
|
+
* config: { command: 'npx', args: ['-y', '@modelcontextprotocol/server-filesystem', '/path'] },
|
|
60
|
+
* toolName: 'read_file',
|
|
61
|
+
* });
|
|
62
|
+
*
|
|
63
|
+
* function MyAgent() {
|
|
64
|
+
* return (
|
|
65
|
+
* <>
|
|
66
|
+
* <ReadFile />
|
|
67
|
+
* <Model />
|
|
68
|
+
* </>
|
|
69
|
+
* );
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*
|
|
73
|
+
* @example With runtime auth
|
|
74
|
+
* ```tsx
|
|
75
|
+
* const APITool = createMCPTool({
|
|
76
|
+
* server: 'api',
|
|
77
|
+
* config: { transport: 'sse', connection: { url: 'https://api.example.com/mcp' } },
|
|
78
|
+
* toolName: 'query',
|
|
79
|
+
* });
|
|
80
|
+
*
|
|
81
|
+
* // Runtime config from user context
|
|
82
|
+
* <APITool runtimeConfig={{ auth: { type: 'bearer', token: userToken } }} />
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function createMCPTool(options: CreateMCPToolOptions): React.FC<Partial<CreateMCPToolOptions>>;
|
|
86
|
+
/**
|
|
87
|
+
* Options for createMCPToolFromDefinition().
|
|
88
|
+
*/
|
|
89
|
+
export interface CreateMCPToolFromDefinitionOptions {
|
|
90
|
+
/** Active MCPClient with server connection. */
|
|
91
|
+
client: MCPClient;
|
|
92
|
+
/** MCP server configuration. */
|
|
93
|
+
config: MCPConfig;
|
|
94
|
+
/** Tool definition from discovery. */
|
|
95
|
+
definition: MCPToolDefinition;
|
|
96
|
+
/** Override tool name. */
|
|
97
|
+
name?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Creates an ExecutableTool from an MCP tool definition.
|
|
101
|
+
*
|
|
102
|
+
* Use this when you already have:
|
|
103
|
+
* - An active MCPClient connection
|
|
104
|
+
* - The tool definition from discovery
|
|
105
|
+
*
|
|
106
|
+
* @example
|
|
107
|
+
* ```typescript
|
|
108
|
+
* const client = new MCPClient();
|
|
109
|
+
* const service = new MCPService(client);
|
|
110
|
+
*
|
|
111
|
+
* // Connect and discover
|
|
112
|
+
* const config: MCPConfig = {
|
|
113
|
+
* serverName: 'filesystem',
|
|
114
|
+
* transport: 'stdio',
|
|
115
|
+
* connection: { command: 'npx', args: [...] }
|
|
116
|
+
* };
|
|
117
|
+
* const tools = await service.connectAndDiscover(config);
|
|
118
|
+
*
|
|
119
|
+
* // Create specific tool
|
|
120
|
+
* const readFile = createMCPToolFromDefinition({
|
|
121
|
+
* client,
|
|
122
|
+
* config,
|
|
123
|
+
* definition: tools.find(t => t.name === 'read_file')!,
|
|
124
|
+
* });
|
|
125
|
+
*
|
|
126
|
+
* // Pass to model
|
|
127
|
+
* engine.execute({ tools: [readFile] });
|
|
128
|
+
*
|
|
129
|
+
* // Or run directly
|
|
130
|
+
* const result = await readFile.run({ path: '/file.txt' });
|
|
131
|
+
* ```
|
|
132
|
+
*/
|
|
133
|
+
export declare function createMCPToolFromDefinition(options: CreateMCPToolFromDefinitionOptions): ExecutableTool;
|
|
134
|
+
/**
|
|
135
|
+
* Options for discoverMCPTools().
|
|
136
|
+
*/
|
|
137
|
+
export interface DiscoverMCPToolsOptions {
|
|
138
|
+
/** MCP server configuration. */
|
|
139
|
+
config: MCPConfig;
|
|
140
|
+
/**
|
|
141
|
+
* Shared MCPClient.
|
|
142
|
+
* If not provided, creates a new one.
|
|
143
|
+
*/
|
|
144
|
+
client?: MCPClient;
|
|
145
|
+
/** Prefix for all tool names. */
|
|
146
|
+
toolPrefix?: string;
|
|
147
|
+
/**
|
|
148
|
+
* Whitelist: only include these tools.
|
|
149
|
+
* Takes precedence over exclude.
|
|
150
|
+
*/
|
|
151
|
+
include?: string[];
|
|
152
|
+
/** Blacklist: exclude these tools. */
|
|
153
|
+
exclude?: string[];
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Discovers all tools from an MCP server and creates ExecutableTools.
|
|
157
|
+
*
|
|
158
|
+
* Use this for batch tool registration or when you need all tools
|
|
159
|
+
* from a server without JSX.
|
|
160
|
+
*
|
|
161
|
+
* @example Basic discovery
|
|
162
|
+
* ```typescript
|
|
163
|
+
* const tools = await discoverMCPTools({
|
|
164
|
+
* config: {
|
|
165
|
+
* serverName: 'filesystem',
|
|
166
|
+
* transport: 'stdio',
|
|
167
|
+
* connection: { command: 'npx', args: [...] }
|
|
168
|
+
* },
|
|
169
|
+
* });
|
|
170
|
+
*
|
|
171
|
+
* // Pass all to model
|
|
172
|
+
* engine.execute({ tools });
|
|
173
|
+
* ```
|
|
174
|
+
*
|
|
175
|
+
* @example With filtering
|
|
176
|
+
* ```typescript
|
|
177
|
+
* const tools = await discoverMCPTools({
|
|
178
|
+
* config,
|
|
179
|
+
* include: ['read_file', 'list_directory'], // Only these
|
|
180
|
+
* toolPrefix: 'fs_',
|
|
181
|
+
* });
|
|
182
|
+
* ```
|
|
183
|
+
*
|
|
184
|
+
* @example Register with COM
|
|
185
|
+
* ```typescript
|
|
186
|
+
* const tools = await discoverMCPTools({ config });
|
|
187
|
+
* tools.forEach(tool => ctx.addTool(tool));
|
|
188
|
+
* ```
|
|
189
|
+
*/
|
|
190
|
+
export declare function discoverMCPTools(options: DiscoverMCPToolsOptions): Promise<ExecutableTool[]>;
|
|
191
|
+
//# sourceMappingURL=create-mcp-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-mcp-tool.d.ts","sourceRoot":"","sources":["../../src/mcp/create-mcp-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAM3E;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,eAAe,GAAG,SAAS,GAClC,SAAS,CAiBX;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAYvF;AAMD;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,qBAAqB,EACrB,SAAS,GAAG,SAAS,GAAG,WAAW,CACpC;IACC;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,oBAAoB,GAC5B,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CA0BzC;AAMD;;GAEG;AACH,MAAM,WAAW,kCAAkC;IACjD,+CAA+C;IAC/C,MAAM,EAAE,SAAS,CAAC;IAElB,gCAAgC;IAChC,MAAM,EAAE,SAAS,CAAC;IAElB,sCAAsC;IACtC,UAAU,EAAE,iBAAiB,CAAC;IAE9B,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,kCAAkC,GAC1C,cAAc,CAWhB;AAMD;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,MAAM,EAAE,SAAS,CAAC;IAElB;;;OAGG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,iCAAiC;IACjC,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAEnB,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,cAAc,EAAE,CAAC,CA0B3B"}
|