@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,195 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FluentPromptBuilder — Chainable Prompt Definition API
|
|
3
|
+
*
|
|
4
|
+
* Provides a builder-pattern alternative to the config-bag `definePrompt()`.
|
|
5
|
+
* Follows the same architectural pattern as `FluentToolBuilder`.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* const greet = f.prompt('greet')
|
|
10
|
+
* .describe('Greet a user by name')
|
|
11
|
+
* .input({ name: f.string() })
|
|
12
|
+
* .handler(async (ctx, { name }) => ({
|
|
13
|
+
* messages: [PromptMessage.user(`Hello ${name}!`)],
|
|
14
|
+
* }));
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import {} from 'zod';
|
|
20
|
+
import {} from './types.js';
|
|
21
|
+
import {} from '../core/types.js';
|
|
22
|
+
import { definePrompt } from './definePrompt.js';
|
|
23
|
+
// ============================================================================
|
|
24
|
+
// FluentPromptBuilder
|
|
25
|
+
// ============================================================================
|
|
26
|
+
/**
|
|
27
|
+
* Chainable builder for MCP Prompts.
|
|
28
|
+
*
|
|
29
|
+
* Each setter returns `this` for chaining. Finalisation happens lazily
|
|
30
|
+
* when the `PromptBuilder` interface methods are accessed — this means
|
|
31
|
+
* you can pass a `FluentPromptBuilder` directly to `PromptRegistry.register()`.
|
|
32
|
+
*
|
|
33
|
+
* @typeParam TContext - Application context type (inherited from `initVurb`)
|
|
34
|
+
* @typeParam TArgs - Inferred argument type from the schema
|
|
35
|
+
*/
|
|
36
|
+
export class FluentPromptBuilder {
|
|
37
|
+
_name;
|
|
38
|
+
_title;
|
|
39
|
+
_description;
|
|
40
|
+
_icons;
|
|
41
|
+
_tags = [];
|
|
42
|
+
_middlewares = [];
|
|
43
|
+
_args;
|
|
44
|
+
_hydrationTimeout;
|
|
45
|
+
_handler;
|
|
46
|
+
/** @internal Cached delegate built on first access to PromptBuilder methods */
|
|
47
|
+
_delegate;
|
|
48
|
+
constructor(name) {
|
|
49
|
+
this._name = name;
|
|
50
|
+
}
|
|
51
|
+
// ── Chainable Setters ────────────────────────────────
|
|
52
|
+
/**
|
|
53
|
+
* Set a human-readable title for UI display.
|
|
54
|
+
*
|
|
55
|
+
* @param title - The prompt title
|
|
56
|
+
* @returns `this` for chaining
|
|
57
|
+
*/
|
|
58
|
+
title(title) {
|
|
59
|
+
this._title = title;
|
|
60
|
+
this._delegate = undefined;
|
|
61
|
+
return this;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Set the prompt description shown in the slash command palette.
|
|
65
|
+
*
|
|
66
|
+
* @param description - Human-readable description
|
|
67
|
+
* @returns `this` for chaining
|
|
68
|
+
*/
|
|
69
|
+
describe(description) {
|
|
70
|
+
this._description = description;
|
|
71
|
+
this._delegate = undefined;
|
|
72
|
+
return this;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Set icons for light/dark themes.
|
|
76
|
+
*
|
|
77
|
+
* @param icons - Icon paths for light and/or dark themes
|
|
78
|
+
* @returns `this` for chaining
|
|
79
|
+
*/
|
|
80
|
+
icons(icons) {
|
|
81
|
+
this._icons = icons;
|
|
82
|
+
this._delegate = undefined;
|
|
83
|
+
return this;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Set capability tags for selective exposure.
|
|
87
|
+
*
|
|
88
|
+
* @param tags - Tag strings for filtering
|
|
89
|
+
* @returns `this` for chaining
|
|
90
|
+
*/
|
|
91
|
+
tags(...tags) {
|
|
92
|
+
// Bug #113 fix: append instead of replace, matching FluentToolBuilder’s
|
|
93
|
+
// accumulative .tags() semantics.
|
|
94
|
+
this._tags.push(...tags);
|
|
95
|
+
this._delegate = undefined;
|
|
96
|
+
return this;
|
|
97
|
+
}
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
99
|
+
input(schemaOrParams) {
|
|
100
|
+
this._args = schemaOrParams;
|
|
101
|
+
this._delegate = undefined;
|
|
102
|
+
return this;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Add middleware to the prompt's execution pipeline.
|
|
106
|
+
*
|
|
107
|
+
* Middleware runs in registration order around the handler
|
|
108
|
+
* (same onion model as tool middleware).
|
|
109
|
+
*
|
|
110
|
+
* @param fns - Middleware functions
|
|
111
|
+
* @returns `this` for chaining
|
|
112
|
+
*/
|
|
113
|
+
use(...fns) {
|
|
114
|
+
this._middlewares.push(...fns);
|
|
115
|
+
this._delegate = undefined;
|
|
116
|
+
return this;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Set the maximum hydration time in milliseconds.
|
|
120
|
+
*
|
|
121
|
+
* If the handler doesn't complete within this time,
|
|
122
|
+
* the framework returns a graceful SYSTEM ALERT.
|
|
123
|
+
*
|
|
124
|
+
* @param ms - Timeout in milliseconds
|
|
125
|
+
* @returns `this` for chaining
|
|
126
|
+
*/
|
|
127
|
+
timeout(ms) {
|
|
128
|
+
this._hydrationTimeout = ms;
|
|
129
|
+
this._delegate = undefined;
|
|
130
|
+
return this;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Set the hydration handler.
|
|
134
|
+
*
|
|
135
|
+
* This is the terminal method — after calling `.handler()`,
|
|
136
|
+
* the builder is ready to be registered.
|
|
137
|
+
*
|
|
138
|
+
* @param fn - Handler function receiving `(ctx, args)` → `PromptResult`
|
|
139
|
+
* @returns `this` for chaining
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* .handler(async (ctx, { name }) => ({
|
|
144
|
+
* messages: [PromptMessage.user(`Hello ${name}!`)],
|
|
145
|
+
* }))
|
|
146
|
+
* ```
|
|
147
|
+
*/
|
|
148
|
+
handler(fn) {
|
|
149
|
+
this._handler = fn;
|
|
150
|
+
this._delegate = undefined;
|
|
151
|
+
return this;
|
|
152
|
+
}
|
|
153
|
+
// ── PromptBuilder Interface (delegation) ─────────────
|
|
154
|
+
/** @internal Build the underlying PromptBuilder delegate lazily */
|
|
155
|
+
_build() {
|
|
156
|
+
if (this._delegate)
|
|
157
|
+
return this._delegate;
|
|
158
|
+
if (!this._handler) {
|
|
159
|
+
throw new Error(`FluentPromptBuilder('${this._name}'): .handler() must be called before the prompt can be used.`);
|
|
160
|
+
}
|
|
161
|
+
this._delegate = definePrompt(this._name, {
|
|
162
|
+
title: this._title,
|
|
163
|
+
description: this._description,
|
|
164
|
+
icons: this._icons,
|
|
165
|
+
tags: this._tags.length > 0 ? this._tags : undefined,
|
|
166
|
+
middleware: this._middlewares.length > 0 ? this._middlewares : undefined,
|
|
167
|
+
args: this._args,
|
|
168
|
+
hydrationTimeout: this._hydrationTimeout,
|
|
169
|
+
handler: this._handler,
|
|
170
|
+
});
|
|
171
|
+
return this._delegate;
|
|
172
|
+
}
|
|
173
|
+
getName() {
|
|
174
|
+
return this._name;
|
|
175
|
+
}
|
|
176
|
+
getDescription() {
|
|
177
|
+
return this._description;
|
|
178
|
+
}
|
|
179
|
+
getTags() {
|
|
180
|
+
return this._tags;
|
|
181
|
+
}
|
|
182
|
+
hasMiddleware() {
|
|
183
|
+
return this._middlewares.length > 0;
|
|
184
|
+
}
|
|
185
|
+
getHydrationTimeout() {
|
|
186
|
+
return this._hydrationTimeout;
|
|
187
|
+
}
|
|
188
|
+
buildPromptDefinition() {
|
|
189
|
+
return this._build().buildPromptDefinition();
|
|
190
|
+
}
|
|
191
|
+
execute(ctx, args) {
|
|
192
|
+
return this._build().execute(ctx, args);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
//# sourceMappingURL=FluentPromptBuilder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FluentPromptBuilder.js","sourceRoot":"","sources":["../../src/prompt/FluentPromptBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HydrationSandbox — Structured Deadline for Prompt Server-Side Hydration
|
|
3
|
+
*
|
|
4
|
+
* When a user invokes `/morning_briefing`, the prompt handler performs
|
|
5
|
+
* server-side hydration: fetching Jira tickets, Stripe invoices, database
|
|
6
|
+
* queries. If any external source hangs (15s Jira timeout, API 500),
|
|
7
|
+
* the user stares at a frozen UI.
|
|
8
|
+
*
|
|
9
|
+
* This sandbox wraps the handler in a strict `Promise.race` deadline:
|
|
10
|
+
*
|
|
11
|
+
* ┌─────────────────────────────────────────────────┐
|
|
12
|
+
* │ Promise.race([ │
|
|
13
|
+
* │ handler(ctx, args), ← the real work │
|
|
14
|
+
* │ deadlinePromise(3s), ← the safety net │
|
|
15
|
+
* │ ]) │
|
|
16
|
+
* │ │
|
|
17
|
+
* │ Winner: │
|
|
18
|
+
* │ handler → return result (happy path) │
|
|
19
|
+
* │ deadline → return SYSTEM ALERT (graceful) │
|
|
20
|
+
* │ handler throws → return ERROR ALERT (catch) │
|
|
21
|
+
* └─────────────────────────────────────────────────┘
|
|
22
|
+
*
|
|
23
|
+
* Three guarantees:
|
|
24
|
+
* 1. The UI unblocks within `deadlineMs` — always.
|
|
25
|
+
* 2. Handler errors become graceful alerts, not -32603 crashes.
|
|
26
|
+
* 3. Timers are cleaned via `finally` — no resource leaks.
|
|
27
|
+
*
|
|
28
|
+
* Design influenced by:
|
|
29
|
+
* - Go's `context.WithDeadline` (structured cancellation)
|
|
30
|
+
* - gRPC deadline propagation (strict, per-call)
|
|
31
|
+
* - Resilience4j's TimeLimiter (JVM circuit breaker pattern)
|
|
32
|
+
*
|
|
33
|
+
* @module
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
import { type PromptResult } from './types.js';
|
|
37
|
+
/**
|
|
38
|
+
* Execute a prompt hydration function within a strict deadline.
|
|
39
|
+
*
|
|
40
|
+
* Uses `Promise.race` between the handler and a timeout promise.
|
|
41
|
+
* Three scenarios:
|
|
42
|
+
*
|
|
43
|
+
* 1. **Handler wins** (completes before deadline) → returns result
|
|
44
|
+
* 2. **Deadline wins** (handler too slow) → returns TIMEOUT alert
|
|
45
|
+
* 3. **Handler throws** (API error, crash) → returns ERROR alert
|
|
46
|
+
*
|
|
47
|
+
* In ALL cases, the caller receives a valid `PromptResult`.
|
|
48
|
+
* The UI never freezes. The user never sees `-32603`.
|
|
49
|
+
*
|
|
50
|
+
* @param fn - The prompt hydration function to execute
|
|
51
|
+
* @param deadlineMs - Maximum time in milliseconds (must be > 0)
|
|
52
|
+
* @returns Always returns a valid PromptResult
|
|
53
|
+
*/
|
|
54
|
+
export declare function runWithHydrationDeadline(fn: () => Promise<PromptResult>, deadlineMs: number): Promise<PromptResult>;
|
|
55
|
+
//# sourceMappingURL=HydrationSandbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HydrationSandbox.d.ts","sourceRoot":"","sources":["../../src/prompt/HydrationSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAmE/C;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,wBAAwB,CAC1C,EAAE,EAAE,MAAM,OAAO,CAAC,YAAY,CAAC,EAC/B,UAAU,EAAE,MAAM,GACnB,OAAO,CAAC,YAAY,CAAC,CAwBvB"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HydrationSandbox — Structured Deadline for Prompt Server-Side Hydration
|
|
3
|
+
*
|
|
4
|
+
* When a user invokes `/morning_briefing`, the prompt handler performs
|
|
5
|
+
* server-side hydration: fetching Jira tickets, Stripe invoices, database
|
|
6
|
+
* queries. If any external source hangs (15s Jira timeout, API 500),
|
|
7
|
+
* the user stares at a frozen UI.
|
|
8
|
+
*
|
|
9
|
+
* This sandbox wraps the handler in a strict `Promise.race` deadline:
|
|
10
|
+
*
|
|
11
|
+
* ┌─────────────────────────────────────────────────┐
|
|
12
|
+
* │ Promise.race([ │
|
|
13
|
+
* │ handler(ctx, args), ← the real work │
|
|
14
|
+
* │ deadlinePromise(3s), ← the safety net │
|
|
15
|
+
* │ ]) │
|
|
16
|
+
* │ │
|
|
17
|
+
* │ Winner: │
|
|
18
|
+
* │ handler → return result (happy path) │
|
|
19
|
+
* │ deadline → return SYSTEM ALERT (graceful) │
|
|
20
|
+
* │ handler throws → return ERROR ALERT (catch) │
|
|
21
|
+
* └─────────────────────────────────────────────────┘
|
|
22
|
+
*
|
|
23
|
+
* Three guarantees:
|
|
24
|
+
* 1. The UI unblocks within `deadlineMs` — always.
|
|
25
|
+
* 2. Handler errors become graceful alerts, not -32603 crashes.
|
|
26
|
+
* 3. Timers are cleaned via `finally` — no resource leaks.
|
|
27
|
+
*
|
|
28
|
+
* Design influenced by:
|
|
29
|
+
* - Go's `context.WithDeadline` (structured cancellation)
|
|
30
|
+
* - gRPC deadline propagation (strict, per-call)
|
|
31
|
+
* - Resilience4j's TimeLimiter (JVM circuit breaker pattern)
|
|
32
|
+
*
|
|
33
|
+
* @module
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
import {} from './types.js';
|
|
37
|
+
// ── Alert Formatters ─────────────────────────────────────
|
|
38
|
+
/**
|
|
39
|
+
* Build an XML-structured SYSTEM ALERT for the LLM.
|
|
40
|
+
*
|
|
41
|
+
* Uses XML semantic boundaries so the LLM can parse the
|
|
42
|
+
* alert deterministically — same pattern as our self-healing
|
|
43
|
+
* tool errors (`<tool_error>`, `<validation_error>`).
|
|
44
|
+
*/
|
|
45
|
+
function formatHydrationAlert(status, deadlineMs, errorMessage) {
|
|
46
|
+
const parts = ['<hydration_alert>'];
|
|
47
|
+
parts.push(` <status>${status}</status>`);
|
|
48
|
+
parts.push(` <deadline_ms>${deadlineMs}</deadline_ms>`);
|
|
49
|
+
if (status === 'TIMEOUT') {
|
|
50
|
+
parts.push(` <message>Prompt hydration did not complete within ${(deadlineMs / 1000).toFixed(1)}s. ` +
|
|
51
|
+
`External data sources (APIs, databases) did not respond within the deadline.</message>`);
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
parts.push(` <message>Prompt hydration failed: ${errorMessage ?? 'Unknown error'}.</message>`);
|
|
55
|
+
}
|
|
56
|
+
parts.push(' <guidance>Proceed with the conversation using available context. ' +
|
|
57
|
+
'The user\'s request is still valid — answer with your general knowledge ' +
|
|
58
|
+
'and inform the user that live data could not be fetched at this time. ' +
|
|
59
|
+
'Do NOT retry the same prompt automatically.</guidance>');
|
|
60
|
+
parts.push('</hydration_alert>');
|
|
61
|
+
return parts.join('\n');
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Wrap a hydration alert as a valid `PromptResult`.
|
|
65
|
+
*
|
|
66
|
+
* Returns a single `user` message with the XML alert.
|
|
67
|
+
* MCP `PromptMessage` only supports `user`|`assistant` roles.
|
|
68
|
+
*/
|
|
69
|
+
function alertAsPromptResult(status, deadlineMs, errorMessage) {
|
|
70
|
+
return {
|
|
71
|
+
messages: [{
|
|
72
|
+
role: 'user',
|
|
73
|
+
content: {
|
|
74
|
+
type: 'text',
|
|
75
|
+
text: formatHydrationAlert(status, deadlineMs, errorMessage),
|
|
76
|
+
},
|
|
77
|
+
}],
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// ── Sandbox Execution ────────────────────────────────────
|
|
81
|
+
/**
|
|
82
|
+
* Execute a prompt hydration function within a strict deadline.
|
|
83
|
+
*
|
|
84
|
+
* Uses `Promise.race` between the handler and a timeout promise.
|
|
85
|
+
* Three scenarios:
|
|
86
|
+
*
|
|
87
|
+
* 1. **Handler wins** (completes before deadline) → returns result
|
|
88
|
+
* 2. **Deadline wins** (handler too slow) → returns TIMEOUT alert
|
|
89
|
+
* 3. **Handler throws** (API error, crash) → returns ERROR alert
|
|
90
|
+
*
|
|
91
|
+
* In ALL cases, the caller receives a valid `PromptResult`.
|
|
92
|
+
* The UI never freezes. The user never sees `-32603`.
|
|
93
|
+
*
|
|
94
|
+
* @param fn - The prompt hydration function to execute
|
|
95
|
+
* @param deadlineMs - Maximum time in milliseconds (must be > 0)
|
|
96
|
+
* @returns Always returns a valid PromptResult
|
|
97
|
+
*/
|
|
98
|
+
export async function runWithHydrationDeadline(fn, deadlineMs) {
|
|
99
|
+
let timer;
|
|
100
|
+
// Deadline promise: resolves with TIMEOUT alert after deadline
|
|
101
|
+
const deadlinePromise = new Promise((resolve) => {
|
|
102
|
+
timer = setTimeout(() => {
|
|
103
|
+
resolve(alertAsPromptResult('TIMEOUT', deadlineMs));
|
|
104
|
+
}, deadlineMs);
|
|
105
|
+
});
|
|
106
|
+
// Handler promise: wraps fn() to catch errors → ERROR alert
|
|
107
|
+
const handlerPromise = fn().catch((err) => {
|
|
108
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
109
|
+
return alertAsPromptResult('ERROR', deadlineMs, message);
|
|
110
|
+
});
|
|
111
|
+
try {
|
|
112
|
+
// First to finish wins. UI unblocks immediately.
|
|
113
|
+
return await Promise.race([handlerPromise, deadlinePromise]);
|
|
114
|
+
}
|
|
115
|
+
finally {
|
|
116
|
+
// Always clean up the timer — prevents resource leaks
|
|
117
|
+
// and keeps Node.js from staying alive unnecessarily.
|
|
118
|
+
if (timer !== undefined)
|
|
119
|
+
clearTimeout(timer);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=HydrationSandbox.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HydrationSandbox.js","sourceRoot":"","sources":["../../src/prompt/HydrationSandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAAqB,MAAM,YAAY,CAAC;AAE/C,4DAA4D;AAE5D;;;;;;GAMG;AACH,SAAS,oBAAoB,CACzB,MAA2B,EAC3B,UAAkB,EAClB,YAAqB;IAErB,MAAM,KAAK,GAAa,CAAC,mBAAmB,CAAC,CAAC;IAE9C,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,WAAW,CAAC,CAAC;IAC3C,KAAK,CAAC,IAAI,CAAC,kBAAkB,UAAU,gBAAgB,CAAC,CAAC;IAEzD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACvB,KAAK,CAAC,IAAI,CACN,uDAAuD,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK;YAC1F,wFAAwF,CAC3F,CAAC;IACN,CAAC;SAAM,CAAC;QACJ,KAAK,CAAC,IAAI,CACN,uCAAuC,YAAY,IAAI,eAAe,aAAa,CACtF,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CACN,qEAAqE;QACrE,0EAA0E;QAC1E,wEAAwE;QACxE,wDAAwD,CAC3D,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IACjC,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,SAAS,mBAAmB,CACxB,MAA2B,EAC3B,UAAkB,EAClB,YAAqB;IAErB,OAAO;QACH,QAAQ,EAAE,CAAC;gBACP,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACL,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,YAAY,CAAC;iBAC/D;aACJ,CAAC;KACL,CAAC;AACN,CAAC;AAED,4DAA4D;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC1C,EAA+B,EAC/B,UAAkB;IAElB,IAAI,KAAgD,CAAC;IAErD,+DAA+D;IAC/D,MAAM,eAAe,GAAG,IAAI,OAAO,CAAe,CAAC,OAAO,EAAE,EAAE;QAC1D,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YACpB,OAAO,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC,CAAC;QACxD,CAAC,EAAE,UAAU,CAAC,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,4DAA4D;IAC5D,MAAM,cAAc,GAAG,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAgB,EAAE;QACpD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACD,iDAAiD;QACjD,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC;IACjE,CAAC;YAAS,CAAC;QACP,sDAAsD;QACtD,sDAAsD;QACtD,IAAI,KAAK,KAAK,SAAS;YAAE,YAAY,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PromptExecutionPipeline — Prompt Hydration Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Handles the complete lifecycle of a `prompts/get` request:
|
|
5
|
+
*
|
|
6
|
+
* 1. Schema-Informed Coercion (string → typed values)
|
|
7
|
+
* 2. Zod Validation (.strict() + coaching errors)
|
|
8
|
+
* 3. Middleware Chain execution
|
|
9
|
+
* 4. Handler invocation
|
|
10
|
+
*
|
|
11
|
+
* Key feature: **Schema-Informed Boundary Coercion**
|
|
12
|
+
* MCP transmits ALL prompt arguments as `Record<string, string>`.
|
|
13
|
+
* This module reads the Zod schema AST to determine expected types
|
|
14
|
+
* and coerces string values deterministically — no guessing.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import { type ZodObject, type ZodRawShape } from 'zod';
|
|
19
|
+
import { type PromptResult } from './types.js';
|
|
20
|
+
import { type MiddlewareFn } from '../core/types.js';
|
|
21
|
+
/**
|
|
22
|
+
* Assert that a Zod schema only contains flat primitive fields.
|
|
23
|
+
*
|
|
24
|
+
* Throws a descriptive error if any field uses arrays, objects,
|
|
25
|
+
* tuples, records, maps, or sets — types that MCP clients cannot
|
|
26
|
+
* render as visual form fields.
|
|
27
|
+
*
|
|
28
|
+
* Called at **definition time** (in `definePrompt()`) to fail fast
|
|
29
|
+
* and prevent runtime surprises.
|
|
30
|
+
*
|
|
31
|
+
* @param schema - The Zod schema to validate
|
|
32
|
+
* @throws Error with coaching message if nested types are found
|
|
33
|
+
*/
|
|
34
|
+
export declare function assertFlatSchema(schema: ZodObject<ZodRawShape>): void;
|
|
35
|
+
/**
|
|
36
|
+
* Schema-Informed Boundary Coercion.
|
|
37
|
+
*
|
|
38
|
+
* Reads the Zod schema AST to determine expected types,
|
|
39
|
+
* then coerces string values from the MCP wire format.
|
|
40
|
+
*
|
|
41
|
+
* This is NOT guessing. The coercion is derived from the
|
|
42
|
+
* developer's declared schema — it's deterministic.
|
|
43
|
+
*
|
|
44
|
+
* @param rawArgs - Raw string arguments from the MCP client
|
|
45
|
+
* @param zodSchema - The validated Zod schema for this prompt
|
|
46
|
+
* @returns Coerced argument values ready for Zod validation
|
|
47
|
+
*/
|
|
48
|
+
export declare function coercePromptArgs(rawArgs: Record<string, string>, zodSchema: ZodObject<ZodRawShape>): Record<string, unknown>;
|
|
49
|
+
/**
|
|
50
|
+
* Execute the full prompt hydration pipeline.
|
|
51
|
+
*
|
|
52
|
+
* Steps:
|
|
53
|
+
* 1. Coerce string args to typed values using schema AST
|
|
54
|
+
* 2. Validate with Zod (.strict() enforced)
|
|
55
|
+
* 3. Run middleware chain
|
|
56
|
+
* 4. Execute handler
|
|
57
|
+
*
|
|
58
|
+
* @returns Either a `PromptResult` or an error `PromptResult` with coaching
|
|
59
|
+
*/
|
|
60
|
+
export declare function executePromptPipeline<TContext>(ctx: TContext, rawArgs: Record<string, string>, schema: ZodObject<ZodRawShape> | undefined, middlewares: readonly MiddlewareFn<TContext>[], handler: (ctx: TContext, args: Record<string, unknown>) => Promise<PromptResult>): Promise<PromptResult>;
|
|
61
|
+
//# sourceMappingURL=PromptExecutionPipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptExecutionPipeline.d.ts","sourceRoot":"","sources":["../../src/prompt/PromptExecutionPipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAmB,MAAM,KAAK,CAAC;AACxE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAsCrD;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,IAAI,CAYrE;AAID;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,GAClC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiCzB;AA0BD;;;;;;;;;;GAUG;AACH,wBAAsB,qBAAqB,CAAC,QAAQ,EAChD,GAAG,EAAE,QAAQ,EACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,MAAM,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,SAAS,EAC1C,WAAW,EAAE,SAAS,YAAY,CAAC,QAAQ,CAAC,EAAE,EAC9C,OAAO,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,YAAY,CAAC,GACjF,OAAO,CAAC,YAAY,CAAC,CAgCvB"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PromptExecutionPipeline — Prompt Hydration Pipeline
|
|
3
|
+
*
|
|
4
|
+
* Handles the complete lifecycle of a `prompts/get` request:
|
|
5
|
+
*
|
|
6
|
+
* 1. Schema-Informed Coercion (string → typed values)
|
|
7
|
+
* 2. Zod Validation (.strict() + coaching errors)
|
|
8
|
+
* 3. Middleware Chain execution
|
|
9
|
+
* 4. Handler invocation
|
|
10
|
+
*
|
|
11
|
+
* Key feature: **Schema-Informed Boundary Coercion**
|
|
12
|
+
* MCP transmits ALL prompt arguments as `Record<string, string>`.
|
|
13
|
+
* This module reads the Zod schema AST to determine expected types
|
|
14
|
+
* and coerces string values deterministically — no guessing.
|
|
15
|
+
*
|
|
16
|
+
* @module
|
|
17
|
+
*/
|
|
18
|
+
import {} from 'zod';
|
|
19
|
+
import {} from './types.js';
|
|
20
|
+
import {} from '../core/types.js';
|
|
21
|
+
import { escapeXml, escapeXmlAttr } from '../core/response.js';
|
|
22
|
+
import { wrapChain } from '../core/execution/MiddlewareCompiler.js';
|
|
23
|
+
// ── Flat Schema Guard ────────────────────────────────────
|
|
24
|
+
/** Zod type names that are NOT allowed in prompt argument schemas */
|
|
25
|
+
const FORBIDDEN_ZOD_TYPES = new Set([
|
|
26
|
+
'ZodArray', 'ZodObject', 'ZodTuple', 'ZodRecord', 'ZodMap', 'ZodSet',
|
|
27
|
+
]);
|
|
28
|
+
/**
|
|
29
|
+
* Get the base Zod type name, unwrapping Optional/Default/Nullable wrappers.
|
|
30
|
+
* @internal
|
|
31
|
+
*/
|
|
32
|
+
function getZodBaseTypeName(schema) {
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
34
|
+
const def = schema._def;
|
|
35
|
+
if (def === undefined || def === null)
|
|
36
|
+
return 'Unknown';
|
|
37
|
+
const typeName = def.typeName ?? '';
|
|
38
|
+
// Unwrap Optional, Default, Nullable, Effects to find the inner type
|
|
39
|
+
if (typeName === 'ZodOptional' ||
|
|
40
|
+
typeName === 'ZodDefault' ||
|
|
41
|
+
typeName === 'ZodNullable') {
|
|
42
|
+
return getZodBaseTypeName(def.innerType);
|
|
43
|
+
}
|
|
44
|
+
if (typeName === 'ZodEffects') {
|
|
45
|
+
return getZodBaseTypeName(def.schema);
|
|
46
|
+
}
|
|
47
|
+
return typeName;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Assert that a Zod schema only contains flat primitive fields.
|
|
51
|
+
*
|
|
52
|
+
* Throws a descriptive error if any field uses arrays, objects,
|
|
53
|
+
* tuples, records, maps, or sets — types that MCP clients cannot
|
|
54
|
+
* render as visual form fields.
|
|
55
|
+
*
|
|
56
|
+
* Called at **definition time** (in `definePrompt()`) to fail fast
|
|
57
|
+
* and prevent runtime surprises.
|
|
58
|
+
*
|
|
59
|
+
* @param schema - The Zod schema to validate
|
|
60
|
+
* @throws Error with coaching message if nested types are found
|
|
61
|
+
*/
|
|
62
|
+
export function assertFlatSchema(schema) {
|
|
63
|
+
for (const [key, field] of Object.entries(schema.shape)) {
|
|
64
|
+
const typeName = getZodBaseTypeName(field);
|
|
65
|
+
if (FORBIDDEN_ZOD_TYPES.has(typeName)) {
|
|
66
|
+
throw new Error(`[definePrompt] Argument '${key}' uses type '${typeName}', which is not supported ` +
|
|
67
|
+
`in MCP prompt arguments. MCP clients render prompt args as visual forms — only ` +
|
|
68
|
+
`flat primitives (string, number, boolean, enum) are supported.\n` +
|
|
69
|
+
`💡 If you need complex data, fetch it server-side inside the handler instead.`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// ── Schema-Informed Coercion ─────────────────────────────
|
|
74
|
+
/**
|
|
75
|
+
* Schema-Informed Boundary Coercion.
|
|
76
|
+
*
|
|
77
|
+
* Reads the Zod schema AST to determine expected types,
|
|
78
|
+
* then coerces string values from the MCP wire format.
|
|
79
|
+
*
|
|
80
|
+
* This is NOT guessing. The coercion is derived from the
|
|
81
|
+
* developer's declared schema — it's deterministic.
|
|
82
|
+
*
|
|
83
|
+
* @param rawArgs - Raw string arguments from the MCP client
|
|
84
|
+
* @param zodSchema - The validated Zod schema for this prompt
|
|
85
|
+
* @returns Coerced argument values ready for Zod validation
|
|
86
|
+
*/
|
|
87
|
+
export function coercePromptArgs(rawArgs, zodSchema) {
|
|
88
|
+
const coerced = {};
|
|
89
|
+
const shape = zodSchema.shape;
|
|
90
|
+
for (const [key, value] of Object.entries(rawArgs)) {
|
|
91
|
+
const fieldSchema = shape[key];
|
|
92
|
+
if (!fieldSchema) {
|
|
93
|
+
// Unknown field — pass through, let Zod .strict() reject it
|
|
94
|
+
coerced[key] = value;
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
const typeName = getZodBaseTypeName(fieldSchema);
|
|
98
|
+
switch (typeName) {
|
|
99
|
+
case 'ZodBoolean':
|
|
100
|
+
coerced[key] = typeof value === 'string'
|
|
101
|
+
? value.toLowerCase() === 'true' || value === '1'
|
|
102
|
+
: Boolean(value);
|
|
103
|
+
break;
|
|
104
|
+
case 'ZodNumber':
|
|
105
|
+
if (value === '')
|
|
106
|
+
break; // leave missing — let Zod reject
|
|
107
|
+
coerced[key] = Number(value);
|
|
108
|
+
break;
|
|
109
|
+
case 'ZodEnum':
|
|
110
|
+
case 'ZodString':
|
|
111
|
+
default:
|
|
112
|
+
coerced[key] = value;
|
|
113
|
+
break;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return coerced;
|
|
117
|
+
}
|
|
118
|
+
// ── Validation ───────────────────────────────────────────
|
|
119
|
+
/**
|
|
120
|
+
* Format a Zod validation error into a coaching prompt.
|
|
121
|
+
*
|
|
122
|
+
* Returns a human+LLM readable error that guides the agent
|
|
123
|
+
* (or the user via the MCP client) to correct the input.
|
|
124
|
+
*/
|
|
125
|
+
function formatPromptValidationError(issues) {
|
|
126
|
+
const parts = ['<validation_error>'];
|
|
127
|
+
for (const issue of issues) {
|
|
128
|
+
const field = issue.path.join('.') || '(root)';
|
|
129
|
+
parts.push(`<field name="${escapeXmlAttr(field)}">${escapeXml(issue.message)}</field>`);
|
|
130
|
+
}
|
|
131
|
+
parts.push('<recovery>Check the prompt definition for valid argument types and values.</recovery>');
|
|
132
|
+
parts.push('</validation_error>');
|
|
133
|
+
return parts.join('\n');
|
|
134
|
+
}
|
|
135
|
+
// ── Middleware ──────────────────────────────────────────
|
|
136
|
+
// Uses the canonical wrapChain from MiddlewareCompiler (DRY).
|
|
137
|
+
// ── Pipeline ─────────────────────────────────────────────
|
|
138
|
+
/**
|
|
139
|
+
* Execute the full prompt hydration pipeline.
|
|
140
|
+
*
|
|
141
|
+
* Steps:
|
|
142
|
+
* 1. Coerce string args to typed values using schema AST
|
|
143
|
+
* 2. Validate with Zod (.strict() enforced)
|
|
144
|
+
* 3. Run middleware chain
|
|
145
|
+
* 4. Execute handler
|
|
146
|
+
*
|
|
147
|
+
* @returns Either a `PromptResult` or an error `PromptResult` with coaching
|
|
148
|
+
*/
|
|
149
|
+
export async function executePromptPipeline(ctx, rawArgs, schema, middlewares, handler) {
|
|
150
|
+
// Step 1 + 2: Coerce and validate
|
|
151
|
+
let validatedArgs = rawArgs;
|
|
152
|
+
if (schema) {
|
|
153
|
+
const coerced = coercePromptArgs(rawArgs, schema);
|
|
154
|
+
const result = schema.strict().safeParse(coerced);
|
|
155
|
+
if (!result.success) {
|
|
156
|
+
// Return a validation error as a user message
|
|
157
|
+
return {
|
|
158
|
+
messages: [{
|
|
159
|
+
role: 'user',
|
|
160
|
+
content: {
|
|
161
|
+
type: 'text',
|
|
162
|
+
text: formatPromptValidationError(result.error.issues),
|
|
163
|
+
},
|
|
164
|
+
}],
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
validatedArgs = result.data;
|
|
168
|
+
}
|
|
169
|
+
// Step 3 + 4: Middleware chain → handler
|
|
170
|
+
if (middlewares.length > 0) {
|
|
171
|
+
const chain = wrapChain(handler, middlewares);
|
|
172
|
+
const result = await chain(ctx, validatedArgs);
|
|
173
|
+
return result;
|
|
174
|
+
}
|
|
175
|
+
return handler(ctx, validatedArgs);
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=PromptExecutionPipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PromptExecutionPipeline.js","sourceRoot":"","sources":["../../src/prompt/PromptExecutionPipeline.ts"],"names":[],"mappings":"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"}
|