Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
6 changes: 3 additions & 3 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/agent/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# Changelog

## 0.3.2 - 2026-06-11

- Update the `@onkernel/cua-ai` dependency to 0.2.2.

## 0.3.1 - 2026-06-11

- Update the `@onkernel/cua-ai` dependency to 0.2.1.
Expand Down
4 changes: 2 additions & 2 deletions packages/agent/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@onkernel/cua-agent",
"version": "0.3.1",
"version": "0.3.2",
"description": "Kernel browser computer-use Agent and AgentHarness classes built on pi-agent-core",
"license": "MIT",
"type": "module",
Expand Down Expand Up @@ -42,7 +42,7 @@
"dependencies": {
"@earendil-works/pi-agent-core": "0.79.1",
"@earendil-works/pi-ai": "0.79.1",
"@onkernel/cua-ai": "0.2.1",
"@onkernel/cua-ai": "0.2.2",
"@onkernel/sdk": "0.49.0",
"sharp": "^0.34.5"
},
Expand Down
5 changes: 5 additions & 0 deletions packages/ai/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
# Changelog

## 0.2.2 - 2026-06-11

- Add computer-use support for `gpt-5.4-mini`, `gemini-3.1-flash-lite`, `tzafon.northstar-cua-fast-1.6`, and `tzafon.northstar-cua-fast-1.7-experiment`.
- Drop `gemini-3-pro-preview`, which Google has retired (the API now returns 404 for it).

## 0.2.1 - 2026-06-11

- Add computer-use support for the `claude-fable-5` Anthropic model.
Expand Down
5 changes: 4 additions & 1 deletion packages/ai/docs/supported-models.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ API: `openai-responses` · coordinates: pixel
Family matches (root + numeric revision/dated-snapshot suffixes):

- `gpt-5.4` ([docs](https://developers.openai.com/api/docs/models/gpt-5.4))
- `gpt-5.4-mini` ([docs](https://developers.openai.com/api/docs/models/gpt-5.4-mini))
- `gpt-5.5` ([docs](https://developers.openai.com/api/docs/models/gpt-5.5))

## `anthropic`
Expand All @@ -47,7 +48,7 @@ Model refs use the `google:` prefix; `gemini:` is accepted as an alias.
Exact IDs:

- `gemini-3-flash-preview`
- `gemini-3-pro-preview`
- `gemini-3.1-flash-lite`

`gemini-2.5-computer-use-preview-10-2025` is deliberately not annotated: it
rejects the standard function declarations this package sends and requires
Expand All @@ -62,6 +63,8 @@ API: `tzafon-responses` · coordinates: normalized 0–999
Exact IDs:

- `tzafon.northstar-cua-fast` ([model card](https://huggingface.co/Tzafon/Northstar-CUA-Fast))
- `tzafon.northstar-cua-fast-1.6` ([model card](https://huggingface.co/Tzafon/Northstar-CUA-Fast))
- `tzafon.northstar-cua-fast-1.7-experiment` ([model card](https://huggingface.co/Tzafon/Northstar-CUA-Fast))

## `yutori`

Expand Down
2 changes: 1 addition & 1 deletion packages/ai/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@onkernel/cua-ai",
"version": "0.2.1",
"version": "0.2.2",
"description": "Kernel-curated computer-use model access built on pi-ai",
"license": "MIT",
"type": "module",
Expand Down
9 changes: 8 additions & 1 deletion packages/ai/src/models.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export interface CuaModelAnnotation {
export const CUA_MODEL_ANNOTATIONS: Record<CuaProvider, readonly CuaModelAnnotation[]> = {
openai: [
{ match: { kind: "family", family: "gpt-5.4" }, source: "https://developers.openai.com/api/docs/models/gpt-5.4" },
{ match: { kind: "family", family: "gpt-5.4-mini" }, source: "https://developers.openai.com/api/docs/models/gpt-5.4-mini" },
{ match: { kind: "family", family: "gpt-5.5" }, source: "https://developers.openai.com/api/docs/models/gpt-5.5" },
],
anthropic: [
Expand All @@ -74,10 +75,14 @@ export const CUA_MODEL_ANNOTATIONS: Record<CuaProvider, readonly CuaModelAnnotat
// requires Google's native tools.computer_use wrapper instead.
google: [
{ match: { kind: "exact", id: "gemini-3-flash-preview" }, source: "https://ai.google.dev/gemini-api/docs/computer-use" },
{ match: { kind: "exact", id: "gemini-3-pro-preview" }, source: "https://ai.google.dev/gemini-api/docs/computer-use" },
{ match: { kind: "exact", id: "gemini-3.1-flash-lite" }, source: "https://ai.google.dev/gemini-api/docs/computer-use" },
// gemini-3-pro-preview is intentionally absent: Google retired it and
// the API now returns 404 "model no longer available".

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agent tests reference removed model

Medium Severity

Removing gemini-3-pro-preview from CUA_MODEL_ANNOTATIONS while bumping @onkernel/cua-agent to @onkernel/cua-ai 0.2.2 leaves packages/agent/test/agent.test.ts calling resolveCuaRuntimeSpec and setModel with google:gemini-3-pro-preview. Those paths invoke getCuaModel, which now throws for that ref, so @onkernel/cua-agent tests fail against the updated workspace.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit dfab56d. Configure here.

],
tzafon: [
{ match: { kind: "exact", id: "tzafon.northstar-cua-fast" }, source: "https://huggingface.co/Tzafon/Northstar-CUA-Fast" },
{ match: { kind: "exact", id: "tzafon.northstar-cua-fast-1.6" }, source: "https://huggingface.co/Tzafon/Northstar-CUA-Fast" },
{ match: { kind: "exact", id: "tzafon.northstar-cua-fast-1.7-experiment" }, source: "https://huggingface.co/Tzafon/Northstar-CUA-Fast" },
],
yutori: [
{ match: { kind: "exact", id: "n1-latest" }, source: "https://docs.yutori.com/reference/navigator" },
Expand All @@ -101,6 +106,8 @@ const CUA_MODEL_OVERRIDES: Record<CuaProvider, readonly Model<Api>[]> = {
google: [],
tzafon: [
cuaModel("tzafon", "tzafon.northstar-cua-fast", "Tzafon Northstar CUA Fast"),
cuaModel("tzafon", "tzafon.northstar-cua-fast-1.6", "Tzafon Northstar CUA Fast 1.6"),
cuaModel("tzafon", "tzafon.northstar-cua-fast-1.7-experiment", "Tzafon Northstar CUA Fast 1.7 (experiment)"),
],
yutori: [
cuaModel("yutori", "n1.5-latest", "Yutori Navigator n1.5"),
Expand Down
13 changes: 10 additions & 3 deletions packages/ai/test/models.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,8 @@ describe("CUA support annotations", () => {
it("matches family roots, dated snapshots, and numeric revisions", () => {
expect(findCuaAnnotation("openai", "gpt-5.5")?.match).toEqual({ kind: "family", family: "gpt-5.5" });
expect(findCuaAnnotation("openai", "gpt-5.5-2026-04-23")?.match).toEqual({ kind: "family", family: "gpt-5.5" });
expect(findCuaAnnotation("openai", "gpt-5.4-mini")?.match).toEqual({ kind: "family", family: "gpt-5.4-mini" });
expect(findCuaAnnotation("openai", "gpt-5.4-mini-2026-03-17")?.match).toEqual({ kind: "family", family: "gpt-5.4-mini" });
expect(findCuaAnnotation("anthropic", "claude-opus-4-7")).toBeDefined();
expect(findCuaAnnotation("anthropic", "claude-3-7-sonnet-20250219")).toBeDefined();
});
Expand All @@ -93,22 +95,21 @@ describe("CUA support annotations", () => {
});

it("does not match named sibling variants of a family", () => {
expect(findCuaAnnotation("openai", "gpt-5.4-mini")).toBeUndefined();
expect(findCuaAnnotation("openai", "gpt-5.4-nano")).toBeUndefined();
expect(findCuaAnnotation("openai", "gpt-5.4-pro")).toBeUndefined();
expect(findCuaAnnotation("openai", "gpt-5.5-pro")).toBeUndefined();
const openaiModels = listCuaModels("openai").map((model) => model.model);
expect(openaiModels).not.toContain("gpt-5.4-mini");
expect(openaiModels).not.toContain("gpt-5.4-nano");
expect(openaiModels).not.toContain("gpt-5.4-pro");
expect(openaiModels).toContain("gpt-5.5");
});

it("matches exact-id annotations", () => {
expect(findCuaAnnotation("google", "gemini-3-flash-preview")).toBeDefined();
expect(findCuaAnnotation("google", "gemini-3-pro-preview")).toBeDefined();
expect(findCuaAnnotation("google", "gemini-3.1-flash-lite")).toBeDefined();
expect(findCuaAnnotation("yutori", "n1.5-latest")).toBeDefined();
expect(findCuaAnnotation("tzafon", "tzafon.northstar-cua-fast")).toBeDefined();
expect(findCuaAnnotation("tzafon", "tzafon.northstar-cua-fast-1.6")).toBeDefined();
});

it("no longer advertises the Gemini 2.5 computer-use preview", () => {
Expand All @@ -118,4 +119,10 @@ describe("CUA support annotations", () => {
expect(listCuaModels("google").map((model) => model.model)).not.toContain("gemini-2.5-computer-use-preview-10-2025");
expect(() => getCuaModel("google:gemini-2.5-computer-use-preview-10-2025")).toThrow(/unsupported CUA model/);
});

it("no longer advertises the retired gemini-3-pro-preview", () => {
// Google removed the model; the API now 404s "model no longer available".
expect(findCuaAnnotation("google", "gemini-3-pro-preview")).toBeUndefined();
expect(listCuaModels("google").map((model) => model.model)).not.toContain("gemini-3-pro-preview");
});
});
Loading