Peter Steinberger
77d9ac30bb
refactor: reuse shared coercion helpers ( #86419 )
...
* refactor: share talk event metric extraction
* refactor: reuse shared coercion helpers
* refactor: reuse shared primitive guards
* refactor: reuse shared record guard
* refactor: reuse shared primitive helpers
* refactor: reuse shared string guards
* refactor: reuse shared non-empty string guard
* refactor: share plugin primitive coercion helpers
* refactor: reuse plugin coercion helpers
* refactor: reuse plugin coercion helpers in more plugins
* refactor: reuse channel coercion helpers
* refactor: reuse monitor coercion helpers
* refactor: reuse provider coercion helpers
* refactor: reuse core coercion helpers
* refactor: reuse runtime coercion helpers
* refactor: reuse helper coercion in codex paths
* refactor: reuse helper coercion in runtime paths
* refactor: reuse codex app-server coercion helpers
* refactor: reuse codex record helpers
* refactor: reuse migration and qa record helpers
* refactor: reuse feishu and core helper guards
* refactor: reuse browser and policy coercion helpers
* refactor: reuse memory wiki record helper
* refactor: share boolean coercion helpers
* refactor: reuse finite number coercion
* refactor: reuse trimmed string list helpers
* refactor: reuse string list normalization
* refactor: reuse remaining string list helpers
* refactor: reuse string entry normalizer
* refactor: share sorted string helpers
* refactor: share string list normalization
* test: preserve command registry browser imports
* refactor: reuse trimmed list helpers
* refactor: reuse string dedupe helpers
* refactor: reuse local dedupe helpers
* refactor: reuse more string dedupe helpers
* refactor: reuse command string dedupe helpers
* refactor: dedupe memory path lists with helper
* refactor: expose string dedupe helpers to plugins
* refactor: reuse core string dedupe helpers
* refactor: reuse shared unique value helpers
* refactor: reuse unique helpers in agent utilities
* refactor: reuse unique helpers in config plumbing
* refactor: reuse unique helpers in extensions
* refactor: reuse unique helpers in core utilities
* refactor: reuse unique helpers in qa plugins
* refactor: reuse unique helpers in memory plugins
* refactor: reuse unique helpers in channel plugins
* refactor: reuse unique helpers in core tails
* refactor: reuse unique helper in comfy workflow
* refactor: reuse unique helpers in test utilities
* refactor: expose unique value helper to plugins
* refactor: reuse unique helpers for numeric lists
* refactor: replace index dedupe filters
* refactor: reuse string entry normalization
* refactor: reuse string normalization in plugin helpers
* refactor: reuse string normalization in extension helpers
* refactor: reuse string normalization in channel parsers
* refactor: reuse string normalization in memory search
* refactor: reuse string normalization in provider parsers
* refactor: reuse string normalization in qa helpers
* refactor: reuse string normalization in infra parsers
* refactor: reuse string normalization in messaging parsers
* refactor: reuse string normalization in core parsers
* refactor: reuse string normalization in extension parsers
* refactor: reuse string normalization in remaining parsers
* refactor: reuse string normalization in final parser spots
* refactor: reuse string normalization in qa media helpers
* refactor: reuse normalization in provider and media lists
* refactor: reuse normalization for remaining set filters
* refactor: reuse normalization in policy allowlists
* refactor: reuse normalization in session and owner lists
* refactor: centralize primitive string lists
* refactor: reuse lowercase entry helpers
* refactor: reuse sorted string helpers
* refactor: reuse unique trimmed helpers
* refactor: reuse string normalization helpers
* refactor: reuse catalog string helpers
* refactor: reuse remaining string helpers
* refactor: simplify remaining list normalization
* refactor: reuse codex auth order normalization
* chore: refresh plugin sdk api baseline
* fix: make shared string sorting deterministic
* chore: refresh plugin sdk api baseline
* fix: align host env security ordering
2026-05-25 21:20:41 +01:00
Noah
fb61de8c88
fix(gemini): strip sub-second precision from web_search time_range_filter ( #85071 )
...
* fix(gemini): strip sub-second precision from web_search time_range_filter
Gemini's google_search.time_range_filter rejects any non-zero fractional
seconds with "[FIELD_INVALID] Granularity of nano is not supported", even
though the underlying google.protobuf.Timestamp type accepts 0/3/6/9
fractional digits per its public spec. The grounding endpoint enforces a
stricter rule than the underlying type.
Date.prototype.toISOString() always emits millisecond precision, so every
freshness call (and any date_after/date_before call hitting the "now"
fallback for endTime) failed with the above 400 after #66498 's fix shipped
in 2026.5.19.
Introduce toGeminiTimeRangeTimestamp() which strips the fractional-second
component before serializing, and route all four timeRangeFilter timestamp
sites through it. isoDateExclusiveEnd happens to produce all-zero
fractional today (so Gemini accepts it), but routing it through the helper
keeps the contract uniform and resilient to future changes.
Why this slipped past the original CI: the existing freshness test used
vi.setSystemTime(new Date("2026-04-15T12:00:00Z")), which always
serializes back as ".000Z" — the one fractional form Gemini happens to
accept. Wall-clock new Date() in production always has non-zero ms. The
new test uses setSystemTime(new Date("2026-04-15T12:00:00.123Z")) to
exercise the realistic case.
Verified empirically against the live Gemini REST API:
".123Z" → 400 "Granularity of nano is not supported"
".000Z" → grounded content (the one fractional form accepted)
"Z" → grounded content
Fixes #85061 .
* test(gemini): use realistic non-zero ms in existing freshness test
The original test set the fake clock to a moment with zero fractional
seconds, so toISOString() produced ".000Z" — the one fractional form
Gemini's google_search.time_range_filter happens to accept. Wall-clock
new Date() in production produces non-zero ms, which Gemini rejects.
Bumping the fake time to .123Z makes the existing test exercise the
realistic case alongside the dedicated regression test.
---------
Co-authored-by: Noah R <Noerr@users.noreply.github.com >
2026-05-22 09:58:29 +01:00
Peter Steinberger
4f4d108639
chore(lint): remove underscore-dangle allow list ( #83542 )
...
* chore(lint): reduce underscore-dangle exceptions
* chore(lint): reduce more underscore exceptions
* chore(lint): remove underscore-dangle allow list
* fix(lint): repair underscore cleanup regressions
* test(lint): track version define suppression
2026-05-18 14:56:06 +01:00
Vincent Koc
9eeb17fa82
fix(providers): harden search tool response schemas
2026-05-16 18:00:31 +08:00
Vincent Koc
695a4f5039
fix(web-search): wrap more provider json
2026-05-15 09:12:31 +08:00
Peter Steinberger
827b0de0ce
refactor: reduce plugin sdk surface
2026-05-10 12:37:10 +01:00
Shakker
a0262c33d0
test: narrow web search provider contract imports
2026-05-09 18:31:20 +01:00
Peter Steinberger
1143f73842
fix(web-search): honor provider abort signals
2026-05-02 05:35:58 +01:00
Peter Steinberger
7729e6c104
fix: restore current main ci checks
2026-05-02 05:26:42 +01:00
Peter Steinberger
7934a2390c
fix: clean up extension ci failures
2026-05-02 05:16:25 +01:00
Peter Steinberger
ed6df7dd8b
fix(gemini): reuse google provider config for web search
2026-05-02 05:15:02 +01:00
Peter Steinberger
20333bd58d
fix(gemini): pass search time filters
2026-05-02 05:00:35 +01:00
Peter Steinberger
b813183bfd
fix(web-search): support provider base url overrides
2026-05-02 03:44:46 +01:00
Peter Steinberger
33b18f543b
fix(web-search): improve missing key guidance
2026-05-02 03:26:41 +01:00
Peter Steinberger
c1f31f3870
refactor: trim provider helper exports
2026-05-01 16:25:10 +01:00
Peter Steinberger
2c516fe516
refactor: share provider HTTP error parsing
2026-04-24 20:44:56 +01:00
Peter Steinberger
4fa961d4f1
refactor(lint): enable map spread rule
2026-04-18 20:37:12 +01:00
Peter Steinberger
a7e029fde9
refactor: cache provider tool runtimes
2026-04-18 19:05:00 +01:00
Gustavo Madeira Santana
2482e70fb8
test: narrow web search contract runtime loads
...
Honor targeted includes in the contracts Vitest lane and compare bundled
web-search fast-path artifacts against plugin-owned runtime artifacts instead
of loading whole plugin entries. Split Google and Firecrawl runtime-only work
behind lazy seams so provider registration stays metadata-light.
Also keep Perplexity contract metadata aligned by sharing its runtime transport
resolution with the contract artifact.
2026-04-17 17:26:46 -04:00
Peter Steinberger
5fa3b8d7a0
refactor: dedupe provider trimmed readers
2026-04-08 00:09:41 +01:00
Peter Steinberger
af62a2c2e4
style: fix extension lint violations
2026-04-06 14:53:55 +01:00
Peter Steinberger
c28e76c490
refactor: move provider model helpers into plugins
2026-03-27 20:20:31 +00:00
Peter Steinberger
ef1784d264
refactor: move bundled plugin policy into manifests
2026-03-27 16:40:27 +00:00
Peter Steinberger
410c2dba65
test: collapse provider plugin suites
2026-03-25 04:25:02 +00:00
Peter Steinberger
9f47892bef
refactor: centralize google API base URL handling
2026-03-24 10:01:22 -07:00
Vincent Koc
bd1c6efca5
test(extensions): cover web search provider helpers
2026-03-22 16:04:31 -07:00
Vincent Koc
1169d51aee
fix(onboarding): clarify web search key copy
2026-03-21 08:13:39 -07:00
Vincent Koc
a562fb5550
refactor(web-search): share scoped provider config plumbing
2026-03-19 23:52:53 -07:00
Vincent Koc
6c7526f8a0
fix(web-search): share unsupported filter handling
2026-03-19 23:41:02 -07:00
Peter Steinberger
c0c3c4824d
fix: checkpoint gate fixes before rebase
2026-03-18 15:36:18 +00:00
Peter Steinberger
e9b19ca1d1
fix: restore full gate after web-search rebase
2026-03-18 15:35:27 +00:00
Tak Hoffman
cd2752346c
refactor move web search sdk helpers into plugin-sdk
2026-03-18 00:27:02 -05:00
Tak Hoffman
112d1d3a7c
refactor web search config ownership into extensions
2026-03-17 23:39:51 -05:00
Tak Hoffman
3de973ffff
refactor web search provider execution out of core
2026-03-17 23:07:19 -05:00