diff --git a/.agents/workflows/resolve-issues.md b/.agents/workflows/resolve-issues.md index 8573a18ce0..01f8f68879 100644 --- a/.agents/workflows/resolve-issues.md +++ b/.agents/workflows/resolve-issues.md @@ -82,7 +82,7 @@ For each bug issue, perform the full analysis: 2. **Read ALL comments** — including bot triage comments (Kilo, etc.) and owner/community responses. Pay attention to: - Whether someone already responded with a fix - Whether a community member confirmed the issue is resolved - - Whether the issue was marked as duplicate by a bot + - Whether the issue was marked as duplicate by a bot. **WARNING: DO NOT blindly trust bot duplicate labels (e.g., kilo-duplicate). Bots make mistakes. You MUST read the full conversation and do your own independent analysis to determine if it is truly a duplicate or a distinct bug.** 3. **Identify the claimed error** — extract the exact error message, status code, and provider/model involved #### 5b. Check Information Sufficiency @@ -98,14 +98,14 @@ Verify the issue contains enough to act on: For each bug, classify into one of 5 actions: -| Disposition | When to Apply | Action | -| ---------------------------- | ------------------------------------------------------------------------------------------- | ------------------------------------------------------- | -| **✅ CLOSE — Already Fixed** | Owner responded with fix + no user follow-up, OR community confirmed fix | Close with comment citing which version fixed it | -| **✅ CLOSE — Duplicate** | Bot flagged >85% similarity + user provides no new info | Close referencing the original issue | -| **✅ CLOSE — Stale** | We requested logs/info > 7 days ago with no reply | Close thanking the user, invite to reopen if needed | -| **📝 RESPOND — Needs Info** | Issue is real but missing critical reproduction details | Comment asking for specifics per `/issue-triage` | -| **📝 RESPOND — User Config** | Error is caused by unsupported env (Node version, wrong model path, missing API enablement) | Comment explaining the user-side fix | -| **🔧 FIX — Code Change** | Root cause is confirmed in the codebase | Research, propose solution in report, wait for approval | +| Disposition | When to Apply | Action | +| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | +| **✅ CLOSE — Already Fixed** | Owner responded with fix + no user follow-up, OR community confirmed fix | Close with comment citing which version fixed it | +| **✅ CLOSE — Duplicate** | You have independently verified the issue is a duplicate (do NOT rely solely on bot flags) + user provides no new info | Close referencing the original issue | +| **✅ CLOSE — Stale** | We requested logs/info > 7 days ago with no reply | Close thanking the user, invite to reopen if needed | +| **📝 RESPOND — Needs Info** | Issue is real but missing critical reproduction details | Comment asking for specifics per `/issue-triage` | +| **📝 RESPOND — User Config** | Error is caused by unsupported env (Node version, wrong model path, missing API enablement) | Comment explaining the user-side fix | +| **🔧 FIX — Code Change** | Root cause is confirmed in the codebase | Research, propose solution in report, wait for approval | #### 5d. For "FIX — Code Change" Issues diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e17fd8912..053b22af19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,6 +17,11 @@ - **fix(ui):** hide combo compression controls when the global setting is disabled (#1840) - **fix(db):** tolerate missing request_detail_logs table for legacy deployments (#1848) +- **fix(core):** remove unneeded \`store\` payload parameter for providers lacking support (closes #1841) +- **fix(core):** ensure safeOutboundFetch and A2A routers return 503 Service Unavailable when security guardrails are triggered +- **fix(usage):** correct Unix seconds vs milliseconds parsing logic for Kiro AI quota reset (closes #1849) +- **fix(ui):** apply robust NaN handling, ensure 24h consistency, and fix missing hour slots in Compression Analytics (closes #1844) +- **fix(ui):** implement short number formatting for token consumption metrics on cache pages to prevent overflow (closes #1842) ### 🛠️ Maintenance diff --git a/open-sse/handlers/chatCore.ts b/open-sse/handlers/chatCore.ts index bbac5a2ae5..dbf58ed0cf 100644 --- a/open-sse/handlers/chatCore.ts +++ b/open-sse/handlers/chatCore.ts @@ -2219,6 +2219,11 @@ export async function handleChatCore({ } } + // OpenAI's `store` parameter is not supported by most compatible providers and breaks them + if (provider !== "openai" && "store" in translatedBody) { + delete translatedBody.store; + } + // Provider-specific max_tokens caps (#711) // Some providers reject requests when max_tokens exceeds their API limit. // Cap before sending to avoid upstream HTTP 400 errors. diff --git a/open-sse/services/usage.ts b/open-sse/services/usage.ts index 8c5ef39627..9358333a1b 100644 --- a/open-sse/services/usage.ts +++ b/open-sse/services/usage.ts @@ -652,7 +652,7 @@ function parseResetTime(resetValue) { if (resetValue instanceof Date) { date = resetValue; } else if (typeof resetValue === "number") { - date = new Date(resetValue); + date = new Date(resetValue < 1e12 ? resetValue * 1000 : resetValue); } else if (typeof resetValue === "string") { date = new Date(resetValue); } else { diff --git a/src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx b/src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx index 038b4afc71..184eb936db 100644 --- a/src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx +++ b/src/app/(dashboard)/dashboard/analytics/CompressionAnalyticsTab.tsx @@ -240,7 +240,7 @@ export default function CompressionAnalyticsTab() {
{t("inputTokens")}
- {metrics.totalInputTokens.toLocaleString()} + {formatNumberCompact(metrics.totalInputTokens)}
{t("cachedTokensRead")}
- {metrics.totalCachedTokens.toLocaleString()} + {formatNumberCompact(metrics.totalCachedTokens)}
{t("cacheCreationWrite")}
- {metrics.totalCacheCreationTokens.toLocaleString()} + {formatNumberCompact(metrics.totalCacheCreationTokens)}
{t("tokensSaved")}
- {metrics.tokensSaved.toLocaleString()} + {formatNumberCompact(metrics.tokensSaved)}