Rain
110eb787a1
fix(github-copilot): preserve catalog thinking efforts in requests ( #107834 )
...
* fix(github-copilot): preserve catalog thinking efforts in requests
Unify discovered and bundled capability mapping with the provider thinking policy. Preserve supported xhigh/max Responses efforts and map minimal to the supported low minimum, while respecting explicit account opt-outs and transport limits.
Fixes #107792
Co-authored-by: Pluviobyte <Pluviobyte@users.noreply.github.com >
* fix(github-copilot): resolve nullable thinking policy transport
Accept the public policy API context and resolve missing transports before enforcing Claude and Gemini effort restrictions. Cover undefined and null API values without changing explicit Responses routes.
* refactor(github-copilot): normalize manifest models as one catalog
Use the canonical batch model provider builder after the single-row helper was removed on main. Preserve model transport and compatibility decoration without a legacy API shim.
* refactor(github-copilot): decorate owned catalog rows in place
Keep the normalized manifest batch as the sole owner of runtime rows and apply transport metadata directly, avoiding redundant row copies.
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Pluviobyte <Pluviobyte@users.noreply.github.com >
2026-08-26 21:09:21 -07:00
Peter Steinberger
4b287caac3
fix(memory): stop false Copilot index mismatch warnings ( #130603 )
...
Share provider-owned canonical model projection across cold identity and creation, keep undiscovered models unknown, and preserve strict initialized identity checks. Consolidate obsolete lookup and table-existence paths.
Co-authored-by: 1052326311 <65798732+1052326311@users.noreply.github.com >
2026-08-26 19:50:15 -07:00
Peter Steinberger
67d22a58ac
refactor(embeddings): unify provider contract ( #130506 )
...
* refactor(embeddings): unify provider contract
* test(plugins): declare embedding type bridge
* test(memory): migrate embedding fixtures
2026-08-26 18:20:48 -07:00
chengzhichao-xydt
ff158567f4
fix(github-copilot): add timeout to embedding model discovery ( #102886 )
...
* fix(github-copilot): add timeout to embedding model discovery
* fix(github-copilot): include timeoutMs in discovery request test type
---------
Co-authored-by: chengzhichao-xydt <chengzhichao-xydt@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-26 13:46:40 -07:00
Mitch Devenport
a27f7fe56c
fix(github-copilot): allow xhigh and max thinking levels on claude-opus-5 ( #129690 )
...
* fix(github-copilot): allow xhigh and max thinking levels on claude-opus-5
Copilot users could not select thinking levels above `high` on
`claude-opus-5`. Both `/think xhigh` and `/think max` were rejected and the
picker offered only up to `high`, even with `thinkingDefault: "max"` set.
The bundled manifest entry declared no `supportedReasoningEfforts`, so
`resolveCopilotThinkingLevelMap()` in extensions/github-copilot/models.ts
returned undefined and `clampThinkingLevel()` filtered both tiers out.
A user-side `models.providers` overlay cannot fix this: models.ts
short-circuits `resolveCopilotForwardCompatModel()` when the model is
already in the bundled registry, so the only path that applies a
`thinkingLevelMap` is never reached. The native Claude fallback does not
apply either, since model-utils.ts only consults it for
`api === "anthropic-messages"` routes and Copilot resolves through its
OpenAI-compatible transport.
Declares the effort list the same way extensions/opencode already does for
the same model id. Verified on a live account: after this change `xhigh`
and `max` are selectable and accepted at runtime.
* test(github-copilot): cover Opus 5 manifest reasoning levels
---------
Co-authored-by: mitch <mitch@mitchs-MacBook-Pro.local >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-26 13:20:21 -07:00
Peter Steinberger
b5dde35887
fix(github-copilot): configured account order is ignored ( #129978 )
...
* fix(github-copilot): honor configured account order
Fixes #46031
* test(plugin-sdk): preserve provider discovery runtime exports
Follow-up to #46031
* fix(github-copilot): honor ordered OAuth accounts and tenants
* fix(github-copilot): bind OAuth credentials to their account domain
2026-08-26 06:32:24 -07:00
New Future
8ed79aab02
fix(github-copilot): preserve reasoning during tool calls ( #112659 )
...
* fix(github-copilot): preserve active encrypted reasoning
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* fix(github-copilot): normalize null reasoning status
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
* test(github-copilot): cover adjacent reasoning cleanup
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
---------
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-26 01:13:37 -07:00
Xiaoyu
b4de5fdd3a
fix(copilot): apply Anthropic replay policy to Copilot Claude ( #125015 )
...
Copilot routes Claude over api.*.githubcopilot.com/v1/messages, a real
Anthropic Messages endpoint, but its replay policy returned only
`{ dropThinkingBlocks: true }`. resolveTranscriptPolicy skips the core
transport-family fallback entirely once a provider registers
buildReplayPolicy, so validateAnthropicTurns stayed false and core never
stripped a trailing assistant prefill turn. The next request after
auto-compaction was rejected with 400 "This model does not support
assistant message prefill".
Dispatch on ctx.modelApi and reuse buildStrictAnthropicReplayPolicy for
the Anthropic transport. dropThinkingBlocks stays unconditional so the
#81520 fix holds, and tool-call ids stay owned by wrapCopilotAnthropicStream
so the persisted transcript is not rewritten.
2026-08-25 22:59:39 -07:00
Peter Steinberger
992948356f
fix(secrets): fail closed for configured references ( #127669 )
...
* fix(secrets): fail closed for configured references
Keep explicit SecretRefs authoritative across Gateway auth, onboarding, probes, channel credentials, outbound sends, and GitHub Copilot discovery/embeddings. Ambient credentials remain available only when no reference owns the surface.
* test(secrets): align gateway fallback expectations
* test(providers): remove load-sensitive stream timing
* test(xai): normalize stream capture failures
* fix(copilot): preserve direct auth precedence
* test(ollama): keep progressing streams alive
* test(models): mark resolved config fixtures
* fix(models): drop stale probe import
2026-08-21 18:00:28 -07:00
Peter Steinberger
715c379fd9
refactor(config): consolidate context budget to one per-model knob ( #124665 )
...
* refactor(config): consolidate context budget settings
* test(config): type legacy context fixtures
* test(config): align context budget fixtures
* fix(status): honor runtime context discovery
* docs(config): clarify context budget fallbacks
* fix(ci): resolve context budget lint failures
* test(ci): align context budget shard fixtures
* fix(models): preserve catalog context metadata
* fix(config): surface context migration diagnostics
* test(plugin-sdk): keep live catalog coverage focused
2026-08-16 10:05:01 -07:00
Peter Steinberger
6aa27d6ecd
refactor: retire August compat windows (embedding API, pi aliases, target parser, spawning hook, setup exports, WhatsApp inbound aliases) ( #124416 )
...
* refactor(plugin-sdk): retire embedded Pi aliases
* refactor(channels): retire explicit target compatibility
* refactor(plugins): retire subagent spawning hook
* refactor(plugin-sdk): retire shipped channel setup exports
* refactor(whatsapp): retire inbound callback aliases
Proof: focused build and WhatsApp E2E green; broad WhatsApp suite 188/189 files green. extensions/whatsapp/src/monitor-inbox.policy.test.ts flakes only in the parallel batch and passes isolated (10/10).
* refactor(plugin-sdk): retire memory embedding registrar
Migrate every bundled provider and manifest to registerEmbeddingProvider and contracts.embeddingProviders. Preserve memory-specific batching, local-service acquisition, index identity, and auto-selection through the canonical generic registry adapter, then remove the parallel registrar, registry, diagnostics, contracts, tests, and docs.
* chore(plugin-sdk): tighten retired surface budgets
Pin the post-retirement public SDK surface to 144 entrypoints, 4,312 exports, 2,564 callable exports, and 1,133 deprecated exports; agent-harness-runtime now permits exactly nine deprecated exports.
2026-08-15 22:43:47 -07:00
Peter Steinberger
cd0fb355c7
refactor(plugin-sdk): remove retired Copilot login chain ( #122988 )
...
* refactor(plugin-sdk): remove retired Copilot login chain
* chore(plugin-sdk): refresh generated API baselines
* build(github-copilot): remove unused prompt dependency
* chore(plugin-sdk): reconcile API baselines after rebase
2026-08-12 22:07:33 -07:00
Peter Steinberger
b080dd1e76
refactor: consolidate coercion contracts ( #122458 )
...
* refactor: consolidate coercion contracts
Centralize exact string, record, numeric, date, Boolean, argument, and structured-error coercions while preserving call-site semantics.
Migrate canonical-name collisions and deprecated internal SDK bypasses, deleting 55 net production/tooling lines. Expand declaration ownership enforcement to 101 allowed helpers and add a narrow export-completeness audit.
* fix: preserve standalone script coercions
Keep copied Control UI tooling self-contained and retain the trusted release harness module-relative source seam when the harness runs against an old target cwd.
2026-08-11 23:26:37 -07:00
Peter Steinberger
1afb5e64a5
improve: reduce provider auth parity test time ( #122445 )
...
* test: trim provider auth parity runtime probes
* test: keep parity shards in tooling owner
---------
Co-authored-by: Amp <amp@ampcode.com >
2026-08-11 22:37:06 -07:00
Peter Steinberger
2a57e1a1af
fix(github-copilot): preserve cumulative poll backoff ( #103434 )
2026-08-09 04:50:18 -07:00
Peter Steinberger
e1ec95dcbf
refactor(auth): dedupe profile upserts and approval resolvers ( #120831 )
...
* refactor(auth): dedupe profile upserts and approval resolvers
* test(auth): mock canonical locked upsert
* test(auth): mock locked upsert during onboarding
2026-08-08 21:14:16 -07:00
Peter Steinberger
10c7f005be
refactor(github-copilot): narrow runtime facade ( #120544 )
...
* refactor(github-copilot): narrow runtime facade
* style(github-copilot): format runtime exports
2026-08-08 02:56:12 -07:00
Peter Steinberger
48639663b0
chore(release): prepare 2026.8.1 ( #120375 )
2026-08-07 18:44:12 -07:00
Peter Steinberger
bc0c3fcd63
refactor(providers): shared generated-media download guard and binary-response adoption ( #120351 )
...
* fix(agents): cancel rejected provider binary bodies
* refactor(providers): share generated media downloads
* refactor(providers): adopt payload patch stream wrapper
* fix(providers): preserve generated media helper contracts
2026-08-07 15:45:53 -07:00
Peter Steinberger
c28b524f38
refactor(auth): move Copilot OAuth ownership to plugin ( #118063 )
...
* refactor(auth): move Copilot OAuth ownership to plugin
* test(auth): cover plugin-owned Copilot OAuth
* test(auth): align OAuth runtime mocks
* refactor(auth): extract session OAuth adapter
* refactor(auth): centralize session OAuth dispatch
* test(auth): type OAuth refresh mock
* chore(plugin-sdk): regenerate API baseline for provider oauth dispatch
2026-08-02 10:59:28 -07:00
juyaohuidt
096cd231ea
fix(github-copilot): cancel unread device-flow error bodies before throwing ( #112268 )
...
* fix(github-copilot): cancel unread device-flow error bodies before throwing
postGitHubDeviceFlowForm now drops the unread response stream before it
raises on a non-OK HTTP status. GitHub OAuth error responses ship a JSON
body (`{error, error_description}`) that this helper never consumes, so
the underlying fetch connection previously stayed open holding the
payload until the caller's release() ran, keeping the device-flow socket
half-drained on every 4xx/5xx.
Mirrors the recently-merged qqbot/kilocode/tlon fixes for the same
'cancel body before throwing' pattern (#110008 , #109950 , #112059 ).
* style(github-copilot): clarify response release ordering
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-08-02 04:46:50 -07:00
Peter Steinberger
de6bd7d1bc
fix(copilot): prevent invalid Claude tool IDs from causing retries ( #117789 )
...
* fix(copilot): normalize Claude tool IDs before requests
* fix(copilot): preserve typed payload and stream contracts
* fix(copilot): preserve unique paired Anthropic tool IDs
2026-08-01 22:59:12 -07:00
Peter Steinberger
568ea29d2e
refactor(plugins): inherit shared package boundary settings ( #117474 )
2026-08-01 09:11:09 -07:00
joshavant
23dbee9e38
fix(github-copilot): honor live model selection in guided setup
2026-07-30 21:15:10 -05:00
joshavant
94542eb872
fix(github-copilot): select available onboarding model
2026-07-30 21:15:10 -05:00
Peter Steinberger
99ec30b44b
feat(plugins): catch code-mode drift between catalogs shipping the same model ( #115183 )
...
* feat(plugins): catch code-mode drift between catalogs sharing one model
Adds a contract test that groups bundled catalog rows by shared upstream
model and requires every row in a group to declare compat.codeMode once any
sibling does. Rows sharing a model id group automatically; rows under
different ids opt in with the new manifest-only `upstreamModel` marker.
Moves the kimi catalog into its manifest so the scan can see it, and records
the tier reseller catalogs were silently missing as explicit "capable".
* docs: regenerate docs map for the shared-model code-mode section
2026-07-28 08:52:21 -04:00
joshavant
a706d49cdb
refactor(github-copilot): own runtime request identity
2026-07-27 22:40:32 -05:00
joshavant
3da4ef3a6c
fix(github-copilot): format legacy oauth credentials
2026-07-27 22:40:32 -05:00
joshavant
fbd6b842f9
fix(github-copilot): authenticate fine-grained tokens
2026-07-27 22:40:32 -05:00
Leon-SK668
a90bef3970
fix(usage): guard malformed Copilot payloads ( #110795 )
...
Co-authored-by: Leon-SK668 <17695126+Leon-SK668@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-27 21:55:15 -04:00
Peter Steinberger
caa01f4f5b
refactor(providers): table-driven forward compat and manifest-derived contract tests ( #113940 )
...
* refactor(providers): share family forward compat resolution
* test(providers): derive runtime contracts from manifests
* test(providers): validate manifest fixture inputs
* refactor(zai): narrow forward compat inputs
2026-07-25 18:09:37 -07:00
Peter Steinberger
f703d803cc
chore(models): curate all provider model catalogs to current-generation lineups ( #113681 )
...
* chore(models): fleet-wide provider catalog curation
* fix(models): sync provider runtime catalogs and tests with curated manifests
* test(models): align venice lifecycle assertions and copilot auth default with curated catalogs
* test(models): align catalog lifecycle contract checks
2026-07-25 07:21:17 -07:00
Peter Steinberger
acd92f6a3d
chore(deps): refresh repository dependencies ( #112453 )
...
* build(deps): update QA broker dependency
* build(deps): refresh repository dependencies
* build(deps): reconcile rebased shrinkwraps
* test(plugins): remove stale loader test state
* test(deps): stabilize updated dependency coverage
* fix(swift): use caller-isolated TaskLocal overload
* build(deps): regenerate rebased shrinkwraps
* test(msteams): preserve DNS validation in fetch helper
* fix(deps): avoid vulnerable optional image stack
* test(deps): validate generated LRU override
* refactor(ui): extract chat resizable divider
* test(ui): update divider ownership path
* fix(matrix): retain restart-compatible SDK
* style(cron): format update test
2026-07-23 16:17:13 +00:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
ZOOWH
b16c6c75ce
fix(github-copilot): redact embedding API errors ( #109177 )
...
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-21 08:16:02 -07:00
Dallin Romney
c3c665f7f6
fix: make Copilot token exchange 403 errors actionable ( #112025 )
...
* fix: explain GitHub Copilot 403 recovery
* fix: keep control UI log hint internal
* fix: clarify log viewing hint
2026-07-21 17:11:25 +09:00
Chunyue Wang
752f059753
fix(github-copilot): strip encrypted_content from reasoning replay items ( #95493 )
...
* fix(github-copilot): strip encrypted_content from reasoning replay items
* refactor(github-copilot): name replay sanitizer accurately
Use one provider-boundary sanitizer name for both connection-bound IDs and session-bound encrypted reasoning, and assert the final stream payload drops ciphertext.\n\nCo-authored-by: openperf <16864032@qq.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-20 22:31:39 -07:00
Peter Steinberger
4ef4323db9
fix: keep memory SecretRef failures agent-scoped ( #109977 )
...
* test: normalize Copilot token fixture
* test: normalize Copilot auth fixtures
* test: use explicit Copilot placeholders
* test: use neutral Copilot fixture host
* refactor: clarify Copilot embedding auth values
* refactor: keep Copilot profile result intact
* test: normalize embedding credential fixtures
* fix: isolate memory SecretRef owners
* refactor: isolate memory secret collection
2026-07-17 14:44:03 +01:00
Peter Steinberger
662e79d574
test(release): harden extension prerelease contracts
2026-07-17 13:43:12 +01:00
Peter Steinberger
e693d279b3
fix: Bedrock ARN region routing, Copilot device-flow pacing, TUI input fixes ( #109740 )
...
* build(deps): bump terminal UI library to 0.80.9
* fix(plugins): Bedrock ARN region routing, stop-reason detail, and Copilot device-flow pacing
2026-07-17 01:09:29 -07:00
Wynne668
f63ea72f28
fix(github-copilot): prevent failed usage checks from holding connections ( #109540 )
...
* fix(github-copilot): release failed usage responses
* test(github-copilot): preserve usage HTTP errors
Co-authored-by: ZengWen-DT <ceng.wen@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 22:09:53 -07:00
xingzhou
2b4b688581
fix(github-copilot): release failed catalog responses ( #109071 )
2026-07-16 17:07:24 -07:00
Peter Steinberger
349f78776d
fix(models): refresh bundled provider catalogs ( #109410 )
...
* fix(models): refresh bundled provider catalogs
* docs(models): refresh generated docs map
* fix(xiaomi): keep provider helper private
* chore(release): defer catalog release note
2026-07-16 16:47:25 -07:00
xingzhou
5a494acd64
fix(agents): tool calls lose arguments when Responses item IDs rotate ( #108630 )
...
* fix(agents): tool calls lose arguments when Responses item IDs rotate
* test(github-copilot): prove rotating tool item IDs
Co-authored-by: zhang-guiping <zhang.guiping@xydigit.com >
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-15 23:58:34 -07:00
Peter Steinberger
e7cba0e4d5
fix: provider dead exports no longer block changed checks ( #108592 )
...
* fix(ci): clean provider dead exports
* test(extensions): satisfy provider contract types
* refactor(openai): tighten provider runtime factory
2026-07-15 22:33:54 -07:00
Peter Steinberger
46fad5296a
refactor(github-copilot): own runtime auth in provider ( #108096 )
2026-07-15 00:19:44 -07:00
Peter Steinberger
c51bb5ed20
test(github-copilot): align token endpoint fixtures ( #108047 )
...
* test(github-copilot): align token endpoint fixtures
* docs: refresh generated docs map
2026-07-14 23:25:49 -07:00
Peter Steinberger
f81f9d8570
chore: enforce max-lines suppression ratchet ( #107315 )
...
* ci: enforce max-lines suppression ratchet
* chore: prune stale max-lines suppression
* fix: close max-lines ratchet enforcement gaps
* fix: harden max-lines ratchet checks
* fix(ci): satisfy max-lines ratchet checks
* style: format max-lines declarations
* fix(ci): match oxlint suppression grammar
* test: isolate max-lines git fixtures
* chore: prune resolved max-lines debt
* test: skip newline path fixture on Windows
* fix: harden max-lines suppression ratchet
* chore: refresh max-lines baseline
* fix: close max-lines ratchet bypasses
* fix: derive ratchet base from PR merge tree
* fix: support older Git in staged ratchet
* fix: align max-lines declarations and baseline
* chore: refresh max-lines baseline for current main
* fix: exclude generated wizard locales from max-lines
* chore: prune resolved max-lines debt
2026-07-14 09:27:02 -07:00
Galin Iliev
93bad8de2a
fix: restore GitHub Copilot turns and account context limits ( #106198 )
...
* fix: restore GitHub Copilot runtime routing
Refs #106170
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6053811e-f081-436b-8741-54c5cab6c016
* fix: bind Copilot metadata to resolved credentials
Refs #106170
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Copilot-Session: 6053811e-f081-436b-8741-54c5cab6c016
* refactor: split Copilot runtime helpers
* fix: satisfy Copilot runtime static gates
* fix: satisfy Copilot runtime lint
---------
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com >
Co-authored-by: Galin Iliev <galin.iliev@microsoft.com >
2026-07-13 16:04:34 -07:00
NIO
92db88e36b
fix(github-copilot): bound Copilot token exchange fetch timeout ( #104488 )
...
* fix(github-copilot): bound Copilot token exchange fetch timeout
* fix(github-copilot): harden token exchange deadline
Co-authored-by: hugenshen <hu.genshen@xydigit.com >
* chore: remove release-owned changelog entry
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-12 15:24:39 +01:00