@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,292 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TokenEconomics — Cognitive Overload Detection
|
|
3
|
+
*
|
|
4
|
+
* **Evolution 3: Token Economics**
|
|
5
|
+
*
|
|
6
|
+
* Profiles the token density and context spread of MCP tool
|
|
7
|
+
* responses to detect cognitive overload scenarios where the
|
|
8
|
+
* LLM's working memory is flooded by verbose tool output,
|
|
9
|
+
* evicting system rules and degrading reasoning quality.
|
|
10
|
+
*
|
|
11
|
+
* **Key insight**: An MCP tool that returns 50KB of JSON per
|
|
12
|
+
* call will rapidly exhaust the context window. If that output
|
|
13
|
+
* isn't constrained by `agentLimit` or `egressMaxBytes`, the
|
|
14
|
+
* system rules injected by the Presenter's `addRules()` will
|
|
15
|
+
* be pushed out of the LLM's attention window — silently
|
|
16
|
+
* degrading behavioral correctness.
|
|
17
|
+
*
|
|
18
|
+
* This module provides:
|
|
19
|
+
*
|
|
20
|
+
* 1. **Static analysis**: Estimate token density from Presenter
|
|
21
|
+
* schema and guardrail configuration (zero-cost at runtime).
|
|
22
|
+
*
|
|
23
|
+
* 2. **Runtime profiling**: Measure actual token counts of
|
|
24
|
+
* response blocks after Presenter rendering (opt-in).
|
|
25
|
+
*
|
|
26
|
+
* 3. **Overload classification**: Classify responses into
|
|
27
|
+
* risk levels based on configurable thresholds.
|
|
28
|
+
*
|
|
29
|
+
* 4. **Integration with BehaviorDigest**: Token economics risk
|
|
30
|
+
* level is part of the behavioral contract — changes to
|
|
31
|
+
* the token profile are tracked as contract deltas.
|
|
32
|
+
*
|
|
33
|
+
* Pure-function module for analysis; runtime profiling hooks
|
|
34
|
+
* are designed for zero-overhead when not configured.
|
|
35
|
+
*
|
|
36
|
+
* @module
|
|
37
|
+
*/
|
|
38
|
+
// ============================================================================
|
|
39
|
+
// Default Thresholds
|
|
40
|
+
// ============================================================================
|
|
41
|
+
const DEFAULT_THRESHOLDS = {
|
|
42
|
+
low: 1000,
|
|
43
|
+
medium: 4000,
|
|
44
|
+
high: 8000,
|
|
45
|
+
};
|
|
46
|
+
const DEFAULT_MAX_OVERHEAD_RATIO = 0.3;
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// Token Estimation
|
|
49
|
+
// ============================================================================
|
|
50
|
+
/**
|
|
51
|
+
* Estimate token count from a string using the ~4 chars/token heuristic.
|
|
52
|
+
*
|
|
53
|
+
* This is a fast approximation suitable for profiling. For precise
|
|
54
|
+
* token counting, use a tokenizer library (tiktoken, etc.).
|
|
55
|
+
*
|
|
56
|
+
* @param text - The text to estimate tokens for
|
|
57
|
+
* @returns Estimated token count
|
|
58
|
+
*/
|
|
59
|
+
export function estimateTokens(text) {
|
|
60
|
+
// GPT-family heuristic: ~4 characters per token for English
|
|
61
|
+
// JSON/code tends to be ~3.5 chars/token due to syntax characters
|
|
62
|
+
return Math.ceil(text.length / 3.5);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Estimate tokens for a content block structure (MCP response block).
|
|
66
|
+
*
|
|
67
|
+
* @param block - The content block with `type` and `text` fields
|
|
68
|
+
* @returns Block-level token profile
|
|
69
|
+
*/
|
|
70
|
+
export function profileBlock(block) {
|
|
71
|
+
const text = block.text ?? '';
|
|
72
|
+
const bytes = new TextEncoder().encode(text).byteLength;
|
|
73
|
+
const estimatedTokens = estimateTokens(text);
|
|
74
|
+
return {
|
|
75
|
+
type: block.type,
|
|
76
|
+
estimatedTokens,
|
|
77
|
+
bytes,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// Runtime Profiling
|
|
82
|
+
// ============================================================================
|
|
83
|
+
/**
|
|
84
|
+
* Profile a complete tool response for token economics.
|
|
85
|
+
*
|
|
86
|
+
* Analyzes all content blocks in a tool response to compute
|
|
87
|
+
* total token usage, overhead ratio, and risk classification.
|
|
88
|
+
*
|
|
89
|
+
* @param toolName - Name of the tool that produced the response
|
|
90
|
+
* @param actionKey - Action key (if applicable)
|
|
91
|
+
* @param blocks - Content blocks from the tool response
|
|
92
|
+
* @param overheadBlocks - Number of blocks that are overhead (rules, UI)
|
|
93
|
+
* @param config - Token economics configuration
|
|
94
|
+
* @returns Complete token analysis
|
|
95
|
+
*/
|
|
96
|
+
export function profileResponse(toolName, actionKey, blocks, overheadBlocks = 0, config = {}) {
|
|
97
|
+
const thresholds = resolveThresholds(config);
|
|
98
|
+
const blockProfiles = blocks.map(profileBlock);
|
|
99
|
+
const totalTokens = blockProfiles.reduce((sum, b) => sum + b.estimatedTokens, 0);
|
|
100
|
+
// Split tokens into overhead vs data
|
|
101
|
+
const overheadTokens = overheadBlocks > 0
|
|
102
|
+
? blockProfiles
|
|
103
|
+
.slice(-overheadBlocks)
|
|
104
|
+
.reduce((sum, b) => sum + b.estimatedTokens, 0)
|
|
105
|
+
: 0;
|
|
106
|
+
const dataTokens = totalTokens - overheadTokens;
|
|
107
|
+
// Bug #46 fix: when ALL blocks are overhead (dataTokens === 0),
|
|
108
|
+
// report Infinity instead of 0 to correctly trigger OVERHEAD WARNING
|
|
109
|
+
const overheadRatio = dataTokens > 0
|
|
110
|
+
? overheadTokens / dataTokens
|
|
111
|
+
: (overheadTokens > 0 ? Infinity : 0);
|
|
112
|
+
const risk = classifyRisk(totalTokens, thresholds);
|
|
113
|
+
const advisory = generateAdvisory(toolName, totalTokens, risk, overheadRatio, config);
|
|
114
|
+
return {
|
|
115
|
+
toolName,
|
|
116
|
+
actionKey,
|
|
117
|
+
estimatedTokens: totalTokens,
|
|
118
|
+
blockCount: blocks.length,
|
|
119
|
+
blocks: blockProfiles,
|
|
120
|
+
overheadTokens,
|
|
121
|
+
dataTokens,
|
|
122
|
+
overheadRatio,
|
|
123
|
+
risk,
|
|
124
|
+
advisory,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// ============================================================================
|
|
128
|
+
// Static Analysis
|
|
129
|
+
// ============================================================================
|
|
130
|
+
/**
|
|
131
|
+
* Compute a static token profile from Presenter metadata.
|
|
132
|
+
*
|
|
133
|
+
* This runs once at manifest compilation time and produces
|
|
134
|
+
* a zero-cost profile that estimates the worst-case token
|
|
135
|
+
* usage for a tool based on its schema and guardrail config.
|
|
136
|
+
*
|
|
137
|
+
* @param toolName - Tool name
|
|
138
|
+
* @param schemaKeys - Presenter schema field names
|
|
139
|
+
* @param agentLimitMax - Maximum items from agentLimit() config
|
|
140
|
+
* @param egressMaxBytes - Maximum bytes from egressMaxBytes() config
|
|
141
|
+
* @returns Static token profile with recommendations
|
|
142
|
+
*/
|
|
143
|
+
export function computeStaticProfile(toolName, schemaKeys, agentLimitMax, egressMaxBytes) {
|
|
144
|
+
// Estimate per-field token cost
|
|
145
|
+
const fieldBreakdown = schemaKeys.map(name => ({
|
|
146
|
+
name,
|
|
147
|
+
estimatedTokens: estimateFieldTokens(name),
|
|
148
|
+
isCollection: /(?:ids|keys|values|records|results|rows|elements|entries|tags|items|users|events|files|nodes|edges|logs|names|emails|roles)$/i.test(name) || name.toLowerCase().includes('list') || name.toLowerCase().includes('items'),
|
|
149
|
+
}));
|
|
150
|
+
// Base token cost: field names + structure + JSON overhead
|
|
151
|
+
const baseTokens = fieldBreakdown.reduce((sum, f) => sum + f.estimatedTokens, 0);
|
|
152
|
+
// Minimum: one item with all fields
|
|
153
|
+
const minTokens = baseTokens + 20; // JSON structure overhead
|
|
154
|
+
// Maximum: bounded by egressMaxBytes, agentLimit, or worst-case estimate
|
|
155
|
+
const { maxTokens, bounded } = computeBounds(baseTokens, agentLimitMax, egressMaxBytes);
|
|
156
|
+
const risk = classifyRisk(maxTokens, DEFAULT_THRESHOLDS);
|
|
157
|
+
const recommendations = buildRecommendations(toolName, bounded, risk, schemaKeys, agentLimitMax, fieldBreakdown);
|
|
158
|
+
return {
|
|
159
|
+
toolName,
|
|
160
|
+
minTokens,
|
|
161
|
+
maxTokens,
|
|
162
|
+
bounded,
|
|
163
|
+
fieldBreakdown,
|
|
164
|
+
risk,
|
|
165
|
+
recommendations,
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/**
|
|
169
|
+
* Aggregate static profiles into a server-level summary.
|
|
170
|
+
*
|
|
171
|
+
* @param profiles - All static profiles for the server
|
|
172
|
+
* @returns Server-level token economics summary
|
|
173
|
+
*/
|
|
174
|
+
export function aggregateProfiles(profiles) {
|
|
175
|
+
const totalMinTokens = profiles.reduce((sum, p) => sum + p.minTokens, 0);
|
|
176
|
+
const totalMaxTokens = profiles.reduce((sum, p) => sum + p.maxTokens, 0);
|
|
177
|
+
const unboundedTools = profiles.filter(p => !p.bounded);
|
|
178
|
+
const criticalTools = profiles.filter(p => p.risk === 'critical');
|
|
179
|
+
const highRiskTools = profiles.filter(p => p.risk === 'high');
|
|
180
|
+
const overallRisk = criticalTools.length > 0
|
|
181
|
+
? 'critical'
|
|
182
|
+
: highRiskTools.length > 0
|
|
183
|
+
? 'high'
|
|
184
|
+
: unboundedTools.length > 0
|
|
185
|
+
? 'medium'
|
|
186
|
+
: 'low';
|
|
187
|
+
return {
|
|
188
|
+
toolCount: profiles.length,
|
|
189
|
+
totalMinTokens,
|
|
190
|
+
totalMaxTokens,
|
|
191
|
+
unboundedToolCount: unboundedTools.length,
|
|
192
|
+
unboundedToolNames: unboundedTools.map(p => p.toolName),
|
|
193
|
+
overallRisk,
|
|
194
|
+
criticalToolNames: criticalTools.map(p => p.toolName),
|
|
195
|
+
recommendations: [
|
|
196
|
+
...criticalTools.flatMap(p => p.recommendations.map(r => `[${p.toolName}] ${r}`)),
|
|
197
|
+
...highRiskTools.flatMap(p => p.recommendations.map(r => `[${p.toolName}] ${r}`)),
|
|
198
|
+
],
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
// ============================================================================
|
|
202
|
+
// Internals
|
|
203
|
+
// ============================================================================
|
|
204
|
+
/**
|
|
205
|
+
* Classify token risk based on thresholds.
|
|
206
|
+
* @internal
|
|
207
|
+
*/
|
|
208
|
+
function classifyRisk(tokens, thresholds) {
|
|
209
|
+
if (tokens <= thresholds.low)
|
|
210
|
+
return 'low';
|
|
211
|
+
if (tokens <= thresholds.medium)
|
|
212
|
+
return 'medium';
|
|
213
|
+
if (tokens <= thresholds.high)
|
|
214
|
+
return 'high';
|
|
215
|
+
return 'critical';
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Resolve thresholds with defaults.
|
|
219
|
+
* @internal
|
|
220
|
+
*/
|
|
221
|
+
function resolveThresholds(config) {
|
|
222
|
+
return {
|
|
223
|
+
low: config.thresholds?.low ?? DEFAULT_THRESHOLDS.low,
|
|
224
|
+
medium: config.thresholds?.medium ?? DEFAULT_THRESHOLDS.medium,
|
|
225
|
+
high: config.thresholds?.high ?? DEFAULT_THRESHOLDS.high,
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/** Advisory templates keyed by risk level. @internal */
|
|
229
|
+
const ADVISORY_TEMPLATES = {
|
|
230
|
+
critical: (toolName, tokens) => `COGNITIVE OVERLOAD: Tool "${toolName}" response estimated at ${tokens} tokens. ` +
|
|
231
|
+
`This will consume significant context window space. Consider adding agentLimit() or egressMaxBytes().`,
|
|
232
|
+
high: (toolName, tokens) => `HIGH TOKEN DENSITY: Tool "${toolName}" response estimated at ${tokens} tokens. ` +
|
|
233
|
+
`Consider reducing response verbosity or adding pagination.`,
|
|
234
|
+
};
|
|
235
|
+
/**
|
|
236
|
+
* Generate advisory for elevated risk levels.
|
|
237
|
+
* @internal
|
|
238
|
+
*/
|
|
239
|
+
function generateAdvisory(toolName, tokens, risk, overheadRatio, config) {
|
|
240
|
+
const template = ADVISORY_TEMPLATES[risk];
|
|
241
|
+
if (template)
|
|
242
|
+
return template(toolName, tokens);
|
|
243
|
+
const maxRatio = config.maxOverheadRatio ?? DEFAULT_MAX_OVERHEAD_RATIO;
|
|
244
|
+
if (overheadRatio > maxRatio) {
|
|
245
|
+
return `OVERHEAD WARNING: Tool "${toolName}" has ${Math.round(overheadRatio * 100)}% overhead ratio. ` +
|
|
246
|
+
`System rules and UI decorators are consuming significant context.`;
|
|
247
|
+
}
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Compute upper bounds for token estimation.
|
|
252
|
+
* @internal
|
|
253
|
+
*/
|
|
254
|
+
function computeBounds(baseTokens, agentLimitMax, egressMaxBytes) {
|
|
255
|
+
// egressMaxBytes provides a hard ceiling
|
|
256
|
+
if (egressMaxBytes !== null)
|
|
257
|
+
return { maxTokens: Math.ceil(egressMaxBytes / 3.5), bounded: true };
|
|
258
|
+
// agentLimit bounds the collection size
|
|
259
|
+
if (agentLimitMax !== null)
|
|
260
|
+
return { maxTokens: baseTokens * agentLimitMax + 50, bounded: true };
|
|
261
|
+
// No bounds — worst-case estimate (100 items)
|
|
262
|
+
return { maxTokens: baseTokens * 100, bounded: false };
|
|
263
|
+
}
|
|
264
|
+
const RECOMMENDATION_RULES = [
|
|
265
|
+
{ predicate: (bounded) => !bounded, message: 'Add .agentLimit() to bound collection size' },
|
|
266
|
+
{ predicate: (_, risk) => risk === 'critical' || risk === 'high', message: 'Add .egressMaxBytes() to cap payload size' },
|
|
267
|
+
{ predicate: (_, __, hasUnbounded) => hasUnbounded, message: 'Collection fields detected without agentLimit — risk of context flooding' },
|
|
268
|
+
{ predicate: (_, __, ___, fieldCount) => fieldCount > 15, message: 'Consider reducing schema field count (>15 fields adds cognitive load)' },
|
|
269
|
+
];
|
|
270
|
+
/**
|
|
271
|
+
* Build recommendations based on profile characteristics.
|
|
272
|
+
* @internal
|
|
273
|
+
*/
|
|
274
|
+
function buildRecommendations(_toolName, bounded, risk, schemaKeys, agentLimitMax, fieldBreakdown) {
|
|
275
|
+
const hasUnboundedCollections = fieldBreakdown.some(f => f.isCollection) && agentLimitMax === null;
|
|
276
|
+
return RECOMMENDATION_RULES
|
|
277
|
+
.filter(rule => rule.predicate(bounded, risk, hasUnboundedCollections, schemaKeys.length))
|
|
278
|
+
.map(rule => rule.message);
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Estimate tokens for a single field name.
|
|
282
|
+
* Heuristic: field name tokens + value tokens (estimated from name length).
|
|
283
|
+
* @internal
|
|
284
|
+
*/
|
|
285
|
+
function estimateFieldTokens(fieldName) {
|
|
286
|
+
// Field name in JSON: "fieldName": → ~name.length/4 + 1
|
|
287
|
+
const nameTokens = Math.ceil(fieldName.length / 4) + 1;
|
|
288
|
+
// Value estimate: assume average 5 tokens per field value
|
|
289
|
+
const valueTokens = 5;
|
|
290
|
+
return nameTokens + valueTokens;
|
|
291
|
+
}
|
|
292
|
+
//# sourceMappingURL=TokenEconomics.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenEconomics.js","sourceRoot":"","sources":["../../src/introspection/TokenEconomics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolContract — Behavioral Contract Materialization
|
|
3
|
+
*
|
|
4
|
+
* Unifies the declarative surface (tool names, schemas, tags) with
|
|
5
|
+
* the behavioral contract (Presenter egress schema, system rules,
|
|
6
|
+
* cognitive guardrails, middleware chain, state-sync policies) into
|
|
7
|
+
* a single, serializable, diffable, hashable artifact.
|
|
8
|
+
*
|
|
9
|
+
* **Key insight**: Vurb's Presenter is not just a response
|
|
10
|
+
* formatter — it's a declarative behavioral specification. The Zod
|
|
11
|
+
* schema, system rules, agent limits, and affordances are all
|
|
12
|
+
* explicit, serializable contracts. By materializing them into a
|
|
13
|
+
* `ToolContract`, we create a fingerprint that changes when behavior
|
|
14
|
+
* changes — even if the MCP tool declaration stays identical.
|
|
15
|
+
*
|
|
16
|
+
* **Zero developer effort**: The contract materializes from what the
|
|
17
|
+
* developer has already declared. No annotations, no config, no
|
|
18
|
+
* ceremony — just `materializeContract(builder)`.
|
|
19
|
+
*
|
|
20
|
+
* Pure-function module: no state, no side effects.
|
|
21
|
+
*
|
|
22
|
+
* @module
|
|
23
|
+
*/
|
|
24
|
+
import { type ToolBuilder } from '../core/types.js';
|
|
25
|
+
/**
|
|
26
|
+
* Complete behavioral contract for a single tool.
|
|
27
|
+
*
|
|
28
|
+
* Captures both the MCP-visible surface (schema, description) and
|
|
29
|
+
* the behavioral internals (Presenter egress, rules, guardrails,
|
|
30
|
+
* middleware, state-sync, concurrency).
|
|
31
|
+
*/
|
|
32
|
+
export interface ToolContract {
|
|
33
|
+
/** Declarative surface visible via MCP `tools/list` */
|
|
34
|
+
readonly surface: ToolSurface;
|
|
35
|
+
/** Behavioral contract extracted from runtime primitives */
|
|
36
|
+
readonly behavior: ToolBehavior;
|
|
37
|
+
/** Token economics profile for cognitive overload detection */
|
|
38
|
+
readonly tokenEconomics: TokenEconomicsProfile;
|
|
39
|
+
/** Handler entitlements from static analysis */
|
|
40
|
+
readonly entitlements: HandlerEntitlements;
|
|
41
|
+
}
|
|
42
|
+
/** Declarative surface — what `tools/list` exposes */
|
|
43
|
+
export interface ToolSurface {
|
|
44
|
+
/** Tool name */
|
|
45
|
+
readonly name: string;
|
|
46
|
+
/** Tool description */
|
|
47
|
+
readonly description: string | undefined;
|
|
48
|
+
/** Tags for selective exposure */
|
|
49
|
+
readonly tags: readonly string[];
|
|
50
|
+
/** Per-action contracts */
|
|
51
|
+
readonly actions: Record<string, ActionContract>;
|
|
52
|
+
/** SHA-256 of canonical JSON Schema */
|
|
53
|
+
readonly inputSchemaDigest: string;
|
|
54
|
+
}
|
|
55
|
+
/** Per-action behavioral contract */
|
|
56
|
+
export interface ActionContract {
|
|
57
|
+
/** Human-readable description */
|
|
58
|
+
readonly description: string | undefined;
|
|
59
|
+
/** Whether this action is destructive */
|
|
60
|
+
readonly destructive: boolean;
|
|
61
|
+
/** Whether this action is idempotent */
|
|
62
|
+
readonly idempotent: boolean;
|
|
63
|
+
/** Whether this action is read-only */
|
|
64
|
+
readonly readOnly: boolean;
|
|
65
|
+
/** Required field names */
|
|
66
|
+
readonly requiredFields: readonly string[];
|
|
67
|
+
/** Presenter name (if MVA pattern is used) */
|
|
68
|
+
readonly presenterName: string | undefined;
|
|
69
|
+
/** SHA-256 of action-level input schema */
|
|
70
|
+
readonly inputSchemaDigest: string;
|
|
71
|
+
/** Whether the action has per-action middleware */
|
|
72
|
+
readonly hasMiddleware: boolean;
|
|
73
|
+
}
|
|
74
|
+
/** Behavioral contract — internal runtime guarantees */
|
|
75
|
+
export interface ToolBehavior {
|
|
76
|
+
/** SHA-256 of Presenter's Zod schema shape (field names + types) */
|
|
77
|
+
readonly egressSchemaDigest: string | null;
|
|
78
|
+
/**
|
|
79
|
+
* Fingerprint of system rules configuration.
|
|
80
|
+
* Static rules: SHA-256 of sorted rule strings.
|
|
81
|
+
* Dynamic rules: `"dynamic:<function-hash>"`.
|
|
82
|
+
*/
|
|
83
|
+
readonly systemRulesFingerprint: string;
|
|
84
|
+
/** Cognitive guardrail configuration */
|
|
85
|
+
readonly cognitiveGuardrails: CognitiveGuardrailsContract;
|
|
86
|
+
/** Middleware chain identity */
|
|
87
|
+
readonly middlewareChain: readonly string[];
|
|
88
|
+
/** State sync policy fingerprint */
|
|
89
|
+
readonly stateSyncFingerprint: string | null;
|
|
90
|
+
/** Concurrency configuration fingerprint */
|
|
91
|
+
readonly concurrencyFingerprint: string | null;
|
|
92
|
+
/** Affordance topology — tool names from suggestActions */
|
|
93
|
+
readonly affordanceTopology: readonly string[];
|
|
94
|
+
/** Embedded child Presenter names */
|
|
95
|
+
readonly embeddedPresenters: readonly string[];
|
|
96
|
+
}
|
|
97
|
+
/** Cognitive guardrails configuration snapshot */
|
|
98
|
+
export interface CognitiveGuardrailsContract {
|
|
99
|
+
/** Maximum items before truncation (from Presenter) */
|
|
100
|
+
readonly agentLimitMax: number | null;
|
|
101
|
+
/** Maximum egress payload bytes (from builder) */
|
|
102
|
+
readonly egressMaxBytes: number | null;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Token economics profile for cognitive overload detection.
|
|
106
|
+
*
|
|
107
|
+
* Captures the expected token density of a tool's responses
|
|
108
|
+
* to detect context inflation that would evict system rules
|
|
109
|
+
* from the LLM's working memory.
|
|
110
|
+
*/
|
|
111
|
+
export interface TokenEconomicsProfile {
|
|
112
|
+
/** Estimated tokens per field in the egress schema */
|
|
113
|
+
readonly schemaFieldCount: number;
|
|
114
|
+
/** Whether collections may be unbounded (no agentLimit) */
|
|
115
|
+
readonly unboundedCollection: boolean;
|
|
116
|
+
/** Estimated base token overhead (rules + UI + affordances) */
|
|
117
|
+
readonly baseOverheadTokens: number;
|
|
118
|
+
/** Risk level based on configuration */
|
|
119
|
+
readonly inflationRisk: 'low' | 'medium' | 'high' | 'critical';
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Handler entitlements derived from static analysis.
|
|
123
|
+
*
|
|
124
|
+
* Tracks I/O capabilities that the handler accesses, forming
|
|
125
|
+
* a security contract. If a read-only tool suddenly imports
|
|
126
|
+
* `fs.writeFileSync`, the entitlement contract breaks.
|
|
127
|
+
*/
|
|
128
|
+
export interface HandlerEntitlements {
|
|
129
|
+
/** Whether any handler references filesystem APIs */
|
|
130
|
+
readonly filesystem: boolean;
|
|
131
|
+
/** Whether any handler references network/fetch APIs */
|
|
132
|
+
readonly network: boolean;
|
|
133
|
+
/** Whether any handler references child_process/exec APIs */
|
|
134
|
+
readonly subprocess: boolean;
|
|
135
|
+
/** Whether any handler references crypto/signing APIs */
|
|
136
|
+
readonly crypto: boolean;
|
|
137
|
+
/** Whether any handler uses dynamic code evaluation (eval, Function, vm) */
|
|
138
|
+
readonly codeEvaluation: boolean;
|
|
139
|
+
/** Raw entitlement identifiers for granular diff */
|
|
140
|
+
readonly raw: readonly string[];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Materialize a `ToolContract` from a builder's public API.
|
|
144
|
+
*
|
|
145
|
+
* Extracts all behavioral metadata from the builder's introspection
|
|
146
|
+
* methods without accessing any private internals. This guarantees
|
|
147
|
+
* compatibility with any `ToolBuilder` implementation.
|
|
148
|
+
*
|
|
149
|
+
* @param builder - A registered tool builder
|
|
150
|
+
* @returns A fully materialized `ToolContract`
|
|
151
|
+
*/
|
|
152
|
+
export declare function materializeContract<TContext>(builder: ToolBuilder<TContext>): Promise<ToolContract>;
|
|
153
|
+
/**
|
|
154
|
+
* Compile contracts for all tools in a registry.
|
|
155
|
+
*
|
|
156
|
+
* @param builders - Iterable of all registered tool builders
|
|
157
|
+
* @returns Record mapping tool names to their materialized contracts
|
|
158
|
+
*/
|
|
159
|
+
export declare function compileContracts<TContext>(builders: Iterable<ToolBuilder<TContext>>): Promise<Record<string, ToolContract>>;
|
|
160
|
+
export { sha256, canonicalize } from './canonicalize.js';
|
|
161
|
+
//# sourceMappingURL=ToolContract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToolContract.d.ts","sourceRoot":"","sources":["../../src/introspection/ToolContract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQpD;;;;;;GAMG;AACH,MAAM,WAAW,YAAY;IACzB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,4DAA4D;IAC5D,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,+DAA+D;IAC/D,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IAC/C,gDAAgD;IAChD,QAAQ,CAAC,YAAY,EAAE,mBAAmB,CAAC;CAC9C;AAED,sDAAsD;AACtD,MAAM,WAAW,WAAW;IACxB,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,uBAAuB;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,kCAAkC;IAClC,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,2BAA2B;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjD,uCAAuC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACtC;AAED,qCAAqC;AACrC,MAAM,WAAW,cAAc;IAC3B,iCAAiC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,yCAAyC;IACzC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;IAC9B,wCAAwC;IACxC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,uCAAuC;IACvC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,2BAA2B;IAC3B,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,8CAA8C;IAC9C,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,2CAA2C;IAC3C,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,mDAAmD;IACnD,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC;CACnC;AAED,wDAAwD;AACxD,MAAM,WAAW,YAAY;IACzB,oEAAoE;IACpE,QAAQ,CAAC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3C;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,wCAAwC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,2BAA2B,CAAC;IAC1D,gCAAgC;IAChC,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,oCAAoC;IACpC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7C,4CAA4C;IAC5C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/C,2DAA2D;IAC3D,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,qCAAqC;IACrC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;CAClD;AAED,kDAAkD;AAClD,MAAM,WAAW,2BAA2B;IACxC,uDAAuD;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,kDAAkD;IAClD,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IAClC,sDAAsD;IACtD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,2DAA2D;IAC3D,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,+DAA+D;IAC/D,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,wCAAwC;IACxC,QAAQ,CAAC,aAAa,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;CAClE;AAED;;;;;;GAMG;AACH,MAAM,WAAW,mBAAmB;IAChC,qDAAqD;IACrD,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,wDAAwD;IACxD,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,6DAA6D;IAC7D,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,yDAAyD;IACzD,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,oDAAoD;IACpD,QAAQ,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAMD;;;;;;;;;GASG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAC9C,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,GAC/B,OAAO,CAAC,YAAY,CAAC,CA0DvB;AAuHD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAC3C,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,GAC1C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAOvC;AAkBD,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|