@contractspec/bundle.workspace 1.46.1 → 1.47.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/dist/_virtual/rolldown_runtime.mjs +20 -0
- package/dist/adapters/ai.d.mts +12 -0
- package/dist/adapters/ai.d.mts.map +1 -0
- package/dist/adapters/ai.mjs +83 -0
- package/dist/adapters/ai.mjs.map +1 -0
- package/dist/adapters/factory.d.mts +29 -0
- package/dist/adapters/factory.d.mts.map +1 -0
- package/dist/adapters/factory.mjs +37 -0
- package/dist/adapters/factory.mjs.map +1 -0
- package/dist/adapters/fs.d.mts +12 -0
- package/dist/adapters/fs.d.mts.map +1 -0
- package/dist/adapters/fs.mjs +133 -0
- package/dist/adapters/fs.mjs.map +1 -0
- package/dist/adapters/git.d.mts +11 -0
- package/dist/adapters/git.d.mts.map +1 -0
- package/dist/adapters/git.mjs +84 -0
- package/dist/adapters/git.mjs.map +1 -0
- package/dist/adapters/index.d.mts +7 -0
- package/dist/adapters/index.mjs +9 -0
- package/dist/adapters/logger.d.mts +18 -0
- package/dist/adapters/logger.d.mts.map +1 -0
- package/dist/adapters/logger.mjs +81 -0
- package/dist/adapters/logger.mjs.map +1 -0
- package/dist/adapters/watcher.d.mts +11 -0
- package/dist/adapters/watcher.d.mts.map +1 -0
- package/dist/adapters/watcher.mjs +74 -0
- package/dist/adapters/watcher.mjs.map +1 -0
- package/dist/adapters/workspace.d.mts +148 -0
- package/dist/adapters/workspace.d.mts.map +1 -0
- package/dist/adapters/workspace.mjs +275 -0
- package/dist/adapters/workspace.mjs.map +1 -0
- package/dist/ai/agents/claude-code-agent.d.mts +22 -0
- package/dist/ai/agents/claude-code-agent.d.mts.map +1 -0
- package/dist/ai/agents/claude-code-agent.mjs +182 -0
- package/dist/ai/agents/claude-code-agent.mjs.map +1 -0
- package/dist/ai/agents/cursor-agent.d.mts +68 -0
- package/dist/ai/agents/cursor-agent.d.mts.map +1 -0
- package/dist/ai/agents/cursor-agent.mjs +436 -0
- package/dist/ai/agents/cursor-agent.mjs.map +1 -0
- package/dist/ai/agents/index.mjs +7 -0
- package/dist/ai/agents/openai-codex-agent.d.mts +22 -0
- package/dist/ai/agents/openai-codex-agent.d.mts.map +1 -0
- package/dist/ai/agents/openai-codex-agent.mjs +167 -0
- package/dist/ai/agents/openai-codex-agent.mjs.map +1 -0
- package/dist/ai/agents/orchestrator.d.mts +50 -0
- package/dist/ai/agents/orchestrator.d.mts.map +1 -0
- package/dist/ai/agents/orchestrator.mjs +143 -0
- package/dist/ai/agents/orchestrator.mjs.map +1 -0
- package/dist/ai/agents/simple-agent.d.mts +17 -0
- package/dist/ai/agents/simple-agent.d.mts.map +1 -0
- package/dist/ai/agents/simple-agent.mjs +92 -0
- package/dist/ai/agents/simple-agent.mjs.map +1 -0
- package/dist/ai/agents/types.d.mts +36 -0
- package/dist/ai/agents/types.d.mts.map +1 -0
- package/dist/ai/client.d.mts +97 -0
- package/dist/ai/client.d.mts.map +1 -0
- package/dist/ai/client.mjs +189 -0
- package/dist/ai/client.mjs.map +1 -0
- package/dist/ai/index.d.mts +9 -0
- package/dist/ai/index.mjs +11 -0
- package/dist/ai/prompts/code-generation.d.mts +26 -0
- package/dist/ai/prompts/code-generation.d.mts.map +1 -0
- package/dist/ai/prompts/code-generation.mjs +143 -0
- package/dist/ai/prompts/code-generation.mjs.map +1 -0
- package/dist/ai/prompts/index.d.mts +10 -0
- package/dist/ai/prompts/index.d.mts.map +1 -0
- package/dist/ai/prompts/index.mjs +13 -0
- package/dist/ai/prompts/index.mjs.map +1 -0
- package/dist/ai/prompts/spec-creation.d.mts +29 -0
- package/dist/ai/prompts/spec-creation.d.mts.map +1 -0
- package/dist/ai/prompts/spec-creation.mjs +111 -0
- package/dist/ai/prompts/spec-creation.mjs.map +1 -0
- package/dist/ai/providers.d.mts +29 -0
- package/dist/ai/providers.d.mts.map +1 -0
- package/dist/ai/providers.mjs +39 -0
- package/dist/ai/providers.mjs.map +1 -0
- package/dist/formatters/index.d.mts +11 -0
- package/dist/formatters/index.d.mts.map +1 -0
- package/dist/formatters/index.mjs +17 -0
- package/dist/formatters/index.mjs.map +1 -0
- package/dist/formatters/json.d.mts +56 -0
- package/dist/formatters/json.d.mts.map +1 -0
- package/dist/formatters/json.mjs +43 -0
- package/dist/formatters/json.mjs.map +1 -0
- package/dist/formatters/sarif.d.mts +101 -0
- package/dist/formatters/sarif.d.mts.map +1 -0
- package/dist/formatters/sarif.mjs +163 -0
- package/dist/formatters/sarif.mjs.map +1 -0
- package/dist/formatters/text.d.mts +35 -0
- package/dist/formatters/text.d.mts.map +1 -0
- package/dist/formatters/text.mjs +209 -0
- package/dist/formatters/text.mjs.map +1 -0
- package/dist/index.d.mts +125 -0
- package/dist/index.mjs +110 -0
- package/dist/ports/ai.d.mts +59 -0
- package/dist/ports/ai.d.mts.map +1 -0
- package/dist/ports/fs.d.mts +81 -0
- package/dist/ports/fs.d.mts.map +1 -0
- package/dist/ports/git.d.mts +46 -0
- package/dist/ports/git.d.mts.map +1 -0
- package/dist/ports/index.d.mts +6 -0
- package/dist/ports/logger.d.mts +88 -0
- package/dist/ports/logger.d.mts.map +1 -0
- package/dist/ports/rulesync.d.mts +38 -0
- package/dist/ports/rulesync.d.mts.map +1 -0
- package/dist/ports/watcher.d.mts +52 -0
- package/dist/ports/watcher.d.mts.map +1 -0
- package/dist/services/agent-guide/adapters/claude-code.d.mts +35 -0
- package/dist/services/agent-guide/adapters/claude-code.d.mts.map +1 -0
- package/dist/services/agent-guide/adapters/claude-code.mjs +144 -0
- package/dist/services/agent-guide/adapters/claude-code.mjs.map +1 -0
- package/dist/services/agent-guide/adapters/cursor-cli.d.mts +39 -0
- package/dist/services/agent-guide/adapters/cursor-cli.d.mts.map +1 -0
- package/dist/services/agent-guide/adapters/cursor-cli.mjs +135 -0
- package/dist/services/agent-guide/adapters/cursor-cli.mjs.map +1 -0
- package/dist/services/agent-guide/adapters/generic-mcp.d.mts +53 -0
- package/dist/services/agent-guide/adapters/generic-mcp.d.mts.map +1 -0
- package/dist/services/agent-guide/adapters/generic-mcp.mjs +159 -0
- package/dist/services/agent-guide/adapters/generic-mcp.mjs.map +1 -0
- package/dist/services/agent-guide/adapters/index.d.mts +23 -0
- package/dist/services/agent-guide/adapters/index.d.mts.map +1 -0
- package/dist/services/agent-guide/adapters/index.mjs +31 -0
- package/dist/services/agent-guide/adapters/index.mjs.map +1 -0
- package/dist/services/agent-guide/agent-guide-service.d.mts +56 -0
- package/dist/services/agent-guide/agent-guide-service.d.mts.map +1 -0
- package/dist/services/agent-guide/agent-guide-service.mjs +147 -0
- package/dist/services/agent-guide/agent-guide-service.mjs.map +1 -0
- package/dist/services/agent-guide/index.d.mts +6 -0
- package/dist/services/agent-guide/index.mjs +7 -0
- package/dist/services/agent-guide/types.d.mts +58 -0
- package/dist/services/agent-guide/types.d.mts.map +1 -0
- package/dist/services/build.d.mts +61 -0
- package/dist/services/build.d.mts.map +1 -0
- package/dist/services/build.mjs +151 -0
- package/dist/services/build.mjs.map +1 -0
- package/dist/services/ci-check/checks/coverage.mjs +77 -0
- package/dist/services/ci-check/checks/coverage.mjs.map +1 -0
- package/dist/services/ci-check/checks/deps.mjs +32 -0
- package/dist/services/ci-check/checks/deps.mjs.map +1 -0
- package/dist/services/ci-check/checks/doctor.mjs +38 -0
- package/dist/services/ci-check/checks/doctor.mjs.map +1 -0
- package/dist/services/ci-check/checks/drift.mjs +40 -0
- package/dist/services/ci-check/checks/drift.mjs.map +1 -0
- package/dist/services/ci-check/checks/handlers.mjs +38 -0
- package/dist/services/ci-check/checks/handlers.mjs.map +1 -0
- package/dist/services/ci-check/checks/implementation.mjs +73 -0
- package/dist/services/ci-check/checks/implementation.mjs.map +1 -0
- package/dist/services/ci-check/checks/index.mjs +13 -0
- package/dist/services/ci-check/checks/integrity.mjs +31 -0
- package/dist/services/ci-check/checks/integrity.mjs.map +1 -0
- package/dist/services/ci-check/checks/layers.mjs +66 -0
- package/dist/services/ci-check/checks/layers.mjs.map +1 -0
- package/dist/services/ci-check/checks/structure.mjs +35 -0
- package/dist/services/ci-check/checks/structure.mjs.map +1 -0
- package/dist/services/ci-check/checks/test-refs.mjs +63 -0
- package/dist/services/ci-check/checks/test-refs.mjs.map +1 -0
- package/dist/services/ci-check/checks/tests.mjs +38 -0
- package/dist/services/ci-check/checks/tests.mjs.map +1 -0
- package/dist/services/ci-check/ci-check-service.d.mts +16 -0
- package/dist/services/ci-check/ci-check-service.d.mts.map +1 -0
- package/dist/services/ci-check/ci-check-service.mjs +129 -0
- package/dist/services/ci-check/ci-check-service.mjs.map +1 -0
- package/dist/services/ci-check/index.d.mts +2 -0
- package/dist/services/ci-check/index.mjs +4 -0
- package/dist/services/ci-check/types.d.mts +147 -0
- package/dist/services/ci-check/types.d.mts.map +1 -0
- package/dist/services/ci-check/types.mjs +37 -0
- package/dist/services/ci-check/types.mjs.map +1 -0
- package/dist/services/ci-check/utils.mjs +76 -0
- package/dist/services/ci-check/utils.mjs.map +1 -0
- package/dist/services/clean.d.mts +41 -0
- package/dist/services/clean.d.mts.map +1 -0
- package/dist/services/clean.mjs +72 -0
- package/dist/services/clean.mjs.map +1 -0
- package/dist/services/config.d.mts +16 -0
- package/dist/services/config.d.mts.map +1 -0
- package/dist/services/config.mjs +63 -0
- package/dist/services/config.mjs.map +1 -0
- package/dist/services/coverage/parsers/index.mjs +34 -0
- package/dist/services/coverage/parsers/index.mjs.map +1 -0
- package/dist/services/coverage/parsers/istanbul-parser.mjs +108 -0
- package/dist/services/coverage/parsers/istanbul-parser.mjs.map +1 -0
- package/dist/services/coverage/validator.mjs +55 -0
- package/dist/services/coverage/validator.mjs.map +1 -0
- package/dist/services/create/ai-generator.d.mts +84 -0
- package/dist/services/create/ai-generator.d.mts.map +1 -0
- package/dist/services/create/ai-generator.mjs +178 -0
- package/dist/services/create/ai-generator.mjs.map +1 -0
- package/dist/services/create/index.d.mts +28 -0
- package/dist/services/create/index.d.mts.map +1 -0
- package/dist/services/create/index.mjs +37 -0
- package/dist/services/create/index.mjs.map +1 -0
- package/dist/services/create/templates.d.mts +22 -0
- package/dist/services/create/templates.d.mts.map +1 -0
- package/dist/services/create/templates.mjs +39 -0
- package/dist/services/create/templates.mjs.map +1 -0
- package/dist/services/deps.d.mts +53 -0
- package/dist/services/deps.d.mts.map +1 -0
- package/dist/services/deps.mjs +62 -0
- package/dist/services/deps.mjs.map +1 -0
- package/dist/services/diff.d.mts +34 -0
- package/dist/services/diff.d.mts.map +1 -0
- package/dist/services/diff.mjs +34 -0
- package/dist/services/diff.mjs.map +1 -0
- package/dist/services/docs/docs-service.d.mts +20 -0
- package/dist/services/docs/docs-service.d.mts.map +1 -0
- package/dist/services/docs/docs-service.mjs +59 -0
- package/dist/services/docs/docs-service.mjs.map +1 -0
- package/dist/services/docs/index.d.mts +1 -0
- package/dist/services/docs/index.mjs +3 -0
- package/dist/services/doctor/checks/ai.mjs +119 -0
- package/dist/services/doctor/checks/ai.mjs.map +1 -0
- package/dist/services/doctor/checks/cli.mjs +156 -0
- package/dist/services/doctor/checks/cli.mjs.map +1 -0
- package/dist/services/doctor/checks/config.mjs +303 -0
- package/dist/services/doctor/checks/config.mjs.map +1 -0
- package/dist/services/doctor/checks/deps.mjs +267 -0
- package/dist/services/doctor/checks/deps.mjs.map +1 -0
- package/dist/services/doctor/checks/index.mjs +9 -0
- package/dist/services/doctor/checks/layers.mjs +139 -0
- package/dist/services/doctor/checks/layers.mjs.map +1 -0
- package/dist/services/doctor/checks/mcp.mjs +145 -0
- package/dist/services/doctor/checks/mcp.mjs.map +1 -0
- package/dist/services/doctor/checks/workspace.mjs +263 -0
- package/dist/services/doctor/checks/workspace.mjs.map +1 -0
- package/dist/services/doctor/doctor-service.d.mts +24 -0
- package/dist/services/doctor/doctor-service.d.mts.map +1 -0
- package/dist/services/doctor/doctor-service.mjs +118 -0
- package/dist/services/doctor/doctor-service.mjs.map +1 -0
- package/dist/services/doctor/index.d.mts +2 -0
- package/dist/services/doctor/index.mjs +4 -0
- package/dist/services/doctor/types.d.mts +118 -0
- package/dist/services/doctor/types.d.mts.map +1 -0
- package/dist/services/doctor/types.mjs +29 -0
- package/dist/services/doctor/types.mjs.map +1 -0
- package/dist/services/drift.mjs +73 -0
- package/dist/services/drift.mjs.map +1 -0
- package/dist/services/extract.d.mts +12 -0
- package/dist/services/extract.d.mts.map +1 -0
- package/dist/services/extract.mjs +33 -0
- package/dist/services/extract.mjs.map +1 -0
- package/dist/services/features/completion.d.mts +21 -0
- package/dist/services/features/completion.d.mts.map +1 -0
- package/dist/services/features/completion.mjs +70 -0
- package/dist/services/features/completion.mjs.map +1 -0
- package/dist/services/features/feature-editor.d.mts +27 -0
- package/dist/services/features/feature-editor.d.mts.map +1 -0
- package/dist/services/features/feature-editor.mjs +37 -0
- package/dist/services/features/feature-editor.mjs.map +1 -0
- package/dist/services/features/index.d.mts +11 -0
- package/dist/services/features/index.d.mts.map +1 -0
- package/dist/services/features/index.mjs +16 -0
- package/dist/services/features/index.mjs.map +1 -0
- package/dist/services/features/validation.d.mts +21 -0
- package/dist/services/features/validation.d.mts.map +1 -0
- package/dist/services/features/validation.mjs +27 -0
- package/dist/services/features/validation.mjs.map +1 -0
- package/dist/services/fix/fix-link-formatter.d.mts +12 -0
- package/dist/services/fix/fix-link-formatter.d.mts.map +1 -0
- package/dist/services/fix/fix-link-formatter.mjs +38 -0
- package/dist/services/fix/fix-link-formatter.mjs.map +1 -0
- package/dist/services/fix/fix-service.d.mts +74 -0
- package/dist/services/fix/fix-service.d.mts.map +1 -0
- package/dist/services/fix/fix-service.mjs +169 -0
- package/dist/services/fix/fix-service.mjs.map +1 -0
- package/dist/services/fix/index.d.mts +16 -0
- package/dist/services/fix/index.d.mts.map +1 -0
- package/dist/services/fix/index.mjs +24 -0
- package/dist/services/fix/index.mjs.map +1 -0
- package/dist/services/fix/path-resolver.mjs +83 -0
- package/dist/services/fix/path-resolver.mjs.map +1 -0
- package/dist/services/fix/schemas.d.mts +17 -0
- package/dist/services/fix/schemas.d.mts.map +1 -0
- package/dist/services/fix/schemas.mjs +12 -0
- package/dist/services/fix/schemas.mjs.map +1 -0
- package/dist/services/fix/strategies/implement-ai.d.mts +18 -0
- package/dist/services/fix/strategies/implement-ai.d.mts.map +1 -0
- package/dist/services/fix/strategies/implement-ai.mjs +139 -0
- package/dist/services/fix/strategies/implement-ai.mjs.map +1 -0
- package/dist/services/fix/strategies/implement-skeleton.d.mts +14 -0
- package/dist/services/fix/strategies/implement-skeleton.d.mts.map +1 -0
- package/dist/services/fix/strategies/implement-skeleton.mjs +77 -0
- package/dist/services/fix/strategies/implement-skeleton.mjs.map +1 -0
- package/dist/services/fix/strategies/index.d.mts +3 -0
- package/dist/services/fix/strategies/remove-reference.d.mts +17 -0
- package/dist/services/fix/strategies/remove-reference.d.mts.map +1 -0
- package/dist/services/fix/strategies/remove-reference.mjs +98 -0
- package/dist/services/fix/strategies/remove-reference.mjs.map +1 -0
- package/dist/services/fix/types.d.mts +207 -0
- package/dist/services/fix/types.d.mts.map +1 -0
- package/dist/services/fix/types.mjs +20 -0
- package/dist/services/fix/types.mjs.map +1 -0
- package/dist/services/formatter.d.mts +15 -0
- package/dist/services/formatter.d.mts.map +1 -0
- package/dist/services/formatter.mjs +26 -0
- package/dist/services/formatter.mjs.map +1 -0
- package/dist/services/gap.d.mts +18 -0
- package/dist/services/gap.d.mts.map +1 -0
- package/dist/services/gap.mjs +44 -0
- package/dist/services/gap.mjs.map +1 -0
- package/dist/services/generate-artifacts.d.mts +11 -0
- package/dist/services/generate-artifacts.d.mts.map +1 -0
- package/dist/services/generate-artifacts.mjs +27 -0
- package/dist/services/generate-artifacts.mjs.map +1 -0
- package/dist/services/hooks/hooks-service.d.mts +24 -0
- package/dist/services/hooks/hooks-service.d.mts.map +1 -0
- package/dist/services/hooks/hooks-service.mjs +126 -0
- package/dist/services/hooks/hooks-service.mjs.map +1 -0
- package/dist/services/hooks/index.d.mts +10 -0
- package/dist/services/hooks/index.d.mts.map +1 -0
- package/dist/services/hooks/index.mjs +12 -0
- package/dist/services/hooks/index.mjs.map +1 -0
- package/dist/services/hooks/types.d.mts +56 -0
- package/dist/services/hooks/types.d.mts.map +1 -0
- package/dist/services/impact/formatters.d.mts +27 -0
- package/dist/services/impact/formatters.d.mts.map +1 -0
- package/dist/services/impact/formatters.mjs +139 -0
- package/dist/services/impact/formatters.mjs.map +1 -0
- package/dist/services/impact/impact-detection-service.d.mts +22 -0
- package/dist/services/impact/impact-detection-service.d.mts.map +1 -0
- package/dist/services/impact/impact-detection-service.mjs +96 -0
- package/dist/services/impact/impact-detection-service.mjs.map +1 -0
- package/dist/services/impact/index.d.mts +11 -0
- package/dist/services/impact/index.d.mts.map +1 -0
- package/dist/services/impact/index.mjs +16 -0
- package/dist/services/impact/index.mjs.map +1 -0
- package/dist/services/impact/types.d.mts +63 -0
- package/dist/services/impact/types.d.mts.map +1 -0
- package/dist/services/implementation/discovery.d.mts +30 -0
- package/dist/services/implementation/discovery.d.mts.map +1 -0
- package/dist/services/implementation/discovery.mjs +144 -0
- package/dist/services/implementation/discovery.mjs.map +1 -0
- package/dist/services/implementation/index.d.mts +6 -0
- package/dist/services/implementation/index.mjs +7 -0
- package/dist/services/implementation/resolver/conventions.d.mts +18 -0
- package/dist/services/implementation/resolver/conventions.d.mts.map +1 -0
- package/dist/services/implementation/resolver/conventions.mjs +59 -0
- package/dist/services/implementation/resolver/conventions.mjs.map +1 -0
- package/dist/services/implementation/resolver/index.d.mts +24 -0
- package/dist/services/implementation/resolver/index.d.mts.map +1 -0
- package/dist/services/implementation/resolver/index.mjs +111 -0
- package/dist/services/implementation/resolver/index.mjs.map +1 -0
- package/dist/services/implementation/resolver/parsers.d.mts +16 -0
- package/dist/services/implementation/resolver/parsers.d.mts.map +1 -0
- package/dist/services/implementation/resolver/parsers.mjs +100 -0
- package/dist/services/implementation/resolver/parsers.mjs.map +1 -0
- package/dist/services/implementation/resolver/status.d.mts +21 -0
- package/dist/services/implementation/resolver/status.d.mts.map +1 -0
- package/dist/services/implementation/resolver/status.mjs +31 -0
- package/dist/services/implementation/resolver/status.mjs.map +1 -0
- package/dist/services/implementation/types.d.mts +89 -0
- package/dist/services/implementation/types.d.mts.map +1 -0
- package/dist/services/index.d.mts +103 -0
- package/dist/services/index.mjs +100 -0
- package/dist/services/integrity-diagram.d.mts +36 -0
- package/dist/services/integrity-diagram.d.mts.map +1 -0
- package/dist/services/integrity-diagram.mjs +275 -0
- package/dist/services/integrity-diagram.mjs.map +1 -0
- package/dist/services/integrity.d.mts +152 -0
- package/dist/services/integrity.d.mts.map +1 -0
- package/dist/services/integrity.mjs +361 -0
- package/dist/services/integrity.mjs.map +1 -0
- package/dist/services/layer-discovery.d.mts +77 -0
- package/dist/services/layer-discovery.d.mts.map +1 -0
- package/dist/services/layer-discovery.mjs +121 -0
- package/dist/services/layer-discovery.mjs.map +1 -0
- package/dist/services/list.d.mts +37 -0
- package/dist/services/list.d.mts.map +1 -0
- package/dist/services/list.mjs +46 -0
- package/dist/services/list.mjs.map +1 -0
- package/dist/services/llm/index.d.mts +28 -0
- package/dist/services/llm/index.d.mts.map +1 -0
- package/dist/services/llm/index.mjs +187 -0
- package/dist/services/llm/index.mjs.map +1 -0
- package/dist/services/llm/verify-static.d.mts +26 -0
- package/dist/services/llm/verify-static.d.mts.map +1 -0
- package/dist/services/llm/verify-static.mjs +82 -0
- package/dist/services/llm/verify-static.mjs.map +1 -0
- package/dist/services/modules/module-resolver.mjs +61 -0
- package/dist/services/modules/module-resolver.mjs.map +1 -0
- package/dist/services/openapi/export-service.d.mts +53 -0
- package/dist/services/openapi/export-service.d.mts.map +1 -0
- package/dist/services/openapi/export-service.mjs +50 -0
- package/dist/services/openapi/export-service.mjs.map +1 -0
- package/dist/services/openapi/import-service.d.mts +17 -0
- package/dist/services/openapi/import-service.d.mts.map +1 -0
- package/dist/services/openapi/import-service.mjs +165 -0
- package/dist/services/openapi/import-service.mjs.map +1 -0
- package/dist/services/openapi/index.d.mts +5 -0
- package/dist/services/openapi/index.mjs +6 -0
- package/dist/services/openapi/sync-service.d.mts +17 -0
- package/dist/services/openapi/sync-service.d.mts.map +1 -0
- package/dist/services/openapi/sync-service.mjs +120 -0
- package/dist/services/openapi/sync-service.mjs.map +1 -0
- package/dist/services/openapi/types.d.mts +162 -0
- package/dist/services/openapi/types.d.mts.map +1 -0
- package/dist/services/openapi/validate-service.d.mts +16 -0
- package/dist/services/openapi/validate-service.d.mts.map +1 -0
- package/dist/services/openapi/validate-service.mjs +130 -0
- package/dist/services/openapi/validate-service.mjs.map +1 -0
- package/dist/services/quickstart/dependencies.d.mts +31 -0
- package/dist/services/quickstart/dependencies.d.mts.map +1 -0
- package/dist/services/quickstart/dependencies.mjs +57 -0
- package/dist/services/quickstart/dependencies.mjs.map +1 -0
- package/dist/services/quickstart/index.mjs +4 -0
- package/dist/services/quickstart/quickstart-service.d.mts +20 -0
- package/dist/services/quickstart/quickstart-service.d.mts.map +1 -0
- package/dist/services/quickstart/quickstart-service.mjs +196 -0
- package/dist/services/quickstart/quickstart-service.mjs.map +1 -0
- package/dist/services/quickstart/types.d.mts +81 -0
- package/dist/services/quickstart/types.d.mts.map +1 -0
- package/dist/services/regenerator.d.mts +18 -0
- package/dist/services/regenerator.d.mts.map +1 -0
- package/dist/services/regenerator.mjs +23 -0
- package/dist/services/regenerator.mjs.map +1 -0
- package/dist/services/registry.d.mts +53 -0
- package/dist/services/registry.d.mts.map +1 -0
- package/dist/services/registry.mjs +74 -0
- package/dist/services/registry.mjs.map +1 -0
- package/dist/services/rulesync.d.mts +17 -0
- package/dist/services/rulesync.d.mts.map +1 -0
- package/dist/services/rulesync.mjs +72 -0
- package/dist/services/rulesync.mjs.map +1 -0
- package/dist/services/setup/config-generators.d.mts +42 -0
- package/dist/services/setup/config-generators.d.mts.map +1 -0
- package/dist/services/setup/config-generators.mjs +252 -0
- package/dist/services/setup/config-generators.mjs.map +1 -0
- package/dist/services/setup/file-merger.d.mts +27 -0
- package/dist/services/setup/file-merger.d.mts.map +1 -0
- package/dist/services/setup/file-merger.mjs +61 -0
- package/dist/services/setup/file-merger.mjs.map +1 -0
- package/dist/services/setup/setup-service.d.mts +12 -0
- package/dist/services/setup/setup-service.d.mts.map +1 -0
- package/dist/services/setup/setup-service.mjs +96 -0
- package/dist/services/setup/setup-service.mjs.map +1 -0
- package/dist/services/setup/targets/agents-md.mjs +47 -0
- package/dist/services/setup/targets/agents-md.mjs.map +1 -0
- package/dist/services/setup/targets/cli-config.mjs +60 -0
- package/dist/services/setup/targets/cli-config.mjs.map +1 -0
- package/dist/services/setup/targets/cursor-rules.mjs +48 -0
- package/dist/services/setup/targets/cursor-rules.mjs.map +1 -0
- package/dist/services/setup/targets/mcp-claude.mjs +60 -0
- package/dist/services/setup/targets/mcp-claude.mjs.map +1 -0
- package/dist/services/setup/targets/mcp-cursor.mjs +59 -0
- package/dist/services/setup/targets/mcp-cursor.mjs.map +1 -0
- package/dist/services/setup/targets/vscode-settings.mjs +63 -0
- package/dist/services/setup/targets/vscode-settings.mjs.map +1 -0
- package/dist/services/setup/types.d.mts +85 -0
- package/dist/services/setup/types.d.mts.map +1 -0
- package/dist/services/setup/types.mjs +27 -0
- package/dist/services/setup/types.mjs.map +1 -0
- package/dist/services/sync.d.mts +42 -0
- package/dist/services/sync.d.mts.map +1 -0
- package/dist/services/sync.mjs +64 -0
- package/dist/services/sync.mjs.map +1 -0
- package/dist/services/test/index.d.mts +2 -0
- package/dist/services/test/index.mjs +4 -0
- package/dist/services/test/test-generator-service.d.mts +24 -0
- package/dist/services/test/test-generator-service.d.mts.map +1 -0
- package/dist/services/test/test-generator-service.mjs +92 -0
- package/dist/services/test/test-generator-service.mjs.map +1 -0
- package/dist/services/test/test-service.d.mts +27 -0
- package/dist/services/test/test-service.d.mts.map +1 -0
- package/dist/services/test/test-service.mjs +94 -0
- package/dist/services/test/test-service.mjs.map +1 -0
- package/dist/services/test-link/index.d.mts +18 -0
- package/dist/services/test-link/index.d.mts.map +1 -0
- package/dist/services/test-link/index.mjs +60 -0
- package/dist/services/test-link/index.mjs.map +1 -0
- package/dist/services/test-link/test-ref-validator.d.mts +2 -0
- package/dist/services/test-link/test-ref-validator.mjs +50 -0
- package/dist/services/test-link/test-ref-validator.mjs.map +1 -0
- package/dist/services/upgrade/index.d.mts +10 -0
- package/dist/services/upgrade/index.d.mts.map +1 -0
- package/dist/services/upgrade/index.mjs +15 -0
- package/dist/services/upgrade/index.mjs.map +1 -0
- package/dist/services/upgrade/types.d.mts +78 -0
- package/dist/services/upgrade/types.d.mts.map +1 -0
- package/dist/services/upgrade/upgrade-service.d.mts +38 -0
- package/dist/services/upgrade/upgrade-service.d.mts.map +1 -0
- package/dist/services/upgrade/upgrade-service.mjs +201 -0
- package/dist/services/upgrade/upgrade-service.mjs.map +1 -0
- package/dist/services/validate/blueprint-validator.d.mts +23 -0
- package/dist/services/validate/blueprint-validator.d.mts.map +1 -0
- package/dist/services/validate/blueprint-validator.mjs +50 -0
- package/dist/services/validate/blueprint-validator.mjs.map +1 -0
- package/dist/services/validate/implementation-agent-validator.d.mts +20 -0
- package/dist/services/validate/implementation-agent-validator.d.mts.map +1 -0
- package/dist/services/validate/implementation-agent-validator.mjs +42 -0
- package/dist/services/validate/implementation-agent-validator.mjs.map +1 -0
- package/dist/services/validate/implementation-validator.d.mts +32 -0
- package/dist/services/validate/implementation-validator.d.mts.map +1 -0
- package/dist/services/validate/implementation-validator.mjs +64 -0
- package/dist/services/validate/implementation-validator.mjs.map +1 -0
- package/dist/services/validate/index.d.mts +5 -0
- package/dist/services/validate/index.mjs +7 -0
- package/dist/services/validate/spec-validator.d.mts +42 -0
- package/dist/services/validate/spec-validator.d.mts.map +1 -0
- package/dist/services/validate/spec-validator.mjs +49 -0
- package/dist/services/validate/spec-validator.mjs.map +1 -0
- package/dist/services/validate/tenant-validator.d.mts +21 -0
- package/dist/services/validate/tenant-validator.d.mts.map +1 -0
- package/dist/services/validate/tenant-validator.mjs +165 -0
- package/dist/services/validate/tenant-validator.mjs.map +1 -0
- package/dist/services/verification-cache/adapters/filesystem.d.mts +46 -0
- package/dist/services/verification-cache/adapters/filesystem.d.mts.map +1 -0
- package/dist/services/verification-cache/adapters/filesystem.mjs +120 -0
- package/dist/services/verification-cache/adapters/filesystem.mjs.map +1 -0
- package/dist/services/verification-cache/adapters/in-memory.d.mts +27 -0
- package/dist/services/verification-cache/adapters/in-memory.d.mts.map +1 -0
- package/dist/services/verification-cache/adapters/in-memory.mjs +46 -0
- package/dist/services/verification-cache/adapters/in-memory.mjs.map +1 -0
- package/dist/services/verification-cache/adapters/index.d.mts +3 -0
- package/dist/services/verification-cache/adapters/index.mjs +5 -0
- package/dist/services/verification-cache/adapters/workspace-state.d.mts +49 -0
- package/dist/services/verification-cache/adapters/workspace-state.d.mts.map +1 -0
- package/dist/services/verification-cache/adapters/workspace-state.mjs +91 -0
- package/dist/services/verification-cache/adapters/workspace-state.mjs.map +1 -0
- package/dist/services/verification-cache/cache-service.d.mts +70 -0
- package/dist/services/verification-cache/cache-service.d.mts.map +1 -0
- package/dist/services/verification-cache/cache-service.mjs +256 -0
- package/dist/services/verification-cache/cache-service.mjs.map +1 -0
- package/dist/services/verification-cache/index.d.mts +6 -0
- package/dist/services/verification-cache/index.mjs +8 -0
- package/dist/services/verification-cache/types.d.mts +124 -0
- package/dist/services/verification-cache/types.d.mts.map +1 -0
- package/dist/services/verification-cache/types.mjs +16 -0
- package/dist/services/verification-cache/types.mjs.map +1 -0
- package/dist/services/verify/ai-verifier.d.mts +25 -0
- package/dist/services/verify/ai-verifier.d.mts.map +1 -0
- package/dist/services/verify/ai-verifier.mjs +403 -0
- package/dist/services/verify/ai-verifier.mjs.map +1 -0
- package/dist/services/verify/behavior-verifier.d.mts +12 -0
- package/dist/services/verify/behavior-verifier.d.mts.map +1 -0
- package/dist/services/verify/behavior-verifier.mjs +186 -0
- package/dist/services/verify/behavior-verifier.mjs.map +1 -0
- package/dist/services/verify/index.d.mts +5 -0
- package/dist/services/verify/index.mjs +6 -0
- package/dist/services/verify/structure-verifier.d.mts +12 -0
- package/dist/services/verify/structure-verifier.d.mts.map +1 -0
- package/dist/services/verify/structure-verifier.mjs +196 -0
- package/dist/services/verify/structure-verifier.mjs.map +1 -0
- package/dist/services/verify/types.d.mts +137 -0
- package/dist/services/verify/types.d.mts.map +1 -0
- package/dist/services/verify/verify-service.d.mts +60 -0
- package/dist/services/verify/verify-service.d.mts.map +1 -0
- package/dist/services/verify/verify-service.mjs +204 -0
- package/dist/services/verify/verify-service.mjs.map +1 -0
- package/dist/services/versioning/changelog-formatter.d.mts +24 -0
- package/dist/services/versioning/changelog-formatter.d.mts.map +1 -0
- package/dist/services/versioning/changelog-formatter.mjs +155 -0
- package/dist/services/versioning/changelog-formatter.mjs.map +1 -0
- package/dist/services/versioning/conventional-commits.d.mts +95 -0
- package/dist/services/versioning/conventional-commits.d.mts.map +1 -0
- package/dist/services/versioning/conventional-commits.mjs +184 -0
- package/dist/services/versioning/conventional-commits.mjs.map +1 -0
- package/dist/services/versioning/index.d.mts +12 -0
- package/dist/services/versioning/index.d.mts.map +1 -0
- package/dist/services/versioning/index.mjs +28 -0
- package/dist/services/versioning/index.mjs.map +1 -0
- package/dist/services/versioning/types.d.mts +135 -0
- package/dist/services/versioning/types.d.mts.map +1 -0
- package/dist/services/versioning/versioning-service.d.mts +74 -0
- package/dist/services/versioning/versioning-service.d.mts.map +1 -0
- package/dist/services/versioning/versioning-service.mjs +501 -0
- package/dist/services/versioning/versioning-service.mjs.map +1 -0
- package/dist/services/vibe/config.d.mts +12 -0
- package/dist/services/vibe/config.d.mts.map +1 -0
- package/dist/services/vibe/config.mjs +43 -0
- package/dist/services/vibe/config.mjs.map +1 -0
- package/dist/services/vibe/context.d.mts +19 -0
- package/dist/services/vibe/context.d.mts.map +1 -0
- package/dist/services/vibe/context.mjs +92 -0
- package/dist/services/vibe/context.mjs.map +1 -0
- package/dist/services/vibe/definitions.d.mts +8 -0
- package/dist/services/vibe/definitions.d.mts.map +1 -0
- package/dist/services/vibe/definitions.mjs +129 -0
- package/dist/services/vibe/definitions.mjs.map +1 -0
- package/dist/services/vibe/engine.d.mts +44 -0
- package/dist/services/vibe/engine.d.mts.map +1 -0
- package/dist/services/vibe/engine.mjs +147 -0
- package/dist/services/vibe/engine.mjs.map +1 -0
- package/dist/services/vibe/index.d.mts +15 -0
- package/dist/services/vibe/index.d.mts.map +1 -0
- package/dist/services/vibe/index.mjs +26 -0
- package/dist/services/vibe/index.mjs.map +1 -0
- package/dist/services/vibe/loader.d.mts +15 -0
- package/dist/services/vibe/loader.d.mts.map +1 -0
- package/dist/services/vibe/loader.mjs +48 -0
- package/dist/services/vibe/loader.mjs.map +1 -0
- package/dist/services/vibe/pack.d.mts +19 -0
- package/dist/services/vibe/pack.d.mts.map +1 -0
- package/dist/services/vibe/pack.mjs +66 -0
- package/dist/services/vibe/pack.mjs.map +1 -0
- package/dist/services/vibe/types.d.mts +59 -0
- package/dist/services/vibe/types.d.mts.map +1 -0
- package/dist/services/vibe/types.mjs +12 -0
- package/dist/services/vibe/types.mjs.map +1 -0
- package/dist/services/view/index.d.mts +11 -0
- package/dist/services/view/index.d.mts.map +1 -0
- package/dist/services/view/index.mjs +119 -0
- package/dist/services/view/index.mjs.map +1 -0
- package/dist/services/watch.d.mts +25 -0
- package/dist/services/watch.d.mts.map +1 -0
- package/dist/services/watch.mjs +33 -0
- package/dist/services/watch.mjs.map +1 -0
- package/dist/services/workspace-info.d.mts +62 -0
- package/dist/services/workspace-info.d.mts.map +1 -0
- package/dist/services/workspace-info.mjs +103 -0
- package/dist/services/workspace-info.mjs.map +1 -0
- package/dist/templates/app-config.template.d.mts +7 -0
- package/dist/templates/app-config.template.d.mts.map +1 -0
- package/dist/templates/app-config.template.mjs +107 -0
- package/dist/templates/app-config.template.mjs.map +1 -0
- package/dist/templates/data-view.template.d.mts +7 -0
- package/dist/templates/data-view.template.d.mts.map +1 -0
- package/dist/templates/data-view.template.mjs +70 -0
- package/dist/templates/data-view.template.mjs.map +1 -0
- package/dist/templates/event.template.d.mts +11 -0
- package/dist/templates/event.template.d.mts.map +1 -0
- package/dist/templates/event.template.mjs +42 -0
- package/dist/templates/event.template.mjs.map +1 -0
- package/dist/templates/experiment.template.d.mts +7 -0
- package/dist/templates/experiment.template.d.mts.map +1 -0
- package/dist/templates/experiment.template.mjs +89 -0
- package/dist/templates/experiment.template.mjs.map +1 -0
- package/dist/templates/feature.template.d.mts +33 -0
- package/dist/templates/feature.template.d.mts.map +1 -0
- package/dist/templates/feature.template.mjs +52 -0
- package/dist/templates/feature.template.mjs.map +1 -0
- package/dist/templates/fix/skeleton-capability.mjs +49 -0
- package/dist/templates/fix/skeleton-capability.mjs.map +1 -0
- package/dist/templates/fix/skeleton-event.mjs +56 -0
- package/dist/templates/fix/skeleton-event.mjs.map +1 -0
- package/dist/templates/fix/skeleton-operation.mjs +122 -0
- package/dist/templates/fix/skeleton-operation.mjs.map +1 -0
- package/dist/templates/fix/skeleton-presentation.mjs +65 -0
- package/dist/templates/fix/skeleton-presentation.mjs.map +1 -0
- package/dist/templates/fix/utils.mjs +34 -0
- package/dist/templates/fix/utils.mjs.map +1 -0
- package/dist/templates/handler.template.d.mts +16 -0
- package/dist/templates/handler.template.d.mts.map +1 -0
- package/dist/templates/handler.template.mjs +100 -0
- package/dist/templates/handler.template.mjs.map +1 -0
- package/dist/templates/index.d.mts +22 -0
- package/dist/templates/index.d.mts.map +1 -0
- package/dist/templates/index.mjs +39 -0
- package/dist/templates/index.mjs.map +1 -0
- package/dist/templates/integration.template.d.mts +7 -0
- package/dist/templates/integration.template.d.mts.map +1 -0
- package/dist/templates/integration.template.mjs +160 -0
- package/dist/templates/integration.template.mjs.map +1 -0
- package/dist/templates/knowledge.template.d.mts +7 -0
- package/dist/templates/knowledge.template.d.mts.map +1 -0
- package/dist/templates/knowledge.template.mjs +75 -0
- package/dist/templates/knowledge.template.mjs.map +1 -0
- package/dist/templates/migration.template.d.mts +7 -0
- package/dist/templates/migration.template.d.mts.map +1 -0
- package/dist/templates/migration.template.mjs +62 -0
- package/dist/templates/migration.template.mjs.map +1 -0
- package/dist/templates/operation.template.d.mts +11 -0
- package/dist/templates/operation.template.d.mts.map +1 -0
- package/dist/templates/operation.template.mjs +107 -0
- package/dist/templates/operation.template.mjs.map +1 -0
- package/dist/templates/presentation.template.d.mts +11 -0
- package/dist/templates/presentation.template.d.mts.map +1 -0
- package/dist/templates/presentation.template.mjs +80 -0
- package/dist/templates/presentation.template.mjs.map +1 -0
- package/dist/templates/telemetry.template.d.mts +7 -0
- package/dist/templates/telemetry.template.d.mts.map +1 -0
- package/dist/templates/telemetry.template.mjs +91 -0
- package/dist/templates/telemetry.template.mjs.map +1 -0
- package/dist/templates/workflow-runner.template.d.mts +16 -0
- package/dist/templates/workflow-runner.template.d.mts.map +1 -0
- package/dist/templates/workflow-runner.template.mjs +50 -0
- package/dist/templates/workflow-runner.template.mjs.map +1 -0
- package/dist/templates/workflow.template.d.mts +7 -0
- package/dist/templates/workflow.template.d.mts.map +1 -0
- package/dist/templates/workflow.template.mjs +69 -0
- package/dist/templates/workflow.template.mjs.map +1 -0
- package/dist/types/config.d.mts +34 -0
- package/dist/types/config.d.mts.map +1 -0
- package/dist/types.d.mts +324 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/utils/filter.d.mts +16 -0
- package/dist/utils/filter.d.mts.map +1 -0
- package/dist/utils/filter.mjs +22 -0
- package/dist/utils/filter.mjs.map +1 -0
- package/dist/utils/index.d.mts +11 -0
- package/dist/utils/index.d.mts.map +1 -0
- package/dist/utils/index.mjs +20 -0
- package/dist/utils/index.mjs.map +1 -0
- package/dist/utils/module-loader.d.mts +5 -0
- package/dist/utils/module-loader.d.mts.map +1 -0
- package/dist/utils/module-loader.mjs +41 -0
- package/dist/utils/module-loader.mjs.map +1 -0
- package/dist/utils/validation.d.mts +37 -0
- package/dist/utils/validation.d.mts.map +1 -0
- package/dist/utils/validation.mjs +43 -0
- package/dist/utils/validation.mjs.map +1 -0
- package/package.json +23 -19
- package/dist/_virtual/rolldown_runtime.js +0 -18
- package/dist/adapters/ai.d.ts +0 -12
- package/dist/adapters/ai.d.ts.map +0 -1
- package/dist/adapters/ai.js +0 -83
- package/dist/adapters/ai.js.map +0 -1
- package/dist/adapters/factory.d.ts +0 -29
- package/dist/adapters/factory.d.ts.map +0 -1
- package/dist/adapters/factory.js +0 -37
- package/dist/adapters/factory.js.map +0 -1
- package/dist/adapters/fs.d.ts +0 -12
- package/dist/adapters/fs.d.ts.map +0 -1
- package/dist/adapters/fs.js +0 -131
- package/dist/adapters/fs.js.map +0 -1
- package/dist/adapters/git.d.ts +0 -11
- package/dist/adapters/git.d.ts.map +0 -1
- package/dist/adapters/git.js +0 -84
- package/dist/adapters/git.js.map +0 -1
- package/dist/adapters/index.d.ts +0 -7
- package/dist/adapters/index.js +0 -7
- package/dist/adapters/logger.d.ts +0 -18
- package/dist/adapters/logger.d.ts.map +0 -1
- package/dist/adapters/logger.js +0 -81
- package/dist/adapters/logger.js.map +0 -1
- package/dist/adapters/watcher.d.ts +0 -11
- package/dist/adapters/watcher.d.ts.map +0 -1
- package/dist/adapters/watcher.js +0 -74
- package/dist/adapters/watcher.js.map +0 -1
- package/dist/adapters/workspace.d.ts +0 -148
- package/dist/adapters/workspace.d.ts.map +0 -1
- package/dist/adapters/workspace.js +0 -275
- package/dist/adapters/workspace.js.map +0 -1
- package/dist/ai/agents/claude-code-agent.d.ts +0 -22
- package/dist/ai/agents/claude-code-agent.d.ts.map +0 -1
- package/dist/ai/agents/claude-code-agent.js +0 -182
- package/dist/ai/agents/claude-code-agent.js.map +0 -1
- package/dist/ai/agents/cursor-agent.d.ts +0 -68
- package/dist/ai/agents/cursor-agent.d.ts.map +0 -1
- package/dist/ai/agents/cursor-agent.js +0 -436
- package/dist/ai/agents/cursor-agent.js.map +0 -1
- package/dist/ai/agents/index.js +0 -5
- package/dist/ai/agents/openai-codex-agent.d.ts +0 -22
- package/dist/ai/agents/openai-codex-agent.d.ts.map +0 -1
- package/dist/ai/agents/openai-codex-agent.js +0 -167
- package/dist/ai/agents/openai-codex-agent.js.map +0 -1
- package/dist/ai/agents/orchestrator.d.ts +0 -50
- package/dist/ai/agents/orchestrator.d.ts.map +0 -1
- package/dist/ai/agents/orchestrator.js +0 -143
- package/dist/ai/agents/orchestrator.js.map +0 -1
- package/dist/ai/agents/simple-agent.d.ts +0 -17
- package/dist/ai/agents/simple-agent.d.ts.map +0 -1
- package/dist/ai/agents/simple-agent.js +0 -92
- package/dist/ai/agents/simple-agent.js.map +0 -1
- package/dist/ai/agents/types.d.ts +0 -36
- package/dist/ai/agents/types.d.ts.map +0 -1
- package/dist/ai/client.d.ts +0 -97
- package/dist/ai/client.d.ts.map +0 -1
- package/dist/ai/client.js +0 -189
- package/dist/ai/client.js.map +0 -1
- package/dist/ai/index.d.ts +0 -9
- package/dist/ai/index.js +0 -9
- package/dist/ai/prompts/code-generation.d.ts +0 -26
- package/dist/ai/prompts/code-generation.d.ts.map +0 -1
- package/dist/ai/prompts/code-generation.js +0 -143
- package/dist/ai/prompts/code-generation.js.map +0 -1
- package/dist/ai/prompts/index.d.ts +0 -10
- package/dist/ai/prompts/index.d.ts.map +0 -1
- package/dist/ai/prompts/index.js +0 -13
- package/dist/ai/prompts/index.js.map +0 -1
- package/dist/ai/prompts/spec-creation.d.ts +0 -29
- package/dist/ai/prompts/spec-creation.d.ts.map +0 -1
- package/dist/ai/prompts/spec-creation.js +0 -111
- package/dist/ai/prompts/spec-creation.js.map +0 -1
- package/dist/ai/providers.d.ts +0 -29
- package/dist/ai/providers.d.ts.map +0 -1
- package/dist/ai/providers.js +0 -39
- package/dist/ai/providers.js.map +0 -1
- package/dist/formatters/index.d.ts +0 -11
- package/dist/formatters/index.d.ts.map +0 -1
- package/dist/formatters/index.js +0 -19
- package/dist/formatters/index.js.map +0 -1
- package/dist/formatters/json.d.ts +0 -89
- package/dist/formatters/json.d.ts.map +0 -1
- package/dist/formatters/json.js +0 -72
- package/dist/formatters/json.js.map +0 -1
- package/dist/formatters/sarif.d.ts +0 -101
- package/dist/formatters/sarif.d.ts.map +0 -1
- package/dist/formatters/sarif.js +0 -163
- package/dist/formatters/sarif.js.map +0 -1
- package/dist/formatters/text.d.ts +0 -35
- package/dist/formatters/text.d.ts.map +0 -1
- package/dist/formatters/text.js +0 -209
- package/dist/formatters/text.js.map +0 -1
- package/dist/index.d.ts +0 -111
- package/dist/index.js +0 -97
- package/dist/ports/ai.d.ts +0 -59
- package/dist/ports/ai.d.ts.map +0 -1
- package/dist/ports/fs.d.ts +0 -81
- package/dist/ports/fs.d.ts.map +0 -1
- package/dist/ports/git.d.ts +0 -46
- package/dist/ports/git.d.ts.map +0 -1
- package/dist/ports/index.d.ts +0 -6
- package/dist/ports/logger.d.ts +0 -88
- package/dist/ports/logger.d.ts.map +0 -1
- package/dist/ports/rulesync.d.ts +0 -38
- package/dist/ports/rulesync.d.ts.map +0 -1
- package/dist/ports/watcher.d.ts +0 -52
- package/dist/ports/watcher.d.ts.map +0 -1
- package/dist/services/agent-guide/adapters/claude-code.d.ts +0 -35
- package/dist/services/agent-guide/adapters/claude-code.d.ts.map +0 -1
- package/dist/services/agent-guide/adapters/claude-code.js +0 -144
- package/dist/services/agent-guide/adapters/claude-code.js.map +0 -1
- package/dist/services/agent-guide/adapters/cursor-cli.d.ts +0 -39
- package/dist/services/agent-guide/adapters/cursor-cli.d.ts.map +0 -1
- package/dist/services/agent-guide/adapters/cursor-cli.js +0 -135
- package/dist/services/agent-guide/adapters/cursor-cli.js.map +0 -1
- package/dist/services/agent-guide/adapters/generic-mcp.d.ts +0 -53
- package/dist/services/agent-guide/adapters/generic-mcp.d.ts.map +0 -1
- package/dist/services/agent-guide/adapters/generic-mcp.js +0 -159
- package/dist/services/agent-guide/adapters/generic-mcp.js.map +0 -1
- package/dist/services/agent-guide/adapters/index.d.ts +0 -23
- package/dist/services/agent-guide/adapters/index.d.ts.map +0 -1
- package/dist/services/agent-guide/adapters/index.js +0 -31
- package/dist/services/agent-guide/adapters/index.js.map +0 -1
- package/dist/services/agent-guide/agent-guide-service.d.ts +0 -56
- package/dist/services/agent-guide/agent-guide-service.d.ts.map +0 -1
- package/dist/services/agent-guide/agent-guide-service.js +0 -147
- package/dist/services/agent-guide/agent-guide-service.js.map +0 -1
- package/dist/services/agent-guide/index.d.ts +0 -6
- package/dist/services/agent-guide/index.js +0 -5
- package/dist/services/agent-guide/types.d.ts +0 -58
- package/dist/services/agent-guide/types.d.ts.map +0 -1
- package/dist/services/build.d.ts +0 -59
- package/dist/services/build.d.ts.map +0 -1
- package/dist/services/build.js +0 -140
- package/dist/services/build.js.map +0 -1
- package/dist/services/ci-check/ci-check-service.d.ts +0 -16
- package/dist/services/ci-check/ci-check-service.d.ts.map +0 -1
- package/dist/services/ci-check/ci-check-service.js +0 -459
- package/dist/services/ci-check/ci-check-service.js.map +0 -1
- package/dist/services/ci-check/index.d.ts +0 -2
- package/dist/services/ci-check/index.js +0 -2
- package/dist/services/ci-check/types.d.ts +0 -143
- package/dist/services/ci-check/types.d.ts.map +0 -1
- package/dist/services/ci-check/types.js +0 -31
- package/dist/services/ci-check/types.js.map +0 -1
- package/dist/services/clean.d.ts +0 -41
- package/dist/services/clean.d.ts.map +0 -1
- package/dist/services/clean.js +0 -72
- package/dist/services/clean.js.map +0 -1
- package/dist/services/config.d.ts +0 -16
- package/dist/services/config.d.ts.map +0 -1
- package/dist/services/config.js +0 -63
- package/dist/services/config.js.map +0 -1
- package/dist/services/create/ai-generator.d.ts +0 -84
- package/dist/services/create/ai-generator.d.ts.map +0 -1
- package/dist/services/create/ai-generator.js +0 -178
- package/dist/services/create/ai-generator.js.map +0 -1
- package/dist/services/create/index.d.ts +0 -27
- package/dist/services/create/index.d.ts.map +0 -1
- package/dist/services/create/index.js +0 -36
- package/dist/services/create/index.js.map +0 -1
- package/dist/services/create/templates.d.ts +0 -21
- package/dist/services/create/templates.d.ts.map +0 -1
- package/dist/services/create/templates.js +0 -37
- package/dist/services/create/templates.js.map +0 -1
- package/dist/services/deps.d.ts +0 -53
- package/dist/services/deps.d.ts.map +0 -1
- package/dist/services/deps.js +0 -62
- package/dist/services/deps.js.map +0 -1
- package/dist/services/diff.d.ts +0 -34
- package/dist/services/diff.d.ts.map +0 -1
- package/dist/services/diff.js +0 -34
- package/dist/services/diff.js.map +0 -1
- package/dist/services/docs/docs-service.d.ts +0 -19
- package/dist/services/docs/docs-service.d.ts.map +0 -1
- package/dist/services/docs/docs-service.js +0 -41
- package/dist/services/docs/docs-service.js.map +0 -1
- package/dist/services/docs/index.d.ts +0 -1
- package/dist/services/docs/index.js +0 -1
- package/dist/services/doctor/checks/ai.js +0 -119
- package/dist/services/doctor/checks/ai.js.map +0 -1
- package/dist/services/doctor/checks/cli.js +0 -156
- package/dist/services/doctor/checks/cli.js.map +0 -1
- package/dist/services/doctor/checks/config.js +0 -303
- package/dist/services/doctor/checks/config.js.map +0 -1
- package/dist/services/doctor/checks/deps.js +0 -267
- package/dist/services/doctor/checks/deps.js.map +0 -1
- package/dist/services/doctor/checks/index.js +0 -7
- package/dist/services/doctor/checks/layers.js +0 -139
- package/dist/services/doctor/checks/layers.js.map +0 -1
- package/dist/services/doctor/checks/mcp.js +0 -145
- package/dist/services/doctor/checks/mcp.js.map +0 -1
- package/dist/services/doctor/checks/workspace.js +0 -263
- package/dist/services/doctor/checks/workspace.js.map +0 -1
- package/dist/services/doctor/doctor-service.d.ts +0 -24
- package/dist/services/doctor/doctor-service.d.ts.map +0 -1
- package/dist/services/doctor/doctor-service.js +0 -118
- package/dist/services/doctor/doctor-service.js.map +0 -1
- package/dist/services/doctor/index.d.ts +0 -2
- package/dist/services/doctor/index.js +0 -2
- package/dist/services/doctor/types.d.ts +0 -118
- package/dist/services/doctor/types.d.ts.map +0 -1
- package/dist/services/doctor/types.js +0 -29
- package/dist/services/doctor/types.js.map +0 -1
- package/dist/services/formatter.d.ts +0 -15
- package/dist/services/formatter.d.ts.map +0 -1
- package/dist/services/formatter.js +0 -26
- package/dist/services/formatter.js.map +0 -1
- package/dist/services/hooks/hooks-service.d.ts +0 -24
- package/dist/services/hooks/hooks-service.d.ts.map +0 -1
- package/dist/services/hooks/hooks-service.js +0 -126
- package/dist/services/hooks/hooks-service.js.map +0 -1
- package/dist/services/hooks/index.d.ts +0 -10
- package/dist/services/hooks/index.d.ts.map +0 -1
- package/dist/services/hooks/index.js +0 -12
- package/dist/services/hooks/index.js.map +0 -1
- package/dist/services/hooks/types.d.ts +0 -56
- package/dist/services/hooks/types.d.ts.map +0 -1
- package/dist/services/impact/formatters.d.ts +0 -27
- package/dist/services/impact/formatters.d.ts.map +0 -1
- package/dist/services/impact/formatters.js +0 -111
- package/dist/services/impact/formatters.js.map +0 -1
- package/dist/services/impact/impact-detection-service.d.ts +0 -22
- package/dist/services/impact/impact-detection-service.d.ts.map +0 -1
- package/dist/services/impact/impact-detection-service.js +0 -96
- package/dist/services/impact/impact-detection-service.js.map +0 -1
- package/dist/services/impact/index.d.ts +0 -11
- package/dist/services/impact/index.d.ts.map +0 -1
- package/dist/services/impact/index.js +0 -16
- package/dist/services/impact/index.js.map +0 -1
- package/dist/services/impact/types.d.ts +0 -58
- package/dist/services/impact/types.d.ts.map +0 -1
- package/dist/services/implementation/discovery.d.ts +0 -30
- package/dist/services/implementation/discovery.d.ts.map +0 -1
- package/dist/services/implementation/discovery.js +0 -144
- package/dist/services/implementation/discovery.js.map +0 -1
- package/dist/services/implementation/index.d.ts +0 -3
- package/dist/services/implementation/index.js +0 -2
- package/dist/services/implementation/resolver.d.ts +0 -44
- package/dist/services/implementation/resolver.d.ts.map +0 -1
- package/dist/services/implementation/resolver.js +0 -224
- package/dist/services/implementation/resolver.js.map +0 -1
- package/dist/services/implementation/types.d.ts +0 -79
- package/dist/services/implementation/types.d.ts.map +0 -1
- package/dist/services/index.d.ts +0 -91
- package/dist/services/index.js +0 -87
- package/dist/services/integrity-diagram.d.ts +0 -36
- package/dist/services/integrity-diagram.d.ts.map +0 -1
- package/dist/services/integrity-diagram.js +0 -275
- package/dist/services/integrity-diagram.js.map +0 -1
- package/dist/services/integrity.d.ts +0 -134
- package/dist/services/integrity.d.ts.map +0 -1
- package/dist/services/integrity.js +0 -272
- package/dist/services/integrity.js.map +0 -1
- package/dist/services/layer-discovery.d.ts +0 -77
- package/dist/services/layer-discovery.d.ts.map +0 -1
- package/dist/services/layer-discovery.js +0 -121
- package/dist/services/layer-discovery.js.map +0 -1
- package/dist/services/list.d.ts +0 -31
- package/dist/services/list.d.ts.map +0 -1
- package/dist/services/list.js +0 -36
- package/dist/services/list.js.map +0 -1
- package/dist/services/llm/index.d.ts +0 -28
- package/dist/services/llm/index.d.ts.map +0 -1
- package/dist/services/llm/index.js +0 -187
- package/dist/services/llm/index.js.map +0 -1
- package/dist/services/llm/verify-static.d.ts +0 -26
- package/dist/services/llm/verify-static.d.ts.map +0 -1
- package/dist/services/llm/verify-static.js +0 -82
- package/dist/services/llm/verify-static.js.map +0 -1
- package/dist/services/openapi/export-service.d.ts +0 -53
- package/dist/services/openapi/export-service.d.ts.map +0 -1
- package/dist/services/openapi/export-service.js +0 -50
- package/dist/services/openapi/export-service.js.map +0 -1
- package/dist/services/openapi/import-service.d.ts +0 -17
- package/dist/services/openapi/import-service.d.ts.map +0 -1
- package/dist/services/openapi/import-service.js +0 -168
- package/dist/services/openapi/import-service.js.map +0 -1
- package/dist/services/openapi/index.d.ts +0 -5
- package/dist/services/openapi/index.js +0 -4
- package/dist/services/openapi/sync-service.d.ts +0 -17
- package/dist/services/openapi/sync-service.d.ts.map +0 -1
- package/dist/services/openapi/sync-service.js +0 -120
- package/dist/services/openapi/sync-service.js.map +0 -1
- package/dist/services/openapi/types.d.ts +0 -162
- package/dist/services/openapi/types.d.ts.map +0 -1
- package/dist/services/openapi/validate-service.d.ts +0 -16
- package/dist/services/openapi/validate-service.d.ts.map +0 -1
- package/dist/services/openapi/validate-service.js +0 -130
- package/dist/services/openapi/validate-service.js.map +0 -1
- package/dist/services/quickstart/dependencies.d.ts +0 -31
- package/dist/services/quickstart/dependencies.d.ts.map +0 -1
- package/dist/services/quickstart/dependencies.js +0 -57
- package/dist/services/quickstart/dependencies.js.map +0 -1
- package/dist/services/quickstart/index.js +0 -2
- package/dist/services/quickstart/quickstart-service.d.ts +0 -20
- package/dist/services/quickstart/quickstart-service.d.ts.map +0 -1
- package/dist/services/quickstart/quickstart-service.js +0 -196
- package/dist/services/quickstart/quickstart-service.js.map +0 -1
- package/dist/services/quickstart/types.d.ts +0 -81
- package/dist/services/quickstart/types.d.ts.map +0 -1
- package/dist/services/regenerator.d.ts +0 -18
- package/dist/services/regenerator.d.ts.map +0 -1
- package/dist/services/regenerator.js +0 -23
- package/dist/services/regenerator.js.map +0 -1
- package/dist/services/registry.d.ts +0 -53
- package/dist/services/registry.d.ts.map +0 -1
- package/dist/services/registry.js +0 -74
- package/dist/services/registry.js.map +0 -1
- package/dist/services/rulesync.d.ts +0 -17
- package/dist/services/rulesync.d.ts.map +0 -1
- package/dist/services/rulesync.js +0 -71
- package/dist/services/rulesync.js.map +0 -1
- package/dist/services/setup/config-generators.d.ts +0 -42
- package/dist/services/setup/config-generators.d.ts.map +0 -1
- package/dist/services/setup/config-generators.js +0 -252
- package/dist/services/setup/config-generators.js.map +0 -1
- package/dist/services/setup/file-merger.d.ts +0 -27
- package/dist/services/setup/file-merger.d.ts.map +0 -1
- package/dist/services/setup/file-merger.js +0 -61
- package/dist/services/setup/file-merger.js.map +0 -1
- package/dist/services/setup/index.js +0 -4
- package/dist/services/setup/setup-service.d.ts +0 -12
- package/dist/services/setup/setup-service.d.ts.map +0 -1
- package/dist/services/setup/setup-service.js +0 -96
- package/dist/services/setup/setup-service.js.map +0 -1
- package/dist/services/setup/targets/agents-md.js +0 -47
- package/dist/services/setup/targets/agents-md.js.map +0 -1
- package/dist/services/setup/targets/cli-config.js +0 -60
- package/dist/services/setup/targets/cli-config.js.map +0 -1
- package/dist/services/setup/targets/cursor-rules.js +0 -48
- package/dist/services/setup/targets/cursor-rules.js.map +0 -1
- package/dist/services/setup/targets/mcp-claude.js +0 -60
- package/dist/services/setup/targets/mcp-claude.js.map +0 -1
- package/dist/services/setup/targets/mcp-cursor.js +0 -59
- package/dist/services/setup/targets/mcp-cursor.js.map +0 -1
- package/dist/services/setup/targets/vscode-settings.js +0 -63
- package/dist/services/setup/targets/vscode-settings.js.map +0 -1
- package/dist/services/setup/types.d.ts +0 -85
- package/dist/services/setup/types.d.ts.map +0 -1
- package/dist/services/setup/types.js +0 -27
- package/dist/services/setup/types.js.map +0 -1
- package/dist/services/sync.d.ts +0 -42
- package/dist/services/sync.d.ts.map +0 -1
- package/dist/services/sync.js +0 -64
- package/dist/services/sync.js.map +0 -1
- package/dist/services/test/index.d.ts +0 -1
- package/dist/services/test/index.js +0 -1
- package/dist/services/test/test-service.d.ts +0 -22
- package/dist/services/test/test-service.d.ts.map +0 -1
- package/dist/services/test/test-service.js +0 -81
- package/dist/services/test/test-service.js.map +0 -1
- package/dist/services/upgrade/index.d.ts +0 -10
- package/dist/services/upgrade/index.d.ts.map +0 -1
- package/dist/services/upgrade/index.js +0 -15
- package/dist/services/upgrade/index.js.map +0 -1
- package/dist/services/upgrade/types.d.ts +0 -78
- package/dist/services/upgrade/types.d.ts.map +0 -1
- package/dist/services/upgrade/upgrade-service.d.ts +0 -38
- package/dist/services/upgrade/upgrade-service.d.ts.map +0 -1
- package/dist/services/upgrade/upgrade-service.js +0 -201
- package/dist/services/upgrade/upgrade-service.js.map +0 -1
- package/dist/services/validate/blueprint-validator.d.ts +0 -23
- package/dist/services/validate/blueprint-validator.d.ts.map +0 -1
- package/dist/services/validate/blueprint-validator.js +0 -50
- package/dist/services/validate/blueprint-validator.js.map +0 -1
- package/dist/services/validate/implementation-agent-validator.d.ts +0 -20
- package/dist/services/validate/implementation-agent-validator.d.ts.map +0 -1
- package/dist/services/validate/implementation-agent-validator.js +0 -42
- package/dist/services/validate/implementation-agent-validator.js.map +0 -1
- package/dist/services/validate/implementation-validator.d.ts +0 -32
- package/dist/services/validate/implementation-validator.d.ts.map +0 -1
- package/dist/services/validate/implementation-validator.js +0 -64
- package/dist/services/validate/implementation-validator.js.map +0 -1
- package/dist/services/validate/index.d.ts +0 -5
- package/dist/services/validate/index.js +0 -5
- package/dist/services/validate/spec-validator.d.ts +0 -42
- package/dist/services/validate/spec-validator.d.ts.map +0 -1
- package/dist/services/validate/spec-validator.js +0 -50
- package/dist/services/validate/spec-validator.js.map +0 -1
- package/dist/services/validate/tenant-validator.d.ts +0 -21
- package/dist/services/validate/tenant-validator.d.ts.map +0 -1
- package/dist/services/validate/tenant-validator.js +0 -165
- package/dist/services/validate/tenant-validator.js.map +0 -1
- package/dist/services/verification-cache/adapters/filesystem.d.ts +0 -46
- package/dist/services/verification-cache/adapters/filesystem.d.ts.map +0 -1
- package/dist/services/verification-cache/adapters/filesystem.js +0 -120
- package/dist/services/verification-cache/adapters/filesystem.js.map +0 -1
- package/dist/services/verification-cache/adapters/in-memory.d.ts +0 -27
- package/dist/services/verification-cache/adapters/in-memory.d.ts.map +0 -1
- package/dist/services/verification-cache/adapters/in-memory.js +0 -46
- package/dist/services/verification-cache/adapters/in-memory.js.map +0 -1
- package/dist/services/verification-cache/adapters/index.d.ts +0 -3
- package/dist/services/verification-cache/adapters/index.js +0 -3
- package/dist/services/verification-cache/adapters/workspace-state.d.ts +0 -49
- package/dist/services/verification-cache/adapters/workspace-state.d.ts.map +0 -1
- package/dist/services/verification-cache/adapters/workspace-state.js +0 -91
- package/dist/services/verification-cache/adapters/workspace-state.js.map +0 -1
- package/dist/services/verification-cache/cache-service.d.ts +0 -70
- package/dist/services/verification-cache/cache-service.d.ts.map +0 -1
- package/dist/services/verification-cache/cache-service.js +0 -256
- package/dist/services/verification-cache/cache-service.js.map +0 -1
- package/dist/services/verification-cache/index.d.ts +0 -6
- package/dist/services/verification-cache/index.js +0 -6
- package/dist/services/verification-cache/types.d.ts +0 -124
- package/dist/services/verification-cache/types.d.ts.map +0 -1
- package/dist/services/verification-cache/types.js +0 -16
- package/dist/services/verification-cache/types.js.map +0 -1
- package/dist/services/verify/ai-verifier.d.ts +0 -25
- package/dist/services/verify/ai-verifier.d.ts.map +0 -1
- package/dist/services/verify/ai-verifier.js +0 -403
- package/dist/services/verify/ai-verifier.js.map +0 -1
- package/dist/services/verify/behavior-verifier.d.ts +0 -12
- package/dist/services/verify/behavior-verifier.d.ts.map +0 -1
- package/dist/services/verify/behavior-verifier.js +0 -186
- package/dist/services/verify/behavior-verifier.js.map +0 -1
- package/dist/services/verify/index.d.ts +0 -5
- package/dist/services/verify/index.js +0 -4
- package/dist/services/verify/structure-verifier.d.ts +0 -12
- package/dist/services/verify/structure-verifier.d.ts.map +0 -1
- package/dist/services/verify/structure-verifier.js +0 -196
- package/dist/services/verify/structure-verifier.js.map +0 -1
- package/dist/services/verify/types.d.ts +0 -137
- package/dist/services/verify/types.d.ts.map +0 -1
- package/dist/services/verify/verify-service.d.ts +0 -60
- package/dist/services/verify/verify-service.d.ts.map +0 -1
- package/dist/services/verify/verify-service.js +0 -204
- package/dist/services/verify/verify-service.js.map +0 -1
- package/dist/services/versioning/changelog-formatter.d.ts +0 -24
- package/dist/services/versioning/changelog-formatter.d.ts.map +0 -1
- package/dist/services/versioning/changelog-formatter.js +0 -155
- package/dist/services/versioning/changelog-formatter.js.map +0 -1
- package/dist/services/versioning/conventional-commits.d.ts +0 -95
- package/dist/services/versioning/conventional-commits.d.ts.map +0 -1
- package/dist/services/versioning/conventional-commits.js +0 -184
- package/dist/services/versioning/conventional-commits.js.map +0 -1
- package/dist/services/versioning/index.d.ts +0 -12
- package/dist/services/versioning/index.d.ts.map +0 -1
- package/dist/services/versioning/index.js +0 -28
- package/dist/services/versioning/index.js.map +0 -1
- package/dist/services/versioning/types.d.ts +0 -135
- package/dist/services/versioning/types.d.ts.map +0 -1
- package/dist/services/versioning/versioning-service.d.ts +0 -74
- package/dist/services/versioning/versioning-service.d.ts.map +0 -1
- package/dist/services/versioning/versioning-service.js +0 -501
- package/dist/services/versioning/versioning-service.js.map +0 -1
- package/dist/services/watch.d.ts +0 -25
- package/dist/services/watch.d.ts.map +0 -1
- package/dist/services/watch.js +0 -33
- package/dist/services/watch.js.map +0 -1
- package/dist/services/workspace-info.d.ts +0 -62
- package/dist/services/workspace-info.d.ts.map +0 -1
- package/dist/services/workspace-info.js +0 -103
- package/dist/services/workspace-info.js.map +0 -1
- package/dist/templates/app-config.template.d.ts +0 -7
- package/dist/templates/app-config.template.d.ts.map +0 -1
- package/dist/templates/app-config.template.js +0 -107
- package/dist/templates/app-config.template.js.map +0 -1
- package/dist/templates/data-view.template.d.ts +0 -7
- package/dist/templates/data-view.template.d.ts.map +0 -1
- package/dist/templates/data-view.template.js +0 -70
- package/dist/templates/data-view.template.js.map +0 -1
- package/dist/templates/event.template.d.ts +0 -11
- package/dist/templates/event.template.d.ts.map +0 -1
- package/dist/templates/event.template.js +0 -42
- package/dist/templates/event.template.js.map +0 -1
- package/dist/templates/experiment.template.d.ts +0 -7
- package/dist/templates/experiment.template.d.ts.map +0 -1
- package/dist/templates/experiment.template.js +0 -89
- package/dist/templates/experiment.template.js.map +0 -1
- package/dist/templates/handler.template.d.ts +0 -16
- package/dist/templates/handler.template.d.ts.map +0 -1
- package/dist/templates/handler.template.js +0 -100
- package/dist/templates/handler.template.js.map +0 -1
- package/dist/templates/index.d.ts +0 -21
- package/dist/templates/index.d.ts.map +0 -1
- package/dist/templates/index.js +0 -37
- package/dist/templates/index.js.map +0 -1
- package/dist/templates/integration.template.d.ts +0 -7
- package/dist/templates/integration.template.d.ts.map +0 -1
- package/dist/templates/integration.template.js +0 -160
- package/dist/templates/integration.template.js.map +0 -1
- package/dist/templates/knowledge.template.d.ts +0 -7
- package/dist/templates/knowledge.template.d.ts.map +0 -1
- package/dist/templates/knowledge.template.js +0 -75
- package/dist/templates/knowledge.template.js.map +0 -1
- package/dist/templates/migration.template.d.ts +0 -7
- package/dist/templates/migration.template.d.ts.map +0 -1
- package/dist/templates/migration.template.js +0 -62
- package/dist/templates/migration.template.js.map +0 -1
- package/dist/templates/operation.template.d.ts +0 -11
- package/dist/templates/operation.template.d.ts.map +0 -1
- package/dist/templates/operation.template.js +0 -107
- package/dist/templates/operation.template.js.map +0 -1
- package/dist/templates/presentation.template.d.ts +0 -11
- package/dist/templates/presentation.template.d.ts.map +0 -1
- package/dist/templates/presentation.template.js +0 -80
- package/dist/templates/presentation.template.js.map +0 -1
- package/dist/templates/telemetry.template.d.ts +0 -7
- package/dist/templates/telemetry.template.d.ts.map +0 -1
- package/dist/templates/telemetry.template.js +0 -91
- package/dist/templates/telemetry.template.js.map +0 -1
- package/dist/templates/workflow-runner.template.d.ts +0 -16
- package/dist/templates/workflow-runner.template.d.ts.map +0 -1
- package/dist/templates/workflow-runner.template.js +0 -50
- package/dist/templates/workflow-runner.template.js.map +0 -1
- package/dist/templates/workflow.template.d.ts +0 -7
- package/dist/templates/workflow.template.d.ts.map +0 -1
- package/dist/templates/workflow.template.js +0 -69
- package/dist/templates/workflow.template.js.map +0 -1
- package/dist/types/config.d.ts +0 -34
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types.d.ts +0 -324
- package/dist/types.d.ts.map +0 -1
- package/dist/utils/module-loader.js +0 -41
- package/dist/utils/module-loader.js.map +0 -1
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
//#region src/services/setup/types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Setup service types.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Target components that can be configured during setup.
|
|
7
|
+
*/
|
|
8
|
+
type SetupTarget = 'cli-config' | 'vscode-settings' | 'mcp-cursor' | 'mcp-claude' | 'cursor-rules' | 'agents-md';
|
|
9
|
+
/**
|
|
10
|
+
* All available setup targets.
|
|
11
|
+
*/
|
|
12
|
+
declare const ALL_SETUP_TARGETS: SetupTarget[];
|
|
13
|
+
/**
|
|
14
|
+
* Human-readable labels for setup targets.
|
|
15
|
+
*/
|
|
16
|
+
declare const SETUP_TARGET_LABELS: Record<SetupTarget, string>;
|
|
17
|
+
/**
|
|
18
|
+
* Scope of configuration in a monorepo.
|
|
19
|
+
*/
|
|
20
|
+
type SetupScope = 'workspace' | 'package';
|
|
21
|
+
/**
|
|
22
|
+
* Options for the setup service.
|
|
23
|
+
*/
|
|
24
|
+
interface SetupOptions {
|
|
25
|
+
/** Root directory of the workspace (monorepo root or single project root). */
|
|
26
|
+
workspaceRoot: string;
|
|
27
|
+
/** Current package root (may differ from workspaceRoot in monorepos). */
|
|
28
|
+
packageRoot?: string;
|
|
29
|
+
/** Whether this is a monorepo. */
|
|
30
|
+
isMonorepo?: boolean;
|
|
31
|
+
/** Where to create config: workspace level or package level. */
|
|
32
|
+
scope?: SetupScope;
|
|
33
|
+
/** Current package name (if in a monorepo package). */
|
|
34
|
+
packageName?: string;
|
|
35
|
+
/** If true, skip prompts and use defaults. */
|
|
36
|
+
interactive: boolean;
|
|
37
|
+
/** Specific targets to configure (defaults to all). */
|
|
38
|
+
targets: SetupTarget[];
|
|
39
|
+
/** Project name (defaults to directory name). */
|
|
40
|
+
projectName?: string;
|
|
41
|
+
/** Default code owners. */
|
|
42
|
+
defaultOwners?: string[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Result of a single file setup operation.
|
|
46
|
+
*/
|
|
47
|
+
interface SetupFileResult {
|
|
48
|
+
/** Target that was configured. */
|
|
49
|
+
target: SetupTarget;
|
|
50
|
+
/** File path that was created or modified. */
|
|
51
|
+
filePath: string;
|
|
52
|
+
/** Action taken. */
|
|
53
|
+
action: 'created' | 'merged' | 'skipped' | 'error';
|
|
54
|
+
/** Message describing what happened. */
|
|
55
|
+
message: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Full result of the setup operation.
|
|
59
|
+
*/
|
|
60
|
+
interface SetupResult {
|
|
61
|
+
/** Whether all operations succeeded. */
|
|
62
|
+
success: boolean;
|
|
63
|
+
/** Results for each file. */
|
|
64
|
+
files: SetupFileResult[];
|
|
65
|
+
/** Summary message. */
|
|
66
|
+
summary: string;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Callback for interactive prompts during setup.
|
|
70
|
+
*/
|
|
71
|
+
interface SetupPromptCallbacks {
|
|
72
|
+
/** Confirm an action. */
|
|
73
|
+
confirm: (message: string) => Promise<boolean>;
|
|
74
|
+
/** Select multiple options. */
|
|
75
|
+
multiSelect: <T extends string>(message: string, options: {
|
|
76
|
+
value: T;
|
|
77
|
+
label: string;
|
|
78
|
+
selected?: boolean;
|
|
79
|
+
}[]) => Promise<T[]>;
|
|
80
|
+
/** Input a string value. */
|
|
81
|
+
input: (message: string, defaultValue?: string) => Promise<string>;
|
|
82
|
+
}
|
|
83
|
+
//#endregion
|
|
84
|
+
export { ALL_SETUP_TARGETS, SETUP_TARGET_LABELS, SetupFileResult, SetupOptions, SetupPromptCallbacks, SetupResult, SetupScope, SetupTarget };
|
|
85
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../../../src/services/setup/types.ts"],"sourcesContent":[],"mappings":";;AAOA;AAWA;AAYA;AAYA;AAKA;AAwBiB,KAhEL,WAAA,GAgEoB,YAEtB,GAAA,iBAAW,GAAA,YAAA,GAAA,YAAA,GAAA,cAAA,GAAA,WAAA;AAYrB;AAYA;;AAMsB,cArFT,iBAqFS,EArFU,WAqFV,EAAA;;;;AAGsC,cA5E/C,mBA4E+C,EA5E1B,MA4E0B,CA5EnB,WA4EmB,EAAA,MAAA,CAAA;;;;KAhEhD,UAAA;;;;UAKK,YAAA;;;;;;;;UAQP;;;;;;WAMC;;;;;;;;;UAUM,eAAA;;UAEP;;;;;;;;;;;UAYO,WAAA;;;;SAIR;;;;;;;UAQQ,oBAAA;;gCAEe;;;WAIV;;;UACf,QAAQ;;qDAEsC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
//#region src/services/setup/types.ts
|
|
2
|
+
/**
|
|
3
|
+
* All available setup targets.
|
|
4
|
+
*/
|
|
5
|
+
const ALL_SETUP_TARGETS = [
|
|
6
|
+
"cli-config",
|
|
7
|
+
"vscode-settings",
|
|
8
|
+
"mcp-cursor",
|
|
9
|
+
"mcp-claude",
|
|
10
|
+
"cursor-rules",
|
|
11
|
+
"agents-md"
|
|
12
|
+
];
|
|
13
|
+
/**
|
|
14
|
+
* Human-readable labels for setup targets.
|
|
15
|
+
*/
|
|
16
|
+
const SETUP_TARGET_LABELS = {
|
|
17
|
+
"cli-config": "CLI Configuration (.contractsrc.json)",
|
|
18
|
+
"vscode-settings": "VS Code Settings (.vscode/settings.json)",
|
|
19
|
+
"mcp-cursor": "MCP for Cursor (.cursor/mcp.json)",
|
|
20
|
+
"mcp-claude": "MCP for Claude Desktop",
|
|
21
|
+
"cursor-rules": "Cursor AI Rules (.cursor/rules/)",
|
|
22
|
+
"agents-md": "Project AI Guide (AGENTS.md)"
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
//#endregion
|
|
26
|
+
export { ALL_SETUP_TARGETS, SETUP_TARGET_LABELS };
|
|
27
|
+
//# sourceMappingURL=types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","names":[],"sources":["../../../src/services/setup/types.ts"],"sourcesContent":["/**\n * Setup service types.\n */\n\n/**\n * Target components that can be configured during setup.\n */\nexport type SetupTarget =\n | 'cli-config'\n | 'vscode-settings'\n | 'mcp-cursor'\n | 'mcp-claude'\n | 'cursor-rules'\n | 'agents-md';\n\n/**\n * All available setup targets.\n */\nexport const ALL_SETUP_TARGETS: SetupTarget[] = [\n 'cli-config',\n 'vscode-settings',\n 'mcp-cursor',\n 'mcp-claude',\n 'cursor-rules',\n 'agents-md',\n];\n\n/**\n * Human-readable labels for setup targets.\n */\nexport const SETUP_TARGET_LABELS: Record<SetupTarget, string> = {\n 'cli-config': 'CLI Configuration (.contractsrc.json)',\n 'vscode-settings': 'VS Code Settings (.vscode/settings.json)',\n 'mcp-cursor': 'MCP for Cursor (.cursor/mcp.json)',\n 'mcp-claude': 'MCP for Claude Desktop',\n 'cursor-rules': 'Cursor AI Rules (.cursor/rules/)',\n 'agents-md': 'Project AI Guide (AGENTS.md)',\n};\n\n/**\n * Scope of configuration in a monorepo.\n */\nexport type SetupScope = 'workspace' | 'package';\n\n/**\n * Options for the setup service.\n */\nexport interface SetupOptions {\n /** Root directory of the workspace (monorepo root or single project root). */\n workspaceRoot: string;\n /** Current package root (may differ from workspaceRoot in monorepos). */\n packageRoot?: string;\n /** Whether this is a monorepo. */\n isMonorepo?: boolean;\n /** Where to create config: workspace level or package level. */\n scope?: SetupScope;\n /** Current package name (if in a monorepo package). */\n packageName?: string;\n /** If true, skip prompts and use defaults. */\n interactive: boolean;\n /** Specific targets to configure (defaults to all). */\n targets: SetupTarget[];\n /** Project name (defaults to directory name). */\n projectName?: string;\n /** Default code owners. */\n defaultOwners?: string[];\n}\n\n/**\n * Result of a single file setup operation.\n */\nexport interface SetupFileResult {\n /** Target that was configured. */\n target: SetupTarget;\n /** File path that was created or modified. */\n filePath: string;\n /** Action taken. */\n action: 'created' | 'merged' | 'skipped' | 'error';\n /** Message describing what happened. */\n message: string;\n}\n\n/**\n * Full result of the setup operation.\n */\nexport interface SetupResult {\n /** Whether all operations succeeded. */\n success: boolean;\n /** Results for each file. */\n files: SetupFileResult[];\n /** Summary message. */\n summary: string;\n}\n\n/**\n * Callback for interactive prompts during setup.\n */\nexport interface SetupPromptCallbacks {\n /** Confirm an action. */\n confirm: (message: string) => Promise<boolean>;\n /** Select multiple options. */\n multiSelect: <T extends string>(\n message: string,\n options: { value: T; label: string; selected?: boolean }[]\n ) => Promise<T[]>;\n /** Input a string value. */\n input: (message: string, defaultValue?: string) => Promise<string>;\n}\n"],"mappings":";;;;AAkBA,MAAa,oBAAmC;CAC9C;CACA;CACA;CACA;CACA;CACA;CACD;;;;AAKD,MAAa,sBAAmD;CAC9D,cAAc;CACd,mBAAmB;CACnB,cAAc;CACd,cAAc;CACd,gBAAgB;CAChB,aAAa;CACd"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { FsAdapter } from "../ports/fs.mjs";
|
|
2
|
+
import { LoggerAdapter } from "../ports/logger.mjs";
|
|
3
|
+
import { ValidateSpecResult } from "./validate/spec-validator.mjs";
|
|
4
|
+
import "./validate/index.mjs";
|
|
5
|
+
import { BuildSpecOptions } from "./build.mjs";
|
|
6
|
+
import { WorkspaceConfig } from "@contractspec/module.workspace";
|
|
7
|
+
|
|
8
|
+
//#region src/services/sync.d.ts
|
|
9
|
+
|
|
10
|
+
interface SyncSpecsOptions {
|
|
11
|
+
pattern?: string;
|
|
12
|
+
outputDirs?: (string | undefined)[];
|
|
13
|
+
validate?: boolean;
|
|
14
|
+
buildOptions?: Omit<BuildSpecOptions, 'outputDir'>;
|
|
15
|
+
dryRun?: boolean;
|
|
16
|
+
}
|
|
17
|
+
interface SyncSpecsRunResult {
|
|
18
|
+
specPath: string;
|
|
19
|
+
outputDir?: string;
|
|
20
|
+
validation?: ValidateSpecResult;
|
|
21
|
+
build?: unknown;
|
|
22
|
+
error?: {
|
|
23
|
+
phase: 'validate' | 'build';
|
|
24
|
+
message: string;
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
interface SyncSpecsResult {
|
|
28
|
+
specs: string[];
|
|
29
|
+
runs: SyncSpecsRunResult[];
|
|
30
|
+
}
|
|
31
|
+
type SyncBuildFn<B> = (specPath: string, outputDir: string | undefined) => Promise<B>;
|
|
32
|
+
type SyncValidateFn = (specPath: string) => Promise<ValidateSpecResult>;
|
|
33
|
+
declare function syncSpecs(adapters: {
|
|
34
|
+
fs: FsAdapter;
|
|
35
|
+
logger: LoggerAdapter;
|
|
36
|
+
}, config: WorkspaceConfig, options?: SyncSpecsOptions, overrides?: {
|
|
37
|
+
build?: SyncBuildFn<unknown>;
|
|
38
|
+
validate?: SyncValidateFn;
|
|
39
|
+
}): Promise<SyncSpecsResult>;
|
|
40
|
+
//#endregion
|
|
41
|
+
export { SyncBuildFn, SyncSpecsOptions, SyncSpecsResult, SyncSpecsRunResult, SyncValidateFn, syncSpecs };
|
|
42
|
+
//# sourceMappingURL=sync.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.mts","names":[],"sources":["../../src/services/sync.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AAqCY,UAxBK,gBAAA,CA2BJ;EAED,OAAA,CAAA,EAAA,MAAA;EAEU,UAAA,CAAA,EAAS,CAAA,MAAA,GAAA,SAAA,CAAA,EAAA;EACb,QAAA,CAAA,EAAA,OAAA;EAAmB,YAAA,CAAA,EA5BpB,IA4BoB,CA5Bf,gBA4Be,EAAA,WAAA,CAAA;EAC3B,MAAA,CAAA,EAAA,OAAA;;AAGE,UA5BK,kBAAA,CA4BL;EACG,QAAA,EAAA,MAAA;EAEJ,SAAA,CAAA,EAAA,MAAA;EAAR,UAAA,CAAA,EA5BY,kBA4BZ;EAAO,KAAA,CAAA,EAAA,OAAA;;;;;;UApBO,eAAA;;QAET;;KAGI,sEAGP,QAAQ;KAED,cAAA,yBAAuC,QAAQ;iBAErC,SAAA;MACJ;UAAmB;WAC3B,2BACC;UAEC;aACG;IAEZ,QAAQ"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { validateSpec } from "./validate/spec-validator.mjs";
|
|
2
|
+
import "./validate/index.mjs";
|
|
3
|
+
import { buildSpec } from "./build.mjs";
|
|
4
|
+
|
|
5
|
+
//#region src/services/sync.ts
|
|
6
|
+
async function syncSpecs(adapters, config, options = {}, overrides) {
|
|
7
|
+
const { fs, logger } = adapters;
|
|
8
|
+
const specs = await fs.glob({ pattern: options.pattern });
|
|
9
|
+
const outputDirs = options.outputDirs?.length ? options.outputDirs : [void 0];
|
|
10
|
+
const runs = [];
|
|
11
|
+
const validateFn = overrides?.validate ?? ((specPath) => validateSpec(specPath, {
|
|
12
|
+
fs,
|
|
13
|
+
logger
|
|
14
|
+
}));
|
|
15
|
+
const buildFn = overrides?.build ?? ((specPath, outputDir) => buildSpec(specPath, {
|
|
16
|
+
fs,
|
|
17
|
+
logger
|
|
18
|
+
}, outputDir ? {
|
|
19
|
+
...config,
|
|
20
|
+
outputDir
|
|
21
|
+
} : config, {
|
|
22
|
+
...options.buildOptions ?? {},
|
|
23
|
+
outputDir
|
|
24
|
+
}));
|
|
25
|
+
for (const specPath of specs) for (const outputDir of outputDirs) {
|
|
26
|
+
const run = {
|
|
27
|
+
specPath,
|
|
28
|
+
outputDir
|
|
29
|
+
};
|
|
30
|
+
if (options.validate) try {
|
|
31
|
+
run.validation = await validateFn(specPath);
|
|
32
|
+
} catch (error) {
|
|
33
|
+
run.error = {
|
|
34
|
+
phase: "validate",
|
|
35
|
+
message: error instanceof Error ? error.message : String(error)
|
|
36
|
+
};
|
|
37
|
+
runs.push(run);
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
if (!options.dryRun) try {
|
|
41
|
+
run.build = await buildFn(specPath, outputDir);
|
|
42
|
+
} catch (error) {
|
|
43
|
+
run.error = {
|
|
44
|
+
phase: "build",
|
|
45
|
+
message: error instanceof Error ? error.message : String(error)
|
|
46
|
+
};
|
|
47
|
+
runs.push(run);
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
else logger.info("[dry-run] syncSpecs skipped build", {
|
|
51
|
+
specPath,
|
|
52
|
+
outputDir
|
|
53
|
+
});
|
|
54
|
+
runs.push(run);
|
|
55
|
+
}
|
|
56
|
+
return {
|
|
57
|
+
specs,
|
|
58
|
+
runs
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
//#endregion
|
|
63
|
+
export { syncSpecs };
|
|
64
|
+
//# sourceMappingURL=sync.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.mjs","names":[],"sources":["../../src/services/sync.ts"],"sourcesContent":["/**\n * Sync service.\n *\n * Build (and optionally validate) all discovered specs, optionally repeating into\n * multiple output buckets (./generated/<bucket>/ or any output dir).\n */\n\nimport type { WorkspaceConfig } from '@contractspec/module.workspace';\nimport type { FsAdapter } from '../ports/fs';\nimport type { LoggerAdapter } from '../ports/logger';\nimport { buildSpec, type BuildSpecOptions } from './build';\nimport { validateSpec, type ValidateSpecResult } from './validate';\n\nexport interface SyncSpecsOptions {\n pattern?: string;\n outputDirs?: (string | undefined)[];\n validate?: boolean;\n buildOptions?: Omit<BuildSpecOptions, 'outputDir'>;\n dryRun?: boolean;\n}\n\nexport interface SyncSpecsRunResult {\n specPath: string;\n outputDir?: string;\n validation?: ValidateSpecResult;\n build?: unknown;\n error?: {\n phase: 'validate' | 'build';\n message: string;\n };\n}\n\nexport interface SyncSpecsResult {\n specs: string[];\n runs: SyncSpecsRunResult[];\n}\n\nexport type SyncBuildFn<B> = (\n specPath: string,\n outputDir: string | undefined\n) => Promise<B>;\n\nexport type SyncValidateFn = (specPath: string) => Promise<ValidateSpecResult>;\n\nexport async function syncSpecs(\n adapters: { fs: FsAdapter; logger: LoggerAdapter },\n config: WorkspaceConfig,\n options: SyncSpecsOptions = {},\n overrides?: {\n build?: SyncBuildFn<unknown>;\n validate?: SyncValidateFn;\n }\n): Promise<SyncSpecsResult> {\n const { fs, logger } = adapters;\n\n const specs = await fs.glob({ pattern: options.pattern });\n const outputDirs = options.outputDirs?.length\n ? options.outputDirs\n : [undefined];\n\n const runs: SyncSpecsRunResult[] = [];\n\n const validateFn: SyncValidateFn =\n overrides?.validate ??\n ((specPath) => validateSpec(specPath, { fs, logger }));\n\n const buildFn: SyncBuildFn<unknown> =\n overrides?.build ??\n ((specPath, outputDir) =>\n buildSpec(\n specPath,\n { fs, logger },\n outputDir ? { ...config, outputDir } : config,\n { ...(options.buildOptions ?? {}), outputDir }\n ));\n\n for (const specPath of specs) {\n for (const outputDir of outputDirs) {\n const run: SyncSpecsRunResult = { specPath, outputDir };\n\n if (options.validate) {\n try {\n run.validation = await validateFn(specPath);\n } catch (error) {\n run.error = {\n phase: 'validate',\n message: error instanceof Error ? error.message : String(error),\n };\n runs.push(run);\n continue;\n }\n }\n\n if (!options.dryRun) {\n try {\n run.build = await buildFn(specPath, outputDir);\n } catch (error) {\n run.error = {\n phase: 'build',\n message: error instanceof Error ? error.message : String(error),\n };\n runs.push(run);\n continue;\n }\n } else {\n logger.info('[dry-run] syncSpecs skipped build', {\n specPath,\n outputDir,\n });\n }\n\n runs.push(run);\n }\n }\n\n return { specs, runs };\n}\n"],"mappings":";;;;;AA4CA,eAAsB,UACpB,UACA,QACA,UAA4B,EAAE,EAC9B,WAI0B;CAC1B,MAAM,EAAE,IAAI,WAAW;CAEvB,MAAM,QAAQ,MAAM,GAAG,KAAK,EAAE,SAAS,QAAQ,SAAS,CAAC;CACzD,MAAM,aAAa,QAAQ,YAAY,SACnC,QAAQ,aACR,CAAC,OAAU;CAEf,MAAM,OAA6B,EAAE;CAErC,MAAM,aACJ,WAAW,cACT,aAAa,aAAa,UAAU;EAAE;EAAI;EAAQ,CAAC;CAEvD,MAAM,UACJ,WAAW,WACT,UAAU,cACV,UACE,UACA;EAAE;EAAI;EAAQ,EACd,YAAY;EAAE,GAAG;EAAQ;EAAW,GAAG,QACvC;EAAE,GAAI,QAAQ,gBAAgB,EAAE;EAAG;EAAW,CAC/C;AAEL,MAAK,MAAM,YAAY,MACrB,MAAK,MAAM,aAAa,YAAY;EAClC,MAAM,MAA0B;GAAE;GAAU;GAAW;AAEvD,MAAI,QAAQ,SACV,KAAI;AACF,OAAI,aAAa,MAAM,WAAW,SAAS;WACpC,OAAO;AACd,OAAI,QAAQ;IACV,OAAO;IACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;IAChE;AACD,QAAK,KAAK,IAAI;AACd;;AAIJ,MAAI,CAAC,QAAQ,OACX,KAAI;AACF,OAAI,QAAQ,MAAM,QAAQ,UAAU,UAAU;WACvC,OAAO;AACd,OAAI,QAAQ;IACV,OAAO;IACP,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;IAChE;AACD,QAAK,KAAK,IAAI;AACd;;MAGF,QAAO,KAAK,qCAAqC;GAC/C;GACA;GACD,CAAC;AAGJ,OAAK,KAAK,IAAI;;AAIlB,QAAO;EAAE;EAAO;EAAM"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { LoggerAdapter } from "../../ports/logger.mjs";
|
|
2
|
+
import { OperationSpec } from "@contractspec/lib.contracts";
|
|
3
|
+
import { TestSpec } from "@contractspec/lib.contracts/tests";
|
|
4
|
+
import { LanguageModel } from "@contractspec/lib.ai-agent";
|
|
5
|
+
|
|
6
|
+
//#region src/services/test/test-generator-service.d.ts
|
|
7
|
+
interface TestGeneratorOptions {
|
|
8
|
+
model?: LanguageModel;
|
|
9
|
+
maxScenarios?: number;
|
|
10
|
+
}
|
|
11
|
+
declare class TestGeneratorService {
|
|
12
|
+
private readonly logger;
|
|
13
|
+
private readonly defaultModel?;
|
|
14
|
+
constructor(logger: LoggerAdapter, defaultModel?: LanguageModel | undefined);
|
|
15
|
+
generateTests(spec: OperationSpec<any, any>,
|
|
16
|
+
// Use any to satisfy generics for now
|
|
17
|
+
options?: TestGeneratorOptions): Promise<TestSpec>;
|
|
18
|
+
private parseResponse;
|
|
19
|
+
private enrichSpec;
|
|
20
|
+
private logUsage;
|
|
21
|
+
}
|
|
22
|
+
//#endregion
|
|
23
|
+
export { TestGeneratorOptions, TestGeneratorService };
|
|
24
|
+
//# sourceMappingURL=test-generator-service.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-generator-service.d.mts","names":[],"sources":["../../../src/services/test/test-generator-service.ts"],"sourcesContent":[],"mappings":";;;;;;UAYiB,oBAAA;UACP;EADO,YAAA,CAAA,EAAA,MAAA;AAyBjB;AAE6B,cAFhB,oBAAA,CAEgB;EACO,iBAAA,MAAA;EAK1B,iBAAA,YAAA;EACG,WAAA,CAAA,MAAA,EAPgB,aAOhB,EAAA,YAAA,CAAA,EANuB,aAMvB,GAAA,SAAA;EACA,aAAA,CAAA,IAAA,EAFH,aAEG,CAAA,GAAA,EAAA,GAAA,CAAA;EAAA;EAAR,OAAA,CAAA,EADQ,oBACR,CAAA,EAAA,OAAA,CAAQ,QAAR,CAAA;EAAO,QAAA,aAAA"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { generateText } from "ai";
|
|
2
|
+
import "@contractspec/lib.contracts/tests";
|
|
3
|
+
|
|
4
|
+
//#region src/services/test/test-generator-service.ts
|
|
5
|
+
const SYSTEM_PROMPT = `
|
|
6
|
+
You are an expert software test engineer specializing in ContractSpec.
|
|
7
|
+
Your goal is to generate comprehensive test scenarios for a given ContractSpec Operation.
|
|
8
|
+
|
|
9
|
+
A TestSpec consists of:
|
|
10
|
+
- targeted operation
|
|
11
|
+
- fixtures (setup state)
|
|
12
|
+
- scenarios (given/when/then)
|
|
13
|
+
|
|
14
|
+
For each scenario:
|
|
15
|
+
1. Define 'given': initial state or data setup
|
|
16
|
+
2. Define 'when': the operation execution with specific input
|
|
17
|
+
3. Define 'then': assertions on output, error, or events
|
|
18
|
+
|
|
19
|
+
Generate scenarios covering:
|
|
20
|
+
- Happy path (valid input, successful execution)
|
|
21
|
+
- Edge cases (boundary values, optional fields)
|
|
22
|
+
- Error cases (invalid input, business rule violations)
|
|
23
|
+
`.trim();
|
|
24
|
+
var TestGeneratorService = class {
|
|
25
|
+
constructor(logger, defaultModel) {
|
|
26
|
+
this.logger = logger;
|
|
27
|
+
this.defaultModel = defaultModel;
|
|
28
|
+
}
|
|
29
|
+
async generateTests(spec, options = {}) {
|
|
30
|
+
const model = options.model ?? this.defaultModel;
|
|
31
|
+
if (!model) throw new Error("No AI model provided for test generation");
|
|
32
|
+
this.logger.info(`Generating tests for operation ${spec.meta.key}...`);
|
|
33
|
+
const prompt = `
|
|
34
|
+
Generate a TestSpec for the following Operation:
|
|
35
|
+
|
|
36
|
+
\`\`\`json
|
|
37
|
+
${JSON.stringify(spec, null, 2)}
|
|
38
|
+
\`\`\`
|
|
39
|
+
|
|
40
|
+
The output must be a valid JSON object conforming to the TestSpec interface.
|
|
41
|
+
Do not include markdown formatting or explanations, just the JSON.
|
|
42
|
+
`.trim();
|
|
43
|
+
try {
|
|
44
|
+
const { text, usage } = await generateText({
|
|
45
|
+
model,
|
|
46
|
+
system: SYSTEM_PROMPT,
|
|
47
|
+
prompt
|
|
48
|
+
});
|
|
49
|
+
this.logUsage(usage);
|
|
50
|
+
const generated = this.parseResponse(text);
|
|
51
|
+
return this.enrichSpec(generated, spec);
|
|
52
|
+
} catch (error) {
|
|
53
|
+
this.logger.error("Failed to generate tests", { error });
|
|
54
|
+
throw error;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
parseResponse(text) {
|
|
58
|
+
try {
|
|
59
|
+
const cleaned = text.replace(/```json\n?|\n?```/g, "");
|
|
60
|
+
return JSON.parse(cleaned);
|
|
61
|
+
} catch (_e) {
|
|
62
|
+
throw new Error("Failed to parse AI response as JSON");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
enrichSpec(generated, target) {
|
|
66
|
+
return {
|
|
67
|
+
meta: {
|
|
68
|
+
key: `${target.meta.key}.test`,
|
|
69
|
+
version: target.meta.version ?? "0.0.1",
|
|
70
|
+
owners: target.meta.owners ?? []
|
|
71
|
+
},
|
|
72
|
+
target: {
|
|
73
|
+
type: "operation",
|
|
74
|
+
operation: {
|
|
75
|
+
key: target.meta.key,
|
|
76
|
+
version: target.meta.version
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
fixtures: generated.fixtures ?? [],
|
|
80
|
+
scenarios: generated.scenarios ?? [],
|
|
81
|
+
coverage: generated.coverage
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
logUsage(usage) {
|
|
85
|
+
const u = usage;
|
|
86
|
+
this.logger.debug(`AI Usage: ${u.promptTokens} prompt + ${u.completionTokens} completion = ${u.totalTokens} total tokens`);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
|
|
90
|
+
//#endregion
|
|
91
|
+
export { TestGeneratorService };
|
|
92
|
+
//# sourceMappingURL=test-generator-service.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-generator-service.mjs","names":[],"sources":["../../../src/services/test/test-generator-service.ts"],"sourcesContent":["import type {\n LanguageModel,\n LanguageModelUsage,\n} from '@contractspec/lib.ai-agent';\nimport { generateText } from 'ai';\nimport {\n type TestSpec,\n type TestTarget,\n} from '@contractspec/lib.contracts/tests';\nimport type { OperationSpec } from '@contractspec/lib.contracts';\nimport type { LoggerAdapter } from '../../ports/logger';\n\nexport interface TestGeneratorOptions {\n model?: LanguageModel;\n maxScenarios?: number;\n}\n\nconst SYSTEM_PROMPT = `\nYou are an expert software test engineer specializing in ContractSpec.\nYour goal is to generate comprehensive test scenarios for a given ContractSpec Operation.\n\nA TestSpec consists of:\n- targeted operation\n- fixtures (setup state)\n- scenarios (given/when/then)\n\nFor each scenario:\n1. Define 'given': initial state or data setup\n2. Define 'when': the operation execution with specific input\n3. Define 'then': assertions on output, error, or events\n\nGenerate scenarios covering:\n- Happy path (valid input, successful execution)\n- Edge cases (boundary values, optional fields)\n- Error cases (invalid input, business rule violations)\n`.trim();\n\nexport class TestGeneratorService {\n constructor(\n private readonly logger: LoggerAdapter,\n private readonly defaultModel?: LanguageModel\n ) {}\n\n async generateTests(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n spec: OperationSpec<any, any>, // Use any to satisfy generics for now\n options: TestGeneratorOptions = {}\n ): Promise<TestSpec> {\n const model = options.model ?? this.defaultModel;\n if (!model) {\n throw new Error('No AI model provided for test generation');\n }\n\n this.logger.info(`Generating tests for operation ${spec.meta.key}...`);\n\n const prompt = `\nGenerate a TestSpec for the following Operation:\n\n\\`\\`\\`json\n${JSON.stringify(spec, null, 2)}\n\\`\\`\\`\n\nThe output must be a valid JSON object conforming to the TestSpec interface.\nDo not include markdown formatting or explanations, just the JSON.\n`.trim();\n\n try {\n const { text, usage } = await generateText({\n model,\n system: SYSTEM_PROMPT,\n prompt,\n });\n\n this.logUsage(usage);\n\n const generated = this.parseResponse(text);\n return this.enrichSpec(generated, spec);\n } catch (error) {\n this.logger.error('Failed to generate tests', { error });\n throw error;\n }\n }\n\n private parseResponse(text: string): Partial<TestSpec> {\n try {\n // clean markdown code blocks if present\n const cleaned = text.replace(/```json\\n?|\\n?```/g, '');\n return JSON.parse(cleaned);\n } catch (_e) {\n throw new Error('Failed to parse AI response as JSON');\n }\n }\n\n private enrichSpec(\n generated: Partial<TestSpec>,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n target: OperationSpec<any, any>\n ): TestSpec {\n const meta = {\n key: `${target.meta.key}.test`,\n version: target.meta.version ?? '0.0.1',\n owners: target.meta.owners ?? [],\n };\n\n const targetRef: TestTarget = {\n type: 'operation',\n operation: {\n key: target.meta.key,\n version: target.meta.version,\n },\n };\n\n return {\n meta,\n target: targetRef,\n fixtures: generated.fixtures ?? [],\n scenarios: generated.scenarios ?? [],\n coverage: generated.coverage,\n } as TestSpec;\n }\n\n private logUsage(usage: LanguageModelUsage) {\n // Cast to any to avoid type issues with different AI SDK versions\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const u = usage as any;\n this.logger.debug(\n `AI Usage: ${u.promptTokens} prompt + ${u.completionTokens} completion = ${u.totalTokens} total tokens`\n );\n }\n}\n"],"mappings":";;;;AAiBA,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;EAkBpB,MAAM;AAER,IAAa,uBAAb,MAAkC;CAChC,YACE,AAAiB,QACjB,AAAiB,cACjB;EAFiB;EACA;;CAGnB,MAAM,cAEJ,MACA,UAAgC,EAAE,EACf;EACnB,MAAM,QAAQ,QAAQ,SAAS,KAAK;AACpC,MAAI,CAAC,MACH,OAAM,IAAI,MAAM,2CAA2C;AAG7D,OAAK,OAAO,KAAK,kCAAkC,KAAK,KAAK,IAAI,KAAK;EAEtE,MAAM,SAAS;;;;EAIjB,KAAK,UAAU,MAAM,MAAM,EAAE,CAAC;;;;;EAK9B,MAAM;AAEJ,MAAI;GACF,MAAM,EAAE,MAAM,UAAU,MAAM,aAAa;IACzC;IACA,QAAQ;IACR;IACD,CAAC;AAEF,QAAK,SAAS,MAAM;GAEpB,MAAM,YAAY,KAAK,cAAc,KAAK;AAC1C,UAAO,KAAK,WAAW,WAAW,KAAK;WAChC,OAAO;AACd,QAAK,OAAO,MAAM,4BAA4B,EAAE,OAAO,CAAC;AACxD,SAAM;;;CAIV,AAAQ,cAAc,MAAiC;AACrD,MAAI;GAEF,MAAM,UAAU,KAAK,QAAQ,sBAAsB,GAAG;AACtD,UAAO,KAAK,MAAM,QAAQ;WACnB,IAAI;AACX,SAAM,IAAI,MAAM,sCAAsC;;;CAI1D,AAAQ,WACN,WAEA,QACU;AAeV,SAAO;GACL,MAfW;IACX,KAAK,GAAG,OAAO,KAAK,IAAI;IACxB,SAAS,OAAO,KAAK,WAAW;IAChC,QAAQ,OAAO,KAAK,UAAU,EAAE;IACjC;GAYC,QAV4B;IAC5B,MAAM;IACN,WAAW;KACT,KAAK,OAAO,KAAK;KACjB,SAAS,OAAO,KAAK;KACtB;IACF;GAKC,UAAU,UAAU,YAAY,EAAE;GAClC,WAAW,UAAU,aAAa,EAAE;GACpC,UAAU,UAAU;GACrB;;CAGH,AAAQ,SAAS,OAA2B;EAG1C,MAAM,IAAI;AACV,OAAK,OAAO,MACV,aAAa,EAAE,aAAa,YAAY,EAAE,iBAAiB,gBAAgB,EAAE,YAAY,eAC1F"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { WorkspaceAdapters } from "../../ports/logger.mjs";
|
|
2
|
+
import { OperationSpecRegistry } from "@contractspec/lib.contracts";
|
|
3
|
+
import { TestRunResult, TestSpec } from "@contractspec/lib.contracts/tests";
|
|
4
|
+
|
|
5
|
+
//#region src/services/test/test-service.d.ts
|
|
6
|
+
interface TestServiceOptions {
|
|
7
|
+
registry?: string;
|
|
8
|
+
pattern?: string;
|
|
9
|
+
}
|
|
10
|
+
interface TestServiceResult {
|
|
11
|
+
results: TestRunResult[];
|
|
12
|
+
passed: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface RunTestsResult {
|
|
15
|
+
results: TestRunResult[];
|
|
16
|
+
passed: number;
|
|
17
|
+
failed: number;
|
|
18
|
+
}
|
|
19
|
+
declare function runTests(specs: TestSpec[], registry: OperationSpecRegistry): Promise<RunTestsResult>;
|
|
20
|
+
declare function runTestSpecs(specFiles: string[], options: TestServiceOptions, adapters: WorkspaceAdapters): Promise<TestServiceResult>;
|
|
21
|
+
/**
|
|
22
|
+
* List all available tests in the given files.
|
|
23
|
+
*/
|
|
24
|
+
declare function listTests(specFiles: string[], adapters: WorkspaceAdapters): Promise<TestSpec[]>;
|
|
25
|
+
//#endregion
|
|
26
|
+
export { RunTestsResult, TestServiceOptions, TestServiceResult, listTests, runTestSpecs, runTests };
|
|
27
|
+
//# sourceMappingURL=test-service.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-service.d.mts","names":[],"sources":["../../../src/services/test/test-service.ts"],"sourcesContent":[],"mappings":";;;;;UAUiB,kBAAA;;EAAA,OAAA,CAAA,EAAA,MAAA;AAKjB;AAKiB,UALA,iBAAA,CAMN;EAKW,OAAA,EAVX,aAUmB,EAAA;EACrB,MAAA,EAAA,OAAA;;AAEE,UATM,cAAA,CASN;EAAR,OAAA,EARQ,aAQR,EAAA;EAAO,MAAA,EAAA,MAAA;EAuBY,MAAA,EAAA,MAAA;;AAGV,iBA7BU,QAAA,CA6BV,KAAA,EA5BH,QA4BG,EAAA,EAAA,QAAA,EA3BA,qBA2BA,CAAA,EA1BT,OA0BS,CA1BD,cA0BC,CAAA;AACD,iBAJW,YAAA,CAIX,SAAA,EAAA,MAAA,EAAA,EAAA,OAAA,EAFA,kBAEA,EAAA,QAAA,EADC,iBACD,CAAA,EAAR,OAAQ,CAAA,iBAAA,CAAA;;;AA2DX;AAEY,iBAFU,SAAA,CAEV,SAAA,EAAA,MAAA,EAAA,EAAA,QAAA,EAAA,iBAAA,CAAA,EACT,OADS,CACD,QADC,EAAA,CAAA"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { loadTypeScriptModule } from "../../utils/module-loader.mjs";
|
|
2
|
+
import { resolve } from "path";
|
|
3
|
+
import { OperationSpecRegistry } from "@contractspec/lib.contracts";
|
|
4
|
+
import { TestRunner } from "@contractspec/lib.contracts/tests";
|
|
5
|
+
|
|
6
|
+
//#region src/services/test/test-service.ts
|
|
7
|
+
async function runTests(specs, registry) {
|
|
8
|
+
const runner = new TestRunner({ registry });
|
|
9
|
+
const results = [];
|
|
10
|
+
let passed = 0;
|
|
11
|
+
let failed = 0;
|
|
12
|
+
for (const spec of specs) {
|
|
13
|
+
const result = await runner.run(spec);
|
|
14
|
+
results.push(result);
|
|
15
|
+
passed += result.passed;
|
|
16
|
+
failed += result.failed;
|
|
17
|
+
}
|
|
18
|
+
return {
|
|
19
|
+
results,
|
|
20
|
+
passed,
|
|
21
|
+
failed
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
async function runTestSpecs(specFiles, options, adapters) {
|
|
25
|
+
const { logger } = adapters;
|
|
26
|
+
let registry;
|
|
27
|
+
if (options.registry) registry = await loadRegistry(resolve(options.registry));
|
|
28
|
+
else {
|
|
29
|
+
registry = new OperationSpecRegistry();
|
|
30
|
+
logger.warn("No registry module provided. Scenarios that execute operations without handlers will fail.");
|
|
31
|
+
}
|
|
32
|
+
const runner = new TestRunner({ registry });
|
|
33
|
+
const results = [];
|
|
34
|
+
let allPassed = true;
|
|
35
|
+
for (const specFile of specFiles) try {
|
|
36
|
+
const specs = extractTestSpecs(await loadTypeScriptModule(resolve(specFile)));
|
|
37
|
+
if (specs.length === 0) {
|
|
38
|
+
logger.warn(`No TestSpec exports found in ${specFile}`);
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
for (const spec of specs) {
|
|
42
|
+
logger.info(`Running ${spec.meta.key}...`);
|
|
43
|
+
const result = await runner.run(spec);
|
|
44
|
+
results.push(result);
|
|
45
|
+
if (result.failed > 0) {
|
|
46
|
+
allPassed = false;
|
|
47
|
+
logger.error(`${spec.meta.key} failed (${result.failed}/${result.scenarios.length})`);
|
|
48
|
+
} else logger.info(`${spec.meta.key} passed (${result.passed}/${result.scenarios.length})`);
|
|
49
|
+
}
|
|
50
|
+
} catch (error) {
|
|
51
|
+
logger.error(`Failed to load/run spec ${specFile}: ${error instanceof Error ? error.message : String(error)}`);
|
|
52
|
+
allPassed = false;
|
|
53
|
+
}
|
|
54
|
+
return {
|
|
55
|
+
results,
|
|
56
|
+
passed: allPassed
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* List all available tests in the given files.
|
|
61
|
+
*/
|
|
62
|
+
async function listTests(specFiles, adapters) {
|
|
63
|
+
const specs = [];
|
|
64
|
+
for (const specFile of specFiles) try {
|
|
65
|
+
const fileSpecs = extractTestSpecs(await loadTypeScriptModule(resolve(specFile)));
|
|
66
|
+
specs.push(...fileSpecs);
|
|
67
|
+
} catch (error) {
|
|
68
|
+
adapters.logger.warn(`Failed to load tests from ${specFile}: ${error instanceof Error ? error.message : String(error)}`);
|
|
69
|
+
}
|
|
70
|
+
return specs;
|
|
71
|
+
}
|
|
72
|
+
function extractTestSpecs(exports) {
|
|
73
|
+
const specs = [];
|
|
74
|
+
for (const value of Object.values(exports)) if (isTestSpec(value)) specs.push(value);
|
|
75
|
+
return specs;
|
|
76
|
+
}
|
|
77
|
+
function isTestSpec(value) {
|
|
78
|
+
return typeof value === "object" && value !== null && Array.isArray(value.scenarios) && !!value.meta?.key;
|
|
79
|
+
}
|
|
80
|
+
async function loadRegistry(modulePath) {
|
|
81
|
+
const exports = await loadTypeScriptModule(modulePath);
|
|
82
|
+
if (exports instanceof OperationSpecRegistry) return exports;
|
|
83
|
+
if (exports.registry instanceof OperationSpecRegistry) return exports.registry;
|
|
84
|
+
const factory = typeof exports.createRegistry === "function" ? exports.createRegistry : typeof exports.default === "function" ? exports.default : void 0;
|
|
85
|
+
if (factory) {
|
|
86
|
+
const result = await factory();
|
|
87
|
+
if (result instanceof OperationSpecRegistry) return result;
|
|
88
|
+
}
|
|
89
|
+
throw new Error(`Registry module ${modulePath} must export a OperationSpecRegistry instance or a factory function returning one.`);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
//#endregion
|
|
93
|
+
export { listTests, runTestSpecs, runTests };
|
|
94
|
+
//# sourceMappingURL=test-service.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-service.mjs","names":[],"sources":["../../../src/services/test/test-service.ts"],"sourcesContent":["import { resolve } from 'path';\nimport {\n TestRunner,\n type TestSpec,\n type TestRunResult,\n} from '@contractspec/lib.contracts/tests';\nimport { OperationSpecRegistry } from '@contractspec/lib.contracts';\nimport { loadTypeScriptModule } from '../../utils/module-loader';\nimport type { WorkspaceAdapters } from '../../ports/logger';\n\nexport interface TestServiceOptions {\n registry?: string;\n pattern?: string;\n}\n\nexport interface TestServiceResult {\n results: TestRunResult[];\n passed: boolean;\n}\n\nexport interface RunTestsResult {\n results: TestRunResult[];\n passed: number;\n failed: number;\n}\n\nexport async function runTests(\n specs: TestSpec[],\n registry: OperationSpecRegistry\n): Promise<RunTestsResult> {\n const runner = new TestRunner({ registry });\n\n const results: TestRunResult[] = [];\n let passed = 0;\n let failed = 0;\n\n for (const spec of specs) {\n const result = await runner.run(spec);\n results.push(result);\n passed += result.passed;\n failed += result.failed;\n }\n\n return { results, passed, failed };\n}\n\ninterface LoadedRegistryModule {\n default?: unknown;\n createRegistry?: () => Promise<OperationSpecRegistry> | OperationSpecRegistry;\n registry?: OperationSpecRegistry;\n}\n\nexport async function runTestSpecs(\n specFiles: string[],\n options: TestServiceOptions,\n adapters: WorkspaceAdapters\n): Promise<TestServiceResult> {\n const { logger } = adapters;\n\n // Load registry\n let registry: OperationSpecRegistry;\n if (options.registry) {\n registry = await loadRegistry(resolve(options.registry));\n } else {\n registry = new OperationSpecRegistry();\n logger.warn(\n 'No registry module provided. Scenarios that execute operations without handlers will fail.'\n );\n }\n\n const runner = new TestRunner({ registry });\n const results: TestRunResult[] = [];\n let allPassed = true;\n\n for (const specFile of specFiles) {\n try {\n const resolvedPath = resolve(specFile);\n const exports = await loadTypeScriptModule(resolvedPath);\n const specs = extractTestSpecs(exports);\n\n if (specs.length === 0) {\n logger.warn(`No TestSpec exports found in ${specFile}`);\n continue;\n }\n\n for (const spec of specs) {\n logger.info(`Running ${spec.meta.key}...`);\n const result = await runner.run(spec);\n results.push(result);\n\n if (result.failed > 0) {\n allPassed = false;\n logger.error(\n `${spec.meta.key} failed (${result.failed}/${result.scenarios.length})`\n );\n } else {\n logger.info(\n `${spec.meta.key} passed (${result.passed}/${result.scenarios.length})`\n );\n }\n }\n } catch (error) {\n logger.error(\n `Failed to load/run spec ${specFile}: ${error instanceof Error ? error.message : String(error)}`\n );\n allPassed = false;\n }\n }\n\n return { results, passed: allPassed };\n}\n\n/**\n * List all available tests in the given files.\n */\nexport async function listTests(\n specFiles: string[],\n adapters: WorkspaceAdapters\n): Promise<TestSpec[]> {\n const specs: TestSpec[] = [];\n\n for (const specFile of specFiles) {\n try {\n const resolvedPath = resolve(specFile);\n const exports = await loadTypeScriptModule(resolvedPath);\n const fileSpecs = extractTestSpecs(exports);\n specs.push(...fileSpecs);\n } catch (error) {\n adapters.logger.warn(\n `Failed to load tests from ${specFile}: ${error instanceof Error ? error.message : String(error)}`\n );\n }\n }\n\n return specs;\n}\n\nfunction extractTestSpecs(exports: Record<string, unknown>): TestSpec[] {\n const specs: TestSpec[] = [];\n for (const value of Object.values(exports)) {\n if (isTestSpec(value)) {\n specs.push(value);\n }\n }\n return specs;\n}\n\nfunction isTestSpec(value: unknown): value is TestSpec {\n return (\n typeof value === 'object' &&\n value !== null &&\n Array.isArray((value as TestSpec).scenarios) &&\n !!(value as TestSpec).meta?.key\n );\n}\n\nasync function loadRegistry(\n modulePath: string\n): Promise<OperationSpecRegistry> {\n const exports = (await loadTypeScriptModule(\n modulePath\n )) as LoadedRegistryModule;\n\n if (exports instanceof OperationSpecRegistry) {\n return exports;\n }\n if (exports.registry instanceof OperationSpecRegistry) {\n return exports.registry;\n }\n\n const factory =\n typeof exports.createRegistry === 'function'\n ? exports.createRegistry\n : typeof exports.default === 'function'\n ? (exports.default as () =>\n | Promise<OperationSpecRegistry>\n | OperationSpecRegistry)\n : undefined;\n\n if (factory) {\n const result = await factory();\n if (result instanceof OperationSpecRegistry) {\n return result;\n }\n }\n\n throw new Error(\n `Registry module ${modulePath} must export a OperationSpecRegistry instance or a factory function returning one.`\n );\n}\n"],"mappings":";;;;;;AA0BA,eAAsB,SACpB,OACA,UACyB;CACzB,MAAM,SAAS,IAAI,WAAW,EAAE,UAAU,CAAC;CAE3C,MAAM,UAA2B,EAAE;CACnC,IAAI,SAAS;CACb,IAAI,SAAS;AAEb,MAAK,MAAM,QAAQ,OAAO;EACxB,MAAM,SAAS,MAAM,OAAO,IAAI,KAAK;AACrC,UAAQ,KAAK,OAAO;AACpB,YAAU,OAAO;AACjB,YAAU,OAAO;;AAGnB,QAAO;EAAE;EAAS;EAAQ;EAAQ;;AASpC,eAAsB,aACpB,WACA,SACA,UAC4B;CAC5B,MAAM,EAAE,WAAW;CAGnB,IAAI;AACJ,KAAI,QAAQ,SACV,YAAW,MAAM,aAAa,QAAQ,QAAQ,SAAS,CAAC;MACnD;AACL,aAAW,IAAI,uBAAuB;AACtC,SAAO,KACL,6FACD;;CAGH,MAAM,SAAS,IAAI,WAAW,EAAE,UAAU,CAAC;CAC3C,MAAM,UAA2B,EAAE;CACnC,IAAI,YAAY;AAEhB,MAAK,MAAM,YAAY,UACrB,KAAI;EAGF,MAAM,QAAQ,iBADE,MAAM,qBADD,QAAQ,SAAS,CACkB,CACjB;AAEvC,MAAI,MAAM,WAAW,GAAG;AACtB,UAAO,KAAK,gCAAgC,WAAW;AACvD;;AAGF,OAAK,MAAM,QAAQ,OAAO;AACxB,UAAO,KAAK,WAAW,KAAK,KAAK,IAAI,KAAK;GAC1C,MAAM,SAAS,MAAM,OAAO,IAAI,KAAK;AACrC,WAAQ,KAAK,OAAO;AAEpB,OAAI,OAAO,SAAS,GAAG;AACrB,gBAAY;AACZ,WAAO,MACL,GAAG,KAAK,KAAK,IAAI,WAAW,OAAO,OAAO,GAAG,OAAO,UAAU,OAAO,GACtE;SAED,QAAO,KACL,GAAG,KAAK,KAAK,IAAI,WAAW,OAAO,OAAO,GAAG,OAAO,UAAU,OAAO,GACtE;;UAGE,OAAO;AACd,SAAO,MACL,2BAA2B,SAAS,IAAI,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GAC/F;AACD,cAAY;;AAIhB,QAAO;EAAE;EAAS,QAAQ;EAAW;;;;;AAMvC,eAAsB,UACpB,WACA,UACqB;CACrB,MAAM,QAAoB,EAAE;AAE5B,MAAK,MAAM,YAAY,UACrB,KAAI;EAGF,MAAM,YAAY,iBADF,MAAM,qBADD,QAAQ,SAAS,CACkB,CACb;AAC3C,QAAM,KAAK,GAAG,UAAU;UACjB,OAAO;AACd,WAAS,OAAO,KACd,6BAA6B,SAAS,IAAI,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GACjG;;AAIL,QAAO;;AAGT,SAAS,iBAAiB,SAA8C;CACtE,MAAM,QAAoB,EAAE;AAC5B,MAAK,MAAM,SAAS,OAAO,OAAO,QAAQ,CACxC,KAAI,WAAW,MAAM,CACnB,OAAM,KAAK,MAAM;AAGrB,QAAO;;AAGT,SAAS,WAAW,OAAmC;AACrD,QACE,OAAO,UAAU,YACjB,UAAU,QACV,MAAM,QAAS,MAAmB,UAAU,IAC5C,CAAC,CAAE,MAAmB,MAAM;;AAIhC,eAAe,aACb,YACgC;CAChC,MAAM,UAAW,MAAM,qBACrB,WACD;AAED,KAAI,mBAAmB,sBACrB,QAAO;AAET,KAAI,QAAQ,oBAAoB,sBAC9B,QAAO,QAAQ;CAGjB,MAAM,UACJ,OAAO,QAAQ,mBAAmB,aAC9B,QAAQ,iBACR,OAAO,QAAQ,YAAY,aACxB,QAAQ,UAGT;AAER,KAAI,SAAS;EACX,MAAM,SAAS,MAAM,SAAS;AAC9B,MAAI,kBAAkB,sBACpB,QAAO;;AAIX,OAAM,IAAI,MACR,mBAAmB,WAAW,oFAC/B"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import "./test-ref-validator.mjs";
|
|
2
|
+
import "../integrity.mjs";
|
|
3
|
+
import { SpecScanResult } from "@contractspec/module.workspace";
|
|
4
|
+
|
|
5
|
+
//#region src/services/test-link/index.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Test target extracted from a TestSpec.
|
|
9
|
+
* Matches the TestTarget type from @contractspec/lib.contracts.
|
|
10
|
+
*/
|
|
11
|
+
interface ExtractedTestTarget {
|
|
12
|
+
type: 'operation' | 'workflow';
|
|
13
|
+
key: string;
|
|
14
|
+
version?: string;
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { ExtractedTestTarget };
|
|
18
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/services/test-link/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;UAciB,mBAAA"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { validateTestRefs } from "./test-ref-validator.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/services/test-link/index.ts
|
|
4
|
+
/**
|
|
5
|
+
* Build a spec key from key and version.
|
|
6
|
+
*/
|
|
7
|
+
function makeSpecKey(key, version) {
|
|
8
|
+
return `${key}.v${version}`;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Build the test-to-target index from test spec scan results.
|
|
12
|
+
*
|
|
13
|
+
* @param testSpecScans - Array of test spec scan results with testTarget info
|
|
14
|
+
* @param inventory - The full spec inventory to validate targets against
|
|
15
|
+
* @returns Bidirectional index for test-target relationships
|
|
16
|
+
*/
|
|
17
|
+
function buildTestIndex(testSpecScans, inventory) {
|
|
18
|
+
const targetToTests = /* @__PURE__ */ new Map();
|
|
19
|
+
const testToTarget = /* @__PURE__ */ new Map();
|
|
20
|
+
const orphanedTests = [];
|
|
21
|
+
const testsWithoutTarget = [];
|
|
22
|
+
for (const scan of testSpecScans) {
|
|
23
|
+
if (!scan.key || !scan.version) continue;
|
|
24
|
+
const testKey = makeSpecKey(scan.key, scan.version);
|
|
25
|
+
if (!scan.testTarget) {
|
|
26
|
+
testsWithoutTarget.push(testKey);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const { type, key, version } = scan.testTarget;
|
|
30
|
+
const targetKey = makeSpecKey(key, version ?? scan.version);
|
|
31
|
+
const targetMap = getTargetMap(inventory, type);
|
|
32
|
+
if (!targetMap || !targetMap.has(targetKey)) {
|
|
33
|
+
orphanedTests.push(testKey);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
testToTarget.set(testKey, targetKey);
|
|
37
|
+
if (!targetToTests.has(targetKey)) targetToTests.set(targetKey, /* @__PURE__ */ new Set());
|
|
38
|
+
targetToTests.get(targetKey)?.add(testKey);
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
targetToTests,
|
|
42
|
+
testToTarget,
|
|
43
|
+
orphanedTests,
|
|
44
|
+
testsWithoutTarget
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Get the inventory map for a target type.
|
|
49
|
+
*/
|
|
50
|
+
function getTargetMap(inventory, type) {
|
|
51
|
+
switch (type) {
|
|
52
|
+
case "operation": return inventory.operations;
|
|
53
|
+
case "workflow": return inventory.workflows;
|
|
54
|
+
default: return;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
//#endregion
|
|
59
|
+
export { buildTestIndex };
|
|
60
|
+
//# sourceMappingURL=index.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/services/test-link/index.ts"],"sourcesContent":["/**\n * Test-to-target index service.\n *\n * Builds bidirectional mappings between TestSpecs and their targets,\n * enabling contract-first test discovery instead of naming conventions.\n */\n\nimport type { SpecLocation, SpecInventory } from '../integrity';\nimport type { SpecScanResult } from '@contractspec/module.workspace';\n\n/**\n * Test target extracted from a TestSpec.\n * Matches the TestTarget type from @contractspec/lib.contracts.\n */\nexport interface ExtractedTestTarget {\n type: 'operation' | 'workflow';\n key: string;\n version?: string;\n}\n\n/**\n * Extended spec scan result with test target information.\n */\nexport interface TestSpecScanResult extends SpecScanResult {\n testTarget?: ExtractedTestTarget;\n}\n\n/**\n * Bidirectional index mapping between tests and their targets.\n */\nexport interface TestToTargetIndex {\n /**\n * Map from target spec key (e.g., \"my-op.v1.0.0\") to set of test spec keys.\n * A single target can have multiple tests.\n */\n targetToTests: Map<string, Set<string>>;\n\n /**\n * Map from test spec key to target key.\n * Each test targets exactly one spec.\n */\n testToTarget: Map<string, string>;\n\n /**\n * Tests with targets that don't exist in the inventory.\n */\n orphanedTests: string[];\n\n /**\n * Tests without a valid target field (legacy naming convention only).\n */\n testsWithoutTarget: string[];\n}\n\n/**\n * Build a spec key from key and version.\n */\nfunction makeSpecKey(key: string, version: string): string {\n return `${key}.v${version}`;\n}\n\n/**\n * Build the test-to-target index from test spec scan results.\n *\n * @param testSpecScans - Array of test spec scan results with testTarget info\n * @param inventory - The full spec inventory to validate targets against\n * @returns Bidirectional index for test-target relationships\n */\nexport function buildTestIndex(\n testSpecScans: TestSpecScanResult[],\n inventory: SpecInventory\n): TestToTargetIndex {\n const targetToTests = new Map<string, Set<string>>();\n const testToTarget = new Map<string, string>();\n const orphanedTests: string[] = [];\n const testsWithoutTarget: string[] = [];\n\n for (const scan of testSpecScans) {\n if (!scan.key || !scan.version) continue;\n\n const testKey = makeSpecKey(scan.key, scan.version);\n\n if (!scan.testTarget) {\n // Test doesn't have a target field - relies on naming convention\n testsWithoutTarget.push(testKey);\n continue;\n }\n\n const { type, key, version } = scan.testTarget;\n const targetVersion = version ?? scan.version; // Default to test's version\n const targetKey = makeSpecKey(key, targetVersion);\n\n // Validate target exists in inventory\n const targetMap = getTargetMap(inventory, type);\n if (!targetMap || !targetMap.has(targetKey)) {\n orphanedTests.push(testKey);\n continue;\n }\n\n // Build bidirectional mapping\n testToTarget.set(testKey, targetKey);\n\n if (!targetToTests.has(targetKey)) {\n targetToTests.set(targetKey, new Set());\n }\n targetToTests.get(targetKey)?.add(testKey);\n }\n\n return {\n targetToTests,\n testToTarget,\n orphanedTests,\n testsWithoutTarget,\n };\n}\n\n/**\n * Get the inventory map for a target type.\n */\nfunction getTargetMap(\n inventory: SpecInventory,\n type: 'operation' | 'workflow'\n): Map<string, SpecLocation> | undefined {\n switch (type) {\n case 'operation':\n return inventory.operations;\n case 'workflow':\n return inventory.workflows;\n default:\n return undefined;\n }\n}\n\n/**\n * Check if a spec has test coverage via target-based linking.\n *\n * @param specKey - The spec key (e.g., \"my-op.v1.0.0\")\n * @param index - The test-to-target index\n * @returns true if at least one TestSpec targets this spec\n */\nexport function hasTargetedTest(\n specKey: string,\n index: TestToTargetIndex\n): boolean {\n return index.targetToTests.has(specKey);\n}\n\n/**\n * Get all tests that target a specific spec.\n *\n * @param specKey - The spec key (e.g., \"my-op.v1.0.0\")\n * @param index - The test-to-target index\n * @returns Array of test spec keys, empty if none\n */\nexport function getTestsForSpec(\n specKey: string,\n index: TestToTargetIndex\n): string[] {\n const tests = index.targetToTests.get(specKey);\n return tests ? Array.from(tests) : [];\n}\n\n/**\n * Get the target spec for a test.\n *\n * @param testKey - The test spec key\n * @param index - The test-to-target index\n * @returns The target spec key, or undefined if no target\n */\nexport function getTargetForTest(\n testKey: string,\n index: TestToTargetIndex\n): string | undefined {\n return index.testToTarget.get(testKey);\n}\n\nexport { validateTestRefs } from './test-ref-validator';\nexport type {\n TestRefValidationResult,\n TestRefValidationOptions,\n} from './test-ref-validator';\n"],"mappings":";;;;;;AAyDA,SAAS,YAAY,KAAa,SAAyB;AACzD,QAAO,GAAG,IAAI,IAAI;;;;;;;;;AAUpB,SAAgB,eACd,eACA,WACmB;CACnB,MAAM,gCAAgB,IAAI,KAA0B;CACpD,MAAM,+BAAe,IAAI,KAAqB;CAC9C,MAAM,gBAA0B,EAAE;CAClC,MAAM,qBAA+B,EAAE;AAEvC,MAAK,MAAM,QAAQ,eAAe;AAChC,MAAI,CAAC,KAAK,OAAO,CAAC,KAAK,QAAS;EAEhC,MAAM,UAAU,YAAY,KAAK,KAAK,KAAK,QAAQ;AAEnD,MAAI,CAAC,KAAK,YAAY;AAEpB,sBAAmB,KAAK,QAAQ;AAChC;;EAGF,MAAM,EAAE,MAAM,KAAK,YAAY,KAAK;EAEpC,MAAM,YAAY,YAAY,KADR,WAAW,KAAK,QACW;EAGjD,MAAM,YAAY,aAAa,WAAW,KAAK;AAC/C,MAAI,CAAC,aAAa,CAAC,UAAU,IAAI,UAAU,EAAE;AAC3C,iBAAc,KAAK,QAAQ;AAC3B;;AAIF,eAAa,IAAI,SAAS,UAAU;AAEpC,MAAI,CAAC,cAAc,IAAI,UAAU,CAC/B,eAAc,IAAI,2BAAW,IAAI,KAAK,CAAC;AAEzC,gBAAc,IAAI,UAAU,EAAE,IAAI,QAAQ;;AAG5C,QAAO;EACL;EACA;EACA;EACA;EACD;;;;;AAMH,SAAS,aACP,WACA,MACuC;AACvC,SAAQ,MAAR;EACE,KAAK,YACH,QAAO,UAAU;EACnB,KAAK,WACH,QAAO,UAAU;EACnB,QACE"}
|