@vurb/core 3.2.0
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/README.md +677 -0
- package/dist/cli/args.d.ts +26 -0
- package/dist/cli/args.d.ts.map +1 -0
- package/dist/cli/args.js +117 -0
- package/dist/cli/args.js.map +1 -0
- package/dist/cli/commands/create.d.ts +11 -0
- package/dist/cli/commands/create.d.ts.map +1 -0
- package/dist/cli/commands/create.js +121 -0
- package/dist/cli/commands/create.js.map +1 -0
- package/dist/cli/commands/deploy.d.ts +3 -0
- package/dist/cli/commands/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deploy.js +268 -0
- package/dist/cli/commands/deploy.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +9 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +58 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/lock.d.ts +5 -0
- package/dist/cli/commands/lock.d.ts.map +1 -0
- package/dist/cli/commands/lock.js +94 -0
- package/dist/cli/commands/lock.js.map +1 -0
- package/dist/cli/commands/remote.d.ts +3 -0
- package/dist/cli/commands/remote.d.ts.map +1 -0
- package/dist/cli/commands/remote.js +37 -0
- package/dist/cli/commands/remote.js.map +1 -0
- package/dist/cli/constants.d.ts +18 -0
- package/dist/cli/constants.d.ts.map +1 -0
- package/dist/cli/constants.js +95 -0
- package/dist/cli/constants.js.map +1 -0
- package/dist/cli/progress.d.ts +34 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +102 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/rc.d.ts +11 -0
- package/dist/cli/rc.d.ts.map +1 -0
- package/dist/cli/rc.js +75 -0
- package/dist/cli/rc.js.map +1 -0
- package/dist/cli/registry.d.ts +25 -0
- package/dist/cli/registry.d.ts.map +1 -0
- package/dist/cli/registry.js +86 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/scaffold.d.ts +10 -0
- package/dist/cli/scaffold.d.ts.map +1 -0
- package/dist/cli/scaffold.js +105 -0
- package/dist/cli/scaffold.js.map +1 -0
- package/dist/cli/templates/config.d.ts +14 -0
- package/dist/cli/templates/config.d.ts.map +1 -0
- package/dist/cli/templates/config.js +133 -0
- package/dist/cli/templates/config.js.map +1 -0
- package/dist/cli/templates/constants.d.ts +9 -0
- package/dist/cli/templates/constants.d.ts.map +1 -0
- package/dist/cli/templates/constants.js +9 -0
- package/dist/cli/templates/constants.js.map +1 -0
- package/dist/cli/templates/core.d.ts +14 -0
- package/dist/cli/templates/core.d.ts.map +1 -0
- package/dist/cli/templates/core.js +186 -0
- package/dist/cli/templates/core.js.map +1 -0
- package/dist/cli/templates/cursor.d.ts +8 -0
- package/dist/cli/templates/cursor.d.ts.map +1 -0
- package/dist/cli/templates/cursor.js +13 -0
- package/dist/cli/templates/cursor.js.map +1 -0
- package/dist/cli/templates/index.d.ts +17 -0
- package/dist/cli/templates/index.d.ts.map +1 -0
- package/dist/cli/templates/index.js +27 -0
- package/dist/cli/templates/index.js.map +1 -0
- package/dist/cli/templates/middleware.d.ts +7 -0
- package/dist/cli/templates/middleware.d.ts.map +1 -0
- package/dist/cli/templates/middleware.js +34 -0
- package/dist/cli/templates/middleware.js.map +1 -0
- package/dist/cli/templates/presenter.d.ts +7 -0
- package/dist/cli/templates/presenter.d.ts.map +1 -0
- package/dist/cli/templates/presenter.js +46 -0
- package/dist/cli/templates/presenter.js.map +1 -0
- package/dist/cli/templates/prompt.d.ts +7 -0
- package/dist/cli/templates/prompt.d.ts.map +1 -0
- package/dist/cli/templates/prompt.js +42 -0
- package/dist/cli/templates/prompt.js.map +1 -0
- package/dist/cli/templates/readme.d.ts +8 -0
- package/dist/cli/templates/readme.d.ts.map +1 -0
- package/dist/cli/templates/readme.js +173 -0
- package/dist/cli/templates/readme.js.map +1 -0
- package/dist/cli/templates/testing.d.ts +11 -0
- package/dist/cli/templates/testing.d.ts.map +1 -0
- package/dist/cli/templates/testing.js +101 -0
- package/dist/cli/templates/testing.js.map +1 -0
- package/dist/cli/templates/tools.d.ts +13 -0
- package/dist/cli/templates/tools.d.ts.map +1 -0
- package/dist/cli/templates/tools.js +63 -0
- package/dist/cli/templates/tools.js.map +1 -0
- package/dist/cli/templates/vectors/database.d.ts +9 -0
- package/dist/cli/templates/vectors/database.d.ts.map +1 -0
- package/dist/cli/templates/vectors/database.js +82 -0
- package/dist/cli/templates/vectors/database.js.map +1 -0
- package/dist/cli/templates/vectors/index.d.ts +9 -0
- package/dist/cli/templates/vectors/index.d.ts.map +1 -0
- package/dist/cli/templates/vectors/index.js +9 -0
- package/dist/cli/templates/vectors/index.js.map +1 -0
- package/dist/cli/templates/vectors/oauth.d.ts +10 -0
- package/dist/cli/templates/vectors/oauth.d.ts.map +1 -0
- package/dist/cli/templates/vectors/oauth.js +76 -0
- package/dist/cli/templates/vectors/oauth.js.map +1 -0
- package/dist/cli/templates/vectors/openapi.d.ts +10 -0
- package/dist/cli/templates/vectors/openapi.d.ts.map +1 -0
- package/dist/cli/templates/vectors/openapi.js +106 -0
- package/dist/cli/templates/vectors/openapi.js.map +1 -0
- package/dist/cli/templates/vectors/workflow.d.ts +7 -0
- package/dist/cli/templates/vectors/workflow.d.ts.map +1 -0
- package/dist/cli/templates/vectors/workflow.js +49 -0
- package/dist/cli/templates/vectors/workflow.js.map +1 -0
- package/dist/cli/types.d.ts +36 -0
- package/dist/cli/types.d.ts.map +1 -0
- package/dist/cli/types.js +10 -0
- package/dist/cli/types.js.map +1 -0
- package/dist/cli/utils.d.ts +27 -0
- package/dist/cli/utils.d.ts.map +1 -0
- package/dist/cli/utils.js +73 -0
- package/dist/cli/utils.js.map +1 -0
- package/dist/cli/vurb.d.ts +15 -0
- package/dist/cli/vurb.d.ts.map +1 -0
- package/dist/cli/vurb.js +87 -0
- package/dist/cli/vurb.js.map +1 -0
- package/dist/client/InferRouter.d.ts +92 -0
- package/dist/client/InferRouter.d.ts.map +1 -0
- package/dist/client/InferRouter.js +31 -0
- package/dist/client/InferRouter.js.map +1 -0
- package/dist/client/VurbClient.d.ts +282 -0
- package/dist/client/VurbClient.d.ts.map +1 -0
- package/dist/client/VurbClient.js +287 -0
- package/dist/client/VurbClient.js.map +1 -0
- package/dist/client/createTypedRegistry.d.ts +25 -0
- package/dist/client/createTypedRegistry.d.ts.map +1 -0
- package/dist/client/createTypedRegistry.js +74 -0
- package/dist/client/createTypedRegistry.js.map +1 -0
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.d.ts.map +1 -0
- package/dist/client/index.js +4 -0
- package/dist/client/index.js.map +1 -0
- package/dist/converters/ConverterBase.d.ts +68 -0
- package/dist/converters/ConverterBase.d.ts.map +1 -0
- package/dist/converters/ConverterBase.js +62 -0
- package/dist/converters/ConverterBase.js.map +1 -0
- package/dist/converters/GroupConverter.d.ts +33 -0
- package/dist/converters/GroupConverter.d.ts.map +1 -0
- package/dist/converters/GroupConverter.js +26 -0
- package/dist/converters/GroupConverter.js.map +1 -0
- package/dist/converters/PromptConverter.d.ts +33 -0
- package/dist/converters/PromptConverter.d.ts.map +1 -0
- package/dist/converters/PromptConverter.js +26 -0
- package/dist/converters/PromptConverter.js.map +1 -0
- package/dist/converters/ResourceConverter.d.ts +35 -0
- package/dist/converters/ResourceConverter.d.ts.map +1 -0
- package/dist/converters/ResourceConverter.js +28 -0
- package/dist/converters/ResourceConverter.js.map +1 -0
- package/dist/converters/ToolAnnotationsConverter.d.ts +33 -0
- package/dist/converters/ToolAnnotationsConverter.d.ts.map +1 -0
- package/dist/converters/ToolAnnotationsConverter.js +26 -0
- package/dist/converters/ToolAnnotationsConverter.js.map +1 -0
- package/dist/converters/ToolConverter.d.ts +35 -0
- package/dist/converters/ToolConverter.d.ts.map +1 -0
- package/dist/converters/ToolConverter.js +28 -0
- package/dist/converters/ToolConverter.js.map +1 -0
- package/dist/converters/index.d.ts +7 -0
- package/dist/converters/index.d.ts.map +1 -0
- package/dist/converters/index.js +7 -0
- package/dist/converters/index.js.map +1 -0
- package/dist/core/StandardSchema.d.ts +178 -0
- package/dist/core/StandardSchema.d.ts.map +1 -0
- package/dist/core/StandardSchema.js +174 -0
- package/dist/core/StandardSchema.js.map +1 -0
- package/dist/core/builder/ActionGroupBuilder.d.ts +208 -0
- package/dist/core/builder/ActionGroupBuilder.d.ts.map +1 -0
- package/dist/core/builder/ActionGroupBuilder.js +193 -0
- package/dist/core/builder/ActionGroupBuilder.js.map +1 -0
- package/dist/core/builder/ErrorBuilder.d.ts +59 -0
- package/dist/core/builder/ErrorBuilder.d.ts.map +1 -0
- package/dist/core/builder/ErrorBuilder.js +99 -0
- package/dist/core/builder/ErrorBuilder.js.map +1 -0
- package/dist/core/builder/FluentRouter.d.ts +96 -0
- package/dist/core/builder/FluentRouter.d.ts.map +1 -0
- package/dist/core/builder/FluentRouter.js +116 -0
- package/dist/core/builder/FluentRouter.js.map +1 -0
- package/dist/core/builder/FluentSchemaHelpers.d.ts +237 -0
- package/dist/core/builder/FluentSchemaHelpers.d.ts.map +1 -0
- package/dist/core/builder/FluentSchemaHelpers.js +227 -0
- package/dist/core/builder/FluentSchemaHelpers.js.map +1 -0
- package/dist/core/builder/FluentToolBuilder.d.ts +419 -0
- package/dist/core/builder/FluentToolBuilder.d.ts.map +1 -0
- package/dist/core/builder/FluentToolBuilder.js +643 -0
- package/dist/core/builder/FluentToolBuilder.js.map +1 -0
- package/dist/core/builder/GroupedToolBuilder.d.ts +832 -0
- package/dist/core/builder/GroupedToolBuilder.d.ts.map +1 -0
- package/dist/core/builder/GroupedToolBuilder.js +1306 -0
- package/dist/core/builder/GroupedToolBuilder.js.map +1 -0
- package/dist/core/builder/ParamDescriptors.d.ts +142 -0
- package/dist/core/builder/ParamDescriptors.d.ts.map +1 -0
- package/dist/core/builder/ParamDescriptors.js +164 -0
- package/dist/core/builder/ParamDescriptors.js.map +1 -0
- package/dist/core/builder/ToolDefinitionCompiler.d.ts +37 -0
- package/dist/core/builder/ToolDefinitionCompiler.d.ts.map +1 -0
- package/dist/core/builder/ToolDefinitionCompiler.js +72 -0
- package/dist/core/builder/ToolDefinitionCompiler.js.map +1 -0
- package/dist/core/builder/defineTool.d.ts +180 -0
- package/dist/core/builder/defineTool.d.ts.map +1 -0
- package/dist/core/builder/defineTool.js +164 -0
- package/dist/core/builder/defineTool.js.map +1 -0
- package/dist/core/builder/index.d.ts +13 -0
- package/dist/core/builder/index.d.ts.map +1 -0
- package/dist/core/builder/index.js +13 -0
- package/dist/core/builder/index.js.map +1 -0
- package/dist/core/createGroup.d.ts +140 -0
- package/dist/core/createGroup.d.ts.map +1 -0
- package/dist/core/createGroup.js +144 -0
- package/dist/core/createGroup.js.map +1 -0
- package/dist/core/execution/ConcurrencyGuard.d.ts +103 -0
- package/dist/core/execution/ConcurrencyGuard.d.ts.map +1 -0
- package/dist/core/execution/ConcurrencyGuard.js +147 -0
- package/dist/core/execution/ConcurrencyGuard.js.map +1 -0
- package/dist/core/execution/EgressGuard.d.ts +72 -0
- package/dist/core/execution/EgressGuard.d.ts.map +1 -0
- package/dist/core/execution/EgressGuard.js +163 -0
- package/dist/core/execution/EgressGuard.js.map +1 -0
- package/dist/core/execution/ExecutionPipeline.d.ts +67 -0
- package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -0
- package/dist/core/execution/ExecutionPipeline.js +176 -0
- package/dist/core/execution/ExecutionPipeline.js.map +1 -0
- package/dist/core/execution/MiddlewareCompiler.d.ts +35 -0
- package/dist/core/execution/MiddlewareCompiler.d.ts.map +1 -0
- package/dist/core/execution/MiddlewareCompiler.js +111 -0
- package/dist/core/execution/MiddlewareCompiler.js.map +1 -0
- package/dist/core/execution/MutationSerializer.d.ts +78 -0
- package/dist/core/execution/MutationSerializer.d.ts.map +1 -0
- package/dist/core/execution/MutationSerializer.js +106 -0
- package/dist/core/execution/MutationSerializer.js.map +1 -0
- package/dist/core/execution/PipelineHooks.d.ts +46 -0
- package/dist/core/execution/PipelineHooks.d.ts.map +1 -0
- package/dist/core/execution/PipelineHooks.js +66 -0
- package/dist/core/execution/PipelineHooks.js.map +1 -0
- package/dist/core/execution/ProgressHelper.d.ts +67 -0
- package/dist/core/execution/ProgressHelper.d.ts.map +1 -0
- package/dist/core/execution/ProgressHelper.js +59 -0
- package/dist/core/execution/ProgressHelper.js.map +1 -0
- package/dist/core/execution/ValidationErrorFormatter.d.ts +34 -0
- package/dist/core/execution/ValidationErrorFormatter.d.ts.map +1 -0
- package/dist/core/execution/ValidationErrorFormatter.js +193 -0
- package/dist/core/execution/ValidationErrorFormatter.js.map +1 -0
- package/dist/core/execution/index.d.ts +9 -0
- package/dist/core/execution/index.d.ts.map +1 -0
- package/dist/core/execution/index.js +9 -0
- package/dist/core/execution/index.js.map +1 -0
- package/dist/core/index.d.ts +34 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +29 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/initVurb.d.ts +295 -0
- package/dist/core/initVurb.d.ts.map +1 -0
- package/dist/core/initVurb.js +171 -0
- package/dist/core/initVurb.js.map +1 -0
- package/dist/core/middleware/ContextDerivation.d.ts +124 -0
- package/dist/core/middleware/ContextDerivation.d.ts.map +1 -0
- package/dist/core/middleware/ContextDerivation.js +117 -0
- package/dist/core/middleware/ContextDerivation.js.map +1 -0
- package/dist/core/middleware/index.d.ts +4 -0
- package/dist/core/middleware/index.d.ts.map +1 -0
- package/dist/core/middleware/index.js +3 -0
- package/dist/core/middleware/index.js.map +1 -0
- package/dist/core/registry/ToolFilterEngine.d.ts +27 -0
- package/dist/core/registry/ToolFilterEngine.d.ts.map +1 -0
- package/dist/core/registry/ToolFilterEngine.js +45 -0
- package/dist/core/registry/ToolFilterEngine.js.map +1 -0
- package/dist/core/registry/ToolRegistry.d.ts +259 -0
- package/dist/core/registry/ToolRegistry.d.ts.map +1 -0
- package/dist/core/registry/ToolRegistry.js +343 -0
- package/dist/core/registry/ToolRegistry.js.map +1 -0
- package/dist/core/registry/index.d.ts +4 -0
- package/dist/core/registry/index.d.ts.map +1 -0
- package/dist/core/registry/index.js +3 -0
- package/dist/core/registry/index.js.map +1 -0
- package/dist/core/response.d.ts +289 -0
- package/dist/core/response.d.ts.map +1 -0
- package/dist/core/response.js +286 -0
- package/dist/core/response.js.map +1 -0
- package/dist/core/result.d.ts +93 -0
- package/dist/core/result.d.ts.map +1 -0
- package/dist/core/result.js +66 -0
- package/dist/core/result.js.map +1 -0
- package/dist/core/schema/AnnotationAggregator.d.ts +11 -0
- package/dist/core/schema/AnnotationAggregator.d.ts.map +1 -0
- package/dist/core/schema/AnnotationAggregator.js +40 -0
- package/dist/core/schema/AnnotationAggregator.js.map +1 -0
- package/dist/core/schema/DescriptionGenerator.d.ts +12 -0
- package/dist/core/schema/DescriptionGenerator.d.ts.map +1 -0
- package/dist/core/schema/DescriptionGenerator.js +81 -0
- package/dist/core/schema/DescriptionGenerator.js.map +1 -0
- package/dist/core/schema/SchemaGenerator.d.ts +15 -0
- package/dist/core/schema/SchemaGenerator.d.ts.map +1 -0
- package/dist/core/schema/SchemaGenerator.js +192 -0
- package/dist/core/schema/SchemaGenerator.js.map +1 -0
- package/dist/core/schema/SchemaUtils.d.ts +26 -0
- package/dist/core/schema/SchemaUtils.d.ts.map +1 -0
- package/dist/core/schema/SchemaUtils.js +85 -0
- package/dist/core/schema/SchemaUtils.js.map +1 -0
- package/dist/core/schema/ToonDescriptionGenerator.d.ts +3 -0
- package/dist/core/schema/ToonDescriptionGenerator.d.ts.map +1 -0
- package/dist/core/schema/ToonDescriptionGenerator.js +65 -0
- package/dist/core/schema/ToonDescriptionGenerator.js.map +1 -0
- package/dist/core/schema/index.d.ts +7 -0
- package/dist/core/schema/index.d.ts.map +1 -0
- package/dist/core/schema/index.js +7 -0
- package/dist/core/schema/index.js.map +1 -0
- package/dist/core/serialization/JsonSerializer.d.ts +71 -0
- package/dist/core/serialization/JsonSerializer.d.ts.map +1 -0
- package/dist/core/serialization/JsonSerializer.js +192 -0
- package/dist/core/serialization/JsonSerializer.js.map +1 -0
- package/dist/core/serialization/index.d.ts +7 -0
- package/dist/core/serialization/index.d.ts.map +1 -0
- package/dist/core/serialization/index.js +7 -0
- package/dist/core/serialization/index.js.map +1 -0
- package/dist/core/types.d.ts +303 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +17 -0
- package/dist/core/types.js.map +1 -0
- package/dist/domain/Annotations.d.ts +42 -0
- package/dist/domain/Annotations.d.ts.map +1 -0
- package/dist/domain/Annotations.js +16 -0
- package/dist/domain/Annotations.js.map +1 -0
- package/dist/domain/BaseModel.d.ts +50 -0
- package/dist/domain/BaseModel.d.ts.map +1 -0
- package/dist/domain/BaseModel.js +41 -0
- package/dist/domain/BaseModel.js.map +1 -0
- package/dist/domain/Group.d.ts +99 -0
- package/dist/domain/Group.d.ts.map +1 -0
- package/dist/domain/Group.js +172 -0
- package/dist/domain/Group.js.map +1 -0
- package/dist/domain/GroupItem.d.ts +46 -0
- package/dist/domain/GroupItem.d.ts.map +1 -0
- package/dist/domain/GroupItem.js +58 -0
- package/dist/domain/GroupItem.js.map +1 -0
- package/dist/domain/Icon.d.ts +41 -0
- package/dist/domain/Icon.d.ts.map +1 -0
- package/dist/domain/Icon.js +15 -0
- package/dist/domain/Icon.js.map +1 -0
- package/dist/domain/Prompt.d.ts +49 -0
- package/dist/domain/Prompt.d.ts.map +1 -0
- package/dist/domain/Prompt.js +59 -0
- package/dist/domain/Prompt.js.map +1 -0
- package/dist/domain/PromptArgument.d.ts +23 -0
- package/dist/domain/PromptArgument.d.ts.map +1 -0
- package/dist/domain/PromptArgument.js +27 -0
- package/dist/domain/PromptArgument.js.map +1 -0
- package/dist/domain/Resource.d.ts +37 -0
- package/dist/domain/Resource.d.ts.map +1 -0
- package/dist/domain/Resource.js +39 -0
- package/dist/domain/Resource.js.map +1 -0
- package/dist/domain/Role.d.ts +23 -0
- package/dist/domain/Role.d.ts.map +1 -0
- package/dist/domain/Role.js +24 -0
- package/dist/domain/Role.js.map +1 -0
- package/dist/domain/Tool.d.ts +39 -0
- package/dist/domain/Tool.d.ts.map +1 -0
- package/dist/domain/Tool.js +41 -0
- package/dist/domain/Tool.js.map +1 -0
- package/dist/domain/ToolAnnotations.d.ts +48 -0
- package/dist/domain/ToolAnnotations.d.ts.map +1 -0
- package/dist/domain/ToolAnnotations.js +15 -0
- package/dist/domain/ToolAnnotations.js.map +1 -0
- package/dist/domain/index.d.ts +16 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +13 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/utils.d.ts +6 -0
- package/dist/domain/utils.d.ts.map +1 -0
- package/dist/domain/utils.js +12 -0
- package/dist/domain/utils.js.map +1 -0
- package/dist/edge-stub.d.ts +73 -0
- package/dist/edge-stub.d.ts.map +1 -0
- package/dist/edge-stub.js +83 -0
- package/dist/edge-stub.js.map +1 -0
- package/dist/exposition/ExpositionCompiler.d.ts +66 -0
- package/dist/exposition/ExpositionCompiler.d.ts.map +1 -0
- package/dist/exposition/ExpositionCompiler.js +279 -0
- package/dist/exposition/ExpositionCompiler.js.map +1 -0
- package/dist/exposition/index.d.ts +4 -0
- package/dist/exposition/index.d.ts.map +1 -0
- package/dist/exposition/index.js +2 -0
- package/dist/exposition/index.js.map +1 -0
- package/dist/exposition/types.d.ts +58 -0
- package/dist/exposition/types.d.ts.map +1 -0
- package/dist/exposition/types.js +11 -0
- package/dist/exposition/types.js.map +1 -0
- package/dist/fsm/StateMachineGate.d.ts +294 -0
- package/dist/fsm/StateMachineGate.d.ts.map +1 -0
- package/dist/fsm/StateMachineGate.js +400 -0
- package/dist/fsm/StateMachineGate.js.map +1 -0
- package/dist/index.d.ts +148 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +112 -0
- package/dist/index.js.map +1 -0
- package/dist/introspection/BehaviorDigest.d.ts +112 -0
- package/dist/introspection/BehaviorDigest.d.ts.map +1 -0
- package/dist/introspection/BehaviorDigest.js +149 -0
- package/dist/introspection/BehaviorDigest.js.map +1 -0
- package/dist/introspection/CapabilityLockfile.d.ts +261 -0
- package/dist/introspection/CapabilityLockfile.d.ts.map +1 -0
- package/dist/introspection/CapabilityLockfile.js +395 -0
- package/dist/introspection/CapabilityLockfile.js.map +1 -0
- package/dist/introspection/ContractAwareSelfHealing.d.ts +90 -0
- package/dist/introspection/ContractAwareSelfHealing.d.ts.map +1 -0
- package/dist/introspection/ContractAwareSelfHealing.js +132 -0
- package/dist/introspection/ContractAwareSelfHealing.js.map +1 -0
- package/dist/introspection/ContractDiff.d.ts +91 -0
- package/dist/introspection/ContractDiff.d.ts.map +1 -0
- package/dist/introspection/ContractDiff.js +466 -0
- package/dist/introspection/ContractDiff.js.map +1 -0
- package/dist/introspection/CryptoAttestation.d.ts +143 -0
- package/dist/introspection/CryptoAttestation.d.ts.map +1 -0
- package/dist/introspection/CryptoAttestation.js +192 -0
- package/dist/introspection/CryptoAttestation.js.map +1 -0
- package/dist/introspection/EntitlementScanner.d.ts +177 -0
- package/dist/introspection/EntitlementScanner.d.ts.map +1 -0
- package/dist/introspection/EntitlementScanner.js +459 -0
- package/dist/introspection/EntitlementScanner.js.map +1 -0
- package/dist/introspection/GovernanceObserver.d.ts +88 -0
- package/dist/introspection/GovernanceObserver.d.ts.map +1 -0
- package/dist/introspection/GovernanceObserver.js +136 -0
- package/dist/introspection/GovernanceObserver.js.map +1 -0
- package/dist/introspection/IntrospectionResource.d.ts +20 -0
- package/dist/introspection/IntrospectionResource.d.ts.map +1 -0
- package/dist/introspection/IntrospectionResource.js +112 -0
- package/dist/introspection/IntrospectionResource.js.map +1 -0
- package/dist/introspection/ManifestCompiler.d.ts +33 -0
- package/dist/introspection/ManifestCompiler.d.ts.map +1 -0
- package/dist/introspection/ManifestCompiler.js +88 -0
- package/dist/introspection/ManifestCompiler.js.map +1 -0
- package/dist/introspection/SemanticProbe.d.ts +207 -0
- package/dist/introspection/SemanticProbe.d.ts.map +1 -0
- package/dist/introspection/SemanticProbe.js +274 -0
- package/dist/introspection/SemanticProbe.js.map +1 -0
- package/dist/introspection/TokenEconomics.d.ts +210 -0
- package/dist/introspection/TokenEconomics.d.ts.map +1 -0
- package/dist/introspection/TokenEconomics.js +292 -0
- package/dist/introspection/TokenEconomics.js.map +1 -0
- package/dist/introspection/ToolContract.d.ts +161 -0
- package/dist/introspection/ToolContract.d.ts.map +1 -0
- package/dist/introspection/ToolContract.js +218 -0
- package/dist/introspection/ToolContract.js.map +1 -0
- package/dist/introspection/canonicalize.d.ts +35 -0
- package/dist/introspection/canonicalize.d.ts.map +1 -0
- package/dist/introspection/canonicalize.js +72 -0
- package/dist/introspection/canonicalize.js.map +1 -0
- package/dist/introspection/index.d.ts +26 -0
- package/dist/introspection/index.d.ts.map +1 -0
- package/dist/introspection/index.js +24 -0
- package/dist/introspection/index.js.map +1 -0
- package/dist/introspection/types.d.ts +120 -0
- package/dist/introspection/types.d.ts.map +1 -0
- package/dist/introspection/types.js +13 -0
- package/dist/introspection/types.js.map +1 -0
- package/dist/observability/DebugObserver.d.ts +185 -0
- package/dist/observability/DebugObserver.d.ts.map +1 -0
- package/dist/observability/DebugObserver.js +102 -0
- package/dist/observability/DebugObserver.js.map +1 -0
- package/dist/observability/TelemetryBus.d.ts +88 -0
- package/dist/observability/TelemetryBus.d.ts.map +1 -0
- package/dist/observability/TelemetryBus.js +463 -0
- package/dist/observability/TelemetryBus.js.map +1 -0
- package/dist/observability/TelemetryEvent.d.ts +177 -0
- package/dist/observability/TelemetryEvent.d.ts.map +1 -0
- package/dist/observability/TelemetryEvent.js +2 -0
- package/dist/observability/TelemetryEvent.js.map +1 -0
- package/dist/observability/Tracing.d.ts +155 -0
- package/dist/observability/Tracing.d.ts.map +1 -0
- package/dist/observability/Tracing.js +67 -0
- package/dist/observability/Tracing.js.map +1 -0
- package/dist/observability/index.d.ts +13 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +12 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/presenter/PostProcessor.d.ts +52 -0
- package/dist/presenter/PostProcessor.d.ts.map +1 -0
- package/dist/presenter/PostProcessor.js +148 -0
- package/dist/presenter/PostProcessor.js.map +1 -0
- package/dist/presenter/Presenter.d.ts +575 -0
- package/dist/presenter/Presenter.d.ts.map +1 -0
- package/dist/presenter/Presenter.js +768 -0
- package/dist/presenter/Presenter.js.map +1 -0
- package/dist/presenter/PresenterValidationError.d.ts +42 -0
- package/dist/presenter/PresenterValidationError.d.ts.map +1 -0
- package/dist/presenter/PresenterValidationError.js +55 -0
- package/dist/presenter/PresenterValidationError.js.map +1 -0
- package/dist/presenter/RedactEngine.d.ts +110 -0
- package/dist/presenter/RedactEngine.d.ts.map +1 -0
- package/dist/presenter/RedactEngine.js +128 -0
- package/dist/presenter/RedactEngine.js.map +1 -0
- package/dist/presenter/ResponseBuilder.d.ts +262 -0
- package/dist/presenter/ResponseBuilder.d.ts.map +1 -0
- package/dist/presenter/ResponseBuilder.js +374 -0
- package/dist/presenter/ResponseBuilder.js.map +1 -0
- package/dist/presenter/SelectUtils.d.ts +78 -0
- package/dist/presenter/SelectUtils.d.ts.map +1 -0
- package/dist/presenter/SelectUtils.js +141 -0
- package/dist/presenter/SelectUtils.js.map +1 -0
- package/dist/presenter/ZodDescriptionExtractor.d.ts +54 -0
- package/dist/presenter/ZodDescriptionExtractor.d.ts.map +1 -0
- package/dist/presenter/ZodDescriptionExtractor.js +131 -0
- package/dist/presenter/ZodDescriptionExtractor.js.map +1 -0
- package/dist/presenter/definePresenter.d.ts +193 -0
- package/dist/presenter/definePresenter.d.ts.map +1 -0
- package/dist/presenter/definePresenter.js +99 -0
- package/dist/presenter/definePresenter.js.map +1 -0
- package/dist/presenter/index.d.ts +21 -0
- package/dist/presenter/index.d.ts.map +1 -0
- package/dist/presenter/index.js +28 -0
- package/dist/presenter/index.js.map +1 -0
- package/dist/presenter/suggest.d.ts +39 -0
- package/dist/presenter/suggest.d.ts.map +1 -0
- package/dist/presenter/suggest.js +41 -0
- package/dist/presenter/suggest.js.map +1 -0
- package/dist/presenter/typeHelpers.d.ts +147 -0
- package/dist/presenter/typeHelpers.d.ts.map +1 -0
- package/dist/presenter/typeHelpers.js +152 -0
- package/dist/presenter/typeHelpers.js.map +1 -0
- package/dist/presenter/ui.d.ts +205 -0
- package/dist/presenter/ui.d.ts.map +1 -0
- package/dist/presenter/ui.js +222 -0
- package/dist/presenter/ui.js.map +1 -0
- package/dist/prompt/CursorCodec.d.ts +43 -0
- package/dist/prompt/CursorCodec.d.ts.map +1 -0
- package/dist/prompt/CursorCodec.js +171 -0
- package/dist/prompt/CursorCodec.js.map +1 -0
- package/dist/prompt/FluentPromptBuilder.d.ts +155 -0
- package/dist/prompt/FluentPromptBuilder.d.ts.map +1 -0
- package/dist/prompt/FluentPromptBuilder.js +195 -0
- package/dist/prompt/FluentPromptBuilder.js.map +1 -0
- package/dist/prompt/HydrationSandbox.d.ts +55 -0
- package/dist/prompt/HydrationSandbox.d.ts.map +1 -0
- package/dist/prompt/HydrationSandbox.js +122 -0
- package/dist/prompt/HydrationSandbox.js.map +1 -0
- package/dist/prompt/PromptExecutionPipeline.d.ts +61 -0
- package/dist/prompt/PromptExecutionPipeline.d.ts.map +1 -0
- package/dist/prompt/PromptExecutionPipeline.js +177 -0
- package/dist/prompt/PromptExecutionPipeline.js.map +1 -0
- package/dist/prompt/PromptMessage.d.ts +133 -0
- package/dist/prompt/PromptMessage.d.ts.map +1 -0
- package/dist/prompt/PromptMessage.js +182 -0
- package/dist/prompt/PromptMessage.js.map +1 -0
- package/dist/prompt/PromptRegistry.d.ts +236 -0
- package/dist/prompt/PromptRegistry.d.ts.map +1 -0
- package/dist/prompt/PromptRegistry.js +399 -0
- package/dist/prompt/PromptRegistry.js.map +1 -0
- package/dist/prompt/definePrompt.d.ts +111 -0
- package/dist/prompt/definePrompt.d.ts.map +1 -0
- package/dist/prompt/definePrompt.js +130 -0
- package/dist/prompt/definePrompt.js.map +1 -0
- package/dist/prompt/index.d.ts +12 -0
- package/dist/prompt/index.d.ts.map +1 -0
- package/dist/prompt/index.js +13 -0
- package/dist/prompt/index.js.map +1 -0
- package/dist/prompt/types.d.ts +425 -0
- package/dist/prompt/types.d.ts.map +1 -0
- package/dist/prompt/types.js +19 -0
- package/dist/prompt/types.js.map +1 -0
- package/dist/sandbox/SandboxEngine.d.ts +225 -0
- package/dist/sandbox/SandboxEngine.d.ts.map +1 -0
- package/dist/sandbox/SandboxEngine.js +437 -0
- package/dist/sandbox/SandboxEngine.js.map +1 -0
- package/dist/sandbox/SandboxGuard.d.ts +47 -0
- package/dist/sandbox/SandboxGuard.d.ts.map +1 -0
- package/dist/sandbox/SandboxGuard.js +127 -0
- package/dist/sandbox/SandboxGuard.js.map +1 -0
- package/dist/sandbox/index.d.ts +23 -0
- package/dist/sandbox/index.d.ts.map +1 -0
- package/dist/sandbox/index.js +26 -0
- package/dist/sandbox/index.js.map +1 -0
- package/dist/server/DevServer.d.ts +120 -0
- package/dist/server/DevServer.d.ts.map +1 -0
- package/dist/server/DevServer.js +252 -0
- package/dist/server/DevServer.js.map +1 -0
- package/dist/server/ServerAttachment.d.ts +354 -0
- package/dist/server/ServerAttachment.d.ts.map +1 -0
- package/dist/server/ServerAttachment.js +709 -0
- package/dist/server/ServerAttachment.js.map +1 -0
- package/dist/server/ServerResolver.d.ts +24 -0
- package/dist/server/ServerResolver.d.ts.map +1 -0
- package/dist/server/ServerResolver.js +50 -0
- package/dist/server/ServerResolver.js.map +1 -0
- package/dist/server/autoDiscover.d.ts +75 -0
- package/dist/server/autoDiscover.d.ts.map +1 -0
- package/dist/server/autoDiscover.js +164 -0
- package/dist/server/autoDiscover.js.map +1 -0
- package/dist/server/index.d.ts +12 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +11 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/startServer.d.ts +81 -0
- package/dist/server/startServer.d.ts.map +1 -0
- package/dist/server/startServer.js +143 -0
- package/dist/server/startServer.js.map +1 -0
- package/dist/state-sync/CausalEngine.d.ts +28 -0
- package/dist/state-sync/CausalEngine.d.ts.map +1 -0
- package/dist/state-sync/CausalEngine.js +17 -0
- package/dist/state-sync/CausalEngine.js.map +1 -0
- package/dist/state-sync/DescriptionDecorator.d.ts +31 -0
- package/dist/state-sync/DescriptionDecorator.d.ts.map +1 -0
- package/dist/state-sync/DescriptionDecorator.js +38 -0
- package/dist/state-sync/DescriptionDecorator.js.map +1 -0
- package/dist/state-sync/GlobMatcher.d.ts +29 -0
- package/dist/state-sync/GlobMatcher.d.ts.map +1 -0
- package/dist/state-sync/GlobMatcher.js +79 -0
- package/dist/state-sync/GlobMatcher.js.map +1 -0
- package/dist/state-sync/PolicyEngine.d.ts +75 -0
- package/dist/state-sync/PolicyEngine.d.ts.map +1 -0
- package/dist/state-sync/PolicyEngine.js +107 -0
- package/dist/state-sync/PolicyEngine.js.map +1 -0
- package/dist/state-sync/PolicyValidator.d.ts +67 -0
- package/dist/state-sync/PolicyValidator.d.ts.map +1 -0
- package/dist/state-sync/PolicyValidator.js +122 -0
- package/dist/state-sync/PolicyValidator.js.map +1 -0
- package/dist/state-sync/ResponseDecorator.d.ts +33 -0
- package/dist/state-sync/ResponseDecorator.d.ts.map +1 -0
- package/dist/state-sync/ResponseDecorator.js +20 -0
- package/dist/state-sync/ResponseDecorator.js.map +1 -0
- package/dist/state-sync/StateSyncBuilder.d.ts +77 -0
- package/dist/state-sync/StateSyncBuilder.d.ts.map +1 -0
- package/dist/state-sync/StateSyncBuilder.js +129 -0
- package/dist/state-sync/StateSyncBuilder.js.map +1 -0
- package/dist/state-sync/StateSyncLayer.d.ts +107 -0
- package/dist/state-sync/StateSyncLayer.d.ts.map +1 -0
- package/dist/state-sync/StateSyncLayer.js +158 -0
- package/dist/state-sync/StateSyncLayer.js.map +1 -0
- package/dist/state-sync/index.d.ts +27 -0
- package/dist/state-sync/index.d.ts.map +1 -0
- package/dist/state-sync/index.js +27 -0
- package/dist/state-sync/index.js.map +1 -0
- package/dist/state-sync/types.d.ts +174 -0
- package/dist/state-sync/types.d.ts.map +1 -0
- package/dist/state-sync/types.js +17 -0
- package/dist/state-sync/types.js.map +1 -0
- package/dist/testing/MvaMetaSymbol.d.ts +45 -0
- package/dist/testing/MvaMetaSymbol.d.ts.map +1 -0
- package/dist/testing/MvaMetaSymbol.js +34 -0
- package/dist/testing/MvaMetaSymbol.js.map +1 -0
- package/package.json +153 -0
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* VurbClient — Type-Safe MCP Client (tRPC-style)
|
|
3
|
+
*
|
|
4
|
+
* Provides end-to-end type safety from server to client.
|
|
5
|
+
* The server exports its router type, and the client consumes it
|
|
6
|
+
* with full autocomplete and compile-time validation.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // ── SERVER (mcp-server.ts) ──
|
|
11
|
+
* export const registry = new ToolRegistry<AppContext>();
|
|
12
|
+
* registry.register(projects);
|
|
13
|
+
* registry.register(billing);
|
|
14
|
+
* export type AppRouter = InferRouter<typeof registry>;
|
|
15
|
+
*
|
|
16
|
+
* // ── CLIENT (agent.ts) ──
|
|
17
|
+
* import { createVurbClient } from 'vurb/client';
|
|
18
|
+
* import type { AppRouter } from './mcp-server';
|
|
19
|
+
*
|
|
20
|
+
* const client = createVurbClient<AppRouter>(transport);
|
|
21
|
+
* const result = await client.execute('projects.create', { name: 'Vinkius V2' });
|
|
22
|
+
* // ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^
|
|
23
|
+
* // autocomplete! typed args!
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* @module
|
|
27
|
+
*/
|
|
28
|
+
import {} from '../core/response.js';
|
|
29
|
+
// ============================================================================
|
|
30
|
+
// Structured Client Error
|
|
31
|
+
// ============================================================================
|
|
32
|
+
/**
|
|
33
|
+
* Structured error parsed from a `<tool_error>` XML envelope.
|
|
34
|
+
*
|
|
35
|
+
* Provides typed access to self-healing fields so client code
|
|
36
|
+
* can programmatically react to server errors without regex parsing.
|
|
37
|
+
*/
|
|
38
|
+
export class VurbClientError extends Error {
|
|
39
|
+
/** Error code from the `code` attribute (e.g. `'NOT_FOUND'`). */
|
|
40
|
+
code;
|
|
41
|
+
/** Recovery suggestion from `<recovery>` element. */
|
|
42
|
+
recovery;
|
|
43
|
+
/** Available actions from `<available_actions>` children. */
|
|
44
|
+
availableActions;
|
|
45
|
+
/** Error severity from the `severity` attribute. */
|
|
46
|
+
severity;
|
|
47
|
+
/** Raw ToolResponse that caused the error. */
|
|
48
|
+
raw;
|
|
49
|
+
constructor(message, code, raw, options) {
|
|
50
|
+
super(message);
|
|
51
|
+
this.name = 'VurbClientError';
|
|
52
|
+
this.code = code;
|
|
53
|
+
this.raw = raw;
|
|
54
|
+
this.recovery = options?.recovery;
|
|
55
|
+
this.availableActions = Object.freeze(options?.availableActions ?? []);
|
|
56
|
+
this.severity = options?.severity ?? 'error';
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// ============================================================================
|
|
60
|
+
// XML Error Parser (Internal)
|
|
61
|
+
// ============================================================================
|
|
62
|
+
/**
|
|
63
|
+
* Decode XML entities back to their original characters.
|
|
64
|
+
*
|
|
65
|
+
* Reverses the escaping applied by `escapeXml()` and `escapeXmlAttr()`
|
|
66
|
+
* so that parsed error messages are human-readable.
|
|
67
|
+
*
|
|
68
|
+
* @internal
|
|
69
|
+
*/
|
|
70
|
+
function unescapeXml(str) {
|
|
71
|
+
return str
|
|
72
|
+
.replace(/</g, '<')
|
|
73
|
+
.replace(/>/g, '>')
|
|
74
|
+
.replace(/"/g, '"')
|
|
75
|
+
.replace(/'/g, "'")
|
|
76
|
+
.replace(/&/g, '&'); // & must be last to avoid double-decode
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Parse a `<tool_error>` XML envelope into structured fields.
|
|
80
|
+
*
|
|
81
|
+
* Coupled to the output format of `toolError()` from `response.ts`.
|
|
82
|
+
* Uses regex for lightweight parsing — acceptable since the XML is
|
|
83
|
+
* self-produced by the framework, not user-authored.
|
|
84
|
+
*
|
|
85
|
+
* @internal
|
|
86
|
+
*/
|
|
87
|
+
function parseToolErrorXml(text) {
|
|
88
|
+
const codeMatch = text.match(/<tool_error\s[^>]*code="([^"]+)"/);
|
|
89
|
+
const severityMatch = text.match(/<tool_error\s[^>]*severity="([^"]+)"/);
|
|
90
|
+
const messageMatch = text.match(/<message>([\s\S]*?)<\/message>/);
|
|
91
|
+
const recoveryMatch = text.match(/<recovery>([\s\S]*?)<\/recovery>/);
|
|
92
|
+
if (!messageMatch)
|
|
93
|
+
return null;
|
|
94
|
+
const actions = [];
|
|
95
|
+
const actionMatches = text.matchAll(/<action>([\s\S]*?)<\/action>/g);
|
|
96
|
+
for (const m of actionMatches) {
|
|
97
|
+
if (m[1])
|
|
98
|
+
actions.push(unescapeXml(m[1].trim()));
|
|
99
|
+
}
|
|
100
|
+
// Fallback: legacy comma-separated format
|
|
101
|
+
if (actions.length === 0) {
|
|
102
|
+
const legacyMatch = text.match(/<available_actions>([\s\S]*?)<\/available_actions>/);
|
|
103
|
+
if (legacyMatch?.[1]) {
|
|
104
|
+
actions.push(...legacyMatch[1].split(',').map(a => unescapeXml(a.trim())).filter(Boolean));
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const recovery = recoveryMatch?.[1] != null ? unescapeXml(recoveryMatch[1].trim()) : undefined;
|
|
108
|
+
const result = {
|
|
109
|
+
code: codeMatch?.[1] != null ? unescapeXml(codeMatch[1]) : 'UNKNOWN',
|
|
110
|
+
message: unescapeXml(messageMatch[1].trim()),
|
|
111
|
+
availableActions: actions,
|
|
112
|
+
severity: severityMatch?.[1] ?? 'error',
|
|
113
|
+
};
|
|
114
|
+
if (recovery !== undefined) {
|
|
115
|
+
result.recovery = recovery;
|
|
116
|
+
}
|
|
117
|
+
return result;
|
|
118
|
+
}
|
|
119
|
+
// ============================================================================
|
|
120
|
+
// Middleware Chain Compiler (Internal)
|
|
121
|
+
// ============================================================================
|
|
122
|
+
/** @internal */
|
|
123
|
+
function compileClientMiddleware(middleware, terminal) {
|
|
124
|
+
let chain = terminal;
|
|
125
|
+
// Wrap from right to left: first middleware in array = outermost
|
|
126
|
+
for (let i = middleware.length - 1; i >= 0; i--) {
|
|
127
|
+
const mw = middleware[i];
|
|
128
|
+
const next = chain;
|
|
129
|
+
chain = (action, args) => mw(action, args, next);
|
|
130
|
+
}
|
|
131
|
+
return chain;
|
|
132
|
+
}
|
|
133
|
+
// ============================================================================
|
|
134
|
+
// Factory
|
|
135
|
+
// ============================================================================
|
|
136
|
+
/**
|
|
137
|
+
* Create a type-safe MCP client.
|
|
138
|
+
*
|
|
139
|
+
* The client provides full autocomplete for action names and
|
|
140
|
+
* compile-time validation for arguments based on the server's
|
|
141
|
+
* router type.
|
|
142
|
+
*
|
|
143
|
+
* @typeParam TRouter - The router map (use `InferRouter<typeof registry>`)
|
|
144
|
+
* @param transport - The MCP transport layer
|
|
145
|
+
* @param options - Client options (middleware, error handling)
|
|
146
|
+
* @returns A typed {@link VurbClient}
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* import type { AppRouter } from './mcp-server';
|
|
151
|
+
*
|
|
152
|
+
* const client = createVurbClient<AppRouter>(transport);
|
|
153
|
+
*
|
|
154
|
+
* // Full autocomplete + type validation:
|
|
155
|
+
* await client.execute('projects.create', { name: 'Vinkius V2' });
|
|
156
|
+
*
|
|
157
|
+
* // TS error: 'projects.nonexistent' is not a valid action
|
|
158
|
+
* await client.execute('projects.nonexistent', {});
|
|
159
|
+
*
|
|
160
|
+
* // TS error: missing required arg 'name'
|
|
161
|
+
* await client.execute('projects.create', {});
|
|
162
|
+
* ```
|
|
163
|
+
*
|
|
164
|
+
* @example
|
|
165
|
+
* ```typescript
|
|
166
|
+
* // With client middleware and throwOnError
|
|
167
|
+
* const client = createVurbClient<AppRouter>(transport, {
|
|
168
|
+
* throwOnError: true,
|
|
169
|
+
* middleware: [
|
|
170
|
+
* async (action, args, next) => {
|
|
171
|
+
* console.log(`[Client] calling ${action}`);
|
|
172
|
+
* const result = await next(action, args);
|
|
173
|
+
* console.log(`[Client] ${action} done`);
|
|
174
|
+
* return result;
|
|
175
|
+
* },
|
|
176
|
+
* ],
|
|
177
|
+
* });
|
|
178
|
+
* ```
|
|
179
|
+
*/
|
|
180
|
+
export function createVurbClient(transport, options) {
|
|
181
|
+
const throwOnError = options?.throwOnError ?? false;
|
|
182
|
+
const discriminatorKey = options?.discriminatorKey ?? 'action';
|
|
183
|
+
/** Terminal function: builds the MCP call from the dotted action path */
|
|
184
|
+
function terminalCall(action, args) {
|
|
185
|
+
const dotIndex = action.indexOf('.');
|
|
186
|
+
if (dotIndex === -1) {
|
|
187
|
+
return transport.callTool(action, args);
|
|
188
|
+
}
|
|
189
|
+
const toolName = action.substring(0, dotIndex);
|
|
190
|
+
const actionName = action.substring(dotIndex + 1);
|
|
191
|
+
return transport.callTool(toolName, {
|
|
192
|
+
...args,
|
|
193
|
+
[discriminatorKey]: actionName,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
// Compile middleware chain once at creation time
|
|
197
|
+
const dispatch = (options?.middleware != null && options.middleware.length > 0)
|
|
198
|
+
? compileClientMiddleware(options.middleware, terminalCall)
|
|
199
|
+
: terminalCall;
|
|
200
|
+
/** Post-process: handle throwOnError */
|
|
201
|
+
async function executeInternal(action, args) {
|
|
202
|
+
const result = await dispatch(action, args);
|
|
203
|
+
if (throwOnError && result.isError) {
|
|
204
|
+
const text = result.content
|
|
205
|
+
.filter(c => c.type === 'text')
|
|
206
|
+
.map(c => c.text)
|
|
207
|
+
.join('\n');
|
|
208
|
+
const parsed = parseToolErrorXml(text);
|
|
209
|
+
if (parsed) {
|
|
210
|
+
const opts = {
|
|
211
|
+
availableActions: parsed.availableActions,
|
|
212
|
+
severity: parsed.severity,
|
|
213
|
+
};
|
|
214
|
+
if (parsed.recovery !== undefined) {
|
|
215
|
+
opts.recovery = parsed.recovery;
|
|
216
|
+
}
|
|
217
|
+
throw new VurbClientError(parsed.message, parsed.code, result, opts);
|
|
218
|
+
}
|
|
219
|
+
throw new VurbClientError(text || 'Unknown error', 'UNKNOWN', result);
|
|
220
|
+
}
|
|
221
|
+
return result;
|
|
222
|
+
}
|
|
223
|
+
return {
|
|
224
|
+
async execute(action, args) {
|
|
225
|
+
return executeInternal(action, args);
|
|
226
|
+
},
|
|
227
|
+
async executeBatch(calls, batchOptions) {
|
|
228
|
+
const items = calls;
|
|
229
|
+
if (batchOptions?.sequential) {
|
|
230
|
+
const results = [];
|
|
231
|
+
for (const call of items) {
|
|
232
|
+
results.push(await executeInternal(call.action, call.args));
|
|
233
|
+
}
|
|
234
|
+
return results;
|
|
235
|
+
}
|
|
236
|
+
return Promise.all(items.map(call => executeInternal(call.action, call.args)));
|
|
237
|
+
},
|
|
238
|
+
proxy: buildFluentProxy(executeInternal),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
241
|
+
// ============================================================================
|
|
242
|
+
// Fluent Proxy Builder (Internal)
|
|
243
|
+
// ============================================================================
|
|
244
|
+
/**
|
|
245
|
+
* Creates a recursive Proxy that accumulates path segments
|
|
246
|
+
* and executes when invoked as a function.
|
|
247
|
+
*
|
|
248
|
+
* ```
|
|
249
|
+
* proxy.projects.create({ name: 'V2' })
|
|
250
|
+
* // ^^^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^
|
|
251
|
+
* // seg[0] seg[1] args → execute('projects.create', args)
|
|
252
|
+
* ```
|
|
253
|
+
*
|
|
254
|
+
* @internal
|
|
255
|
+
*/
|
|
256
|
+
// Bug #130: Symbols that debugging / inspection tools access on every object.
|
|
257
|
+
// Returning undefined for these prevents the proxy from recursing into itself
|
|
258
|
+
// when inspected in DevTools, Node REPL, or util.inspect().
|
|
259
|
+
const INSPECTION_SYMBOLS = new Set([
|
|
260
|
+
Symbol.toPrimitive,
|
|
261
|
+
Symbol.toStringTag,
|
|
262
|
+
Symbol.iterator,
|
|
263
|
+
Symbol.asyncIterator,
|
|
264
|
+
Symbol.hasInstance,
|
|
265
|
+
...(typeof Symbol.for === 'function' ? [Symbol.for('nodejs.util.inspect.custom')] : []),
|
|
266
|
+
]);
|
|
267
|
+
function buildFluentProxy(execute, segments = []) {
|
|
268
|
+
return new Proxy(function () { }, {
|
|
269
|
+
get(_target, prop) {
|
|
270
|
+
if (typeof prop === 'symbol') {
|
|
271
|
+
// Bug #130: guard inspection symbols
|
|
272
|
+
if (INSPECTION_SYMBOLS.has(prop))
|
|
273
|
+
return undefined;
|
|
274
|
+
return undefined; // all other symbols → safe no-op
|
|
275
|
+
}
|
|
276
|
+
if (prop === 'then')
|
|
277
|
+
return undefined;
|
|
278
|
+
return buildFluentProxy(execute, [...segments, prop]);
|
|
279
|
+
},
|
|
280
|
+
apply(_target, _thisArg, argsList) {
|
|
281
|
+
const action = segments.join('.');
|
|
282
|
+
const args = (argsList[0] ?? {});
|
|
283
|
+
return execute(action, args);
|
|
284
|
+
},
|
|
285
|
+
});
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=VurbClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"VurbClient.js","sourceRoot":"","sources":["../../src/client/VurbClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ToolBuilder } from '../core/types.js';
|
|
2
|
+
import { type TypedToolRegistry } from './InferRouter.js';
|
|
3
|
+
/**
|
|
4
|
+
* Create a type-preserving tool registry.
|
|
5
|
+
*
|
|
6
|
+
* Uses currying to separate the `TContext` generic (explicitly provided)
|
|
7
|
+
* from the builder tuple types (automatically inferred).
|
|
8
|
+
*
|
|
9
|
+
* @typeParam TContext - Application context type (must be specified explicitly)
|
|
10
|
+
* @returns A function that accepts builders and creates the typed registry
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* // Step 1: Set the context type
|
|
15
|
+
* const createRegistry = createTypedRegistry<AppContext>();
|
|
16
|
+
*
|
|
17
|
+
* // Step 2: Register builders (types are inferred)
|
|
18
|
+
* const registry = createRegistry(projectsTool, billingTool);
|
|
19
|
+
*
|
|
20
|
+
* // Or as a one-liner:
|
|
21
|
+
* const registry = createTypedRegistry<AppContext>()(projectsTool, billingTool);
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
export declare function createTypedRegistry<TContext>(): <TBuilders extends ToolBuilder<TContext>[]>(...builders: TBuilders) => TypedToolRegistry<TContext, TBuilders>;
|
|
25
|
+
//# sourceMappingURL=createTypedRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTypedRegistry.d.ts","sourceRoot":"","sources":["../../src/client/createTypedRegistry.ts"],"names":[],"mappings":"AAuCA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,MACvB,SAAS,SAAS,WAAW,CAAC,QAAQ,CAAC,EAAE,EACtD,GAAG,UAAU,SAAS,KACvB,iBAAiB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAS5C"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* createTypedRegistry — Type-Preserving Registry Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a `ToolRegistry` that preserves the builder types at compile time,
|
|
5
|
+
* enabling `InferRouter<typeof registry>` to extract a fully typed router map.
|
|
6
|
+
*
|
|
7
|
+
* Uses the **curried factory pattern** (like tRPC's `initTRPC.create()`)
|
|
8
|
+
* to separate the context type parameter from the builder tuple inference.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* import { createTypedRegistry, createTool, success } from 'vurb';
|
|
13
|
+
*
|
|
14
|
+
* interface AppContext { db: Database; user: User }
|
|
15
|
+
*
|
|
16
|
+
* const projects = createTool<AppContext>('projects')
|
|
17
|
+
* .action({ name: 'list', handler: async (ctx) => success([]) })
|
|
18
|
+
* .action({ name: 'create', schema: z.object({ name: z.string() }),
|
|
19
|
+
* handler: async (ctx, args) => success(args.name) });
|
|
20
|
+
*
|
|
21
|
+
* const billing = createTool<AppContext>('billing')
|
|
22
|
+
* .action({ name: 'refund', handler: async (ctx) => success('ok') });
|
|
23
|
+
*
|
|
24
|
+
* // Curried: first call sets context, second registers builders
|
|
25
|
+
* const registry = createTypedRegistry<AppContext>()(projects, billing);
|
|
26
|
+
*
|
|
27
|
+
* // Runtime: use registry.registry for server attachment
|
|
28
|
+
* registry.registry.attachToServer(server, { contextFactory });
|
|
29
|
+
*
|
|
30
|
+
* // Types: export for client-side inference
|
|
31
|
+
* export type AppRouter = InferRouter<typeof registry>;
|
|
32
|
+
* ```
|
|
33
|
+
*
|
|
34
|
+
* @typeParam TContext - Application context type
|
|
35
|
+
* @returns A curried function that accepts builders and returns a typed registry
|
|
36
|
+
*
|
|
37
|
+
* @module
|
|
38
|
+
*/
|
|
39
|
+
import { ToolRegistry } from '../core/registry/ToolRegistry.js';
|
|
40
|
+
import {} from '../core/types.js';
|
|
41
|
+
import {} from './InferRouter.js';
|
|
42
|
+
/**
|
|
43
|
+
* Create a type-preserving tool registry.
|
|
44
|
+
*
|
|
45
|
+
* Uses currying to separate the `TContext` generic (explicitly provided)
|
|
46
|
+
* from the builder tuple types (automatically inferred).
|
|
47
|
+
*
|
|
48
|
+
* @typeParam TContext - Application context type (must be specified explicitly)
|
|
49
|
+
* @returns A function that accepts builders and creates the typed registry
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // Step 1: Set the context type
|
|
54
|
+
* const createRegistry = createTypedRegistry<AppContext>();
|
|
55
|
+
*
|
|
56
|
+
* // Step 2: Register builders (types are inferred)
|
|
57
|
+
* const registry = createRegistry(projectsTool, billingTool);
|
|
58
|
+
*
|
|
59
|
+
* // Or as a one-liner:
|
|
60
|
+
* const registry = createTypedRegistry<AppContext>()(projectsTool, billingTool);
|
|
61
|
+
* ```
|
|
62
|
+
*/
|
|
63
|
+
export function createTypedRegistry() {
|
|
64
|
+
return function (...builders) {
|
|
65
|
+
const registry = new ToolRegistry();
|
|
66
|
+
registry.registerAll(...builders);
|
|
67
|
+
return {
|
|
68
|
+
registry,
|
|
69
|
+
_builders: builders,
|
|
70
|
+
_context: undefined,
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=createTypedRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createTypedRegistry.js","sourceRoot":"","sources":["../../src/client/createTypedRegistry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAoB,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAA0B,MAAM,kBAAkB,CAAC;AAE1D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,mBAAmB;IAC/B,OAAO,UACH,GAAG,QAAmB;QAEtB,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAY,CAAC;QAC9C,QAAQ,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC,CAAC;QAClC,OAAO;YACH,QAAQ;YACR,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,SAAgC;SAC7C,CAAC;IACN,CAAC,CAAC;AACN,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** Client Bounded Context — Barrel Export */
|
|
2
|
+
export { createVurbClient, VurbClientError } from './VurbClient.js';
|
|
3
|
+
export type { VurbClient, VurbTransport, RouterMap, FluentProxy, ClientMiddleware, VurbClientOptions, } from './VurbClient.js';
|
|
4
|
+
export { createTypedRegistry } from './createTypedRegistry.js';
|
|
5
|
+
export type { InferRouter, TypedToolRegistry } from './InferRouter.js';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACpE,YAAY,EACR,UAAU,EACV,aAAa,EACb,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,iBAAiB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,YAAY,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/client/index.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AASpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConverterBase — Generic Base for Bidirectional Converters
|
|
3
|
+
*
|
|
4
|
+
* Provides batch conversion with null filtering in both directions.
|
|
5
|
+
* Domain-specific converters extend this class and only implement
|
|
6
|
+
* the single-item abstract methods: {@link convertFrom} and {@link convertTo}.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam TSource - The domain model type (e.g. Group, Tool)
|
|
9
|
+
* @typeParam TTarget - The external/DTO type
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { ToolConverterBase, Tool } from 'vurb';
|
|
14
|
+
*
|
|
15
|
+
* interface ToolDto { id: string; label: string }
|
|
16
|
+
*
|
|
17
|
+
* class MyToolConverter extends ToolConverterBase<ToolDto> {
|
|
18
|
+
* convertFrom(tool: Tool): ToolDto {
|
|
19
|
+
* return { id: tool.name, label: tool.title ?? tool.name };
|
|
20
|
+
* }
|
|
21
|
+
* convertTo(dto: ToolDto): Tool {
|
|
22
|
+
* const tool = new Tool(dto.id);
|
|
23
|
+
* tool.title = dto.label;
|
|
24
|
+
* return tool;
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* const converter = new MyToolConverter();
|
|
29
|
+
* const dtos = converter.convertFromBatch(tools); // Tool[] → ToolDto[]
|
|
30
|
+
* const tools = converter.convertToBatch(dtos); // ToolDto[] → Tool[]
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @see {@link ToolConverterBase} for tool-specific converters
|
|
34
|
+
* @see {@link GroupConverterBase} for group-specific converters
|
|
35
|
+
*/
|
|
36
|
+
export declare abstract class ConverterBase<TSource, TTarget> {
|
|
37
|
+
/**
|
|
38
|
+
* Convert a batch of source items to target items.
|
|
39
|
+
* Null/undefined results from single-item conversion are filtered out.
|
|
40
|
+
*
|
|
41
|
+
* @param sources - Array of domain model instances
|
|
42
|
+
* @returns Array of converted DTOs (nulls removed)
|
|
43
|
+
*/
|
|
44
|
+
convertFromBatch(sources: TSource[]): TTarget[];
|
|
45
|
+
/**
|
|
46
|
+
* Convert a single source item to a target item.
|
|
47
|
+
*
|
|
48
|
+
* @param source - Domain model instance
|
|
49
|
+
* @returns The converted DTO
|
|
50
|
+
*/
|
|
51
|
+
abstract convertFrom(source: TSource): TTarget;
|
|
52
|
+
/**
|
|
53
|
+
* Convert a batch of target items back to source items.
|
|
54
|
+
* Null/undefined results from single-item conversion are filtered out.
|
|
55
|
+
*
|
|
56
|
+
* @param targets - Array of DTOs
|
|
57
|
+
* @returns Array of domain model instances (nulls removed)
|
|
58
|
+
*/
|
|
59
|
+
convertToBatch(targets: TTarget[]): TSource[];
|
|
60
|
+
/**
|
|
61
|
+
* Convert a single target item back to a source item.
|
|
62
|
+
*
|
|
63
|
+
* @param target - DTO instance
|
|
64
|
+
* @returns The domain model instance
|
|
65
|
+
*/
|
|
66
|
+
abstract convertTo(target: TTarget): TSource;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=ConverterBase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConverterBase.d.ts","sourceRoot":"","sources":["../../src/converters/ConverterBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,8BAAsB,aAAa,CAAC,OAAO,EAAE,OAAO;IAChD;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAM/C;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;IAE9C;;;;;;OAMG;IACH,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE;IAM7C;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO;CAC/C"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConverterBase — Generic Base for Bidirectional Converters
|
|
3
|
+
*
|
|
4
|
+
* Provides batch conversion with null filtering in both directions.
|
|
5
|
+
* Domain-specific converters extend this class and only implement
|
|
6
|
+
* the single-item abstract methods: {@link convertFrom} and {@link convertTo}.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam TSource - The domain model type (e.g. Group, Tool)
|
|
9
|
+
* @typeParam TTarget - The external/DTO type
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { ToolConverterBase, Tool } from 'vurb';
|
|
14
|
+
*
|
|
15
|
+
* interface ToolDto { id: string; label: string }
|
|
16
|
+
*
|
|
17
|
+
* class MyToolConverter extends ToolConverterBase<ToolDto> {
|
|
18
|
+
* convertFrom(tool: Tool): ToolDto {
|
|
19
|
+
* return { id: tool.name, label: tool.title ?? tool.name };
|
|
20
|
+
* }
|
|
21
|
+
* convertTo(dto: ToolDto): Tool {
|
|
22
|
+
* const tool = new Tool(dto.id);
|
|
23
|
+
* tool.title = dto.label;
|
|
24
|
+
* return tool;
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* const converter = new MyToolConverter();
|
|
29
|
+
* const dtos = converter.convertFromBatch(tools); // Tool[] → ToolDto[]
|
|
30
|
+
* const tools = converter.convertToBatch(dtos); // ToolDto[] → Tool[]
|
|
31
|
+
* ```
|
|
32
|
+
*
|
|
33
|
+
* @see {@link ToolConverterBase} for tool-specific converters
|
|
34
|
+
* @see {@link GroupConverterBase} for group-specific converters
|
|
35
|
+
*/
|
|
36
|
+
export class ConverterBase {
|
|
37
|
+
/**
|
|
38
|
+
* Convert a batch of source items to target items.
|
|
39
|
+
* Null/undefined results from single-item conversion are filtered out.
|
|
40
|
+
*
|
|
41
|
+
* @param sources - Array of domain model instances
|
|
42
|
+
* @returns Array of converted DTOs (nulls removed)
|
|
43
|
+
*/
|
|
44
|
+
convertFromBatch(sources) {
|
|
45
|
+
return sources
|
|
46
|
+
.map(s => this.convertFrom(s))
|
|
47
|
+
.filter((item) => item != null);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Convert a batch of target items back to source items.
|
|
51
|
+
* Null/undefined results from single-item conversion are filtered out.
|
|
52
|
+
*
|
|
53
|
+
* @param targets - Array of DTOs
|
|
54
|
+
* @returns Array of domain model instances (nulls removed)
|
|
55
|
+
*/
|
|
56
|
+
convertToBatch(targets) {
|
|
57
|
+
return targets
|
|
58
|
+
.map(t => this.convertTo(t))
|
|
59
|
+
.filter((item) => item != null);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=ConverterBase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConverterBase.js","sourceRoot":"","sources":["../../src/converters/ConverterBase.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,OAAgB,aAAa;IAC/B;;;;;;OAMG;IACH,gBAAgB,CAAC,OAAkB;QAC/B,OAAO,OAAO;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;aAC7B,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACtE,CAAC;IAUD;;;;;;OAMG;IACH,cAAc,CAAC,OAAkB;QAC7B,OAAO,OAAO;aACT,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;aAC3B,MAAM,CAAC,CAAC,IAAI,EAAgC,EAAE,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IACtE,CAAC;CASJ"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Group } from '../domain/Group.js';
|
|
2
|
+
import { ConverterBase } from './ConverterBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type-safe Group converter contract.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam T - The target DTO type
|
|
7
|
+
* @see {@link GroupConverterBase} for the base implementation class
|
|
8
|
+
*/
|
|
9
|
+
export type GroupConverter<T> = ConverterBase<Group, T>;
|
|
10
|
+
/**
|
|
11
|
+
* Base class for Group converters.
|
|
12
|
+
*
|
|
13
|
+
* Extend this and implement `convertFrom(group)` and `convertTo(dto)`.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The target DTO type
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class MyGroupConverter extends GroupConverterBase<GroupDto> {
|
|
20
|
+
* convertFrom(group: Group): GroupDto {
|
|
21
|
+
* return { name: group.name, children: group.childGroups.length };
|
|
22
|
+
* }
|
|
23
|
+
* convertTo(dto: GroupDto): Group {
|
|
24
|
+
* return new Group(dto.name);
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
30
|
+
*/
|
|
31
|
+
export declare abstract class GroupConverterBase<T> extends ConverterBase<Group, T> {
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=GroupConverter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupConverter.d.ts","sourceRoot":"","sources":["../../src/converters/GroupConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAExD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,8BAAsB,kBAAkB,CAAC,CAAC,CAAE,SAAQ,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;CAAG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import {} from '../domain/Group.js';
|
|
2
|
+
import { ConverterBase } from './ConverterBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Base class for Group converters.
|
|
5
|
+
*
|
|
6
|
+
* Extend this and implement `convertFrom(group)` and `convertTo(dto)`.
|
|
7
|
+
*
|
|
8
|
+
* @typeParam T - The target DTO type
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* class MyGroupConverter extends GroupConverterBase<GroupDto> {
|
|
13
|
+
* convertFrom(group: Group): GroupDto {
|
|
14
|
+
* return { name: group.name, children: group.childGroups.length };
|
|
15
|
+
* }
|
|
16
|
+
* convertTo(dto: GroupDto): Group {
|
|
17
|
+
* return new Group(dto.name);
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*
|
|
22
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
23
|
+
*/
|
|
24
|
+
export class GroupConverterBase extends ConverterBase {
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=GroupConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GroupConverter.js","sourceRoot":"","sources":["../../src/converters/GroupConverter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAUnD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,OAAgB,kBAAsB,SAAQ,aAAuB;CAAG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { type Prompt } from '../domain/Prompt.js';
|
|
2
|
+
import { ConverterBase } from './ConverterBase.js';
|
|
3
|
+
/**
|
|
4
|
+
* Type-safe Prompt converter contract.
|
|
5
|
+
*
|
|
6
|
+
* @typeParam T - The target DTO type
|
|
7
|
+
* @see {@link PromptConverterBase} for the base implementation class
|
|
8
|
+
*/
|
|
9
|
+
export type PromptConverter<T> = ConverterBase<Prompt, T>;
|
|
10
|
+
/**
|
|
11
|
+
* Base class for Prompt converters.
|
|
12
|
+
*
|
|
13
|
+
* Extend this and implement `convertFrom(prompt)` and `convertTo(dto)`.
|
|
14
|
+
*
|
|
15
|
+
* @typeParam T - The target DTO type
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* class MyPromptConverter extends PromptConverterBase<PromptDto> {
|
|
20
|
+
* convertFrom(prompt: Prompt): PromptDto {
|
|
21
|
+
* return { name: prompt.name, args: prompt.promptArguments.length };
|
|
22
|
+
* }
|
|
23
|
+
* convertTo(dto: PromptDto): Prompt {
|
|
24
|
+
* return new Prompt(dto.name);
|
|
25
|
+
* }
|
|
26
|
+
* }
|
|
27
|
+
* ```
|
|
28
|
+
*
|
|
29
|
+
* @see {@link ConverterBase} for batch conversion methods
|
|
30
|
+
*/
|
|
31
|
+
export declare abstract class PromptConverterBase<T> extends ConverterBase<Prompt, T> {
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=PromptConverter.d.ts.map
|