muonroi-cli 1.8.1 → 1.8.4
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 +5 -17
- package/README.md +20 -9
- package/dist/src/generated/version.d.ts +1 -1
- package/dist/src/generated/version.js +1 -1
- package/dist/src/mcp/setup-guide-text.d.ts +1 -1
- package/dist/src/mcp/setup-guide-text.js +8 -5
- package/dist/src/orchestrator/orchestrator.js +22 -13
- package/dist/src/orchestrator/tool-engine.d.ts +4 -0
- package/dist/src/orchestrator/tool-engine.js +49 -0
- package/dist/src/ui/use-app-logic.js +0 -0
- package/dist/src/utils/install-manager.d.ts +1 -0
- package/dist/src/utils/install-manager.js +41 -10
- package/dist/src/utils/update-checker.js +12 -2
- package/package.json +9 -2
- package/dist/src/__test-helpers__/catalog-fixtures.d.ts +0 -22
- package/dist/src/__test-helpers__/catalog-fixtures.js +0 -55
- package/dist/src/__test-stubs__/ee-server.d.ts +0 -27
- package/dist/src/__test-stubs__/ee-server.js +0 -138
- package/dist/src/__test-stubs__/vitest-setup.d.ts +0 -1
- package/dist/src/__test-stubs__/vitest-setup.js +0 -38
- package/dist/src/__tests__/council/bubble-layout.test.d.ts +0 -1
- package/dist/src/__tests__/council/bubble-layout.test.js +0 -39
- package/dist/src/__tests__/council/code-block-truncate.test.d.ts +0 -1
- package/dist/src/__tests__/council/code-block-truncate.test.js +0 -45
- package/dist/src/__tests__/council/role-palette.test.d.ts +0 -1
- package/dist/src/__tests__/council/role-palette.test.js +0 -59
- package/dist/src/__tests__/first-run-wizard.test.d.ts +0 -1
- package/dist/src/__tests__/first-run-wizard.test.js +0 -9
- package/dist/src/agent-harness/__tests__/cli-flags.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/cli-flags.spec.js +0 -33
- package/dist/src/agent-harness/__tests__/driver.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/driver.spec.js +0 -141
- package/dist/src/agent-harness/__tests__/idle.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/idle.spec.js +0 -84
- package/dist/src/agent-harness/__tests__/mock-llm.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/mock-llm.spec.js +0 -91
- package/dist/src/agent-harness/__tests__/mock-model.spec.d.ts +0 -5
- package/dist/src/agent-harness/__tests__/mock-model.spec.js +0 -270
- package/dist/src/agent-harness/__tests__/predicate.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/predicate.spec.js +0 -27
- package/dist/src/agent-harness/__tests__/protocol.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/protocol.spec.js +0 -56
- package/dist/src/agent-harness/__tests__/schema.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/schema.spec.js +0 -76
- package/dist/src/agent-harness/__tests__/selector.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/selector.spec.js +0 -70
- package/dist/src/agent-harness/__tests__/sidechannel.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/sidechannel.spec.js +0 -29
- package/dist/src/agent-harness/__tests__/spec-helpers.spec.d.ts +0 -1
- package/dist/src/agent-harness/__tests__/spec-helpers.spec.js +0 -68
- package/dist/src/chat/__tests__/broadcast-bus.test.d.ts +0 -1
- package/dist/src/chat/__tests__/broadcast-bus.test.js +0 -81
- package/dist/src/chat/__tests__/channel-manager.test.d.ts +0 -1
- package/dist/src/chat/__tests__/channel-manager.test.js +0 -133
- package/dist/src/chat/__tests__/client.test.d.ts +0 -1
- package/dist/src/chat/__tests__/client.test.js +0 -109
- package/dist/src/chat/__tests__/discord-integration.test.d.ts +0 -1
- package/dist/src/chat/__tests__/discord-integration.test.js +0 -153
- package/dist/src/chat/__tests__/intent-prompt.test.d.ts +0 -1
- package/dist/src/chat/__tests__/intent-prompt.test.js +0 -80
- package/dist/src/chat/__tests__/verdict-resolver.test.d.ts +0 -1
- package/dist/src/chat/__tests__/verdict-resolver.test.js +0 -308
- package/dist/src/cli/__tests__/bw-vault.test.d.ts +0 -1
- package/dist/src/cli/__tests__/bw-vault.test.js +0 -87
- package/dist/src/cli/__tests__/keys-bundle.test.d.ts +0 -1
- package/dist/src/cli/__tests__/keys-bundle.test.js +0 -40
- package/dist/src/cli/__tests__/share-cmd.test.d.ts +0 -1
- package/dist/src/cli/__tests__/share-cmd.test.js +0 -175
- package/dist/src/cli/config/__tests__/model-picker.test.d.ts +0 -1
- package/dist/src/cli/config/__tests__/model-picker.test.js +0 -56
- package/dist/src/cli/config/__tests__/provider-fetch.test.d.ts +0 -1
- package/dist/src/cli/config/__tests__/provider-fetch.test.js +0 -38
- package/dist/src/cli/cost-forensics.test.d.ts +0 -1
- package/dist/src/cli/cost-forensics.test.js +0 -223
- package/dist/src/cli/experience-report.test.d.ts +0 -5
- package/dist/src/cli/experience-report.test.js +0 -63
- package/dist/src/cli/keys.test.d.ts +0 -1
- package/dist/src/cli/keys.test.js +0 -86
- package/dist/src/council/__tests__/abort-threading.test.d.ts +0 -1
- package/dist/src/council/__tests__/abort-threading.test.js +0 -193
- package/dist/src/council/__tests__/accounting.test.d.ts +0 -1
- package/dist/src/council/__tests__/accounting.test.js +0 -66
- package/dist/src/council/__tests__/audit-replay.test.d.ts +0 -1
- package/dist/src/council/__tests__/audit-replay.test.js +0 -241
- package/dist/src/council/__tests__/clarification-prompt.test.d.ts +0 -1
- package/dist/src/council/__tests__/clarification-prompt.test.js +0 -71
- package/dist/src/council/__tests__/clarifier-max-rounds.test.d.ts +0 -1
- package/dist/src/council/__tests__/clarifier-max-rounds.test.js +0 -46
- package/dist/src/council/__tests__/clarifier-options.test.d.ts +0 -1
- package/dist/src/council/__tests__/clarifier-options.test.js +0 -54
- package/dist/src/council/__tests__/clarifier-ready-gate.test.d.ts +0 -1
- package/dist/src/council/__tests__/clarifier-ready-gate.test.js +0 -265
- package/dist/src/council/__tests__/cost-aware.test.d.ts +0 -1
- package/dist/src/council/__tests__/cost-aware.test.js +0 -49
- package/dist/src/council/__tests__/council-turn-length-emit.test.d.ts +0 -1
- package/dist/src/council/__tests__/council-turn-length-emit.test.js +0 -130
- package/dist/src/council/__tests__/debate-planner-structured.test.d.ts +0 -1
- package/dist/src/council/__tests__/debate-planner-structured.test.js +0 -209
- package/dist/src/council/__tests__/debate-round-budget.test.d.ts +0 -1
- package/dist/src/council/__tests__/debate-round-budget.test.js +0 -45
- package/dist/src/council/__tests__/decisions-lock.test.d.ts +0 -6
- package/dist/src/council/__tests__/decisions-lock.test.js +0 -352
- package/dist/src/council/__tests__/evaluator-metrics.test.d.ts +0 -1
- package/dist/src/council/__tests__/evaluator-metrics.test.js +0 -463
- package/dist/src/council/__tests__/oauth-reachable.test.d.ts +0 -1
- package/dist/src/council/__tests__/oauth-reachable.test.js +0 -31
- package/dist/src/council/__tests__/parse-outcome-fallback.test.d.ts +0 -1
- package/dist/src/council/__tests__/parse-outcome-fallback.test.js +0 -114
- package/dist/src/council/__tests__/post-debate-recommendation.test.d.ts +0 -1
- package/dist/src/council/__tests__/post-debate-recommendation.test.js +0 -58
- package/dist/src/council/__tests__/research-tools.test.d.ts +0 -1
- package/dist/src/council/__tests__/research-tools.test.js +0 -214
- package/dist/src/council/__tests__/round-tools.test.d.ts +0 -1
- package/dist/src/council/__tests__/round-tools.test.js +0 -306
- package/dist/src/council/__tests__/tool-trace.test.d.ts +0 -1
- package/dist/src/council/__tests__/tool-trace.test.js +0 -131
- package/dist/src/council/__tests__/types-contract.test.d.ts +0 -9
- package/dist/src/council/__tests__/types-contract.test.js +0 -82
- package/dist/src/council/clarifier-question-cap.test.d.ts +0 -12
- package/dist/src/council/clarifier-question-cap.test.js +0 -73
- package/dist/src/daemon/scheduler.test.d.ts +0 -1
- package/dist/src/daemon/scheduler.test.js +0 -103
- package/dist/src/ee/__tests__/bb-design.test.d.ts +0 -14
- package/dist/src/ee/__tests__/bb-design.test.js +0 -180
- package/dist/src/ee/__tests__/ee-onboarding.test.d.ts +0 -1
- package/dist/src/ee/__tests__/ee-onboarding.test.js +0 -32
- package/dist/src/ee/__tests__/export-transcripts.test.d.ts +0 -11
- package/dist/src/ee/__tests__/export-transcripts.test.js +0 -200
- package/dist/src/ee/__tests__/pil-context-bridge.test.d.ts +0 -1
- package/dist/src/ee/__tests__/pil-context-bridge.test.js +0 -54
- package/dist/src/ee/__tests__/pipeline.integration.test.d.ts +0 -14
- package/dist/src/ee/__tests__/pipeline.integration.test.js +0 -151
- package/dist/src/ee/__tests__/recall-format.test.d.ts +0 -10
- package/dist/src/ee/__tests__/recall-format.test.js +0 -57
- package/dist/src/ee/__tests__/recall-ledger.test.d.ts +0 -1
- package/dist/src/ee/__tests__/recall-ledger.test.js +0 -45
- package/dist/src/ee/__tests__/render-sink-wiring.test.d.ts +0 -1
- package/dist/src/ee/__tests__/render-sink-wiring.test.js +0 -74
- package/dist/src/ee/artifact-cache.test.d.ts +0 -1
- package/dist/src/ee/artifact-cache.test.js +0 -69
- package/dist/src/ee/auth.test.d.ts +0 -1
- package/dist/src/ee/auth.test.js +0 -59
- package/dist/src/ee/bridge.test.d.ts +0 -1
- package/dist/src/ee/bridge.test.js +0 -230
- package/dist/src/ee/client.test.d.ts +0 -1
- package/dist/src/ee/client.test.js +0 -181
- package/dist/src/ee/extract-session.test.d.ts +0 -1
- package/dist/src/ee/extract-session.test.js +0 -192
- package/dist/src/ee/intercept.test.d.ts +0 -1
- package/dist/src/ee/intercept.test.js +0 -171
- package/dist/src/ee/judge.test.d.ts +0 -1
- package/dist/src/ee/judge.test.js +0 -190
- package/dist/src/ee/mistake-detector.test.d.ts +0 -1
- package/dist/src/ee/mistake-detector.test.js +0 -221
- package/dist/src/ee/offline-queue.test.d.ts +0 -1
- package/dist/src/ee/offline-queue.test.js +0 -246
- package/dist/src/ee/phase-outcome.test.d.ts +0 -1
- package/dist/src/ee/phase-outcome.test.js +0 -94
- package/dist/src/ee/phase-tracker.test.d.ts +0 -1
- package/dist/src/ee/phase-tracker.test.js +0 -142
- package/dist/src/ee/posttool.test.d.ts +0 -1
- package/dist/src/ee/posttool.test.js +0 -70
- package/dist/src/ee/prompt-stale.test.d.ts +0 -8
- package/dist/src/ee/prompt-stale.test.js +0 -76
- package/dist/src/ee/recall-mirror.test.d.ts +0 -1
- package/dist/src/ee/recall-mirror.test.js +0 -65
- package/dist/src/ee/render.test.d.ts +0 -1
- package/dist/src/ee/render.test.js +0 -63
- package/dist/src/ee/scope.test.d.ts +0 -1
- package/dist/src/ee/scope.test.js +0 -97
- package/dist/src/ee/search.test.d.ts +0 -1
- package/dist/src/ee/search.test.js +0 -23
- package/dist/src/ee/session-trajectory.test.d.ts +0 -1
- package/dist/src/ee/session-trajectory.test.js +0 -120
- package/dist/src/ee/touch.test.d.ts +0 -1
- package/dist/src/ee/touch.test.js +0 -62
- package/dist/src/ee/who-am-i.test.d.ts +0 -1
- package/dist/src/ee/who-am-i.test.js +0 -101
- package/dist/src/flow/__tests__/migration.test.d.ts +0 -1
- package/dist/src/flow/__tests__/migration.test.js +0 -105
- package/dist/src/flow/__tests__/parser.test.d.ts +0 -1
- package/dist/src/flow/__tests__/parser.test.js +0 -68
- package/dist/src/flow/__tests__/run-manager-product.test.d.ts +0 -1
- package/dist/src/flow/__tests__/run-manager-product.test.js +0 -49
- package/dist/src/flow/__tests__/run-manager.test.d.ts +0 -1
- package/dist/src/flow/__tests__/run-manager.test.js +0 -83
- package/dist/src/flow/__tests__/scaffold-checkpoint.test.d.ts +0 -1
- package/dist/src/flow/__tests__/scaffold-checkpoint.test.js +0 -93
- package/dist/src/flow/__tests__/scaffold.test.d.ts +0 -1
- package/dist/src/flow/__tests__/scaffold.test.js +0 -47
- package/dist/src/flow/__tests__/warning-persist.test.d.ts +0 -5
- package/dist/src/flow/__tests__/warning-persist.test.js +0 -96
- package/dist/src/flow/compaction/__tests__/compress.test.d.ts +0 -1
- package/dist/src/flow/compaction/__tests__/compress.test.js +0 -63
- package/dist/src/flow/compaction/__tests__/extract.test.d.ts +0 -1
- package/dist/src/flow/compaction/__tests__/extract.test.js +0 -66
- package/dist/src/flow/compaction/__tests__/preserve.test.d.ts +0 -1
- package/dist/src/flow/compaction/__tests__/preserve.test.js +0 -62
- package/dist/src/gsd/__tests__/gray-areas.test.d.ts +0 -1
- package/dist/src/gsd/__tests__/gray-areas.test.js +0 -29
- package/dist/src/gsd/__tests__/types.test.d.ts +0 -1
- package/dist/src/gsd/__tests__/types.test.js +0 -78
- package/dist/src/headless/__tests__/council-answers.test.d.ts +0 -1
- package/dist/src/headless/__tests__/council-answers.test.js +0 -251
- package/dist/src/headless/output.test.d.ts +0 -1
- package/dist/src/headless/output.test.js +0 -239
- package/dist/src/lsp/builtins.test.d.ts +0 -1
- package/dist/src/lsp/builtins.test.js +0 -112
- package/dist/src/lsp/client-normalize.test.d.ts +0 -12
- package/dist/src/lsp/client-normalize.test.js +0 -34
- package/dist/src/lsp/manager.test.d.ts +0 -1
- package/dist/src/lsp/manager.test.js +0 -194
- package/dist/src/lsp/npm-cache.test.d.ts +0 -1
- package/dist/src/lsp/npm-cache.test.js +0 -53
- package/dist/src/lsp/smoke.test.d.ts +0 -1
- package/dist/src/lsp/smoke.test.js +0 -56
- package/dist/src/maintain/__tests__/codebase-intel.test.d.ts +0 -5
- package/dist/src/maintain/__tests__/codebase-intel.test.js +0 -237
- package/dist/src/maintain/__tests__/gh-create-pr.test.d.ts +0 -11
- package/dist/src/maintain/__tests__/gh-create-pr.test.js +0 -160
- package/dist/src/maintain/__tests__/pr-builder.test.d.ts +0 -10
- package/dist/src/maintain/__tests__/pr-builder.test.js +0 -229
- package/dist/src/maintain/__tests__/repo-map.test.d.ts +0 -5
- package/dist/src/maintain/__tests__/repo-map.test.js +0 -90
- package/dist/src/maintain/__tests__/task-runner.test.d.ts +0 -11
- package/dist/src/maintain/__tests__/task-runner.test.js +0 -281
- package/dist/src/mcp/__tests__/auto-setup.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/auto-setup.test.js +0 -155
- package/dist/src/mcp/__tests__/cap-tool-result.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/cap-tool-result.test.js +0 -58
- package/dist/src/mcp/__tests__/client-pool.spec.d.ts +0 -1
- package/dist/src/mcp/__tests__/client-pool.spec.js +0 -169
- package/dist/src/mcp/__tests__/ee-tools.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/ee-tools.test.js +0 -226
- package/dist/src/mcp/__tests__/forensics-tools.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/forensics-tools.test.js +0 -54
- package/dist/src/mcp/__tests__/harness-driver-action-tools.spec.d.ts +0 -1
- package/dist/src/mcp/__tests__/harness-driver-action-tools.spec.js +0 -103
- package/dist/src/mcp/__tests__/harness-driver-async-tools.spec.d.ts +0 -1
- package/dist/src/mcp/__tests__/harness-driver-async-tools.spec.js +0 -112
- package/dist/src/mcp/__tests__/harness-driver-read-tools.spec.d.ts +0 -1
- package/dist/src/mcp/__tests__/harness-driver-read-tools.spec.js +0 -124
- package/dist/src/mcp/__tests__/harness-driver-security.spec.d.ts +0 -1
- package/dist/src/mcp/__tests__/harness-driver-security.spec.js +0 -61
- package/dist/src/mcp/__tests__/harness-driver.spec.d.ts +0 -1
- package/dist/src/mcp/__tests__/harness-driver.spec.js +0 -20
- package/dist/src/mcp/__tests__/lazy-schema.spec.d.ts +0 -1
- package/dist/src/mcp/__tests__/lazy-schema.spec.js +0 -152
- package/dist/src/mcp/__tests__/lsp-tools.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/lsp-tools.test.js +0 -56
- package/dist/src/mcp/__tests__/mcp-keychain.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/mcp-keychain.test.js +0 -40
- package/dist/src/mcp/__tests__/parallel-build.spec.d.ts +0 -1
- package/dist/src/mcp/__tests__/parallel-build.spec.js +0 -67
- package/dist/src/mcp/__tests__/research-onboarding.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/research-onboarding.test.js +0 -148
- package/dist/src/mcp/__tests__/runtime-hydration.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/runtime-hydration.test.js +0 -78
- package/dist/src/mcp/__tests__/runtime-output-cap.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/runtime-output-cap.test.js +0 -42
- package/dist/src/mcp/__tests__/runtime-sanitize.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/runtime-sanitize.test.js +0 -40
- package/dist/src/mcp/__tests__/self-verify-jobs.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/self-verify-jobs.test.js +0 -92
- package/dist/src/mcp/__tests__/smart-filter.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/smart-filter.test.js +0 -177
- package/dist/src/mcp/__tests__/tools-server.smoke.test.d.ts +0 -1
- package/dist/src/mcp/__tests__/tools-server.smoke.test.js +0 -42
- package/dist/src/mcp/parse-headers.test.d.ts +0 -1
- package/dist/src/mcp/parse-headers.test.js +0 -43
- package/dist/src/mcp/smoke.test.d.ts +0 -1
- package/dist/src/mcp/smoke.test.js +0 -159
- package/dist/src/models/__tests__/registry.test.d.ts +0 -1
- package/dist/src/models/__tests__/registry.test.js +0 -74
- package/dist/src/models/catalog-gemini.test.d.ts +0 -1
- package/dist/src/models/catalog-gemini.test.js +0 -48
- package/dist/src/models/catalog-url.test.d.ts +0 -1
- package/dist/src/models/catalog-url.test.js +0 -26
- package/dist/src/models/catalog-validation.test.d.ts +0 -1
- package/dist/src/models/catalog-validation.test.js +0 -63
- package/dist/src/ops/__tests__/doctor-council-mcp.test.d.ts +0 -1
- package/dist/src/ops/__tests__/doctor-council-mcp.test.js +0 -139
- package/dist/src/ops/__tests__/doctor-ee-health.test.d.ts +0 -1
- package/dist/src/ops/__tests__/doctor-ee-health.test.js +0 -134
- package/dist/src/ops/bug-report.test.d.ts +0 -1
- package/dist/src/ops/bug-report.test.js +0 -148
- package/dist/src/ops/doctor.test.d.ts +0 -1
- package/dist/src/ops/doctor.test.js +0 -97
- package/dist/src/orchestrator/__tests__/agent-base-url-switch.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/agent-base-url-switch.test.js +0 -77
- package/dist/src/orchestrator/__tests__/auto-commit.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/auto-commit.test.js +0 -142
- package/dist/src/orchestrator/__tests__/batch-turn-runner.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/batch-turn-runner.test.js +0 -164
- package/dist/src/orchestrator/__tests__/council-manager.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/council-manager.test.js +0 -148
- package/dist/src/orchestrator/__tests__/cross-turn-dedup.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/cross-turn-dedup.test.js +0 -175
- package/dist/src/orchestrator/__tests__/current-call-id.test.d.ts +0 -16
- package/dist/src/orchestrator/__tests__/current-call-id.test.js +0 -138
- package/dist/src/orchestrator/__tests__/delegations.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/delegations.test.js +0 -96
- package/dist/src/orchestrator/__tests__/error-forensics.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/error-forensics.test.js +0 -93
- package/dist/src/orchestrator/__tests__/flow-resume.test.d.ts +0 -5
- package/dist/src/orchestrator/__tests__/flow-resume.test.js +0 -61
- package/dist/src/orchestrator/__tests__/humanize-api-error.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/humanize-api-error.test.js +0 -68
- package/dist/src/orchestrator/__tests__/mcp-capability-block.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/mcp-capability-block.test.js +0 -39
- package/dist/src/orchestrator/__tests__/message-processor.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/message-processor.test.js +0 -189
- package/dist/src/orchestrator/__tests__/message-write-ahead.test.d.ts +0 -22
- package/dist/src/orchestrator/__tests__/message-write-ahead.test.js +0 -149
- package/dist/src/orchestrator/__tests__/project-stack.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/project-stack.test.js +0 -65
- package/dist/src/orchestrator/__tests__/prompts.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/prompts.test.js +0 -88
- package/dist/src/orchestrator/__tests__/read-path-budget.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/read-path-budget.test.js +0 -156
- package/dist/src/orchestrator/__tests__/retry-classifier.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/retry-classifier.test.js +0 -112
- package/dist/src/orchestrator/__tests__/retry-stream.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/retry-stream.test.js +0 -151
- package/dist/src/orchestrator/__tests__/route-feedback.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/route-feedback.test.js +0 -47
- package/dist/src/orchestrator/__tests__/stream-runner.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/stream-runner.test.js +0 -202
- package/dist/src/orchestrator/__tests__/sub-agent-model-tier.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/sub-agent-model-tier.test.js +0 -45
- package/dist/src/orchestrator/__tests__/sub-session-delegation.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/sub-session-delegation.test.js +0 -507
- package/dist/src/orchestrator/__tests__/usage-events-shape.test.d.ts +0 -8
- package/dist/src/orchestrator/__tests__/usage-events-shape.test.js +0 -58
- package/dist/src/orchestrator/__tests__/usage-normalizer-c1.test.d.ts +0 -21
- package/dist/src/orchestrator/__tests__/usage-normalizer-c1.test.js +0 -155
- package/dist/src/orchestrator/__tests__/usage-shape-threading.test.d.ts +0 -1
- package/dist/src/orchestrator/__tests__/usage-shape-threading.test.js +0 -98
- package/dist/src/orchestrator/__tests__/write-ahead.test.d.ts +0 -20
- package/dist/src/orchestrator/__tests__/write-ahead.test.js +0 -134
- package/dist/src/orchestrator/abort.test.d.ts +0 -1
- package/dist/src/orchestrator/abort.test.js +0 -34
- package/dist/src/orchestrator/agent.test.d.ts +0 -1
- package/dist/src/orchestrator/agent.test.js +0 -178
- package/dist/src/orchestrator/cleanup.test.d.ts +0 -1
- package/dist/src/orchestrator/cleanup.test.js +0 -67
- package/dist/src/orchestrator/compaction.test.d.ts +0 -1
- package/dist/src/orchestrator/compaction.test.js +0 -187
- package/dist/src/orchestrator/delegations.test.d.ts +0 -1
- package/dist/src/orchestrator/delegations.test.js +0 -107
- package/dist/src/orchestrator/grounding-check.test.d.ts +0 -1
- package/dist/src/orchestrator/grounding-check.test.js +0 -94
- package/dist/src/orchestrator/interrupted-turn.test.d.ts +0 -1
- package/dist/src/orchestrator/interrupted-turn.test.js +0 -34
- package/dist/src/orchestrator/message-seq.test.d.ts +0 -1
- package/dist/src/orchestrator/message-seq.test.js +0 -24
- package/dist/src/orchestrator/pending-calls.test.d.ts +0 -1
- package/dist/src/orchestrator/pending-calls.test.js +0 -188
- package/dist/src/orchestrator/provider-options-shape.spec.d.ts +0 -1
- package/dist/src/orchestrator/provider-options-shape.spec.js +0 -63
- package/dist/src/orchestrator/reasoning.test.d.ts +0 -1
- package/dist/src/orchestrator/reasoning.test.js +0 -101
- package/dist/src/orchestrator/repetition-detector.test.d.ts +0 -1
- package/dist/src/orchestrator/repetition-detector.test.js +0 -103
- package/dist/src/orchestrator/sandbox.test.d.ts +0 -1
- package/dist/src/orchestrator/sandbox.test.js +0 -99
- package/dist/src/orchestrator/scope-ceiling.test.d.ts +0 -13
- package/dist/src/orchestrator/scope-ceiling.test.js +0 -181
- package/dist/src/orchestrator/scope-reminder.test.d.ts +0 -15
- package/dist/src/orchestrator/scope-reminder.test.js +0 -225
- package/dist/src/orchestrator/session-experience.test.d.ts +0 -6
- package/dist/src/orchestrator/session-experience.test.js +0 -72
- package/dist/src/orchestrator/stall-rescue.test.d.ts +0 -1
- package/dist/src/orchestrator/stall-rescue.test.js +0 -117
- package/dist/src/orchestrator/stall-watchdog.test.d.ts +0 -1
- package/dist/src/orchestrator/stall-watchdog.test.js +0 -153
- package/dist/src/orchestrator/steer-inbox.test.d.ts +0 -1
- package/dist/src/orchestrator/steer-inbox.test.js +0 -33
- package/dist/src/orchestrator/sub-agent-cap.test.d.ts +0 -1
- package/dist/src/orchestrator/sub-agent-cap.test.js +0 -208
- package/dist/src/orchestrator/subagent-compactor.spec.d.ts +0 -1
- package/dist/src/orchestrator/subagent-compactor.spec.js +0 -636
- package/dist/src/orchestrator/text-tool-call-detector.test.d.ts +0 -1
- package/dist/src/orchestrator/text-tool-call-detector.test.js +0 -147
- package/dist/src/orchestrator/token-counter.test.d.ts +0 -1
- package/dist/src/orchestrator/token-counter.test.js +0 -57
- package/dist/src/orchestrator/tool-args-hash.test.d.ts +0 -1
- package/dist/src/orchestrator/tool-args-hash.test.js +0 -105
- package/dist/src/orchestrator/tool-args-repair.test.d.ts +0 -1
- package/dist/src/orchestrator/tool-args-repair.test.js +0 -136
- package/dist/src/orchestrator/tool-loop-askcard.test.d.ts +0 -1
- package/dist/src/orchestrator/tool-loop-askcard.test.js +0 -71
- package/dist/src/orchestrator/tool-loop-cap.test.d.ts +0 -1
- package/dist/src/orchestrator/tool-loop-cap.test.js +0 -176
- package/dist/src/orchestrator/tool-repetition-detector.test.d.ts +0 -1
- package/dist/src/orchestrator/tool-repetition-detector.test.js +0 -101
- package/dist/src/pil/__tests__/budget.test.d.ts +0 -1
- package/dist/src/pil/__tests__/budget.test.js +0 -33
- package/dist/src/pil/__tests__/clarity-gate.test.d.ts +0 -1
- package/dist/src/pil/__tests__/clarity-gate.test.js +0 -37
- package/dist/src/pil/__tests__/config.test.d.ts +0 -1
- package/dist/src/pil/__tests__/config.test.js +0 -57
- package/dist/src/pil/__tests__/discovery-cache.test.d.ts +0 -1
- package/dist/src/pil/__tests__/discovery-cache.test.js +0 -38
- package/dist/src/pil/__tests__/discovery-types.test.d.ts +0 -1
- package/dist/src/pil/__tests__/discovery-types.test.js +0 -65
- package/dist/src/pil/__tests__/discovery.test.d.ts +0 -1
- package/dist/src/pil/__tests__/discovery.test.js +0 -178
- package/dist/src/pil/__tests__/dual-run.test.d.ts +0 -1
- package/dist/src/pil/__tests__/dual-run.test.js +0 -51
- package/dist/src/pil/__tests__/layer1-intent-trace.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer1-intent-trace.test.js +0 -138
- package/dist/src/pil/__tests__/layer1-intent.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer1-intent.test.js +0 -329
- package/dist/src/pil/__tests__/layer15-context-scan.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer15-context-scan.test.js +0 -64
- package/dist/src/pil/__tests__/layer16-clarity.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer16-clarity.test.js +0 -72
- package/dist/src/pil/__tests__/layer17-feasibility.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer17-feasibility.test.js +0 -36
- package/dist/src/pil/__tests__/layer18-acceptance.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer18-acceptance.test.js +0 -18
- package/dist/src/pil/__tests__/layer2-personality.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer2-personality.test.js +0 -57
- package/dist/src/pil/__tests__/layer2_5-ponytail.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer2_5-ponytail.test.js +0 -53
- package/dist/src/pil/__tests__/layer3-ee-injection.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer3-ee-injection.test.js +0 -221
- package/dist/src/pil/__tests__/layer3-injected-chunk.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer3-injected-chunk.test.js +0 -134
- package/dist/src/pil/__tests__/layer4-gsd.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer4-gsd.test.js +0 -191
- package/dist/src/pil/__tests__/layer5-context.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer5-context.test.js +0 -175
- package/dist/src/pil/__tests__/layer6-output.test.d.ts +0 -1
- package/dist/src/pil/__tests__/layer6-output.test.js +0 -465
- package/dist/src/pil/__tests__/llm-classify.test.d.ts +0 -1
- package/dist/src/pil/__tests__/llm-classify.test.js +0 -275
- package/dist/src/pil/__tests__/native-capabilities-workbook.test.d.ts +0 -1
- package/dist/src/pil/__tests__/native-capabilities-workbook.test.js +0 -40
- package/dist/src/pil/__tests__/ollama-classify.test.d.ts +0 -1
- package/dist/src/pil/__tests__/ollama-classify.test.js +0 -68
- package/dist/src/pil/__tests__/orchestrator-integration.test.d.ts +0 -10
- package/dist/src/pil/__tests__/orchestrator-integration.test.js +0 -100
- package/dist/src/pil/__tests__/pipeline.test.d.ts +0 -1
- package/dist/src/pil/__tests__/pipeline.test.js +0 -188
- package/dist/src/pil/__tests__/renderer-coverage.test.d.ts +0 -7
- package/dist/src/pil/__tests__/renderer-coverage.test.js +0 -42
- package/dist/src/pil/__tests__/response-tools.test.d.ts +0 -1
- package/dist/src/pil/__tests__/response-tools.test.js +0 -242
- package/dist/src/pil/__tests__/schema.test.d.ts +0 -1
- package/dist/src/pil/__tests__/schema.test.js +0 -202
- package/dist/src/pil/__tests__/scoreComplexity.test.d.ts +0 -1
- package/dist/src/pil/__tests__/scoreComplexity.test.js +0 -119
- package/dist/src/pil/__tests__/scoreSufficiency.test.d.ts +0 -8
- package/dist/src/pil/__tests__/scoreSufficiency.test.js +0 -89
- package/dist/src/pil/__tests__/store.test.d.ts +0 -1
- package/dist/src/pil/__tests__/store.test.js +0 -44
- package/dist/src/pil/__tests__/surface-compaction-artifacts.test.d.ts +0 -1
- package/dist/src/pil/__tests__/surface-compaction-artifacts.test.js +0 -112
- package/dist/src/pil/__tests__/task-tier-map.test.d.ts +0 -1
- package/dist/src/pil/__tests__/task-tier-map.test.js +0 -33
- package/dist/src/pil/agent-operating-contract.test.d.ts +0 -1
- package/dist/src/pil/agent-operating-contract.test.js +0 -80
- package/dist/src/pil/cheap-model-playbook.test.d.ts +0 -1
- package/dist/src/pil/cheap-model-playbook.test.js +0 -160
- package/dist/src/pil/cheap-model-workbooks.test.d.ts +0 -1
- package/dist/src/pil/cheap-model-workbooks.test.js +0 -129
- package/dist/src/pil/layer1-intent.test.d.ts +0 -1
- package/dist/src/pil/layer1-intent.test.js +0 -764
- package/dist/src/pil/layer1_5-complexity-size.test.d.ts +0 -10
- package/dist/src/pil/layer1_5-complexity-size.test.js +0 -248
- package/dist/src/pil/session-experience-injection.test.d.ts +0 -6
- package/dist/src/pil/session-experience-injection.test.js +0 -79
- package/dist/src/pil/session-state.test.d.ts +0 -1
- package/dist/src/pil/session-state.test.js +0 -73
- package/dist/src/playbook/__tests__/directives.test.d.ts +0 -1
- package/dist/src/playbook/__tests__/directives.test.js +0 -115
- package/dist/src/product-loop/__tests__/artifact-io.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/artifact-io.test.js +0 -83
- package/dist/src/product-loop/__tests__/assumption-ledger.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/assumption-ledger.test.js +0 -261
- package/dist/src/product-loop/__tests__/backlog-builder.test.d.ts +0 -10
- package/dist/src/product-loop/__tests__/backlog-builder.test.js +0 -175
- package/dist/src/product-loop/__tests__/backlog-store.test.d.ts +0 -4
- package/dist/src/product-loop/__tests__/backlog-store.test.js +0 -96
- package/dist/src/product-loop/__tests__/cb2-retry-bonus.test.d.ts +0 -13
- package/dist/src/product-loop/__tests__/cb2-retry-bonus.test.js +0 -158
- package/dist/src/product-loop/__tests__/circuit-breakers-coverage.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/circuit-breakers-coverage.test.js +0 -67
- package/dist/src/product-loop/__tests__/circuit-breakers.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/circuit-breakers.test.js +0 -79
- package/dist/src/product-loop/__tests__/complexity-routing.spec.d.ts +0 -11
- package/dist/src/product-loop/__tests__/complexity-routing.spec.js +0 -240
- package/dist/src/product-loop/__tests__/context-policy.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/context-policy.test.js +0 -266
- package/dist/src/product-loop/__tests__/cost-preview.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/cost-preview.test.js +0 -111
- package/dist/src/product-loop/__tests__/cost-scoper.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/cost-scoper.test.js +0 -50
- package/dist/src/product-loop/__tests__/cross-run-memory.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/cross-run-memory.test.js +0 -168
- package/dist/src/product-loop/__tests__/design-output.spec.d.ts +0 -1
- package/dist/src/product-loop/__tests__/design-output.spec.js +0 -36
- package/dist/src/product-loop/__tests__/discover.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discover.test.js +0 -83
- package/dist/src/product-loop/__tests__/discovery-context-format.test.d.ts +0 -13
- package/dist/src/product-loop/__tests__/discovery-context-format.test.js +0 -100
- package/dist/src/product-loop/__tests__/discovery-council-runner.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-council-runner.test.js +0 -13
- package/dist/src/product-loop/__tests__/discovery-detection.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-detection.test.js +0 -151
- package/dist/src/product-loop/__tests__/discovery-ecosystem.test.d.ts +0 -8
- package/dist/src/product-loop/__tests__/discovery-ecosystem.test.js +0 -209
- package/dist/src/product-loop/__tests__/discovery-integration.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-integration.test.js +0 -126
- package/dist/src/product-loop/__tests__/discovery-interview.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-interview.test.js +0 -394
- package/dist/src/product-loop/__tests__/discovery-migrations.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-migrations.test.js +0 -69
- package/dist/src/product-loop/__tests__/discovery-persistence.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-persistence.test.js +0 -146
- package/dist/src/product-loop/__tests__/discovery-prompt-parser.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-prompt-parser.test.js +0 -65
- package/dist/src/product-loop/__tests__/discovery-prompt-specificity.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-prompt-specificity.test.js +0 -55
- package/dist/src/product-loop/__tests__/discovery-recommender-ecosystem.test.d.ts +0 -9
- package/dist/src/product-loop/__tests__/discovery-recommender-ecosystem.test.js +0 -178
- package/dist/src/product-loop/__tests__/discovery-recommender.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-recommender.test.js +0 -316
- package/dist/src/product-loop/__tests__/discovery-schema.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/discovery-schema.test.js +0 -77
- package/dist/src/product-loop/__tests__/done-gate-coverage.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/done-gate-coverage.test.js +0 -135
- package/dist/src/product-loop/__tests__/done-gate.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/done-gate.test.js +0 -122
- package/dist/src/product-loop/__tests__/ee-extract-wiring.test.d.ts +0 -8
- package/dist/src/product-loop/__tests__/ee-extract-wiring.test.js +0 -186
- package/dist/src/product-loop/__tests__/extract-to-ee.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/extract-to-ee.test.js +0 -161
- package/dist/src/product-loop/__tests__/feedback-routing.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/feedback-routing.test.js +0 -83
- package/dist/src/product-loop/__tests__/gather-selectable-alts.test.d.ts +0 -15
- package/dist/src/product-loop/__tests__/gather-selectable-alts.test.js +0 -143
- package/dist/src/product-loop/__tests__/hot-path.spec.d.ts +0 -11
- package/dist/src/product-loop/__tests__/hot-path.spec.js +0 -146
- package/dist/src/product-loop/__tests__/integration.test.d.ts +0 -7
- package/dist/src/product-loop/__tests__/integration.test.js +0 -301
- package/dist/src/product-loop/__tests__/loop-driver-audit.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/loop-driver-audit.test.js +0 -269
- package/dist/src/product-loop/__tests__/loop-driver.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/loop-driver.test.js +0 -225
- package/dist/src/product-loop/__tests__/maintenance-task-synthesis.test.d.ts +0 -8
- package/dist/src/product-loop/__tests__/maintenance-task-synthesis.test.js +0 -67
- package/dist/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.d.ts +0 -13
- package/dist/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.js +0 -268
- package/dist/src/product-loop/__tests__/phase-a2-backlog-build.test.d.ts +0 -8
- package/dist/src/product-loop/__tests__/phase-a2-backlog-build.test.js +0 -162
- package/dist/src/product-loop/__tests__/phase-budget.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/phase-budget.test.js +0 -149
- package/dist/src/product-loop/__tests__/phase-orchestrator-integration.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/phase-orchestrator-integration.test.js +0 -138
- package/dist/src/product-loop/__tests__/phase-plan.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/phase-plan.test.js +0 -208
- package/dist/src/product-loop/__tests__/phase-rituals.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/phase-rituals.test.js +0 -174
- package/dist/src/product-loop/__tests__/phase-runner.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/phase-runner.test.js +0 -414
- package/dist/src/product-loop/__tests__/phase-tracker-bridge.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/phase-tracker-bridge.test.js +0 -67
- package/dist/src/product-loop/__tests__/pick-backend-stack.test.d.ts +0 -11
- package/dist/src/product-loop/__tests__/pick-backend-stack.test.js +0 -95
- package/dist/src/product-loop/__tests__/product-identity.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/product-identity.test.js +0 -40
- package/dist/src/product-loop/__tests__/progress-snapshot.test.d.ts +0 -8
- package/dist/src/product-loop/__tests__/progress-snapshot.test.js +0 -152
- package/dist/src/product-loop/__tests__/reality-anchor.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/reality-anchor.test.js +0 -49
- package/dist/src/product-loop/__tests__/repo-audit.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/repo-audit.test.js +0 -97
- package/dist/src/product-loop/__tests__/repo-brief.test.d.ts +0 -9
- package/dist/src/product-loop/__tests__/repo-brief.test.js +0 -132
- package/dist/src/product-loop/__tests__/role-memory.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/role-memory.test.js +0 -56
- package/dist/src/product-loop/__tests__/role-registry.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/role-registry.test.js +0 -222
- package/dist/src/product-loop/__tests__/role-routing-ee.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/role-routing-ee.test.js +0 -79
- package/dist/src/product-loop/__tests__/route-decision-emit.test.d.ts +0 -10
- package/dist/src/product-loop/__tests__/route-decision-emit.test.js +0 -222
- package/dist/src/product-loop/__tests__/seed-questions.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/seed-questions.test.js +0 -30
- package/dist/src/product-loop/__tests__/ship-polish.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/ship-polish.test.js +0 -96
- package/dist/src/product-loop/__tests__/sprint-planner.test.d.ts +0 -6
- package/dist/src/product-loop/__tests__/sprint-planner.test.js +0 -140
- package/dist/src/product-loop/__tests__/sprint-runner-backlog.test.d.ts +0 -8
- package/dist/src/product-loop/__tests__/sprint-runner-backlog.test.js +0 -221
- package/dist/src/product-loop/__tests__/sprint-runner-emit.test.d.ts +0 -14
- package/dist/src/product-loop/__tests__/sprint-runner-emit.test.js +0 -279
- package/dist/src/product-loop/__tests__/sprint-runner-phase-chunks.test.d.ts +0 -14
- package/dist/src/product-loop/__tests__/sprint-runner-phase-chunks.test.js +0 -193
- package/dist/src/product-loop/__tests__/sprint-runner.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/sprint-runner.test.js +0 -432
- package/dist/src/product-loop/__tests__/sprint-self-verify.test.d.ts +0 -8
- package/dist/src/product-loop/__tests__/sprint-self-verify.test.js +0 -73
- package/dist/src/product-loop/__tests__/sprint-store.test.d.ts +0 -7
- package/dist/src/product-loop/__tests__/sprint-store.test.js +0 -84
- package/dist/src/product-loop/__tests__/stakeholder-acl.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/stakeholder-acl.test.js +0 -83
- package/dist/src/product-loop/__tests__/state-md-ee-injections.test.d.ts +0 -8
- package/dist/src/product-loop/__tests__/state-md-ee-injections.test.js +0 -182
- package/dist/src/product-loop/__tests__/sufficiency-routing.spec.d.ts +0 -12
- package/dist/src/product-loop/__tests__/sufficiency-routing.spec.js +0 -140
- package/dist/src/product-loop/__tests__/typed-artifacts.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/typed-artifacts.test.js +0 -222
- package/dist/src/product-loop/__tests__/types.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/types.test.js +0 -79
- package/dist/src/product-loop/__tests__/verify-failure-threshold.test.d.ts +0 -9
- package/dist/src/product-loop/__tests__/verify-failure-threshold.test.js +0 -146
- package/dist/src/product-loop/__tests__/verify-failure-tracking.test.d.ts +0 -4
- package/dist/src/product-loop/__tests__/verify-failure-tracking.test.js +0 -122
- package/dist/src/product-loop/__tests__/verify-result.test.d.ts +0 -1
- package/dist/src/product-loop/__tests__/verify-result.test.js +0 -53
- package/dist/src/providers/__tests__/adapter-oauth-wiring.test.d.ts +0 -8
- package/dist/src/providers/__tests__/adapter-oauth-wiring.test.js +0 -125
- package/dist/src/providers/__tests__/capabilities-cosmetic.test.d.ts +0 -1
- package/dist/src/providers/__tests__/capabilities-cosmetic.test.js +0 -109
- package/dist/src/providers/__tests__/capabilities-flags.test.d.ts +0 -1
- package/dist/src/providers/__tests__/capabilities-flags.test.js +0 -145
- package/dist/src/providers/__tests__/capabilities-provider-options.test.d.ts +0 -1
- package/dist/src/providers/__tests__/capabilities-provider-options.test.js +0 -201
- package/dist/src/providers/__tests__/capabilities-sanitize.test.d.ts +0 -1
- package/dist/src/providers/__tests__/capabilities-sanitize.test.js +0 -60
- package/dist/src/providers/__tests__/capabilities.test.d.ts +0 -1
- package/dist/src/providers/__tests__/capabilities.test.js +0 -41
- package/dist/src/providers/__tests__/provider-coverage.test.d.ts +0 -1
- package/dist/src/providers/__tests__/provider-coverage.test.js +0 -45
- package/dist/src/providers/__tests__/reasoning-roundtrip.test.d.ts +0 -1
- package/dist/src/providers/__tests__/reasoning-roundtrip.test.js +0 -216
- package/dist/src/providers/__tests__/runtime-integration.test.d.ts +0 -1
- package/dist/src/providers/__tests__/runtime-integration.test.js +0 -93
- package/dist/src/providers/__tests__/runtime.test.d.ts +0 -1
- package/dist/src/providers/__tests__/runtime.test.js +0 -80
- package/dist/src/providers/__tests__/siliconflow-sse-repair.test.d.ts +0 -1
- package/dist/src/providers/__tests__/siliconflow-sse-repair.test.js +0 -267
- package/dist/src/providers/__tests__/strategies-registry.test.d.ts +0 -8
- package/dist/src/providers/__tests__/strategies-registry.test.js +0 -49
- package/dist/src/providers/__tests__/strategies-resolve.test.d.ts +0 -12
- package/dist/src/providers/__tests__/strategies-resolve.test.js +0 -128
- package/dist/src/providers/__tests__/wire-debug.test.d.ts +0 -1
- package/dist/src/providers/__tests__/wire-debug.test.js +0 -39
- package/dist/src/providers/adapter.test.d.ts +0 -1
- package/dist/src/providers/adapter.test.js +0 -19
- package/dist/src/providers/auth/__tests__/browser-flow.test.d.ts +0 -8
- package/dist/src/providers/auth/__tests__/browser-flow.test.js +0 -186
- package/dist/src/providers/auth/__tests__/device-flow.test.d.ts +0 -6
- package/dist/src/providers/auth/__tests__/device-flow.test.js +0 -219
- package/dist/src/providers/auth/__tests__/gemini-oauth.test.d.ts +0 -4
- package/dist/src/providers/auth/__tests__/gemini-oauth.test.js +0 -306
- package/dist/src/providers/auth/__tests__/grok-oauth.test.d.ts +0 -8
- package/dist/src/providers/auth/__tests__/grok-oauth.test.js +0 -236
- package/dist/src/providers/auth/__tests__/openai-oauth.test.d.ts +0 -7
- package/dist/src/providers/auth/__tests__/openai-oauth.test.js +0 -309
- package/dist/src/providers/auth/__tests__/token-store.test.d.ts +0 -7
- package/dist/src/providers/auth/__tests__/token-store.test.js +0 -125
- package/dist/src/providers/errors.test.d.ts +0 -1
- package/dist/src/providers/errors.test.js +0 -66
- package/dist/src/providers/gemini.test.d.ts +0 -1
- package/dist/src/providers/gemini.test.js +0 -37
- package/dist/src/providers/keychain.test.d.ts +0 -1
- package/dist/src/providers/keychain.test.js +0 -84
- package/dist/src/providers/mcp-vision-bridge.test.d.ts +0 -1
- package/dist/src/providers/mcp-vision-bridge.test.js +0 -381
- package/dist/src/providers/ollama.test.d.ts +0 -1
- package/dist/src/providers/ollama.test.js +0 -37
- package/dist/src/providers/openai-compatible.test.d.ts +0 -1
- package/dist/src/providers/openai-compatible.test.js +0 -53
- package/dist/src/providers/openai.test.d.ts +0 -1
- package/dist/src/providers/openai.test.js +0 -53
- package/dist/src/providers/pricing.test.d.ts +0 -1
- package/dist/src/providers/pricing.test.js +0 -81
- package/dist/src/providers/prompt-cache-key.spec.d.ts +0 -5
- package/dist/src/providers/prompt-cache-key.spec.js +0 -24
- package/dist/src/providers/runtime-mock.spec.d.ts +0 -8
- package/dist/src/providers/runtime-mock.spec.js +0 -69
- package/dist/src/providers/vision-proxy.test.d.ts +0 -1
- package/dist/src/providers/vision-proxy.test.js +0 -212
- package/dist/src/reporter/__tests__/acl-check.test.d.ts +0 -6
- package/dist/src/reporter/__tests__/acl-check.test.js +0 -59
- package/dist/src/reporter/__tests__/auto-fire.test.d.ts +0 -10
- package/dist/src/reporter/__tests__/auto-fire.test.js +0 -140
- package/dist/src/reporter/__tests__/budget.test.d.ts +0 -7
- package/dist/src/reporter/__tests__/budget.test.js +0 -60
- package/dist/src/reporter/__tests__/handlers.test.d.ts +0 -7
- package/dist/src/reporter/__tests__/handlers.test.js +0 -163
- package/dist/src/reporter/__tests__/query-router.test.d.ts +0 -6
- package/dist/src/reporter/__tests__/query-router.test.js +0 -90
- package/dist/src/router/__tests__/step-router.test.d.ts +0 -4
- package/dist/src/router/__tests__/step-router.test.js +0 -131
- package/dist/src/router/classifier/index.test.d.ts +0 -1
- package/dist/src/router/classifier/index.test.js +0 -29
- package/dist/src/router/classifier/regex.test.d.ts +0 -1
- package/dist/src/router/classifier/regex.test.js +0 -44
- package/dist/src/router/classifier/tree-sitter.test.d.ts +0 -1
- package/dist/src/router/classifier/tree-sitter.test.js +0 -23
- package/dist/src/router/cold.test.d.ts +0 -1
- package/dist/src/router/cold.test.js +0 -56
- package/dist/src/router/decide.test.d.ts +0 -1
- package/dist/src/router/decide.test.js +0 -198
- package/dist/src/router/health.test.d.ts +0 -1
- package/dist/src/router/health.test.js +0 -52
- package/dist/src/router/provider-sentinel.test.d.ts +0 -1
- package/dist/src/router/provider-sentinel.test.js +0 -20
- package/dist/src/router/role-override.test.d.ts +0 -1
- package/dist/src/router/role-override.test.js +0 -26
- package/dist/src/router/warm.test.d.ts +0 -1
- package/dist/src/router/warm.test.js +0 -202
- package/dist/src/scaffold/__tests__/continuation-prompt.test.d.ts +0 -4
- package/dist/src/scaffold/__tests__/continuation-prompt.test.js +0 -79
- package/dist/src/scaffold/__tests__/continue-as-council.spec.d.ts +0 -10
- package/dist/src/scaffold/__tests__/continue-as-council.spec.js +0 -102
- package/dist/src/scaffold/__tests__/dotnet-assembly-name.test.d.ts +0 -1
- package/dist/src/scaffold/__tests__/dotnet-assembly-name.test.js +0 -27
- package/dist/src/scaffold/__tests__/fe-scaffold-contents.test.d.ts +0 -1
- package/dist/src/scaffold/__tests__/fe-scaffold-contents.test.js +0 -106
- package/dist/src/scaffold/__tests__/init-new.smoke.spec.d.ts +0 -15
- package/dist/src/scaffold/__tests__/init-new.smoke.spec.js +0 -81
- package/dist/src/scaffold/__tests__/init-new.spec.d.ts +0 -5
- package/dist/src/scaffold/__tests__/init-new.spec.js +0 -378
- package/dist/src/scaffold/__tests__/install-bb-templates.spec.d.ts +0 -1
- package/dist/src/scaffold/__tests__/install-bb-templates.spec.js +0 -77
- package/dist/src/scaffold/__tests__/point-to-existing.spec.d.ts +0 -7
- package/dist/src/scaffold/__tests__/point-to-existing.spec.js +0 -94
- package/dist/src/self-qa/__tests__/agentic-context.test.d.ts +0 -1
- package/dist/src/self-qa/__tests__/agentic-context.test.js +0 -98
- package/dist/src/self-qa/__tests__/agentic-loop.test.d.ts +0 -1
- package/dist/src/self-qa/__tests__/agentic-loop.test.js +0 -62
- package/dist/src/self-qa/__tests__/delta-encoder.test.d.ts +0 -1
- package/dist/src/self-qa/__tests__/delta-encoder.test.js +0 -97
- package/dist/src/self-qa/__tests__/judge.test.d.ts +0 -1
- package/dist/src/self-qa/__tests__/judge.test.js +0 -131
- package/dist/src/self-qa/__tests__/scenario-planner.test.d.ts +0 -1
- package/dist/src/self-qa/__tests__/scenario-planner.test.js +0 -79
- package/dist/src/self-qa/__tests__/spec-emitter.test.d.ts +0 -1
- package/dist/src/self-qa/__tests__/spec-emitter.test.js +0 -62
- package/dist/src/storage/__tests__/hierarchical-session.test.d.ts +0 -1
- package/dist/src/storage/__tests__/hierarchical-session.test.js +0 -161
- package/dist/src/storage/__tests__/migrations.test.d.ts +0 -12
- package/dist/src/storage/__tests__/migrations.test.js +0 -357
- package/dist/src/storage/__tests__/sweep-stale-pending.test.d.ts +0 -10
- package/dist/src/storage/__tests__/sweep-stale-pending.test.js +0 -97
- package/dist/src/storage/__tests__/ui-interaction-log.test.d.ts +0 -7
- package/dist/src/storage/__tests__/ui-interaction-log.test.js +0 -127
- package/dist/src/storage/atomic-io.test.d.ts +0 -1
- package/dist/src/storage/atomic-io.test.js +0 -74
- package/dist/src/storage/config.test.d.ts +0 -1
- package/dist/src/storage/config.test.js +0 -29
- package/dist/src/storage/session-experience-store.test.d.ts +0 -5
- package/dist/src/storage/session-experience-store.test.js +0 -86
- package/dist/src/storage/tool-results.test.d.ts +0 -1
- package/dist/src/storage/tool-results.test.js +0 -48
- package/dist/src/storage/transcript-response-entry.test.d.ts +0 -1
- package/dist/src/storage/transcript-response-entry.test.js +0 -111
- package/dist/src/storage/transcript.test.d.ts +0 -1
- package/dist/src/storage/transcript.test.js +0 -22
- package/dist/src/storage/usage-cap.test.d.ts +0 -1
- package/dist/src/storage/usage-cap.test.js +0 -51
- package/dist/src/tools/__tests__/native-tools.test.d.ts +0 -1
- package/dist/src/tools/__tests__/native-tools.test.js +0 -59
- package/dist/src/tools/__tests__/vision-gate.test.d.ts +0 -1
- package/dist/src/tools/__tests__/vision-gate.test.js +0 -56
- package/dist/src/tools/bash-output-cache.test.d.ts +0 -1
- package/dist/src/tools/bash-output-cache.test.js +0 -89
- package/dist/src/tools/bash-output-integration.test.d.ts +0 -10
- package/dist/src/tools/bash-output-integration.test.js +0 -30
- package/dist/src/tools/bash.test.d.ts +0 -1
- package/dist/src/tools/bash.test.js +0 -90
- package/dist/src/tools/computer.test.d.ts +0 -1
- package/dist/src/tools/computer.test.js +0 -142
- package/dist/src/tools/file-tracker.test.d.ts +0 -1
- package/dist/src/tools/file-tracker.test.js +0 -77
- package/dist/src/tools/file.test.d.ts +0 -1
- package/dist/src/tools/file.test.js +0 -106
- package/dist/src/tools/git-safety.test.d.ts +0 -1
- package/dist/src/tools/git-safety.test.js +0 -155
- package/dist/src/tools/registry-bash-empty-command.test.d.ts +0 -13
- package/dist/src/tools/registry-bash-empty-command.test.js +0 -57
- package/dist/src/tools/registry-bash-footer.test.d.ts +0 -7
- package/dist/src/tools/registry-bash-footer.test.js +0 -82
- package/dist/src/tools/registry-ee-query.test.d.ts +0 -11
- package/dist/src/tools/registry-ee-query.test.js +0 -71
- package/dist/src/tools/registry-git-safety.test.d.ts +0 -7
- package/dist/src/tools/registry-git-safety.test.js +0 -103
- package/dist/src/tools/registry-session-repeat.test.d.ts +0 -12
- package/dist/src/tools/registry-session-repeat.test.js +0 -87
- package/dist/src/tools/registry.test.d.ts +0 -1
- package/dist/src/tools/registry.test.js +0 -34
- package/dist/src/tools/schedule.test.d.ts +0 -1
- package/dist/src/tools/schedule.test.js +0 -118
- package/dist/src/tools/todo-write-snapshot.test.d.ts +0 -1
- package/dist/src/tools/todo-write-snapshot.test.js +0 -43
- package/dist/src/ui/__tests__/markdown-render.test.d.ts +0 -1
- package/dist/src/ui/__tests__/markdown-render.test.js +0 -65
- package/dist/src/ui/__tests__/picker-providers.test.d.ts +0 -1
- package/dist/src/ui/__tests__/picker-providers.test.js +0 -31
- package/dist/src/ui/cards/__tests__/product-status-card.test.d.ts +0 -1
- package/dist/src/ui/cards/__tests__/product-status-card.test.js +0 -27
- package/dist/src/ui/components/__tests__/council-leader-bubble.test.d.ts +0 -1
- package/dist/src/ui/components/__tests__/council-leader-bubble.test.js +0 -14
- package/dist/src/ui/components/__tests__/council-message-bubble.test.d.ts +0 -1
- package/dist/src/ui/components/__tests__/council-message-bubble.test.js +0 -74
- package/dist/src/ui/components/__tests__/council-phase-timeline.test.d.ts +0 -1
- package/dist/src/ui/components/__tests__/council-phase-timeline.test.js +0 -51
- package/dist/src/ui/components/__tests__/council-placeholder-bubble.test.d.ts +0 -1
- package/dist/src/ui/components/__tests__/council-placeholder-bubble.test.js +0 -14
- package/dist/src/ui/components/__tests__/council-question-card.test.d.ts +0 -1
- package/dist/src/ui/components/__tests__/council-question-card.test.js +0 -121
- package/dist/src/ui/components/__tests__/council-synthesis-banner.test.d.ts +0 -1
- package/dist/src/ui/components/__tests__/council-synthesis-banner.test.js +0 -11
- package/dist/src/ui/components/__tests__/task-list-panel.test.d.ts +0 -1
- package/dist/src/ui/components/__tests__/task-list-panel.test.js +0 -31
- package/dist/src/ui/components/__tests__/use-pair-quote-buffer.test.d.ts +0 -1
- package/dist/src/ui/components/__tests__/use-pair-quote-buffer.test.js +0 -37
- package/dist/src/ui/slash/__tests__/clear.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/clear.test.js +0 -58
- package/dist/src/ui/slash/__tests__/compact.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/compact.test.js +0 -43
- package/dist/src/ui/slash/__tests__/cost.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/cost.test.js +0 -54
- package/dist/src/ui/slash/__tests__/discuss.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/discuss.test.js +0 -83
- package/dist/src/ui/slash/__tests__/execute.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/execute.test.js +0 -71
- package/dist/src/ui/slash/__tests__/expand.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/expand.test.js +0 -67
- package/dist/src/ui/slash/__tests__/ideal.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/ideal.test.js +0 -158
- package/dist/src/ui/slash/__tests__/menu-parity.test.d.ts +0 -17
- package/dist/src/ui/slash/__tests__/menu-parity.test.js +0 -43
- package/dist/src/ui/slash/__tests__/optimize.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/optimize.test.js +0 -130
- package/dist/src/ui/slash/__tests__/pin.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/pin.test.js +0 -38
- package/dist/src/ui/slash/__tests__/plan.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/plan.test.js +0 -82
- package/dist/src/ui/slash/__tests__/ponytail.test.d.ts +0 -1
- package/dist/src/ui/slash/__tests__/ponytail.test.js +0 -37
- package/dist/src/ui/slash/__tests__/status-render.test.d.ts +0 -7
- package/dist/src/ui/slash/__tests__/status-render.test.js +0 -77
- package/dist/src/ui/slash/route.test.d.ts +0 -1
- package/dist/src/ui/slash/route.test.js +0 -70
- package/dist/src/ui/status-bar/index.test.d.ts +0 -1
- package/dist/src/ui/status-bar/index.test.js +0 -139
- package/dist/src/ui/status-bar/store.test.d.ts +0 -1
- package/dist/src/ui/status-bar/store.test.js +0 -116
- package/dist/src/ui/status-bar/tier-badge.test.d.ts +0 -1
- package/dist/src/ui/status-bar/tier-badge.test.js +0 -34
- package/dist/src/ui/status-bar/usd-meter.test.d.ts +0 -1
- package/dist/src/ui/status-bar/usd-meter.test.js +0 -32
- package/dist/src/ui/utils/__tests__/format.test.d.ts +0 -1
- package/dist/src/ui/utils/__tests__/format.test.js +0 -50
- package/dist/src/ui/utils/__tests__/tools.test.d.ts +0 -1
- package/dist/src/ui/utils/__tests__/tools.test.js +0 -48
- package/dist/src/ui/utils/relaunch.test.d.ts +0 -1
- package/dist/src/ui/utils/relaunch.test.js +0 -133
- package/dist/src/ui/utils/text.test.d.ts +0 -1
- package/dist/src/ui/utils/text.test.js +0 -47
- package/dist/src/usage/__tests__/product-ledger.test.d.ts +0 -1
- package/dist/src/usage/__tests__/product-ledger.test.js +0 -60
- package/dist/src/usage/downgrade.test.d.ts +0 -1
- package/dist/src/usage/downgrade.test.js +0 -70
- package/dist/src/usage/estimator.test.d.ts +0 -1
- package/dist/src/usage/estimator.test.js +0 -38
- package/dist/src/usage/ledger.test.d.ts +0 -1
- package/dist/src/usage/ledger.test.js +0 -171
- package/dist/src/usage/midstream.test.d.ts +0 -1
- package/dist/src/usage/midstream.test.js +0 -47
- package/dist/src/usage/thresholds.test.d.ts +0 -1
- package/dist/src/usage/thresholds.test.js +0 -77
- package/dist/src/utils/__tests__/auto-council-settings.test.d.ts +0 -1
- package/dist/src/utils/__tests__/auto-council-settings.test.js +0 -41
- package/dist/src/utils/__tests__/compaction-caps.test.d.ts +0 -21
- package/dist/src/utils/__tests__/compaction-caps.test.js +0 -187
- package/dist/src/utils/__tests__/ee-logger.test.d.ts +0 -11
- package/dist/src/utils/__tests__/ee-logger.test.js +0 -165
- package/dist/src/utils/__tests__/file-lock.test.d.ts +0 -1
- package/dist/src/utils/__tests__/file-lock.test.js +0 -66
- package/dist/src/utils/__tests__/footprint-gitignore.test.d.ts +0 -1
- package/dist/src/utils/__tests__/footprint-gitignore.test.js +0 -50
- package/dist/src/utils/__tests__/llm-deadline-abort.test.d.ts +0 -1
- package/dist/src/utils/__tests__/llm-deadline-abort.test.js +0 -33
- package/dist/src/utils/__tests__/llm-deadline.test.d.ts +0 -1
- package/dist/src/utils/__tests__/llm-deadline.test.js +0 -68
- package/dist/src/utils/__tests__/logger.test.d.ts +0 -1
- package/dist/src/utils/__tests__/logger.test.js +0 -115
- package/dist/src/utils/__tests__/rate-limit.test.d.ts +0 -1
- package/dist/src/utils/__tests__/rate-limit.test.js +0 -38
- package/dist/src/utils/__tests__/settings-agent-first.test.d.ts +0 -1
- package/dist/src/utils/__tests__/settings-agent-first.test.js +0 -48
- package/dist/src/utils/__tests__/settings-disabled-models.test.d.ts +0 -7
- package/dist/src/utils/__tests__/settings-disabled-models.test.js +0 -99
- package/dist/src/utils/__tests__/settings-web-research.test.d.ts +0 -1
- package/dist/src/utils/__tests__/settings-web-research.test.js +0 -46
- package/dist/src/utils/__tests__/slugify.test.d.ts +0 -1
- package/dist/src/utils/__tests__/slugify.test.js +0 -37
- package/dist/src/utils/__tests__/visible-retry.test.d.ts +0 -1
- package/dist/src/utils/__tests__/visible-retry.test.js +0 -143
- package/dist/src/utils/install-manager.test.d.ts +0 -1
- package/dist/src/utils/install-manager.test.js +0 -169
- package/dist/src/utils/instructions.test.d.ts +0 -1
- package/dist/src/utils/instructions.test.js +0 -93
- package/dist/src/utils/open-url.test.d.ts +0 -1
- package/dist/src/utils/open-url.test.js +0 -86
- package/dist/src/utils/permission-mode.test.d.ts +0 -1
- package/dist/src/utils/permission-mode.test.js +0 -188
- package/dist/src/utils/redactor.test.d.ts +0 -1
- package/dist/src/utils/redactor.test.js +0 -84
- package/dist/src/utils/settings.test.d.ts +0 -1
- package/dist/src/utils/settings.test.js +0 -212
- package/dist/src/utils/shell.test.d.ts +0 -1
- package/dist/src/utils/shell.test.js +0 -97
- package/dist/src/utils/skills.test.d.ts +0 -1
- package/dist/src/utils/skills.test.js +0 -45
- package/dist/src/utils/subagent-display.test.d.ts +0 -1
- package/dist/src/utils/subagent-display.test.js +0 -21
- package/dist/src/utils/subagents-settings.test.d.ts +0 -1
- package/dist/src/utils/subagents-settings.test.js +0 -64
- package/dist/src/utils/telegram-audio-settings.test.d.ts +0 -1
- package/dist/src/utils/telegram-audio-settings.test.js +0 -39
- package/dist/src/utils/update-checker.test.d.ts +0 -1
- package/dist/src/utils/update-checker.test.js +0 -142
- package/dist/src/verify/__tests__/coverage-parsers.test.d.ts +0 -1
- package/dist/src/verify/__tests__/coverage-parsers.test.js +0 -69
- package/dist/src/verify/__tests__/dotnet-recipe.test.d.ts +0 -10
- package/dist/src/verify/__tests__/dotnet-recipe.test.js +0 -70
- package/dist/src/verify/checkpoint.test.d.ts +0 -1
- package/dist/src/verify/checkpoint.test.js +0 -160
- package/dist/src/verify/entrypoint.test.d.ts +0 -1
- package/dist/src/verify/entrypoint.test.js +0 -233
- package/dist/src/verify/environment.test.d.ts +0 -1
- package/dist/src/verify/environment.test.js +0 -94
- package/dist/src/verify/orchestrator.test.d.ts +0 -1
- package/dist/src/verify/orchestrator.test.js +0 -126
- package/dist/src/verify/runtime-prep.test.d.ts +0 -1
- package/dist/src/verify/runtime-prep.test.js +0 -38
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { describe, expect, it } from "vitest";
|
|
2
|
-
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
3
|
-
/**
|
|
4
|
-
* Build a minimal CouncilLLM that wraps a provided debate/research impl
|
|
5
|
-
* with generate() always returning "".
|
|
6
|
-
*/
|
|
7
|
-
function makeLLM(overrides) {
|
|
8
|
-
return {
|
|
9
|
-
async generate() {
|
|
10
|
-
return "";
|
|
11
|
-
},
|
|
12
|
-
async research() {
|
|
13
|
-
return "";
|
|
14
|
-
},
|
|
15
|
-
async debate() {
|
|
16
|
-
return { text: "", toolCalls: [] };
|
|
17
|
-
},
|
|
18
|
-
...overrides,
|
|
19
|
-
};
|
|
20
|
-
}
|
|
21
|
-
// ── Test 1: debate() calls persistTrace once per tool call ───────────────────
|
|
22
|
-
describe("[Council Tool Trace] — llm.debate() (CQ-22)", () => {
|
|
23
|
-
it("Test 1: calls persistTrace once per tool call with string starting '[Council Tool Trace]'", async () => {
|
|
24
|
-
// We test createCouncilLLM indirectly. Because the real createCouncilLLM
|
|
25
|
-
// calls real LLM providers, we instead test that the debate() implementation
|
|
26
|
-
// emits traces. We do this by importing the types and testing debate.ts
|
|
27
|
-
// integration with a mock that accepts persistTrace.
|
|
28
|
-
//
|
|
29
|
-
// For unit testing the emitToolTrace helper and the debate() wiring,
|
|
30
|
-
// we test through the CouncilLLM interface. The real impl is tested via
|
|
31
|
-
// debate.ts integration (below). Here we verify types compile correctly.
|
|
32
|
-
const traces = [];
|
|
33
|
-
const persistTrace = (t) => traces.push(t);
|
|
34
|
-
// After implementation, CouncilLLM.debate() accepts persistTrace as 5th arg.
|
|
35
|
-
// We call a mock that validates the signature compiles.
|
|
36
|
-
const llm = makeLLM({
|
|
37
|
-
async debate(_modelId, _system, _prompt, _signal, _persistTrace) {
|
|
38
|
-
// Simulate tool call emission via persistTrace
|
|
39
|
-
_persistTrace?.("[Council Tool Trace] tool=bash args={} result=ok");
|
|
40
|
-
return { text: "response", toolCalls: [{ toolName: "bash", result: "ok" }] };
|
|
41
|
-
},
|
|
42
|
-
});
|
|
43
|
-
await llm.debate("m1", "sys", "prompt", undefined, persistTrace);
|
|
44
|
-
expect(traces).toHaveLength(1);
|
|
45
|
-
expect(traces[0]).toMatch(/^\[Council Tool Trace\]/);
|
|
46
|
-
});
|
|
47
|
-
it("Test 2: args truncated to <= 2048 chars in trace string", async () => {
|
|
48
|
-
const traces = [];
|
|
49
|
-
const persistTrace = (t) => traces.push(t);
|
|
50
|
-
// Import the actual createCouncilLLM won't work without real providers.
|
|
51
|
-
// Instead, test the truncation logic through a mock that mirrors the
|
|
52
|
-
// emitToolTrace helper behavior.
|
|
53
|
-
//
|
|
54
|
-
// We import the helper indirectly by testing the createCouncilLLM output
|
|
55
|
-
// when debate is called. Since we can't call real LLM in unit tests,
|
|
56
|
-
// we verify via the mock CouncilLLM interface accepting the persistTrace param.
|
|
57
|
-
//
|
|
58
|
-
// The real truncation test: import emitToolTrace or test via debate.ts.
|
|
59
|
-
// We test by creating a mock debate() that calls persistTrace with a long args string
|
|
60
|
-
// and verifying trace length is bounded.
|
|
61
|
-
const longArgs = "a".repeat(3000);
|
|
62
|
-
const llm = makeLLM({
|
|
63
|
-
async debate(_m, _s, _p, _sig, pt) {
|
|
64
|
-
// Simulate what emitToolTrace does with 2048 truncation
|
|
65
|
-
const truncated = longArgs.length > 2048 ? `${longArgs.slice(0, 2048)}…[truncated]` : longArgs;
|
|
66
|
-
pt?.(`[Council Tool Trace] tool=bash args=${truncated} result=ok`);
|
|
67
|
-
return { text: "", toolCalls: [{ toolName: "bash" }] };
|
|
68
|
-
},
|
|
69
|
-
});
|
|
70
|
-
await llm.debate("m1", "s", "p", undefined, persistTrace);
|
|
71
|
-
expect(traces).toHaveLength(1);
|
|
72
|
-
// args portion should be truncated: "a".repeat(2048) + "…[truncated]" = 2048 + 13 chars for args value
|
|
73
|
-
const traceArgs = traces[0].match(/args=(.+?) result=/)?.[1] ?? "";
|
|
74
|
-
expect(traceArgs.length).toBeLessThanOrEqual(2048 + "…[truncated]".length);
|
|
75
|
-
});
|
|
76
|
-
it("Test 3: result truncated to <= 2048 chars", async () => {
|
|
77
|
-
const traces = [];
|
|
78
|
-
const persistTrace = (t) => traces.push(t);
|
|
79
|
-
const longResult = "x".repeat(3000);
|
|
80
|
-
const llm = makeLLM({
|
|
81
|
-
async debate(_m, _s, _p, _sig, pt) {
|
|
82
|
-
const truncated = longResult.length > 2048 ? `${longResult.slice(0, 2048)}…[truncated]` : longResult;
|
|
83
|
-
pt?.(`[Council Tool Trace] tool=bash args={} result=${truncated}`);
|
|
84
|
-
return { text: "", toolCalls: [{ toolName: "bash", result: longResult }] };
|
|
85
|
-
},
|
|
86
|
-
});
|
|
87
|
-
await llm.debate("m1", "s", "p", undefined, persistTrace);
|
|
88
|
-
expect(traces).toHaveLength(1);
|
|
89
|
-
const resultPart = traces[0].split("result=")[1] ?? "";
|
|
90
|
-
expect(resultPart.length).toBeLessThanOrEqual(2048 + "…[truncated]".length);
|
|
91
|
-
});
|
|
92
|
-
it("Test 4: research() calls persistTrace once per tool call", async () => {
|
|
93
|
-
const traces = [];
|
|
94
|
-
const persistTrace = (t) => traces.push(t);
|
|
95
|
-
const llm = makeLLM({
|
|
96
|
-
async research(_m, _topic, _ctx, _sig, pt) {
|
|
97
|
-
pt?.("[Council Tool Trace] tool=read_file args={} result=contents");
|
|
98
|
-
return "findings";
|
|
99
|
-
},
|
|
100
|
-
});
|
|
101
|
-
await llm.research("m1", "topic", "ctx", undefined, persistTrace);
|
|
102
|
-
expect(traces).toHaveLength(1);
|
|
103
|
-
expect(traces[0]).toMatch(/^\[Council Tool Trace\]/);
|
|
104
|
-
});
|
|
105
|
-
it("Test 5: debate() and research() work without error when persistTrace is undefined", async () => {
|
|
106
|
-
const llm = makeLLM({
|
|
107
|
-
async debate(_m, _s, _p, _sig, pt) {
|
|
108
|
-
pt?.("[Council Tool Trace] tool=bash args={} result=ok");
|
|
109
|
-
return { text: "ok", toolCalls: [] };
|
|
110
|
-
},
|
|
111
|
-
async research(_m, _t, _c, _sig, pt) {
|
|
112
|
-
pt?.("[Council Tool Trace] tool=bash args={} result=ok");
|
|
113
|
-
return "ok";
|
|
114
|
-
},
|
|
115
|
-
});
|
|
116
|
-
// Should not throw
|
|
117
|
-
await expect(llm.debate("m1", "s", "p")).resolves.toBeDefined();
|
|
118
|
-
await expect(llm.research("m1", "t", "c")).resolves.toBeDefined();
|
|
119
|
-
});
|
|
120
|
-
});
|
|
121
|
-
// ── Integration: verify types are correct ────────────────────────────────────
|
|
122
|
-
describe("ToolTraceEmitter type export", () => {
|
|
123
|
-
it("ToolTraceEmitter is exported from types.ts and is a function type", () => {
|
|
124
|
-
// This test verifies the type exists at runtime by checking we can assign it.
|
|
125
|
-
const emitter = (text) => {
|
|
126
|
-
void text;
|
|
127
|
-
};
|
|
128
|
-
expect(typeof emitter).toBe("function");
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
//# sourceMappingURL=tool-trace.test.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type-level contract tests for Phase 15 Plan 01:
|
|
3
|
-
* - LeaderEvaluation gains evidenceDensity and disagreementResolved optional fields
|
|
4
|
-
* - CouncilLLM gains debate() method signature
|
|
5
|
-
*
|
|
6
|
-
* These are compile-time-only assertions. If the file compiles cleanly, the tests pass.
|
|
7
|
-
* Runtime assertions are used only where TypeScript's structural typing makes them necessary.
|
|
8
|
-
*/
|
|
9
|
-
export {};
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Type-level contract tests for Phase 15 Plan 01:
|
|
3
|
-
* - LeaderEvaluation gains evidenceDensity and disagreementResolved optional fields
|
|
4
|
-
* - CouncilLLM gains debate() method signature
|
|
5
|
-
*
|
|
6
|
-
* These are compile-time-only assertions. If the file compiles cleanly, the tests pass.
|
|
7
|
-
* Runtime assertions are used only where TypeScript's structural typing makes them necessary.
|
|
8
|
-
*/
|
|
9
|
-
import { describe, expect, it } from "vitest";
|
|
10
|
-
describe("LeaderEvaluation type contract", () => {
|
|
11
|
-
it("accepts evidenceDensity as optional number", () => {
|
|
12
|
-
const evaluation = {
|
|
13
|
-
allCriteriaMet: false,
|
|
14
|
-
criteriaStatus: [],
|
|
15
|
-
unresolvedPoints: [],
|
|
16
|
-
needsResearch: false,
|
|
17
|
-
shouldContinue: true,
|
|
18
|
-
reason: "test",
|
|
19
|
-
evidenceDensity: 0.25,
|
|
20
|
-
};
|
|
21
|
-
expect(evaluation.evidenceDensity).toBe(0.25);
|
|
22
|
-
});
|
|
23
|
-
it("accepts disagreementResolved as optional number", () => {
|
|
24
|
-
const evaluation = {
|
|
25
|
-
allCriteriaMet: true,
|
|
26
|
-
criteriaStatus: [],
|
|
27
|
-
unresolvedPoints: [],
|
|
28
|
-
needsResearch: false,
|
|
29
|
-
shouldContinue: false,
|
|
30
|
-
reason: "all resolved",
|
|
31
|
-
disagreementResolved: 3,
|
|
32
|
-
};
|
|
33
|
-
expect(evaluation.disagreementResolved).toBe(3);
|
|
34
|
-
});
|
|
35
|
-
it("remains backward compatible — both optional fields absent", () => {
|
|
36
|
-
const evaluation = {
|
|
37
|
-
allCriteriaMet: true,
|
|
38
|
-
criteriaStatus: [{ criterion: "c1", met: true, evidence: "ok" }],
|
|
39
|
-
unresolvedPoints: [],
|
|
40
|
-
needsResearch: false,
|
|
41
|
-
shouldContinue: false,
|
|
42
|
-
reason: "done",
|
|
43
|
-
};
|
|
44
|
-
// No evidenceDensity or disagreementResolved — must compile fine
|
|
45
|
-
expect(evaluation.evidenceDensity).toBeUndefined();
|
|
46
|
-
expect(evaluation.disagreementResolved).toBeUndefined();
|
|
47
|
-
});
|
|
48
|
-
});
|
|
49
|
-
describe("CouncilLLM.debate() method contract", () => {
|
|
50
|
-
it("debate() method is part of the CouncilLLM interface", () => {
|
|
51
|
-
// Structural check: create a minimal implementation that satisfies the interface.
|
|
52
|
-
// If CouncilLLM does not have debate(), this will cause a compile error.
|
|
53
|
-
const mockLLM = {
|
|
54
|
-
generate: async () => "text",
|
|
55
|
-
research: async () => "research",
|
|
56
|
-
debate: async (_modelId, _system, _prompt, _signal) => ({
|
|
57
|
-
text: "debate response",
|
|
58
|
-
toolCalls: [{ toolName: "webSearch", result: { url: "https://example.com" } }],
|
|
59
|
-
}),
|
|
60
|
-
};
|
|
61
|
-
expect(typeof mockLLM.debate).toBe("function");
|
|
62
|
-
});
|
|
63
|
-
it("debate() returns correct shape — text and toolCalls array", async () => {
|
|
64
|
-
const mockLLM = {
|
|
65
|
-
generate: async () => "",
|
|
66
|
-
research: async () => "",
|
|
67
|
-
debate: async () => ({
|
|
68
|
-
text: "grounded response",
|
|
69
|
-
toolCalls: [
|
|
70
|
-
{ toolName: "bash", result: "output" },
|
|
71
|
-
{ toolName: "grep" }, // result is optional
|
|
72
|
-
],
|
|
73
|
-
}),
|
|
74
|
-
};
|
|
75
|
-
const result = await mockLLM.debate("model", "system", "prompt");
|
|
76
|
-
expect(result.text).toBe("grounded response");
|
|
77
|
-
expect(result.toolCalls).toHaveLength(2);
|
|
78
|
-
expect(result.toolCalls[0].toolName).toBe("bash");
|
|
79
|
-
expect(result.toolCalls[1].result).toBeUndefined();
|
|
80
|
-
});
|
|
81
|
-
});
|
|
82
|
-
//# sourceMappingURL=types-contract.test.js.map
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/council/clarifier-question-cap.test.ts
|
|
3
|
-
*
|
|
4
|
-
* G2-a regression backstop. The clarifier prompt asks for "typically 0-2"
|
|
5
|
-
* questions and tells the model NOT to ask generic greenfield questions in an
|
|
6
|
-
* existing repo, but the model has repeatedly ignored both (session
|
|
7
|
-
* cfc711c57df0: 6 generic greenfield questions on "improve council quality").
|
|
8
|
-
* capClarifierQuestions enforces this deterministically in code. These tests
|
|
9
|
-
* pin that behaviour; the live council surfacing is verified via the MCP
|
|
10
|
-
* harness separately.
|
|
11
|
-
*/
|
|
12
|
-
export {};
|
|
@@ -1,73 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/council/clarifier-question-cap.test.ts
|
|
3
|
-
*
|
|
4
|
-
* G2-a regression backstop. The clarifier prompt asks for "typically 0-2"
|
|
5
|
-
* questions and tells the model NOT to ask generic greenfield questions in an
|
|
6
|
-
* existing repo, but the model has repeatedly ignored both (session
|
|
7
|
-
* cfc711c57df0: 6 generic greenfield questions on "improve council quality").
|
|
8
|
-
* capClarifierQuestions enforces this deterministically in code. These tests
|
|
9
|
-
* pin that behaviour; the live council surfacing is verified via the MCP
|
|
10
|
-
* harness separately.
|
|
11
|
-
*/
|
|
12
|
-
import { describe, expect, it } from "vitest";
|
|
13
|
-
import { capClarifierQuestions, isGenericGreenfieldQuestion, MAX_CLARIFY_QUESTIONS_PER_ROUND } from "./clarifier.js";
|
|
14
|
-
const scoped = (n) => Array.from({ length: n }, (_, i) => ({ question: `Scoped decision ${i} for this change?`, why: "scope" }));
|
|
15
|
-
describe("isGenericGreenfieldQuestion", () => {
|
|
16
|
-
it("matches generic greenfield questions (English)", () => {
|
|
17
|
-
expect(isGenericGreenfieldQuestion({ question: "Who is the target audience?" })).toBe(true);
|
|
18
|
-
expect(isGenericGreenfieldQuestion({ question: "Which programming language should we use?" })).toBe(true);
|
|
19
|
-
expect(isGenericGreenfieldQuestion({ question: "Which database do you want?" })).toBe(true);
|
|
20
|
-
expect(isGenericGreenfieldQuestion({ question: "What is the deployment target?" })).toBe(true);
|
|
21
|
-
expect(isGenericGreenfieldQuestion({ question: "What kind of product is this?" })).toBe(true);
|
|
22
|
-
});
|
|
23
|
-
it("matches generic greenfield questions (Vietnamese)", () => {
|
|
24
|
-
expect(isGenericGreenfieldQuestion({ question: "Đối tượng người dùng là ai?" })).toBe(true);
|
|
25
|
-
expect(isGenericGreenfieldQuestion({ question: "Dùng ngôn ngữ lập trình nào?" })).toBe(true);
|
|
26
|
-
expect(isGenericGreenfieldQuestion({ question: "Cơ sở dữ liệu nào phù hợp?" })).toBe(true);
|
|
27
|
-
});
|
|
28
|
-
it("does NOT match scoped, change-specific questions", () => {
|
|
29
|
-
expect(isGenericGreenfieldQuestion({ question: "Should the clarifier cap be configurable?" })).toBe(false);
|
|
30
|
-
expect(isGenericGreenfieldQuestion({ question: "Phạm vi của thay đổi này là gì?", why: "scope" })).toBe(false);
|
|
31
|
-
expect(isGenericGreenfieldQuestion({ question: "Do we keep backward compat for the old flag?" })).toBe(false);
|
|
32
|
-
});
|
|
33
|
-
});
|
|
34
|
-
describe("capClarifierQuestions", () => {
|
|
35
|
-
it("hard-caps to MAX_CLARIFY_QUESTIONS_PER_ROUND when the model over-asks", () => {
|
|
36
|
-
const { kept, dropped } = capClarifierQuestions(scoped(6), false);
|
|
37
|
-
expect(kept.length).toBe(MAX_CLARIFY_QUESTIONS_PER_ROUND);
|
|
38
|
-
expect(dropped).toBe(6 - MAX_CLARIFY_QUESTIONS_PER_ROUND);
|
|
39
|
-
});
|
|
40
|
-
it("leaves a compliant 0-2 round untouched", () => {
|
|
41
|
-
expect(capClarifierQuestions(scoped(2), false)).toEqual({ kept: scoped(2), dropped: 0 });
|
|
42
|
-
expect(capClarifierQuestions([], false)).toEqual({ kept: [], dropped: 0 });
|
|
43
|
-
});
|
|
44
|
-
it("existing repo: drops generic greenfield questions then caps the rest", () => {
|
|
45
|
-
const qs = [
|
|
46
|
-
{ question: "Who is the target audience?" },
|
|
47
|
-
{ question: "Which framework should we use?" },
|
|
48
|
-
{ question: "Should we preserve the legacy --flag for this change?" },
|
|
49
|
-
{ question: "Is the cap value configurable via settings?" },
|
|
50
|
-
];
|
|
51
|
-
const { kept, dropped } = capClarifierQuestions(qs, true);
|
|
52
|
-
expect(kept.every((q) => !isGenericGreenfieldQuestion(q))).toBe(true);
|
|
53
|
-
expect(kept.length).toBe(2); // 2 generic dropped → 2 scoped remain, within cap
|
|
54
|
-
expect(dropped).toBe(2);
|
|
55
|
-
});
|
|
56
|
-
it("existing repo: never zeroes out a round — keeps the top pick if all look generic", () => {
|
|
57
|
-
const allGeneric = [
|
|
58
|
-
{ question: "Who is the target audience?" },
|
|
59
|
-
{ question: "Which database?" },
|
|
60
|
-
{ question: "What kind of product is this?" },
|
|
61
|
-
];
|
|
62
|
-
const { kept, dropped } = capClarifierQuestions(allGeneric, true);
|
|
63
|
-
expect(kept.length).toBe(1);
|
|
64
|
-
expect(dropped).toBe(2);
|
|
65
|
-
});
|
|
66
|
-
it("greenfield topic (no Current Project snapshot): does NOT drop generics, only caps", () => {
|
|
67
|
-
const qs = [{ question: "Who is the target audience?" }, { question: "Which language?" }];
|
|
68
|
-
const { kept, dropped } = capClarifierQuestions(qs, false);
|
|
69
|
-
expect(kept.length).toBe(2); // legitimate for a greenfield build
|
|
70
|
-
expect(dropped).toBe(0);
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
//# sourceMappingURL=clarifier-question-cap.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
import { afterEach, describe, expect, it, vi } from "vitest";
|
|
2
|
-
async function importSchedulerModule(mocks) {
|
|
3
|
-
vi.resetModules();
|
|
4
|
-
const startDetachedHeadlessRun = mocks.startDetachedHeadlessRun ?? vi.fn(async () => 9876);
|
|
5
|
-
const getScheduleDaemonStatus = mocks.getScheduleDaemonStatus ?? vi.fn(async () => ({ running: false, pid: null }));
|
|
6
|
-
const writeScheduleDaemonPid = mocks.writeScheduleDaemonPid ?? vi.fn(async () => { });
|
|
7
|
-
const removeScheduleDaemonPid = mocks.removeScheduleDaemonPid ?? vi.fn(async () => { });
|
|
8
|
-
const cronMatchesDate = mocks.cronMatchesDate ?? vi.fn(() => true);
|
|
9
|
-
vi.doMock("../tools/schedule", () => ({
|
|
10
|
-
ScheduleManager: class {
|
|
11
|
-
list = mocks.list;
|
|
12
|
-
touchLastRunAt = mocks.touchLastRunAt;
|
|
13
|
-
},
|
|
14
|
-
cronMatchesDate,
|
|
15
|
-
getScheduleDaemonStatus,
|
|
16
|
-
getScheduleRunLogPath: (id) => `/tmp/${id}.log`,
|
|
17
|
-
removeScheduleDaemonPid,
|
|
18
|
-
startDetachedHeadlessRun,
|
|
19
|
-
writeScheduleDaemonPid,
|
|
20
|
-
}));
|
|
21
|
-
const mod = await import("./scheduler.js");
|
|
22
|
-
return {
|
|
23
|
-
SchedulerDaemon: mod.SchedulerDaemon,
|
|
24
|
-
startDetachedHeadlessRun,
|
|
25
|
-
getScheduleDaemonStatus,
|
|
26
|
-
writeScheduleDaemonPid,
|
|
27
|
-
removeScheduleDaemonPid,
|
|
28
|
-
cronMatchesDate,
|
|
29
|
-
};
|
|
30
|
-
}
|
|
31
|
-
afterEach(() => {
|
|
32
|
-
vi.useRealTimers();
|
|
33
|
-
vi.restoreAllMocks();
|
|
34
|
-
vi.resetModules();
|
|
35
|
-
});
|
|
36
|
-
describe("SchedulerDaemon", () => {
|
|
37
|
-
it("fires matching recurring schedules and records lastRunAt", async () => {
|
|
38
|
-
vi.useFakeTimers();
|
|
39
|
-
vi.setSystemTime(new Date("2026-03-25T09:00:00"));
|
|
40
|
-
const list = vi.fn(async () => [
|
|
41
|
-
{
|
|
42
|
-
id: "daily-security-scan",
|
|
43
|
-
name: "Daily Security Scan",
|
|
44
|
-
instruction: "Scan the repo.",
|
|
45
|
-
cron: "0 9 * * 1-5",
|
|
46
|
-
model: "muonroi-test-model",
|
|
47
|
-
directory: "/repo",
|
|
48
|
-
enabled: true,
|
|
49
|
-
maxToolRounds: 400,
|
|
50
|
-
createdAt: "2026-03-25T08:00:00.000Z",
|
|
51
|
-
updatedAt: "2026-03-25T08:00:00.000Z",
|
|
52
|
-
},
|
|
53
|
-
]);
|
|
54
|
-
const touchLastRunAt = vi.fn(async () => { });
|
|
55
|
-
const { SchedulerDaemon, startDetachedHeadlessRun, writeScheduleDaemonPid, removeScheduleDaemonPid } = await importSchedulerModule({
|
|
56
|
-
list,
|
|
57
|
-
touchLastRunAt,
|
|
58
|
-
});
|
|
59
|
-
const daemon = new SchedulerDaemon();
|
|
60
|
-
await daemon.start();
|
|
61
|
-
expect(writeScheduleDaemonPid).toHaveBeenCalledWith(process.pid);
|
|
62
|
-
expect(startDetachedHeadlessRun).toHaveBeenCalledWith({
|
|
63
|
-
instruction: "Scan the repo.",
|
|
64
|
-
directory: "/repo",
|
|
65
|
-
model: "muonroi-test-model",
|
|
66
|
-
maxToolRounds: 400,
|
|
67
|
-
logPath: "/tmp/daily-security-scan.log",
|
|
68
|
-
});
|
|
69
|
-
expect(touchLastRunAt).toHaveBeenCalledWith("daily-security-scan", expect.any(Date));
|
|
70
|
-
await daemon.stop();
|
|
71
|
-
expect(removeScheduleDaemonPid).toHaveBeenCalled();
|
|
72
|
-
});
|
|
73
|
-
it("does not refire a schedule that already ran in the same minute", async () => {
|
|
74
|
-
vi.useFakeTimers();
|
|
75
|
-
vi.setSystemTime(new Date("2026-03-25T09:00:30.000Z"));
|
|
76
|
-
const list = vi.fn(async () => [
|
|
77
|
-
{
|
|
78
|
-
id: "daily-security-scan",
|
|
79
|
-
name: "Daily Security Scan",
|
|
80
|
-
instruction: "Scan the repo.",
|
|
81
|
-
cron: "* * * * *",
|
|
82
|
-
model: "muonroi-test-model",
|
|
83
|
-
directory: "/repo",
|
|
84
|
-
enabled: true,
|
|
85
|
-
maxToolRounds: 400,
|
|
86
|
-
lastRunAt: "2026-03-25T09:00:00.000Z",
|
|
87
|
-
createdAt: "2026-03-25T08:00:00.000Z",
|
|
88
|
-
updatedAt: "2026-03-25T09:00:00.000Z",
|
|
89
|
-
},
|
|
90
|
-
]);
|
|
91
|
-
const touchLastRunAt = vi.fn(async () => { });
|
|
92
|
-
const { SchedulerDaemon, startDetachedHeadlessRun } = await importSchedulerModule({
|
|
93
|
-
list,
|
|
94
|
-
touchLastRunAt,
|
|
95
|
-
});
|
|
96
|
-
const daemon = new SchedulerDaemon();
|
|
97
|
-
await daemon.start();
|
|
98
|
-
expect(startDetachedHeadlessRun).not.toHaveBeenCalled();
|
|
99
|
-
expect(touchLastRunAt).not.toHaveBeenCalled();
|
|
100
|
-
await daemon.stop();
|
|
101
|
-
});
|
|
102
|
-
});
|
|
103
|
-
//# sourceMappingURL=scheduler.test.js.map
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for src/ee/bb-design.ts (Plan 23-01a).
|
|
3
|
-
*
|
|
4
|
-
* Covers 5 scenarios:
|
|
5
|
-
* 1. happy path — template + commercial filter
|
|
6
|
-
* 2. allowCommercial=true — commercial pkgs not filtered
|
|
7
|
-
* 3. no template recipe — returns null
|
|
8
|
-
* 4. EE 503 — returns null + ee-error logged
|
|
9
|
-
* 5. EE timeout — returns null + ee-timeout logged
|
|
10
|
-
*
|
|
11
|
-
* Mocks `global.fetch` via vi.spyOn. Routes EE base URL through
|
|
12
|
-
* MUONROI_EE_BASE_URL so we don't depend on ~/.experience/config.json.
|
|
13
|
-
*/
|
|
14
|
-
export {};
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Tests for src/ee/bb-design.ts (Plan 23-01a).
|
|
3
|
-
*
|
|
4
|
-
* Covers 5 scenarios:
|
|
5
|
-
* 1. happy path — template + commercial filter
|
|
6
|
-
* 2. allowCommercial=true — commercial pkgs not filtered
|
|
7
|
-
* 3. no template recipe — returns null
|
|
8
|
-
* 4. EE 503 — returns null + ee-error logged
|
|
9
|
-
* 5. EE timeout — returns null + ee-timeout logged
|
|
10
|
-
*
|
|
11
|
-
* Mocks `global.fetch` via vi.spyOn. Routes EE base URL through
|
|
12
|
-
* MUONROI_EE_BASE_URL so we don't depend on ~/.experience/config.json.
|
|
13
|
-
*/
|
|
14
|
-
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
|
|
15
|
-
import * as eeLogger from "../../utils/ee-logger.js";
|
|
16
|
-
import { designBBPackages } from "../bb-design.js";
|
|
17
|
-
const FAKE_BASE = "http://127.0.0.1:65535";
|
|
18
|
-
function makeFetchMock(byCollection) {
|
|
19
|
-
return vi.fn(async (url, init) => {
|
|
20
|
-
const u = typeof url === "string" ? url : url.toString();
|
|
21
|
-
if (!u.endsWith("/api/search")) {
|
|
22
|
-
throw new Error(`unexpected fetch URL: ${u}`);
|
|
23
|
-
}
|
|
24
|
-
const bodyStr = typeof init?.body === "string" ? init.body : "";
|
|
25
|
-
const body = JSON.parse(bodyStr);
|
|
26
|
-
const collection = body.collections[0];
|
|
27
|
-
const mock = byCollection[collection];
|
|
28
|
-
if (!mock) {
|
|
29
|
-
// Default empty hit set.
|
|
30
|
-
return new Response(JSON.stringify({ points: [] }), {
|
|
31
|
-
status: 200,
|
|
32
|
-
headers: { "Content-Type": "application/json" },
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
if (mock.hang) {
|
|
36
|
-
// Never resolve — let AbortSignal.timeout fire.
|
|
37
|
-
return await new Promise((_resolve, reject) => {
|
|
38
|
-
init?.signal?.addEventListener("abort", () => {
|
|
39
|
-
const e = new Error("aborted");
|
|
40
|
-
e.name = "AbortError";
|
|
41
|
-
reject(e);
|
|
42
|
-
});
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
return new Response(JSON.stringify(mock.body ?? { points: [] }), {
|
|
46
|
-
status: mock.status ?? 200,
|
|
47
|
-
headers: { "Content-Type": "application/json" },
|
|
48
|
-
});
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
const TEMPLATE_TEXT = "Template Muonroi Microservices Solution (mr-micro-sln): Muonroi microservices template with selectable OSS or enterprise tier and optional control-plane integration. | uses: Muonroi.AspNetCore, Muonroi.Tenancy, Muonroi.AuthZ";
|
|
52
|
-
const PRINCIPLE_AUTHZ_TEXT = "Commercial package Muonroi.AuthZ requires a valid Muonroi commercial license for production use";
|
|
53
|
-
const PRINCIPLE_CONSUL_TEXT = "Commercial package Muonroi.ServiceDiscovery.Consul requires a valid Muonroi commercial license for production use";
|
|
54
|
-
describe("designBBPackages", () => {
|
|
55
|
-
const originalFetch = global.fetch;
|
|
56
|
-
const originalEnv = { ...process.env };
|
|
57
|
-
beforeEach(() => {
|
|
58
|
-
process.env.MUONROI_EE_BASE_URL = FAKE_BASE;
|
|
59
|
-
delete process.env.MUONROI_BB_DESIGN_TIMEOUT_MS;
|
|
60
|
-
});
|
|
61
|
-
afterEach(() => {
|
|
62
|
-
global.fetch = originalFetch;
|
|
63
|
-
process.env = { ...originalEnv };
|
|
64
|
-
vi.restoreAllMocks();
|
|
65
|
-
});
|
|
66
|
-
it("returns the matched template with commercial pkgs blocked (happy path)", async () => {
|
|
67
|
-
const fetchMock = makeFetchMock({
|
|
68
|
-
"bb-recipes": {
|
|
69
|
-
body: {
|
|
70
|
-
points: [
|
|
71
|
-
{ text: TEMPLATE_TEXT, score: 0.87 },
|
|
72
|
-
{ text: "Sample TodoApi project not a template", score: 0.6 },
|
|
73
|
-
],
|
|
74
|
-
},
|
|
75
|
-
},
|
|
76
|
-
"experience-principles": {
|
|
77
|
-
body: {
|
|
78
|
-
points: [
|
|
79
|
-
{ text: PRINCIPLE_AUTHZ_TEXT, score: 0.9 },
|
|
80
|
-
{ text: PRINCIPLE_CONSUL_TEXT, score: 0.85 },
|
|
81
|
-
],
|
|
82
|
-
},
|
|
83
|
-
},
|
|
84
|
-
"bb-behavioral": {
|
|
85
|
-
body: {
|
|
86
|
-
points: [
|
|
87
|
-
{ text: "Register infrastructure via AddInfrastructure()", score: 0.8 },
|
|
88
|
-
{ text: "Use modular boundaries: never import Application from Domain", score: 0.75 },
|
|
89
|
-
{ text: "Register infrastructure via AddInfrastructure()", score: 0.72 },
|
|
90
|
-
],
|
|
91
|
-
},
|
|
92
|
-
},
|
|
93
|
-
});
|
|
94
|
-
vi.spyOn(global, "fetch").mockImplementation(fetchMock);
|
|
95
|
-
const result = await designBBPackages("multi-tenant SaaS billing");
|
|
96
|
-
expect(result).not.toBeNull();
|
|
97
|
-
expect(result.template.shortName).toBe("mr-micro-sln");
|
|
98
|
-
expect(result.template.nugetId).toBe("Muonroi.Microservices.Template");
|
|
99
|
-
expect(result.template.version).toBe("1.10.0");
|
|
100
|
-
expect(result.packageIds).toEqual(["Muonroi.AspNetCore", "Muonroi.Tenancy"]);
|
|
101
|
-
expect(result.commercialBlocked).toEqual(["Muonroi.AuthZ"]);
|
|
102
|
-
expect(result.confidence).toBeCloseTo(0.87);
|
|
103
|
-
expect(result.rationale).toContain("Muonroi microservices template");
|
|
104
|
-
// Dedup of duplicate AddInfrastructure entries -> 2 hints, not 3.
|
|
105
|
-
expect(result.behavioralHints).toHaveLength(2);
|
|
106
|
-
expect(result.behavioralHints[0]).toContain("AddInfrastructure");
|
|
107
|
-
});
|
|
108
|
-
it("includes commercial packages when allowCommercial=true", async () => {
|
|
109
|
-
const fetchMock = makeFetchMock({
|
|
110
|
-
"bb-recipes": { body: { points: [{ text: TEMPLATE_TEXT, score: 0.87 }] } },
|
|
111
|
-
"experience-principles": { body: { points: [{ text: PRINCIPLE_AUTHZ_TEXT, score: 0.9 }] } },
|
|
112
|
-
"bb-behavioral": { body: { points: [] } },
|
|
113
|
-
});
|
|
114
|
-
vi.spyOn(global, "fetch").mockImplementation(fetchMock);
|
|
115
|
-
const result = await designBBPackages("multi-tenant SaaS billing", { allowCommercial: true });
|
|
116
|
-
expect(result).not.toBeNull();
|
|
117
|
-
expect(result.packageIds).toEqual(["Muonroi.AspNetCore", "Muonroi.Tenancy", "Muonroi.AuthZ"]);
|
|
118
|
-
expect(result.commercialBlocked).toEqual([]);
|
|
119
|
-
});
|
|
120
|
-
it("returns null when no template recipe is found in top-5", async () => {
|
|
121
|
-
const fetchMock = makeFetchMock({
|
|
122
|
-
"bb-recipes": {
|
|
123
|
-
body: {
|
|
124
|
-
points: [
|
|
125
|
-
{ text: "Sample TodoApi project: not a template", score: 0.5 },
|
|
126
|
-
{ text: "Some other text", score: 0.4 },
|
|
127
|
-
],
|
|
128
|
-
},
|
|
129
|
-
},
|
|
130
|
-
"experience-principles": { body: { points: [] } },
|
|
131
|
-
"bb-behavioral": { body: { points: [] } },
|
|
132
|
-
});
|
|
133
|
-
vi.spyOn(global, "fetch").mockImplementation(fetchMock);
|
|
134
|
-
const logSpy = vi.spyOn(eeLogger, "logEeFailure");
|
|
135
|
-
const result = await designBBPackages("anything");
|
|
136
|
-
expect(result).toBeNull();
|
|
137
|
-
expect(logSpy).toHaveBeenCalled();
|
|
138
|
-
const lastCall = logSpy.mock.calls.at(-1);
|
|
139
|
-
expect(lastCall[0]).toBe("bb-design");
|
|
140
|
-
expect(lastCall[1]).toBe("error");
|
|
141
|
-
});
|
|
142
|
-
it("returns null + logs ee-error when EE returns 503", async () => {
|
|
143
|
-
const fetchMock = makeFetchMock({
|
|
144
|
-
"bb-recipes": { status: 503, body: { points: [] } },
|
|
145
|
-
"experience-principles": { status: 503, body: { points: [] } },
|
|
146
|
-
"bb-behavioral": { status: 503, body: { points: [] } },
|
|
147
|
-
});
|
|
148
|
-
vi.spyOn(global, "fetch").mockImplementation(fetchMock);
|
|
149
|
-
const logSpy = vi.spyOn(eeLogger, "logEeFailure");
|
|
150
|
-
const result = await designBBPackages("anything");
|
|
151
|
-
expect(result).toBeNull();
|
|
152
|
-
expect(logSpy).toHaveBeenCalled();
|
|
153
|
-
const errorCall = logSpy.mock.calls.find((c) => c[0] === "bb-design" && c[1] === "error");
|
|
154
|
-
expect(errorCall).toBeDefined();
|
|
155
|
-
});
|
|
156
|
-
it("returns null + logs ee-timeout when fetch hangs past budget", async () => {
|
|
157
|
-
process.env.MUONROI_BB_DESIGN_TIMEOUT_MS = "500";
|
|
158
|
-
// Re-import bb-design so it picks up the lowered timeout at module init.
|
|
159
|
-
vi.resetModules();
|
|
160
|
-
const { designBBPackages: designFresh } = await import("../bb-design.js");
|
|
161
|
-
const fetchMock = makeFetchMock({
|
|
162
|
-
"bb-recipes": { hang: true },
|
|
163
|
-
"experience-principles": { hang: true },
|
|
164
|
-
"bb-behavioral": { hang: true },
|
|
165
|
-
});
|
|
166
|
-
vi.spyOn(global, "fetch").mockImplementation(fetchMock);
|
|
167
|
-
const freshLogger = await import("../../utils/ee-logger.js");
|
|
168
|
-
const logSpy = vi.spyOn(freshLogger, "logEeFailure");
|
|
169
|
-
const t0 = Date.now();
|
|
170
|
-
const result = await designFresh("anything");
|
|
171
|
-
const elapsed = Date.now() - t0;
|
|
172
|
-
expect(result).toBeNull();
|
|
173
|
-
// Should resolve within roughly the budget (some slack for CI scheduling).
|
|
174
|
-
expect(elapsed).toBeLessThan(3000);
|
|
175
|
-
expect(logSpy).toHaveBeenCalled();
|
|
176
|
-
const timeoutCall = logSpy.mock.calls.find((c) => c[0] === "bb-design" && c[1] === "timeout");
|
|
177
|
-
expect(timeoutCall).toBeDefined();
|
|
178
|
-
});
|
|
179
|
-
});
|
|
180
|
-
//# sourceMappingURL=bb-design.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { mkdtempSync, readFileSync, rmSync } from "node:fs";
|
|
2
|
-
import { tmpdir } from "node:os";
|
|
3
|
-
import { join } from "node:path";
|
|
4
|
-
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
-
import { writeExperienceConfig } from "../auth.js";
|
|
6
|
-
describe("writeExperienceConfig", () => {
|
|
7
|
-
let home;
|
|
8
|
-
beforeEach(() => {
|
|
9
|
-
home = mkdtempSync(join(tmpdir(), "ee-cfg-"));
|
|
10
|
-
});
|
|
11
|
-
afterEach(() => {
|
|
12
|
-
rmSync(home, { recursive: true, force: true });
|
|
13
|
-
});
|
|
14
|
-
const read = () => JSON.parse(readFileSync(join(home, ".experience", "config.json"), "utf8"));
|
|
15
|
-
it("creates ~/.experience/config.json (and dir) when none exists", async () => {
|
|
16
|
-
await writeExperienceConfig({ serverBaseUrl: "https://ee.example.com", serverAuthToken: "tok" }, { home });
|
|
17
|
-
const cfg = read();
|
|
18
|
-
expect(cfg.serverBaseUrl).toBe("https://ee.example.com");
|
|
19
|
-
expect(cfg.serverAuthToken).toBe("tok");
|
|
20
|
-
});
|
|
21
|
-
it("merges into an existing config, preserving unrelated fields", async () => {
|
|
22
|
-
// Seed an existing config with an unrelated field (as the EE installer would).
|
|
23
|
-
await writeExperienceConfig({ embeddingModelVersion: "v9", serverAuthToken: "old" }, { home });
|
|
24
|
-
// Now write a new serverBaseUrl + token — embeddingModelVersion must survive.
|
|
25
|
-
await writeExperienceConfig({ serverBaseUrl: "https://ee2.example.com", serverAuthToken: "new" }, { home });
|
|
26
|
-
const cfg = read();
|
|
27
|
-
expect(cfg.embeddingModelVersion).toBe("v9"); // preserved
|
|
28
|
-
expect(cfg.serverBaseUrl).toBe("https://ee2.example.com"); // added
|
|
29
|
-
expect(cfg.serverAuthToken).toBe("new"); // overwritten
|
|
30
|
-
});
|
|
31
|
-
});
|
|
32
|
-
//# sourceMappingURL=ee-onboarding.test.js.map
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* export-transcripts.test.ts
|
|
3
|
-
*
|
|
4
|
-
* Unit tests for exportTranscripts() — SQLite → JSONL transcript export.
|
|
5
|
-
*
|
|
6
|
-
* Strategy: redirect USERPROFILE (Windows) / HOME (POSIX) to a temp dir,
|
|
7
|
-
* create a real SQLite DB at `~/.muonroi-cli/muonroi.db`, and call the
|
|
8
|
-
* function. Also creates `~/.experience/config.json` so the emit sidecar
|
|
9
|
-
* (transcript-emit) does not gate-return null.
|
|
10
|
-
*/
|
|
11
|
-
export {};
|