feat(open-sse): add schema coercion and tool sanitization

- introduce open-sse/translator/helpers/schemaCoercion.ts to coerce
  numeric JSON Schema fields encoded as strings
- wire coerceToolSchemas and sanitizeToolDescriptions into translator
  pipeline; ensure tool descriptions are sanitized
- inject empty reasoning content for tool calls when target is OpenAI
  format
- update qwen base URL to DashScope-compatible endpoint
- extend antigravity static catalog with Gemini 3.1 pro preview models and
  update Gemini model specs with preview aliases
- implement call log max cap caching with TTL; expose invalidateCallLogsMaxCache
  and invalidate on settings PATCH
- add tests: call-log-cap.test.mjs and tool-request-sanitization.test.mjs;
  extend tests for Windsurf integration and gemini previews
- update CLI runtime and tools to include Windsurf as a guide-only tool
- add maxCallLogs to validation schemas (settings and updateSettings)
- add Czech README (README.cs.md) to repository
This commit is contained in:
diegosouzapw 2026-03-28 12:33:13 -03:00
parent cfb390936a
commit 55325773dc
21 changed files with 2825 additions and 9 deletions

View file

@ -65,3 +65,18 @@ test("T40: OpenCode config generator includes endpoint and selected API key", ()
assert.equal(mergedConfig.providers.omniroute.baseURL, "http://localhost:20128/v1");
assert.equal(mergedConfig.providers.omniroute.apiKey, "sk_test_opencode");
});
test("T40: Windsurf card documents current official limitations honestly", () => {
const windsurf = CLI_TOOLS.windsurf;
assert.ok(windsurf, "Windsurf tool card must exist");
assert.equal(windsurf.configType, "guide");
const notesText = (windsurf.notes || [])
.map((note) => note?.text || "")
.join(" ")
.toLowerCase();
assert.match(notesText, /byok/);
assert.match(notesText, /custom openai-compatible provider/);
assert.match(notesText, /proxy documentation is for network proxies/);
});