Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
760fe11
Add Foundation Models 27 prompt attachments
qoli Oct 9, 2026
f2de319
Add Foundation Models 27 request options
qoli Oct 9, 2026
379ee3c
Fix attachment prompt replay
qoli Oct 11, 2026
2d1a32b
Preserve attachments in tool outputs
qoli Oct 11, 2026
cd1d6fc
Add session properties to dynamic instructions
qoli Oct 11, 2026
9481380
Add session properties to dynamic instructions
qoli Oct 11, 2026
a03fd6b
Add Foundation Models 27 dynamic profiles
qoli Oct 11, 2026
8cc3a74
Preserve dynamic profiles across tool continuations
qoli Oct 11, 2026
dc79bbf
Document attachments in tool outputs
qoli Oct 11, 2026
f96d6de
Generate fresh prompt segment identifiers
qoli Oct 12, 2026
c7aaa57
Preserve Gemini tool output segments
qoli Oct 12, 2026
d70bf12
Generate fresh prompt segment identifiers
qoli Oct 12, 2026
ddfa8f1
Preserve Gemini tool output segments
qoli Oct 12, 2026
da63029
Keep session property requests observable
qoli Oct 12, 2026
8b3a234
Keep session property requests observable
qoli Oct 12, 2026
9525809
Keep session property requests observable
qoli Oct 12, 2026
d9de68a
Avoid relowering recorded prompt attachments
qoli Oct 13, 2026
9ab55ea
Clarify supported attachment platforms
qoli Oct 13, 2026
a03fe05
Avoid relowering recorded prompt attachments
qoli Oct 13, 2026
51fa0a9
Clarify supported attachment platforms
qoli Oct 13, 2026
d0cae54
Isolate dynamic profile request state
qoli Oct 13, 2026
1ac8207
Isolate dynamic profile request state
qoli Oct 13, 2026
c350013
Fix dynamic profile continuation boundaries
qoli Oct 13, 2026
f57be8c
Merge upstream main into tool output attachments
qoli Oct 14, 2026
810861f
Merge updated attachment support into documentation
qoli Oct 14, 2026
d1c8413
Merge remote-tracking branch 'upstream/main' into codex/upstream-dyna…
qoli Oct 14, 2026
49f681f
Merge updated dynamic profiles into tool continuations
qoli Oct 14, 2026
1892a39
Inline Gemini tool output file attachments
qoli Oct 15, 2026
8c9e8d9
Merge branch 'codex/upstream-tool-output-attachments' into codex/upst…
qoli Oct 15, 2026
93e4d4d
Fix session property observation and typed defaults
qoli Oct 15, 2026
e99341e
Merge branch 'codex/upstream-session-properties' into codex/upstream-…
qoli Oct 15, 2026
cdeed51
Fix dynamic profile callback concurrency
qoli Oct 15, 2026
8e218df
Merge reviewed profile fixes into tool continuations
qoli Oct 15, 2026
2f435bd
Format Gemini attachment MIME mapping
qoli Oct 16, 2026
446f111
Merge branch 'codex/upstream-tool-output-attachments' into codex/upst…
qoli Oct 16, 2026
d211109
Allow sampling mode without tool calling policy
qoli Oct 16, 2026
3ad28fb
Keep session history bindings isolated and instruction free
qoli Oct 16, 2026
1fde50e
Merge branch 'codex/upstream-request-options' into codex/upstream-dyn…
qoli Oct 16, 2026
05f892a
Merge branch 'codex/upstream-session-properties' into codex/upstream-…
qoli Oct 16, 2026
9b76d74
Preserve profile history and request callback identity
qoli Oct 16, 2026
ea464ed
Preserve pending profile history across model handoffs
qoli Oct 16, 2026
4d9cd91
Inline local Anthropic image attachments during transport
qoli Oct 17, 2026
6354a86
Merge branch 'codex/upstream-tool-output-attachments' into codex/upst…
qoli Oct 17, 2026
2c5c488
Invalidate stale history commits and evaluate property defaults outsi…
qoli Oct 17, 2026
905194e
Merge branch 'codex/upstream-session-properties' into codex/upstream-…
qoli Oct 17, 2026
d9e5f31
Preserve profile lifecycle identity and evolving callback history
qoli Oct 17, 2026
ea7de61
Merge branch 'codex/upstream-dynamic-profiles' into codex/upstream-pr…
qoli Oct 17, 2026
ef80f14
Carry callback history edits and original schema options through tool…
qoli Oct 17, 2026
2eb4abd
Merge remote-tracking branch 'upstream/main' into codex/upstream-tool…
qoli Oct 17, 2026
86d6952
Merge branch 'codex/upstream-attachment-docs' into codex/upstream-too…
qoli Oct 17, 2026
5a17ad3
Snapshot local tool image data before persisting output
qoli Oct 17, 2026
790ce15
Merge remote-tracking branch 'upstream/main' into codex/upstream-sess…
qoli Oct 17, 2026
0a3580b
Match HistoryView collection shape and bind session properties in con…
qoli Oct 17, 2026
4cf0f06
Reshape dynamic profiles as composition-only API on current session p…
qoli Oct 17, 2026
c40cf05
Separate shared profile execution SPI from provider Tool loops
qoli Oct 17, 2026
572fe1e
Integrate Anthropic profile Tool continuations without changing ordin…
qoli Oct 17, 2026
ace3039
Synchronize Anthropic profile integration with attachment snapshots
qoli Oct 17, 2026
0dad115
Merge remote-tracking branch 'upstream/main' into codex/upstream-sess…
qoli Oct 19, 2026
25d51f1
Preserve public request context and expose Tool session properties
qoli Oct 19, 2026
8e10048
Merge session properties and upstream request options into profiles
qoli Oct 19, 2026
982cc07
Match the SDK history transform closure contract
qoli Oct 19, 2026
31764ea
Merge profile API updates and upstream tool-round options
qoli Oct 19, 2026
89c0077
Use request options for shared profile tool-round budgets
qoli Oct 19, 2026
23a5a7f
Merge upstream native delegate and request options into Tool attachments
qoli Oct 19, 2026
cf756b1
Preserve native Tool attachment snapshots through delegate execution
qoli Oct 19, 2026
fcb08cf
Merge remote-tracking branch 'upstream/main' into codex/upstream-prof…
qoli Oct 20, 2026
90c85f1
Scope continuation entries to Tool rounds and share wire replay
qoli Oct 20, 2026
b6d5ee5
Merge remote-tracking branch 'upstream/main' into codex/upstream-tool…
qoli Oct 20, 2026
7d8f8f1
Merge shared continuation runtime and current upstream into Anthropic…
qoli Oct 20, 2026
c96bd09
Reject non-image file types when snapshotting Tool attachments
qoli Oct 20, 2026
3413c0f
Merge branch 'codex/upstream-tool-output-attachments' into codex/upst…
qoli Oct 20, 2026
4f6d2bb
Share Anthropic continuation replay without changing ordinary nonstre…
qoli Oct 20, 2026
1dcc38c
Let provider adapters retain their offered Tool boundary
qoli Oct 20, 2026
07ad954
Describe remote Gemini Tool images as URL text
qoli Oct 20, 2026
ae6259f
Merge branch 'codex/upstream-tool-output-attachments' into codex/upst…
qoli Oct 20, 2026
db6bc62
Preserve public Tool identity and bind at execution boundaries
qoli Oct 21, 2026
9b01280
Merge main while retaining offered Tool filtering and execution binding
qoli Oct 21, 2026
846508e
Merge branch 'codex/upstream-session-properties' into codex/upstream-…
qoli Oct 21, 2026
b05f1fa
Merge Tool identity compatibility into shared profile runtime
qoli Oct 21, 2026
57094db
Share local-provider round budgets and verify Tool-call entry identity
qoli Oct 21, 2026
14d1b74
Remove unreachable remote-URL failure from Gemini file lowering
qoli Oct 21, 2026
c18b53d
Merge current shared runtime into Anthropic integration
qoli Oct 21, 2026
ba160b9
Merge branch 'codex/upstream-tool-output-attachments' into codex/upst…
qoli Oct 21, 2026
06808c7
Preserve producing Anthropic Tool-call entries through execution
qoli Oct 21, 2026
77e57d0
Use image placeholders for unsupported provider tool-output formats
qoli Oct 21, 2026
458a3c7
Merge commit '77e57d07a53ccb7a3de74ccea969c000442f3cc7' into codex/up…
qoli Oct 21, 2026
cb8603b
Apply tool image placeholders to Anthropic profile continuations
qoli Oct 21, 2026
aed9f2a
Merge commit '7013d51f5f5249ab907ac8e2b5b5d0eb222c4153' into codex/up…
qoli Oct 22, 2026
170aa66
Merge commit '7013d51f5f5249ab907ac8e2b5b5d0eb222c4153' into codex/up…
qoli Oct 22, 2026
aeae6e1
Merge commit '170aa66ef7024b72cbcefcf13a08621c9b466f5a' into codex/up…
qoli Oct 22, 2026
163b679
Merge commit 'aeae6e1ce7b87692e0d6ac0b8535d67e537e2036' into codex/up…
qoli Oct 22, 2026
2e96883
Preserve final-request and cumulative usage across profile handoffs
qoli Oct 22, 2026
c14497e
Merge upstream transport and request usage into Anthropic profiles
qoli Oct 22, 2026
a9c3ec2
Merge commit 'aed9f2ac3131d5a4a224fedfd55c6ff65ca12e27' into codex/up…
qoli Oct 22, 2026
697ed57
Merge upstream 1.1 request accounting and replay updates
qoli Oct 23, 2026
2495f61
Merge upstream request accounting and stream updates
qoli Oct 23, 2026
5359f3d
Merge updated session-properties dependency
qoli Oct 23, 2026
cf4ad0d
Merge upstream per-request usage and isolate profile streams
qoli Oct 23, 2026
5464ee4
Merge shared upstream request-accounting dependency
qoli Oct 23, 2026
4c30d17
Merge attachment dependency and retain completed Anthropic rounds
qoli Oct 23, 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
36 changes: 26 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -387,19 +387,22 @@ pass the model's multimodal projector with `mmprojPath:`.

### Prompt attachments

Image attachments use the Foundation Models 27 prompt construction syntax:
Image attachments use the Foundation Models 27 prompt construction syntax,
including ordinary Tool outputs:

```swift
let prompt = Prompt {
"Describe this image"
Attachment(imageURL: fileURL)
func call(arguments: Arguments) async throws -> Prompt {
Prompt {
"Image read from the selected file"
Attachment(imageURL: fileURL)
}
}
```

On Apple platforms, `Attachment(CGImage, orientation:)` retains typed image
content and orientation. Prompt builders preserve the order of text and images,
and the OS 26 compatibility transcript continues to store images using its
existing `Transcript.Segment.image` Codable representation.
content and orientation. Prompts, builders, and Tool outputs preserve the order
of text and images, and the OS 26 compatibility transcript continues to store
images using its existing `Transcript.Segment.image` Codable representation.

`SystemLanguageModel` and `FoundationLanguageModel` bridge prompt attachments
to Foundation Models only in apps built with Swift 6.4 or later
Expand All @@ -409,9 +412,18 @@ they throw an error when a prompt has an attachment.
The system bridge requires local file URLs; other provider adapters retain URL
images in their existing transcript representation.

This first compatibility surface covers prompt `CGImage` and `imageURL`
attachments. Tool outputs, instruction attachments, labels, `CIImage`, pixel
buffers, and newer data attachments remain outside this change.
Ordinary Tool outputs read local image files once when the output is created,
and retain the image bytes and MIME type in the compatibility transcript.
Continuations and saved transcript replay therefore do not depend on the original
file remaining at its URL. Remote image URLs are retained without downloading.

Gemini supports images in Tool function responses only with Gemini 3 and later.
In Gemini Tool outputs, remote image URLs are sent as text at their original
position without downloading the image; the transcript retains the image segment.

This compatibility surface covers `CGImage` and `imageURL` attachments in
prompts and ordinary Tool outputs. Instruction attachments, labels, `CIImage`,
pixel buffers, and newer data attachments remain outside this change.

### Tool Calling

Expand Down Expand Up @@ -895,6 +907,10 @@ say which API they follow.
[image inputs](#image-inputs).
Foundation Models 27-style [prompt attachments](#prompt-attachments) are also
available for ordered text and image prompt construction.
- `Tool.makeOutputSegments(from:)`, exposed only through the `Compatibility` SPI:
an integration extension for back-deployment provider adapters to lower normal
Tool outputs into the compatibility transcript. It is not an Apple Tool API;
OS 27 canonical executors use Foundation Models' own Tool execution instead.
- `ToolExecutionDelegate`, `ToolExecutionDecision`, and `toolExecutionDelegate`:
[observing and controlling tool calls](#tool-calling).
- `transcriptErrorHandlingPolicy` and `waitForResponseCompletion()`:
Expand Down
Loading
Loading