edsger 0.77.0 → 0.79.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 +1348 -1247
- 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/api-docs/index.d.ts +0 -18
- package/dist/commands/api-docs/index.js +0 -41
- 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 -45
- package/dist/commands/quality-benchmark/index.js +0 -247
- 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/api-docs/index.d.ts +0 -47
- package/dist/phases/api-docs/index.js +0 -254
- package/dist/phases/api-docs/mcp-server.d.ts +0 -25
- package/dist/phases/api-docs/mcp-server.js +0 -82
- package/dist/phases/api-docs/prompts.d.ts +0 -16
- package/dist/phases/api-docs/prompts.js +0 -65
- package/dist/phases/api-docs/types.d.ts +0 -22
- package/dist/phases/api-docs/types.js +0 -10
- 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 -268
- package/dist/phases/find-architecture/prompts.d.ts +0 -32
- package/dist/phases/find-architecture/prompts.js +0 -129
- 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 -238
- 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/baseline.d.ts +0 -45
- package/dist/phases/find-shared/baseline.js +0 -56
- package/dist/phases/find-shared/custom-rules.d.ts +0 -39
- package/dist/phases/find-shared/custom-rules.js +0 -75
- package/dist/phases/find-shared/detect-context.d.ts +0 -40
- package/dist/phases/find-shared/detect-context.js +0 -247
- 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 -54
- package/dist/phases/find-shared/mcp.js +0 -127
- package/dist/phases/find-shared/rule-config.d.ts +0 -37
- package/dist/phases/find-shared/rule-config.js +0 -67
- package/dist/phases/find-shared/rule-packs.d.ts +0 -65
- package/dist/phases/find-shared/rule-packs.js +0 -124
- 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-shared/scoped-read.d.ts +0 -12
- package/dist/phases/find-shared/scoped-read.js +0 -33
- package/dist/phases/find-smells/index.d.ts +0 -50
- package/dist/phases/find-smells/index.js +0 -305
- package/dist/phases/find-smells/prompts.d.ts +0 -31
- package/dist/phases/find-smells/prompts.js +0 -130
- 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/gate.d.ts +0 -50
- package/dist/phases/quality-benchmark/gate.js +0 -91
- package/dist/phases/quality-benchmark/index.d.ts +0 -65
- package/dist/phases/quality-benchmark/index.js +0 -208
- 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 -45
- package/dist/phases/quality-benchmark/parsers.js +0 -1311
- 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 -1211
- package/dist/phases/quality-benchmark/tool-catalog.d.ts +0 -33
- package/dist/phases/quality-benchmark/tool-catalog.js +0 -693
- 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 -319
- 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,133 +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
|
-
import { callMcpEndpoint } from '../../api/mcp-client.js';
|
|
16
|
-
import { getSupabase, hasSupabaseSession } from '../../supabase/client.js';
|
|
17
|
-
import { logDebug, logError, logInfo, logWarning } from '../../utils/logger.js';
|
|
18
|
-
const ORG_NAME_RE = /^[a-zA-Z0-9](?:[a-zA-Z0-9-]*[a-zA-Z0-9])?$/;
|
|
19
|
-
async function fetchOrgRepos(teamId, orgLogin, verbose) {
|
|
20
|
-
logInfo(`Fetching repos for org "${orgLogin}" via Edsger GitHub App...`);
|
|
21
|
-
const result = (await callMcpEndpoint('github/org_repos', {
|
|
22
|
-
team_id: teamId,
|
|
23
|
-
org: orgLogin,
|
|
24
|
-
}));
|
|
25
|
-
if (!result.configured) {
|
|
26
|
-
throw new Error(result.message ||
|
|
27
|
-
`The Edsger GitHub App is not configured for "${orgLogin}".`);
|
|
28
|
-
}
|
|
29
|
-
const repos = result.repos ?? [];
|
|
30
|
-
if (verbose) {
|
|
31
|
-
logDebug(`Fetched ${repos.length} source repos from ${orgLogin}`);
|
|
32
|
-
}
|
|
33
|
-
return repos;
|
|
34
|
-
}
|
|
35
|
-
export async function syncOrgRepos(opts) {
|
|
36
|
-
const { teamId, orgLogin, userId, verbose } = opts;
|
|
37
|
-
if (!ORG_NAME_RE.test(orgLogin) || orgLogin.length > 39) {
|
|
38
|
-
return {
|
|
39
|
-
status: 'error',
|
|
40
|
-
message: `Invalid GitHub organization name: "${orgLogin}"`,
|
|
41
|
-
total: 0,
|
|
42
|
-
created: 0,
|
|
43
|
-
skipped: 0,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
if (!hasSupabaseSession()) {
|
|
47
|
-
return {
|
|
48
|
-
status: 'error',
|
|
49
|
-
message: 'Supabase session unavailable. Sign in to the Edsger desktop app.',
|
|
50
|
-
total: 0,
|
|
51
|
-
created: 0,
|
|
52
|
-
skipped: 0,
|
|
53
|
-
};
|
|
54
|
-
}
|
|
55
|
-
const supabase = getSupabase();
|
|
56
|
-
let orgRepos;
|
|
57
|
-
try {
|
|
58
|
-
orgRepos = await fetchOrgRepos(teamId, orgLogin, verbose);
|
|
59
|
-
}
|
|
60
|
-
catch (err) {
|
|
61
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
62
|
-
logError(`Failed to fetch repos: ${msg}`);
|
|
63
|
-
return {
|
|
64
|
-
status: 'error',
|
|
65
|
-
message: `Failed to fetch repos from GitHub: ${msg}`,
|
|
66
|
-
total: 0,
|
|
67
|
-
created: 0,
|
|
68
|
-
skipped: 0,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
if (orgRepos.length === 0) {
|
|
72
|
-
logWarning(`No repos found in org "${orgLogin}"`);
|
|
73
|
-
return {
|
|
74
|
-
status: 'success',
|
|
75
|
-
message: `No repositories found in ${orgLogin}`,
|
|
76
|
-
total: 0,
|
|
77
|
-
created: 0,
|
|
78
|
-
skipped: 0,
|
|
79
|
-
};
|
|
80
|
-
}
|
|
81
|
-
logInfo(`Found ${orgRepos.length} repos in ${orgLogin}`);
|
|
82
|
-
const repoFullNames = orgRepos.map((r) => r.full_name);
|
|
83
|
-
const { data: existing } = await supabase
|
|
84
|
-
.from('repositories')
|
|
85
|
-
.select('full_name')
|
|
86
|
-
.eq('team_id', teamId)
|
|
87
|
-
.in('full_name', repoFullNames);
|
|
88
|
-
const existingRepos = new Set((existing || []).map((r) => r.full_name));
|
|
89
|
-
const toCreate = orgRepos.filter((r) => !existingRepos.has(r.full_name));
|
|
90
|
-
// Refresh metadata + last_synced_at on every synced repo (new and existing)
|
|
91
|
-
// via upsert keyed on (team_id, full_name).
|
|
92
|
-
const now = new Date().toISOString();
|
|
93
|
-
const rows = orgRepos.map((repo) => ({
|
|
94
|
-
team_id: teamId,
|
|
95
|
-
created_by: userId,
|
|
96
|
-
github_repo_id: repo.id,
|
|
97
|
-
full_name: repo.full_name,
|
|
98
|
-
owner: repo.full_name.split('/')[0] ?? null,
|
|
99
|
-
name: repo.name,
|
|
100
|
-
url: repo.html_url,
|
|
101
|
-
description: repo.description,
|
|
102
|
-
default_branch: repo.default_branch,
|
|
103
|
-
private: repo.private,
|
|
104
|
-
language: repo.language,
|
|
105
|
-
last_synced_at: now,
|
|
106
|
-
}));
|
|
107
|
-
if (verbose) {
|
|
108
|
-
for (const r of toCreate) {
|
|
109
|
-
logDebug(` Will create repository: ${r.full_name}`);
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
const { error: upsertError } = await supabase
|
|
113
|
-
.from('repositories')
|
|
114
|
-
.upsert(rows, { onConflict: 'team_id,full_name' });
|
|
115
|
-
if (upsertError) {
|
|
116
|
-
logError(`Failed to upsert repositories: ${upsertError.message}`);
|
|
117
|
-
return {
|
|
118
|
-
status: 'error',
|
|
119
|
-
message: `Failed to sync repositories: ${upsertError.message}`,
|
|
120
|
-
total: orgRepos.length,
|
|
121
|
-
created: 0,
|
|
122
|
-
skipped: existingRepos.size,
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
return {
|
|
126
|
-
status: 'success',
|
|
127
|
-
message: `Synced ${orgRepos.length} repos: ${toCreate.length} new, ${existingRepos.size} updated`,
|
|
128
|
-
total: orgRepos.length,
|
|
129
|
-
created: toCreate.length,
|
|
130
|
-
skipped: existingRepos.size,
|
|
131
|
-
repos: toCreate.map((r) => r.full_name),
|
|
132
|
-
};
|
|
133
|
-
}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sync-sentry-issues phase: pull every issue from a Sentry project and
|
|
3
|
-
* mirror them into the product's local issues table. Uses the same
|
|
4
|
-
* source_* schema and batch RPC contract as the GitHub variant — only
|
|
5
|
-
* the API client and the source-state vocabulary
|
|
6
|
-
* (unresolved/resolved/ignored vs open/closed) differ.
|
|
7
|
-
*
|
|
8
|
-
* Production hardening matches sync-github-issues:
|
|
9
|
-
* - Sentry client retries 429 / 5xx / network errors with exponential
|
|
10
|
-
* backoff (honouring Retry-After).
|
|
11
|
-
* - Upserts are batched (MAX_BATCH_SIZE per round-trip).
|
|
12
|
-
* - Deletion sweep is keyed on a sync-start timestamp cutoff.
|
|
13
|
-
* - Skipped if any batch fails, to avoid wrongly marking live issues
|
|
14
|
-
* as deleted from a partial fetch.
|
|
15
|
-
*/
|
|
16
|
-
import { type SentryClientConfig } from './sentry-client.js';
|
|
17
|
-
import { type SentryIssueLite, type SentrySyncResult } from './types.js';
|
|
18
|
-
export interface SyncSentryIssuesOptions extends SentryClientConfig {
|
|
19
|
-
productId: string;
|
|
20
|
-
verbose?: boolean;
|
|
21
|
-
}
|
|
22
|
-
/**
|
|
23
|
-
* Build the markdown description we drop into `issues.description` for a
|
|
24
|
-
* fresh insert. Pulls only fields that are reliably present on the list
|
|
25
|
-
* endpoint — the full event payload would require an extra fetch per
|
|
26
|
-
* issue, which isn't worth it for the sync-list view.
|
|
27
|
-
*/
|
|
28
|
-
export declare function formatSentryDescription(item: SentryIssueLite): string;
|
|
29
|
-
export declare function syncSentryIssues(options: SyncSentryIssuesOptions): Promise<SentrySyncResult>;
|
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* sync-sentry-issues phase: pull every issue from a Sentry project and
|
|
3
|
-
* mirror them into the product's local issues table. Uses the same
|
|
4
|
-
* source_* schema and batch RPC contract as the GitHub variant — only
|
|
5
|
-
* the API client and the source-state vocabulary
|
|
6
|
-
* (unresolved/resolved/ignored vs open/closed) differ.
|
|
7
|
-
*
|
|
8
|
-
* Production hardening matches sync-github-issues:
|
|
9
|
-
* - Sentry client retries 429 / 5xx / network errors with exponential
|
|
10
|
-
* backoff (honouring Retry-After).
|
|
11
|
-
* - Upserts are batched (MAX_BATCH_SIZE per round-trip).
|
|
12
|
-
* - Deletion sweep is keyed on a sync-start timestamp cutoff.
|
|
13
|
-
* - Skipped if any batch fails, to avoid wrongly marking live issues
|
|
14
|
-
* as deleted from a partial fetch.
|
|
15
|
-
*/
|
|
16
|
-
import { logError, logInfo, logSuccess, logWarning } from '../../utils/logger.js';
|
|
17
|
-
import { markExternalIssuesDeletedSince, upsertInBatches, } from '../sync-shared/mcp.js';
|
|
18
|
-
import { SentryClient } from './sentry-client.js';
|
|
19
|
-
import { acquireSyncSentryIssuesLock, updateSyncSentryIssuesState, } from './state.js';
|
|
20
|
-
function initialStatusFor(sentryStatus) {
|
|
21
|
-
return sentryStatus === 'unresolved' ? 'backlog' : 'archived';
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Build the markdown description we drop into `issues.description` for a
|
|
25
|
-
* fresh insert. Pulls only fields that are reliably present on the list
|
|
26
|
-
* endpoint — the full event payload would require an extra fetch per
|
|
27
|
-
* issue, which isn't worth it for the sync-list view.
|
|
28
|
-
*/
|
|
29
|
-
export function formatSentryDescription(item) {
|
|
30
|
-
const lines = [];
|
|
31
|
-
if (item.shortId) {
|
|
32
|
-
lines.push(`**Sentry ID:** ${item.shortId}`);
|
|
33
|
-
}
|
|
34
|
-
if (item.level) {
|
|
35
|
-
lines.push(`**Level:** ${item.level}`);
|
|
36
|
-
}
|
|
37
|
-
if (item.platform) {
|
|
38
|
-
lines.push(`**Platform:** ${item.platform}`);
|
|
39
|
-
}
|
|
40
|
-
if (item.culprit) {
|
|
41
|
-
lines.push(`**Culprit:** ${item.culprit}`);
|
|
42
|
-
}
|
|
43
|
-
if (item.count !== undefined && item.count !== null) {
|
|
44
|
-
const userPart = item.userCount !== undefined && item.userCount !== null
|
|
45
|
-
? ` across ${item.userCount} ${item.userCount === 1 ? 'user' : 'users'}`
|
|
46
|
-
: '';
|
|
47
|
-
lines.push(`**Events:** ${item.count}${userPart}`);
|
|
48
|
-
}
|
|
49
|
-
if (item.firstSeen) {
|
|
50
|
-
lines.push(`**First seen:** ${item.firstSeen}`);
|
|
51
|
-
}
|
|
52
|
-
if (item.lastSeen) {
|
|
53
|
-
lines.push(`**Last seen:** ${item.lastSeen}`);
|
|
54
|
-
}
|
|
55
|
-
lines.push('');
|
|
56
|
-
lines.push(`[View in Sentry](${item.permalink})`);
|
|
57
|
-
return lines.join('\n');
|
|
58
|
-
}
|
|
59
|
-
function toUpsertInput(item) {
|
|
60
|
-
return {
|
|
61
|
-
sourceId: item.id,
|
|
62
|
-
name: item.shortId ? `[${item.shortId}] ${item.title}` : item.title,
|
|
63
|
-
description: formatSentryDescription(item),
|
|
64
|
-
sourceUrl: item.permalink,
|
|
65
|
-
sourceState: item.status,
|
|
66
|
-
sourceUpdatedAt: item.lastSeen,
|
|
67
|
-
sourceData: {
|
|
68
|
-
id: item.id,
|
|
69
|
-
shortId: item.shortId ?? null,
|
|
70
|
-
status: item.status,
|
|
71
|
-
level: item.level ?? null,
|
|
72
|
-
platform: item.platform ?? null,
|
|
73
|
-
count: item.count ?? null,
|
|
74
|
-
userCount: item.userCount ?? null,
|
|
75
|
-
isUnhandled: item.isUnhandled ?? null,
|
|
76
|
-
firstSeen: item.firstSeen ?? null,
|
|
77
|
-
lastSeen: item.lastSeen,
|
|
78
|
-
permalink: item.permalink,
|
|
79
|
-
},
|
|
80
|
-
initialStatus: initialStatusFor(item.status),
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
export async function syncSentryIssues(options) {
|
|
84
|
-
const { productId, authToken, org, project, baseUrl, verbose } = options;
|
|
85
|
-
const lock = acquireSyncSentryIssuesLock(productId);
|
|
86
|
-
if (!lock) {
|
|
87
|
-
return {
|
|
88
|
-
status: 'error',
|
|
89
|
-
message: 'Another Sentry sync is already running for this product',
|
|
90
|
-
};
|
|
91
|
-
}
|
|
92
|
-
const syncStartedAt = new Date().toISOString();
|
|
93
|
-
try {
|
|
94
|
-
updateSyncSentryIssuesState(productId, {
|
|
95
|
-
lastAttemptedAt: syncStartedAt,
|
|
96
|
-
});
|
|
97
|
-
const sourceLabel = `${org}/${project}`;
|
|
98
|
-
logInfo(`Syncing Sentry issues from ${sourceLabel} → product ${productId}`);
|
|
99
|
-
const client = new SentryClient({ authToken, org, project, baseUrl });
|
|
100
|
-
const remoteIssues = await client.listAllIssues();
|
|
101
|
-
logInfo(`Fetched ${remoteIssues.length} issues from Sentry`);
|
|
102
|
-
if (verbose) {
|
|
103
|
-
logInfo(`Will upsert ${remoteIssues.length} issues in batches`);
|
|
104
|
-
}
|
|
105
|
-
const inputs = remoteIssues.map(toUpsertInput);
|
|
106
|
-
const { result, failedBatches } = await upsertInBatches(productId, 'sentry', inputs, (error, batchIndex) => {
|
|
107
|
-
logError(`Batch ${batchIndex} failed: ${error.message}`);
|
|
108
|
-
});
|
|
109
|
-
let deletedCount = 0;
|
|
110
|
-
if (failedBatches === 0) {
|
|
111
|
-
deletedCount = await markExternalIssuesDeletedSince(productId, 'sentry', syncStartedAt);
|
|
112
|
-
}
|
|
113
|
-
else {
|
|
114
|
-
logWarning(`Skipping deletion sweep: ${failedBatches} batch(es) failed; would risk wrongly flagging live issues as deleted`);
|
|
115
|
-
}
|
|
116
|
-
updateSyncSentryIssuesState(productId, {
|
|
117
|
-
lastSyncedAt: new Date().toISOString(),
|
|
118
|
-
lastSource: sourceLabel,
|
|
119
|
-
lastError: failedBatches > 0
|
|
120
|
-
? `${failedBatches} batch(es) failed during sync`
|
|
121
|
-
: undefined,
|
|
122
|
-
});
|
|
123
|
-
const summary = `created=${result.created} updated=${result.updated} refreshed=${result.refreshed} deleted=${deletedCount}${failedBatches > 0 ? ` (${failedBatches} batch(es) failed)` : ''}`;
|
|
124
|
-
if (failedBatches === 0) {
|
|
125
|
-
logSuccess(`Sentry sync complete: ${summary}`);
|
|
126
|
-
}
|
|
127
|
-
else {
|
|
128
|
-
logWarning(`Sentry sync completed with errors: ${summary}`);
|
|
129
|
-
}
|
|
130
|
-
return {
|
|
131
|
-
status: failedBatches === 0 ? 'success' : 'error',
|
|
132
|
-
message: summary,
|
|
133
|
-
source: sourceLabel,
|
|
134
|
-
fetchedCount: remoteIssues.length,
|
|
135
|
-
createdCount: result.created,
|
|
136
|
-
updatedCount: result.updated,
|
|
137
|
-
refreshedCount: result.refreshed,
|
|
138
|
-
deletedCount,
|
|
139
|
-
};
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
143
|
-
logError(`Sentry sync failed: ${errorMessage}`);
|
|
144
|
-
updateSyncSentryIssuesState(productId, { lastError: errorMessage });
|
|
145
|
-
return {
|
|
146
|
-
status: 'error',
|
|
147
|
-
message: `Sentry sync failed: ${errorMessage}`,
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
finally {
|
|
151
|
-
lock.release();
|
|
152
|
-
}
|
|
153
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tiny Sentry REST client: just enough to list issues for a project, with
|
|
3
|
-
* cursor-based pagination via the Link header. Implemented with `fetch`
|
|
4
|
-
* rather than pulling in an SDK so the dep footprint stays small.
|
|
5
|
-
*
|
|
6
|
-
* Production hardening:
|
|
7
|
-
* - per-request timeout via AbortController
|
|
8
|
-
* - retry with exponential backoff for 429 / 5xx, honouring Retry-After
|
|
9
|
-
* - retry for transient network errors (ECONNRESET, ETIMEDOUT, ...)
|
|
10
|
-
*
|
|
11
|
-
* Sentry's default `query` filter is `is:unresolved`, which would silently
|
|
12
|
-
* hide resolved/ignored issues. We pass `query=` (empty string) to bypass
|
|
13
|
-
* that filter and return everything.
|
|
14
|
-
*/
|
|
15
|
-
import { type SentryIssueLite } from './types.js';
|
|
16
|
-
export interface SentryClientConfig {
|
|
17
|
-
authToken: string;
|
|
18
|
-
org: string;
|
|
19
|
-
project: string;
|
|
20
|
-
/** Defaults to https://sentry.io/api/0. Override for self-hosted Sentry. */
|
|
21
|
-
baseUrl?: string;
|
|
22
|
-
/** Per-request timeout in ms. Defaults to 30s. */
|
|
23
|
-
timeoutMs?: number;
|
|
24
|
-
/** Number of retry attempts on retryable failures. Defaults to 3. */
|
|
25
|
-
retries?: number;
|
|
26
|
-
/** Base delay (ms) for exponential backoff. Defaults to 500. Tests pass 1. */
|
|
27
|
-
baseDelayMs?: number;
|
|
28
|
-
}
|
|
29
|
-
export declare class SentryClient {
|
|
30
|
-
private readonly authToken;
|
|
31
|
-
private readonly org;
|
|
32
|
-
private readonly project;
|
|
33
|
-
private readonly baseUrl;
|
|
34
|
-
private readonly timeoutMs;
|
|
35
|
-
private readonly retries;
|
|
36
|
-
private readonly baseDelayMs;
|
|
37
|
-
constructor(config: SentryClientConfig);
|
|
38
|
-
listAllIssues(): Promise<SentryIssueLite[]>;
|
|
39
|
-
/**
|
|
40
|
-
* Single-request retry loop. Retries on:
|
|
41
|
-
* - network error / abort
|
|
42
|
-
* - HTTP 429 (rate limited; honours Retry-After header)
|
|
43
|
-
* - HTTP 5xx (server error)
|
|
44
|
-
*
|
|
45
|
-
* Does NOT retry on 4xx other than 429 — those are deterministic
|
|
46
|
-
* (auth, permission, not found) and won't get better with another try.
|
|
47
|
-
*/
|
|
48
|
-
private requestWithRetry;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Accept either a Sentry host root (`https://sentry.io/`,
|
|
52
|
-
* `https://sentry.internal.acme.com/`) or an explicit API root
|
|
53
|
-
* (`https://sentry.io/api/0`) and return the latter.
|
|
54
|
-
*
|
|
55
|
-
* Matches the official `sentry-cli` convention where users set
|
|
56
|
-
* `SENTRY_URL` to the host and the tool appends `/api/0` itself.
|
|
57
|
-
*/
|
|
58
|
-
export declare function normaliseBaseUrl(input: string): string;
|
|
59
|
-
/**
|
|
60
|
-
* Parse Sentry's Link header. The next-page entry looks like:
|
|
61
|
-
* <https://...>; rel="next"; results="true"; cursor="100:1:0"
|
|
62
|
-
* We return the cursor string only when `results="true"` — Sentry returns
|
|
63
|
-
* a "next" entry even at the end of the list with `results="false"`, and
|
|
64
|
-
* pagination would loop forever if we trusted that.
|
|
65
|
-
*/
|
|
66
|
-
export declare function parseNextCursor(linkHeader: string | null): string | null;
|
|
@@ -1,221 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tiny Sentry REST client: just enough to list issues for a project, with
|
|
3
|
-
* cursor-based pagination via the Link header. Implemented with `fetch`
|
|
4
|
-
* rather than pulling in an SDK so the dep footprint stays small.
|
|
5
|
-
*
|
|
6
|
-
* Production hardening:
|
|
7
|
-
* - per-request timeout via AbortController
|
|
8
|
-
* - retry with exponential backoff for 429 / 5xx, honouring Retry-After
|
|
9
|
-
* - retry for transient network errors (ECONNRESET, ETIMEDOUT, ...)
|
|
10
|
-
*
|
|
11
|
-
* Sentry's default `query` filter is `is:unresolved`, which would silently
|
|
12
|
-
* hide resolved/ignored issues. We pass `query=` (empty string) to bypass
|
|
13
|
-
* that filter and return everything.
|
|
14
|
-
*/
|
|
15
|
-
const PER_PAGE = 100;
|
|
16
|
-
const DEFAULT_BASE_URL = 'https://sentry.io/api/0';
|
|
17
|
-
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
18
|
-
const DEFAULT_RETRIES = 3;
|
|
19
|
-
const DEFAULT_BASE_DELAY_MS = 500;
|
|
20
|
-
const MAX_BACKOFF_MS = 30_000;
|
|
21
|
-
export class SentryClient {
|
|
22
|
-
authToken;
|
|
23
|
-
org;
|
|
24
|
-
project;
|
|
25
|
-
baseUrl;
|
|
26
|
-
timeoutMs;
|
|
27
|
-
retries;
|
|
28
|
-
baseDelayMs;
|
|
29
|
-
constructor(config) {
|
|
30
|
-
this.authToken = config.authToken;
|
|
31
|
-
this.org = config.org;
|
|
32
|
-
this.project = config.project;
|
|
33
|
-
this.baseUrl = normaliseBaseUrl(config.baseUrl ?? DEFAULT_BASE_URL);
|
|
34
|
-
this.timeoutMs = config.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
35
|
-
this.retries = config.retries ?? DEFAULT_RETRIES;
|
|
36
|
-
this.baseDelayMs = config.baseDelayMs ?? DEFAULT_BASE_DELAY_MS;
|
|
37
|
-
}
|
|
38
|
-
async listAllIssues() {
|
|
39
|
-
const all = [];
|
|
40
|
-
let cursor = null;
|
|
41
|
-
for (;;) {
|
|
42
|
-
const url = new URL(`${this.baseUrl}/projects/${encodeURIComponent(this.org)}/${encodeURIComponent(this.project)}/issues/`);
|
|
43
|
-
url.searchParams.set('limit', String(PER_PAGE));
|
|
44
|
-
url.searchParams.set('query', '');
|
|
45
|
-
if (cursor) {
|
|
46
|
-
url.searchParams.set('cursor', cursor);
|
|
47
|
-
}
|
|
48
|
-
const res = await this.requestWithRetry(url.toString());
|
|
49
|
-
if (!res.ok) {
|
|
50
|
-
const body = await safeReadBody(res);
|
|
51
|
-
throw new Error(`Sentry API ${res.status} ${res.statusText}: ${body || '(no body)'}`);
|
|
52
|
-
}
|
|
53
|
-
const page = (await res.json());
|
|
54
|
-
all.push(...page);
|
|
55
|
-
const next = parseNextCursor(res.headers.get('Link'));
|
|
56
|
-
if (!next || page.length === 0) {
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
cursor = next;
|
|
60
|
-
}
|
|
61
|
-
return all;
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Single-request retry loop. Retries on:
|
|
65
|
-
* - network error / abort
|
|
66
|
-
* - HTTP 429 (rate limited; honours Retry-After header)
|
|
67
|
-
* - HTTP 5xx (server error)
|
|
68
|
-
*
|
|
69
|
-
* Does NOT retry on 4xx other than 429 — those are deterministic
|
|
70
|
-
* (auth, permission, not found) and won't get better with another try.
|
|
71
|
-
*/
|
|
72
|
-
async requestWithRetry(url) {
|
|
73
|
-
let lastError;
|
|
74
|
-
for (let attempt = 0; attempt <= this.retries; attempt++) {
|
|
75
|
-
const controller = new AbortController();
|
|
76
|
-
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
77
|
-
try {
|
|
78
|
-
const res = await fetch(url, {
|
|
79
|
-
headers: {
|
|
80
|
-
Authorization: `Bearer ${this.authToken}`,
|
|
81
|
-
Accept: 'application/json',
|
|
82
|
-
},
|
|
83
|
-
signal: controller.signal,
|
|
84
|
-
});
|
|
85
|
-
if (res.status === 429 ||
|
|
86
|
-
(res.status >= 500 && res.status < 600)) {
|
|
87
|
-
if (attempt < this.retries) {
|
|
88
|
-
const delay = computeRetryDelay(res.headers.get('Retry-After'), attempt, this.baseDelayMs);
|
|
89
|
-
// Drain the body so the connection can be reused.
|
|
90
|
-
await safeReadBody(res);
|
|
91
|
-
await sleep(delay);
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
return res;
|
|
96
|
-
}
|
|
97
|
-
catch (error) {
|
|
98
|
-
lastError = error;
|
|
99
|
-
if (attempt < this.retries && isRetryableNetworkError(error)) {
|
|
100
|
-
await sleep(computeBackoffDelay(attempt, this.baseDelayMs));
|
|
101
|
-
continue;
|
|
102
|
-
}
|
|
103
|
-
throw error;
|
|
104
|
-
}
|
|
105
|
-
finally {
|
|
106
|
-
clearTimeout(timer);
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
// If we exit the loop without returning, every attempt was a retryable
|
|
110
|
-
// failure that exhausted the retry budget. Throw the last error so the
|
|
111
|
-
// caller sees something actionable.
|
|
112
|
-
throw lastError instanceof Error
|
|
113
|
-
? lastError
|
|
114
|
-
: new Error(`Sentry request failed after ${this.retries + 1} attempts`);
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
/**
|
|
118
|
-
* Accept either a Sentry host root (`https://sentry.io/`,
|
|
119
|
-
* `https://sentry.internal.acme.com/`) or an explicit API root
|
|
120
|
-
* (`https://sentry.io/api/0`) and return the latter.
|
|
121
|
-
*
|
|
122
|
-
* Matches the official `sentry-cli` convention where users set
|
|
123
|
-
* `SENTRY_URL` to the host and the tool appends `/api/0` itself.
|
|
124
|
-
*/
|
|
125
|
-
export function normaliseBaseUrl(input) {
|
|
126
|
-
let url = input.trim().replace(/\/+$/, '');
|
|
127
|
-
// If the path already ends in /api/N for any version digit, leave it.
|
|
128
|
-
if (/\/api\/\d+$/.test(url)) {
|
|
129
|
-
return url;
|
|
130
|
-
}
|
|
131
|
-
// No /api/N segment present — append /api/0.
|
|
132
|
-
url = `${url}/api/0`;
|
|
133
|
-
return url;
|
|
134
|
-
}
|
|
135
|
-
async function safeReadBody(res) {
|
|
136
|
-
try {
|
|
137
|
-
return (await res.text()).slice(0, 500);
|
|
138
|
-
}
|
|
139
|
-
catch {
|
|
140
|
-
return '';
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
function sleep(ms) {
|
|
144
|
-
return new Promise((resolve) => {
|
|
145
|
-
setTimeout(resolve, ms);
|
|
146
|
-
});
|
|
147
|
-
}
|
|
148
|
-
/**
|
|
149
|
-
* Compute backoff for HTTP-level retries. Honours `Retry-After` if the
|
|
150
|
-
* server set one (capped at MAX_BACKOFF_MS so a misconfigured server
|
|
151
|
-
* can't pin us for an hour), otherwise exponential.
|
|
152
|
-
*/
|
|
153
|
-
function computeRetryDelay(retryAfterHeader, attempt, baseDelayMs) {
|
|
154
|
-
if (retryAfterHeader) {
|
|
155
|
-
// Retry-After is either a delta-seconds integer or an HTTP-date.
|
|
156
|
-
const asNumber = Number(retryAfterHeader);
|
|
157
|
-
if (Number.isFinite(asNumber) && asNumber >= 0) {
|
|
158
|
-
return Math.min(asNumber * 1000, MAX_BACKOFF_MS);
|
|
159
|
-
}
|
|
160
|
-
const asDate = Date.parse(retryAfterHeader);
|
|
161
|
-
if (!Number.isNaN(asDate)) {
|
|
162
|
-
return Math.min(Math.max(asDate - Date.now(), 0), MAX_BACKOFF_MS);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
return computeBackoffDelay(attempt, baseDelayMs);
|
|
166
|
-
}
|
|
167
|
-
function computeBackoffDelay(attempt, baseDelayMs) {
|
|
168
|
-
// Exponential with jitter: base * 2^attempt + random(0..base/2)
|
|
169
|
-
const exp = baseDelayMs * 2 ** attempt;
|
|
170
|
-
const jitter = Math.random() * (baseDelayMs / 2);
|
|
171
|
-
return Math.min(exp + jitter, MAX_BACKOFF_MS);
|
|
172
|
-
}
|
|
173
|
-
/**
|
|
174
|
-
* Network errors that are worth retrying. Excludes user-controlled
|
|
175
|
-
* AbortErrors that aren't from our timer (so a caller can cancel cleanly).
|
|
176
|
-
*/
|
|
177
|
-
function isRetryableNetworkError(error) {
|
|
178
|
-
if (!(error instanceof Error)) {
|
|
179
|
-
return false;
|
|
180
|
-
}
|
|
181
|
-
const { code } = error;
|
|
182
|
-
if (code === 'ECONNRESET' ||
|
|
183
|
-
code === 'ECONNREFUSED' ||
|
|
184
|
-
code === 'ETIMEDOUT' ||
|
|
185
|
-
code === 'EAI_AGAIN' ||
|
|
186
|
-
code === 'UND_ERR_SOCKET' ||
|
|
187
|
-
code === 'UND_ERR_CONNECT_TIMEOUT') {
|
|
188
|
-
return true;
|
|
189
|
-
}
|
|
190
|
-
// AbortError from our own timeout is retryable; from a caller signal,
|
|
191
|
-
// we'd never get here because the caller would have aborted the await.
|
|
192
|
-
if (error.name === 'AbortError') {
|
|
193
|
-
return true;
|
|
194
|
-
}
|
|
195
|
-
return false;
|
|
196
|
-
}
|
|
197
|
-
/**
|
|
198
|
-
* Parse Sentry's Link header. The next-page entry looks like:
|
|
199
|
-
* <https://...>; rel="next"; results="true"; cursor="100:1:0"
|
|
200
|
-
* We return the cursor string only when `results="true"` — Sentry returns
|
|
201
|
-
* a "next" entry even at the end of the list with `results="false"`, and
|
|
202
|
-
* pagination would loop forever if we trusted that.
|
|
203
|
-
*/
|
|
204
|
-
export function parseNextCursor(linkHeader) {
|
|
205
|
-
if (!linkHeader) {
|
|
206
|
-
return null;
|
|
207
|
-
}
|
|
208
|
-
for (const part of linkHeader.split(',')) {
|
|
209
|
-
const trimmed = part.trim();
|
|
210
|
-
const isNext = /\brel="next"/.test(trimmed);
|
|
211
|
-
const hasResults = /\bresults="true"/.test(trimmed);
|
|
212
|
-
if (!isNext || !hasResults) {
|
|
213
|
-
continue;
|
|
214
|
-
}
|
|
215
|
-
const cursorMatch = /\bcursor="([^"]+)"/.exec(trimmed);
|
|
216
|
-
if (cursorMatch) {
|
|
217
|
-
return cursorMatch[1] ?? null;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
return null;
|
|
221
|
-
}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-product sync state for sync-sentry-issues. Stored at
|
|
3
|
-
* `~/.edsger/sync-sentry-issues-state/<productId>.json`.
|
|
4
|
-
*
|
|
5
|
-
* We keep the lock + last-synced-at because Sentry's API doesn't surface
|
|
6
|
-
* deletions (issues that were marked deleted on Sentry's side just stop
|
|
7
|
-
* appearing). Like the GitHub variant we re-pull the full list on each
|
|
8
|
-
* run; the cursor field is reserved for a future incremental optimisation
|
|
9
|
-
* via `lastSeen` filter.
|
|
10
|
-
*/
|
|
11
|
-
import { type LockHandle } from '../find-shared/scan-state.js';
|
|
12
|
-
export type { LockHandle };
|
|
13
|
-
export interface SyncSentryIssuesState {
|
|
14
|
-
lastSyncedAt?: string;
|
|
15
|
-
lastAttemptedAt?: string;
|
|
16
|
-
lastError?: string;
|
|
17
|
-
/** "<org>/<project>" we last synced from. */
|
|
18
|
-
lastSource?: string;
|
|
19
|
-
}
|
|
20
|
-
export declare const loadSyncSentryIssuesState: (productId: string) => SyncSentryIssuesState;
|
|
21
|
-
export declare const saveSyncSentryIssuesState: (productId: string, state: SyncSentryIssuesState) => void;
|
|
22
|
-
export declare const updateSyncSentryIssuesState: (productId: string, patch: Partial<SyncSentryIssuesState>) => SyncSentryIssuesState;
|
|
23
|
-
export declare const acquireSyncSentryIssuesLock: (productId: string, staleAfterMs?: number) => LockHandle | null;
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Per-product sync state for sync-sentry-issues. Stored at
|
|
3
|
-
* `~/.edsger/sync-sentry-issues-state/<productId>.json`.
|
|
4
|
-
*
|
|
5
|
-
* We keep the lock + last-synced-at because Sentry's API doesn't surface
|
|
6
|
-
* deletions (issues that were marked deleted on Sentry's side just stop
|
|
7
|
-
* appearing). Like the GitHub variant we re-pull the full list on each
|
|
8
|
-
* run; the cursor field is reserved for a future incremental optimisation
|
|
9
|
-
* via `lastSeen` filter.
|
|
10
|
-
*/
|
|
11
|
-
import { createScanStateModule, } from '../find-shared/scan-state.js';
|
|
12
|
-
const m = createScanStateModule({
|
|
13
|
-
dirName: 'sync-sentry-issues-state',
|
|
14
|
-
});
|
|
15
|
-
export const loadSyncSentryIssuesState = m.load;
|
|
16
|
-
export const saveSyncSentryIssuesState = m.save;
|
|
17
|
-
export const updateSyncSentryIssuesState = m.update;
|
|
18
|
-
export const acquireSyncSentryIssuesLock = m.acquireLock;
|