@planu/cli 0.91.0 → 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 +59 -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/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/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/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/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/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/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-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/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/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 +44 -2
- 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/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/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/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/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/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/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 +20 -0
- package/dist/tools/checkpoint-handler.js.map +1 -1
- 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/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/generate-automation-guide.d.ts.map +1 -1
- package/dist/tools/generate-automation-guide.js +44 -0
- package/dist/tools/generate-automation-guide.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/planu-workflow-generator.d.ts.map +1 -1
- package/dist/tools/init-project/planu-workflow-generator.js +11 -0
- package/dist/tools/init-project/planu-workflow-generator.js.map +1 -1
- package/dist/tools/init-project/rules-generator.d.ts +11 -0
- package/dist/tools/init-project/rules-generator.d.ts.map +1 -1
- package/dist/tools/init-project/rules-generator.js +79 -0
- package/dist/tools/init-project/rules-generator.js.map +1 -1
- package/dist/tools/init-project/scaffold-writer.d.ts +1 -0
- package/dist/tools/init-project/scaffold-writer.d.ts.map +1 -1
- package/dist/tools/init-project/scaffold-writer.js +10 -1
- package/dist/tools/init-project/scaffold-writer.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/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/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-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-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/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 +2 -0
- 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/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/status-handler.d.ts.map +1 -1
- package/dist/tools/status-handler.js +40 -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/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/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/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/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/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/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 +29 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +29 -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/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/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/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/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/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/package.json +1 -1
- package/src/config/domain-best-practices.json +413 -0
- package/src/config/ide-registry.json +25 -0
- package/src/config/license-plans.json +59 -2
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// tools/test-reverse-engineer-handler.ts — Handle reverse_engineer_tests tool calls (SPEC-299)
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { parseTestFile } from '../engine/reverse-engineer/test-file-parser.js';
|
|
4
|
+
import { handleCreateSpec } from './create-spec.js';
|
|
5
|
+
export const ReverseEngineerTestsInputSchema = z.object({
|
|
6
|
+
testFilePath: z
|
|
7
|
+
.string()
|
|
8
|
+
.describe('Absolute path to the test file (e.g. Playwright, Cypress, Jest) to parse'),
|
|
9
|
+
projectPath: z
|
|
10
|
+
.string()
|
|
11
|
+
.optional()
|
|
12
|
+
.describe('Absolute path to the project root. Required when createSpec=true'),
|
|
13
|
+
createSpec: z
|
|
14
|
+
.boolean()
|
|
15
|
+
.optional()
|
|
16
|
+
.describe('If true, automatically create a Planu spec from the generated ACs. Requires projectPath.'),
|
|
17
|
+
});
|
|
18
|
+
function buildTextReport(result, testFilePath) {
|
|
19
|
+
const lines = [
|
|
20
|
+
`Test Reverse Engineering Report`,
|
|
21
|
+
`================================`,
|
|
22
|
+
`File: ${testFilePath}`,
|
|
23
|
+
`Framework: ${result.detectedFramework}`,
|
|
24
|
+
`Total tests: ${result.totalTests} (${result.skipCount} skipped)`,
|
|
25
|
+
`Suggested title: ${result.suggestedTitle}`,
|
|
26
|
+
`Suggested tags: ${result.suggestedTags.join(', ') || '(none)'}`,
|
|
27
|
+
``,
|
|
28
|
+
`Generated Acceptance Criteria (${result.generatedAcs.length}):`,
|
|
29
|
+
];
|
|
30
|
+
const groups = new Map();
|
|
31
|
+
for (const ac of result.generatedAcs) {
|
|
32
|
+
const existing = groups.get(ac.group) ?? [];
|
|
33
|
+
existing.push(ac);
|
|
34
|
+
groups.set(ac.group, existing);
|
|
35
|
+
}
|
|
36
|
+
for (const [group, acs] of groups) {
|
|
37
|
+
lines.push(``, ` [${group}]`);
|
|
38
|
+
for (const ac of acs) {
|
|
39
|
+
const skipMark = ac.skipped ? ' (skipped)' : '';
|
|
40
|
+
lines.push(` - ${ac.text}${skipMark}`);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return lines.join('\n');
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Handle the reverse_engineer_tests tool.
|
|
47
|
+
* Parses a test file and extracts acceptance criteria.
|
|
48
|
+
* Optionally creates a Planu spec from the generated ACs.
|
|
49
|
+
*/
|
|
50
|
+
export async function handleReverseEngineerTests(params) {
|
|
51
|
+
const { testFilePath, projectPath, createSpec } = params;
|
|
52
|
+
let result;
|
|
53
|
+
try {
|
|
54
|
+
result = await parseTestFile(testFilePath);
|
|
55
|
+
}
|
|
56
|
+
catch (err) {
|
|
57
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
58
|
+
return {
|
|
59
|
+
content: [
|
|
60
|
+
{
|
|
61
|
+
type: 'text',
|
|
62
|
+
text: `Failed to parse test file: ${message}. Ensure the path is absolute and the file exists.`,
|
|
63
|
+
},
|
|
64
|
+
],
|
|
65
|
+
isError: true,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
const report = buildTextReport(result, testFilePath);
|
|
69
|
+
if (createSpec === true && projectPath) {
|
|
70
|
+
const acLines = result.generatedAcs
|
|
71
|
+
.filter((ac) => !ac.skipped)
|
|
72
|
+
.map((ac) => `- ${ac.text}`)
|
|
73
|
+
.join('\n');
|
|
74
|
+
const description = `Auto-generated from test file: ${testFilePath}\n\n## Acceptance Criteria\n${acLines || '(no active tests found)'}`;
|
|
75
|
+
const createResult = await handleCreateSpec({
|
|
76
|
+
title: result.suggestedTitle,
|
|
77
|
+
description,
|
|
78
|
+
projectPath,
|
|
79
|
+
tags: result.suggestedTags,
|
|
80
|
+
});
|
|
81
|
+
const specContent = createResult.content[0];
|
|
82
|
+
const specText = specContent?.type === 'text' ? specContent.text : '';
|
|
83
|
+
return {
|
|
84
|
+
content: [
|
|
85
|
+
{ type: 'text', text: report },
|
|
86
|
+
{ type: 'text', text: `\n---\nSpec created:\n${specText}` },
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
content: [{ type: 'text', text: report }],
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=test-reverse-engineer-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-reverse-engineer-handler.js","sourceRoot":"","sources":["../../src/tools/test-reverse-engineer-handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/update-status/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/update-status/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAuB,MAAM,sBAAsB,CAAC;AA2I/F,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyOvF"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ti } from '../../i18n/index.js';
|
|
2
2
|
import { specStore, knowledgeStore } from '../../storage/index.js';
|
|
3
|
+
import { hashProjectPath } from '../../storage/base-store.js';
|
|
3
4
|
import { calculateAccuracy } from '../../engine/estimator.js';
|
|
4
5
|
import { cascadeCheck } from '../../engine/spec-versioner.js';
|
|
5
6
|
import { runComplianceGates } from '../update-status-convention-gate.js';
|
|
@@ -7,13 +8,119 @@ import { runImplementingActions, runDoneActions } from '../update-status-actions
|
|
|
7
8
|
import { compactObj } from '../../engine/compact-obj.js';
|
|
8
9
|
import { dirname } from 'node:path';
|
|
9
10
|
import { appendChangelogEntry } from '../../engine/spec-changelog/index.js';
|
|
10
|
-
import { checkTransition, checkDorGate } from './transition-guard.js';
|
|
11
|
+
import { checkTransition, checkDorGate, resolveAutoAdvanceSteps } from './transition-guard.js';
|
|
12
|
+
import { checkApprovalGate } from '../../engine/approval-workflow.js';
|
|
13
|
+
import * as approvalStore from '../../storage/approval-store.js';
|
|
14
|
+
import { isLocked, getLock } from '../../storage/spec-lock-store.js';
|
|
11
15
|
import { runValidateGate, checkDodGate } from './dod-gates.js';
|
|
12
16
|
import { buildStatusResponse } from './response-builder.js';
|
|
13
17
|
import { recordDoneMetrics, syncSpecFiles, tryReconcile } from './file-sync.js';
|
|
14
18
|
import { fireAndForgetSideEffects } from './side-effects.js';
|
|
19
|
+
function resolveProjectId(params) {
|
|
20
|
+
if (params.projectId) {
|
|
21
|
+
return params.projectId;
|
|
22
|
+
}
|
|
23
|
+
if (params.projectPath) {
|
|
24
|
+
return hashProjectPath(params.projectPath);
|
|
25
|
+
}
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* SPEC-280: Silently traverse intermediate states so callers can jump forward
|
|
30
|
+
* (e.g. draft → approved) without receiving an error.
|
|
31
|
+
* Returns the list of states executed, or an empty array if none were needed.
|
|
32
|
+
*/
|
|
33
|
+
async function runAutoAdvance(projectId, specId, currentStatus, targetStatus) {
|
|
34
|
+
const steps = resolveAutoAdvanceSteps(currentStatus, targetStatus);
|
|
35
|
+
if (!steps || steps.length === 0) {
|
|
36
|
+
return { updatedCurrentStatus: currentStatus, stepsExecuted: [] };
|
|
37
|
+
}
|
|
38
|
+
let updatedCurrentStatus = currentStatus;
|
|
39
|
+
const stepsExecuted = [];
|
|
40
|
+
for (const intermediateStatus of steps) {
|
|
41
|
+
await specStore.updateSpec(projectId, specId, { status: intermediateStatus });
|
|
42
|
+
stepsExecuted.push(intermediateStatus);
|
|
43
|
+
updatedCurrentStatus = intermediateStatus;
|
|
44
|
+
}
|
|
45
|
+
return { updatedCurrentStatus, stepsExecuted };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* SPEC-301: Check if spec is locked by another agent.
|
|
49
|
+
* Returns an error ToolResult if locked, or null to continue.
|
|
50
|
+
*/
|
|
51
|
+
async function checkSpecLockGate(projectPath, specId) {
|
|
52
|
+
if (!projectPath) {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
const locked = await isLocked(projectPath, specId);
|
|
56
|
+
if (!locked) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const lock = await getLock(projectPath, specId);
|
|
60
|
+
if (lock === null) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
content: [
|
|
65
|
+
{
|
|
66
|
+
type: 'text',
|
|
67
|
+
text: `Spec ${specId} is locked by "${lock.lockHolder}". ` +
|
|
68
|
+
`Use unlock_spec or force=true to override.`,
|
|
69
|
+
},
|
|
70
|
+
],
|
|
71
|
+
isError: true,
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* SPEC-283: Verify the approval gate before transitioning to 'approved'.
|
|
76
|
+
* Returns an error ToolResult if the gate is not satisfied, or null to continue.
|
|
77
|
+
*/
|
|
78
|
+
async function checkApprovalPolicyGate(projectId, specId, newStatus) {
|
|
79
|
+
if (newStatus !== 'approved') {
|
|
80
|
+
return null;
|
|
81
|
+
}
|
|
82
|
+
const policy = await approvalStore.getPolicy(projectId);
|
|
83
|
+
if (policy === null) {
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
const records = await approvalStore.getRecords(projectId, specId);
|
|
87
|
+
const gateError = checkApprovalGate(records, policy, specId);
|
|
88
|
+
if (gateError !== null) {
|
|
89
|
+
return {
|
|
90
|
+
content: [{ type: 'text', text: gateError }],
|
|
91
|
+
isError: true,
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
/** Compute done metrics when transitioning to 'done' with actuals provided. */
|
|
97
|
+
function computeDoneMetrics(newStatus, spec, actuals) {
|
|
98
|
+
if (newStatus !== 'done' || actuals === undefined || spec === null) {
|
|
99
|
+
return null;
|
|
100
|
+
}
|
|
101
|
+
return {
|
|
102
|
+
accuracyScore: calculateAccuracy(spec.estimation, actuals.devHours + actuals.reviewHours),
|
|
103
|
+
estimatedHours: spec.estimation.devHours + spec.estimation.reviewHours,
|
|
104
|
+
actualHours: actuals.devHours + actuals.reviewHours,
|
|
105
|
+
estimatedCost: spec.estimation.totalCostUsd,
|
|
106
|
+
actualCost: actuals.totalCostUsd,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
/** Extract recordActualHint from doneActions without adding cyclomatic complexity inline. */
|
|
110
|
+
function extractRecordActualHint(doneActions) {
|
|
111
|
+
return doneActions?.recordActualHint;
|
|
112
|
+
}
|
|
15
113
|
export async function handleUpdateStatus(params) {
|
|
16
|
-
const { specId,
|
|
114
|
+
const { specId, status: newStatus, actuals, reviewNotes } = params;
|
|
115
|
+
const projectId = resolveProjectId(params);
|
|
116
|
+
if (!projectId) {
|
|
117
|
+
return {
|
|
118
|
+
content: [
|
|
119
|
+
{ type: 'text', text: 'Provide projectId or projectPath to identify the project.' },
|
|
120
|
+
],
|
|
121
|
+
isError: true,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
17
124
|
try {
|
|
18
125
|
// Get the current spec
|
|
19
126
|
const spec = await specStore.getSpec(projectId, specId);
|
|
@@ -23,12 +130,25 @@ export async function handleUpdateStatus(params) {
|
|
|
23
130
|
isError: true,
|
|
24
131
|
};
|
|
25
132
|
}
|
|
26
|
-
const
|
|
27
|
-
//
|
|
133
|
+
const originalStatus = spec.status;
|
|
134
|
+
// SPEC-301: Reject status changes when spec is locked by another holder
|
|
135
|
+
const lockError = await checkSpecLockGate(params.projectPath, specId);
|
|
136
|
+
if (lockError) {
|
|
137
|
+
return lockError;
|
|
138
|
+
}
|
|
139
|
+
// SPEC-280: auto-advance silently through intermediate states (e.g. draft → approved)
|
|
140
|
+
const { updatedCurrentStatus, stepsExecuted } = await runAutoAdvance(projectId, specId, spec.status, newStatus);
|
|
141
|
+
const currentStatus = updatedCurrentStatus;
|
|
142
|
+
// Validate state transition (after any auto-advance, currentStatus is the last intermediate)
|
|
28
143
|
const transitionError = checkTransition(currentStatus, newStatus);
|
|
29
144
|
if (transitionError) {
|
|
30
145
|
return transitionError;
|
|
31
146
|
}
|
|
147
|
+
// Gate: approval policy must be satisfied before transitioning to 'approved'
|
|
148
|
+
const approvalError = await checkApprovalPolicyGate(projectId, specId, newStatus);
|
|
149
|
+
if (approvalError) {
|
|
150
|
+
return approvalError;
|
|
151
|
+
}
|
|
32
152
|
// Gate: DoR must pass before transitioning to 'implementing'
|
|
33
153
|
const dorError = checkDorGate(spec, specId, projectId, newStatus);
|
|
34
154
|
if (dorError) {
|
|
@@ -87,7 +207,7 @@ export async function handleUpdateStatus(params) {
|
|
|
87
207
|
const existing = spec.reviewNotes ?? [];
|
|
88
208
|
updates.reviewNotes = [
|
|
89
209
|
...existing,
|
|
90
|
-
`[${new Date().toISOString()}] ${
|
|
210
|
+
`[${new Date().toISOString()}] ${originalStatus}→${newStatus}: ${reviewNotes}`,
|
|
91
211
|
];
|
|
92
212
|
}
|
|
93
213
|
// If actuals are provided, save them
|
|
@@ -97,7 +217,7 @@ export async function handleUpdateStatus(params) {
|
|
|
97
217
|
// Update the spec
|
|
98
218
|
const updatedSpec = await specStore.updateSpec(projectId, specId, updates);
|
|
99
219
|
// Sync spec.md frontmatter and progress.md (best-effort)
|
|
100
|
-
await syncSpecFiles(updatedSpec,
|
|
220
|
+
await syncSpecFiles(updatedSpec, originalStatus, newStatus);
|
|
101
221
|
// If spec is done and has actuals, record metrics
|
|
102
222
|
if (newStatus === 'done' && actuals) {
|
|
103
223
|
await recordDoneMetrics(projectId, specId, spec, actuals, knowledge?.projectPath);
|
|
@@ -112,9 +232,9 @@ export async function handleUpdateStatus(params) {
|
|
|
112
232
|
entry: {
|
|
113
233
|
timestamp: new Date().toISOString(),
|
|
114
234
|
type: 'status_changed',
|
|
115
|
-
description: `Estado cambio de \`${
|
|
235
|
+
description: `Estado cambio de \`${originalStatus}\` a \`${newStatus}\`.`,
|
|
116
236
|
triggeredBy: 'update_status',
|
|
117
|
-
before: { criteriaCount: 0, completedCount: 0, status:
|
|
237
|
+
before: { criteriaCount: 0, completedCount: 0, status: originalStatus },
|
|
118
238
|
after: { criteriaCount: 0, completedCount: 0, status: newStatus },
|
|
119
239
|
},
|
|
120
240
|
});
|
|
@@ -122,11 +242,14 @@ export async function handleUpdateStatus(params) {
|
|
|
122
242
|
// Cascade check: notify downstream specs of the status change
|
|
123
243
|
const allSpecs = await specStore.listSpecs(projectId);
|
|
124
244
|
const cascadeResult = cascadeCheck(specId, allSpecs, newStatus);
|
|
245
|
+
const doneMetrics = computeDoneMetrics(newStatus, spec, actuals);
|
|
125
246
|
const result = compactObj({
|
|
126
247
|
specId,
|
|
127
248
|
projectId,
|
|
128
|
-
previousStatus:
|
|
249
|
+
previousStatus: originalStatus,
|
|
129
250
|
newStatus,
|
|
251
|
+
autoAdvanced: stepsExecuted.length > 0 ? true : null,
|
|
252
|
+
stepsExecuted: stepsExecuted.length > 0 ? stepsExecuted : null,
|
|
130
253
|
actuals: actuals ?? null,
|
|
131
254
|
autoBranch: implActions?.autoBranch ?? null,
|
|
132
255
|
protectedBranchWarning: implActions?.protectedBranchWarning ?? null,
|
|
@@ -143,15 +266,7 @@ export async function handleUpdateStatus(params) {
|
|
|
143
266
|
lintWarnings: lintWarnings.length > 0 ? lintWarnings : null,
|
|
144
267
|
testWarnings: testWarnings.length > 0 ? testWarnings : null,
|
|
145
268
|
cascade: cascadeResult,
|
|
146
|
-
metrics:
|
|
147
|
-
? {
|
|
148
|
-
accuracyScore: calculateAccuracy(spec.estimation, actuals.devHours + actuals.reviewHours),
|
|
149
|
-
estimatedHours: spec.estimation.devHours + spec.estimation.reviewHours,
|
|
150
|
-
actualHours: actuals.devHours + actuals.reviewHours,
|
|
151
|
-
estimatedCost: spec.estimation.totalCostUsd,
|
|
152
|
-
actualCost: actuals.totalCostUsd,
|
|
153
|
-
}
|
|
154
|
-
: null,
|
|
269
|
+
metrics: doneMetrics,
|
|
155
270
|
updatedAt: updatedSpec.updatedAt,
|
|
156
271
|
message: ti('tools.update_status.success', { specId, status: newStatus }),
|
|
157
272
|
});
|
|
@@ -164,11 +279,11 @@ export async function handleUpdateStatus(params) {
|
|
|
164
279
|
validateScore,
|
|
165
280
|
projectId,
|
|
166
281
|
spec,
|
|
167
|
-
currentStatus,
|
|
282
|
+
currentStatus: originalStatus,
|
|
168
283
|
});
|
|
169
284
|
// Auto-reconcile token costs when spec reaches done (best-effort, non-blocking)
|
|
170
285
|
const reconciliationMarkdown = await tryReconcile(newStatus, specId, projectId);
|
|
171
|
-
return buildStatusResponse(result, specId, currentStatus, newStatus, reconciliationMarkdown);
|
|
286
|
+
return buildStatusResponse(result, specId, currentStatus, newStatus, reconciliationMarkdown, extractRecordActualHint(doneActions));
|
|
172
287
|
}
|
|
173
288
|
catch (error) {
|
|
174
289
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/update-status/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/update-status/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,aAAa,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kCAAkC,CAAC;AACrE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAE7D,SAAS,gBAAgB,CAAC,MAAoD;IAC5E,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,MAAM,CAAC,SAAS,CAAC;IAC1B,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,cAAc,CAC3B,SAAiB,EACjB,MAAc,EACd,aAAyB,EACzB,YAAwB;IAExB,MAAM,KAAK,GAAG,uBAAuB,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;IACnE,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC;IACpE,CAAC;IACD,IAAI,oBAAoB,GAAG,aAAa,CAAC;IACzC,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,kBAAkB,IAAI,KAAK,EAAE,CAAC;QACvC,MAAM,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;QAC9E,aAAa,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACvC,oBAAoB,GAAG,kBAAkB,CAAC;IAC5C,CAAC;IACD,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,CAAC;AACjD,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,iBAAiB,CAC9B,WAA+B,EAC/B,MAAc;IAEd,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAChD,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,QAAQ,MAAM,kBAAkB,IAAI,CAAC,UAAU,KAAK;oBACpD,4CAA4C;aAC/C;SACF;QACD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,uBAAuB,CACpC,SAAiB,EACjB,MAAc,EACd,SAAqB;IAErB,IAAI,SAAS,KAAK,UAAU,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACxD,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAClE,MAAM,SAAS,GAAG,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7D,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAC5C,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,+EAA+E;AAC/E,SAAS,kBAAkB,CACzB,SAAqB,EACrB,IAAmD,EACnD,OAA4B;IAE5B,IAAI,SAAS,KAAK,MAAM,IAAI,OAAO,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO;QACL,aAAa,EAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;QACzF,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW;QACtE,WAAW,EAAE,OAAO,CAAC,QAAQ,GAAG,OAAO,CAAC,WAAW;QACnD,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY;QAC3C,UAAU,EAAE,OAAO,CAAC,YAAY;KACjC,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,SAAS,uBAAuB,CAC9B,WAA8D;IAE9D,OAAO,WAAW,EAAE,gBAAgB,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAyB;IAChE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACnE,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE3C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE;gBACP,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2DAA2D,EAAE;aACpF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,uBAAuB;QACvB,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,eAAe,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;gBACtE,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;QAEnC,wEAAwE;QACxE,MAAM,SAAS,GAAG,MAAM,iBAAiB,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QACtE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,sFAAsF;QACtF,MAAM,EAAE,oBAAoB,EAAE,aAAa,EAAE,GAAG,MAAM,cAAc,CAClE,SAAS,EACT,MAAM,EACN,IAAI,CAAC,MAAM,EACX,SAAS,CACV,CAAC;QACF,MAAM,aAAa,GAAG,oBAAoB,CAAC;QAE3C,6FAA6F;QAC7F,MAAM,eAAe,GAAG,eAAe,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,eAAe,CAAC;QACzB,CAAC;QAED,6EAA6E;QAC7E,MAAM,aAAa,GAAG,MAAM,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAClF,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC;QACvB,CAAC;QAED,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;QAClE,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,0FAA0F;QAC1F,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAE/D,yEAAyE;QACzE,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;YAC1C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;YAC5F,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,QAAQ,CAAC;YAClB,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,IAAI,aAAa,GAAkB,IAAI,CAAC;QACxC,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,MAAM,YAAY,GAAG,MAAM,eAAe,CACxC,IAAI,EACJ,SAAS,EAAE,WAAW,IAAI,EAAE,EAC5B,MAAM,CAAC,WAAW,CACnB,CAAC;YACF,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,2BAA2B,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,sDAAsD;yBAClH;qBACF;iBACF,CAAC;YACJ,CAAC;YACD,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC;QACrC,CAAC;QAED,mHAAmH;QACnH,MAAM,EACJ,kBAAkB,EAClB,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,YAAY,GACb,GAAG,MAAM,kBAAkB,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QAE1E,kFAAkF;QAClF,IAAI,SAAS,KAAK,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrC,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,EAAE,EAAE,CAAC,EAAE,CAAC;gBACjE,OAAO,EAAE,IAAI;gBACb,iBAAiB,EAAE;oBACjB,KAAK,EAAE,kBAAkB;oBACzB,IAAI,EAAE,GAAG;oBACT,OAAO,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE;oBAC9B,OAAO,EAAE,6EAA6E;iBACvF;aACF,CAAC;QACJ,CAAC;QAED,kCAAkC;QAClC,MAAM,WAAW,GACf,SAAS,KAAK,cAAc,CAAC,CAAC,CAAC,MAAM,sBAAsB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAExF,MAAM,WAAW,GACf,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAExF,mBAAmB;QACnB,MAAM,OAAO,GAAyB;YACpC,MAAM,EAAE,SAAS;SAClB,CAAC;QAEF,2EAA2E;QAC3E,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,IAAI,EAAE,CAAC;YACxC,OAAO,CAAC,WAAW,GAAG;gBACpB,GAAG,QAAQ;gBACX,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,cAAc,IAAI,SAAS,KAAK,WAAW,EAAE;aAC/E,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,CAAC;QAED,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAE3E,yDAAyD;QACzD,MAAM,aAAa,CAAC,WAAW,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC;QAE5D,kDAAkD;QAClD,IAAI,SAAS,KAAK,MAAM,IAAI,OAAO,EAAE,CAAC;YACpC,MAAM,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACpF,CAAC;QAED,4DAA4D;QAC5D,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAC9C,gBAAgB,GAAG,MAAM,oBAAoB,CAAC;gBAC5C,OAAO;gBACP,MAAM;gBACN,KAAK,EAAE;oBACL,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;oBACnC,IAAI,EAAE,gBAAgB;oBACtB,WAAW,EAAE,sBAAsB,cAAc,UAAU,SAAS,KAAK;oBACzE,WAAW,EAAE,eAAe;oBAC5B,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE;oBACvE,KAAK,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,cAAc,EAAE,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE;iBAClE;aACF,CAAC,CAAC;QACL,CAAC;QAED,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,aAAa,GAAG,YAAY,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;QAEhE,MAAM,WAAW,GAAG,kBAAkB,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAEjE,MAAM,MAAM,GAAG,UAAU,CAAC;YACxB,MAAM;YACN,SAAS;YACT,cAAc,EAAE,cAAc;YAC9B,SAAS;YACT,YAAY,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;YACpD,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;YAC9D,OAAO,EAAE,OAAO,IAAI,IAAI;YACxB,UAAU,EAAE,WAAW,EAAE,UAAU,IAAI,IAAI;YAC3C,sBAAsB,EAAE,WAAW,EAAE,sBAAsB,IAAI,IAAI;YACnE,YAAY,EAAE,WAAW,EAAE,YAAY,IAAI,IAAI;YAC/C,iBAAiB,EAAE,WAAW,EAAE,iBAAiB,IAAI,IAAI;YACzD,kBAAkB,EAAE,WAAW,EAAE,kBAAkB,IAAI,IAAI;YAC3D,YAAY,EAAE,WAAW,EAAE,YAAY,IAAI,IAAI;YAC/C,gBAAgB;YAChB,uBAAuB,EAAE,WAAW,EAAE,WAAW,IAAI,IAAI;YACzD,aAAa;YACb,oBAAoB,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,IAAI;YACnF,kBAAkB,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;YAC7E,eAAe,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI;YACpE,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;YAC3D,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI;YAC3D,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,WAAW;YACpB,SAAS,EAAE,WAAW,CAAC,SAAS;YAChC,OAAO,EAAE,EAAE,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;SAC/C,CAAC,CAAC;QAE9B,8CAA8C;QAC9C,wBAAwB,CAAC;YACvB,SAAS;YACT,QAAQ;YACR,MAAM;YACN,SAAS;YACT,aAAa;YACb,SAAS;YACT,IAAI;YACJ,aAAa,EAAE,cAAc;SAC9B,CAAC,CAAC;QAEH,gFAAgF;QAChF,MAAM,sBAAsB,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QAEhF,OAAO,mBAAmB,CACxB,MAAM,EACN,MAAM,EACN,aAAa,EACb,SAAS,EACT,sBAAsB,EACtB,uBAAuB,CAAC,WAAW,CAAC,CACrC,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACvE,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,CAAC,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { SpecStatus, ToolResult } from '../../types/index.js';
|
|
2
2
|
export declare const STATUS_EMOJIS: Record<SpecStatus, string>;
|
|
3
|
-
export declare function buildStatusResponse(result: Record<string, unknown>, specId: string, currentStatus: SpecStatus, newStatus: SpecStatus, reconciliationMarkdown?: string | null): ToolResult;
|
|
3
|
+
export declare function buildStatusResponse(result: Record<string, unknown>, specId: string, currentStatus: SpecStatus, newStatus: SpecStatus, reconciliationMarkdown?: string | null, recordActualHint?: string | null): ToolResult;
|
|
4
4
|
//# sourceMappingURL=response-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-builder.d.ts","sourceRoot":"","sources":["../../../src/tools/update-status/response-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAInE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOpD,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,UAAU,EACrB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"response-builder.d.ts","sourceRoot":"","sources":["../../../src/tools/update-status/response-builder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAInE,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,UAAU,EAAE,MAAM,CAOpD,CAAC;AAEF,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,UAAU,EACrB,sBAAsB,CAAC,EAAE,MAAM,GAAG,IAAI,EACtC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,GAC/B,UAAU,CAuFZ"}
|
|
@@ -8,7 +8,7 @@ export const STATUS_EMOJIS = {
|
|
|
8
8
|
done: '🎉',
|
|
9
9
|
discarded: '🗑️',
|
|
10
10
|
};
|
|
11
|
-
export function buildStatusResponse(result, specId, currentStatus, newStatus, reconciliationMarkdown) {
|
|
11
|
+
export function buildStatusResponse(result, specId, currentStatus, newStatus, reconciliationMarkdown, recordActualHint) {
|
|
12
12
|
const fromEmoji = STATUS_EMOJIS[currentStatus];
|
|
13
13
|
const toEmoji = STATUS_EMOJIS[newStatus];
|
|
14
14
|
const r = result;
|
|
@@ -55,6 +55,9 @@ export function buildStatusResponse(result, specId, currentStatus, newStatus, re
|
|
|
55
55
|
if (r.testWarnings && r.testWarnings.length > 0) {
|
|
56
56
|
lines.push(`\n⚠️ **Test Warnings**\n${r.testWarnings.map((w) => `- ${w}`).join('\n')}`);
|
|
57
57
|
}
|
|
58
|
+
if (recordActualHint) {
|
|
59
|
+
lines.push(`\n💡 ${recordActualHint}`);
|
|
60
|
+
}
|
|
58
61
|
const allNextSteps = [...(r.implementingSuggestions ?? [])];
|
|
59
62
|
const baseText = formatSuccess(t('tools.response.statusTitle'), lines.join(''));
|
|
60
63
|
const withNextSteps = allNextSteps.length > 0 ? addNextSteps(baseText, allNextSteps) : baseText;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-builder.js","sourceRoot":"","sources":["../../../src/tools/update-status/response-builder.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,qBAAqB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAErE,MAAM,CAAC,MAAM,aAAa,GAA+B;IACvD,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,QAAQ,EAAE,GAAG;IACb,YAAY,EAAE,IAAI;IAClB,IAAI,EAAE,IAAI;IACV,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF,MAAM,UAAU,mBAAmB,CACjC,MAA+B,EAC/B,MAAc,EACd,aAAyB,EACzB,SAAqB,EACrB,sBAAsC;
|
|
1
|
+
{"version":3,"file":"response-builder.js","sourceRoot":"","sources":["../../../src/tools/update-status/response-builder.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-effects.d.ts","sourceRoot":"","sources":["../../../src/tools/update-status/side-effects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,
|
|
1
|
+
{"version":3,"file":"side-effects.d.ts","sourceRoot":"","sources":["../../../src/tools/update-status/side-effects.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAA2C,MAAM,sBAAsB,CAAC;AAChG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAM7D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD,yEAAyE;AACzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE;IAC/C,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;IACnE,QAAQ,EAAE,IAAI,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,UAAU,CAAC;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,IAAI,CAAC;IACX,aAAa,EAAE,UAAU,CAAC;CAC3B,GAAG,IAAI,CAkDP"}
|
|
@@ -35,6 +35,77 @@ export function fireAndForgetSideEffects(params) {
|
|
|
35
35
|
knowledge?.projectPath) {
|
|
36
36
|
void autoCaptureLessonDrift(spec, projectId, knowledge.projectPath);
|
|
37
37
|
}
|
|
38
|
+
// SPEC-292: Slack notification on status change (fire-and-forget)
|
|
39
|
+
if (knowledge?.projectPath) {
|
|
40
|
+
fireSlackStatusChange(spec, newStatus, currentStatus, knowledge.projectPath);
|
|
41
|
+
}
|
|
42
|
+
// SPEC-302: Desktop notification on status change (fire-and-forget)
|
|
43
|
+
if (knowledge?.projectPath) {
|
|
44
|
+
void fireDesktopNotification(knowledge.projectPath, specId, spec, newStatus);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// ---------------------------------------------------------------------------
|
|
48
|
+
// SPEC-292: Slack side-effect
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
function fireSlackStatusChange(spec, newStatus, currentStatus, projectPath) {
|
|
51
|
+
void (async () => {
|
|
52
|
+
try {
|
|
53
|
+
const { getSlackConfig, appendDelivery } = await import('../../storage/slack-store.js');
|
|
54
|
+
const config = await getSlackConfig(projectPath);
|
|
55
|
+
if (config?.enabled !== true) {
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const { buildSpecPayload, dispatchToSlack } = await import('../../engine/slack-dispatcher.js');
|
|
59
|
+
const payload = buildSpecPayload(spec.id, spec.title, currentStatus, newStatus);
|
|
60
|
+
const delivery = {
|
|
61
|
+
id: `dlv-${Date.now()}`,
|
|
62
|
+
sentAt: new Date().toISOString(),
|
|
63
|
+
status: 'sent',
|
|
64
|
+
specId: spec.id,
|
|
65
|
+
eventType: 'status_change',
|
|
66
|
+
};
|
|
67
|
+
try {
|
|
68
|
+
await dispatchToSlack(config.webhookUrl, payload);
|
|
69
|
+
}
|
|
70
|
+
catch (err) {
|
|
71
|
+
delivery.status = 'failed';
|
|
72
|
+
delivery.error = err instanceof Error ? err.message : String(err);
|
|
73
|
+
}
|
|
74
|
+
await appendDelivery(projectPath, delivery);
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
/* best-effort — never throw */
|
|
78
|
+
}
|
|
79
|
+
})();
|
|
80
|
+
}
|
|
81
|
+
// ---------------------------------------------------------------------------
|
|
82
|
+
// SPEC-302: Desktop notification side-effect
|
|
83
|
+
// ---------------------------------------------------------------------------
|
|
84
|
+
async function fireDesktopNotification(projectPath, specId, spec, newStatus) {
|
|
85
|
+
try {
|
|
86
|
+
const { getConfig, appendLog } = await import('../../storage/desktop-notification-store.js');
|
|
87
|
+
const { fireNotification, shouldNotify } = await import('../../engine/desktop-notifier.js');
|
|
88
|
+
const config = await getConfig(projectPath);
|
|
89
|
+
if (!config) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
const eventType = newStatus === 'done' ? 'done' : newStatus === 'approved' ? 'approved' : 'status_change';
|
|
93
|
+
if (!shouldNotify(config, specId, spec.tags, eventType)) {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
const message = `${spec.id}: ${spec.title} → ${newStatus}`;
|
|
97
|
+
await fireNotification('Planu', message);
|
|
98
|
+
await appendLog(projectPath, {
|
|
99
|
+
id: `notif-${Date.now()}`,
|
|
100
|
+
triggeredAt: new Date().toISOString(),
|
|
101
|
+
specId,
|
|
102
|
+
eventType,
|
|
103
|
+
message,
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
/* best-effort — never throw */
|
|
108
|
+
}
|
|
38
109
|
}
|
|
39
110
|
async function autoCaptureLessonDrift(spec, projectId, projectPath) {
|
|
40
111
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"side-effects.js","sourceRoot":"","sources":["../../../src/tools/update-status/side-effects.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,yEAAyE;AACzE,MAAM,UAAU,wBAAwB,CAAC,MASxC;IACC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,GAC7F,MAAM,CAAC;IAET,0EAA0E;IAC1E,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC;QAC3B,KAAK,yBAAyB,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,MAAM,aAAa,GAA8C,CAAC,OAAO,CAAC,CAAC;QAC3E,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,oFAAoF;IACpF,IAAI,SAAS,KAAK,MAAM,IAAI,aAAa,KAAK,IAAI,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC;QAC7E,KAAK,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACtD,IAAI,CAAC;gBACH,QAAQ,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,gCAAgC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,KAAK,iBAAiB,CACpB,SAAS,EACT,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAClF,CAAC;IAEF,kGAAkG;IAClG,IACE,SAAS,KAAK,MAAM;QACpB,aAAa,KAAK,IAAI;QACtB,aAAa,GAAG,EAAE;QAClB,SAAS,EAAE,WAAW,EACtB,CAAC;QACD,KAAK,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,IAAU,EACV,SAAiB,EACjB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE;YAC7C,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,cAAc;YACxB,IAAI,EAAE,CAAC,eAAe,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,CAAC,WAAW,EAAE;YAC3B,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,cAAc;YACxB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,0BAA0B,IAAI,CAAC,KAAK,EAAE;YAC7C,WAAW,EAAE,6CAA6C;YAC1D,UAAU,EAAE,kDAAkD;YAC9D,IAAI,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"side-effects.js","sourceRoot":"","sources":["../../../src/tools/update-status/side-effects.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,iBAAiB,EAAE,MAAM,iDAAiD,CAAC;AACpF,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAG1E,yEAAyE;AACzE,MAAM,UAAU,wBAAwB,CAAC,MASxC;IACC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,GAC7F,MAAM,CAAC;IAET,0EAA0E;IAC1E,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC;QAC3B,KAAK,yBAAyB,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1E,MAAM,aAAa,GAA8C,CAAC,OAAO,CAAC,CAAC;QAC3E,IAAI,SAAS,KAAK,MAAM,EAAE,CAAC;YACzB,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,CAAC;QACD,iBAAiB,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,aAAa,CAAC,CAAC;IAC7D,CAAC;IAED,oFAAoF;IACpF,IAAI,SAAS,KAAK,MAAM,IAAI,aAAa,KAAK,IAAI,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC;QAC7E,KAAK,MAAM,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;YACtD,IAAI,CAAC;gBACH,QAAQ,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,SAAS,CAAC,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC5E,CAAC;YAAC,MAAM,CAAC;gBACP,gCAAgC;YAClC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,8DAA8D;IAC9D,KAAK,iBAAiB,CACpB,SAAS,EACT,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAClF,CAAC;IAEF,kGAAkG;IAClG,IACE,SAAS,KAAK,MAAM;QACpB,aAAa,KAAK,IAAI;QACtB,aAAa,GAAG,EAAE;QAClB,SAAS,EAAE,WAAW,EACtB,CAAC;QACD,KAAK,sBAAsB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IACtE,CAAC;IAED,kEAAkE;IAClE,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC;QAC3B,qBAAqB,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;IAC/E,CAAC;IAED,oEAAoE;IACpE,IAAI,SAAS,EAAE,WAAW,EAAE,CAAC;QAC3B,KAAK,uBAAuB,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,8BAA8B;AAC9B,8EAA8E;AAE9E,SAAS,qBAAqB,CAC5B,IAAU,EACV,SAAqB,EACrB,aAAyB,EACzB,WAAmB;IAEnB,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,IAAI,CAAC;YACH,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,8BAA8B,CAAC,CAAC;YACxF,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC,WAAW,CAAC,CAAC;YACjD,IAAI,MAAM,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,MAAM,EAAE,gBAAgB,EAAE,eAAe,EAAE,GACzC,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;YACnD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;YAChF,MAAM,QAAQ,GAAkB;gBAC9B,EAAE,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,EAAE;gBACvB,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAChC,MAAM,EAAE,MAAM;gBACd,MAAM,EAAE,IAAI,CAAC,EAAE;gBACf,SAAS,EAAE,eAAe;aAC3B,CAAC;YACF,IAAI,CAAC;gBACH,MAAM,eAAe,CAAC,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACtB,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC;gBAC3B,QAAQ,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,cAAc,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;AACP,CAAC;AAED,8EAA8E;AAC9E,6CAA6C;AAC7C,8EAA8E;AAE9E,KAAK,UAAU,uBAAuB,CACpC,WAAmB,EACnB,MAAc,EACd,IAAU,EACV,SAAqB;IAErB,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,6CAA6C,CAAC,CAAC;QAC7F,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GACb,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC;QAC1F,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,EAAE,CAAC;YACxD,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,KAAK,MAAM,SAAS,EAAE,CAAC;QAC3D,MAAM,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACzC,MAAM,SAAS,CAAC,WAAW,EAAE;YAC3B,EAAE,EAAE,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE;YACzB,WAAW,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACrC,MAAM;YACN,SAAS;YACT,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,IAAU,EACV,SAAiB,EACjB,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE;YAC7C,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,cAAc;YACxB,IAAI,EAAE,CAAC,eAAe,CAAC;SACxB,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QACD,MAAM,SAAS,CAAC,WAAW,EAAE;YAC3B,SAAS;YACT,MAAM,EAAE,IAAI,CAAC,EAAE;YACf,QAAQ,EAAE,cAAc;YACxB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,0BAA0B,IAAI,CAAC,KAAK,EAAE;YAC7C,WAAW,EAAE,6CAA6C;YAC1D,UAAU,EAAE,kDAAkD;YAC9D,IAAI,EAAE,CAAC,eAAe,EAAE,OAAO,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,+BAA+B;IACjC,CAAC;AACH,CAAC"}
|
|
@@ -6,6 +6,14 @@ import type { Spec } from '../../types/spec/core.js';
|
|
|
6
6
|
* Also allow: review -> draft (send back), approved -> review (reconsider)
|
|
7
7
|
*/
|
|
8
8
|
export declare const VALID_TRANSITIONS: Record<SpecStatus, SpecStatus[]>;
|
|
9
|
+
/**
|
|
10
|
+
* SPEC-280: Returns the intermediate states to silently traverse when the
|
|
11
|
+
* caller requests a forward jump (e.g. draft → approved skips review).
|
|
12
|
+
*
|
|
13
|
+
* Returns an array of intermediate statuses to execute before the target,
|
|
14
|
+
* or null when no auto-advance is needed (direct transition or backward).
|
|
15
|
+
*/
|
|
16
|
+
export declare function resolveAutoAdvanceSteps(currentStatus: SpecStatus, targetStatus: SpecStatus): SpecStatus[] | null;
|
|
9
17
|
/**
|
|
10
18
|
* Validates that a status transition is allowed.
|
|
11
19
|
* Returns an error ToolResult if invalid, null if valid.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition-guard.d.ts","sourceRoot":"","sources":["../../../src/tools/update-status/transition-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAItF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,CAO9D,CAAC;
|
|
1
|
+
{"version":3,"file":"transition-guard.d.ts","sourceRoot":"","sources":["../../../src/tools/update-status/transition-guard.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAItF,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAErD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,CAO9D,CAAC;AAQF;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,aAAa,EAAE,UAAU,EACzB,YAAY,EAAE,UAAU,GACvB,UAAU,EAAE,GAAG,IAAI,CAUrB;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,aAAa,EAAE,UAAU,EACzB,SAAS,EAAE,UAAU,GACpB,UAAU,GAAG,IAAI,CAiBnB;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,UAAU,GACpB,UAAU,GAAG,IAAI,CAmCnB;AAED,YAAY,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -14,6 +14,29 @@ export const VALID_TRANSITIONS = {
|
|
|
14
14
|
done: [], // terminal state
|
|
15
15
|
discarded: [], // terminal state
|
|
16
16
|
};
|
|
17
|
+
/**
|
|
18
|
+
* Forward lifecycle order (no backward transitions here).
|
|
19
|
+
* Used to resolve auto-advance intermediate steps (SPEC-280).
|
|
20
|
+
*/
|
|
21
|
+
const LIFECYCLE_ORDER = ['draft', 'review', 'approved', 'implementing', 'done'];
|
|
22
|
+
/**
|
|
23
|
+
* SPEC-280: Returns the intermediate states to silently traverse when the
|
|
24
|
+
* caller requests a forward jump (e.g. draft → approved skips review).
|
|
25
|
+
*
|
|
26
|
+
* Returns an array of intermediate statuses to execute before the target,
|
|
27
|
+
* or null when no auto-advance is needed (direct transition or backward).
|
|
28
|
+
*/
|
|
29
|
+
export function resolveAutoAdvanceSteps(currentStatus, targetStatus) {
|
|
30
|
+
const currentIdx = LIFECYCLE_ORDER.indexOf(currentStatus);
|
|
31
|
+
const targetIdx = LIFECYCLE_ORDER.indexOf(targetStatus);
|
|
32
|
+
if (currentIdx === -1 || targetIdx === -1) {
|
|
33
|
+
return null;
|
|
34
|
+
} // not in forward chain
|
|
35
|
+
if (targetIdx <= currentIdx + 1) {
|
|
36
|
+
return null;
|
|
37
|
+
} // direct or backward — no intermediates
|
|
38
|
+
return LIFECYCLE_ORDER.slice(currentIdx + 1, targetIdx);
|
|
39
|
+
}
|
|
17
40
|
/**
|
|
18
41
|
* Validates that a status transition is allowed.
|
|
19
42
|
* Returns an error ToolResult if invalid, null if valid.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transition-guard.js","sourceRoot":"","sources":["../../../src/tools/update-status/transition-guard.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAqC;IACjE,KAAK,EAAE,CAAC,QAAQ,EAAE,WAAW,CAAC;IAC9B,MAAM,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,WAAW,CAAC;IAC1C,QAAQ,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC;IACjD,YAAY,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC;IAC/C,IAAI,EAAE,EAAE,EAAE,iBAAiB;IAC3B,SAAS,EAAE,EAAE,EAAE,iBAAiB;CACjC,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,aAAyB,EACzB,SAAqB;IAErB,MAAM,eAAe,GAAG,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACzD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzC,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,EAAE,CAAC,wBAAwB,EAAE;wBACjC,IAAI,EAAE,aAAa;wBACnB,EAAE,EAAE,SAAS;qBACd,CAAC;iBACH;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAU,EACV,MAAc,EACd,SAAiB,EACjB,SAAqB;IAErB,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACpC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,KAAK,qBAAqB,CAAC,SAAS,EAAE;YACpC,IAAI,EAAE,WAAW;YACjB,MAAM;YACN,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;YAC3C,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,CAAC,aAAa,EAAE;YAChE,KAAK,EAAE,EAAE,WAAW,EAAE,SAAS,CAAC,aAAa,CAAC,MAAM,EAAE;YACtD,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;QACH,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;wBACE,KAAK,EAAE,iBAAiB;wBACxB,OAAO,EAAE,SAAS,CAAC,YAAY;wBAC/B,aAAa,EAAE,SAAS,CAAC,aAAa;wBACtC,aAAa,EAAE,SAAS,CAAC,aAAa;wBACtC,YAAY,EAAE,SAAS,CAAC,YAAY;qBACrC,EACD,IAAI,EACJ,CAAC,CACF;iBACF;aACF;YACD,OAAO,EAAE,IAAI;SACd,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"transition-guard.js","sourceRoot":"","sources":["../../../src/tools/update-status/transition-guard.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ export declare function runDoneActions(projectId: string, specId: string, gitBra
|
|
|
12
12
|
} | null;
|
|
13
13
|
validationWarning: string | null;
|
|
14
14
|
uncommittedWarning: string | null;
|
|
15
|
+
recordActualHint: string | null;
|
|
15
16
|
}>;
|
|
16
17
|
/**
|
|
17
18
|
* Best-effort constitution compliance check for status transitions.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-status-actions.d.ts","sourceRoot":"","sources":["../../src/tools/update-status-actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAQ/D,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC,CA0CD;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"update-status-actions.d.ts","sourceRoot":"","sources":["../../src/tools/update-status-actions.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAQ/D,wBAAsB,sBAAsB,CAC1C,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IACT,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB,CAAC,CA0CD;AAED,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,GAAG,SAAS,GAC5B,OAAO,CAAC;IACT,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACrD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC,CAsFD;AAED;;;GAGG;AACH,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAWlC"}
|