edsger 0.76.0 → 0.78.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/LICENSE +21 -0
- package/README.md +95 -210
- package/assets/LICENSE +21 -0
- package/assets/README.md +104 -0
- package/assets/benchmark/base.yaml +286 -0
- package/assets/benchmark/csharp.yaml +68 -0
- package/assets/benchmark/dart.yaml +70 -0
- package/assets/benchmark/go.yaml +71 -0
- package/assets/benchmark/java.yaml +68 -0
- package/assets/benchmark/python.yaml +72 -0
- package/assets/benchmark/typescript.yaml +71 -0
- package/assets/languages.yaml +35 -0
- package/assets/manifest.yaml +39 -0
- package/assets/review/base.yaml +111 -0
- package/assets/review/csharp.yaml +38 -0
- package/assets/review/dart.yaml +40 -0
- package/assets/review/go.yaml +40 -0
- package/assets/review/java.yaml +40 -0
- package/assets/review/python.yaml +41 -0
- package/assets/review/typescript.yaml +40 -0
- package/assets/schema/benchmark.schema.json +87 -0
- package/assets/schema/review.schema.json +73 -0
- package/assets/skills/benchmark/SKILL.md +66 -0
- package/assets/skills/pr-resolve/SKILL.md +58 -0
- package/assets/skills/pr-review/SKILL.md +66 -0
- package/dist/index.js +1339 -1218
- package/dist/index.js.map +1 -0
- package/package.json +58 -53
- package/dist/api/adr.d.ts +0 -48
- package/dist/api/adr.js +0 -139
- package/dist/api/app-store-iap.d.ts +0 -60
- package/dist/api/app-store-iap.js +0 -145
- package/dist/api/app-store.d.ts +0 -93
- package/dist/api/app-store.js +0 -206
- package/dist/api/chat.d.ts +0 -72
- package/dist/api/chat.js +0 -272
- package/dist/api/cross-product.d.ts +0 -33
- package/dist/api/cross-product.js +0 -127
- package/dist/api/financing.d.ts +0 -47
- package/dist/api/financing.js +0 -37
- package/dist/api/github.d.ts +0 -86
- package/dist/api/github.js +0 -203
- package/dist/api/growth.d.ts +0 -81
- package/dist/api/growth.js +0 -75
- package/dist/api/intelligence-normalize.d.ts +0 -25
- package/dist/api/intelligence-normalize.js +0 -103
- package/dist/api/intelligence.d.ts +0 -187
- package/dist/api/intelligence.js +0 -402
- package/dist/api/issues/approval-checker.d.ts +0 -22
- package/dist/api/issues/approval-checker.js +0 -141
- package/dist/api/issues/batch-operations.d.ts +0 -17
- package/dist/api/issues/batch-operations.js +0 -100
- package/dist/api/issues/get-issue.d.ts +0 -5
- package/dist/api/issues/get-issue.js +0 -47
- package/dist/api/issues/index.d.ts +0 -8
- package/dist/api/issues/index.js +0 -10
- package/dist/api/issues/issue-utils.d.ts +0 -25
- package/dist/api/issues/issue-utils.js +0 -133
- package/dist/api/issues/status-updater.d.ts +0 -68
- package/dist/api/issues/status-updater.js +0 -190
- package/dist/api/issues/test-cases.d.ts +0 -29
- package/dist/api/issues/test-cases.js +0 -185
- package/dist/api/issues/update-issue.d.ts +0 -25
- package/dist/api/issues/update-issue.js +0 -127
- package/dist/api/issues/user-stories.d.ts +0 -21
- package/dist/api/issues/user-stories.js +0 -163
- package/dist/api/mcp-client.d.ts +0 -22
- package/dist/api/mcp-client.js +0 -75
- package/dist/api/products/test-cases.d.ts +0 -18
- package/dist/api/products/test-cases.js +0 -51
- package/dist/api/products.d.ts +0 -15
- package/dist/api/products.js +0 -45
- package/dist/api/release-test-cases.d.ts +0 -7
- package/dist/api/release-test-cases.js +0 -59
- package/dist/api/releases.d.ts +0 -41
- package/dist/api/releases.js +0 -117
- package/dist/api/run-sheets.d.ts +0 -22
- package/dist/api/run-sheets.js +0 -13
- package/dist/api/storage.d.ts +0 -13
- package/dist/api/storage.js +0 -29
- package/dist/api/tasks.d.ts +0 -26
- package/dist/api/tasks.js +0 -81
- package/dist/api/test-reports.d.ts +0 -9
- package/dist/api/test-reports.js +0 -43
- package/dist/api/user-psychology.d.ts +0 -101
- package/dist/api/user-psychology.js +0 -143
- package/dist/api/web-deploy.d.ts +0 -67
- package/dist/api/web-deploy.js +0 -199
- package/dist/auth/auth-store.d.ts +0 -98
- package/dist/auth/auth-store.js +0 -194
- package/dist/auth/env-store.d.ts +0 -41
- package/dist/auth/env-store.js +0 -127
- package/dist/auth/login.d.ts +0 -18
- package/dist/auth/login.js +0 -179
- package/dist/commands/adr/index.d.ts +0 -13
- package/dist/commands/adr/index.js +0 -31
- package/dist/commands/agent-workflow/chat-worker.d.ts +0 -16
- package/dist/commands/agent-workflow/chat-worker.js +0 -465
- package/dist/commands/agent-workflow/index.d.ts +0 -13
- package/dist/commands/agent-workflow/index.js +0 -107
- package/dist/commands/agent-workflow/issue-worker.d.ts +0 -14
- package/dist/commands/agent-workflow/issue-worker.js +0 -65
- package/dist/commands/agent-workflow/processor.d.ts +0 -95
- package/dist/commands/agent-workflow/processor.js +0 -519
- package/dist/commands/analyze-logs/index.d.ts +0 -7
- package/dist/commands/analyze-logs/index.js +0 -34
- package/dist/commands/app-store/index.d.ts +0 -12
- package/dist/commands/app-store/index.js +0 -69
- package/dist/commands/architecture-diagram/index.d.ts +0 -8
- package/dist/commands/architecture-diagram/index.js +0 -10
- package/dist/commands/build/detect-project.d.ts +0 -52
- package/dist/commands/build/detect-project.js +0 -277
- package/dist/commands/build/index.d.ts +0 -66
- package/dist/commands/build/index.js +0 -544
- package/dist/commands/chat-serve/chat-server.d.ts +0 -114
- package/dist/commands/chat-serve/chat-server.js +0 -339
- package/dist/commands/chat-serve/index.d.ts +0 -20
- package/dist/commands/chat-serve/index.js +0 -58
- package/dist/commands/checklists/index.d.ts +0 -16
- package/dist/commands/checklists/index.js +0 -187
- package/dist/commands/checklists/tools.d.ts +0 -17
- package/dist/commands/checklists/tools.js +0 -19
- package/dist/commands/class-diagram/index.d.ts +0 -7
- package/dist/commands/class-diagram/index.js +0 -9
- package/dist/commands/code-review/index.d.ts +0 -2
- package/dist/commands/code-review/index.js +0 -37
- package/dist/commands/code-review/reviewer.d.ts +0 -3
- package/dist/commands/code-review/reviewer.js +0 -205
- package/dist/commands/config/index.d.ts +0 -16
- package/dist/commands/config/index.js +0 -60
- package/dist/commands/data-flow/index.d.ts +0 -19
- package/dist/commands/data-flow/index.js +0 -55
- package/dist/commands/diagram-shared/index.d.ts +0 -21
- package/dist/commands/diagram-shared/index.js +0 -37
- package/dist/commands/discover/index.d.ts +0 -14
- package/dist/commands/discover/index.js +0 -29
- package/dist/commands/er-diagram/index.d.ts +0 -19
- package/dist/commands/er-diagram/index.js +0 -55
- package/dist/commands/features/index.d.ts +0 -15
- package/dist/commands/features/index.js +0 -34
- package/dist/commands/financing-deck/index.d.ts +0 -8
- package/dist/commands/financing-deck/index.js +0 -66
- package/dist/commands/find-architecture/index.d.ts +0 -15
- package/dist/commands/find-architecture/index.js +0 -50
- package/dist/commands/find-bugs/index.d.ts +0 -13
- package/dist/commands/find-bugs/index.js +0 -48
- package/dist/commands/find-features/index.d.ts +0 -14
- package/dist/commands/find-features/index.js +0 -42
- package/dist/commands/find-smells/index.d.ts +0 -23
- package/dist/commands/find-smells/index.js +0 -74
- package/dist/commands/flowchart/index.d.ts +0 -8
- package/dist/commands/flowchart/index.js +0 -10
- package/dist/commands/growth-analysis/index.d.ts +0 -7
- package/dist/commands/growth-analysis/index.js +0 -89
- package/dist/commands/init/index.d.ts +0 -5
- package/dist/commands/init/index.js +0 -152
- package/dist/commands/init/prompts.d.ts +0 -9
- package/dist/commands/init/prompts.js +0 -128
- package/dist/commands/init/templates.d.ts +0 -9
- package/dist/commands/init/templates.js +0 -264
- package/dist/commands/intelligence/index.d.ts +0 -15
- package/dist/commands/intelligence/index.js +0 -138
- package/dist/commands/issue-analysis/index.d.ts +0 -5
- package/dist/commands/issue-analysis/index.js +0 -9
- package/dist/commands/pr-resolve/index.d.ts +0 -13
- package/dist/commands/pr-resolve/index.js +0 -50
- package/dist/commands/pr-review/index.d.ts +0 -12
- package/dist/commands/pr-review/index.js +0 -47
- package/dist/commands/product-techniques/index.d.ts +0 -15
- package/dist/commands/product-techniques/index.js +0 -37
- package/dist/commands/product-test-cases/index.d.ts +0 -12
- package/dist/commands/product-test-cases/index.js +0 -40
- package/dist/commands/quality-benchmark/index.d.ts +0 -40
- package/dist/commands/quality-benchmark/index.js +0 -219
- package/dist/commands/recipes/index.d.ts +0 -17
- package/dist/commands/recipes/index.js +0 -40
- package/dist/commands/refactor/refactor.d.ts +0 -2
- package/dist/commands/refactor/refactor.js +0 -134
- package/dist/commands/release-sync/index.d.ts +0 -5
- package/dist/commands/release-sync/index.js +0 -38
- package/dist/commands/run-sheet/index.d.ts +0 -6
- package/dist/commands/run-sheet/index.js +0 -48
- package/dist/commands/screen-flow/index.d.ts +0 -18
- package/dist/commands/screen-flow/index.js +0 -54
- package/dist/commands/sequence-diagram/index.d.ts +0 -19
- package/dist/commands/sequence-diagram/index.js +0 -55
- package/dist/commands/session-serve/index.d.ts +0 -32
- package/dist/commands/session-serve/index.js +0 -100
- package/dist/commands/session-turn/index.d.ts +0 -73
- package/dist/commands/session-turn/index.js +0 -254
- package/dist/commands/smoke-test/index.d.ts +0 -5
- package/dist/commands/smoke-test/index.js +0 -40
- package/dist/commands/state-diagram/index.d.ts +0 -7
- package/dist/commands/state-diagram/index.js +0 -9
- package/dist/commands/sync-aws/index.d.ts +0 -16
- package/dist/commands/sync-aws/index.js +0 -214
- package/dist/commands/sync-datadog/index.d.ts +0 -16
- package/dist/commands/sync-datadog/index.js +0 -236
- package/dist/commands/sync-github-issues/index.d.ts +0 -11
- package/dist/commands/sync-github-issues/index.js +0 -42
- package/dist/commands/sync-github-pull-requests/index.d.ts +0 -11
- package/dist/commands/sync-github-pull-requests/index.js +0 -42
- package/dist/commands/sync-org-repos/index.d.ts +0 -12
- package/dist/commands/sync-org-repos/index.js +0 -60
- package/dist/commands/sync-sentry-issues/index.d.ts +0 -14
- package/dist/commands/sync-sentry-issues/index.js +0 -73
- package/dist/commands/sync-terraform/index.d.ts +0 -16
- package/dist/commands/sync-terraform/index.js +0 -248
- package/dist/commands/task-worker/index.d.ts +0 -8
- package/dist/commands/task-worker/index.js +0 -34
- package/dist/commands/task-worker/processor.d.ts +0 -23
- package/dist/commands/task-worker/processor.js +0 -84
- package/dist/commands/technical-design/index.d.ts +0 -5
- package/dist/commands/technical-design/index.js +0 -9
- package/dist/commands/test-cases-analysis/index.d.ts +0 -5
- package/dist/commands/test-cases-analysis/index.js +0 -9
- package/dist/commands/user-psychology/index.d.ts +0 -7
- package/dist/commands/user-psychology/index.js +0 -51
- package/dist/commands/user-stories-analysis/index.d.ts +0 -5
- package/dist/commands/user-stories-analysis/index.js +0 -9
- package/dist/commands/workflow/config/phase-configs.d.ts +0 -5
- package/dist/commands/workflow/config/phase-configs.js +0 -132
- package/dist/commands/workflow/core/index.d.ts +0 -8
- package/dist/commands/workflow/core/index.js +0 -12
- package/dist/commands/workflow/core/issue-filter.d.ts +0 -16
- package/dist/commands/workflow/core/issue-filter.js +0 -47
- package/dist/commands/workflow/core/pipeline-evaluator.d.ts +0 -24
- package/dist/commands/workflow/core/pipeline-evaluator.js +0 -32
- package/dist/commands/workflow/core/state-manager.d.ts +0 -24
- package/dist/commands/workflow/core/state-manager.js +0 -42
- package/dist/commands/workflow/core/workflow-logger.d.ts +0 -23
- package/dist/commands/workflow/core/workflow-logger.js +0 -77
- package/dist/commands/workflow/executors/phase-executor.d.ts +0 -8
- package/dist/commands/workflow/executors/phase-executor.js +0 -338
- package/dist/commands/workflow/index.d.ts +0 -2
- package/dist/commands/workflow/index.js +0 -34
- package/dist/commands/workflow/issue-coordinator.d.ts +0 -18
- package/dist/commands/workflow/issue-coordinator.js +0 -161
- package/dist/commands/workflow/phase-orchestrator.d.ts +0 -26
- package/dist/commands/workflow/phase-orchestrator.js +0 -699
- package/dist/commands/workflow/processor.d.ts +0 -47
- package/dist/commands/workflow/processor.js +0 -149
- package/dist/config/issue-status.d.ts +0 -29
- package/dist/config/issue-status.js +0 -44
- package/dist/config.d.ts +0 -3
- package/dist/config.js +0 -79
- package/dist/constants.d.ts +0 -10
- package/dist/constants.js +0 -36
- package/dist/errors/index.d.ts +0 -68
- package/dist/errors/index.js +0 -129
- package/dist/index.d.ts +0 -4
- package/dist/phases/adr-generation/agent.d.ts +0 -6
- package/dist/phases/adr-generation/agent.js +0 -69
- package/dist/phases/adr-generation/index.d.ts +0 -15
- package/dist/phases/adr-generation/index.js +0 -66
- package/dist/phases/adr-generation/parse.d.ts +0 -12
- package/dist/phases/adr-generation/parse.js +0 -123
- package/dist/phases/adr-generation/prompts.d.ts +0 -8
- package/dist/phases/adr-generation/prompts.js +0 -35
- package/dist/phases/analyze-logs/agent.d.ts +0 -11
- package/dist/phases/analyze-logs/agent.js +0 -66
- package/dist/phases/analyze-logs/index.d.ts +0 -23
- package/dist/phases/analyze-logs/index.js +0 -152
- package/dist/phases/analyze-logs/prompts.d.ts +0 -3
- package/dist/phases/analyze-logs/prompts.js +0 -27
- package/dist/phases/app-store-generation/agent.d.ts +0 -2
- package/dist/phases/app-store-generation/agent.js +0 -177
- package/dist/phases/app-store-generation/assets/inter-latin-ext.woff2 +0 -0
- package/dist/phases/app-store-generation/assets/inter-latin.woff2 +0 -0
- package/dist/phases/app-store-generation/context.d.ts +0 -21
- package/dist/phases/app-store-generation/context.js +0 -78
- package/dist/phases/app-store-generation/index.d.ts +0 -20
- package/dist/phases/app-store-generation/index.js +0 -157
- package/dist/phases/app-store-generation/inter-font.d.ts +0 -20
- package/dist/phases/app-store-generation/inter-font.js +0 -49
- package/dist/phases/app-store-generation/prompts.d.ts +0 -43
- package/dist/phases/app-store-generation/prompts.js +0 -73
- package/dist/phases/app-store-generation/screenshot-composer.d.ts +0 -41
- package/dist/phases/app-store-generation/screenshot-composer.js +0 -516
- package/dist/phases/app-store-generation/uploader.d.ts +0 -19
- package/dist/phases/app-store-generation/uploader.js +0 -150
- package/dist/phases/architecture-diagram/index.d.ts +0 -15
- package/dist/phases/architecture-diagram/index.js +0 -51
- package/dist/phases/autonomous/index.d.ts +0 -32
- package/dist/phases/autonomous/index.js +0 -412
- package/dist/phases/autonomous/prompts.d.ts +0 -5
- package/dist/phases/autonomous/prompts.js +0 -31
- package/dist/phases/branch-planning/context.d.ts +0 -14
- package/dist/phases/branch-planning/context.js +0 -43
- package/dist/phases/branch-planning/index.d.ts +0 -25
- package/dist/phases/branch-planning/index.js +0 -404
- package/dist/phases/branch-planning/outcome.d.ts +0 -28
- package/dist/phases/branch-planning/outcome.js +0 -115
- package/dist/phases/branch-planning/prompts.d.ts +0 -41
- package/dist/phases/branch-planning/prompts.js +0 -157
- package/dist/phases/bug-fixing/analyzer.d.ts +0 -17
- package/dist/phases/bug-fixing/analyzer.js +0 -247
- package/dist/phases/bug-fixing/context-fetcher.d.ts +0 -22
- package/dist/phases/bug-fixing/context-fetcher.js +0 -137
- package/dist/phases/bug-fixing/index.d.ts +0 -7
- package/dist/phases/bug-fixing/index.js +0 -7
- package/dist/phases/bug-fixing/mcp-server.d.ts +0 -18
- package/dist/phases/bug-fixing/mcp-server.js +0 -19
- package/dist/phases/bug-fixing/prompts.d.ts +0 -2
- package/dist/phases/bug-fixing/prompts.js +0 -9
- package/dist/phases/chat-processor/context.d.ts +0 -38
- package/dist/phases/chat-processor/context.js +0 -91
- package/dist/phases/chat-processor/index.d.ts +0 -49
- package/dist/phases/chat-processor/index.js +0 -482
- package/dist/phases/chat-processor/product-context.d.ts +0 -36
- package/dist/phases/chat-processor/product-context.js +0 -113
- package/dist/phases/chat-processor/product-prompts.d.ts +0 -4
- package/dist/phases/chat-processor/product-prompts.js +0 -65
- package/dist/phases/chat-processor/product-tools.d.ts +0 -8
- package/dist/phases/chat-processor/product-tools.js +0 -11
- package/dist/phases/chat-processor/prompts.d.ts +0 -35
- package/dist/phases/chat-processor/prompts.js +0 -213
- package/dist/phases/chat-processor/tools.d.ts +0 -8
- package/dist/phases/chat-processor/tools.js +0 -11
- package/dist/phases/class-diagram/index.d.ts +0 -14
- package/dist/phases/class-diagram/index.js +0 -76
- package/dist/phases/code-implementation/branch-pr-creator.d.ts +0 -31
- package/dist/phases/code-implementation/branch-pr-creator.js +0 -172
- package/dist/phases/code-implementation/context.d.ts +0 -17
- package/dist/phases/code-implementation/context.js +0 -88
- package/dist/phases/code-implementation/index.d.ts +0 -33
- package/dist/phases/code-implementation/index.js +0 -926
- package/dist/phases/code-implementation/outcome.d.ts +0 -47
- package/dist/phases/code-implementation/outcome.js +0 -53
- package/dist/phases/code-implementation/prompts.d.ts +0 -8
- package/dist/phases/code-implementation/prompts.js +0 -166
- package/dist/phases/code-implementation-verification/agent.d.ts +0 -32
- package/dist/phases/code-implementation-verification/agent.js +0 -225
- package/dist/phases/code-implementation-verification/index.d.ts +0 -27
- package/dist/phases/code-implementation-verification/index.js +0 -121
- package/dist/phases/code-implementation-verification/prompts.d.ts +0 -10
- package/dist/phases/code-implementation-verification/prompts.js +0 -90
- package/dist/phases/code-refine/context.d.ts +0 -99
- package/dist/phases/code-refine/context.js +0 -457
- package/dist/phases/code-refine/index.d.ts +0 -59
- package/dist/phases/code-refine/index.js +0 -348
- package/dist/phases/code-refine/prompts.d.ts +0 -5
- package/dist/phases/code-refine/prompts.js +0 -162
- package/dist/phases/code-refine/refine-iteration.d.ts +0 -33
- package/dist/phases/code-refine/refine-iteration.js +0 -166
- package/dist/phases/code-refine/retry-handler.d.ts +0 -17
- package/dist/phases/code-refine/retry-handler.js +0 -87
- package/dist/phases/code-refine-verification/github.d.ts +0 -54
- package/dist/phases/code-refine-verification/github.js +0 -328
- package/dist/phases/code-refine-verification/index.d.ts +0 -11
- package/dist/phases/code-refine-verification/index.js +0 -260
- package/dist/phases/code-refine-verification/llm-analyzer.d.ts +0 -22
- package/dist/phases/code-refine-verification/llm-analyzer.js +0 -152
- package/dist/phases/code-refine-verification/prompts.d.ts +0 -5
- package/dist/phases/code-refine-verification/prompts.js +0 -119
- package/dist/phases/code-refine-verification/types.d.ts +0 -74
- package/dist/phases/code-refine-verification/types.js +0 -4
- package/dist/phases/code-review/context.d.ts +0 -96
- package/dist/phases/code-review/context.js +0 -278
- package/dist/phases/code-review/diff-utils.d.ts +0 -36
- package/dist/phases/code-review/diff-utils.js +0 -100
- package/dist/phases/code-review/index.d.ts +0 -40
- package/dist/phases/code-review/index.js +0 -627
- package/dist/phases/code-testing/analyzer.d.ts +0 -19
- package/dist/phases/code-testing/analyzer.js +0 -215
- package/dist/phases/code-testing/context-fetcher.d.ts +0 -16
- package/dist/phases/code-testing/context-fetcher.js +0 -83
- package/dist/phases/code-testing/index.d.ts +0 -2
- package/dist/phases/code-testing/index.js +0 -2
- package/dist/phases/code-testing/prompts.d.ts +0 -3
- package/dist/phases/code-testing/prompts.js +0 -63
- package/dist/phases/data-flow/index.d.ts +0 -28
- package/dist/phases/data-flow/index.js +0 -286
- package/dist/phases/data-flow/mcp-server.d.ts +0 -85
- package/dist/phases/data-flow/mcp-server.js +0 -140
- package/dist/phases/data-flow/prompts.d.ts +0 -14
- package/dist/phases/data-flow/prompts.js +0 -36
- package/dist/phases/data-flow/types.d.ts +0 -71
- package/dist/phases/data-flow/types.js +0 -86
- package/dist/phases/diagram-shared/clone-repos.d.ts +0 -63
- package/dist/phases/diagram-shared/clone-repos.js +0 -153
- package/dist/phases/diagram-shared/generate.d.ts +0 -42
- package/dist/phases/diagram-shared/generate.js +0 -162
- package/dist/phases/diagram-shared/graph.d.ts +0 -62
- package/dist/phases/diagram-shared/graph.js +0 -169
- package/dist/phases/diagram-shared/mcp.d.ts +0 -35
- package/dist/phases/diagram-shared/mcp.js +0 -68
- package/dist/phases/diagram-shared/prompts.d.ts +0 -23
- package/dist/phases/diagram-shared/prompts.js +0 -35
- package/dist/phases/discover-services/index.d.ts +0 -29
- package/dist/phases/discover-services/index.js +0 -528
- package/dist/phases/er-diagram/index.d.ts +0 -28
- package/dist/phases/er-diagram/index.js +0 -290
- package/dist/phases/er-diagram/mcp-server.d.ts +0 -77
- package/dist/phases/er-diagram/mcp-server.js +0 -144
- package/dist/phases/er-diagram/prompts.d.ts +0 -14
- package/dist/phases/er-diagram/prompts.js +0 -36
- package/dist/phases/er-diagram/types.d.ts +0 -76
- package/dist/phases/er-diagram/types.js +0 -84
- package/dist/phases/features/index.d.ts +0 -65
- package/dist/phases/features/index.js +0 -292
- package/dist/phases/features/mcp-server.d.ts +0 -61
- package/dist/phases/features/mcp-server.js +0 -165
- package/dist/phases/features/prompts.d.ts +0 -32
- package/dist/phases/features/prompts.js +0 -92
- package/dist/phases/features/types.d.ts +0 -34
- package/dist/phases/features/types.js +0 -15
- package/dist/phases/financing-deck/agent.d.ts +0 -1
- package/dist/phases/financing-deck/agent.js +0 -96
- package/dist/phases/financing-deck/context.d.ts +0 -13
- package/dist/phases/financing-deck/context.js +0 -69
- package/dist/phases/financing-deck/index.d.ts +0 -15
- package/dist/phases/financing-deck/index.js +0 -89
- package/dist/phases/financing-deck/prompts.d.ts +0 -2
- package/dist/phases/financing-deck/prompts.js +0 -94
- package/dist/phases/find-architecture/index.d.ts +0 -47
- package/dist/phases/find-architecture/index.js +0 -261
- package/dist/phases/find-architecture/prompts.d.ts +0 -31
- package/dist/phases/find-architecture/prompts.js +0 -128
- package/dist/phases/find-architecture/state.d.ts +0 -21
- package/dist/phases/find-architecture/state.js +0 -17
- package/dist/phases/find-architecture/types.d.ts +0 -55
- package/dist/phases/find-architecture/types.js +0 -69
- package/dist/phases/find-bugs/index.d.ts +0 -33
- package/dist/phases/find-bugs/index.js +0 -236
- package/dist/phases/find-bugs/prompts.d.ts +0 -22
- package/dist/phases/find-bugs/prompts.js +0 -101
- package/dist/phases/find-bugs/state.d.ts +0 -19
- package/dist/phases/find-bugs/state.js +0 -13
- package/dist/phases/find-bugs/types.d.ts +0 -21
- package/dist/phases/find-bugs/types.js +0 -16
- package/dist/phases/find-features/index.d.ts +0 -40
- package/dist/phases/find-features/index.js +0 -328
- package/dist/phases/find-features/prompts.d.ts +0 -43
- package/dist/phases/find-features/prompts.js +0 -138
- package/dist/phases/find-features/state.d.ts +0 -25
- package/dist/phases/find-features/state.js +0 -22
- package/dist/phases/find-features/types.d.ts +0 -27
- package/dist/phases/find-features/types.js +0 -16
- package/dist/phases/find-shared/git.d.ts +0 -24
- package/dist/phases/find-shared/git.js +0 -60
- package/dist/phases/find-shared/mcp.d.ts +0 -48
- package/dist/phases/find-shared/mcp.js +0 -125
- package/dist/phases/find-shared/scan-state.d.ts +0 -33
- package/dist/phases/find-shared/scan-state.js +0 -112
- package/dist/phases/find-smells/index.d.ts +0 -50
- package/dist/phases/find-smells/index.js +0 -298
- package/dist/phases/find-smells/prompts.d.ts +0 -30
- package/dist/phases/find-smells/prompts.js +0 -129
- package/dist/phases/find-smells/state.d.ts +0 -21
- package/dist/phases/find-smells/state.js +0 -17
- package/dist/phases/find-smells/types.d.ts +0 -51
- package/dist/phases/find-smells/types.js +0 -64
- package/dist/phases/flow-shared/clone-repos.d.ts +0 -63
- package/dist/phases/flow-shared/clone-repos.js +0 -153
- package/dist/phases/flowchart/index.d.ts +0 -15
- package/dist/phases/flowchart/index.js +0 -50
- package/dist/phases/functional-testing/analyzer.d.ts +0 -46
- package/dist/phases/functional-testing/analyzer.js +0 -622
- package/dist/phases/functional-testing/context-fetcher.d.ts +0 -16
- package/dist/phases/functional-testing/context-fetcher.js +0 -83
- package/dist/phases/functional-testing/http-fallback.d.ts +0 -10
- package/dist/phases/functional-testing/http-fallback.js +0 -156
- package/dist/phases/functional-testing/index.d.ts +0 -4
- package/dist/phases/functional-testing/index.js +0 -4
- package/dist/phases/functional-testing/mcp-server.d.ts +0 -9
- package/dist/phases/functional-testing/mcp-server.js +0 -13
- package/dist/phases/functional-testing/prompts.d.ts +0 -2
- package/dist/phases/functional-testing/prompts.js +0 -58
- package/dist/phases/functional-testing/test-report-creator.d.ts +0 -68
- package/dist/phases/functional-testing/test-report-creator.js +0 -306
- package/dist/phases/functional-testing/test-retry-handler.d.ts +0 -16
- package/dist/phases/functional-testing/test-retry-handler.js +0 -70
- package/dist/phases/growth-analysis/agent.d.ts +0 -2
- package/dist/phases/growth-analysis/agent.js +0 -107
- package/dist/phases/growth-analysis/context.d.ts +0 -23
- package/dist/phases/growth-analysis/context.js +0 -137
- package/dist/phases/growth-analysis/index.d.ts +0 -32
- package/dist/phases/growth-analysis/index.js +0 -226
- package/dist/phases/growth-analysis/prompts.d.ts +0 -2
- package/dist/phases/growth-analysis/prompts.js +0 -45
- package/dist/phases/intelligence-analysis/agent.d.ts +0 -2
- package/dist/phases/intelligence-analysis/agent.js +0 -338
- package/dist/phases/intelligence-analysis/context.d.ts +0 -23
- package/dist/phases/intelligence-analysis/context.js +0 -142
- package/dist/phases/intelligence-analysis/index.d.ts +0 -58
- package/dist/phases/intelligence-analysis/index.js +0 -244
- package/dist/phases/intelligence-analysis/prompts.d.ts +0 -2
- package/dist/phases/intelligence-analysis/prompts.js +0 -62
- package/dist/phases/issue-analysis/agent.d.ts +0 -21
- package/dist/phases/issue-analysis/agent.js +0 -153
- package/dist/phases/issue-analysis/context.d.ts +0 -20
- package/dist/phases/issue-analysis/context.js +0 -93
- package/dist/phases/issue-analysis/index.d.ts +0 -8
- package/dist/phases/issue-analysis/index.js +0 -147
- package/dist/phases/issue-analysis/outcome.d.ts +0 -10
- package/dist/phases/issue-analysis/outcome.js +0 -42
- package/dist/phases/issue-analysis/prompts.d.ts +0 -8
- package/dist/phases/issue-analysis/prompts.js +0 -99
- package/dist/phases/issue-analysis-verification/agent.d.ts +0 -33
- package/dist/phases/issue-analysis-verification/agent.js +0 -124
- package/dist/phases/issue-analysis-verification/index.d.ts +0 -27
- package/dist/phases/issue-analysis-verification/index.js +0 -79
- package/dist/phases/issue-analysis-verification/prompts.d.ts +0 -9
- package/dist/phases/issue-analysis-verification/prompts.js +0 -75
- package/dist/phases/output-contracts.d.ts +0 -7
- package/dist/phases/output-contracts.js +0 -1201
- package/dist/phases/pr-execution/context.d.ts +0 -32
- package/dist/phases/pr-execution/context.js +0 -246
- package/dist/phases/pr-execution/file-assigner.d.ts +0 -57
- package/dist/phases/pr-execution/file-assigner.js +0 -287
- package/dist/phases/pr-execution/index.d.ts +0 -22
- package/dist/phases/pr-execution/index.js +0 -401
- package/dist/phases/pr-execution/outcome.d.ts +0 -24
- package/dist/phases/pr-execution/outcome.js +0 -34
- package/dist/phases/pr-execution/pr-executor.d.ts +0 -42
- package/dist/phases/pr-execution/pr-executor.js +0 -78
- package/dist/phases/pr-execution/prompts.d.ts +0 -27
- package/dist/phases/pr-execution/prompts.js +0 -131
- package/dist/phases/pr-resolve/checklist-learner.d.ts +0 -28
- package/dist/phases/pr-resolve/checklist-learner.js +0 -153
- package/dist/phases/pr-resolve/github-reply.d.ts +0 -16
- package/dist/phases/pr-resolve/github-reply.js +0 -75
- package/dist/phases/pr-resolve/index.d.ts +0 -33
- package/dist/phases/pr-resolve/index.js +0 -272
- package/dist/phases/pr-resolve/prompts.d.ts +0 -17
- package/dist/phases/pr-resolve/prompts.js +0 -107
- package/dist/phases/pr-resolve/types.d.ts +0 -18
- package/dist/phases/pr-resolve/types.js +0 -14
- package/dist/phases/pr-resolve/workspace.d.ts +0 -45
- package/dist/phases/pr-resolve/workspace.js +0 -174
- package/dist/phases/pr-review/index.d.ts +0 -27
- package/dist/phases/pr-review/index.js +0 -209
- package/dist/phases/pr-review/prompts.d.ts +0 -5
- package/dist/phases/pr-review/prompts.js +0 -87
- package/dist/phases/pr-shared/agent-utils.d.ts +0 -47
- package/dist/phases/pr-shared/agent-utils.js +0 -112
- package/dist/phases/pr-shared/context.d.ts +0 -24
- package/dist/phases/pr-shared/context.js +0 -78
- package/dist/phases/pr-shared/status.d.ts +0 -18
- package/dist/phases/pr-shared/status.js +0 -37
- package/dist/phases/pr-splitting/context.d.ts +0 -28
- package/dist/phases/pr-splitting/context.js +0 -182
- package/dist/phases/pr-splitting/import-dep-validator.d.ts +0 -67
- package/dist/phases/pr-splitting/import-dep-validator.js +0 -255
- package/dist/phases/pr-splitting/index.d.ts +0 -36
- package/dist/phases/pr-splitting/index.js +0 -413
- package/dist/phases/pr-splitting/outcome.d.ts +0 -24
- package/dist/phases/pr-splitting/outcome.js +0 -114
- package/dist/phases/pr-splitting/prompts.d.ts +0 -43
- package/dist/phases/pr-splitting/prompts.js +0 -154
- package/dist/phases/product-techniques/index.d.ts +0 -52
- package/dist/phases/product-techniques/index.js +0 -268
- package/dist/phases/product-techniques/mcp-server.d.ts +0 -41
- package/dist/phases/product-techniques/mcp-server.js +0 -96
- package/dist/phases/product-techniques/prompts.d.ts +0 -19
- package/dist/phases/product-techniques/prompts.js +0 -66
- package/dist/phases/product-techniques/types.d.ts +0 -13
- package/dist/phases/product-techniques/types.js +0 -13
- package/dist/phases/product-test-cases/index.d.ts +0 -25
- package/dist/phases/product-test-cases/index.js +0 -174
- package/dist/phases/product-test-cases/prompts.d.ts +0 -24
- package/dist/phases/product-test-cases/prompts.js +0 -80
- package/dist/phases/product-test-cases/types.d.ts +0 -17
- package/dist/phases/product-test-cases/types.js +0 -27
- package/dist/phases/pull-request/creator.d.ts +0 -30
- package/dist/phases/pull-request/creator.js +0 -319
- package/dist/phases/pull-request/handler.d.ts +0 -15
- package/dist/phases/pull-request/handler.js +0 -92
- package/dist/phases/quality-benchmark/index.d.ts +0 -65
- package/dist/phases/quality-benchmark/index.js +0 -194
- package/dist/phases/quality-benchmark/mcp-server.d.ts +0 -46
- package/dist/phases/quality-benchmark/mcp-server.js +0 -252
- package/dist/phases/quality-benchmark/parsers.d.ts +0 -22
- package/dist/phases/quality-benchmark/parsers.js +0 -1101
- package/dist/phases/quality-benchmark/prompts.d.ts +0 -31
- package/dist/phases/quality-benchmark/prompts.js +0 -154
- package/dist/phases/quality-benchmark/rubric.md +0 -1174
- package/dist/phases/quality-benchmark/tool-catalog.d.ts +0 -33
- package/dist/phases/quality-benchmark/tool-catalog.js +0 -636
- package/dist/phases/quality-benchmark/tool-runner.d.ts +0 -69
- package/dist/phases/quality-benchmark/tool-runner.js +0 -399
- package/dist/phases/quality-benchmark/types.d.ts +0 -312
- package/dist/phases/quality-benchmark/types.js +0 -23
- package/dist/phases/quality-benchmark/workspace.d.ts +0 -31
- package/dist/phases/quality-benchmark/workspace.js +0 -110
- package/dist/phases/recipes/index.d.ts +0 -63
- package/dist/phases/recipes/index.js +0 -358
- package/dist/phases/recipes/mcp-server.d.ts +0 -66
- package/dist/phases/recipes/mcp-server.js +0 -229
- package/dist/phases/recipes/prompts.d.ts +0 -35
- package/dist/phases/recipes/prompts.js +0 -105
- package/dist/phases/recipes/types.d.ts +0 -42
- package/dist/phases/recipes/types.js +0 -16
- package/dist/phases/release-sync/github.d.ts +0 -66
- package/dist/phases/release-sync/github.js +0 -140
- package/dist/phases/release-sync/index.d.ts +0 -24
- package/dist/phases/release-sync/index.js +0 -156
- package/dist/phases/release-sync/snapshot.d.ts +0 -27
- package/dist/phases/release-sync/snapshot.js +0 -158
- package/dist/phases/run-sheet/agent.d.ts +0 -49
- package/dist/phases/run-sheet/agent.js +0 -156
- package/dist/phases/run-sheet/index.d.ts +0 -57
- package/dist/phases/run-sheet/index.js +0 -392
- package/dist/phases/screen-flow/index.d.ts +0 -26
- package/dist/phases/screen-flow/index.js +0 -349
- package/dist/phases/screen-flow/mcp-server.d.ts +0 -201
- package/dist/phases/screen-flow/mcp-server.js +0 -272
- package/dist/phases/screen-flow/prompts.d.ts +0 -19
- package/dist/phases/screen-flow/prompts.js +0 -43
- package/dist/phases/screen-flow/theme.d.ts +0 -19
- package/dist/phases/screen-flow/theme.js +0 -193
- package/dist/phases/screen-flow/types.d.ts +0 -137
- package/dist/phases/screen-flow/types.js +0 -81
- package/dist/phases/sequence-diagram/index.d.ts +0 -30
- package/dist/phases/sequence-diagram/index.js +0 -290
- package/dist/phases/sequence-diagram/mcp-server.d.ts +0 -64
- package/dist/phases/sequence-diagram/mcp-server.js +0 -134
- package/dist/phases/sequence-diagram/prompts.d.ts +0 -14
- package/dist/phases/sequence-diagram/prompts.js +0 -36
- package/dist/phases/sequence-diagram/types.d.ts +0 -52
- package/dist/phases/sequence-diagram/types.js +0 -93
- package/dist/phases/smoke-test/agent.d.ts +0 -12
- package/dist/phases/smoke-test/agent.js +0 -93
- package/dist/phases/smoke-test/index.d.ts +0 -22
- package/dist/phases/smoke-test/index.js +0 -241
- package/dist/phases/smoke-test/prompts.d.ts +0 -15
- package/dist/phases/smoke-test/prompts.js +0 -35
- package/dist/phases/state-diagram/index.d.ts +0 -15
- package/dist/phases/state-diagram/index.js +0 -53
- package/dist/phases/sync-github-issues/index.d.ts +0 -41
- package/dist/phases/sync-github-issues/index.js +0 -187
- package/dist/phases/sync-github-issues/state.d.ts +0 -26
- package/dist/phases/sync-github-issues/state.js +0 -18
- package/dist/phases/sync-github-issues/types.d.ts +0 -35
- package/dist/phases/sync-github-issues/types.js +0 -6
- package/dist/phases/sync-github-pull-requests/index.d.ts +0 -23
- package/dist/phases/sync-github-pull-requests/index.js +0 -210
- package/dist/phases/sync-github-pull-requests/state.d.ts +0 -24
- package/dist/phases/sync-github-pull-requests/state.js +0 -16
- package/dist/phases/sync-github-pull-requests/types.d.ts +0 -22
- package/dist/phases/sync-github-pull-requests/types.js +0 -1
- package/dist/phases/sync-org-repos/index.d.ts +0 -28
- package/dist/phases/sync-org-repos/index.js +0 -133
- package/dist/phases/sync-sentry-issues/index.d.ts +0 -29
- package/dist/phases/sync-sentry-issues/index.js +0 -153
- package/dist/phases/sync-sentry-issues/sentry-client.d.ts +0 -66
- package/dist/phases/sync-sentry-issues/sentry-client.js +0 -221
- package/dist/phases/sync-sentry-issues/state.d.ts +0 -23
- package/dist/phases/sync-sentry-issues/state.js +0 -18
- package/dist/phases/sync-sentry-issues/types.d.ts +0 -46
- package/dist/phases/sync-sentry-issues/types.js +0 -6
- package/dist/phases/sync-shared/mcp.d.ts +0 -81
- package/dist/phases/sync-shared/mcp.js +0 -111
- package/dist/phases/task/agent.d.ts +0 -10
- package/dist/phases/task/agent.js +0 -83
- package/dist/phases/task/context.d.ts +0 -16
- package/dist/phases/task/context.js +0 -50
- package/dist/phases/task/index.d.ts +0 -17
- package/dist/phases/task/index.js +0 -54
- package/dist/phases/task/prompts.d.ts +0 -9
- package/dist/phases/task/prompts.js +0 -21
- package/dist/phases/technical-design/context.d.ts +0 -12
- package/dist/phases/technical-design/context.js +0 -39
- package/dist/phases/technical-design/index.d.ts +0 -21
- package/dist/phases/technical-design/index.js +0 -456
- package/dist/phases/technical-design/outcome.d.ts +0 -25
- package/dist/phases/technical-design/outcome.js +0 -41
- package/dist/phases/technical-design/prompts.d.ts +0 -8
- package/dist/phases/technical-design/prompts.js +0 -210
- package/dist/phases/technical-design-verification/agent.d.ts +0 -53
- package/dist/phases/technical-design-verification/agent.js +0 -186
- package/dist/phases/technical-design-verification/index.d.ts +0 -38
- package/dist/phases/technical-design-verification/index.js +0 -152
- package/dist/phases/technical-design-verification/prompts.d.ts +0 -12
- package/dist/phases/technical-design-verification/prompts.js +0 -143
- package/dist/phases/test-cases-analysis/agent.d.ts +0 -9
- package/dist/phases/test-cases-analysis/agent.js +0 -105
- package/dist/phases/test-cases-analysis/context.d.ts +0 -15
- package/dist/phases/test-cases-analysis/context.js +0 -86
- package/dist/phases/test-cases-analysis/formatters.d.ts +0 -6
- package/dist/phases/test-cases-analysis/formatters.js +0 -35
- package/dist/phases/test-cases-analysis/index.d.ts +0 -9
- package/dist/phases/test-cases-analysis/index.js +0 -175
- package/dist/phases/test-cases-analysis/outcome.d.ts +0 -27
- package/dist/phases/test-cases-analysis/outcome.js +0 -146
- package/dist/phases/test-cases-analysis/prompts.d.ts +0 -7
- package/dist/phases/test-cases-analysis/prompts.js +0 -171
- package/dist/phases/user-psychology/agent.d.ts +0 -16
- package/dist/phases/user-psychology/agent.js +0 -105
- package/dist/phases/user-psychology/context.d.ts +0 -10
- package/dist/phases/user-psychology/context.js +0 -65
- package/dist/phases/user-psychology/index.d.ts +0 -18
- package/dist/phases/user-psychology/index.js +0 -96
- package/dist/phases/user-psychology/prompts.d.ts +0 -2
- package/dist/phases/user-psychology/prompts.js +0 -41
- package/dist/phases/user-stories-analysis/agent.d.ts +0 -9
- package/dist/phases/user-stories-analysis/agent.js +0 -105
- package/dist/phases/user-stories-analysis/context.d.ts +0 -15
- package/dist/phases/user-stories-analysis/context.js +0 -86
- package/dist/phases/user-stories-analysis/formatters.d.ts +0 -6
- package/dist/phases/user-stories-analysis/formatters.js +0 -32
- package/dist/phases/user-stories-analysis/index.d.ts +0 -9
- package/dist/phases/user-stories-analysis/index.js +0 -175
- package/dist/phases/user-stories-analysis/outcome.d.ts +0 -27
- package/dist/phases/user-stories-analysis/outcome.js +0 -146
- package/dist/phases/user-stories-analysis/prompts.d.ts +0 -7
- package/dist/phases/user-stories-analysis/prompts.js +0 -194
- package/dist/services/audit-logs.d.ts +0 -73
- package/dist/services/audit-logs.js +0 -174
- package/dist/services/branches.d.ts +0 -103
- package/dist/services/branches.js +0 -391
- package/dist/services/checklist.d.ts +0 -100
- package/dist/services/checklist.js +0 -259
- package/dist/services/coaching/coaching-agent.d.ts +0 -39
- package/dist/services/coaching/coaching-agent.js +0 -308
- package/dist/services/coaching/coaching-loop.d.ts +0 -62
- package/dist/services/coaching/coaching-loop.js +0 -265
- package/dist/services/coaching/index.d.ts +0 -8
- package/dist/services/coaching/index.js +0 -8
- package/dist/services/coaching/phase-coaching.d.ts +0 -47
- package/dist/services/coaching/phase-coaching.js +0 -60
- package/dist/services/coaching/self-rating.d.ts +0 -26
- package/dist/services/coaching/self-rating.js +0 -153
- package/dist/services/feedbacks.d.ts +0 -57
- package/dist/services/feedbacks.js +0 -264
- package/dist/services/phase-hooks/bindings-fetcher.d.ts +0 -21
- package/dist/services/phase-hooks/bindings-fetcher.js +0 -53
- package/dist/services/phase-hooks/hook-executor.d.ts +0 -36
- package/dist/services/phase-hooks/hook-executor.js +0 -167
- package/dist/services/phase-hooks/hook-logging.d.ts +0 -14
- package/dist/services/phase-hooks/hook-logging.js +0 -41
- package/dist/services/phase-hooks/hook-runner.d.ts +0 -19
- package/dist/services/phase-hooks/hook-runner.js +0 -83
- package/dist/services/phase-hooks/index.d.ts +0 -10
- package/dist/services/phase-hooks/index.js +0 -9
- package/dist/services/phase-hooks/plugin-loader.d.ts +0 -31
- package/dist/services/phase-hooks/plugin-loader.js +0 -207
- package/dist/services/phase-hooks/types.d.ts +0 -69
- package/dist/services/phase-hooks/types.js +0 -8
- package/dist/services/phase-ratings.d.ts +0 -70
- package/dist/services/phase-ratings.js +0 -143
- package/dist/services/product-logs.d.ts +0 -31
- package/dist/services/product-logs.js +0 -94
- package/dist/services/pull-requests.d.ts +0 -57
- package/dist/services/pull-requests.js +0 -186
- package/dist/services/quality-reports.d.ts +0 -45
- package/dist/services/quality-reports.js +0 -93
- package/dist/services/repo-config.d.ts +0 -17
- package/dist/services/repo-config.js +0 -50
- package/dist/services/skill-resolver.d.ts +0 -46
- package/dist/services/skill-resolver.js +0 -123
- package/dist/services/video/device-frames.d.ts +0 -34
- package/dist/services/video/device-frames.js +0 -513
- package/dist/services/video/index.d.ts +0 -66
- package/dist/services/video/index.js +0 -238
- package/dist/services/video/retry.d.ts +0 -20
- package/dist/services/video/retry.js +0 -76
- package/dist/services/video/screenshot-generator.d.ts +0 -69
- package/dist/services/video/screenshot-generator.js +0 -259
- package/dist/services/video/tts-generator.d.ts +0 -40
- package/dist/services/video/tts-generator.js +0 -121
- package/dist/services/video/video-assembler.d.ts +0 -45
- package/dist/services/video/video-assembler.js +0 -351
- package/dist/services/video/video-uploader.d.ts +0 -28
- package/dist/services/video/video-uploader.js +0 -108
- package/dist/skills/phase/adr-generation/SKILL.md +0 -51
- package/dist/skills/phase/analyze-logs/SKILL.md +0 -24
- package/dist/skills/phase/app-store-generation/SKILL.md +0 -60
- package/dist/skills/phase/architecture-diagram/SKILL.md +0 -41
- package/dist/skills/phase/autonomous/SKILL.md +0 -52
- package/dist/skills/phase/branch-planning/SKILL.md +0 -55
- package/dist/skills/phase/bug-fixing/SKILL.md +0 -47
- package/dist/skills/phase/class-diagram/SKILL.md +0 -44
- package/dist/skills/phase/code-implementation/SKILL.md +0 -68
- package/dist/skills/phase/code-implementation-verification/SKILL.md +0 -76
- package/dist/skills/phase/code-refine/SKILL.md +0 -62
- package/dist/skills/phase/code-testing/SKILL.md +0 -78
- package/dist/skills/phase/data-flow/SKILL.md +0 -82
- package/dist/skills/phase/er-diagram/SKILL.md +0 -71
- package/dist/skills/phase/flowchart/SKILL.md +0 -38
- package/dist/skills/phase/functional-testing/SKILL.md +0 -62
- package/dist/skills/phase/growth-analysis/SKILL.md +0 -97
- package/dist/skills/phase/incremental-sync/SKILL.md +0 -59
- package/dist/skills/phase/intelligence-analysis/SKILL.md +0 -52
- package/dist/skills/phase/issue-analysis/SKILL.md +0 -73
- package/dist/skills/phase/issue-analysis-verification/SKILL.md +0 -61
- package/dist/skills/phase/pr-execution/SKILL.md +0 -69
- package/dist/skills/phase/pr-splitting/SKILL.md +0 -78
- package/dist/skills/phase/screen-flow/SKILL.md +0 -78
- package/dist/skills/phase/sequence-diagram/SKILL.md +0 -67
- package/dist/skills/phase/smoke-test/SKILL.md +0 -80
- package/dist/skills/phase/state-diagram/SKILL.md +0 -38
- package/dist/skills/phase/task/SKILL.md +0 -19
- package/dist/skills/phase/technical-design/SKILL.md +0 -75
- package/dist/skills/phase/technical-design-verification/SKILL.md +0 -43
- package/dist/skills/phase/test-cases-analysis/SKILL.md +0 -88
- package/dist/skills/phase/user-psychology/SKILL.md +0 -135
- package/dist/skills/phase/user-stories-analysis/SKILL.md +0 -118
- package/dist/supabase/client.d.ts +0 -34
- package/dist/supabase/client.js +0 -123
- package/dist/system/session-manager.d.ts +0 -67
- package/dist/system/session-manager.js +0 -300
- package/dist/system/sleep-notification.d.ts +0 -15
- package/dist/system/sleep-notification.js +0 -108
- package/dist/system/sleep-prevention.d.ts +0 -20
- package/dist/system/sleep-prevention.js +0 -112
- package/dist/tools/bootstrap.d.ts +0 -45
- package/dist/tools/bootstrap.js +0 -50
- package/dist/types/external-sources.d.ts +0 -22
- package/dist/types/external-sources.js +0 -23
- package/dist/types/index.d.ts +0 -206
- package/dist/types/index.js +0 -1
- package/dist/types/issues.d.ts +0 -37
- package/dist/types/issues.js +0 -1
- package/dist/types/llm-responses.d.ts +0 -114
- package/dist/types/llm-responses.js +0 -9
- package/dist/types/pipeline.d.ts +0 -28
- package/dist/types/pipeline.js +0 -4
- package/dist/updater/auto-updater.d.ts +0 -39
- package/dist/updater/auto-updater.js +0 -134
- package/dist/utils/conflict-resolver.d.ts +0 -49
- package/dist/utils/conflict-resolver.js +0 -201
- package/dist/utils/formatters.d.ts +0 -42
- package/dist/utils/formatters.js +0 -166
- package/dist/utils/git-branch-manager-async.d.ts +0 -127
- package/dist/utils/git-branch-manager-async.js +0 -425
- package/dist/utils/git-branch-manager.d.ts +0 -160
- package/dist/utils/git-branch-manager.js +0 -613
- package/dist/utils/git-push.d.ts +0 -43
- package/dist/utils/git-push.js +0 -136
- package/dist/utils/github-repo-info.d.ts +0 -26
- package/dist/utils/github-repo-info.js +0 -45
- package/dist/utils/image-downloader.d.ts +0 -32
- package/dist/utils/image-downloader.js +0 -152
- package/dist/utils/issue-phase-cli.d.ts +0 -26
- package/dist/utils/issue-phase-cli.js +0 -44
- package/dist/utils/json-extract.d.ts +0 -6
- package/dist/utils/json-extract.js +0 -44
- package/dist/utils/json-extractor.d.ts +0 -27
- package/dist/utils/json-extractor.js +0 -102
- package/dist/utils/logger.d.ts +0 -35
- package/dist/utils/logger.js +0 -167
- package/dist/utils/pipeline-logger.d.ts +0 -8
- package/dist/utils/pipeline-logger.js +0 -38
- package/dist/utils/validation.d.ts +0 -68
- package/dist/utils/validation.js +0 -229
- package/dist/utils/workflow-utils.d.ts +0 -22
- package/dist/utils/workflow-utils.js +0 -48
- package/dist/workspace/session-workspace.d.ts +0 -43
- package/dist/workspace/session-workspace.js +0 -90
- package/dist/workspace/workspace-manager.d.ts +0 -105
- package/dist/workspace/workspace-manager.js +0 -280
|
@@ -1,544 +0,0 @@
|
|
|
1
|
-
import { execFileSync, execSync, spawn } from 'child_process';
|
|
2
|
-
import { existsSync, mkdirSync, readdirSync, rmSync, statSync, writeFileSync, } from 'fs';
|
|
3
|
-
import { homedir } from 'os';
|
|
4
|
-
import { join, relative } from 'path';
|
|
5
|
-
import { getAppStoreConfigs, updateBuildConfig, } from '../../api/app-store.js';
|
|
6
|
-
import { getGitHubConfigByProduct } from '../../api/github.js';
|
|
7
|
-
import { getProduct } from '../../api/products.js';
|
|
8
|
-
import { deregisterSession, registerSession, } from '../../system/session-manager.js';
|
|
9
|
-
import { logInfo, logSuccess, logWarning } from '../../utils/logger.js';
|
|
10
|
-
import { cloneIssueRepo, ensureWorkspaceDir, } from '../../workspace/workspace-manager.js';
|
|
11
|
-
import { analyzeBuildPlan, } from './detect-project.js';
|
|
12
|
-
/** Default (real) implementations of all dependencies. */
|
|
13
|
-
export function createDefaultDeps() {
|
|
14
|
-
return {
|
|
15
|
-
fetchConfigs: getAppStoreConfigs,
|
|
16
|
-
fetchProduct: getProduct,
|
|
17
|
-
fetchGitHub: getGitHubConfigByProduct,
|
|
18
|
-
cloneRepo: (workspaceRoot, dirName, owner, repo, token) => cloneIssueRepo(workspaceRoot, dirName, owner, repo, token),
|
|
19
|
-
getWorkspaceRoot: ensureWorkspaceDir,
|
|
20
|
-
saveBuildConfig: updateBuildConfig,
|
|
21
|
-
checkoutDefaultBranch: checkoutDefaultBranchImpl,
|
|
22
|
-
analyzeBuildPlan: analyzeBuildPlan,
|
|
23
|
-
findProjects: findXcodeProjects,
|
|
24
|
-
findSchemes: discoverSchemes,
|
|
25
|
-
runCommand: spawnAsync,
|
|
26
|
-
isXcodeAvailable: isXcodebuildAvailable,
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
// ── Async spawn helper ─────────────────────────────────────────────
|
|
30
|
-
/**
|
|
31
|
-
* Active child process — killed on SIGTERM for graceful cancellation.
|
|
32
|
-
* Only one build can run at a time; concurrent calls are rejected.
|
|
33
|
-
*/
|
|
34
|
-
let activeChild = null;
|
|
35
|
-
/**
|
|
36
|
-
* Spawn a command asynchronously, stream output to stdout/stderr, and
|
|
37
|
-
* return a promise that resolves on success or rejects on failure.
|
|
38
|
-
* The spawned process is stored in `activeChild` so the desktop app's
|
|
39
|
-
* "Stop Build" button (which sends SIGTERM to the CLI) cascades to it.
|
|
40
|
-
* Rejects if another subprocess is already running (concurrency guard).
|
|
41
|
-
*/
|
|
42
|
-
function spawnAsync(cmd, args, opts = {}) {
|
|
43
|
-
return new Promise((resolve, reject) => {
|
|
44
|
-
if (activeChild && activeChild.exitCode === null) {
|
|
45
|
-
reject(new Error('A build subprocess is already running'));
|
|
46
|
-
return;
|
|
47
|
-
}
|
|
48
|
-
const child = spawn(cmd, args, {
|
|
49
|
-
cwd: opts.cwd,
|
|
50
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
51
|
-
env: opts.env ?? process.env,
|
|
52
|
-
});
|
|
53
|
-
activeChild = child;
|
|
54
|
-
child.stdout?.on('data', (chunk) => process.stdout.write(chunk));
|
|
55
|
-
child.stderr?.on('data', (chunk) => process.stderr.write(chunk));
|
|
56
|
-
let timer;
|
|
57
|
-
if (opts.timeout) {
|
|
58
|
-
timer = setTimeout(() => {
|
|
59
|
-
child.kill('SIGTERM');
|
|
60
|
-
reject(new Error(`Command timed out after ${opts.timeout / 1000}s`));
|
|
61
|
-
}, opts.timeout);
|
|
62
|
-
}
|
|
63
|
-
child.on('close', (code) => {
|
|
64
|
-
if (timer)
|
|
65
|
-
clearTimeout(timer);
|
|
66
|
-
activeChild = null;
|
|
67
|
-
if (code === 0) {
|
|
68
|
-
resolve();
|
|
69
|
-
}
|
|
70
|
-
else {
|
|
71
|
-
reject(new Error(`${cmd} exited with code ${code}`));
|
|
72
|
-
}
|
|
73
|
-
});
|
|
74
|
-
child.on('error', (err) => {
|
|
75
|
-
if (timer)
|
|
76
|
-
clearTimeout(timer);
|
|
77
|
-
activeChild = null;
|
|
78
|
-
reject(err);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
// ── Signal forwarding (scoped to runBuild) ─────────────────────────
|
|
83
|
-
function forwardSignal(signal) {
|
|
84
|
-
if (activeChild && activeChild.exitCode === null) {
|
|
85
|
-
activeChild.kill(signal);
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
function installSignalHandlers() {
|
|
89
|
-
const onTerm = () => forwardSignal('SIGTERM');
|
|
90
|
-
const onInt = () => forwardSignal('SIGINT');
|
|
91
|
-
process.on('SIGTERM', onTerm);
|
|
92
|
-
process.on('SIGINT', onInt);
|
|
93
|
-
return () => {
|
|
94
|
-
process.removeListener('SIGTERM', onTerm);
|
|
95
|
-
process.removeListener('SIGINT', onInt);
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
// ── Pre-flight checks ──────────────────────────────────────────────
|
|
99
|
-
function isXcodebuildAvailable() {
|
|
100
|
-
try {
|
|
101
|
-
execSync('xcodebuild -version', { stdio: 'pipe' });
|
|
102
|
-
return true;
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
// ── Git helpers ────────────────────────────────────────────────────
|
|
109
|
-
function checkoutDefaultBranchImpl(repoPath) {
|
|
110
|
-
try {
|
|
111
|
-
const defaultBranch = execFileSync('git', ['symbolic-ref', 'refs/remotes/origin/HEAD'], { cwd: repoPath, stdio: 'pipe' })
|
|
112
|
-
.toString()
|
|
113
|
-
.trim()
|
|
114
|
-
.replace('refs/remotes/origin/', '');
|
|
115
|
-
execFileSync('git', ['checkout', defaultBranch], {
|
|
116
|
-
cwd: repoPath,
|
|
117
|
-
stdio: 'pipe',
|
|
118
|
-
});
|
|
119
|
-
execFileSync('git', ['pull', 'origin', defaultBranch], {
|
|
120
|
-
cwd: repoPath,
|
|
121
|
-
stdio: 'pipe',
|
|
122
|
-
});
|
|
123
|
-
logInfo(`On branch: ${defaultBranch}`);
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
logWarning('Could not switch to default branch, using current state');
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
// ── Xcode project discovery ────────────────────────────────────────
|
|
130
|
-
const EXCLUDED_DIRS = new Set([
|
|
131
|
-
'Pods',
|
|
132
|
-
'.build',
|
|
133
|
-
'node_modules',
|
|
134
|
-
'DerivedData',
|
|
135
|
-
'build',
|
|
136
|
-
'.git',
|
|
137
|
-
'Carthage',
|
|
138
|
-
]);
|
|
139
|
-
export function findXcodeProjects(rootDir) {
|
|
140
|
-
const results = [];
|
|
141
|
-
function walk(dir, depth) {
|
|
142
|
-
if (depth > 4)
|
|
143
|
-
return;
|
|
144
|
-
let entries;
|
|
145
|
-
try {
|
|
146
|
-
entries = readdirSync(dir);
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
return;
|
|
150
|
-
}
|
|
151
|
-
for (const entry of entries) {
|
|
152
|
-
if (EXCLUDED_DIRS.has(entry))
|
|
153
|
-
continue;
|
|
154
|
-
const fullPath = join(dir, entry);
|
|
155
|
-
if (entry.endsWith('.xcworkspace')) {
|
|
156
|
-
results.push({ path: relative(rootDir, fullPath), type: 'workspace' });
|
|
157
|
-
}
|
|
158
|
-
else if (entry.endsWith('.xcodeproj')) {
|
|
159
|
-
results.push({ path: relative(rootDir, fullPath), type: 'project' });
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
try {
|
|
163
|
-
if (statSync(fullPath).isDirectory()) {
|
|
164
|
-
walk(fullPath, depth + 1);
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
catch {
|
|
168
|
-
// skip inaccessible
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
}
|
|
173
|
-
walk(rootDir, 0);
|
|
174
|
-
// Workspaces first, then by shallowest path
|
|
175
|
-
return results.sort((a, b) => {
|
|
176
|
-
if (a.type !== b.type)
|
|
177
|
-
return a.type === 'workspace' ? -1 : 1;
|
|
178
|
-
return a.path.length - b.path.length;
|
|
179
|
-
});
|
|
180
|
-
}
|
|
181
|
-
// ── Scheme discovery ───────────────────────────────────────────────
|
|
182
|
-
export function discoverSchemes(repoPath, projectPath, projectType) {
|
|
183
|
-
const flag = projectType === 'workspace' ? '-workspace' : '-project';
|
|
184
|
-
const fullProjectPath = join(repoPath, projectPath);
|
|
185
|
-
try {
|
|
186
|
-
const output = execFileSync('xcodebuild', [flag, fullProjectPath, '-list'], { stdio: 'pipe', timeout: 30_000 }).toString();
|
|
187
|
-
const schemesMatch = output.match(/Schemes:\s*\n([\s\S]*?)(?:\n\n|$)/);
|
|
188
|
-
if (!schemesMatch)
|
|
189
|
-
return [];
|
|
190
|
-
return schemesMatch[1]
|
|
191
|
-
.split('\n')
|
|
192
|
-
.map((s) => s.trim())
|
|
193
|
-
.filter((s) => s.length > 0 &&
|
|
194
|
-
!s.endsWith('Tests') &&
|
|
195
|
-
!s.endsWith('UITests') &&
|
|
196
|
-
!s.includes('Test'));
|
|
197
|
-
}
|
|
198
|
-
catch {
|
|
199
|
-
return [];
|
|
200
|
-
}
|
|
201
|
-
}
|
|
202
|
-
// ── ExportOptions.plist generation ─────────────────────────────────
|
|
203
|
-
/** Escape XML special characters to prevent injection in plist values. */
|
|
204
|
-
function escapeXml(str) {
|
|
205
|
-
return str
|
|
206
|
-
.replace(/&/g, '&')
|
|
207
|
-
.replace(/</g, '<')
|
|
208
|
-
.replace(/>/g, '>')
|
|
209
|
-
.replace(/"/g, '"')
|
|
210
|
-
.replace(/'/g, ''');
|
|
211
|
-
}
|
|
212
|
-
export function generateExportOptionsPlist(teamId, exportMethod) {
|
|
213
|
-
const safeTeamId = escapeXml(teamId);
|
|
214
|
-
const safeMethod = escapeXml(exportMethod);
|
|
215
|
-
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
216
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
217
|
-
<plist version="1.0">
|
|
218
|
-
<dict>
|
|
219
|
-
<key>method</key>
|
|
220
|
-
<string>${safeMethod}</string>
|
|
221
|
-
<key>teamID</key>
|
|
222
|
-
<string>${safeTeamId}</string>
|
|
223
|
-
<key>uploadSymbols</key>
|
|
224
|
-
<true/>
|
|
225
|
-
<key>signingStyle</key>
|
|
226
|
-
<string>automatic</string>
|
|
227
|
-
</dict>
|
|
228
|
-
</plist>`;
|
|
229
|
-
}
|
|
230
|
-
// ── API Key file management ────────────────────────────────────────
|
|
231
|
-
function getApiKeyDir() {
|
|
232
|
-
return join(homedir(), '.edsger', 'keys');
|
|
233
|
-
}
|
|
234
|
-
/** Validate keyId is alphanumeric to prevent path traversal. */
|
|
235
|
-
function validateKeyId(keyId) {
|
|
236
|
-
if (!/^[A-Za-z0-9_-]+$/.test(keyId)) {
|
|
237
|
-
throw new Error(`Invalid API key ID: ${keyId}`);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
export function writeApiKeyFile(keyId, privateKey) {
|
|
241
|
-
validateKeyId(keyId);
|
|
242
|
-
const keyDir = getApiKeyDir();
|
|
243
|
-
mkdirSync(keyDir, { recursive: true });
|
|
244
|
-
const keyPath = join(keyDir, `AuthKey_${keyId}.p8`);
|
|
245
|
-
writeFileSync(keyPath, privateKey, { mode: 0o600 });
|
|
246
|
-
return keyPath;
|
|
247
|
-
}
|
|
248
|
-
export function cleanupApiKeyFile(keyId) {
|
|
249
|
-
try {
|
|
250
|
-
validateKeyId(keyId);
|
|
251
|
-
rmSync(join(getApiKeyDir(), `AuthKey_${keyId}.p8`), { force: true });
|
|
252
|
-
}
|
|
253
|
-
catch {
|
|
254
|
-
// best effort
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
// ── Platform → destination mapping ─────────────────────────────────
|
|
258
|
-
export function destinationForPlatform(platform) {
|
|
259
|
-
if (platform === 'macos') {
|
|
260
|
-
return 'generic/platform=macOS';
|
|
261
|
-
}
|
|
262
|
-
return 'generic/platform=iOS';
|
|
263
|
-
}
|
|
264
|
-
// ── Main build command ─────────────────────────────────────────────
|
|
265
|
-
/**
|
|
266
|
-
* Run the full build pipeline. Accepts an optional `deps` parameter
|
|
267
|
-
* for dependency injection in tests; falls back to real implementations.
|
|
268
|
-
*/
|
|
269
|
-
// eslint-disable-next-line complexity -- orchestration function, sequential steps are intentional
|
|
270
|
-
export async function runBuild(options, deps = createDefaultDeps()) {
|
|
271
|
-
const { buildProductId: productId, verbose } = options;
|
|
272
|
-
// 1. Pre-flight
|
|
273
|
-
if (!deps.isXcodeAvailable()) {
|
|
274
|
-
throw new Error('xcodebuild is not available. Please install Xcode and Xcode Command Line Tools.\n\n' +
|
|
275
|
-
' xcode-select --install\n');
|
|
276
|
-
}
|
|
277
|
-
// Register CLI session for log persistence
|
|
278
|
-
await registerSession({ command: 'build', productId });
|
|
279
|
-
// Install signal handlers for the duration of this build
|
|
280
|
-
const removeSignalHandlers = installSignalHandlers();
|
|
281
|
-
try {
|
|
282
|
-
logInfo(`Starting build for product: ${productId}`);
|
|
283
|
-
// 2. Fetch app store config
|
|
284
|
-
const configs = await deps.fetchConfigs(productId, verbose);
|
|
285
|
-
const appleConfig = configs.find((c) => c.store_type === 'apple_app_store');
|
|
286
|
-
if (!appleConfig) {
|
|
287
|
-
throw new Error('No Apple App Store configuration found. Add one in the App Store tab first.');
|
|
288
|
-
}
|
|
289
|
-
const buildConfig = appleConfig.build_config || {};
|
|
290
|
-
const shouldReselect = options.reselect || false;
|
|
291
|
-
// 3. Clone / update repo
|
|
292
|
-
const github = await deps.fetchGitHub(productId, verbose);
|
|
293
|
-
if (!github.configured || !github.token || !github.owner || !github.repo) {
|
|
294
|
-
throw new Error(`GitHub not configured: ${github.message || 'Connect a repository to this product.'}`);
|
|
295
|
-
}
|
|
296
|
-
const workspaceRoot = deps.getWorkspaceRoot();
|
|
297
|
-
const { repoPath } = deps.cloneRepo(workspaceRoot, `build-${productId}`, github.owner, github.repo, github.token);
|
|
298
|
-
deps.checkoutDefaultBranch(repoPath);
|
|
299
|
-
// 4. Resolve project path, scheme, and install dependencies.
|
|
300
|
-
// If we already have a saved build_config (and not --reselect),
|
|
301
|
-
// skip the AI and use the saved values directly.
|
|
302
|
-
// Otherwise: AI analyzes → code executes install steps → discover project/scheme.
|
|
303
|
-
let projectPath = options.project || (shouldReselect ? undefined : buildConfig.project_path);
|
|
304
|
-
let projectType = 'workspace';
|
|
305
|
-
let scheme = options.scheme || (shouldReselect ? undefined : buildConfig.scheme);
|
|
306
|
-
const needsDiscovery = !projectPath || !scheme || shouldReselect;
|
|
307
|
-
if (needsDiscovery) {
|
|
308
|
-
// 4a. Ask AI to analyze the repo and produce a build plan
|
|
309
|
-
const product = await deps.fetchProduct(productId, verbose);
|
|
310
|
-
const plan = await deps.analyzeBuildPlan({
|
|
311
|
-
repoPath,
|
|
312
|
-
productName: product.name,
|
|
313
|
-
productDescription: product.description,
|
|
314
|
-
});
|
|
315
|
-
// 4b. Execute the plan's install steps (deterministic)
|
|
316
|
-
if (plan) {
|
|
317
|
-
for (const step of plan.installSteps) {
|
|
318
|
-
const cwd = step.cwd ? join(repoPath, step.cwd) : repoPath;
|
|
319
|
-
logInfo(`Running: ${step.cmd} ${step.args.join(' ')}${step.cwd ? ` (in ${step.cwd}/)` : ''}`);
|
|
320
|
-
try {
|
|
321
|
-
await deps.runCommand(step.cmd, step.args, {
|
|
322
|
-
cwd,
|
|
323
|
-
timeout: 300_000,
|
|
324
|
-
});
|
|
325
|
-
logSuccess(`${step.cmd} completed`);
|
|
326
|
-
}
|
|
327
|
-
catch {
|
|
328
|
-
logWarning(`${step.cmd} ${step.args[0] || ''} failed — continuing`);
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
// 4c. Resolve project path — prefer AI hint, fallback to scan
|
|
333
|
-
if (!projectPath) {
|
|
334
|
-
if (plan?.projectPath) {
|
|
335
|
-
const fullPath = join(repoPath, plan.projectPath);
|
|
336
|
-
if (existsSync(fullPath)) {
|
|
337
|
-
projectPath = plan.projectPath;
|
|
338
|
-
logInfo(`Using AI-suggested project: ${projectPath}`);
|
|
339
|
-
}
|
|
340
|
-
else {
|
|
341
|
-
logWarning(`AI-suggested project not found: ${plan.projectPath}`);
|
|
342
|
-
}
|
|
343
|
-
}
|
|
344
|
-
// Fallback: scan filesystem
|
|
345
|
-
if (!projectPath) {
|
|
346
|
-
const projects = deps.findProjects(repoPath);
|
|
347
|
-
if (projects.length === 0) {
|
|
348
|
-
throw new Error(`No Xcode projects found in ${repoPath}.\n` +
|
|
349
|
-
'Ensure the repository contains a .xcworkspace or .xcodeproj file.');
|
|
350
|
-
}
|
|
351
|
-
projectPath = projects[0].path;
|
|
352
|
-
projectType = projects[0].type;
|
|
353
|
-
logInfo(`Found project: ${projectPath}`);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
projectType = projectPath.endsWith('.xcworkspace')
|
|
357
|
-
? 'workspace'
|
|
358
|
-
: 'project';
|
|
359
|
-
// 4d. Resolve scheme — prefer CLI flag, then AI hint, then xcodebuild -list
|
|
360
|
-
if (!scheme) {
|
|
361
|
-
if (plan?.schemeHint) {
|
|
362
|
-
scheme = plan.schemeHint;
|
|
363
|
-
logInfo(`Using AI-suggested scheme: ${scheme}`);
|
|
364
|
-
}
|
|
365
|
-
else {
|
|
366
|
-
const schemes = deps.findSchemes(repoPath, projectPath, projectType);
|
|
367
|
-
if (schemes.length === 0) {
|
|
368
|
-
throw new Error(`No schemes found in ${projectPath}. Specify one with --scheme.`);
|
|
369
|
-
}
|
|
370
|
-
scheme = schemes[0];
|
|
371
|
-
logInfo(`Discovered scheme: ${scheme}`);
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
}
|
|
375
|
-
else {
|
|
376
|
-
projectType = projectPath.endsWith('.xcworkspace')
|
|
377
|
-
? 'workspace'
|
|
378
|
-
: 'project';
|
|
379
|
-
}
|
|
380
|
-
// At this point projectPath and scheme must be resolved
|
|
381
|
-
if (!projectPath || !scheme) {
|
|
382
|
-
throw new Error('Could not determine Xcode project path and scheme.\n' +
|
|
383
|
-
'Specify them manually with --project and --scheme, or check the repository structure.');
|
|
384
|
-
}
|
|
385
|
-
// 5. Build settings
|
|
386
|
-
const configuration = options.configuration || buildConfig.configuration || 'Release';
|
|
387
|
-
const teamId = buildConfig.team_id;
|
|
388
|
-
const exportMethod = buildConfig.export_method || 'app-store';
|
|
389
|
-
const platform = options.platform || 'ios';
|
|
390
|
-
// 6. Persist discovered build config to DB
|
|
391
|
-
const newBuildConfig = {
|
|
392
|
-
project_path: projectPath,
|
|
393
|
-
scheme,
|
|
394
|
-
configuration,
|
|
395
|
-
team_id: teamId,
|
|
396
|
-
export_method: exportMethod,
|
|
397
|
-
};
|
|
398
|
-
if (newBuildConfig.project_path !== buildConfig.project_path ||
|
|
399
|
-
newBuildConfig.scheme !== buildConfig.scheme ||
|
|
400
|
-
newBuildConfig.configuration !== buildConfig.configuration) {
|
|
401
|
-
logInfo('Saving build configuration...');
|
|
402
|
-
await deps.saveBuildConfig(appleConfig.id, newBuildConfig, verbose);
|
|
403
|
-
}
|
|
404
|
-
if (!options.skipArchive && !options.ipa) {
|
|
405
|
-
// 7. Archive (async, cancellable)
|
|
406
|
-
const archivePath = join(repoPath, 'build', `${scheme}.xcarchive`);
|
|
407
|
-
const projectFlag = projectType === 'workspace' ? '-workspace' : '-project';
|
|
408
|
-
const fullProjectPath = join(repoPath, projectPath);
|
|
409
|
-
logInfo(`Archiving ${scheme} (${configuration}, ${platform})...`);
|
|
410
|
-
const archiveArgs = [
|
|
411
|
-
projectFlag,
|
|
412
|
-
fullProjectPath,
|
|
413
|
-
'-scheme',
|
|
414
|
-
scheme,
|
|
415
|
-
'-configuration',
|
|
416
|
-
configuration,
|
|
417
|
-
'-destination',
|
|
418
|
-
destinationForPlatform(platform),
|
|
419
|
-
'-archivePath',
|
|
420
|
-
archivePath,
|
|
421
|
-
'archive',
|
|
422
|
-
'-allowProvisioningUpdates',
|
|
423
|
-
];
|
|
424
|
-
if (teamId) {
|
|
425
|
-
archiveArgs.push(`DEVELOPMENT_TEAM=${teamId}`);
|
|
426
|
-
}
|
|
427
|
-
await deps.runCommand('xcodebuild', archiveArgs, {
|
|
428
|
-
cwd: repoPath,
|
|
429
|
-
timeout: 1_200_000,
|
|
430
|
-
});
|
|
431
|
-
logSuccess('Archive created successfully');
|
|
432
|
-
// 8. Export IPA / .app
|
|
433
|
-
if (!teamId) {
|
|
434
|
-
logWarning('team_id not configured — skipping export. Set it in build settings.');
|
|
435
|
-
return;
|
|
436
|
-
}
|
|
437
|
-
const exportPath = join(repoPath, 'build', 'export');
|
|
438
|
-
mkdirSync(exportPath, { recursive: true });
|
|
439
|
-
const plistPath = join(repoPath, 'build', 'ExportOptions.plist');
|
|
440
|
-
writeFileSync(plistPath, generateExportOptionsPlist(teamId, exportMethod));
|
|
441
|
-
logInfo('Exporting archive...');
|
|
442
|
-
await deps.runCommand('xcodebuild', [
|
|
443
|
-
'-exportArchive',
|
|
444
|
-
'-archivePath',
|
|
445
|
-
archivePath,
|
|
446
|
-
'-exportOptionsPlist',
|
|
447
|
-
plistPath,
|
|
448
|
-
'-exportPath',
|
|
449
|
-
exportPath,
|
|
450
|
-
'-allowProvisioningUpdates',
|
|
451
|
-
], { cwd: repoPath, timeout: 300_000 });
|
|
452
|
-
logSuccess('Export completed');
|
|
453
|
-
const ipaFiles = readdirSync(exportPath).filter((f) => f.endsWith('.ipa'));
|
|
454
|
-
if (ipaFiles.length === 0) {
|
|
455
|
-
throw new Error('No IPA file found after export');
|
|
456
|
-
}
|
|
457
|
-
const ipaPath = join(exportPath, ipaFiles[0]);
|
|
458
|
-
logSuccess(`IPA ready: ${ipaPath}`);
|
|
459
|
-
if (options.upload) {
|
|
460
|
-
await uploadIpa(ipaPath, appleConfig, platform, deps);
|
|
461
|
-
}
|
|
462
|
-
else {
|
|
463
|
-
logInfo('Build complete. Use --upload to also upload to App Store Connect.');
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
else if (options.ipa) {
|
|
467
|
-
if (!existsSync(options.ipa)) {
|
|
468
|
-
throw new Error(`IPA file not found: ${options.ipa}`);
|
|
469
|
-
}
|
|
470
|
-
await uploadIpa(options.ipa, appleConfig, platform, deps);
|
|
471
|
-
}
|
|
472
|
-
}
|
|
473
|
-
finally {
|
|
474
|
-
removeSignalHandlers();
|
|
475
|
-
await deregisterSession();
|
|
476
|
-
}
|
|
477
|
-
}
|
|
478
|
-
// ── Upload IPA to App Store Connect ────────────────────────────────
|
|
479
|
-
//
|
|
480
|
-
// Uses `xcrun notarytool submit` for macOS apps and
|
|
481
|
-
// `xcrun altool --upload-app` for iOS (altool is deprecated but
|
|
482
|
-
// notarytool does not support iOS App Store uploads).
|
|
483
|
-
// When altool is removed in a future Xcode, migrate to the
|
|
484
|
-
// App Store Connect API upload protocol (iTMSTransporter).
|
|
485
|
-
async function uploadIpa(ipaPath, appleConfig, platform, deps) {
|
|
486
|
-
const credentials = appleConfig.credentials;
|
|
487
|
-
if (!credentials?.key_id ||
|
|
488
|
-
!credentials?.issuer_id ||
|
|
489
|
-
!credentials?.private_key) {
|
|
490
|
-
throw new Error('Apple App Store Connect API credentials not configured.\n' +
|
|
491
|
-
'Set key_id, issuer_id, and private_key in the App Store tab settings.');
|
|
492
|
-
}
|
|
493
|
-
logInfo('Uploading to App Store Connect...');
|
|
494
|
-
const keyId = credentials.key_id;
|
|
495
|
-
writeApiKeyFile(keyId, credentials.private_key);
|
|
496
|
-
const cleanup = () => cleanupApiKeyFile(keyId);
|
|
497
|
-
process.on('exit', cleanup);
|
|
498
|
-
try {
|
|
499
|
-
if (platform === 'macos') {
|
|
500
|
-
logInfo('Using xcrun notarytool for macOS submission...');
|
|
501
|
-
await deps.runCommand('xcrun', [
|
|
502
|
-
'notarytool',
|
|
503
|
-
'submit',
|
|
504
|
-
ipaPath,
|
|
505
|
-
'--key',
|
|
506
|
-
join(getApiKeyDir(), `AuthKey_${keyId}.p8`),
|
|
507
|
-
'--key-id',
|
|
508
|
-
keyId,
|
|
509
|
-
'--issuer',
|
|
510
|
-
credentials.issuer_id,
|
|
511
|
-
'--wait',
|
|
512
|
-
], { timeout: 1_200_000 });
|
|
513
|
-
}
|
|
514
|
-
else {
|
|
515
|
-
// iOS: altool is the only CLI path for App Store uploads.
|
|
516
|
-
// Apple deprecated altool but has not yet provided a replacement
|
|
517
|
-
// CLI for iOS App Store uploads. When they do, switch here.
|
|
518
|
-
logInfo('Using xcrun altool for iOS upload (note: altool is deprecated by Apple)...');
|
|
519
|
-
await deps.runCommand('xcrun', [
|
|
520
|
-
'altool',
|
|
521
|
-
'--upload-app',
|
|
522
|
-
'-f',
|
|
523
|
-
ipaPath,
|
|
524
|
-
'-t',
|
|
525
|
-
'ios',
|
|
526
|
-
'--apiKey',
|
|
527
|
-
keyId,
|
|
528
|
-
'--apiIssuer',
|
|
529
|
-
credentials.issuer_id,
|
|
530
|
-
], {
|
|
531
|
-
timeout: 1_200_000,
|
|
532
|
-
env: {
|
|
533
|
-
...process.env,
|
|
534
|
-
API_PRIVATE_KEYS_DIR: getApiKeyDir(),
|
|
535
|
-
},
|
|
536
|
-
});
|
|
537
|
-
}
|
|
538
|
-
logSuccess('Upload to App Store Connect completed!');
|
|
539
|
-
}
|
|
540
|
-
finally {
|
|
541
|
-
cleanup();
|
|
542
|
-
process.removeListener('exit', cleanup);
|
|
543
|
-
}
|
|
544
|
-
}
|
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chat Server — the engine behind the standalone `edsger chat-serve` daemon.
|
|
3
|
-
*
|
|
4
|
-
* A single long-lived process that answers human messages on **issue** and
|
|
5
|
-
* **product group** chat channels (the chat surfaces in the issue- and
|
|
6
|
-
* product-detail pages). It is deliberately independent of the autonomous
|
|
7
|
-
* agent workflow: unlike the previous `chat-worker`, it is not forked by
|
|
8
|
-
* `AgentWorkflowProcessor` and needs no IPC from it — so chat keeps working
|
|
9
|
-
* whether or not the workflow is running.
|
|
10
|
-
*
|
|
11
|
-
* Two channel kinds are served here:
|
|
12
|
-
* - `issue` — `channel_type='issue'`
|
|
13
|
-
* - `product` — `channel_type='product'` AND `chat_mode='group'`
|
|
14
|
-
*
|
|
15
|
-
* Session chats (`chat_mode='ai_assistant'`) are deliberately excluded — they
|
|
16
|
-
* are owned by the per-session `edsger session-serve` daemon. Letting both
|
|
17
|
-
* claim the same messages would produce duplicate replies.
|
|
18
|
-
*
|
|
19
|
-
* Message intake prefers Supabase Realtime (a `chat_messages` INSERT wakes the
|
|
20
|
-
* claim+process path immediately); when no Supabase session is available it
|
|
21
|
-
* falls back to MCP polling. Either way, messages are claimed atomically
|
|
22
|
-
* (`claimPendingMessages`) so multiple workers never process the same message.
|
|
23
|
-
*
|
|
24
|
-
* Issue chats can give the AI read access to the issue's cloned repo. The repo
|
|
25
|
-
* path is derived locally from the workspace root + issue id (the same pure
|
|
26
|
-
* mapping the workflow uses), so no IPC hand-off is required; when the clone
|
|
27
|
-
* isn't present the chat simply runs without code context.
|
|
28
|
-
*
|
|
29
|
-
* Side-effectful collaborators are injected via {@link ChatServerDeps} (with
|
|
30
|
-
* real implementations as the default) so the routing/repo logic is unit
|
|
31
|
-
* testable without a live Supabase or filesystem.
|
|
32
|
-
*/
|
|
33
|
-
import { claimPendingMessages, listChannels } from '../../api/chat.js';
|
|
34
|
-
import { processHumanMessages, processProductHumanMessages } from '../../phases/chat-processor/index.js';
|
|
35
|
-
import { getSupabase, hasSupabaseSession } from '../../supabase/client.js';
|
|
36
|
-
import type { ChatChannel, EdsgerConfig } from '../../types/index.js';
|
|
37
|
-
/** Channel kinds this server is responsible for. */
|
|
38
|
-
export type ServedChannelKind = 'issue' | 'product';
|
|
39
|
-
/**
|
|
40
|
-
* Classify a channel into the kind this server serves, or `null` to ignore it.
|
|
41
|
-
* Pure — the single source of truth for "should chat-serve touch this channel",
|
|
42
|
-
* shared by the initial refresh and the Realtime registration path.
|
|
43
|
-
*
|
|
44
|
-
* Note the precise product rule: only `chat_mode='group'` product channels are
|
|
45
|
-
* served. `ai_assistant` (session) channels belong to `edsger session-serve`;
|
|
46
|
-
* any other mode (e.g. `direct`) is not a product group chat and is ignored.
|
|
47
|
-
*/
|
|
48
|
-
export declare function classifyChannel(channel: Pick<ChatChannel, 'channel_type' | 'chat_mode'>): ServedChannelKind | null;
|
|
49
|
-
/** Side-effectful collaborators, injectable for testing. */
|
|
50
|
-
export interface ChatServerDeps {
|
|
51
|
-
listChannels: typeof listChannels;
|
|
52
|
-
claimPendingMessages: typeof claimPendingMessages;
|
|
53
|
-
processHumanMessages: typeof processHumanMessages;
|
|
54
|
-
processProductHumanMessages: typeof processProductHumanMessages;
|
|
55
|
-
issueRepoExists: (workspaceRoot: string, issueId: string) => boolean;
|
|
56
|
-
getIssueRepoPath: (workspaceRoot: string, issueId: string) => string;
|
|
57
|
-
hasSupabaseSession: typeof hasSupabaseSession;
|
|
58
|
-
getSupabase: typeof getSupabase;
|
|
59
|
-
}
|
|
60
|
-
export interface ChatServerOptions {
|
|
61
|
-
config: EdsgerConfig;
|
|
62
|
-
/** Workspace root used to locate issue repo clones for code context. */
|
|
63
|
-
workspaceRoot: string;
|
|
64
|
-
verbose?: boolean;
|
|
65
|
-
}
|
|
66
|
-
export declare class ChatServer {
|
|
67
|
-
private readonly deps;
|
|
68
|
-
private readonly config;
|
|
69
|
-
private readonly workspaceRoot;
|
|
70
|
-
private readonly verbose;
|
|
71
|
-
/** Unique id for atomic message claiming across competing workers. */
|
|
72
|
-
private readonly workerId;
|
|
73
|
-
/** issueId -> channelId */
|
|
74
|
-
private readonly issueChannels;
|
|
75
|
-
/** productId -> channelId */
|
|
76
|
-
private readonly productChannels;
|
|
77
|
-
/** channelId -> { kind, refId } */
|
|
78
|
-
private readonly metaByChannel;
|
|
79
|
-
/** In-flight message processing, awaited on shutdown so we drain cleanly. */
|
|
80
|
-
private readonly inflight;
|
|
81
|
-
private realtimeChannel;
|
|
82
|
-
private pollTimer;
|
|
83
|
-
private refreshTimer;
|
|
84
|
-
private running;
|
|
85
|
-
constructor(options: ChatServerOptions, deps?: ChatServerDeps);
|
|
86
|
-
/** Bring the server up: seed channels, drain backlog, start intake. */
|
|
87
|
-
start(): Promise<void>;
|
|
88
|
-
/**
|
|
89
|
-
* Stop accepting new work, tear down timers/subscriptions, then wait for any
|
|
90
|
-
* in-flight message processing to finish (bounded by DRAIN_TIMEOUT_MS) so a
|
|
91
|
-
* mid-flight reply isn't abandoned. Idempotent.
|
|
92
|
-
*/
|
|
93
|
-
stop(): Promise<void>;
|
|
94
|
-
private refreshChannels;
|
|
95
|
-
/**
|
|
96
|
-
* Register a channel into the routing maps. Returns true if it was newly
|
|
97
|
-
* added. Ignores channels this server doesn't serve (e.g. session chats).
|
|
98
|
-
*/
|
|
99
|
-
private registerChannel;
|
|
100
|
-
/** Fire-and-forget a claim+process while tracking it for graceful drain. */
|
|
101
|
-
private dispatch;
|
|
102
|
-
/** Claim and process pending human messages on a single known channel. */
|
|
103
|
-
private claimAndProcess;
|
|
104
|
-
/**
|
|
105
|
-
* Locate the issue's cloned repo so the chat AI can read code. Derived from
|
|
106
|
-
* the workspace root with the same pure mapping the workflow uses; returns
|
|
107
|
-
* undefined when the clone isn't present (chat then runs without code).
|
|
108
|
-
*/
|
|
109
|
-
private resolveRepoPath;
|
|
110
|
-
private startRealtime;
|
|
111
|
-
private stopRealtime;
|
|
112
|
-
private startPolling;
|
|
113
|
-
private pollOnce;
|
|
114
|
-
}
|