muonroi-cli 1.4.0 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -21
- package/README.md +122 -122
- package/dist/packages/agent-harness-core/src/predicate.d.ts +1 -1
- package/dist/src/agent-harness/__tests__/mock-model.spec.js +48 -1
- package/dist/src/agent-harness/mock-model.d.ts +11 -0
- package/dist/src/agent-harness/mock-model.js +21 -0
- package/dist/src/cli/cost-forensics.js +12 -12
- package/dist/src/council/__tests__/clarification-prompt.test.js +51 -0
- package/dist/src/council/__tests__/clarifier-ready-gate.test.js +32 -0
- package/dist/src/council/__tests__/decisions-lock.test.js +17 -1
- package/dist/src/council/__tests__/oauth-reachable.test.d.ts +1 -0
- package/dist/src/council/__tests__/oauth-reachable.test.js +31 -0
- package/dist/src/council/__tests__/parse-outcome-fallback.test.js +11 -0
- package/dist/src/council/clarifier.js +9 -1
- package/dist/src/council/debate.js +5 -1
- package/dist/src/council/decisions-lock.js +3 -3
- package/dist/src/council/index.js +12 -5
- package/dist/src/council/leader.d.ts +0 -17
- package/dist/src/council/leader.js +22 -15
- package/dist/src/council/planner.js +1 -1
- package/dist/src/council/prompts.js +63 -57
- package/dist/src/council/types.d.ts +7 -0
- package/dist/src/ee/__tests__/ee-onboarding.test.d.ts +1 -0
- package/dist/src/ee/__tests__/ee-onboarding.test.js +32 -0
- package/dist/src/ee/auth.d.ts +9 -0
- package/dist/src/ee/auth.js +19 -0
- package/dist/src/ee/ee-onboarding.d.ts +5 -0
- package/dist/src/ee/ee-onboarding.js +76 -0
- package/dist/src/generated/version.d.ts +1 -1
- package/dist/src/generated/version.js +1 -1
- package/dist/src/headless/output.js +6 -4
- package/dist/src/headless/output.test.js +4 -3
- package/dist/src/index.js +20 -1
- package/dist/src/mcp/__tests__/auto-setup.test.js +74 -0
- package/dist/src/mcp/__tests__/client-pool.spec.d.ts +1 -0
- package/dist/src/mcp/__tests__/client-pool.spec.js +98 -0
- package/dist/src/mcp/__tests__/parallel-build.spec.d.ts +1 -0
- package/dist/src/mcp/__tests__/parallel-build.spec.js +67 -0
- package/dist/src/mcp/__tests__/smart-filter.test.js +56 -0
- package/dist/src/mcp/auto-setup.js +56 -2
- package/dist/src/mcp/client-pool.d.ts +46 -0
- package/dist/src/mcp/client-pool.js +212 -0
- package/dist/src/mcp/oauth-callback.js +2 -2
- package/dist/src/mcp/parse-headers.test.js +14 -14
- package/dist/src/mcp/runtime.d.ts +28 -0
- package/dist/src/mcp/runtime.js +117 -51
- package/dist/src/mcp/self-verify-runner.d.ts +14 -0
- package/dist/src/mcp/self-verify-runner.js +38 -0
- package/dist/src/mcp/setup-guide-text.d.ts +9 -0
- package/dist/src/mcp/setup-guide-text.js +84 -0
- package/dist/src/mcp/smart-filter.js +49 -0
- package/dist/src/mcp/smoke.test.js +43 -43
- package/dist/src/mcp/tools-server.d.ts +7 -0
- package/dist/src/mcp/tools-server.js +19 -22
- package/dist/src/models/catalog.json +349 -349
- package/dist/src/ops/__tests__/doctor-ee-health.test.js +21 -0
- package/dist/src/ops/doctor.d.ts +3 -2
- package/dist/src/ops/doctor.js +47 -11
- package/dist/src/ops/doctor.test.js +4 -3
- package/dist/src/orchestrator/__tests__/mcp-capability-block.test.d.ts +1 -0
- package/dist/src/orchestrator/__tests__/mcp-capability-block.test.js +39 -0
- package/dist/src/orchestrator/__tests__/project-stack.test.d.ts +1 -0
- package/dist/src/orchestrator/__tests__/project-stack.test.js +65 -0
- package/dist/src/orchestrator/batch-turn-runner.js +7 -11
- package/dist/src/orchestrator/message-processor.js +57 -27
- package/dist/src/orchestrator/orchestrator.js +26 -0
- package/dist/src/orchestrator/prompts.d.ts +51 -0
- package/dist/src/orchestrator/prompts.js +257 -134
- package/dist/src/orchestrator/scope-ceiling.js +6 -1
- package/dist/src/orchestrator/stream-runner.js +20 -15
- package/dist/src/orchestrator/text-tool-call-detector.test.js +13 -13
- package/dist/src/pil/__tests__/clarity-gate.test.js +24 -215
- package/dist/src/pil/__tests__/config.test.js +1 -17
- package/dist/src/pil/__tests__/discovery.test.js +144 -11
- package/dist/src/pil/__tests__/layer1-intent-trace.test.js +7 -2
- package/dist/src/pil/__tests__/layer1-intent.test.js +3 -0
- package/dist/src/pil/__tests__/layer16-clarity.test.js +32 -116
- package/dist/src/pil/__tests__/layer4-gsd.test.js +37 -0
- package/dist/src/pil/__tests__/layer6-output.test.js +137 -18
- package/dist/src/pil/__tests__/llm-classify.test.js +49 -2
- package/dist/src/pil/agent-operating-contract.d.ts +1 -1
- package/dist/src/pil/agent-operating-contract.js +2 -0
- package/dist/src/pil/agent-operating-contract.test.js +7 -2
- package/dist/src/pil/cheap-model-playbook.js +35 -35
- package/dist/src/pil/cheap-model-workbooks.js +16 -13
- package/dist/src/pil/clarity-gate.d.ts +21 -19
- package/dist/src/pil/clarity-gate.js +26 -153
- package/dist/src/pil/config.d.ts +9 -1
- package/dist/src/pil/config.js +15 -4
- package/dist/src/pil/discovery.js +211 -136
- package/dist/src/pil/layer1-intent.d.ts +12 -0
- package/dist/src/pil/layer1-intent.js +283 -38
- package/dist/src/pil/layer1-intent.test.js +210 -4
- package/dist/src/pil/layer16-clarity.d.ts +25 -11
- package/dist/src/pil/layer16-clarity.js +19 -306
- package/dist/src/pil/layer4-gsd.js +18 -6
- package/dist/src/pil/layer6-output.d.ts +2 -0
- package/dist/src/pil/layer6-output.js +137 -22
- package/dist/src/pil/llm-classify.d.ts +26 -0
- package/dist/src/pil/llm-classify.js +34 -5
- package/dist/src/pil/native-capabilities-workbook.d.ts +1 -1
- package/dist/src/pil/native-capabilities-workbook.js +82 -76
- package/dist/src/pil/schema.d.ts +8 -0
- package/dist/src/pil/schema.js +12 -1
- package/dist/src/pil/task-tier-map.js +4 -0
- package/dist/src/pil/types.d.ts +11 -1
- package/dist/src/product-loop/done-gate.js +3 -3
- package/dist/src/product-loop/loop-driver.js +18 -18
- package/dist/src/product-loop/progress-snapshot.js +4 -4
- package/dist/src/providers/auth/gemini-oauth.js +6 -15
- package/dist/src/providers/auth/grok-oauth.js +6 -15
- package/dist/src/providers/auth/openai-oauth.js +6 -15
- package/dist/src/providers/mcp-vision-bridge.js +48 -48
- package/dist/src/reporter/index.js +1 -1
- package/dist/src/scaffold/bb-ecosystem-apply.js +47 -47
- package/dist/src/scaffold/bb-quality-gate.js +5 -5
- package/dist/src/scaffold/continuation-prompt.js +60 -60
- package/dist/src/scaffold/init-new.js +453 -453
- package/dist/src/self-qa/__tests__/scenario-planner.test.js +3 -3
- package/dist/src/self-qa/agentic-loop.js +24 -19
- package/dist/src/self-qa/spec-emitter.js +26 -23
- package/dist/src/storage/__tests__/migrations.test.js +2 -2
- package/dist/src/storage/interaction-log.js +5 -5
- package/dist/src/storage/migrations.js +122 -122
- package/dist/src/storage/sessions.js +42 -42
- package/dist/src/storage/transcript.js +91 -84
- package/dist/src/storage/usage.js +14 -14
- package/dist/src/storage/workspaces.js +12 -12
- package/dist/src/tools/__tests__/native-tools.test.d.ts +1 -0
- package/dist/src/tools/__tests__/native-tools.test.js +53 -0
- package/dist/src/tools/git-safety.d.ts +61 -0
- package/dist/src/tools/git-safety.js +141 -0
- package/dist/src/tools/git-safety.test.d.ts +1 -0
- package/dist/src/tools/git-safety.test.js +111 -0
- package/dist/src/tools/native-tools.d.ts +31 -0
- package/dist/src/tools/native-tools.js +273 -0
- package/dist/src/tools/registry-git-safety.test.d.ts +7 -0
- package/dist/src/tools/registry-git-safety.test.js +92 -0
- package/dist/src/tools/registry.js +39 -4
- package/dist/src/ui/__tests__/markdown-render.test.d.ts +1 -0
- package/dist/src/ui/__tests__/markdown-render.test.js +48 -0
- package/dist/src/ui/app.js +0 -0
- package/dist/src/ui/components/message-view.js +4 -1
- package/dist/src/ui/components/structured-response-view.js +7 -3
- package/dist/src/ui/components/tool-group.js +7 -1
- package/dist/src/ui/markdown-render.d.ts +41 -0
- package/dist/src/ui/markdown-render.js +223 -0
- package/dist/src/ui/markdown.d.ts +10 -0
- package/dist/src/ui/markdown.js +12 -35
- package/dist/src/ui/slash/council-inspect.js +4 -4
- package/dist/src/ui/slash/export.js +4 -4
- package/dist/src/ui/utils/text.d.ts +8 -0
- package/dist/src/ui/utils/text.js +16 -0
- package/dist/src/ui/utils/text.test.d.ts +1 -0
- package/dist/src/ui/utils/text.test.js +23 -0
- package/dist/src/usage/ledger.js +48 -15
- package/dist/src/utils/__tests__/footprint-gitignore.test.d.ts +1 -0
- package/dist/src/utils/__tests__/footprint-gitignore.test.js +50 -0
- package/dist/src/utils/clipboard-image.js +23 -23
- package/dist/src/utils/open-url.d.ts +56 -0
- package/dist/src/utils/open-url.js +58 -0
- package/dist/src/utils/open-url.test.d.ts +1 -0
- package/dist/src/utils/open-url.test.js +86 -0
- package/dist/src/utils/settings.d.ts +12 -0
- package/dist/src/utils/settings.js +48 -0
- package/dist/src/utils/side-question.js +2 -2
- package/dist/src/utils/skills.js +3 -3
- package/dist/src/verify/__tests__/coverage-parsers.test.js +30 -30
- package/dist/src/verify/environment.js +2 -1
- package/package.json +3 -2
- package/dist/muonroi-cli-standalone.exe +0 -0
- package/dist/packages/agent-harness-core/src/driver.js.map +0 -1
- package/dist/packages/agent-harness-core/src/event-filter.js.map +0 -1
- package/dist/packages/agent-harness-core/src/event-redact.js.map +0 -1
- package/dist/packages/agent-harness-core/src/idle.js.map +0 -1
- package/dist/packages/agent-harness-core/src/index.js.map +0 -1
- package/dist/packages/agent-harness-core/src/mcp-server.js.map +0 -1
- package/dist/packages/agent-harness-core/src/mock-llm.js.map +0 -1
- package/dist/packages/agent-harness-core/src/predicate.js.map +0 -1
- package/dist/packages/agent-harness-core/src/protocol.js.map +0 -1
- package/dist/packages/agent-harness-core/src/registry.js.map +0 -1
- package/dist/packages/agent-harness-core/src/selector.js.map +0 -1
- package/dist/packages/agent-harness-core/src/spec-helpers.js.map +0 -1
- package/dist/packages/agent-harness-core/src/transports/sidechannel.js.map +0 -1
- package/dist/packages/agent-harness-core/src/transports/ws.js.map +0 -1
- package/dist/packages/agent-harness-opentui/src/agent-mode.js.map +0 -1
- package/dist/packages/agent-harness-opentui/src/index.js.map +0 -1
- package/dist/packages/agent-harness-opentui/src/input-bridge.js.map +0 -1
- package/dist/packages/agent-harness-opentui/src/install.js.map +0 -1
- package/dist/packages/agent-harness-opentui/src/reconciler-hook.js.map +0 -1
- package/dist/packages/agent-harness-opentui/src/semantic.js.map +0 -1
- package/dist/src/__test-helpers__/catalog-fixtures.js.map +0 -1
- package/dist/src/__test-stubs__/ee-server.js.map +0 -1
- package/dist/src/__test-stubs__/vitest-setup.js.map +0 -1
- package/dist/src/__tests__/council/bubble-layout.test.js.map +0 -1
- package/dist/src/__tests__/council/code-block-truncate.test.js.map +0 -1
- package/dist/src/__tests__/council/role-palette.test.js.map +0 -1
- package/dist/src/__tests__/first-run-wizard.test.js.map +0 -1
- package/dist/src/agent-harness/__tests__/cli-flags.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/driver.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/idle.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/mock-llm.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/mock-model.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/predicate.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/protocol.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/schema.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/selector.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/sidechannel.spec.js.map +0 -1
- package/dist/src/agent-harness/__tests__/spec-helpers.spec.js.map +0 -1
- package/dist/src/agent-harness/index.js.map +0 -1
- package/dist/src/agent-harness/mock-model.js.map +0 -1
- package/dist/src/agent-harness/test-spawn.js.map +0 -1
- package/dist/src/billing/index.js.map +0 -1
- package/dist/src/chat/__tests__/broadcast-bus.test.js.map +0 -1
- package/dist/src/chat/__tests__/channel-manager.test.js.map +0 -1
- package/dist/src/chat/__tests__/client.test.js.map +0 -1
- package/dist/src/chat/__tests__/discord-integration.test.js.map +0 -1
- package/dist/src/chat/__tests__/intent-prompt.test.js.map +0 -1
- package/dist/src/chat/__tests__/verdict-resolver.test.js.map +0 -1
- package/dist/src/chat/broadcast-bus.js.map +0 -1
- package/dist/src/chat/channel-manager.js.map +0 -1
- package/dist/src/chat/chat-keychain.js.map +0 -1
- package/dist/src/chat/factory.js.map +0 -1
- package/dist/src/chat/intent-prompt.js.map +0 -1
- package/dist/src/chat/providers/discord/client.js.map +0 -1
- package/dist/src/chat/types.js.map +0 -1
- package/dist/src/chat/verdict-constants.js.map +0 -1
- package/dist/src/chat/verdict-resolver.js.map +0 -1
- package/dist/src/cli/__tests__/bw-vault.test.js.map +0 -1
- package/dist/src/cli/__tests__/keys-bundle.test.js.map +0 -1
- package/dist/src/cli/__tests__/share-cmd.test.js.map +0 -1
- package/dist/src/cli/bw-vault.js.map +0 -1
- package/dist/src/cli/config/__tests__/model-picker.test.js.map +0 -1
- package/dist/src/cli/config/__tests__/provider-fetch.test.js.map +0 -1
- package/dist/src/cli/config/index.js.map +0 -1
- package/dist/src/cli/config/model-picker.js.map +0 -1
- package/dist/src/cli/config/provider-fetch.js.map +0 -1
- package/dist/src/cli/config/screen-council.js.map +0 -1
- package/dist/src/cli/config/screen-models.js.map +0 -1
- package/dist/src/cli/config/screen-providers.js.map +0 -1
- package/dist/src/cli/config/tui.js.map +0 -1
- package/dist/src/cli/cost-forensics.js.map +0 -1
- package/dist/src/cli/cost-forensics.test.js.map +0 -1
- package/dist/src/cli/keys-bundle.js.map +0 -1
- package/dist/src/cli/keys.js.map +0 -1
- package/dist/src/cli/keys.test.js.map +0 -1
- package/dist/src/cli/pil-report.js.map +0 -1
- package/dist/src/cli/reporter-cmd.js.map +0 -1
- package/dist/src/cli/share-cmd.js.map +0 -1
- package/dist/src/cli/usage-report.js.map +0 -1
- package/dist/src/cloud/index.js.map +0 -1
- package/dist/src/council/__tests__/accounting.test.js.map +0 -1
- package/dist/src/council/__tests__/audit-replay.test.js.map +0 -1
- package/dist/src/council/__tests__/clarifier-max-rounds.test.js.map +0 -1
- package/dist/src/council/__tests__/clarifier-options.test.js.map +0 -1
- package/dist/src/council/__tests__/clarifier-ready-gate.test.js.map +0 -1
- package/dist/src/council/__tests__/cost-aware.test.js.map +0 -1
- package/dist/src/council/__tests__/debate-planner-structured.test.js.map +0 -1
- package/dist/src/council/__tests__/decisions-lock.test.js.map +0 -1
- package/dist/src/council/__tests__/evaluator-metrics.test.js.map +0 -1
- package/dist/src/council/__tests__/parse-outcome-fallback.test.js.map +0 -1
- package/dist/src/council/__tests__/research-tools.test.js.map +0 -1
- package/dist/src/council/__tests__/round-tools.test.js.map +0 -1
- package/dist/src/council/__tests__/tool-trace.test.js.map +0 -1
- package/dist/src/council/__tests__/types-contract.test.js.map +0 -1
- package/dist/src/council/clarifier.js.map +0 -1
- package/dist/src/council/context.js.map +0 -1
- package/dist/src/council/debate-planner.js.map +0 -1
- package/dist/src/council/debate.js.map +0 -1
- package/dist/src/council/decisions-lock.js.map +0 -1
- package/dist/src/council/executor.js.map +0 -1
- package/dist/src/council/index.js.map +0 -1
- package/dist/src/council/leader.js.map +0 -1
- package/dist/src/council/llm.js.map +0 -1
- package/dist/src/council/phase-events.js.map +0 -1
- package/dist/src/council/planner.js.map +0 -1
- package/dist/src/council/preflight.js.map +0 -1
- package/dist/src/council/prompts.js.map +0 -1
- package/dist/src/council/types.js.map +0 -1
- package/dist/src/daemon/scheduler.js.map +0 -1
- package/dist/src/daemon/scheduler.test.js.map +0 -1
- package/dist/src/ee/__tests__/bb-design.test.js.map +0 -1
- package/dist/src/ee/__tests__/export-transcripts.test.js.map +0 -1
- package/dist/src/ee/__tests__/pil-context-bridge.test.js.map +0 -1
- package/dist/src/ee/__tests__/pipeline.integration.test.js.map +0 -1
- package/dist/src/ee/__tests__/recall-format.test.js.map +0 -1
- package/dist/src/ee/__tests__/recall-ledger.test.js.map +0 -1
- package/dist/src/ee/__tests__/render-sink-wiring.test.js.map +0 -1
- package/dist/src/ee/auth.js.map +0 -1
- package/dist/src/ee/auth.test.js.map +0 -1
- package/dist/src/ee/bb-design.js.map +0 -1
- package/dist/src/ee/bb-retrieval.js.map +0 -1
- package/dist/src/ee/bridge.js.map +0 -1
- package/dist/src/ee/bridge.test.js.map +0 -1
- package/dist/src/ee/client-mode.js.map +0 -1
- package/dist/src/ee/client.js.map +0 -1
- package/dist/src/ee/client.test.js.map +0 -1
- package/dist/src/ee/council-bridge.js.map +0 -1
- package/dist/src/ee/embedding-cache.js.map +0 -1
- package/dist/src/ee/export-transcripts.js.map +0 -1
- package/dist/src/ee/extract-session.js.map +0 -1
- package/dist/src/ee/extract-session.test.js.map +0 -1
- package/dist/src/ee/health.js.map +0 -1
- package/dist/src/ee/index.js.map +0 -1
- package/dist/src/ee/intercept.js.map +0 -1
- package/dist/src/ee/intercept.test.js.map +0 -1
- package/dist/src/ee/judge.js.map +0 -1
- package/dist/src/ee/judge.test.js.map +0 -1
- package/dist/src/ee/mistake-detector.js.map +0 -1
- package/dist/src/ee/mistake-detector.test.js.map +0 -1
- package/dist/src/ee/offline-queue.js.map +0 -1
- package/dist/src/ee/offline-queue.test.js.map +0 -1
- package/dist/src/ee/phase-outcome.js.map +0 -1
- package/dist/src/ee/phase-outcome.test.js.map +0 -1
- package/dist/src/ee/phase-tracker.js.map +0 -1
- package/dist/src/ee/phase-tracker.test.js.map +0 -1
- package/dist/src/ee/posttool.js.map +0 -1
- package/dist/src/ee/posttool.test.js.map +0 -1
- package/dist/src/ee/prompt-stale.js.map +0 -1
- package/dist/src/ee/prompt-stale.test.js.map +0 -1
- package/dist/src/ee/recall-ledger.js.map +0 -1
- package/dist/src/ee/recall-mirror.test.js.map +0 -1
- package/dist/src/ee/render.js.map +0 -1
- package/dist/src/ee/render.test.js.map +0 -1
- package/dist/src/ee/scope.js.map +0 -1
- package/dist/src/ee/scope.test.js.map +0 -1
- package/dist/src/ee/search.js.map +0 -1
- package/dist/src/ee/session-trajectory.js.map +0 -1
- package/dist/src/ee/session-trajectory.test.js.map +0 -1
- package/dist/src/ee/tenant.js.map +0 -1
- package/dist/src/ee/touch.test.js.map +0 -1
- package/dist/src/ee/transcript-emit.js.map +0 -1
- package/dist/src/ee/types.js.map +0 -1
- package/dist/src/flow/__tests__/migration.test.js.map +0 -1
- package/dist/src/flow/__tests__/parser.test.js.map +0 -1
- package/dist/src/flow/__tests__/run-manager-product.test.js.map +0 -1
- package/dist/src/flow/__tests__/run-manager.test.js.map +0 -1
- package/dist/src/flow/__tests__/scaffold-checkpoint.test.js.map +0 -1
- package/dist/src/flow/__tests__/scaffold.test.js.map +0 -1
- package/dist/src/flow/__tests__/warning-persist.test.js.map +0 -1
- package/dist/src/flow/artifact-io.js.map +0 -1
- package/dist/src/flow/compaction/__tests__/compress.test.js.map +0 -1
- package/dist/src/flow/compaction/__tests__/extract.test.js.map +0 -1
- package/dist/src/flow/compaction/__tests__/preserve.test.js.map +0 -1
- package/dist/src/flow/compaction/compress.js.map +0 -1
- package/dist/src/flow/compaction/extract.js.map +0 -1
- package/dist/src/flow/compaction/index.js.map +0 -1
- package/dist/src/flow/compaction/preserve.js.map +0 -1
- package/dist/src/flow/index.js.map +0 -1
- package/dist/src/flow/migration.js.map +0 -1
- package/dist/src/flow/parser.js.map +0 -1
- package/dist/src/flow/run-manager.js.map +0 -1
- package/dist/src/flow/scaffold-checkpoint.js.map +0 -1
- package/dist/src/flow/scaffold.js.map +0 -1
- package/dist/src/flow/warning-persist.js.map +0 -1
- package/dist/src/generated/version.js.map +0 -1
- package/dist/src/gsd/__tests__/complexity.test.js.map +0 -1
- package/dist/src/gsd/__tests__/directives.test.js.map +0 -1
- package/dist/src/gsd/__tests__/gray-areas.test.js.map +0 -1
- package/dist/src/gsd/__tests__/types.test.js.map +0 -1
- package/dist/src/gsd/complexity.js.map +0 -1
- package/dist/src/gsd/directives.js.map +0 -1
- package/dist/src/gsd/gray-areas.js.map +0 -1
- package/dist/src/gsd/index.js.map +0 -1
- package/dist/src/gsd/types.js.map +0 -1
- package/dist/src/headless/__tests__/council-answers.test.js.map +0 -1
- package/dist/src/headless/council-answers.js.map +0 -1
- package/dist/src/headless/output.js.map +0 -1
- package/dist/src/headless/output.test.js.map +0 -1
- package/dist/src/hooks/config.js.map +0 -1
- package/dist/src/hooks/index.js.map +0 -1
- package/dist/src/hooks/types.js.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/lsp/builtins.js.map +0 -1
- package/dist/src/lsp/builtins.test.js.map +0 -1
- package/dist/src/lsp/client.js.map +0 -1
- package/dist/src/lsp/manager.js.map +0 -1
- package/dist/src/lsp/manager.test.js.map +0 -1
- package/dist/src/lsp/npm-cache.js.map +0 -1
- package/dist/src/lsp/npm-cache.test.js.map +0 -1
- package/dist/src/lsp/runtime.js.map +0 -1
- package/dist/src/lsp/smoke.test.js.map +0 -1
- package/dist/src/lsp/types.js.map +0 -1
- package/dist/src/maintain/__tests__/codebase-intel.test.js.map +0 -1
- package/dist/src/maintain/__tests__/gh-create-pr.test.js.map +0 -1
- package/dist/src/maintain/__tests__/pr-builder.test.js.map +0 -1
- package/dist/src/maintain/__tests__/repo-map.test.js.map +0 -1
- package/dist/src/maintain/__tests__/task-runner.test.js.map +0 -1
- package/dist/src/maintain/codebase-intel.js.map +0 -1
- package/dist/src/maintain/gh-create-pr.js.map +0 -1
- package/dist/src/maintain/index.js.map +0 -1
- package/dist/src/maintain/pr-builder.js.map +0 -1
- package/dist/src/maintain/repo-map.js.map +0 -1
- package/dist/src/maintain/task-runner.js.map +0 -1
- package/dist/src/maintain/types.js.map +0 -1
- package/dist/src/mcp/__tests__/auto-setup.test.js.map +0 -1
- package/dist/src/mcp/__tests__/cap-tool-result.test.js.map +0 -1
- package/dist/src/mcp/__tests__/ee-tools.test.js.map +0 -1
- package/dist/src/mcp/__tests__/forensics-tools.test.js.map +0 -1
- package/dist/src/mcp/__tests__/harness-driver-action-tools.spec.js.map +0 -1
- package/dist/src/mcp/__tests__/harness-driver-async-tools.spec.js.map +0 -1
- package/dist/src/mcp/__tests__/harness-driver-read-tools.spec.js.map +0 -1
- package/dist/src/mcp/__tests__/harness-driver-security.spec.js.map +0 -1
- package/dist/src/mcp/__tests__/harness-driver.spec.js.map +0 -1
- package/dist/src/mcp/__tests__/lazy-schema.spec.js.map +0 -1
- package/dist/src/mcp/__tests__/lsp-tools.test.js.map +0 -1
- package/dist/src/mcp/__tests__/mcp-keychain.test.js.map +0 -1
- package/dist/src/mcp/__tests__/research-onboarding.test.js.map +0 -1
- package/dist/src/mcp/__tests__/runtime-hydration.test.js.map +0 -1
- package/dist/src/mcp/__tests__/runtime-output-cap.test.js.map +0 -1
- package/dist/src/mcp/__tests__/runtime-sanitize.test.js.map +0 -1
- package/dist/src/mcp/__tests__/self-verify-jobs.test.js.map +0 -1
- package/dist/src/mcp/__tests__/smart-filter.test.js.map +0 -1
- package/dist/src/mcp/__tests__/tools-server.smoke.test.js.map +0 -1
- package/dist/src/mcp/auto-setup.js.map +0 -1
- package/dist/src/mcp/cap-tool-result.js.map +0 -1
- package/dist/src/mcp/catalog.js.map +0 -1
- package/dist/src/mcp/ee-tools.js.map +0 -1
- package/dist/src/mcp/forensics-tools.js.map +0 -1
- package/dist/src/mcp/lsp-tools.js.map +0 -1
- package/dist/src/mcp/mcp-keychain.js.map +0 -1
- package/dist/src/mcp/oauth-callback.js.map +0 -1
- package/dist/src/mcp/oauth-provider.js.map +0 -1
- package/dist/src/mcp/opentui-spawn.js.map +0 -1
- package/dist/src/mcp/parse-headers.js.map +0 -1
- package/dist/src/mcp/parse-headers.test.js.map +0 -1
- package/dist/src/mcp/research-onboarding.js.map +0 -1
- package/dist/src/mcp/runtime.js.map +0 -1
- package/dist/src/mcp/self-verify-jobs.js.map +0 -1
- package/dist/src/mcp/smart-filter.js.map +0 -1
- package/dist/src/mcp/smoke.test.js.map +0 -1
- package/dist/src/mcp/tools-server.js.map +0 -1
- package/dist/src/mcp/validate.js.map +0 -1
- package/dist/src/models/__tests__/registry.test.js.map +0 -1
- package/dist/src/models/catalog-client.js.map +0 -1
- package/dist/src/models/catalog-gemini.test.js.map +0 -1
- package/dist/src/models/catalog-url.test.js.map +0 -1
- package/dist/src/models/catalog-validation.test.js.map +0 -1
- package/dist/src/models/classify-tier.js.map +0 -1
- package/dist/src/models/index.js.map +0 -1
- package/dist/src/models/registry.js.map +0 -1
- package/dist/src/ops/__tests__/doctor-council-mcp.test.js.map +0 -1
- package/dist/src/ops/__tests__/doctor-ee-health.test.js.map +0 -1
- package/dist/src/ops/bug-report.js.map +0 -1
- package/dist/src/ops/bug-report.test.js.map +0 -1
- package/dist/src/ops/doctor.js.map +0 -1
- package/dist/src/ops/doctor.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/agent-base-url-switch.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/batch-turn-runner.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/council-manager.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/cross-turn-dedup.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/current-call-id.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/error-forensics.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/flow-resume.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/humanize-api-error.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/message-processor.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/message-write-ahead.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/read-path-budget.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/retry-classifier.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/retry-stream.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/route-feedback.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/stream-runner.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/sub-agent-model-tier.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/usage-events-shape.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/usage-normalizer-c1.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/usage-shape-threading.test.js.map +0 -1
- package/dist/src/orchestrator/__tests__/write-ahead.test.js.map +0 -1
- package/dist/src/orchestrator/abort.js.map +0 -1
- package/dist/src/orchestrator/abort.test.js.map +0 -1
- package/dist/src/orchestrator/agent-options.js.map +0 -1
- package/dist/src/orchestrator/agent.test.js.map +0 -1
- package/dist/src/orchestrator/batch-turn-runner.js.map +0 -1
- package/dist/src/orchestrator/batch-utils.js.map +0 -1
- package/dist/src/orchestrator/cleanup.test.js.map +0 -1
- package/dist/src/orchestrator/compaction.js.map +0 -1
- package/dist/src/orchestrator/compaction.test.js.map +0 -1
- package/dist/src/orchestrator/council-manager.js.map +0 -1
- package/dist/src/orchestrator/cross-turn-dedup.js.map +0 -1
- package/dist/src/orchestrator/delegations.js.map +0 -1
- package/dist/src/orchestrator/delegations.test.js.map +0 -1
- package/dist/src/orchestrator/error-utils.js.map +0 -1
- package/dist/src/orchestrator/flow-resume.js.map +0 -1
- package/dist/src/orchestrator/grounding-check.js.map +0 -1
- package/dist/src/orchestrator/grounding-check.test.js.map +0 -1
- package/dist/src/orchestrator/interrupted-turn.js.map +0 -1
- package/dist/src/orchestrator/interrupted-turn.test.js.map +0 -1
- package/dist/src/orchestrator/message-processor.js.map +0 -1
- package/dist/src/orchestrator/message-seq.js.map +0 -1
- package/dist/src/orchestrator/message-seq.test.js.map +0 -1
- package/dist/src/orchestrator/orchestrator.js.map +0 -1
- package/dist/src/orchestrator/pending-calls.js.map +0 -1
- package/dist/src/orchestrator/pending-calls.test.js.map +0 -1
- package/dist/src/orchestrator/prompts.js.map +0 -1
- package/dist/src/orchestrator/provider-options-shape.js.map +0 -1
- package/dist/src/orchestrator/provider-options-shape.spec.js.map +0 -1
- package/dist/src/orchestrator/read-path-budget.js.map +0 -1
- package/dist/src/orchestrator/reasoning.js.map +0 -1
- package/dist/src/orchestrator/reasoning.test.js.map +0 -1
- package/dist/src/orchestrator/repair-tool-call.js.map +0 -1
- package/dist/src/orchestrator/repetition-detector.js.map +0 -1
- package/dist/src/orchestrator/repetition-detector.test.js.map +0 -1
- package/dist/src/orchestrator/retry-classifier.js.map +0 -1
- package/dist/src/orchestrator/retry-stream.js.map +0 -1
- package/dist/src/orchestrator/sandbox.test.js.map +0 -1
- package/dist/src/orchestrator/scope-ceiling.js.map +0 -1
- package/dist/src/orchestrator/scope-ceiling.test.js.map +0 -1
- package/dist/src/orchestrator/scope-reminder.js.map +0 -1
- package/dist/src/orchestrator/scope-reminder.test.js.map +0 -1
- package/dist/src/orchestrator/stall-rescue.js.map +0 -1
- package/dist/src/orchestrator/stall-rescue.test.js.map +0 -1
- package/dist/src/orchestrator/stall-watchdog.js.map +0 -1
- package/dist/src/orchestrator/stall-watchdog.test.js.map +0 -1
- package/dist/src/orchestrator/stream-runner.js.map +0 -1
- package/dist/src/orchestrator/sub-agent-cap.js.map +0 -1
- package/dist/src/orchestrator/sub-agent-cap.test.js.map +0 -1
- package/dist/src/orchestrator/sub-agent-model-tier.js.map +0 -1
- package/dist/src/orchestrator/subagent-compactor.js.map +0 -1
- package/dist/src/orchestrator/subagent-compactor.spec.js.map +0 -1
- package/dist/src/orchestrator/text-tool-call-detector.js.map +0 -1
- package/dist/src/orchestrator/text-tool-call-detector.test.js.map +0 -1
- package/dist/src/orchestrator/token-counter.js.map +0 -1
- package/dist/src/orchestrator/token-counter.test.js.map +0 -1
- package/dist/src/orchestrator/tool-args-hash.js.map +0 -1
- package/dist/src/orchestrator/tool-args-hash.test.js.map +0 -1
- package/dist/src/orchestrator/tool-args-repair.js.map +0 -1
- package/dist/src/orchestrator/tool-args-repair.test.js.map +0 -1
- package/dist/src/orchestrator/tool-loop-cap.js.map +0 -1
- package/dist/src/orchestrator/tool-loop-cap.test.js.map +0 -1
- package/dist/src/orchestrator/tool-repetition-detector.js.map +0 -1
- package/dist/src/orchestrator/tool-repetition-detector.test.js.map +0 -1
- package/dist/src/orchestrator/tool-utils.js.map +0 -1
- package/dist/src/orchestrator/turn-runner-deps.js.map +0 -1
- package/dist/src/pil/__tests__/budget.test.js.map +0 -1
- package/dist/src/pil/__tests__/clarity-gate.test.js.map +0 -1
- package/dist/src/pil/__tests__/config.test.js.map +0 -1
- package/dist/src/pil/__tests__/discovery-cache.test.js.map +0 -1
- package/dist/src/pil/__tests__/discovery-types.test.js.map +0 -1
- package/dist/src/pil/__tests__/discovery.test.js.map +0 -1
- package/dist/src/pil/__tests__/dual-run.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer1-intent-trace.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer1-intent.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer15-context-scan.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer16-clarity.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer17-feasibility.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer18-acceptance.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer2-personality.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer3-ee-injection.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer3-injected-chunk.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer4-gsd.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer5-context.test.js.map +0 -1
- package/dist/src/pil/__tests__/layer6-output.test.js.map +0 -1
- package/dist/src/pil/__tests__/llm-classify.test.js.map +0 -1
- package/dist/src/pil/__tests__/native-capabilities-workbook.test.js.map +0 -1
- package/dist/src/pil/__tests__/ollama-classify.test.js.map +0 -1
- package/dist/src/pil/__tests__/orchestrator-integration.test.js.map +0 -1
- package/dist/src/pil/__tests__/pipeline.test.js.map +0 -1
- package/dist/src/pil/__tests__/renderer-coverage.test.js.map +0 -1
- package/dist/src/pil/__tests__/response-tools.test.js.map +0 -1
- package/dist/src/pil/__tests__/schema.test.js.map +0 -1
- package/dist/src/pil/__tests__/scoreComplexity.test.js.map +0 -1
- package/dist/src/pil/__tests__/scoreSufficiency.test.js.map +0 -1
- package/dist/src/pil/__tests__/store.test.js.map +0 -1
- package/dist/src/pil/__tests__/task-tier-map.test.js.map +0 -1
- package/dist/src/pil/agent-operating-contract.js.map +0 -1
- package/dist/src/pil/agent-operating-contract.test.js.map +0 -1
- package/dist/src/pil/budget-log.js.map +0 -1
- package/dist/src/pil/budget.js.map +0 -1
- package/dist/src/pil/cheap-model-playbook.js.map +0 -1
- package/dist/src/pil/cheap-model-playbook.test.js.map +0 -1
- package/dist/src/pil/cheap-model-workbooks.js.map +0 -1
- package/dist/src/pil/cheap-model-workbooks.test.js.map +0 -1
- package/dist/src/pil/clarity-gate.js.map +0 -1
- package/dist/src/pil/config.js.map +0 -1
- package/dist/src/pil/discovery-cache.js.map +0 -1
- package/dist/src/pil/discovery-types.js.map +0 -1
- package/dist/src/pil/discovery.js.map +0 -1
- package/dist/src/pil/index.js.map +0 -1
- package/dist/src/pil/layer1-intent.js.map +0 -1
- package/dist/src/pil/layer1-intent.test.js.map +0 -1
- package/dist/src/pil/layer15-context-scan.js.map +0 -1
- package/dist/src/pil/layer16-clarity.js.map +0 -1
- package/dist/src/pil/layer16-clarity.test.js +0 -31
- package/dist/src/pil/layer16-clarity.test.js.map +0 -1
- package/dist/src/pil/layer17-feasibility.js.map +0 -1
- package/dist/src/pil/layer18-acceptance.js.map +0 -1
- package/dist/src/pil/layer1_5-complexity-size.js.map +0 -1
- package/dist/src/pil/layer1_5-complexity-size.test.js.map +0 -1
- package/dist/src/pil/layer2-personality.js.map +0 -1
- package/dist/src/pil/layer3-ee-injection.js.map +0 -1
- package/dist/src/pil/layer4-gsd.js.map +0 -1
- package/dist/src/pil/layer5-context.js.map +0 -1
- package/dist/src/pil/layer6-output.js.map +0 -1
- package/dist/src/pil/llm-classify.js.map +0 -1
- package/dist/src/pil/native-capabilities-workbook.js.map +0 -1
- package/dist/src/pil/ollama-classify.js.map +0 -1
- package/dist/src/pil/pipeline.js.map +0 -1
- package/dist/src/pil/response-tools.js.map +0 -1
- package/dist/src/pil/schema.js.map +0 -1
- package/dist/src/pil/session-state.js.map +0 -1
- package/dist/src/pil/session-state.test.js.map +0 -1
- package/dist/src/pil/store.js.map +0 -1
- package/dist/src/pil/task-tier-map.js.map +0 -1
- package/dist/src/pil/timeout.js.map +0 -1
- package/dist/src/pil/types.js.map +0 -1
- package/dist/src/product-loop/__tests__/artifact-io.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/assumption-ledger.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/backlog-builder.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/backlog-store.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/cb2-retry-bonus.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/circuit-breakers-coverage.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/circuit-breakers.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/complexity-routing.spec.js.map +0 -1
- package/dist/src/product-loop/__tests__/context-policy.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/cost-preview.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/cost-scoper.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/cross-run-memory.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/design-output.spec.js.map +0 -1
- package/dist/src/product-loop/__tests__/discover.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-context-format.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-council-runner.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-detection.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-ecosystem.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-integration.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-interview.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-migrations.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-persistence.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-prompt-parser.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-prompt-specificity.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-recommender-ecosystem.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-recommender.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/discovery-schema.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/done-gate-coverage.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/done-gate.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/ee-extract-wiring.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/extract-to-ee.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/feedback-routing.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/gather-selectable-alts.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/hot-path.spec.js.map +0 -1
- package/dist/src/product-loop/__tests__/integration.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/loop-driver-audit.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/loop-driver.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/maintenance-task-synthesis.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/phase-a2-backlog-build.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/phase-budget.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/phase-orchestrator-integration.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/phase-plan.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/phase-rituals.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/phase-runner.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/phase-tracker-bridge.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/pick-backend-stack.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/product-identity.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/progress-snapshot.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/reality-anchor.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/repo-audit.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/repo-brief.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/role-memory.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/role-registry.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/role-routing-ee.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/route-decision-emit.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/seed-questions.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/ship-polish.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/sprint-planner.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/sprint-runner-backlog.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/sprint-runner-emit.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/sprint-runner-phase-chunks.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/sprint-runner.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/sprint-self-verify.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/sprint-store.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/stakeholder-acl.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/state-md-ee-injections.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/sufficiency-routing.spec.js.map +0 -1
- package/dist/src/product-loop/__tests__/typed-artifacts.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/types.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/verify-failure-threshold.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/verify-failure-tracking.test.js.map +0 -1
- package/dist/src/product-loop/__tests__/verify-result.test.js.map +0 -1
- package/dist/src/product-loop/artifact-io.js.map +0 -1
- package/dist/src/product-loop/assumption-ledger.js.map +0 -1
- package/dist/src/product-loop/backlog-builder.js.map +0 -1
- package/dist/src/product-loop/backlog-store.js.map +0 -1
- package/dist/src/product-loop/circuit-breakers.js.map +0 -1
- package/dist/src/product-loop/context-policy.js.map +0 -1
- package/dist/src/product-loop/cost-preview.js.map +0 -1
- package/dist/src/product-loop/cost-scoper.js.map +0 -1
- package/dist/src/product-loop/cross-run-memory.js.map +0 -1
- package/dist/src/product-loop/design-output.js.map +0 -1
- package/dist/src/product-loop/discover.js.map +0 -1
- package/dist/src/product-loop/discovery-context-format.js.map +0 -1
- package/dist/src/product-loop/discovery-council-runner.js.map +0 -1
- package/dist/src/product-loop/discovery-detection.js.map +0 -1
- package/dist/src/product-loop/discovery-ecosystem.js.map +0 -1
- package/dist/src/product-loop/discovery-interview.js.map +0 -1
- package/dist/src/product-loop/discovery-migrations.js.map +0 -1
- package/dist/src/product-loop/discovery-persistence.js.map +0 -1
- package/dist/src/product-loop/discovery-prompt-parser.js.map +0 -1
- package/dist/src/product-loop/discovery-recommender.js.map +0 -1
- package/dist/src/product-loop/discovery-schema.js.map +0 -1
- package/dist/src/product-loop/done-gate.js.map +0 -1
- package/dist/src/product-loop/feedback-routing.js.map +0 -1
- package/dist/src/product-loop/gather.js.map +0 -1
- package/dist/src/product-loop/index.js.map +0 -1
- package/dist/src/product-loop/loop-driver.js.map +0 -1
- package/dist/src/product-loop/phase-budget.js.map +0 -1
- package/dist/src/product-loop/phase-plan.js.map +0 -1
- package/dist/src/product-loop/phase-rituals.js.map +0 -1
- package/dist/src/product-loop/phase-runner.js.map +0 -1
- package/dist/src/product-loop/phase-tracker-bridge.js.map +0 -1
- package/dist/src/product-loop/product-identity.js.map +0 -1
- package/dist/src/product-loop/progress-snapshot.js.map +0 -1
- package/dist/src/product-loop/reality-anchor.js.map +0 -1
- package/dist/src/product-loop/repo-audit.js.map +0 -1
- package/dist/src/product-loop/repo-brief.js.map +0 -1
- package/dist/src/product-loop/role-memory.js.map +0 -1
- package/dist/src/product-loop/role-registry.js.map +0 -1
- package/dist/src/product-loop/seed-questions.js.map +0 -1
- package/dist/src/product-loop/ship-polish.js.map +0 -1
- package/dist/src/product-loop/sprint-planner.js.map +0 -1
- package/dist/src/product-loop/sprint-runner.js.map +0 -1
- package/dist/src/product-loop/sprint-self-verify.js.map +0 -1
- package/dist/src/product-loop/sprint-store.js.map +0 -1
- package/dist/src/product-loop/stakeholder-acl.js.map +0 -1
- package/dist/src/product-loop/typed-artifacts.js.map +0 -1
- package/dist/src/product-loop/types.js.map +0 -1
- package/dist/src/product-loop/verify-failure-tracking.js.map +0 -1
- package/dist/src/product-loop/verify-result.js.map +0 -1
- package/dist/src/providers/__test-utils__/load-fixture.js.map +0 -1
- package/dist/src/providers/__tests__/adapter-oauth-wiring.test.js.map +0 -1
- package/dist/src/providers/__tests__/capabilities-cosmetic.test.js.map +0 -1
- package/dist/src/providers/__tests__/capabilities-flags.test.js.map +0 -1
- package/dist/src/providers/__tests__/capabilities-provider-options.test.js.map +0 -1
- package/dist/src/providers/__tests__/capabilities-sanitize.test.js.map +0 -1
- package/dist/src/providers/__tests__/capabilities.test.js.map +0 -1
- package/dist/src/providers/__tests__/provider-coverage.test.js.map +0 -1
- package/dist/src/providers/__tests__/reasoning-roundtrip.test.js.map +0 -1
- package/dist/src/providers/__tests__/runtime-integration.test.js.map +0 -1
- package/dist/src/providers/__tests__/runtime.test.js.map +0 -1
- package/dist/src/providers/__tests__/siliconflow-sse-repair.test.js.map +0 -1
- package/dist/src/providers/__tests__/strategies-registry.test.js.map +0 -1
- package/dist/src/providers/__tests__/strategies-resolve.test.js.map +0 -1
- package/dist/src/providers/__tests__/wire-debug.test.js.map +0 -1
- package/dist/src/providers/adapter.js.map +0 -1
- package/dist/src/providers/adapter.test.js.map +0 -1
- package/dist/src/providers/anthropic.js.map +0 -1
- package/dist/src/providers/auth/__tests__/browser-flow.test.js.map +0 -1
- package/dist/src/providers/auth/__tests__/device-flow.test.js.map +0 -1
- package/dist/src/providers/auth/__tests__/gemini-oauth.test.js.map +0 -1
- package/dist/src/providers/auth/__tests__/grok-oauth.test.js.map +0 -1
- package/dist/src/providers/auth/__tests__/openai-oauth.test.js.map +0 -1
- package/dist/src/providers/auth/__tests__/token-store.test.js.map +0 -1
- package/dist/src/providers/auth/browser-flow.js.map +0 -1
- package/dist/src/providers/auth/device-flow.js.map +0 -1
- package/dist/src/providers/auth/gemini-oauth.js.map +0 -1
- package/dist/src/providers/auth/grok-oauth.js.map +0 -1
- package/dist/src/providers/auth/openai-oauth.js.map +0 -1
- package/dist/src/providers/auth/registry.js.map +0 -1
- package/dist/src/providers/auth/token-store.js.map +0 -1
- package/dist/src/providers/auth/types.js.map +0 -1
- package/dist/src/providers/capabilities.js.map +0 -1
- package/dist/src/providers/endpoints.js.map +0 -1
- package/dist/src/providers/errors.js.map +0 -1
- package/dist/src/providers/errors.test.js.map +0 -1
- package/dist/src/providers/gemini.js.map +0 -1
- package/dist/src/providers/gemini.test.js.map +0 -1
- package/dist/src/providers/index.js.map +0 -1
- package/dist/src/providers/keychain.js.map +0 -1
- package/dist/src/providers/keychain.test.js.map +0 -1
- package/dist/src/providers/mcp-vision-bridge.js.map +0 -1
- package/dist/src/providers/mcp-vision-bridge.test.js.map +0 -1
- package/dist/src/providers/ollama.js.map +0 -1
- package/dist/src/providers/ollama.test.js.map +0 -1
- package/dist/src/providers/openai-compatible.js.map +0 -1
- package/dist/src/providers/openai-compatible.test.js.map +0 -1
- package/dist/src/providers/openai.js.map +0 -1
- package/dist/src/providers/openai.test.js.map +0 -1
- package/dist/src/providers/patch-zod-schema.js.map +0 -1
- package/dist/src/providers/pricing.js.map +0 -1
- package/dist/src/providers/pricing.test.js.map +0 -1
- package/dist/src/providers/prompt-cache-key.spec.js.map +0 -1
- package/dist/src/providers/runtime-mock.spec.js.map +0 -1
- package/dist/src/providers/runtime.js.map +0 -1
- package/dist/src/providers/siliconflow-sse-repair.js.map +0 -1
- package/dist/src/providers/strategies/anthropic.strategy.js.map +0 -1
- package/dist/src/providers/strategies/base.strategy.js.map +0 -1
- package/dist/src/providers/strategies/deepseek.strategy.js.map +0 -1
- package/dist/src/providers/strategies/google.strategy.js.map +0 -1
- package/dist/src/providers/strategies/ollama.strategy.js.map +0 -1
- package/dist/src/providers/strategies/openai.strategy.js.map +0 -1
- package/dist/src/providers/strategies/registry.js.map +0 -1
- package/dist/src/providers/strategies/siliconflow.strategy.js.map +0 -1
- package/dist/src/providers/strategies/xai.strategy.js.map +0 -1
- package/dist/src/providers/stream-loop.js.map +0 -1
- package/dist/src/providers/types.js.map +0 -1
- package/dist/src/providers/vision-proxy.js.map +0 -1
- package/dist/src/providers/vision-proxy.test.js.map +0 -1
- package/dist/src/providers/wire-debug.js.map +0 -1
- package/dist/src/reporter/__tests__/acl-check.test.js.map +0 -1
- package/dist/src/reporter/__tests__/auto-fire.test.js.map +0 -1
- package/dist/src/reporter/__tests__/budget.test.js.map +0 -1
- package/dist/src/reporter/__tests__/handlers.test.js.map +0 -1
- package/dist/src/reporter/__tests__/query-router.test.js.map +0 -1
- package/dist/src/reporter/acl-check.js.map +0 -1
- package/dist/src/reporter/auto-fire.js.map +0 -1
- package/dist/src/reporter/budget.js.map +0 -1
- package/dist/src/reporter/handlers.js.map +0 -1
- package/dist/src/reporter/index.js.map +0 -1
- package/dist/src/reporter/query-router.js.map +0 -1
- package/dist/src/router/__tests__/step-router.test.js.map +0 -1
- package/dist/src/router/classifier/grammars.js.map +0 -1
- package/dist/src/router/classifier/index.js.map +0 -1
- package/dist/src/router/classifier/index.test.js.map +0 -1
- package/dist/src/router/classifier/regex.js.map +0 -1
- package/dist/src/router/classifier/regex.test.js.map +0 -1
- package/dist/src/router/classifier/tree-sitter.js.map +0 -1
- package/dist/src/router/classifier/tree-sitter.test.js.map +0 -1
- package/dist/src/router/cold.js.map +0 -1
- package/dist/src/router/cold.test.js.map +0 -1
- package/dist/src/router/decide.js.map +0 -1
- package/dist/src/router/decide.test.js.map +0 -1
- package/dist/src/router/health.js.map +0 -1
- package/dist/src/router/health.test.js.map +0 -1
- package/dist/src/router/provider-sentinel.js.map +0 -1
- package/dist/src/router/provider-sentinel.test.js.map +0 -1
- package/dist/src/router/role-override.test.js.map +0 -1
- package/dist/src/router/step-router.js.map +0 -1
- package/dist/src/router/store.js.map +0 -1
- package/dist/src/router/types.js.map +0 -1
- package/dist/src/router/warm.js.map +0 -1
- package/dist/src/router/warm.test.js.map +0 -1
- package/dist/src/scaffold/__tests__/continuation-prompt.test.js.map +0 -1
- package/dist/src/scaffold/__tests__/continue-as-council.spec.js.map +0 -1
- package/dist/src/scaffold/__tests__/dotnet-assembly-name.test.js.map +0 -1
- package/dist/src/scaffold/__tests__/fe-scaffold-contents.test.js.map +0 -1
- package/dist/src/scaffold/__tests__/init-new.smoke.spec.js.map +0 -1
- package/dist/src/scaffold/__tests__/init-new.spec.js.map +0 -1
- package/dist/src/scaffold/__tests__/install-bb-templates.spec.js.map +0 -1
- package/dist/src/scaffold/__tests__/point-to-existing.spec.js.map +0 -1
- package/dist/src/scaffold/bb-ecosystem-apply.js.map +0 -1
- package/dist/src/scaffold/bb-quality-gate.js.map +0 -1
- package/dist/src/scaffold/continuation-prompt.js.map +0 -1
- package/dist/src/scaffold/continue-as-council.js.map +0 -1
- package/dist/src/scaffold/init-new.js.map +0 -1
- package/dist/src/scaffold/point-to-existing.js.map +0 -1
- package/dist/src/scaffold/resume-from-gate-failures.js.map +0 -1
- package/dist/src/self-qa/__tests__/agentic-context.test.js.map +0 -1
- package/dist/src/self-qa/__tests__/agentic-loop.test.js.map +0 -1
- package/dist/src/self-qa/__tests__/delta-encoder.test.js.map +0 -1
- package/dist/src/self-qa/__tests__/judge.test.js.map +0 -1
- package/dist/src/self-qa/__tests__/scenario-planner.test.js.map +0 -1
- package/dist/src/self-qa/__tests__/spec-emitter.test.js.map +0 -1
- package/dist/src/self-qa/agentic-context.js.map +0 -1
- package/dist/src/self-qa/agentic-loop.js.map +0 -1
- package/dist/src/self-qa/delta-encoder.js.map +0 -1
- package/dist/src/self-qa/index.js.map +0 -1
- package/dist/src/self-qa/judge.js.map +0 -1
- package/dist/src/self-qa/orchestrator.js.map +0 -1
- package/dist/src/self-qa/scenario-planner.js.map +0 -1
- package/dist/src/self-qa/spec-emitter.js.map +0 -1
- package/dist/src/self-qa/types.js.map +0 -1
- package/dist/src/storage/__tests__/migrations.test.js.map +0 -1
- package/dist/src/storage/__tests__/sweep-stale-pending.test.js.map +0 -1
- package/dist/src/storage/__tests__/ui-interaction-log.test.js.map +0 -1
- package/dist/src/storage/atomic-io.js.map +0 -1
- package/dist/src/storage/atomic-io.test.js.map +0 -1
- package/dist/src/storage/config.js.map +0 -1
- package/dist/src/storage/config.test.js.map +0 -1
- package/dist/src/storage/db.js.map +0 -1
- package/dist/src/storage/index.js.map +0 -1
- package/dist/src/storage/interaction-log.js.map +0 -1
- package/dist/src/storage/migrations.js.map +0 -1
- package/dist/src/storage/session-dir.js.map +0 -1
- package/dist/src/storage/sessions.js.map +0 -1
- package/dist/src/storage/tool-results.js.map +0 -1
- package/dist/src/storage/transcript-response-entry.test.js.map +0 -1
- package/dist/src/storage/transcript-view.js.map +0 -1
- package/dist/src/storage/transcript.js.map +0 -1
- package/dist/src/storage/transcript.test.js.map +0 -1
- package/dist/src/storage/ui-interaction-log.js.map +0 -1
- package/dist/src/storage/usage-cap.js.map +0 -1
- package/dist/src/storage/usage-cap.test.js.map +0 -1
- package/dist/src/storage/usage.js.map +0 -1
- package/dist/src/storage/workspaces.js.map +0 -1
- package/dist/src/tools/__tests__/vision-gate.test.js.map +0 -1
- package/dist/src/tools/bash-output-cache.js.map +0 -1
- package/dist/src/tools/bash-output-cache.test.js.map +0 -1
- package/dist/src/tools/bash-output-integration.test.js.map +0 -1
- package/dist/src/tools/bash.js.map +0 -1
- package/dist/src/tools/bash.test.js.map +0 -1
- package/dist/src/tools/computer.js.map +0 -1
- package/dist/src/tools/computer.test.js.map +0 -1
- package/dist/src/tools/file-tracker.js.map +0 -1
- package/dist/src/tools/file-tracker.test.js.map +0 -1
- package/dist/src/tools/file.js.map +0 -1
- package/dist/src/tools/file.test.js.map +0 -1
- package/dist/src/tools/grep.js.map +0 -1
- package/dist/src/tools/registry-bash-empty-command.test.js.map +0 -1
- package/dist/src/tools/registry-bash-footer.test.js.map +0 -1
- package/dist/src/tools/registry-ee-query.test.js.map +0 -1
- package/dist/src/tools/registry-session-repeat.test.js.map +0 -1
- package/dist/src/tools/registry.js.map +0 -1
- package/dist/src/tools/registry.test.js.map +0 -1
- package/dist/src/tools/schedule.js.map +0 -1
- package/dist/src/tools/schedule.test.js.map +0 -1
- package/dist/src/tools/todo-write-snapshot.js.map +0 -1
- package/dist/src/tools/todo-write-snapshot.test.js.map +0 -1
- package/dist/src/tools/vision-gate.js.map +0 -1
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/ui/__tests__/picker-providers.test.js.map +0 -1
- package/dist/src/ui/agents-modal.js.map +0 -1
- package/dist/src/ui/app.js.map +0 -1
- package/dist/src/ui/cards/__tests__/product-status-card.test.js.map +0 -1
- package/dist/src/ui/cards/product-status-card.js.map +0 -1
- package/dist/src/ui/components/SuggestionOverlay.js.map +0 -1
- package/dist/src/ui/components/Toast.js.map +0 -1
- package/dist/src/ui/components/__tests__/council-leader-bubble.test.js.map +0 -1
- package/dist/src/ui/components/__tests__/council-message-bubble.test.js.map +0 -1
- package/dist/src/ui/components/__tests__/council-phase-timeline.test.js.map +0 -1
- package/dist/src/ui/components/__tests__/council-placeholder-bubble.test.js.map +0 -1
- package/dist/src/ui/components/__tests__/council-question-card.test.js.map +0 -1
- package/dist/src/ui/components/__tests__/council-synthesis-banner.test.js.map +0 -1
- package/dist/src/ui/components/__tests__/task-list-panel.test.js.map +0 -1
- package/dist/src/ui/components/__tests__/use-pair-quote-buffer.test.js.map +0 -1
- package/dist/src/ui/components/btw-overlay.js.map +0 -1
- package/dist/src/ui/components/bubble-layout.js.map +0 -1
- package/dist/src/ui/components/code-block-truncate.js.map +0 -1
- package/dist/src/ui/components/copy-flash-banner.js.map +0 -1
- package/dist/src/ui/components/council-info-card.js.map +0 -1
- package/dist/src/ui/components/council-leader-bubble.js.map +0 -1
- package/dist/src/ui/components/council-message-bubble.js.map +0 -1
- package/dist/src/ui/components/council-phase-timeline.js.map +0 -1
- package/dist/src/ui/components/council-placeholder-bubble.js.map +0 -1
- package/dist/src/ui/components/council-question-card.js.map +0 -1
- package/dist/src/ui/components/council-status-list.js.map +0 -1
- package/dist/src/ui/components/council-synthesis-banner.js.map +0 -1
- package/dist/src/ui/components/diff-view.js.map +0 -1
- package/dist/src/ui/components/halt-recovery-card.js.map +0 -1
- package/dist/src/ui/components/hero-logo.js.map +0 -1
- package/dist/src/ui/components/init-new-form-card.js.map +0 -1
- package/dist/src/ui/components/lsp-views.js.map +0 -1
- package/dist/src/ui/components/media-views.js.map +0 -1
- package/dist/src/ui/components/message-view.js.map +0 -1
- package/dist/src/ui/components/point-to-existing-form-card.js.map +0 -1
- package/dist/src/ui/components/prompt-box.js.map +0 -1
- package/dist/src/ui/components/role-palette.js.map +0 -1
- package/dist/src/ui/components/session-header.js.map +0 -1
- package/dist/src/ui/components/slash-inline-menu.js.map +0 -1
- package/dist/src/ui/components/structured-response-view.js.map +0 -1
- package/dist/src/ui/components/task-list-panel.js.map +0 -1
- package/dist/src/ui/components/tool-group.js.map +0 -1
- package/dist/src/ui/components/tool-result-views.js.map +0 -1
- package/dist/src/ui/components/use-pair-quote-buffer.js.map +0 -1
- package/dist/src/ui/constants.js.map +0 -1
- package/dist/src/ui/hooks/use-agent-editor.js.map +0 -1
- package/dist/src/ui/hooks/use-mcp-editor.js.map +0 -1
- package/dist/src/ui/hooks/use-model-picker.js.map +0 -1
- package/dist/src/ui/hooks/useTypeahead.js.map +0 -1
- package/dist/src/ui/markdown.js.map +0 -1
- package/dist/src/ui/mcp-modal-types.js.map +0 -1
- package/dist/src/ui/mcp-modal.js.map +0 -1
- package/dist/src/ui/modals/api-key-modal.js.map +0 -1
- package/dist/src/ui/modals/connect-modal.js.map +0 -1
- package/dist/src/ui/modals/model-picker-modal.js.map +0 -1
- package/dist/src/ui/modals/sandbox-picker-modal.js.map +0 -1
- package/dist/src/ui/modals/update-modal.js.map +0 -1
- package/dist/src/ui/modals/wallet-picker-modal.js.map +0 -1
- package/dist/src/ui/picker-providers.js.map +0 -1
- package/dist/src/ui/plan.js.map +0 -1
- package/dist/src/ui/schedule-modal.js.map +0 -1
- package/dist/src/ui/slash/__tests__/clear.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/compact.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/cost.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/discuss.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/execute.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/expand.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/ideal.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/menu-parity.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/optimize.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/pin.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/plan.test.js.map +0 -1
- package/dist/src/ui/slash/__tests__/status-render.test.js.map +0 -1
- package/dist/src/ui/slash/clear.js.map +0 -1
- package/dist/src/ui/slash/compact.js.map +0 -1
- package/dist/src/ui/slash/cost.js.map +0 -1
- package/dist/src/ui/slash/council-inspect.js.map +0 -1
- package/dist/src/ui/slash/council.js.map +0 -1
- package/dist/src/ui/slash/debug.js.map +0 -1
- package/dist/src/ui/slash/discuss.js.map +0 -1
- package/dist/src/ui/slash/ee.js.map +0 -1
- package/dist/src/ui/slash/execute.js.map +0 -1
- package/dist/src/ui/slash/expand.js.map +0 -1
- package/dist/src/ui/slash/export.js.map +0 -1
- package/dist/src/ui/slash/ideal.js.map +0 -1
- package/dist/src/ui/slash/menu-items.js.map +0 -1
- package/dist/src/ui/slash/optimize.js.map +0 -1
- package/dist/src/ui/slash/pin.js.map +0 -1
- package/dist/src/ui/slash/plan.js.map +0 -1
- package/dist/src/ui/slash/registry.js.map +0 -1
- package/dist/src/ui/slash/route.js.map +0 -1
- package/dist/src/ui/slash/route.test.js.map +0 -1
- package/dist/src/ui/slash/status.js.map +0 -1
- package/dist/src/ui/state/active-run.js.map +0 -1
- package/dist/src/ui/status-bar/index.js.map +0 -1
- package/dist/src/ui/status-bar/index.test.js.map +0 -1
- package/dist/src/ui/status-bar/store.js.map +0 -1
- package/dist/src/ui/status-bar/store.test.js.map +0 -1
- package/dist/src/ui/status-bar/tier-badge.js.map +0 -1
- package/dist/src/ui/status-bar/tier-badge.test.js.map +0 -1
- package/dist/src/ui/status-bar/usd-meter.js.map +0 -1
- package/dist/src/ui/status-bar/usd-meter.test.js.map +0 -1
- package/dist/src/ui/syntax-highlight.js.map +0 -1
- package/dist/src/ui/terminal-selection-text.js.map +0 -1
- package/dist/src/ui/theme.js.map +0 -1
- package/dist/src/ui/types.js.map +0 -1
- package/dist/src/ui/utils/__tests__/format.test.js.map +0 -1
- package/dist/src/ui/utils/__tests__/tools.test.js.map +0 -1
- package/dist/src/ui/utils/color.js.map +0 -1
- package/dist/src/ui/utils/format.js.map +0 -1
- package/dist/src/ui/utils/modal.js.map +0 -1
- package/dist/src/ui/utils/text.js.map +0 -1
- package/dist/src/ui/utils/tools.js.map +0 -1
- package/dist/src/usage/__tests__/product-ledger.test.js.map +0 -1
- package/dist/src/usage/cost-log.js.map +0 -1
- package/dist/src/usage/decision-log.js.map +0 -1
- package/dist/src/usage/downgrade.js.map +0 -1
- package/dist/src/usage/downgrade.test.js.map +0 -1
- package/dist/src/usage/estimator.js.map +0 -1
- package/dist/src/usage/estimator.test.js.map +0 -1
- package/dist/src/usage/ledger.js.map +0 -1
- package/dist/src/usage/ledger.test.js.map +0 -1
- package/dist/src/usage/midstream.js.map +0 -1
- package/dist/src/usage/midstream.test.js.map +0 -1
- package/dist/src/usage/product-ledger.js.map +0 -1
- package/dist/src/usage/thresholds.js.map +0 -1
- package/dist/src/usage/thresholds.test.js.map +0 -1
- package/dist/src/usage/types.js.map +0 -1
- package/dist/src/utils/__tests__/auto-council-settings.test.js.map +0 -1
- package/dist/src/utils/__tests__/ee-logger.test.js.map +0 -1
- package/dist/src/utils/__tests__/file-lock.test.js.map +0 -1
- package/dist/src/utils/__tests__/llm-deadline.test.js.map +0 -1
- package/dist/src/utils/__tests__/rate-limit.test.js.map +0 -1
- package/dist/src/utils/__tests__/settings-disabled-models.test.js.map +0 -1
- package/dist/src/utils/__tests__/settings-web-research.test.js.map +0 -1
- package/dist/src/utils/__tests__/slugify.test.js.map +0 -1
- package/dist/src/utils/__tests__/visible-retry.test.js.map +0 -1
- package/dist/src/utils/at-mentions.js.map +0 -1
- package/dist/src/utils/clipboard-image.js.map +0 -1
- package/dist/src/utils/ee-logger.js.map +0 -1
- package/dist/src/utils/file-index.js.map +0 -1
- package/dist/src/utils/file-lock.js.map +0 -1
- package/dist/src/utils/git-root.js.map +0 -1
- package/dist/src/utils/host-clipboard.js.map +0 -1
- package/dist/src/utils/install-manager.js.map +0 -1
- package/dist/src/utils/install-manager.test.js.map +0 -1
- package/dist/src/utils/instructions.js.map +0 -1
- package/dist/src/utils/instructions.test.js.map +0 -1
- package/dist/src/utils/llm-deadline.js.map +0 -1
- package/dist/src/utils/permission-mode.js.map +0 -1
- package/dist/src/utils/permission-mode.test.js.map +0 -1
- package/dist/src/utils/rate-limit.js.map +0 -1
- package/dist/src/utils/redactor.js.map +0 -1
- package/dist/src/utils/redactor.test.js.map +0 -1
- package/dist/src/utils/settings.js.map +0 -1
- package/dist/src/utils/settings.test.js.map +0 -1
- package/dist/src/utils/shell.js.map +0 -1
- package/dist/src/utils/shell.test.js.map +0 -1
- package/dist/src/utils/side-question.js.map +0 -1
- package/dist/src/utils/skills.js.map +0 -1
- package/dist/src/utils/skills.test.js.map +0 -1
- package/dist/src/utils/slugify.js.map +0 -1
- package/dist/src/utils/subagent-display.js.map +0 -1
- package/dist/src/utils/subagent-display.test.js.map +0 -1
- package/dist/src/utils/subagents-settings.test.js.map +0 -1
- package/dist/src/utils/telegram-audio-settings.test.js.map +0 -1
- package/dist/src/utils/update-checker.js.map +0 -1
- package/dist/src/utils/update-checker.test.js.map +0 -1
- package/dist/src/utils/visible-retry.js.map +0 -1
- package/dist/src/verify/__tests__/coverage-parsers.test.js.map +0 -1
- package/dist/src/verify/__tests__/dotnet-recipe.test.js.map +0 -1
- package/dist/src/verify/checkpoint.js.map +0 -1
- package/dist/src/verify/checkpoint.test.js.map +0 -1
- package/dist/src/verify/coverage-parsers.js.map +0 -1
- package/dist/src/verify/entrypoint.js.map +0 -1
- package/dist/src/verify/entrypoint.test.js.map +0 -1
- package/dist/src/verify/environment.js.map +0 -1
- package/dist/src/verify/environment.test.js.map +0 -1
- package/dist/src/verify/evidence.js.map +0 -1
- package/dist/src/verify/orchestrator.js.map +0 -1
- package/dist/src/verify/orchestrator.test.js.map +0 -1
- package/dist/src/verify/recipes.js.map +0 -1
- package/dist/src/verify/retry.js.map +0 -1
- package/dist/src/verify/runtime-prep.test.js.map +0 -1
- package/src/__test-helpers__/catalog-fixtures.ts +0 -57
- package/src/__test-stubs__/ee-server.ts +0 -173
- package/src/__test-stubs__/vitest-setup.ts +0 -36
- package/src/__tests__/council/bubble-layout.test.ts +0 -45
- package/src/__tests__/council/code-block-truncate.test.ts +0 -50
- package/src/__tests__/council/role-palette.test.ts +0 -66
- package/src/__tests__/first-run-wizard.test.ts +0 -9
- package/src/agent-harness/__tests__/cli-flags.spec.ts +0 -35
- package/src/agent-harness/__tests__/driver.spec.ts +0 -154
- package/src/agent-harness/__tests__/idle.spec.ts +0 -90
- package/src/agent-harness/__tests__/mock-llm.spec.ts +0 -126
- package/src/agent-harness/__tests__/mock-model.spec.ts +0 -195
- package/src/agent-harness/__tests__/predicate.spec.ts +0 -33
- package/src/agent-harness/__tests__/protocol.spec.ts +0 -62
- package/src/agent-harness/__tests__/schema.spec.ts +0 -81
- package/src/agent-harness/__tests__/selector.spec.ts +0 -82
- package/src/agent-harness/__tests__/sidechannel.spec.ts +0 -40
- package/src/agent-harness/__tests__/spec-helpers.spec.ts +0 -76
- package/src/agent-harness/index.ts +0 -24
- package/src/agent-harness/mock-model.ts +0 -445
- package/src/agent-harness/test-spawn.ts +0 -221
- package/src/billing/index.ts +0 -5
- package/src/bun-sqlite.d.ts +0 -15
- package/src/chat/__tests__/broadcast-bus.test.ts +0 -90
- package/src/chat/__tests__/channel-manager.test.ts +0 -149
- package/src/chat/__tests__/client.test.ts +0 -118
- package/src/chat/__tests__/discord-integration.test.ts +0 -162
- package/src/chat/__tests__/intent-prompt.test.ts +0 -92
- package/src/chat/__tests__/verdict-resolver.test.ts +0 -336
- package/src/chat/broadcast-bus.ts +0 -53
- package/src/chat/channel-manager.ts +0 -146
- package/src/chat/chat-keychain.ts +0 -137
- package/src/chat/factory.ts +0 -37
- package/src/chat/intent-prompt.ts +0 -72
- package/src/chat/providers/discord/client.ts +0 -91
- package/src/chat/types.ts +0 -42
- package/src/chat/verdict-constants.ts +0 -26
- package/src/chat/verdict-resolver.ts +0 -231
- package/src/cli/__tests__/bw-vault.test.ts +0 -97
- package/src/cli/__tests__/keys-bundle.test.ts +0 -46
- package/src/cli/__tests__/share-cmd.test.ts +0 -197
- package/src/cli/bw-vault.ts +0 -184
- package/src/cli/config/__tests__/model-picker.test.ts +0 -59
- package/src/cli/config/__tests__/provider-fetch.test.ts +0 -38
- package/src/cli/config/index.ts +0 -112
- package/src/cli/config/model-picker.ts +0 -193
- package/src/cli/config/provider-fetch.ts +0 -75
- package/src/cli/config/screen-council.ts +0 -245
- package/src/cli/config/screen-models.ts +0 -104
- package/src/cli/config/screen-providers.ts +0 -197
- package/src/cli/config/tui.ts +0 -153
- package/src/cli/cost-forensics.test.ts +0 -273
- package/src/cli/cost-forensics.ts +0 -337
- package/src/cli/keys-bundle.ts +0 -91
- package/src/cli/keys.test.ts +0 -104
- package/src/cli/keys.ts +0 -816
- package/src/cli/pil-report.ts +0 -202
- package/src/cli/reporter-cmd.ts +0 -154
- package/src/cli/share-cmd.ts +0 -132
- package/src/cli/usage-report.ts +0 -398
- package/src/cloud/index.ts +0 -5
- package/src/council/__tests__/accounting.test.ts +0 -72
- package/src/council/__tests__/audit-replay.test.ts +0 -344
- package/src/council/__tests__/clarifier-max-rounds.test.ts +0 -90
- package/src/council/__tests__/clarifier-options.test.ts +0 -63
- package/src/council/__tests__/clarifier-ready-gate.test.ts +0 -268
- package/src/council/__tests__/cost-aware.test.ts +0 -60
- package/src/council/__tests__/debate-planner-structured.test.ts +0 -236
- package/src/council/__tests__/decisions-lock.test.ts +0 -404
- package/src/council/__tests__/evaluator-metrics.test.ts +0 -513
- package/src/council/__tests__/parse-outcome-fallback.test.ts +0 -125
- package/src/council/__tests__/research-tools.test.ts +0 -239
- package/src/council/__tests__/round-tools.test.ts +0 -334
- package/src/council/__tests__/tool-trace.test.ts +0 -152
- package/src/council/__tests__/types-contract.test.ts +0 -88
- package/src/council/clarifier.ts +0 -507
- package/src/council/context.ts +0 -249
- package/src/council/debate-planner.ts +0 -303
- package/src/council/debate.ts +0 -1179
- package/src/council/decisions-lock.ts +0 -312
- package/src/council/executor.ts +0 -27
- package/src/council/index.ts +0 -956
- package/src/council/leader.ts +0 -281
- package/src/council/llm.ts +0 -939
- package/src/council/phase-events.ts +0 -64
- package/src/council/planner.ts +0 -303
- package/src/council/preflight.ts +0 -86
- package/src/council/prompts.ts +0 -698
- package/src/council/types.ts +0 -304
- package/src/daemon/scheduler.test.ts +0 -128
- package/src/daemon/scheduler.ts +0 -152
- package/src/ee/.gitkeep +0 -0
- package/src/ee/__tests__/bb-design.test.ts +0 -223
- package/src/ee/__tests__/export-transcripts.test.ts +0 -222
- package/src/ee/__tests__/pil-context-bridge.test.ts +0 -59
- package/src/ee/__tests__/pipeline.integration.test.ts +0 -193
- package/src/ee/__tests__/recall-format.test.ts +0 -66
- package/src/ee/__tests__/recall-ledger.test.ts +0 -55
- package/src/ee/__tests__/render-sink-wiring.test.ts +0 -89
- package/src/ee/auth.test.ts +0 -76
- package/src/ee/auth.ts +0 -80
- package/src/ee/bb-design.ts +0 -284
- package/src/ee/bb-retrieval.ts +0 -467
- package/src/ee/bridge.test.ts +0 -283
- package/src/ee/bridge.ts +0 -443
- package/src/ee/client-mode.ts +0 -161
- package/src/ee/client.test.ts +0 -201
- package/src/ee/client.ts +0 -683
- package/src/ee/council-bridge.ts +0 -89
- package/src/ee/embedding-cache.ts +0 -42
- package/src/ee/export-transcripts.ts +0 -160
- package/src/ee/extract-session.test.ts +0 -231
- package/src/ee/extract-session.ts +0 -71
- package/src/ee/health.ts +0 -83
- package/src/ee/index.ts +0 -33
- package/src/ee/intercept.test.ts +0 -197
- package/src/ee/intercept.ts +0 -168
- package/src/ee/judge.test.ts +0 -213
- package/src/ee/judge.ts +0 -126
- package/src/ee/mistake-detector.test.ts +0 -252
- package/src/ee/mistake-detector.ts +0 -297
- package/src/ee/offline-queue.test.ts +0 -302
- package/src/ee/offline-queue.ts +0 -205
- package/src/ee/phase-outcome.test.ts +0 -107
- package/src/ee/phase-outcome.ts +0 -165
- package/src/ee/phase-tracker.test.ts +0 -175
- package/src/ee/phase-tracker.ts +0 -180
- package/src/ee/posttool.test.ts +0 -81
- package/src/ee/posttool.ts +0 -16
- package/src/ee/prompt-stale.test.ts +0 -92
- package/src/ee/prompt-stale.ts +0 -39
- package/src/ee/recall-ledger.ts +0 -71
- package/src/ee/recall-mirror.test.ts +0 -74
- package/src/ee/render.test.ts +0 -74
- package/src/ee/render.ts +0 -68
- package/src/ee/scope.test.ts +0 -112
- package/src/ee/scope.ts +0 -93
- package/src/ee/search.ts +0 -259
- package/src/ee/session-trajectory.test.ts +0 -139
- package/src/ee/session-trajectory.ts +0 -226
- package/src/ee/tenant.ts +0 -14
- package/src/ee/touch.test.ts +0 -73
- package/src/ee/transcript-emit.ts +0 -174
- package/src/ee/types.ts +0 -432
- package/src/flow/.gitkeep +0 -0
- package/src/flow/__tests__/migration.test.ts +0 -133
- package/src/flow/__tests__/parser.test.ts +0 -77
- package/src/flow/__tests__/run-manager-product.test.ts +0 -59
- package/src/flow/__tests__/run-manager.test.ts +0 -95
- package/src/flow/__tests__/scaffold-checkpoint.test.ts +0 -113
- package/src/flow/__tests__/scaffold.test.ts +0 -57
- package/src/flow/__tests__/warning-persist.test.ts +0 -112
- package/src/flow/artifact-io.ts +0 -41
- package/src/flow/compaction/__tests__/compress.test.ts +0 -69
- package/src/flow/compaction/__tests__/extract.test.ts +0 -74
- package/src/flow/compaction/__tests__/preserve.test.ts +0 -69
- package/src/flow/compaction/compress.ts +0 -67
- package/src/flow/compaction/extract.ts +0 -60
- package/src/flow/compaction/index.ts +0 -86
- package/src/flow/compaction/preserve.ts +0 -48
- package/src/flow/index.ts +0 -18
- package/src/flow/migration.ts +0 -139
- package/src/flow/parser.ts +0 -78
- package/src/flow/run-manager.ts +0 -162
- package/src/flow/scaffold-checkpoint.ts +0 -132
- package/src/flow/scaffold.ts +0 -52
- package/src/flow/warning-persist.ts +0 -84
- package/src/generated/version.ts +0 -5
- package/src/gsd/.gitkeep +0 -0
- package/src/gsd/__tests__/complexity.test.ts +0 -0
- package/src/gsd/__tests__/directives.test.ts +0 -88
- package/src/gsd/__tests__/gray-areas.test.ts +0 -33
- package/src/gsd/__tests__/types.test.ts +0 -91
- package/src/gsd/complexity.ts +0 -124
- package/src/gsd/directives.ts +0 -141
- package/src/gsd/gray-areas.ts +0 -144
- package/src/gsd/index.ts +0 -1
- package/src/gsd/types.ts +0 -63
- package/src/headless/__tests__/council-answers.test.ts +0 -300
- package/src/headless/council-answers.ts +0 -152
- package/src/headless/output.test.ts +0 -201
- package/src/headless/output.ts +0 -312
- package/src/hooks/config.ts +0 -41
- package/src/hooks/index.ts +0 -569
- package/src/hooks/types.ts +0 -263
- package/src/index.ts +0 -1762
- package/src/lsp/builtins.test.ts +0 -129
- package/src/lsp/builtins.ts +0 -453
- package/src/lsp/client.ts +0 -342
- package/src/lsp/manager.test.ts +0 -198
- package/src/lsp/manager.ts +0 -343
- package/src/lsp/npm-cache.test.ts +0 -70
- package/src/lsp/npm-cache.ts +0 -111
- package/src/lsp/runtime.ts +0 -70
- package/src/lsp/smoke.test.ts +0 -74
- package/src/lsp/types.ts +0 -119
- package/src/maintain/__tests__/codebase-intel.test.ts +0 -320
- package/src/maintain/__tests__/gh-create-pr.test.ts +0 -195
- package/src/maintain/__tests__/pr-builder.test.ts +0 -282
- package/src/maintain/__tests__/repo-map.test.ts +0 -128
- package/src/maintain/__tests__/task-runner.test.ts +0 -347
- package/src/maintain/codebase-intel.ts +0 -595
- package/src/maintain/gh-create-pr.ts +0 -148
- package/src/maintain/index.ts +0 -14
- package/src/maintain/pr-builder.ts +0 -373
- package/src/maintain/repo-map.ts +0 -205
- package/src/maintain/task-runner.ts +0 -481
- package/src/maintain/types.ts +0 -49
- package/src/mcp/__tests__/auto-setup.test.ts +0 -88
- package/src/mcp/__tests__/cap-tool-result.test.ts +0 -65
- package/src/mcp/__tests__/ee-tools.test.ts +0 -248
- package/src/mcp/__tests__/forensics-tools.test.ts +0 -66
- package/src/mcp/__tests__/harness-driver-action-tools.spec.ts +0 -116
- package/src/mcp/__tests__/harness-driver-async-tools.spec.ts +0 -129
- package/src/mcp/__tests__/harness-driver-read-tools.spec.ts +0 -140
- package/src/mcp/__tests__/harness-driver-security.spec.ts +0 -69
- package/src/mcp/__tests__/harness-driver.spec.ts +0 -21
- package/src/mcp/__tests__/lazy-schema.spec.ts +0 -173
- package/src/mcp/__tests__/lsp-tools.test.ts +0 -72
- package/src/mcp/__tests__/mcp-keychain.test.ts +0 -46
- package/src/mcp/__tests__/research-onboarding.test.ts +0 -163
- package/src/mcp/__tests__/runtime-hydration.test.ts +0 -86
- package/src/mcp/__tests__/runtime-output-cap.test.ts +0 -49
- package/src/mcp/__tests__/runtime-sanitize.test.ts +0 -44
- package/src/mcp/__tests__/self-verify-jobs.test.ts +0 -102
- package/src/mcp/__tests__/smart-filter.test.ts +0 -139
- package/src/mcp/__tests__/tools-server.smoke.test.ts +0 -41
- package/src/mcp/auto-setup.ts +0 -99
- package/src/mcp/cap-tool-result.ts +0 -68
- package/src/mcp/catalog.ts +0 -155
- package/src/mcp/ee-tools.ts +0 -204
- package/src/mcp/forensics-tools.ts +0 -65
- package/src/mcp/lsp-tools.ts +0 -78
- package/src/mcp/mcp-keychain.ts +0 -85
- package/src/mcp/oauth-callback.ts +0 -75
- package/src/mcp/oauth-provider.ts +0 -128
- package/src/mcp/opentui-spawn.ts +0 -64
- package/src/mcp/parse-headers.test.ts +0 -54
- package/src/mcp/parse-headers.ts +0 -35
- package/src/mcp/research-onboarding.ts +0 -143
- package/src/mcp/runtime.ts +0 -182
- package/src/mcp/self-verify-jobs.ts +0 -137
- package/src/mcp/smart-filter.ts +0 -138
- package/src/mcp/smoke.test.ts +0 -170
- package/src/mcp/tools-server.ts +0 -174
- package/src/mcp/validate.ts +0 -48
- package/src/models/__tests__/registry.test.ts +0 -95
- package/src/models/catalog-client.ts +0 -234
- package/src/models/catalog-gemini.test.ts +0 -52
- package/src/models/catalog-url.test.ts +0 -27
- package/src/models/catalog-validation.test.ts +0 -74
- package/src/models/catalog.README.md +0 -136
- package/src/models/catalog.json +0 -349
- package/src/models/classify-tier.ts +0 -48
- package/src/models/index.ts +0 -9
- package/src/models/registry.ts +0 -87
- package/src/ops/__tests__/doctor-council-mcp.test.ts +0 -161
- package/src/ops/__tests__/doctor-ee-health.test.ts +0 -129
- package/src/ops/bug-report.test.ts +0 -172
- package/src/ops/bug-report.ts +0 -80
- package/src/ops/doctor.test.ts +0 -108
- package/src/ops/doctor.ts +0 -366
- package/src/orchestrator/__tests__/agent-base-url-switch.test.ts +0 -87
- package/src/orchestrator/__tests__/batch-turn-runner.test.ts +0 -186
- package/src/orchestrator/__tests__/council-manager.test.ts +0 -171
- package/src/orchestrator/__tests__/cross-turn-dedup.test.ts +0 -201
- package/src/orchestrator/__tests__/current-call-id.test.ts +0 -160
- package/src/orchestrator/__tests__/error-forensics.test.ts +0 -99
- package/src/orchestrator/__tests__/flow-resume.test.ts +0 -71
- package/src/orchestrator/__tests__/humanize-api-error.test.ts +0 -74
- package/src/orchestrator/__tests__/message-processor.test.ts +0 -201
- package/src/orchestrator/__tests__/message-write-ahead.test.ts +0 -170
- package/src/orchestrator/__tests__/read-path-budget.test.ts +0 -170
- package/src/orchestrator/__tests__/retry-classifier.test.ts +0 -131
- package/src/orchestrator/__tests__/retry-stream.test.ts +0 -186
- package/src/orchestrator/__tests__/route-feedback.test.ts +0 -55
- package/src/orchestrator/__tests__/stream-runner.test.ts +0 -201
- package/src/orchestrator/__tests__/sub-agent-model-tier.test.ts +0 -53
- package/src/orchestrator/__tests__/usage-events-shape.test.ts +0 -80
- package/src/orchestrator/__tests__/usage-normalizer-c1.test.ts +0 -172
- package/src/orchestrator/__tests__/usage-shape-threading.test.ts +0 -111
- package/src/orchestrator/__tests__/write-ahead.test.ts +0 -162
- package/src/orchestrator/abort.test.ts +0 -37
- package/src/orchestrator/abort.ts +0 -51
- package/src/orchestrator/agent-options.ts +0 -167
- package/src/orchestrator/agent.test.ts +0 -191
- package/src/orchestrator/batch-turn-runner.ts +0 -425
- package/src/orchestrator/batch-utils.ts +0 -340
- package/src/orchestrator/cleanup.test.ts +0 -86
- package/src/orchestrator/compaction.test.ts +0 -200
- package/src/orchestrator/compaction.ts +0 -626
- package/src/orchestrator/council-manager.ts +0 -572
- package/src/orchestrator/cross-turn-dedup.ts +0 -208
- package/src/orchestrator/delegations.test.ts +0 -145
- package/src/orchestrator/delegations.ts +0 -370
- package/src/orchestrator/error-utils.ts +0 -165
- package/src/orchestrator/flow-resume.ts +0 -54
- package/src/orchestrator/grounding-check.test.ts +0 -111
- package/src/orchestrator/grounding-check.ts +0 -138
- package/src/orchestrator/interrupted-turn.test.ts +0 -39
- package/src/orchestrator/interrupted-turn.ts +0 -27
- package/src/orchestrator/message-processor.ts +0 -3364
- package/src/orchestrator/message-seq.test.ts +0 -29
- package/src/orchestrator/message-seq.ts +0 -19
- package/src/orchestrator/orchestrator.ts +0 -2752
- package/src/orchestrator/pending-calls.test.ts +0 -226
- package/src/orchestrator/pending-calls.ts +0 -240
- package/src/orchestrator/prompts.ts +0 -579
- package/src/orchestrator/provider-options-shape.spec.ts +0 -67
- package/src/orchestrator/provider-options-shape.ts +0 -70
- package/src/orchestrator/read-path-budget.ts +0 -205
- package/src/orchestrator/reasoning.test.ts +0 -114
- package/src/orchestrator/reasoning.ts +0 -116
- package/src/orchestrator/repair-tool-call.ts +0 -54
- package/src/orchestrator/repetition-detector.test.ts +0 -127
- package/src/orchestrator/repetition-detector.ts +0 -140
- package/src/orchestrator/retry-classifier.ts +0 -140
- package/src/orchestrator/retry-stream.ts +0 -159
- package/src/orchestrator/sandbox.test.ts +0 -117
- package/src/orchestrator/scope-ceiling.test.ts +0 -215
- package/src/orchestrator/scope-ceiling.ts +0 -234
- package/src/orchestrator/scope-reminder.test.ts +0 -232
- package/src/orchestrator/scope-reminder.ts +0 -230
- package/src/orchestrator/stall-rescue.test.ts +0 -100
- package/src/orchestrator/stall-rescue.ts +0 -95
- package/src/orchestrator/stall-watchdog.test.ts +0 -83
- package/src/orchestrator/stall-watchdog.ts +0 -87
- package/src/orchestrator/stream-runner.ts +0 -939
- package/src/orchestrator/sub-agent-cap.test.ts +0 -227
- package/src/orchestrator/sub-agent-cap.ts +0 -240
- package/src/orchestrator/sub-agent-model-tier.ts +0 -58
- package/src/orchestrator/subagent-compactor.spec.ts +0 -332
- package/src/orchestrator/subagent-compactor.ts +0 -456
- package/src/orchestrator/text-tool-call-detector.test.ts +0 -99
- package/src/orchestrator/text-tool-call-detector.ts +0 -200
- package/src/orchestrator/token-counter.test.ts +0 -69
- package/src/orchestrator/token-counter.ts +0 -81
- package/src/orchestrator/tool-args-hash.test.ts +0 -121
- package/src/orchestrator/tool-args-hash.ts +0 -221
- package/src/orchestrator/tool-args-repair.test.ts +0 -156
- package/src/orchestrator/tool-args-repair.ts +0 -227
- package/src/orchestrator/tool-loop-cap.test.ts +0 -193
- package/src/orchestrator/tool-loop-cap.ts +0 -174
- package/src/orchestrator/tool-repetition-detector.test.ts +0 -119
- package/src/orchestrator/tool-repetition-detector.ts +0 -0
- package/src/orchestrator/tool-utils.ts +0 -214
- package/src/orchestrator/turn-runner-deps.ts +0 -85
- package/src/pil/__tests__/budget.test.ts +0 -39
- package/src/pil/__tests__/clarity-gate.test.ts +0 -299
- package/src/pil/__tests__/config.test.ts +0 -78
- package/src/pil/__tests__/discovery-cache.test.ts +0 -45
- package/src/pil/__tests__/discovery-types.test.ts +0 -68
- package/src/pil/__tests__/discovery.test.ts +0 -141
- package/src/pil/__tests__/dual-run.test.ts +0 -53
- package/src/pil/__tests__/layer1-intent-trace.test.ts +0 -142
- package/src/pil/__tests__/layer1-intent.test.ts +0 -365
- package/src/pil/__tests__/layer15-context-scan.test.ts +0 -76
- package/src/pil/__tests__/layer16-clarity.test.ts +0 -184
- package/src/pil/__tests__/layer17-feasibility.test.ts +0 -42
- package/src/pil/__tests__/layer18-acceptance.test.ts +0 -116
- package/src/pil/__tests__/layer2-personality.test.ts +0 -63
- package/src/pil/__tests__/layer3-ee-injection.test.ts +0 -189
- package/src/pil/__tests__/layer3-injected-chunk.test.ts +0 -122
- package/src/pil/__tests__/layer4-gsd.test.ts +0 -109
- package/src/pil/__tests__/layer5-context.test.ts +0 -157
- package/src/pil/__tests__/layer6-output.test.ts +0 -362
- package/src/pil/__tests__/llm-classify.test.ts +0 -140
- package/src/pil/__tests__/native-capabilities-workbook.test.ts +0 -45
- package/src/pil/__tests__/ollama-classify.test.ts +0 -81
- package/src/pil/__tests__/orchestrator-integration.test.ts +0 -107
- package/src/pil/__tests__/pipeline.test.ts +0 -191
- package/src/pil/__tests__/renderer-coverage.test.ts +0 -46
- package/src/pil/__tests__/response-tools.test.ts +0 -239
- package/src/pil/__tests__/schema.test.ts +0 -233
- package/src/pil/__tests__/scoreComplexity.test.ts +0 -134
- package/src/pil/__tests__/scoreSufficiency.test.ts +0 -104
- package/src/pil/__tests__/store.test.ts +0 -49
- package/src/pil/__tests__/task-tier-map.test.ts +0 -41
- package/src/pil/agent-operating-contract.test.ts +0 -84
- package/src/pil/agent-operating-contract.ts +0 -70
- package/src/pil/budget-log.ts +0 -86
- package/src/pil/budget.ts +0 -18
- package/src/pil/cheap-model-playbook.test.ts +0 -191
- package/src/pil/cheap-model-playbook.ts +0 -153
- package/src/pil/cheap-model-workbooks.test.ts +0 -154
- package/src/pil/cheap-model-workbooks.ts +0 -109
- package/src/pil/clarity-gate.ts +0 -188
- package/src/pil/config.ts +0 -25
- package/src/pil/discovery-cache.ts +0 -20
- package/src/pil/discovery-types.ts +0 -97
- package/src/pil/discovery.ts +0 -397
- package/src/pil/index.ts +0 -24
- package/src/pil/layer1-intent.test.ts +0 -520
- package/src/pil/layer1-intent.ts +0 -1236
- package/src/pil/layer15-context-scan.ts +0 -159
- package/src/pil/layer16-clarity.test.ts +0 -35
- package/src/pil/layer16-clarity.ts +0 -417
- package/src/pil/layer17-feasibility.ts +0 -40
- package/src/pil/layer18-acceptance.ts +0 -98
- package/src/pil/layer1_5-complexity-size.test.ts +0 -279
- package/src/pil/layer1_5-complexity-size.ts +0 -175
- package/src/pil/layer2-personality.ts +0 -46
- package/src/pil/layer3-ee-injection.ts +0 -406
- package/src/pil/layer4-gsd.ts +0 -124
- package/src/pil/layer5-context.ts +0 -171
- package/src/pil/layer6-output.ts +0 -364
- package/src/pil/llm-classify.ts +0 -199
- package/src/pil/native-capabilities-workbook.ts +0 -124
- package/src/pil/ollama-classify.ts +0 -49
- package/src/pil/pipeline.ts +0 -313
- package/src/pil/response-tools.ts +0 -187
- package/src/pil/schema.ts +0 -111
- package/src/pil/session-state.test.ts +0 -88
- package/src/pil/session-state.ts +0 -157
- package/src/pil/store.ts +0 -29
- package/src/pil/task-tier-map.ts +0 -97
- package/src/pil/timeout.ts +0 -10
- package/src/pil/types.ts +0 -168
- package/src/product-loop/__tests__/artifact-io.test.ts +0 -97
- package/src/product-loop/__tests__/assumption-ledger.test.ts +0 -292
- package/src/product-loop/__tests__/backlog-builder.test.ts +0 -200
- package/src/product-loop/__tests__/backlog-store.test.ts +0 -119
- package/src/product-loop/__tests__/cb2-retry-bonus.test.ts +0 -182
- package/src/product-loop/__tests__/circuit-breakers-coverage.test.ts +0 -82
- package/src/product-loop/__tests__/circuit-breakers.test.ts +0 -90
- package/src/product-loop/__tests__/complexity-routing.spec.ts +0 -315
- package/src/product-loop/__tests__/context-policy.test.ts +0 -280
- package/src/product-loop/__tests__/cost-preview.test.ts +0 -118
- package/src/product-loop/__tests__/cost-scoper.test.ts +0 -76
- package/src/product-loop/__tests__/cross-run-memory.test.ts +0 -195
- package/src/product-loop/__tests__/design-output.spec.ts +0 -39
- package/src/product-loop/__tests__/discover.test.ts +0 -98
- package/src/product-loop/__tests__/discovery-context-format.test.ts +0 -111
- package/src/product-loop/__tests__/discovery-council-runner.test.ts +0 -13
- package/src/product-loop/__tests__/discovery-detection.test.ts +0 -180
- package/src/product-loop/__tests__/discovery-ecosystem.test.ts +0 -246
- package/src/product-loop/__tests__/discovery-integration.test.ts +0 -133
- package/src/product-loop/__tests__/discovery-interview.test.ts +0 -305
- package/src/product-loop/__tests__/discovery-migrations.test.ts +0 -75
- package/src/product-loop/__tests__/discovery-persistence.test.ts +0 -171
- package/src/product-loop/__tests__/discovery-prompt-parser.test.ts +0 -77
- package/src/product-loop/__tests__/discovery-prompt-specificity.test.ts +0 -65
- package/src/product-loop/__tests__/discovery-recommender-ecosystem.test.ts +0 -192
- package/src/product-loop/__tests__/discovery-recommender.test.ts +0 -382
- package/src/product-loop/__tests__/discovery-schema.test.ts +0 -102
- package/src/product-loop/__tests__/done-gate-coverage.test.ts +0 -151
- package/src/product-loop/__tests__/done-gate.test.ts +0 -140
- package/src/product-loop/__tests__/ee-extract-wiring.test.ts +0 -222
- package/src/product-loop/__tests__/extract-to-ee.test.ts +0 -205
- package/src/product-loop/__tests__/feedback-routing.test.ts +0 -93
- package/src/product-loop/__tests__/gather-selectable-alts.test.ts +0 -119
- package/src/product-loop/__tests__/hot-path.spec.ts +0 -177
- package/src/product-loop/__tests__/integration.test.ts +0 -350
- package/src/product-loop/__tests__/loop-driver-audit.test.ts +0 -327
- package/src/product-loop/__tests__/loop-driver.test.ts +0 -253
- package/src/product-loop/__tests__/maintenance-task-synthesis.test.ts +0 -78
- package/src/product-loop/__tests__/phase-a1-a3-sprint-runner.test.ts +0 -315
- package/src/product-loop/__tests__/phase-a2-backlog-build.test.ts +0 -189
- package/src/product-loop/__tests__/phase-budget.test.ts +0 -172
- package/src/product-loop/__tests__/phase-orchestrator-integration.test.ts +0 -143
- package/src/product-loop/__tests__/phase-plan.test.ts +0 -241
- package/src/product-loop/__tests__/phase-rituals.test.ts +0 -205
- package/src/product-loop/__tests__/phase-runner.test.ts +0 -454
- package/src/product-loop/__tests__/phase-tracker-bridge.test.ts +0 -85
- package/src/product-loop/__tests__/pick-backend-stack.test.ts +0 -117
- package/src/product-loop/__tests__/product-identity.test.ts +0 -47
- package/src/product-loop/__tests__/progress-snapshot.test.ts +0 -180
- package/src/product-loop/__tests__/reality-anchor.test.ts +0 -58
- package/src/product-loop/__tests__/repo-audit.test.ts +0 -103
- package/src/product-loop/__tests__/repo-brief.test.ts +0 -155
- package/src/product-loop/__tests__/role-memory.test.ts +0 -70
- package/src/product-loop/__tests__/role-registry.test.ts +0 -235
- package/src/product-loop/__tests__/role-routing-ee.test.ts +0 -90
- package/src/product-loop/__tests__/route-decision-emit.test.ts +0 -258
- package/src/product-loop/__tests__/seed-questions.test.ts +0 -33
- package/src/product-loop/__tests__/ship-polish.test.ts +0 -109
- package/src/product-loop/__tests__/sprint-planner.test.ts +0 -166
- package/src/product-loop/__tests__/sprint-runner-backlog.test.ts +0 -248
- package/src/product-loop/__tests__/sprint-runner-emit.test.ts +0 -324
- package/src/product-loop/__tests__/sprint-runner-phase-chunks.test.ts +0 -220
- package/src/product-loop/__tests__/sprint-runner.test.ts +0 -501
- package/src/product-loop/__tests__/sprint-self-verify.test.ts +0 -77
- package/src/product-loop/__tests__/sprint-store.test.ts +0 -98
- package/src/product-loop/__tests__/stakeholder-acl.test.ts +0 -94
- package/src/product-loop/__tests__/state-md-ee-injections.test.ts +0 -229
- package/src/product-loop/__tests__/sufficiency-routing.spec.ts +0 -183
- package/src/product-loop/__tests__/typed-artifacts.test.ts +0 -259
- package/src/product-loop/__tests__/types.test.ts +0 -103
- package/src/product-loop/__tests__/verify-failure-threshold.test.ts +0 -178
- package/src/product-loop/__tests__/verify-failure-tracking.test.ts +0 -154
- package/src/product-loop/__tests__/verify-result.test.ts +0 -60
- package/src/product-loop/artifact-io.ts +0 -239
- package/src/product-loop/assumption-ledger.ts +0 -270
- package/src/product-loop/backlog-builder.ts +0 -253
- package/src/product-loop/backlog-store.ts +0 -62
- package/src/product-loop/circuit-breakers.ts +0 -76
- package/src/product-loop/context-policy.ts +0 -180
- package/src/product-loop/cost-preview.ts +0 -139
- package/src/product-loop/cost-scoper.ts +0 -49
- package/src/product-loop/cross-run-memory.ts +0 -450
- package/src/product-loop/design-output.ts +0 -24
- package/src/product-loop/discover.ts +0 -159
- package/src/product-loop/discovery-context-format.ts +0 -56
- package/src/product-loop/discovery-council-runner.ts +0 -78
- package/src/product-loop/discovery-detection.ts +0 -161
- package/src/product-loop/discovery-ecosystem.ts +0 -239
- package/src/product-loop/discovery-interview.ts +0 -288
- package/src/product-loop/discovery-migrations.ts +0 -40
- package/src/product-loop/discovery-persistence.ts +0 -219
- package/src/product-loop/discovery-prompt-parser.ts +0 -80
- package/src/product-loop/discovery-recommender.ts +0 -514
- package/src/product-loop/discovery-schema.ts +0 -143
- package/src/product-loop/done-gate.ts +0 -224
- package/src/product-loop/feedback-routing.ts +0 -82
- package/src/product-loop/gather.ts +0 -386
- package/src/product-loop/index.ts +0 -1855
- package/src/product-loop/loop-driver.ts +0 -900
- package/src/product-loop/phase-budget.ts +0 -182
- package/src/product-loop/phase-plan.ts +0 -158
- package/src/product-loop/phase-rituals.ts +0 -158
- package/src/product-loop/phase-runner.ts +0 -455
- package/src/product-loop/phase-tracker-bridge.ts +0 -60
- package/src/product-loop/product-identity.ts +0 -11
- package/src/product-loop/progress-snapshot.ts +0 -216
- package/src/product-loop/reality-anchor.ts +0 -45
- package/src/product-loop/repo-audit.ts +0 -314
- package/src/product-loop/repo-brief.ts +0 -235
- package/src/product-loop/role-memory.ts +0 -72
- package/src/product-loop/role-registry.ts +0 -175
- package/src/product-loop/seed-questions.ts +0 -51
- package/src/product-loop/ship-polish.ts +0 -164
- package/src/product-loop/sprint-planner.ts +0 -241
- package/src/product-loop/sprint-runner.ts +0 -801
- package/src/product-loop/sprint-self-verify.ts +0 -189
- package/src/product-loop/sprint-store.ts +0 -96
- package/src/product-loop/stakeholder-acl.ts +0 -82
- package/src/product-loop/typed-artifacts.ts +0 -332
- package/src/product-loop/types.ts +0 -570
- package/src/product-loop/verify-failure-tracking.ts +0 -225
- package/src/product-loop/verify-result.ts +0 -39
- package/src/providers/.gitkeep +0 -0
- package/src/providers/__test-utils__/load-fixture.ts +0 -36
- package/src/providers/__tests__/adapter-oauth-wiring.test.ts +0 -147
- package/src/providers/__tests__/capabilities-cosmetic.test.ts +0 -119
- package/src/providers/__tests__/capabilities-flags.test.ts +0 -166
- package/src/providers/__tests__/capabilities-provider-options.test.ts +0 -232
- package/src/providers/__tests__/capabilities-sanitize.test.ts +0 -66
- package/src/providers/__tests__/capabilities.test.ts +0 -44
- package/src/providers/__tests__/provider-coverage.test.ts +0 -48
- package/src/providers/__tests__/reasoning-roundtrip.test.ts +0 -150
- package/src/providers/__tests__/runtime-integration.test.ts +0 -106
- package/src/providers/__tests__/runtime.test.ts +0 -94
- package/src/providers/__tests__/siliconflow-sse-repair.test.ts +0 -300
- package/src/providers/__tests__/strategies-registry.test.ts +0 -55
- package/src/providers/__tests__/strategies-resolve.test.ts +0 -137
- package/src/providers/__tests__/wire-debug.test.ts +0 -42
- package/src/providers/adapter.test.ts +0 -21
- package/src/providers/adapter.ts +0 -156
- package/src/providers/anthropic.ts +0 -174
- package/src/providers/auth/__tests__/browser-flow.test.ts +0 -230
- package/src/providers/auth/__tests__/device-flow.test.ts +0 -263
- package/src/providers/auth/__tests__/gemini-oauth.test.ts +0 -387
- package/src/providers/auth/__tests__/grok-oauth.test.ts +0 -283
- package/src/providers/auth/__tests__/openai-oauth.test.ts +0 -378
- package/src/providers/auth/__tests__/token-store.test.ts +0 -152
- package/src/providers/auth/browser-flow.ts +0 -140
- package/src/providers/auth/device-flow.ts +0 -221
- package/src/providers/auth/gemini-oauth.ts +0 -351
- package/src/providers/auth/grok-oauth.ts +0 -406
- package/src/providers/auth/openai-oauth.ts +0 -455
- package/src/providers/auth/registry.ts +0 -138
- package/src/providers/auth/token-store.ts +0 -154
- package/src/providers/auth/types.ts +0 -111
- package/src/providers/capabilities.ts +0 -355
- package/src/providers/endpoints.ts +0 -68
- package/src/providers/errors.test.ts +0 -76
- package/src/providers/errors.ts +0 -46
- package/src/providers/gemini.test.ts +0 -46
- package/src/providers/gemini.ts +0 -42
- package/src/providers/index.ts +0 -28
- package/src/providers/keychain.test.ts +0 -100
- package/src/providers/keychain.ts +0 -278
- package/src/providers/mcp-vision-bridge.test.ts +0 -513
- package/src/providers/mcp-vision-bridge.ts +0 -1020
- package/src/providers/ollama.test.ts +0 -46
- package/src/providers/ollama.ts +0 -36
- package/src/providers/openai-compatible.test.ts +0 -63
- package/src/providers/openai-compatible.ts +0 -62
- package/src/providers/openai.test.ts +0 -65
- package/src/providers/openai.ts +0 -56
- package/src/providers/patch-zod-schema.ts +0 -126
- package/src/providers/pricing.test.ts +0 -97
- package/src/providers/pricing.ts +0 -128
- package/src/providers/prompt-cache-key.spec.ts +0 -28
- package/src/providers/runtime-mock.spec.ts +0 -86
- package/src/providers/runtime.ts +0 -311
- package/src/providers/siliconflow-sse-repair.ts +0 -201
- package/src/providers/strategies/anthropic.strategy.ts +0 -25
- package/src/providers/strategies/base.strategy.ts +0 -76
- package/src/providers/strategies/deepseek.strategy.ts +0 -55
- package/src/providers/strategies/google.strategy.ts +0 -28
- package/src/providers/strategies/ollama.strategy.ts +0 -22
- package/src/providers/strategies/openai.strategy.ts +0 -55
- package/src/providers/strategies/registry.ts +0 -43
- package/src/providers/strategies/siliconflow.strategy.ts +0 -28
- package/src/providers/strategies/xai.strategy.ts +0 -33
- package/src/providers/stream-loop.ts +0 -83
- package/src/providers/types.ts +0 -145
- package/src/providers/vision-proxy.test.ts +0 -252
- package/src/providers/vision-proxy.ts +0 -317
- package/src/providers/wire-debug.ts +0 -163
- package/src/reporter/__tests__/acl-check.test.ts +0 -71
- package/src/reporter/__tests__/auto-fire.test.ts +0 -161
- package/src/reporter/__tests__/budget.test.ts +0 -74
- package/src/reporter/__tests__/handlers.test.ts +0 -192
- package/src/reporter/__tests__/query-router.test.ts +0 -115
- package/src/reporter/acl-check.ts +0 -54
- package/src/reporter/auto-fire.ts +0 -168
- package/src/reporter/budget.ts +0 -59
- package/src/reporter/handlers.ts +0 -212
- package/src/reporter/index.ts +0 -210
- package/src/reporter/query-router.ts +0 -51
- package/src/router/.gitkeep +0 -0
- package/src/router/__tests__/step-router.test.ts +0 -150
- package/src/router/classifier/grammars.ts +0 -17
- package/src/router/classifier/index.test.ts +0 -33
- package/src/router/classifier/index.ts +0 -21
- package/src/router/classifier/regex.test.ts +0 -51
- package/src/router/classifier/regex.ts +0 -160
- package/src/router/classifier/tree-sitter.test.ts +0 -26
- package/src/router/classifier/tree-sitter.ts +0 -87
- package/src/router/cold.test.ts +0 -62
- package/src/router/cold.ts +0 -27
- package/src/router/decide.test.ts +0 -209
- package/src/router/decide.ts +0 -509
- package/src/router/health.test.ts +0 -59
- package/src/router/health.ts +0 -49
- package/src/router/provider-sentinel.test.ts +0 -22
- package/src/router/provider-sentinel.ts +0 -20
- package/src/router/role-override.test.ts +0 -37
- package/src/router/step-router.ts +0 -194
- package/src/router/store.ts +0 -47
- package/src/router/types.ts +0 -20
- package/src/router/warm.test.ts +0 -234
- package/src/router/warm.ts +0 -93
- package/src/scaffold/__tests__/continuation-prompt.test.ts +0 -93
- package/src/scaffold/__tests__/continue-as-council.spec.ts +0 -122
- package/src/scaffold/__tests__/dotnet-assembly-name.test.ts +0 -28
- package/src/scaffold/__tests__/fe-scaffold-contents.test.ts +0 -127
- package/src/scaffold/__tests__/init-new.smoke.spec.ts +0 -99
- package/src/scaffold/__tests__/init-new.spec.ts +0 -450
- package/src/scaffold/__tests__/install-bb-templates.spec.ts +0 -86
- package/src/scaffold/__tests__/point-to-existing.spec.ts +0 -114
- package/src/scaffold/bb-ecosystem-apply.ts +0 -457
- package/src/scaffold/bb-quality-gate.ts +0 -287
- package/src/scaffold/continuation-prompt.ts +0 -80
- package/src/scaffold/continue-as-council.ts +0 -99
- package/src/scaffold/init-new.ts +0 -1691
- package/src/scaffold/point-to-existing.ts +0 -83
- package/src/scaffold/resume-from-gate-failures.ts +0 -167
- package/src/self-qa/__tests__/agentic-context.test.ts +0 -104
- package/src/self-qa/__tests__/agentic-loop.test.ts +0 -70
- package/src/self-qa/__tests__/delta-encoder.test.ts +0 -113
- package/src/self-qa/__tests__/judge.test.ts +0 -152
- package/src/self-qa/__tests__/scenario-planner.test.ts +0 -87
- package/src/self-qa/__tests__/spec-emitter.test.ts +0 -67
- package/src/self-qa/agentic-context.ts +0 -211
- package/src/self-qa/agentic-loop.ts +0 -590
- package/src/self-qa/delta-encoder.ts +0 -149
- package/src/self-qa/index.ts +0 -117
- package/src/self-qa/judge.ts +0 -248
- package/src/self-qa/orchestrator.ts +0 -269
- package/src/self-qa/scenario-planner.ts +0 -289
- package/src/self-qa/spec-emitter.ts +0 -152
- package/src/self-qa/types.ts +0 -98
- package/src/storage/__tests__/migrations.test.ts +0 -395
- package/src/storage/__tests__/sweep-stale-pending.test.ts +0 -112
- package/src/storage/__tests__/ui-interaction-log.test.ts +0 -136
- package/src/storage/atomic-io.test.ts +0 -92
- package/src/storage/atomic-io.ts +0 -160
- package/src/storage/config.test.ts +0 -33
- package/src/storage/config.ts +0 -53
- package/src/storage/db.ts +0 -184
- package/src/storage/index.ts +0 -26
- package/src/storage/interaction-log.ts +0 -126
- package/src/storage/migrations.ts +0 -205
- package/src/storage/session-dir.ts +0 -37
- package/src/storage/sessions.ts +0 -225
- package/src/storage/tool-results.ts +0 -56
- package/src/storage/transcript-response-entry.test.ts +0 -115
- package/src/storage/transcript-view.ts +0 -45
- package/src/storage/transcript.test.ts +0 -24
- package/src/storage/transcript.ts +0 -637
- package/src/storage/ui-interaction-log.ts +0 -170
- package/src/storage/usage-cap.test.ts +0 -59
- package/src/storage/usage-cap.ts +0 -81
- package/src/storage/usage.ts +0 -117
- package/src/storage/workspaces.ts +0 -84
- package/src/tools/__tests__/vision-gate.test.ts +0 -66
- package/src/tools/bash-output-cache.test.ts +0 -113
- package/src/tools/bash-output-cache.ts +0 -156
- package/src/tools/bash-output-integration.test.ts +0 -33
- package/src/tools/bash.test.ts +0 -447
- package/src/tools/bash.ts +0 -769
- package/src/tools/computer.test.ts +0 -187
- package/src/tools/computer.ts +0 -632
- package/src/tools/file-tracker.test.ts +0 -101
- package/src/tools/file-tracker.ts +0 -70
- package/src/tools/file.test.ts +0 -151
- package/src/tools/file.ts +0 -203
- package/src/tools/grep.ts +0 -187
- package/src/tools/registry-bash-empty-command.test.ts +0 -64
- package/src/tools/registry-bash-footer.test.ts +0 -95
- package/src/tools/registry-ee-query.test.ts +0 -57
- package/src/tools/registry-session-repeat.test.ts +0 -105
- package/src/tools/registry.test.ts +0 -38
- package/src/tools/registry.ts +0 -704
- package/src/tools/schedule.test.ts +0 -143
- package/src/tools/schedule.ts +0 -610
- package/src/tools/todo-write-snapshot.test.ts +0 -53
- package/src/tools/todo-write-snapshot.ts +0 -63
- package/src/tools/vision-gate.ts +0 -74
- package/src/types/index.ts +0 -550
- package/src/ui/__tests__/picker-providers.test.ts +0 -37
- package/src/ui/agents-modal.tsx +0 -293
- package/src/ui/app.tsx +0 -7084
- package/src/ui/cards/__tests__/product-status-card.test.ts +0 -30
- package/src/ui/cards/product-status-card.tsx +0 -117
- package/src/ui/components/SuggestionOverlay.tsx +0 -38
- package/src/ui/components/Toast.tsx +0 -100
- package/src/ui/components/__tests__/council-leader-bubble.test.ts +0 -16
- package/src/ui/components/__tests__/council-message-bubble.test.ts +0 -85
- package/src/ui/components/__tests__/council-phase-timeline.test.ts +0 -57
- package/src/ui/components/__tests__/council-placeholder-bubble.test.ts +0 -16
- package/src/ui/components/__tests__/council-question-card.test.ts +0 -133
- package/src/ui/components/__tests__/council-synthesis-banner.test.ts +0 -12
- package/src/ui/components/__tests__/task-list-panel.test.ts +0 -37
- package/src/ui/components/__tests__/use-pair-quote-buffer.test.ts +0 -41
- package/src/ui/components/btw-overlay.tsx +0 -66
- package/src/ui/components/bubble-layout.ts +0 -66
- package/src/ui/components/code-block-truncate.ts +0 -24
- package/src/ui/components/copy-flash-banner.tsx +0 -31
- package/src/ui/components/council-info-card.tsx +0 -44
- package/src/ui/components/council-leader-bubble.tsx +0 -40
- package/src/ui/components/council-message-bubble.tsx +0 -110
- package/src/ui/components/council-phase-timeline.tsx +0 -112
- package/src/ui/components/council-placeholder-bubble.tsx +0 -64
- package/src/ui/components/council-question-card.tsx +0 -256
- package/src/ui/components/council-status-list.tsx +0 -111
- package/src/ui/components/council-synthesis-banner.tsx +0 -36
- package/src/ui/components/diff-view.tsx +0 -225
- package/src/ui/components/halt-recovery-card.tsx +0 -84
- package/src/ui/components/hero-logo.tsx +0 -62
- package/src/ui/components/init-new-form-card.tsx +0 -470
- package/src/ui/components/lsp-views.tsx +0 -104
- package/src/ui/components/media-views.tsx +0 -66
- package/src/ui/components/message-view.tsx +0 -442
- package/src/ui/components/point-to-existing-form-card.tsx +0 -136
- package/src/ui/components/prompt-box.tsx +0 -306
- package/src/ui/components/role-palette.ts +0 -62
- package/src/ui/components/session-header.tsx +0 -68
- package/src/ui/components/slash-inline-menu.tsx +0 -63
- package/src/ui/components/structured-response-view.tsx +0 -191
- package/src/ui/components/task-list-panel.tsx +0 -127
- package/src/ui/components/tool-group.tsx +0 -129
- package/src/ui/components/tool-result-views.tsx +0 -258
- package/src/ui/components/use-pair-quote-buffer.ts +0 -23
- package/src/ui/constants.ts +0 -242
- package/src/ui/hooks/use-agent-editor.ts +0 -61
- package/src/ui/hooks/use-mcp-editor.ts +0 -39
- package/src/ui/hooks/use-model-picker.ts +0 -50
- package/src/ui/hooks/useTypeahead.ts +0 -160
- package/src/ui/markdown.tsx +0 -49
- package/src/ui/mcp-modal-types.ts +0 -33
- package/src/ui/mcp-modal.tsx +0 -484
- package/src/ui/modals/api-key-modal.tsx +0 -99
- package/src/ui/modals/connect-modal.tsx +0 -259
- package/src/ui/modals/model-picker-modal.tsx +0 -347
- package/src/ui/modals/sandbox-picker-modal.tsx +0 -99
- package/src/ui/modals/update-modal.tsx +0 -67
- package/src/ui/modals/wallet-picker-modal.tsx +0 -186
- package/src/ui/picker-providers.ts +0 -41
- package/src/ui/plan.tsx +0 -346
- package/src/ui/schedule-modal.tsx +0 -138
- package/src/ui/slash/__tests__/clear.test.ts +0 -86
- package/src/ui/slash/__tests__/compact.test.ts +0 -56
- package/src/ui/slash/__tests__/cost.test.ts +0 -62
- package/src/ui/slash/__tests__/discuss.test.ts +0 -101
- package/src/ui/slash/__tests__/execute.test.ts +0 -86
- package/src/ui/slash/__tests__/expand.test.ts +0 -86
- package/src/ui/slash/__tests__/ideal.test.ts +0 -182
- package/src/ui/slash/__tests__/menu-parity.test.ts +0 -44
- package/src/ui/slash/__tests__/optimize.test.ts +0 -155
- package/src/ui/slash/__tests__/pin.test.ts +0 -47
- package/src/ui/slash/__tests__/plan.test.ts +0 -98
- package/src/ui/slash/__tests__/status-render.test.ts +0 -82
- package/src/ui/slash/clear.ts +0 -89
- package/src/ui/slash/compact.ts +0 -46
- package/src/ui/slash/cost.ts +0 -63
- package/src/ui/slash/council-inspect.ts +0 -188
- package/src/ui/slash/council.ts +0 -30
- package/src/ui/slash/debug.ts +0 -153
- package/src/ui/slash/discuss.ts +0 -71
- package/src/ui/slash/ee.ts +0 -304
- package/src/ui/slash/execute.ts +0 -44
- package/src/ui/slash/expand.ts +0 -51
- package/src/ui/slash/export.ts +0 -309
- package/src/ui/slash/ideal.ts +0 -292
- package/src/ui/slash/menu-items.ts +0 -107
- package/src/ui/slash/optimize.ts +0 -47
- package/src/ui/slash/pin.ts +0 -41
- package/src/ui/slash/plan.ts +0 -62
- package/src/ui/slash/registry.ts +0 -47
- package/src/ui/slash/route.test.ts +0 -82
- package/src/ui/slash/route.ts +0 -43
- package/src/ui/slash/status.ts +0 -36
- package/src/ui/state/active-run.ts +0 -56
- package/src/ui/status-bar/index.test.tsx +0 -154
- package/src/ui/status-bar/index.tsx +0 -126
- package/src/ui/status-bar/store.test.ts +0 -131
- package/src/ui/status-bar/store.ts +0 -332
- package/src/ui/status-bar/tier-badge.test.tsx +0 -38
- package/src/ui/status-bar/tier-badge.tsx +0 -29
- package/src/ui/status-bar/usd-meter.test.tsx +0 -37
- package/src/ui/status-bar/usd-meter.tsx +0 -22
- package/src/ui/syntax-highlight.ts +0 -627
- package/src/ui/terminal-selection-text.ts +0 -72
- package/src/ui/theme.ts +0 -95
- package/src/ui/types.ts +0 -83
- package/src/ui/utils/__tests__/format.test.ts +0 -71
- package/src/ui/utils/__tests__/tools.test.ts +0 -57
- package/src/ui/utils/color.ts +0 -19
- package/src/ui/utils/format.ts +0 -133
- package/src/ui/utils/modal.ts +0 -9
- package/src/ui/utils/text.ts +0 -32
- package/src/ui/utils/tools.ts +0 -137
- package/src/usage/.gitkeep +0 -0
- package/src/usage/__tests__/product-ledger.test.ts +0 -86
- package/src/usage/cost-log.ts +0 -158
- package/src/usage/decision-log.ts +0 -86
- package/src/usage/downgrade.test.ts +0 -86
- package/src/usage/downgrade.ts +0 -88
- package/src/usage/estimator.test.ts +0 -43
- package/src/usage/estimator.ts +0 -58
- package/src/usage/ledger.test.ts +0 -200
- package/src/usage/ledger.ts +0 -253
- package/src/usage/midstream.test.ts +0 -55
- package/src/usage/midstream.ts +0 -51
- package/src/usage/product-ledger.ts +0 -119
- package/src/usage/thresholds.test.ts +0 -83
- package/src/usage/thresholds.ts +0 -74
- package/src/usage/types.ts +0 -41
- package/src/utils/__tests__/auto-council-settings.test.ts +0 -46
- package/src/utils/__tests__/ee-logger.test.ts +0 -197
- package/src/utils/__tests__/file-lock.test.ts +0 -74
- package/src/utils/__tests__/llm-deadline.test.ts +0 -64
- package/src/utils/__tests__/rate-limit.test.ts +0 -42
- package/src/utils/__tests__/settings-disabled-models.test.ts +0 -113
- package/src/utils/__tests__/settings-web-research.test.ts +0 -45
- package/src/utils/__tests__/slugify.test.ts +0 -45
- package/src/utils/__tests__/visible-retry.test.ts +0 -195
- package/src/utils/at-mentions.ts +0 -120
- package/src/utils/clipboard-image.ts +0 -139
- package/src/utils/ee-logger.ts +0 -163
- package/src/utils/file-index.ts +0 -152
- package/src/utils/file-lock.ts +0 -66
- package/src/utils/git-root.ts +0 -17
- package/src/utils/host-clipboard.ts +0 -68
- package/src/utils/install-manager.test.ts +0 -167
- package/src/utils/install-manager.ts +0 -429
- package/src/utils/instructions.test.ts +0 -112
- package/src/utils/instructions.ts +0 -149
- package/src/utils/llm-deadline.ts +0 -80
- package/src/utils/permission-mode.test.ts +0 -121
- package/src/utils/permission-mode.ts +0 -94
- package/src/utils/rate-limit.ts +0 -21
- package/src/utils/redactor.test.ts +0 -100
- package/src/utils/redactor.ts +0 -223
- package/src/utils/settings.test.ts +0 -181
- package/src/utils/settings.ts +0 -1163
- package/src/utils/shell.test.ts +0 -102
- package/src/utils/shell.ts +0 -204
- package/src/utils/side-question.ts +0 -39
- package/src/utils/skills.test.ts +0 -58
- package/src/utils/skills.ts +0 -207
- package/src/utils/slugify.ts +0 -9
- package/src/utils/subagent-display.test.ts +0 -23
- package/src/utils/subagent-display.ts +0 -11
- package/src/utils/subagents-settings.test.ts +0 -84
- package/src/utils/telegram-audio-settings.test.ts +0 -44
- package/src/utils/update-checker.test.ts +0 -182
- package/src/utils/update-checker.ts +0 -33
- package/src/utils/visible-retry.ts +0 -56
- package/src/verify/__tests__/coverage-parsers.test.ts +0 -86
- package/src/verify/__tests__/dotnet-recipe.test.ts +0 -88
- package/src/verify/checkpoint.test.ts +0 -186
- package/src/verify/checkpoint.ts +0 -239
- package/src/verify/coverage-parsers.ts +0 -76
- package/src/verify/entrypoint.test.ts +0 -293
- package/src/verify/entrypoint.ts +0 -495
- package/src/verify/environment.test.ts +0 -119
- package/src/verify/environment.ts +0 -115
- package/src/verify/evidence.ts +0 -104
- package/src/verify/orchestrator.test.ts +0 -159
- package/src/verify/orchestrator.ts +0 -129
- package/src/verify/recipes.ts +0 -592
- package/src/verify/retry.ts +0 -62
- package/src/verify/runtime-prep.test.ts +0 -47
- /package/dist/src/{pil/layer16-clarity.test.d.ts → council/__tests__/clarification-prompt.test.d.ts} +0 -0
package/src/pil/layer1-intent.ts
DELETED
|
@@ -1,1236 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* src/pil/layer1-intent.ts
|
|
3
|
-
*
|
|
4
|
-
* Layer 1: Intent detection.
|
|
5
|
-
* Pass 1 — classifier (regex + tree-sitter): maps all 14 possible reason strings to TaskType.
|
|
6
|
-
* Pass 2 — keyword fallback: catches debug/plan/documentation that classifier misses.
|
|
7
|
-
* Pass 3 — EE brain fallback via bridge.classifyViaBrain (replaces ollamaClassify).
|
|
8
|
-
* Populates taskType, confidence, and domain on PipelineContext.
|
|
9
|
-
* outputStyle is always null from Layer 1 — Layer 6 handles output style detection via bridge.
|
|
10
|
-
* Fail-open: any error returns ctx unchanged with applied=false.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { classifyViaBrain, pilContext } from "../ee/bridge.js";
|
|
14
|
-
import { classify } from "../router/classifier/index.js";
|
|
15
|
-
import { isUnifiedPilEnabled } from "./config.js";
|
|
16
|
-
import type { LlmClassifyFn } from "./llm-classify.js";
|
|
17
|
-
import type { BrainData, IntentDetectionTrace, OutputStyle, PipelineContext, TaskType } from "./types.js";
|
|
18
|
-
|
|
19
|
-
// ---------------------------------------------------------------------------
|
|
20
|
-
// P2: Complexity heuristic — pure, sync, no I/O
|
|
21
|
-
// ---------------------------------------------------------------------------
|
|
22
|
-
|
|
23
|
-
export interface ComplexityInput {
|
|
24
|
-
rawText: string;
|
|
25
|
-
taskType: string | null;
|
|
26
|
-
t0HitCount: number;
|
|
27
|
-
hasMaxSprintsOne: boolean;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface ComplexityOutput {
|
|
31
|
-
complexity: "low" | "medium" | "high";
|
|
32
|
-
score: number;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
/** File/path reference regex — matches common source-file extensions. */
|
|
36
|
-
const FILE_REF_RE = /[\w./-]+\.(ts|tsx|js|jsx|json|md|py|rs|go|cs)\b/gi;
|
|
37
|
-
|
|
38
|
-
/** Keywords that force a "low" complexity signal (additive score -3). */
|
|
39
|
-
const FORCE_LOW_RE = /\b(fix typo|rename|delete|format|lint|whitespace|comment only)\b/i;
|
|
40
|
-
|
|
41
|
-
/** Keywords that push toward "high" complexity (additive score +3). */
|
|
42
|
-
const FORCE_HIGH_RE =
|
|
43
|
-
/\b(architect|architecture|migrate|migration|refactor|design|platform|multi-tenant|microservic|distributed|scale)\b/i;
|
|
44
|
-
|
|
45
|
-
// ---------------------------------------------------------------------------
|
|
46
|
-
// Sufficiency heuristic — does the prompt carry enough context to skip Council?
|
|
47
|
-
// Inverted relative to complexity: vague/short prompts about ambiguous products
|
|
48
|
-
// (e.g. "todo app", "build a chat platform") MUST go through Council so AskCard
|
|
49
|
-
// can surface persona/MVP/architecture/verify questions before code is written.
|
|
50
|
-
// ---------------------------------------------------------------------------
|
|
51
|
-
|
|
52
|
-
export type SufficiencyMissing = "scope" | "target" | "intent";
|
|
53
|
-
|
|
54
|
-
export interface SufficiencyInput {
|
|
55
|
-
rawText: string;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
export interface SufficiencyOutput {
|
|
59
|
-
sufficient: boolean;
|
|
60
|
-
missing: readonly SufficiencyMissing[];
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/** Vague product/system nouns whose scope is undefined without follow-up Qs. */
|
|
64
|
-
const VAGUE_PRODUCT_RE = /\b(app|application|site|service|product|system|platform|tool|website|dashboard|portal)\b/i;
|
|
65
|
-
|
|
66
|
-
/** Concrete imperative verbs that pin the action to a specific change. */
|
|
67
|
-
const CONCRETE_VERB_RE =
|
|
68
|
-
/\b(fix|rename|delete|remove|add|move|extract|inline|format|lint|update|upgrade|bump|revert)\b/i;
|
|
69
|
-
|
|
70
|
-
/** Source-y nouns that imply a localized target even without a file path. */
|
|
71
|
-
const SCOPE_NOUN_RE = /\b(function|class|method|file|test|endpoint|component|module|package|hook|schema|migration)\b/i;
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Score whether a prompt has enough context for the hot-path to be safe.
|
|
75
|
-
*
|
|
76
|
-
* The router treats `!sufficient` as a forced-Council signal — empty AskCard
|
|
77
|
-
* answers are cheaper than scaffolding the wrong product. Returned `missing`
|
|
78
|
-
* categories drive the discovery seed prompts in the Council preflight.
|
|
79
|
-
*
|
|
80
|
-
* Categories:
|
|
81
|
-
* - "target": no file ref + no concrete verb → "fix what?", "rename what?"
|
|
82
|
-
* - "scope": vague product noun in a short prompt → persona/MVP/architecture
|
|
83
|
-
* - "intent": very short, no scope-noun, no file-ref → "create new / fix bug / refactor?"
|
|
84
|
-
*/
|
|
85
|
-
export function scoreSufficiency(input: SufficiencyInput): SufficiencyOutput {
|
|
86
|
-
const text = input.rawText ?? "";
|
|
87
|
-
const trimmed = text.trim();
|
|
88
|
-
const len = trimmed.length;
|
|
89
|
-
|
|
90
|
-
// Empty prompts are degenerate — caller catches them earlier, but be safe.
|
|
91
|
-
if (len === 0) {
|
|
92
|
-
return { sufficient: false, missing: ["intent", "target", "scope"] };
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
const hasFileRef = FILE_REF_RE.test(trimmed);
|
|
96
|
-
// Reset lastIndex for regex with /g flag so subsequent calls don't skip.
|
|
97
|
-
FILE_REF_RE.lastIndex = 0;
|
|
98
|
-
const hasConcreteVerb = CONCRETE_VERB_RE.test(trimmed);
|
|
99
|
-
const hasScopeNoun = SCOPE_NOUN_RE.test(trimmed);
|
|
100
|
-
const isVagueProduct = VAGUE_PRODUCT_RE.test(trimmed);
|
|
101
|
-
|
|
102
|
-
const missing: SufficiencyMissing[] = [];
|
|
103
|
-
|
|
104
|
-
// 1. target — what concrete thing are we changing?
|
|
105
|
-
// File ref OR concrete verb is enough to establish the target.
|
|
106
|
-
if (!hasFileRef && !hasConcreteVerb) missing.push("target");
|
|
107
|
-
|
|
108
|
-
// 2. scope — vague product noun in a short prompt means architecture unknown.
|
|
109
|
-
// Threshold 80 chars: long descriptions usually carry the scope themselves.
|
|
110
|
-
if (isVagueProduct && len < 80) missing.push("scope");
|
|
111
|
-
|
|
112
|
-
// 3. intent — too short to know what kind of task this is.
|
|
113
|
-
// Catches single-word prompts like "todo", "auth" that lack any verb/noun signal.
|
|
114
|
-
if (!hasScopeNoun && !hasFileRef && !hasConcreteVerb && len < 30) missing.push("intent");
|
|
115
|
-
|
|
116
|
-
return { sufficient: missing.length === 0, missing };
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* Score a prompt's complexity using cheap, purely local heuristics.
|
|
121
|
-
* Returns a bucketed label and the raw score so callers can log both.
|
|
122
|
-
*/
|
|
123
|
-
export function scoreComplexity(input: ComplexityInput): ComplexityOutput {
|
|
124
|
-
const { rawText, taskType, t0HitCount, hasMaxSprintsOne } = input;
|
|
125
|
-
let score = 0;
|
|
126
|
-
|
|
127
|
-
// Length signal
|
|
128
|
-
const len = rawText.length;
|
|
129
|
-
if (len > 500) score += 3;
|
|
130
|
-
else if (len > 200) score += 2;
|
|
131
|
-
else if (len > 50) score += 1;
|
|
132
|
-
// 0-50: +0
|
|
133
|
-
|
|
134
|
-
// File reference count signal
|
|
135
|
-
const fileRefs = (rawText.match(FILE_REF_RE) ?? []).length;
|
|
136
|
-
if (fileRefs >= 3) score += 2;
|
|
137
|
-
else if (fileRefs >= 1) score += 1;
|
|
138
|
-
|
|
139
|
-
// Keyword signals
|
|
140
|
-
if (FORCE_LOW_RE.test(rawText)) score -= 3;
|
|
141
|
-
if (FORCE_HIGH_RE.test(rawText)) score += 3;
|
|
142
|
-
|
|
143
|
-
// Context signals
|
|
144
|
-
if (hasMaxSprintsOne) score -= 2;
|
|
145
|
-
if (t0HitCount > 0) score -= 1;
|
|
146
|
-
if (taskType === "debug") score += 1;
|
|
147
|
-
|
|
148
|
-
// Bucket
|
|
149
|
-
let complexity: "low" | "medium" | "high";
|
|
150
|
-
if (score <= 2) complexity = "low";
|
|
151
|
-
else if (score <= 5) complexity = "medium";
|
|
152
|
-
else complexity = "high";
|
|
153
|
-
|
|
154
|
-
return { complexity, score };
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
// Maps every classifier reason string to a TaskType (or null for non-coding signals).
|
|
158
|
-
const REASON_TO_TASK_TYPE: Partial<Record<string, TaskType>> = {
|
|
159
|
-
"regex:refactor": "refactor",
|
|
160
|
-
"regex:edit": "generate",
|
|
161
|
-
"regex:create-file": "generate",
|
|
162
|
-
"regex:run-command": "analyze",
|
|
163
|
-
"regex:explain": "analyze",
|
|
164
|
-
"regex:search": "analyze",
|
|
165
|
-
"regex:install": "analyze",
|
|
166
|
-
// tree-sitter:* parses indicate code presence ONLY — no intent signal.
|
|
167
|
-
// Mapping these to "refactor" caused 4/5 baseline misclassifications
|
|
168
|
-
// (Phase 4, 4P-1). Leave undefined so Pass 2 keyword fallback decides.
|
|
169
|
-
"tree-sitter:typescript": undefined,
|
|
170
|
-
"tree-sitter:python": undefined,
|
|
171
|
-
"regex:read": "analyze",
|
|
172
|
-
"regex:git": "analyze",
|
|
173
|
-
"regex:short-message": "general",
|
|
174
|
-
"regex:design": "plan",
|
|
175
|
-
"regex:debug": "debug",
|
|
176
|
-
// no-match / error / cold / low-confidence → null (conversational passthrough)
|
|
177
|
-
"regex:no-match": undefined,
|
|
178
|
-
"tree-sitter:no-fenced-code": undefined,
|
|
179
|
-
"tree-sitter:cold": undefined,
|
|
180
|
-
"tree-sitter:typescript-parse-error": undefined,
|
|
181
|
-
"tree-sitter:python-parse-error": undefined,
|
|
182
|
-
"low-confidence": undefined,
|
|
183
|
-
};
|
|
184
|
-
|
|
185
|
-
/**
|
|
186
|
-
* Pass 0 — deterministic full-prompt overrides.
|
|
187
|
-
*
|
|
188
|
-
* Two narrow regexes that run BEFORE the local classifier and the LLM bridge.
|
|
189
|
-
* Each must match the ENTIRE trimmed prompt (anchored ^…$) so they never
|
|
190
|
-
* accidentally swallow embedded substrings like "ok let's refactor X".
|
|
191
|
-
*
|
|
192
|
-
* Rationale (Phase 5 BUG-B + BUG-D, evidenced by sha8-tagged pil rows):
|
|
193
|
-
* - "tiếp tục nhé" (12 chars, 3 words) bypassed Pass 2.5 hot-path chitchat
|
|
194
|
-
* short-circuit (<10 chars, ≤2 words gate) → fell into Pass 3 LLM bridge,
|
|
195
|
-
* which non-deterministically classified the same input as
|
|
196
|
-
* general/chitchat one turn and generate/task the next (session
|
|
197
|
-
* fc19b4daee20 seq 22 vs 24). Continuation phrases never carry a task —
|
|
198
|
-
* pin them to general/chitchat deterministically.
|
|
199
|
-
* - "optimize startup performance" classified as analyze (session
|
|
200
|
-
* 9c63a38197f3) once and generate (session 1bc27b79223c) the next time
|
|
201
|
-
* by the LLM bridge. Pass 2 keyword fallback had no pattern for
|
|
202
|
-
* optimization verbs, so the only signal was the LLM bridge — which
|
|
203
|
-
* drifted. The correct label is refactor (restructure existing code
|
|
204
|
-
* for performance). Pin it deterministically.
|
|
205
|
-
*
|
|
206
|
-
* When either pattern hits we short-circuit the whole layer1Intent flow
|
|
207
|
-
* by setting `passes0Hit` and skipping Pass 1-4 entirely. This eliminates
|
|
208
|
-
* the LLM round-trip cost on these high-frequency patterns and removes
|
|
209
|
-
* the nondeterminism source.
|
|
210
|
-
*/
|
|
211
|
-
const CONTINUATION_FULL_RE =
|
|
212
|
-
/^\s*(tiếp tục|tiep tuc|tiếp|tiep|continue|go on|keep going|proceed|next|carry on|được rồi|duoc roi|được|duoc|ok|okay|oke|yes|yeah|yep)(\s+(nhé|nha|nhe|please|then|now|đi|di))?\s*[.!?]?\s*$/i;
|
|
213
|
-
|
|
214
|
-
const PERF_REFACTOR_RE =
|
|
215
|
-
/\b(optimi[zs]e|optimi[zs]ation|speed\s*up|make\s+.+?\s+faster|run\s+faster|load\s+faster|throughput|latency|tối\s*ưu|toi\s*uu|tăng\s*tốc|tang\s*toc)\b/i;
|
|
216
|
-
|
|
217
|
-
// Phase 5 BUG-E (session f1a2a2a547db) — prompts like
|
|
218
|
-
// "improve test coverage cho src/X.ts (viết test cases, chạy test verify pass)"
|
|
219
|
-
// were classified `analyze` by Pass 1 (regex:read), conf=0.85, which then
|
|
220
|
-
// tripped the auto-council gate (analyze + conf>=0.85). The correct label is
|
|
221
|
-
// `generate` (writing new tests = creating code). Pin it deterministically
|
|
222
|
-
// BEFORE Pass 1 so the auto-council check sees taskType=generate.
|
|
223
|
-
//
|
|
224
|
-
// We require BOTH a coverage/test signal AND an action verb that means
|
|
225
|
-
// "produce tests" — bare "review the tests" stays as analyze.
|
|
226
|
-
const TEST_COVERAGE_TRIGGER_RE =
|
|
227
|
-
/\b(test\s*coverage|unit\s*test(?:s|ing)?|coverage|độ\s*phủ|do\s*phu)\b|\b(write|add|create|generate|scaffold|viết|viet|thêm|them|tạo|tao|sinh)\s+(?:new\s+)?(?:unit\s+)?test/i;
|
|
228
|
-
const TEST_GENERATE_VERB_RE =
|
|
229
|
-
/\b(write|add|create|generate|scaffold|implement|improve|tạo|tao|viết|viet|sinh|thêm|them|tăng|tang)\b/i;
|
|
230
|
-
|
|
231
|
-
/** Detect prompts asking to WRITE/ADD test cases — these are 'generate', not 'analyze'. */
|
|
232
|
-
export function isTestGenerationTask(raw: string): boolean {
|
|
233
|
-
const t = raw.trim();
|
|
234
|
-
if (!t) return false;
|
|
235
|
-
if (!TEST_COVERAGE_TRIGGER_RE.test(t)) return false;
|
|
236
|
-
if (!TEST_GENERATE_VERB_RE.test(t)) return false;
|
|
237
|
-
// Guard: pure review prompts (no production verb) stay analyze.
|
|
238
|
-
if (/^(review|inspect|read|đọc|doc|xem)\b/i.test(t) && !TEST_GENERATE_VERB_RE.test(t)) return false;
|
|
239
|
-
return true;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/** Detect optimization-verb prompts where refactor is the correct taskType. */
|
|
243
|
-
export function isPerformanceRefactor(raw: string): boolean {
|
|
244
|
-
const t = raw.trim();
|
|
245
|
-
if (!t) return false;
|
|
246
|
-
if (!PERF_REFACTOR_RE.test(t)) return false;
|
|
247
|
-
// Guard: if the prompt explicitly asks to ADD a new test/feature/file
|
|
248
|
-
// about performance, defer to the LLM bridge — those are 'generate'.
|
|
249
|
-
if (/\b(add|create|write|generate|scaffold|implement|tạo|tao|viết|viet|sinh|thêm|them)\b/i.test(t)) return false;
|
|
250
|
-
// Guard: explicit analyze verbs override (we want analyze, not refactor).
|
|
251
|
-
if (
|
|
252
|
-
/\b(explain|describe|why|how does|analy[sz]e|review|investigate|tại sao|tai sao|giải thích|giai thich)\b/i.test(t)
|
|
253
|
-
)
|
|
254
|
-
return false;
|
|
255
|
-
return true;
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
/** Detect short continuation prompts ("tiếp tục", "ok", "continue", …). */
|
|
259
|
-
export function isContinuationPhrase(raw: string): boolean {
|
|
260
|
-
const t = raw.trim();
|
|
261
|
-
if (!t || t.length > 40) return false;
|
|
262
|
-
return CONTINUATION_FULL_RE.test(t);
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
// Status / meta follow-up questions — "do you have it yet?", "are you done?",
|
|
266
|
-
// "bạn đã có plan chưa nhỉ". These ask ABOUT the state of work already produced
|
|
267
|
-
// earlier in the thread; they are NOT a request to start a fresh task.
|
|
268
|
-
//
|
|
269
|
-
// Session c6387d2c6e1b: after the agent produced a cleanup plan (respond_plan),
|
|
270
|
-
// the user asked "bạn đã có plan chưa nhỉ". Pass 2's `plan` keyword matched the
|
|
271
|
-
// word "plan" → taskType=plan, kind=task → the GSD "state a NEW 2-3 line plan +
|
|
272
|
-
// implement + verify" scaffold + a degenerate generic discovery scope
|
|
273
|
-
// ("Intent: plan: Step-by-step plan / Scope: project root") were injected. That
|
|
274
|
-
// overrode the conversational intent and the model went off-topic (asked about
|
|
275
|
-
// a plan for a different project) instead of answering "yes — here is the plan
|
|
276
|
-
// I just gave you". History was NOT compacted (compactions=0), so the prior
|
|
277
|
-
// plan was present; the defect was purely the misclassification + scaffold.
|
|
278
|
-
//
|
|
279
|
-
// Route these like a continuation → chitchat → answer from context, no scaffold.
|
|
280
|
-
//
|
|
281
|
-
// VI: anchored to the END so a trailing imperative ("…, nếu chưa thì sửa đi")
|
|
282
|
-
// cannot match — a pure status question ends with the interrogative marker
|
|
283
|
-
// "chưa" (optionally + rồi/nhỉ/vậy/ạ/punct), never with a directive verb.
|
|
284
|
-
// EN: yes/no question opening with an auxiliary and ending on a status word.
|
|
285
|
-
const STATUS_CHECK_VI_RE = /\bch[ưu]a\b\s*(r[ồo]i)?\s*(nh[ỉi]|v[ậa]y|[ạa]|nha|nhé|nhe)?\s*[?.!…]*\s*$/i;
|
|
286
|
-
const STATUS_CHECK_EN_RE =
|
|
287
|
-
/^(so\s+)?(do|did|have|has|are|is|was)\s+(you|it|that|the|there)\b[^?.!\n]{0,60}\b(yet|done|ready|finish(?:ed)?|complete[d]?|ready|available)\b[?.!]*\s*$/i;
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* True when the prompt is a conversational STATUS/META question about work
|
|
291
|
-
* already discussed (not a fresh task request). Guarded: short prompts only,
|
|
292
|
-
* and never when an explicit tool/command intent is present (those must keep
|
|
293
|
-
* the toolset). See the regex comment above for the originating session.
|
|
294
|
-
*/
|
|
295
|
-
export function isStatusCheckQuestion(raw: string): boolean {
|
|
296
|
-
const t = raw.trim();
|
|
297
|
-
if (!t || t.length > 80) return false;
|
|
298
|
-
if (hasActionableToolIntent(t)) return false;
|
|
299
|
-
return STATUS_CHECK_VI_RE.test(t) || STATUS_CHECK_EN_RE.test(t);
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
// Keyword patterns for task types the classifier doesn't natively handle.
|
|
303
|
-
// Applied when classifier abstains OR matches the low-signal "general" path.
|
|
304
|
-
// Patterns are bilingual (EN + VN) — Vietnamese cues use accent-insensitive
|
|
305
|
-
// alternations so common diacritic drops still match.
|
|
306
|
-
const KEYWORD_PATTERNS: Array<{ pattern: RegExp; taskType: TaskType; confidence: number }> = [
|
|
307
|
-
{
|
|
308
|
-
// EN: fix/bug/error/etc. VN: sửa lỗi, lỗi, hỏng, không chạy
|
|
309
|
-
pattern:
|
|
310
|
-
/\b(fix|bug|error|exception|crash|fail(?:s|ed|ing)?|broken|wrong|issue|traceback)\b|(sửa lỗi|sua loi|báo lỗi|bao loi|\blỗi\b|\bloi\b|hỏng|hong|không chạy|khong chay)/i,
|
|
311
|
-
taskType: "debug",
|
|
312
|
-
confidence: 0.65,
|
|
313
|
-
},
|
|
314
|
-
{
|
|
315
|
-
// EN: plan/roadmap/architecture. VN: kế hoạch, thiết kế, kiến trúc, lộ trình
|
|
316
|
-
pattern:
|
|
317
|
-
/\b(plan|roadmap|phase|step(?:s)?|approach|design|architect(?:ure)?|strategy)\b|(kế hoạch|ke hoach|thiết kế|thiet ke|kiến trúc|kien truc|lộ trình|lo trinh)/i,
|
|
318
|
-
taskType: "plan",
|
|
319
|
-
confidence: 0.6,
|
|
320
|
-
},
|
|
321
|
-
{
|
|
322
|
-
// EN: docs/readme/jsdoc. VN: tài liệu, viết doc, ghi chú, comment
|
|
323
|
-
pattern:
|
|
324
|
-
/\b(doc(?:s|umentation)?|readme|comment|jsdoc|tsdoc|docstring)\b|(tài liệu|tai lieu|viết doc|viet doc|ghi chú|ghi chu)/i,
|
|
325
|
-
taskType: "documentation",
|
|
326
|
-
confidence: 0.6,
|
|
327
|
-
},
|
|
328
|
-
{
|
|
329
|
-
// EN: test/spec/coverage. VN: kiểm thử, viết test, kiểm tra
|
|
330
|
-
pattern:
|
|
331
|
-
/\b(test(?:s|ing)?|spec|unit test|coverage|assert(?:ion)?)\b|(kiểm thử|kiem thu|viết test|viet test|kiểm tra|kiem tra)/i,
|
|
332
|
-
taskType: "analyze",
|
|
333
|
-
confidence: 0.65,
|
|
334
|
-
},
|
|
335
|
-
{
|
|
336
|
-
// EN: refactor. VN: tái cấu trúc, viết lại, tổ chức lại
|
|
337
|
-
pattern: /\brefactor(?:ing)?\b|(tái cấu trúc|tai cau truc|viết lại|viet lai|tổ chức lại|to chuc lai)/i,
|
|
338
|
-
taskType: "refactor",
|
|
339
|
-
confidence: 0.7,
|
|
340
|
-
},
|
|
341
|
-
{
|
|
342
|
-
// EN: create/generate. VN: tạo, sinh, viết mới
|
|
343
|
-
pattern: /\b(generate|scaffold|bootstrap)\b|(tạo file|tao file|tạo module|tao module|sinh code|viết mới|viet moi)/i,
|
|
344
|
-
taskType: "generate",
|
|
345
|
-
confidence: 0.65,
|
|
346
|
-
},
|
|
347
|
-
];
|
|
348
|
-
|
|
349
|
-
// Catch-all classifier reasons whose taskType assignment is weak — Pass 2 keyword
|
|
350
|
-
// rescue is allowed to override them when confidence is sub-threshold. Specific
|
|
351
|
-
// rules like `regex:run-command` / `regex:git` stay authoritative.
|
|
352
|
-
const CATCHALL_REASONS = new Set<string>(["regex:edit", "regex:create-file"]);
|
|
353
|
-
const HIGH_CONF_THRESHOLD_PASS2 = 0.7;
|
|
354
|
-
|
|
355
|
-
// Valid task types for bridge classification parsing (matches RESPONSE_SCHEMAS keys minus 'general').
|
|
356
|
-
const VALID_TASK_TYPES: TaskType[] = ["refactor", "debug", "plan", "analyze", "documentation", "generate"];
|
|
357
|
-
|
|
358
|
-
const VALID_STYLES = ["concise", "balanced", "detailed"] as const;
|
|
359
|
-
|
|
360
|
-
// Detect language/domain from prompt content. Order matters: code fences first
|
|
361
|
-
// (highest signal), file extensions next, then bare keywords.
|
|
362
|
-
const DOMAIN_PATTERNS: Array<{ pattern: RegExp; domain: string }> = [
|
|
363
|
-
{ pattern: /```(?:ts|tsx|typescript)\b/i, domain: "typescript" },
|
|
364
|
-
{ pattern: /```(?:js|jsx|javascript)\b/i, domain: "javascript" },
|
|
365
|
-
{ pattern: /```(?:py|python)\b/i, domain: "python" },
|
|
366
|
-
{ pattern: /```(?:rs|rust)\b/i, domain: "rust" },
|
|
367
|
-
{ pattern: /```(?:go|golang)\b/i, domain: "go" },
|
|
368
|
-
{ pattern: /```(?:java)\b/i, domain: "java" },
|
|
369
|
-
{ pattern: /```(?:cs|csharp)\b/i, domain: "csharp" },
|
|
370
|
-
{ pattern: /```(?:rb|ruby)\b/i, domain: "ruby" },
|
|
371
|
-
{ pattern: /\.(tsx?)\b/i, domain: "typescript" },
|
|
372
|
-
{ pattern: /\.(jsx?)\b/i, domain: "javascript" },
|
|
373
|
-
{ pattern: /\.py\b/i, domain: "python" },
|
|
374
|
-
{ pattern: /\.rs\b/i, domain: "rust" },
|
|
375
|
-
{ pattern: /\.go\b/i, domain: "go" },
|
|
376
|
-
{ pattern: /\.java\b/i, domain: "java" },
|
|
377
|
-
{ pattern: /\.cs\b/i, domain: "csharp" },
|
|
378
|
-
{ pattern: /\.rb\b/i, domain: "ruby" },
|
|
379
|
-
{ pattern: /\b(typescript|tsconfig|tsc)\b/i, domain: "typescript" },
|
|
380
|
-
{ pattern: /\b(python|pip|venv|django|flask)\b/i, domain: "python" },
|
|
381
|
-
{ pattern: /\b(rust|cargo)\b/i, domain: "rust" },
|
|
382
|
-
{ pattern: /\b(golang)\b/i, domain: "go" },
|
|
383
|
-
];
|
|
384
|
-
|
|
385
|
-
function extractDomain(reason: string, raw: string): string | null {
|
|
386
|
-
// Tree-sitter signals are highest-confidence (the parser actually understood the code).
|
|
387
|
-
if (reason.includes("typescript")) return "typescript";
|
|
388
|
-
if (reason.includes("python")) return "python";
|
|
389
|
-
// Fall back to raw-prompt scan so regex-classified turns still get domain.
|
|
390
|
-
for (const { pattern, domain } of DOMAIN_PATTERNS) {
|
|
391
|
-
if (pattern.test(raw)) return domain;
|
|
392
|
-
}
|
|
393
|
-
return null;
|
|
394
|
-
}
|
|
395
|
-
|
|
396
|
-
// Regex-based outputStyle detection — catches explicit user requests in EN/VN
|
|
397
|
-
// before we ever ask the brain. Order: most-specific first.
|
|
398
|
-
const STYLE_PATTERNS: Array<{ pattern: RegExp; style: OutputStyle }> = [
|
|
399
|
-
{ pattern: /\b(concise|brief|terse|short answer|tl;?dr|một câu|ngắn gọn|vắn tắt|tóm tắt)\b/i, style: "concise" },
|
|
400
|
-
{
|
|
401
|
-
pattern: /\b(detailed|thorough|in depth|step by step|walk me through|chi tiết|cặn kẽ|đầy đủ|từng bước)\b/i,
|
|
402
|
-
style: "detailed",
|
|
403
|
-
},
|
|
404
|
-
{ pattern: /\b(balanced|normal|standard|cân bằng|bình thường)\b/i, style: "balanced" },
|
|
405
|
-
];
|
|
406
|
-
|
|
407
|
-
function detectStyleFromText(raw: string): OutputStyle | null {
|
|
408
|
-
for (const { pattern, style } of STYLE_PATTERNS) {
|
|
409
|
-
if (pattern.test(raw)) return style;
|
|
410
|
-
}
|
|
411
|
-
return null;
|
|
412
|
-
}
|
|
413
|
-
|
|
414
|
-
export interface Layer1Options {
|
|
415
|
-
/** Pass 4 LLM fallback closure — fires when brain returned null or confidence < 0.7. */
|
|
416
|
-
llmFallback?: LlmClassifyFn;
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
// Explicit command/tool-execution signals (EN + VI). When any fires the turn
|
|
420
|
-
// is a real action request, so it must NEVER be classified chitchat — chitchat
|
|
421
|
-
// drops the entire toolset (incl. bash) in message-processor, leaving the
|
|
422
|
-
// agent unable to act. Found via harness session 817e508f57ee: the cheap LLM
|
|
423
|
-
// classifier labelled "Dùng bash tool chạy 1 lệnh…" as general → chitchat →
|
|
424
|
-
// bash dropped. High-precision tokens only; a false positive merely re-adds
|
|
425
|
-
// ~1.5K tokens of tool schema, while a false negative breaks the turn.
|
|
426
|
-
const TOOL_NAME_RE = /\b(bash|read_file|edit_file|write_file|ripgrep)\b/i;
|
|
427
|
-
const EXEC_INTENT_RE =
|
|
428
|
-
/\b(run|execute|exec)\b[^.?!\n]{0,40}\b(command|cmd|commands|script|scripts|shell|bash|test|tests|build|lint)\b/i;
|
|
429
|
-
const VI_EXEC_RE = /\bch[ạa]y\b[^.?!\n]{0,40}\b(l[ệe]nh|command|cmd|script|shell|bash|test|build|lint)\b/i;
|
|
430
|
-
|
|
431
|
-
/**
|
|
432
|
-
* True when the prompt is an explicit request to RUN a command / use a shell
|
|
433
|
-
* tool. Used to veto a chitchat classification so the toolset is preserved.
|
|
434
|
-
*/
|
|
435
|
-
export function hasActionableToolIntent(raw: string): boolean {
|
|
436
|
-
if (!raw) return false;
|
|
437
|
-
return TOOL_NAME_RE.test(raw) || EXEC_INTENT_RE.test(raw) || VI_EXEC_RE.test(raw);
|
|
438
|
-
}
|
|
439
|
-
|
|
440
|
-
// Pure social-pleasantry vocabulary (EN + VI). CORE = greeting/thanks/ack/
|
|
441
|
-
// farewell tokens that carry the social intent; FILLER = pronouns, particles,
|
|
442
|
-
// articles, intensifiers, politeness words that legitimately surround them.
|
|
443
|
-
// Deliberately EXCLUDES any token that could carry work ("help", "fix",
|
|
444
|
-
// "make", "do", file names, …) so the all-tokens-whitelist test below can never
|
|
445
|
-
// match a real task.
|
|
446
|
-
const SOCIAL_CORE = new Set([
|
|
447
|
-
// greetings
|
|
448
|
-
"hi",
|
|
449
|
-
"hello",
|
|
450
|
-
"hey",
|
|
451
|
-
"yo",
|
|
452
|
-
"hiya",
|
|
453
|
-
"heya",
|
|
454
|
-
"hallo",
|
|
455
|
-
"chào",
|
|
456
|
-
"chao",
|
|
457
|
-
"hola",
|
|
458
|
-
// thanks
|
|
459
|
-
"thanks",
|
|
460
|
-
"thank",
|
|
461
|
-
"thx",
|
|
462
|
-
"ty",
|
|
463
|
-
"tks",
|
|
464
|
-
"thankyou",
|
|
465
|
-
"cảm",
|
|
466
|
-
"ơn",
|
|
467
|
-
"cám",
|
|
468
|
-
"cam",
|
|
469
|
-
"ơn",
|
|
470
|
-
"thankss",
|
|
471
|
-
// farewells
|
|
472
|
-
"bye",
|
|
473
|
-
"goodbye",
|
|
474
|
-
"cya",
|
|
475
|
-
"tạm",
|
|
476
|
-
"biệt",
|
|
477
|
-
"biet",
|
|
478
|
-
"farewell",
|
|
479
|
-
// acknowledgements / affirmations
|
|
480
|
-
"ok",
|
|
481
|
-
"okay",
|
|
482
|
-
"okie",
|
|
483
|
-
"oke",
|
|
484
|
-
"okey",
|
|
485
|
-
"k",
|
|
486
|
-
"great",
|
|
487
|
-
"nice",
|
|
488
|
-
"cool",
|
|
489
|
-
"perfect",
|
|
490
|
-
"awesome",
|
|
491
|
-
"good",
|
|
492
|
-
"fine",
|
|
493
|
-
"sweet",
|
|
494
|
-
"excellent",
|
|
495
|
-
"brilliant",
|
|
496
|
-
"wonderful",
|
|
497
|
-
"amazing",
|
|
498
|
-
"superb",
|
|
499
|
-
"tuyệt",
|
|
500
|
-
"tuyet",
|
|
501
|
-
"vời",
|
|
502
|
-
"voi",
|
|
503
|
-
"ngon",
|
|
504
|
-
"ổn",
|
|
505
|
-
"yeah",
|
|
506
|
-
"yep",
|
|
507
|
-
"yup",
|
|
508
|
-
"nice1",
|
|
509
|
-
]);
|
|
510
|
-
const SOCIAL_FILLER = new Set([
|
|
511
|
-
// pronouns / address
|
|
512
|
-
"you",
|
|
513
|
-
"u",
|
|
514
|
-
"ya",
|
|
515
|
-
"bạn",
|
|
516
|
-
"ban",
|
|
517
|
-
"mình",
|
|
518
|
-
"minh",
|
|
519
|
-
"we",
|
|
520
|
-
"i",
|
|
521
|
-
// intensifiers / quantity
|
|
522
|
-
"very",
|
|
523
|
-
"much",
|
|
524
|
-
"so",
|
|
525
|
-
"really",
|
|
526
|
-
"lot",
|
|
527
|
-
"lots",
|
|
528
|
-
"too",
|
|
529
|
-
"rất",
|
|
530
|
-
"rat",
|
|
531
|
-
"nhiều",
|
|
532
|
-
"nhieu",
|
|
533
|
-
// articles / connectors / objects-of-thanks (safe: surrounding task words block the match)
|
|
534
|
-
"a",
|
|
535
|
-
"an",
|
|
536
|
-
"the",
|
|
537
|
-
"for",
|
|
538
|
-
"all",
|
|
539
|
-
"that",
|
|
540
|
-
"this",
|
|
541
|
-
"it",
|
|
542
|
-
"everything",
|
|
543
|
-
"again",
|
|
544
|
-
"and",
|
|
545
|
-
// time / address fillers
|
|
546
|
-
"today",
|
|
547
|
-
"now",
|
|
548
|
-
"there",
|
|
549
|
-
"here",
|
|
550
|
-
"mate",
|
|
551
|
-
"man",
|
|
552
|
-
"friend",
|
|
553
|
-
"bro",
|
|
554
|
-
"guys",
|
|
555
|
-
"team",
|
|
556
|
-
// politeness / particles (VI + EN)
|
|
557
|
-
"please",
|
|
558
|
-
"pls",
|
|
559
|
-
"plz",
|
|
560
|
-
"nhé",
|
|
561
|
-
"nhe",
|
|
562
|
-
"nha",
|
|
563
|
-
"ạ",
|
|
564
|
-
"à",
|
|
565
|
-
"ạ.",
|
|
566
|
-
"dude",
|
|
567
|
-
"buddy",
|
|
568
|
-
]);
|
|
569
|
-
|
|
570
|
-
/**
|
|
571
|
-
* True when the prompt is a PURE social pleasantry (greeting / thanks / ack /
|
|
572
|
-
* farewell) — even when it is longer than the 2-word hot-path that Pass 2.5
|
|
573
|
-
* catches. Used to classify such turns as chitchat so message-processor can
|
|
574
|
-
* drop the ~15-20K tool-schema tax (a thank-you never needs bash/read_file/MCP).
|
|
575
|
-
*
|
|
576
|
-
* STRICT by construction: EVERY whitespace token must be social CORE or FILLER
|
|
577
|
-
* vocabulary, and at least one must be CORE. Any task/tool/file token (not in
|
|
578
|
-
* the whitelist) makes it false, so it can never swallow a real request — the
|
|
579
|
-
* bias is keep-tools. Live leak: "cảm ơn bạn rất nhiều nhé" (session
|
|
580
|
-
* 40c726a31a37) paid toolCount=37 because the old gate required ≤10 chars.
|
|
581
|
-
*/
|
|
582
|
-
export function isSocialPleasantry(raw: string): boolean {
|
|
583
|
-
if (!raw) return false;
|
|
584
|
-
const tokens = raw
|
|
585
|
-
.toLowerCase()
|
|
586
|
-
.split(/\s+/)
|
|
587
|
-
.map((t) => t.replace(/^[^\p{L}\p{N}]+|[^\p{L}\p{N}]+$/gu, ""))
|
|
588
|
-
.filter(Boolean);
|
|
589
|
-
if (tokens.length === 0) return false;
|
|
590
|
-
let hasCore = false;
|
|
591
|
-
for (const t of tokens) {
|
|
592
|
-
if (SOCIAL_CORE.has(t)) {
|
|
593
|
-
hasCore = true;
|
|
594
|
-
continue;
|
|
595
|
-
}
|
|
596
|
-
if (SOCIAL_FILLER.has(t)) continue;
|
|
597
|
-
return false;
|
|
598
|
-
}
|
|
599
|
-
return hasCore;
|
|
600
|
-
}
|
|
601
|
-
|
|
602
|
-
export async function layer1Intent(ctx: PipelineContext, opts: Layer1Options = {}): Promise<PipelineContext> {
|
|
603
|
-
try {
|
|
604
|
-
// Pass 0 — deterministic full-prompt overrides (Phase 5 BUG-B / BUG-D).
|
|
605
|
-
// Two narrow patterns short-circuit the whole pipeline:
|
|
606
|
-
// - continuation phrase → general/chitchat
|
|
607
|
-
// - performance/optimization verbs → refactor/task
|
|
608
|
-
// Both eliminate LLM-bridge nondeterminism on inputs whose correct
|
|
609
|
-
// label is unambiguous from the prompt alone.
|
|
610
|
-
if (isContinuationPhrase(ctx.raw)) {
|
|
611
|
-
const { complexity, score: complexityScore } = scoreComplexity({
|
|
612
|
-
rawText: ctx.raw,
|
|
613
|
-
taskType: "general",
|
|
614
|
-
t0HitCount: 0,
|
|
615
|
-
hasMaxSprintsOne: false,
|
|
616
|
-
});
|
|
617
|
-
const intentTrace: IntentDetectionTrace = {
|
|
618
|
-
pass1Reason: "pass0:continuation",
|
|
619
|
-
pass1Confidence: 0.9,
|
|
620
|
-
pass1TaskType: "general",
|
|
621
|
-
pass1Hit: true,
|
|
622
|
-
pass2Hit: false,
|
|
623
|
-
pass25ChitchatHit: false,
|
|
624
|
-
pass3UnifiedAttempted: false,
|
|
625
|
-
pass3UnifiedSucceeded: false,
|
|
626
|
-
pass3LegacyTaskAttempted: false,
|
|
627
|
-
pass3LegacyTaskSucceeded: false,
|
|
628
|
-
pass3LegacyStyleAttempted: false,
|
|
629
|
-
pass3LegacyStyleSucceeded: false,
|
|
630
|
-
pass4LlmAttempted: false,
|
|
631
|
-
pass4LlmSucceeded: false,
|
|
632
|
-
styleSource: "chitchat-default",
|
|
633
|
-
finalTaskType: "general",
|
|
634
|
-
finalConfidence: 0.9,
|
|
635
|
-
complexity,
|
|
636
|
-
complexityScore,
|
|
637
|
-
};
|
|
638
|
-
return {
|
|
639
|
-
...ctx,
|
|
640
|
-
taskType: "general",
|
|
641
|
-
domain: null,
|
|
642
|
-
confidence: 0.9,
|
|
643
|
-
outputStyle: "concise",
|
|
644
|
-
intentKind: "chitchat",
|
|
645
|
-
_brainData: null,
|
|
646
|
-
_intentTrace: intentTrace,
|
|
647
|
-
layers: [
|
|
648
|
-
...ctx.layers,
|
|
649
|
-
{
|
|
650
|
-
name: "intent-detection",
|
|
651
|
-
applied: true,
|
|
652
|
-
delta: "taskType=general,kind=chitchat,conf=0.90,domain=none,style=concise,pass0=continuation",
|
|
653
|
-
},
|
|
654
|
-
],
|
|
655
|
-
};
|
|
656
|
-
}
|
|
657
|
-
if (isStatusCheckQuestion(ctx.raw)) {
|
|
658
|
-
// A meta question about prior work → conversational continuation. Route to
|
|
659
|
-
// chitchat so layer4-gsd skips the "make a NEW plan + implement" scaffold
|
|
660
|
-
// and the agent answers from the existing thread context (session
|
|
661
|
-
// c6387d2c6e1b root cause). Mirrors the continuation branch above.
|
|
662
|
-
const { complexity, score: complexityScore } = scoreComplexity({
|
|
663
|
-
rawText: ctx.raw,
|
|
664
|
-
taskType: "general",
|
|
665
|
-
t0HitCount: 0,
|
|
666
|
-
hasMaxSprintsOne: false,
|
|
667
|
-
});
|
|
668
|
-
const intentTrace: IntentDetectionTrace = {
|
|
669
|
-
pass1Reason: "pass0:status-check",
|
|
670
|
-
pass1Confidence: 0.9,
|
|
671
|
-
pass1TaskType: "general",
|
|
672
|
-
pass1Hit: true,
|
|
673
|
-
pass2Hit: false,
|
|
674
|
-
pass25ChitchatHit: false,
|
|
675
|
-
pass3UnifiedAttempted: false,
|
|
676
|
-
pass3UnifiedSucceeded: false,
|
|
677
|
-
pass3LegacyTaskAttempted: false,
|
|
678
|
-
pass3LegacyTaskSucceeded: false,
|
|
679
|
-
pass3LegacyStyleAttempted: false,
|
|
680
|
-
pass3LegacyStyleSucceeded: false,
|
|
681
|
-
pass4LlmAttempted: false,
|
|
682
|
-
pass4LlmSucceeded: false,
|
|
683
|
-
styleSource: "chitchat-default",
|
|
684
|
-
finalTaskType: "general",
|
|
685
|
-
finalConfidence: 0.9,
|
|
686
|
-
complexity,
|
|
687
|
-
complexityScore,
|
|
688
|
-
};
|
|
689
|
-
return {
|
|
690
|
-
...ctx,
|
|
691
|
-
taskType: "general",
|
|
692
|
-
domain: null,
|
|
693
|
-
confidence: 0.9,
|
|
694
|
-
outputStyle: "concise",
|
|
695
|
-
intentKind: "chitchat",
|
|
696
|
-
_brainData: null,
|
|
697
|
-
_intentTrace: intentTrace,
|
|
698
|
-
layers: [
|
|
699
|
-
...ctx.layers,
|
|
700
|
-
{
|
|
701
|
-
name: "intent-detection",
|
|
702
|
-
applied: true,
|
|
703
|
-
delta: "taskType=general,kind=chitchat,conf=0.90,domain=none,style=concise,pass0=status-check",
|
|
704
|
-
},
|
|
705
|
-
],
|
|
706
|
-
};
|
|
707
|
-
}
|
|
708
|
-
if (isTestGenerationTask(ctx.raw)) {
|
|
709
|
-
const domainPass0 = extractDomain("", ctx.raw);
|
|
710
|
-
const styleFromText = detectStyleFromText(ctx.raw) ?? "balanced";
|
|
711
|
-
const { complexity, score: complexityScore } = scoreComplexity({
|
|
712
|
-
rawText: ctx.raw,
|
|
713
|
-
taskType: "generate",
|
|
714
|
-
t0HitCount: 0,
|
|
715
|
-
hasMaxSprintsOne: false,
|
|
716
|
-
});
|
|
717
|
-
const intentTrace: IntentDetectionTrace = {
|
|
718
|
-
pass1Reason: "pass0:test-generation",
|
|
719
|
-
pass1Confidence: 0.9,
|
|
720
|
-
pass1TaskType: "generate",
|
|
721
|
-
pass1Hit: true,
|
|
722
|
-
pass2Hit: false,
|
|
723
|
-
pass25ChitchatHit: false,
|
|
724
|
-
pass3UnifiedAttempted: false,
|
|
725
|
-
pass3UnifiedSucceeded: false,
|
|
726
|
-
pass3LegacyTaskAttempted: false,
|
|
727
|
-
pass3LegacyTaskSucceeded: false,
|
|
728
|
-
pass3LegacyStyleAttempted: false,
|
|
729
|
-
pass3LegacyStyleSucceeded: false,
|
|
730
|
-
pass4LlmAttempted: false,
|
|
731
|
-
pass4LlmSucceeded: false,
|
|
732
|
-
styleSource: detectStyleFromText(ctx.raw) ? "explicit-regex" : "classifier-default",
|
|
733
|
-
finalTaskType: "generate",
|
|
734
|
-
finalConfidence: 0.9,
|
|
735
|
-
complexity,
|
|
736
|
-
complexityScore,
|
|
737
|
-
};
|
|
738
|
-
return {
|
|
739
|
-
...ctx,
|
|
740
|
-
taskType: "generate",
|
|
741
|
-
domain: domainPass0,
|
|
742
|
-
confidence: 0.9,
|
|
743
|
-
outputStyle: styleFromText,
|
|
744
|
-
intentKind: "task",
|
|
745
|
-
_brainData: null,
|
|
746
|
-
_intentTrace: intentTrace,
|
|
747
|
-
layers: [
|
|
748
|
-
...ctx.layers,
|
|
749
|
-
{
|
|
750
|
-
name: "intent-detection",
|
|
751
|
-
applied: true,
|
|
752
|
-
delta: `taskType=generate,kind=task,conf=0.90,domain=${domainPass0 ?? "none"},style=${styleFromText},pass0=test-generation`,
|
|
753
|
-
},
|
|
754
|
-
],
|
|
755
|
-
};
|
|
756
|
-
}
|
|
757
|
-
if (isPerformanceRefactor(ctx.raw)) {
|
|
758
|
-
const domainPass0 = extractDomain("", ctx.raw);
|
|
759
|
-
const styleFromText = detectStyleFromText(ctx.raw) ?? "balanced";
|
|
760
|
-
const { complexity, score: complexityScore } = scoreComplexity({
|
|
761
|
-
rawText: ctx.raw,
|
|
762
|
-
taskType: "refactor",
|
|
763
|
-
t0HitCount: 0,
|
|
764
|
-
hasMaxSprintsOne: false,
|
|
765
|
-
});
|
|
766
|
-
const intentTrace: IntentDetectionTrace = {
|
|
767
|
-
pass1Reason: "pass0:performance",
|
|
768
|
-
pass1Confidence: 0.85,
|
|
769
|
-
pass1TaskType: "refactor",
|
|
770
|
-
pass1Hit: true,
|
|
771
|
-
pass2Hit: false,
|
|
772
|
-
pass25ChitchatHit: false,
|
|
773
|
-
pass3UnifiedAttempted: false,
|
|
774
|
-
pass3UnifiedSucceeded: false,
|
|
775
|
-
pass3LegacyTaskAttempted: false,
|
|
776
|
-
pass3LegacyTaskSucceeded: false,
|
|
777
|
-
pass3LegacyStyleAttempted: false,
|
|
778
|
-
pass3LegacyStyleSucceeded: false,
|
|
779
|
-
pass4LlmAttempted: false,
|
|
780
|
-
pass4LlmSucceeded: false,
|
|
781
|
-
styleSource: detectStyleFromText(ctx.raw) ? "explicit-regex" : "classifier-default",
|
|
782
|
-
finalTaskType: "refactor",
|
|
783
|
-
finalConfidence: 0.85,
|
|
784
|
-
complexity,
|
|
785
|
-
complexityScore,
|
|
786
|
-
};
|
|
787
|
-
return {
|
|
788
|
-
...ctx,
|
|
789
|
-
taskType: "refactor",
|
|
790
|
-
domain: domainPass0,
|
|
791
|
-
confidence: 0.85,
|
|
792
|
-
outputStyle: styleFromText,
|
|
793
|
-
intentKind: "task",
|
|
794
|
-
_brainData: null,
|
|
795
|
-
_intentTrace: intentTrace,
|
|
796
|
-
layers: [
|
|
797
|
-
...ctx.layers,
|
|
798
|
-
{
|
|
799
|
-
name: "intent-detection",
|
|
800
|
-
applied: true,
|
|
801
|
-
delta: `taskType=refactor,kind=task,conf=0.85,domain=${domainPass0 ?? "none"},style=${styleFromText},pass0=performance`,
|
|
802
|
-
},
|
|
803
|
-
],
|
|
804
|
-
};
|
|
805
|
-
}
|
|
806
|
-
|
|
807
|
-
// Pass 1: local classifier.
|
|
808
|
-
const result = classify(ctx.raw);
|
|
809
|
-
const pass1TaskType: TaskType | null = REASON_TO_TASK_TYPE[result.reason] ?? null;
|
|
810
|
-
let taskType: TaskType | null = pass1TaskType;
|
|
811
|
-
let confidence = result.confidence;
|
|
812
|
-
const domain = extractDomain(result.reason, ctx.raw);
|
|
813
|
-
let outputStyle: OutputStyle | null = null;
|
|
814
|
-
let intentKind: "task" | "chitchat" | null = null;
|
|
815
|
-
let brainData: BrainData | null = null;
|
|
816
|
-
// Step-by-step trace — populated as each pass runs so cost reports can
|
|
817
|
-
// attribute which pass actually decided the outcome.
|
|
818
|
-
let pass2Pattern: string | undefined;
|
|
819
|
-
let pass2Hit = false;
|
|
820
|
-
let pass25ChitchatHit = false;
|
|
821
|
-
let pass3UnifiedSucceeded = false;
|
|
822
|
-
let pass3LegacyTaskAttempted = false;
|
|
823
|
-
let pass3LegacyTaskSucceeded = false;
|
|
824
|
-
let pass3LegacyStyleAttempted = false;
|
|
825
|
-
let pass3LegacyStyleSucceeded = false;
|
|
826
|
-
let styleSource: IntentDetectionTrace["styleSource"] = "none";
|
|
827
|
-
|
|
828
|
-
// Pass 2: keyword fallback. Runs when classifier abstains OR when the
|
|
829
|
-
// classifier match was a low-signal "general" (regex:short-message) OR
|
|
830
|
-
// when the catch-all `regex:edit` / `regex:create-file` mapped a vague
|
|
831
|
-
// "fix X" / "tạo X" verb to taskType=generate at sub-threshold confidence
|
|
832
|
-
// (< 0.7). The catch-all v2 rules are deliberately weak (conf 0.55) so a
|
|
833
|
-
// VN debug prompt like "ci/cd đang bị lỗi, check và fix cho tôi" still
|
|
834
|
-
// routes through the keyword rescue here — which carries the bare-`lỗi`
|
|
835
|
-
// and `\bfix\b` debug cues that the catch-all regex cannot tell apart
|
|
836
|
-
// from generic edit.
|
|
837
|
-
const lowSignal = taskType === "general" && result.reason === "regex:short-message";
|
|
838
|
-
const catchAllRescue =
|
|
839
|
-
taskType !== null && confidence < HIGH_CONF_THRESHOLD_PASS2 && CATCHALL_REASONS.has(result.reason);
|
|
840
|
-
if (taskType === null || lowSignal || catchAllRescue) {
|
|
841
|
-
for (const { pattern, taskType: kwType, confidence: kwConf } of KEYWORD_PATTERNS) {
|
|
842
|
-
if (pattern.test(ctx.raw)) {
|
|
843
|
-
taskType = kwType;
|
|
844
|
-
confidence = kwConf;
|
|
845
|
-
pass2Hit = true;
|
|
846
|
-
pass2Pattern = pattern.source;
|
|
847
|
-
break;
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
}
|
|
851
|
-
|
|
852
|
-
// Pass 2.5: hot-path chitchat short-circuit for ultra-short greetings
|
|
853
|
-
// ("hi", "ok", "thanks", "ty") — mapped to taskType="general" without
|
|
854
|
-
// burning a brain round-trip. Both conditions required (AND) so we don't
|
|
855
|
-
// accidentally swallow phrases like "refactor this" or "fix the bug" that
|
|
856
|
-
// happen to be short.
|
|
857
|
-
//
|
|
858
|
-
// TODO(WhoAmI-Pass0): when EE v4.0 Who Am I profile is available, read
|
|
859
|
-
// communication.brevity + decision_speed here as outputStyle baseline.
|
|
860
|
-
const trimmed = ctx.raw.trim();
|
|
861
|
-
const wordCount = trimmed.split(/\s+/).filter(Boolean).length;
|
|
862
|
-
const noTaskSignal = taskType === null || (taskType === "general" && result.reason === "regex:short-message");
|
|
863
|
-
if (noTaskSignal && trimmed.length < 10 && wordCount <= 2) {
|
|
864
|
-
taskType = "general";
|
|
865
|
-
confidence = 0.5;
|
|
866
|
-
intentKind = "chitchat";
|
|
867
|
-
outputStyle = "concise";
|
|
868
|
-
pass25ChitchatHit = true;
|
|
869
|
-
styleSource = "chitchat-default";
|
|
870
|
-
}
|
|
871
|
-
|
|
872
|
-
// Pass 2.6 — multi-word PURE social pleasantries ("cảm ơn bạn rất nhiều
|
|
873
|
-
// nhé", "thank you so much", "ok great thanks") that the 2-word hot-path
|
|
874
|
-
// above misses. Without this they fall through to the brain/LLM passes,
|
|
875
|
-
// which classify intentKind inconsistently (live session 40c726a31a37
|
|
876
|
-
// returned intentKind=null → toolCount=37, ~15-20K wasted tool-schema
|
|
877
|
-
// tokens for a thank-you). isSocialPleasantry is strict (every token is
|
|
878
|
-
// greeting/thanks/ack/filler vocab) so it can never swallow a task; the
|
|
879
|
-
// hasActionableToolIntent veto is belt-and-suspenders. Classifying here is
|
|
880
|
-
// also a cost win: it skips the brain round-trip (needsBrain requires
|
|
881
|
-
// intentKind !== "chitchat").
|
|
882
|
-
if (
|
|
883
|
-
intentKind !== "chitchat" &&
|
|
884
|
-
(taskType === null || taskType === "general") &&
|
|
885
|
-
!hasActionableToolIntent(trimmed) &&
|
|
886
|
-
isSocialPleasantry(trimmed)
|
|
887
|
-
) {
|
|
888
|
-
taskType = "general";
|
|
889
|
-
confidence = 0.5;
|
|
890
|
-
intentKind = "chitchat";
|
|
891
|
-
outputStyle = "concise";
|
|
892
|
-
pass25ChitchatHit = true;
|
|
893
|
-
styleSource = "chitchat-default";
|
|
894
|
-
}
|
|
895
|
-
|
|
896
|
-
// Pass 3 UNIFIED: single /api/pil-context call replaces the multi-call
|
|
897
|
-
// cascade (classifier rescue + style brain). Fires only when flag is on
|
|
898
|
-
// AND local signal is weak (no taskType or low confidence) AND we haven't
|
|
899
|
-
// already short-circuited to chitchat.
|
|
900
|
-
const HIGH_CONF_THRESHOLD = 0.7;
|
|
901
|
-
const needsBrain =
|
|
902
|
-
isUnifiedPilEnabled() && intentKind !== "chitchat" && (taskType === null || confidence < HIGH_CONF_THRESHOLD);
|
|
903
|
-
|
|
904
|
-
let unifiedFailed = false;
|
|
905
|
-
if (needsBrain) {
|
|
906
|
-
// Step 8 (ee-anti-mu): enrich the raw passed to pilContext for sessions that may have
|
|
907
|
-
// experienced compaction (or any sessionId-bearing turn) so the brain sees EE checkpoints
|
|
908
|
-
// + the PRESERVE_FULL_CONTEXT veto token. Unconditional for any turn with sessionId
|
|
909
|
-
// (covers _compactionStats.count > 0 or step > K cases even if local conf high).
|
|
910
|
-
let brainRaw = ctx.raw;
|
|
911
|
-
if (ctx.sessionId) {
|
|
912
|
-
brainRaw =
|
|
913
|
-
ctx.raw +
|
|
914
|
-
' [EE task checkpoints ("Context checkpoint summary" with ✔ DONE) from prior compactions are available via the ee.query tool. ' +
|
|
915
|
-
"To keep full tool history this turn when you see pre-warn or compaction note, emit exact literal PRESERVE_FULL_CONTEXT in reasoning or assistant note. " +
|
|
916
|
-
'Self-check "task finished?" or "compacted yet this turn?" using the checkpoints.]';
|
|
917
|
-
}
|
|
918
|
-
const resp = await pilContext(brainRaw, {
|
|
919
|
-
projectCtx: domain ? { domain } : undefined,
|
|
920
|
-
budgetMs: 1500,
|
|
921
|
-
});
|
|
922
|
-
if (resp) {
|
|
923
|
-
if (resp.taskType) taskType = resp.taskType;
|
|
924
|
-
if (resp.intentKind) intentKind = resp.intentKind;
|
|
925
|
-
if (resp.outputStyle) {
|
|
926
|
-
outputStyle = resp.outputStyle;
|
|
927
|
-
styleSource = "brain-unified";
|
|
928
|
-
}
|
|
929
|
-
if (resp.confidence) confidence = resp.confidence;
|
|
930
|
-
brainData = {
|
|
931
|
-
t0_principles: resp.t0_principles,
|
|
932
|
-
t1_rules: resp.t1_rules,
|
|
933
|
-
t2_patterns: resp.t2_patterns,
|
|
934
|
-
retrieval_skipped_reason: resp.retrieval_skipped_reason,
|
|
935
|
-
};
|
|
936
|
-
pass3UnifiedSucceeded = true;
|
|
937
|
-
} else {
|
|
938
|
-
unifiedFailed = true;
|
|
939
|
-
}
|
|
940
|
-
}
|
|
941
|
-
|
|
942
|
-
// Pass 4 LLM FALLBACK: fires when the brain's confidence is below the
|
|
943
|
-
// hot-path skip threshold (HIGH_CONF_THRESHOLD = 0.7).
|
|
944
|
-
//
|
|
945
|
-
// Earlier iteration tried a tighter floor (0.5) to skip Pass 4 on "good
|
|
946
|
-
// enough" brain answers, but session eda85985dce9 showed the brain
|
|
947
|
-
// routinely returns 0.55–0.65 for ambiguous prompts like "fix CI fail"
|
|
948
|
-
// — and at that confidence band the brain's answer is wrong often
|
|
949
|
-
// enough that skipping Pass 4 reintroduces the classification leak we
|
|
950
|
-
// shipped Pass 4 to fix. The ~1s LLM round-trip is the price of
|
|
951
|
-
// correctness on borderline turns; high-confidence turns (brain ≥ 0.7)
|
|
952
|
-
// bypass Pass 4 entirely so the cost only hits weak signals.
|
|
953
|
-
let pass4LlmAttempted = false;
|
|
954
|
-
let pass4LlmSucceeded = false;
|
|
955
|
-
const llmFallbackEligible =
|
|
956
|
-
!!opts.llmFallback &&
|
|
957
|
-
intentKind !== "chitchat" &&
|
|
958
|
-
(taskType === null || unifiedFailed || confidence < HIGH_CONF_THRESHOLD);
|
|
959
|
-
if (llmFallbackEligible) {
|
|
960
|
-
pass4LlmAttempted = true;
|
|
961
|
-
try {
|
|
962
|
-
const llmRes = await opts.llmFallback!(ctx.raw);
|
|
963
|
-
if (llmRes) {
|
|
964
|
-
pass4LlmSucceeded = true;
|
|
965
|
-
taskType = llmRes.taskType;
|
|
966
|
-
confidence = llmRes.confidence;
|
|
967
|
-
// Pass 4 is reached ONLY when intentKind !== "chitchat" (see
|
|
968
|
-
// llmFallbackEligible above) — every genuine social pleasantry was
|
|
969
|
-
// already short-circuited upstream by Pass 0 (continuation /
|
|
970
|
-
// status-check), Pass 2.5 (ultra-short greeting) and Pass 2.6
|
|
971
|
-
// (isSocialPleasantry). So a taskType="general" result HERE is a
|
|
972
|
-
// SUBSTANTIVE question that slipped past the greeting detectors —
|
|
973
|
-
// NOT chitchat. Live repro (session b51ba653e890): "bạn đang được
|
|
974
|
-
// chạy bên trong CLI này thì ... CLI tác động thế nào đến bạn?" was
|
|
975
|
-
// mapped general→chitchat, which nuked the entire action toolset
|
|
976
|
-
// (message-processor.ts:1285 `isChitchat && !_priorTurnHadTools →
|
|
977
|
-
// {}`). The model announced "Tôi cần điều tra code ... không đoán"
|
|
978
|
-
// (Evidence-First contract) but had only respond_general — no
|
|
979
|
-
// read_file/grep/bash to act with → narration → respond_general
|
|
980
|
-
// spam-abort, zero answer. A general question is tool-capable:
|
|
981
|
-
// classify it "task" so the toolset survives. Per the established
|
|
982
|
-
// keep-tools precedent in this file (TOOL_NAME_RE veto), a false
|
|
983
|
-
// "task" merely re-adds ~1.5K tokens of tool schema, while a false
|
|
984
|
-
// "chitchat" BREAKS the turn.
|
|
985
|
-
intentKind = "task";
|
|
986
|
-
if (llmRes.outputStyle) {
|
|
987
|
-
outputStyle = llmRes.outputStyle;
|
|
988
|
-
styleSource = "brain-unified"; // closest existing source — LLM acts in same role
|
|
989
|
-
}
|
|
990
|
-
}
|
|
991
|
-
} catch (err) {
|
|
992
|
-
console.error(`[pil.layer1] LLM fallback failed: ${(err as Error)?.message}`);
|
|
993
|
-
}
|
|
994
|
-
}
|
|
995
|
-
|
|
996
|
-
// Pass 3 LEGACY FALLBACK: only runs when flag off.
|
|
997
|
-
// Cost optimization: when unified call FAILED, we skip the legacy brain
|
|
998
|
-
// round-trips entirely. The unified pilContext already tried the same
|
|
999
|
-
// backend; a second classifyViaBrain ~1.5s after a failure almost always
|
|
1000
|
-
// fails too, wasting tokens and ~2.3s of wall time. The cheap regex style
|
|
1001
|
-
// detector still runs below to recover explicit "ngắn gọn"/"detailed" cues.
|
|
1002
|
-
const runLegacyBrain = !isUnifiedPilEnabled();
|
|
1003
|
-
let legacyBrainAttempted = false;
|
|
1004
|
-
if (runLegacyBrain) {
|
|
1005
|
-
if (taskType === null) {
|
|
1006
|
-
legacyBrainAttempted = true;
|
|
1007
|
-
pass3LegacyTaskAttempted = true;
|
|
1008
|
-
// 4P-2: neutral bridge-classifier prompt. Earlier wording biased the
|
|
1009
|
-
// LLM toward `refactor` for any code touch (baseline trace
|
|
1010
|
-
// taskType=refactor,conf=0.75 on a clear feature-add). The rewrite:
|
|
1011
|
-
// - Lists categories in neutral order (analyze first, refactor 4th).
|
|
1012
|
-
// - Restricts refactor to explicit restructure verbs.
|
|
1013
|
-
// - Tells the model to prefer 'general' over guessing when ambiguous.
|
|
1014
|
-
// - Clarifies that feature additions are 'generate' even when they
|
|
1015
|
-
// touch existing files.
|
|
1016
|
-
// 0.7 confidence threshold for Pass 2 keyword override remains
|
|
1017
|
-
// unchanged (HIGH_CONF_THRESHOLD_PASS2 above).
|
|
1018
|
-
const brainRaw = await classifyViaBrain(
|
|
1019
|
-
`You are a multilingual prompt classifier. The user's prompt may be in English, Vietnamese, or a mix of both.
|
|
1020
|
-
Classify the prompt's INTENT (not its language). Reply with TWO lowercase words separated by a comma: <category>,<style>
|
|
1021
|
-
|
|
1022
|
-
Category — pick ONE (listed in neutral order, no precedence):
|
|
1023
|
-
analyze — explain / inspect / review existing code (giải thích, phân tích, review)
|
|
1024
|
-
debug — fix a bug or investigate failure (sửa lỗi, fix bug, lỗi, traceback)
|
|
1025
|
-
generate — create new code/file or add new behavior (tạo, sinh code, viết function mới, thêm)
|
|
1026
|
-
refactor — restructure existing code (tái cấu trúc, refactor)
|
|
1027
|
-
plan — design / roadmap / architecture (kế hoạch, thiết kế, kiến trúc)
|
|
1028
|
-
documentation — write docs/comments (viết docs, comment, jsdoc)
|
|
1029
|
-
general — chitchat OR unclear / ambiguous coding intent
|
|
1030
|
-
|
|
1031
|
-
Rules (Phase 4 4P-2 disambiguation):
|
|
1032
|
-
- Only return refactor when the user EXPLICITLY uses one of: rename, restructure, reorganize, extract, inline, move, migrate, reshape — applied to EXISTING code WITHOUT adding new behavior.
|
|
1033
|
-
- Feature additions ('add flag', 'thêm', 'create endpoint', 'thêm option'), changing a DEFAULT value, adding tests, or improving coverage are 'generate' — NOT refactor.
|
|
1034
|
-
- 'improve', 'change', 'update', 'modify', 'đổi', 'cải thiện' alone do NOT imply refactor — pick the specific category by what the change actually does.
|
|
1035
|
-
- When the request is ambiguous, prefer 'general' over guessing refactor.
|
|
1036
|
-
|
|
1037
|
-
Negative examples (NOT refactor):
|
|
1038
|
-
- "đổi default --max-tool-rounds 8 sang 12" → generate
|
|
1039
|
-
- "improve test coverage" → generate
|
|
1040
|
-
- "tại sao X trả empty" → analyze
|
|
1041
|
-
- "fix CI failing" → debug
|
|
1042
|
-
|
|
1043
|
-
Style — pick ONE:
|
|
1044
|
-
concise (ngắn gọn) | balanced (cân bằng) | detailed (chi tiết)
|
|
1045
|
-
|
|
1046
|
-
Examples:
|
|
1047
|
-
"Refactor this function" → refactor,balanced
|
|
1048
|
-
"tại sao test fail" → debug,balanced
|
|
1049
|
-
"thiết kế hệ thống auth" → plan,detailed
|
|
1050
|
-
"thêm flag --foo" → generate,concise
|
|
1051
|
-
"hi" → general,concise
|
|
1052
|
-
|
|
1053
|
-
Prompt: "${ctx.raw.slice(0, 500)}"`,
|
|
1054
|
-
1500,
|
|
1055
|
-
);
|
|
1056
|
-
if (brainRaw) {
|
|
1057
|
-
pass3LegacyTaskSucceeded = true;
|
|
1058
|
-
const lower = brainRaw.toLowerCase();
|
|
1059
|
-
// 4P-2: match `general` BEFORE the coding-category list so an
|
|
1060
|
-
// ambiguous prompt the model marked `general,*` doesn't accidentally
|
|
1061
|
-
// fall through to a substring hit later. `none` kept as legacy alias.
|
|
1062
|
-
if (/\bgeneral\b/.test(lower) || /\bnone\b/.test(lower)) {
|
|
1063
|
-
taskType = "general";
|
|
1064
|
-
confidence = 0.6;
|
|
1065
|
-
intentKind = "chitchat";
|
|
1066
|
-
if (outputStyle === null) {
|
|
1067
|
-
outputStyle = "concise";
|
|
1068
|
-
styleSource = "chitchat-default";
|
|
1069
|
-
}
|
|
1070
|
-
} else {
|
|
1071
|
-
const matched = VALID_TASK_TYPES.find((t) => lower.includes(t));
|
|
1072
|
-
if (matched) {
|
|
1073
|
-
taskType = matched;
|
|
1074
|
-
confidence = 0.55;
|
|
1075
|
-
intentKind = "task";
|
|
1076
|
-
}
|
|
1077
|
-
}
|
|
1078
|
-
const styleMatched = VALID_STYLES.find((s) => lower.includes(s));
|
|
1079
|
-
if (styleMatched) {
|
|
1080
|
-
outputStyle = styleMatched;
|
|
1081
|
-
styleSource = "brain-legacy";
|
|
1082
|
-
}
|
|
1083
|
-
}
|
|
1084
|
-
}
|
|
1085
|
-
|
|
1086
|
-
// Pass 3.5: regex style detection — free, always runs before any brain call.
|
|
1087
|
-
// Catches explicit user cues ("ngắn gọn", "chi tiết", "step by step").
|
|
1088
|
-
if (outputStyle === null) {
|
|
1089
|
-
const regexStyle = detectStyleFromText(ctx.raw);
|
|
1090
|
-
if (regexStyle) {
|
|
1091
|
-
outputStyle = regexStyle;
|
|
1092
|
-
styleSource = "explicit-regex";
|
|
1093
|
-
}
|
|
1094
|
-
}
|
|
1095
|
-
|
|
1096
|
-
// Pass 3b: style brain call — only when task detection ITSELF needed the
|
|
1097
|
-
// brain (pass3LegacyTaskAttempted). When pass1 or pass2 already decided
|
|
1098
|
-
// the task cheaply, the 800ms style call adds no signal (confirmed by
|
|
1099
|
-
// 112/112 wasted calls in production — 100% returned styleSource=none).
|
|
1100
|
-
// Default to "balanced" instead: clear, cheap, and accurate for most
|
|
1101
|
-
// coding turns.
|
|
1102
|
-
if (outputStyle === null && taskType !== null) {
|
|
1103
|
-
if (pass3LegacyTaskAttempted) {
|
|
1104
|
-
legacyBrainAttempted = true;
|
|
1105
|
-
pass3LegacyStyleAttempted = true;
|
|
1106
|
-
const brainRawStyle = await classifyViaBrain(
|
|
1107
|
-
`Detect the user's preferred output style. The prompt may be EN or VN.
|
|
1108
|
-
Reply with ONE word: concise (ngắn gọn) | balanced (bình thường) | detailed (chi tiết).
|
|
1109
|
-
|
|
1110
|
-
Prompt: "${ctx.raw.slice(0, 300)}"`,
|
|
1111
|
-
800,
|
|
1112
|
-
);
|
|
1113
|
-
if (brainRawStyle) {
|
|
1114
|
-
pass3LegacyStyleSucceeded = true;
|
|
1115
|
-
const styleMatched = VALID_STYLES.find((s) => brainRawStyle.toLowerCase().includes(s));
|
|
1116
|
-
if (styleMatched) {
|
|
1117
|
-
outputStyle = styleMatched;
|
|
1118
|
-
styleSource = "brain-legacy";
|
|
1119
|
-
}
|
|
1120
|
-
}
|
|
1121
|
-
} else {
|
|
1122
|
-
outputStyle = "balanced";
|
|
1123
|
-
styleSource = "classifier-default";
|
|
1124
|
-
}
|
|
1125
|
-
}
|
|
1126
|
-
} else if (unifiedFailed && outputStyle === null) {
|
|
1127
|
-
// Cheap rescue path when unified PIL is enabled but its call failed:
|
|
1128
|
-
// run only the free regex style detector. The L6 brain-rescue call is
|
|
1129
|
-
// suppressed below by the `_brainData` sentinel so we don't repeat the
|
|
1130
|
-
// same network round-trip that just timed out.
|
|
1131
|
-
const regexStyle = detectStyleFromText(ctx.raw);
|
|
1132
|
-
if (regexStyle) {
|
|
1133
|
-
outputStyle = regexStyle;
|
|
1134
|
-
styleSource = "explicit-regex";
|
|
1135
|
-
}
|
|
1136
|
-
}
|
|
1137
|
-
|
|
1138
|
-
if (intentKind === null && taskType !== null && taskType !== "general") {
|
|
1139
|
-
intentKind = "task";
|
|
1140
|
-
}
|
|
1141
|
-
|
|
1142
|
-
// Safety net (harness 817e508f57ee): an explicit command/tool-execution
|
|
1143
|
-
// request must NEVER be chitchat. Chitchat drops the whole toolset (incl.
|
|
1144
|
-
// bash) in message-processor, so a "run this command" turn would leave the
|
|
1145
|
-
// agent unable to act. Only ever UPGRADES chitchat → task (never the
|
|
1146
|
-
// reverse), so the token-saving for genuine greetings is preserved.
|
|
1147
|
-
if (intentKind === "chitchat" && hasActionableToolIntent(ctx.raw)) {
|
|
1148
|
-
intentKind = "task";
|
|
1149
|
-
}
|
|
1150
|
-
|
|
1151
|
-
// L6 brain-rescue suppression sentinel. L6 only checks truthiness of
|
|
1152
|
-
// _brainData to decide whether to spend another 50ms brain round-trip on
|
|
1153
|
-
// style detection. If we either (a) succeeded with unified pilContext,
|
|
1154
|
-
// (b) failed unified (network already down), or (c) attempted a legacy
|
|
1155
|
-
// brain call here, then L6 has nothing new to learn — set a sentinel.
|
|
1156
|
-
const brainDataOut: BrainData | null =
|
|
1157
|
-
brainData ??
|
|
1158
|
-
(unifiedFailed || legacyBrainAttempted
|
|
1159
|
-
? {
|
|
1160
|
-
t0_principles: [],
|
|
1161
|
-
t1_rules: [],
|
|
1162
|
-
t2_patterns: [],
|
|
1163
|
-
retrieval_skipped_reason: unifiedFailed ? "unified-failed" : "legacy-attempted",
|
|
1164
|
-
}
|
|
1165
|
-
: null);
|
|
1166
|
-
|
|
1167
|
-
// pass1Hit = Pass 1 alone decided the final outcome (no later pass overrode).
|
|
1168
|
-
// Note: chitchat short-circuit overrides Pass 1, so we exclude that case.
|
|
1169
|
-
const pass1Hit =
|
|
1170
|
-
pass1TaskType !== null &&
|
|
1171
|
-
taskType === pass1TaskType &&
|
|
1172
|
-
!pass2Hit &&
|
|
1173
|
-
!pass25ChitchatHit &&
|
|
1174
|
-
!pass3UnifiedSucceeded &&
|
|
1175
|
-
!pass3LegacyTaskSucceeded;
|
|
1176
|
-
|
|
1177
|
-
const { complexity, score: complexityScore } = scoreComplexity({
|
|
1178
|
-
rawText: ctx.raw,
|
|
1179
|
-
taskType,
|
|
1180
|
-
t0HitCount: 0, // TODO P2: feed from prior-run state.md if available
|
|
1181
|
-
hasMaxSprintsOne: false, // TODO P2: thread CLI flag down through ctx
|
|
1182
|
-
});
|
|
1183
|
-
|
|
1184
|
-
const intentTrace: IntentDetectionTrace = {
|
|
1185
|
-
pass1Reason: result.reason,
|
|
1186
|
-
pass1Confidence: result.confidence,
|
|
1187
|
-
pass1TaskType,
|
|
1188
|
-
pass1Hit,
|
|
1189
|
-
pass2Hit,
|
|
1190
|
-
pass2Pattern,
|
|
1191
|
-
pass25ChitchatHit,
|
|
1192
|
-
pass3UnifiedAttempted: needsBrain,
|
|
1193
|
-
pass3UnifiedSucceeded,
|
|
1194
|
-
pass3LegacyTaskAttempted,
|
|
1195
|
-
pass3LegacyTaskSucceeded,
|
|
1196
|
-
pass3LegacyStyleAttempted,
|
|
1197
|
-
pass3LegacyStyleSucceeded,
|
|
1198
|
-
pass4LlmAttempted,
|
|
1199
|
-
pass4LlmSucceeded,
|
|
1200
|
-
styleSource,
|
|
1201
|
-
finalTaskType: taskType,
|
|
1202
|
-
finalConfidence: confidence,
|
|
1203
|
-
complexity,
|
|
1204
|
-
complexityScore,
|
|
1205
|
-
};
|
|
1206
|
-
|
|
1207
|
-
return {
|
|
1208
|
-
...ctx,
|
|
1209
|
-
taskType,
|
|
1210
|
-
domain,
|
|
1211
|
-
confidence,
|
|
1212
|
-
outputStyle,
|
|
1213
|
-
intentKind,
|
|
1214
|
-
_brainData: brainDataOut,
|
|
1215
|
-
_intentTrace: intentTrace,
|
|
1216
|
-
layers: [
|
|
1217
|
-
...ctx.layers,
|
|
1218
|
-
{
|
|
1219
|
-
name: "intent-detection",
|
|
1220
|
-
applied: taskType !== null,
|
|
1221
|
-
delta:
|
|
1222
|
-
taskType !== null
|
|
1223
|
-
? `taskType=${taskType},kind=${intentKind ?? "unknown"},conf=${confidence.toFixed(2)},domain=${domain ?? "none"},style=${outputStyle ?? "none"},unified=${brainData ? "ok" : unifiedFailed ? "fail" : "skip"},llm=${pass4LlmSucceeded ? "ok" : pass4LlmAttempted ? "fail" : "skip"}`
|
|
1224
|
-
: unifiedFailed
|
|
1225
|
-
? `taskType=null,unified=fail,llm=${pass4LlmSucceeded ? "ok" : pass4LlmAttempted ? "fail" : "skip"}`
|
|
1226
|
-
: null,
|
|
1227
|
-
},
|
|
1228
|
-
],
|
|
1229
|
-
};
|
|
1230
|
-
} catch {
|
|
1231
|
-
return {
|
|
1232
|
-
...ctx,
|
|
1233
|
-
layers: [...ctx.layers, { name: "intent-detection", applied: false, delta: null }],
|
|
1234
|
-
};
|
|
1235
|
-
}
|
|
1236
|
-
}
|