@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,463 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TelemetryBus — Shadow Socket IPC Server
|
|
3
|
+
*
|
|
4
|
+
* Fire-and-forget out-of-band telemetry transport. Creates a Named Pipe
|
|
5
|
+
* (Windows) or Unix Domain Socket (POSIX) that streams NDJSON events
|
|
6
|
+
* to connected `vurb top` / `inspector` TUI clients.
|
|
7
|
+
*
|
|
8
|
+
* Architecture:
|
|
9
|
+
* ┌─────────────────────────────────────────────────────┐
|
|
10
|
+
* │ MCP Server Process (owns the IPC server) │
|
|
11
|
+
* │ │
|
|
12
|
+
* │ createTelemetryBus() │
|
|
13
|
+
* │ │ │
|
|
14
|
+
* │ ▼ │
|
|
15
|
+
* │ net.createServer() → Named Pipe / Unix Socket │
|
|
16
|
+
* │ │ │
|
|
17
|
+
* │ ▼ │
|
|
18
|
+
* │ emit(event) → NDJSON → broadcast to all clients │
|
|
19
|
+
* │ │ │
|
|
20
|
+
* │ └─ If 0 clients → silent no-op (zero overhead) │
|
|
21
|
+
* └─────────────────────────────────────────────────────┘
|
|
22
|
+
*
|
|
23
|
+
* Security mitigations (Staff Engineer Gotchas):
|
|
24
|
+
* 1. chmod 0o600 on Unix sockets (prevents PII sniffing)
|
|
25
|
+
* 2. Ghost socket recovery (stale file → probe → unlink)
|
|
26
|
+
* 3. Backpressure: slow clients disconnected at 64KB buffer
|
|
27
|
+
* 4. Clean shutdown on process exit / SIGTERM
|
|
28
|
+
*
|
|
29
|
+
* @module
|
|
30
|
+
*/
|
|
31
|
+
import { createServer, connect } from 'node:net';
|
|
32
|
+
import { existsSync, unlinkSync, chmodSync, statSync, mkdirSync, writeFileSync, readdirSync, readFileSync } from 'node:fs';
|
|
33
|
+
import { platform, tmpdir } from 'node:os';
|
|
34
|
+
import { join } from 'node:path';
|
|
35
|
+
import { createHash } from 'node:crypto';
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Constants
|
|
38
|
+
// ============================================================================
|
|
39
|
+
/** Maximum write buffer per client before forced disconnect */
|
|
40
|
+
const MAX_CLIENT_BUFFER_BYTES = 65_536; // 64KB
|
|
41
|
+
/** Heartbeat interval in milliseconds */
|
|
42
|
+
const HEARTBEAT_INTERVAL_MS = 5_000;
|
|
43
|
+
/** Registry directory for cross-platform server discovery */
|
|
44
|
+
const REGISTRY_DIR = join(tmpdir(), 'vurb-registry');
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// Path Convention — Deterministic Socket Paths
|
|
47
|
+
// ============================================================================
|
|
48
|
+
/**
|
|
49
|
+
* Compute a deterministic fingerprint from `process.cwd()`.
|
|
50
|
+
*
|
|
51
|
+
* The fingerprint is a 12-char hex string (SHA-256 truncated),
|
|
52
|
+
* stable across server restarts for the same project directory.
|
|
53
|
+
* This enables the Inspector TUI to automatically reconnect
|
|
54
|
+
* when the server process restarts with a new PID.
|
|
55
|
+
*
|
|
56
|
+
* @returns 12-character hex fingerprint
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
function cwdFingerprint() {
|
|
60
|
+
return createHash('sha256').update(process.cwd()).digest('hex').slice(0, 12);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Compute the IPC path for the telemetry socket.
|
|
64
|
+
*
|
|
65
|
+
* Uses a deterministic fingerprint based on `process.cwd()` so the
|
|
66
|
+
* socket path remains stable across server restarts. This enables
|
|
67
|
+
* the Inspector TUI to reconnect automatically without PID tracking.
|
|
68
|
+
*
|
|
69
|
+
* - Windows: `\\.\pipe\vurb-{fingerprint}` (Named Pipe, auto-cleaned by OS)
|
|
70
|
+
* - POSIX: `/tmp/vurb-{fingerprint}.sock` (Unix Domain Socket)
|
|
71
|
+
*
|
|
72
|
+
* @param fingerprint - Custom fingerprint (defaults to SHA-256 of cwd)
|
|
73
|
+
* @returns The IPC path string
|
|
74
|
+
*/
|
|
75
|
+
export function getTelemetryPath(fingerprint) {
|
|
76
|
+
const id = fingerprint ?? cwdFingerprint();
|
|
77
|
+
if (platform() === 'win32') {
|
|
78
|
+
return `\\\\.\\pipe\\vurb-${id}`;
|
|
79
|
+
}
|
|
80
|
+
return `/tmp/vurb-${id}.sock`;
|
|
81
|
+
}
|
|
82
|
+
// ============================================================================
|
|
83
|
+
// Registry File Helpers (Cross-Platform Discovery)
|
|
84
|
+
// ============================================================================
|
|
85
|
+
/**
|
|
86
|
+
* Write a registry marker file so `discoverSockets()` can find this server.
|
|
87
|
+
* Creates `{REGISTRY_DIR}/{pid}.json` with metadata.
|
|
88
|
+
*
|
|
89
|
+
* @param pid - Process ID
|
|
90
|
+
* @param serverName - Optional server name for display
|
|
91
|
+
* @internal
|
|
92
|
+
*/
|
|
93
|
+
function writeRegistryFile(pid, serverName) {
|
|
94
|
+
try {
|
|
95
|
+
mkdirSync(REGISTRY_DIR, { recursive: true });
|
|
96
|
+
const data = JSON.stringify({
|
|
97
|
+
pid,
|
|
98
|
+
path: getTelemetryPath(),
|
|
99
|
+
name: serverName,
|
|
100
|
+
cwd: process.cwd(),
|
|
101
|
+
startedAt: Date.now(),
|
|
102
|
+
});
|
|
103
|
+
writeFileSync(join(REGISTRY_DIR, `${pid}.json`), data, 'utf8');
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Non-fatal — discovery won't work but server still runs
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Remove the registry marker file for a given PID.
|
|
111
|
+
* @internal
|
|
112
|
+
*/
|
|
113
|
+
function removeRegistryFile(pid) {
|
|
114
|
+
try {
|
|
115
|
+
unlinkSync(join(REGISTRY_DIR, `${pid}.json`));
|
|
116
|
+
}
|
|
117
|
+
catch {
|
|
118
|
+
// File may not exist — ignore
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Check if a process is still alive using signal 0 (probes without killing).
|
|
123
|
+
* Works cross-platform (Windows, Mac, Linux).
|
|
124
|
+
*
|
|
125
|
+
* @param pid - Process ID to check
|
|
126
|
+
* @returns `true` if the process exists, `false` if it's dead
|
|
127
|
+
* @internal
|
|
128
|
+
*/
|
|
129
|
+
function isProcessAlive(pid) {
|
|
130
|
+
try {
|
|
131
|
+
process.kill(pid, 0); // Signal 0 = existence check, doesn't kill
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
return false; // ESRCH — process does not exist
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Discover active telemetry sockets by scanning the registry directory.
|
|
140
|
+
* Works on Windows, Mac, and Linux.
|
|
141
|
+
*
|
|
142
|
+
* Reads `{REGISTRY_DIR}/*.json` marker files written by running servers.
|
|
143
|
+
* Each file contains `{ pid, path }`. Stale files from crashed processes
|
|
144
|
+
* (e.g. SIGKILL where cleanup handlers never run) are detected via PID
|
|
145
|
+
* probing and automatically cleaned up.
|
|
146
|
+
*
|
|
147
|
+
* @returns Array of discovered sockets with their PIDs
|
|
148
|
+
*/
|
|
149
|
+
export function discoverSockets() {
|
|
150
|
+
const results = [];
|
|
151
|
+
// ── Primary: scan registry directory (all platforms) ────
|
|
152
|
+
try {
|
|
153
|
+
const files = readdirSync(REGISTRY_DIR);
|
|
154
|
+
for (const file of files) {
|
|
155
|
+
const match = file.match(/^(\d+)\.json$/);
|
|
156
|
+
if (!match)
|
|
157
|
+
continue;
|
|
158
|
+
try {
|
|
159
|
+
const raw = readFileSync(join(REGISTRY_DIR, file), 'utf8');
|
|
160
|
+
const entry = JSON.parse(raw);
|
|
161
|
+
// ── Stale PID check ──────────────────────────
|
|
162
|
+
// If the process is dead (e.g. SIGKILL'd), the registry
|
|
163
|
+
// file is orphaned — remove it and skip.
|
|
164
|
+
if (!isProcessAlive(entry.pid)) {
|
|
165
|
+
try {
|
|
166
|
+
unlinkSync(join(REGISTRY_DIR, file));
|
|
167
|
+
}
|
|
168
|
+
catch { /* ignore */ }
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
results.push({ pid: entry.pid, path: entry.path, ...(entry.cwd ? { cwd: entry.cwd } : {}) });
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
// Corrupted file — clean up
|
|
175
|
+
try {
|
|
176
|
+
unlinkSync(join(REGISTRY_DIR, file));
|
|
177
|
+
}
|
|
178
|
+
catch { /* ignore */ }
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
// Registry dir doesn't exist yet — no servers registered
|
|
184
|
+
}
|
|
185
|
+
// ── Fallback: POSIX socket scan (backward compat) ──────
|
|
186
|
+
// Matches both legacy PID-based and new fingerprint-based sockets
|
|
187
|
+
if (platform() !== 'win32' && results.length === 0) {
|
|
188
|
+
try {
|
|
189
|
+
const files = readdirSync('/tmp');
|
|
190
|
+
for (const file of files) {
|
|
191
|
+
const match = file.match(/^vurb-([a-f0-9]+)\.sock$/);
|
|
192
|
+
if (match) {
|
|
193
|
+
const idStr = match[1];
|
|
194
|
+
const pid = /^\d+$/.test(idStr) ? parseInt(idStr, 10) : 0;
|
|
195
|
+
// For PID-based sockets, check if alive; for hash-based, always include
|
|
196
|
+
if (pid > 0 && !isProcessAlive(pid))
|
|
197
|
+
continue;
|
|
198
|
+
results.push({ pid, path: `/tmp/${file}` });
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch { /* ignore */ }
|
|
203
|
+
}
|
|
204
|
+
return results;
|
|
205
|
+
}
|
|
206
|
+
// ============================================================================
|
|
207
|
+
// Ghost Socket Recovery (Gotcha #2)
|
|
208
|
+
// ============================================================================
|
|
209
|
+
/**
|
|
210
|
+
* Check if a socket file is a "ghost" (stale, left by a crashed process).
|
|
211
|
+
*
|
|
212
|
+
* Attempts a dummy connection. If `ECONNREFUSED`, the socket is stale
|
|
213
|
+
* and safe to unlink. If the connection succeeds, it's alive — don't touch it.
|
|
214
|
+
*
|
|
215
|
+
* @param socketPath - Path to the Unix socket file
|
|
216
|
+
* @returns Promise that resolves to `true` if the ghost was cleaned up
|
|
217
|
+
* @internal
|
|
218
|
+
*/
|
|
219
|
+
function cleanGhostSocket(socketPath) {
|
|
220
|
+
return new Promise((resolve) => {
|
|
221
|
+
// On Windows, Named Pipes are auto-cleaned — skip
|
|
222
|
+
if (platform() === 'win32') {
|
|
223
|
+
resolve(false);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
if (!existsSync(socketPath)) {
|
|
227
|
+
resolve(false);
|
|
228
|
+
return;
|
|
229
|
+
}
|
|
230
|
+
// Verify it's actually a socket file, not a regular file
|
|
231
|
+
try {
|
|
232
|
+
const stats = statSync(socketPath);
|
|
233
|
+
if (!stats.isSocket()) {
|
|
234
|
+
// Not a socket — don't touch it
|
|
235
|
+
resolve(false);
|
|
236
|
+
return;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
catch {
|
|
240
|
+
resolve(false);
|
|
241
|
+
return;
|
|
242
|
+
}
|
|
243
|
+
// Probe with a dummy client connection
|
|
244
|
+
const probe = connect(socketPath);
|
|
245
|
+
const timeout = setTimeout(() => {
|
|
246
|
+
// Connection hanging — assume ghost, clean up
|
|
247
|
+
probe.destroy();
|
|
248
|
+
try {
|
|
249
|
+
unlinkSync(socketPath);
|
|
250
|
+
}
|
|
251
|
+
catch { /* ignore */ }
|
|
252
|
+
resolve(true);
|
|
253
|
+
}, 500);
|
|
254
|
+
probe.on('connect', () => {
|
|
255
|
+
// Socket is alive — another server is using it!
|
|
256
|
+
clearTimeout(timeout);
|
|
257
|
+
probe.destroy();
|
|
258
|
+
resolve(false);
|
|
259
|
+
});
|
|
260
|
+
probe.on('error', (err) => {
|
|
261
|
+
clearTimeout(timeout);
|
|
262
|
+
probe.destroy();
|
|
263
|
+
if (err.code === 'ECONNREFUSED') {
|
|
264
|
+
// Ghost socket — safe to remove
|
|
265
|
+
try {
|
|
266
|
+
unlinkSync(socketPath);
|
|
267
|
+
}
|
|
268
|
+
catch { /* ignore */ }
|
|
269
|
+
resolve(true);
|
|
270
|
+
}
|
|
271
|
+
resolve(false);
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Create an out-of-band telemetry bus for Vurb.
|
|
277
|
+
*
|
|
278
|
+
* The returned `emit` function is the {@link TelemetrySink} to pass
|
|
279
|
+
* to `AttachOptions.telemetry`. It broadcasts events as NDJSON
|
|
280
|
+
* to all connected TUI clients via IPC.
|
|
281
|
+
*
|
|
282
|
+
* When no clients are connected, `emit()` is a no-op — zero overhead.
|
|
283
|
+
*
|
|
284
|
+
* @param config - Optional configuration
|
|
285
|
+
* @returns A promise that resolves to the running bus instance
|
|
286
|
+
*
|
|
287
|
+
* @example
|
|
288
|
+
* ```typescript
|
|
289
|
+
* import { createTelemetryBus } from 'vurb/observability';
|
|
290
|
+
*
|
|
291
|
+
* const bus = await createTelemetryBus();
|
|
292
|
+
*
|
|
293
|
+
* // Pass to server attachment
|
|
294
|
+
* registry.attachToServer(server, {
|
|
295
|
+
* contextFactory: createContext,
|
|
296
|
+
* telemetry: bus.emit,
|
|
297
|
+
* });
|
|
298
|
+
*
|
|
299
|
+
* // On shutdown
|
|
300
|
+
* await bus.close();
|
|
301
|
+
* ```
|
|
302
|
+
*/
|
|
303
|
+
export async function createTelemetryBus(config) {
|
|
304
|
+
const socketPath = config?.path ?? getTelemetryPath();
|
|
305
|
+
const clients = new Set();
|
|
306
|
+
// ── Gotcha #2: Ghost Socket Recovery ──────────────────
|
|
307
|
+
await cleanGhostSocket(socketPath);
|
|
308
|
+
// ── Create IPC Server ─────────────────────────────────
|
|
309
|
+
const server = createServer((client) => {
|
|
310
|
+
clients.add(client);
|
|
311
|
+
// Send initial topology snapshot if available
|
|
312
|
+
if (config?.onConnect) {
|
|
313
|
+
const topology = config.onConnect();
|
|
314
|
+
if (topology) {
|
|
315
|
+
try {
|
|
316
|
+
client.write(JSON.stringify(topology) + '\n');
|
|
317
|
+
}
|
|
318
|
+
catch { /* swallow */ }
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
client.on('error', () => {
|
|
322
|
+
clients.delete(client);
|
|
323
|
+
});
|
|
324
|
+
client.on('close', () => {
|
|
325
|
+
clients.delete(client);
|
|
326
|
+
});
|
|
327
|
+
});
|
|
328
|
+
// ── Start Listening ───────────────────────────────────
|
|
329
|
+
await new Promise((resolve, reject) => {
|
|
330
|
+
server.once('error', (err) => {
|
|
331
|
+
if (err.code === 'EADDRINUSE') {
|
|
332
|
+
// On POSIX: unlink stale socket file and retry.
|
|
333
|
+
// On Windows: Named Pipes can't be unlinked — just retry
|
|
334
|
+
// (the OS will reclaim the pipe name if the owner is dead).
|
|
335
|
+
try {
|
|
336
|
+
unlinkSync(socketPath);
|
|
337
|
+
}
|
|
338
|
+
catch { /* ignore on Windows */ }
|
|
339
|
+
server.once('error', (retryErr) => reject(retryErr));
|
|
340
|
+
server.listen(socketPath, () => resolve());
|
|
341
|
+
}
|
|
342
|
+
else {
|
|
343
|
+
reject(err);
|
|
344
|
+
}
|
|
345
|
+
});
|
|
346
|
+
server.listen(socketPath, () => resolve());
|
|
347
|
+
});
|
|
348
|
+
// ── Registry: announce this server for auto-discovery ──
|
|
349
|
+
writeRegistryFile(process.pid, config?.path ? undefined : 'vurb');
|
|
350
|
+
// ── Gotcha #1: IPC Security (chmod 0o600) ─────────────
|
|
351
|
+
// Restrict socket to owner-only on POSIX to prevent PII sniffing
|
|
352
|
+
if (platform() !== 'win32') {
|
|
353
|
+
try {
|
|
354
|
+
chmodSync(socketPath, 0o600);
|
|
355
|
+
}
|
|
356
|
+
catch {
|
|
357
|
+
// Non-fatal — log warning via stderr (never stdout!)
|
|
358
|
+
process.stderr.write('[vurb] Warning: Could not restrict socket permissions.\n');
|
|
359
|
+
}
|
|
360
|
+
}
|
|
361
|
+
// ── Heartbeat Timer ───────────────────────────────────
|
|
362
|
+
const heartbeatTimer = setInterval(() => {
|
|
363
|
+
if (clients.size === 0)
|
|
364
|
+
return;
|
|
365
|
+
const mem = process.memoryUsage();
|
|
366
|
+
emit({
|
|
367
|
+
type: 'heartbeat',
|
|
368
|
+
heapUsedBytes: mem.heapUsed,
|
|
369
|
+
heapTotalBytes: mem.heapTotal,
|
|
370
|
+
rssBytes: mem.rss,
|
|
371
|
+
uptimeSeconds: Math.floor(process.uptime()),
|
|
372
|
+
timestamp: Date.now(),
|
|
373
|
+
});
|
|
374
|
+
}, HEARTBEAT_INTERVAL_MS);
|
|
375
|
+
// Don't let the heartbeat timer keep the process alive
|
|
376
|
+
heartbeatTimer.unref();
|
|
377
|
+
// ── Emit Function (Fire-and-Forget) ───────────────────
|
|
378
|
+
function emit(event) {
|
|
379
|
+
// Zero overhead when no clients
|
|
380
|
+
if (clients.size === 0)
|
|
381
|
+
return;
|
|
382
|
+
let line;
|
|
383
|
+
try {
|
|
384
|
+
line = JSON.stringify(event) + '\n';
|
|
385
|
+
}
|
|
386
|
+
catch {
|
|
387
|
+
return; // Non-serializable event — silently drop
|
|
388
|
+
}
|
|
389
|
+
for (const client of clients) {
|
|
390
|
+
// ── Gotcha #3 (Backpressure) ──────────────────
|
|
391
|
+
// If the client's write buffer exceeds the limit,
|
|
392
|
+
// disconnect it to protect the server from memory bloat
|
|
393
|
+
if (client.writableLength > MAX_CLIENT_BUFFER_BYTES) {
|
|
394
|
+
client.destroy();
|
|
395
|
+
clients.delete(client);
|
|
396
|
+
continue;
|
|
397
|
+
}
|
|
398
|
+
try {
|
|
399
|
+
client.write(line);
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
// Write failed — client is dead, remove it
|
|
403
|
+
client.destroy();
|
|
404
|
+
clients.delete(client);
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
}
|
|
408
|
+
// ── Clean Shutdown ────────────────────────────────────
|
|
409
|
+
function cleanup() {
|
|
410
|
+
clearInterval(heartbeatTimer);
|
|
411
|
+
for (const client of clients) {
|
|
412
|
+
try {
|
|
413
|
+
client.destroy();
|
|
414
|
+
}
|
|
415
|
+
catch { /* ignore */ }
|
|
416
|
+
}
|
|
417
|
+
clients.clear();
|
|
418
|
+
try {
|
|
419
|
+
server.close();
|
|
420
|
+
}
|
|
421
|
+
catch { /* ignore */ }
|
|
422
|
+
// Remove socket file on POSIX
|
|
423
|
+
if (platform() !== 'win32') {
|
|
424
|
+
try {
|
|
425
|
+
unlinkSync(socketPath);
|
|
426
|
+
}
|
|
427
|
+
catch { /* ignore */ }
|
|
428
|
+
}
|
|
429
|
+
// Remove registry file (cross-platform discovery)
|
|
430
|
+
removeRegistryFile(process.pid);
|
|
431
|
+
}
|
|
432
|
+
// Register cleanup on process exit signals
|
|
433
|
+
const exitHandler = () => { cleanup(); };
|
|
434
|
+
process.on('exit', exitHandler);
|
|
435
|
+
// Use process.once for SIGINT/SIGTERM and re-emit the signal after cleanup
|
|
436
|
+
// so the process actually terminates (Bug #15)
|
|
437
|
+
const sigHandler = (signal) => {
|
|
438
|
+
cleanup();
|
|
439
|
+
process.kill(process.pid, signal);
|
|
440
|
+
};
|
|
441
|
+
// Bug #49 fix: store arrow function references so close() can remove them
|
|
442
|
+
const sigintHandler = () => sigHandler('SIGINT');
|
|
443
|
+
const sigtermHandler = () => sigHandler('SIGTERM');
|
|
444
|
+
process.once('SIGINT', sigintHandler);
|
|
445
|
+
process.once('SIGTERM', sigtermHandler);
|
|
446
|
+
// ── Close Method ──────────────────────────────────────
|
|
447
|
+
async function close() {
|
|
448
|
+
process.removeListener('exit', exitHandler);
|
|
449
|
+
// Signal handlers were registered with process.once, so they
|
|
450
|
+
// auto-remove after firing. Remove them explicitly only if
|
|
451
|
+
// close() is called before a signal arrives.
|
|
452
|
+
process.removeListener('SIGINT', sigintHandler);
|
|
453
|
+
process.removeListener('SIGTERM', sigtermHandler);
|
|
454
|
+
cleanup();
|
|
455
|
+
}
|
|
456
|
+
return {
|
|
457
|
+
emit,
|
|
458
|
+
path: socketPath,
|
|
459
|
+
clientCount: () => clients.size,
|
|
460
|
+
close,
|
|
461
|
+
};
|
|
462
|
+
}
|
|
463
|
+
//# sourceMappingURL=TelemetryBus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryBus.js","sourceRoot":"","sources":["../../src/observability/TelemetryBus.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TelemetryEvent — Enriched Out-of-Band Telemetry Types
|
|
3
|
+
*
|
|
4
|
+
* Extends the core {@link DebugEvent} discriminated union with
|
|
5
|
+
* domain-specific telemetry events for the Shadow Socket transport.
|
|
6
|
+
*
|
|
7
|
+
* These events are emitted over an IPC channel (Named Pipe on Windows,
|
|
8
|
+
* Unix Domain Socket on POSIX) and consumed by `vurb top`.
|
|
9
|
+
* They NEVER touch stdio — the MCP JSON-RPC channel is 100% safe.
|
|
10
|
+
*
|
|
11
|
+
* Design rules:
|
|
12
|
+
* - All events are JSON-serializable (no Date objects, no functions)
|
|
13
|
+
* - All events carry a `timestamp` (epoch ms) for chronological ordering
|
|
14
|
+
* - The `type` field is the discriminator for exhaustive `switch` handling
|
|
15
|
+
* - Events are fire-and-forget — dropping them must never affect the server
|
|
16
|
+
*
|
|
17
|
+
* @module
|
|
18
|
+
*/
|
|
19
|
+
import type { DebugEvent } from './DebugObserver.js';
|
|
20
|
+
/**
|
|
21
|
+
* Emitted after the DLP RedactEngine masks PII fields.
|
|
22
|
+
* Allows the TUI to display live redaction activity and field paths.
|
|
23
|
+
*/
|
|
24
|
+
export interface DlpRedactEvent {
|
|
25
|
+
readonly type: 'dlp.redact';
|
|
26
|
+
readonly tool: string;
|
|
27
|
+
readonly action: string;
|
|
28
|
+
/** Number of fields that were masked */
|
|
29
|
+
readonly fieldsRedacted: number;
|
|
30
|
+
/** The configured redaction paths that matched */
|
|
31
|
+
readonly paths: readonly string[];
|
|
32
|
+
/** Short hex trace ID for correlating events in the same request lifecycle */
|
|
33
|
+
readonly traceId?: string;
|
|
34
|
+
readonly timestamp: number;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Emitted after the Presenter's Late Guillotine slices data.
|
|
38
|
+
* Shows the token-saving ratio — the visual ROI proof.
|
|
39
|
+
*/
|
|
40
|
+
export interface PresenterSliceEvent {
|
|
41
|
+
readonly type: 'presenter.slice';
|
|
42
|
+
readonly tool: string;
|
|
43
|
+
readonly action: string;
|
|
44
|
+
/** Size of the raw data from the handler (bytes) */
|
|
45
|
+
readonly rawBytes: number;
|
|
46
|
+
/** Size after Presenter filtering for the LLM wire (bytes) */
|
|
47
|
+
readonly wireBytes: number;
|
|
48
|
+
/** Number of raw rows/items before filtering */
|
|
49
|
+
readonly rowsRaw: number;
|
|
50
|
+
/** Number of rows/items after filtering */
|
|
51
|
+
readonly rowsWire: number;
|
|
52
|
+
/** Short hex trace ID for correlating events in the same request lifecycle */
|
|
53
|
+
readonly traceId?: string;
|
|
54
|
+
readonly timestamp: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Emitted after the Presenter injects cognitive rules.
|
|
58
|
+
* Allows the TUI to display the JIT domain rules sent to the LLM.
|
|
59
|
+
*/
|
|
60
|
+
export interface PresenterRulesEvent {
|
|
61
|
+
readonly type: 'presenter.rules';
|
|
62
|
+
readonly tool: string;
|
|
63
|
+
readonly action: string;
|
|
64
|
+
/** The system rules injected into the response */
|
|
65
|
+
readonly rules: readonly string[];
|
|
66
|
+
/** Short hex trace ID for correlating events in the same request lifecycle */
|
|
67
|
+
readonly traceId?: string;
|
|
68
|
+
readonly timestamp: number;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Emitted after a SandboxEngine execution completes.
|
|
72
|
+
* Shows V8 isolate metrics for the computation delegation.
|
|
73
|
+
*/
|
|
74
|
+
export interface SandboxExecEvent {
|
|
75
|
+
readonly type: 'sandbox.exec';
|
|
76
|
+
/** Execution time in milliseconds */
|
|
77
|
+
readonly executionMs: number;
|
|
78
|
+
/** Whether the execution succeeded */
|
|
79
|
+
readonly ok: boolean;
|
|
80
|
+
/** Error code if execution failed */
|
|
81
|
+
readonly errorCode?: string;
|
|
82
|
+
readonly timestamp: number;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Emitted after an FSM state transition.
|
|
86
|
+
* Shows the temporal anti-hallucination gate in action.
|
|
87
|
+
*/
|
|
88
|
+
export interface FsmTransitionEvent {
|
|
89
|
+
readonly type: 'fsm.transition';
|
|
90
|
+
readonly previousState: string;
|
|
91
|
+
readonly currentState: string;
|
|
92
|
+
/** The event that triggered the transition */
|
|
93
|
+
readonly event: string;
|
|
94
|
+
/** Number of tools visible in the new state */
|
|
95
|
+
readonly toolsVisible: number;
|
|
96
|
+
readonly timestamp: number;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Emitted once on TUI client connection.
|
|
100
|
+
* Provides the full server topology for immediate panel population.
|
|
101
|
+
*/
|
|
102
|
+
export interface TopologyEvent {
|
|
103
|
+
readonly type: 'topology';
|
|
104
|
+
readonly serverName: string;
|
|
105
|
+
readonly pid: number;
|
|
106
|
+
readonly tools: readonly TopologyTool[];
|
|
107
|
+
/** Current FSM state, if FSM is configured */
|
|
108
|
+
readonly fsmState?: string;
|
|
109
|
+
readonly timestamp: number;
|
|
110
|
+
}
|
|
111
|
+
/** Tool entry within a {@link TopologyEvent} */
|
|
112
|
+
export interface TopologyTool {
|
|
113
|
+
readonly name: string;
|
|
114
|
+
readonly actions: readonly string[];
|
|
115
|
+
/** Read-only or destructive annotation */
|
|
116
|
+
readonly readOnly?: boolean;
|
|
117
|
+
readonly destructive?: boolean;
|
|
118
|
+
/** Whether this tool runs in the V8 Sandbox */
|
|
119
|
+
readonly sandboxed?: boolean;
|
|
120
|
+
/** FSM states where this tool is visible */
|
|
121
|
+
readonly fsmStates?: readonly string[];
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Periodic heartbeat with process-level metrics.
|
|
125
|
+
* Emitted every 5 seconds to keep the TUI header bar alive.
|
|
126
|
+
*/
|
|
127
|
+
export interface HeartbeatEvent {
|
|
128
|
+
readonly type: 'heartbeat';
|
|
129
|
+
/** V8 heap used in bytes */
|
|
130
|
+
readonly heapUsedBytes: number;
|
|
131
|
+
/** V8 heap total in bytes */
|
|
132
|
+
readonly heapTotalBytes: number;
|
|
133
|
+
/** RSS in bytes */
|
|
134
|
+
readonly rssBytes: number;
|
|
135
|
+
/** Process uptime in seconds */
|
|
136
|
+
readonly uptimeSeconds: number;
|
|
137
|
+
readonly timestamp: number;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* All possible telemetry events that flow through the Shadow Socket.
|
|
141
|
+
*
|
|
142
|
+
* This is a superset of {@link DebugEvent} — the core pipeline events
|
|
143
|
+
* are included alongside the domain-specific telemetry.
|
|
144
|
+
*
|
|
145
|
+
* Use `switch (event.type)` for exhaustive handling:
|
|
146
|
+
* ```typescript
|
|
147
|
+
* function handle(event: TelemetryEvent) {
|
|
148
|
+
* switch (event.type) {
|
|
149
|
+
* case 'route': // DebugEvent
|
|
150
|
+
* case 'validate': // DebugEvent
|
|
151
|
+
* case 'execute': // DebugEvent
|
|
152
|
+
* case 'error': // DebugEvent
|
|
153
|
+
* case 'middleware': // DebugEvent
|
|
154
|
+
* case 'governance': // DebugEvent
|
|
155
|
+
* case 'dlp.redact': // DlpRedactEvent
|
|
156
|
+
* case 'presenter.slice': // PresenterSliceEvent
|
|
157
|
+
* case 'presenter.rules': // PresenterRulesEvent
|
|
158
|
+
* case 'sandbox.exec': // SandboxExecEvent
|
|
159
|
+
* case 'fsm.transition': // FsmTransitionEvent
|
|
160
|
+
* case 'topology': // TopologyEvent
|
|
161
|
+
* case 'heartbeat': // HeartbeatEvent
|
|
162
|
+
* }
|
|
163
|
+
* }
|
|
164
|
+
* ```
|
|
165
|
+
*/
|
|
166
|
+
export type TelemetryEvent = DebugEvent | DlpRedactEvent | PresenterSliceEvent | PresenterRulesEvent | SandboxExecEvent | FsmTransitionEvent | TopologyEvent | HeartbeatEvent;
|
|
167
|
+
/**
|
|
168
|
+
* A function that accepts telemetry events for out-of-band delivery.
|
|
169
|
+
*
|
|
170
|
+
* The implementation is a fire-and-forget NDJSON writer to the IPC socket.
|
|
171
|
+
* If no TUI client is connected, the events are silently discarded.
|
|
172
|
+
*
|
|
173
|
+
* This type is passed to `AttachOptions.telemetry` and to individual
|
|
174
|
+
* subsystems (Presenter, RedactEngine, SandboxEngine) for event emission.
|
|
175
|
+
*/
|
|
176
|
+
export type TelemetrySink = (event: TelemetryEvent) => void;
|
|
177
|
+
//# sourceMappingURL=TelemetryEvent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryEvent.d.ts","sourceRoot":"","sources":["../../src/observability/TelemetryEvent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TelemetryEvent.js","sourceRoot":"","sources":["../../src/observability/TelemetryEvent.ts"],"names":[],"mappings":""}
|