Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
192 commits
Select commit Hold shift + click to select a range
53f2841
feat(chat): add the chat fact space and the interceptors three protoc…
Menci Aug 16, 2026
fe1d21f
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 16, 2026
5a19c6d
fix(chat): read an attempt's flags from the selector that carries them
Menci Aug 16, 2026
fa7e65c
feat(chat): assemble the Chat Completions chain on the pipeline
Menci Aug 16, 2026
c892738
test(chat): run the Chat Completions chain, not just assemble it
Menci Aug 16, 2026
049655c
fix(chat): dial with the payload affinity materialized for the candidate
Menci Aug 16, 2026
713f400
feat(chat): open a chat run over the context a chat run needs
Menci Aug 16, 2026
4c853d1
feat(gemini): run the source-only chain on the pipeline
Menci Aug 16, 2026
1256077
feat(chat): make a protocol handoff a stage that consumes and provides
Menci Aug 16, 2026
3455e82
fix(chat): bill the metrics an upstream's usage adds up to, not its t…
Menci Aug 16, 2026
97c4a52
fix(gemini): answer a refusal in the shape a Gemini client reads
Menci Aug 16, 2026
703a21b
feat(chat): run the Messages chain on the pipeline
Menci Aug 16, 2026
1c89f49
feat(chat): assemble the Responses chain on the pipeline
Menci Aug 16, 2026
a000a92
fix(chat): write each protocol's own error envelope, and forward what…
Menci Aug 16, 2026
3687215
feat(gateway): let a family name what it writes on an idle connection
Menci Aug 16, 2026
9b08dd1
fix(chat): send what the interceptors rewrote
Menci Aug 16, 2026
a87a234
fix(chat): keep the fields an OpenAI client reads on a refusal the ga…
Menci Aug 16, 2026
24f3406
fix(chat): time the first token, and price by what the rate depends on
Menci Aug 16, 2026
4293894
refactor(chat): say what the chains do, and stop declaring what nothi…
Menci Aug 16, 2026
d07fef2
fix(chat): send, time, bill and end a Messages turn as its chain states
Menci Aug 16, 2026
376bf32
fix(chat): send what the record holds on the Responses chain, and tim…
Menci Aug 16, 2026
e24c919
fix(chat): translate, time, bill and end a Gemini turn as its chain s…
Menci Aug 16, 2026
a98794d
fix(chat): refuse a Chat Completions stream that never said it ended
Menci Aug 16, 2026
0c7e28d
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 16, 2026
b3b4e11
feat(chat): serve /v1/chat/completions through its pipeline
Menci Aug 16, 2026
8d0b11a
feat(chat): serve /v1/messages through its pipeline
Menci Aug 16, 2026
d3e8739
feat(chat): serve :generateContent through its pipeline
Menci Aug 16, 2026
eb42b17
fix(chat): settle a chat turn by how its stream ended, and let a refu…
Menci Aug 16, 2026
5892f4d
feat(chat): run the Messages, Gemini and Responses interceptors as st…
Menci Aug 16, 2026
13f2a9e
test(chat): assemble each family's interceptor array in the order its…
Menci Aug 16, 2026
d10b06c
feat(chat): run each family's interceptors as the stages they became
Menci Aug 16, 2026
b07667a
feat(messages): answer the Claude Code probe as a stage
Menci Aug 16, 2026
5ef1388
feat(chat): hand a turn's own state back to the client that will carr…
Menci Aug 16, 2026
416a9ab
test(chat): read each family's frames as the affinity carrier leaves …
Menci Aug 16, 2026
ae8bbd4
style(chat): write the services generic as written, not as patched
Menci Aug 16, 2026
e018952
refactor(chat): put each family's wire under a fork its last stage ch…
Menci Aug 16, 2026
9b8ae76
feat(gemini): reach a candidate over any of the three wires a transla…
Menci Aug 16, 2026
4906782
feat(chat-completions): reach a candidate over the translated Message…
Menci Aug 16, 2026
da3645c
feat(messages): reach a candidate over the translated Responses and C…
Menci Aug 17, 2026
a62126f
feat(responses): reach a candidate over the translated Messages and C…
Menci Aug 17, 2026
d53534d
feat(responses): run the stored-items membrane as stages of the chain
Menci Aug 17, 2026
2ff1db6
feat(chat): serve /v1/responses through its pipeline
Menci Aug 17, 2026
92aea97
fix(responses): send an assistant item back in the content type the w…
Menci Aug 17, 2026
53c2a0f
test(gateway): assemble the Responses chain alongside the other ten
Menci Aug 17, 2026
000ae56
feat(messages): serve /v1/messages/count_tokens through its own chain
Menci Aug 17, 2026
e7fc962
feat(gemini): serve :countTokens through its own chain
Menci Aug 17, 2026
cd7fec0
feat(responses): bring the WebSocket transport onto the chain
Menci Aug 17, 2026
afbf196
fix(chat): hand a chat run's events somewhere to be written
Menci Aug 17, 2026
db05b8b
feat(responses): serve /v1/responses/compact through its own chain
Menci Aug 17, 2026
f689ffa
refactor(chat): delete the onion the pipeline replaced
Menci Aug 17, 2026
588f3fe
fix(chat): settle a measurement like every other run
Menci Aug 17, 2026
da9f098
docs(chat): say what assembly checks, and stop describing a state tha…
Menci Aug 17, 2026
89471cf
fix(chat): restore the Chat Completions rules that never became stages
Menci Aug 17, 2026
248f89f
fix(chat): shape a translated turn for the wire it lands on
Menci Aug 17, 2026
972c6c4
fix(chat): hand a provider a body it owns, and record the frames it s…
Menci Aug 17, 2026
24c3d03
fix(chat): build a count_tokens dial through the same boundary as gen…
Menci Aug 17, 2026
186c077
fix(gateway): render a failure the same way at every edge
Menci Aug 17, 2026
08ab620
fix(responses): answer a turn that asked for a compaction on the chai…
Menci Aug 17, 2026
5bff74e
refactor(responses): delete the compact shim's interceptor form
Menci Aug 17, 2026
c8445b5
test(chat): drive /v1/chat/completions through the real route
Menci Aug 17, 2026
38135fc
test(messages): drive /v1/messages through the real route
Menci Aug 17, 2026
4ae8c47
fix(chat): refuse an untranslatable body in the client's own protocol
Menci Aug 17, 2026
28cf186
test(gemini): drive :generateContent through the real route
Menci Aug 17, 2026
ba6d148
refactor(chat): delete the refusal renderers the pipeline replaced
Menci Aug 17, 2026
cf9ce7d
fix(responses): hand a provider a body it owns at both Responses dials
Menci Aug 17, 2026
aac415c
docs(copilot): stop naming an array the pipeline removed
Menci Aug 17, 2026
88d7cc8
test(chat): refuse a streaming turn with a body at all three routes
Menci Aug 17, 2026
2c0e2ba
refactor(chat): let the chat files say what the pipeline left them as
Menci Aug 17, 2026
f4e3c37
docs(chat): give every vendor constant a source, and correct one claim
Menci Aug 17, 2026
267be4b
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 17, 2026
963fc52
fix(chat): answer a client in its own protocol, and shape a turn for …
Menci Aug 17, 2026
19bae1d
refactor(chat): state the gaps the chains actually have, and stop run…
Menci Aug 17, 2026
2d0a5f1
refactor(chat): delete the onion the wires replaced
Menci Aug 17, 2026
b727a31
docs(chat): say the prologue's rule once
Menci Aug 17, 2026
9c7a43c
fix(responses): put the frames a client was served back in the record
Menci Aug 17, 2026
1a1404a
fix(gemini): refuse an unmeasurable body the way the same body is ref…
Menci Aug 17, 2026
af919a5
refactor(responses): record a turn's frames once, wherever it is framed
Menci Aug 17, 2026
9b1a20a
docs(chat): make every chain say what it is, and drop what nothing re…
Menci Aug 17, 2026
cb82a01
docs(chat): stop claiming an interceptor array that is gone
Menci Aug 17, 2026
4f4904b
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 18, 2026
2b44e28
fix: resolve the compact-shim conflict left by the nested-path removal
Menci Aug 18, 2026
0d41a6c
refactor(chat): spell the four chat protocol names in full in the pip…
Menci Aug 18, 2026
c6c3b73
refactor(chat): finish the rename the merge could not reach
Menci Aug 18, 2026
8aefef5
test(chat): follow the rename into the assertions that read a name
Menci Aug 18, 2026
fbddee1
refactor(chat): say the protocol in full in prose, test names and fil…
Menci Aug 18, 2026
6286f55
refactor: close the last abbreviated protocol references in the chat …
Menci Aug 18, 2026
0e949a9
style: reorder the imports the renamed specifiers moved
Menci Aug 18, 2026
7d5a499
docs(openai-responses): name the payload type the projection takes
Menci Aug 18, 2026
37c415f
refactor: name the vendor in the last four unqualified protocol comments
Menci Aug 18, 2026
701ffa0
refactor(copilot): shape a payload by rebuilding it, and stop cloning…
Menci Aug 18, 2026
d26fb1f
refactor(chat): meter a wire's answer above its rules, not at its dial
Menci Aug 18, 2026
306035a
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
2271d49
refactor(chat): move the dormant shims out of the replaced surface's …
Menci Aug 19, 2026
5eae693
feat(openai-responses): bring the server-tool shim back, as the stage…
Menci Aug 19, 2026
b2d17cb
feat(anthropic-messages): bring the web-search server tool back, as a…
Menci Aug 19, 2026
abcd199
refactor(chat): erase the surface the pipeline replaced
Menci Aug 19, 2026
77ff87f
refactor(dump): delete the record shape nothing produces any more
Menci Aug 19, 2026
6501d09
feat(openai-responses): make a shim's image call a run of its own
Menci Aug 19, 2026
cfc23e8
feat(openai-responses): make a shim's search a run of its own
Menci Aug 19, 2026
7f20698
refactor(affinity): rebuild a candidate's payload rather than clone t…
Menci Aug 19, 2026
3cb711c
refactor(chat): say rules where the chain runs rules
Menci Aug 19, 2026
fea5ab6
fix(gemini-generate-content): send a minted envelope with the status …
Menci Aug 19, 2026
91289d0
refactor(chat): let a gateway refusal be its envelope, not bytes to p…
Menci Aug 19, 2026
3059299
chore(migrations): make room for the flag-id rewrite
Menci Aug 19, 2026
cca6685
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
76baf2f
refactor: say why, not what the code used to be
Menci Aug 19, 2026
3df0868
test(web): wait for the restored trace rather than drain once
Menci Aug 19, 2026
fbbd667
refactor(gemini-generate-content): rewrite the affinity egress withou…
Menci Aug 19, 2026
0ab3c0c
refactor(openai-responses): rebuild the affinity payload the way its …
Menci Aug 19, 2026
3401ec5
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
9cc9c7c
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
81f8cef
refactor(gateway): render every family's failure through the same thr…
Menci Aug 19, 2026
90e8594
refactor(protocols): leave the three-tier decision to the one thing t…
Menci Aug 19, 2026
0fa35a1
refactor(openai-responses): keep the sub-request pipelines inside the…
Menci Aug 19, 2026
f70d833
refactor(interceptor): drop the ambient slot the gateway's chains needed
Menci Aug 19, 2026
a5f8cda
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
44225d9
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
a7490bf
chore(migrations): take 0084 back
Menci Aug 19, 2026
31b3064
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
385b15c
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
0067da4
docs: correct the parameter count in f70d833
Menci Aug 19, 2026
5ec9681
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
c0423f7
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
99bae87
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 19, 2026
2a1dd4c
Merge branch 'feat/pipeline-non-chat' into pr3-chat
Menci Aug 20, 2026
becab22
Merge current main into feat/pipeline-chat
Menci Sep 30, 2026
b782581
Merge latest non-chat pipeline adaptations
Menci Sep 30, 2026
0aa0fc0
fix: preserve protocol diagnostics across chat stages
Menci Sep 30, 2026
745aabd
Merge run-diagnostic header masking from non-chat pipelines
Menci Sep 30, 2026
d02b393
Merge current main protocol and Codex changes
Menci Sep 30, 2026
290daf2
refactor: organize chat pipelines by stage
Menci Sep 30, 2026
3be488d
Merge branch 'feat/pipeline-non-chat' into feat/pipeline-chat
Menci Sep 30, 2026
9833a11
refactor(pipeline): keep stage contracts in their owning modules
Menci Sep 30, 2026
65cf9f5
refactor(pipeline): use hosted-tool vocabulary throughout the stages
Menci Sep 30, 2026
3417496
Merge branch 'feat/pipeline-non-chat' into feat/pipeline-chat
Menci Sep 30, 2026
7b797df
Merge branch 'feat/pipeline-non-chat' into feat/pipeline-chat
Menci Sep 30, 2026
4fa1e3b
Merge branch 'feat/pipeline-non-chat' into feat/pipeline-chat
Menci Sep 30, 2026
3b35ff5
fix(responses): record client protocol failures before framing
Menci Sep 30, 2026
35740c2
Merge remote-tracking branch 'origin/feat/pipeline-non-chat' into fea…
Menci Sep 30, 2026
aeb9c93
refactor(search): carry hosted subrequest content through facts
Menci Sep 30, 2026
117a0a1
refactor(images): run hosted calls through shared model stages
Menci Sep 30, 2026
c8dc70d
Merge remote-tracking branch 'origin/feat/pipeline-non-chat' into fea…
Menci Sep 30, 2026
2972be2
fix(chat): record the final client protocol projection
Menci Sep 30, 2026
a0d8c06
Merge remote-tracking branch 'origin/feat/pipeline-non-chat' into fea…
Menci Sep 30, 2026
c9243cb
feat: expose chat provider operation pipelines
Menci Sep 30, 2026
9c17d50
fix: record protocol errors for abnormal client streams
Menci Sep 30, 2026
1174521
Merge remote-tracking branch 'origin/feat/pipeline-non-chat' into fea…
Menci Sep 30, 2026
790d0b8
refactor(codex): serve Responses through provider stages
Menci Sep 30, 2026
222d5f9
fix(codex): retain the actual Responses action on unwind
Menci Sep 30, 2026
1ad0e0b
refactor(claude-code): serve Messages through provider stages
Menci Sep 30, 2026
c93ab2f
feat: route chat calls through provider pipelines
Menci Sep 30, 2026
effb106
fix: distinguish cancelled chat streams from normal EOF
Menci Sep 30, 2026
8a83bb1
test: drive provider behavior through declared stages
Menci Sep 30, 2026
977e878
fix: settle chat usage when quantity formatting fails
Menci Sep 30, 2026
9b8a066
refactor: declare authored chat response body facts
Menci Sep 30, 2026
490e054
refactor: remove legacy provider call surfaces
Menci Sep 30, 2026
c9f7f6f
refactor(provider): finish subscription operation pipelines
Menci Sep 30, 2026
c32f078
refactor: finish provider pipeline dependency cleanup
Menci Sep 30, 2026
5ca0f67
fix: preserve reported zero chat token quantities
Menci Sep 30, 2026
81ec8da
fix(provider): preserve failures through state observation
Menci Sep 30, 2026
34dd605
fix: resolve Alpha backends only when search dispatches
Menci Sep 30, 2026
543e0e3
refactor: retire mutable interceptor composition
Menci Sep 30, 2026
4c7caf5
fix: retain accepted counting and compaction statuses
Menci Sep 30, 2026
0bef5b8
Merge shared pipeline lifecycle and dump writer updates
Menci Sep 30, 2026
b5a68a5
Merge shared failure settlement and scoped diagnostics
Menci Sep 30, 2026
f5eb3c7
Complete recorded source after nonstream protocol collection
Menci Sep 30, 2026
3af29ba
refactor: make run dumps use streaming storage exclusively
Menci Sep 30, 2026
db0b723
Record the final WebSocket protocol projection
Menci Sep 30, 2026
c19eaf2
fix: collect the recorded client stream with its completion proof
Menci Sep 30, 2026
3325535
Carry candidate request projections through immutable facts
Menci Oct 1, 2026
629d7fc
Merge serialized JSON response bodies into shared pipelines
Menci Oct 1, 2026
8a8134f
fix: transfer body release before finite response readers adopt it
Menci Oct 1, 2026
f5d0a01
fix(provider): transfer finite bodies before native reads
Menci Oct 1, 2026
27a2479
Propagate hosted subrequest preparation failures through their run
Menci Oct 1, 2026
a0ffb9e
Exclude local handshakes from billable AI calls
Menci Oct 1, 2026
4a9c640
Encode chat HTTP replies inside settlement
Menci Oct 1, 2026
2e78da1
Compose fixed Responses transport edges
Menci Oct 1, 2026
848bf5c
refactor: confine provider reply fixtures to test infrastructure
Menci Oct 1, 2026
776b462
fix: select recorded classic Completions client streams
Menci Oct 1, 2026
43e277f
Record native web search backend failures in the owning stage
Menci Oct 1, 2026
86245b9
Merge commit '2f6ee6cdab47e7c1e9cad5c35a2fc7e4063d73ad' into feat/pip…
Menci Oct 1, 2026
8ee0a04
Describe native counting as nonbillable measurement
Menci Oct 1, 2026
4c578ee
test: prove historical edge dump retirement preserves run records
Menci Oct 1, 2026
ca63c88
refactor: inspect recorded frames through the stage viewer
Menci Oct 1, 2026
5ddf5b3
refactor: collect recorded protocol frames directly
Menci Oct 1, 2026
e797eeb
Track hosted image emission through settlement and release
Menci Oct 1, 2026
380e200
Merge branch 'feat/pipeline-non-chat' into feat/pipeline-chat
Menci Oct 1, 2026
bd94eeb
refactor: remove the retired run view label
Menci Oct 1, 2026
8282252
fix: preserve finite search body read failures
Menci Oct 1, 2026
f783095
fix: preserve chat error body read failures
Menci Oct 1, 2026
41f1b09
refactor: use portable dump recording throughout chat pipelines
Menci Oct 1, 2026
3c89c15
Merge branch feat/pipeline-non-chat into feat/pipeline-chat
Menci Oct 1, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
25 changes: 13 additions & 12 deletions .agents/skills/audit-copilot-workarounds/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,24 @@ Copilot upstream.
The provider code and the reference URLs beside each workaround are the
inventory; there is no separate documentation list to reconcile.

1. Start from
`packages/provider-copilot/src/interceptors/{openai-chat-completions,anthropic-messages,openai-responses}/index.ts`
and `packages/provider-copilot/src/defaults.ts`. Follow every registered
interceptor and default-enabled shim to its implementation and tests.
1. Start from `packages/provider-copilot/src/pipelines.ts`,
`chat-pipelines.ts`, and `defaults.ts`. Follow every registered stage and
default-enabled shim to its implementation under `src/stages/` and its
mirrored tests under `__tests__/stages/`.
2. Sweep the rest of `packages/provider-copilot/src` for non-pricing reference
URLs and for vendor constants, thresholds, timeouts, retries, and pinned wire
values that require a reference but may be missing one. Pricing citations
belong to `fetching-models-pricing`; everything else remains in this audit.
3. Include provider-level request/result shaping and catalog shaping even when
they are not interceptors. In particular, inspect `provider.ts`,
3. Include request/result shaping and catalog shaping. Inspect `provider.ts`,
`fetch-models.ts`, `known-models.ts`, `model-selection.ts`, and
`merge-claude-variants.ts` together with their imports and tests.
4. Include the authentication fingerprint and management/data-plane behavior in
`auth.ts`, plus OpenAI Responses item identity and replay handling rooted at
`interceptors/openai-responses/item-id-membrane.ts`. Follow adjacent carrier and
compaction modules rather than assuming the interceptor registry contains the
whole workaround.
`merge-claude-variants.ts` together with their imports and tests. Exercise
data-plane behavior through the provider's operation pipelines rather than
its catalog-only instance.
4. Include the authentication fingerprint and control/data-plane behavior in
`auth.ts` and `control-http.ts`, plus OpenAI Responses item identity and replay
handling rooted at `stages/openai-responses/item-id-membrane.ts` and
`opaque-item-id.ts`. Follow adjacent carrier and compaction modules; the
operation assemblies are entrypoints, not a complete workaround inventory.
5. Record each item's owning module, reference URLs, affected source and target
APIs, models, account scope, default flag state, tests, and exit condition:
delete an obsolete workaround, refresh pinned mimicry, or retain it with
Expand Down
1 change: 0 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,6 @@
| Package | `packages/dump` | Records pipeline runs and publishes diagnostics. |
| Package | `packages/gateway` | Composes gateway services. |
| Package | `packages/http` | Provides HTTP transport primitives. |
| Package | `packages/interceptor` | Intercepts gateway traffic. |
| Package | `packages/pipeline` | Runs stages over a fact record. |
| Package | `packages/platform` | Defines portable runtime contracts. |
| Package | `packages/protocols` | Defines protocol contracts. |
Expand Down
14 changes: 7 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -206,13 +206,13 @@ stage throws. Client JSON serialization runs inside settlement and publishes UTF
while retaining the canonical content for inspection. Streaming quantities settle at the deferred exit. Explicit protocol and
transport errors take precedence over the settlement's generic failure marker.

Pipeline owns the stage-event format and object-space encoding. `@floway-dev/dump` owns
run recording, stream references, completed NDJSON artifacts and metadata publication.
Gateway supplies storage/broker ports and applies request admission, model attribution,
HTTP byte measurement and retention policy. Closing waits for owned readers and deferred
outcomes before storing the completed record and publishing its metadata. LogStream
infrastructure is available on both platforms; live recording and its business readers
remain outside these three PRs.
`@floway-dev/dump` owns portable run recording, stream recording, metadata contracts,
broker framing and wire conversion. Pipeline encodes stage facts, logs and protocol frames
into one object space. Gateway owns attribution, admission, SQL storage and HTTP measurement.
Closing waits for owned readers and deferred outcomes before storing the completed NDJSON
record and publishing its metadata. The Collected view selects the recorded client stream and uses its
`stream.end` event to establish recording completion. LogStream infrastructure is available
on both platforms; live recording and its business readers remain outside these three PRs.

Pipeline endpoints are assembled from individual stage modules. Each stage owns
its request and response contract; a large stage keeps local helpers in the same
Expand Down
149 changes: 0 additions & 149 deletions apps/web/__tests__/components/requests/body-rendering_test.ts

This file was deleted.

Loading
Loading