diff --git a/audit-report.json b/audit-report.json deleted file mode 100644 index 0d8c271630..0000000000 --- a/audit-report.json +++ /dev/null @@ -1,48 +0,0 @@ -{ - "auditReportVersion": 2, - "vulnerabilities": { - "follow-redirects": { - "name": "follow-redirects", - "severity": "moderate", - "isDirect": false, - "via": [ - { - "source": 1116560, - "name": "follow-redirects", - "dependency": "follow-redirects", - "title": "follow-redirects leaks Custom Authentication Headers to Cross-Domain Redirect Targets", - "url": "https://github.com/advisories/GHSA-r4q5-vmmm-2653", - "severity": "moderate", - "cwe": ["CWE-200"], - "cvss": { - "score": 0, - "vectorString": null - }, - "range": "<=1.15.11" - } - ], - "effects": [], - "range": "<=1.15.11", - "nodes": ["node_modules/follow-redirects"], - "fixAvailable": true - } - }, - "metadata": { - "vulnerabilities": { - "info": 0, - "low": 0, - "moderate": 1, - "high": 0, - "critical": 0, - "total": 1 - }, - "dependencies": { - "prod": 421, - "dev": 480, - "optional": 158, - "peer": 480, - "peerOptional": 0, - "total": 1462 - } - } -} diff --git a/pr_metadata.json b/pr_metadata.json deleted file mode 100644 index 37ad0c69a5..0000000000 --- a/pr_metadata.json +++ /dev/null @@ -1,2102 +0,0 @@ -[ - { - "additions": 149, - "author": { - "id": "MDQ6VXNlcjM1NzM4Ng==", - "is_bot": false, - "login": "andrewmunsell", - "name": "Andrew Munsell" - }, - "baseRefName": "main", - "body": "## Summary\r\n\r\n- Add tokens_compressed INTEGER column to call_logs (migration 041)\r\n- Capture compression savings from both legacy compressContext() and modular applyCompression() pipelines in chatCore.ts\r\n- Display inline ↓N purple badge in log list view tokens cell\r\n- Show \"Compressed: FROM → TO (-X%)\" badge in detail modal Input section\r\n- Bump CallLogArtifact schemaVersion from 4 to 5\r\n\r\n\"CleanShot\r\n\"CleanShot\r\n\r\n## Tests Added Or Updated\r\n\r\n- Add compression tokens unit tests\r\n", - "createdAt": "2026-05-04T03:48:16Z", - "deletions": 7, - "files": [ - { - "path": "open-sse/handlers/chatCore.ts", - "additions": 7, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "src/i18n/messages/en.json", - "additions": 1, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "src/lib/db/core.ts", - "additions": 4, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "src/lib/db/migrationRunner.ts", - "additions": 2, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "src/lib/db/migrations/041_compression_tokens.sql", - "additions": 4, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/lib/usage/callLogArtifacts.ts", - "additions": 2, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "src/lib/usage/callLogs.ts", - "additions": 8, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "src/lib/usage/migrations.ts", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "src/shared/components/RequestLoggerDetail.tsx", - "additions": 10, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "src/shared/components/RequestLoggerV2.tsx", - "additions": 11, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "tests/unit/call-log-cap.test.ts", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "tests/unit/compression-tokens.test.ts", - "additions": 98, - "deletions": 0, - "changeType": "ADDED" - } - ], - "headRefName": "emdash/indicate-compression-in-logs-use9w", - "number": 1923, - "title": "feat(logs): show compression tokens in request log UI" - }, - { - "additions": 1698, - "author": { - "id": "MDQ6VXNlcjE0OTIxOTgz", - "is_bot": false, - "login": "oyi77", - "name": "Paijo" - }, - "baseRefName": "release/v3.7.9", - "body": "Adds automated model assessment, categorization, and self-healing system for omniroute combos.\n\n## The Problem\nWhen providers fail (rate limits, auth errors, model deprecation), combos silently degrade. Our production experience: 2+ hours manually testing models and updating 44 combos because most returned errors.\n\n## The Solution\nThree new domain modules:\n1. **Assessor** - Probes every provider/model pair (quick/standard/deep tiers)\n2. **Categorizer** - Classifies models by capability with fitness scores\n3. **SelfHealer** - Auto-fixes combos: removes dead models, reduces weights for rate-limited, emergency-adds working alternatives\n\n## New Files\n- src/domain/assessment/assessor.ts\n- src/domain/assessment/categorizer.ts\n- src/domain/assessment/selfHealer.ts\n- src/domain/assessment/types.ts\n- src/domain/assessment/migration.ts\n- src/domain/assessment/index.ts\n- src/app/api/assess/route.ts\n- docs/RFC-AUTO-ASSESSMENT.md (full RFC)\n\n## New DB Tables\n- model_assessments, assessment_runs, combo_health, heal_actions\n\n## API\nPOST /api/assess/models - Run assessment\nGET /api/assess/models?action=working - Get working models\nGET /api/assess/models?action=combo-health - Get combo health\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.", - "createdAt": "2026-05-03T20:53:04Z", - "deletions": 0, - "files": [ - { - "path": "docs/RFC-AUTO-ASSESSMENT.md", - "additions": 518, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/app/api/assess/route.ts", - "additions": 110, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/domain/assessment/assessor.ts", - "additions": 206, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/domain/assessment/categorizer.ts", - "additions": 118, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/domain/assessment/index.ts", - "additions": 24, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/domain/assessment/migration.ts", - "additions": 109, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/domain/assessment/selfHealer.ts", - "additions": 261, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/domain/assessment/types.ts", - "additions": 352, - "deletions": 0, - "changeType": "ADDED" - } - ], - "headRefName": "feat/auto-assessment-engine", - "number": 1918, - "title": "feat: Auto-Assessment and Self-Healing Combo Engine" - }, - { - "additions": 22666, - "author": { - "id": "MDQ6VXNlcjgwMTY4NDE=", - "is_bot": false, - "login": "diegosouzapw", - "name": "Diego Rodrigues de Sa e Souza" - }, - "baseRefName": "main", - "body": "### ✨ New Features\n\n- **feat(compression):** major upgrade to Caveman and RTK compression pipelines (#1876, #1889):\n - Add RTK tool-output compression, stacked Caveman + RTK pipelines, compression combo assignments, dashboard context pages, MCP management tools, and language-aware Caveman rule packs.\n - Expand RTK parity with a 39-filter catalog, RTK-style JSON DSL stages, inline verify/benchmark coverage, trust-gated custom filters, expanded command detection, and redacted raw-output recovery.\n - Expose rule intensities, track USD savings, unify config validation, and persist MCP savings.\n - Expand Caveman parity and MCP metadata compression.\n- **feat(provider):** update Jina AI model catalog to support Embeddings and Rerank natively (#1874 — thanks @backryun)\n- **feat(provider):** add NanoGPT image generation provider (#1899 — thanks @Aculeasis)\n- **feat(ui):** move proxy configuration to dedicated System → Proxy page (#1907 — thanks @oyi77)\n- **feat(ui):** add K/M/B/T cost shortener utility (#1902 — thanks @oyi77)\n- **feat(providers):** implement bulk paste for extra API keys (#1916 — thanks @0xtbug)\n- **feat(analytics):** usage history API key backfill + dark mode pricing (#1896 — thanks @Gi99lin)\n\n### 🐛 Bug Fixes\n\n- **fix(providers):** allow local OpenAI-compatible endpoints (like Ollama) to be added without an API key (fixes #1893)\n- **fix(copilot):** emit compatible reasoning text deltas (#1919 — thanks @ivan-mezentsev)\n- **fix(api-manager):** show validation errors inline in modals, not behind (#1920 — thanks @andrewmunsell)\n- **fix(compression):** align seeded standard savings combo with stacked default, preserve stacked defaults, and secure metadata routes.\n- **fix(gemini-cli):** separate Cloud Code transport from Antigravity (#1869 — thanks @dhaern)\n- **fix(codex):** map prompt field to input array for Cursor compatibility (fixes #1872)\n- **fix(core):** align stream parameter default to false per strict OpenAI spec (fixes #1873)\n- **fix(ui):** restore Next.js CSP `unsafe-eval` in production `script-src` to fix unresponsive Onboarding button (fixes #1883)\n- **fix(proxy):** globally strip `prompt_cache_retention` in `BaseExecutor` to prevent upstream 400 errors from strict endpoints like droid/gemini-2-pro (fixes #1884)\n- **fix(ui):** include `isOpen` dependency in `EditConnectionModal` state sync to ensure `maxConcurrent` is properly hydrated when reopening the modal (fixes #1859)\n- **fix(security):** remediate 4 polynomial-redos CodeQL alerts in compression regexes by bounding repetitions and removing overlapping quantifiers\n- **fix(codex):** flatten Chat Completions tool format to Codex Responses format in `normalizeCodexTools` — prevents `Missing required parameter: tools[0].name` upstream errors (#1914 — thanks @tranduykhanh030)\n- **fix(proxy):** add proxy-aware execution context to image generation route — proxy settings are now correctly applied for image providers behind restricted networks (#1904 — thanks @Aculeasis)\n- **fix(translator):** inject `properties: {}` into zero-argument MCP tool schemas during Anthropic→OpenAI translation — prevents 400 errors from OpenAI strict schema validation (#1898 — thanks @bryceIT)\n- **fix(codex):** sanitize raw responses input (#1895 — thanks @dhaern)\n- **fix(combos):** align strategy contracts (#1892 — thanks @dhaern)\n- **fix(combos):** fix combo provider breaker profile handling (#1891 — thanks @rdself)\n- **fix(migrations):** duplicate-column no-op fix (#1886 — thanks @smartenok-ops)\n- **fix(auth):** per-connection OAuth refresh mutex (#1885 — thanks @smartenok-ops)\n- **fix(auth):** require dashboard management auth for compression preview\n\n### 📝 Documentation\n\n- **docs(compression):** document RTK+Caveman stacked savings ranges\n\n### 🏆 Release Attribution & Retroactive Credits\n\n- **@payne0420** (PR #1828 / #1839) — Implementation of the **Rate Limit Watchdog** and environment overrides. (This feature was manually backported to v3.7.8, causing the automatic GitHub Release notes to omit the author's credit).\n", - "createdAt": "2026-05-03T20:35:53Z", - "deletions": 1470, - "files": [ - { - "path": ".agents/workflows/deploy-vps-akamai.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": ".agents/workflows/deploy-vps-both.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": ".agents/workflows/deploy-vps-local.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": ".agents/workflows/generate-release.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": ".agents/workflows/version-bump.md", - "additions": 9, - "deletions": 9, - "changeType": "MODIFIED" - }, - { - "path": "AGENTS.md", - "additions": 25, - "deletions": 9, - "changeType": "MODIFIED" - }, - { - "path": "CHANGELOG.md", - "additions": 47, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "README.md", - "additions": 71, - "deletions": 29, - "changeType": "MODIFIED" - }, - { - "path": "docs/API_REFERENCE.md", - "additions": 32, - "deletions": 13, - "changeType": "MODIFIED" - }, - { - "path": "docs/ARCHITECTURE.md", - "additions": 16, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/COMPRESSION_ENGINES.md", - "additions": 143, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "docs/COMPRESSION_GUIDE.md", - "additions": 105, - "deletions": 12, - "changeType": "MODIFIED" - }, - { - "path": "docs/COMPRESSION_LANGUAGE_PACKS.md", - "additions": 96, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "docs/COMPRESSION_RULES_FORMAT.md", - "additions": 186, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "docs/ENVIRONMENT.md", - "additions": 6, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "docs/FEATURES.md", - "additions": 16, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/MCP-SERVER.md", - "additions": 55, - "deletions": 19, - "changeType": "MODIFIED" - }, - { - "path": "docs/RTK_COMPRESSION.md", - "additions": 234, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "docs/SETUP_GUIDE.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/openapi.yaml", - "additions": 199, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "electron/package-lock.json", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "electron/package.json", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "llm.txt", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "next.config.mjs", - "additions": 8, - "deletions": 95, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/config/embeddingRegistry.ts", - "additions": 62, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/config/imageRegistry.ts", - "additions": 14, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/config/rerankRegistry.ts", - "additions": 44, - "deletions": 8, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/executors/base.ts", - "additions": 3, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/executors/codex.ts", - "additions": 75, - "deletions": 5, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/handlers/chatCore.ts", - "additions": 338, - "deletions": 68, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/handlers/imageGeneration.ts", - "additions": 1, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/handlers/responseSanitizer.ts", - "additions": 3, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/mcp-server/README.md", - "additions": 17, - "deletions": 9, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/mcp-server/descriptionCompressor.ts", - "additions": 243, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/mcp-server/schemas/tools.ts", - "additions": 121, - "deletions": 32, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/mcp-server/server.ts", - "additions": 41, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/mcp-server/tools/advancedTools.ts", - "additions": 15, - "deletions": 16, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/mcp-server/tools/compressionTools.ts", - "additions": 157, - "deletions": 11, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/package.json", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/services/AGENTS.md", - "additions": 5, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/services/accountFallback.ts", - "additions": 21, - "deletions": 5, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/services/autoCombo/index.ts", - "additions": 1, - "deletions": 10, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/services/combo.ts", - "additions": 56, - "deletions": 7, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/services/compression/aggressive.ts", - "additions": 19, - "deletions": 29, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/services/compression/caveman.ts", - "additions": 310, - "deletions": 31, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/services/compression/cavemanRules.ts", - "additions": 189, - "deletions": 15, - "changeType": "MODIFIED" - }, - { - "path": "open-sse/services/compression/diffHelper.ts", - "additions": 117, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/cavemanAdapter.ts", - "additions": 408, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/index.ts", - "additions": 14, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/registry.ts", - "additions": 87, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/codeStripper.ts", - "additions": 128, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/commandDetector.ts", - "additions": 465, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/deduplicator.ts", - "additions": 37, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filterLoader.ts", - "additions": 220, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filterSchema.ts", - "additions": 182, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/aws.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/biome.json", - "additions": 35, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/build-eslint.json", - "additions": 37, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/build-typescript.json", - "additions": 33, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/build-vite.json", - "additions": 41, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/build-webpack.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/bundle-install.json", - "additions": 35, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/curl.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/df.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/docker-logs.json", - "additions": 42, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/docker-ps.json", - "additions": 33, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/du.json", - "additions": 33, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/error-stacktrace.json", - "additions": 41, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/gcloud.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/generic-output.json", - "additions": 32, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/git-branch.json", - "additions": 45, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/git-diff.json", - "additions": 33, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/git-log.json", - "additions": 33, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/git-status.json", - "additions": 40, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/golangci-lint.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/json-output.json", - "additions": 40, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/make.json", - "additions": 38, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/mypy.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/npm-audit.json", - "additions": 43, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/npm-install.json", - "additions": 41, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/nx.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/pip.json", - "additions": 41, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/playwright.json", - "additions": 42, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/poetry-install.json", - "additions": 35, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/prettier.json", - "additions": 40, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/ps.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/rsync.json", - "additions": 33, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/rubocop.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/ruff.json", - "additions": 40, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/shell-find.json", - "additions": 33, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/shell-grep.json", - "additions": 37, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/shell-ls.json", - "additions": 33, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/ssh.json", - "additions": 43, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/systemctl-status.json", - "additions": 43, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/terraform-plan.json", - "additions": 34, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/test-cargo.json", - "additions": 42, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/test-go.json", - "additions": 41, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/test-jest.json", - "additions": 43, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/test-pytest.json", - "additions": 41, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "open-sse/services/compression/engines/rtk/filters/test-vitest.json", - "additions": 43, - "deletions": 0, - "changeType": "ADDED" - } - ], - "headRefName": "release/v3.7.9", - "number": 1917, - "title": "Release v3.7.9" - }, - { - "additions": 788, - "author": { - "id": "MDQ6VXNlcjI0MTk4NDIy", - "is_bot": false, - "login": "backryun", - "name": "backryun" - }, - "baseRefName": "release/v3.7.9", - "body": "## Summary\r\n\r\ncompletely removing support for Node.js 20.\r\nNode.js 20 has reached EOL.\r\n\"image\"\r\n\r\n## Validation\r\n\r\n- [x] `npm run lint`\r\n- [x] `npm run test:unit`\r\n- [ ] `npm run test:coverage`\r\n- [ ] Coverage is still `>= 60%` for statements, lines, functions, and branches\r\n\r\n## Tests Added Or Updated\r\n\r\nUpdated automated test files:\r\n\r\n- `tests/unit/node-runtime-support.test.ts`\r\n- `tests/unit/chatcore-sanitization.test.ts`\r\n- `tests/unit/codex-stream-false.test.ts`\r\n- `tests/unit/t26-ai-sdk-accept-header-compat.test.ts`\r\n- `tests/integration/chat-pipeline.test.ts`\r\n- `tests/e2e/protocol-clients.test.ts`\r\n\r\nProduction code changed: Node runtime support logic was updated in `src/shared/utils/nodeRuntimeSupport.ts` and `bin/nodeRuntimeSupport.mjs`.\r\n\r\n## Coverage Notes\r\n\r\nThis PR changes `src/` and `bin/`.\r\n\r\nCoverage for the runtime support change is primarily provided by:\r\n\r\n- `tests/unit/node-runtime-support.test.ts`\r\n- `npm run check:node-runtime`\r\n\r\nAdditional regression coverage was run through:\r\n\r\n- `npm run test:unit`\r\n- `npm run test:integration`\r\n- `npm run test:e2e`\r\n- `npm run test:protocols:e2e`\r\n\r\n`npm run test:coverage` was not run, so coverage movement for touched files has not been measured yet. Follow-up before merge: run `npm run test:coverage` and confirm statements, lines, functions, and branches remain `>= 60%`.\r\n\r\n## Reviewer Notes\r\n\r\n- Node.js 20 support is removed from runtime policy, package engines, CI, docs, and runtime warning copy.\r\n- Supported runtime policy is now Node.js `>=22.22.2 <23 || >=24.0.0 <25`.\r\n- CI matrix and local version files now target Node 22/24 support.\r\n- Docs and i18n runtime wording were updated broadly; reviewers should expect many documentation-only diffs.\r\n- `tests/e2e/protocol-clients.test.ts` now explicitly enables A2A before validating the A2A flow, matching the current default where A2A starts disabled.\r\n- Manual validation was performed on Node `v22.22.2`.\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.", - "createdAt": "2026-05-03T14:11:25Z", - "deletions": 776, - "files": [ - { - "path": ".dockerignore", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": ".env.example", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": ".github/workflows/ci.yml", - "additions": 8, - "deletions": 5, - "changeType": "MODIFIED" - }, - { - "path": ".npmignore", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "AGENTS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "CLAUDE.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "Dockerfile", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "README.md", - "additions": 10, - "deletions": 10, - "changeType": "MODIFIED" - }, - { - "path": "bin/nodeRuntimeSupport.mjs", - "additions": 3, - "deletions": 5, - "changeType": "MODIFIED" - }, - { - "path": "compose.prod.yaml", - "additions": 3, - "deletions": 3, - "changeType": "RENAMED" - }, - { - "path": "compose.yaml", - "additions": 0, - "deletions": 0, - "changeType": "RENAMED" - }, - { - "path": "docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/llm.txt", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bg/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bg/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bg/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bg/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bg/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bg/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bg/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bg/llm.txt", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bn/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bn/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bn/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bn/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bn/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bn/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/bn/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/llm.txt", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/da/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/da/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/da/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/da/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/da/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/da/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/da/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/da/llm.txt", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/de/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/de/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/de/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/de/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/de/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/de/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/de/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/de/llm.txt", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/es/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/es/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/es/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/es/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/es/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/es/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/es/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/es/llm.txt", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fa/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fa/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fa/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fa/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fa/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fa/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fa/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fi/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fi/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fi/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fi/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fi/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fi/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fi/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fi/llm.txt", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fr/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fr/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fr/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fr/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fr/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fr/docs/RELEASE_CHECKLIST.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fr/docs/TROUBLESHOOTING.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/fr/llm.txt", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/gu/CONTRIBUTING.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/gu/README.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/gu/docs/CLI-TOOLS.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/gu/docs/ENVIRONMENT.md", - "additions": 3, - "deletions": 3, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/gu/docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - } - ], - "headRefName": "release/v3.7.9", - "number": 1915, - "title": "[will be merge 4.0 update] (Security Fix): Drop node.js 20 support + Update docker files to lastest docker standards" - }, - { - "additions": 1119, - "author": { - "id": "U_kgDODPQT-Q", - "is_bot": false, - "login": "vrdons", - "name": "" - }, - "baseRefName": "release/v3.7.9", - "body": "## Summary\r\n\r\nTo allow using on bun interface, faster typescript checks\r\n\r\n## Related Issues\r\nNone\r\n\r\n## Validation\r\n\r\n- [x] `npm run lint`\r\n- [ ] `npm run test:unit`\r\nNo, because last tests stucks\r\n- [x] `npm run test:coverage`\r\n- [ ] Coverage is still `>= 60%` for statements, lines, functions, and branches\r\n- [ ] SonarQube PR analysis is green or any remaining issues are explicitly documented below\r\n\r\n## Tests Added Or Updated\r\n\r\n- List every changed or added automated test file.\r\n- If no production code changed, state that here.\r\n\r\n## Coverage Notes\r\n\r\n- If this PR changes `src/`, `open-sse/`, `electron/`, or `bin/`, explain which tests cover the change.\r\n- If coverage moved down in any touched file, explain why and what follow-up task will recover it.\r\n\r\n## Reviewer Notes\r\n\r\n- Call out any risky areas, migrations, feature flags, or manual validation that reviewers should know about.\r\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.", - "createdAt": "2026-05-02T17:57:46Z", - "deletions": 231022, - "files": [ - { - "path": ".agents/workflows/deploy-vps-akamai.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": ".agents/workflows/deploy-vps-both.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": ".agents/workflows/deploy-vps-local.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": ".agents/workflows/generate-release.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "AGENTS.md", - "additions": 4, - "deletions": 4, - "changeType": "MODIFIED" - }, - { - "path": "CLAUDE.md", - "additions": 1, - "deletions": 218, - "changeType": "MODIFIED" - }, - { - "path": "GEMINI.md", - "additions": 1, - "deletions": 21, - "changeType": "MODIFIED" - }, - { - "path": "README.md", - "additions": 63, - "deletions": 36, - "changeType": "MODIFIED" - }, - { - "path": "docs/API_REFERENCE.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/ARCHITECTURE.md", - "additions": 2, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "docs/CODEBASE_DOCUMENTATION.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/ENVIRONMENT.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/FEATURES.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/I18N.md", - "additions": 82, - "deletions": 52, - "changeType": "MODIFIED" - }, - { - "path": "docs/SETUP_GUIDE.md", - "additions": 9, - "deletions": 8, - "changeType": "MODIFIED" - }, - { - "path": "docs/TERMUX_GUIDE.md", - "additions": 2, - "deletions": 10, - "changeType": "MODIFIED" - }, - { - "path": "docs/TROUBLESHOOTING.md", - "additions": 17, - "deletions": 41, - "changeType": "MODIFIED" - }, - { - "path": "docs/UNINSTALL.md", - "additions": 12, - "deletions": 12, - "changeType": "MODIFIED" - }, - { - "path": "docs/USER_GUIDE.md", - "additions": 2, - "deletions": 10, - "changeType": "MODIFIED" - }, - { - "path": "docs/VM_DEPLOYMENT_GUIDE.md", - "additions": 1, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/ar/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/ar/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/ar/README.md", - "additions": 2, - "deletions": 13, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/ar/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/bg/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/bg/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/bg/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/bg/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/bn/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/bn/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/bn/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/cs/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/cs/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/cs/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/cs/README.md", - "additions": 0, - "deletions": 2379, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/A2A-SERVER.md", - "additions": 0, - "deletions": 200, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/API_REFERENCE.md", - "additions": 0, - "deletions": 469, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/ARCHITECTURE.md", - "additions": 0, - "deletions": 891, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/AUTO-COMBO.md", - "additions": 0, - "deletions": 67, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/CLI-TOOLS.md", - "additions": 0, - "deletions": 398, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/CODEBASE_DOCUMENTATION.md", - "additions": 0, - "deletions": 591, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/COVERAGE_PLAN.md", - "additions": 0, - "deletions": 170, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/ENVIRONMENT.md", - "additions": 0, - "deletions": 669, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/FEATURES.md", - "additions": 0, - "deletions": 270, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/FLY_IO_DEPLOYMENT_GUIDE.md", - "additions": 0, - "deletions": 455, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/I18N.md", - "additions": 0, - "deletions": 441, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/MCP-SERVER.md", - "additions": 0, - "deletions": 87, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/RELEASE_CHECKLIST.md", - "additions": 0, - "deletions": 44, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/TROUBLESHOOTING.md", - "additions": 0, - "deletions": 341, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/UNINSTALL.md", - "additions": 0, - "deletions": 157, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/USER_GUIDE.md", - "additions": 0, - "deletions": 966, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/VM_DEPLOYMENT_GUIDE.md", - "additions": 0, - "deletions": 407, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/cloudflare-zero-trust-guide.md", - "additions": 0, - "deletions": 106, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/docs/features/context-relay.md", - "additions": 0, - "deletions": 130, - "changeType": "MODIFIED" - }, - { - "path": "docs/i18n/cs/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/da/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/da/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/da/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/da/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/de/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/de/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/de/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/de/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/es/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/es/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/es/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/es/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fa/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fa/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fa/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fi/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fi/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fi/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fi/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fr/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fr/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fr/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/fr/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/gu/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/gu/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/gu/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/he/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/he/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/he/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/he/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/hi/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/hi/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/hi/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/hi/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/hu/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/hu/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/hu/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/hu/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/id/CHANGELOG.md", - "additions": 0, - "deletions": 4921, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/id/CLAUDE.md", - "additions": 0, - "deletions": 233, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/id/GEMINI.md", - "additions": 0, - "deletions": 25, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/id/llm.txt", - "additions": 0, - "deletions": 476, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/in/CHANGELOG.md", - "additions": 0, - "deletions": 3232, - "changeType": "DELETED" - }, - { - "path": "docs/i18n/in/CLAUDE.md", - "additions": 0, - "deletions": 229, - "changeType": "DELETED" - } - ], - "headRefName": "main", - "number": 1894, - "title": "refactor(db): migrate from better-sqlite3 to node:sqlite, use tsgo" - }, - { - "additions": 276, - "author": { - "id": "U_kgDOD9eSjQ", - "is_bot": false, - "login": "smartenok-ops", - "name": "" - }, - "baseRefName": "release/v3.7.9", - "body": "When a codex SSE stream hits 429 mid-task, OmniRoute previously gave up (maxAttempts=1, no rotation). Add retry with account rotation when session affinity allows.\r\n\r\nDepends on: per-session sticky routing PR (extractSessionAffinityKey, deleteSessionAccountAffinity).\r\n\r\n## Summary\r\n\r\n- Describe the user-facing or operational change.\r\n\r\n## Related Issues\r\n\r\n- Closes #\r\n- Related to #\r\n\r\n## Validation\r\n\r\n- [ ] `npm run lint`\r\n- [ ] `npm run test:unit`\r\n- [ ] `npm run test:coverage`\r\n- [ ] Coverage is still `>= 60%` for statements, lines, functions, and branches\r\n- [ ] SonarQube PR analysis is green or any remaining issues are explicitly documented below\r\n\r\n## Tests Added Or Updated\r\n\r\n- List every changed or added automated test file.\r\n- If no production code changed, state that here.\r\n\r\n## Coverage Notes\r\n\r\n- If this PR changes `src/`, `open-sse/`, `electron/`, or `bin/`, explain which tests cover the change.\r\n- If coverage moved down in any touched file, explain why and what follow-up task will recover it.\r\n\r\n## Reviewer Notes\r\n\r\n- Call out any risky areas, migrations, feature flags, or manual validation that reviewers should know about.\r\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.", - "createdAt": "2026-05-02T16:06:11Z", - "deletions": 2, - "files": [ - { - "path": "open-sse/handlers/chatCore.ts", - "additions": 84, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "tests/unit/codex-failover.test.ts", - "additions": 192, - "deletions": 0, - "changeType": "ADDED" - } - ], - "headRefName": "feat/codex-429-mid-task-failover", - "number": 1888, - "title": "feat(sse): codex 429 mid-task failover with account rotation" - }, - { - "additions": 461, - "author": { - "id": "U_kgDOD9eSjQ", - "is_bot": false, - "login": "smartenok-ops", - "name": "" - }, - "baseRefName": "release/v3.7.9", - "body": "When concurrent SSE clients use a shared OmniRoute key, randomized account selection causes per-session inconsistencies (one stream hits account A, next request from same logical session hits B). Adds session_account_affinity table + extractSessionAffinityKey helper so a session_key (e.g. SHA of input headers) deterministically pins to one account for its lifetime.\r\n\r\nMigration: 041_session_account_affinity.sql (renumbered from local 026 — please confirm next available slot).\r\n\r\n## Summary\r\n\r\n- Describe the user-facing or operational change.\r\n\r\n## Related Issues\r\n\r\n- Closes #\r\n- Related to #\r\n\r\n## Validation\r\n\r\n- [ ] `npm run lint`\r\n- [ ] `npm run test:unit`\r\n- [ ] `npm run test:coverage`\r\n- [ ] Coverage is still `>= 60%` for statements, lines, functions, and branches\r\n- [ ] SonarQube PR analysis is green or any remaining issues are explicitly documented below\r\n\r\n## Tests Added Or Updated\r\n\r\n- List every changed or added automated test file.\r\n- If no production code changed, state that here.\r\n\r\n## Coverage Notes\r\n\r\n- If this PR changes `src/`, `open-sse/`, `electron/`, or `bin/`, explain which tests cover the change.\r\n- If coverage moved down in any touched file, explain why and what follow-up task will recover it.\r\n\r\n## Reviewer Notes\r\n\r\n- Call out any risky areas, migrations, feature flags, or manual validation that reviewers should know about.\r\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.", - "createdAt": "2026-05-02T16:05:53Z", - "deletions": 122, - "files": [ - { - "path": "src/instrumentation-node.ts", - "additions": 10, - "deletions": 5, - "changeType": "MODIFIED" - }, - { - "path": "src/lib/db/migrations/041_session_account_affinity.sql", - "additions": 11, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/lib/db/sessionAccountAffinity.ts", - "additions": 122, - "deletions": 0, - "changeType": "ADDED" - }, - { - "path": "src/lib/localDb.ts", - "additions": 10, - "deletions": 0, - "changeType": "MODIFIED" - }, - { - "path": "src/sse/handlers/chat.ts", - "additions": 14, - "deletions": 1, - "changeType": "MODIFIED" - }, - { - "path": "src/sse/services/auth.ts", - "additions": 177, - "deletions": 2, - "changeType": "MODIFIED" - }, - { - "path": "tests/unit/sse-auth.test.ts", - "additions": 117, - "deletions": 114, - "changeType": "MODIFIED" - } - ], - "headRefName": "feat/per-session-sticky-routing", - "number": 1887, - "title": "feat(auth): per-session sticky routing for codex" - } -] diff --git a/test-kiro.ts b/test-kiro.ts deleted file mode 100644 index 943462dbd2..0000000000 --- a/test-kiro.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { buildKiroPayload } from "./open-sse/translator/request/openai-to-kiro.js"; - -const messages = []; -for (let i = 0; i < 2; i++) { - messages.push({ role: "user", content: `user ${i}` }); - messages.push({ role: "assistant", content: `assistant ${i}` }); -} -messages.push({ role: "user", content: "use tool" }); -messages.push({ - role: "assistant", - tool_calls: [{ id: "call_1", function: { name: "test", arguments: "{}" } }], -}); -messages.push({ role: "tool", tool_call_id: "call_1", content: "ok" }); -messages.push({ role: "user", content: "last user" }); - -const payload = buildKiroPayload("kr/claude-sonnet-4.5", { messages, tools: [] }, false, {}); -console.log(JSON.stringify(payload, null, 2));