edsger 0.50.0 → 0.52.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/.claude/settings.local.json +23 -3
- package/.env.local +12 -0
- package/README.md +25 -25
- package/dist/api/chat.d.ts +7 -7
- package/dist/api/chat.js +13 -13
- package/dist/api/cross-product.d.ts +10 -10
- package/dist/api/cross-product.js +30 -30
- package/dist/api/github.d.ts +5 -5
- package/dist/api/github.js +10 -10
- package/dist/api/intelligence.d.ts +3 -3
- package/dist/api/issues/approval-checker.d.ts +20 -0
- package/dist/api/{features → issues}/approval-checker.js +16 -16
- package/dist/api/issues/get-issue.d.ts +5 -0
- package/dist/api/issues/get-issue.js +21 -0
- package/dist/api/issues/index.d.ts +8 -0
- package/dist/api/issues/index.js +10 -0
- package/dist/api/issues/issue-utils.d.ts +23 -0
- package/dist/api/issues/issue-utils.js +80 -0
- package/dist/api/issues/status-updater.d.ts +41 -0
- package/dist/api/{features → issues}/status-updater.js +23 -23
- package/dist/api/{features → issues}/test-cases.d.ts +7 -7
- package/dist/api/{features → issues}/test-cases.js +12 -12
- package/dist/api/issues/update-issue.d.ts +20 -0
- package/dist/api/{features/update-feature.js → issues/update-issue.js} +22 -22
- package/dist/api/{features → issues}/user-stories.d.ts +5 -5
- package/dist/api/{features → issues}/user-stories.js +8 -8
- package/dist/api/products.d.ts +1 -1
- package/dist/api/tasks.d.ts +1 -1
- package/dist/api/test-reports.d.ts +2 -2
- package/dist/api/test-reports.js +4 -4
- package/dist/auth/login.js +1 -1
- package/dist/commands/agent-workflow/chat-worker.d.ts +7 -7
- package/dist/commands/agent-workflow/chat-worker.js +50 -50
- package/dist/commands/agent-workflow/index.d.ts +2 -2
- package/dist/commands/agent-workflow/index.js +3 -3
- package/dist/commands/agent-workflow/{feature-worker.d.ts → issue-worker.d.ts} +4 -4
- package/dist/commands/agent-workflow/{feature-worker.js → issue-worker.js} +12 -12
- package/dist/commands/agent-workflow/processor.d.ts +9 -9
- package/dist/commands/agent-workflow/processor.js +90 -90
- package/dist/commands/build/index.js +2 -2
- package/dist/commands/find-bugs/index.d.ts +11 -0
- package/dist/commands/find-bugs/index.js +39 -0
- package/dist/commands/find-features/index.d.ts +14 -0
- package/dist/commands/find-features/index.js +42 -0
- package/dist/commands/find-smells/index.d.ts +21 -0
- package/dist/commands/find-smells/index.js +65 -0
- package/dist/commands/init/prompts.js +1 -1
- package/dist/commands/init/templates.d.ts +1 -1
- package/dist/commands/init/templates.js +4 -4
- package/dist/commands/workflow/config/phase-configs.js +17 -17
- package/dist/commands/workflow/core/index.d.ts +1 -1
- package/dist/commands/workflow/core/index.js +2 -2
- package/dist/commands/workflow/core/issue-filter.d.ts +16 -0
- package/dist/commands/workflow/core/issue-filter.js +47 -0
- package/dist/commands/workflow/core/state-manager.d.ts +10 -10
- package/dist/commands/workflow/core/state-manager.js +10 -10
- package/dist/commands/workflow/core/workflow-logger.d.ts +9 -9
- package/dist/commands/workflow/core/workflow-logger.js +21 -21
- package/dist/commands/workflow/executors/phase-executor.d.ts +2 -2
- package/dist/commands/workflow/executors/phase-executor.js +32 -32
- package/dist/commands/workflow/issue-coordinator.d.ts +18 -0
- package/dist/commands/workflow/{feature-coordinator.js → issue-coordinator.js} +29 -29
- package/dist/commands/workflow/phase-orchestrator.d.ts +2 -2
- package/dist/commands/workflow/phase-orchestrator.js +82 -82
- package/dist/commands/workflow/processor.d.ts +7 -7
- package/dist/commands/workflow/processor.js +44 -44
- package/dist/config/{feature-status.d.ts → issue-status.d.ts} +14 -14
- package/dist/config/{feature-status.js → issue-status.js} +14 -14
- package/dist/errors/index.d.ts +6 -6
- package/dist/errors/index.js +11 -11
- package/dist/index.js +90 -1
- package/dist/phases/app-store-generation/context.js +6 -6
- package/dist/phases/app-store-generation/index.js +2 -2
- package/dist/phases/app-store-generation/prompts.js +2 -2
- package/dist/phases/autonomous/index.d.ts +3 -3
- package/dist/phases/autonomous/index.js +37 -37
- package/dist/phases/autonomous/prompts.d.ts +2 -2
- package/dist/phases/autonomous/prompts.js +4 -4
- package/dist/phases/branch-planning/context.d.ts +3 -3
- package/dist/phases/branch-planning/context.js +12 -12
- package/dist/phases/branch-planning/index.d.ts +3 -3
- package/dist/phases/branch-planning/index.js +32 -32
- package/dist/phases/branch-planning/outcome.d.ts +5 -5
- package/dist/phases/branch-planning/outcome.js +12 -12
- package/dist/phases/branch-planning/prompts.d.ts +3 -3
- package/dist/phases/branch-planning/prompts.js +13 -13
- package/dist/phases/bug-fixing/analyzer.d.ts +2 -2
- package/dist/phases/bug-fixing/analyzer.js +13 -13
- package/dist/phases/bug-fixing/context-fetcher.d.ts +3 -3
- package/dist/phases/bug-fixing/context-fetcher.js +18 -18
- package/dist/phases/bug-fixing/mcp-server.js +17 -18
- package/dist/phases/chat-processor/context.d.ts +5 -5
- package/dist/phases/chat-processor/context.js +17 -17
- package/dist/phases/chat-processor/index.d.ts +4 -4
- package/dist/phases/chat-processor/index.js +17 -17
- package/dist/phases/chat-processor/product-context.d.ts +3 -3
- package/dist/phases/chat-processor/product-context.js +16 -16
- package/dist/phases/chat-processor/product-prompts.d.ts +1 -1
- package/dist/phases/chat-processor/product-prompts.js +10 -10
- package/dist/phases/chat-processor/product-tools.d.ts +2 -2
- package/dist/phases/chat-processor/product-tools.js +33 -33
- package/dist/phases/chat-processor/prompts.d.ts +3 -3
- package/dist/phases/chat-processor/prompts.js +22 -22
- package/dist/phases/chat-processor/tools.js +46 -46
- package/dist/phases/code-implementation/branch-pr-creator.d.ts +3 -3
- package/dist/phases/code-implementation/branch-pr-creator.js +5 -5
- package/dist/phases/code-implementation/context.d.ts +3 -3
- package/dist/phases/code-implementation/context.js +18 -18
- package/dist/phases/code-implementation/index.d.ts +4 -4
- package/dist/phases/code-implementation/index.js +88 -88
- package/dist/phases/code-implementation/outcome.d.ts +3 -3
- package/dist/phases/code-implementation/outcome.js +6 -6
- package/dist/phases/code-implementation/prompts.d.ts +1 -1
- package/dist/phases/code-implementation/prompts.js +6 -6
- package/dist/phases/code-implementation-verification/agent.d.ts +3 -3
- package/dist/phases/code-implementation-verification/agent.js +5 -5
- package/dist/phases/code-implementation-verification/index.d.ts +3 -3
- package/dist/phases/code-implementation-verification/index.js +11 -11
- package/dist/phases/code-implementation-verification/prompts.d.ts +3 -3
- package/dist/phases/code-implementation-verification/prompts.js +7 -7
- package/dist/phases/code-refine/context.d.ts +8 -8
- package/dist/phases/code-refine/context.js +29 -29
- package/dist/phases/code-refine/index.d.ts +2 -2
- package/dist/phases/code-refine/index.js +20 -20
- package/dist/phases/code-refine/prompts.d.ts +1 -1
- package/dist/phases/code-refine/prompts.js +3 -3
- package/dist/phases/code-refine/refine-iteration.d.ts +1 -1
- package/dist/phases/code-refine/refine-iteration.js +4 -4
- package/dist/phases/code-refine/retry-handler.js +2 -2
- package/dist/phases/code-refine-verification/index.js +10 -10
- package/dist/phases/code-refine-verification/types.d.ts +2 -2
- package/dist/phases/code-review/context.d.ts +8 -8
- package/dist/phases/code-review/context.js +25 -25
- package/dist/phases/code-review/diff-utils.d.ts +1 -1
- package/dist/phases/code-review/diff-utils.js +1 -1
- package/dist/phases/code-review/index.d.ts +2 -2
- package/dist/phases/code-review/index.js +26 -26
- package/dist/phases/code-testing/analyzer.d.ts +2 -2
- package/dist/phases/code-testing/analyzer.js +18 -18
- package/dist/phases/code-testing/context-fetcher.d.ts +3 -3
- package/dist/phases/code-testing/context-fetcher.js +16 -16
- package/dist/phases/code-testing/prompts.d.ts +1 -1
- package/dist/phases/code-testing/prompts.js +5 -5
- package/dist/phases/find-bugs/index.d.ts +30 -0
- package/dist/phases/find-bugs/index.js +216 -0
- package/dist/phases/find-bugs/prompts.d.ts +22 -0
- package/dist/phases/find-bugs/prompts.js +101 -0
- package/dist/phases/find-bugs/state.d.ts +19 -0
- package/dist/phases/find-bugs/state.js +13 -0
- package/dist/phases/find-bugs/types.d.ts +21 -0
- package/dist/phases/find-bugs/types.js +16 -0
- package/dist/phases/find-features/index.d.ts +40 -0
- package/dist/phases/find-features/index.js +279 -0
- package/dist/phases/find-features/prompts.d.ts +43 -0
- package/dist/phases/find-features/prompts.js +138 -0
- package/dist/phases/find-features/state.d.ts +25 -0
- package/dist/phases/find-features/state.js +22 -0
- package/dist/phases/find-features/types.d.ts +27 -0
- package/dist/phases/find-features/types.js +16 -0
- package/dist/phases/find-shared/git.d.ts +24 -0
- package/dist/phases/find-shared/git.js +60 -0
- package/dist/phases/find-shared/mcp.d.ts +33 -0
- package/dist/phases/find-shared/mcp.js +69 -0
- package/dist/phases/find-shared/scan-state.d.ts +33 -0
- package/dist/phases/find-shared/scan-state.js +112 -0
- package/dist/phases/find-smells/index.d.ts +47 -0
- package/dist/phases/find-smells/index.js +278 -0
- package/dist/phases/find-smells/prompts.d.ts +30 -0
- package/dist/phases/find-smells/prompts.js +129 -0
- package/dist/phases/find-smells/state.d.ts +21 -0
- package/dist/phases/find-smells/state.js +17 -0
- package/dist/phases/find-smells/types.d.ts +51 -0
- package/dist/phases/find-smells/types.js +64 -0
- package/dist/phases/functional-testing/analyzer.d.ts +2 -2
- package/dist/phases/functional-testing/analyzer.js +40 -40
- package/dist/phases/functional-testing/context-fetcher.d.ts +3 -3
- package/dist/phases/functional-testing/context-fetcher.js +16 -16
- package/dist/phases/functional-testing/http-fallback.d.ts +2 -2
- package/dist/phases/functional-testing/http-fallback.js +9 -9
- package/dist/phases/functional-testing/mcp-server.js +23 -24
- package/dist/phases/functional-testing/prompts.d.ts +1 -1
- package/dist/phases/functional-testing/prompts.js +4 -4
- package/dist/phases/functional-testing/test-report-creator.d.ts +2 -2
- package/dist/phases/functional-testing/test-report-creator.js +10 -10
- package/dist/phases/functional-testing/test-retry-handler.js +3 -3
- package/dist/phases/growth-analysis/context.js +6 -6
- package/dist/phases/growth-analysis/index.js +2 -2
- package/dist/phases/growth-analysis/prompts.js +2 -2
- package/dist/phases/intelligence-analysis/context.js +7 -7
- package/dist/phases/intelligence-analysis/index.js +3 -3
- package/dist/phases/{feature-analysis → issue-analysis}/agent.js +1 -1
- package/dist/phases/issue-analysis/context.d.ts +24 -0
- package/dist/phases/{feature-analysis → issue-analysis}/context.js +30 -30
- package/dist/phases/issue-analysis/index.d.ts +8 -0
- package/dist/phases/{feature-analysis → issue-analysis}/index.js +29 -29
- package/dist/phases/issue-analysis/outcome.d.ts +40 -0
- package/dist/phases/{feature-analysis → issue-analysis}/outcome.js +17 -17
- package/dist/phases/{feature-analysis → issue-analysis}/prompts.d.ts +3 -3
- package/dist/phases/{feature-analysis → issue-analysis}/prompts.js +12 -12
- package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/agent.d.ts +2 -2
- package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/agent.js +1 -1
- package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/index.d.ts +5 -5
- package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/index.js +9 -9
- package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/prompts.d.ts +2 -2
- package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/prompts.js +7 -7
- package/dist/phases/output-contracts.js +37 -37
- package/dist/phases/pr-execution/context.d.ts +3 -3
- package/dist/phases/pr-execution/context.js +14 -14
- package/dist/phases/pr-execution/index.d.ts +2 -2
- package/dist/phases/pr-execution/index.js +22 -22
- package/dist/phases/pr-execution/outcome.d.ts +4 -4
- package/dist/phases/pr-execution/outcome.js +6 -6
- package/dist/phases/pr-execution/prompts.d.ts +4 -4
- package/dist/phases/pr-execution/prompts.js +6 -6
- package/dist/phases/pr-resolve/checklist-learner.js +2 -2
- package/dist/phases/pr-review/index.d.ts +1 -1
- package/dist/phases/pr-review/index.js +1 -1
- package/dist/phases/pr-review/prompts.d.ts +1 -1
- package/dist/phases/pr-review/prompts.js +1 -1
- package/dist/phases/pr-shared/context.d.ts +3 -3
- package/dist/phases/pr-shared/context.js +3 -3
- package/dist/phases/pr-splitting/context.d.ts +3 -3
- package/dist/phases/pr-splitting/context.js +16 -16
- package/dist/phases/pr-splitting/index.d.ts +4 -4
- package/dist/phases/pr-splitting/index.js +29 -29
- package/dist/phases/pr-splitting/outcome.d.ts +3 -3
- package/dist/phases/pr-splitting/outcome.js +7 -7
- package/dist/phases/pr-splitting/prompts.d.ts +3 -3
- package/dist/phases/pr-splitting/prompts.js +11 -11
- package/dist/phases/pull-request/creator.d.ts +4 -4
- package/dist/phases/pull-request/creator.js +25 -25
- package/dist/phases/pull-request/handler.d.ts +3 -3
- package/dist/phases/pull-request/handler.js +16 -16
- package/dist/phases/release-sync/index.js +2 -2
- package/dist/phases/run-sheet/agent.js +1 -2
- package/dist/phases/run-sheet/index.js +3 -3
- package/dist/phases/smoke-test/index.js +2 -2
- package/dist/phases/technical-design/context.d.ts +3 -3
- package/dist/phases/technical-design/context.js +11 -11
- package/dist/phases/technical-design/index.d.ts +2 -2
- package/dist/phases/technical-design/index.js +27 -27
- package/dist/phases/technical-design/outcome.d.ts +4 -4
- package/dist/phases/technical-design/outcome.js +6 -6
- package/dist/phases/technical-design/prompts.d.ts +2 -2
- package/dist/phases/technical-design/prompts.js +10 -10
- package/dist/phases/technical-design-verification/agent.d.ts +3 -3
- package/dist/phases/technical-design-verification/agent.js +4 -4
- package/dist/phases/technical-design-verification/index.d.ts +4 -4
- package/dist/phases/technical-design-verification/index.js +12 -12
- package/dist/phases/technical-design-verification/prompts.d.ts +3 -3
- package/dist/phases/technical-design-verification/prompts.js +6 -6
- package/dist/phases/test-cases-analysis/context.d.ts +5 -5
- package/dist/phases/test-cases-analysis/context.js +18 -18
- package/dist/phases/test-cases-analysis/formatters.js +7 -7
- package/dist/phases/test-cases-analysis/index.d.ts +1 -1
- package/dist/phases/test-cases-analysis/index.js +21 -21
- package/dist/phases/test-cases-analysis/outcome.d.ts +7 -7
- package/dist/phases/test-cases-analysis/outcome.js +13 -13
- package/dist/phases/test-cases-analysis/prompts.d.ts +3 -3
- package/dist/phases/test-cases-analysis/prompts.js +6 -6
- package/dist/phases/user-stories-analysis/context.d.ts +5 -5
- package/dist/phases/user-stories-analysis/context.js +18 -18
- package/dist/phases/user-stories-analysis/formatters.js +7 -7
- package/dist/phases/user-stories-analysis/index.d.ts +1 -1
- package/dist/phases/user-stories-analysis/index.js +21 -21
- package/dist/phases/user-stories-analysis/outcome.d.ts +7 -7
- package/dist/phases/user-stories-analysis/outcome.js +13 -13
- package/dist/phases/user-stories-analysis/prompts.d.ts +3 -3
- package/dist/phases/user-stories-analysis/prompts.js +10 -10
- package/dist/services/audit-logs.d.ts +10 -10
- package/dist/services/audit-logs.js +12 -12
- package/dist/services/branches.d.ts +6 -6
- package/dist/services/branches.js +16 -16
- package/dist/services/checklist.d.ts +3 -3
- package/dist/services/checklist.js +11 -11
- package/dist/services/coaching/coaching-agent.js +2 -2
- package/dist/services/coaching/coaching-loop.d.ts +1 -1
- package/dist/services/coaching/coaching-loop.js +2 -2
- package/dist/services/coaching/phase-coaching.d.ts +2 -2
- package/dist/services/coaching/phase-coaching.js +3 -3
- package/dist/services/coaching/self-rating.js +1 -1
- package/dist/services/feedbacks.d.ts +4 -4
- package/dist/services/feedbacks.js +8 -8
- package/dist/services/phase-hooks/bindings-fetcher.d.ts +4 -4
- package/dist/services/phase-hooks/bindings-fetcher.js +8 -8
- package/dist/services/phase-hooks/hook-executor.js +1 -1
- package/dist/services/phase-hooks/hook-logging.d.ts +2 -2
- package/dist/services/phase-hooks/hook-logging.js +4 -4
- package/dist/services/phase-hooks/hook-runner.d.ts +1 -1
- package/dist/services/phase-hooks/hook-runner.js +4 -4
- package/dist/services/phase-hooks/types.d.ts +3 -3
- package/dist/services/phase-ratings.d.ts +7 -7
- package/dist/services/phase-ratings.js +8 -8
- package/dist/services/pull-requests.d.ts +4 -4
- package/dist/services/pull-requests.js +11 -11
- package/dist/services/skill-resolver.d.ts +1 -1
- package/dist/services/skill-resolver.js +1 -1
- package/dist/skills/phase/app-store-generation/SKILL.md +9 -9
- package/dist/skills/phase/autonomous/SKILL.md +2 -2
- package/dist/skills/phase/branch-planning/SKILL.md +12 -12
- package/dist/skills/phase/bug-fixing/SKILL.md +1 -1
- package/dist/skills/phase/code-implementation/SKILL.md +6 -6
- package/dist/skills/phase/code-implementation-verification/SKILL.md +3 -3
- package/dist/skills/phase/code-testing/SKILL.md +5 -5
- package/dist/skills/phase/functional-testing/SKILL.md +3 -3
- package/dist/skills/phase/growth-analysis/SKILL.md +8 -8
- package/dist/skills/phase/incremental-sync/SKILL.md +6 -6
- package/dist/skills/phase/intelligence-analysis/SKILL.md +7 -7
- package/dist/skills/phase/{feature-analysis → issue-analysis}/SKILL.md +8 -8
- package/dist/skills/phase/pr-execution/SKILL.md +7 -7
- package/dist/skills/phase/pr-splitting/SKILL.md +14 -14
- package/dist/skills/phase/smoke-test/SKILL.md +1 -1
- package/dist/skills/phase/technical-design/SKILL.md +5 -5
- package/dist/skills/phase/test-cases-analysis/SKILL.md +4 -4
- package/dist/skills/phase/user-stories-analysis/SKILL.md +13 -13
- package/dist/system/session-manager.d.ts +3 -3
- package/dist/system/session-manager.js +3 -3
- package/dist/system/sleep-notification.js +2 -2
- package/dist/system/sleep-prevention.js +1 -1
- package/dist/types/index.d.ts +21 -21
- package/dist/types/{features.d.ts → issues.d.ts} +3 -3
- package/dist/types/pipeline.d.ts +4 -4
- package/dist/updater/auto-updater.d.ts +2 -2
- package/dist/updater/auto-updater.js +3 -3
- package/dist/utils/conflict-resolver.d.ts +1 -1
- package/dist/utils/conflict-resolver.js +5 -5
- package/dist/utils/formatters.d.ts +4 -4
- package/dist/utils/formatters.js +29 -29
- package/dist/utils/git-branch-manager-async.d.ts +6 -6
- package/dist/utils/git-branch-manager-async.js +41 -41
- package/dist/utils/git-branch-manager.d.ts +11 -11
- package/dist/utils/git-branch-manager.js +42 -42
- package/dist/utils/image-downloader.d.ts +4 -4
- package/dist/utils/image-downloader.js +17 -17
- package/dist/utils/pipeline-logger.d.ts +1 -1
- package/dist/utils/pipeline-logger.js +5 -5
- package/dist/workspace/workspace-manager.d.ts +17 -17
- package/dist/workspace/workspace-manager.js +21 -21
- package/package.json +1 -1
- package/vitest.config.ts +4 -0
- package/dist/api/__tests__/app-store.test.d.ts +0 -7
- package/dist/api/__tests__/app-store.test.js +0 -60
- package/dist/api/__tests__/intelligence.test.d.ts +0 -11
- package/dist/api/__tests__/intelligence.test.js +0 -315
- package/dist/api/features/__tests__/feature-utils.test.d.ts +0 -4
- package/dist/api/features/__tests__/feature-utils.test.js +0 -370
- package/dist/api/features/__tests__/status-updater.test.d.ts +0 -4
- package/dist/api/features/__tests__/status-updater.test.js +0 -88
- package/dist/api/features/approval-checker.d.ts +0 -20
- package/dist/api/features/feature-utils.d.ts +0 -23
- package/dist/api/features/feature-utils.js +0 -80
- package/dist/api/features/get-feature.d.ts +0 -5
- package/dist/api/features/get-feature.js +0 -21
- package/dist/api/features/index.d.ts +0 -8
- package/dist/api/features/index.js +0 -10
- package/dist/api/features/status-updater.d.ts +0 -41
- package/dist/api/features/update-feature.d.ts +0 -20
- package/dist/commands/build/__tests__/build.test.d.ts +0 -5
- package/dist/commands/build/__tests__/build.test.js +0 -206
- package/dist/commands/build/__tests__/detect-project.test.d.ts +0 -6
- package/dist/commands/build/__tests__/detect-project.test.js +0 -160
- package/dist/commands/build/__tests__/run-build.test.d.ts +0 -6
- package/dist/commands/build/__tests__/run-build.test.js +0 -433
- package/dist/commands/intelligence/__tests__/command.test.d.ts +0 -4
- package/dist/commands/intelligence/__tests__/command.test.js +0 -48
- package/dist/commands/workflow/core/__tests__/feature-filter.test.d.ts +0 -5
- package/dist/commands/workflow/core/__tests__/feature-filter.test.js +0 -316
- package/dist/commands/workflow/core/__tests__/pipeline-evaluator.test.d.ts +0 -4
- package/dist/commands/workflow/core/__tests__/pipeline-evaluator.test.js +0 -397
- package/dist/commands/workflow/core/__tests__/state-manager.test.d.ts +0 -4
- package/dist/commands/workflow/core/__tests__/state-manager.test.js +0 -384
- package/dist/commands/workflow/core/feature-filter.d.ts +0 -16
- package/dist/commands/workflow/core/feature-filter.js +0 -47
- package/dist/commands/workflow/feature-coordinator.d.ts +0 -18
- package/dist/config/__tests__/config.test.d.ts +0 -4
- package/dist/config/__tests__/config.test.js +0 -286
- package/dist/config/__tests__/feature-status.test.d.ts +0 -4
- package/dist/config/__tests__/feature-status.test.js +0 -111
- package/dist/errors/__tests__/index.test.d.ts +0 -4
- package/dist/errors/__tests__/index.test.js +0 -349
- package/dist/phases/app-store-generation/__tests__/agent.test.d.ts +0 -5
- package/dist/phases/app-store-generation/__tests__/agent.test.js +0 -142
- package/dist/phases/app-store-generation/__tests__/context.test.d.ts +0 -4
- package/dist/phases/app-store-generation/__tests__/context.test.js +0 -284
- package/dist/phases/app-store-generation/__tests__/prompts.test.d.ts +0 -4
- package/dist/phases/app-store-generation/__tests__/prompts.test.js +0 -122
- package/dist/phases/app-store-generation/__tests__/screenshot-composer.test.d.ts +0 -5
- package/dist/phases/app-store-generation/__tests__/screenshot-composer.test.js +0 -826
- package/dist/phases/code-review/__tests__/diff-utils.test.js +0 -101
- package/dist/phases/feature-analysis/context.d.ts +0 -24
- package/dist/phases/feature-analysis/index.d.ts +0 -8
- package/dist/phases/feature-analysis/outcome.d.ts +0 -40
- package/dist/phases/intelligence-analysis/__tests__/context.test.d.ts +0 -4
- package/dist/phases/intelligence-analysis/__tests__/context.test.js +0 -192
- package/dist/phases/intelligence-analysis/__tests__/matching.test.d.ts +0 -13
- package/dist/phases/intelligence-analysis/__tests__/matching.test.js +0 -154
- package/dist/phases/intelligence-analysis/__tests__/orchestration.test.d.ts +0 -5
- package/dist/phases/intelligence-analysis/__tests__/orchestration.test.js +0 -378
- package/dist/phases/intelligence-analysis/__tests__/prompts.test.d.ts +0 -4
- package/dist/phases/intelligence-analysis/__tests__/prompts.test.js +0 -33
- package/dist/phases/pr-execution/__tests__/file-assigner.test.d.ts +0 -1
- package/dist/phases/pr-execution/__tests__/file-assigner.test.js +0 -303
- package/dist/phases/pr-resolve/__tests__/checklist-learner.test.d.ts +0 -1
- package/dist/phases/pr-resolve/__tests__/checklist-learner.test.js +0 -157
- package/dist/phases/pr-resolve/__tests__/prompts.test.d.ts +0 -1
- package/dist/phases/pr-resolve/__tests__/prompts.test.js +0 -116
- package/dist/phases/pr-resolve/__tests__/resolve-mapping.test.d.ts +0 -1
- package/dist/phases/pr-resolve/__tests__/resolve-mapping.test.js +0 -138
- package/dist/phases/pr-resolve/__tests__/types.test.d.ts +0 -1
- package/dist/phases/pr-resolve/__tests__/types.test.js +0 -43
- package/dist/phases/pr-resolve/__tests__/workspace.test.d.ts +0 -1
- package/dist/phases/pr-resolve/__tests__/workspace.test.js +0 -111
- package/dist/phases/pr-review/__tests__/prompts.test.d.ts +0 -1
- package/dist/phases/pr-review/__tests__/prompts.test.js +0 -49
- package/dist/phases/pr-review/__tests__/review-comments.test.d.ts +0 -1
- package/dist/phases/pr-review/__tests__/review-comments.test.js +0 -110
- package/dist/phases/pr-shared/__tests__/agent-utils.test.d.ts +0 -1
- package/dist/phases/pr-shared/__tests__/agent-utils.test.js +0 -91
- package/dist/phases/pr-shared/__tests__/context.test.d.ts +0 -1
- package/dist/phases/pr-shared/__tests__/context.test.js +0 -94
- package/dist/phases/pr-splitting/__tests__/import-dep-validator.test.d.ts +0 -1
- package/dist/phases/pr-splitting/__tests__/import-dep-validator.test.js +0 -331
- package/dist/phases/run-sheet/render.d.ts +0 -60
- package/dist/phases/run-sheet/render.js +0 -297
- package/dist/phases/smoke-test/__tests__/agent.test.d.ts +0 -4
- package/dist/phases/smoke-test/__tests__/agent.test.js +0 -84
- package/dist/phases/smoke-test/__tests__/github.test.d.ts +0 -9
- package/dist/phases/smoke-test/__tests__/github.test.js +0 -120
- package/dist/phases/smoke-test/__tests__/snapshot.test.d.ts +0 -8
- package/dist/phases/smoke-test/__tests__/snapshot.test.js +0 -93
- package/dist/phases/smoke-test/github.d.ts +0 -54
- package/dist/phases/smoke-test/github.js +0 -101
- package/dist/phases/smoke-test/snapshot.d.ts +0 -27
- package/dist/phases/smoke-test/snapshot.js +0 -157
- package/dist/services/coaching/__tests__/coaching-agent.test.d.ts +0 -1
- package/dist/services/coaching/__tests__/coaching-agent.test.js +0 -74
- package/dist/services/coaching/__tests__/coaching-loop.test.d.ts +0 -1
- package/dist/services/coaching/__tests__/coaching-loop.test.js +0 -59
- package/dist/services/coaching/__tests__/self-rating.test.d.ts +0 -1
- package/dist/services/coaching/__tests__/self-rating.test.js +0 -188
- package/dist/services/lifecycle-agent/__tests__/phase-criteria.test.d.ts +0 -4
- package/dist/services/lifecycle-agent/__tests__/phase-criteria.test.js +0 -133
- package/dist/services/lifecycle-agent/__tests__/transition-rules.test.d.ts +0 -4
- package/dist/services/lifecycle-agent/__tests__/transition-rules.test.js +0 -336
- package/dist/services/lifecycle-agent/index.d.ts +0 -24
- package/dist/services/lifecycle-agent/index.js +0 -25
- package/dist/services/lifecycle-agent/phase-criteria.d.ts +0 -57
- package/dist/services/lifecycle-agent/phase-criteria.js +0 -335
- package/dist/services/lifecycle-agent/transition-rules.d.ts +0 -60
- package/dist/services/lifecycle-agent/transition-rules.js +0 -184
- package/dist/services/lifecycle-agent/types.d.ts +0 -190
- package/dist/services/lifecycle-agent/types.js +0 -12
- package/dist/services/phase-hooks/__tests__/bindings-fetcher.test.d.ts +0 -1
- package/dist/services/phase-hooks/__tests__/bindings-fetcher.test.js +0 -122
- package/dist/services/phase-hooks/__tests__/hook-executor.test.d.ts +0 -1
- package/dist/services/phase-hooks/__tests__/hook-executor.test.js +0 -321
- package/dist/services/phase-hooks/__tests__/hook-runner.test.d.ts +0 -1
- package/dist/services/phase-hooks/__tests__/hook-runner.test.js +0 -261
- package/dist/services/phase-hooks/__tests__/plugin-loader.test.d.ts +0 -1
- package/dist/services/phase-hooks/__tests__/plugin-loader.test.js +0 -158
- package/dist/services/video/__tests__/video-pipeline.test.d.ts +0 -6
- package/dist/services/video/__tests__/video-pipeline.test.js +0 -249
- package/dist/types/features.js +0 -1
- package/dist/workspace/__tests__/workspace-manager.test.d.ts +0 -7
- package/dist/workspace/__tests__/workspace-manager.test.js +0 -52
- /package/dist/api/{features → issues}/batch-operations.d.ts +0 -0
- /package/dist/api/{features → issues}/batch-operations.js +0 -0
- /package/dist/phases/{feature-analysis → issue-analysis}/agent.d.ts +0 -0
- /package/dist/skills/phase/{feature-analysis-verification → issue-analysis-verification}/SKILL.md +0 -0
- /package/dist/{phases/code-review/__tests__/diff-utils.test.d.ts → types/issues.js} +0 -0
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { logIssuePhaseEvent } from '../../services/audit-logs.js';
|
|
2
2
|
import { extractChecklistItems, runPhaseCoaching, } from '../../services/coaching/index.js';
|
|
3
3
|
import { logError, logInfo, logWarning } from '../../utils/logger.js';
|
|
4
|
-
import { performVerificationCycle } from '../
|
|
4
|
+
import { performVerificationCycle } from '../issue-analysis-verification/index.js';
|
|
5
5
|
import { executeAnalysisQuery, parseAnalysisResult } from './agent.js';
|
|
6
6
|
import { prepareAnalysisContext } from './context.js';
|
|
7
7
|
import { buildAnalysisResult, deleteArtifacts, deleteSpecificArtifacts, getAllDraftArtifactIds, resetReadyArtifactsToDraft, saveAnalysisArtifactsAsDraft, updateArtifactsToReady, } from './outcome.js';
|
|
8
|
-
import {
|
|
8
|
+
import { createIssueAnalysisSystemPrompt } from './prompts.js';
|
|
9
9
|
// eslint-disable-next-line complexity
|
|
10
|
-
export const
|
|
11
|
-
const {
|
|
10
|
+
export const analyseIssue = async (options, config, checklistContext) => {
|
|
11
|
+
const { issueId, verbose } = options;
|
|
12
12
|
if (verbose) {
|
|
13
|
-
logInfo(`Starting
|
|
13
|
+
logInfo(`Starting issue analysis for issue ID: ${issueId}`);
|
|
14
14
|
}
|
|
15
15
|
try {
|
|
16
16
|
// Reset pending_approval artifacts to draft so AI can manage them on re-run
|
|
17
|
-
const resetResult = await resetReadyArtifactsToDraft(
|
|
17
|
+
const resetResult = await resetReadyArtifactsToDraft(issueId, verbose);
|
|
18
18
|
if (verbose &&
|
|
19
19
|
(resetResult.resetUserStories > 0 || resetResult.resetTestCases > 0)) {
|
|
20
20
|
logInfo(`✅ Reset ${resetResult.resetUserStories} user stories and ${resetResult.resetTestCases} test cases to draft for re-analysis`);
|
|
21
21
|
}
|
|
22
|
-
const context = await prepareAnalysisContext(
|
|
23
|
-
const systemPrompt = await
|
|
22
|
+
const context = await prepareAnalysisContext(issueId, checklistContext, verbose);
|
|
23
|
+
const systemPrompt = await createIssueAnalysisSystemPrompt();
|
|
24
24
|
const initialAnalysisPrompt = context.analysisPrompt;
|
|
25
25
|
const maxIterations = options.maxVerificationIterations || 10;
|
|
26
26
|
let currentIteration = 0;
|
|
@@ -41,10 +41,10 @@ export const analyseFeature = async (options, config, checklistContext) => {
|
|
|
41
41
|
}
|
|
42
42
|
// Log iteration start (for iterations after the first)
|
|
43
43
|
if (currentIteration > 1) {
|
|
44
|
-
await
|
|
45
|
-
|
|
44
|
+
await logIssuePhaseEvent({
|
|
45
|
+
issueId,
|
|
46
46
|
eventType: 'phase_started',
|
|
47
|
-
phase: '
|
|
47
|
+
phase: 'issue_analysis',
|
|
48
48
|
result: 'info',
|
|
49
49
|
metadata: {
|
|
50
50
|
iteration: currentIteration,
|
|
@@ -59,10 +59,10 @@ export const analyseFeature = async (options, config, checklistContext) => {
|
|
|
59
59
|
if (!structuredAnalysisResult) {
|
|
60
60
|
break;
|
|
61
61
|
}
|
|
62
|
-
await
|
|
63
|
-
|
|
62
|
+
await logIssuePhaseEvent({
|
|
63
|
+
issueId,
|
|
64
64
|
eventType: 'phase_completed',
|
|
65
|
-
phase: '
|
|
65
|
+
phase: 'issue_analysis',
|
|
66
66
|
result: 'success',
|
|
67
67
|
metadata: {
|
|
68
68
|
iteration: currentIteration,
|
|
@@ -81,16 +81,16 @@ export const analyseFeature = async (options, config, checklistContext) => {
|
|
|
81
81
|
if (verbose) {
|
|
82
82
|
logInfo('🗑️ Processing deletions identified by AI during analysis...');
|
|
83
83
|
}
|
|
84
|
-
await deleteSpecificArtifacts(
|
|
84
|
+
await deleteSpecificArtifacts(issueId, structuredAnalysisResult.deleted_user_story_ids || [], structuredAnalysisResult.deleted_test_case_ids || [], structuredAnalysisResult.deletion_reasons || {}, verbose);
|
|
85
85
|
}
|
|
86
86
|
// Save artifacts as draft and get their IDs
|
|
87
|
-
const { userStoryIds, testCaseIds } = await saveAnalysisArtifactsAsDraft(
|
|
87
|
+
const { userStoryIds, testCaseIds } = await saveAnalysisArtifactsAsDraft(issueId, structuredAnalysisResult.created_user_stories || [], structuredAnalysisResult.created_test_cases || [], verbose);
|
|
88
88
|
currentDraftUserStoryIds = userStoryIds;
|
|
89
89
|
currentDraftTestCaseIds = testCaseIds;
|
|
90
90
|
// Coaching loop between execute and verify
|
|
91
91
|
await runPhaseCoaching({
|
|
92
|
-
|
|
93
|
-
phase: '
|
|
92
|
+
issueId,
|
|
93
|
+
phase: 'issue_analysis',
|
|
94
94
|
phaseResult: structuredAnalysisResult,
|
|
95
95
|
checklistItems: extractChecklistItems(checklistContext),
|
|
96
96
|
onImproved: async (_sessionId, responseText) => {
|
|
@@ -98,13 +98,13 @@ export const analyseFeature = async (options, config, checklistContext) => {
|
|
|
98
98
|
if (parsed.analysis) {
|
|
99
99
|
// Delete old drafts and save improved ones
|
|
100
100
|
await deleteArtifacts(currentDraftUserStoryIds, currentDraftTestCaseIds, verbose);
|
|
101
|
-
const { userStoryIds: newUserStoryIds, testCaseIds: newTestCaseIds, } = await saveAnalysisArtifactsAsDraft(
|
|
101
|
+
const { userStoryIds: newUserStoryIds, testCaseIds: newTestCaseIds, } = await saveAnalysisArtifactsAsDraft(issueId, parsed.analysis.created_user_stories || [], parsed.analysis.created_test_cases || [], verbose);
|
|
102
102
|
currentDraftUserStoryIds = newUserStoryIds;
|
|
103
103
|
currentDraftTestCaseIds = newTestCaseIds;
|
|
104
104
|
structuredAnalysisResult = parsed.analysis;
|
|
105
105
|
}
|
|
106
106
|
else {
|
|
107
|
-
logWarning(`Coaching improvement response could not be parsed for
|
|
107
|
+
logWarning(`Coaching improvement response could not be parsed for issue-analysis. Keeping previous drafts. ${parsed.error || ''}`);
|
|
108
108
|
}
|
|
109
109
|
},
|
|
110
110
|
verbose,
|
|
@@ -113,11 +113,11 @@ export const analyseFeature = async (options, config, checklistContext) => {
|
|
|
113
113
|
const verificationCycle = await performVerificationCycle({
|
|
114
114
|
structuredAnalysisResult,
|
|
115
115
|
checklistContext: checklistContext || null,
|
|
116
|
-
context: context.
|
|
116
|
+
context: context.issueContext,
|
|
117
117
|
config,
|
|
118
118
|
currentIteration,
|
|
119
119
|
maxIterations,
|
|
120
|
-
|
|
120
|
+
issueId,
|
|
121
121
|
verbose,
|
|
122
122
|
});
|
|
123
123
|
({ verificationResult } = verificationCycle);
|
|
@@ -126,7 +126,7 @@ export const analyseFeature = async (options, config, checklistContext) => {
|
|
|
126
126
|
if (verbose) {
|
|
127
127
|
logInfo('✅ Verification passed! Updating all draft artifacts to pending_approval status...');
|
|
128
128
|
}
|
|
129
|
-
const allDrafts = await getAllDraftArtifactIds(
|
|
129
|
+
const allDrafts = await getAllDraftArtifactIds(issueId, verbose);
|
|
130
130
|
await updateArtifactsToReady(allDrafts.userStoryIds, allDrafts.testCaseIds, verbose);
|
|
131
131
|
break;
|
|
132
132
|
}
|
|
@@ -157,7 +157,7 @@ export const analyseFeature = async (options, config, checklistContext) => {
|
|
|
157
157
|
if (!checklistContext ||
|
|
158
158
|
checklistContext.checklists.length === 0 ||
|
|
159
159
|
!verificationResult) {
|
|
160
|
-
const allDrafts = await getAllDraftArtifactIds(
|
|
160
|
+
const allDrafts = await getAllDraftArtifactIds(issueId, verbose);
|
|
161
161
|
if (allDrafts.userStoryIds.length > 0 ||
|
|
162
162
|
allDrafts.testCaseIds.length > 0) {
|
|
163
163
|
if (verbose) {
|
|
@@ -180,14 +180,14 @@ export const analyseFeature = async (options, config, checklistContext) => {
|
|
|
180
180
|
// Return success result
|
|
181
181
|
// Note: Artifacts have already been saved and updated to 'pending_approval' status (if verification passed)
|
|
182
182
|
// or remain as draft (if verification failed)
|
|
183
|
-
return buildAnalysisResult(
|
|
183
|
+
return buildAnalysisResult(issueId, context.issueContext, structuredAnalysisResult, currentIteration);
|
|
184
184
|
}
|
|
185
185
|
catch (error) {
|
|
186
|
-
logError(`
|
|
186
|
+
logError(`Issue analysis failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
187
187
|
return {
|
|
188
|
-
|
|
188
|
+
issueId,
|
|
189
189
|
productInfo: null,
|
|
190
|
-
|
|
190
|
+
issueInfo: null,
|
|
191
191
|
existingUserStories: [],
|
|
192
192
|
existingTestCases: [],
|
|
193
193
|
createdUserStories: [],
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type IssueAnalysisResult } from '../../types/index.js';
|
|
2
|
+
import { type IssueAnalysisContext } from './context.js';
|
|
3
|
+
/**
|
|
4
|
+
* Reset ready user stories and test cases to draft for re-analysis
|
|
5
|
+
*/
|
|
6
|
+
export declare function resetReadyArtifactsToDraft(issueId: string, verbose?: boolean): Promise<{
|
|
7
|
+
resetUserStories: number;
|
|
8
|
+
resetTestCases: number;
|
|
9
|
+
}>;
|
|
10
|
+
/**
|
|
11
|
+
* Get all draft artifact IDs for an issue
|
|
12
|
+
*/
|
|
13
|
+
export declare function getAllDraftArtifactIds(issueId: string, verbose?: boolean): Promise<{
|
|
14
|
+
userStoryIds: string[];
|
|
15
|
+
testCaseIds: string[];
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Delete artifacts after verification failure
|
|
19
|
+
*/
|
|
20
|
+
export declare function deleteArtifacts(userStoryIds: string[], testCaseIds: string[], verbose?: boolean): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Delete specific artifacts identified by AI during analysis
|
|
23
|
+
* Only deletes artifacts with status 'draft'
|
|
24
|
+
*/
|
|
25
|
+
export declare function deleteSpecificArtifacts(issueId: string, deletedUserStoryIds: string[], deletedTestCaseIds: string[], deletionReasons: Record<string, string>, verbose?: boolean): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Update artifacts to pending_approval status after successful verification
|
|
28
|
+
*/
|
|
29
|
+
export declare function updateArtifactsToReady(userStoryIds: string[], testCaseIds: string[], verbose?: boolean): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Save analysis artifacts as draft and return their IDs
|
|
32
|
+
*/
|
|
33
|
+
export declare function saveAnalysisArtifactsAsDraft(issueId: string, createdUserStories: Record<string, unknown>[], createdTestCases: Record<string, unknown>[], verbose?: boolean): Promise<{
|
|
34
|
+
userStoryIds: string[];
|
|
35
|
+
testCaseIds: string[];
|
|
36
|
+
}>;
|
|
37
|
+
/**
|
|
38
|
+
* Build the final analysis result object
|
|
39
|
+
*/
|
|
40
|
+
export declare function buildAnalysisResult(issueId: string, context: IssueAnalysisContext, structuredAnalysisResult: any, currentIteration: number): IssueAnalysisResult;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import { batchDeleteTestCases, batchDeleteUserStories, batchUpdateTestCaseStatus, batchUpdateUserStoryStatus, getTestCases, getUserStories, } from '../../api/
|
|
1
|
+
import { batchDeleteTestCases, batchDeleteUserStories, batchUpdateTestCaseStatus, batchUpdateUserStoryStatus, getTestCases, getUserStories, } from '../../api/issues/index.js';
|
|
2
2
|
import { callMcpEndpoint } from '../../api/mcp-client.js';
|
|
3
3
|
import { logError, logInfo } from '../../utils/logger.js';
|
|
4
4
|
/**
|
|
5
5
|
* Reset ready user stories and test cases to draft for re-analysis
|
|
6
6
|
*/
|
|
7
|
-
export async function resetReadyArtifactsToDraft(
|
|
7
|
+
export async function resetReadyArtifactsToDraft(issueId, verbose) {
|
|
8
8
|
const [stories, testCases] = await Promise.all([
|
|
9
|
-
getUserStories(
|
|
10
|
-
getTestCases(
|
|
9
|
+
getUserStories(issueId, false),
|
|
10
|
+
getTestCases(issueId, false),
|
|
11
11
|
]);
|
|
12
12
|
const readyStoryIds = stories
|
|
13
13
|
.filter((s) => s.status === 'pending_approval')
|
|
@@ -33,12 +33,12 @@ export async function resetReadyArtifactsToDraft(featureId, verbose) {
|
|
|
33
33
|
};
|
|
34
34
|
}
|
|
35
35
|
/**
|
|
36
|
-
* Get all draft artifact IDs for
|
|
36
|
+
* Get all draft artifact IDs for an issue
|
|
37
37
|
*/
|
|
38
|
-
export async function getAllDraftArtifactIds(
|
|
38
|
+
export async function getAllDraftArtifactIds(issueId, verbose) {
|
|
39
39
|
const [stories, testCases] = await Promise.all([
|
|
40
|
-
getUserStories(
|
|
41
|
-
getTestCases(
|
|
40
|
+
getUserStories(issueId, false),
|
|
41
|
+
getTestCases(issueId, false),
|
|
42
42
|
]);
|
|
43
43
|
const userStoryIds = stories
|
|
44
44
|
.filter((s) => s.status === 'draft')
|
|
@@ -79,11 +79,11 @@ function isValidUUID(id) {
|
|
|
79
79
|
* Delete specific artifacts identified by AI during analysis
|
|
80
80
|
* Only deletes artifacts with status 'draft'
|
|
81
81
|
*/
|
|
82
|
-
export async function deleteSpecificArtifacts(
|
|
82
|
+
export async function deleteSpecificArtifacts(issueId, deletedUserStoryIds, deletedTestCaseIds, deletionReasons, verbose) {
|
|
83
83
|
// Fetch current artifacts to verify their status
|
|
84
84
|
const [currentUserStories, currentTestCases] = await Promise.all([
|
|
85
|
-
getUserStories(
|
|
86
|
-
getTestCases(
|
|
85
|
+
getUserStories(issueId, false),
|
|
86
|
+
getTestCases(issueId, false),
|
|
87
87
|
]);
|
|
88
88
|
// Create maps for quick lookup
|
|
89
89
|
const userStoryStatusMap = new Map(currentUserStories.map((story) => [story.id, story.status]));
|
|
@@ -163,7 +163,7 @@ export async function updateArtifactsToReady(userStoryIds, testCaseIds, verbose)
|
|
|
163
163
|
/**
|
|
164
164
|
* Save analysis artifacts as draft and return their IDs
|
|
165
165
|
*/
|
|
166
|
-
export async function saveAnalysisArtifactsAsDraft(
|
|
166
|
+
export async function saveAnalysisArtifactsAsDraft(issueId, createdUserStories, createdTestCases, verbose) {
|
|
167
167
|
const userStoryIds = [];
|
|
168
168
|
const testCaseIds = [];
|
|
169
169
|
// Save user stories as draft
|
|
@@ -173,7 +173,7 @@ export async function saveAnalysisArtifactsAsDraft(featureId, createdUserStories
|
|
|
173
173
|
}
|
|
174
174
|
try {
|
|
175
175
|
const result = (await callMcpEndpoint('user_stories/create', {
|
|
176
|
-
|
|
176
|
+
issue_id: issueId,
|
|
177
177
|
user_stories: createdUserStories.map((story) => ({
|
|
178
178
|
title: story.title,
|
|
179
179
|
description: story.description,
|
|
@@ -198,7 +198,7 @@ export async function saveAnalysisArtifactsAsDraft(featureId, createdUserStories
|
|
|
198
198
|
}
|
|
199
199
|
try {
|
|
200
200
|
const result = (await callMcpEndpoint('test_cases/create', {
|
|
201
|
-
|
|
201
|
+
issue_id: issueId,
|
|
202
202
|
test_cases: createdTestCases.map((testCase) => ({
|
|
203
203
|
name: testCase.name,
|
|
204
204
|
description: testCase.description,
|
|
@@ -222,14 +222,14 @@ export async function saveAnalysisArtifactsAsDraft(featureId, createdUserStories
|
|
|
222
222
|
/**
|
|
223
223
|
* Build the final analysis result object
|
|
224
224
|
*/
|
|
225
|
-
export function buildAnalysisResult(
|
|
225
|
+
export function buildAnalysisResult(issueId, context,
|
|
226
226
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
227
227
|
structuredAnalysisResult, currentIteration) {
|
|
228
228
|
const { created_user_stories, created_test_cases, deleted_user_story_ids, deleted_test_case_ids, deletion_reasons, checklist_results, checklist_item_results, } = structuredAnalysisResult;
|
|
229
229
|
return {
|
|
230
|
-
|
|
230
|
+
issueId,
|
|
231
231
|
productInfo: context.product,
|
|
232
|
-
|
|
232
|
+
issueInfo: context.issue,
|
|
233
233
|
existingUserStories: context.existing_user_stories.map((story) => {
|
|
234
234
|
const approvedOrDraft = story.status === 'approved' ? 'approved' : 'draft';
|
|
235
235
|
return {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type ChecklistVerificationResult } from '../
|
|
2
|
-
export declare const
|
|
3
|
-
export declare const
|
|
1
|
+
import { type ChecklistVerificationResult } from '../issue-analysis-verification/agent.js';
|
|
2
|
+
export declare const createIssueAnalysisSystemPrompt: (projectDir?: string) => Promise<string>;
|
|
3
|
+
export declare const createIssueAnalysisPromptWithContext: (issueId: string, contextInfo: string) => string;
|
|
4
4
|
/**
|
|
5
5
|
* Create a prompt for the analysis agent to improve based on verification feedback
|
|
6
6
|
*/
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { resolveSkill } from '../../services/skill-resolver.js';
|
|
2
2
|
import { OUTPUT_CONTRACTS } from '../output-contracts.js';
|
|
3
|
-
export const
|
|
4
|
-
const skill = await resolveSkill('phase/
|
|
3
|
+
export const createIssueAnalysisSystemPrompt = async (projectDir) => {
|
|
4
|
+
const skill = await resolveSkill('phase/issue-analysis', { projectDir });
|
|
5
5
|
if (!skill) {
|
|
6
|
-
throw new Error('Failed to load skill: phase/
|
|
6
|
+
throw new Error('Failed to load skill: phase/issue-analysis');
|
|
7
7
|
}
|
|
8
|
-
return `${skill.prompt}\n\n${OUTPUT_CONTRACTS['
|
|
8
|
+
return `${skill.prompt}\n\n${OUTPUT_CONTRACTS['issue-analysis']}`;
|
|
9
9
|
};
|
|
10
|
-
export const
|
|
11
|
-
return `Please conduct comprehensive business analysis for
|
|
10
|
+
export const createIssueAnalysisPromptWithContext = (issueId, contextInfo) => {
|
|
11
|
+
return `Please conduct comprehensive business analysis for issue ID: ${issueId}
|
|
12
12
|
|
|
13
13
|
${contextInfo}
|
|
14
14
|
|
|
@@ -16,19 +16,19 @@ ${contextInfo}
|
|
|
16
16
|
|
|
17
17
|
Follow this systematic approach:
|
|
18
18
|
|
|
19
|
-
1. **Review
|
|
19
|
+
1. **Review Issue Context**: Analyze the issue information, product context, and technical design above
|
|
20
20
|
|
|
21
21
|
2. **Review Existing Items**: Study the existing user stories and test cases to understand:
|
|
22
22
|
- What scenarios are already covered
|
|
23
23
|
- What user perspectives are already addressed
|
|
24
24
|
- Where gaps might exist
|
|
25
25
|
|
|
26
|
-
3. **Business Analysis**: Think about the
|
|
26
|
+
3. **Business Analysis**: Think about the issue from a business perspective:
|
|
27
27
|
- Who are the different types of users?
|
|
28
|
-
- What problems does this
|
|
28
|
+
- What problems does this issue solve?
|
|
29
29
|
- What are the different use cases and user workflows?
|
|
30
30
|
- What edge cases and error scenarios might occur?
|
|
31
|
-
- How does this integrate with other
|
|
31
|
+
- How does this integrate with other issues?
|
|
32
32
|
|
|
33
33
|
4. **Create New User Stories**: Generate user stories that ADD VALUE by covering:
|
|
34
34
|
- Different user types or personas not yet covered
|
|
@@ -52,7 +52,7 @@ Follow this systematic approach:
|
|
|
52
52
|
- Avoid duplicating existing user stories and test cases
|
|
53
53
|
- Consider different user types (admin, regular user, guest, etc.)
|
|
54
54
|
- Think about accessibility, security, and performance implications
|
|
55
|
-
- The
|
|
55
|
+
- The issue should already have some design - you're analyzing business requirements
|
|
56
56
|
- Be thorough but focus on practical, testable scenarios
|
|
57
57
|
|
|
58
58
|
Begin your systematic analysis based on the above context.`;
|
|
@@ -152,7 +152,7 @@ You MUST return ONLY the JSON object below. Do NOT include any explanatory text,
|
|
|
152
152
|
\`\`\`json
|
|
153
153
|
{
|
|
154
154
|
"analysis": {
|
|
155
|
-
"
|
|
155
|
+
"issue_id": "...",
|
|
156
156
|
"status": "success",
|
|
157
157
|
"summary": "Improved analysis based on verification feedback",
|
|
158
158
|
"created_user_stories": [
|
package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/agent.d.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ChecklistPhaseContext } from '../../services/checklist.js';
|
|
2
2
|
import { type EdsgerConfig } from '../../types/index.js';
|
|
3
|
-
import { type
|
|
3
|
+
import { type IssueAnalysisContext } from '../issue-analysis/context.js';
|
|
4
4
|
export interface ChecklistItemVerificationResult {
|
|
5
5
|
checklist_item_id: string;
|
|
6
6
|
is_satisfied: boolean;
|
|
@@ -21,7 +21,7 @@ export interface ChecklistVerificationResult {
|
|
|
21
21
|
}
|
|
22
22
|
export interface VerifyChecklistOptions {
|
|
23
23
|
checklistContext: ChecklistPhaseContext;
|
|
24
|
-
analysisContext:
|
|
24
|
+
analysisContext: IssueAnalysisContext;
|
|
25
25
|
createdUserStories: any[];
|
|
26
26
|
createdTestCases: any[];
|
|
27
27
|
verbose?: boolean;
|
package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/index.d.ts
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type ChecklistPhaseContext } from '../../services/checklist.js';
|
|
2
2
|
import { type EdsgerConfig } from '../../types/index.js';
|
|
3
|
-
import { type
|
|
3
|
+
import { type IssueAnalysisContext } from '../issue-analysis/context.js';
|
|
4
4
|
import { type ChecklistVerificationResult } from './agent.js';
|
|
5
5
|
interface VerificationCycleResult {
|
|
6
6
|
passed: boolean;
|
|
@@ -11,15 +11,15 @@ interface VerificationCycleResult {
|
|
|
11
11
|
* Perform verification and determine if iteration should continue
|
|
12
12
|
* This function only verifies - it does NOT manage artifacts (save/delete/update)
|
|
13
13
|
*/
|
|
14
|
-
export interface
|
|
14
|
+
export interface IssueAnalysisVerificationOptions {
|
|
15
15
|
structuredAnalysisResult: Record<string, unknown>;
|
|
16
16
|
checklistContext: ChecklistPhaseContext | null;
|
|
17
|
-
context:
|
|
17
|
+
context: IssueAnalysisContext;
|
|
18
18
|
config: EdsgerConfig;
|
|
19
19
|
currentIteration: number;
|
|
20
20
|
maxIterations: number;
|
|
21
|
-
|
|
21
|
+
issueId: string;
|
|
22
22
|
verbose?: boolean;
|
|
23
23
|
}
|
|
24
|
-
export declare function performVerificationCycle(opts:
|
|
24
|
+
export declare function performVerificationCycle(opts: IssueAnalysisVerificationOptions): Promise<VerificationCycleResult>;
|
|
25
25
|
export {};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { logIssueVerificationEvent } from '../../services/audit-logs.js';
|
|
2
2
|
import { logError, logInfo } from '../../utils/logger.js';
|
|
3
|
-
import { createImprovementPrompt } from '../
|
|
3
|
+
import { createImprovementPrompt } from '../issue-analysis/prompts.js';
|
|
4
4
|
import { verifyChecklistCompliance, } from './agent.js';
|
|
5
5
|
export async function performVerificationCycle(opts) {
|
|
6
|
-
const { structuredAnalysisResult, checklistContext, context, config, currentIteration, maxIterations,
|
|
6
|
+
const { structuredAnalysisResult, checklistContext, context, config, currentIteration, maxIterations, issueId, verbose, } = opts;
|
|
7
7
|
// No verification needed if no checklist context
|
|
8
8
|
if (!checklistContext || checklistContext.checklists.length === 0) {
|
|
9
9
|
return { passed: true, verificationResult: null };
|
|
@@ -28,9 +28,9 @@ export async function performVerificationCycle(opts) {
|
|
|
28
28
|
logInfo(`✅ Checklist verification passed: ${verificationResult.confirmed_count} confirmed, ${verificationResult.uncertain_count} uncertain`);
|
|
29
29
|
}
|
|
30
30
|
// Log verification success
|
|
31
|
-
await
|
|
32
|
-
|
|
33
|
-
phase: '
|
|
31
|
+
await logIssueVerificationEvent({
|
|
32
|
+
issueId,
|
|
33
|
+
phase: 'issue_analysis',
|
|
34
34
|
iteration: currentIteration,
|
|
35
35
|
result: 'success',
|
|
36
36
|
verificationData: {
|
|
@@ -45,9 +45,9 @@ export async function performVerificationCycle(opts) {
|
|
|
45
45
|
// Verification failed
|
|
46
46
|
logError(`❌ Iteration ${currentIteration}: Checklist verification FAILED - ${verificationResult.rejected_count} items rejected, ${verificationResult.uncertain_count} uncertain`);
|
|
47
47
|
// Log verification failure with improvement suggestions
|
|
48
|
-
await
|
|
49
|
-
|
|
50
|
-
phase: '
|
|
48
|
+
await logIssueVerificationEvent({
|
|
49
|
+
issueId,
|
|
50
|
+
phase: 'issue_analysis',
|
|
51
51
|
iteration: currentIteration,
|
|
52
52
|
result: 'error',
|
|
53
53
|
verificationData: {
|
package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/prompts.d.ts
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { type ChecklistPhaseContext } from '../../services/checklist.js';
|
|
2
|
-
import { type
|
|
2
|
+
import { type IssueAnalysisContext } from '../issue-analysis/context.js';
|
|
3
3
|
export declare const createChecklistVerificationSystemPrompt: (projectDir?: string) => Promise<string>;
|
|
4
4
|
export interface ChecklistVerificationPromptOptions {
|
|
5
5
|
checklistContext: ChecklistPhaseContext;
|
|
6
|
-
analysisContext:
|
|
6
|
+
analysisContext: IssueAnalysisContext;
|
|
7
7
|
createdUserStories: any[];
|
|
8
8
|
createdTestCases: any[];
|
|
9
9
|
}
|
package/dist/phases/{feature-analysis-verification → issue-analysis-verification}/prompts.js
RENAMED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { resolveSkill } from '../../services/skill-resolver.js';
|
|
2
2
|
import { OUTPUT_CONTRACTS } from '../output-contracts.js';
|
|
3
3
|
export const createChecklistVerificationSystemPrompt = async (projectDir) => {
|
|
4
|
-
const skill = await resolveSkill('phase/
|
|
4
|
+
const skill = await resolveSkill('phase/issue-analysis-verification', {
|
|
5
5
|
projectDir,
|
|
6
6
|
});
|
|
7
7
|
if (!skill) {
|
|
8
|
-
throw new Error('Failed to load skill: phase/
|
|
8
|
+
throw new Error('Failed to load skill: phase/issue-analysis-verification');
|
|
9
9
|
}
|
|
10
|
-
return `${skill.prompt}\n\n${OUTPUT_CONTRACTS['
|
|
10
|
+
return `${skill.prompt}\n\n${OUTPUT_CONTRACTS['issue-analysis-verification']}`;
|
|
11
11
|
};
|
|
12
12
|
export const createChecklistVerificationPrompt = (options) => {
|
|
13
13
|
const { checklistContext, analysisContext, createdUserStories, createdTestCases, } = options;
|
|
@@ -43,11 +43,11 @@ export const createChecklistVerificationPrompt = (options) => {
|
|
|
43
43
|
|
|
44
44
|
You are verifying that generated artifacts (user stories and test cases) satisfy checklist requirements.
|
|
45
45
|
|
|
46
|
-
##
|
|
46
|
+
## Issue Context
|
|
47
47
|
|
|
48
|
-
**
|
|
49
|
-
**
|
|
50
|
-
**Description**: ${analysisContext.
|
|
48
|
+
**Issue**: ${analysisContext.issue.name}
|
|
49
|
+
**Issue ID**: ${analysisContext.issue.id}
|
|
50
|
+
**Description**: ${analysisContext.issue.description || 'No description'}
|
|
51
51
|
**Product**: ${analysisContext.product.name}
|
|
52
52
|
|
|
53
53
|
## Generated Artifacts
|