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,339 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Chat Server — the engine behind the standalone `edsger chat-serve` daemon.
|
|
3
|
-
*
|
|
4
|
-
* A single long-lived process that answers human messages on **issue** and
|
|
5
|
-
* **product group** chat channels (the chat surfaces in the issue- and
|
|
6
|
-
* product-detail pages). It is deliberately independent of the autonomous
|
|
7
|
-
* agent workflow: unlike the previous `chat-worker`, it is not forked by
|
|
8
|
-
* `AgentWorkflowProcessor` and needs no IPC from it — so chat keeps working
|
|
9
|
-
* whether or not the workflow is running.
|
|
10
|
-
*
|
|
11
|
-
* Two channel kinds are served here:
|
|
12
|
-
* - `issue` — `channel_type='issue'`
|
|
13
|
-
* - `product` — `channel_type='product'` AND `chat_mode='group'`
|
|
14
|
-
*
|
|
15
|
-
* Session chats (`chat_mode='ai_assistant'`) are deliberately excluded — they
|
|
16
|
-
* are owned by the per-session `edsger session-serve` daemon. Letting both
|
|
17
|
-
* claim the same messages would produce duplicate replies.
|
|
18
|
-
*
|
|
19
|
-
* Message intake prefers Supabase Realtime (a `chat_messages` INSERT wakes the
|
|
20
|
-
* claim+process path immediately); when no Supabase session is available it
|
|
21
|
-
* falls back to MCP polling. Either way, messages are claimed atomically
|
|
22
|
-
* (`claimPendingMessages`) so multiple workers never process the same message.
|
|
23
|
-
*
|
|
24
|
-
* Issue chats can give the AI read access to the issue's cloned repo. The repo
|
|
25
|
-
* path is derived locally from the workspace root + issue id (the same pure
|
|
26
|
-
* mapping the workflow uses), so no IPC hand-off is required; when the clone
|
|
27
|
-
* isn't present the chat simply runs without code context.
|
|
28
|
-
*
|
|
29
|
-
* Side-effectful collaborators are injected via {@link ChatServerDeps} (with
|
|
30
|
-
* real implementations as the default) so the routing/repo logic is unit
|
|
31
|
-
* testable without a live Supabase or filesystem.
|
|
32
|
-
*/
|
|
33
|
-
import { randomUUID } from 'node:crypto';
|
|
34
|
-
import { claimPendingMessages, listChannels } from '../../api/chat.js';
|
|
35
|
-
import { processHumanMessages, processProductHumanMessages, } from '../../phases/chat-processor/index.js';
|
|
36
|
-
import { getSupabase, hasSupabaseSession } from '../../supabase/client.js';
|
|
37
|
-
import { logError, logInfo, logWarning } from '../../utils/logger.js';
|
|
38
|
-
import { getIssueRepoPath, issueRepoExists, } from '../../workspace/workspace-manager.js';
|
|
39
|
-
/**
|
|
40
|
-
* Classify a channel into the kind this server serves, or `null` to ignore it.
|
|
41
|
-
* Pure — the single source of truth for "should chat-serve touch this channel",
|
|
42
|
-
* shared by the initial refresh and the Realtime registration path.
|
|
43
|
-
*
|
|
44
|
-
* Note the precise product rule: only `chat_mode='group'` product channels are
|
|
45
|
-
* served. `ai_assistant` (session) channels belong to `edsger session-serve`;
|
|
46
|
-
* any other mode (e.g. `direct`) is not a product group chat and is ignored.
|
|
47
|
-
*/
|
|
48
|
-
export function classifyChannel(channel) {
|
|
49
|
-
if (channel.channel_type === 'issue') {
|
|
50
|
-
return 'issue';
|
|
51
|
-
}
|
|
52
|
-
if (channel.channel_type === 'product' && channel.chat_mode === 'group') {
|
|
53
|
-
return 'product';
|
|
54
|
-
}
|
|
55
|
-
return null;
|
|
56
|
-
}
|
|
57
|
-
const POLL_INTERVAL_MS = 5_000;
|
|
58
|
-
/** Periodic channel re-discovery (also a Realtime-mode safety net + keepalive). */
|
|
59
|
-
const REFRESH_INTERVAL_MS = 60_000;
|
|
60
|
-
/** Max time `stop()` waits for in-flight message processing before exiting. */
|
|
61
|
-
const DRAIN_TIMEOUT_MS = 15_000;
|
|
62
|
-
const defaultDeps = {
|
|
63
|
-
listChannels,
|
|
64
|
-
claimPendingMessages,
|
|
65
|
-
processHumanMessages,
|
|
66
|
-
processProductHumanMessages,
|
|
67
|
-
issueRepoExists,
|
|
68
|
-
getIssueRepoPath,
|
|
69
|
-
hasSupabaseSession,
|
|
70
|
-
getSupabase,
|
|
71
|
-
};
|
|
72
|
-
export class ChatServer {
|
|
73
|
-
deps;
|
|
74
|
-
config;
|
|
75
|
-
workspaceRoot;
|
|
76
|
-
verbose;
|
|
77
|
-
/** Unique id for atomic message claiming across competing workers. */
|
|
78
|
-
workerId = `chat-serve-${process.pid}-${randomUUID().slice(0, 8)}`;
|
|
79
|
-
/** issueId -> channelId */
|
|
80
|
-
issueChannels = new Map();
|
|
81
|
-
/** productId -> channelId */
|
|
82
|
-
productChannels = new Map();
|
|
83
|
-
/** channelId -> { kind, refId } */
|
|
84
|
-
metaByChannel = new Map();
|
|
85
|
-
/** In-flight message processing, awaited on shutdown so we drain cleanly. */
|
|
86
|
-
inflight = new Set();
|
|
87
|
-
realtimeChannel = null;
|
|
88
|
-
pollTimer = null;
|
|
89
|
-
refreshTimer = null;
|
|
90
|
-
running = false;
|
|
91
|
-
constructor(options, deps = defaultDeps) {
|
|
92
|
-
this.config = options.config;
|
|
93
|
-
this.workspaceRoot = options.workspaceRoot;
|
|
94
|
-
this.verbose = options.verbose ?? false;
|
|
95
|
-
this.deps = deps;
|
|
96
|
-
}
|
|
97
|
-
/** Bring the server up: seed channels, drain backlog, start intake. */
|
|
98
|
-
async start() {
|
|
99
|
-
if (this.running) {
|
|
100
|
-
return;
|
|
101
|
-
}
|
|
102
|
-
this.running = true;
|
|
103
|
-
logInfo(`Chat server starting (id: ${this.workerId})`);
|
|
104
|
-
// Seed the channel cache before subscriptions so Realtime events can be
|
|
105
|
-
// routed by channel id without an extra round-trip.
|
|
106
|
-
await this.refreshChannels();
|
|
107
|
-
// Drain anything that arrived while we were offline.
|
|
108
|
-
for (const channelId of this.metaByChannel.keys()) {
|
|
109
|
-
this.dispatch(channelId);
|
|
110
|
-
}
|
|
111
|
-
if (this.startRealtime()) {
|
|
112
|
-
logInfo('Chat server running in Realtime mode');
|
|
113
|
-
// Low-frequency refresh as a safety net for missed channel INSERTs and
|
|
114
|
-
// to keep the event loop alive even if the Realtime socket drops.
|
|
115
|
-
this.refreshTimer = setInterval(() => {
|
|
116
|
-
void this.refreshChannels();
|
|
117
|
-
}, REFRESH_INTERVAL_MS);
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
logWarning('No Supabase session — chat server using MCP polling mode');
|
|
121
|
-
this.startPolling();
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* Stop accepting new work, tear down timers/subscriptions, then wait for any
|
|
125
|
-
* in-flight message processing to finish (bounded by DRAIN_TIMEOUT_MS) so a
|
|
126
|
-
* mid-flight reply isn't abandoned. Idempotent.
|
|
127
|
-
*/
|
|
128
|
-
async stop() {
|
|
129
|
-
this.running = false;
|
|
130
|
-
if (this.pollTimer) {
|
|
131
|
-
clearInterval(this.pollTimer);
|
|
132
|
-
this.pollTimer = null;
|
|
133
|
-
}
|
|
134
|
-
if (this.refreshTimer) {
|
|
135
|
-
clearInterval(this.refreshTimer);
|
|
136
|
-
this.refreshTimer = null;
|
|
137
|
-
}
|
|
138
|
-
this.stopRealtime();
|
|
139
|
-
if (this.inflight.size > 0) {
|
|
140
|
-
logInfo(`Draining ${this.inflight.size} in-flight message turn(s)…`);
|
|
141
|
-
await Promise.race([
|
|
142
|
-
Promise.allSettled([...this.inflight]),
|
|
143
|
-
delay(DRAIN_TIMEOUT_MS),
|
|
144
|
-
]);
|
|
145
|
-
}
|
|
146
|
-
logInfo('Chat server stopped');
|
|
147
|
-
}
|
|
148
|
-
// ── Channel discovery ──────────────────────────────────────────────────
|
|
149
|
-
async refreshChannels() {
|
|
150
|
-
try {
|
|
151
|
-
const [issueChannels, productChannels] = await Promise.all([
|
|
152
|
-
this.deps.listChannels('issue'),
|
|
153
|
-
this.deps.listChannels('product'),
|
|
154
|
-
]);
|
|
155
|
-
let added = 0;
|
|
156
|
-
for (const channel of [...issueChannels, ...productChannels]) {
|
|
157
|
-
if (this.registerChannel(channel)) {
|
|
158
|
-
added++;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
if (added > 0) {
|
|
162
|
-
logInfo(`Discovered ${added} new channel(s) (issues: ${this.issueChannels.size}, products: ${this.productChannels.size})`);
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
catch (error) {
|
|
166
|
-
logError(`Failed to refresh channels: ${describe(error)}`);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
/**
|
|
170
|
-
* Register a channel into the routing maps. Returns true if it was newly
|
|
171
|
-
* added. Ignores channels this server doesn't serve (e.g. session chats).
|
|
172
|
-
*/
|
|
173
|
-
registerChannel(channel) {
|
|
174
|
-
if (!channel.channel_ref_id) {
|
|
175
|
-
return false;
|
|
176
|
-
}
|
|
177
|
-
const kind = classifyChannel(channel);
|
|
178
|
-
if (!kind) {
|
|
179
|
-
return false; // session / general channel — not ours
|
|
180
|
-
}
|
|
181
|
-
const refMap = kind === 'issue' ? this.issueChannels : this.productChannels;
|
|
182
|
-
const isNew = !refMap.has(channel.channel_ref_id);
|
|
183
|
-
refMap.set(channel.channel_ref_id, channel.id);
|
|
184
|
-
this.metaByChannel.set(channel.id, { kind, refId: channel.channel_ref_id });
|
|
185
|
-
if (isNew) {
|
|
186
|
-
logInfo(`New ${kind} channel: ${channel.channel_ref_id} (${channel.id})`);
|
|
187
|
-
}
|
|
188
|
-
return isNew;
|
|
189
|
-
}
|
|
190
|
-
// ── Message processing ─────────────────────────────────────────────────
|
|
191
|
-
/** Fire-and-forget a claim+process while tracking it for graceful drain. */
|
|
192
|
-
dispatch(channelId) {
|
|
193
|
-
const task = this.claimAndProcess(channelId);
|
|
194
|
-
this.inflight.add(task);
|
|
195
|
-
void task.finally(() => this.inflight.delete(task));
|
|
196
|
-
}
|
|
197
|
-
/** Claim and process pending human messages on a single known channel. */
|
|
198
|
-
async claimAndProcess(channelId) {
|
|
199
|
-
if (!this.running) {
|
|
200
|
-
return;
|
|
201
|
-
}
|
|
202
|
-
const meta = this.metaByChannel.get(channelId);
|
|
203
|
-
if (!meta) {
|
|
204
|
-
// Unknown channel — the chat_channels subscription / next refresh will
|
|
205
|
-
// seed it, and the following message event will pick it up.
|
|
206
|
-
return;
|
|
207
|
-
}
|
|
208
|
-
try {
|
|
209
|
-
const claimed = await this.deps.claimPendingMessages(channelId, this.workerId);
|
|
210
|
-
if (claimed.length === 0) {
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
logInfo(`Claimed ${claimed.length} message(s) for ${meta.kind} ${meta.refId}`);
|
|
214
|
-
if (meta.kind === 'issue') {
|
|
215
|
-
await this.deps.processHumanMessages(claimed, meta.refId, this.config, this.verbose, this.resolveRepoPath(meta.refId));
|
|
216
|
-
}
|
|
217
|
-
else {
|
|
218
|
-
await this.deps.processProductHumanMessages(claimed, meta.refId, this.config, this.verbose);
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
catch (error) {
|
|
222
|
-
logError(`Error processing channel ${channelId}: ${describe(error)}`);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
/**
|
|
226
|
-
* Locate the issue's cloned repo so the chat AI can read code. Derived from
|
|
227
|
-
* the workspace root with the same pure mapping the workflow uses; returns
|
|
228
|
-
* undefined when the clone isn't present (chat then runs without code).
|
|
229
|
-
*/
|
|
230
|
-
resolveRepoPath(issueId) {
|
|
231
|
-
if (this.deps.issueRepoExists(this.workspaceRoot, issueId)) {
|
|
232
|
-
return this.deps.getIssueRepoPath(this.workspaceRoot, issueId);
|
|
233
|
-
}
|
|
234
|
-
if (this.verbose) {
|
|
235
|
-
logInfo(`No local clone for issue ${issueId} — chat runs without code context`);
|
|
236
|
-
}
|
|
237
|
-
return undefined;
|
|
238
|
-
}
|
|
239
|
-
// ── Realtime intake ────────────────────────────────────────────────────
|
|
240
|
-
startRealtime() {
|
|
241
|
-
if (this.realtimeChannel) {
|
|
242
|
-
return true;
|
|
243
|
-
}
|
|
244
|
-
if (!this.deps.hasSupabaseSession()) {
|
|
245
|
-
return false;
|
|
246
|
-
}
|
|
247
|
-
try {
|
|
248
|
-
this.realtimeChannel = this.deps
|
|
249
|
-
.getSupabase()
|
|
250
|
-
.channel('chat-serve', { config: { broadcast: { ack: false } } })
|
|
251
|
-
.on('postgres_changes', {
|
|
252
|
-
event: 'INSERT',
|
|
253
|
-
schema: 'public',
|
|
254
|
-
table: 'chat_messages',
|
|
255
|
-
filter: 'sender_type=eq.human',
|
|
256
|
-
}, (payload) => {
|
|
257
|
-
const row = payload.new;
|
|
258
|
-
if (!row.channel_id || row.is_processed) {
|
|
259
|
-
return;
|
|
260
|
-
}
|
|
261
|
-
this.dispatch(row.channel_id);
|
|
262
|
-
})
|
|
263
|
-
.on('postgres_changes', { event: 'INSERT', schema: 'public', table: 'chat_channels' }, (payload) => {
|
|
264
|
-
const channel = payload.new;
|
|
265
|
-
this.registerChannel(channel);
|
|
266
|
-
if (channel.id) {
|
|
267
|
-
this.dispatch(channel.id);
|
|
268
|
-
}
|
|
269
|
-
})
|
|
270
|
-
.subscribe((status) => {
|
|
271
|
-
if (status === 'SUBSCRIBED') {
|
|
272
|
-
logInfo('Realtime subscription active (chat_messages, chat_channels)');
|
|
273
|
-
}
|
|
274
|
-
else if (status === 'CHANNEL_ERROR' ||
|
|
275
|
-
status === 'TIMED_OUT' ||
|
|
276
|
-
status === 'CLOSED') {
|
|
277
|
-
logWarning(`Realtime channel status: ${status}`);
|
|
278
|
-
// supabase-js auto-reconnects; the refresh timer covers the gap.
|
|
279
|
-
}
|
|
280
|
-
});
|
|
281
|
-
return true;
|
|
282
|
-
}
|
|
283
|
-
catch (error) {
|
|
284
|
-
logError(`Failed to start Realtime subscription: ${describe(error)}`);
|
|
285
|
-
return false;
|
|
286
|
-
}
|
|
287
|
-
}
|
|
288
|
-
stopRealtime() {
|
|
289
|
-
if (!this.realtimeChannel) {
|
|
290
|
-
return;
|
|
291
|
-
}
|
|
292
|
-
try {
|
|
293
|
-
void this.deps.getSupabase().removeChannel(this.realtimeChannel);
|
|
294
|
-
}
|
|
295
|
-
catch {
|
|
296
|
-
// Best-effort; supabase may already be torn down.
|
|
297
|
-
}
|
|
298
|
-
this.realtimeChannel = null;
|
|
299
|
-
}
|
|
300
|
-
// ── Polling fallback (no Supabase session) ─────────────────────────────
|
|
301
|
-
startPolling() {
|
|
302
|
-
if (this.pollTimer) {
|
|
303
|
-
return;
|
|
304
|
-
}
|
|
305
|
-
void this.pollOnce();
|
|
306
|
-
this.pollTimer = setInterval(() => void this.pollOnce(), POLL_INTERVAL_MS);
|
|
307
|
-
// Periodically re-discover channels in the polling path too.
|
|
308
|
-
this.refreshTimer = setInterval(() => {
|
|
309
|
-
void this.refreshChannels();
|
|
310
|
-
}, REFRESH_INTERVAL_MS);
|
|
311
|
-
}
|
|
312
|
-
async pollOnce() {
|
|
313
|
-
if (!this.running) {
|
|
314
|
-
return;
|
|
315
|
-
}
|
|
316
|
-
for (const channelId of this.metaByChannel.keys()) {
|
|
317
|
-
const task = this.claimAndProcess(channelId);
|
|
318
|
-
this.inflight.add(task);
|
|
319
|
-
try {
|
|
320
|
-
await task;
|
|
321
|
-
}
|
|
322
|
-
finally {
|
|
323
|
-
this.inflight.delete(task);
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
function describe(error) {
|
|
329
|
-
return error instanceof Error ? error.message : String(error);
|
|
330
|
-
}
|
|
331
|
-
function delay(ms) {
|
|
332
|
-
return new Promise((resolve) => {
|
|
333
|
-
const timer = setTimeout(resolve, ms);
|
|
334
|
-
// Don't keep the event loop alive solely for the drain timeout.
|
|
335
|
-
if (typeof timer.unref === 'function') {
|
|
336
|
-
timer.unref();
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `edsger chat-serve` — long-lived daemon that answers human messages on issue
|
|
3
|
-
* and product group chat channels.
|
|
4
|
-
*
|
|
5
|
-
* This is the standalone replacement for the old `chat-worker` that
|
|
6
|
-
* `AgentWorkflowProcessor` used to fork. Running it as its own top-level
|
|
7
|
-
* process (spawned by the desktop app, sibling to `edsger --verbose` and
|
|
8
|
-
* `edsger session-serve`) decouples chat from the autonomous workflow: chat
|
|
9
|
-
* works whether or not the workflow is running, and the two never both claim
|
|
10
|
-
* the same messages.
|
|
11
|
-
*
|
|
12
|
-
* Like the agent workflow, it requires `edsger login` first and exits promptly
|
|
13
|
-
* if no auth is found. The actual chat-serving logic lives in {@link ChatServer}.
|
|
14
|
-
*/
|
|
15
|
-
export interface ChatServeCliOptions {
|
|
16
|
-
verbose?: boolean;
|
|
17
|
-
/** Optional path to an edsger config file (forwarded to validateConfiguration). */
|
|
18
|
-
config?: string;
|
|
19
|
-
}
|
|
20
|
-
export declare function runChatServeCommand(options?: ChatServeCliOptions): Promise<void>;
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `edsger chat-serve` — long-lived daemon that answers human messages on issue
|
|
3
|
-
* and product group chat channels.
|
|
4
|
-
*
|
|
5
|
-
* This is the standalone replacement for the old `chat-worker` that
|
|
6
|
-
* `AgentWorkflowProcessor` used to fork. Running it as its own top-level
|
|
7
|
-
* process (spawned by the desktop app, sibling to `edsger --verbose` and
|
|
8
|
-
* `edsger session-serve`) decouples chat from the autonomous workflow: chat
|
|
9
|
-
* works whether or not the workflow is running, and the two never both claim
|
|
10
|
-
* the same messages.
|
|
11
|
-
*
|
|
12
|
-
* Like the agent workflow, it requires `edsger login` first and exits promptly
|
|
13
|
-
* if no auth is found. The actual chat-serving logic lives in {@link ChatServer}.
|
|
14
|
-
*/
|
|
15
|
-
import { isLoggedIn } from '../../auth/auth-store.js';
|
|
16
|
-
import { logError, logInfo } from '../../utils/logger.js';
|
|
17
|
-
import { validateConfiguration } from '../../utils/validation.js';
|
|
18
|
-
import { ensureWorkspaceDir } from '../../workspace/workspace-manager.js';
|
|
19
|
-
import { ChatServer } from './chat-server.js';
|
|
20
|
-
export async function runChatServeCommand(options = {}) {
|
|
21
|
-
// Mirror the agent workflow: auth is required, and we exit fast when absent
|
|
22
|
-
// so the desktop supervisor can surface a "run `edsger login`" hint.
|
|
23
|
-
if (!isLoggedIn()) {
|
|
24
|
-
logError('Not authenticated. Please run `edsger login` first.');
|
|
25
|
-
process.exit(1);
|
|
26
|
-
}
|
|
27
|
-
const cliOptions = {
|
|
28
|
-
verbose: options.verbose,
|
|
29
|
-
config: options.config,
|
|
30
|
-
};
|
|
31
|
-
const config = validateConfiguration(cliOptions);
|
|
32
|
-
const workspaceRoot = ensureWorkspaceDir();
|
|
33
|
-
logInfo(`Workspace: ${workspaceRoot}`);
|
|
34
|
-
const server = new ChatServer({
|
|
35
|
-
config,
|
|
36
|
-
workspaceRoot,
|
|
37
|
-
verbose: options.verbose,
|
|
38
|
-
});
|
|
39
|
-
await server.start();
|
|
40
|
-
let shuttingDown = false;
|
|
41
|
-
const shutdown = async (signal) => {
|
|
42
|
-
if (shuttingDown) {
|
|
43
|
-
return;
|
|
44
|
-
}
|
|
45
|
-
shuttingDown = true;
|
|
46
|
-
logInfo(`Received ${signal} — shutting down chat server.`);
|
|
47
|
-
await server.stop();
|
|
48
|
-
process.exit(0);
|
|
49
|
-
};
|
|
50
|
-
process.on('SIGTERM', () => void shutdown('SIGTERM'));
|
|
51
|
-
process.on('SIGINT', () => void shutdown('SIGINT'));
|
|
52
|
-
process.on('uncaughtException', (error) => {
|
|
53
|
-
logError(`Uncaught exception: ${error instanceof Error ? error.message : String(error)}`);
|
|
54
|
-
void server.stop().finally(() => process.exit(1));
|
|
55
|
-
});
|
|
56
|
-
// The Realtime socket / poll timer keep the event loop alive; nothing else
|
|
57
|
-
// to do on the main path. The process lives until a signal arrives.
|
|
58
|
-
}
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checklists command — uses Claude Agent SDK to analyse a local directory
|
|
3
|
-
* and sync product checklists (create / update / delete) via MCP tools.
|
|
4
|
-
*/
|
|
5
|
-
import { type CliOptions } from '../../types/index.js';
|
|
6
|
-
/**
|
|
7
|
-
* Run AI-powered checklist sync. Scope is either a product (analyse the
|
|
8
|
-
* product's codebase) or a team (analyse team standards docs, generate
|
|
9
|
-
* org-wide checklists).
|
|
10
|
-
*/
|
|
11
|
-
export declare function runChecklists(options: CliOptions & {
|
|
12
|
-
checklistsProductId?: string;
|
|
13
|
-
checklistsTeamId?: string;
|
|
14
|
-
checklistsDir?: string;
|
|
15
|
-
checklistsPrompt?: string;
|
|
16
|
-
}): Promise<void>;
|
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checklists command — uses Claude Agent SDK to analyse a local directory
|
|
3
|
-
* and sync product checklists (create / update / delete) via MCP tools.
|
|
4
|
-
*/
|
|
5
|
-
import { query } from '@anthropic-ai/claude-agent-sdk';
|
|
6
|
-
import { isLoggedIn } from '../../auth/auth-store.js';
|
|
7
|
-
import { DEFAULT_MODEL } from '../../constants.js';
|
|
8
|
-
import { deregisterSession, registerSession, } from '../../system/session-manager.js';
|
|
9
|
-
import { logError, logInfo, logSuccess, logWarning, } from '../../utils/logger.js';
|
|
10
|
-
import { validateConfiguration } from '../../utils/validation.js';
|
|
11
|
-
import { createChecklistsMcpServer } from './tools.js';
|
|
12
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
13
|
-
function logAssistantContent(content) {
|
|
14
|
-
for (const item of content) {
|
|
15
|
-
if (item.type === 'text') {
|
|
16
|
-
logInfo(item.text);
|
|
17
|
-
}
|
|
18
|
-
else if (item.type === 'tool_use') {
|
|
19
|
-
logInfo(`[tool] ${item.name}: ${item.input?.description || item.input?.command || ''}`);
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
// Two SYSTEM_PROMPTs because team-level sync has a different mental model:
|
|
24
|
-
// the directory is reference material (org standards / process docs / shared
|
|
25
|
-
// templates), not necessarily a product's own codebase. Telling the LLM
|
|
26
|
-
// "scan the code" when there's no code wastes turns.
|
|
27
|
-
const PRODUCT_SYSTEM_PROMPT = `You are an expert software quality engineer. Your job is to analyse the code and documentation in the current working directory and manage quality checklists for the product.
|
|
28
|
-
|
|
29
|
-
## Workflow
|
|
30
|
-
|
|
31
|
-
1. **Explore** the directory — read key files (README, package.json, config files, source code, tests, docs) to understand the project's technology stack, architecture, patterns, and quality concerns.
|
|
32
|
-
2. **Query existing checklists** using \`list_checklists\` so you know what already exists.
|
|
33
|
-
3. **Decide what to change** — compare the codebase against existing checklists:
|
|
34
|
-
- **Create** new checklists for areas not yet covered (e.g., security, performance, accessibility, testing, deployment).
|
|
35
|
-
- **Update** checklists whose items are outdated or incomplete.
|
|
36
|
-
- **Delete** checklists that are no longer relevant.
|
|
37
|
-
- **Add / update / remove items** within checklists as needed.
|
|
38
|
-
4. **Execute the changes** using the provided tools.
|
|
39
|
-
5. **Summarise** what you did at the end.
|
|
40
|
-
|
|
41
|
-
## Guidelines
|
|
42
|
-
|
|
43
|
-
- Focus on actionable, verifiable checklist items — things a reviewer can check yes/no.
|
|
44
|
-
- Assign the correct **role** to each checklist (developer, qa_engineer, technical_lead, etc.).
|
|
45
|
-
- Assign relevant **phases** (code_implementation, code_review, technical_design, functional_testing, etc.).
|
|
46
|
-
- Keep item titles concise (< 80 chars). Use the description for details.
|
|
47
|
-
- Prefer boolean item_type for most items.
|
|
48
|
-
- Do not create duplicate checklists — update existing ones instead.
|
|
49
|
-
- If the codebase is small, a few focused checklists are better than many sparse ones.
|
|
50
|
-
- When creating multiple checklists, assign incrementing sort_order values (0, 1, 2, …) so they display in a meaningful order.
|
|
51
|
-
`;
|
|
52
|
-
const TEAM_SYSTEM_PROMPT = `You are an expert software quality engineer. Your job is to analyse the reference material in the current working directory (team standards, engineering guidelines, process docs, compliance requirements, shared templates, etc.) and manage TEAM-LEVEL quality checklists.
|
|
53
|
-
|
|
54
|
-
Team checklists apply to every product owned by the team, so they should capture **organisation-wide** quality bars — not the specifics of any single codebase.
|
|
55
|
-
|
|
56
|
-
## Workflow
|
|
57
|
-
|
|
58
|
-
1. **Explore** the directory — read every relevant doc to understand the team's engineering standards, review process, security baseline, release rules, and other shared expectations. The directory is reference material, not necessarily product source code.
|
|
59
|
-
2. **Query existing team checklists** using \`list_checklists\` so you know what already exists.
|
|
60
|
-
3. **Decide what to change** — compare the standards documented in the directory against existing checklists:
|
|
61
|
-
- **Create** team checklists for standards that are not yet enforced (e.g., security baseline, release readiness, accessibility minimums, code-review etiquette).
|
|
62
|
-
- **Update** checklists whose items have drifted from the documented standards.
|
|
63
|
-
- **Delete** checklists that no longer reflect team policy.
|
|
64
|
-
- **Add / update / remove items** within checklists as needed.
|
|
65
|
-
4. **Execute the changes** using the provided tools.
|
|
66
|
-
5. **Summarise** what you did at the end.
|
|
67
|
-
|
|
68
|
-
## Guidelines
|
|
69
|
-
|
|
70
|
-
- Stay generic across products — a team checklist will apply to every product in the team, so do NOT bake in product-specific tech-stack assumptions.
|
|
71
|
-
- Focus on actionable, verifiable checklist items — things a reviewer can check yes/no.
|
|
72
|
-
- Assign the correct **role** to each checklist (developer, qa_engineer, technical_lead, etc.).
|
|
73
|
-
- Assign relevant **phases** (code_implementation, code_review, technical_design, functional_testing, etc.).
|
|
74
|
-
- Keep item titles concise (< 80 chars). Use the description for details.
|
|
75
|
-
- Prefer boolean item_type for most items.
|
|
76
|
-
- Do not create duplicate checklists — update existing ones instead.
|
|
77
|
-
- When creating multiple checklists, assign incrementing sort_order values (0, 1, 2, …) so they display in a meaningful order.
|
|
78
|
-
`;
|
|
79
|
-
/**
|
|
80
|
-
* Run AI-powered checklist sync. Scope is either a product (analyse the
|
|
81
|
-
* product's codebase) or a team (analyse team standards docs, generate
|
|
82
|
-
* org-wide checklists).
|
|
83
|
-
*/
|
|
84
|
-
export async function runChecklists(options) {
|
|
85
|
-
const productId = options.checklistsProductId;
|
|
86
|
-
const teamId = options.checklistsTeamId;
|
|
87
|
-
const directory = options.checklistsDir || process.cwd();
|
|
88
|
-
const userPrompt = options.checklistsPrompt;
|
|
89
|
-
if (!productId && !teamId) {
|
|
90
|
-
throw new Error('checklists sync requires either a product ID or a team ID.');
|
|
91
|
-
}
|
|
92
|
-
if (productId && teamId) {
|
|
93
|
-
throw new Error('checklists sync received both a product ID and a team ID; choose one.');
|
|
94
|
-
}
|
|
95
|
-
const isTeamScope = !productId;
|
|
96
|
-
if (!isLoggedIn()) {
|
|
97
|
-
throw new Error('You must be logged in to run checklists sync.\n' +
|
|
98
|
-
'Run `edsger login` first.');
|
|
99
|
-
}
|
|
100
|
-
// Validate configuration (ensures .edsgerrc and env are loaded)
|
|
101
|
-
validateConfiguration(options);
|
|
102
|
-
// Register CLI session for log persistence. We pass productId only when
|
|
103
|
-
// present so existing per-product session indexing still works.
|
|
104
|
-
await registerSession({ command: 'checklists', productId });
|
|
105
|
-
if (isTeamScope) {
|
|
106
|
-
logInfo(`Starting checklist sync for team: ${teamId}`);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
logInfo(`Starting checklist sync for product: ${productId}`);
|
|
110
|
-
}
|
|
111
|
-
logInfo(`Analysing directory: ${directory}`);
|
|
112
|
-
if (userPrompt) {
|
|
113
|
-
logInfo(`User instructions: ${userPrompt}`);
|
|
114
|
-
}
|
|
115
|
-
const mcpServer = isTeamScope
|
|
116
|
-
? createChecklistsMcpServer({ kind: 'team', teamId: teamId })
|
|
117
|
-
: createChecklistsMcpServer({
|
|
118
|
-
kind: 'product',
|
|
119
|
-
productId,
|
|
120
|
-
});
|
|
121
|
-
const promptParts = isTeamScope
|
|
122
|
-
? [
|
|
123
|
-
`Analyse the reference material in the current working directory and synchronise the TEAM-LEVEL quality checklists.`,
|
|
124
|
-
`Team ID: ${teamId}`,
|
|
125
|
-
`Directory: ${directory}`,
|
|
126
|
-
'',
|
|
127
|
-
'Start by exploring the directory and reading every relevant standards / process / guideline document, then query existing team checklists, and finally create/update/delete as needed. Remember: team checklists apply to every product in the team, so keep them generic.',
|
|
128
|
-
]
|
|
129
|
-
: [
|
|
130
|
-
`Analyse the codebase in the current working directory and synchronise the product's quality checklists.`,
|
|
131
|
-
`Product ID: ${productId}`,
|
|
132
|
-
`Directory: ${directory}`,
|
|
133
|
-
'',
|
|
134
|
-
'Start by exploring the project structure and reading key files, then query existing checklists, and finally create/update/delete as needed.',
|
|
135
|
-
];
|
|
136
|
-
if (userPrompt) {
|
|
137
|
-
promptParts.push('', '## Additional Instructions from User', '', userPrompt);
|
|
138
|
-
}
|
|
139
|
-
const prompt = promptParts.join('\n');
|
|
140
|
-
const SYSTEM_PROMPT = isTeamScope ? TEAM_SYSTEM_PROMPT : PRODUCT_SYSTEM_PROMPT;
|
|
141
|
-
try {
|
|
142
|
-
for await (const message of query({
|
|
143
|
-
prompt,
|
|
144
|
-
options: {
|
|
145
|
-
systemPrompt: {
|
|
146
|
-
type: 'preset',
|
|
147
|
-
preset: 'claude_code',
|
|
148
|
-
append: SYSTEM_PROMPT,
|
|
149
|
-
},
|
|
150
|
-
model: DEFAULT_MODEL,
|
|
151
|
-
permissionMode: 'bypassPermissions',
|
|
152
|
-
maxTurns: 40,
|
|
153
|
-
mcpServers: {
|
|
154
|
-
'edsger-checklists': mcpServer,
|
|
155
|
-
},
|
|
156
|
-
cwd: directory,
|
|
157
|
-
},
|
|
158
|
-
})) {
|
|
159
|
-
if (message.type === 'assistant') {
|
|
160
|
-
logAssistantContent(message.message?.content ?? []);
|
|
161
|
-
continue;
|
|
162
|
-
}
|
|
163
|
-
if (message.type !== 'result') {
|
|
164
|
-
continue;
|
|
165
|
-
}
|
|
166
|
-
if (message.subtype === 'success') {
|
|
167
|
-
logSuccess('Checklist sync completed successfully!');
|
|
168
|
-
if (message.result) {
|
|
169
|
-
logInfo(message.result);
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
else {
|
|
173
|
-
logWarning(`Checklist sync incomplete: ${message.subtype}`);
|
|
174
|
-
if (message.subtype === 'error_max_turns') {
|
|
175
|
-
logWarning('The agent reached the maximum number of turns.');
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
catch (error) {
|
|
181
|
-
logError(`Checklist sync failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
182
|
-
process.exitCode = 1;
|
|
183
|
-
}
|
|
184
|
-
finally {
|
|
185
|
-
await deregisterSession();
|
|
186
|
-
}
|
|
187
|
-
}
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checklists MCP server — CLI entry point.
|
|
3
|
-
*
|
|
4
|
-
* Tool implementations live in `edsger-tools`. This shim adapts the CLI's
|
|
5
|
-
* `callMcpEndpoint` transport into `ToolDeps` and threads the scope id
|
|
6
|
-
* (productId or teamId) through `deps.context` so the CLI can run AI
|
|
7
|
-
* sync against either a product or a team.
|
|
8
|
-
*/
|
|
9
|
-
import type { McpSdkServerConfigWithInstance } from '@anthropic-ai/claude-agent-sdk';
|
|
10
|
-
export type ChecklistScope = {
|
|
11
|
-
kind: 'product';
|
|
12
|
-
productId: string;
|
|
13
|
-
} | {
|
|
14
|
-
kind: 'team';
|
|
15
|
-
teamId: string;
|
|
16
|
-
};
|
|
17
|
-
export declare function createChecklistsMcpServer(scope: ChecklistScope | string): McpSdkServerConfigWithInstance;
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Checklists MCP server — CLI entry point.
|
|
3
|
-
*
|
|
4
|
-
* Tool implementations live in `edsger-tools`. This shim adapts the CLI's
|
|
5
|
-
* `callMcpEndpoint` transport into `ToolDeps` and threads the scope id
|
|
6
|
-
* (productId or teamId) through `deps.context` so the CLI can run AI
|
|
7
|
-
* sync against either a product or a team.
|
|
8
|
-
*/
|
|
9
|
-
import { createChecklistsMcpServer as createChecklistsMcpServerCore } from 'edsger-tools';
|
|
10
|
-
import { getToolDeps } from '../../tools/bootstrap.js';
|
|
11
|
-
export function createChecklistsMcpServer(scope) {
|
|
12
|
-
// Backwards compat: if a bare string is passed, treat it as productId.
|
|
13
|
-
const ctx = typeof scope === 'string'
|
|
14
|
-
? { productId: scope }
|
|
15
|
-
: scope.kind === 'product'
|
|
16
|
-
? { productId: scope.productId }
|
|
17
|
-
: { teamId: scope.teamId };
|
|
18
|
-
return createChecklistsMcpServerCore(getToolDeps(false, ctx));
|
|
19
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI command: edsger class-diagram <productId> --diagram-id <id>
|
|
3
|
-
* Maps a UML class diagram into the diagrams tables (type='class').
|
|
4
|
-
*/
|
|
5
|
-
import { type DiagramCommandOptions } from '../diagram-shared/index.js';
|
|
6
|
-
export type ClassDiagramCliOptions = DiagramCommandOptions;
|
|
7
|
-
export declare function runClassDiagram(productId: string | undefined, options: ClassDiagramCliOptions): Promise<void>;
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* CLI command: edsger class-diagram <productId> --diagram-id <id>
|
|
3
|
-
* Maps a UML class diagram into the diagrams tables (type='class').
|
|
4
|
-
*/
|
|
5
|
-
import { runClassDiagramPhase } from '../../phases/class-diagram/index.js';
|
|
6
|
-
import { runDiagramCommand, } from '../diagram-shared/index.js';
|
|
7
|
-
export function runClassDiagram(productId, options) {
|
|
8
|
-
return runDiagramCommand('class-diagram', productId, options, runClassDiagramPhase);
|
|
9
|
-
}
|