Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
1b8a31f
feat(codec): add OCI GenAI typed variants and response decoding
fede-kamel Jul 24, 2026
ad9f167
feat(codec): cover all OCI GenAI transports and live-observed shapes
fede-kamel Jul 27, 2026
7282cdd
refactor(codec): restrict OCI GenAI decode to the REST wire format
fede-kamel Jul 27, 2026
eca6f0b
test(codec): cover rejected CLI data envelope in wire-only contract test
fede-kamel Jul 28, 2026
2ab7e34
feat(codec): decode OCI COHEREV2 responses and preserve unmodeled fields
fede-kamel Jul 28, 2026
08ef006
Merge branch 'main' into feat/oci-codec-1-types-response
fede-kamel Jul 29, 2026
9cae2fb
feat(codec): preserve choice- and message-level OCI response fields
fede-kamel Jul 29, 2026
0766e46
fix(observability): map OCIGenAI requests to an OTel provider name
fede-kamel Jul 29, 2026
07ded78
test(codec): note live-service confirmation of the COHEREV2 wire shape
fede-kamel Jul 29, 2026
eec144e
feat(codec): implement OCI GenAI request decode and encode
fede-kamel Jul 24, 2026
d3c75e3
feat(codec): register OCI GenAI provider surface and streaming codec
fede-kamel Jul 24, 2026
311977a
feat(bindings): expose OCIGenAIChatCodec to Python and Node
fede-kamel Jul 24, 2026
fe141f1
fix(python): add OCIGenAIChatCodec to the codecs type stub
fede-kamel Aug 7, 2026
3ee8a38
fix(codec): address review findings on OCI encode, streaming, and ove…
fede-kamel Aug 7, 2026
2fec51b
chore: drop locally generated fixture lockfile from the branch
fede-kamel Aug 7, 2026
16d0022
fix(codec): reject OCI api_format edits instead of partially converting
fede-kamel Aug 7, 2026
8fcb215
Merge remote-tracking branch 'origin/main' into feat/oci-codec-1-type…
fede-kamel Aug 10, 2026
1553870
fix(codec): close post-merge review gaps in OCI encode and PII overlay
fede-kamel Aug 10, 2026
5ca29b2
fix(codec): take the terminal COHERE stream event's text as authorita…
fede-kamel Aug 10, 2026
ee26247
fix(codec): finalize COHEREV2 streams natively and harden overlay/res…
fede-kamel Aug 10, 2026
f988000
fix(codec): preserve non-TEXT typed parts in OCI stream accumulation
fede-kamel Aug 10, 2026
a80fc39
test(codec): cover GENERIC stream typed-part preservation
fede-kamel Aug 10, 2026
02f3889
Merge branch 'main' into feat/oci-codec-1-types-response
fede-kamel Aug 10, 2026
45ea334
fix: address CI failures and full-review findings
fede-kamel Aug 11, 2026
8be4bb9
chore: restore package-lock.json to main's contents
fede-kamel Aug 11, 2026
3573bc2
test: cover remaining OCI codec and overlay paths for the patch gate
fede-kamel Aug 11, 2026
895842a
fix: address final review round for the OCI codec
fede-kamel Aug 11, 2026
98b4c75
Merge branch 'main' into feat/oci-codec-1-types-response
willkill07 Aug 12, 2026
c2048f2
fix: surface the OCI GenAI codec identity to sanitizers and plugin SDKs
fede-kamel Aug 12, 2026
a9492c8
Merge branch 'main' into feat/oci-codec-1-types-response
willkill07 Aug 12, 2026
e88e4e4
test: fix flaky host-string release assertion in the OCI identity test
fede-kamel Aug 12, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions crates/adaptive/src/acg/request_surfaces/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ impl RequestSurface {
ProviderSurface::OpenAIChat => Some(Self::OpenAIChat),
ProviderSurface::OpenAIResponses => Some(Self::OpenAIResponses),
ProviderSurface::AnthropicMessages => Some(Self::AnthropicMessages),
// No semantic ACG applier exists for OCI GenAI request shapes yet.
ProviderSurface::OCIGenAI => None,
// Gemini generateContent ACG request editing is intentionally unsupported.
ProviderSurface::GeminiGenerateContent => None,
}
Expand Down
6 changes: 6 additions & 0 deletions crates/adaptive/src/response_cache/key.rs
Original file line number Diff line number Diff line change
Expand Up @@ -338,6 +338,12 @@ fn lossy_request_shape(surface: ProviderSurface, content: &Json) -> bool {
.is_some_and(|blocks| blocks.iter().any(lossy_system_block))
}
ProviderSurface::OpenAIResponses => false,
// OCI GenAI requests carry an envelope (`compartmentId`, `servingMode`)
// whose unmodeled fields the decode does not preserve in `extra`, and
// the generic scalar checks above target OpenAI-shaped keys rather
// than OCI camelCase. Keep OCI raw-keyed — a fallback only ever costs
// a miss.
ProviderSurface::OCIGenAI => true,
ProviderSurface::GeminiGenerateContent => {
object
.get("generationConfig")
Expand Down
5 changes: 5 additions & 0 deletions crates/adaptive/src/response_cache/replay.rs
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,11 @@ fn synthesize_replay_chunks(aggregate: &Json) -> Option<Vec<Json>> {
ProviderSurface::AnthropicMessages => synthesize_anthropic_chunks(aggregate),
ProviderSurface::OpenAIChat => synthesize_chat_chunks(aggregate),
ProviderSurface::OpenAIResponses => synthesize_responses_chunks(aggregate),
// OCI GenAI streaming events are ChatResult-shaped deltas; the OCI
// stream collector accepts a full `chatResponse` aggregate as a single
// native chunk. `replay_is_lossy` still re-aggregates it and rejects
// shapes the streaming collector cannot preserve exactly.
ProviderSurface::OCIGenAI => vec![aggregate.clone()],
// Gemini streaming events are GenerateContentResponse objects; a stored
// aggregate is a valid single native chunk. `replay_is_lossy` still
// re-aggregates it and rejects shapes the streaming collector cannot
Expand Down
3 changes: 3 additions & 0 deletions crates/core/src/api/runtime/callbacks.rs
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,8 @@ pub enum BuiltinLlmCodec {
OpenAiResponses,
/// Anthropic Messages request and response payloads.
AnthropicMessages,
/// OCI Generative AI chat request and response payloads.
OCIGenAI,
/// Gemini generateContent request and response payloads.
GeminiGenerateContent,
}
Expand All @@ -172,6 +174,7 @@ impl BuiltinLlmCodec {
Self::OpenAiChat => "openai_chat",
Self::OpenAiResponses => "openai_responses",
Self::AnthropicMessages => "anthropic_messages",
Self::OCIGenAI => "oci_genai",
Self::GeminiGenerateContent => "gemini_generate_content",
}
}
Expand Down
1 change: 1 addition & 0 deletions crates/core/src/codec/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
pub mod anthropic;
pub mod gemini_generate_content;
pub mod model_pricing;
pub mod oci_genai;
pub mod openai_chat;
pub mod openai_responses;
pub mod optimization;
Expand Down
Loading
Loading