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,20 +1,20 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Chat Worker — Child process entry point for processing chat messages.
|
|
3
3
|
*
|
|
4
|
-
* Spawned by AgentWorkflowProcessor as a parallel subprocess alongside
|
|
5
|
-
* Runs continuously, polling for unprocessed human messages across all active
|
|
4
|
+
* Spawned by AgentWorkflowProcessor as a parallel subprocess alongside issue workers.
|
|
5
|
+
* Runs continuously, polling for unprocessed human messages across all active issue channels.
|
|
6
6
|
*
|
|
7
7
|
* Communication with parent via IPC:
|
|
8
8
|
* - Parent sends: { type: 'init', config }
|
|
9
|
-
* - Parent sends: { type: 'event:phase_completed',
|
|
10
|
-
* - Parent sends: { type: 'event:phase_failed',
|
|
11
|
-
* - Parent sends: { type: 'event:
|
|
9
|
+
* - Parent sends: { type: 'event:phase_completed', issueId, phase, summary, phaseOutput }
|
|
10
|
+
* - Parent sends: { type: 'event:phase_failed', issueId, phase, error }
|
|
11
|
+
* - Parent sends: { type: 'event:issue_done', issueId }
|
|
12
12
|
* - Worker sends: { type: 'log', level, message }
|
|
13
|
-
* - Worker sends: { type: 'command:
|
|
14
|
-
* - Worker sends: { type: 'command:
|
|
13
|
+
* - Worker sends: { type: 'command:pause_issue', issueId }
|
|
14
|
+
* - Worker sends: { type: 'command:resume_issue', issueId }
|
|
15
15
|
*/
|
|
16
16
|
import { randomUUID } from 'node:crypto';
|
|
17
|
-
import { claimPendingMessages,
|
|
17
|
+
import { claimPendingMessages, getIssueChannel, listChannels, sendSystemMessage, } from '../../api/chat.js';
|
|
18
18
|
import { processHumanMessages, processPhaseCompletion, processProductHumanMessages, } from '../../phases/chat-processor/index.js';
|
|
19
19
|
function sendMessage(msg) {
|
|
20
20
|
if (process.send) {
|
|
@@ -33,12 +33,12 @@ let isRunning = false;
|
|
|
33
33
|
let pollTimer = null;
|
|
34
34
|
// Unique worker ID for this process instance — used for atomic message claiming
|
|
35
35
|
const WORKER_ID = `chat-worker-${process.pid}-${randomUUID().slice(0, 8)}`;
|
|
36
|
-
// Track active
|
|
36
|
+
// Track active issue channels (issueId -> channelId)
|
|
37
37
|
const activeChannels = new Map();
|
|
38
38
|
// Track active product channels (productId -> channelId)
|
|
39
39
|
const activeProductChannels = new Map();
|
|
40
|
-
// Track
|
|
41
|
-
const
|
|
40
|
+
// Track issue repo paths (issueId -> repoPath) for setting cwd on AI agent
|
|
41
|
+
const issueRepoPaths = new Map();
|
|
42
42
|
// Poll interval in ms
|
|
43
43
|
const POLL_INTERVAL = 5000;
|
|
44
44
|
// Refresh channel list every N polls (~30s at 5s intervals)
|
|
@@ -56,19 +56,19 @@ async function pollForMessages() {
|
|
|
56
56
|
if (pollCount % CHANNEL_REFRESH_INTERVAL === 0) {
|
|
57
57
|
await refreshChannels();
|
|
58
58
|
}
|
|
59
|
-
// Poll
|
|
60
|
-
for (const [
|
|
59
|
+
// Poll issue channels
|
|
60
|
+
for (const [issueId, channelId] of activeChannels) {
|
|
61
61
|
try {
|
|
62
62
|
const claimed = await claimPendingMessages(channelId, WORKER_ID);
|
|
63
63
|
if (claimed.length > 0) {
|
|
64
|
-
log('info', `Claimed ${claimed.length} message(s) for
|
|
65
|
-
const repoPath =
|
|
66
|
-
await processHumanMessages(claimed,
|
|
64
|
+
log('info', `Claimed ${claimed.length} message(s) for issue ${issueId} (worker: ${WORKER_ID})`);
|
|
65
|
+
const repoPath = issueRepoPaths.get(issueId);
|
|
66
|
+
await processHumanMessages(claimed, issueId, config, verbose, repoPath);
|
|
67
67
|
}
|
|
68
68
|
}
|
|
69
69
|
catch (error) {
|
|
70
70
|
const msg = error instanceof Error ? error.message : String(error);
|
|
71
|
-
log('error', `Error polling
|
|
71
|
+
log('error', `Error polling issue channel ${channelId}: ${msg}`);
|
|
72
72
|
}
|
|
73
73
|
}
|
|
74
74
|
// Poll product channels
|
|
@@ -127,15 +127,15 @@ async function handlePhaseCompleted(msg) {
|
|
|
127
127
|
if (!config) {
|
|
128
128
|
return;
|
|
129
129
|
}
|
|
130
|
-
const {
|
|
131
|
-
log('info', `Phase completed: ${phase} for
|
|
130
|
+
const { issueId, phase, summary, phaseOutput } = msg;
|
|
131
|
+
log('info', `Phase completed: ${phase} for issue ${issueId}`);
|
|
132
132
|
try {
|
|
133
133
|
// Ensure we have the channel registered
|
|
134
|
-
await
|
|
134
|
+
await ensureIssueChannel(issueId);
|
|
135
135
|
// Process with AI for next-step suggestions
|
|
136
|
-
const repoPath =
|
|
136
|
+
const repoPath = issueRepoPaths.get(issueId);
|
|
137
137
|
await processPhaseCompletion({
|
|
138
|
-
|
|
138
|
+
issueId,
|
|
139
139
|
phase,
|
|
140
140
|
summary,
|
|
141
141
|
phaseOutput,
|
|
@@ -150,11 +150,11 @@ async function handlePhaseCompleted(msg) {
|
|
|
150
150
|
}
|
|
151
151
|
}
|
|
152
152
|
async function handlePhaseFailed(msg) {
|
|
153
|
-
const {
|
|
154
|
-
log('warning', `Phase failed: ${phase} for
|
|
153
|
+
const { issueId, phase, error: errorStr } = msg;
|
|
154
|
+
log('warning', `Phase failed: ${phase} for issue ${issueId}`);
|
|
155
155
|
try {
|
|
156
|
-
await
|
|
157
|
-
const channelId = activeChannels.get(
|
|
156
|
+
await ensureIssueChannel(issueId);
|
|
157
|
+
const channelId = activeChannels.get(issueId);
|
|
158
158
|
if (channelId) {
|
|
159
159
|
await sendSystemMessage(channelId, `Phase "${phase}" failed: ${errorStr}`, { phase, status: 'failed', error: errorStr });
|
|
160
160
|
}
|
|
@@ -164,14 +164,14 @@ async function handlePhaseFailed(msg) {
|
|
|
164
164
|
log('error', `Failed to send phase failure message: ${errorMsg}`);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
async function
|
|
168
|
-
const {
|
|
169
|
-
log('info', `
|
|
167
|
+
async function handleIssueDone(msg) {
|
|
168
|
+
const { issueId } = msg;
|
|
169
|
+
log('info', `Issue done: ${issueId}`);
|
|
170
170
|
try {
|
|
171
|
-
const channelId = activeChannels.get(
|
|
171
|
+
const channelId = activeChannels.get(issueId);
|
|
172
172
|
if (channelId) {
|
|
173
173
|
await sendSystemMessage(channelId, 'All workflow phases completed.', {
|
|
174
|
-
status: '
|
|
174
|
+
status: 'issue_done',
|
|
175
175
|
});
|
|
176
176
|
}
|
|
177
177
|
}
|
|
@@ -186,17 +186,17 @@ async function handleFeatureDone(msg) {
|
|
|
186
186
|
/**
|
|
187
187
|
* Refresh the active channels list from the server.
|
|
188
188
|
* Called on init and periodically during polling to discover
|
|
189
|
-
* newly created channels (e.g., when a user opens
|
|
189
|
+
* newly created channels (e.g., when a user opens an issue chat on the web).
|
|
190
190
|
*/
|
|
191
191
|
async function refreshChannels() {
|
|
192
192
|
try {
|
|
193
|
-
// Fetch
|
|
194
|
-
const [
|
|
195
|
-
listChannels('
|
|
193
|
+
// Fetch issue and product channels in parallel
|
|
194
|
+
const [issueChannels, productChannels] = await Promise.all([
|
|
195
|
+
listChannels('issue'),
|
|
196
196
|
listChannels('product'),
|
|
197
197
|
]);
|
|
198
198
|
let added = 0;
|
|
199
|
-
for (const channel of
|
|
199
|
+
for (const channel of issueChannels) {
|
|
200
200
|
if (channel.channel_ref_id &&
|
|
201
201
|
!activeChannels.has(channel.channel_ref_id)) {
|
|
202
202
|
activeChannels.set(channel.channel_ref_id, channel.id);
|
|
@@ -211,7 +211,7 @@ async function refreshChannels() {
|
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
if (added > 0) {
|
|
214
|
-
log('info', `Discovered ${added} new channel(s) (
|
|
214
|
+
log('info', `Discovered ${added} new channel(s) (issues: ${activeChannels.size}, products: ${activeProductChannels.size})`);
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
catch (error) {
|
|
@@ -219,20 +219,20 @@ async function refreshChannels() {
|
|
|
219
219
|
log('error', `Failed to refresh channels: ${msg}`);
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
|
-
async function
|
|
223
|
-
const cachedChannel = activeChannels.get(
|
|
222
|
+
async function ensureIssueChannel(issueId) {
|
|
223
|
+
const cachedChannel = activeChannels.get(issueId);
|
|
224
224
|
if (cachedChannel) {
|
|
225
225
|
return cachedChannel;
|
|
226
226
|
}
|
|
227
227
|
try {
|
|
228
|
-
const channel = await
|
|
229
|
-
activeChannels.set(
|
|
230
|
-
log('info', `Registered channel ${channel.id} for
|
|
228
|
+
const channel = await getIssueChannel(issueId);
|
|
229
|
+
activeChannels.set(issueId, channel.id);
|
|
230
|
+
log('info', `Registered channel ${channel.id} for issue ${issueId}`);
|
|
231
231
|
return channel.id;
|
|
232
232
|
}
|
|
233
233
|
catch (error) {
|
|
234
234
|
const msg = error instanceof Error ? error.message : String(error);
|
|
235
|
-
log('error', `Failed to get channel for
|
|
235
|
+
log('error', `Failed to get channel for issue ${issueId}: ${msg}`);
|
|
236
236
|
throw error;
|
|
237
237
|
}
|
|
238
238
|
}
|
|
@@ -256,18 +256,18 @@ process.on('message', (msg) => {
|
|
|
256
256
|
log('error', `Phase fail event error: ${error instanceof Error ? error.message : String(error)}`);
|
|
257
257
|
});
|
|
258
258
|
break;
|
|
259
|
-
case 'event:
|
|
260
|
-
|
|
261
|
-
log('error', `
|
|
259
|
+
case 'event:issue_done':
|
|
260
|
+
handleIssueDone(msg).catch((error) => {
|
|
261
|
+
log('error', `Issue done event error: ${error instanceof Error ? error.message : String(error)}`);
|
|
262
262
|
});
|
|
263
263
|
break;
|
|
264
|
-
// Register
|
|
265
|
-
case 'event:
|
|
264
|
+
// Register an issue channel for polling when a worker starts
|
|
265
|
+
case 'event:issue_started': {
|
|
266
266
|
const startMsg = msg;
|
|
267
267
|
if (startMsg.repoPath) {
|
|
268
|
-
|
|
268
|
+
issueRepoPaths.set(startMsg.issueId, startMsg.repoPath);
|
|
269
269
|
}
|
|
270
|
-
|
|
270
|
+
ensureIssueChannel(startMsg.issueId).catch((error) => {
|
|
271
271
|
log('error', `Channel registration error: ${error instanceof Error ? error.message : String(error)}`);
|
|
272
272
|
});
|
|
273
273
|
break;
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This is the new cross-product workflow that:
|
|
5
5
|
* 1. Uses stored auth from `edsger login` (no per-repo env config needed)
|
|
6
|
-
* 2. Fetches ready_for_ai
|
|
6
|
+
* 2. Fetches ready_for_ai issues across ALL products
|
|
7
7
|
* 3. Clones repos using GitHub App installation tokens
|
|
8
|
-
* 4. Manages workspace directories with
|
|
8
|
+
* 4. Manages workspace directories with issue ID naming
|
|
9
9
|
* 5. Runs continuously with auto-update, sleep prevention, and session management
|
|
10
10
|
* 6. Responds to web dashboard commands (pause/resume/stop)
|
|
11
11
|
*/
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
*
|
|
4
4
|
* This is the new cross-product workflow that:
|
|
5
5
|
* 1. Uses stored auth from `edsger login` (no per-repo env config needed)
|
|
6
|
-
* 2. Fetches ready_for_ai
|
|
6
|
+
* 2. Fetches ready_for_ai issues across ALL products
|
|
7
7
|
* 3. Clones repos using GitHub App installation tokens
|
|
8
|
-
* 4. Manages workspace directories with
|
|
8
|
+
* 4. Manages workspace directories with issue ID naming
|
|
9
9
|
* 5. Runs continuously with auto-update, sleep prevention, and session management
|
|
10
10
|
* 6. Responds to web dashboard commands (pause/resume/stop)
|
|
11
11
|
*/
|
|
@@ -45,7 +45,7 @@ export async function runAgentWorkflow(options) {
|
|
|
45
45
|
// Start heartbeat
|
|
46
46
|
startHeartbeat();
|
|
47
47
|
logRaw('');
|
|
48
|
-
logSuccess('Agent started. Watching for
|
|
48
|
+
logSuccess('Agent started. Watching for issues...');
|
|
49
49
|
logRaw('');
|
|
50
50
|
// Create and start the processor
|
|
51
51
|
let maxConcurrent = 3;
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Issue Worker - Child process entry point for processing a single issue
|
|
3
3
|
*
|
|
4
4
|
* This file is spawned by the parent AgentWorkflowProcessor via child_process.fork().
|
|
5
5
|
* Each worker runs in its own process with its own cwd, which:
|
|
6
|
-
* 1. Allows concurrent
|
|
6
|
+
* 1. Allows concurrent issue processing (no shared process.chdir())
|
|
7
7
|
* 2. After auto-update, new workers load the latest code from disk
|
|
8
8
|
*
|
|
9
9
|
* Communication with parent via IPC messages:
|
|
10
|
-
* - Parent sends: { type: 'start',
|
|
11
|
-
* - Worker sends: { type: 'result', success: boolean,
|
|
10
|
+
* - Parent sends: { type: 'start', issueId, verbose, config }
|
|
11
|
+
* - Worker sends: { type: 'result', success: boolean, issueId }
|
|
12
12
|
* - Worker sends: { type: 'log', level, message } for logging
|
|
13
13
|
*/
|
|
14
14
|
export {};
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Issue Worker - Child process entry point for processing a single issue
|
|
3
3
|
*
|
|
4
4
|
* This file is spawned by the parent AgentWorkflowProcessor via child_process.fork().
|
|
5
5
|
* Each worker runs in its own process with its own cwd, which:
|
|
6
|
-
* 1. Allows concurrent
|
|
6
|
+
* 1. Allows concurrent issue processing (no shared process.chdir())
|
|
7
7
|
* 2. After auto-update, new workers load the latest code from disk
|
|
8
8
|
*
|
|
9
9
|
* Communication with parent via IPC messages:
|
|
10
|
-
* - Parent sends: { type: 'start',
|
|
11
|
-
* - Worker sends: { type: 'result', success: boolean,
|
|
10
|
+
* - Parent sends: { type: 'start', issueId, verbose, config }
|
|
11
|
+
* - Worker sends: { type: 'result', success: boolean, issueId }
|
|
12
12
|
* - Worker sends: { type: 'log', level, message } for logging
|
|
13
13
|
*/
|
|
14
14
|
import { evaluatePipelineResults } from '../workflow/core/pipeline-evaluator.js';
|
|
15
|
-
import {
|
|
15
|
+
import { runIssueWorkflow } from '../workflow/issue-coordinator.js';
|
|
16
16
|
function sendMessage(msg) {
|
|
17
17
|
if (process.send) {
|
|
18
18
|
process.send(msg);
|
|
@@ -22,23 +22,23 @@ function log(level, message) {
|
|
|
22
22
|
sendMessage({ type: 'log', level, message });
|
|
23
23
|
}
|
|
24
24
|
async function handleStart(msg) {
|
|
25
|
-
const {
|
|
25
|
+
const { issueId, verbose, config } = msg;
|
|
26
26
|
try {
|
|
27
|
-
log('info', `Worker started for
|
|
28
|
-
const results = await
|
|
27
|
+
log('info', `Worker started for issue: ${issueId}`);
|
|
28
|
+
const results = await runIssueWorkflow({ issueId, verbose }, config);
|
|
29
29
|
const allSuccessful = evaluatePipelineResults(results);
|
|
30
30
|
sendMessage({
|
|
31
31
|
type: 'result',
|
|
32
|
-
|
|
32
|
+
issueId,
|
|
33
33
|
success: allSuccessful,
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
catch (error) {
|
|
37
37
|
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
38
|
-
log('error', `Worker error for
|
|
38
|
+
log('error', `Worker error for issue ${issueId}: ${errorMessage}`);
|
|
39
39
|
sendMessage({
|
|
40
40
|
type: 'result',
|
|
41
|
-
|
|
41
|
+
issueId,
|
|
42
42
|
success: false,
|
|
43
43
|
error: errorMessage,
|
|
44
44
|
});
|
|
@@ -57,7 +57,7 @@ process.on('message', (msg) => {
|
|
|
57
57
|
process.on('uncaughtException', (error) => {
|
|
58
58
|
sendMessage({
|
|
59
59
|
type: 'result',
|
|
60
|
-
|
|
60
|
+
issueId: 'unknown',
|
|
61
61
|
success: false,
|
|
62
62
|
error: `Uncaught exception: ${error.message}`,
|
|
63
63
|
});
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Agent Workflow Processor - Cross-product
|
|
2
|
+
* Agent Workflow Processor - Cross-product issue processing
|
|
3
3
|
*
|
|
4
|
-
* Uses child_process.fork() to run each
|
|
4
|
+
* Uses child_process.fork() to run each issue in an isolated worker process.
|
|
5
5
|
* This enables:
|
|
6
|
-
* - Concurrent processing of multiple
|
|
7
|
-
* - Auto-update takes effect on next
|
|
6
|
+
* - Concurrent processing of multiple issues (each worker has its own cwd)
|
|
7
|
+
* - Auto-update takes effect on next issue (new workers load latest code)
|
|
8
8
|
* - Crash isolation (one worker failing doesn't affect others)
|
|
9
9
|
*/
|
|
10
10
|
import { type EdsgerConfig } from '../../types/index.js';
|
|
@@ -29,9 +29,9 @@ export declare class AgentWorkflowProcessor {
|
|
|
29
29
|
private readonly options;
|
|
30
30
|
private readonly config;
|
|
31
31
|
private isRunning;
|
|
32
|
-
private
|
|
32
|
+
private processedIssues;
|
|
33
33
|
private pollTimer?;
|
|
34
|
-
/** Currently active worker processes, keyed by
|
|
34
|
+
/** Currently active worker processes, keyed by issueId */
|
|
35
35
|
private activeWorkers;
|
|
36
36
|
/** Chat worker subprocess — runs in parallel, handles chat messages and phase events */
|
|
37
37
|
private chatWorker?;
|
|
@@ -41,12 +41,12 @@ export declare class AgentWorkflowProcessor {
|
|
|
41
41
|
/** Send a message to the chat worker via IPC */
|
|
42
42
|
private notifyChatWorker;
|
|
43
43
|
stop(): void;
|
|
44
|
-
private
|
|
44
|
+
private processNextIssues;
|
|
45
45
|
/**
|
|
46
|
-
* Start a child process worker for a single
|
|
46
|
+
* Start a child process worker for a single issue.
|
|
47
47
|
* Handles: GitHub config lookup, repo cloning, then forks the worker.
|
|
48
48
|
*/
|
|
49
|
-
private
|
|
49
|
+
private startIssueWorker;
|
|
50
50
|
private handleWorkerResult;
|
|
51
51
|
getStats(): WorkflowStats;
|
|
52
52
|
getActiveWorkerCount(): number;
|