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,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sync-github-issues phase: pull every issue from a product's connected
|
|
3
|
-
* GitHub repo, mirror new ones into our local `issues` table, propagate
|
|
4
|
-
* description/state changes (without clobbering user edits, see below),
|
|
5
|
-
* and flag rows that disappeared remotely as deleted. Deterministic — no
|
|
6
|
-
* Claude Agent SDK; this is plain Octokit + MCP.
|
|
7
|
-
*
|
|
8
|
-
* Production hardening over v1:
|
|
9
|
-
*
|
|
10
|
-
* - Octokit retry + throttling plugins handle 429 / secondary rate limits
|
|
11
|
-
* and transient 5xx with exponential backoff.
|
|
12
|
-
* - Upserts are batched (MAX_BATCH_SIZE per round-trip) instead of one
|
|
13
|
-
* PostgREST call per issue. Cuts a 1000-issue sync from ~50s to <1s.
|
|
14
|
-
* - Deletion sweep is keyed on a sync-start timestamp cutoff, not a
|
|
15
|
-
* present_ids list, so special characters in source_id don't break
|
|
16
|
-
* anything and there's no URL length limit.
|
|
17
|
-
* - If any batch fails, we SKIP the deletion sweep — better to leave
|
|
18
|
-
* stale "deleted" flags missing than to wrongly mark live issues as
|
|
19
|
-
* deleted from a partial fetch.
|
|
20
|
-
*
|
|
21
|
-
* On every click we still fetch the full list (state=all) rather than
|
|
22
|
-
* incremental with `since`, because GitHub's `since` filter doesn't
|
|
23
|
-
* surface deletions. Future hybrid (incremental updates + periodic full
|
|
24
|
-
* sweep) can plug into the per-product state file.
|
|
25
|
-
*/
|
|
26
|
-
import { retry } from '@octokit/plugin-retry';
|
|
27
|
-
import { throttling } from '@octokit/plugin-throttling';
|
|
28
|
-
import { Octokit } from '@octokit/rest';
|
|
29
|
-
import { logError, logInfo, logSuccess, logWarning } from '../../utils/logger.js';
|
|
30
|
-
import { markExternalIssuesDeletedSince, upsertInBatches, } from '../sync-shared/mcp.js';
|
|
31
|
-
import { acquireSyncGithubIssuesLock, updateSyncGithubIssuesState, } from './state.js';
|
|
32
|
-
// The plugins use `@octokit/core` 7.x types, while @octokit/rest@20 hoists
|
|
33
|
-
// to core 5.x at the workspace root — different OctokitPlugin shapes.
|
|
34
|
-
// Runtime is fine; the cast tells TS to accept the plugin chain.
|
|
35
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- octokit version drift across the workspace
|
|
36
|
-
const ResilientOctokit = Octokit.plugin(retry, throttling);
|
|
37
|
-
/** GitHub list-issues max page size. */
|
|
38
|
-
const PER_PAGE = 100;
|
|
39
|
-
function isPullRequest(item) {
|
|
40
|
-
return item.pull_request !== undefined;
|
|
41
|
-
}
|
|
42
|
-
/** Build an Octokit instance with retry + throttling configured for sync. */
|
|
43
|
-
function buildOctokit(token) {
|
|
44
|
-
return new ResilientOctokit({
|
|
45
|
-
auth: token,
|
|
46
|
-
// 3 retries with exponential backoff for 429 / 5xx. The default in
|
|
47
|
-
// @octokit/plugin-retry is 3, kept explicit so a future tweak is one
|
|
48
|
-
// grep away.
|
|
49
|
-
retry: { doNotRetry: [400, 401, 403, 404, 422] },
|
|
50
|
-
throttle: {
|
|
51
|
-
onRateLimit: (retryAfter, options) => {
|
|
52
|
-
logWarning(`GitHub rate limit hit on ${options.method ?? '?'} ${options.url ?? '?'} — retry in ${retryAfter}s`);
|
|
53
|
-
// Retry up to 2 times against rate limits before giving up.
|
|
54
|
-
return (options.request?.retryCount ?? 0) < 2;
|
|
55
|
-
},
|
|
56
|
-
onSecondaryRateLimit: (retryAfter, options) => {
|
|
57
|
-
logWarning(`GitHub secondary rate limit on ${options.method ?? '?'} ${options.url ?? '?'} — retry in ${retryAfter}s`);
|
|
58
|
-
return true;
|
|
59
|
-
},
|
|
60
|
-
},
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Pull every issue from the repo, paginated. Returns issues only (PRs
|
|
65
|
-
* filtered out, since GitHub returns PRs through this endpoint too).
|
|
66
|
-
*/
|
|
67
|
-
export async function fetchAllRepoIssues(octokit, owner, repo) {
|
|
68
|
-
const all = [];
|
|
69
|
-
let page = 1;
|
|
70
|
-
for (;;) {
|
|
71
|
-
const { data } = await octokit.request('GET /repos/{owner}/{repo}/issues', {
|
|
72
|
-
owner,
|
|
73
|
-
repo,
|
|
74
|
-
state: 'all',
|
|
75
|
-
per_page: PER_PAGE,
|
|
76
|
-
page,
|
|
77
|
-
filter: 'all',
|
|
78
|
-
});
|
|
79
|
-
if (data.length === 0) {
|
|
80
|
-
break;
|
|
81
|
-
}
|
|
82
|
-
for (const item of data) {
|
|
83
|
-
if (!isPullRequest(item)) {
|
|
84
|
-
all.push(item);
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
if (data.length < PER_PAGE) {
|
|
88
|
-
break;
|
|
89
|
-
}
|
|
90
|
-
page += 1;
|
|
91
|
-
}
|
|
92
|
-
return all;
|
|
93
|
-
}
|
|
94
|
-
function toUpsertInput(item) {
|
|
95
|
-
const sourceState = item.state === 'open' ? 'open' : 'closed';
|
|
96
|
-
return {
|
|
97
|
-
sourceId: String(item.number),
|
|
98
|
-
name: item.title,
|
|
99
|
-
description: item.body ?? null,
|
|
100
|
-
sourceUrl: item.html_url,
|
|
101
|
-
sourceState,
|
|
102
|
-
sourceUpdatedAt: item.updated_at,
|
|
103
|
-
sourceData: {
|
|
104
|
-
number: item.number,
|
|
105
|
-
state: item.state,
|
|
106
|
-
updated_at: item.updated_at,
|
|
107
|
-
html_url: item.html_url,
|
|
108
|
-
},
|
|
109
|
-
initialStatus: sourceState === 'open' ? 'backlog' : 'archived',
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
|
-
export async function syncGithubIssues(options) {
|
|
113
|
-
const { productId, githubToken, owner, repo, verbose } = options;
|
|
114
|
-
const lock = acquireSyncGithubIssuesLock(productId);
|
|
115
|
-
if (!lock) {
|
|
116
|
-
return {
|
|
117
|
-
status: 'error',
|
|
118
|
-
message: 'Another GitHub sync is already running for this product',
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
// Capture the cutoff BEFORE any mutating work. The deletion sweep at
|
|
122
|
-
// the end uses this to identify rows we didn't touch in this run.
|
|
123
|
-
const syncStartedAt = new Date().toISOString();
|
|
124
|
-
try {
|
|
125
|
-
updateSyncGithubIssuesState(productId, {
|
|
126
|
-
lastAttemptedAt: syncStartedAt,
|
|
127
|
-
});
|
|
128
|
-
logInfo(`Syncing GitHub issues for ${owner}/${repo} → product ${productId}`);
|
|
129
|
-
const octokit = buildOctokit(githubToken);
|
|
130
|
-
const remoteIssues = await fetchAllRepoIssues(octokit, owner, repo);
|
|
131
|
-
logInfo(`Fetched ${remoteIssues.length} issues from GitHub`);
|
|
132
|
-
if (verbose) {
|
|
133
|
-
// Note: the listing is purely informational. We deliberately don't
|
|
134
|
-
// pre-load existing rows for diff purposes — the RPC does that
|
|
135
|
-
// server-side per row, with the right hash logic.
|
|
136
|
-
logInfo(`Will upsert ${remoteIssues.length} issues in batches`);
|
|
137
|
-
}
|
|
138
|
-
const inputs = remoteIssues.map(toUpsertInput);
|
|
139
|
-
const { result, failedBatches } = await upsertInBatches(productId, 'github', inputs, (error, batchIndex) => {
|
|
140
|
-
logError(`Batch ${batchIndex} failed: ${error.message}`);
|
|
141
|
-
});
|
|
142
|
-
let deletedCount = 0;
|
|
143
|
-
if (failedBatches === 0) {
|
|
144
|
-
// All batches succeeded — safe to sweep stale rows.
|
|
145
|
-
deletedCount = await markExternalIssuesDeletedSince(productId, 'github', syncStartedAt);
|
|
146
|
-
}
|
|
147
|
-
else {
|
|
148
|
-
logWarning(`Skipping deletion sweep: ${failedBatches} batch(es) failed; would risk wrongly flagging live issues as deleted`);
|
|
149
|
-
}
|
|
150
|
-
updateSyncGithubIssuesState(productId, {
|
|
151
|
-
lastSyncedAt: new Date().toISOString(),
|
|
152
|
-
lastRepoFullName: `${owner}/${repo}`,
|
|
153
|
-
lastError: failedBatches > 0
|
|
154
|
-
? `${failedBatches} batch(es) failed during sync`
|
|
155
|
-
: undefined,
|
|
156
|
-
});
|
|
157
|
-
const summary = `created=${result.created} updated=${result.updated} refreshed=${result.refreshed} deleted=${deletedCount}${failedBatches > 0 ? ` (${failedBatches} batch(es) failed)` : ''}`;
|
|
158
|
-
if (failedBatches === 0) {
|
|
159
|
-
logSuccess(`GitHub sync complete: ${summary}`);
|
|
160
|
-
}
|
|
161
|
-
else {
|
|
162
|
-
logWarning(`GitHub sync completed with errors: ${summary}`);
|
|
163
|
-
}
|
|
164
|
-
return {
|
|
165
|
-
status: failedBatches === 0 ? 'success' : 'error',
|
|
166
|
-
message: summary,
|
|
167
|
-
repository: `${owner}/${repo}`,
|
|
168
|
-
fetchedCount: remoteIssues.length,
|
|
169
|
-
createdCount: result.created,
|
|
170
|
-
updatedCount: result.updated,
|
|
171
|
-
refreshedCount: result.refreshed,
|
|
172
|
-
deletedCount,
|
|
173
|
-
};
|
|
174
|
-
}
|
|
175
|
-
catch (error) {
|
|
176
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
177
|
-
logError(`GitHub sync failed: ${errorMessage}`);
|
|
178
|
-
updateSyncGithubIssuesState(productId, { lastError: errorMessage });
|
|
179
|
-
return {
|
|
180
|
-
status: 'error',
|
|
181
|
-
message: `GitHub sync failed: ${errorMessage}`,
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
finally {
|
|
185
|
-
lock.release();
|
|
186
|
-
}
|
|
187
|
-
}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-product sync state for sync-github-issues. Stored at
|
|
3
|
-
* `~/.edsger/sync-github-issues-state/<productId>.json`.
|
|
4
|
-
*
|
|
5
|
-
* The cursor is reserved for a future incremental-sync optimisation. The
|
|
6
|
-
* current implementation does a full pull on every run because GitHub's
|
|
7
|
-
* `since` filter doesn't surface deletions; we keep the field around so we
|
|
8
|
-
* can add a hybrid (incremental updates + periodic full sweep) later
|
|
9
|
-
* without another schema bump.
|
|
10
|
-
*/
|
|
11
|
-
import { type LockHandle } from '../find-shared/scan-state.js';
|
|
12
|
-
export type { LockHandle };
|
|
13
|
-
export interface SyncGithubIssuesState {
|
|
14
|
-
/** ISO timestamp of the last successful sync. */
|
|
15
|
-
lastSyncedAt?: string;
|
|
16
|
-
/** ISO timestamp we last attempted (success or fail). */
|
|
17
|
-
lastAttemptedAt?: string;
|
|
18
|
-
/** Last error message, if the most recent run failed. */
|
|
19
|
-
lastError?: string;
|
|
20
|
-
/** GitHub repo we last synced from, as "owner/repo". */
|
|
21
|
-
lastRepoFullName?: string;
|
|
22
|
-
}
|
|
23
|
-
export declare const loadSyncGithubIssuesState: (productId: string) => SyncGithubIssuesState;
|
|
24
|
-
export declare const saveSyncGithubIssuesState: (productId: string, state: SyncGithubIssuesState) => void;
|
|
25
|
-
export declare const updateSyncGithubIssuesState: (productId: string, patch: Partial<SyncGithubIssuesState>) => SyncGithubIssuesState;
|
|
26
|
-
export declare const acquireSyncGithubIssuesLock: (productId: string, staleAfterMs?: number) => LockHandle | null;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-product sync state for sync-github-issues. Stored at
|
|
3
|
-
* `~/.edsger/sync-github-issues-state/<productId>.json`.
|
|
4
|
-
*
|
|
5
|
-
* The cursor is reserved for a future incremental-sync optimisation. The
|
|
6
|
-
* current implementation does a full pull on every run because GitHub's
|
|
7
|
-
* `since` filter doesn't surface deletions; we keep the field around so we
|
|
8
|
-
* can add a hybrid (incremental updates + periodic full sweep) later
|
|
9
|
-
* without another schema bump.
|
|
10
|
-
*/
|
|
11
|
-
import { createScanStateModule, } from '../find-shared/scan-state.js';
|
|
12
|
-
const m = createScanStateModule({
|
|
13
|
-
dirName: 'sync-github-issues-state',
|
|
14
|
-
});
|
|
15
|
-
export const loadSyncGithubIssuesState = m.load;
|
|
16
|
-
export const saveSyncGithubIssuesState = m.save;
|
|
17
|
-
export const updateSyncGithubIssuesState = m.update;
|
|
18
|
-
export const acquireSyncGithubIssuesLock = m.acquireLock;
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Shared types for sync-github-issues. Kept in their own file so the diff
|
|
3
|
-
* helper can import them without dragging in MCP/Octokit deps (matters for
|
|
4
|
-
* unit tests and tree-shaking).
|
|
5
|
-
*/
|
|
6
|
-
/**
|
|
7
|
-
* Subset of the GitHub Issues API response we actually care about.
|
|
8
|
-
* Defined locally so unit tests don't need @octokit installed.
|
|
9
|
-
*/
|
|
10
|
-
export interface GitHubIssueLite {
|
|
11
|
-
number: number;
|
|
12
|
-
title: string;
|
|
13
|
-
body: string | null | undefined;
|
|
14
|
-
state: 'open' | 'closed' | string;
|
|
15
|
-
html_url: string;
|
|
16
|
-
updated_at: string;
|
|
17
|
-
/** Present iff GitHub returned this row as a Pull Request, not an Issue. */
|
|
18
|
-
pull_request?: unknown;
|
|
19
|
-
}
|
|
20
|
-
export interface SyncResult {
|
|
21
|
-
status: 'success' | 'error';
|
|
22
|
-
message: string;
|
|
23
|
-
/** owner/repo we synced from. */
|
|
24
|
-
repository?: string;
|
|
25
|
-
/** Total issues fetched from GitHub (after PR filter). */
|
|
26
|
-
fetchedCount?: number;
|
|
27
|
-
/** New rows inserted locally. */
|
|
28
|
-
createdCount?: number;
|
|
29
|
-
/** Existing rows whose remote payload had advanced and were updated. */
|
|
30
|
-
updatedCount?: number;
|
|
31
|
-
/** Existing rows whose source_state was refreshed without payload change. */
|
|
32
|
-
refreshedCount?: number;
|
|
33
|
-
/** Rows we flagged as deleted because they no longer exist on GitHub. */
|
|
34
|
-
deletedCount?: number;
|
|
35
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sync-github-pull-requests phase: pull every pull request from a repository's
|
|
3
|
-
* connected GitHub repo and mirror them into the `pull_requests` table scoped
|
|
4
|
-
* by `repository_id`. Deterministic — no Claude Agent SDK; plain Octokit plus
|
|
5
|
-
* the user's RLS-scoped Supabase session.
|
|
6
|
-
*
|
|
7
|
-
* Idempotent: rows are keyed on (repository_id, pull_request_number). New PRs
|
|
8
|
-
* are inserted, and the GitHub-owned fields (status/title/description) of
|
|
9
|
-
* already-synced PRs are refreshed. Re-running never duplicates a PR.
|
|
10
|
-
*/
|
|
11
|
-
import { Octokit } from '@octokit/rest';
|
|
12
|
-
import { type GitHubPullRequestLite, type SyncPullRequestsResult } from './types.js';
|
|
13
|
-
export interface SyncGithubPullRequestsOptions {
|
|
14
|
-
repositoryId: string;
|
|
15
|
-
/** GitHub installation token (or PAT). */
|
|
16
|
-
githubToken: string;
|
|
17
|
-
owner: string;
|
|
18
|
-
repo: string;
|
|
19
|
-
verbose?: boolean;
|
|
20
|
-
}
|
|
21
|
-
/** Pull every pull request from the repo, paginated (state=all). */
|
|
22
|
-
export declare function fetchAllRepoPullRequests(octokit: Octokit, owner: string, repo: string): Promise<GitHubPullRequestLite[]>;
|
|
23
|
-
export declare function syncGithubPullRequests(options: SyncGithubPullRequestsOptions): Promise<SyncPullRequestsResult>;
|
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sync-github-pull-requests phase: pull every pull request from a repository's
|
|
3
|
-
* connected GitHub repo and mirror them into the `pull_requests` table scoped
|
|
4
|
-
* by `repository_id`. Deterministic — no Claude Agent SDK; plain Octokit plus
|
|
5
|
-
* the user's RLS-scoped Supabase session.
|
|
6
|
-
*
|
|
7
|
-
* Idempotent: rows are keyed on (repository_id, pull_request_number). New PRs
|
|
8
|
-
* are inserted, and the GitHub-owned fields (status/title/description) of
|
|
9
|
-
* already-synced PRs are refreshed. Re-running never duplicates a PR.
|
|
10
|
-
*/
|
|
11
|
-
import { retry } from '@octokit/plugin-retry';
|
|
12
|
-
import { throttling } from '@octokit/plugin-throttling';
|
|
13
|
-
import { Octokit } from '@octokit/rest';
|
|
14
|
-
import { ensureSupabaseSession, getSupabase } from '../../supabase/client.js';
|
|
15
|
-
import { logError, logInfo, logSuccess, logWarning, } from '../../utils/logger.js';
|
|
16
|
-
import { acquireSyncGithubPullRequestsLock, updateSyncGithubPullRequestsState, } from './state.js';
|
|
17
|
-
// The plugins use `@octokit/core` 7.x types, while @octokit/rest@20 hoists
|
|
18
|
-
// to core 5.x at the workspace root. Runtime is fine; the cast tells TS to
|
|
19
|
-
// accept the plugin chain (same pattern as sync-github-issues).
|
|
20
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any -- octokit version drift across the workspace
|
|
21
|
-
const ResilientOctokit = Octokit.plugin(retry, throttling);
|
|
22
|
-
/** GitHub list-pulls max page size. */
|
|
23
|
-
const PER_PAGE = 100;
|
|
24
|
-
/** Build an Octokit instance with retry + throttling configured for sync. */
|
|
25
|
-
function buildOctokit(token) {
|
|
26
|
-
return new ResilientOctokit({
|
|
27
|
-
auth: token,
|
|
28
|
-
retry: { doNotRetry: [400, 401, 403, 404, 422] },
|
|
29
|
-
throttle: {
|
|
30
|
-
onRateLimit: (retryAfter, options) => {
|
|
31
|
-
logWarning(`GitHub rate limit hit on ${options.method ?? '?'} ${options.url ?? '?'} — retry in ${retryAfter}s`);
|
|
32
|
-
return (options.request?.retryCount ?? 0) < 2;
|
|
33
|
-
},
|
|
34
|
-
onSecondaryRateLimit: (retryAfter, options) => {
|
|
35
|
-
logWarning(`GitHub secondary rate limit on ${options.method ?? '?'} ${options.url ?? '?'} — retry in ${retryAfter}s`);
|
|
36
|
-
return true;
|
|
37
|
-
},
|
|
38
|
-
},
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
/** Pull every pull request from the repo, paginated (state=all). */
|
|
42
|
-
export async function fetchAllRepoPullRequests(octokit, owner, repo) {
|
|
43
|
-
const all = [];
|
|
44
|
-
let page = 1;
|
|
45
|
-
for (;;) {
|
|
46
|
-
const { data } = await octokit.request('GET /repos/{owner}/{repo}/pulls', {
|
|
47
|
-
owner,
|
|
48
|
-
repo,
|
|
49
|
-
state: 'all',
|
|
50
|
-
per_page: PER_PAGE,
|
|
51
|
-
page,
|
|
52
|
-
sort: 'created',
|
|
53
|
-
direction: 'asc',
|
|
54
|
-
});
|
|
55
|
-
if (data.length === 0) {
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
all.push(...data);
|
|
59
|
-
if (data.length < PER_PAGE) {
|
|
60
|
-
break;
|
|
61
|
-
}
|
|
62
|
-
page += 1;
|
|
63
|
-
}
|
|
64
|
-
return all;
|
|
65
|
-
}
|
|
66
|
-
/** Map a GitHub PR's open/closed/merged state to our PR status enum. */
|
|
67
|
-
function toStatus(pr) {
|
|
68
|
-
if (pr.merged_at) {
|
|
69
|
-
return 'merged';
|
|
70
|
-
}
|
|
71
|
-
if (pr.state === 'closed') {
|
|
72
|
-
return 'closed';
|
|
73
|
-
}
|
|
74
|
-
return 'pr_opened';
|
|
75
|
-
}
|
|
76
|
-
export async function syncGithubPullRequests(options) {
|
|
77
|
-
const { repositoryId, githubToken, owner, repo, verbose } = options;
|
|
78
|
-
// Guard against two concurrent syncs of the same repo racing into duplicate
|
|
79
|
-
// inserts (the unique index would reject the loser, but failing fast is
|
|
80
|
-
// friendlier than surfacing a constraint error).
|
|
81
|
-
const lock = acquireSyncGithubPullRequestsLock(repositoryId);
|
|
82
|
-
if (!lock) {
|
|
83
|
-
return {
|
|
84
|
-
status: 'error',
|
|
85
|
-
message: 'Another GitHub pull request sync is already running for this repository',
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
try {
|
|
89
|
-
updateSyncGithubPullRequestsState(repositoryId, {
|
|
90
|
-
lastAttemptedAt: new Date().toISOString(),
|
|
91
|
-
});
|
|
92
|
-
const ready = await ensureSupabaseSession();
|
|
93
|
-
if (!ready) {
|
|
94
|
-
return {
|
|
95
|
-
status: 'error',
|
|
96
|
-
message: 'Supabase session unavailable. Sign in to the Edsger desktop app to authorize the CLI.',
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
const supabase = getSupabase();
|
|
100
|
-
logInfo(`Syncing GitHub pull requests for ${owner}/${repo} → repository ${repositoryId}`);
|
|
101
|
-
const octokit = buildOctokit(githubToken);
|
|
102
|
-
const remotePRs = await fetchAllRepoPullRequests(octokit, owner, repo);
|
|
103
|
-
logInfo(`Fetched ${remotePRs.length} pull requests from GitHub`);
|
|
104
|
-
// Existing repo-scoped PRs, keyed by GitHub PR number, so we never create
|
|
105
|
-
// a duplicate of one that was synced in a previous run.
|
|
106
|
-
const { data: existingRows, error: existingError } = await supabase
|
|
107
|
-
.from('pull_requests')
|
|
108
|
-
.select('id, pull_request_number, status, name, description')
|
|
109
|
-
.eq('repository_id', repositoryId);
|
|
110
|
-
if (existingError) {
|
|
111
|
-
throw new Error(`Failed to read existing pull requests: ${existingError.message}`);
|
|
112
|
-
}
|
|
113
|
-
const existingByNumber = new Map();
|
|
114
|
-
for (const row of existingRows ?? []) {
|
|
115
|
-
if (row.pull_request_number !== null) {
|
|
116
|
-
existingByNumber.set(row.pull_request_number, {
|
|
117
|
-
id: row.id,
|
|
118
|
-
status: row.status,
|
|
119
|
-
name: row.name,
|
|
120
|
-
description: row.description,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
const toInsert = [];
|
|
125
|
-
const toUpdate = [];
|
|
126
|
-
for (const pr of remotePRs) {
|
|
127
|
-
const status = toStatus(pr);
|
|
128
|
-
const existing = existingByNumber.get(pr.number);
|
|
129
|
-
if (!existing) {
|
|
130
|
-
toInsert.push({
|
|
131
|
-
repository_id: repositoryId,
|
|
132
|
-
sequence: pr.number,
|
|
133
|
-
name: pr.title,
|
|
134
|
-
description: pr.body ?? null,
|
|
135
|
-
branch_name: pr.head?.ref ?? null,
|
|
136
|
-
pull_request_url: pr.html_url,
|
|
137
|
-
pull_request_number: pr.number,
|
|
138
|
-
status,
|
|
139
|
-
});
|
|
140
|
-
continue;
|
|
141
|
-
}
|
|
142
|
-
// Refresh GitHub-owned fields when they drift (e.g. PR got merged/closed).
|
|
143
|
-
const patch = {};
|
|
144
|
-
if (existing.status !== status) {
|
|
145
|
-
patch.status = status;
|
|
146
|
-
}
|
|
147
|
-
if (existing.name !== pr.title) {
|
|
148
|
-
patch.name = pr.title;
|
|
149
|
-
}
|
|
150
|
-
if ((existing.description ?? null) !== (pr.body ?? null)) {
|
|
151
|
-
patch.description = pr.body ?? null;
|
|
152
|
-
}
|
|
153
|
-
if (Object.keys(patch).length > 0) {
|
|
154
|
-
toUpdate.push({ id: existing.id, patch });
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
let createdCount = 0;
|
|
158
|
-
if (toInsert.length > 0) {
|
|
159
|
-
const { error: insertError } = await supabase
|
|
160
|
-
.from('pull_requests')
|
|
161
|
-
.insert(toInsert);
|
|
162
|
-
if (insertError) {
|
|
163
|
-
throw new Error(`Failed to insert pull requests: ${insertError.message}`);
|
|
164
|
-
}
|
|
165
|
-
createdCount = toInsert.length;
|
|
166
|
-
if (verbose) {
|
|
167
|
-
logInfo(`Inserted ${createdCount} new pull requests`);
|
|
168
|
-
}
|
|
169
|
-
}
|
|
170
|
-
let updatedCount = 0;
|
|
171
|
-
for (const { id, patch } of toUpdate) {
|
|
172
|
-
const { error: updateError } = await supabase
|
|
173
|
-
.from('pull_requests')
|
|
174
|
-
.update({ ...patch, updated_at: new Date().toISOString() })
|
|
175
|
-
.eq('id', id);
|
|
176
|
-
if (updateError) {
|
|
177
|
-
logWarning(`Failed to refresh pull request ${id}: ${updateError.message}`);
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
updatedCount++;
|
|
181
|
-
}
|
|
182
|
-
const summary = `fetched=${remotePRs.length} created=${createdCount} updated=${updatedCount}`;
|
|
183
|
-
logSuccess(`GitHub PR sync complete: ${summary}`);
|
|
184
|
-
updateSyncGithubPullRequestsState(repositoryId, {
|
|
185
|
-
lastSyncedAt: new Date().toISOString(),
|
|
186
|
-
lastRepoFullName: `${owner}/${repo}`,
|
|
187
|
-
lastError: undefined,
|
|
188
|
-
});
|
|
189
|
-
return {
|
|
190
|
-
status: 'success',
|
|
191
|
-
message: summary,
|
|
192
|
-
repository: `${owner}/${repo}`,
|
|
193
|
-
fetchedCount: remotePRs.length,
|
|
194
|
-
createdCount,
|
|
195
|
-
updatedCount,
|
|
196
|
-
};
|
|
197
|
-
}
|
|
198
|
-
catch (error) {
|
|
199
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
200
|
-
logError(`GitHub PR sync failed: ${errorMessage}`);
|
|
201
|
-
updateSyncGithubPullRequestsState(repositoryId, { lastError: errorMessage });
|
|
202
|
-
return {
|
|
203
|
-
status: 'error',
|
|
204
|
-
message: `GitHub PR sync failed: ${errorMessage}`,
|
|
205
|
-
};
|
|
206
|
-
}
|
|
207
|
-
finally {
|
|
208
|
-
lock.release();
|
|
209
|
-
}
|
|
210
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-repository sync state for sync-github-pull-requests. Stored at
|
|
3
|
-
* `~/.edsger/sync-github-pull-requests-state/<repositoryId>.json`.
|
|
4
|
-
*
|
|
5
|
-
* The lock guards against two concurrent syncs of the same repository racing
|
|
6
|
-
* each other into duplicate inserts. State fields track the last run for
|
|
7
|
-
* diagnostics and a future incremental-sync optimisation.
|
|
8
|
-
*/
|
|
9
|
-
import { type LockHandle } from '../find-shared/scan-state.js';
|
|
10
|
-
export type { LockHandle };
|
|
11
|
-
export interface SyncGithubPullRequestsState {
|
|
12
|
-
/** ISO timestamp of the last successful sync. */
|
|
13
|
-
lastSyncedAt?: string;
|
|
14
|
-
/** ISO timestamp we last attempted (success or fail). */
|
|
15
|
-
lastAttemptedAt?: string;
|
|
16
|
-
/** Last error message, if the most recent run failed. */
|
|
17
|
-
lastError?: string;
|
|
18
|
-
/** GitHub repo we last synced from, as "owner/repo". */
|
|
19
|
-
lastRepoFullName?: string;
|
|
20
|
-
}
|
|
21
|
-
export declare const loadSyncGithubPullRequestsState: (productId: string) => SyncGithubPullRequestsState;
|
|
22
|
-
export declare const saveSyncGithubPullRequestsState: (productId: string, state: SyncGithubPullRequestsState) => void;
|
|
23
|
-
export declare const updateSyncGithubPullRequestsState: (productId: string, patch: Partial<SyncGithubPullRequestsState>) => SyncGithubPullRequestsState;
|
|
24
|
-
export declare const acquireSyncGithubPullRequestsLock: (productId: string, staleAfterMs?: number) => LockHandle | null;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-repository sync state for sync-github-pull-requests. Stored at
|
|
3
|
-
* `~/.edsger/sync-github-pull-requests-state/<repositoryId>.json`.
|
|
4
|
-
*
|
|
5
|
-
* The lock guards against two concurrent syncs of the same repository racing
|
|
6
|
-
* each other into duplicate inserts. State fields track the last run for
|
|
7
|
-
* diagnostics and a future incremental-sync optimisation.
|
|
8
|
-
*/
|
|
9
|
-
import { createScanStateModule, } from '../find-shared/scan-state.js';
|
|
10
|
-
const m = createScanStateModule({
|
|
11
|
-
dirName: 'sync-github-pull-requests-state',
|
|
12
|
-
});
|
|
13
|
-
export const loadSyncGithubPullRequestsState = m.load;
|
|
14
|
-
export const saveSyncGithubPullRequestsState = m.save;
|
|
15
|
-
export const updateSyncGithubPullRequestsState = m.update;
|
|
16
|
-
export const acquireSyncGithubPullRequestsLock = m.acquireLock;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/** Minimal shape of a GitHub pull request from the list endpoint. */
|
|
2
|
-
export interface GitHubPullRequestLite {
|
|
3
|
-
number: number;
|
|
4
|
-
title: string;
|
|
5
|
-
body: string | null;
|
|
6
|
-
html_url: string;
|
|
7
|
-
state: string;
|
|
8
|
-
draft?: boolean;
|
|
9
|
-
merged_at: string | null;
|
|
10
|
-
updated_at: string;
|
|
11
|
-
head: {
|
|
12
|
-
ref: string;
|
|
13
|
-
};
|
|
14
|
-
}
|
|
15
|
-
export interface SyncPullRequestsResult {
|
|
16
|
-
status: 'success' | 'error';
|
|
17
|
-
message: string;
|
|
18
|
-
repository?: string;
|
|
19
|
-
fetchedCount?: number;
|
|
20
|
-
createdCount?: number;
|
|
21
|
-
updatedCount?: number;
|
|
22
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Phase: sync-org-repos
|
|
3
|
-
*
|
|
4
|
-
* Fetches all repositories from a GitHub organization via the Edsger GitHub
|
|
5
|
-
* App (server-side, through the MCP `github/org_repos` endpoint), then upserts
|
|
6
|
-
* a row into the team-scoped `repositories` table for each repo. Products are
|
|
7
|
-
* NOT created here — a product is a higher-level grouping that a user links one
|
|
8
|
-
* or more repositories to afterwards.
|
|
9
|
-
*
|
|
10
|
-
* Repos are listed with a short-lived GitHub App installation token minted on
|
|
11
|
-
* the server, so this no longer depends on the user's machine having the `gh`
|
|
12
|
-
* CLI installed, authenticated, and on PATH. Forks and archived repos are
|
|
13
|
-
* filtered out server-side.
|
|
14
|
-
*/
|
|
15
|
-
export interface SyncOrgReposResult {
|
|
16
|
-
status: 'success' | 'error';
|
|
17
|
-
message: string;
|
|
18
|
-
total: number;
|
|
19
|
-
created: number;
|
|
20
|
-
skipped: number;
|
|
21
|
-
repos?: string[];
|
|
22
|
-
}
|
|
23
|
-
export declare function syncOrgRepos(opts: {
|
|
24
|
-
teamId: string;
|
|
25
|
-
orgLogin: string;
|
|
26
|
-
userId: string;
|
|
27
|
-
verbose?: boolean;
|
|
28
|
-
}): Promise<SyncOrgReposResult>;
|