@contractspec/bundle.workspace 1.44.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/LICENSE +21 -0
- package/README.md +79 -0
- package/dist/_virtual/rolldown_runtime.js +36 -0
- package/dist/adapters/ai.d.ts +12 -0
- package/dist/adapters/ai.d.ts.map +1 -0
- package/dist/adapters/ai.js +83 -0
- package/dist/adapters/ai.js.map +1 -0
- package/dist/adapters/factory.d.ts +29 -0
- package/dist/adapters/factory.d.ts.map +1 -0
- package/dist/adapters/factory.js +37 -0
- package/dist/adapters/factory.js.map +1 -0
- package/dist/adapters/fs.d.ts +11 -0
- package/dist/adapters/fs.d.ts.map +1 -0
- package/dist/adapters/fs.js +131 -0
- package/dist/adapters/fs.js.map +1 -0
- package/dist/adapters/git.d.ts +11 -0
- package/dist/adapters/git.d.ts.map +1 -0
- package/dist/adapters/git.js +55 -0
- package/dist/adapters/git.js.map +1 -0
- package/dist/adapters/index.d.ts +7 -0
- package/dist/adapters/index.js +7 -0
- package/dist/adapters/logger.d.ts +18 -0
- package/dist/adapters/logger.d.ts.map +1 -0
- package/dist/adapters/logger.js +81 -0
- package/dist/adapters/logger.js.map +1 -0
- package/dist/adapters/watcher.d.ts +11 -0
- package/dist/adapters/watcher.d.ts.map +1 -0
- package/dist/adapters/watcher.js +74 -0
- package/dist/adapters/watcher.js.map +1 -0
- package/dist/adapters/workspace.d.ts +148 -0
- package/dist/adapters/workspace.d.ts.map +1 -0
- package/dist/adapters/workspace.js +275 -0
- package/dist/adapters/workspace.js.map +1 -0
- package/dist/ai/agents/claude-code-agent.d.ts +22 -0
- package/dist/ai/agents/claude-code-agent.d.ts.map +1 -0
- package/dist/ai/agents/claude-code-agent.js +182 -0
- package/dist/ai/agents/claude-code-agent.js.map +1 -0
- package/dist/ai/agents/cursor-agent.d.ts +68 -0
- package/dist/ai/agents/cursor-agent.d.ts.map +1 -0
- package/dist/ai/agents/cursor-agent.js +436 -0
- package/dist/ai/agents/cursor-agent.js.map +1 -0
- package/dist/ai/agents/index.js +5 -0
- package/dist/ai/agents/openai-codex-agent.d.ts +22 -0
- package/dist/ai/agents/openai-codex-agent.d.ts.map +1 -0
- package/dist/ai/agents/openai-codex-agent.js +167 -0
- package/dist/ai/agents/openai-codex-agent.js.map +1 -0
- package/dist/ai/agents/orchestrator.d.ts +50 -0
- package/dist/ai/agents/orchestrator.d.ts.map +1 -0
- package/dist/ai/agents/orchestrator.js +143 -0
- package/dist/ai/agents/orchestrator.js.map +1 -0
- package/dist/ai/agents/simple-agent.d.ts +17 -0
- package/dist/ai/agents/simple-agent.d.ts.map +1 -0
- package/dist/ai/agents/simple-agent.js +92 -0
- package/dist/ai/agents/simple-agent.js.map +1 -0
- package/dist/ai/agents/types.d.ts +36 -0
- package/dist/ai/agents/types.d.ts.map +1 -0
- package/dist/ai/client.d.ts +83 -0
- package/dist/ai/client.d.ts.map +1 -0
- package/dist/ai/client.js +163 -0
- package/dist/ai/client.js.map +1 -0
- package/dist/ai/index.d.ts +17 -0
- package/dist/ai/index.d.ts.map +1 -0
- package/dist/ai/index.js +28 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/prompts/code-generation.d.ts +26 -0
- package/dist/ai/prompts/code-generation.d.ts.map +1 -0
- package/dist/ai/prompts/code-generation.js +143 -0
- package/dist/ai/prompts/code-generation.js.map +1 -0
- package/dist/ai/prompts/index.d.ts +10 -0
- package/dist/ai/prompts/index.d.ts.map +1 -0
- package/dist/ai/prompts/index.js +13 -0
- package/dist/ai/prompts/index.js.map +1 -0
- package/dist/ai/prompts/spec-creation.d.ts +29 -0
- package/dist/ai/prompts/spec-creation.d.ts.map +1 -0
- package/dist/ai/prompts/spec-creation.js +111 -0
- package/dist/ai/prompts/spec-creation.js.map +1 -0
- package/dist/ai/providers.d.ts +29 -0
- package/dist/ai/providers.d.ts.map +1 -0
- package/dist/ai/providers.js +39 -0
- package/dist/ai/providers.js.map +1 -0
- package/dist/formatters/index.d.ts +11 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +19 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/formatters/json.d.ts +89 -0
- package/dist/formatters/json.d.ts.map +1 -0
- package/dist/formatters/json.js +72 -0
- package/dist/formatters/json.js.map +1 -0
- package/dist/formatters/sarif.d.ts +101 -0
- package/dist/formatters/sarif.d.ts.map +1 -0
- package/dist/formatters/sarif.js +163 -0
- package/dist/formatters/sarif.js.map +1 -0
- package/dist/formatters/text.d.ts +35 -0
- package/dist/formatters/text.d.ts.map +1 -0
- package/dist/formatters/text.js +209 -0
- package/dist/formatters/text.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +204 -0
- package/dist/index.js.map +1 -0
- package/dist/ports/ai.d.ts +59 -0
- package/dist/ports/ai.d.ts.map +1 -0
- package/dist/ports/fs.d.ts +81 -0
- package/dist/ports/fs.d.ts.map +1 -0
- package/dist/ports/git.d.ts +33 -0
- package/dist/ports/git.d.ts.map +1 -0
- package/dist/ports/index.d.ts +5 -0
- package/dist/ports/logger.d.ts +88 -0
- package/dist/ports/logger.d.ts.map +1 -0
- package/dist/ports/watcher.d.ts +52 -0
- package/dist/ports/watcher.d.ts.map +1 -0
- package/dist/services/agent-guide/adapters/claude-code.d.ts +35 -0
- package/dist/services/agent-guide/adapters/claude-code.d.ts.map +1 -0
- package/dist/services/agent-guide/adapters/claude-code.js +144 -0
- package/dist/services/agent-guide/adapters/claude-code.js.map +1 -0
- package/dist/services/agent-guide/adapters/cursor-cli.d.ts +39 -0
- package/dist/services/agent-guide/adapters/cursor-cli.d.ts.map +1 -0
- package/dist/services/agent-guide/adapters/cursor-cli.js +135 -0
- package/dist/services/agent-guide/adapters/cursor-cli.js.map +1 -0
- package/dist/services/agent-guide/adapters/generic-mcp.d.ts +53 -0
- package/dist/services/agent-guide/adapters/generic-mcp.d.ts.map +1 -0
- package/dist/services/agent-guide/adapters/generic-mcp.js +159 -0
- package/dist/services/agent-guide/adapters/generic-mcp.js.map +1 -0
- package/dist/services/agent-guide/adapters/index.d.ts +23 -0
- package/dist/services/agent-guide/adapters/index.d.ts.map +1 -0
- package/dist/services/agent-guide/adapters/index.js +31 -0
- package/dist/services/agent-guide/adapters/index.js.map +1 -0
- package/dist/services/agent-guide/agent-guide-service.d.ts +56 -0
- package/dist/services/agent-guide/agent-guide-service.d.ts.map +1 -0
- package/dist/services/agent-guide/agent-guide-service.js +147 -0
- package/dist/services/agent-guide/agent-guide-service.js.map +1 -0
- package/dist/services/agent-guide/index.d.ts +6 -0
- package/dist/services/agent-guide/index.js +5 -0
- package/dist/services/agent-guide/types.d.ts +58 -0
- package/dist/services/agent-guide/types.d.ts.map +1 -0
- package/dist/services/build.d.ts +59 -0
- package/dist/services/build.d.ts.map +1 -0
- package/dist/services/build.js +140 -0
- package/dist/services/build.js.map +1 -0
- package/dist/services/ci-check/ci-check-service.d.ts +16 -0
- package/dist/services/ci-check/ci-check-service.d.ts.map +1 -0
- package/dist/services/ci-check/ci-check-service.js +392 -0
- package/dist/services/ci-check/ci-check-service.js.map +1 -0
- package/dist/services/ci-check/index.d.ts +2 -0
- package/dist/services/ci-check/index.js +2 -0
- package/dist/services/ci-check/types.d.ts +143 -0
- package/dist/services/ci-check/types.d.ts.map +1 -0
- package/dist/services/ci-check/types.js +29 -0
- package/dist/services/ci-check/types.js.map +1 -0
- package/dist/services/clean.d.ts +41 -0
- package/dist/services/clean.d.ts.map +1 -0
- package/dist/services/clean.js +72 -0
- package/dist/services/clean.js.map +1 -0
- package/dist/services/config.d.ts +26 -0
- package/dist/services/config.d.ts.map +1 -0
- package/dist/services/config.js +77 -0
- package/dist/services/config.js.map +1 -0
- package/dist/services/deps.d.ts +53 -0
- package/dist/services/deps.d.ts.map +1 -0
- package/dist/services/deps.js +62 -0
- package/dist/services/deps.js.map +1 -0
- package/dist/services/diff.d.ts +34 -0
- package/dist/services/diff.d.ts.map +1 -0
- package/dist/services/diff.js +34 -0
- package/dist/services/diff.js.map +1 -0
- package/dist/services/doctor/checks/ai.js +119 -0
- package/dist/services/doctor/checks/ai.js.map +1 -0
- package/dist/services/doctor/checks/cli.js +147 -0
- package/dist/services/doctor/checks/cli.js.map +1 -0
- package/dist/services/doctor/checks/config.js +171 -0
- package/dist/services/doctor/checks/config.js.map +1 -0
- package/dist/services/doctor/checks/deps.js +247 -0
- package/dist/services/doctor/checks/deps.js.map +1 -0
- package/dist/services/doctor/checks/index.js +6 -0
- package/dist/services/doctor/checks/mcp.js +145 -0
- package/dist/services/doctor/checks/mcp.js.map +1 -0
- package/dist/services/doctor/checks/workspace.js +244 -0
- package/dist/services/doctor/checks/workspace.js.map +1 -0
- package/dist/services/doctor/doctor-service.d.ts +24 -0
- package/dist/services/doctor/doctor-service.d.ts.map +1 -0
- package/dist/services/doctor/doctor-service.js +116 -0
- package/dist/services/doctor/doctor-service.js.map +1 -0
- package/dist/services/doctor/index.d.ts +2 -0
- package/dist/services/doctor/index.js +2 -0
- package/dist/services/doctor/types.d.ts +118 -0
- package/dist/services/doctor/types.d.ts.map +1 -0
- package/dist/services/doctor/types.js +27 -0
- package/dist/services/doctor/types.js.map +1 -0
- package/dist/services/impact/formatters.d.ts +27 -0
- package/dist/services/impact/formatters.d.ts.map +1 -0
- package/dist/services/impact/formatters.js +111 -0
- package/dist/services/impact/formatters.js.map +1 -0
- package/dist/services/impact/impact-detection-service.d.ts +22 -0
- package/dist/services/impact/impact-detection-service.d.ts.map +1 -0
- package/dist/services/impact/impact-detection-service.js +96 -0
- package/dist/services/impact/impact-detection-service.js.map +1 -0
- package/dist/services/impact/index.d.ts +11 -0
- package/dist/services/impact/index.d.ts.map +1 -0
- package/dist/services/impact/index.js +16 -0
- package/dist/services/impact/index.js.map +1 -0
- package/dist/services/impact/types.d.ts +58 -0
- package/dist/services/impact/types.d.ts.map +1 -0
- package/dist/services/implementation/discovery.d.ts +30 -0
- package/dist/services/implementation/discovery.d.ts.map +1 -0
- package/dist/services/implementation/discovery.js +144 -0
- package/dist/services/implementation/discovery.js.map +1 -0
- package/dist/services/implementation/index.d.ts +3 -0
- package/dist/services/implementation/index.js +2 -0
- package/dist/services/implementation/resolver.d.ts +44 -0
- package/dist/services/implementation/resolver.d.ts.map +1 -0
- package/dist/services/implementation/resolver.js +224 -0
- package/dist/services/implementation/resolver.js.map +1 -0
- package/dist/services/implementation/types.d.ts +79 -0
- package/dist/services/implementation/types.d.ts.map +1 -0
- package/dist/services/index.d.ts +60 -0
- package/dist/services/index.js +57 -0
- package/dist/services/integrity-diagram.d.ts +36 -0
- package/dist/services/integrity-diagram.d.ts.map +1 -0
- package/dist/services/integrity-diagram.js +275 -0
- package/dist/services/integrity-diagram.js.map +1 -0
- package/dist/services/integrity.d.ts +134 -0
- package/dist/services/integrity.d.ts.map +1 -0
- package/dist/services/integrity.js +272 -0
- package/dist/services/integrity.js.map +1 -0
- package/dist/services/list.d.ts +31 -0
- package/dist/services/list.d.ts.map +1 -0
- package/dist/services/list.js +36 -0
- package/dist/services/list.js.map +1 -0
- package/dist/services/openapi/export-service.d.ts +53 -0
- package/dist/services/openapi/export-service.d.ts.map +1 -0
- package/dist/services/openapi/export-service.js +50 -0
- package/dist/services/openapi/export-service.js.map +1 -0
- package/dist/services/openapi/import-service.d.ts +17 -0
- package/dist/services/openapi/import-service.d.ts.map +1 -0
- package/dist/services/openapi/import-service.js +74 -0
- package/dist/services/openapi/import-service.js.map +1 -0
- package/dist/services/openapi/index.d.ts +5 -0
- package/dist/services/openapi/index.js +4 -0
- package/dist/services/openapi/sync-service.d.ts +17 -0
- package/dist/services/openapi/sync-service.d.ts.map +1 -0
- package/dist/services/openapi/sync-service.js +120 -0
- package/dist/services/openapi/sync-service.js.map +1 -0
- package/dist/services/openapi/types.d.ts +162 -0
- package/dist/services/openapi/types.d.ts.map +1 -0
- package/dist/services/openapi/validate-service.d.ts +16 -0
- package/dist/services/openapi/validate-service.d.ts.map +1 -0
- package/dist/services/openapi/validate-service.js +130 -0
- package/dist/services/openapi/validate-service.js.map +1 -0
- package/dist/services/quickstart/dependencies.d.ts +31 -0
- package/dist/services/quickstart/dependencies.d.ts.map +1 -0
- package/dist/services/quickstart/dependencies.js +57 -0
- package/dist/services/quickstart/dependencies.js.map +1 -0
- package/dist/services/quickstart/index.js +2 -0
- package/dist/services/quickstart/quickstart-service.d.ts +20 -0
- package/dist/services/quickstart/quickstart-service.d.ts.map +1 -0
- package/dist/services/quickstart/quickstart-service.js +196 -0
- package/dist/services/quickstart/quickstart-service.js.map +1 -0
- package/dist/services/quickstart/types.d.ts +81 -0
- package/dist/services/quickstart/types.d.ts.map +1 -0
- package/dist/services/regenerator.d.ts +18 -0
- package/dist/services/regenerator.d.ts.map +1 -0
- package/dist/services/regenerator.js +23 -0
- package/dist/services/regenerator.js.map +1 -0
- package/dist/services/registry.d.ts +53 -0
- package/dist/services/registry.d.ts.map +1 -0
- package/dist/services/registry.js +74 -0
- package/dist/services/registry.js.map +1 -0
- package/dist/services/setup/config-generators.d.ts +42 -0
- package/dist/services/setup/config-generators.d.ts.map +1 -0
- package/dist/services/setup/config-generators.js +238 -0
- package/dist/services/setup/config-generators.js.map +1 -0
- package/dist/services/setup/file-merger.d.ts +27 -0
- package/dist/services/setup/file-merger.d.ts.map +1 -0
- package/dist/services/setup/file-merger.js +61 -0
- package/dist/services/setup/file-merger.js.map +1 -0
- package/dist/services/setup/index.js +4 -0
- package/dist/services/setup/setup-service.d.ts +12 -0
- package/dist/services/setup/setup-service.d.ts.map +1 -0
- package/dist/services/setup/setup-service.js +96 -0
- package/dist/services/setup/setup-service.js.map +1 -0
- package/dist/services/setup/targets/agents-md.js +47 -0
- package/dist/services/setup/targets/agents-md.js.map +1 -0
- package/dist/services/setup/targets/cli-config.js +60 -0
- package/dist/services/setup/targets/cli-config.js.map +1 -0
- package/dist/services/setup/targets/cursor-rules.js +48 -0
- package/dist/services/setup/targets/cursor-rules.js.map +1 -0
- package/dist/services/setup/targets/mcp-claude.js +60 -0
- package/dist/services/setup/targets/mcp-claude.js.map +1 -0
- package/dist/services/setup/targets/mcp-cursor.js +59 -0
- package/dist/services/setup/targets/mcp-cursor.js.map +1 -0
- package/dist/services/setup/targets/vscode-settings.js +63 -0
- package/dist/services/setup/targets/vscode-settings.js.map +1 -0
- package/dist/services/setup/types.d.ts +85 -0
- package/dist/services/setup/types.d.ts.map +1 -0
- package/dist/services/setup/types.js +27 -0
- package/dist/services/setup/types.js.map +1 -0
- package/dist/services/sync.d.ts +41 -0
- package/dist/services/sync.d.ts.map +1 -0
- package/dist/services/sync.js +63 -0
- package/dist/services/sync.js.map +1 -0
- package/dist/services/test.d.ts +15 -0
- package/dist/services/test.d.ts.map +1 -0
- package/dist/services/test.js +30 -0
- package/dist/services/test.js.map +1 -0
- package/dist/services/validate-implementation.d.ts +32 -0
- package/dist/services/validate-implementation.d.ts.map +1 -0
- package/dist/services/validate-implementation.js +64 -0
- package/dist/services/validate-implementation.js.map +1 -0
- package/dist/services/validate.d.ts +41 -0
- package/dist/services/validate.d.ts.map +1 -0
- package/dist/services/validate.js +48 -0
- package/dist/services/validate.js.map +1 -0
- package/dist/services/verification-cache/adapters/filesystem.d.ts +46 -0
- package/dist/services/verification-cache/adapters/filesystem.d.ts.map +1 -0
- package/dist/services/verification-cache/adapters/filesystem.js +120 -0
- package/dist/services/verification-cache/adapters/filesystem.js.map +1 -0
- package/dist/services/verification-cache/adapters/in-memory.d.ts +27 -0
- package/dist/services/verification-cache/adapters/in-memory.d.ts.map +1 -0
- package/dist/services/verification-cache/adapters/in-memory.js +46 -0
- package/dist/services/verification-cache/adapters/in-memory.js.map +1 -0
- package/dist/services/verification-cache/adapters/index.d.ts +3 -0
- package/dist/services/verification-cache/adapters/index.js +3 -0
- package/dist/services/verification-cache/adapters/workspace-state.d.ts +49 -0
- package/dist/services/verification-cache/adapters/workspace-state.d.ts.map +1 -0
- package/dist/services/verification-cache/adapters/workspace-state.js +91 -0
- package/dist/services/verification-cache/adapters/workspace-state.js.map +1 -0
- package/dist/services/verification-cache/cache-service.d.ts +70 -0
- package/dist/services/verification-cache/cache-service.d.ts.map +1 -0
- package/dist/services/verification-cache/cache-service.js +256 -0
- package/dist/services/verification-cache/cache-service.js.map +1 -0
- package/dist/services/verification-cache/index.d.ts +6 -0
- package/dist/services/verification-cache/index.js +6 -0
- package/dist/services/verification-cache/types.d.ts +124 -0
- package/dist/services/verification-cache/types.d.ts.map +1 -0
- package/dist/services/verification-cache/types.js +16 -0
- package/dist/services/verification-cache/types.js.map +1 -0
- package/dist/services/verify/ai-verifier.d.ts +25 -0
- package/dist/services/verify/ai-verifier.d.ts.map +1 -0
- package/dist/services/verify/ai-verifier.js +403 -0
- package/dist/services/verify/ai-verifier.js.map +1 -0
- package/dist/services/verify/behavior-verifier.d.ts +12 -0
- package/dist/services/verify/behavior-verifier.d.ts.map +1 -0
- package/dist/services/verify/behavior-verifier.js +186 -0
- package/dist/services/verify/behavior-verifier.js.map +1 -0
- package/dist/services/verify/index.d.ts +5 -0
- package/dist/services/verify/index.js +4 -0
- package/dist/services/verify/structure-verifier.d.ts +12 -0
- package/dist/services/verify/structure-verifier.d.ts.map +1 -0
- package/dist/services/verify/structure-verifier.js +196 -0
- package/dist/services/verify/structure-verifier.js.map +1 -0
- package/dist/services/verify/types.d.ts +137 -0
- package/dist/services/verify/types.d.ts.map +1 -0
- package/dist/services/verify/verify-service.d.ts +60 -0
- package/dist/services/verify/verify-service.d.ts.map +1 -0
- package/dist/services/verify/verify-service.js +204 -0
- package/dist/services/verify/verify-service.js.map +1 -0
- package/dist/services/watch.d.ts +25 -0
- package/dist/services/watch.d.ts.map +1 -0
- package/dist/services/watch.js +32 -0
- package/dist/services/watch.js.map +1 -0
- package/dist/services/workspace-info.d.ts +62 -0
- package/dist/services/workspace-info.d.ts.map +1 -0
- package/dist/services/workspace-info.js +103 -0
- package/dist/services/workspace-info.js.map +1 -0
- package/dist/templates/app-config.template.d.ts +7 -0
- package/dist/templates/app-config.template.d.ts.map +1 -0
- package/dist/templates/app-config.template.js +107 -0
- package/dist/templates/app-config.template.js.map +1 -0
- package/dist/templates/data-view.template.d.ts +7 -0
- package/dist/templates/data-view.template.d.ts.map +1 -0
- package/dist/templates/data-view.template.js +70 -0
- package/dist/templates/data-view.template.js.map +1 -0
- package/dist/templates/event.template.d.ts +11 -0
- package/dist/templates/event.template.d.ts.map +1 -0
- package/dist/templates/event.template.js +40 -0
- package/dist/templates/event.template.js.map +1 -0
- package/dist/templates/experiment.template.d.ts +7 -0
- package/dist/templates/experiment.template.d.ts.map +1 -0
- package/dist/templates/experiment.template.js +89 -0
- package/dist/templates/experiment.template.js.map +1 -0
- package/dist/templates/handler.template.d.ts +16 -0
- package/dist/templates/handler.template.d.ts.map +1 -0
- package/dist/templates/handler.template.js +100 -0
- package/dist/templates/handler.template.js.map +1 -0
- package/dist/templates/index.d.ts +21 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +37 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/integration.template.d.ts +7 -0
- package/dist/templates/integration.template.d.ts.map +1 -0
- package/dist/templates/integration.template.js +160 -0
- package/dist/templates/integration.template.js.map +1 -0
- package/dist/templates/knowledge.template.d.ts +7 -0
- package/dist/templates/knowledge.template.d.ts.map +1 -0
- package/dist/templates/knowledge.template.js +75 -0
- package/dist/templates/knowledge.template.js.map +1 -0
- package/dist/templates/migration.template.d.ts +7 -0
- package/dist/templates/migration.template.d.ts.map +1 -0
- package/dist/templates/migration.template.js +62 -0
- package/dist/templates/migration.template.js.map +1 -0
- package/dist/templates/operation.template.d.ts +11 -0
- package/dist/templates/operation.template.d.ts.map +1 -0
- package/dist/templates/operation.template.js +105 -0
- package/dist/templates/operation.template.js.map +1 -0
- package/dist/templates/presentation.template.d.ts +11 -0
- package/dist/templates/presentation.template.d.ts.map +1 -0
- package/dist/templates/presentation.template.js +80 -0
- package/dist/templates/presentation.template.js.map +1 -0
- package/dist/templates/telemetry.template.d.ts +7 -0
- package/dist/templates/telemetry.template.d.ts.map +1 -0
- package/dist/templates/telemetry.template.js +91 -0
- package/dist/templates/telemetry.template.js.map +1 -0
- package/dist/templates/workflow-runner.template.d.ts +16 -0
- package/dist/templates/workflow-runner.template.d.ts.map +1 -0
- package/dist/templates/workflow-runner.template.js +50 -0
- package/dist/templates/workflow-runner.template.js.map +1 -0
- package/dist/templates/workflow.template.d.ts +7 -0
- package/dist/templates/workflow.template.d.ts.map +1 -0
- package/dist/templates/workflow.template.js +69 -0
- package/dist/templates/workflow.template.js.map +1 -0
- package/dist/types/config.d.ts +34 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types.d.ts +324 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-cli.js","names":["lines: string[]"],"sources":["../../../../src/services/agent-guide/adapters/cursor-cli.ts"],"sourcesContent":["/**\n * Cursor CLI Agent Adapter\n *\n * Formats implementation plans and prompts for Cursor's CLI/background mode.\n * Can also generate .mdc cursor rules files.\n */\n\nimport type { AnyOperationSpec } from '@contractspec/lib.contracts';\nimport type {\n AgentPrompt,\n ImplementationPlan,\n} from '@contractspec/lib.contracts/llm';\nimport { AGENT_SYSTEM_PROMPTS } from '@contractspec/lib.contracts/llm';\nimport type { AgentAdapter } from '../types';\n\n/**\n * Cursor CLI adapter implementation.\n * Optimized for Cursor's background/composer mode.\n */\nexport class CursorCLIAdapter implements AgentAdapter {\n agentType = 'cursor-cli' as const;\n\n /**\n * Format an implementation plan for Cursor CLI.\n * Uses concise format optimized for Cursor's context window.\n */\n formatPlan(plan: ImplementationPlan): AgentPrompt {\n const lines: string[] = [];\n\n // Compact header\n lines.push(`# ${plan.target.key}.v${plan.target.version}`);\n lines.push('');\n lines.push(`> ${plan.context.goal}`);\n lines.push('');\n\n // Files to work on\n if (plan.fileStructure.length > 0) {\n lines.push('## Files');\n lines.push('');\n for (const file of plan.fileStructure) {\n lines.push(`- ${file.type}: \\`${file.path}\\` - ${file.purpose}`);\n }\n lines.push('');\n }\n\n // Compact spec (key sections only)\n lines.push('## Spec');\n lines.push('');\n lines.push(plan.specMarkdown);\n lines.push('');\n\n // Steps as simple list\n lines.push('## Steps');\n lines.push('');\n for (const step of plan.steps) {\n lines.push(`${step.order}. **${step.title}**: ${step.description}`);\n }\n lines.push('');\n\n // Key constraints (compact)\n const constraints = [\n ...plan.constraints.policy,\n ...plan.constraints.security.map((s) => `⚠️ ${s}`),\n ];\n if (constraints.length > 0) {\n lines.push('## Constraints');\n lines.push('');\n for (const c of constraints) {\n lines.push(`- ${c}`);\n }\n lines.push('');\n }\n\n // PII warning\n if (plan.constraints.pii.length > 0) {\n lines.push('## PII Fields');\n lines.push('');\n lines.push(\n `Handle carefully: ${plan.constraints.pii.map((p) => `\\`${p}\\``).join(', ')}`\n );\n lines.push('');\n }\n\n return {\n agent: 'cursor-cli',\n systemPrompt: AGENT_SYSTEM_PROMPTS['cursor-cli'],\n taskPrompt: lines.join('\\n'),\n };\n }\n\n /**\n * Generate Cursor rules (.mdc format) for a spec.\n * Can be saved to .cursor/rules/ to provide persistent context.\n */\n generateConfig(spec: AnyOperationSpec): string {\n const m = spec.meta;\n const lines: string[] = [];\n\n // MDC frontmatter\n lines.push('---');\n lines.push(`description: Implementation rules for ${m.key}.v${m.version}`);\n lines.push(`globs: [\"**/${m.key.replace(/\\./g, '/')}/**\"]`);\n lines.push('alwaysApply: false');\n lines.push('---');\n lines.push('');\n\n // Rule content\n lines.push(`# ${m.key} Implementation Rules`);\n lines.push('');\n lines.push(\n `This ${m.kind} operation must follow the ContractSpec specification.`\n );\n lines.push('');\n\n lines.push('## Goal');\n lines.push('');\n lines.push(m.goal);\n lines.push('');\n\n lines.push('## Requirements');\n lines.push('');\n lines.push('1. Input/output types MUST match the spec schema exactly');\n lines.push('2. All error cases MUST be handled');\n\n if (spec.sideEffects?.emits?.length) {\n lines.push('3. Events MUST be emitted as specified');\n }\n\n lines.push(`4. Auth level: ${spec.policy.auth}`);\n\n if (spec.policy.idempotent !== undefined) {\n lines.push(`5. Idempotency: ${spec.policy.idempotent}`);\n }\n lines.push('');\n\n // Error handling\n if (spec.io.errors && Object.keys(spec.io.errors).length > 0) {\n lines.push('## Error Cases');\n lines.push('');\n for (const [code, err] of Object.entries(spec.io.errors)) {\n lines.push(`- \\`${code}\\` (HTTP ${err.http ?? 400}): ${err.when}`);\n }\n lines.push('');\n }\n\n // Events\n if (spec.sideEffects?.emits?.length) {\n lines.push('## Events to Emit');\n lines.push('');\n for (const e of spec.sideEffects.emits) {\n if ('ref' in e) {\n lines.push(`- \\`${e.ref.key}.v${e.ref.version}\\`: ${e.when}`);\n } else {\n lines.push(`- \\`${e.key}.v${e.version}\\`: ${e.when}`);\n }\n }\n lines.push('');\n }\n\n // PII\n if (spec.policy.pii?.length) {\n lines.push('## PII Handling');\n lines.push('');\n lines.push('These fields contain PII and must be handled with care:');\n for (const field of spec.policy.pii) {\n lines.push(`- \\`${field}\\``);\n }\n lines.push('');\n }\n\n // Acceptance scenarios\n if (spec.acceptance?.scenarios?.length) {\n lines.push('## Acceptance Scenarios');\n lines.push('');\n for (const s of spec.acceptance.scenarios) {\n lines.push(`### ${s.key}`);\n lines.push(`- Given: ${s.given.join('; ')}`);\n lines.push(`- When: ${s.when.join('; ')}`);\n lines.push(`- Then: ${s.then.join('; ')}`);\n lines.push('');\n }\n }\n\n return lines.join('\\n');\n }\n\n /**\n * Generate a cursor rules file path for a spec.\n */\n getCursorRulesPath(spec: AnyOperationSpec): string {\n const safeName = spec.meta.key.replace(/\\./g, '-');\n return `.cursor/rules/${safeName}.mdc`;\n }\n\n /**\n * Parse Cursor output to extract generated code.\n */\n parseOutput(output: string): { code?: string; errors?: string[] } {\n // Cursor typically returns code in markdown blocks\n const codeBlockMatch = output.match(\n /```(?:typescript|ts|tsx|javascript|js)?\\n([\\s\\S]*?)\\n```/\n );\n\n if (codeBlockMatch?.[1]) {\n return { code: codeBlockMatch[1] };\n }\n\n // Return raw output if no code block\n return { code: output };\n }\n}\n\n/** Singleton instance */\nexport const cursorCLIAdapter = new CursorCLIAdapter();\n"],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { AgentAdapter } from "../types.js";
|
|
2
|
+
import { AnyOperationSpec } from "@contractspec/lib.contracts";
|
|
3
|
+
import { AgentPrompt, ImplementationPlan } from "@contractspec/lib.contracts/llm";
|
|
4
|
+
|
|
5
|
+
//#region src/services/agent-guide/adapters/generic-mcp.d.ts
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Generic MCP adapter implementation.
|
|
9
|
+
* Works with any MCP-compatible agent (Cline, Aider, etc.).
|
|
10
|
+
*/
|
|
11
|
+
declare class GenericMCPAdapter implements AgentAdapter {
|
|
12
|
+
agentType: "generic-mcp";
|
|
13
|
+
/**
|
|
14
|
+
* Format an implementation plan for generic MCP agents.
|
|
15
|
+
* Uses a standard markdown format that works across different agents.
|
|
16
|
+
*/
|
|
17
|
+
formatPlan(plan: ImplementationPlan): AgentPrompt;
|
|
18
|
+
/**
|
|
19
|
+
* Format the plan as an MCP resource.
|
|
20
|
+
* Returns JSON that can be served as an MCP resource.
|
|
21
|
+
*/
|
|
22
|
+
formatAsResource(plan: ImplementationPlan): {
|
|
23
|
+
uri: string;
|
|
24
|
+
mimeType: string;
|
|
25
|
+
data: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Format the plan as an MCP prompt message.
|
|
29
|
+
*/
|
|
30
|
+
formatAsPromptMessage(plan: ImplementationPlan): {
|
|
31
|
+
role: 'user' | 'assistant';
|
|
32
|
+
content: {
|
|
33
|
+
type: 'text';
|
|
34
|
+
text: string;
|
|
35
|
+
};
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Generate configuration (generic markdown for any agent).
|
|
39
|
+
*/
|
|
40
|
+
generateConfig(spec: AnyOperationSpec): string;
|
|
41
|
+
/**
|
|
42
|
+
* Parse agent output - generic implementation.
|
|
43
|
+
*/
|
|
44
|
+
parseOutput(output: string): {
|
|
45
|
+
code?: string;
|
|
46
|
+
errors?: string[];
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** Singleton instance */
|
|
50
|
+
declare const genericMCPAdapter: GenericMCPAdapter;
|
|
51
|
+
//#endregion
|
|
52
|
+
export { GenericMCPAdapter, genericMCPAdapter };
|
|
53
|
+
//# sourceMappingURL=generic-mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-mcp.d.ts","names":[],"sources":["../../../../src/services/agent-guide/adapters/generic-mcp.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;AAiPa,cA9NA,iBAAA,YAA6B,YA8Nc,CAAA;;;;;;mBAvNrC,qBAAqB;;;;;yBAoHf;;;;;;;;8BA0BK;;;;;;;;;;uBAiBP;;;;;;;;;;cAwDV,mBAAiB"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import { AGENT_SYSTEM_PROMPTS } from "@contractspec/lib.contracts/llm";
|
|
2
|
+
|
|
3
|
+
//#region src/services/agent-guide/adapters/generic-mcp.ts
|
|
4
|
+
/**
|
|
5
|
+
* Generic MCP adapter implementation.
|
|
6
|
+
* Works with any MCP-compatible agent (Cline, Aider, etc.).
|
|
7
|
+
*/
|
|
8
|
+
var GenericMCPAdapter = class {
|
|
9
|
+
agentType = "generic-mcp";
|
|
10
|
+
/**
|
|
11
|
+
* Format an implementation plan for generic MCP agents.
|
|
12
|
+
* Uses a standard markdown format that works across different agents.
|
|
13
|
+
*/
|
|
14
|
+
formatPlan(plan) {
|
|
15
|
+
const lines = [];
|
|
16
|
+
lines.push(`# Implementation Task: ${plan.target.key}.v${plan.target.version}`);
|
|
17
|
+
lines.push("");
|
|
18
|
+
lines.push("## Task");
|
|
19
|
+
lines.push("");
|
|
20
|
+
lines.push(`Implement the ${plan.target.type} \`${plan.target.key}\` version ${plan.target.version}.`);
|
|
21
|
+
lines.push("");
|
|
22
|
+
lines.push("## Context");
|
|
23
|
+
lines.push("");
|
|
24
|
+
lines.push(`**Goal:** ${plan.context.goal}`);
|
|
25
|
+
lines.push("");
|
|
26
|
+
lines.push(`**Description:** ${plan.context.description}`);
|
|
27
|
+
lines.push("");
|
|
28
|
+
if (plan.context.background) {
|
|
29
|
+
lines.push("**Background:**");
|
|
30
|
+
lines.push("");
|
|
31
|
+
lines.push(plan.context.background);
|
|
32
|
+
lines.push("");
|
|
33
|
+
}
|
|
34
|
+
lines.push("## Specification");
|
|
35
|
+
lines.push("");
|
|
36
|
+
lines.push(plan.specMarkdown);
|
|
37
|
+
lines.push("");
|
|
38
|
+
if (plan.fileStructure.length > 0) {
|
|
39
|
+
lines.push("## Files");
|
|
40
|
+
lines.push("");
|
|
41
|
+
lines.push("| Path | Action | Purpose |");
|
|
42
|
+
lines.push("|------|--------|---------|");
|
|
43
|
+
for (const file of plan.fileStructure) lines.push(`| \`${file.path}\` | ${file.type} | ${file.purpose} |`);
|
|
44
|
+
lines.push("");
|
|
45
|
+
}
|
|
46
|
+
lines.push("## Implementation Steps");
|
|
47
|
+
lines.push("");
|
|
48
|
+
for (const step of plan.steps) {
|
|
49
|
+
lines.push(`### Step ${step.order}: ${step.title}`);
|
|
50
|
+
lines.push("");
|
|
51
|
+
lines.push(step.description);
|
|
52
|
+
lines.push("");
|
|
53
|
+
if (step.acceptanceCriteria.length > 0) {
|
|
54
|
+
lines.push("**Acceptance Criteria:**");
|
|
55
|
+
lines.push("");
|
|
56
|
+
for (const criteria of step.acceptanceCriteria) lines.push(`- ${criteria}`);
|
|
57
|
+
lines.push("");
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
lines.push("## Constraints");
|
|
61
|
+
lines.push("");
|
|
62
|
+
if (plan.constraints.policy.length > 0) {
|
|
63
|
+
lines.push("**Policy:**");
|
|
64
|
+
for (const p of plan.constraints.policy) lines.push(`- ${p}`);
|
|
65
|
+
lines.push("");
|
|
66
|
+
}
|
|
67
|
+
if (plan.constraints.security.length > 0) {
|
|
68
|
+
lines.push("**Security:**");
|
|
69
|
+
for (const s of plan.constraints.security) lines.push(`- ${s}`);
|
|
70
|
+
lines.push("");
|
|
71
|
+
}
|
|
72
|
+
if (plan.constraints.pii.length > 0) {
|
|
73
|
+
lines.push("**PII Fields (handle with care):**");
|
|
74
|
+
for (const pii of plan.constraints.pii) lines.push(`- \`${pii}\``);
|
|
75
|
+
lines.push("");
|
|
76
|
+
}
|
|
77
|
+
lines.push("## Verification");
|
|
78
|
+
lines.push("");
|
|
79
|
+
lines.push("After implementation, verify:");
|
|
80
|
+
lines.push("");
|
|
81
|
+
for (const check of plan.verificationChecklist) lines.push(`- [ ] ${check}`);
|
|
82
|
+
lines.push("");
|
|
83
|
+
return {
|
|
84
|
+
agent: "generic-mcp",
|
|
85
|
+
systemPrompt: AGENT_SYSTEM_PROMPTS["generic-mcp"],
|
|
86
|
+
taskPrompt: lines.join("\n")
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Format the plan as an MCP resource.
|
|
91
|
+
* Returns JSON that can be served as an MCP resource.
|
|
92
|
+
*/
|
|
93
|
+
formatAsResource(plan) {
|
|
94
|
+
return {
|
|
95
|
+
uri: `spec://${plan.target.key}/v${plan.target.version}/plan`,
|
|
96
|
+
mimeType: "application/json",
|
|
97
|
+
data: JSON.stringify({
|
|
98
|
+
target: plan.target,
|
|
99
|
+
context: plan.context,
|
|
100
|
+
fileStructure: plan.fileStructure,
|
|
101
|
+
steps: plan.steps,
|
|
102
|
+
constraints: plan.constraints,
|
|
103
|
+
verificationChecklist: plan.verificationChecklist
|
|
104
|
+
}, null, 2)
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Format the plan as an MCP prompt message.
|
|
109
|
+
*/
|
|
110
|
+
formatAsPromptMessage(plan) {
|
|
111
|
+
return {
|
|
112
|
+
role: "user",
|
|
113
|
+
content: {
|
|
114
|
+
type: "text",
|
|
115
|
+
text: this.formatPlan(plan).taskPrompt
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Generate configuration (generic markdown for any agent).
|
|
121
|
+
*/
|
|
122
|
+
generateConfig(spec) {
|
|
123
|
+
const m = spec.meta;
|
|
124
|
+
const lines = [];
|
|
125
|
+
lines.push(`# ${m.key} v${m.version}`);
|
|
126
|
+
lines.push("");
|
|
127
|
+
lines.push(`**Type:** ${m.kind}`);
|
|
128
|
+
lines.push(`**Stability:** ${m.stability}`);
|
|
129
|
+
lines.push("");
|
|
130
|
+
lines.push("## Goal");
|
|
131
|
+
lines.push("");
|
|
132
|
+
lines.push(m.goal);
|
|
133
|
+
lines.push("");
|
|
134
|
+
lines.push("## Description");
|
|
135
|
+
lines.push("");
|
|
136
|
+
lines.push(m.description);
|
|
137
|
+
lines.push("");
|
|
138
|
+
return lines.join("\n");
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Parse agent output - generic implementation.
|
|
142
|
+
*/
|
|
143
|
+
parseOutput(output) {
|
|
144
|
+
const codeBlockMatch = output.match(/```(?:typescript|ts|tsx|javascript|js|python|go|rust)?\n([\s\S]*?)\n```/);
|
|
145
|
+
if (codeBlockMatch?.[1]) return { code: codeBlockMatch[1] };
|
|
146
|
+
try {
|
|
147
|
+
const parsed = JSON.parse(output);
|
|
148
|
+
if (typeof parsed.code === "string") return { code: parsed.code };
|
|
149
|
+
if (typeof parsed.errors === "object") return { errors: Array.isArray(parsed.errors) ? parsed.errors : [String(parsed.errors)] };
|
|
150
|
+
} catch {}
|
|
151
|
+
return { code: output };
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
/** Singleton instance */
|
|
155
|
+
const genericMCPAdapter = new GenericMCPAdapter();
|
|
156
|
+
|
|
157
|
+
//#endregion
|
|
158
|
+
export { GenericMCPAdapter, genericMCPAdapter };
|
|
159
|
+
//# sourceMappingURL=generic-mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generic-mcp.js","names":["lines: string[]"],"sources":["../../../../src/services/agent-guide/adapters/generic-mcp.ts"],"sourcesContent":["/**\n * Generic MCP Agent Adapter\n *\n * Formats implementation plans and prompts for any MCP-compatible agent.\n * Uses standard MCP resource/prompt/tool patterns.\n */\n\nimport type { AnyOperationSpec } from '@contractspec/lib.contracts';\nimport type {\n AgentPrompt,\n ImplementationPlan,\n} from '@contractspec/lib.contracts/llm';\nimport { AGENT_SYSTEM_PROMPTS } from '@contractspec/lib.contracts/llm';\nimport type { AgentAdapter } from '../types';\n\n/**\n * Generic MCP adapter implementation.\n * Works with any MCP-compatible agent (Cline, Aider, etc.).\n */\nexport class GenericMCPAdapter implements AgentAdapter {\n agentType = 'generic-mcp' as const;\n\n /**\n * Format an implementation plan for generic MCP agents.\n * Uses a standard markdown format that works across different agents.\n */\n formatPlan(plan: ImplementationPlan): AgentPrompt {\n const lines: string[] = [];\n\n // Standard header\n lines.push(\n `# Implementation Task: ${plan.target.key}.v${plan.target.version}`\n );\n lines.push('');\n\n // Task description\n lines.push('## Task');\n lines.push('');\n lines.push(\n `Implement the ${plan.target.type} \\`${plan.target.key}\\` version ${plan.target.version}.`\n );\n lines.push('');\n\n // Context\n lines.push('## Context');\n lines.push('');\n lines.push(`**Goal:** ${plan.context.goal}`);\n lines.push('');\n lines.push(`**Description:** ${plan.context.description}`);\n lines.push('');\n if (plan.context.background) {\n lines.push('**Background:**');\n lines.push('');\n lines.push(plan.context.background);\n lines.push('');\n }\n\n // Specification\n lines.push('## Specification');\n lines.push('');\n lines.push(plan.specMarkdown);\n lines.push('');\n\n // Files\n if (plan.fileStructure.length > 0) {\n lines.push('## Files');\n lines.push('');\n lines.push('| Path | Action | Purpose |');\n lines.push('|------|--------|---------|');\n for (const file of plan.fileStructure) {\n lines.push(`| \\`${file.path}\\` | ${file.type} | ${file.purpose} |`);\n }\n lines.push('');\n }\n\n // Steps\n lines.push('## Implementation Steps');\n lines.push('');\n for (const step of plan.steps) {\n lines.push(`### Step ${step.order}: ${step.title}`);\n lines.push('');\n lines.push(step.description);\n lines.push('');\n if (step.acceptanceCriteria.length > 0) {\n lines.push('**Acceptance Criteria:**');\n lines.push('');\n for (const criteria of step.acceptanceCriteria) {\n lines.push(`- ${criteria}`);\n }\n lines.push('');\n }\n }\n\n // Constraints\n lines.push('## Constraints');\n lines.push('');\n\n if (plan.constraints.policy.length > 0) {\n lines.push('**Policy:**');\n for (const p of plan.constraints.policy) {\n lines.push(`- ${p}`);\n }\n lines.push('');\n }\n\n if (plan.constraints.security.length > 0) {\n lines.push('**Security:**');\n for (const s of plan.constraints.security) {\n lines.push(`- ${s}`);\n }\n lines.push('');\n }\n\n if (plan.constraints.pii.length > 0) {\n lines.push('**PII Fields (handle with care):**');\n for (const pii of plan.constraints.pii) {\n lines.push(`- \\`${pii}\\``);\n }\n lines.push('');\n }\n\n // Verification\n lines.push('## Verification');\n lines.push('');\n lines.push('After implementation, verify:');\n lines.push('');\n for (const check of plan.verificationChecklist) {\n lines.push(`- [ ] ${check}`);\n }\n lines.push('');\n\n return {\n agent: 'generic-mcp',\n systemPrompt: AGENT_SYSTEM_PROMPTS['generic-mcp'],\n taskPrompt: lines.join('\\n'),\n };\n }\n\n /**\n * Format the plan as an MCP resource.\n * Returns JSON that can be served as an MCP resource.\n */\n formatAsResource(plan: ImplementationPlan): {\n uri: string;\n mimeType: string;\n data: string;\n } {\n return {\n uri: `spec://${plan.target.key}/v${plan.target.version}/plan`,\n mimeType: 'application/json',\n data: JSON.stringify(\n {\n target: plan.target,\n context: plan.context,\n fileStructure: plan.fileStructure,\n steps: plan.steps,\n constraints: plan.constraints,\n verificationChecklist: plan.verificationChecklist,\n },\n null,\n 2\n ),\n };\n }\n\n /**\n * Format the plan as an MCP prompt message.\n */\n formatAsPromptMessage(plan: ImplementationPlan): {\n role: 'user' | 'assistant';\n content: { type: 'text'; text: string };\n } {\n const prompt = this.formatPlan(plan);\n return {\n role: 'user',\n content: {\n type: 'text',\n text: prompt.taskPrompt,\n },\n };\n }\n\n /**\n * Generate configuration (generic markdown for any agent).\n */\n generateConfig(spec: AnyOperationSpec): string {\n const m = spec.meta;\n const lines: string[] = [];\n\n lines.push(`# ${m.key} v${m.version}`);\n lines.push('');\n lines.push(`**Type:** ${m.kind}`);\n lines.push(`**Stability:** ${m.stability}`);\n lines.push('');\n lines.push('## Goal');\n lines.push('');\n lines.push(m.goal);\n lines.push('');\n lines.push('## Description');\n lines.push('');\n lines.push(m.description);\n lines.push('');\n\n return lines.join('\\n');\n }\n\n /**\n * Parse agent output - generic implementation.\n */\n parseOutput(output: string): { code?: string; errors?: string[] } {\n // Try to extract code from markdown code blocks\n const codeBlockMatch = output.match(\n /```(?:typescript|ts|tsx|javascript|js|python|go|rust)?\\n([\\s\\S]*?)\\n```/\n );\n\n if (codeBlockMatch?.[1]) {\n return { code: codeBlockMatch[1] };\n }\n\n // Check for JSON output\n try {\n const parsed = JSON.parse(output);\n if (typeof parsed.code === 'string') {\n return { code: parsed.code };\n }\n if (typeof parsed.errors === 'object') {\n return {\n errors: Array.isArray(parsed.errors)\n ? parsed.errors\n : [String(parsed.errors)],\n };\n }\n } catch {\n // Not JSON, return as-is\n }\n\n return { code: output };\n }\n}\n\n/** Singleton instance */\nexport const genericMCPAdapter = new GenericMCPAdapter();\n"],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { AgentAdapter } from "../types.js";
|
|
2
|
+
import { ClaudeCodeAdapter, claudeCodeAdapter } from "./claude-code.js";
|
|
3
|
+
import { CursorCLIAdapter, cursorCLIAdapter } from "./cursor-cli.js";
|
|
4
|
+
import { GenericMCPAdapter, genericMCPAdapter } from "./generic-mcp.js";
|
|
5
|
+
import { AgentType } from "@contractspec/lib.contracts/llm";
|
|
6
|
+
|
|
7
|
+
//#region src/services/agent-guide/adapters/index.d.ts
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Registry of all available agent adapters.
|
|
11
|
+
*/
|
|
12
|
+
declare const agentAdapters: Record<AgentType, AgentAdapter>;
|
|
13
|
+
/**
|
|
14
|
+
* Get an adapter for a specific agent type.
|
|
15
|
+
*/
|
|
16
|
+
declare function getAgentAdapter(agent: AgentType): AgentAdapter;
|
|
17
|
+
/**
|
|
18
|
+
* List all available agent types.
|
|
19
|
+
*/
|
|
20
|
+
declare function listAgentTypes(): AgentType[];
|
|
21
|
+
//#endregion
|
|
22
|
+
export { agentAdapters, getAgentAdapter, listAgentTypes };
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../../../src/services/agent-guide/adapters/index.ts"],"sourcesContent":[],"mappings":";;;;;;;;;AA6BA;AAWA;cApBa,eAAe,OAAO,WAAW;;;;iBAS9B,eAAA,QAAuB,YAAY;;;;iBAWnC,cAAA,CAAA,GAAkB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { ClaudeCodeAdapter, claudeCodeAdapter } from "./claude-code.js";
|
|
2
|
+
import { CursorCLIAdapter, cursorCLIAdapter } from "./cursor-cli.js";
|
|
3
|
+
import { GenericMCPAdapter, genericMCPAdapter } from "./generic-mcp.js";
|
|
4
|
+
|
|
5
|
+
//#region src/services/agent-guide/adapters/index.ts
|
|
6
|
+
/**
|
|
7
|
+
* Registry of all available agent adapters.
|
|
8
|
+
*/
|
|
9
|
+
const agentAdapters = {
|
|
10
|
+
"claude-code": claudeCodeAdapter,
|
|
11
|
+
"cursor-cli": cursorCLIAdapter,
|
|
12
|
+
"generic-mcp": genericMCPAdapter
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Get an adapter for a specific agent type.
|
|
16
|
+
*/
|
|
17
|
+
function getAgentAdapter(agent) {
|
|
18
|
+
const adapter = agentAdapters[agent];
|
|
19
|
+
if (!adapter) throw new Error(`Unknown agent type: ${agent}`);
|
|
20
|
+
return adapter;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* List all available agent types.
|
|
24
|
+
*/
|
|
25
|
+
function listAgentTypes() {
|
|
26
|
+
return Object.keys(agentAdapters);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
export { agentAdapters, getAgentAdapter, listAgentTypes };
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["agentAdapters: Record<AgentType, AgentAdapter>"],"sources":["../../../../src/services/agent-guide/adapters/index.ts"],"sourcesContent":["/**\n * Agent Adapters\n *\n * Exports all agent-specific adapters for formatting implementation\n * plans and prompts.\n */\n\nexport { ClaudeCodeAdapter, claudeCodeAdapter } from './claude-code';\nexport { CursorCLIAdapter, cursorCLIAdapter } from './cursor-cli';\nexport { GenericMCPAdapter, genericMCPAdapter } from './generic-mcp';\n\nimport type { AgentType } from '@contractspec/lib.contracts/llm';\nimport type { AgentAdapter } from '../types';\nimport { claudeCodeAdapter } from './claude-code';\nimport { cursorCLIAdapter } from './cursor-cli';\nimport { genericMCPAdapter } from './generic-mcp';\n\n/**\n * Registry of all available agent adapters.\n */\nexport const agentAdapters: Record<AgentType, AgentAdapter> = {\n 'claude-code': claudeCodeAdapter,\n 'cursor-cli': cursorCLIAdapter,\n 'generic-mcp': genericMCPAdapter,\n};\n\n/**\n * Get an adapter for a specific agent type.\n */\nexport function getAgentAdapter(agent: AgentType): AgentAdapter {\n const adapter = agentAdapters[agent];\n if (!adapter) {\n throw new Error(`Unknown agent type: ${agent}`);\n }\n return adapter;\n}\n\n/**\n * List all available agent types.\n */\nexport function listAgentTypes(): AgentType[] {\n return Object.keys(agentAdapters) as AgentType[];\n}\n"],"mappings":";;;;;;;;AAoBA,MAAaA,gBAAiD;CAC5D,eAAe;CACf,cAAc;CACd,eAAe;CAChB;;;;AAKD,SAAgB,gBAAgB,OAAgC;CAC9D,MAAM,UAAU,cAAc;AAC9B,KAAI,CAAC,QACH,OAAM,IAAI,MAAM,uBAAuB,QAAQ;AAEjD,QAAO;;;;;AAMT,SAAgB,iBAA8B;AAC5C,QAAO,OAAO,KAAK,cAAc"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { AgentGuideConfig, GuideOptions, GuideResult } from "./types.js";
|
|
2
|
+
import { AnyOperationSpec, OperationSpecRegistry, PresentationRegistry } from "@contractspec/lib.contracts";
|
|
3
|
+
import { AgentType } from "@contractspec/lib.contracts/llm";
|
|
4
|
+
import { FeatureModuleSpec } from "@contractspec/lib.contracts/features";
|
|
5
|
+
|
|
6
|
+
//#region src/services/agent-guide/agent-guide-service.d.ts
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Agent Guide Service
|
|
10
|
+
*
|
|
11
|
+
* Main service for generating implementation guidance for AI coding agents.
|
|
12
|
+
*/
|
|
13
|
+
declare class AgentGuideService {
|
|
14
|
+
private config;
|
|
15
|
+
constructor(config?: Partial<AgentGuideConfig>);
|
|
16
|
+
/**
|
|
17
|
+
* Generate an implementation guide for a spec.
|
|
18
|
+
*/
|
|
19
|
+
generateGuide(spec: AnyOperationSpec, options?: GuideOptions): GuideResult;
|
|
20
|
+
/**
|
|
21
|
+
* Generate a guide for a feature (includes all related specs).
|
|
22
|
+
*/
|
|
23
|
+
generateFeatureGuide(feature: FeatureModuleSpec, deps: {
|
|
24
|
+
specs?: OperationSpecRegistry;
|
|
25
|
+
presentations?: PresentationRegistry;
|
|
26
|
+
}, options?: GuideOptions): GuideResult;
|
|
27
|
+
/**
|
|
28
|
+
* Generate agent-specific configuration (e.g., cursor rules).
|
|
29
|
+
*/
|
|
30
|
+
generateAgentConfig(spec: AnyOperationSpec, agent?: AgentType): string | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Export a spec in a specific format for an agent.
|
|
33
|
+
*/
|
|
34
|
+
exportForAgent(spec: AnyOperationSpec, _agent: AgentType, taskType?: 'implement' | 'test' | 'refactor' | 'review', existingCode?: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* List available agent types.
|
|
37
|
+
*/
|
|
38
|
+
listAgentTypes(): AgentType[];
|
|
39
|
+
/**
|
|
40
|
+
* Get the default agent type.
|
|
41
|
+
*/
|
|
42
|
+
getDefaultAgent(): AgentType;
|
|
43
|
+
/**
|
|
44
|
+
* Update configuration.
|
|
45
|
+
*/
|
|
46
|
+
configure(config: Partial<AgentGuideConfig>): void;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a new AgentGuideService instance.
|
|
50
|
+
*/
|
|
51
|
+
declare function createAgentGuideService(config?: Partial<AgentGuideConfig>): AgentGuideService;
|
|
52
|
+
/** Default singleton instance */
|
|
53
|
+
declare const agentGuideService: AgentGuideService;
|
|
54
|
+
//#endregion
|
|
55
|
+
export { AgentGuideService, agentGuideService, createAgentGuideService };
|
|
56
|
+
//# sourceMappingURL=agent-guide-service.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-guide-service.d.ts","names":[],"sources":["../../../src/services/agent-guide/agent-guide-service.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;;;AAiFa,cA7CA,iBAAA,CA6CA;EACR,QAAA,MAAA;EAoFK,WAAA,CAAA,MAAA,CAAA,EA/HY,OA+HZ,CA/HoB,gBA+HpB,CAAA;EACE;;;EAqBQ,aAAA,CAAA,IAAA,EA7IV,gBA6IU,EAAA,OAAA,CAAA,EA5IP,YA4IO,CAAA,EA3If,WA2Ie;EAOC;;;EAOM,oBAAA,CAAA,OAAA,EA9Hd,iBA8Hc,EAAA,IAAA,EAAA;IAQX,KAAA,CAAA,EApIF,qBAoIyB;IACpB,aAAA,CAAA,EApIG,oBAoIH;EAAR,CAAA,EAAA,OAAA,CAAA,EAlIE,YAkIF,CAAA,EAjIN,WAiIM;EACR;;AAKH;4BAnDU,0BACE;;;;uBAUF,0BACE;;;;oBAUQ;;;;qBAOC;;;;oBAOD,QAAQ;;;;;iBAQZ,uBAAA,UACL,QAAQ,oBAChB;;cAKU,mBAAiB"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { getAgentAdapter, listAgentTypes } from "./adapters/index.js";
|
|
2
|
+
import { featureToMarkdown, generateImplementationPlan, operationSpecToAgentPrompt, operationSpecToFullMarkdown } from "@contractspec/lib.contracts/llm";
|
|
3
|
+
|
|
4
|
+
//#region src/services/agent-guide/agent-guide-service.ts
|
|
5
|
+
const DEFAULT_CONFIG = {
|
|
6
|
+
defaultAgent: "generic-mcp",
|
|
7
|
+
verbose: false
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Agent Guide Service
|
|
11
|
+
*
|
|
12
|
+
* Main service for generating implementation guidance for AI coding agents.
|
|
13
|
+
*/
|
|
14
|
+
var AgentGuideService = class {
|
|
15
|
+
config;
|
|
16
|
+
constructor(config = {}) {
|
|
17
|
+
this.config = {
|
|
18
|
+
...DEFAULT_CONFIG,
|
|
19
|
+
...config
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Generate an implementation guide for a spec.
|
|
24
|
+
*/
|
|
25
|
+
generateGuide(spec, options = {}) {
|
|
26
|
+
const adapter = getAgentAdapter(options.agent ?? this.config.defaultAgent);
|
|
27
|
+
const plan = generateImplementationPlan(spec, {
|
|
28
|
+
projectRoot: this.config.projectRoot,
|
|
29
|
+
existingFiles: options.targetPath ? [options.targetPath] : void 0
|
|
30
|
+
});
|
|
31
|
+
return {
|
|
32
|
+
plan,
|
|
33
|
+
prompt: adapter.formatPlan(plan),
|
|
34
|
+
markdown: operationSpecToFullMarkdown(spec)
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Generate a guide for a feature (includes all related specs).
|
|
39
|
+
*/
|
|
40
|
+
generateFeatureGuide(feature, deps, options = {}) {
|
|
41
|
+
const adapter = getAgentAdapter(options.agent ?? this.config.defaultAgent);
|
|
42
|
+
const firstOp = feature.operations?.[0];
|
|
43
|
+
const spec = firstOp ? deps.specs?.getSpec(firstOp.key, firstOp.version) : void 0;
|
|
44
|
+
let plan;
|
|
45
|
+
if (spec) {
|
|
46
|
+
plan = generateImplementationPlan(spec, { projectRoot: this.config.projectRoot });
|
|
47
|
+
plan.target = {
|
|
48
|
+
type: "feature",
|
|
49
|
+
key: feature.meta.key,
|
|
50
|
+
version: 1
|
|
51
|
+
};
|
|
52
|
+
plan.context.goal = feature.meta.description ?? plan.context.goal;
|
|
53
|
+
} else plan = {
|
|
54
|
+
target: {
|
|
55
|
+
type: "feature",
|
|
56
|
+
key: feature.meta.key,
|
|
57
|
+
version: 1
|
|
58
|
+
},
|
|
59
|
+
context: {
|
|
60
|
+
goal: feature.meta.description ?? `Implement feature ${feature.meta.key}`,
|
|
61
|
+
description: feature.meta.title ?? feature.meta.key,
|
|
62
|
+
background: ""
|
|
63
|
+
},
|
|
64
|
+
specMarkdown: featureToMarkdown(feature, deps),
|
|
65
|
+
fileStructure: [],
|
|
66
|
+
steps: [{
|
|
67
|
+
order: 1,
|
|
68
|
+
title: "Implement Feature",
|
|
69
|
+
description: `Implement the ${feature.meta.key} feature`,
|
|
70
|
+
acceptanceCriteria: []
|
|
71
|
+
}],
|
|
72
|
+
constraints: {
|
|
73
|
+
policy: [],
|
|
74
|
+
security: [],
|
|
75
|
+
pii: []
|
|
76
|
+
},
|
|
77
|
+
verificationChecklist: []
|
|
78
|
+
};
|
|
79
|
+
plan.specMarkdown = featureToMarkdown(feature, deps, {
|
|
80
|
+
format: "full",
|
|
81
|
+
includeRelatedSpecs: true,
|
|
82
|
+
includeRelatedEvents: true,
|
|
83
|
+
includeRelatedPresentations: true
|
|
84
|
+
});
|
|
85
|
+
if (feature.operations?.length) plan.steps = feature.operations.map((op, idx) => ({
|
|
86
|
+
order: idx + 1,
|
|
87
|
+
title: `Implement ${op.key}`,
|
|
88
|
+
description: `Implement operation ${op.key}.v${op.version}`,
|
|
89
|
+
acceptanceCriteria: [`Operation ${op.key} works as specified`]
|
|
90
|
+
}));
|
|
91
|
+
const prompt = adapter.formatPlan(plan);
|
|
92
|
+
const markdown = featureToMarkdown(feature, deps);
|
|
93
|
+
return {
|
|
94
|
+
plan,
|
|
95
|
+
prompt,
|
|
96
|
+
markdown
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Generate agent-specific configuration (e.g., cursor rules).
|
|
101
|
+
*/
|
|
102
|
+
generateAgentConfig(spec, agent) {
|
|
103
|
+
return getAgentAdapter(agent ?? this.config.defaultAgent).generateConfig?.(spec);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Export a spec in a specific format for an agent.
|
|
107
|
+
*/
|
|
108
|
+
exportForAgent(spec, _agent, taskType = "implement", existingCode) {
|
|
109
|
+
return operationSpecToAgentPrompt(spec, {
|
|
110
|
+
taskType,
|
|
111
|
+
existingCode
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* List available agent types.
|
|
116
|
+
*/
|
|
117
|
+
listAgentTypes() {
|
|
118
|
+
return listAgentTypes();
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Get the default agent type.
|
|
122
|
+
*/
|
|
123
|
+
getDefaultAgent() {
|
|
124
|
+
return this.config.defaultAgent;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Update configuration.
|
|
128
|
+
*/
|
|
129
|
+
configure(config) {
|
|
130
|
+
this.config = {
|
|
131
|
+
...this.config,
|
|
132
|
+
...config
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Create a new AgentGuideService instance.
|
|
138
|
+
*/
|
|
139
|
+
function createAgentGuideService(config) {
|
|
140
|
+
return new AgentGuideService(config);
|
|
141
|
+
}
|
|
142
|
+
/** Default singleton instance */
|
|
143
|
+
const agentGuideService = new AgentGuideService();
|
|
144
|
+
|
|
145
|
+
//#endregion
|
|
146
|
+
export { AgentGuideService, agentGuideService, createAgentGuideService };
|
|
147
|
+
//# sourceMappingURL=agent-guide-service.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-guide-service.js","names":["DEFAULT_CONFIG: AgentGuideConfig","plan: ImplementationPlan"],"sources":["../../../src/services/agent-guide/agent-guide-service.ts"],"sourcesContent":["/**\n * Agent Guide Service\n *\n * Generates implementation plans and prompts for AI coding agents.\n * Bridges ContractSpec specifications with agent-specific formats.\n */\n\nimport type {\n AnyOperationSpec,\n OperationSpecRegistry,\n PresentationRegistry,\n} from '@contractspec/lib.contracts';\nimport type { FeatureModuleSpec } from '@contractspec/lib.contracts/features';\nimport type {\n AgentType,\n ImplementationPlan,\n} from '@contractspec/lib.contracts/llm';\nimport {\n featureToMarkdown,\n generateImplementationPlan,\n operationSpecToAgentPrompt,\n operationSpecToFullMarkdown,\n} from '@contractspec/lib.contracts/llm';\nimport { getAgentAdapter, listAgentTypes } from './adapters';\nimport type { AgentGuideConfig, GuideOptions, GuideResult } from './types';\n\nconst DEFAULT_CONFIG: AgentGuideConfig = {\n defaultAgent: 'generic-mcp',\n verbose: false,\n};\n\n/**\n * Agent Guide Service\n *\n * Main service for generating implementation guidance for AI coding agents.\n */\nexport class AgentGuideService {\n private config: AgentGuideConfig;\n\n constructor(config: Partial<AgentGuideConfig> = {}) {\n this.config = { ...DEFAULT_CONFIG, ...config };\n }\n\n /**\n * Generate an implementation guide for a spec.\n */\n generateGuide(\n spec: AnyOperationSpec,\n options: GuideOptions = {}\n ): GuideResult {\n const agent = options.agent ?? this.config.defaultAgent;\n const adapter = getAgentAdapter(agent);\n\n // Generate the implementation plan\n const plan = generateImplementationPlan(spec, {\n projectRoot: this.config.projectRoot,\n existingFiles: options.targetPath ? [options.targetPath] : undefined,\n });\n\n // Format for the target agent\n const prompt = adapter.formatPlan(plan);\n\n // Generate raw markdown for clipboard/export\n const markdown = operationSpecToFullMarkdown(spec);\n\n return {\n plan,\n prompt,\n markdown,\n };\n }\n\n /**\n * Generate a guide for a feature (includes all related specs).\n */\n generateFeatureGuide(\n feature: FeatureModuleSpec,\n deps: {\n specs?: OperationSpecRegistry;\n presentations?: PresentationRegistry;\n },\n options: GuideOptions = {}\n ): GuideResult {\n const agent = options.agent ?? this.config.defaultAgent;\n const adapter = getAgentAdapter(agent);\n\n // Create a composite plan for the feature\n const firstOp = feature.operations?.[0];\n const spec = firstOp\n ? deps.specs?.getSpec(firstOp.key, firstOp.version)\n : undefined;\n\n // Generate base plan from first spec or create feature-level plan\n let plan: ImplementationPlan;\n if (spec) {\n plan = generateImplementationPlan(spec, {\n projectRoot: this.config.projectRoot,\n });\n // Override target to indicate it's a feature\n plan.target = {\n type: 'feature',\n key: feature.meta.key,\n version: 1,\n };\n plan.context.goal = feature.meta.description ?? plan.context.goal;\n } else {\n // Create a minimal plan for features without specs\n plan = {\n target: {\n type: 'feature',\n key: feature.meta.key,\n version: 1,\n },\n context: {\n goal:\n feature.meta.description ?? `Implement feature ${feature.meta.key}`,\n description: feature.meta.title ?? feature.meta.key,\n background: '',\n },\n specMarkdown: featureToMarkdown(feature, deps),\n fileStructure: [],\n steps: [\n {\n order: 1,\n title: 'Implement Feature',\n description: `Implement the ${feature.meta.key} feature`,\n acceptanceCriteria: [],\n },\n ],\n constraints: { policy: [], security: [], pii: [] },\n verificationChecklist: [],\n };\n }\n\n // Enhance spec markdown with full feature context\n plan.specMarkdown = featureToMarkdown(feature, deps, {\n format: 'full',\n includeRelatedSpecs: true,\n includeRelatedEvents: true,\n includeRelatedPresentations: true,\n });\n\n // Add steps for each operation\n if (feature.operations?.length) {\n plan.steps = feature.operations.map((op, idx) => ({\n order: idx + 1,\n title: `Implement ${op.key}`,\n description: `Implement operation ${op.key}.v${op.version}`,\n acceptanceCriteria: [`Operation ${op.key} works as specified`],\n }));\n }\n\n const prompt = adapter.formatPlan(plan);\n const markdown = featureToMarkdown(feature, deps);\n\n return {\n plan,\n prompt,\n markdown,\n };\n }\n\n /**\n * Generate agent-specific configuration (e.g., cursor rules).\n */\n generateAgentConfig(\n spec: AnyOperationSpec,\n agent?: AgentType\n ): string | undefined {\n const adapter = getAgentAdapter(agent ?? this.config.defaultAgent);\n return adapter.generateConfig?.(spec);\n }\n\n /**\n * Export a spec in a specific format for an agent.\n */\n exportForAgent(\n spec: AnyOperationSpec,\n _agent: AgentType,\n taskType: 'implement' | 'test' | 'refactor' | 'review' = 'implement',\n existingCode?: string\n ): string {\n return operationSpecToAgentPrompt(spec, { taskType, existingCode });\n }\n\n /**\n * List available agent types.\n */\n listAgentTypes(): AgentType[] {\n return listAgentTypes();\n }\n\n /**\n * Get the default agent type.\n */\n getDefaultAgent(): AgentType {\n return this.config.defaultAgent;\n }\n\n /**\n * Update configuration.\n */\n configure(config: Partial<AgentGuideConfig>): void {\n this.config = { ...this.config, ...config };\n }\n}\n\n/**\n * Create a new AgentGuideService instance.\n */\nexport function createAgentGuideService(\n config?: Partial<AgentGuideConfig>\n): AgentGuideService {\n return new AgentGuideService(config);\n}\n\n/** Default singleton instance */\nexport const agentGuideService = new AgentGuideService();\n"],"mappings":";;;;AA0BA,MAAMA,iBAAmC;CACvC,cAAc;CACd,SAAS;CACV;;;;;;AAOD,IAAa,oBAAb,MAA+B;CAC7B,AAAQ;CAER,YAAY,SAAoC,EAAE,EAAE;AAClD,OAAK,SAAS;GAAE,GAAG;GAAgB,GAAG;GAAQ;;;;;CAMhD,cACE,MACA,UAAwB,EAAE,EACb;EAEb,MAAM,UAAU,gBADF,QAAQ,SAAS,KAAK,OAAO,aACL;EAGtC,MAAM,OAAO,2BAA2B,MAAM;GAC5C,aAAa,KAAK,OAAO;GACzB,eAAe,QAAQ,aAAa,CAAC,QAAQ,WAAW,GAAG;GAC5D,CAAC;AAQF,SAAO;GACL;GACA,QAPa,QAAQ,WAAW,KAAK;GAQrC,UALe,4BAA4B,KAAK;GAMjD;;;;;CAMH,qBACE,SACA,MAIA,UAAwB,EAAE,EACb;EAEb,MAAM,UAAU,gBADF,QAAQ,SAAS,KAAK,OAAO,aACL;EAGtC,MAAM,UAAU,QAAQ,aAAa;EACrC,MAAM,OAAO,UACT,KAAK,OAAO,QAAQ,QAAQ,KAAK,QAAQ,QAAQ,GACjD;EAGJ,IAAIC;AACJ,MAAI,MAAM;AACR,UAAO,2BAA2B,MAAM,EACtC,aAAa,KAAK,OAAO,aAC1B,CAAC;AAEF,QAAK,SAAS;IACZ,MAAM;IACN,KAAK,QAAQ,KAAK;IAClB,SAAS;IACV;AACD,QAAK,QAAQ,OAAO,QAAQ,KAAK,eAAe,KAAK,QAAQ;QAG7D,QAAO;GACL,QAAQ;IACN,MAAM;IACN,KAAK,QAAQ,KAAK;IAClB,SAAS;IACV;GACD,SAAS;IACP,MACE,QAAQ,KAAK,eAAe,qBAAqB,QAAQ,KAAK;IAChE,aAAa,QAAQ,KAAK,SAAS,QAAQ,KAAK;IAChD,YAAY;IACb;GACD,cAAc,kBAAkB,SAAS,KAAK;GAC9C,eAAe,EAAE;GACjB,OAAO,CACL;IACE,OAAO;IACP,OAAO;IACP,aAAa,iBAAiB,QAAQ,KAAK,IAAI;IAC/C,oBAAoB,EAAE;IACvB,CACF;GACD,aAAa;IAAE,QAAQ,EAAE;IAAE,UAAU,EAAE;IAAE,KAAK,EAAE;IAAE;GAClD,uBAAuB,EAAE;GAC1B;AAIH,OAAK,eAAe,kBAAkB,SAAS,MAAM;GACnD,QAAQ;GACR,qBAAqB;GACrB,sBAAsB;GACtB,6BAA6B;GAC9B,CAAC;AAGF,MAAI,QAAQ,YAAY,OACtB,MAAK,QAAQ,QAAQ,WAAW,KAAK,IAAI,SAAS;GAChD,OAAO,MAAM;GACb,OAAO,aAAa,GAAG;GACvB,aAAa,uBAAuB,GAAG,IAAI,IAAI,GAAG;GAClD,oBAAoB,CAAC,aAAa,GAAG,IAAI,qBAAqB;GAC/D,EAAE;EAGL,MAAM,SAAS,QAAQ,WAAW,KAAK;EACvC,MAAM,WAAW,kBAAkB,SAAS,KAAK;AAEjD,SAAO;GACL;GACA;GACA;GACD;;;;;CAMH,oBACE,MACA,OACoB;AAEpB,SADgB,gBAAgB,SAAS,KAAK,OAAO,aAAa,CACnD,iBAAiB,KAAK;;;;;CAMvC,eACE,MACA,QACA,WAAyD,aACzD,cACQ;AACR,SAAO,2BAA2B,MAAM;GAAE;GAAU;GAAc,CAAC;;;;;CAMrE,iBAA8B;AAC5B,SAAO,gBAAgB;;;;;CAMzB,kBAA6B;AAC3B,SAAO,KAAK,OAAO;;;;;CAMrB,UAAU,QAAyC;AACjD,OAAK,SAAS;GAAE,GAAG,KAAK;GAAQ,GAAG;GAAQ;;;;;;AAO/C,SAAgB,wBACd,QACmB;AACnB,QAAO,IAAI,kBAAkB,OAAO;;;AAItC,MAAa,oBAAoB,IAAI,mBAAmB"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AgentAdapter, AgentGuideConfig, FormatOptions, GuideOptions, GuideResult } from "./types.js";
|
|
2
|
+
import { AgentGuideService, agentGuideService, createAgentGuideService } from "./agent-guide-service.js";
|
|
3
|
+
import { ClaudeCodeAdapter, claudeCodeAdapter } from "./adapters/claude-code.js";
|
|
4
|
+
import { CursorCLIAdapter, cursorCLIAdapter } from "./adapters/cursor-cli.js";
|
|
5
|
+
import { GenericMCPAdapter, genericMCPAdapter } from "./adapters/generic-mcp.js";
|
|
6
|
+
import { agentAdapters, getAgentAdapter, listAgentTypes } from "./adapters/index.js";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { ClaudeCodeAdapter, claudeCodeAdapter } from "./adapters/claude-code.js";
|
|
2
|
+
import { CursorCLIAdapter, cursorCLIAdapter } from "./adapters/cursor-cli.js";
|
|
3
|
+
import { GenericMCPAdapter, genericMCPAdapter } from "./adapters/generic-mcp.js";
|
|
4
|
+
import { agentAdapters, getAgentAdapter, listAgentTypes } from "./adapters/index.js";
|
|
5
|
+
import { AgentGuideService, agentGuideService, createAgentGuideService } from "./agent-guide-service.js";
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { AnyOperationSpec } from "@contractspec/lib.contracts";
|
|
2
|
+
import { AgentPrompt, AgentType, ImplementationPlan } from "@contractspec/lib.contracts/llm";
|
|
3
|
+
|
|
4
|
+
//#region src/services/agent-guide/types.d.ts
|
|
5
|
+
|
|
6
|
+
/** Configuration for the agent guide service */
|
|
7
|
+
interface AgentGuideConfig {
|
|
8
|
+
/** Default agent to use if not specified */
|
|
9
|
+
defaultAgent: AgentType;
|
|
10
|
+
/** Project root path */
|
|
11
|
+
projectRoot?: string;
|
|
12
|
+
/** Enable verbose logging */
|
|
13
|
+
verbose?: boolean;
|
|
14
|
+
}
|
|
15
|
+
/** Options for generating an implementation guide */
|
|
16
|
+
interface GuideOptions {
|
|
17
|
+
/** Target agent type */
|
|
18
|
+
agent?: AgentType;
|
|
19
|
+
/** Existing code to consider */
|
|
20
|
+
existingCode?: string;
|
|
21
|
+
/** Target file path for implementation */
|
|
22
|
+
targetPath?: string;
|
|
23
|
+
/** Include related specs */
|
|
24
|
+
includeRelated?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** Options for formatting output */
|
|
27
|
+
interface FormatOptions {
|
|
28
|
+
/** Output format */
|
|
29
|
+
format: 'markdown' | 'json' | 'cursor-rules';
|
|
30
|
+
/** Include system prompt */
|
|
31
|
+
includeSystemPrompt?: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** Result of generating a guide */
|
|
34
|
+
interface GuideResult {
|
|
35
|
+
/** The generated plan */
|
|
36
|
+
plan: ImplementationPlan;
|
|
37
|
+
/** Formatted prompt for the target agent */
|
|
38
|
+
prompt: AgentPrompt;
|
|
39
|
+
/** Raw markdown for clipboard/export */
|
|
40
|
+
markdown: string;
|
|
41
|
+
}
|
|
42
|
+
/** Adapter interface for specific agent types */
|
|
43
|
+
interface AgentAdapter {
|
|
44
|
+
/** Agent type this adapter handles */
|
|
45
|
+
agentType: AgentType;
|
|
46
|
+
/** Format a plan for this agent */
|
|
47
|
+
formatPlan(plan: ImplementationPlan): AgentPrompt;
|
|
48
|
+
/** Generate agent-specific configuration (e.g., cursor rules) */
|
|
49
|
+
generateConfig?(spec: AnyOperationSpec): string;
|
|
50
|
+
/** Parse agent output to extract code */
|
|
51
|
+
parseOutput?(output: string): {
|
|
52
|
+
code?: string;
|
|
53
|
+
errors?: string[];
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
//#endregion
|
|
57
|
+
export { AgentAdapter, AgentGuideConfig, FormatOptions, GuideOptions, GuideResult };
|
|
58
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../../../src/services/agent-guide/types.ts"],"sourcesContent":[],"mappings":";;;;;AAsBA;AAYiB,UAtBA,gBAAA,CAsBa;EAQb;EAUA,YAAA,EAtCD,SAsCa;EAEhB;EAGM,WAAA,CAAA,EAAA,MAAA;EAAqB;EAGhB,OAAA,CAAA,EAAA,OAAA;;;UAtCP,YAAA;;UAEP;;;;;;;;;UAUO,aAAA;;;;;;;UAQA,WAAA;;QAET;;UAEE;;;;;UAMO,YAAA;;aAEJ;;mBAGM,qBAAqB;;wBAGhB"}
|