From 8866ffb9703403bc271623ba8b4466310e6e2335 Mon Sep 17 00:00:00 2001 From: Max Date: Sun, 23 Aug 2026 15:32:45 +0200 Subject: [PATCH] feat(lint): add no-unused-vars ratchet scoped to src+open-sse+tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bar NEW unused vars/args/catches outside the `_` escape hatch via @typescript-eslint/no-unused-vars (args:"all", caughtErrors:"all", ignoreRestSiblings), scoped to src/**/*.{ts,tsx,js,jsx} + open-sse/**/*.ts + tests/**/*.{ts,tsx,mjs} — scripts/, bin/ and docs/ stay out of scope. Pre-existing violations (1393 across 1251 files) are frozen in config/quality/eslint-suppressions.json via --suppress-rule, same pattern as #7879 (toNumber tier-by-tier). Only genuinely NEW unused bindings fail lint from now on. Also untracks two docs/superpowers/* planning files that slipped into the tree via #11213 while being gitignored; their presence makes the tracked-artifacts pre-commit hook reject every new commit. Refs #9985 --- .../11247-ratchet-no-unused-vars.md | 1 + config/quality/eslint-suppressions.json | 4281 +++++++++++++++-- ...026-08-23-qdrant-configuration-guidance.md | 53 - ...23-qdrant-configuration-guidance-design.md | 64 - eslint.config.mjs | 25 + 5 files changed, 3852 insertions(+), 572 deletions(-) create mode 100644 changelog.d/maintenance/11247-ratchet-no-unused-vars.md delete mode 100644 docs/superpowers/plans/2026-08-23-qdrant-configuration-guidance.md delete mode 100644 docs/superpowers/specs/2026-08-23-qdrant-configuration-guidance-design.md diff --git a/changelog.d/maintenance/11247-ratchet-no-unused-vars.md b/changelog.d/maintenance/11247-ratchet-no-unused-vars.md new file mode 100644 index 00000000000..f86559b7b6a --- /dev/null +++ b/changelog.d/maintenance/11247-ratchet-no-unused-vars.md @@ -0,0 +1 @@ +- **chore(lint):** ratchet `@typescript-eslint/no-unused-vars` scoped to `src/` + `open-sse/` + `tests/` (`args: "all"`, `_`-prefix escape hatch) and freeze the 1393 pre-existing violations via bulk suppressions — same pattern as the #7879 `toNumber` ratchet. New unused bindings now fail lint. ([#11247](https://github.com/diegosouzapw/OmniRoute/pull/11247)) diff --git a/config/quality/eslint-suppressions.json b/config/quality/eslint-suppressions.json index 79875e31489..d873a51adb9 100644 --- a/config/quality/eslint-suppressions.json +++ b/config/quality/eslint-suppressions.json @@ -1,39 +1,209 @@ { + "open-sse/config/cliFingerprints.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/config/credentialLoader.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/config/providerRegistry.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 8 + } + }, + "open-sse/config/providers/registry/bailian-coding-plan/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/config/providers/registry/claude/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 7 + } + }, + "open-sse/config/providers/registry/vertex/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/config/providers/registry/zai/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/config/providers/shared.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/config/registryUtils.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/config/rerankRegistry.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/antigravity.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/executors/awsPollyTts.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/azure-openai.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/base.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, "open-sse/executors/blackbox-web.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "open-sse/executors/chipotle.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/claude-web.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/executors/cliproxyapi.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "open-sse/executors/codex.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/copilot-web.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/executors/cursor.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "open-sse/executors/deepseek-web.ts": { "@typescript-eslint/no-explicit-any": { "count": 12 } }, + "open-sse/executors/default.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/devin-cli.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/duckduckgo-web.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/executors/gemini-web.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 } }, + "open-sse/executors/ghe-copilot.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "open-sse/executors/github.ts": { "@typescript-eslint/no-explicit-any": { "count": 14 } }, + "open-sse/executors/gitlab.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/glm.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/executors/grok-web/tool-bridge.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/executors/hyperagent.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/kiro.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/executors/kiro/eventstream.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/executors/muse-spark-web.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/executors/notion-web.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/executors/opencode.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 } }, + "open-sse/executors/perplexity-web/protocol.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/executors/pollinations.ts": { "@typescript-eslint/no-explicit-any": { "count": 7 } }, + "open-sse/executors/raycast.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/executors/t3-chat-web.ts": { "@typescript-eslint/no-explicit-any": { "count": 11 @@ -47,11 +217,27 @@ "open-sse/executors/tinycmsSigner.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "open-sse/executors/vertex.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/handlers/chatCore.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 26 + } + }, + "open-sse/handlers/chatCore/clientUsageBuffer.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "open-sse/handlers/chatCore/comboContextCache.ts": { @@ -59,24 +245,58 @@ "count": 1 } }, + "open-sse/handlers/chatCore/executorHelpers.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/handlers/chatCore/passthroughHelpers.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/handlers/chatCore/streamFinalize.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/handlers/imageGeneration.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, "open-sse/handlers/musicGeneration.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, "open-sse/handlers/responseSanitizer.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-syntax": { "count": 1 } }, "open-sse/handlers/responseTranslator.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-syntax": { "count": 1 } }, + "open-sse/handlers/responsesHandler.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/handlers/search.ts": { "@typescript-eslint/no-explicit-any": { "count": 33 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "open-sse/handlers/sseParser.ts": { @@ -87,6 +307,19 @@ "open-sse/handlers/videoGeneration.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "open-sse/handlers/videoGeneration/leonardoHandler.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/handlers/videoGeneration/openai.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "open-sse/lib/deepseek-pow.ts": { @@ -114,10 +347,18 @@ "count": 1 } }, + "open-sse/mcp-server/httpTransport.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/mcp-server/server.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, "no-restricted-syntax": { "count": 1 } @@ -127,12 +368,30 @@ "count": 1 } }, + "open-sse/mcp-server/tools/compressionTools.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "open-sse/mcp-server/tools/gamificationTools.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 } }, + "open-sse/mcp-server/tools/githubSkillTools.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/mcp-server/tools/obsidianTools.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "open-sse/mcp-server/tools/pickFastestModel.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-syntax": { "count": 1 } @@ -142,11 +401,86 @@ "count": 1 } }, + "open-sse/services/__tests__/claudeTlsClient.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/__tests__/tierResolver.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/accountFallback.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/services/adobeFireflyClient.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/adobeFireflySession.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/services/agentrouterQuotaFetcher.ts": { "no-restricted-syntax": { "count": 1 } }, + "open-sse/services/alibabaFreeTierQuotaFetcher.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/antigravityClientProfile.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/antigravityIdentity.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/antigravityProjectBootstrap.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/antigravityQuotaFamily.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/autoCombo/__tests__/autoCombo.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/services/autoCombo/chaosEngine.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/services/autoCombo/engine.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/autoCombo/pipelineRouter.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/services/autoCombo/routerStrategy.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "open-sse/services/bailianQuotaFetcher.ts": { "no-restricted-syntax": { "count": 1 @@ -163,9 +497,27 @@ "count": 1 } }, + "open-sse/services/browserBackedChat.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "open-sse/services/claudeTurnstileSolver.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "open-sse/services/claudeWebAutoRefresh.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/codexAccount/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "open-sse/services/codexQuotaFetcher.ts": { @@ -178,19 +530,62 @@ "count": 1 } }, + "open-sse/services/combo.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 22 + } + }, "open-sse/services/combo/concurrencyCaps.ts": { "no-restricted-imports": { "count": 1 } }, + "open-sse/services/combo/providerWildcard.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/services/combo/quotaExhaustionCutoff.ts": { "no-restricted-imports": { "count": 1 } }, + "open-sse/services/comboAgentMiddleware.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/compression/aggressive.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "open-sse/services/compression/caveman.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/compression/engines/cavemanAdapter.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/compression/engines/ccr/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/services/compression/engines/headroom/gcf/decode_generic.ts": { "@typescript-eslint/no-explicit-any": { "count": 22 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/compression/engines/headroom/gcf/generic.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "open-sse/services/compression/engines/headroom/gcf/scalar.ts": { @@ -203,9 +598,22 @@ "count": 2 } }, + "open-sse/services/compression/stats.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/services/conversationTracker.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/services/credentialGate.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "open-sse/services/crofUsageFetcher.ts": { @@ -223,6 +631,16 @@ "count": 1 } }, + "open-sse/services/grokQuotaFetcher.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/imageCombo.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/services/inAppLoginService.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 @@ -233,9 +651,19 @@ "count": 1 } }, - "open-sse/services/opencodeOllamaUsage.ts": { - "no-restricted-syntax": { - "count": 1 + "open-sse/services/manifestAdapter.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/services/notionWebModels.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/opencodeOllamaUsage.ts": { + "no-restricted-syntax": { + "count": 1 } }, "open-sse/services/opencodeQuotaFetcher.ts": { @@ -243,24 +671,85 @@ "count": 1 } }, + "open-sse/services/providerCostData.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/rateLimitManager.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/services/routing/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/sessionPool/sessionPool.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "open-sse/services/taskAwareRouter.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 } }, + "open-sse/services/tierConfig.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/services/tierResolver.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/tlsClientBase.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/services/tokenLimitCounter.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-imports": { "count": 1 } }, + "open-sse/services/tokenRefresh.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "open-sse/services/toolLatencyTracker.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "open-sse/services/usage.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "open-sse/services/usage/codebuddy-cn.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/usage/github.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/services/usage/glm.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "open-sse/services/usage/scalars.ts": { @@ -273,6 +762,96 @@ "count": 1 } }, + "open-sse/services/videoCombo.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/transformer/responsesTransformer.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/translator/helpers/schemaCoercion.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/translator/request/claude-to-gemini.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/translator/request/openai-to-claude.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/translator/request/openai-to-cursor.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/translator/request/openai-to-gemini.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "open-sse/translator/request/openai-to-kiro.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/translator/response/cursor-to-openai.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/translator/response/openai-to-claude.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/translator/webTools.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/types.d.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/utils/bypassHandler.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/utils/cursorAgentProtobuf.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/utils/earlyStreamKeepalive.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/utils/error.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "open-sse/utils/ollamaTransform.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/utils/proxyDispatcher.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/utils/proxyFallback.ts": { "no-restricted-imports": { "count": 1 @@ -283,1046 +862,2294 @@ "count": 5 } }, + "open-sse/utils/stream.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "open-sse/utils/streamHelpers.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "open-sse/utils/streamPayloadCollector.ts": { "no-restricted-syntax": { "count": 1 } }, + "open-sse/utils/usageTracking.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/browser-worker.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "open-sse/vendor/codex-chatgpt-web/adapters/chatgpt-web/environment.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/HomePageClient.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, "react-hooks/exhaustive-deps": { "count": 1 } }, + "src/app/(dashboard)/dashboard/a2a/page.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, + "src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/api-manager/ApiManagerPageClient.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/batch/components/wizard/InputStep.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/cli-agents/CliAgentsPageClient.tsx": { "no-restricted-syntax": { "count": 4 } }, "src/app/(dashboard)/dashboard/cli-code/components/AntigravityToolCard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "react-hooks/exhaustive-deps": { "count": 1 } }, + "src/app/(dashboard)/dashboard/cli-code/components/ClineToolCard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/CopilotToolCard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/HermesAgentToolCard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/cli-code/components/KiloToolCard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/combos/page.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 9 + } + }, + "src/app/(dashboard)/dashboard/costs/CostOverviewTab.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "src/app/(dashboard)/dashboard/costs/costExplorerUtils.ts": { "no-restricted-syntax": { "count": 1 } }, - "src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx": { - "react-hooks/exhaustive-deps": { + "src/app/(dashboard)/dashboard/costs/quota-share/QuotaSharePageClient.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx": { - "@next/next/no-img-element": { - "count": 4 + "src/app/(dashboard)/dashboard/costs/quota-share/components/PoolWizard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, - "src/app/(dashboard)/dashboard/settings/components/AuthzSection.tsx": { - "no-restricted-syntax": { + "src/app/(dashboard)/dashboard/health/ProviderHealthAutopilotCard.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/(dashboard)/dashboard/settings/components/MitmProxyTab.tsx": { - "@next/next/no-html-link-for-pages": { + "src/app/(dashboard)/dashboard/health/page.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/(dashboard)/dashboard/settings/components/ProviderAccountRoutingCard.tsx": { - "react-hooks/exhaustive-deps": { + "src/app/(dashboard)/dashboard/mcp/page.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/onboarding/page.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/(dashboard)/dashboard/settings/components/SessionInfoCard.tsx": { + "src/app/(dashboard)/dashboard/playground/components/tabs/ApiTab.tsx": { "react-hooks/exhaustive-deps": { "count": 1 } }, - "src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentList.tsx": { - "no-restricted-syntax": { + "src/app/(dashboard)/dashboard/playground/components/tabs/CompareTab.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/__tests__/phase1f.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/CompatibleModelsSection.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionRow.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionsHeaderToolbar.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/ConnectionsListPanel.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 3 } }, - "src/app/(dashboard)/home/page.tsx": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/providers/[id]/components/EmptyConnectionsPlaceholder.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/auth/oidc/callback/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/providers/[id]/components/PassthroughModelsSection.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/components/__tests__/CursorAgentNudge.test.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/auth/oidc/login/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/providers/[id]/components/modals/ImportCodexAuthModal.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/batches/[id]/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelImportHandlers.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/batches/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/providers/[id]/hooks/useModelVisibilityHandlers.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/(dashboard)/dashboard/providers/[id]/hooks/useProviderConnections.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/cache/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/providers/page.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/app/(dashboard)/dashboard/providers/utils/buildCurl.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/cli-tools/claude-settings/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/resilience/connections/components/ConnectionDetail.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/cli-tools/codex-settings/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/resilience/connections/components/ConnectionsTable.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/cli-tools/keys/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/search-tools/components/SearchHistory.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/cli/connect/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/search-tools/components/tabs/CompareTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/combos/reorder/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/search-tools/components/tabs/SearchTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/combos/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/AppearanceTab.tsx": { + "@next/next/no-img-element": { + "count": 4 + } + }, + "src/app/(dashboard)/dashboard/settings/components/AuthzSection.tsx": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/combos/test/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/CliproxyapiSettingsTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/compression/compare/verify/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/ComboDefaultsTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/db-backups/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/CompressionSettingsTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/evals/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/MitmProxyTab.tsx": { + "@next/next/no-html-link-for-pages": { "count": 1 } }, - "src/app/api/evals/suites/[suiteId]/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/ModelAliasesTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/evals/suites/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/ModelCapabilityOverridesTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/files/[id]/content/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/ModelLockoutCard.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/files/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/ProviderAccountRoutingCard.tsx": { + "react-hooks/exhaustive-deps": { "count": 1 } }, - "src/app/api/internal/codex-responses-ws/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/ProxyRegistryManager.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/app/(dashboard)/dashboard/settings/components/ResponsesStatePolicyTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/keys/[id]/regenerate/route.ts": { - "no-restricted-imports": { + "src/app/(dashboard)/dashboard/settings/components/RoutingTab.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/keys/[id]/reveal/route.ts": { + "src/app/(dashboard)/dashboard/settings/components/SessionInfoCard.tsx": { + "react-hooks/exhaustive-deps": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/SystemStorageTab.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/settings/components/useProxyPoolModal.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/tools/agent-bridge/components/AgentList.tsx": { + "no-restricted-syntax": { + "count": 3 + } + }, + "src/app/(dashboard)/dashboard/tools/traffic-inspector/components/RequestStreamingList.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/tools/traffic-inspector/components/TopBarControls.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/translator/components/ResultNarrated.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/translator/components/SimpleControls.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/translator/components/TranslateTab.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/ProviderLimitCard.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/index.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/usage/components/ProviderLimits/utils.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/usage/components/RateLimitStatus.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/usage/components/SessionsTab.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/dashboard/webhooks/__tests__/webhook-wizard.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/(dashboard)/home/page.tsx": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/assess/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/auth/oidc/callback/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/auth/oidc/login/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/batches/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/batches/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/cache/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/cli-tools/claude-settings/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/cli-tools/cline-settings/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/cli-tools/codex-settings/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/cli-tools/keys/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/cli-tools/kilo-settings/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/cli/connect/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/combos/duplicate/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/api/combos/reorder/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/combos/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/combos/test/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/compression/compare/verify/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/db-backups/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/evals/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/evals/suites/[suiteId]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/evals/suites/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/files/[id]/content/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/files/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/github-skills/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/internal/codex-responses-ws/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/keys/[id]/regenerate/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/keys/[id]/reveal/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/keys/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/keys/groups/[id]/keys/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/keys/groups/[id]/permissions/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/keys/groups/[id]/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 9 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/keys/groups/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/keys/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/memory/reindex/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/memory/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/api/middleware/hooks/[name]/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/middleware/hooks/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/model-combo-mappings/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/model-combo-mappings/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/models/test-all/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/monitoring/health/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/oauth/[provider]/[action]/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "src/app/api/oauth/kiro/auto-import/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/pricing/models/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/pricing/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/provider-models/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/[id]/login/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/[id]/models/discovery/providerModelsConfig.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/providers/[id]/models/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 9 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/[id]/refresh/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/[id]/sync-models/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/[id]/test/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/bulk-web-session/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/providers/bulk/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/client/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/command-code/auth/apply/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/import/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/quota-windows/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/providers/validate/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/groups/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/groups/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/keys/[id]/models/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/plans/[connectionId]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/plans/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/pools/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/pools/[id]/usage/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/pools/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/quota/preview/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/rate-limits/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/relay/tokens/[id]/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/api/resilience/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/search/stats/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/services/[name]/logs/route.ts": { + "no-restricted-syntax": { + "count": 1 + } + }, + "src/app/api/settings/__tests__/memory.test.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/__tests__/settings.test.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/authz-inventory/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/auto-disable-accounts/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/combo-defaults/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/export-json/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/free-proxies/[id]/add-to-pool/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/free-proxies/bulk-add-to-pool/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/free-proxies/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/free-proxies/stats/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/memory/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/obsidian/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/api/settings/payload-rules/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/[id]/repair-relay/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/assignments/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/auto-test/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/batch-activate/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/batch-delete/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/bulk-assign/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/bulk-import/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/health/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/migrate/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/pool/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxies/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxy/cloudflare-deploy/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxy/deno-deploy/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxy/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxy/test/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/proxy/vercel-deploy/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/qdrant/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/quota-store/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/system-prompt/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/settings/thinking-budget/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/skills/collect/chaos/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/sync/cloud/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/sync/initialize/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/api/telegram/update/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/token-health/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/tools/agent-bridge/server/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/tools/traffic-inspector/ws/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/translator/send/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/translator/translate/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/usage/analytics/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/usage/quota/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/usage/token-limits/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/_helpers/apiKeyScope.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/audio/speech/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/audio/transcriptions/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/batches/[id]/cancel/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/batches/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/batches/delete-completed/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/batches/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/chat/completions/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/combos/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/embeddings/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/files/[id]/content/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/files/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/files/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/images/edits/route.ts": { + "no-restricted-imports": { + "count": 2 + } + }, + "src/app/api/v1/images/generations/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/management/proxies/assignments/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/management/proxies/bulk-assign/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/management/proxies/health/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/management/proxies/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/messages/count_tokens/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/messages/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/models/catalog.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 10 + }, + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/v1/models/catalogCache.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/models/catalogOpenrouter.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/moderations/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/music/generations/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/ocr/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/providers/[provider]/embeddings/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/app/api/v1/rerank/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/app/api/v1/search/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/app/api/v1/videos/generations/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/vscode/[token]/combos/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/vscode/[token]/models/route.ts": { + "no-restricted-syntax": { + "count": 1 + } + }, + "src/app/api/v1/vscode/combos/[token]/[[...slug]]/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1/vscode/raw/[token]/combos/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/api/v1beta/models/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/webhooks/[id]/deliveries/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/webhooks/[id]/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/api/webhooks/[id]/test/route.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "no-restricted-imports": { + "count": 2 + } + }, + "src/app/api/webhooks/route.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/app/docs/components/FeedbackWidget.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/app/login/page.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/domain/assessment/assessor.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/domain/assessment/selfHealer.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/domain/costRules.ts": { + "no-restricted-syntax": { + "count": 1 + } + }, + "src/domain/fallbackPolicy.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/domain/providerExpiration.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/domain/quotaCache.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/hooks/useLiveDashboard.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, + "react-hooks/exhaustive-deps": { + "count": 2 + } + }, + "src/lib/a2a/skills/healthReport.ts": { + "no-restricted-syntax": { + "count": 1 + } + }, + "src/lib/a2a/streaming.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/lib/api/proxyRegistryRouteHandlers.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/lib/cli-helper/config-generator/claude.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/lib/cli-helper/config-generator/cline.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/lib/cli-helper/config-generator/continue.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/lib/cli-helper/config-generator/hermes-agent.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/lib/cli-helper/config-generator/hermes.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/lib/cli-helper/config-generator/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/lib/cli-helper/config-generator/kilocode.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/lib/cli-helper/doctor/checks.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/lib/cloudSync.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/lib/combos/builderOptions.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/lib/combos/controlCenter.ts": { + "no-restricted-syntax": { + "count": 1 + } + }, + "src/lib/compliance/index.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "src/lib/container.ts": { + "no-restricted-imports": { + "count": 1 + } + }, + "src/lib/copilot/engine.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/lib/copilot/tools.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "src/lib/credentialHealth/scheduler.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-imports": { "count": 1 } }, - "src/app/api/keys/[id]/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/apiKeys.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, - "src/app/api/keys/groups/[id]/keys/route.ts": { - "no-restricted-imports": { + "src/lib/db/comboForecast.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/keys/groups/[id]/permissions/route.ts": { - "no-restricted-imports": { + "src/lib/db/compression.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/keys/groups/[id]/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/compressionCacheStats.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/keys/groups/route.ts": { - "no-restricted-imports": { + "src/lib/db/compressionCombos.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/keys/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/core.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, - "src/app/api/memory/reindex/route.ts": { - "no-restricted-imports": { + "src/lib/db/databaseSettings.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/middleware/hooks/[name]/route.ts": { - "no-restricted-imports": { + "src/lib/db/domainState.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/middleware/hooks/route.ts": { - "no-restricted-imports": { + "src/lib/db/files.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/model-combo-mappings/[id]/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/healthCheck.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/model-combo-mappings/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/middleware.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/models/test-all/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/migrationRunner.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/monitoring/health/route.ts": { - "no-restricted-imports": { + "src/lib/db/paramFilters.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/pricing/models/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/probeUtils.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/pricing/route.ts": { - "no-restricted-imports": { + "src/lib/db/prompts.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/provider-models/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/providers.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 } }, - "src/app/api/providers/[id]/login/route.ts": { - "no-restricted-imports": { + "src/lib/db/providers/lazyConnectionView.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/providers/[id]/models/route.ts": { - "no-restricted-imports": { + "src/lib/db/providers/usageIdentityReconciliation.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/providers/[id]/refresh/route.ts": { - "no-restricted-imports": { + "src/lib/db/proxies.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/providers/[id]/route.ts": { - "no-restricted-imports": { + "src/lib/db/quotaConsumption.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/providers/[id]/sync-models/route.ts": { - "no-restricted-imports": { + "src/lib/db/quotaSnapshots.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/providers/[id]/test/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/db/registeredKeys.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/providers/bulk/route.ts": { - "no-restricted-imports": { + "src/lib/db/tokenLimits.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/providers/client/route.ts": { - "no-restricted-imports": { + "src/lib/db/usageAnalytics/sources.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/providers/command-code/auth/apply/route.ts": { + "src/lib/evals/runtime.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/providers/import/route.ts": { + "src/lib/freeProxyProviders/scheduler.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/providers/quota-windows/route.ts": { + "src/lib/freeProxyProviders/syncCycle.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/providers/validate/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/guardrails/promptInjection.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/quota/groups/[id]/route.ts": { - "no-restricted-imports": { + "src/lib/guardrails/videoBridgeContactSheet.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/quota/groups/route.ts": { - "no-restricted-imports": { + "src/lib/guardrails/videoBridgeRuntime.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/quota/keys/[id]/models/route.ts": { - "no-restricted-imports": { + "src/lib/guardrails/visionBridgeHelpers.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/quota/plans/[connectionId]/route.ts": { - "no-restricted-imports": { + "src/lib/guardrails/visionBridgeRouter.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/quota/plans/route.ts": { + "src/lib/idempotencyLayer.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/quota/pools/[id]/route.ts": { + "src/lib/images/imageRouteModel.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/quota/pools/[id]/usage/route.ts": { - "no-restricted-imports": { + "src/lib/jobRegistry/index.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/quota/pools/route.ts": { + "src/lib/localHealthCheck.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/quota/preview/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/memory/__tests__/generic-backend.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 } }, - "src/app/api/rate-limits/route.ts": { - "no-restricted-imports": { + "src/lib/memory/__tests__/schemas.test.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/resilience/route.ts": { + "src/lib/memory/embedding/index.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/services/[name]/logs/route.ts": { - "no-restricted-syntax": { + "src/lib/memory/genericBackend.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/__tests__/memory.test.ts": { + "src/lib/memory/reindex.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/__tests__/settings.test.ts": { - "no-restricted-imports": { + "src/lib/memory/retrieval.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/authz-inventory/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/memory/sqliteBackend.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/settings/auto-disable-accounts/route.ts": { + "src/lib/memory/store.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/combo-defaults/route.ts": { + "src/lib/memory/vectorStore.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/export-json/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/middleware/registry.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/settings/free-proxies/[id]/add-to-pool/route.ts": { - "no-restricted-imports": { + "src/lib/modelsDevSync.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/free-proxies/bulk-add-to-pool/route.ts": { - "no-restricted-imports": { + "src/lib/monitoring/providerHealthAutopilot.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 - } - }, - "src/app/api/settings/free-proxies/route.ts": { + }, "no-restricted-imports": { "count": 1 + }, + "no-restricted-syntax": { + "count": 1 } }, - "src/app/api/settings/free-proxies/stats/route.ts": { - "no-restricted-imports": { + "src/lib/monitoring/providerHealthMatrix.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/settings/memory/route.ts": { - "no-restricted-imports": { + "src/lib/ngrokTunnel.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/payload-rules/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/notion/api.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/settings/proxies/[id]/repair-relay/route.ts": { - "no-restricted-imports": { + "src/lib/oauth/providers.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/proxies/assignments/route.ts": { - "no-restricted-imports": { + "src/lib/oauth/providers/cline.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/proxies/auto-test/route.ts": { - "no-restricted-imports": { + "src/lib/oauth/providers/codebuddy-cn.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/proxies/batch-activate/route.ts": { - "no-restricted-imports": { + "src/lib/oauth/providers/codex.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/proxies/batch-delete/route.ts": { - "no-restricted-imports": { + "src/lib/oauth/providers/ghe-copilot.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/proxies/bulk-assign/route.ts": { - "no-restricted-imports": { + "src/lib/oauth/providers/github.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/proxies/bulk-import/route.ts": { - "no-restricted-imports": { + "src/lib/oauth/providers/kimi-coding.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/proxies/health/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/oauth/providers/kiro.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, - "src/app/api/settings/proxies/migrate/route.ts": { + "src/lib/oauth/utils/agyAuthImport.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/proxies/pool/route.ts": { + "src/lib/oauth/utils/claudeAuthFile.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/proxies/route.ts": { + "src/lib/oauth/utils/claudeAuthImport.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/proxy/cloudflare-deploy/route.ts": { + "src/lib/oauth/utils/codexAuthFile.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/proxy/deno-deploy/route.ts": { + "src/lib/oauth/utils/codexAuthImport.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/proxy/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/obsidian/api.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/settings/proxy/test/route.ts": { - "no-restricted-imports": { + "src/lib/oneproxyRotator.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/proxy/vercel-deploy/route.ts": { - "no-restricted-imports": { + "src/lib/oneproxySync.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/qdrant/route.ts": { - "no-restricted-imports": { + "src/lib/piiSanitizer.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/quota-store/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/plugins/manager.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/settings/route.ts": { + "src/lib/providerModels/managedAvailableModels.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/settings/system-prompt/route.ts": { - "no-restricted-imports": { + "src/lib/providers/validation.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/settings/thinking-budget/route.ts": { - "no-restricted-imports": { + "src/lib/providers/validation/searchProviders.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/skills/collect/chaos/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/providers/validation/webProvidersA.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/sync/cloud/route.ts": { - "no-restricted-imports": { + "src/lib/providers/validation/webProvidersB.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/token-health/route.ts": { + "src/lib/proxyHealth/scheduler.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/tools/agent-bridge/server/route.ts": { + "src/lib/quota/planResolver.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/translator/send/route.ts": { - "no-restricted-imports": { + "src/lib/quota/quotaAdapters.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/translator/translate/route.ts": { + "src/lib/quota/quotaCombos.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/usage/quota/route.ts": { + "src/lib/quota/quotaKey.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/usage/token-limits/route.ts": { + "src/lib/quota/redisQuotaStore.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-imports": { "count": 1 } }, - "src/app/api/v1/_helpers/apiKeyScope.ts": { + "src/lib/quota/sqliteQuotaStore.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-imports": { "count": 1 } }, - "src/app/api/v1/audio/transcriptions/route.ts": { - "no-restricted-imports": { + "src/lib/semanticCache.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/v1/batches/[id]/cancel/route.ts": { - "no-restricted-imports": { + "src/lib/services/ServiceSupervisor.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/v1/batches/[id]/route.ts": { + "src/lib/services/quotaAutoPing.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/v1/batches/delete-completed/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/skills/a2a.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/app/api/v1/batches/route.ts": { - "no-restricted-imports": { + "src/lib/skills/builtin/browser.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/v1/combos/route.ts": { - "no-restricted-imports": { + "src/lib/skills/githubCollector.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/v1/files/[id]/content/route.ts": { - "no-restricted-imports": { - "count": 1 + "src/lib/skills/hybrid.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 7 } }, - "src/app/api/v1/files/[id]/route.ts": { - "no-restricted-imports": { + "src/lib/skills/memoryBuiltins.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/v1/files/route.ts": { - "no-restricted-imports": { + "src/lib/skills/schemas.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/v1/images/edits/route.ts": { - "no-restricted-imports": { - "count": 2 + "src/lib/sseTextTransform.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, - "src/app/api/v1/management/proxies/assignments/route.ts": { - "no-restricted-imports": { + "src/lib/streamingPiiTransform.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/v1/management/proxies/bulk-assign/route.ts": { + "src/lib/sync/bundle.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/v1/management/proxies/health/route.ts": { - "no-restricted-imports": { + "src/lib/tailscaleTunnel.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/v1/management/proxies/route.ts": { - "no-restricted-imports": { + "src/lib/telegram/initData.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/v1/messages/count_tokens/route.ts": { + "src/lib/tokenHealthCheck.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/v1/models/catalog.ts": { + "src/lib/tokenHealthCheckCopilot.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/v1/vscode/[token]/models/route.ts": { + "src/lib/usage/apiKeySelfService.ts": { "no-restricted-syntax": { "count": 1 } }, - "src/app/api/v1beta/models/route.ts": { - "no-restricted-imports": { + "src/lib/usage/apiKeyUsageLimits.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/app/api/webhooks/[id]/deliveries/route.ts": { - "no-restricted-imports": { + "src/lib/usage/callLogs.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/app/api/webhooks/[id]/route.ts": { + "src/lib/usage/codexResetCredits.ts": { "no-restricted-imports": { "count": 1 } }, - "src/app/api/webhooks/[id]/test/route.ts": { - "no-restricted-imports": { - "count": 2 + "src/lib/usage/costCalculator.ts": { + "no-restricted-syntax": { + "count": 1 } }, - "src/app/api/webhooks/route.ts": { - "no-restricted-imports": { + "src/lib/usage/fetcher.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 7 + } + }, + "src/lib/usage/internalUsageCommand.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/domain/costRules.ts": { + "src/lib/usage/providerWindowCosts.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-syntax": { "count": 1 } }, - "src/domain/quotaCache.ts": { - "no-restricted-imports": { + "src/lib/usage/routeExplain.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/hooks/useLiveDashboard.ts": { - "react-hooks/exhaustive-deps": { + "src/lib/versionManager/index.ts": { + "@typescript-eslint/no-unused-vars": { "count": 2 } }, - "src/lib/a2a/skills/healthReport.ts": { - "no-restricted-syntax": { - "count": 1 + "src/lib/versionManager/processManager.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, - "src/lib/api/proxyRegistryRouteHandlers.ts": { - "no-restricted-imports": { + "src/lib/warmupScheduler.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/cloudSync.ts": { + "src/lib/ws/handshake.ts": { "no-restricted-imports": { "count": 1 } }, - "src/lib/combos/builderOptions.ts": { - "no-restricted-imports": { + "src/lib/zed-oauth/keychain-reader.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/combos/controlCenter.ts": { - "no-restricted-syntax": { + "src/mitm/cert/install.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/mitm/dns/dnsConfig.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/container.ts": { - "no-restricted-imports": { + "src/mitm/dns/provision.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/credentialHealth/scheduler.ts": { + "src/mitm/manager.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "src/models/index.ts": { "no-restricted-imports": { "count": 1 } }, - "src/lib/db/comboForecast.ts": { - "no-restricted-syntax": { - "count": 1 + "src/server/ws/liveServer.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 5 } }, - "src/lib/db/domainState.ts": { - "no-restricted-syntax": { + "src/shared/components/DegradationBadge.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/db/prompts.ts": { - "no-restricted-syntax": { + "src/shared/components/KiroAuthModal.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/db/providers/lazyConnectionView.ts": { - "no-restricted-syntax": { + "src/shared/components/LanguageSelector.tsx": { + "@next/next/no-img-element": { "count": 1 } }, - "src/lib/db/tokenLimits.ts": { - "no-restricted-syntax": { + "src/shared/components/NotificationToast.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/evals/runtime.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/components/OAuthModal.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, - "src/lib/freeProxyProviders/scheduler.ts": { - "no-restricted-imports": { + "src/shared/components/PricingModal.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/freeProxyProviders/syncCycle.ts": { - "no-restricted-imports": { + "src/shared/components/ProxyConfigModal.tsx": { + "react-hooks/exhaustive-deps": { "count": 1 } }, - "src/lib/idempotencyLayer.ts": { - "no-restricted-imports": { + "src/shared/components/ProxyLogDetail.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/images/imageRouteModel.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/components/RequestLoggerV2.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, + "react-hooks/exhaustive-deps": { + "count": 6 } }, - "src/lib/localHealthCheck.ts": { - "no-restricted-imports": { + "src/shared/components/RequestTimeline.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/memory/embedding/index.ts": { - "no-restricted-imports": { + "src/shared/components/Sidebar.tsx": { + "@next/next/no-img-element": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/lib/memory/reindex.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/components/analytics/charts.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/lib/memory/store.ts": { - "no-restricted-imports": { + "src/shared/components/analytics/rechartsUsageCharts.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/memory/vectorStore.ts": { - "no-restricted-imports": { + "src/shared/components/docs/CodeBlock.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/monitoring/providerHealthAutopilot.ts": { - "no-restricted-imports": { - "count": 1 - }, - "no-restricted-syntax": { + "src/shared/components/docs/DocsBreadcrumbs.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/monitoring/providerHealthMatrix.ts": { - "no-restricted-syntax": { + "src/shared/components/docs/DocsSidebar.tsx": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/oauth/utils/agyAuthImport.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/components/docs/DocsThemeProvider.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, - "src/lib/oauth/utils/claudeAuthFile.ts": { - "no-restricted-imports": { + "src/shared/constants/agentSkills.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/oauth/utils/claudeAuthImport.ts": { - "no-restricted-imports": { + "src/shared/constants/capabilities/capabilityFilter.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/oauth/utils/codexAuthFile.ts": { - "no-restricted-imports": { + "src/shared/contracts/quota.ts": { + "no-restricted-syntax": { "count": 1 } }, - "src/lib/oauth/utils/codexAuthImport.ts": { - "no-restricted-imports": { + "src/shared/hooks/useTheme.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/providerModels/managedAvailableModels.ts": { - "no-restricted-imports": { + "src/shared/middleware/chatBodyAdmission.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/proxyHealth/scheduler.ts": { + "src/shared/services/apiKeyResolver.ts": { "no-restricted-imports": { "count": 1 } }, - "src/lib/quota/planResolver.ts": { - "no-restricted-imports": { + "src/shared/services/backupService.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/quota/quotaCombos.ts": { + "src/shared/services/cloudSyncScheduler.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-imports": { "count": 1 } }, - "src/lib/quota/quotaKey.ts": { + "src/shared/services/initializeCloudSync.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-imports": { "count": 1 } }, - "src/lib/quota/redisQuotaStore.ts": { + "src/shared/services/modelSyncScheduler.ts": { "no-restricted-imports": { "count": 1 } }, - "src/lib/quota/sqliteQuotaStore.ts": { + "src/shared/utils/apiAuth.ts": { "no-restricted-imports": { "count": 1 } }, - "src/lib/semanticCache.ts": { - "no-restricted-syntax": { + "src/shared/utils/apiKey.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/services/quotaAutoPing.ts": { + "src/shared/utils/apiKeyPolicy.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + }, "no-restricted-imports": { "count": 1 } }, - "src/lib/sync/bundle.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/utils/cloud.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "src/lib/tokenHealthCheck.ts": { - "no-restricted-imports": { + "src/shared/utils/requestTelemetry.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/tokenHealthCheckCopilot.ts": { - "no-restricted-imports": { + "src/shared/utils/structuredLogger.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/lib/usage/apiKeySelfService.ts": { - "no-restricted-syntax": { - "count": 1 + "src/shared/validation/schemas/apiV1.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 10 } }, - "src/lib/usage/apiKeyUsageLimits.ts": { - "no-restricted-syntax": { - "count": 1 + "src/shared/validation/schemas/auth.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/lib/usage/codexResetCredits.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/validation/schemas/cli.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/lib/usage/costCalculator.ts": { - "no-restricted-syntax": { - "count": 1 + "src/shared/validation/schemas/cloud.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/lib/usage/internalUsageCommand.ts": { - "no-restricted-syntax": { - "count": 1 + "src/shared/validation/schemas/combo.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 9 } }, - "src/lib/usage/providerWindowCosts.ts": { - "no-restricted-syntax": { - "count": 1 + "src/shared/validation/schemas/evals.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/lib/usage/routeExplain.ts": { - "no-restricted-syntax": { - "count": 1 + "src/shared/validation/schemas/gemini.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/lib/ws/handshake.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/validation/schemas/keys.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/models/index.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/validation/schemas/misc.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 9 } }, - "src/shared/components/LanguageSelector.tsx": { - "@next/next/no-img-element": { - "count": 1 + "src/shared/validation/schemas/payloadRules.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/shared/components/ProxyConfigModal.tsx": { - "react-hooks/exhaustive-deps": { - "count": 1 + "src/shared/validation/schemas/pricing.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/shared/components/RequestLoggerV2.tsx": { - "react-hooks/exhaustive-deps": { - "count": 6 + "src/shared/validation/schemas/provider.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 10 } }, - "src/shared/components/Sidebar.tsx": { - "@next/next/no-img-element": { - "count": 1 + "src/shared/validation/schemas/proxy.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/shared/contracts/quota.ts": { - "no-restricted-syntax": { - "count": 1 + "src/shared/validation/schemas/routing.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/shared/services/apiKeyResolver.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/validation/schemas/settings.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/shared/services/cloudSyncScheduler.ts": { - "no-restricted-imports": { - "count": 1 + "src/shared/validation/schemas/translator.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 11 } }, - "src/shared/services/initializeCloudSync.ts": { + "src/sse/handlers/autoRouting.ts": { "no-restricted-imports": { "count": 1 } }, - "src/shared/services/modelSyncScheduler.ts": { + "src/sse/handlers/chat.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 9 + } + }, + "src/sse/handlers/chatHelpers.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + }, "no-restricted-imports": { "count": 1 } }, - "src/shared/utils/apiAuth.ts": { - "no-restricted-imports": { + "src/sse/services/auth.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/shared/utils/apiKeyPolicy.ts": { + "src/sse/services/model.ts": { "no-restricted-imports": { - "count": 1 + "count": 2 } }, - "src/sse/handlers/autoRouting.ts": { + "src/sse/services/noAuthProviderSettings.ts": { "no-restricted-imports": { "count": 1 } }, - "src/sse/handlers/chatHelpers.ts": { + "src/sse/services/tokenRefresh.ts": { "no-restricted-imports": { "count": 1 } }, - "src/sse/services/model.ts": { - "no-restricted-imports": { + "tests/benchmarks/pipeline-accuracy.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/boundary/gemma4-multiturn.live.test.ts": { + "@typescript-eslint/no-unused-vars": { "count": 2 } }, - "src/sse/services/noAuthProviderSettings.ts": { - "no-restricted-imports": { + "tests/boundary/gemma4-newline-investigation.live.test.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "src/sse/services/tokenRefresh.ts": { - "no-restricted-imports": { + "tests/e2e/analytics-tabs.spec.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, @@ -1336,19 +3163,62 @@ "count": 17 } }, + "tests/e2e/group-b-redirect-logs-activity.spec.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/e2e/helpers/dashboardAuth.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 } }, + "tests/e2e/navigation.spec.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/e2e/protocol-clients.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 6 } }, + "tests/e2e/responsiveSpecs.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/e2e/search-tools-studio.spec.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/e2e/skills-marketplace.spec.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/e2e/system-failover.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/fixtures/welcome-banner-plugin/index.mjs": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/golden-set/compression-quality.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/integration/_chatPipelineHarness.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/integration/_comboRoutingHarness.ts": { @@ -1356,6 +3226,21 @@ "count": 3 } }, + "tests/integration/active-request-completion.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/integration/agent-skills-content.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/integration/all-statuses-route.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/integration/api-keys.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 23 @@ -1364,16 +3249,30 @@ "tests/integration/api-routes-critical.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 39 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/chat-pipeline.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 20 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/chatcore-compression-integration.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 9 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "tests/integration/cli-settings-forge.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/combo-live/_liveHarness.ts": { @@ -1389,16 +3288,25 @@ "tests/integration/combo-live/cost-and-fusion.live.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 29 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/combo-live/ordered.live.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/combo-matrix/context-relay-handoff.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/combo-provider-exhaustion.test.ts": { @@ -1411,29 +3319,71 @@ "count": 7 } }, + "tests/integration/compression-pipeline.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/integration/files-api.test.ts": { "no-restricted-imports": { "count": 1 } }, + "tests/integration/fingerprint-expansion.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/integration/gemini-tool-call-escaping.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 7 + } + }, + "tests/integration/live-gemini-agentic-loop.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/integration/live-gemini-nonstream.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/live-gemini-workload.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/integration/live-gemini.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/integration/liveDefaultComboShared.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/llama-cpp-provider.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/integration/memory-pipeline.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/memory-reindex.test.ts": { @@ -1444,21 +3394,43 @@ "tests/integration/memory-route-put.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 } }, "tests/integration/memory-summarize.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/integration/modelsDevSync.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/obsidian-plugin-e2e.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 12 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/integration/performance-regression.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/integration/pipeline-combo.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 7 } }, "tests/integration/proxy-context-passthrough.test.ts": { @@ -1476,14 +3448,42 @@ "count": 19 } }, + "tests/integration/quota-pools-usage.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/integration/resilience-http-e2e.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 } }, + "tests/integration/services/cliproxy-coexistence.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/integration/skills-pipeline.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 14 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/integration/traffic-inspector-error-sanitization.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/integration/traffic-inspector-hosts.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/integration/upstream-cli-smoke.int.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/integration/v1-contracts-behavior.test.ts": { @@ -1499,6 +3499,9 @@ "tests/theoldllm-stress.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 10 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/translator/testFromFile.ts": { @@ -1506,9 +3509,37 @@ "count": 3 } }, + "tests/unit/8370-priority-affinity-reorder.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/9034-alias-backed-prefix-id-repro.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/9560-turbopack-nft-lazy-module-fs.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/9568-gemini-tool-casing-mismatch.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/account-fallback-service.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/account-selector.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/acp-agents-route.test.ts": { @@ -1516,14 +3547,47 @@ "count": 2 } }, + "tests/unit/adaptive-admission-runtime.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/admin-audit-events.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 11 } }, + "tests/unit/admission-virtual-lanes-9654.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/adobe-firefly.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/adversarialPii.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/unit/agent-bridge-mappings-sync-8656.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/agent-skills-page.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/agentrouter-quota-visibility.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/agy-usage-quota.test.ts": { @@ -1541,6 +3605,11 @@ "count": 2 } }, + "tests/unit/antigravity-discovery-bootstrap.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/antigravity-local-usage-fallback-3821.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 @@ -1551,16 +3620,56 @@ "count": 3 } }, + "tests/unit/api-key-mask-fix.test.mjs": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, "tests/unit/api-key-reveal-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 8 } }, + "tests/unit/api/compression/compression-api.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/api/services/9router-models.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/api/services/9router-status-reveal.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/api/sync-models-readiness.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/api/v1/relay-completions-errors.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/unit/api/webhooks/webhook-url-ssrf-guard.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/apikey-connection-health-check.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "tests/unit/apikeypolicy-disable-non-public.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/audio-speech-handler.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 9 @@ -1586,6 +3695,11 @@ "count": 5 } }, + "tests/unit/auth-clear-provider-routes.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/auth-disable-cooling-2997.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 11 @@ -1601,6 +3715,16 @@ "count": 15 } }, + "tests/unit/authz/probe-9033-repro.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/autoCombo/tieredRotation.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/autocombo-unification.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -1609,6 +3733,19 @@ "tests/unit/bailian-quota-fetcher.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 21 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/bailian-usage.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "tests/unit/base-executor-buildheaders-extra-keys-8493.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/base-executor-sanitize-effort.test.ts": { @@ -1616,11 +3753,31 @@ "count": 6 } }, + "tests/unit/batch-a-domain.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/batch-b-final.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/batch-deletion.test.ts": { "no-restricted-imports": { "count": 1 } }, + "tests/unit/batch-page-static.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/batch-processor.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, "tests/unit/batch_api.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 7 @@ -1629,6 +3786,9 @@ "tests/unit/batch_results.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/unit/blackbox-web.test.ts": { @@ -1636,16 +3796,36 @@ "count": 10 } }, + "tests/unit/body-timeout-integration.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/build-next-isolated.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/build/check-licenses.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 5 } }, + "tests/unit/build/check-lockfile.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/bypass-handler.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 } }, + "tests/unit/cache-sweeps.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/call-log-cap.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 43 @@ -1661,9 +3841,17 @@ "count": 3 } }, + "tests/unit/capability-filter.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/cc-bridge-transforms.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 31 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cc-compatible-model-catalog.test.ts": { @@ -1676,6 +3864,11 @@ "count": 37 } }, + "tests/unit/chat-body-admission.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/chat-combo-live-test.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 6 @@ -1709,6 +3902,9 @@ "tests/unit/chat-route-edge-cases.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 7 } }, "tests/unit/chat-safetynet-reqid-6097.test.ts": { @@ -1719,6 +3915,14 @@ "tests/unit/chatcore-compression-integration.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "tests/unit/chatcore-memory-pressure.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/chatcore-translation-paths.test.ts": { @@ -1731,6 +3935,16 @@ "count": 6 } }, + "tests/unit/check-docs-symbols.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/unit/check-route-guard-membership.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/chipotle-executor.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -1751,19 +3965,37 @@ "count": 4 } }, - "tests/unit/claude-helper-minimax-output-config.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 3 + "tests/unit/claude-helper-minimax-output-config.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 3 + } + }, + "tests/unit/claude-to-openai-image-toolresult.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + } + }, + "tests/unit/claude-web-auto-refresh.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/claude-web.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "tests/unit/claude-to-openai-image-toolresult.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 + "tests/unit/claudeAuthImport.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-a2a-invoke-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 16 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-audit-commands.test.ts": { @@ -1774,21 +4006,33 @@ "tests/unit/cli-batches-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 16 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/unit/cli-chat.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 17 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/unit/cli-cloud-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 18 + }, + "@typescript-eslint/no-unused-vars": { + "count": 6 } }, "tests/unit/cli-combo-suggest-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 16 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-completion-dynamic.test.ts": { @@ -1804,6 +4048,9 @@ "tests/unit/cli-context-eng-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 19 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-cost.test.ts": { @@ -1824,16 +4071,30 @@ "tests/unit/cli-files-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 12 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-helper/config-generator.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/cli-helper/hermes-home-env.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-lang-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-mcp-call-commands.test.ts": { @@ -1846,29 +4107,64 @@ "count": 18 } }, + "tests/unit/cli-memory-types.test.mjs": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, "tests/unit/cli-nodes-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 19 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-oauth-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 20 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-oneproxy-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 22 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/cli-open-command.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/cli-openapi-codegen.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-openapi-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 6 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/cli-plugin-system.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-policy-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 20 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/unit/cli-pricing-commands.test.ts": { @@ -1879,6 +4175,9 @@ "tests/unit/cli-process-supervisor.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 6 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-program.test.ts": { @@ -1891,6 +4190,11 @@ "count": 15 } }, + "tests/unit/cli-redis-command.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/cli-remote-mode.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 5 @@ -1899,6 +4203,9 @@ "tests/unit/cli-resilience-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 16 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-runtime-extended.test.ts": { @@ -1906,9 +4213,22 @@ "count": 1 } }, + "tests/unit/cli-serve-stop-command.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/cli-server-commands.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/cli-sessions-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 12 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-simulate.test.ts": { @@ -1921,29 +4241,49 @@ "count": 22 } }, + "tests/unit/cli-stop-supervisor-respawn-9455.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/cli-stream.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 13 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-sync-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 21 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-tags-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 17 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/cli-telemetry-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 6 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/cli-translator-commands.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 16 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/unit/cli-usage.test.ts": { @@ -1956,6 +4296,26 @@ "count": 23 } }, + "tests/unit/cli/alias-resolver-7791.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/cli/cli-manifest-drift.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/cli/setup-continue.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/cliproxyapi-executor.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/cloud-agent-cursor-4227.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 @@ -1969,6 +4329,9 @@ "tests/unit/cloudflaredTunnel-extended.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/codex-banked-reset-credits-5199.test.ts": { @@ -1991,6 +4354,11 @@ "count": 4 } }, + "tests/unit/combo-auto-promote.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/combo-builder-options-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 5 @@ -2001,11 +4369,36 @@ "count": 2 } }, + "tests/unit/combo-context-overflow-compression-probe.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/combo-context-relay.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/combo-fingerprint-expansion.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/combo-health-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 } }, + "tests/unit/combo-pipeline.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/combo-prescreen.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/combo-provider-cooldown.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -2014,6 +4407,14 @@ "tests/unit/combo-provider-wildcard.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 18 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/combo-quota-share-cooldown-wait.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/combo-routes-composite-tiers.test.ts": { @@ -2031,11 +4432,26 @@ "count": 1 } }, + "tests/unit/combo-selected-connection-success.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/combo-session-stickiness.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/combo-sessionless-pin-3825.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 17 } }, + "tests/unit/combo-strategies.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/combo-strategy-fallbacks.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 33 @@ -2046,21 +4462,46 @@ "count": 17 } }, + "tests/unit/combo-task-aware.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/combo-test-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 10 } }, + "tests/unit/combos-duplicate-resolution-audit.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/combos-quota-protected.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 } }, + "tests/unit/comfyui-baseurl-override-6928.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/command-code-executor.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/command-code-maxtokens-negative-5166.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 } }, + "tests/unit/commandClassification.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/compliance-audit-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -2076,16 +4517,101 @@ "count": 3 } }, + "tests/unit/compression/caveman-engine.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/compression/codestripper-lazy-ts-7096.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/compression-header-dispatch.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/compressionMcpTools.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/compression/db.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 16 } }, + "tests/unit/compression/engine-catalog.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/compression/eval-runner.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "tests/unit/compression/gcf-benchmark.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/llmlingua-failopen.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/llmlingua-worker-resolution.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/omniglyph-registries.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/progressiveAging.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/relevance-engine.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/result-memo.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/rtk-grouping.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/compression/types.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/unit/compression/ultra.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/conductor-agent-card.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/conductor-ask-route.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/context-manager.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 10 @@ -2101,6 +4627,16 @@ "count": 4 } }, + "tests/unit/correctness/goldenSnapshot.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/cursor-agent-session.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/cursor-usage-fetcher.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -2111,6 +4647,16 @@ "count": 6 } }, + "tests/unit/dashboard/batch/components/NewBatchWizard.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/dashboard/batch/sanitization.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/db-agent-bridge-bypass.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -2126,6 +4672,11 @@ "count": 1 } }, + "tests/unit/db-backup-export-streaming-9045.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/db-combos-crud.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 9 @@ -2139,6 +4690,9 @@ "tests/unit/db-core-migration.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 7 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/db-core.test.ts": { @@ -2146,6 +4700,11 @@ "count": 4 } }, + "tests/unit/db-credit-balance.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/db-detailed-logs.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 @@ -2184,6 +4743,9 @@ "tests/unit/db-migration-runner.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 12 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/db-model-aliases-cascade.test.ts": { @@ -2214,6 +4776,9 @@ "tests/unit/db-providers-crud.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 18 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/db-proxies-crud.test.ts": { @@ -2226,6 +4791,11 @@ "count": 1 } }, + "tests/unit/db-quota-migrations-idempotency.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/db-quota-pools.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -2234,6 +4804,9 @@ "tests/unit/db-read-cache.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/db-registeredKeys-crud.test.ts": { @@ -2259,6 +4832,9 @@ "tests/unit/deepseek-quota-fetcher.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 8 + }, + "@typescript-eslint/no-unused-vars": { + "count": 5 } }, "tests/unit/deepseek-web-autorefresh-401-response.test.ts": { @@ -2266,14 +4842,27 @@ "count": 4 } }, + "tests/unit/deepseek-web.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/display-and-error-utils.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 } }, + "tests/unit/dns-config-generic.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/domain-branch-hardening.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/domain-cost-rules.test.ts": { @@ -2286,19 +4875,47 @@ "count": 1 } }, - "tests/unit/domain-lockout-policy.test.ts": { - "@typescript-eslint/no-explicit-any": { + "tests/unit/domain-lockout-policy.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "tests/unit/domain-persistence.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/duckduckgo-web-executor.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 8 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/electron-main.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "tests/unit/electron-preload.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/embedding-cooldown-integration-10347.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/embeddings-auth.test.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "tests/unit/duckduckgo-web-executor.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 8 - } - }, - "tests/unit/electron-main.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 + "tests/unit/embeddings-nvidia-input-type.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/embeddings-proxy-forwarding.test.ts": { @@ -2321,11 +4938,21 @@ "count": 19 } }, + "tests/unit/eviction-guards-codexQuotaFetcher.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/executor-agy.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "tests/unit/executor-antigravity.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/executor-base-utils.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 5 @@ -2341,6 +4968,11 @@ "count": 4 } }, + "tests/unit/executor-codex.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/executor-default-base.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 42 @@ -2369,12 +5001,23 @@ "tests/unit/fetch-timeout.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 7 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/field-400-downgrade.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/file-expiration-policy.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + }, "no-restricted-imports": { "count": 1 } @@ -2382,6 +5025,9 @@ "tests/unit/fix-tool-adjacency.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/fixes-p1.test.ts": { @@ -2389,6 +5035,11 @@ "count": 20 } }, + "tests/unit/functional-gateway-mirrors-append.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/gamification/events.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -2399,6 +5050,11 @@ "count": 3 } }, + "tests/unit/gemini-business-provider.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/gemini-finish-reason-normalization.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -2437,6 +5093,14 @@ "tests/unit/glm-provider-model-import-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/grok-quota-fetcher.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 7 } }, "tests/unit/grok-web.test.ts": { @@ -2444,31 +5108,111 @@ "count": 25 } }, + "tests/unit/gtts-provider.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/guardrails/visionBridgeHelpers.callVisionModel.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/head-request-closes-6400.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/i18n-nest-dotted-keys.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 } }, + "tests/unit/image-generation-fetch-timeout.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/image-generation-handler.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/image-generation-route.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/inspector-agent-bridge-hook.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 } }, + "tests/unit/json-size-exactness.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/kimi-credentials-extract.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/kimi-web-401-retry.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/kiro-tool-args-streaming.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "tests/unit/lib/batches/csvToJsonl.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/lib/jobRegistry/registry.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/lib/managementCliToken.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/lib/warmupScheduler/redisCircuitBreakerStore.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/unit/llamacpp-model-delete.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/lmarena-split-cookie-4271.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "tests/unit/lmarena-string-chunk-repro.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/log-retention.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 12 } }, + "tests/unit/log-rotation.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/management-password.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 @@ -2479,11 +5223,26 @@ "count": 4 } }, + "tests/unit/memory-embedding-remote.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/memory-extraction.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/memory-glm-injection.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "tests/unit/memory-retrieve-preview.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/memory-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 @@ -2514,11 +5273,31 @@ "count": 4 } }, + "tests/unit/model-deprecation.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/model-lockout-decay.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/model-lockout-max-cooldown.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 } }, + "tests/unit/model-overrides-provider-prefix-9557.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/model-strip.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/model-sync-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 16 @@ -2537,6 +5316,9 @@ "tests/unit/models-catalog-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 79 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/unit/modelsDevSync-extended.test.ts": { @@ -2544,6 +5326,11 @@ "count": 2 } }, + "tests/unit/modelsDevSync.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/moderations-handler.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 7 @@ -2564,6 +5351,11 @@ "count": 2 } }, + "tests/unit/oauth-400-recovery.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/oauth-providers-config.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 @@ -2574,11 +5366,21 @@ "count": 1 } }, + "tests/unit/obsidian-plugin-sync.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/ocr-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 8 } }, + "tests/unit/oidc-callback.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/openai-tool-opaque-object-schema.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 @@ -2609,6 +5411,11 @@ "count": 1 } }, + "tests/unit/opencode-premium-keyless-gate-8681.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/opencode-proxy-rotation-4954.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 6 @@ -2644,6 +5451,11 @@ "count": 2 } }, + "tests/unit/perplexity-web.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 7 + } + }, "tests/unit/persist-429-cooldown-account-fallback.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 7 @@ -2659,14 +5471,50 @@ "count": 1 } }, + "tests/unit/plugins-config.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/plugins-dev-mode.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/plugins-edge-cases.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/plugins-fs-safety.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/plugins-hooks.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/plugins-index.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 9 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/plugins-manager-lifecycle.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/plugins-welcome-banner-e2e.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 4 } }, "tests/unit/pollinations-jsonmode-3981.test.ts": { @@ -2674,6 +5522,11 @@ "count": 3 } }, + "tests/unit/probe-9575-tool-name-case.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, "tests/unit/prompt-injection-guard.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -2739,9 +5592,22 @@ "count": 8 } }, + "tests/unit/provider-proxy-lazy.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/provider-request-failure-pipeline.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 6 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/provider-scoped-aliases.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/provider-validation-hardening.test.ts": { @@ -2754,6 +5620,11 @@ "count": 1 } }, + "tests/unit/provider-validation-specialty.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, "tests/unit/providers-route-managed-catalog.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 @@ -2762,6 +5633,9 @@ "tests/unit/providers-validate-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/proxy-egress-visibility.test.ts": { @@ -2772,6 +5646,9 @@ "tests/unit/proxy-fetch.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/proxy-management-v1-route.test.ts": { @@ -2787,6 +5664,9 @@ "tests/unit/proxy-registry.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 54 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/proxy-resolution-status-filter.test.ts": { @@ -2794,6 +5674,16 @@ "count": 3 } }, + "tests/unit/proxySubscription.service.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/proxyfetch-direct-response-start-timeout-10214.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/qoder-executor.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -2814,54 +5704,162 @@ "count": 2 } }, + "tests/unit/quota-email-privacy.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/quota-enforce.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 6 + } + }, + "tests/unit/quota-fetch-throttle-scope-6911.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/quota-groups-crud.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, - "tests/unit/quota-groups-migration.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 + "tests/unit/quota-groups-migration.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "tests/unit/quota-helpers.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "tests/unit/quota-phase2.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/quota-pool-connections.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "tests/unit/quota-pool-delete-prune.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 2 + } + }, + "tests/unit/quota-pool-single-provider.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 9 + } + }, + "tests/unit/quota-redis-store.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/quota-spend-recorder.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/unit/quota-store-factory.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/quota-summed-budget.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/qwen-web-cookie-validation-3958.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 1 + } + }, + "tests/unit/radar-api-routes.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/radar-apply-feed.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/radar-db.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 5 + } + }, + "tests/unit/radar-referrals-sync.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/radar-sync.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/rate-limit-enhanced.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/rate-limit-queue-timeout-lockout.test.ts": { + "@typescript-eslint/no-explicit-any": { + "count": 4 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/rateLimitManager-idle-eviction.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, - "tests/unit/quota-helpers.test.ts": { - "@typescript-eslint/no-explicit-any": { + "tests/unit/rateLimitManager-update-sequencing.test.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "tests/unit/quota-pool-connections.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 + "tests/unit/refactor-buildHeaders-preamble.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, - "tests/unit/quota-pool-delete-prune.test.ts": { - "@typescript-eslint/no-explicit-any": { + "tests/unit/refactor-resolveBaseUrl.test.ts": { + "@typescript-eslint/no-unused-vars": { "count": 2 } }, - "tests/unit/quota-pool-single-provider.test.ts": { + "tests/unit/regional-provider-cn-notices-5462.test.ts": { "@typescript-eslint/no-explicit-any": { - "count": 9 + "count": 2 } }, - "tests/unit/qwen-web-cookie-validation-3958.test.ts": { - "@typescript-eslint/no-explicit-any": { + "tests/unit/registry-utils.test.ts": { + "@typescript-eslint/no-unused-vars": { "count": 1 } }, - "tests/unit/rate-limit-queue-timeout-lockout.test.ts": { + "tests/unit/remaining-tasks.test.ts": { "@typescript-eslint/no-explicit-any": { - "count": 4 + "count": 1 } }, - "tests/unit/regional-provider-cn-notices-5462.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 2 + "tests/unit/repro-7023.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, - "tests/unit/remaining-tasks.test.ts": { - "@typescript-eslint/no-explicit-any": { - "count": 1 + "tests/unit/repro-9406-claude-web-429-valid.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/request-log-payloads.test.ts": { @@ -2869,6 +5867,11 @@ "count": 4 } }, + "tests/unit/request-logger-endpoints.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/request-logger-signature.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 8 @@ -2884,6 +5887,11 @@ "count": 83 } }, + "tests/unit/responses-transformer.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/responses-translation-fixes.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 35 @@ -2892,6 +5900,24 @@ "tests/unit/route-edge-coverage.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 57 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/route-guard-loopback-via-proxy.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/routing-events-concurrency.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/unit/safe-outbound-fetch-probe-timeout.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/safe-outbound-fetch.test.ts": { @@ -2904,9 +5930,22 @@ "count": 12 } }, + "tests/unit/search-blocked-providers.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/search-handler-extended.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/search-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 7 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/security/cloud-sync-hmac.test.ts": { @@ -2914,6 +5953,16 @@ "count": 5 } }, + "tests/unit/serial/provider-health-autopilot.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/service-combo-metrics.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/service-context-handoff.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -2924,9 +5973,22 @@ "count": 1 } }, + "tests/unit/service-intent-classifier.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/service-system-transforms.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/service-token-limit-counter.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/services-branch-hardening.test.ts": { @@ -2934,9 +5996,47 @@ "count": 1 } }, + "tests/unit/services/embed-proxy.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/services/end-to-end-shape.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/services/installers/cliproxy.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, + "tests/unit/services/installers/ninerouter.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/services/lifecycle.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/services/logs-sse.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 7 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/services/modelSync.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/session-pool-modular.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/session-pool-rest-api.test.ts": { @@ -2944,6 +6044,11 @@ "count": 3 } }, + "tests/unit/session-pool.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/settings-route-password.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -2969,6 +6074,21 @@ "count": 1 } }, + "tests/unit/silent-sse-close-7699.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/skills-collect-routes.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/skills-registry.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/skills-routes.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 9 @@ -2987,6 +6107,19 @@ "tests/unit/sse-auth.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 13 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/sse-heartbeat-integration.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/sseTextTransform.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 } }, "tests/unit/startup-stale-cooldown-recovery.test.ts": { @@ -2999,9 +6132,27 @@ "count": 2 } }, + "tests/unit/stream-prompt-tokens-zero-upstream.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/stream-timing.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/stream-utilities.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/stream-utils.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 14 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/streamingPiiTransform.test.ts": { @@ -3019,6 +6170,11 @@ "count": 5 } }, + "tests/unit/t08-allowed-connections.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/t19-codex-responses-empty-content.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 @@ -3029,6 +6185,16 @@ "count": 1 } }, + "tests/unit/t3-chat-web.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/t31-t33-t34-t38-model-specs.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/t3chat-web-cookie-hint-5465.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -3044,11 +6210,26 @@ "count": 1 } }, + "tests/unit/tailscaleTunnel-anti-fold-10293.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/telemetry-summary-route.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 } }, + "tests/unit/thundering-herd.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/tlsClient-circuit-breaker.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/token-health-check-circuit-breaker.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -3062,6 +6243,9 @@ "tests/unit/token-limits.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/token-refresh-route-service.test.ts": { @@ -3072,6 +6256,9 @@ "tests/unit/token-refresh-service.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 17 + }, + "@typescript-eslint/no-unused-vars": { + "count": 3 } }, "tests/unit/tool-request-sanitization.test.ts": { @@ -3109,6 +6296,21 @@ "count": 1 } }, + "tests/unit/translator-friendly-page-client.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/translator-friendly-raw-json-panel.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/translator-friendly-translate-tab.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/translator-helper-branches.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 25 @@ -3119,6 +6321,11 @@ "count": 76 } }, + "tests/unit/translator-openai-to-claude.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/translator-openai-to-gemini.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 74 @@ -3144,11 +6351,21 @@ "count": 17 } }, + "tests/unit/translator-resp-empty-string-tool-arg.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, "tests/unit/translator-resp-gemini-to-openai.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 75 } }, + "tests/unit/translator-resp-openai-responses-roundtrip.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 4 + } + }, "tests/unit/translator-resp-openai-to-claude.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 14 @@ -3169,11 +6386,121 @@ "count": 9 } }, + "tests/unit/tryBackedChat.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/ui/activity-page-redirect.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/allocation-table.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/cheaperInferenceSponsorBanner.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/cli-code-detail-page.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/combo-defaults-fusion-5598.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/engine-tab.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/fleetAggregation.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 3 + } + }, + "tests/unit/ui/memories-tab.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/model-alias-edit.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/model-capability-overrides-tab-9557.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/ui/model-select-modal-deselect.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/playground-compare-tab.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/playground-structured-output-editor.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/provider-quota-widget-auto-refresh-label-4611.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, + "tests/unit/ui/search-tools-compare-tab.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/search-tools-scrape-tab.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/search-tools-search-tab.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/use-stream-metrics.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/use-traffic-stream.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/ui/useToolBatchStatuses.test.tsx": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/universal-handoff.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 16 } }, + "tests/unit/usage-analytics-route.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/usage-analytics.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 5 @@ -3204,14 +6531,25 @@ "count": 4 } }, + "tests/unit/vercel-deploy-sso-protection-check.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/version-manager.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 } }, "tests/unit/versionManager-orchestrator.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "@typescript-eslint/no-unused-vars": { + "count": 2 } }, "tests/unit/vertex-express-apikey.test.ts": { @@ -3224,9 +6562,32 @@ "count": 3 } }, + "tests/unit/video-custom-provider-route.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, "tests/unit/vscode-token-routes.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 65 + }, + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/waitForServer-tcp-fallback-6800.test.mjs": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/warmupScheduler.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 1 + } + }, + "tests/unit/web-cookie-providers-new.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 5 } }, "tests/unit/web-runtime-env.test.ts": { @@ -3234,6 +6595,11 @@ "count": 1 } }, + "tests/unit/web-search-9279-repro.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } + }, "tests/unit/web-search-fallback-format.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -3248,5 +6614,10 @@ "@typescript-eslint/no-explicit-any": { "count": 5 } + }, + "tests/unit/xiaomi-providers-registry.test.ts": { + "@typescript-eslint/no-unused-vars": { + "count": 2 + } } -} \ No newline at end of file +} diff --git a/docs/superpowers/plans/2026-08-23-qdrant-configuration-guidance.md b/docs/superpowers/plans/2026-08-23-qdrant-configuration-guidance.md deleted file mode 100644 index d99670f92f8..00000000000 --- a/docs/superpowers/plans/2026-08-23-qdrant-configuration-guidance.md +++ /dev/null @@ -1,53 +0,0 @@ -# Qdrant Configuration Guidance Implementation Plan - -> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. - -**Goal:** Explain Qdrant configuration and prevent activation until a real embedding-to-Qdrant search verifies the selected model and collection work together. - -**Architecture:** The health route remains read-only but exposes collection vector metadata. The card provides a localized mini tutorial and requires a successful search test before activation; that test produces an actual embedding, so it detects mismatched dimensions without guessing a model's size. - -**Tech Stack:** Next.js App Router, React, TypeScript, Zod, next-intl, Node test runner, Vitest. - ---- - -### Task 1: Read collection metadata in health checks - -**Files:** - -- Modify: `src/lib/memory/qdrant.ts` -- Modify: `tests/integration/qdrant-routes.test.ts` - -- [ ] Add a failing integration test that mocks `/readyz` and `GET /collections/omniroute_memory`, then expects `collection: { exists: true, vectorSize: 2048, vectorName: "omniao" }` from the health route. -- [ ] Run `node --import tsx/esm --test tests/integration/qdrant-routes.test.ts` and observe the expected failure because health lacks collection metadata. -- [ ] Add `getQdrantCollectionMetadata()` to `src/lib/memory/qdrant.ts`. It may only read `GET /collections/` and returns `{ exists: false }` or `{ exists: true, vectorSize, vectorName }`. It handles unnamed `vectors.size` and named-vector maps; it never returns API keys or changes Qdrant state. -- [ ] Extend `checkQdrantHealth()` to return this metadata after a successful `/readyz` probe. -- [ ] Re-run `node --import tsx/esm --test tests/integration/qdrant-routes.test.ts` and confirm it passes. - -### Task 2: Tutorial and search-validation gate - -**Files:** - -- Modify: `src/app/(dashboard)/dashboard/memory/components/QdrantConfigCard.tsx` -- Modify: `tests/unit/ui/qdrant-config-card.test.tsx` - -- [ ] Add failing component tests for a `data-testid="qdrant-setup-tutorial"` trigger, tutorial credit, disabled enable action before validation, and enabled action after a successful `/api/settings/qdrant/search` result. -- [ ] Run `npx vitest run tests/unit/ui/qdrant-config-card.test.tsx` and observe the expected failure. -- [ ] Add `tutorialOpen` and `searchValidated` state. Reset `searchValidated` when configuration is saved or search fails; set it only after `{ ok: true }` from the search endpoint. -- [ ] Disable only the transition that enables Qdrant while `searchValidated` is false; allow disabling normally. -- [ ] Render a compact modal opened from the tutorial trigger. It explains vector-memory retrieval, indirect token savings, HTTPS/API-key protection, matching dimensions, collection creation, and Save → Test connection → Test search. Add credit text through i18n: `Rafa Martins — rafacpti@gmail.com`. -- [ ] Display the health-route collection state: missing collection, unnamed vector size, or named vector plus size. -- [ ] Re-run `npx vitest run tests/unit/ui/qdrant-config-card.test.tsx` and confirm it passes. - -### Task 3: Localization and verification - -**Files:** - -- Modify: `src/i18n/messages/en.json` -- Modify: `src/i18n/messages/pt-BR.json` - -- [ ] Add matching English and Portuguese `memory.qdrant` strings for tutorial content, collection states, validation requirement, and credit. -- [ ] Format changed code with `npx prettier --write`. -- [ ] Run `node --import tsx/esm --test tests/integration/qdrant-routes.test.ts`. -- [ ] Run `npx vitest run src/lib/memory/__tests__/qdrant-wiring.test.ts tests/unit/ui/qdrant-config-card.test.tsx`. -- [ ] Run `npm run typecheck:core`. -- [ ] Commit with `feat: guide Qdrant memory configuration`, push `rafacpti23/qdrant-configuration-guidance` to `origin`, and open a draft PR to `diegosouzapw/OmniRoute`. diff --git a/docs/superpowers/specs/2026-08-23-qdrant-configuration-guidance-design.md b/docs/superpowers/specs/2026-08-23-qdrant-configuration-guidance-design.md deleted file mode 100644 index d78c52812bf..00000000000 --- a/docs/superpowers/specs/2026-08-23-qdrant-configuration-guidance-design.md +++ /dev/null @@ -1,64 +0,0 @@ -# Qdrant Configuration Guidance Design - -## Goal - -Make the Memory > Engine > Qdrant experience explain what Qdrant does, guide users through a safe configuration, and verify that the selected Qdrant collection accepts embeddings produced by the configured OmniRoute model before Qdrant is enabled. - -## Scope - -- Add a concise, localized explanation that Qdrant stores semantic-memory vectors for relevant-context retrieval. It is not a token compressor; token savings are indirect and depend on less irrelevant context being injected. -- Add a configuration checklist covering a protected Qdrant endpoint, host/port, collection, embedding provider/model, matching vector dimensions, connection test, and search test. -- Extend the authenticated Qdrant health route to inspect the configured collection without creating, updating, searching, or deleting points. Return the collection vector dimension and a clear state when the collection is absent or uses named vectors. -- Show a pre-enable compatibility result in the Qdrant card. If the endpoint is reachable but the vector dimension cannot be determined from the selected embedding model, the UI must explain that the search test is the authoritative end-to-end validation. If dimensions differ, the UI must block enabling and explain how to create a compatible collection. -- Keep the existing behavior that initial writes create a missing collection using the embedding dimension detected from the first successful embedding. - -## User Flow - -1. The user opens Dashboard > Memory > Engine and reads the purpose and prerequisites. -2. The user enters Qdrant host, port, collection, optional API key, and an embedding provider/model with a configured provider credential. -3. The user saves settings and clicks Test connection. -4. The health result reports endpoint status and, for an existing collection, its vector dimensions and named-vector configuration. -5. The user runs Test search. This generates an embedding through OmniRoute and proves that the model dimension matches the collection and that retrieval works. -6. The Enable control remains unavailable after a known incompatibility; otherwise it follows the existing setting update path, which sets `memoryVectorStore` to `qdrant`. - -## Collection Creation Guidance - -The UI will provide copyable Qdrant REST guidance, using a placeholder dimension rather than assuming one for every model: - -```json -PUT /collections/ -{ - "vectors": { "size": , "distance": "Cosine" } -} -``` - -For the audited server, the existing `omniroute_memory` collection has a named 2048-dimensional vector. It must be paired with the same 2048-dimensional embedding model that created it. The default `openai/text-embedding-3-small` emits 1536-dimensional vectors and therefore requires a separate 1536-dimensional collection. - -## API Contract - -`GET /api/settings/qdrant/health` will retain `{ ok, latencyMs, error? }` and add optional read-only metadata: - -```ts -{ - collection?: { - exists: boolean; - vectorSize?: number; - vectorName?: string | null; - }; -} -``` - -The route must never expose Qdrant API keys. It must sanitize upstream error text before returning it. - -## Error Handling - -- A disconnected endpoint remains an error result, without changing settings. -- A missing collection is guidance, not an error: OmniRoute creates it on the first successful Qdrant write. -- A known dimension mismatch blocks enabling and tells the user to choose a matching model or a separate collection. -- A model whose dimension cannot be determined does not claim compatibility; the user must run Test search. - -## Testing - -- Route tests cover health metadata for single-vector, named-vector, missing-collection, and sanitized upstream-error responses. -- Component tests cover the purpose explanation, checklist, compatible/mismatch/missing collection states, and disabled enable action on a mismatch. -- Existing Qdrant route and card tests remain green. diff --git a/eslint.config.mjs b/eslint.config.mjs index 4d54c7e91a9..cf70711662a 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -145,6 +145,31 @@ const eslintConfig = [ "react-hooks/rules-of-hooks": "off", }, }, + // Ratchet: bar NEW unused vars/args/catches outside the `_` escape hatch. + // Pre-existing violations are frozen via config/quality/eslint-suppressions.json + // (same pattern as #7879 toNumber); only genuinely NEW unused bindings fail + // lint. `args: "all"` (not `after-used`) so a leading unused param is never + // silently skipped, e.g. `function handle(req, _opts, next)` must flag `req`. + { + files: ["src/**/*.{ts,tsx,js,jsx}", "open-sse/**/*.ts", "tests/**/*.{ts,tsx,mjs}"], + plugins: { + "@typescript-eslint": tseslint.plugin, + }, + rules: { + "@typescript-eslint/no-unused-vars": [ + "error", + { + args: "all", + argsIgnorePattern: "^_", + varsIgnorePattern: "^_", + caughtErrors: "all", + caughtErrorsIgnorePattern: "^_", + destructuredArrayIgnorePattern: "^_", + ignoreRestSiblings: true, + }, + ], + }, + }, // Global ignores — keep ESLint scoped to source files only { ignores: [