@onkernel/cua-agent 0.1.0 → 0.3.0

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.
@@ -1,6 +1,7 @@
1
1
  import Kernel from "@onkernel/sdk";
2
2
  import { requireCuaEnvApiKeyForModel, type CuaModelRef } from "@onkernel/cua-ai";
3
3
  import { CuaAgent } from "../src/index";
4
+ import { logAgentEvent, logAssistant } from "./shared/logging";
4
5
  import { SCENARIOS } from "./shared/scenarios";
5
6
 
6
7
  const modelRef = (process.env.MODEL_REF as CuaModelRef | undefined) ?? "openai:gpt-5.5";
@@ -19,20 +20,13 @@ async function main(): Promise<void> {
19
20
  initialState: { model: modelRef },
20
21
  });
21
22
 
22
- agent.subscribe((event) => {
23
- if (event.type === "tool_execution_start") {
24
- console.log(`[tool:start] ${event.toolName}`);
25
- }
26
- if (event.type === "tool_execution_end") {
27
- console.log(`[tool:end] ${event.toolName} error=${event.isError}`);
28
- }
29
- });
23
+ agent.subscribe(logAgentEvent);
30
24
 
31
25
  const scenario = SCENARIOS[0]!;
32
- console.log(`running scenario: ${scenario.name}`);
26
+ console.log(`running scenario: ${scenario.name} model=${modelRef}`);
33
27
  await agent.prompt(scenario.prompt);
34
28
  const assistant = [...agent.state.messages].reverse().find((message) => message.role === "assistant");
35
- console.log("assistant stopReason:", assistant?.role === "assistant" ? assistant.stopReason : "unknown");
29
+ logAssistant(assistant?.role === "assistant" ? assistant : undefined);
36
30
  } finally {
37
31
  await client.browsers.deleteByID(browser.session_id);
38
32
  }
@@ -1,6 +1,7 @@
1
1
  import Kernel from "@onkernel/sdk";
2
2
  import { requireCuaEnvApiKeyForModel, type CuaModelRef } from "@onkernel/cua-ai";
3
3
  import { CuaAgent } from "../src/index";
4
+ import { logAgentEvent, logAssistant } from "./shared/logging";
4
5
  import { SCENARIOS } from "./shared/scenarios";
5
6
 
6
7
  const modelRef = (process.env.MODEL_REF as CuaModelRef | undefined) ?? "openai:gpt-5.5";
@@ -20,8 +21,11 @@ async function main(): Promise<void> {
20
21
  client,
21
22
  initialState: { model: modelRef },
22
23
  });
24
+ agent.subscribe(logAgentEvent);
23
25
  console.log(`model=${modelRef} scenario=${scenario.name}`);
24
26
  await agent.prompt(scenario.prompt);
27
+ const assistant = [...agent.state.messages].reverse().find((message) => message.role === "assistant");
28
+ logAssistant(assistant?.role === "assistant" ? assistant : undefined);
25
29
  } finally {
26
30
  await client.browsers.deleteByID(browser.session_id);
27
31
  }
@@ -1,6 +1,7 @@
1
1
  import Kernel from "@onkernel/sdk";
2
2
  import { requireCuaEnvApiKeyForModel, type CuaModelRef } from "@onkernel/cua-ai";
3
- import { CuaHarness } from "../src/index";
3
+ import { CuaAgentHarness, InMemorySessionRepo, NodeExecutionEnv } from "../src/index";
4
+ import { logAgentEvent, logAssistant } from "./shared/logging";
4
5
  import { SCENARIOS } from "./shared/scenarios";
5
6
 
6
7
  const modelRef = (process.env.MODEL_REF as CuaModelRef | undefined) ?? "openai:gpt-5.5";
@@ -13,28 +14,28 @@ async function main(): Promise<void> {
13
14
  const browser = await client.browsers.create({ stealth: true });
14
15
 
15
16
  try {
16
- const harness = new CuaHarness({
17
+ const sessionRepo = new InMemorySessionRepo();
18
+ const session = await sessionRepo.create({ id: "harness-openai-smoke" });
19
+ const harness = new CuaAgentHarness({
17
20
  browser,
18
21
  client,
22
+ env: new NodeExecutionEnv({ cwd: process.cwd() }),
19
23
  model: modelRef,
24
+ session,
20
25
  });
21
26
 
22
- harness.subscribe((event) => {
23
- if (event.type === "tool_execution_start") {
24
- console.log(`[tool:start] ${event.toolName}`);
25
- }
26
- if (event.type === "tool_execution_end") {
27
- console.log(`[tool:end] ${event.toolName} error=${event.isError}`);
28
- }
29
- });
27
+ harness.subscribe(logAgentEvent);
30
28
 
31
29
  const scenario = SCENARIOS[0]!;
32
- console.log(`running scenario: ${scenario.name}`);
33
- await harness.prompt(scenario.prompt);
34
- const transcript = harness.getTranscript();
35
- const lastAssistant = [...transcript].reverse().find((message) => message.role === "assistant");
36
- console.log("transcript messages:", transcript.length);
37
- console.log("assistant stopReason:", lastAssistant?.role === "assistant" ? lastAssistant.stopReason : "unknown");
30
+ console.log(`running scenario: ${scenario.name} model=${modelRef}`);
31
+ const response = await harness.prompt(scenario.prompt);
32
+ const branch = await session.getBranch();
33
+ const lastAssistant = [...branch]
34
+ .reverse()
35
+ .flatMap((entry) =>
36
+ entry.type === "message" && entry.message.role === "assistant" ? [entry.message] : [],
37
+ )[0];
38
+ logAssistant(lastAssistant ?? response);
38
39
  } finally {
39
40
  await client.browsers.deleteByID(browser.session_id);
40
41
  }
@@ -1,6 +1,7 @@
1
1
  import Kernel from "@onkernel/sdk";
2
2
  import { requireCuaEnvApiKeyForModel, type CuaModelRef } from "@onkernel/cua-ai";
3
- import { CuaHarness } from "../src/index";
3
+ import { CuaAgentHarness, InMemorySessionRepo, NodeExecutionEnv } from "../src/index";
4
+ import { logAgentEvent, logAssistant } from "./shared/logging";
4
5
  import { SCENARIOS } from "./shared/scenarios";
5
6
 
6
7
  const modelRef = (process.env.MODEL_REF as CuaModelRef | undefined) ?? "openai:gpt-5.5";
@@ -15,14 +16,25 @@ async function main(): Promise<void> {
15
16
  const scenario = SCENARIOS.find((entry) => entry.name === scenarioName) ?? SCENARIOS[0]!;
16
17
 
17
18
  try {
18
- const harness = new CuaHarness({
19
+ const sessionRepo = new InMemorySessionRepo();
20
+ const session = await sessionRepo.create({ id: `harness-provider-matrix-${scenario.name}` });
21
+ const harness = new CuaAgentHarness({
19
22
  browser,
20
23
  client,
24
+ env: new NodeExecutionEnv({ cwd: process.cwd() }),
21
25
  model: modelRef,
26
+ session,
22
27
  });
28
+ harness.subscribe(logAgentEvent);
23
29
  console.log(`model=${modelRef} scenario=${scenario.name}`);
24
- await harness.prompt(scenario.prompt);
25
- console.log("transcript messages:", harness.getTranscript().length);
30
+ const response = await harness.prompt(scenario.prompt);
31
+ const branch = await session.getBranch();
32
+ const lastAssistant = [...branch]
33
+ .reverse()
34
+ .flatMap((entry) =>
35
+ entry.type === "message" && entry.message.role === "assistant" ? [entry.message] : [],
36
+ )[0];
37
+ logAssistant(lastAssistant ?? response);
26
38
  } finally {
27
39
  await client.browsers.deleteByID(browser.session_id);
28
40
  }
@@ -0,0 +1,37 @@
1
+ import type { AgentEvent, AgentHarnessEvent } from "../../src/index";
2
+
3
+ type AssistantLike = {
4
+ content: Array<{ type: string; text?: string }>;
5
+ stopReason?: string;
6
+ };
7
+
8
+ export function logAgentEvent(event: AgentEvent | AgentHarnessEvent): void {
9
+ if (event.type === "tool_execution_start") {
10
+ console.log(`[tool:start] ${event.toolName} args=${formatJson(event.args)}`);
11
+ return;
12
+ }
13
+ if (event.type === "tool_execution_end") {
14
+ const result = event.result as { details?: unknown } | undefined;
15
+ console.log(`[tool:end] ${event.toolName} error=${event.isError}${formatDetails(result?.details)}`);
16
+ }
17
+ }
18
+
19
+ export function logAssistant(assistant: AssistantLike | undefined): void {
20
+ const text =
21
+ assistant?.content
22
+ .flatMap((block) => (block.type === "text" && typeof block.text === "string" ? [block.text] : []))
23
+ .join("")
24
+ .trim() ?? "";
25
+ console.log("assistant stopReason:", assistant?.stopReason ?? "unknown");
26
+ console.log("assistant text:", text || "(no text)");
27
+ }
28
+
29
+ function formatDetails(details: unknown): string {
30
+ if (!details) return "";
31
+ return ` details=${formatJson(details)}`;
32
+ }
33
+
34
+ function formatJson(value: unknown): string {
35
+ const text = JSON.stringify(value, null, 2) ?? "undefined";
36
+ return text.length > 1200 ? `${text.slice(0, 1197)}...` : text;
37
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@onkernel/cua-agent",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Kernel browser computer-use Agent and AgentHarness classes built on pi-agent-core",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -32,19 +32,22 @@
32
32
  "access": "public"
33
33
  },
34
34
  "scripts": {
35
- "build": "tsc -b",
36
- "clean": "tsc -b --clean",
35
+ "build": "tsdown",
36
+ "clean": "tsc -b --clean && rm -rf dist dist-tsc",
37
37
  "example:agent": "NODE_OPTIONS=--conditions=source tsx examples/agent-openai-smoke.ts",
38
38
  "example:harness": "NODE_OPTIONS=--conditions=source tsx examples/harness-openai-smoke.ts",
39
- "test": "vitest --run"
39
+ "test": "vitest --run",
40
+ "typecheck": "tsc -b"
40
41
  },
41
42
  "dependencies": {
42
- "@earendil-works/pi-agent-core": "^0.74.0",
43
- "@earendil-works/pi-ai": "^0.74.0",
44
- "@onkernel/cua-ai": "0.1.0",
45
- "@onkernel/sdk": "0.49.0"
43
+ "@earendil-works/pi-agent-core": "0.79.1",
44
+ "@earendil-works/pi-ai": "0.79.1",
45
+ "@onkernel/cua-ai": "0.2.0",
46
+ "@onkernel/sdk": "0.49.0",
47
+ "sharp": "^0.34.5"
46
48
  },
47
49
  "devDependencies": {
50
+ "tsdown": "^0.22.2",
48
51
  "vitest": "^3.2.4"
49
52
  }
50
53
  }
package/dist/agent.d.ts DELETED
@@ -1,46 +0,0 @@
1
- import { Agent, type AgentOptions, type AgentTool, type AgentEvent, type AgentMessage } from "@earendil-works/pi-agent-core";
2
- import { type ImageContent, type Api, type Model, type CuaModelRef } from "@onkernel/cua-ai";
3
- import type Kernel from "@onkernel/sdk";
4
- import type { KernelBrowser } from "./translator/translator";
5
- type CuaAgentInitialState = Omit<NonNullable<AgentOptions["initialState"]>, "model" | "tools"> & {
6
- model: CuaModelRef | Model<Api>;
7
- tools?: AgentTool[];
8
- };
9
- export type CuaAgentOptions = Omit<AgentOptions, "initialState"> & {
10
- browser: KernelBrowser;
11
- client: Kernel;
12
- initialState: CuaAgentInitialState;
13
- };
14
- export type CuaHarnessOptions = Omit<AgentOptions, "initialState"> & {
15
- browser: KernelBrowser;
16
- client: Kernel;
17
- model: CuaModelRef | Model<Api>;
18
- tools?: AgentTool[];
19
- systemPrompt?: string;
20
- };
21
- export declare class CuaAgent extends Agent {
22
- constructor(options: CuaAgentOptions);
23
- }
24
- export declare class CuaHarness {
25
- readonly agent: Agent;
26
- constructor(options: CuaHarnessOptions);
27
- get state(): import("@earendil-works/pi-agent-core").AgentState;
28
- get steeringMode(): "all" | "one-at-a-time";
29
- set steeringMode(mode: "all" | "one-at-a-time");
30
- get followUpMode(): "all" | "one-at-a-time";
31
- set followUpMode(mode: "all" | "one-at-a-time");
32
- subscribe(listener: (event: AgentEvent, signal: AbortSignal) => Promise<void> | void): () => void;
33
- prompt(message: AgentMessage | AgentMessage[]): Promise<void>;
34
- prompt(input: string, images?: ImageContent[]): Promise<void>;
35
- steer(message: AgentMessage): void;
36
- followUp(message: AgentMessage): void;
37
- continue(): Promise<void>;
38
- clearSteeringQueue(): void;
39
- clearFollowUpQueue(): void;
40
- clearAllQueues(): void;
41
- abort(): void;
42
- waitForIdle(): Promise<void>;
43
- getTranscript(): AgentMessage[];
44
- }
45
- export {};
46
- //# sourceMappingURL=agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,EACL,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EACN,KAAK,YAAY,EACjB,KAAK,GAAG,EACR,KAAK,KAAK,EACV,KAAK,WAAW,EAIhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,KAAK,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG;IAChG,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG;IAClE,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG;IACpE,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,qBAAa,QAAS,SAAQ,KAAK;gBACtB,OAAO,EAAE,eAAe;CAmBpC;AAED,qBAAa,UAAU;IACtB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;gBAEV,OAAO,EAAE,iBAAiB;IAiBtC,IAAI,KAAK,uDAER;IAED,IAAI,YAAY,IAIO,KAAK,GAAG,eAAe,CAF7C;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe,EAE7C;IAED,IAAI,YAAY,IAIO,KAAK,GAAG,eAAe,CAF7C;IAED,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,GAAG,eAAe,EAE7C;IAED,SAAS,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,MAAM,IAAI;IAI3F,MAAM,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAC7D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IASnE,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAIlC,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAI/B,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAI/B,kBAAkB,IAAI,IAAI;IAI1B,kBAAkB,IAAI,IAAI;IAI1B,cAAc,IAAI,IAAI;IAItB,KAAK,IAAI,IAAI;IAIP,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAIlC,aAAa,IAAI,YAAY,EAAE;CAG/B"}
package/dist/agent.js DELETED
@@ -1,105 +0,0 @@
1
- import { Agent, } from "@earendil-works/pi-agent-core";
2
- import { getCuaEnvApiKey, resolveCuaRuntimeSpec, streamSimple, } from "@onkernel/cua-ai";
3
- import { createCuaComputerTools } from "./tools";
4
- export class CuaAgent extends Agent {
5
- constructor(options) {
6
- const { browser, client, initialState, onPayload, streamFn, ...agentOptions } = options;
7
- const runtimeSpec = resolveCuaRuntimeSpec(initialState.model);
8
- const tools = initialState.tools ?? createCuaComputerTools({ browser, client, toolDefinitions: runtimeSpec.toolDefinitions });
9
- const systemPrompt = initialState.systemPrompt ?? runtimeSpec.defaultSystemPrompt;
10
- super({
11
- ...agentOptions,
12
- getApiKey: agentOptions.getApiKey ?? getCuaEnvApiKey,
13
- streamFn: streamFn ?? streamSimple,
14
- onPayload: composeOnPayload(runtimeSpec.onPayload, onPayload),
15
- initialState: {
16
- ...initialState,
17
- model: runtimeSpec.model,
18
- tools,
19
- systemPrompt,
20
- },
21
- });
22
- }
23
- }
24
- export class CuaHarness {
25
- agent;
26
- constructor(options) {
27
- const { browser, client, model, tools, systemPrompt, onPayload, streamFn, ...agentOptions } = options;
28
- const runtimeSpec = resolveCuaRuntimeSpec(model);
29
- const resolvedTools = tools ?? createCuaComputerTools({ browser, client, toolDefinitions: runtimeSpec.toolDefinitions });
30
- this.agent = new Agent({
31
- ...agentOptions,
32
- getApiKey: agentOptions.getApiKey ?? getCuaEnvApiKey,
33
- streamFn: streamFn ?? streamSimple,
34
- onPayload: composeOnPayload(runtimeSpec.onPayload, onPayload),
35
- initialState: {
36
- model: runtimeSpec.model,
37
- tools: resolvedTools,
38
- systemPrompt: systemPrompt ?? runtimeSpec.defaultSystemPrompt,
39
- },
40
- });
41
- }
42
- get state() {
43
- return this.agent.state;
44
- }
45
- get steeringMode() {
46
- return this.agent.steeringMode;
47
- }
48
- set steeringMode(mode) {
49
- this.agent.steeringMode = mode;
50
- }
51
- get followUpMode() {
52
- return this.agent.followUpMode;
53
- }
54
- set followUpMode(mode) {
55
- this.agent.followUpMode = mode;
56
- }
57
- subscribe(listener) {
58
- return this.agent.subscribe(listener);
59
- }
60
- async prompt(input, images) {
61
- if (typeof input === "string") {
62
- await this.agent.prompt(input, images);
63
- return;
64
- }
65
- await this.agent.prompt(input);
66
- }
67
- steer(message) {
68
- this.agent.steer(message);
69
- }
70
- followUp(message) {
71
- this.agent.followUp(message);
72
- }
73
- async continue() {
74
- await this.agent.continue();
75
- }
76
- clearSteeringQueue() {
77
- this.agent.clearSteeringQueue();
78
- }
79
- clearFollowUpQueue() {
80
- this.agent.clearFollowUpQueue();
81
- }
82
- clearAllQueues() {
83
- this.agent.clearAllQueues();
84
- }
85
- abort() {
86
- this.agent.abort();
87
- }
88
- async waitForIdle() {
89
- await this.agent.waitForIdle();
90
- }
91
- getTranscript() {
92
- return [...this.agent.state.messages];
93
- }
94
- }
95
- function composeOnPayload(first, second) {
96
- if (!first)
97
- return second;
98
- if (!second)
99
- return first;
100
- return async (payload, modelRef) => {
101
- const afterFirst = await first(payload, modelRef);
102
- return second(afterFirst ?? payload, modelRef);
103
- };
104
- }
105
- //# sourceMappingURL=agent.js.map
package/dist/agent.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAE9C,YAAY,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AACjD,YAAY,EACX,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,4BAA4B,GAC5B,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC/C,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAQjD,OAAO,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC"}
package/dist/tools.d.ts DELETED
@@ -1,39 +0,0 @@
1
- import type Kernel from "@onkernel/sdk";
2
- import type { AgentTool } from "@earendil-works/pi-agent-core";
3
- import type { Tool } from "@earendil-works/pi-ai";
4
- import { CuaBatchSchema, CuaNavigationSchema } from "@onkernel/cua-ai";
5
- import { type KernelBrowser } from "./translator/translator";
6
- export interface ComputerToolOptions {
7
- browser: KernelBrowser;
8
- client: Kernel;
9
- toolDefinitions: Tool[];
10
- }
11
- export declare const SUPPORTED_CUA_EXECUTOR_TOOL_NAMES: readonly ["batch_computer_actions", "computer_use_extra"];
12
- export type SupportedCuaExecutorToolName = (typeof SUPPORTED_CUA_EXECUTOR_TOOL_NAMES)[number];
13
- export interface BatchDetails {
14
- statusText: string;
15
- readResults: Array<{
16
- type: "url";
17
- url: string;
18
- } | {
19
- type: "screenshot";
20
- bytes: number;
21
- } | {
22
- type: "cursor_position";
23
- x: number;
24
- y: number;
25
- }>;
26
- error?: string;
27
- }
28
- export interface NavigationDetails {
29
- action: string;
30
- statusText: string;
31
- url?: string;
32
- error?: string;
33
- }
34
- type BatchTool = AgentTool<typeof CuaBatchSchema, BatchDetails>;
35
- type NavigationTool = AgentTool<typeof CuaNavigationSchema, NavigationDetails>;
36
- export type CuaExecutorTool = BatchTool | NavigationTool;
37
- export declare function createCuaComputerTools(args: ComputerToolOptions): CuaExecutorTool[];
38
- export {};
39
- //# sourceMappingURL=tools.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EAA6B,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAGN,cAAc,EACd,mBAAmB,EAGnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAA8B,KAAK,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAEzF,MAAM,WAAW,mBAAmB;IACnC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,IAAI,EAAE,CAAC;CACxB;AAED,eAAO,MAAM,iCAAiC,2DAA2D,CAAC;AAC1G,MAAM,MAAM,4BAA4B,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AAI9F,MAAM,WAAW,YAAY;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,YAAY,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,iBAAiB,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC7I,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,KAAK,SAAS,GAAG,SAAS,CAAC,OAAO,cAAc,EAAE,YAAY,CAAC,CAAC;AAChE,KAAK,cAAc,GAAG,SAAS,CAAC,OAAO,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAC/E,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,cAAc,CAAC;AAEzD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,eAAe,EAAE,CAGnF"}
package/dist/tools.js DELETED
@@ -1,116 +0,0 @@
1
- import { CUA_BATCH_TOOL_NAME, CUA_NAVIGATION_TOOL_NAME, CuaBatchSchema, CuaNavigationSchema, } from "@onkernel/cua-ai";
2
- import { InternalComputerTranslator } from "./translator/translator";
3
- export const SUPPORTED_CUA_EXECUTOR_TOOL_NAMES = [CUA_BATCH_TOOL_NAME, CUA_NAVIGATION_TOOL_NAME];
4
- export function createCuaComputerTools(args) {
5
- const translator = new InternalComputerTranslator(args);
6
- return args.toolDefinitions.map((definition) => createExecutorTool(definition, translator));
7
- }
8
- function createExecutorTool(definition, translator) {
9
- if (definition.name === CUA_BATCH_TOOL_NAME) {
10
- const tool = {
11
- name: definition.name,
12
- label: definition.name,
13
- description: definition.description,
14
- parameters: CuaBatchSchema,
15
- async execute(_toolCallId, params) {
16
- const result = await executeBatchTool(translator, asBatchInput(params));
17
- if (result.isError)
18
- throw Object.assign(new Error(result.details.statusText), result);
19
- return { content: result.content, details: result.details };
20
- },
21
- };
22
- return tool;
23
- }
24
- if (definition.name === CUA_NAVIGATION_TOOL_NAME) {
25
- const tool = {
26
- name: definition.name,
27
- label: definition.name,
28
- description: definition.description,
29
- parameters: CuaNavigationSchema,
30
- async execute(_toolCallId, params) {
31
- const result = await executeNavigationTool(translator, asNavigationInput(params));
32
- if (result.isError)
33
- throw Object.assign(new Error(result.details.statusText), result);
34
- return { content: result.content, details: result.details };
35
- },
36
- };
37
- return tool;
38
- }
39
- throw new Error(`unsupported CUA computer tool definition: ${definition.name}; supported names: ${SUPPORTED_CUA_EXECUTOR_TOOL_NAMES.join(", ")}`);
40
- }
41
- async function executeBatchTool(translator, params) {
42
- const content = [];
43
- const readResults = [];
44
- let statusText = "Actions executed successfully.";
45
- let error;
46
- try {
47
- const result = await translator.executeBatch(params.actions);
48
- for (const read of result.readResults) {
49
- if (read.type === "url") {
50
- readResults.push({ type: "url", url: read.url });
51
- content.push({ type: "text", text: `url(): ${read.url}` });
52
- }
53
- else if (read.type === "cursor_position") {
54
- readResults.push({ type: "cursor_position", x: read.x, y: read.y });
55
- content.push({ type: "text", text: `cursor_position(): ${read.x},${read.y}` });
56
- }
57
- else {
58
- readResults.push({ type: "screenshot", bytes: read.pngBytes.length });
59
- content.push({ type: "image", data: read.pngBytes.toString("base64"), mimeType: "image/png" });
60
- }
61
- }
62
- if (content.length === 0) {
63
- const png = await translator.screenshotRaw();
64
- readResults.push({ type: "screenshot", bytes: png.length });
65
- content.push({ type: "image", data: png.toString("base64"), mimeType: "image/png" });
66
- }
67
- }
68
- catch (err) {
69
- error = err instanceof Error ? err : new Error(String(err));
70
- statusText = `Actions failed: ${error.message}`;
71
- content.push({ type: "text", text: statusText });
72
- }
73
- return { content, details: { statusText, readResults, ...(error ? { error: error.message } : {}) }, isError: Boolean(error) };
74
- }
75
- async function executeNavigationTool(translator, params) {
76
- const action = params.action;
77
- const content = [];
78
- let statusText = "Action executed successfully.";
79
- let url;
80
- let error;
81
- try {
82
- if (action === "url") {
83
- url = await translator.currentUrl();
84
- statusText = `Current URL: ${url}`;
85
- }
86
- else {
87
- await translator.executeBatch([{ type: action, url: params.url }]);
88
- statusText = `${action} executed successfully.`;
89
- }
90
- const png = await translator.screenshotRaw();
91
- content.push({ type: "image", data: png.toString("base64"), mimeType: "image/png" });
92
- }
93
- catch (err) {
94
- error = err instanceof Error ? err : new Error(String(err));
95
- statusText = `${action} failed: ${error.message}`;
96
- }
97
- content.unshift({ type: "text", text: statusText });
98
- return { content, details: { action, statusText, ...(url ? { url } : {}), ...(error ? { error: error.message } : {}) }, isError: Boolean(error) };
99
- }
100
- function asBatchInput(value) {
101
- if (value &&
102
- typeof value === "object" &&
103
- Array.isArray(value.actions)) {
104
- return value;
105
- }
106
- throw new Error("invalid batch_computer_actions parameters");
107
- }
108
- function asNavigationInput(value) {
109
- if (value &&
110
- typeof value === "object" &&
111
- typeof value.action === "string") {
112
- return value;
113
- }
114
- throw new Error("invalid computer_use_extra parameters");
115
- }
116
- //# sourceMappingURL=tools.js.map
package/dist/tools.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -1,22 +0,0 @@
1
- import type Kernel from "@onkernel/sdk";
2
- import type { BrowserCreateResponse, BrowserRetrieveResponse } from "@onkernel/sdk/resources/browsers";
3
- import type { BatchExecutionResult, ModelAction } from "./types";
4
- export type KernelBrowser = BrowserCreateResponse | BrowserRetrieveResponse;
5
- export interface InternalComputerTranslatorOptions {
6
- browser: KernelBrowser;
7
- client: Kernel;
8
- }
9
- export declare class InternalComputerTranslator {
10
- private readonly sessionId;
11
- private readonly client;
12
- constructor(opts: InternalComputerTranslatorOptions);
13
- screenshotRaw(): Promise<Buffer>;
14
- currentUrl(): Promise<string>;
15
- currentMousePosition(): Promise<{
16
- x: number;
17
- y: number;
18
- }>;
19
- executeBatch(actions: ModelAction[]): Promise<BatchExecutionResult>;
20
- private runKernelBatch;
21
- }
22
- //# sourceMappingURL=translator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"translator.d.ts","sourceRoot":"","sources":["../../src/translator/translator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AACvG,OAAO,KAAK,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEjE,MAAM,MAAM,aAAa,GAAG,qBAAqB,GAAG,uBAAuB,CAAC;AAE5E,MAAM,WAAW,iCAAiC;IACjD,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,0BAA0B;IACtC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;gBAEpB,IAAI,EAAE,iCAAiC;IAK7C,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAKhC,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAS7B,oBAAoB,IAAI,OAAO,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAKzD,YAAY,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;YAmD3D,cAAc;CAG5B"}