@onkernel/cua-ai 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +229 -0
  3. package/dist/api-keys.d.ts +8 -0
  4. package/dist/api-keys.d.ts.map +1 -0
  5. package/dist/api-keys.js +48 -0
  6. package/dist/api-keys.js.map +1 -0
  7. package/dist/index.d.ts +11 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +13 -0
  10. package/dist/index.js.map +1 -0
  11. package/dist/models.d.ts +33 -0
  12. package/dist/models.d.ts.map +1 -0
  13. package/dist/models.js +159 -0
  14. package/dist/models.js.map +1 -0
  15. package/dist/providers/anthropic/index.d.ts +10 -0
  16. package/dist/providers/anthropic/index.d.ts.map +1 -0
  17. package/dist/providers/anthropic/index.js +16 -0
  18. package/dist/providers/anthropic/index.js.map +1 -0
  19. package/dist/providers/common.d.ts +111 -0
  20. package/dist/providers/common.d.ts.map +1 -0
  21. package/dist/providers/common.js +138 -0
  22. package/dist/providers/common.js.map +1 -0
  23. package/dist/providers/gemini/index.d.ts +11 -0
  24. package/dist/providers/gemini/index.d.ts.map +1 -0
  25. package/dist/providers/gemini/index.js +14 -0
  26. package/dist/providers/gemini/index.js.map +1 -0
  27. package/dist/providers/openai/index.d.ts +8 -0
  28. package/dist/providers/openai/index.d.ts.map +1 -0
  29. package/dist/providers/openai/index.js +22 -0
  30. package/dist/providers/openai/index.js.map +1 -0
  31. package/dist/providers/tzafon/index.d.ts +12 -0
  32. package/dist/providers/tzafon/index.d.ts.map +1 -0
  33. package/dist/providers/tzafon/index.js +18 -0
  34. package/dist/providers/tzafon/index.js.map +1 -0
  35. package/dist/providers/tzafon/provider.d.ts +8 -0
  36. package/dist/providers/tzafon/provider.d.ts.map +1 -0
  37. package/dist/providers/tzafon/provider.js +234 -0
  38. package/dist/providers/tzafon/provider.js.map +1 -0
  39. package/dist/providers/yutori/index.d.ts +12 -0
  40. package/dist/providers/yutori/index.d.ts.map +1 -0
  41. package/dist/providers/yutori/index.js +23 -0
  42. package/dist/providers/yutori/index.js.map +1 -0
  43. package/dist/providers/yutori/provider.d.ts +9 -0
  44. package/dist/providers/yutori/provider.d.ts.map +1 -0
  45. package/dist/providers/yutori/provider.js +307 -0
  46. package/dist/providers/yutori/provider.js.map +1 -0
  47. package/dist/providers.d.ts +6 -0
  48. package/dist/providers.d.ts.map +1 -0
  49. package/dist/providers.js +26 -0
  50. package/dist/providers.js.map +1 -0
  51. package/dist/runtime-spec.d.ts +29 -0
  52. package/dist/runtime-spec.d.ts.map +1 -0
  53. package/dist/runtime-spec.js +58 -0
  54. package/dist/runtime-spec.js.map +1 -0
  55. package/examples/quickstart.ts +59 -0
  56. package/examples/screenshot.png +0 -0
  57. package/package.json +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/providers/tzafon/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ export { CUA_ACTION_TYPES as YUTORI_ACTION_TYPES, CUA_BATCH_TOOL_DESCRIPTION as YUTORI_BATCH_DESCRIPTION, CUA_BATCH_TOOL_NAME as YUTORI_BATCH_TOOL_NAME, createComputerToolDefinitions, createCuaActionSchema as createActionSchema, createCuaBatchSchema as createBatchSchema, CuaBatchSchema as YutoriBatchSchema, } from "../common.js";
2
+ export type { CuaAction as YutoriAction, CreateComputerToolDefinitionsOptions, CuaBatchInput as YutoriBatchInput, } from "../common.js";
3
+ export { YUTORI_CHAT_COMPLETIONS_API, streamSimpleYutori, streamYutori, yutoriBuiltinToolsOnPayload, } from "./provider.js";
4
+ export declare const COMPUTER_TOOL_COORDINATES: {
5
+ readonly type: "normalized";
6
+ readonly range: readonly [0, 1000];
7
+ };
8
+ export declare const YUTORI_INSTRUCTIONS_RAW = "You control a Kernel cloud browser. Prefer batched computer actions for browser interaction and include screenshot or URL reads when you need updated state.";
9
+ export declare function buildYutoriSystemPrompt(opts?: {
10
+ suffix?: string;
11
+ }): string;
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/yutori/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,gBAAgB,IAAI,mBAAmB,EACvC,0BAA0B,IAAI,wBAAwB,EACtD,mBAAmB,IAAI,sBAAsB,EAC7C,6BAA6B,EAC7B,qBAAqB,IAAI,kBAAkB,EAC3C,oBAAoB,IAAI,iBAAiB,EACzC,cAAc,IAAI,iBAAiB,GACnC,MAAM,WAAW,CAAC;AACnB,YAAY,EACX,SAAS,IAAI,YAAY,EACzB,oCAAoC,EACpC,aAAa,IAAI,gBAAgB,GACjC,MAAM,WAAW,CAAC;AACnB,OAAO,EACN,2BAA2B,EAC3B,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,GAC3B,MAAM,YAAY,CAAC;AAiBpB,eAAO,MAAM,yBAAyB;;;CAA2F,CAAC;AAElI,eAAO,MAAM,uBAAuB,iKAAiK,CAAC;AAEtM,wBAAgB,uBAAuB,CAAC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAE9E"}
@@ -0,0 +1,23 @@
1
+ export { CUA_ACTION_TYPES as YUTORI_ACTION_TYPES, CUA_BATCH_TOOL_DESCRIPTION as YUTORI_BATCH_DESCRIPTION, CUA_BATCH_TOOL_NAME as YUTORI_BATCH_TOOL_NAME, createComputerToolDefinitions, createCuaActionSchema as createActionSchema, createCuaBatchSchema as createBatchSchema, CuaBatchSchema as YutoriBatchSchema, } from "../common.js";
2
+ export { YUTORI_CHAT_COMPLETIONS_API, streamSimpleYutori, streamYutori, yutoriBuiltinToolsOnPayload, } from "./provider.js";
3
+ // Provider-native action vocabulary differs between Navigator versions:
4
+ // n1 (fixed tool set):
5
+ // left_click, double_click, right_click, triple_click, type, key_press,
6
+ // scroll, hover, drag, goto_url, go_back, refresh, wait
7
+ // n1.5 core (browser_tools_core-20260403):
8
+ // left_click, double_click, triple_click, middle_click, right_click,
9
+ // mouse_move (replaces hover), mouse_down, mouse_up, drag, scroll, type,
10
+ // key_press, hold_key, goto_url, go_back, go_forward, refresh, wait
11
+ // n1.5 expanded (browser_tools_expanded-20260403): core +
12
+ // extract_elements, find, set_element_value, execute_js
13
+ // Sources:
14
+ // https://github.com/yutori-ai/yutori-sdk-python/blob/main/api.md
15
+ // https://github.com/yutori-ai/yutori-sdk-python/blob/main/yutori/navigator/models.py
16
+ // https://docs.yutori.com/reference/n1-5
17
+ // https://github.com/yutori-ai/yutori-sdk-python/blob/main/yutori/navigator/coordinates.py
18
+ export const COMPUTER_TOOL_COORDINATES = { type: "normalized", range: [0, 1000] };
19
+ export const YUTORI_INSTRUCTIONS_RAW = `You control a Kernel cloud browser. Prefer batched computer actions for browser interaction and include screenshot or URL reads when you need updated state.`;
20
+ export function buildYutoriSystemPrompt(opts = {}) {
21
+ return [YUTORI_INSTRUCTIONS_RAW, opts.suffix].filter(Boolean).join("\n\n");
22
+ }
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/yutori/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACN,gBAAgB,IAAI,mBAAmB,EACvC,0BAA0B,IAAI,wBAAwB,EACtD,mBAAmB,IAAI,sBAAsB,EAC7C,6BAA6B,EAC7B,qBAAqB,IAAI,kBAAkB,EAC3C,oBAAoB,IAAI,iBAAiB,EACzC,cAAc,IAAI,iBAAiB,GACnC,MAAM,WAAW,CAAC;AAMnB,OAAO,EACN,2BAA2B,EAC3B,kBAAkB,EAClB,YAAY,EACZ,2BAA2B,GAC3B,MAAM,YAAY,CAAC;AAEpB,wEAAwE;AACxE,yBAAyB;AACzB,4EAA4E;AAC5E,4DAA4D;AAC5D,6CAA6C;AAC7C,yEAAyE;AACzE,6EAA6E;AAC7E,wEAAwE;AACxE,4DAA4D;AAC5D,4DAA4D;AAC5D,WAAW;AACX,oEAAoE;AACpE,wFAAwF;AACxF,2CAA2C;AAC3C,6FAA6F;AAC7F,MAAM,CAAC,MAAM,yBAAyB,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,EAAkD,CAAC;AAElI,MAAM,CAAC,MAAM,uBAAuB,GAAG,8JAA8J,CAAC;AAEtM,MAAM,UAAU,uBAAuB,CAAC,OAA4B,EAAE;IACrE,OAAO,CAAC,uBAAuB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5E,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type SimpleStreamOptions, type StreamFunction, type StreamOptions } from "@earendil-works/pi-ai";
2
+ export declare const YUTORI_CHAT_COMPLETIONS_API = "yutori-chat-completions";
3
+ export interface YutoriOptions extends StreamOptions {
4
+ temperature?: number;
5
+ }
6
+ export declare const streamYutori: StreamFunction<typeof YUTORI_CHAT_COMPLETIONS_API, YutoriOptions>;
7
+ export declare const streamSimpleYutori: StreamFunction<typeof YUTORI_CHAT_COMPLETIONS_API, SimpleStreamOptions>;
8
+ export declare function yutoriBuiltinToolsOnPayload(payload: unknown): unknown | undefined;
9
+ //# sourceMappingURL=provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/providers/yutori/provider.ts"],"names":[],"mappings":"AAEA,OAAO,EAON,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,aAAa,EAGlB,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,2BAA2B,4BAA4B,CAAC;AAIrE,MAAM,WAAW,aAAc,SAAQ,aAAa;IACnD,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,YAAY,EAAE,cAAc,CAAC,OAAO,2BAA2B,EAAE,aAAa,CAI1F,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,cAAc,CAAC,OAAO,2BAA2B,EAAE,mBAAmB,CAI7D,CAAC;AAE3C,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,CAYjF"}
@@ -0,0 +1,307 @@
1
+ import OpenAI from "openai";
2
+ import { createAssistantMessageEventStream, } from "@earendil-works/pi-ai";
3
+ import { CUA_ACTION_TYPES, CUA_BATCH_TOOL_NAME } from "../common.js";
4
+ export const YUTORI_CHAT_COMPLETIONS_API = "yutori-chat-completions";
5
+ const YUTORI_BUILTIN_TOOL_NAMES = new Set(CUA_ACTION_TYPES);
6
+ export const streamYutori = (model, context, options) => {
7
+ const stream = createAssistantMessageEventStream();
8
+ void runYutoriStream(stream, model, context, options);
9
+ return stream;
10
+ };
11
+ export const streamSimpleYutori = (model, context, options) => streamYutori(model, context, options);
12
+ export function yutoriBuiltinToolsOnPayload(payload) {
13
+ if (!payload || typeof payload !== "object")
14
+ return undefined;
15
+ const current = payload;
16
+ if (!Array.isArray(current.tools))
17
+ return undefined;
18
+ const tools = current.tools.filter((tool) => {
19
+ const name = readToolName(tool);
20
+ return !name || !YUTORI_BUILTIN_TOOL_NAMES.has(name);
21
+ });
22
+ return {
23
+ ...payload,
24
+ ...(tools.length > 0 ? { tools } : { tools: undefined }),
25
+ };
26
+ }
27
+ async function runYutoriStream(stream, model, context, options) {
28
+ const output = initialAssistantMessage(model);
29
+ try {
30
+ const apiKey = options?.apiKey || process.env.YUTORI_API_KEY;
31
+ if (!apiKey)
32
+ throw new Error("missing Yutori API key");
33
+ const client = new OpenAI({
34
+ apiKey,
35
+ baseURL: model.baseUrl || "https://api.yutori.com/v1",
36
+ defaultHeaders: model.headers,
37
+ });
38
+ let payload = {
39
+ model: model.id,
40
+ messages: convertMessages(context),
41
+ max_completion_tokens: options?.maxTokens ?? model.maxTokens,
42
+ temperature: options?.temperature ?? 0.3,
43
+ };
44
+ const tools = convertTools(context);
45
+ if (tools.length > 0)
46
+ payload.tools = tools;
47
+ const nextPayload = await options?.onPayload?.(payload, model);
48
+ if (nextPayload !== undefined)
49
+ payload = nextPayload;
50
+ const { data: response, response: rawResponse } = await client.chat.completions
51
+ .create(payload, { signal: options?.signal })
52
+ .withResponse();
53
+ const completion = response;
54
+ await options?.onResponse?.({ status: rawResponse.status, headers: headersToRecord(rawResponse.headers) }, model);
55
+ stream.push({ type: "start", partial: output });
56
+ const choice = completion.choices?.[0];
57
+ const message = choice?.message;
58
+ output.responseId = completion.id;
59
+ output.usage = usageFromYutori(completion.usage);
60
+ if (choice?.finish_reason === "tool_calls")
61
+ output.stopReason = "toolUse";
62
+ else if (choice?.finish_reason === "length")
63
+ output.stopReason = "length";
64
+ const text = typeof message?.content === "string" ? message.content : "";
65
+ if (text)
66
+ emitText(stream, output, text);
67
+ const wantsBatch = (context.tools ?? []).some((tool) => tool.name === CUA_BATCH_TOOL_NAME);
68
+ const batchActions = [];
69
+ let firstBatchCallId;
70
+ for (const call of message?.tool_calls ?? []) {
71
+ if (call.type !== "function")
72
+ continue;
73
+ const args = parseArguments(call.function.arguments);
74
+ const canonical = wantsBatch ? toCanonicalAction(call.function.name, args) : undefined;
75
+ if (canonical) {
76
+ batchActions.push(...canonical);
77
+ firstBatchCallId ??= call.id;
78
+ continue;
79
+ }
80
+ const contentIndex = output.content.length;
81
+ const toolCall = {
82
+ type: "toolCall",
83
+ id: call.id,
84
+ name: call.function.name,
85
+ arguments: args,
86
+ };
87
+ output.content.push(toolCall);
88
+ stream.push({ type: "toolcall_start", contentIndex, partial: output });
89
+ stream.push({ type: "toolcall_delta", contentIndex, delta: call.function.arguments ?? "", partial: output });
90
+ stream.push({ type: "toolcall_end", contentIndex, toolCall, partial: output });
91
+ }
92
+ if (batchActions.length > 0) {
93
+ const contentIndex = output.content.length;
94
+ const toolCall = {
95
+ type: "toolCall",
96
+ id: firstBatchCallId ?? `yutori_batch_${Date.now()}`,
97
+ name: CUA_BATCH_TOOL_NAME,
98
+ arguments: { actions: batchActions },
99
+ };
100
+ output.content.push(toolCall);
101
+ output.stopReason = "toolUse";
102
+ stream.push({ type: "toolcall_start", contentIndex, partial: output });
103
+ stream.push({ type: "toolcall_delta", contentIndex, delta: JSON.stringify(toolCall.arguments), partial: output });
104
+ stream.push({ type: "toolcall_end", contentIndex, toolCall, partial: output });
105
+ }
106
+ stream.push({ type: "done", reason: output.stopReason, message: output });
107
+ stream.end();
108
+ }
109
+ catch (err) {
110
+ output.stopReason = options?.signal?.aborted ? "aborted" : "error";
111
+ output.errorMessage = err instanceof Error ? err.message : String(err);
112
+ stream.push({ type: "error", reason: output.stopReason, error: output });
113
+ stream.end();
114
+ }
115
+ }
116
+ function initialAssistantMessage(model) {
117
+ return {
118
+ role: "assistant",
119
+ content: [],
120
+ api: model.api,
121
+ provider: model.provider,
122
+ model: model.id,
123
+ usage: {
124
+ input: 0,
125
+ output: 0,
126
+ cacheRead: 0,
127
+ cacheWrite: 0,
128
+ totalTokens: 0,
129
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
130
+ },
131
+ stopReason: "stop",
132
+ timestamp: Date.now(),
133
+ };
134
+ }
135
+ function convertMessages(context) {
136
+ const messages = [];
137
+ if (context.systemPrompt)
138
+ messages.push({ role: "system", content: context.systemPrompt });
139
+ for (const message of context.messages) {
140
+ if (message.role === "user") {
141
+ messages.push({
142
+ role: "user",
143
+ content: typeof message.content === "string" ? message.content : message.content.map(toOpenAIContentPart),
144
+ });
145
+ }
146
+ else if (message.role === "assistant") {
147
+ const text = message.content
148
+ .filter((part) => part.type === "text")
149
+ .map((part) => part.text)
150
+ .join("");
151
+ const toolCalls = message.content
152
+ .filter((part) => part.type === "toolCall")
153
+ .map((part) => ({
154
+ id: part.id,
155
+ type: "function",
156
+ function: { name: part.name, arguments: JSON.stringify(part.arguments ?? {}) },
157
+ }));
158
+ messages.push({
159
+ role: "assistant",
160
+ content: text || null,
161
+ ...(toolCalls.length > 0 ? { tool_calls: toolCalls } : {}),
162
+ });
163
+ }
164
+ else if (message.role === "toolResult") {
165
+ messages.push({
166
+ role: "tool",
167
+ tool_call_id: message.toolCallId,
168
+ content: message.content.map(toOpenAIContentPart),
169
+ });
170
+ }
171
+ }
172
+ return messages;
173
+ }
174
+ function convertTools(context) {
175
+ return (context.tools ?? [])
176
+ .filter((tool) => !YUTORI_BUILTIN_TOOL_NAMES.has(tool.name))
177
+ .map((tool) => ({
178
+ type: "function",
179
+ function: {
180
+ name: tool.name,
181
+ description: tool.description,
182
+ parameters: tool.parameters,
183
+ },
184
+ }));
185
+ }
186
+ function emitText(stream, output, text) {
187
+ const contentIndex = output.content.length;
188
+ const content = { type: "text", text };
189
+ output.content.push(content);
190
+ stream.push({ type: "text_start", contentIndex, partial: output });
191
+ stream.push({ type: "text_delta", contentIndex, delta: text, partial: output });
192
+ stream.push({ type: "text_end", contentIndex, content: text, partial: output });
193
+ }
194
+ function toOpenAIContentPart(part) {
195
+ if (part.type === "text")
196
+ return { type: "text", text: part.text };
197
+ return { type: "image_url", image_url: { url: `data:${part.mimeType};base64,${part.data}` } };
198
+ }
199
+ function parseArguments(value) {
200
+ if (!value?.trim())
201
+ return {};
202
+ return JSON.parse(value);
203
+ }
204
+ const SCROLL_AMOUNT_PER_NOTCH = 120;
205
+ function readPoint(value) {
206
+ if (!Array.isArray(value) || value.length < 2)
207
+ return undefined;
208
+ const x = Number(value[0]);
209
+ const y = Number(value[1]);
210
+ if (!Number.isFinite(x) || !Number.isFinite(y))
211
+ return undefined;
212
+ return { x, y };
213
+ }
214
+ function toCanonicalAction(name, args) {
215
+ const coords = readPoint(args.coordinates);
216
+ switch (name) {
217
+ case "left_click":
218
+ return coords ? [{ type: "click", x: coords.x, y: coords.y }] : undefined;
219
+ case "right_click":
220
+ return coords ? [{ type: "click", x: coords.x, y: coords.y, button: "right" }] : undefined;
221
+ case "middle_click":
222
+ return coords ? [{ type: "click", x: coords.x, y: coords.y, button: "middle" }] : undefined;
223
+ case "double_click":
224
+ return coords ? [{ type: "double_click", x: coords.x, y: coords.y }] : undefined;
225
+ case "mouse_move":
226
+ case "hover":
227
+ return coords ? [{ type: "move", x: coords.x, y: coords.y }] : undefined;
228
+ case "mouse_down":
229
+ return coords ? [{ type: "mouse_down", x: coords.x, y: coords.y }] : undefined;
230
+ case "mouse_up":
231
+ return coords ? [{ type: "mouse_up", x: coords.x, y: coords.y }] : undefined;
232
+ case "type": {
233
+ const text = typeof args.text === "string" ? args.text : undefined;
234
+ return text !== undefined ? [{ type: "type", text }] : undefined;
235
+ }
236
+ case "key_press":
237
+ case "hold_key": {
238
+ const key = typeof args.key === "string" ? args.key : undefined;
239
+ return key ? [{ type: "keypress", keys: [key] }] : undefined;
240
+ }
241
+ case "scroll": {
242
+ if (!coords)
243
+ return undefined;
244
+ const amount = typeof args.amount === "number" ? args.amount : 1;
245
+ const direction = typeof args.direction === "string" ? args.direction : "down";
246
+ const ticks = amount * SCROLL_AMOUNT_PER_NOTCH;
247
+ const dx = direction === "left" ? -ticks : direction === "right" ? ticks : 0;
248
+ const dy = direction === "up" ? -ticks : direction === "down" ? ticks : 0;
249
+ return [{ type: "scroll", x: coords.x, y: coords.y, scroll_x: dx, scroll_y: dy }];
250
+ }
251
+ case "drag": {
252
+ const start = readPoint(args.start_coordinates);
253
+ if (!start || !coords)
254
+ return undefined;
255
+ return [{ type: "drag", path: [start, coords] }];
256
+ }
257
+ case "wait":
258
+ return [{ type: "wait" }];
259
+ case "go_back":
260
+ return [{ type: "back" }];
261
+ case "go_forward":
262
+ return [{ type: "forward" }];
263
+ case "goto_url": {
264
+ const url = typeof args.url === "string" ? args.url : undefined;
265
+ return url ? [{ type: "goto", url }] : undefined;
266
+ }
267
+ default:
268
+ return undefined;
269
+ }
270
+ }
271
+ function usageFromYutori(usage) {
272
+ const input = readNumber(usage, "prompt_tokens");
273
+ const output = readNumber(usage, "completion_tokens");
274
+ const totalTokens = readNumber(usage, "total_tokens") || input + output;
275
+ return {
276
+ input,
277
+ output,
278
+ cacheRead: 0,
279
+ cacheWrite: 0,
280
+ totalTokens,
281
+ cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
282
+ };
283
+ }
284
+ function readToolName(tool) {
285
+ if (!tool || typeof tool !== "object")
286
+ return undefined;
287
+ const obj = tool;
288
+ if (typeof obj.function?.name === "string")
289
+ return obj.function.name;
290
+ if (typeof obj.name === "string")
291
+ return obj.name;
292
+ return undefined;
293
+ }
294
+ function readNumber(value, key) {
295
+ if (!value || typeof value !== "object")
296
+ return 0;
297
+ const n = value[key];
298
+ return typeof n === "number" && Number.isFinite(n) ? n : 0;
299
+ }
300
+ function headersToRecord(headers) {
301
+ const out = {};
302
+ headers.forEach((value, key) => {
303
+ out[key] = value;
304
+ });
305
+ return out;
306
+ }
307
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../../src/providers/yutori/provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { streamSimpleTzafonResponses, streamTzafonResponses, TZAFON_RESPONSES_API } from "./providers/tzafon/provider.js";
2
+ import { streamSimpleYutori, streamYutori, YUTORI_CHAT_COMPLETIONS_API } from "./providers/yutori/provider.js";
3
+ export declare function registerCuaProviders(): void;
4
+ export { TZAFON_RESPONSES_API, streamSimpleTzafonResponses, streamTzafonResponses };
5
+ export { YUTORI_CHAT_COMPLETIONS_API, streamSimpleYutori, streamYutori };
6
+ //# sourceMappingURL=providers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACvH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAQ5G,wBAAgB,oBAAoB,IAAI,IAAI,CAa3C;AAED,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,26 @@
1
+ import { registerApiProvider } from "@earendil-works/pi-ai";
2
+ import { streamSimpleTzafonResponses, streamTzafonResponses, TZAFON_RESPONSES_API } from "./providers/tzafon/provider.js";
3
+ import { streamSimpleYutori, streamYutori, YUTORI_CHAT_COMPLETIONS_API } from "./providers/yutori/provider.js";
4
+ let registered = false;
5
+ // pi-ai eagerly registers openai-responses, anthropic-messages, and
6
+ // google-generative-ai when its index module loads (see
7
+ // node_modules/@earendil-works/pi-ai/dist/providers/register-builtins.js).
8
+ // CUA only needs to add the providers pi-ai does not ship: Tzafon and Yutori.
9
+ export function registerCuaProviders() {
10
+ if (registered)
11
+ return;
12
+ registerApiProvider({
13
+ api: YUTORI_CHAT_COMPLETIONS_API,
14
+ stream: streamYutori,
15
+ streamSimple: streamSimpleYutori,
16
+ });
17
+ registerApiProvider({
18
+ api: TZAFON_RESPONSES_API,
19
+ stream: streamTzafonResponses,
20
+ streamSimple: streamSimpleTzafonResponses,
21
+ });
22
+ registered = true;
23
+ }
24
+ export { TZAFON_RESPONSES_API, streamSimpleTzafonResponses, streamTzafonResponses };
25
+ export { YUTORI_CHAT_COMPLETIONS_API, streamSimpleYutori, streamYutori };
26
+ //# sourceMappingURL=providers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"providers.js","sourceRoot":"","sources":["../src/providers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACvH,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,2BAA2B,EAAE,MAAM,6BAA6B,CAAC;AAE5G,IAAI,UAAU,GAAG,KAAK,CAAC;AAEvB,oEAAoE;AACpE,wDAAwD;AACxD,2EAA2E;AAC3E,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB;IACnC,IAAI,UAAU;QAAE,OAAO;IACvB,mBAAmB,CAAC;QACnB,GAAG,EAAE,2BAA2B;QAChC,MAAM,EAAE,YAAY;QACpB,YAAY,EAAE,kBAAkB;KAChC,CAAC,CAAC;IACH,mBAAmB,CAAC;QACnB,GAAG,EAAE,oBAAoB;QACzB,MAAM,EAAE,qBAAqB;QAC7B,YAAY,EAAE,2BAA2B;KACzC,CAAC,CAAC;IACH,UAAU,GAAG,IAAI,CAAC;AACnB,CAAC;AAED,OAAO,EAAE,oBAAoB,EAAE,2BAA2B,EAAE,qBAAqB,EAAE,CAAC;AACpF,OAAO,EAAE,2BAA2B,EAAE,kBAAkB,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { Api, Model, SimpleStreamOptions, Tool } from "@earendil-works/pi-ai";
2
+ import { type CuaModelRef, type CuaProvider } from "./models.js";
3
+ /**
4
+ * Provider-resolved runtime defaults for CUA execution.
5
+ *
6
+ * `@onkernel/cua-agent` consumes this shape so it can stay provider-neutral:
7
+ * it only needs model, tool definitions, and optional payload middleware,
8
+ * without branching on provider-specific quirks.
9
+ */
10
+ export interface CuaRuntimeSpec {
11
+ model: Model<Api>;
12
+ provider: CuaProvider;
13
+ /** Canonical CUA tool definitions exposed to the model. */
14
+ toolDefinitions: Tool[];
15
+ /** Provider-tuned baseline prompt for browser control behavior. */
16
+ defaultSystemPrompt: string;
17
+ /** Optional provider middleware for request payload adaptation. */
18
+ onPayload?: SimpleStreamOptions["onPayload"];
19
+ }
20
+ export type CuaRuntimeSpecInput = CuaModelRef | Model<Api>;
21
+ /**
22
+ * Resolve provider-owned policy from either a CUA model ref or a concrete model.
23
+ *
24
+ * This is intentionally the only place where provider-specific defaults are
25
+ * selected. Callers should consume the returned spec and avoid branching on
26
+ * provider names directly.
27
+ */
28
+ export declare function resolveCuaRuntimeSpec(input: CuaRuntimeSpecInput): CuaRuntimeSpec;
29
+ //# sourceMappingURL=runtime-spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-spec.d.ts","sourceRoot":"","sources":["../src/runtime-spec.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AACnF,OAAO,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAiC,MAAM,UAAU,CAAC;AAO7F;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAClB,QAAQ,EAAE,WAAW,CAAC;IACtB,2DAA2D;IAC3D,eAAe,EAAE,IAAI,EAAE,CAAC;IACxB,mEAAmE;IACnE,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mEAAmE;IACnE,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC7C;AAED,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAE3D;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,CA2ChF"}
@@ -0,0 +1,58 @@
1
+ import { getCuaModel, providerForModel } from "./models";
2
+ import * as anthropic from "./providers/anthropic/index";
3
+ import * as gemini from "./providers/gemini/index";
4
+ import * as openai from "./providers/openai/index";
5
+ import * as tzafon from "./providers/tzafon/index";
6
+ import * as yutori from "./providers/yutori/index";
7
+ /**
8
+ * Resolve provider-owned policy from either a CUA model ref or a concrete model.
9
+ *
10
+ * This is intentionally the only place where provider-specific defaults are
11
+ * selected. Callers should consume the returned spec and avoid branching on
12
+ * provider names directly.
13
+ */
14
+ export function resolveCuaRuntimeSpec(input) {
15
+ const model = typeof input === "string" ? getCuaModel(input) : input;
16
+ const provider = providerForModel(model);
17
+ switch (provider) {
18
+ case "anthropic":
19
+ return {
20
+ model,
21
+ provider,
22
+ toolDefinitions: anthropic.createComputerToolDefinitions(),
23
+ defaultSystemPrompt: anthropic.buildAnthropicSystemPrompt(),
24
+ };
25
+ case "google":
26
+ return {
27
+ model,
28
+ provider,
29
+ toolDefinitions: gemini.createComputerToolDefinitions(),
30
+ defaultSystemPrompt: gemini.buildGeminiSystemPrompt(),
31
+ };
32
+ case "tzafon":
33
+ return {
34
+ model,
35
+ provider,
36
+ toolDefinitions: tzafon.createComputerToolDefinitions(),
37
+ defaultSystemPrompt: tzafon.buildTzafonSystemPrompt(),
38
+ };
39
+ case "yutori":
40
+ return {
41
+ model,
42
+ provider,
43
+ toolDefinitions: yutori.createComputerToolDefinitions(),
44
+ defaultSystemPrompt: yutori.buildYutoriSystemPrompt(),
45
+ onPayload: yutori.yutoriBuiltinToolsOnPayload,
46
+ };
47
+ case "openai":
48
+ default:
49
+ return {
50
+ model,
51
+ provider,
52
+ toolDefinitions: openai.createComputerToolDefinitions(),
53
+ defaultSystemPrompt: openai.OPENAI_BATCH_INSTRUCTIONS,
54
+ onPayload: openai.openaiResponsesStoreOnPayload,
55
+ };
56
+ }
57
+ }
58
+ //# sourceMappingURL=runtime-spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-spec.js","sourceRoot":"","sources":["../src/runtime-spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,WAAW,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAC7F,OAAO,KAAK,SAAS,MAAM,6BAA6B,CAAC;AACzD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AACnD,OAAO,KAAK,MAAM,MAAM,0BAA0B,CAAC;AAsBnD;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA0B;IAC/D,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrE,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACzC,QAAQ,QAAQ,EAAE,CAAC;QAClB,KAAK,WAAW;YACf,OAAO;gBACN,KAAK;gBACL,QAAQ;gBACR,eAAe,EAAE,SAAS,CAAC,6BAA6B,EAAE;gBAC1D,mBAAmB,EAAE,SAAS,CAAC,0BAA0B,EAAE;aAC3D,CAAC;QACH,KAAK,QAAQ;YACZ,OAAO;gBACN,KAAK;gBACL,QAAQ;gBACR,eAAe,EAAE,MAAM,CAAC,6BAA6B,EAAE;gBACvD,mBAAmB,EAAE,MAAM,CAAC,uBAAuB,EAAE;aACrD,CAAC;QACH,KAAK,QAAQ;YACZ,OAAO;gBACN,KAAK;gBACL,QAAQ;gBACR,eAAe,EAAE,MAAM,CAAC,6BAA6B,EAAE;gBACvD,mBAAmB,EAAE,MAAM,CAAC,uBAAuB,EAAE;aACrD,CAAC;QACH,KAAK,QAAQ;YACZ,OAAO;gBACN,KAAK;gBACL,QAAQ;gBACR,eAAe,EAAE,MAAM,CAAC,6BAA6B,EAAE;gBACvD,mBAAmB,EAAE,MAAM,CAAC,uBAAuB,EAAE;gBACrD,SAAS,EAAE,MAAM,CAAC,2BAA2B;aAC7C,CAAC;QACH,KAAK,QAAQ,CAAC;QACd;YACC,OAAO;gBACN,KAAK;gBACL,QAAQ;gBACR,eAAe,EAAE,MAAM,CAAC,6BAA6B,EAAE;gBACvD,mBAAmB,EAAE,MAAM,CAAC,yBAAyB;gBACrD,SAAS,EAAE,MAAM,CAAC,6BAA6B;aAC/C,CAAC;IACJ,CAAC;AACF,CAAC"}
@@ -0,0 +1,59 @@
1
+ import { readFile } from "node:fs/promises";
2
+ import { dirname, join } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { complete, getCuaModel, openai } from "../src/index";
5
+
6
+ const here = dirname(fileURLToPath(import.meta.url));
7
+ const screenshotPath = join(here, "screenshot.png");
8
+ const apiKey = process.env.OPENAI_API_KEY;
9
+ if (!apiKey) throw new Error("Set OPENAI_API_KEY to run this example.");
10
+
11
+ const modelRef = "openai:gpt-5.5";
12
+ const model = getCuaModel(modelRef);
13
+ const screenshot = await readFile(screenshotPath);
14
+
15
+ // Other provider examples:
16
+ // const apiKey = process.env.ANTHROPIC_API_KEY;
17
+ // const modelRef = "anthropic:claude-opus-4-7";
18
+ // const model = getCuaModel(modelRef);
19
+ // const tools = anthropic.createComputerToolDefinitions({ actions: ["click"] });
20
+ //
21
+ // const apiKey = process.env.GOOGLE_API_KEY;
22
+ // const modelRef = "google:gemini-2.5-computer-use-preview-10-2025";
23
+ // const model = getCuaModel(modelRef);
24
+ // const tools = gemini.createComputerToolDefinitions({ actions: ["click"] });
25
+
26
+ const response = await complete(
27
+ model,
28
+ {
29
+ systemPrompt: [
30
+ "You are controlling a browser from a screenshot.",
31
+ "Call the computer tool with the pixel coordinates of the target. Do not describe the click in prose unless you cannot identify the target.",
32
+ ].join("\n"),
33
+ messages: [
34
+ {
35
+ role: "user",
36
+ content: [
37
+ { type: "text", text: "Click the sign in / up link in this Kernel homepage screenshot." },
38
+ { type: "image", data: screenshot.toString("base64"), mimeType: "image/png" },
39
+ ],
40
+ timestamp: Date.now(),
41
+ },
42
+ ],
43
+ tools: openai.createComputerToolDefinitions({ actions: ["click"] }),
44
+ },
45
+ {
46
+ apiKey,
47
+ maxTokens: 1024,
48
+ },
49
+ );
50
+
51
+ console.log(`model: ${modelRef}`);
52
+ for (const block of response.content) {
53
+ if (block.type === "text") {
54
+ console.log(block.text);
55
+ }
56
+ if (block.type === "toolCall") {
57
+ console.log(`${block.name}: ${JSON.stringify(block.arguments)}`);
58
+ }
59
+ }
Binary file