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
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
* ensuring json-extractor.ts and llm-responses.ts can always parse the output.
|
|
7
7
|
*/
|
|
8
8
|
export const OUTPUT_CONTRACTS = {
|
|
9
|
-
'
|
|
9
|
+
'issue-analysis': `
|
|
10
10
|
**CRITICAL - Result Format**:
|
|
11
11
|
You MUST return ONLY a JSON object with your analysis results. Do NOT include any explanatory text before or after the JSON. Return ONLY the JSON in this EXACT format:
|
|
12
12
|
|
|
13
13
|
\`\`\`json
|
|
14
14
|
{
|
|
15
15
|
"analysis": {
|
|
16
|
-
"
|
|
16
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
17
17
|
"status": "success",
|
|
18
18
|
"summary": "Brief summary of analysis and what was accomplished",
|
|
19
19
|
"created_user_stories": [
|
|
@@ -60,7 +60,7 @@ You MUST return ONLY a JSON object with your analysis results. Do NOT include an
|
|
|
60
60
|
"notes": "Optional notes about this specific checklist item"
|
|
61
61
|
}
|
|
62
62
|
],
|
|
63
|
-
"recommendations": "Additional recommendations for the
|
|
63
|
+
"recommendations": "Additional recommendations for the issue"
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
\`\`\`
|
|
@@ -87,7 +87,7 @@ deleted_test_case_ids: ["Duplicate test case", "Similar test"] // WRONG - these
|
|
|
87
87
|
- The "differentiation" field is MANDATORY for every new user story and test case
|
|
88
88
|
- You MUST explain WHY this item is NOT a duplicate of existing items
|
|
89
89
|
- Reference specific existing item titles/names when explaining the difference
|
|
90
|
-
- If there are no existing items, write: "First item for this
|
|
90
|
+
- If there are no existing items, write: "First item for this issue - no existing items to compare"
|
|
91
91
|
- If you cannot clearly articulate the difference, DO NOT create the item - it is likely a duplicate
|
|
92
92
|
- Generic explanations like "covers different scenario" are NOT acceptable - be specific
|
|
93
93
|
`,
|
|
@@ -98,7 +98,7 @@ You MUST return ONLY a JSON object. Do NOT include any explanatory text before o
|
|
|
98
98
|
\`\`\`json
|
|
99
99
|
{
|
|
100
100
|
"analysis": {
|
|
101
|
-
"
|
|
101
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
102
102
|
"status": "success",
|
|
103
103
|
"summary": "Brief summary of the user stories created and their coverage",
|
|
104
104
|
"id_prefix": "XX",
|
|
@@ -139,7 +139,7 @@ MANDATORY: If checklists are provided, you MUST include checklist_item_results f
|
|
|
139
139
|
**Differentiation Requirement**:
|
|
140
140
|
- The "differentiation" field is MANDATORY for every new user story
|
|
141
141
|
- You MUST explain WHY this item is NOT a duplicate of existing items
|
|
142
|
-
- If there are no existing items, write: "First item for this
|
|
142
|
+
- If there are no existing items, write: "First item for this issue"
|
|
143
143
|
- Generic explanations are NOT acceptable - be specific
|
|
144
144
|
`,
|
|
145
145
|
'test-cases-analysis': `
|
|
@@ -149,7 +149,7 @@ You MUST return ONLY a JSON object. Do NOT include any explanatory text. Return
|
|
|
149
149
|
\`\`\`json
|
|
150
150
|
{
|
|
151
151
|
"analysis": {
|
|
152
|
-
"
|
|
152
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
153
153
|
"status": "success",
|
|
154
154
|
"summary": "Brief summary of test cases created and coverage",
|
|
155
155
|
"created_test_cases": [
|
|
@@ -190,7 +190,7 @@ MANDATORY: If checklists are provided, you MUST include checklist_item_results f
|
|
|
190
190
|
- You MUST explain WHY this test is NOT a duplicate
|
|
191
191
|
- Generic explanations are NOT acceptable - be specific
|
|
192
192
|
`,
|
|
193
|
-
'
|
|
193
|
+
'issue-analysis-verification': `
|
|
194
194
|
**CRITICAL - Output Format**:
|
|
195
195
|
You MUST respond with a JSON object in this EXACT format:
|
|
196
196
|
|
|
@@ -258,7 +258,7 @@ You MUST end your response with a JSON object containing the bug fix results in
|
|
|
258
258
|
\`\`\`json
|
|
259
259
|
{
|
|
260
260
|
"fix_result": {
|
|
261
|
-
"
|
|
261
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
262
262
|
"attempt_number": 1,
|
|
263
263
|
"summary": "Brief description of what was fixed",
|
|
264
264
|
"files_modified": ["file1.ts", "file2.tsx"],
|
|
@@ -283,8 +283,8 @@ You MUST end your response with a JSON object containing the test results in thi
|
|
|
283
283
|
\`\`\`json
|
|
284
284
|
{
|
|
285
285
|
"code_test_result": {
|
|
286
|
-
"
|
|
287
|
-
"branch_name": "dev/
|
|
286
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
287
|
+
"branch_name": "dev/issue-name",
|
|
288
288
|
"commit_hash": "abc123def456",
|
|
289
289
|
"summary": "Brief description of tests written",
|
|
290
290
|
"test_files_created": ["test-file1.test.ts", "test-file2.test.tsx"],
|
|
@@ -305,7 +305,7 @@ You MUST end your response with a JSON object containing the test results in thi
|
|
|
305
305
|
\`\`\`json
|
|
306
306
|
{
|
|
307
307
|
"test_result": {
|
|
308
|
-
"
|
|
308
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
309
309
|
"test_run_id": "unique-test-run-id",
|
|
310
310
|
"status": "passed",
|
|
311
311
|
"summary": "Brief summary of testing results",
|
|
@@ -320,7 +320,7 @@ You MUST end your response with a JSON object containing the test results in thi
|
|
|
320
320
|
"critical_issues_found": [],
|
|
321
321
|
"non_critical_issues_found": [],
|
|
322
322
|
"test_coverage": "Description of what functionality was tested",
|
|
323
|
-
"recommendations": "Any recommendations for improving the
|
|
323
|
+
"recommendations": "Any recommendations for improving the issue"
|
|
324
324
|
}
|
|
325
325
|
}
|
|
326
326
|
\`\`\`
|
|
@@ -420,9 +420,9 @@ Return ONLY a JSON object. No text before or after.
|
|
|
420
420
|
"en-US": {
|
|
421
421
|
"app_name": "Product Name",
|
|
422
422
|
"subtitle": "Short value proposition",
|
|
423
|
-
"promotional_text": "Highlight a current promotion, new
|
|
423
|
+
"promotional_text": "Highlight a current promotion, new issue, or seasonal message (170 chars max)",
|
|
424
424
|
"short_description": "One-liner for Google Play (80 chars max)",
|
|
425
|
-
"description": "Full store description with
|
|
425
|
+
"description": "Full store description with issues and benefits",
|
|
426
426
|
"keywords": "keyword1,keyword2,keyword3",
|
|
427
427
|
"whats_new": "Latest improvements and fixes",
|
|
428
428
|
"primary_category": "Category",
|
|
@@ -431,7 +431,7 @@ Return ONLY a JSON object. No text before or after.
|
|
|
431
431
|
},
|
|
432
432
|
"screenshots": [
|
|
433
433
|
{
|
|
434
|
-
"feature_highlight": "
|
|
434
|
+
"feature_highlight": "Issue being showcased",
|
|
435
435
|
"headline": "Bold 2-5 Word Headline",
|
|
436
436
|
"subheadline": "Supporting detail line (optional)",
|
|
437
437
|
"background_gradient": "linear-gradient(135deg, #667eea 0%, #764ba2 100%)",
|
|
@@ -502,10 +502,10 @@ You MUST return ONLY a JSON object. Do NOT include any text before or after the
|
|
|
502
502
|
- "html_template": complete HTML page with inline styles, realistic data, professional design
|
|
503
503
|
- Use modern CSS (flexbox, grid, gradients) for polished look
|
|
504
504
|
- Include realistic mock data: real-looking names, dates, metrics, charts
|
|
505
|
-
- Each template should visually represent the product's actual UI/
|
|
505
|
+
- Each template should visually represent the product's actual UI/issues
|
|
506
506
|
- "device_frame": choose the most appropriate device for each scene:
|
|
507
507
|
- Use "macbook" for showcasing full desktop workflows or dashboards
|
|
508
|
-
- Use "iphone" for mobile-first
|
|
508
|
+
- Use "iphone" for mobile-first issues or responsive design demos (set viewport_width: 390, viewport_height: 844)
|
|
509
509
|
- Use "browser" (default) for web app screenshots with Chrome-style address bar
|
|
510
510
|
- Mix device types within a video for variety (e.g., show desktop then mobile)
|
|
511
511
|
- "frame_background": customize the gradient/color behind the device (e.g., "linear-gradient(135deg, #667eea 0%, #764ba2 100%)")
|
|
@@ -523,7 +523,7 @@ Return a JSON object inside a \`\`\`json code block with this exact structure:
|
|
|
523
523
|
"report_type": "competitive",
|
|
524
524
|
"title": "Competitive Intelligence Report — [Product Name] — [Date]",
|
|
525
525
|
"summary": "2-3 sentence executive summary of key findings",
|
|
526
|
-
"full_report": "Full markdown report with sections: Executive Summary, Competitor Overview,
|
|
526
|
+
"full_report": "Full markdown report with sections: Executive Summary, Competitor Overview, Issue Comparison, Pricing Comparison, Market Positioning, Threats & Opportunities, Recommendations",
|
|
527
527
|
"key_findings": [
|
|
528
528
|
{
|
|
529
529
|
"finding": "Specific finding with evidence",
|
|
@@ -577,8 +577,8 @@ Return a JSON object inside a \`\`\`json code block with this exact structure:
|
|
|
577
577
|
{
|
|
578
578
|
"competitor_id": "UUID of the competitor (use the Competitor ID from context for confirmed competitors, or null for newly discovered)",
|
|
579
579
|
"competitor_name": "Exact name as provided in context or discovered_competitors",
|
|
580
|
-
"
|
|
581
|
-
"pricing": {"tiers": [{"name": "Free", "price": "$0", "
|
|
580
|
+
"issues": [{"name": "Issue", "description": "What it does", "is_new": false}],
|
|
581
|
+
"pricing": {"tiers": [{"name": "Free", "price": "$0", "issues": ["..."]}], "model": "freemium"},
|
|
582
582
|
"tech_stack": ["React", "Node.js"],
|
|
583
583
|
"app_rating": 4.5,
|
|
584
584
|
"app_review_count": 1234,
|
|
@@ -599,8 +599,8 @@ You MUST end your response with a JSON object containing the implementation resu
|
|
|
599
599
|
\`\`\`json
|
|
600
600
|
{
|
|
601
601
|
"implementation_result": {
|
|
602
|
-
"
|
|
603
|
-
"branch_name": "dev/
|
|
602
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
603
|
+
"branch_name": "dev/issue-name",
|
|
604
604
|
"commit_hash": "abc123def456",
|
|
605
605
|
"summary": "Brief description of what was implemented",
|
|
606
606
|
"files_created": ["new-file1.ts", "new-file2.tsx"],
|
|
@@ -622,7 +622,7 @@ After creating all branches, respond with:
|
|
|
622
622
|
{
|
|
623
623
|
"execution_result": {
|
|
624
624
|
"status": "success",
|
|
625
|
-
"branches_created": ["pr/
|
|
625
|
+
"branches_created": ["pr/ISSUE_ID/1-desc", "pr/ISSUE_ID/2-desc"],
|
|
626
626
|
"summary": "Brief description of what was done"
|
|
627
627
|
}
|
|
628
628
|
}
|
|
@@ -634,8 +634,8 @@ If any branch fails, include the error but continue with remaining branches:
|
|
|
634
634
|
{
|
|
635
635
|
"execution_result": {
|
|
636
636
|
"status": "partial",
|
|
637
|
-
"branches_created": ["pr/
|
|
638
|
-
"branches_failed": [{"branch": "pr/
|
|
637
|
+
"branches_created": ["pr/ISSUE_ID/1-desc"],
|
|
638
|
+
"branches_failed": [{"branch": "pr/ISSUE_ID/2-desc", "error": "..."}],
|
|
639
639
|
"summary": "..."
|
|
640
640
|
}
|
|
641
641
|
}
|
|
@@ -650,7 +650,7 @@ After updating all branches, respond with:
|
|
|
650
650
|
{
|
|
651
651
|
"execution_result": {
|
|
652
652
|
"status": "success",
|
|
653
|
-
"branches_updated": ["pr/
|
|
653
|
+
"branches_updated": ["pr/ISSUE_ID/1-desc", "pr/ISSUE_ID/2-desc"],
|
|
654
654
|
"summary": "Brief description of what was done"
|
|
655
655
|
}
|
|
656
656
|
}
|
|
@@ -663,7 +663,7 @@ You MUST return ONLY a JSON object with your technical design results. Do NOT in
|
|
|
663
663
|
\`\`\`json
|
|
664
664
|
{
|
|
665
665
|
"technical_design_result": {
|
|
666
|
-
"
|
|
666
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
667
667
|
"status": "success",
|
|
668
668
|
"summary": "Brief summary of what was accomplished",
|
|
669
669
|
"technical_design": "The complete technical design document in markdown format",
|
|
@@ -691,8 +691,8 @@ You MUST end your response with a JSON object in this EXACT format:
|
|
|
691
691
|
\`\`\`json
|
|
692
692
|
{
|
|
693
693
|
"autonomous_result": {
|
|
694
|
-
"
|
|
695
|
-
"task_type": "
|
|
694
|
+
"issue_id": "ISSUE_ID",
|
|
695
|
+
"task_type": "issue|bugfix|refactor|test|docs|chore",
|
|
696
696
|
"summary": "Brief description of what was done",
|
|
697
697
|
"files_modified": ["file1.ts", "file2.tsx"],
|
|
698
698
|
"commit_hash": "abc123..."
|
|
@@ -710,7 +710,7 @@ Return ONLY the JSON in this EXACT format:
|
|
|
710
710
|
\`\`\`json
|
|
711
711
|
{
|
|
712
712
|
"branch_planning_result": {
|
|
713
|
-
"
|
|
713
|
+
"issue_id": "ISSUE_ID",
|
|
714
714
|
"status": "success",
|
|
715
715
|
"summary": "Brief summary of the branch planning",
|
|
716
716
|
"total_branches": <number>,
|
|
@@ -719,7 +719,7 @@ Return ONLY the JSON in this EXACT format:
|
|
|
719
719
|
{
|
|
720
720
|
"name": "Short descriptive name",
|
|
721
721
|
"description": "Detailed description of what this branch implements",
|
|
722
|
-
"branch_name": "dev/
|
|
722
|
+
"branch_name": "dev/ISSUE_ID/1-short-name",
|
|
723
723
|
"depends_on_branch_name": null,
|
|
724
724
|
"scope": [
|
|
725
725
|
"List of specific items to implement"
|
|
@@ -729,7 +729,7 @@ Return ONLY the JSON in this EXACT format:
|
|
|
729
729
|
]
|
|
730
730
|
}
|
|
731
731
|
],
|
|
732
|
-
"rationale": "Explanation of why the
|
|
732
|
+
"rationale": "Explanation of why the issue was split this way"
|
|
733
733
|
}
|
|
734
734
|
}
|
|
735
735
|
\`\`\`
|
|
@@ -744,7 +744,7 @@ Return ONLY the JSON in this EXACT format:
|
|
|
744
744
|
\`\`\`json
|
|
745
745
|
{
|
|
746
746
|
"pr_splitting_result": {
|
|
747
|
-
"
|
|
747
|
+
"issue_id": "ISSUE_ID",
|
|
748
748
|
"status": "success",
|
|
749
749
|
"summary": "Brief summary of the PR splitting strategy",
|
|
750
750
|
"total_prs": <number>,
|
|
@@ -753,7 +753,7 @@ Return ONLY the JSON in this EXACT format:
|
|
|
753
753
|
"sequence": 1,
|
|
754
754
|
"name": "Short descriptive name",
|
|
755
755
|
"description": "What this PR covers and why it's grouped this way",
|
|
756
|
-
"branch_name": "pr/
|
|
756
|
+
"branch_name": "pr/ISSUE_ID/1-short-name",
|
|
757
757
|
"depends_on_branch_name": null,
|
|
758
758
|
"files": [
|
|
759
759
|
{"path": "src/db/users.ts", "change_type": "added"},
|
|
@@ -775,7 +775,7 @@ You MUST end your response with a JSON object containing the code refine results
|
|
|
775
775
|
\`\`\`json
|
|
776
776
|
{
|
|
777
777
|
"refine_result": {
|
|
778
|
-
"
|
|
778
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
779
779
|
"summary": "Brief description of changes made",
|
|
780
780
|
"files_modified": ["file1.ts", "file2.tsx"],
|
|
781
781
|
"commits_created": 1,
|
|
@@ -798,7 +798,7 @@ You MUST end your response with a JSON object containing the code refine results
|
|
|
798
798
|
\`\`\`json
|
|
799
799
|
{
|
|
800
800
|
"refine_result": {
|
|
801
|
-
"
|
|
801
|
+
"issue_id": "ISSUE_ID_PLACEHOLDER",
|
|
802
802
|
"summary": "Brief description of changes made",
|
|
803
803
|
"files_modified": ["file1.ts", "file2.tsx"],
|
|
804
804
|
"commits_created": 1,
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type PullRequest } from '../../services/pull-requests.js';
|
|
2
|
-
import type {
|
|
2
|
+
import type { IssueInfo } from '../../types/issues.js';
|
|
3
3
|
import { type RepoForkInfo } from '../../utils/github-repo-info.js';
|
|
4
4
|
export interface GitHubConfigInfo {
|
|
5
5
|
configured: boolean;
|
|
@@ -13,7 +13,7 @@ export interface ChangedFileInfo {
|
|
|
13
13
|
change_type: 'added' | 'modified' | 'deleted' | 'renamed';
|
|
14
14
|
}
|
|
15
15
|
export interface PRExecutionContext {
|
|
16
|
-
|
|
16
|
+
issue: IssueInfo;
|
|
17
17
|
pullRequests: PullRequest[];
|
|
18
18
|
devBranchName: string;
|
|
19
19
|
devBranchHeadSha: string;
|
|
@@ -27,4 +27,4 @@ export interface PRExecutionContext {
|
|
|
27
27
|
/**
|
|
28
28
|
* Fetch context for PR execution phase
|
|
29
29
|
*/
|
|
30
|
-
export declare function fetchPRExecutionContext(
|
|
30
|
+
export declare function fetchPRExecutionContext(issueId: string, verbose?: boolean): Promise<PRExecutionContext>;
|
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
import { execFileSync, execSync } from 'child_process';
|
|
2
|
-
import { getFeature } from '../../api/features/index.js';
|
|
3
2
|
import { getGitHubConfig } from '../../api/github.js';
|
|
3
|
+
import { getIssue } from '../../api/issues/index.js';
|
|
4
4
|
import { getPullRequests, } from '../../services/pull-requests.js';
|
|
5
5
|
import { branchExists, remoteBranchExists, } from '../../utils/git-branch-manager.js';
|
|
6
6
|
import { buildCredentialArgs } from '../../utils/git-push.js';
|
|
7
7
|
import { getRepoForkInfo, } from '../../utils/github-repo-info.js';
|
|
8
8
|
import { logError, logInfo } from '../../utils/logger.js';
|
|
9
9
|
/**
|
|
10
|
-
* Get the dev branch name for
|
|
10
|
+
* Get the dev branch name for an issue
|
|
11
11
|
*/
|
|
12
|
-
function getDevBranchName(
|
|
13
|
-
return `dev/${
|
|
12
|
+
function getDevBranchName(issueId) {
|
|
13
|
+
return `dev/${issueId}`;
|
|
14
14
|
}
|
|
15
15
|
/**
|
|
16
16
|
* Get the HEAD SHA of a branch
|
|
@@ -109,17 +109,17 @@ function getLastSyncedCommit(pullRequests) {
|
|
|
109
109
|
* Fetch context for PR execution phase
|
|
110
110
|
*/
|
|
111
111
|
// eslint-disable-next-line complexity -- assembles context from many data sources with fallback handling
|
|
112
|
-
export async function fetchPRExecutionContext(
|
|
112
|
+
export async function fetchPRExecutionContext(issueId, verbose) {
|
|
113
113
|
try {
|
|
114
114
|
if (verbose) {
|
|
115
|
-
logInfo(`Fetching PR execution context for
|
|
115
|
+
logInfo(`Fetching PR execution context for issue: ${issueId}`);
|
|
116
116
|
}
|
|
117
|
-
const devBranchName = getDevBranchName(
|
|
117
|
+
const devBranchName = getDevBranchName(issueId);
|
|
118
118
|
// Fetch GitHub config and data in parallel (need token before remote branch check)
|
|
119
|
-
const [
|
|
120
|
-
|
|
121
|
-
getPullRequests({
|
|
122
|
-
getGitHubConfig(
|
|
119
|
+
const [issue, pullRequests, githubConfig] = await Promise.all([
|
|
120
|
+
getIssue(issueId, verbose),
|
|
121
|
+
getPullRequests({ issueId, verbose }),
|
|
122
|
+
getGitHubConfig(issueId, verbose),
|
|
123
123
|
]);
|
|
124
124
|
// Fetch latest remote refs and fast-forward local main
|
|
125
125
|
try {
|
|
@@ -147,7 +147,7 @@ export async function fetchPRExecutionContext(featureId, verbose) {
|
|
|
147
147
|
const remoteExists = !localExists && remoteBranchExists(devBranchName, githubConfig.token);
|
|
148
148
|
if (!localExists && !remoteExists) {
|
|
149
149
|
throw new Error(`Development branch '${devBranchName}' does not exist. ` +
|
|
150
|
-
`The
|
|
150
|
+
`The issue must have code on the dev branch before PR execution.`);
|
|
151
151
|
}
|
|
152
152
|
// If branch only exists on remote, fetch it (using credential helper)
|
|
153
153
|
if (!localExists && remoteExists) {
|
|
@@ -208,7 +208,7 @@ export async function fetchPRExecutionContext(featureId, verbose) {
|
|
|
208
208
|
const changedFiles = getChangedFiles(diffBase, devRef);
|
|
209
209
|
if (verbose) {
|
|
210
210
|
logInfo(`✅ PR execution context fetched:`);
|
|
211
|
-
logInfo(`
|
|
211
|
+
logInfo(` Issue: ${issue.name}`);
|
|
212
212
|
logInfo(` Dev Branch: ${devBranchName} (HEAD: ${devBranchHeadSha})`);
|
|
213
213
|
logInfo(` PR Records: ${pullRequests.length}`);
|
|
214
214
|
logInfo(` Mode: ${isIncrementalSync ? '🔄 Incremental sync' : '✨ First execution'}`);
|
|
@@ -217,7 +217,7 @@ export async function fetchPRExecutionContext(featureId, verbose) {
|
|
|
217
217
|
logInfo(` GitHub: ${githubConfig.configured ? 'Configured' : 'Not configured'}`);
|
|
218
218
|
}
|
|
219
219
|
return {
|
|
220
|
-
|
|
220
|
+
issue,
|
|
221
221
|
pullRequests,
|
|
222
222
|
devBranchName,
|
|
223
223
|
devBranchHeadSha,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { type EdsgerConfig } from '../../types/index.js';
|
|
2
2
|
export interface PRExecutionOptions {
|
|
3
|
-
|
|
3
|
+
issueId: string;
|
|
4
4
|
verbose?: boolean;
|
|
5
5
|
}
|
|
6
6
|
/**
|
|
@@ -14,7 +14,7 @@ export interface PRExecutionOptions {
|
|
|
14
14
|
*
|
|
15
15
|
* GitHub PRs are created manually by the user via compare URLs in the UI.
|
|
16
16
|
*/
|
|
17
|
-
export declare const
|
|
17
|
+
export declare const executeIssuePRs: (options: PRExecutionOptions, config: EdsgerConfig) => Promise<{
|
|
18
18
|
status: "success" | "error";
|
|
19
19
|
message?: string;
|
|
20
20
|
summary?: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
2
2
|
import { execSync } from 'child_process';
|
|
3
3
|
import { DEFAULT_MODEL } from '../../constants.js';
|
|
4
|
-
import {
|
|
4
|
+
import { logIssuePhaseEvent } from '../../services/audit-logs.js';
|
|
5
5
|
import { getPullRequests, } from '../../services/pull-requests.js';
|
|
6
6
|
import { getCurrentBranch, returnToMainBranch, } from '../../utils/git-branch-manager.js';
|
|
7
7
|
import { logDebug, logError, logInfo } from '../../utils/logger.js';
|
|
@@ -34,15 +34,15 @@ async function* prompt(executionPrompt) {
|
|
|
34
34
|
* GitHub PRs are created manually by the user via compare URLs in the UI.
|
|
35
35
|
*/
|
|
36
36
|
// eslint-disable-next-line complexity
|
|
37
|
-
export const
|
|
38
|
-
const {
|
|
37
|
+
export const executeIssuePRs = async (options, config) => {
|
|
38
|
+
const { issueId, verbose } = options;
|
|
39
39
|
if (verbose) {
|
|
40
|
-
logInfo(`Starting PR execution for
|
|
40
|
+
logInfo(`Starting PR execution for issue ID: ${issueId}`);
|
|
41
41
|
}
|
|
42
42
|
try {
|
|
43
43
|
// Log phase start
|
|
44
|
-
await
|
|
45
|
-
|
|
44
|
+
await logIssuePhaseEvent({
|
|
45
|
+
issueId,
|
|
46
46
|
eventType: 'phase_started',
|
|
47
47
|
phase: 'pr_execution',
|
|
48
48
|
result: 'info',
|
|
@@ -51,21 +51,21 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
51
51
|
},
|
|
52
52
|
}, verbose);
|
|
53
53
|
// Fetch context
|
|
54
|
-
const context = await fetchPRExecutionContext(
|
|
54
|
+
const context = await fetchPRExecutionContext(issueId, verbose);
|
|
55
55
|
// Check if already fully synced
|
|
56
56
|
if (context.isIncrementalSync &&
|
|
57
57
|
context.lastSyncedCommit === context.devBranchHeadSha) {
|
|
58
58
|
if (verbose) {
|
|
59
59
|
logInfo('All PR branches are already synced to latest commit.');
|
|
60
60
|
}
|
|
61
|
-
return buildNoChangeResult(
|
|
61
|
+
return buildNoChangeResult(issueId, context.pullRequests.length);
|
|
62
62
|
}
|
|
63
63
|
// Check if there are any changed files (for incremental sync)
|
|
64
64
|
if (context.isIncrementalSync && context.changedFiles.length === 0) {
|
|
65
65
|
if (verbose) {
|
|
66
66
|
logInfo('No new changes since last sync.');
|
|
67
67
|
}
|
|
68
|
-
return buildNoChangeResult(
|
|
68
|
+
return buildNoChangeResult(issueId, context.pullRequests.length);
|
|
69
69
|
}
|
|
70
70
|
// ======================================
|
|
71
71
|
// Reconcile file assignments
|
|
@@ -91,11 +91,11 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
91
91
|
}
|
|
92
92
|
// Assign changed files not covered by any PR
|
|
93
93
|
if (needsRefetch) {
|
|
94
|
-
activePullRequests = await getPullRequests({
|
|
94
|
+
activePullRequests = await getPullRequests({ issueId, verbose });
|
|
95
95
|
}
|
|
96
96
|
const assignedCount = await assignNewFilesToPRs(context.changedFiles, activePullRequests, verbose);
|
|
97
97
|
if (assignedCount > 0) {
|
|
98
|
-
activePullRequests = await getPullRequests({
|
|
98
|
+
activePullRequests = await getPullRequests({ issueId, verbose });
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
// ======================================
|
|
@@ -108,7 +108,7 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
108
108
|
if (verbose) {
|
|
109
109
|
logInfo('No eligible PRs to process — waiting for current PR to be merged or closed.');
|
|
110
110
|
}
|
|
111
|
-
return buildNoChangeResult(
|
|
111
|
+
return buildNoChangeResult(issueId, context.pullRequests.length);
|
|
112
112
|
}
|
|
113
113
|
// ======================================
|
|
114
114
|
// Agent: Create/Update branches
|
|
@@ -129,9 +129,9 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
129
129
|
let systemPrompt;
|
|
130
130
|
let userPrompt;
|
|
131
131
|
if (context.isIncrementalSync && context.lastSyncedCommit) {
|
|
132
|
-
systemPrompt = await createIncrementalSyncSystemPrompt(
|
|
132
|
+
systemPrompt = await createIncrementalSyncSystemPrompt(issueId, context.devBranchName);
|
|
133
133
|
userPrompt = createIncrementalSyncPrompt({
|
|
134
|
-
|
|
134
|
+
issueId,
|
|
135
135
|
devBranchName: context.devBranchName,
|
|
136
136
|
pullRequests: activePullRequests,
|
|
137
137
|
lastSyncedCommit: context.lastSyncedCommit,
|
|
@@ -140,8 +140,8 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
140
140
|
});
|
|
141
141
|
}
|
|
142
142
|
else {
|
|
143
|
-
systemPrompt = await createPRExecutionSystemPrompt(
|
|
144
|
-
userPrompt = createPRExecutionPrompt(
|
|
143
|
+
systemPrompt = await createPRExecutionSystemPrompt(issueId, context.devBranchName);
|
|
144
|
+
userPrompt = createPRExecutionPrompt(issueId, context.devBranchName, activePullRequests);
|
|
145
145
|
}
|
|
146
146
|
// Execute agent query
|
|
147
147
|
const agentResult = await executeAgentQuery(userPrompt, systemPrompt, config, verbose);
|
|
@@ -251,8 +251,8 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
253
|
// Log phase completion
|
|
254
|
-
await
|
|
255
|
-
|
|
254
|
+
await logIssuePhaseEvent({
|
|
255
|
+
issueId,
|
|
256
256
|
eventType: 'phase_completed',
|
|
257
257
|
phase: 'pr_execution',
|
|
258
258
|
result: 'success',
|
|
@@ -269,7 +269,7 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
269
269
|
const summary = context.isIncrementalSync
|
|
270
270
|
? `Synced PR branches with latest changes from ${context.devBranchName}`
|
|
271
271
|
: `Pushed ${executionSummary.branchesCreated} PR branches to remote`;
|
|
272
|
-
const successResult = buildExecutionSuccessResult(
|
|
272
|
+
const successResult = buildExecutionSuccessResult(issueId, executionSummary, summary);
|
|
273
273
|
return {
|
|
274
274
|
...successResult,
|
|
275
275
|
execution_session_id: agentResult.execution_session_id,
|
|
@@ -285,8 +285,8 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
285
285
|
catch {
|
|
286
286
|
// Best effort
|
|
287
287
|
}
|
|
288
|
-
await
|
|
289
|
-
|
|
288
|
+
await logIssuePhaseEvent({
|
|
289
|
+
issueId,
|
|
290
290
|
eventType: 'phase_failed',
|
|
291
291
|
phase: 'pr_execution',
|
|
292
292
|
result: 'error',
|
|
@@ -295,7 +295,7 @@ export const executeFeaturePRs = async (options, config) => {
|
|
|
295
295
|
timestamp: new Date().toISOString(),
|
|
296
296
|
},
|
|
297
297
|
}, verbose);
|
|
298
|
-
return buildExecutionErrorResult(
|
|
298
|
+
return buildExecutionErrorResult(issueId, errorMessage);
|
|
299
299
|
}
|
|
300
300
|
};
|
|
301
301
|
/**
|
|
@@ -5,7 +5,7 @@ export interface PRExecutionSummary {
|
|
|
5
5
|
failedBranches: string[];
|
|
6
6
|
}
|
|
7
7
|
export interface PRExecutionPhaseResult {
|
|
8
|
-
|
|
8
|
+
issueId: string;
|
|
9
9
|
status: 'success' | 'error';
|
|
10
10
|
summary: string;
|
|
11
11
|
executionSummary?: PRExecutionSummary;
|
|
@@ -13,12 +13,12 @@ export interface PRExecutionPhaseResult {
|
|
|
13
13
|
/**
|
|
14
14
|
* Build a successful execution result
|
|
15
15
|
*/
|
|
16
|
-
export declare function buildExecutionSuccessResult(
|
|
16
|
+
export declare function buildExecutionSuccessResult(issueId: string, executionSummary: PRExecutionSummary, summary: string): PRExecutionPhaseResult;
|
|
17
17
|
/**
|
|
18
18
|
* Build an error result
|
|
19
19
|
*/
|
|
20
|
-
export declare function buildExecutionErrorResult(
|
|
20
|
+
export declare function buildExecutionErrorResult(issueId: string, errorMessage: string): PRExecutionPhaseResult;
|
|
21
21
|
/**
|
|
22
22
|
* Build a no-change result
|
|
23
23
|
*/
|
|
24
|
-
export declare function buildNoChangeResult(
|
|
24
|
+
export declare function buildNoChangeResult(issueId: string, prCount: number): PRExecutionPhaseResult;
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Build a successful execution result
|
|
3
3
|
*/
|
|
4
|
-
export function buildExecutionSuccessResult(
|
|
4
|
+
export function buildExecutionSuccessResult(issueId, executionSummary, summary) {
|
|
5
5
|
const details = executionSummary.branchesUpdated > 0
|
|
6
6
|
? `${executionSummary.branchesUpdated} branches updated`
|
|
7
7
|
: `${executionSummary.branchesCreated} branches pushed`;
|
|
8
8
|
return {
|
|
9
|
-
|
|
9
|
+
issueId,
|
|
10
10
|
status: 'success',
|
|
11
11
|
summary: `${summary} (${details})`,
|
|
12
12
|
executionSummary,
|
|
@@ -15,9 +15,9 @@ export function buildExecutionSuccessResult(featureId, executionSummary, summary
|
|
|
15
15
|
/**
|
|
16
16
|
* Build an error result
|
|
17
17
|
*/
|
|
18
|
-
export function buildExecutionErrorResult(
|
|
18
|
+
export function buildExecutionErrorResult(issueId, errorMessage) {
|
|
19
19
|
return {
|
|
20
|
-
|
|
20
|
+
issueId,
|
|
21
21
|
status: 'error',
|
|
22
22
|
summary: `PR execution failed: ${errorMessage}`,
|
|
23
23
|
};
|
|
@@ -25,9 +25,9 @@ export function buildExecutionErrorResult(featureId, errorMessage) {
|
|
|
25
25
|
/**
|
|
26
26
|
* Build a no-change result
|
|
27
27
|
*/
|
|
28
|
-
export function buildNoChangeResult(
|
|
28
|
+
export function buildNoChangeResult(issueId, prCount) {
|
|
29
29
|
return {
|
|
30
|
-
|
|
30
|
+
issueId,
|
|
31
31
|
status: 'success',
|
|
32
32
|
summary: `All ${prCount} PR branches are already synced to latest commit. No changes needed.`,
|
|
33
33
|
};
|
|
@@ -3,20 +3,20 @@ import type { ChangedFileInfo } from './context.js';
|
|
|
3
3
|
/**
|
|
4
4
|
* Create the system prompt for branch creation and code splitting
|
|
5
5
|
*/
|
|
6
|
-
export declare function createPRExecutionSystemPrompt(
|
|
6
|
+
export declare function createPRExecutionSystemPrompt(issueId: string, devBranchName: string, projectDir?: string): Promise<string>;
|
|
7
7
|
/**
|
|
8
8
|
* Create the system prompt for incremental sync (re-runs)
|
|
9
9
|
*/
|
|
10
|
-
export declare function createIncrementalSyncSystemPrompt(
|
|
10
|
+
export declare function createIncrementalSyncSystemPrompt(issueId: string, devBranchName: string, projectDir?: string): Promise<string>;
|
|
11
11
|
/**
|
|
12
12
|
* Create the user prompt for first-time branch creation
|
|
13
13
|
*/
|
|
14
|
-
export declare function createPRExecutionPrompt(
|
|
14
|
+
export declare function createPRExecutionPrompt(issueId: string, devBranchName: string, pullRequests: PullRequest[]): string;
|
|
15
15
|
/**
|
|
16
16
|
* Create the user prompt for incremental sync
|
|
17
17
|
*/
|
|
18
18
|
export interface IncrementalSyncPromptOptions {
|
|
19
|
-
|
|
19
|
+
issueId: string;
|
|
20
20
|
devBranchName: string;
|
|
21
21
|
pullRequests: PullRequest[];
|
|
22
22
|
lastSyncedCommit: string;
|