@contractspec/bundle.workspace 0.0.0-canary-20260113162409
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/LICENSE +21 -0
- package/README.md +83 -0
- 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 +168 -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 +71 -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 +76 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 Chaman Ventures, SASU
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# @contractspec/bundle.workspace
|
|
2
|
+
|
|
3
|
+
Website: https://contractspec.io/
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
Reusable use-cases and services for ContractSpec workspace operations.
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
This bundle provides platform-agnostic services that can be used by:
|
|
11
|
+
|
|
12
|
+
- CLI tools (`@contractspec/app.cli-contractspec`)
|
|
13
|
+
- Web applications
|
|
14
|
+
- VS Code extensions
|
|
15
|
+
- API servers
|
|
16
|
+
|
|
17
|
+
## Architecture
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
bundle.contractspec-workspace
|
|
21
|
+
├── services/ # Use-case implementations
|
|
22
|
+
│ ├── build.ts # Build deterministic artifacts from specs (templates-first)
|
|
23
|
+
│ ├── validate.ts # Validate spec structure (and, later, implementation checks)
|
|
24
|
+
│ ├── diff.ts # Compare specs (semantic diff)
|
|
25
|
+
│ ├── deps.ts # Analyze dependencies
|
|
26
|
+
│ ├── list.ts # Discover specs by glob
|
|
27
|
+
│ └── config.ts # Load + merge workspace config (.contractsrc.json)
|
|
28
|
+
│ ├── sync.ts # Sync all specs (validate/build across a workspace)
|
|
29
|
+
│ ├── watch.ts # Watch specs and trigger validate/build
|
|
30
|
+
│ ├── clean.ts # Safe-by-default cleanup of generated artifacts
|
|
31
|
+
│ ├── test.ts # Run TestSpec scenarios (pure runner wrapper)
|
|
32
|
+
│ ├── regenerator.ts # Regenerator service wrapper (no module loading)
|
|
33
|
+
│ ├── integrity.ts # Analyze spec/feature integrity and coverage
|
|
34
|
+
│ ├── layer-discovery.ts # Discover features, examples, app-configs
|
|
35
|
+
│ ├── doctor/ # Health checks and auto-fixes
|
|
36
|
+
│ └── ci-check/ # CI/CD validation checks
|
|
37
|
+
├── adapters/ # Runtime adapters (Node defaults)
|
|
38
|
+
│ ├── fs.ts # Filesystem operations
|
|
39
|
+
│ ├── git.ts # Git operations
|
|
40
|
+
│ ├── watcher.ts # File watching
|
|
41
|
+
│ ├── ai.ts # AI providers
|
|
42
|
+
│ └── logger.ts # Logging/progress
|
|
43
|
+
└── ports/ # Adapter interfaces
|
|
44
|
+
└── index.ts # Port type definitions
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Design Principles
|
|
48
|
+
|
|
49
|
+
- **Adapter pattern**: All I/O goes through explicit ports/adapters
|
|
50
|
+
- **Testable**: Services can be tested with mock adapters
|
|
51
|
+
- **Reusable**: Same services work across CLI, web, and extensions
|
|
52
|
+
- **No CLI dependencies**: No `chalk`, `ora`, `commander`, or `inquirer`
|
|
53
|
+
|
|
54
|
+
## Usage
|
|
55
|
+
|
|
56
|
+
```typescript
|
|
57
|
+
import {
|
|
58
|
+
createNodeAdapters,
|
|
59
|
+
loadWorkspaceConfig,
|
|
60
|
+
buildSpec,
|
|
61
|
+
} from '@contractspec/bundle.workspace';
|
|
62
|
+
|
|
63
|
+
// Create adapters for Node.js runtime
|
|
64
|
+
const adapters = createNodeAdapters();
|
|
65
|
+
|
|
66
|
+
// Load workspace config (or use defaults)
|
|
67
|
+
const config = await loadWorkspaceConfig(adapters.fs);
|
|
68
|
+
|
|
69
|
+
// Build deterministic artifacts from a spec (templates-first)
|
|
70
|
+
const result = await buildSpec(
|
|
71
|
+
'./my-spec.operation.ts',
|
|
72
|
+
{ fs: adapters.fs, logger: adapters.logger },
|
|
73
|
+
config
|
|
74
|
+
);
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Notes
|
|
78
|
+
|
|
79
|
+
- `sync` / `watch` accept optional overrides so CLI (or an extension) can inject
|
|
80
|
+
richer build/validate behavior while reusing the deterministic orchestration.
|
|
81
|
+
- `test` and `regenerator` deliberately avoid TypeScript module loading; callers
|
|
82
|
+
pass already-loaded specs/contexts/rules/sinks.
|
|
83
|
+
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
|
|
3
|
+
//#region rolldown:runtime
|
|
4
|
+
var __defProp = Object.defineProperty;
|
|
5
|
+
var __exportAll = (all, symbols) => {
|
|
6
|
+
let target = {};
|
|
7
|
+
for (var name in all) {
|
|
8
|
+
__defProp(target, name, {
|
|
9
|
+
get: all[name],
|
|
10
|
+
enumerable: true
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
if (symbols) {
|
|
14
|
+
__defProp(target, Symbol.toStringTag, { value: "Module" });
|
|
15
|
+
}
|
|
16
|
+
return target;
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
//#endregion
|
|
20
|
+
export { __exportAll };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AiAdapter } from "../ports/ai.mjs";
|
|
2
|
+
import { WorkspaceConfig } from "@contractspec/module.workspace";
|
|
3
|
+
|
|
4
|
+
//#region src/adapters/ai.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Create a Node.js AI adapter using Vercel AI SDK.
|
|
8
|
+
*/
|
|
9
|
+
declare function createNodeAiAdapter(config: WorkspaceConfig): AiAdapter;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { createNodeAiAdapter };
|
|
12
|
+
//# sourceMappingURL=ai.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.d.mts","names":[],"sources":["../../src/adapters/ai.ts"],"sourcesContent":[],"mappings":";;;;;;;;iBAqBgB,mBAAA,SAA4B,kBAAkB"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { anthropic } from "@ai-sdk/anthropic";
|
|
2
|
+
import { openai } from "@ai-sdk/openai";
|
|
3
|
+
import { ollama } from "ollama-ai-provider";
|
|
4
|
+
import { generateObject, generateText, streamText } from "ai";
|
|
5
|
+
|
|
6
|
+
//#region src/adapters/ai.ts
|
|
7
|
+
/**
|
|
8
|
+
* Node.js AI adapter implementation using Vercel AI SDK.
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Create a Node.js AI adapter using Vercel AI SDK.
|
|
12
|
+
*/
|
|
13
|
+
function createNodeAiAdapter(config) {
|
|
14
|
+
return {
|
|
15
|
+
async validateProvider(providerConfig) {
|
|
16
|
+
try {
|
|
17
|
+
const { aiProvider } = providerConfig;
|
|
18
|
+
if (aiProvider === "ollama") return { success: true };
|
|
19
|
+
if (aiProvider === "claude" && !process.env["ANTHROPIC_API_KEY"]) return {
|
|
20
|
+
success: false,
|
|
21
|
+
error: "ANTHROPIC_API_KEY environment variable not set"
|
|
22
|
+
};
|
|
23
|
+
if (aiProvider === "openai" && !process.env["OPENAI_API_KEY"]) return {
|
|
24
|
+
success: false,
|
|
25
|
+
error: "OPENAI_API_KEY environment variable not set"
|
|
26
|
+
};
|
|
27
|
+
return { success: true };
|
|
28
|
+
} catch (error) {
|
|
29
|
+
return {
|
|
30
|
+
success: false,
|
|
31
|
+
error: error instanceof Error ? error.message : String(error)
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
async generateText(options) {
|
|
36
|
+
return { text: (await generateText({
|
|
37
|
+
model: getAIProvider(config),
|
|
38
|
+
prompt: options.prompt,
|
|
39
|
+
system: options.systemPrompt
|
|
40
|
+
})).text };
|
|
41
|
+
},
|
|
42
|
+
async generateStructured(options) {
|
|
43
|
+
return { object: (await generateObject({
|
|
44
|
+
model: getAIProvider(config),
|
|
45
|
+
schema: options.schema,
|
|
46
|
+
prompt: options.prompt,
|
|
47
|
+
system: options.systemPrompt
|
|
48
|
+
})).object };
|
|
49
|
+
},
|
|
50
|
+
async streamText(options, onChunk) {
|
|
51
|
+
const result = await streamText({
|
|
52
|
+
model: getAIProvider(config),
|
|
53
|
+
prompt: options.prompt,
|
|
54
|
+
system: options.systemPrompt
|
|
55
|
+
});
|
|
56
|
+
let fullText = "";
|
|
57
|
+
for await (const chunk of result.textStream) {
|
|
58
|
+
fullText += chunk;
|
|
59
|
+
onChunk(chunk);
|
|
60
|
+
}
|
|
61
|
+
return fullText;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Get AI provider based on configuration.
|
|
67
|
+
*/
|
|
68
|
+
function getAIProvider(config) {
|
|
69
|
+
const { aiProvider, aiModel, customEndpoint } = config;
|
|
70
|
+
switch (aiProvider) {
|
|
71
|
+
case "claude": return anthropic(aiModel ?? "claude-3-5-sonnet-20241022");
|
|
72
|
+
case "openai": return openai(aiModel ?? "gpt-4o");
|
|
73
|
+
case "ollama": return ollama(aiModel ?? "codellama");
|
|
74
|
+
case "custom":
|
|
75
|
+
if (!customEndpoint) throw new Error("Custom endpoint required. Set customEndpoint in config or CONTRACTSPEC_LLM_ENDPOINT env var");
|
|
76
|
+
return openai(aiModel ?? "default");
|
|
77
|
+
default: throw new Error(`Unknown AI provider: ${aiProvider}`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
//#endregion
|
|
82
|
+
export { createNodeAiAdapter };
|
|
83
|
+
//# sourceMappingURL=ai.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai.mjs","names":[],"sources":["../../src/adapters/ai.ts"],"sourcesContent":["/**\n * Node.js AI adapter implementation using Vercel AI SDK.\n */\n\nimport { anthropic } from '@ai-sdk/anthropic';\nimport { openai } from '@ai-sdk/openai';\nimport { ollama } from 'ollama-ai-provider';\nimport type { LanguageModel } from 'ai';\nimport { generateObject, generateText, streamText } from 'ai';\nimport type { WorkspaceConfig } from '@contractspec/module.workspace';\nimport type {\n AiAdapter,\n AiGenerateOptions,\n AiGenerateResult,\n AiGenerateStructuredOptions,\n AiValidationResult,\n} from '../ports/ai';\n\n/**\n * Create a Node.js AI adapter using Vercel AI SDK.\n */\nexport function createNodeAiAdapter(config: WorkspaceConfig): AiAdapter {\n return {\n async validateProvider(\n providerConfig: WorkspaceConfig\n ): Promise<AiValidationResult> {\n try {\n const { aiProvider } = providerConfig;\n\n // For Ollama, we can't easily validate without making a request\n if (aiProvider === 'ollama') {\n return { success: true };\n }\n\n // For cloud providers, check API key exists\n if (aiProvider === 'claude' && !process.env['ANTHROPIC_API_KEY']) {\n return {\n success: false,\n error: 'ANTHROPIC_API_KEY environment variable not set',\n };\n }\n\n if (aiProvider === 'openai' && !process.env['OPENAI_API_KEY']) {\n return {\n success: false,\n error: 'OPENAI_API_KEY environment variable not set',\n };\n }\n\n return { success: true };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error),\n };\n }\n },\n\n async generateText(options: AiGenerateOptions): Promise<AiGenerateResult> {\n const model = getAIProvider(config);\n\n const result = await generateText({\n model,\n prompt: options.prompt,\n system: options.systemPrompt,\n });\n\n return { text: result.text };\n },\n\n async generateStructured<T>(\n options: AiGenerateStructuredOptions<T>\n ): Promise<{ object: T }> {\n const model = getAIProvider(config);\n\n // Use generateObject with schema cast to expected type\n const generateObjectOptions = {\n model,\n schema: options.schema,\n prompt: options.prompt,\n system: options.systemPrompt,\n };\n\n const result = await generateObject(\n generateObjectOptions as Parameters<typeof generateObject>[0]\n );\n\n return { object: result.object as T };\n },\n\n async streamText(\n options: AiGenerateOptions,\n onChunk: (text: string) => void\n ): Promise<string> {\n const model = getAIProvider(config);\n\n const result = await streamText({\n model,\n prompt: options.prompt,\n system: options.systemPrompt,\n });\n\n let fullText = '';\n\n for await (const chunk of result.textStream) {\n fullText += chunk;\n onChunk(chunk);\n }\n\n return fullText;\n },\n };\n}\n\n/**\n * Get AI provider based on configuration.\n */\nfunction getAIProvider(config: WorkspaceConfig): LanguageModel {\n const { aiProvider, aiModel, customEndpoint } = config;\n\n switch (aiProvider) {\n case 'claude': {\n const model = aiModel ?? 'claude-3-5-sonnet-20241022';\n return anthropic(model);\n }\n\n case 'openai': {\n const model = aiModel ?? 'gpt-4o';\n return openai(model);\n }\n\n case 'ollama': {\n const model = aiModel ?? 'codellama';\n // ollama-ai-provider returns LanguageModelV1, wrap it to satisfy LanguageModel interface\n const ollamaModel = ollama(model);\n // Return as unknown then LanguageModel to bypass strict type checking\n // This is safe because ollama models are compatible at runtime\n return ollamaModel as unknown as LanguageModel;\n }\n\n case 'custom': {\n if (!customEndpoint) {\n throw new Error(\n 'Custom endpoint required. Set customEndpoint in config or CONTRACTSPEC_LLM_ENDPOINT env var'\n );\n }\n\n const model = aiModel ?? 'default';\n // For custom endpoints, use openai with environment variable for baseURL\n return openai(model);\n }\n\n default:\n throw new Error(`Unknown AI provider: ${aiProvider}`);\n }\n}\n"],"mappings":";;;;;;;;;;;;AAqBA,SAAgB,oBAAoB,QAAoC;AACtE,QAAO;EACL,MAAM,iBACJ,gBAC6B;AAC7B,OAAI;IACF,MAAM,EAAE,eAAe;AAGvB,QAAI,eAAe,SACjB,QAAO,EAAE,SAAS,MAAM;AAI1B,QAAI,eAAe,YAAY,CAAC,QAAQ,IAAI,qBAC1C,QAAO;KACL,SAAS;KACT,OAAO;KACR;AAGH,QAAI,eAAe,YAAY,CAAC,QAAQ,IAAI,kBAC1C,QAAO;KACL,SAAS;KACT,OAAO;KACR;AAGH,WAAO,EAAE,SAAS,MAAM;YACjB,OAAO;AACd,WAAO;KACL,SAAS;KACT,OAAO,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM;KAC9D;;;EAIL,MAAM,aAAa,SAAuD;AASxE,UAAO,EAAE,OANM,MAAM,aAAa;IAChC,OAHY,cAAc,OAAO;IAIjC,QAAQ,QAAQ;IAChB,QAAQ,QAAQ;IACjB,CAAC,EAEoB,MAAM;;EAG9B,MAAM,mBACJ,SACwB;AAexB,UAAO,EAAE,SAJM,MAAM,eAPS;IAC5B,OAJY,cAAc,OAAO;IAKjC,QAAQ,QAAQ;IAChB,QAAQ,QAAQ;IAChB,QAAQ,QAAQ;IACjB,CAIA,EAEuB,QAAa;;EAGvC,MAAM,WACJ,SACA,SACiB;GAGjB,MAAM,SAAS,MAAM,WAAW;IAC9B,OAHY,cAAc,OAAO;IAIjC,QAAQ,QAAQ;IAChB,QAAQ,QAAQ;IACjB,CAAC;GAEF,IAAI,WAAW;AAEf,cAAW,MAAM,SAAS,OAAO,YAAY;AAC3C,gBAAY;AACZ,YAAQ,MAAM;;AAGhB,UAAO;;EAEV;;;;;AAMH,SAAS,cAAc,QAAwC;CAC7D,MAAM,EAAE,YAAY,SAAS,mBAAmB;AAEhD,SAAQ,YAAR;EACE,KAAK,SAEH,QAAO,UADO,WAAW,6BACF;EAGzB,KAAK,SAEH,QAAO,OADO,WAAW,SACL;EAGtB,KAAK,SAMH,QAHoB,OAFN,WAAW,YAEQ;EAMnC,KAAK;AACH,OAAI,CAAC,eACH,OAAM,IAAI,MACR,8FACD;AAKH,UAAO,OAFO,WAAW,UAEL;EAGtB,QACE,OAAM,IAAI,MAAM,wBAAwB,aAAa"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { WorkspaceAdapters } from "../ports/logger.mjs";
|
|
2
|
+
import { WorkspaceConfig } from "@contractspec/module.workspace";
|
|
3
|
+
|
|
4
|
+
//#region src/adapters/factory.d.ts
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Options for creating adapters.
|
|
8
|
+
*/
|
|
9
|
+
interface CreateAdaptersOptions {
|
|
10
|
+
/**
|
|
11
|
+
* Working directory for file operations.
|
|
12
|
+
*/
|
|
13
|
+
cwd?: string;
|
|
14
|
+
/**
|
|
15
|
+
* Workspace configuration for AI.
|
|
16
|
+
*/
|
|
17
|
+
config?: WorkspaceConfig;
|
|
18
|
+
/**
|
|
19
|
+
* Use no-op logger (for testing).
|
|
20
|
+
*/
|
|
21
|
+
silent?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Create all Node.js adapters with default configuration.
|
|
25
|
+
*/
|
|
26
|
+
declare function createNodeAdapters(options?: CreateAdaptersOptions): WorkspaceAdapters;
|
|
27
|
+
//#endregion
|
|
28
|
+
export { CreateAdaptersOptions, createNodeAdapters };
|
|
29
|
+
//# sourceMappingURL=factory.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.mts","names":[],"sources":["../../src/adapters/factory.ts"],"sourcesContent":[],"mappings":";;;;;AAmCA;;;UApBiB,qBAAA;;;;;;;;WASN;;;;;;;;;iBAWK,kBAAA,WACL,wBACR"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { createNodeFsAdapter } from "./fs.mjs";
|
|
2
|
+
import { createNodeGitAdapter } from "./git.mjs";
|
|
3
|
+
import { createNodeWatcherAdapter } from "./watcher.mjs";
|
|
4
|
+
import { createNodeAiAdapter } from "./ai.mjs";
|
|
5
|
+
import { createConsoleLoggerAdapter, createNoopLoggerAdapter } from "./logger.mjs";
|
|
6
|
+
|
|
7
|
+
//#region src/adapters/factory.ts
|
|
8
|
+
/**
|
|
9
|
+
* Create all Node.js adapters with default configuration.
|
|
10
|
+
*/
|
|
11
|
+
function createNodeAdapters(options = {}) {
|
|
12
|
+
const { cwd, config, silent } = options;
|
|
13
|
+
const workspaceConfig = config ?? {
|
|
14
|
+
aiProvider: "claude",
|
|
15
|
+
agentMode: "simple",
|
|
16
|
+
outputDir: "./src",
|
|
17
|
+
conventions: {
|
|
18
|
+
operations: "interactions/commands|queries",
|
|
19
|
+
events: "events",
|
|
20
|
+
presentations: "presentations",
|
|
21
|
+
forms: "forms"
|
|
22
|
+
},
|
|
23
|
+
defaultOwners: [],
|
|
24
|
+
defaultTags: []
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
fs: createNodeFsAdapter(cwd),
|
|
28
|
+
git: createNodeGitAdapter(cwd),
|
|
29
|
+
watcher: createNodeWatcherAdapter(cwd),
|
|
30
|
+
ai: createNodeAiAdapter(workspaceConfig),
|
|
31
|
+
logger: silent ? createNoopLoggerAdapter() : createConsoleLoggerAdapter()
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { createNodeAdapters };
|
|
37
|
+
//# sourceMappingURL=factory.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.mjs","names":[],"sources":["../../src/adapters/factory.ts"],"sourcesContent":["/**\n * Factory for creating workspace adapters.\n */\n\nimport type { WorkspaceConfig } from '@contractspec/module.workspace';\nimport type { WorkspaceAdapters } from '../ports/logger';\nimport { createNodeFsAdapter } from './fs';\nimport { createNodeGitAdapter } from './git';\nimport { createNodeWatcherAdapter } from './watcher';\nimport { createNodeAiAdapter } from './ai';\nimport { createConsoleLoggerAdapter, createNoopLoggerAdapter } from './logger';\n\n/**\n * Options for creating adapters.\n */\nexport interface CreateAdaptersOptions {\n /**\n * Working directory for file operations.\n */\n cwd?: string;\n\n /**\n * Workspace configuration for AI.\n */\n config?: WorkspaceConfig;\n\n /**\n * Use no-op logger (for testing).\n */\n silent?: boolean;\n}\n\n/**\n * Create all Node.js adapters with default configuration.\n */\nexport function createNodeAdapters(\n options: CreateAdaptersOptions = {}\n): WorkspaceAdapters {\n const { cwd, config, silent } = options;\n\n // Use default config if not provided\n const workspaceConfig: WorkspaceConfig = config ?? {\n aiProvider: 'claude',\n agentMode: 'simple',\n outputDir: './src',\n conventions: {\n operations: 'interactions/commands|queries',\n events: 'events',\n presentations: 'presentations',\n forms: 'forms',\n },\n defaultOwners: [],\n defaultTags: [],\n };\n\n return {\n fs: createNodeFsAdapter(cwd),\n git: createNodeGitAdapter(cwd),\n watcher: createNodeWatcherAdapter(cwd),\n ai: createNodeAiAdapter(workspaceConfig),\n logger: silent ? createNoopLoggerAdapter() : createConsoleLoggerAdapter(),\n };\n}\n"],"mappings":";;;;;;;;;;AAmCA,SAAgB,mBACd,UAAiC,EAAE,EAChB;CACnB,MAAM,EAAE,KAAK,QAAQ,WAAW;CAGhC,MAAM,kBAAmC,UAAU;EACjD,YAAY;EACZ,WAAW;EACX,WAAW;EACX,aAAa;GACX,YAAY;GACZ,QAAQ;GACR,eAAe;GACf,OAAO;GACR;EACD,eAAe,EAAE;EACjB,aAAa,EAAE;EAChB;AAED,QAAO;EACL,IAAI,oBAAoB,IAAI;EAC5B,KAAK,qBAAqB,IAAI;EAC9B,SAAS,yBAAyB,IAAI;EACtC,IAAI,oBAAoB,gBAAgB;EACxC,QAAQ,SAAS,yBAAyB,GAAG,4BAA4B;EAC1E"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { FsAdapter } from "../ports/fs.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/fs.d.ts
|
|
4
|
+
|
|
5
|
+
declare const DEFAULT_SPEC_PATTERNS: string[];
|
|
6
|
+
/**
|
|
7
|
+
* Create a Node.js filesystem adapter.
|
|
8
|
+
*/
|
|
9
|
+
declare function createNodeFsAdapter(cwd?: string): FsAdapter;
|
|
10
|
+
//#endregion
|
|
11
|
+
export { DEFAULT_SPEC_PATTERNS, createNodeFsAdapter };
|
|
12
|
+
//# sourceMappingURL=fs.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.mts","names":[],"sources":["../../src/adapters/fs.ts"],"sourcesContent":[],"mappings":";;;;AA8EgB,cAvDH,qBAuDsC,EAAA,MAAS,EAAA;;;;iBAA5C,mBAAA,gBAAmC"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { access, mkdir, readFile, rm, stat, writeFile } from "node:fs/promises";
|
|
2
|
+
import { basename, dirname, isAbsolute, join, relative, resolve } from "node:path";
|
|
3
|
+
import { glob } from "glob";
|
|
4
|
+
|
|
5
|
+
//#region src/adapters/fs.ts
|
|
6
|
+
/**
|
|
7
|
+
* Node.js filesystem adapter implementation.
|
|
8
|
+
*/
|
|
9
|
+
const DEFAULT_SPEC_PATTERNS = [
|
|
10
|
+
"**/*.operation.ts",
|
|
11
|
+
"**/*.operations.ts",
|
|
12
|
+
"**/*.event.ts",
|
|
13
|
+
"**/*.presentation.ts",
|
|
14
|
+
"**/*.feature.ts",
|
|
15
|
+
"**/*.capability.ts",
|
|
16
|
+
"**/*.workflow.ts",
|
|
17
|
+
"**/*.data-view.ts",
|
|
18
|
+
"**/*.form.ts",
|
|
19
|
+
"**/*.migration.ts",
|
|
20
|
+
"**/*.telemetry.ts",
|
|
21
|
+
"**/*.experiment.ts",
|
|
22
|
+
"**/*.app-config.ts",
|
|
23
|
+
"**/*.integration.ts",
|
|
24
|
+
"**/*.knowledge.ts",
|
|
25
|
+
"**/*.policy.ts",
|
|
26
|
+
"**/*.test-spec.ts",
|
|
27
|
+
"**/contracts/*.ts",
|
|
28
|
+
"**/contracts/index.ts",
|
|
29
|
+
"**/operations/*.ts",
|
|
30
|
+
"**/operations/index.ts",
|
|
31
|
+
"**/operations.ts",
|
|
32
|
+
"**/events.ts",
|
|
33
|
+
"**/presentations.ts",
|
|
34
|
+
"**/events/index.ts",
|
|
35
|
+
"**/presentations/index.ts",
|
|
36
|
+
"**/tests/*.ts",
|
|
37
|
+
"**/tests/*.test-spec.ts"
|
|
38
|
+
];
|
|
39
|
+
const DEFAULT_IGNORES = [
|
|
40
|
+
"**/node_modules/**",
|
|
41
|
+
"**/dist/**",
|
|
42
|
+
"**/.turbo/**",
|
|
43
|
+
"**/.next/**",
|
|
44
|
+
"**/build/**",
|
|
45
|
+
"**/coverage/**",
|
|
46
|
+
"**/*.d.ts",
|
|
47
|
+
"**/importer/**",
|
|
48
|
+
"**/exporter/**",
|
|
49
|
+
"**/docs/**/*.docblock.ts",
|
|
50
|
+
"**/docs/presentations.ts"
|
|
51
|
+
];
|
|
52
|
+
/**
|
|
53
|
+
* Create a Node.js filesystem adapter.
|
|
54
|
+
*/
|
|
55
|
+
function createNodeFsAdapter(cwd) {
|
|
56
|
+
const baseCwd = cwd ?? process.cwd();
|
|
57
|
+
return {
|
|
58
|
+
async exists(path$1) {
|
|
59
|
+
try {
|
|
60
|
+
await access(resolvePath(path$1));
|
|
61
|
+
return true;
|
|
62
|
+
} catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
async readFile(path$1) {
|
|
67
|
+
return readFile(resolvePath(path$1), "utf-8");
|
|
68
|
+
},
|
|
69
|
+
async writeFile(path$1, content) {
|
|
70
|
+
const fullPath = resolvePath(path$1);
|
|
71
|
+
await mkdir(dirname(fullPath), { recursive: true });
|
|
72
|
+
await writeFile(fullPath, content, "utf-8");
|
|
73
|
+
},
|
|
74
|
+
async remove(path$1) {
|
|
75
|
+
await rm(resolvePath(path$1), {
|
|
76
|
+
recursive: true,
|
|
77
|
+
force: true
|
|
78
|
+
});
|
|
79
|
+
},
|
|
80
|
+
async stat(path$1) {
|
|
81
|
+
const stats = await stat(resolvePath(path$1));
|
|
82
|
+
return {
|
|
83
|
+
size: stats.size,
|
|
84
|
+
isFile: stats.isFile(),
|
|
85
|
+
isDirectory: stats.isDirectory(),
|
|
86
|
+
mtime: stats.mtime
|
|
87
|
+
};
|
|
88
|
+
},
|
|
89
|
+
async mkdir(path$1) {
|
|
90
|
+
await mkdir(resolvePath(path$1), { recursive: true });
|
|
91
|
+
},
|
|
92
|
+
async glob(options) {
|
|
93
|
+
const patterns = options.patterns ?? (options.pattern ? [options.pattern] : DEFAULT_SPEC_PATTERNS);
|
|
94
|
+
const ignore = options.ignore ?? DEFAULT_IGNORES;
|
|
95
|
+
const globCwd = options.cwd ?? baseCwd;
|
|
96
|
+
const absolute = options.absolute ?? true;
|
|
97
|
+
const all = [];
|
|
98
|
+
for (const pattern of patterns) {
|
|
99
|
+
const matches = await glob(pattern, {
|
|
100
|
+
cwd: globCwd,
|
|
101
|
+
ignore,
|
|
102
|
+
absolute
|
|
103
|
+
});
|
|
104
|
+
all.push(...matches);
|
|
105
|
+
}
|
|
106
|
+
return Array.from(new Set(all)).sort((a, b) => a.localeCompare(b));
|
|
107
|
+
},
|
|
108
|
+
resolve(...paths) {
|
|
109
|
+
const [first, ...rest] = paths;
|
|
110
|
+
if (!first) return baseCwd;
|
|
111
|
+
return resolve(baseCwd, first, ...rest);
|
|
112
|
+
},
|
|
113
|
+
dirname(path$1) {
|
|
114
|
+
return dirname(path$1);
|
|
115
|
+
},
|
|
116
|
+
basename(path$1) {
|
|
117
|
+
return basename(path$1);
|
|
118
|
+
},
|
|
119
|
+
join(...paths) {
|
|
120
|
+
return join(...paths);
|
|
121
|
+
},
|
|
122
|
+
relative(from, to) {
|
|
123
|
+
return relative(from, to);
|
|
124
|
+
}
|
|
125
|
+
};
|
|
126
|
+
function resolvePath(path$1) {
|
|
127
|
+
return isAbsolute(path$1) ? path$1 : resolve(baseCwd, path$1);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
//#endregion
|
|
132
|
+
export { DEFAULT_SPEC_PATTERNS, createNodeFsAdapter };
|
|
133
|
+
//# sourceMappingURL=fs.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.mjs","names":["path","fsStat","globFn"],"sources":["../../src/adapters/fs.ts"],"sourcesContent":["/**\n * Node.js filesystem adapter implementation.\n */\n\nimport {\n access,\n mkdir,\n readFile,\n rm,\n stat as fsStat,\n writeFile,\n} from 'node:fs/promises';\nimport {\n basename,\n dirname,\n isAbsolute,\n join,\n relative,\n resolve,\n} from 'node:path';\nimport { glob as globFn } from 'glob';\nimport type { DiscoverOptions, FileStat, FsAdapter } from '../ports/fs';\n\nexport const DEFAULT_SPEC_PATTERNS = [\n // Standard dot-prefixed naming convention\n '**/*.operation.ts',\n '**/*.operations.ts',\n '**/*.event.ts',\n '**/*.presentation.ts',\n '**/*.feature.ts',\n '**/*.capability.ts',\n '**/*.workflow.ts',\n '**/*.data-view.ts',\n '**/*.form.ts',\n '**/*.migration.ts',\n '**/*.telemetry.ts',\n '**/*.experiment.ts',\n '**/*.app-config.ts',\n '**/*.integration.ts',\n '**/*.knowledge.ts',\n '**/*.policy.ts',\n '**/*.test-spec.ts',\n // Directory-based patterns (contracts/ and operations/ directories)\n '**/contracts/*.ts',\n '**/contracts/index.ts',\n '**/operations/*.ts',\n '**/operations/index.ts',\n // Standalone file patterns (events.ts, presentations.ts)\n '**/operations.ts',\n '**/events.ts',\n '**/presentations.ts',\n // Directory index patterns (/events/index.ts, /presentations/index.ts)\n '**/events/index.ts',\n '**/presentations/index.ts',\n // Test specs in tests directory\n '**/tests/*.ts',\n '**/tests/*.test-spec.ts',\n];\n\nconst DEFAULT_IGNORES = [\n '**/node_modules/**',\n '**/dist/**',\n '**/.turbo/**',\n '**/.next/**',\n '**/build/**',\n '**/coverage/**',\n '**/*.d.ts',\n // Code generators and transformers (not actual specs)\n '**/importer/**',\n '**/exporter/**',\n // Documentation blocks (treated separately)\n '**/docs/**/*.docblock.ts',\n '**/docs/presentations.ts',\n];\n\n/**\n * Create a Node.js filesystem adapter.\n */\nexport function createNodeFsAdapter(cwd?: string): FsAdapter {\n const baseCwd = cwd ?? process.cwd();\n\n return {\n async exists(path: string): Promise<boolean> {\n try {\n await access(resolvePath(path));\n return true;\n } catch {\n return false;\n }\n },\n\n async readFile(path: string): Promise<string> {\n return readFile(resolvePath(path), 'utf-8');\n },\n\n async writeFile(path: string, content: string): Promise<void> {\n const fullPath = resolvePath(path);\n const dir = dirname(fullPath);\n await mkdir(dir, { recursive: true });\n await writeFile(fullPath, content, 'utf-8');\n },\n\n async remove(path: string): Promise<void> {\n await rm(resolvePath(path), { recursive: true, force: true });\n },\n\n async stat(path: string): Promise<FileStat> {\n const stats = await fsStat(resolvePath(path));\n return {\n size: stats.size,\n isFile: stats.isFile(),\n isDirectory: stats.isDirectory(),\n mtime: stats.mtime,\n };\n },\n\n async mkdir(path: string): Promise<void> {\n await mkdir(resolvePath(path), { recursive: true });\n },\n\n async glob(options: DiscoverOptions): Promise<string[]> {\n const patterns =\n options.patterns ??\n (options.pattern ? [options.pattern] : DEFAULT_SPEC_PATTERNS);\n const ignore = options.ignore ?? DEFAULT_IGNORES;\n // Use provided cwd or fall back to adapter's baseCwd\n const globCwd = options.cwd ?? baseCwd;\n // Default to absolute paths for safer file operations\n const absolute = options.absolute ?? true;\n\n const all: string[] = [];\n for (const pattern of patterns) {\n const matches = await globFn(pattern, {\n cwd: globCwd,\n ignore,\n absolute,\n });\n all.push(...matches);\n }\n\n return Array.from(new Set(all)).sort((a, b) => a.localeCompare(b));\n },\n\n resolve(...paths: string[]): string {\n const [first, ...rest] = paths;\n if (!first) return baseCwd;\n return resolve(baseCwd, first, ...rest);\n },\n\n dirname(path: string): string {\n return dirname(path);\n },\n\n basename(path: string): string {\n return basename(path);\n },\n\n join(...paths: string[]): string {\n return join(...paths);\n },\n\n relative(from: string, to: string): string {\n return relative(from, to);\n },\n };\n\n function resolvePath(path: string): string {\n return isAbsolute(path) ? path : resolve(baseCwd, path);\n }\n}\n"],"mappings":";;;;;;;;AAuBA,MAAa,wBAAwB;CAEnC;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CACA;CACA;CAEA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACD;AAED,MAAM,kBAAkB;CACtB;CACA;CACA;CACA;CACA;CACA;CACA;CAEA;CACA;CAEA;CACA;CACD;;;;AAKD,SAAgB,oBAAoB,KAAyB;CAC3D,MAAM,UAAU,OAAO,QAAQ,KAAK;AAEpC,QAAO;EACL,MAAM,OAAO,QAAgC;AAC3C,OAAI;AACF,UAAM,OAAO,YAAYA,OAAK,CAAC;AAC/B,WAAO;WACD;AACN,WAAO;;;EAIX,MAAM,SAAS,QAA+B;AAC5C,UAAO,SAAS,YAAYA,OAAK,EAAE,QAAQ;;EAG7C,MAAM,UAAU,QAAc,SAAgC;GAC5D,MAAM,WAAW,YAAYA,OAAK;AAElC,SAAM,MADM,QAAQ,SAAS,EACZ,EAAE,WAAW,MAAM,CAAC;AACrC,SAAM,UAAU,UAAU,SAAS,QAAQ;;EAG7C,MAAM,OAAO,QAA6B;AACxC,SAAM,GAAG,YAAYA,OAAK,EAAE;IAAE,WAAW;IAAM,OAAO;IAAM,CAAC;;EAG/D,MAAM,KAAK,QAAiC;GAC1C,MAAM,QAAQ,MAAMC,KAAO,YAAYD,OAAK,CAAC;AAC7C,UAAO;IACL,MAAM,MAAM;IACZ,QAAQ,MAAM,QAAQ;IACtB,aAAa,MAAM,aAAa;IAChC,OAAO,MAAM;IACd;;EAGH,MAAM,MAAM,QAA6B;AACvC,SAAM,MAAM,YAAYA,OAAK,EAAE,EAAE,WAAW,MAAM,CAAC;;EAGrD,MAAM,KAAK,SAA6C;GACtD,MAAM,WACJ,QAAQ,aACP,QAAQ,UAAU,CAAC,QAAQ,QAAQ,GAAG;GACzC,MAAM,SAAS,QAAQ,UAAU;GAEjC,MAAM,UAAU,QAAQ,OAAO;GAE/B,MAAM,WAAW,QAAQ,YAAY;GAErC,MAAM,MAAgB,EAAE;AACxB,QAAK,MAAM,WAAW,UAAU;IAC9B,MAAM,UAAU,MAAME,KAAO,SAAS;KACpC,KAAK;KACL;KACA;KACD,CAAC;AACF,QAAI,KAAK,GAAG,QAAQ;;AAGtB,UAAO,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,CAAC,MAAM,GAAG,MAAM,EAAE,cAAc,EAAE,CAAC;;EAGpE,QAAQ,GAAG,OAAyB;GAClC,MAAM,CAAC,OAAO,GAAG,QAAQ;AACzB,OAAI,CAAC,MAAO,QAAO;AACnB,UAAO,QAAQ,SAAS,OAAO,GAAG,KAAK;;EAGzC,QAAQ,QAAsB;AAC5B,UAAO,QAAQF,OAAK;;EAGtB,SAAS,QAAsB;AAC7B,UAAO,SAASA,OAAK;;EAGvB,KAAK,GAAG,OAAyB;AAC/B,UAAO,KAAK,GAAG,MAAM;;EAGvB,SAAS,MAAc,IAAoB;AACzC,UAAO,SAAS,MAAM,GAAG;;EAE5B;CAED,SAAS,YAAY,QAAsB;AACzC,SAAO,WAAWA,OAAK,GAAGA,SAAO,QAAQ,SAASA,OAAK"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { GitAdapter } from "../ports/git.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/git.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create a Node.js git adapter.
|
|
7
|
+
*/
|
|
8
|
+
declare function createNodeGitAdapter(cwd?: string): GitAdapter;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { createNodeGitAdapter };
|
|
11
|
+
//# sourceMappingURL=git.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.d.mts","names":[],"sources":["../../src/adapters/git.ts"],"sourcesContent":[],"mappings":";;;;;;;iBAYgB,oBAAA,gBAAoC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { access } from "node:fs/promises";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { execSync } from "node:child_process";
|
|
4
|
+
|
|
5
|
+
//#region src/adapters/git.ts
|
|
6
|
+
/**
|
|
7
|
+
* Node.js git adapter implementation.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Create a Node.js git adapter.
|
|
11
|
+
*/
|
|
12
|
+
function createNodeGitAdapter(cwd) {
|
|
13
|
+
const baseCwd = cwd ?? process.cwd();
|
|
14
|
+
return {
|
|
15
|
+
async showFile(ref, filePath) {
|
|
16
|
+
try {
|
|
17
|
+
return execSync(`git show ${ref}:${filePath}`, {
|
|
18
|
+
cwd: baseCwd,
|
|
19
|
+
encoding: "utf-8",
|
|
20
|
+
stdio: [
|
|
21
|
+
"ignore",
|
|
22
|
+
"pipe",
|
|
23
|
+
"pipe"
|
|
24
|
+
]
|
|
25
|
+
});
|
|
26
|
+
} catch (error) {
|
|
27
|
+
throw new Error(`Could not load ${filePath} at ref ${ref}: ${error instanceof Error ? error.message : String(error)}`);
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
async clean(options) {
|
|
31
|
+
const flags = [];
|
|
32
|
+
if (options?.force) flags.push("-f");
|
|
33
|
+
if (options?.directories) flags.push("-d");
|
|
34
|
+
if (options?.ignored) flags.push("-x");
|
|
35
|
+
if (options?.dryRun) flags.push("--dry-run");
|
|
36
|
+
execSync(`git clean ${flags.join(" ")}`, {
|
|
37
|
+
cwd: baseCwd,
|
|
38
|
+
stdio: "inherit"
|
|
39
|
+
});
|
|
40
|
+
},
|
|
41
|
+
async isGitRepo(path$1) {
|
|
42
|
+
const targetPath = path$1 ? resolve(baseCwd, path$1) : baseCwd;
|
|
43
|
+
try {
|
|
44
|
+
await access(resolve(targetPath, ".git"));
|
|
45
|
+
return true;
|
|
46
|
+
} catch {
|
|
47
|
+
return false;
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
async log(baseline) {
|
|
51
|
+
const ref = baseline ?? "HEAD~10";
|
|
52
|
+
const format = "--format=%H|||%s|||%an|||%aI";
|
|
53
|
+
try {
|
|
54
|
+
const output = execSync(`git log ${ref}..HEAD ${format}`, {
|
|
55
|
+
cwd: baseCwd,
|
|
56
|
+
encoding: "utf-8",
|
|
57
|
+
stdio: [
|
|
58
|
+
"ignore",
|
|
59
|
+
"pipe",
|
|
60
|
+
"pipe"
|
|
61
|
+
]
|
|
62
|
+
});
|
|
63
|
+
const entries = [];
|
|
64
|
+
for (const line of output.trim().split("\n")) {
|
|
65
|
+
if (!line) continue;
|
|
66
|
+
const [hash, message, author, date] = line.split("|||");
|
|
67
|
+
if (hash && message) entries.push({
|
|
68
|
+
hash,
|
|
69
|
+
message,
|
|
70
|
+
author,
|
|
71
|
+
date
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return entries;
|
|
75
|
+
} catch {
|
|
76
|
+
return [];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
//#endregion
|
|
83
|
+
export { createNodeGitAdapter };
|
|
84
|
+
//# sourceMappingURL=git.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"git.mjs","names":["path"],"sources":["../../src/adapters/git.ts"],"sourcesContent":["/**\n * Node.js git adapter implementation.\n */\n\nimport { execSync } from 'node:child_process';\nimport { access } from 'node:fs/promises';\nimport { resolve } from 'node:path';\nimport type { GitAdapter, GitCleanOptions, GitLogEntry } from '../ports/git';\n\n/**\n * Create a Node.js git adapter.\n */\nexport function createNodeGitAdapter(cwd?: string): GitAdapter {\n const baseCwd = cwd ?? process.cwd();\n\n return {\n async showFile(ref: string, filePath: string): Promise<string> {\n try {\n return execSync(`git show ${ref}:${filePath}`, {\n cwd: baseCwd,\n encoding: 'utf-8',\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n } catch (error) {\n throw new Error(\n `Could not load ${filePath} at ref ${ref}: ${\n error instanceof Error ? error.message : String(error)\n }`\n );\n }\n },\n\n async clean(options?: GitCleanOptions): Promise<void> {\n const flags: string[] = [];\n if (options?.force) flags.push('-f');\n if (options?.directories) flags.push('-d');\n if (options?.ignored) flags.push('-x');\n if (options?.dryRun) flags.push('--dry-run');\n\n execSync(`git clean ${flags.join(' ')}`, {\n cwd: baseCwd,\n stdio: 'inherit',\n });\n },\n\n async isGitRepo(path?: string): Promise<boolean> {\n const targetPath = path ? resolve(baseCwd, path) : baseCwd;\n try {\n await access(resolve(targetPath, '.git'));\n return true;\n } catch {\n return false;\n }\n },\n\n async log(baseline?: string): Promise<GitLogEntry[]> {\n const ref = baseline ?? 'HEAD~10';\n const format = '--format=%H|||%s|||%an|||%aI';\n\n try {\n const output = execSync(`git log ${ref}..HEAD ${format}`, {\n cwd: baseCwd,\n encoding: 'utf-8',\n stdio: ['ignore', 'pipe', 'pipe'],\n });\n\n const entries: GitLogEntry[] = [];\n\n for (const line of output.trim().split('\\n')) {\n if (!line) continue;\n const [hash, message, author, date] = line.split('|||');\n if (hash && message) {\n entries.push({ hash, message, author, date });\n }\n }\n\n return entries;\n } catch {\n // Return empty if git log fails (e.g., not enough commits)\n return [];\n }\n },\n };\n}\n"],"mappings":";;;;;;;;;;;AAYA,SAAgB,qBAAqB,KAA0B;CAC7D,MAAM,UAAU,OAAO,QAAQ,KAAK;AAEpC,QAAO;EACL,MAAM,SAAS,KAAa,UAAmC;AAC7D,OAAI;AACF,WAAO,SAAS,YAAY,IAAI,GAAG,YAAY;KAC7C,KAAK;KACL,UAAU;KACV,OAAO;MAAC;MAAU;MAAQ;MAAO;KAClC,CAAC;YACK,OAAO;AACd,UAAM,IAAI,MACR,kBAAkB,SAAS,UAAU,IAAI,IACvC,iBAAiB,QAAQ,MAAM,UAAU,OAAO,MAAM,GAEzD;;;EAIL,MAAM,MAAM,SAA0C;GACpD,MAAM,QAAkB,EAAE;AAC1B,OAAI,SAAS,MAAO,OAAM,KAAK,KAAK;AACpC,OAAI,SAAS,YAAa,OAAM,KAAK,KAAK;AAC1C,OAAI,SAAS,QAAS,OAAM,KAAK,KAAK;AACtC,OAAI,SAAS,OAAQ,OAAM,KAAK,YAAY;AAE5C,YAAS,aAAa,MAAM,KAAK,IAAI,IAAI;IACvC,KAAK;IACL,OAAO;IACR,CAAC;;EAGJ,MAAM,UAAU,QAAiC;GAC/C,MAAM,aAAaA,SAAO,QAAQ,SAASA,OAAK,GAAG;AACnD,OAAI;AACF,UAAM,OAAO,QAAQ,YAAY,OAAO,CAAC;AACzC,WAAO;WACD;AACN,WAAO;;;EAIX,MAAM,IAAI,UAA2C;GACnD,MAAM,MAAM,YAAY;GACxB,MAAM,SAAS;AAEf,OAAI;IACF,MAAM,SAAS,SAAS,WAAW,IAAI,SAAS,UAAU;KACxD,KAAK;KACL,UAAU;KACV,OAAO;MAAC;MAAU;MAAQ;MAAO;KAClC,CAAC;IAEF,MAAM,UAAyB,EAAE;AAEjC,SAAK,MAAM,QAAQ,OAAO,MAAM,CAAC,MAAM,KAAK,EAAE;AAC5C,SAAI,CAAC,KAAM;KACX,MAAM,CAAC,MAAM,SAAS,QAAQ,QAAQ,KAAK,MAAM,MAAM;AACvD,SAAI,QAAQ,QACV,SAAQ,KAAK;MAAE;MAAM;MAAS;MAAQ;MAAM,CAAC;;AAIjD,WAAO;WACD;AAEN,WAAO,EAAE;;;EAGd"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { DEFAULT_SPEC_PATTERNS, createNodeFsAdapter } from "./fs.mjs";
|
|
2
|
+
import { createNodeGitAdapter } from "./git.mjs";
|
|
3
|
+
import { createNodeWatcherAdapter } from "./watcher.mjs";
|
|
4
|
+
import { createNodeAiAdapter } from "./ai.mjs";
|
|
5
|
+
import { createConsoleLoggerAdapter, createNoopLoggerAdapter } from "./logger.mjs";
|
|
6
|
+
import { CreateAdaptersOptions, createNodeAdapters } from "./factory.mjs";
|
|
7
|
+
import { MetaRepoInfo, PackageManager, RepositoryType, SubmoduleInfo, WorkspaceInfo, detectPackageManager, detectRepositoryType, findMetaRepoRoot, findPackageRoot, findWorkspaceRoot, getExecCommand, getInstallCommand, getMetaRepoInfo, getPackageName, getRunCommand, getWorkspaceInfo, getWorkspacePackages, isMonorepo, parseGitModules } from "./workspace.mjs";
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DEFAULT_SPEC_PATTERNS, createNodeFsAdapter } from "./fs.mjs";
|
|
2
|
+
import { createNodeGitAdapter } from "./git.mjs";
|
|
3
|
+
import { createNodeWatcherAdapter } from "./watcher.mjs";
|
|
4
|
+
import { createNodeAiAdapter } from "./ai.mjs";
|
|
5
|
+
import { createConsoleLoggerAdapter, createNoopLoggerAdapter } from "./logger.mjs";
|
|
6
|
+
import { createNodeAdapters } from "./factory.mjs";
|
|
7
|
+
import { detectPackageManager, detectRepositoryType, findMetaRepoRoot, findPackageRoot, findWorkspaceRoot, getExecCommand, getInstallCommand, getMetaRepoInfo, getPackageName, getRunCommand, getWorkspaceInfo, getWorkspacePackages, isMonorepo, parseGitModules } from "./workspace.mjs";
|
|
8
|
+
|
|
9
|
+
export { };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { LoggerAdapter } from "../ports/logger.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/adapters/logger.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Create a console-based logger adapter.
|
|
7
|
+
* This is a basic implementation - CLI apps should inject their own
|
|
8
|
+
* logger with chalk/ora for better terminal output.
|
|
9
|
+
*/
|
|
10
|
+
declare function createConsoleLoggerAdapter(): LoggerAdapter;
|
|
11
|
+
/**
|
|
12
|
+
* Create a no-op logger adapter.
|
|
13
|
+
* Useful for testing or when logging is not desired.
|
|
14
|
+
*/
|
|
15
|
+
declare function createNoopLoggerAdapter(): LoggerAdapter;
|
|
16
|
+
//#endregion
|
|
17
|
+
export { createConsoleLoggerAdapter, createNoopLoggerAdapter };
|
|
18
|
+
//# sourceMappingURL=logger.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.mts","names":[],"sources":["../../src/adapters/logger.ts"],"sourcesContent":[],"mappings":";;;;;;;;;iBAagB,0BAAA,CAAA,GAA8B;;;;;iBA8B9B,uBAAA,CAAA,GAA2B"}
|