@planu/cli 0.90.2 → 0.92.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/domain-best-practices.json +413 -0
- package/dist/config/ide-registry.json +25 -0
- package/dist/config/license-plans.json +61 -2
- package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.d.ts +11 -0
- package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.d.ts.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.js +52 -0
- package/dist/engine/ai-integration/agent-frameworks/autogen-exporter.js.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.d.ts +11 -0
- package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.d.ts.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.js +89 -0
- package/dist/engine/ai-integration/agent-frameworks/crewai-exporter.js.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/index.d.ts +4 -0
- package/dist/engine/ai-integration/agent-frameworks/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/index.js +5 -0
- package/dist/engine/ai-integration/agent-frameworks/index.js.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.d.ts +11 -0
- package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.d.ts.map +1 -0
- package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.js +71 -0
- package/dist/engine/ai-integration/agent-frameworks/langgraph-exporter.js.map +1 -0
- package/dist/engine/ai-integration/agents-md/generator.d.ts +11 -0
- package/dist/engine/ai-integration/agents-md/generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/agents-md/generator.js +139 -0
- package/dist/engine/ai-integration/agents-md/generator.js.map +1 -0
- package/dist/engine/ai-integration/agents-md/index.d.ts +3 -0
- package/dist/engine/ai-integration/agents-md/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/agents-md/index.js +4 -0
- package/dist/engine/ai-integration/agents-md/index.js.map +1 -0
- package/dist/engine/ai-integration/agents-md/updater.d.ts +10 -0
- package/dist/engine/ai-integration/agents-md/updater.d.ts.map +1 -0
- package/dist/engine/ai-integration/agents-md/updater.js +33 -0
- package/dist/engine/ai-integration/agents-md/updater.js.map +1 -0
- package/dist/engine/ai-integration/aider/aider-config-generator.d.ts +5 -0
- package/dist/engine/ai-integration/aider/aider-config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/aider/aider-config-generator.js +34 -0
- package/dist/engine/ai-integration/aider/aider-config-generator.js.map +1 -0
- package/dist/engine/ai-integration/cline/clinerules-generator.d.ts +5 -0
- package/dist/engine/ai-integration/cline/clinerules-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/cline/clinerules-generator.js +86 -0
- package/dist/engine/ai-integration/cline/clinerules-generator.js.map +1 -0
- package/dist/engine/ai-integration/cline/index.d.ts +3 -0
- package/dist/engine/ai-integration/cline/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/cline/index.js +3 -0
- package/dist/engine/ai-integration/cline/index.js.map +1 -0
- package/dist/engine/ai-integration/codex/agent-roles-generator.d.ts +12 -0
- package/dist/engine/ai-integration/codex/agent-roles-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/agent-roles-generator.js +62 -0
- package/dist/engine/ai-integration/codex/agent-roles-generator.js.map +1 -0
- package/dist/engine/ai-integration/codex/agents-md-generator.d.ts +10 -0
- package/dist/engine/ai-integration/codex/agents-md-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/agents-md-generator.js +114 -0
- package/dist/engine/ai-integration/codex/agents-md-generator.js.map +1 -0
- package/dist/engine/ai-integration/codex/config-generator.d.ts +9 -0
- package/dist/engine/ai-integration/codex/config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/config-generator.js +66 -0
- package/dist/engine/ai-integration/codex/config-generator.js.map +1 -0
- package/dist/engine/ai-integration/codex/hooks-generator.d.ts +6 -0
- package/dist/engine/ai-integration/codex/hooks-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/hooks-generator.js +55 -0
- package/dist/engine/ai-integration/codex/hooks-generator.js.map +1 -0
- package/dist/engine/ai-integration/codex/index.d.ts +5 -0
- package/dist/engine/ai-integration/codex/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/codex/index.js +6 -0
- package/dist/engine/ai-integration/codex/index.js.map +1 -0
- package/dist/engine/ai-integration/continue/ai-checks-generator.d.ts +12 -0
- package/dist/engine/ai-integration/continue/ai-checks-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/continue/ai-checks-generator.js +63 -0
- package/dist/engine/ai-integration/continue/ai-checks-generator.js.map +1 -0
- package/dist/engine/ai-integration/continue/config-generator.d.ts +5 -0
- package/dist/engine/ai-integration/continue/config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/continue/config-generator.js +56 -0
- package/dist/engine/ai-integration/continue/config-generator.js.map +1 -0
- package/dist/engine/ai-integration/continue/index.d.ts +5 -0
- package/dist/engine/ai-integration/continue/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/continue/index.js +4 -0
- package/dist/engine/ai-integration/continue/index.js.map +1 -0
- package/dist/engine/ai-integration/cursor/cursorrules-generator.d.ts +5 -0
- package/dist/engine/ai-integration/cursor/cursorrules-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/cursor/cursorrules-generator.js +75 -0
- package/dist/engine/ai-integration/cursor/cursorrules-generator.js.map +1 -0
- package/dist/engine/ai-integration/detector.d.ts +5 -0
- package/dist/engine/ai-integration/detector.d.ts.map +1 -0
- package/dist/engine/ai-integration/detector.js +127 -0
- package/dist/engine/ai-integration/detector.js.map +1 -0
- package/dist/engine/ai-integration/gemini/extensions-advisor.d.ts +4 -0
- package/dist/engine/ai-integration/gemini/extensions-advisor.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/extensions-advisor.js +64 -0
- package/dist/engine/ai-integration/gemini/extensions-advisor.js.map +1 -0
- package/dist/engine/ai-integration/gemini/gemini-md-generator.d.ts +4 -0
- package/dist/engine/ai-integration/gemini/gemini-md-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/gemini-md-generator.js +94 -0
- package/dist/engine/ai-integration/gemini/gemini-md-generator.js.map +1 -0
- package/dist/engine/ai-integration/gemini/index.d.ts +5 -0
- package/dist/engine/ai-integration/gemini/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/index.js +6 -0
- package/dist/engine/ai-integration/gemini/index.js.map +1 -0
- package/dist/engine/ai-integration/gemini/policy-generator.d.ts +6 -0
- package/dist/engine/ai-integration/gemini/policy-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/policy-generator.js +63 -0
- package/dist/engine/ai-integration/gemini/policy-generator.js.map +1 -0
- package/dist/engine/ai-integration/gemini/settings-generator.d.ts +4 -0
- package/dist/engine/ai-integration/gemini/settings-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/gemini/settings-generator.js +191 -0
- package/dist/engine/ai-integration/gemini/settings-generator.js.map +1 -0
- package/dist/engine/ai-integration/github-copilot/index.d.ts +4 -0
- package/dist/engine/ai-integration/github-copilot/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/github-copilot/index.js +5 -0
- package/dist/engine/ai-integration/github-copilot/index.js.map +1 -0
- package/dist/engine/ai-integration/github-copilot/instructions-generator.d.ts +5 -0
- package/dist/engine/ai-integration/github-copilot/instructions-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/github-copilot/instructions-generator.js +102 -0
- package/dist/engine/ai-integration/github-copilot/instructions-generator.js.map +1 -0
- package/dist/engine/ai-integration/github-copilot/prompt-files-generator.d.ts +11 -0
- package/dist/engine/ai-integration/github-copilot/prompt-files-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/github-copilot/prompt-files-generator.js +86 -0
- package/dist/engine/ai-integration/github-copilot/prompt-files-generator.js.map +1 -0
- package/dist/engine/ai-integration/github-copilot/workspace-bridge.d.ts +3 -0
- package/dist/engine/ai-integration/github-copilot/workspace-bridge.d.ts.map +1 -0
- package/dist/engine/ai-integration/github-copilot/workspace-bridge.js +39 -0
- package/dist/engine/ai-integration/github-copilot/workspace-bridge.js.map +1 -0
- package/dist/engine/ai-integration/kiro/hooks-generator.d.ts +6 -0
- package/dist/engine/ai-integration/kiro/hooks-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/kiro/hooks-generator.js +74 -0
- package/dist/engine/ai-integration/kiro/hooks-generator.js.map +1 -0
- package/dist/engine/ai-integration/kiro/index.d.ts +4 -0
- package/dist/engine/ai-integration/kiro/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/kiro/index.js +5 -0
- package/dist/engine/ai-integration/kiro/index.js.map +1 -0
- package/dist/engine/ai-integration/kiro/spec-exporter.d.ts +6 -0
- package/dist/engine/ai-integration/kiro/spec-exporter.d.ts.map +1 -0
- package/dist/engine/ai-integration/kiro/spec-exporter.js +57 -0
- package/dist/engine/ai-integration/kiro/spec-exporter.js.map +1 -0
- package/dist/engine/ai-integration/kiro/steering-generator.d.ts +6 -0
- package/dist/engine/ai-integration/kiro/steering-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/kiro/steering-generator.js +112 -0
- package/dist/engine/ai-integration/kiro/steering-generator.js.map +1 -0
- package/dist/engine/ai-integration/mastra/agent-scaffold.d.ts +16 -0
- package/dist/engine/ai-integration/mastra/agent-scaffold.d.ts.map +1 -0
- package/dist/engine/ai-integration/mastra/agent-scaffold.js +111 -0
- package/dist/engine/ai-integration/mastra/agent-scaffold.js.map +1 -0
- package/dist/engine/ai-integration/mastra/config-generator.d.ts +12 -0
- package/dist/engine/ai-integration/mastra/config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/mastra/config-generator.js +64 -0
- package/dist/engine/ai-integration/mastra/config-generator.js.map +1 -0
- package/dist/engine/ai-integration/mastra/index.d.ts +3 -0
- package/dist/engine/ai-integration/mastra/index.d.ts.map +1 -0
- package/dist/engine/ai-integration/mastra/index.js +4 -0
- package/dist/engine/ai-integration/mastra/index.js.map +1 -0
- package/dist/engine/ai-integration/universal-config-generator.d.ts +4 -0
- package/dist/engine/ai-integration/universal-config-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/universal-config-generator.js +87 -0
- package/dist/engine/ai-integration/universal-config-generator.js.map +1 -0
- package/dist/engine/ai-integration/windsurf/windsurfrules-generator.d.ts +5 -0
- package/dist/engine/ai-integration/windsurf/windsurfrules-generator.d.ts.map +1 -0
- package/dist/engine/ai-integration/windsurf/windsurfrules-generator.js +75 -0
- package/dist/engine/ai-integration/windsurf/windsurfrules-generator.js.map +1 -0
- package/dist/engine/api-spec-generator/ac-builder.d.ts +5 -0
- package/dist/engine/api-spec-generator/ac-builder.d.ts.map +1 -0
- package/dist/engine/api-spec-generator/ac-builder.js +114 -0
- package/dist/engine/api-spec-generator/ac-builder.js.map +1 -0
- package/dist/engine/api-spec-generator/graphql-parser.d.ts +3 -0
- package/dist/engine/api-spec-generator/graphql-parser.d.ts.map +1 -0
- package/dist/engine/api-spec-generator/graphql-parser.js +166 -0
- package/dist/engine/api-spec-generator/graphql-parser.js.map +1 -0
- package/dist/engine/api-spec-generator/openapi-parser.d.ts +3 -0
- package/dist/engine/api-spec-generator/openapi-parser.d.ts.map +1 -0
- package/dist/engine/api-spec-generator/openapi-parser.js +161 -0
- package/dist/engine/api-spec-generator/openapi-parser.js.map +1 -0
- package/dist/engine/approval-workflow.d.ts +21 -0
- package/dist/engine/approval-workflow.d.ts.map +1 -0
- package/dist/engine/approval-workflow.js +82 -0
- package/dist/engine/approval-workflow.js.map +1 -0
- package/dist/engine/batch-script-generator/index.d.ts +6 -0
- package/dist/engine/batch-script-generator/index.d.ts.map +1 -0
- package/dist/engine/batch-script-generator/index.js +126 -0
- package/dist/engine/batch-script-generator/index.js.map +1 -0
- package/dist/engine/best-practices-library.d.ts +31 -0
- package/dist/engine/best-practices-library.d.ts.map +1 -0
- package/dist/engine/best-practices-library.js +111 -0
- package/dist/engine/best-practices-library.js.map +1 -0
- package/dist/engine/ci-generator/index.d.ts.map +1 -1
- package/dist/engine/ci-generator/index.js +32 -1
- package/dist/engine/ci-generator/index.js.map +1 -1
- package/dist/engine/ci-generator/output-formats.d.ts +15 -0
- package/dist/engine/ci-generator/output-formats.d.ts.map +1 -0
- package/dist/engine/ci-generator/output-formats.js +52 -0
- package/dist/engine/ci-generator/output-formats.js.map +1 -0
- package/dist/engine/claude-config-auditor/claudemd-auditor.d.ts.map +1 -1
- package/dist/engine/claude-config-auditor/claudemd-auditor.js +139 -31
- package/dist/engine/claude-config-auditor/claudemd-auditor.js.map +1 -1
- package/dist/engine/claude-config-auditor/rules-auditor.d.ts.map +1 -1
- package/dist/engine/claude-config-auditor/rules-auditor.js +87 -49
- package/dist/engine/claude-config-auditor/rules-auditor.js.map +1 -1
- package/dist/engine/claude-config-auditor/scoring.d.ts.map +1 -1
- package/dist/engine/claude-config-auditor/scoring.js +37 -1
- package/dist/engine/claude-config-auditor/scoring.js.map +1 -1
- package/dist/engine/claude-config-auditor/settings-auditor.d.ts.map +1 -1
- package/dist/engine/claude-config-auditor/settings-auditor.js +55 -40
- package/dist/engine/claude-config-auditor/settings-auditor.js.map +1 -1
- package/dist/engine/config-schemas.d.ts.map +1 -1
- package/dist/engine/config-schemas.js +1 -0
- package/dist/engine/config-schemas.js.map +1 -1
- package/dist/engine/confluence-exporter.d.ts +27 -0
- package/dist/engine/confluence-exporter.d.ts.map +1 -0
- package/dist/engine/confluence-exporter.js +238 -0
- package/dist/engine/confluence-exporter.js.map +1 -0
- package/dist/engine/context-advisor/btw-advisor.d.ts +11 -0
- package/dist/engine/context-advisor/btw-advisor.d.ts.map +1 -0
- package/dist/engine/context-advisor/btw-advisor.js +29 -0
- package/dist/engine/context-advisor/btw-advisor.js.map +1 -0
- package/dist/engine/cross-repo-searcher.d.ts +13 -0
- package/dist/engine/cross-repo-searcher.d.ts.map +1 -0
- package/dist/engine/cross-repo-searcher.js +51 -0
- package/dist/engine/cross-repo-searcher.js.map +1 -0
- package/dist/engine/desktop-notifier.d.ts +16 -0
- package/dist/engine/desktop-notifier.d.ts.map +1 -0
- package/dist/engine/desktop-notifier.js +64 -0
- package/dist/engine/desktop-notifier.js.map +1 -0
- package/dist/engine/domain-detector.d.ts +12 -0
- package/dist/engine/domain-detector.d.ts.map +1 -0
- package/dist/engine/domain-detector.js +286 -0
- package/dist/engine/domain-detector.js.map +1 -0
- package/dist/engine/email-digest-generator.d.ts +8 -0
- package/dist/engine/email-digest-generator.d.ts.map +1 -0
- package/dist/engine/email-digest-generator.js +192 -0
- package/dist/engine/email-digest-generator.js.map +1 -0
- package/dist/engine/email-sender.d.ts +22 -0
- package/dist/engine/email-sender.d.ts.map +1 -0
- package/dist/engine/email-sender.js +78 -0
- package/dist/engine/email-sender.js.map +1 -0
- package/dist/engine/estimation-calibrator.d.ts +19 -0
- package/dist/engine/estimation-calibrator.d.ts.map +1 -0
- package/dist/engine/estimation-calibrator.js +176 -0
- package/dist/engine/estimation-calibrator.js.map +1 -0
- package/dist/engine/facilitate/context-loader.d.ts +12 -0
- package/dist/engine/facilitate/context-loader.d.ts.map +1 -0
- package/dist/engine/facilitate/context-loader.js +156 -0
- package/dist/engine/facilitate/context-loader.js.map +1 -0
- package/dist/engine/facilitate/intent-classifier.d.ts +6 -0
- package/dist/engine/facilitate/intent-classifier.d.ts.map +1 -0
- package/dist/engine/facilitate/intent-classifier.js +153 -0
- package/dist/engine/facilitate/intent-classifier.js.map +1 -0
- package/dist/engine/facilitate/plan-parser.d.ts +7 -0
- package/dist/engine/facilitate/plan-parser.d.ts.map +1 -0
- package/dist/engine/facilitate/plan-parser.js +115 -0
- package/dist/engine/facilitate/plan-parser.js.map +1 -0
- package/dist/engine/facilitate/router.d.ts +6 -0
- package/dist/engine/facilitate/router.d.ts.map +1 -0
- package/dist/engine/facilitate/router.js +71 -0
- package/dist/engine/facilitate/router.js.map +1 -0
- package/dist/engine/hooks/context-injector.d.ts +11 -0
- package/dist/engine/hooks/context-injector.d.ts.map +1 -0
- package/dist/engine/hooks/context-injector.js +163 -0
- package/dist/engine/hooks/context-injector.js.map +1 -0
- package/dist/engine/hooks/custom-commands-generator.d.ts +11 -0
- package/dist/engine/hooks/custom-commands-generator.d.ts.map +1 -0
- package/dist/engine/hooks/custom-commands-generator.js +88 -0
- package/dist/engine/hooks/custom-commands-generator.js.map +1 -0
- package/dist/engine/hooks/effort-configurator.d.ts +13 -0
- package/dist/engine/hooks/effort-configurator.d.ts.map +1 -0
- package/dist/engine/hooks/effort-configurator.js +54 -0
- package/dist/engine/hooks/effort-configurator.js.map +1 -0
- package/dist/engine/hooks/full-spectrum-generator.d.ts +31 -0
- package/dist/engine/hooks/full-spectrum-generator.d.ts.map +1 -0
- package/dist/engine/hooks/full-spectrum-generator.js +115 -0
- package/dist/engine/hooks/full-spectrum-generator.js.map +1 -0
- package/dist/engine/hooks/hook-templates.d.ts +16 -0
- package/dist/engine/hooks/hook-templates.d.ts.map +1 -0
- package/dist/engine/hooks/hook-templates.js +148 -0
- package/dist/engine/hooks/hook-templates.js.map +1 -0
- package/dist/engine/hooks/plan-mode-detector.d.ts +27 -0
- package/dist/engine/hooks/plan-mode-detector.d.ts.map +1 -0
- package/dist/engine/hooks/plan-mode-detector.js +68 -0
- package/dist/engine/hooks/plan-mode-detector.js.map +1 -0
- package/dist/engine/hooks/plan-mode-scripts.d.ts +10 -0
- package/dist/engine/hooks/plan-mode-scripts.d.ts.map +1 -0
- package/dist/engine/hooks/plan-mode-scripts.js +45 -0
- package/dist/engine/hooks/plan-mode-scripts.js.map +1 -0
- package/dist/engine/hooks/profile-generator.d.ts +21 -0
- package/dist/engine/hooks/profile-generator.d.ts.map +1 -0
- package/dist/engine/hooks/profile-generator.js +90 -0
- package/dist/engine/hooks/profile-generator.js.map +1 -0
- package/dist/engine/ide-config/generators.d.ts.map +1 -1
- package/dist/engine/ide-config/generators.js +28 -1
- package/dist/engine/ide-config/generators.js.map +1 -1
- package/dist/engine/importers/csv-importer.d.ts +9 -0
- package/dist/engine/importers/csv-importer.d.ts.map +1 -0
- package/dist/engine/importers/csv-importer.js +116 -0
- package/dist/engine/importers/csv-importer.js.map +1 -0
- package/dist/engine/importers/jira-importer.d.ts +7 -0
- package/dist/engine/importers/jira-importer.d.ts.map +1 -0
- package/dist/engine/importers/jira-importer.js +57 -0
- package/dist/engine/importers/jira-importer.js.map +1 -0
- package/dist/engine/importers/linear-importer.d.ts +6 -0
- package/dist/engine/importers/linear-importer.d.ts.map +1 -0
- package/dist/engine/importers/linear-importer.js +59 -0
- package/dist/engine/importers/linear-importer.js.map +1 -0
- package/dist/engine/importers/markdown-importer.d.ts +7 -0
- package/dist/engine/importers/markdown-importer.d.ts.map +1 -0
- package/dist/engine/importers/markdown-importer.js +74 -0
- package/dist/engine/importers/markdown-importer.js.map +1 -0
- package/dist/engine/model-router/complexity-analyzer.d.ts +9 -1
- package/dist/engine/model-router/complexity-analyzer.d.ts.map +1 -1
- package/dist/engine/model-router/complexity-analyzer.js +44 -1
- package/dist/engine/model-router/complexity-analyzer.js.map +1 -1
- package/dist/engine/model-router/rules-engine.d.ts.map +1 -1
- package/dist/engine/model-router/rules-engine.js +14 -1
- package/dist/engine/model-router/rules-engine.js.map +1 -1
- package/dist/engine/nfr-profile-detector.d.ts.map +1 -1
- package/dist/engine/nfr-profile-detector.js +2 -1
- package/dist/engine/nfr-profile-detector.js.map +1 -1
- package/dist/engine/outbound-webhook-dispatcher.d.ts +4 -0
- package/dist/engine/outbound-webhook-dispatcher.d.ts.map +1 -0
- package/dist/engine/outbound-webhook-dispatcher.js +94 -0
- package/dist/engine/outbound-webhook-dispatcher.js.map +1 -0
- package/dist/engine/performance-analyzer.d.ts +18 -0
- package/dist/engine/performance-analyzer.d.ts.map +1 -0
- package/dist/engine/performance-analyzer.js +152 -0
- package/dist/engine/performance-analyzer.js.map +1 -0
- package/dist/engine/registry/composio-publisher.d.ts +17 -0
- package/dist/engine/registry/composio-publisher.d.ts.map +1 -0
- package/dist/engine/registry/composio-publisher.js +51 -0
- package/dist/engine/registry/composio-publisher.js.map +1 -0
- package/dist/engine/registry/glama-publisher.d.ts +17 -0
- package/dist/engine/registry/glama-publisher.d.ts.map +1 -0
- package/dist/engine/registry/glama-publisher.js +43 -0
- package/dist/engine/registry/glama-publisher.js.map +1 -0
- package/dist/engine/registry/index.d.ts +4 -0
- package/dist/engine/registry/index.d.ts.map +1 -1
- package/dist/engine/registry/index.js +5 -0
- package/dist/engine/registry/index.js.map +1 -1
- package/dist/engine/registry/mcp-official-publisher.d.ts +16 -0
- package/dist/engine/registry/mcp-official-publisher.d.ts.map +1 -0
- package/dist/engine/registry/mcp-official-publisher.js +44 -0
- package/dist/engine/registry/mcp-official-publisher.js.map +1 -0
- package/dist/engine/registry/smithery-generator.d.ts +16 -0
- package/dist/engine/registry/smithery-generator.d.ts.map +1 -0
- package/dist/engine/registry/smithery-generator.js +71 -0
- package/dist/engine/registry/smithery-generator.js.map +1 -0
- package/dist/engine/reverse-engineer/test-file-parser.d.ts +26 -0
- package/dist/engine/reverse-engineer/test-file-parser.d.ts.map +1 -0
- package/dist/engine/reverse-engineer/test-file-parser.js +165 -0
- package/dist/engine/reverse-engineer/test-file-parser.js.map +1 -0
- package/dist/engine/slack-dispatcher.d.ts +15 -0
- package/dist/engine/slack-dispatcher.d.ts.map +1 -0
- package/dist/engine/slack-dispatcher.js +73 -0
- package/dist/engine/slack-dispatcher.js.map +1 -0
- package/dist/engine/spec-coverage/core.js.map +1 -1
- package/dist/engine/spec-differ.d.ts +15 -0
- package/dist/engine/spec-differ.d.ts.map +1 -0
- package/dist/engine/spec-differ.js +115 -0
- package/dist/engine/spec-differ.js.map +1 -0
- package/dist/engine/spec-exporter.d.ts +27 -0
- package/dist/engine/spec-exporter.d.ts.map +1 -0
- package/dist/engine/spec-exporter.js +122 -0
- package/dist/engine/spec-exporter.js.map +1 -0
- package/dist/engine/spec-searcher.d.ts +31 -0
- package/dist/engine/spec-searcher.d.ts.map +1 -0
- package/dist/engine/spec-searcher.js +240 -0
- package/dist/engine/spec-searcher.js.map +1 -0
- package/dist/engine/spec-splitter.d.ts +11 -1
- package/dist/engine/spec-splitter.d.ts.map +1 -1
- package/dist/engine/spec-splitter.js +178 -0
- package/dist/engine/spec-splitter.js.map +1 -1
- package/dist/engine/team-analytics-calculator.d.ts +14 -0
- package/dist/engine/team-analytics-calculator.d.ts.map +1 -0
- package/dist/engine/team-analytics-calculator.js +114 -0
- package/dist/engine/team-analytics-calculator.js.map +1 -0
- package/dist/engine/team-planner/writer-reviewer.d.ts +12 -0
- package/dist/engine/team-planner/writer-reviewer.d.ts.map +1 -0
- package/dist/engine/team-planner/writer-reviewer.js +48 -0
- package/dist/engine/team-planner/writer-reviewer.js.map +1 -0
- package/dist/engine/telemetry/error-reporter.d.ts +16 -0
- package/dist/engine/telemetry/error-reporter.d.ts.map +1 -0
- package/dist/engine/telemetry/error-reporter.js +46 -0
- package/dist/engine/telemetry/error-reporter.js.map +1 -0
- package/dist/engine/tool-groups/group-manager.js.map +1 -1
- package/dist/engine/velocity-calculator.d.ts +44 -0
- package/dist/engine/velocity-calculator.d.ts.map +1 -0
- package/dist/engine/velocity-calculator.js +425 -0
- package/dist/engine/velocity-calculator.js.map +1 -0
- package/dist/index.js +55 -3
- package/dist/index.js.map +1 -1
- package/dist/storage/actuals-store.d.ts +8 -0
- package/dist/storage/actuals-store.d.ts.map +1 -0
- package/dist/storage/actuals-store.js +57 -0
- package/dist/storage/actuals-store.js.map +1 -0
- package/dist/storage/approval-store.d.ts +12 -0
- package/dist/storage/approval-store.d.ts.map +1 -0
- package/dist/storage/approval-store.js +46 -0
- package/dist/storage/approval-store.js.map +1 -0
- package/dist/storage/comments-store.d.ts +38 -0
- package/dist/storage/comments-store.d.ts.map +1 -0
- package/dist/storage/comments-store.js +167 -0
- package/dist/storage/comments-store.js.map +1 -0
- package/dist/storage/confluence-store.d.ts +35 -0
- package/dist/storage/confluence-store.d.ts.map +1 -0
- package/dist/storage/confluence-store.js +85 -0
- package/dist/storage/confluence-store.js.map +1 -0
- package/dist/storage/desktop-notification-store.d.ts +19 -0
- package/dist/storage/desktop-notification-store.d.ts.map +1 -0
- package/dist/storage/desktop-notification-store.js +44 -0
- package/dist/storage/desktop-notification-store.js.map +1 -0
- package/dist/storage/drift-cache-store.js.map +1 -1
- package/dist/storage/email-digest-store.d.ts +19 -0
- package/dist/storage/email-digest-store.d.ts.map +1 -0
- package/dist/storage/email-digest-store.js +51 -0
- package/dist/storage/email-digest-store.js.map +1 -0
- package/dist/storage/error-telemetry-store.js.map +1 -1
- package/dist/storage/federation-store.js.map +1 -1
- package/dist/storage/global-projects-store.d.ts +27 -0
- package/dist/storage/global-projects-store.d.ts.map +1 -0
- package/dist/storage/global-projects-store.js +78 -0
- package/dist/storage/global-projects-store.js.map +1 -0
- package/dist/storage/global-store.js.map +1 -1
- package/dist/storage/index.d.ts +2 -0
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +2 -0
- package/dist/storage/index.js.map +1 -1
- package/dist/storage/living-dashboard-store.js.map +1 -1
- package/dist/storage/metrics-store.js.map +1 -1
- package/dist/storage/outbound-webhook-store.d.ts +9 -0
- package/dist/storage/outbound-webhook-store.d.ts.map +1 -0
- package/dist/storage/outbound-webhook-store.js +105 -0
- package/dist/storage/outbound-webhook-store.js.map +1 -0
- package/dist/storage/rbac-store.js.map +1 -1
- package/dist/storage/slack-store.d.ts +22 -0
- package/dist/storage/slack-store.d.ts.map +1 -0
- package/dist/storage/slack-store.js +55 -0
- package/dist/storage/slack-store.js.map +1 -0
- package/dist/storage/spec-lock-store.d.ts +22 -0
- package/dist/storage/spec-lock-store.d.ts.map +1 -0
- package/dist/storage/spec-lock-store.js +99 -0
- package/dist/storage/spec-lock-store.js.map +1 -0
- package/dist/storage/spec-observability-store.js.map +1 -1
- package/dist/storage/worker-metrics-store.js.map +1 -1
- package/dist/storage/worker-store.js.map +1 -1
- package/dist/tools/ai-ecosystem-status.d.ts +13 -0
- package/dist/tools/ai-ecosystem-status.d.ts.map +1 -0
- package/dist/tools/ai-ecosystem-status.js +219 -0
- package/dist/tools/ai-ecosystem-status.js.map +1 -0
- package/dist/tools/api-spec-generator-handler.d.ts +3 -0
- package/dist/tools/api-spec-generator-handler.d.ts.map +1 -0
- package/dist/tools/api-spec-generator-handler.js +193 -0
- package/dist/tools/api-spec-generator-handler.js.map +1 -0
- package/dist/tools/approval-handler.d.ts +6 -0
- package/dist/tools/approval-handler.d.ts.map +1 -0
- package/dist/tools/approval-handler.js +193 -0
- package/dist/tools/approval-handler.js.map +1 -0
- package/dist/tools/checkpoint-handler.d.ts.map +1 -1
- package/dist/tools/checkpoint-handler.js +31 -0
- package/dist/tools/checkpoint-handler.js.map +1 -1
- package/dist/tools/clarify-requirements/interview-mode.d.ts +42 -0
- package/dist/tools/clarify-requirements/interview-mode.d.ts.map +1 -0
- package/dist/tools/clarify-requirements/interview-mode.js +342 -0
- package/dist/tools/clarify-requirements/interview-mode.js.map +1 -0
- package/dist/tools/comments-handler.d.ts +6 -0
- package/dist/tools/comments-handler.d.ts.map +1 -0
- package/dist/tools/comments-handler.js +137 -0
- package/dist/tools/comments-handler.js.map +1 -0
- package/dist/tools/configure-workers-handler.d.ts.map +1 -1
- package/dist/tools/configure-workers-handler.js +81 -0
- package/dist/tools/configure-workers-handler.js.map +1 -1
- package/dist/tools/confluence-handler.d.ts +6 -0
- package/dist/tools/confluence-handler.d.ts.map +1 -0
- package/dist/tools/confluence-handler.js +220 -0
- package/dist/tools/confluence-handler.js.map +1 -0
- package/dist/tools/cross-repo-search-handler.d.ts +19 -0
- package/dist/tools/cross-repo-search-handler.d.ts.map +1 -0
- package/dist/tools/cross-repo-search-handler.js +151 -0
- package/dist/tools/cross-repo-search-handler.js.map +1 -0
- package/dist/tools/desktop-notification-handler.d.ts +17 -0
- package/dist/tools/desktop-notification-handler.d.ts.map +1 -0
- package/dist/tools/desktop-notification-handler.js +90 -0
- package/dist/tools/desktop-notification-handler.js.map +1 -0
- package/dist/tools/domain-criteria-handler.d.ts +16 -0
- package/dist/tools/domain-criteria-handler.d.ts.map +1 -0
- package/dist/tools/domain-criteria-handler.js +216 -0
- package/dist/tools/domain-criteria-handler.js.map +1 -0
- package/dist/tools/email-digest-handler.d.ts +6 -0
- package/dist/tools/email-digest-handler.d.ts.map +1 -0
- package/dist/tools/email-digest-handler.js +198 -0
- package/dist/tools/email-digest-handler.js.map +1 -0
- package/dist/tools/estimate.d.ts.map +1 -1
- package/dist/tools/estimate.js +22 -0
- package/dist/tools/estimate.js.map +1 -1
- package/dist/tools/estimation-accuracy-handler.d.ts +5 -0
- package/dist/tools/estimation-accuracy-handler.d.ts.map +1 -0
- package/dist/tools/estimation-accuracy-handler.js +171 -0
- package/dist/tools/estimation-accuracy-handler.js.map +1 -0
- package/dist/tools/facilitate.d.ts +1 -5
- package/dist/tools/facilitate.d.ts.map +1 -1
- package/dist/tools/facilitate.js +100 -23
- package/dist/tools/facilitate.js.map +1 -1
- package/dist/tools/generate-automation-guide.d.ts +10 -0
- package/dist/tools/generate-automation-guide.d.ts.map +1 -0
- package/dist/tools/generate-automation-guide.js +266 -0
- package/dist/tools/generate-automation-guide.js.map +1 -0
- package/dist/tools/generate-batch-script.d.ts +27 -0
- package/dist/tools/generate-batch-script.d.ts.map +1 -0
- package/dist/tools/generate-batch-script.js +77 -0
- package/dist/tools/generate-batch-script.js.map +1 -0
- package/dist/tools/generate-sub-agent.d.ts.map +1 -1
- package/dist/tools/generate-sub-agent.js +16 -2
- package/dist/tools/generate-sub-agent.js.map +1 -1
- package/dist/tools/git/branch-ops.d.ts +18 -0
- package/dist/tools/git/branch-ops.d.ts.map +1 -1
- package/dist/tools/git/branch-ops.js +121 -0
- package/dist/tools/git/branch-ops.js.map +1 -1
- package/dist/tools/git/pr-ops.d.ts.map +1 -1
- package/dist/tools/git/pr-ops.js +7 -0
- package/dist/tools/git/pr-ops.js.map +1 -1
- package/dist/tools/import-spec-handler.d.ts +10 -0
- package/dist/tools/import-spec-handler.d.ts.map +1 -0
- package/dist/tools/import-spec-handler.js +242 -0
- package/dist/tools/import-spec-handler.js.map +1 -0
- package/dist/tools/init-project/claude-md-generator.d.ts +1 -0
- package/dist/tools/init-project/claude-md-generator.d.ts.map +1 -1
- package/dist/tools/init-project/claude-md-generator.js +35 -0
- package/dist/tools/init-project/claude-md-generator.js.map +1 -1
- package/dist/tools/init-project/handler.d.ts.map +1 -1
- package/dist/tools/init-project/handler.js +4 -1
- package/dist/tools/init-project/handler.js.map +1 -1
- package/dist/tools/init-project/hooks-configurator.d.ts +17 -0
- package/dist/tools/init-project/hooks-configurator.d.ts.map +1 -0
- package/dist/tools/init-project/hooks-configurator.js +102 -0
- package/dist/tools/init-project/hooks-configurator.js.map +1 -0
- package/dist/tools/init-project/planu-workflow-generator.d.ts +21 -0
- package/dist/tools/init-project/planu-workflow-generator.d.ts.map +1 -0
- package/dist/tools/init-project/planu-workflow-generator.js +84 -0
- package/dist/tools/init-project/planu-workflow-generator.js.map +1 -0
- package/dist/tools/init-project/rules-generator.d.ts +26 -0
- package/dist/tools/init-project/rules-generator.d.ts.map +1 -0
- package/dist/tools/init-project/rules-generator.js +189 -0
- package/dist/tools/init-project/rules-generator.js.map +1 -0
- package/dist/tools/init-project/scaffold-writer.d.ts +4 -0
- package/dist/tools/init-project/scaffold-writer.d.ts.map +1 -1
- package/dist/tools/init-project/scaffold-writer.js +42 -0
- package/dist/tools/init-project/scaffold-writer.js.map +1 -1
- package/dist/tools/integrate-pm.js.map +1 -1
- package/dist/tools/list-sessions.d.ts.map +1 -1
- package/dist/tools/list-sessions.js +8 -0
- package/dist/tools/list-sessions.js.map +1 -1
- package/dist/tools/list-specs.d.ts.map +1 -1
- package/dist/tools/list-specs.js +11 -1
- package/dist/tools/list-specs.js.map +1 -1
- package/dist/tools/manage-git.d.ts.map +1 -1
- package/dist/tools/manage-git.js +15 -1
- package/dist/tools/manage-git.js.map +1 -1
- package/dist/tools/orchestrate/state.js.map +1 -1
- package/dist/tools/outbound-webhook-handler.d.ts +13 -0
- package/dist/tools/outbound-webhook-handler.d.ts.map +1 -0
- package/dist/tools/outbound-webhook-handler.js +161 -0
- package/dist/tools/outbound-webhook-handler.js.map +1 -0
- package/dist/tools/performance-analysis-handler.d.ts +3 -0
- package/dist/tools/performance-analysis-handler.d.ts.map +1 -0
- package/dist/tools/performance-analysis-handler.js +95 -0
- package/dist/tools/performance-analysis-handler.js.map +1 -0
- package/dist/tools/recommend-model-handler.d.ts.map +1 -1
- package/dist/tools/recommend-model-handler.js +7 -0
- package/dist/tools/recommend-model-handler.js.map +1 -1
- package/dist/tools/register-api-spec-generator.d.ts +3 -0
- package/dist/tools/register-api-spec-generator.d.ts.map +1 -0
- package/dist/tools/register-api-spec-generator.js +49 -0
- package/dist/tools/register-api-spec-generator.js.map +1 -0
- package/dist/tools/register-approval-tools.d.ts +3 -0
- package/dist/tools/register-approval-tools.d.ts.map +1 -0
- package/dist/tools/register-approval-tools.js +87 -0
- package/dist/tools/register-approval-tools.js.map +1 -0
- package/dist/tools/register-comments-tools.d.ts +3 -0
- package/dist/tools/register-comments-tools.d.ts.map +1 -0
- package/dist/tools/register-comments-tools.js +79 -0
- package/dist/tools/register-comments-tools.js.map +1 -0
- package/dist/tools/register-confluence-tools.d.ts +3 -0
- package/dist/tools/register-confluence-tools.d.ts.map +1 -0
- package/dist/tools/register-confluence-tools.js +62 -0
- package/dist/tools/register-confluence-tools.js.map +1 -0
- package/dist/tools/register-cross-repo-search-tools.d.ts +10 -0
- package/dist/tools/register-cross-repo-search-tools.d.ts.map +1 -0
- package/dist/tools/register-cross-repo-search-tools.js +82 -0
- package/dist/tools/register-cross-repo-search-tools.js.map +1 -0
- package/dist/tools/register-desktop-notification-tools.d.ts +3 -0
- package/dist/tools/register-desktop-notification-tools.d.ts.map +1 -0
- package/dist/tools/register-desktop-notification-tools.js +56 -0
- package/dist/tools/register-desktop-notification-tools.js.map +1 -0
- package/dist/tools/register-domain-criteria-tools.d.ts +3 -0
- package/dist/tools/register-domain-criteria-tools.d.ts.map +1 -0
- package/dist/tools/register-domain-criteria-tools.js +46 -0
- package/dist/tools/register-domain-criteria-tools.js.map +1 -0
- package/dist/tools/register-email-digest-tools.d.ts +3 -0
- package/dist/tools/register-email-digest-tools.d.ts.map +1 -0
- package/dist/tools/register-email-digest-tools.js +109 -0
- package/dist/tools/register-email-digest-tools.js.map +1 -0
- package/dist/tools/register-estimation-accuracy-tools.d.ts +3 -0
- package/dist/tools/register-estimation-accuracy-tools.d.ts.map +1 -0
- package/dist/tools/register-estimation-accuracy-tools.js +71 -0
- package/dist/tools/register-estimation-accuracy-tools.js.map +1 -0
- package/dist/tools/register-facilitator-tools.d.ts.map +1 -1
- package/dist/tools/register-facilitator-tools.js +12 -7
- package/dist/tools/register-facilitator-tools.js.map +1 -1
- package/dist/tools/register-generate-automation-guide.d.ts +3 -0
- package/dist/tools/register-generate-automation-guide.d.ts.map +1 -0
- package/dist/tools/register-generate-automation-guide.js +10 -0
- package/dist/tools/register-generate-automation-guide.js.map +1 -0
- package/dist/tools/register-generate-batch-script.d.ts +3 -0
- package/dist/tools/register-generate-batch-script.d.ts.map +1 -0
- package/dist/tools/register-generate-batch-script.js +10 -0
- package/dist/tools/register-generate-batch-script.js.map +1 -0
- package/dist/tools/register-hooks-tools.d.ts.map +1 -1
- package/dist/tools/register-hooks-tools.js +27 -0
- package/dist/tools/register-hooks-tools.js.map +1 -1
- package/dist/tools/register-import-tools.d.ts +3 -0
- package/dist/tools/register-import-tools.d.ts.map +1 -0
- package/dist/tools/register-import-tools.js +63 -0
- package/dist/tools/register-import-tools.js.map +1 -0
- package/dist/tools/register-outbound-webhook-tools.d.ts +3 -0
- package/dist/tools/register-outbound-webhook-tools.d.ts.map +1 -0
- package/dist/tools/register-outbound-webhook-tools.js +79 -0
- package/dist/tools/register-outbound-webhook-tools.js.map +1 -0
- package/dist/tools/register-performance-analysis-tools.d.ts +3 -0
- package/dist/tools/register-performance-analysis-tools.d.ts.map +1 -0
- package/dist/tools/register-performance-analysis-tools.js +24 -0
- package/dist/tools/register-performance-analysis-tools.js.map +1 -0
- package/dist/tools/register-platform-tools/design-stack-tools.d.ts.map +1 -1
- package/dist/tools/register-platform-tools/design-stack-tools.js +4 -0
- package/dist/tools/register-platform-tools/design-stack-tools.js.map +1 -1
- package/dist/tools/register-slack-tools.d.ts +3 -0
- package/dist/tools/register-slack-tools.d.ts.map +1 -0
- package/dist/tools/register-slack-tools.js +55 -0
- package/dist/tools/register-slack-tools.js.map +1 -0
- package/dist/tools/register-spec-export-tools.d.ts +3 -0
- package/dist/tools/register-spec-export-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-export-tools.js +67 -0
- package/dist/tools/register-spec-export-tools.js.map +1 -0
- package/dist/tools/register-spec-lock-tools.d.ts +3 -0
- package/dist/tools/register-spec-lock-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-lock-tools.js +72 -0
- package/dist/tools/register-spec-lock-tools.js.map +1 -0
- package/dist/tools/register-spec-search-tools.d.ts +3 -0
- package/dist/tools/register-spec-search-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-search-tools.js +122 -0
- package/dist/tools/register-spec-search-tools.js.map +1 -0
- package/dist/tools/register-spec-split-tools.d.ts +3 -0
- package/dist/tools/register-spec-split-tools.d.ts.map +1 -0
- package/dist/tools/register-spec-split-tools.js +51 -0
- package/dist/tools/register-spec-split-tools.js.map +1 -0
- package/dist/tools/register-spec-tools/core-spec-tools.d.ts.map +1 -1
- package/dist/tools/register-spec-tools/core-spec-tools.js +20 -2
- package/dist/tools/register-spec-tools/core-spec-tools.js.map +1 -1
- package/dist/tools/register-team-analytics-tools.d.ts +3 -0
- package/dist/tools/register-team-analytics-tools.d.ts.map +1 -0
- package/dist/tools/register-team-analytics-tools.js +37 -0
- package/dist/tools/register-team-analytics-tools.js.map +1 -0
- package/dist/tools/register-test-reverse-engineer-tools.d.ts +3 -0
- package/dist/tools/register-test-reverse-engineer-tools.d.ts.map +1 -0
- package/dist/tools/register-test-reverse-engineer-tools.js +10 -0
- package/dist/tools/register-test-reverse-engineer-tools.js.map +1 -0
- package/dist/tools/register-velocity-tools.d.ts +3 -0
- package/dist/tools/register-velocity-tools.d.ts.map +1 -0
- package/dist/tools/register-velocity-tools.js +72 -0
- package/dist/tools/register-velocity-tools.js.map +1 -0
- package/dist/tools/register-versioning-tools.d.ts.map +1 -1
- package/dist/tools/register-versioning-tools.js +55 -0
- package/dist/tools/register-versioning-tools.js.map +1 -1
- package/dist/tools/restore-session.d.ts.map +1 -1
- package/dist/tools/restore-session.js +10 -0
- package/dist/tools/restore-session.js.map +1 -1
- package/dist/tools/safe-handler.d.ts.map +1 -1
- package/dist/tools/safe-handler.js +5 -0
- package/dist/tools/safe-handler.js.map +1 -1
- package/dist/tools/schemas/ide-config.d.ts +4 -2
- package/dist/tools/schemas/ide-config.d.ts.map +1 -1
- package/dist/tools/schemas/ide-config.js +2 -1
- package/dist/tools/schemas/ide-config.js.map +1 -1
- package/dist/tools/schemas/output-schemas.d.ts +24 -0
- package/dist/tools/schemas/output-schemas.d.ts.map +1 -1
- package/dist/tools/schemas/output-schemas.js +30 -0
- package/dist/tools/schemas/output-schemas.js.map +1 -1
- package/dist/tools/schemas/workers-schema.d.ts +1 -0
- package/dist/tools/schemas/workers-schema.d.ts.map +1 -1
- package/dist/tools/schemas/workers-schema.js +10 -2
- package/dist/tools/schemas/workers-schema.js.map +1 -1
- package/dist/tools/search-handler.d.ts +4 -0
- package/dist/tools/search-handler.d.ts.map +1 -0
- package/dist/tools/search-handler.js +62 -0
- package/dist/tools/search-handler.js.map +1 -0
- package/dist/tools/slack-handler.d.ts +6 -0
- package/dist/tools/slack-handler.d.ts.map +1 -0
- package/dist/tools/slack-handler.js +162 -0
- package/dist/tools/slack-handler.js.map +1 -0
- package/dist/tools/spec-diff-handler.d.ts +6 -0
- package/dist/tools/spec-diff-handler.d.ts.map +1 -0
- package/dist/tools/spec-diff-handler.js +94 -0
- package/dist/tools/spec-diff-handler.js.map +1 -0
- package/dist/tools/spec-export-handler.d.ts +5 -0
- package/dist/tools/spec-export-handler.d.ts.map +1 -0
- package/dist/tools/spec-export-handler.js +64 -0
- package/dist/tools/spec-export-handler.js.map +1 -0
- package/dist/tools/spec-lock-handler.d.ts +10 -0
- package/dist/tools/spec-lock-handler.d.ts.map +1 -0
- package/dist/tools/spec-lock-handler.js +163 -0
- package/dist/tools/spec-lock-handler.js.map +1 -0
- package/dist/tools/spec-split-handler.d.ts +4 -0
- package/dist/tools/spec-split-handler.d.ts.map +1 -0
- package/dist/tools/spec-split-handler.js +250 -0
- package/dist/tools/spec-split-handler.js.map +1 -0
- package/dist/tools/start-hooks.d.ts.map +1 -1
- package/dist/tools/start-hooks.js +104 -1
- package/dist/tools/start-hooks.js.map +1 -1
- package/dist/tools/status-handler.d.ts.map +1 -1
- package/dist/tools/status-handler.js +49 -3
- package/dist/tools/status-handler.js.map +1 -1
- package/dist/tools/sync-ai-configs.d.ts +15 -0
- package/dist/tools/sync-ai-configs.d.ts.map +1 -0
- package/dist/tools/sync-ai-configs.js +86 -0
- package/dist/tools/sync-ai-configs.js.map +1 -0
- package/dist/tools/team-analytics-handler.d.ts +5 -0
- package/dist/tools/team-analytics-handler.d.ts.map +1 -0
- package/dist/tools/team-analytics-handler.js +67 -0
- package/dist/tools/team-analytics-handler.js.map +1 -0
- package/dist/tools/test-reverse-engineer-handler.d.ts +15 -0
- package/dist/tools/test-reverse-engineer-handler.d.ts.map +1 -0
- package/dist/tools/test-reverse-engineer-handler.js +94 -0
- package/dist/tools/test-reverse-engineer-handler.js.map +1 -0
- package/dist/tools/update-status/index.d.ts.map +1 -1
- package/dist/tools/update-status/index.js +135 -20
- package/dist/tools/update-status/index.js.map +1 -1
- package/dist/tools/update-status/response-builder.d.ts +1 -1
- package/dist/tools/update-status/response-builder.d.ts.map +1 -1
- package/dist/tools/update-status/response-builder.js +4 -1
- package/dist/tools/update-status/response-builder.js.map +1 -1
- package/dist/tools/update-status/side-effects.d.ts.map +1 -1
- package/dist/tools/update-status/side-effects.js +71 -0
- package/dist/tools/update-status/side-effects.js.map +1 -1
- package/dist/tools/update-status/transition-guard.d.ts +8 -0
- package/dist/tools/update-status/transition-guard.d.ts.map +1 -1
- package/dist/tools/update-status/transition-guard.js +23 -0
- package/dist/tools/update-status/transition-guard.js.map +1 -1
- package/dist/tools/update-status-actions.d.ts +1 -0
- package/dist/tools/update-status-actions.d.ts.map +1 -1
- package/dist/tools/update-status-actions.js +15 -1
- package/dist/tools/update-status-actions.js.map +1 -1
- package/dist/tools/velocity-handler.d.ts +4 -0
- package/dist/tools/velocity-handler.d.ts.map +1 -0
- package/dist/tools/velocity-handler.js +103 -0
- package/dist/tools/velocity-handler.js.map +1 -0
- package/dist/types/actuals.d.ts +100 -0
- package/dist/types/actuals.d.ts.map +1 -0
- package/dist/types/actuals.js +2 -0
- package/dist/types/actuals.js.map +1 -0
- package/dist/types/agent-frameworks.d.ts +62 -0
- package/dist/types/agent-frameworks.d.ts.map +1 -0
- package/dist/types/agent-frameworks.js +3 -0
- package/dist/types/agent-frameworks.js.map +1 -0
- package/dist/types/agents-md.d.ts +20 -0
- package/dist/types/agents-md.d.ts.map +1 -0
- package/dist/types/agents-md.js +3 -0
- package/dist/types/agents-md.js.map +1 -0
- package/dist/types/ai-integration.d.ts +65 -0
- package/dist/types/ai-integration.d.ts.map +1 -0
- package/dist/types/ai-integration.js +3 -0
- package/dist/types/ai-integration.js.map +1 -0
- package/dist/types/analysis.d.ts +8 -0
- package/dist/types/analysis.d.ts.map +1 -1
- package/dist/types/api-contract.d.ts +154 -0
- package/dist/types/api-contract.d.ts.map +1 -0
- package/dist/types/api-contract.js +3 -0
- package/dist/types/api-contract.js.map +1 -0
- package/dist/types/approval.d.ts +82 -0
- package/dist/types/approval.d.ts.map +1 -0
- package/dist/types/approval.js +3 -0
- package/dist/types/approval.js.map +1 -0
- package/dist/types/batch-script.d.ts +36 -0
- package/dist/types/batch-script.d.ts.map +1 -0
- package/dist/types/batch-script.js +3 -0
- package/dist/types/batch-script.js.map +1 -0
- package/dist/types/ci.d.ts +4 -0
- package/dist/types/ci.d.ts.map +1 -1
- package/dist/types/cline-integration.d.ts +30 -0
- package/dist/types/cline-integration.d.ts.map +1 -0
- package/dist/types/cline-integration.js +3 -0
- package/dist/types/cline-integration.js.map +1 -0
- package/dist/types/codex-integration.d.ts +55 -0
- package/dist/types/codex-integration.d.ts.map +1 -0
- package/dist/types/codex-integration.js +3 -0
- package/dist/types/codex-integration.js.map +1 -0
- package/dist/types/comments.d.ts +68 -0
- package/dist/types/comments.d.ts.map +1 -0
- package/dist/types/comments.js +3 -0
- package/dist/types/comments.js.map +1 -0
- package/dist/types/common/tech-enums.d.ts +1 -1
- package/dist/types/common/tech-enums.d.ts.map +1 -1
- package/dist/types/confluence.d.ts +102 -0
- package/dist/types/confluence.d.ts.map +1 -0
- package/dist/types/confluence.js +3 -0
- package/dist/types/confluence.js.map +1 -0
- package/dist/types/cross-repo-search.d.ts +104 -0
- package/dist/types/cross-repo-search.d.ts.map +1 -0
- package/dist/types/cross-repo-search.js +2 -0
- package/dist/types/cross-repo-search.js.map +1 -0
- package/dist/types/desktop-notification.d.ts +38 -0
- package/dist/types/desktop-notification.d.ts.map +1 -0
- package/dist/types/desktop-notification.js +3 -0
- package/dist/types/desktop-notification.js.map +1 -0
- package/dist/types/domain-criteria.d.ts +62 -0
- package/dist/types/domain-criteria.d.ts.map +1 -0
- package/dist/types/domain-criteria.js +3 -0
- package/dist/types/domain-criteria.js.map +1 -0
- package/dist/types/email-digest.d.ts +119 -0
- package/dist/types/email-digest.d.ts.map +1 -0
- package/dist/types/email-digest.js +3 -0
- package/dist/types/email-digest.js.map +1 -0
- package/dist/types/execution.d.ts +9 -0
- package/dist/types/execution.d.ts.map +1 -1
- package/dist/types/facilitator.d.ts +67 -0
- package/dist/types/facilitator.d.ts.map +1 -1
- package/dist/types/file-hooks.d.ts +7 -0
- package/dist/types/file-hooks.d.ts.map +1 -1
- package/dist/types/file-hooks.js +0 -1
- package/dist/types/file-hooks.js.map +1 -1
- package/dist/types/gemini-integration.d.ts +40 -0
- package/dist/types/gemini-integration.d.ts.map +1 -0
- package/dist/types/gemini-integration.js +3 -0
- package/dist/types/gemini-integration.js.map +1 -0
- package/dist/types/git.d.ts +12 -0
- package/dist/types/git.d.ts.map +1 -1
- package/dist/types/github-copilot-integration.d.ts +30 -0
- package/dist/types/github-copilot-integration.d.ts.map +1 -0
- package/dist/types/github-copilot-integration.js +3 -0
- package/dist/types/github-copilot-integration.js.map +1 -0
- package/dist/types/hooks-advanced.d.ts +34 -0
- package/dist/types/hooks-advanced.d.ts.map +1 -0
- package/dist/types/hooks-advanced.js +3 -0
- package/dist/types/hooks-advanced.js.map +1 -0
- package/dist/types/hooks.d.ts +77 -0
- package/dist/types/hooks.d.ts.map +1 -1
- package/dist/types/ide.d.ts +1 -1
- package/dist/types/ide.d.ts.map +1 -1
- package/dist/types/import-spec.d.ts +123 -0
- package/dist/types/import-spec.d.ts.map +1 -0
- package/dist/types/import-spec.js +3 -0
- package/dist/types/import-spec.js.map +1 -0
- package/dist/types/index.d.ts +30 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +30 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/kiro-integration.d.ts +44 -0
- package/dist/types/kiro-integration.d.ts.map +1 -0
- package/dist/types/kiro-integration.js +3 -0
- package/dist/types/kiro-integration.js.map +1 -0
- package/dist/types/model-routing.d.ts +16 -0
- package/dist/types/model-routing.d.ts.map +1 -1
- package/dist/types/outbound-webhook.d.ts +51 -0
- package/dist/types/outbound-webhook.d.ts.map +1 -0
- package/dist/types/outbound-webhook.js +3 -0
- package/dist/types/outbound-webhook.js.map +1 -0
- package/dist/types/performance-analysis.d.ts +33 -0
- package/dist/types/performance-analysis.d.ts.map +1 -0
- package/dist/types/performance-analysis.js +3 -0
- package/dist/types/performance-analysis.js.map +1 -0
- package/dist/types/project/planu-config.d.ts +6 -0
- package/dist/types/project/planu-config.d.ts.map +1 -1
- package/dist/types/registry-publishers.d.ts +63 -0
- package/dist/types/registry-publishers.d.ts.map +1 -0
- package/dist/types/registry-publishers.js +4 -0
- package/dist/types/registry-publishers.js.map +1 -0
- package/dist/types/search.d.ts +49 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +3 -0
- package/dist/types/search.js.map +1 -0
- package/dist/types/session.d.ts +2 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/slack.d.ts +41 -0
- package/dist/types/slack.d.ts.map +1 -0
- package/dist/types/slack.js +3 -0
- package/dist/types/slack.js.map +1 -0
- package/dist/types/spec/inputs.d.ts +46 -2
- package/dist/types/spec/inputs.d.ts.map +1 -1
- package/dist/types/spec-export.d.ts +18 -0
- package/dist/types/spec-export.d.ts.map +1 -0
- package/dist/types/spec-export.js +3 -0
- package/dist/types/spec-export.js.map +1 -0
- package/dist/types/spec-lock.d.ts +42 -0
- package/dist/types/spec-lock.d.ts.map +1 -0
- package/dist/types/spec-lock.js +3 -0
- package/dist/types/spec-lock.js.map +1 -0
- package/dist/types/spec-versioning.d.ts +35 -0
- package/dist/types/spec-versioning.d.ts.map +1 -1
- package/dist/types/stack/recommend.d.ts +1 -0
- package/dist/types/stack/recommend.d.ts.map +1 -1
- package/dist/types/status.d.ts +7 -0
- package/dist/types/status.d.ts.map +1 -1
- package/dist/types/team-analytics.d.ts +52 -0
- package/dist/types/team-analytics.d.ts.map +1 -0
- package/dist/types/team-analytics.js +3 -0
- package/dist/types/team-analytics.js.map +1 -0
- package/dist/types/team-planner.d.ts +18 -0
- package/dist/types/team-planner.d.ts.map +1 -1
- package/dist/types/telemetry.d.ts +1 -1
- package/dist/types/telemetry.d.ts.map +1 -1
- package/dist/types/test-reverse-engineer.d.ts +32 -0
- package/dist/types/test-reverse-engineer.d.ts.map +1 -0
- package/dist/types/test-reverse-engineer.js +3 -0
- package/dist/types/test-reverse-engineer.js.map +1 -0
- package/dist/types/velocity.d.ts +147 -0
- package/dist/types/velocity.d.ts.map +1 -0
- package/dist/types/velocity.js +4 -0
- package/dist/types/velocity.js.map +1 -0
- package/dist/types/workers.d.ts +1 -1
- package/dist/types/workers.d.ts.map +1 -1
- package/package.json +10 -10
- package/src/config/domain-best-practices.json +413 -0
- package/src/config/ide-registry.json +25 -0
- package/src/config/license-plans.json +61 -2
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
// engine/batch-script-generator/index.ts — Fan-out batch script generator (SPEC-253)
|
|
2
|
+
import { writeFile, chmod } from 'node:fs/promises';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
const DEFAULT_PILOT_COUNT = 3;
|
|
5
|
+
const DEFAULT_OUTPUT_FORMAT = 'text';
|
|
6
|
+
const DEFAULT_PERMISSION_MODE = 'auto';
|
|
7
|
+
/**
|
|
8
|
+
* Convert a glob pattern to a find-compatible path expression.
|
|
9
|
+
* e.g. "src/**\/*.ts" -> "-path './src/**\/*.ts'"
|
|
10
|
+
*/
|
|
11
|
+
function globToFind(pattern) {
|
|
12
|
+
// Normalize: ensure pattern starts with ./
|
|
13
|
+
const normalized = pattern.startsWith('./') ? pattern : `./${pattern}`;
|
|
14
|
+
return normalized;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Estimate number of files from a glob pattern (heuristic based on specificity).
|
|
18
|
+
* Returns a rough estimate without filesystem access.
|
|
19
|
+
*/
|
|
20
|
+
function estimateFileCount(fileGlob) {
|
|
21
|
+
if (fileGlob.includes('**')) {
|
|
22
|
+
return 50;
|
|
23
|
+
}
|
|
24
|
+
if (fileGlob.includes('*')) {
|
|
25
|
+
return 10;
|
|
26
|
+
}
|
|
27
|
+
return 1;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Build the main loop body used in both full and pilot scripts.
|
|
31
|
+
*/
|
|
32
|
+
function buildLoopBody(taskDescription, allowedTools, outputFormat, permissionMode) {
|
|
33
|
+
const toolsArg = allowedTools.length > 0 ? ` --allowedTools "${allowedTools.join(',')}"` : '';
|
|
34
|
+
const lines = [
|
|
35
|
+
'for file in "${FILES[@]}"; do',
|
|
36
|
+
' echo -n "[$(($PASS + $FAIL + 1))/$TOTAL] $file ... "',
|
|
37
|
+
` if claude -p "${taskDescription} for file: $file" \\`,
|
|
38
|
+
];
|
|
39
|
+
if (toolsArg) {
|
|
40
|
+
lines.push(`${toolsArg} \\`);
|
|
41
|
+
}
|
|
42
|
+
lines.push(` --permission-mode ${permissionMode} \\`, ` --output-format ${outputFormat}; then`, ' echo "OK" && ((PASS++))', ' echo "OK: $file" >> "$LOG_FILE"', ' else', ' echo "FAIL" && ((FAIL++))', ' echo "FAIL: $file" >> "$LOG_FILE"', ' fi', 'done');
|
|
43
|
+
return lines.join('\n');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Build the bash script header (shebang, set, variables, file discovery).
|
|
47
|
+
*/
|
|
48
|
+
function buildScriptHeader(taskDescription, specId, fileGlob, timestamp) {
|
|
49
|
+
const specLabel = specId ? ` — ${specId}` : '';
|
|
50
|
+
const findPattern = globToFind(fileGlob);
|
|
51
|
+
return [
|
|
52
|
+
'#!/usr/bin/env bash',
|
|
53
|
+
`# Planu batch script${specLabel} — Generated ${timestamp}`,
|
|
54
|
+
`# Task: ${taskDescription}`,
|
|
55
|
+
'set -euo pipefail',
|
|
56
|
+
'',
|
|
57
|
+
'SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"',
|
|
58
|
+
`LOG_FILE="$SCRIPT_DIR/batch-results-${timestamp.replace(/[:.]/g, '-')}.log"`,
|
|
59
|
+
'FILES=()',
|
|
60
|
+
`while IFS= read -r -d '' f; do FILES+=("$f"); done < <(find . -path "${findPattern}" -print0 2>/dev/null)`,
|
|
61
|
+
'TOTAL=${#FILES[@]}',
|
|
62
|
+
'PASS=0; FAIL=0',
|
|
63
|
+
'',
|
|
64
|
+
`echo "[$(date -u +%Y-%m-%dT%H:%M:%S)] Starting batch: $TOTAL files" | tee "$LOG_FILE"`,
|
|
65
|
+
'',
|
|
66
|
+
].join('\n');
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Build the script footer with summary output.
|
|
70
|
+
*/
|
|
71
|
+
function buildScriptFooter() {
|
|
72
|
+
return [
|
|
73
|
+
'',
|
|
74
|
+
'echo ""',
|
|
75
|
+
'echo "============================="',
|
|
76
|
+
'echo "Done: $PASS ok / $FAIL failed / $TOTAL total"',
|
|
77
|
+
'echo "Log: $LOG_FILE"',
|
|
78
|
+
].join('\n');
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Build a pilot script with only the first `pilotCount` files hardcoded.
|
|
82
|
+
*/
|
|
83
|
+
function buildPilotScript(fullScript, pilotFiles) {
|
|
84
|
+
// Replace the FILES=() array population block with hardcoded files
|
|
85
|
+
const hardcoded = pilotFiles.map((f) => ` "${f}"`).join('\n');
|
|
86
|
+
const filesBlock = `FILES=(\n${hardcoded}\n)`;
|
|
87
|
+
return fullScript.replace(/FILES=\(\)\nwhile IFS=.*?done < <\(find[^\n]+\)\n/, `${filesBlock}\n`);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Generate full and pilot bash scripts for fan-out batch processing with claude -p.
|
|
91
|
+
*/
|
|
92
|
+
export async function generateBatchScript(input) {
|
|
93
|
+
const { projectPath, taskDescription, fileGlob, specId, allowedTools = [], outputFormat = DEFAULT_OUTPUT_FORMAT, permissionMode = DEFAULT_PERMISSION_MODE, pilotCount = DEFAULT_PILOT_COUNT, dryRun = false, } = input;
|
|
94
|
+
const timestamp = new Date().toISOString().replace(/\.\d{3}Z$/, '');
|
|
95
|
+
const safeTimestamp = timestamp.replace(/[:.]/g, '-');
|
|
96
|
+
const specSlug = specId ? `${specId}-` : '';
|
|
97
|
+
const fullScriptName = `batch-${specSlug}${safeTimestamp}.sh`;
|
|
98
|
+
const pilotScriptName = `batch-pilot-${safeTimestamp}.sh`;
|
|
99
|
+
const fullScriptPath = join(projectPath, fullScriptName);
|
|
100
|
+
const pilotScriptPath = join(projectPath, pilotScriptName);
|
|
101
|
+
const header = buildScriptHeader(taskDescription, specId, fileGlob, timestamp);
|
|
102
|
+
const loopBody = buildLoopBody(taskDescription, allowedTools, outputFormat, permissionMode);
|
|
103
|
+
const footer = buildScriptFooter();
|
|
104
|
+
const fullScript = `${header}${loopBody}${footer}\n`;
|
|
105
|
+
// Build pilot script with placeholder files (actual files resolved at runtime)
|
|
106
|
+
// We use placeholders since we don't do filesystem access during generation
|
|
107
|
+
const pilotPlaceholders = Array.from({ length: pilotCount }, (_, i) => `./file-${String(i + 1)}-replace-me`);
|
|
108
|
+
const pilotScript = buildPilotScript(fullScript, pilotPlaceholders);
|
|
109
|
+
const estimatedFiles = estimateFileCount(fileGlob);
|
|
110
|
+
if (!dryRun) {
|
|
111
|
+
await writeFile(fullScriptPath, fullScript, { encoding: 'utf8' });
|
|
112
|
+
await chmod(fullScriptPath, 0o755);
|
|
113
|
+
await writeFile(pilotScriptPath, pilotScript, { encoding: 'utf8' });
|
|
114
|
+
await chmod(pilotScriptPath, 0o755);
|
|
115
|
+
}
|
|
116
|
+
return {
|
|
117
|
+
fullScript,
|
|
118
|
+
pilotScript,
|
|
119
|
+
fullScriptPath,
|
|
120
|
+
pilotScriptPath,
|
|
121
|
+
suggestedPilotCommand: `bash ${pilotScriptName}`,
|
|
122
|
+
scaleUpCommand: `bash ${fullScriptName}`,
|
|
123
|
+
estimatedFiles,
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/batch-script-generator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { DomainBestPractice, CriteriaSuggestion } from '../types/index.js';
|
|
2
|
+
declare const COVERAGE_THRESHOLD = 0.75;
|
|
3
|
+
/**
|
|
4
|
+
* Checks whether a criterion is already covered in existing spec content.
|
|
5
|
+
* Uses simple keyword-overlap (fuzzy): if any coverageKeyword appears in the spec
|
|
6
|
+
* content, the criterion is considered covered.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isCriterionCovered(practice: DomainBestPractice, specContent: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Compute a rough coverage score between 0..1 based on keyword overlap.
|
|
11
|
+
* Not used for hard decisions — exposed for testing and future UI use.
|
|
12
|
+
*/
|
|
13
|
+
export declare function coverageScore(practice: DomainBestPractice, specContent: string): number;
|
|
14
|
+
/**
|
|
15
|
+
* Load all best practices from the 3-layer config system.
|
|
16
|
+
*/
|
|
17
|
+
export declare function loadBestPractices(projectHash?: string): DomainBestPractice[];
|
|
18
|
+
/**
|
|
19
|
+
* Get best practices for a specific domain.
|
|
20
|
+
*/
|
|
21
|
+
export declare function getPracticesForDomain(domain: string, projectHash?: string): DomainBestPractice[];
|
|
22
|
+
/**
|
|
23
|
+
* Compute criteria suggestions for a given list of detected domains and spec content.
|
|
24
|
+
*
|
|
25
|
+
* For each domain:
|
|
26
|
+
* - Filters out criteria already covered in spec content (fuzzy keyword match)
|
|
27
|
+
* - Returns suggested and already-covered criteria separately
|
|
28
|
+
*/
|
|
29
|
+
export declare function computeSuggestions(domains: string[], specContent: string, projectHash?: string): CriteriaSuggestion[];
|
|
30
|
+
export { COVERAGE_THRESHOLD };
|
|
31
|
+
//# sourceMappingURL=best-practices-library.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best-practices-library.d.ts","sourceRoot":"","sources":["../../src/engine/best-practices-library.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAmChF,QAAA,MAAM,kBAAkB,OAAO,CAAC;AAEhC;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAG7F;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAOvF;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAE5E;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,kBAAkB,EAAE,CAEhG;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EAAE,EACjB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,MAAM,GACnB,kBAAkB,EAAE,CA8BtB;AAGD,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
// engine/best-practices-library.ts — Domain best practices catalog (SPEC-290)
|
|
2
|
+
//
|
|
3
|
+
// Loads domain best-practice criteria from the 3-layer config system.
|
|
4
|
+
// Source: src/config/domain-best-practices.json (system defaults)
|
|
5
|
+
// Override: data/global/domain-best-practices-custom.json
|
|
6
|
+
// data/projects/{hash}/config/domain-best-practices-overrides.json
|
|
7
|
+
//
|
|
8
|
+
// Uses ConfigLoader pattern from SPEC-205.
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { ConfigLoader } from './config-loader.js';
|
|
11
|
+
// ---------------------------------------------------------------------------
|
|
12
|
+
// Zod schema
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
const DomainBestPracticeSchema = z.object({
|
|
15
|
+
id: z.string().min(1).describe('Unique practice identifier'),
|
|
16
|
+
domain: z.string().min(1).describe('Domain this practice belongs to'),
|
|
17
|
+
label: z.string().min(1).describe('Short label for the practice'),
|
|
18
|
+
criterion: z.string().min(1).describe('Full acceptance criterion text'),
|
|
19
|
+
critical: z.boolean().describe('Whether missing this criterion is critical'),
|
|
20
|
+
coverageKeywords: z
|
|
21
|
+
.array(z.string())
|
|
22
|
+
.describe('Keywords indicating the criterion is already covered'),
|
|
23
|
+
});
|
|
24
|
+
const practicesArraySchema = z.array(DomainBestPracticeSchema);
|
|
25
|
+
// ---------------------------------------------------------------------------
|
|
26
|
+
// Loader singleton
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
let _loader = null;
|
|
29
|
+
function getLoader() {
|
|
30
|
+
_loader ??= new ConfigLoader('domain-best-practices', practicesArraySchema);
|
|
31
|
+
return _loader;
|
|
32
|
+
}
|
|
33
|
+
// ---------------------------------------------------------------------------
|
|
34
|
+
// Coverage check
|
|
35
|
+
// ---------------------------------------------------------------------------
|
|
36
|
+
const COVERAGE_THRESHOLD = 0.75; // similarity score to consider criterion covered
|
|
37
|
+
/**
|
|
38
|
+
* Checks whether a criterion is already covered in existing spec content.
|
|
39
|
+
* Uses simple keyword-overlap (fuzzy): if any coverageKeyword appears in the spec
|
|
40
|
+
* content, the criterion is considered covered.
|
|
41
|
+
*/
|
|
42
|
+
export function isCriterionCovered(practice, specContent) {
|
|
43
|
+
const lower = specContent.toLowerCase();
|
|
44
|
+
return practice.coverageKeywords.some((kw) => lower.includes(kw.toLowerCase()));
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Compute a rough coverage score between 0..1 based on keyword overlap.
|
|
48
|
+
* Not used for hard decisions — exposed for testing and future UI use.
|
|
49
|
+
*/
|
|
50
|
+
export function coverageScore(practice, specContent) {
|
|
51
|
+
if (practice.coverageKeywords.length === 0) {
|
|
52
|
+
return 0;
|
|
53
|
+
}
|
|
54
|
+
const lower = specContent.toLowerCase();
|
|
55
|
+
const matched = practice.coverageKeywords.filter((kw) => lower.includes(kw.toLowerCase()));
|
|
56
|
+
return matched.length / practice.coverageKeywords.length;
|
|
57
|
+
}
|
|
58
|
+
// ---------------------------------------------------------------------------
|
|
59
|
+
// Public API
|
|
60
|
+
// ---------------------------------------------------------------------------
|
|
61
|
+
/**
|
|
62
|
+
* Load all best practices from the 3-layer config system.
|
|
63
|
+
*/
|
|
64
|
+
export function loadBestPractices(projectHash) {
|
|
65
|
+
return getLoader().load(projectHash);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Get best practices for a specific domain.
|
|
69
|
+
*/
|
|
70
|
+
export function getPracticesForDomain(domain, projectHash) {
|
|
71
|
+
return loadBestPractices(projectHash).filter((p) => p.domain === domain);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Compute criteria suggestions for a given list of detected domains and spec content.
|
|
75
|
+
*
|
|
76
|
+
* For each domain:
|
|
77
|
+
* - Filters out criteria already covered in spec content (fuzzy keyword match)
|
|
78
|
+
* - Returns suggested and already-covered criteria separately
|
|
79
|
+
*/
|
|
80
|
+
export function computeSuggestions(domains, specContent, projectHash) {
|
|
81
|
+
const allPractices = loadBestPractices(projectHash);
|
|
82
|
+
return domains.map((domain) => {
|
|
83
|
+
const practices = allPractices.filter((p) => p.domain === domain);
|
|
84
|
+
const suggested = [];
|
|
85
|
+
const suggestedIds = [];
|
|
86
|
+
const alreadyCovered = [];
|
|
87
|
+
let hasCriticalGaps = false;
|
|
88
|
+
for (const practice of practices) {
|
|
89
|
+
if (isCriterionCovered(practice, specContent)) {
|
|
90
|
+
alreadyCovered.push(practice.label);
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
suggested.push(practice.criterion);
|
|
94
|
+
suggestedIds.push(practice.id);
|
|
95
|
+
if (practice.critical) {
|
|
96
|
+
hasCriticalGaps = true;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return {
|
|
101
|
+
domain,
|
|
102
|
+
suggestedCriteria: suggested,
|
|
103
|
+
alreadyCovered,
|
|
104
|
+
suggestedIds,
|
|
105
|
+
hasCriticalGaps,
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
// Re-export threshold for tests
|
|
110
|
+
export { COVERAGE_THRESHOLD };
|
|
111
|
+
//# sourceMappingURL=best-practices-library.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"best-practices-library.js","sourceRoot":"","sources":["../../src/engine/best-practices-library.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/ci-generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/engine/ci-generator/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAMV,eAAe,EACf,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAsC9B;;;GAGG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA+DlF"}
|
|
@@ -1,16 +1,42 @@
|
|
|
1
1
|
// ci-generator/index.ts — Public API for the CI workflow generator (SPEC-066)
|
|
2
|
+
import { buildClaudeCommand, getJobPermissionMode } from './output-formats.js';
|
|
2
3
|
import { detectCIStack } from './stack-detector.js';
|
|
3
4
|
import { buildWorkflow, serializeWorkflow } from './yaml-builder.js';
|
|
4
5
|
const DEFAULT_JOBS = ['lint', 'test', 'build'];
|
|
5
6
|
const DEFAULT_TRIGGERS = ['push', 'pull_request'];
|
|
6
7
|
const DEFAULT_WORKFLOW_NAME = 'CI';
|
|
7
8
|
const DEFAULT_SPECS_DIR = 'planu/specs';
|
|
9
|
+
/**
|
|
10
|
+
* Build a Claude validate job using plan permission mode (SPEC-257).
|
|
11
|
+
*/
|
|
12
|
+
function buildClaudeValidateJob(needsJobs) {
|
|
13
|
+
const permMode = getJobPermissionMode('validate');
|
|
14
|
+
const cmd = buildClaudeCommand({
|
|
15
|
+
prompt: 'validate all specs',
|
|
16
|
+
nonInteractive: true,
|
|
17
|
+
permissionMode: permMode,
|
|
18
|
+
});
|
|
19
|
+
const steps = [
|
|
20
|
+
{ name: 'Checkout code', uses: 'actions/checkout@v4' },
|
|
21
|
+
{
|
|
22
|
+
name: 'Validate specs with Claude',
|
|
23
|
+
run: cmd,
|
|
24
|
+
env: { ANTHROPIC_API_KEY: '${{ secrets.ANTHROPIC_API_KEY }}' },
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
return {
|
|
28
|
+
name: 'Claude Spec Validation',
|
|
29
|
+
runsOn: 'ubuntu-latest',
|
|
30
|
+
needs: needsJobs,
|
|
31
|
+
steps,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
8
34
|
/**
|
|
9
35
|
* Generate a GitHub Actions CI workflow for a project.
|
|
10
36
|
* Detects the project stack and generates a valid workflow YAML.
|
|
11
37
|
*/
|
|
12
38
|
export async function generateCI(input) {
|
|
13
|
-
const { projectPath, jobs = DEFAULT_JOBS, triggers = DEFAULT_TRIGGERS, nodeVersion, pythonVersion, goVersion, rustChannel, javaVersion, workflowName = DEFAULT_WORKFLOW_NAME, includeDriftStep = false, specsDir = DEFAULT_SPECS_DIR, driftSeverityThreshold = 'warning', } = input;
|
|
39
|
+
const { projectPath, jobs = DEFAULT_JOBS, triggers = DEFAULT_TRIGGERS, nodeVersion, pythonVersion, goVersion, rustChannel, javaVersion, workflowName = DEFAULT_WORKFLOW_NAME, includeDriftStep = false, specsDir = DEFAULT_SPECS_DIR, driftSeverityThreshold = 'warning', includeClaudeValidateJob = false, } = input;
|
|
14
40
|
// Detect stack from project files, create a mutable copy
|
|
15
41
|
const detected = await detectCIStack(projectPath);
|
|
16
42
|
const stackContext = { ...detected };
|
|
@@ -36,6 +62,11 @@ export async function generateCI(input) {
|
|
|
36
62
|
: undefined;
|
|
37
63
|
// Build the workflow model
|
|
38
64
|
const workflow = buildWorkflow(stackContext, jobs, triggers, workflowName, driftOptions);
|
|
65
|
+
// Add Claude validate job if requested (SPEC-257)
|
|
66
|
+
if (includeClaudeValidateJob) {
|
|
67
|
+
const existingJobs = Object.keys(workflow.jobs);
|
|
68
|
+
workflow.jobs['claude-validate'] = buildClaudeValidateJob(existingJobs);
|
|
69
|
+
}
|
|
39
70
|
// Serialize to YAML
|
|
40
71
|
const yamlContent = serializeWorkflow(workflow);
|
|
41
72
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/ci-generator/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/engine/ci-generator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ClaudeOutputFormat, ClaudePermissionMode, ClaudeCommandOptions } from '../../types/index.js';
|
|
2
|
+
export type { ClaudeOutputFormat, ClaudePermissionMode, ClaudeCommandOptions };
|
|
3
|
+
/**
|
|
4
|
+
* Generates a claude CLI command string with correct flags
|
|
5
|
+
*/
|
|
6
|
+
export declare function buildClaudeCommand(opts: ClaudeCommandOptions): string;
|
|
7
|
+
/**
|
|
8
|
+
* Generates a stream-json pipeline command: claude -p "..." --output-format stream-json | jq '...'
|
|
9
|
+
*/
|
|
10
|
+
export declare function generateStreamJsonPipeline(prompt: string, jqFilter?: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Returns the recommended permission mode for a given CI job type
|
|
13
|
+
*/
|
|
14
|
+
export declare function getJobPermissionMode(jobType: 'validate' | 'lint' | 'migrate' | 'container' | 'review'): ClaudePermissionMode;
|
|
15
|
+
//# sourceMappingURL=output-formats.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-formats.d.ts","sourceRoot":"","sources":["../../../src/engine/ci-generator/output-formats.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACrB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,CAAC;AAE/E;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,MAAM,CAsBrE;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CASpF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAChE,oBAAoB,CAatB"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a claude CLI command string with correct flags
|
|
3
|
+
*/
|
|
4
|
+
export function buildClaudeCommand(opts) {
|
|
5
|
+
const parts = ['claude'];
|
|
6
|
+
if (opts.nonInteractive === true) {
|
|
7
|
+
parts.push('-p', `"${opts.prompt}"`);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
parts.push(`"${opts.prompt}"`);
|
|
11
|
+
}
|
|
12
|
+
if (opts.outputFormat !== undefined && opts.outputFormat !== 'text') {
|
|
13
|
+
parts.push('--output-format', opts.outputFormat);
|
|
14
|
+
}
|
|
15
|
+
if (opts.permissionMode !== undefined && opts.permissionMode !== 'default') {
|
|
16
|
+
parts.push('--permission-mode', opts.permissionMode);
|
|
17
|
+
}
|
|
18
|
+
if (opts.allowedTools !== undefined && opts.allowedTools.length > 0) {
|
|
19
|
+
parts.push('--allowedTools', opts.allowedTools.join(','));
|
|
20
|
+
}
|
|
21
|
+
return parts.join(' ');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Generates a stream-json pipeline command: claude -p "..." --output-format stream-json | jq '...'
|
|
25
|
+
*/
|
|
26
|
+
export function generateStreamJsonPipeline(prompt, jqFilter) {
|
|
27
|
+
const claudeCmd = buildClaudeCommand({
|
|
28
|
+
prompt,
|
|
29
|
+
outputFormat: 'stream-json',
|
|
30
|
+
nonInteractive: true,
|
|
31
|
+
});
|
|
32
|
+
const filter = jqFilter ?? '.';
|
|
33
|
+
return `${claudeCmd} | jq '${filter}'`;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Returns the recommended permission mode for a given CI job type
|
|
37
|
+
*/
|
|
38
|
+
export function getJobPermissionMode(jobType) {
|
|
39
|
+
switch (jobType) {
|
|
40
|
+
case 'validate':
|
|
41
|
+
return 'plan';
|
|
42
|
+
case 'lint':
|
|
43
|
+
return 'dontAsk';
|
|
44
|
+
case 'migrate':
|
|
45
|
+
return 'auto';
|
|
46
|
+
case 'container':
|
|
47
|
+
return 'bypassPermissions';
|
|
48
|
+
case 'review':
|
|
49
|
+
return 'acceptEdits';
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=output-formats.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"output-formats.js","sourceRoot":"","sources":["../../../src/engine/ci-generator/output-formats.ts"],"names":[],"mappings":"AASA;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAA0B;IAC3D,MAAM,KAAK,GAAa,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACvC,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,MAAM,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACnD,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CAAC,MAAc,EAAE,QAAiB;IAC1E,MAAM,SAAS,GAAG,kBAAkB,CAAC;QACnC,MAAM;QACN,YAAY,EAAE,aAAa;QAC3B,cAAc,EAAE,IAAI;KACrB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,QAAQ,IAAI,GAAG,CAAC;IAC/B,OAAO,GAAG,SAAS,UAAU,MAAM,GAAG,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAClC,OAAiE;IAEjE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,MAAM,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;QAChB,KAAK,WAAW;YACd,OAAO,mBAAmB,CAAC;QAC7B,KAAK,QAAQ;YACX,OAAO,aAAa,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudemd-auditor.d.ts","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/claudemd-auditor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"claudemd-auditor.d.ts","sourceRoot":"","sources":["../../../src/engine/claude-config-auditor/claudemd-auditor.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAkP1D,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,aAAa,EAAE,CAAC,CAa1B"}
|