@onkernel/cua-agent 0.2.0 → 0.3.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 (125) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +24 -9
  3. package/dist/index.d.ts +138 -8
  4. package/dist/index.js +752 -5
  5. package/package.json +11 -10
  6. package/dist/agent.d.ts +0 -102
  7. package/dist/agent.d.ts.map +0 -1
  8. package/dist/agent.js +0 -207
  9. package/dist/agent.js.map +0 -1
  10. package/dist/index.d.ts.map +0 -1
  11. package/dist/index.js.map +0 -1
  12. package/dist/tools.d.ts +0 -39
  13. package/dist/tools.d.ts.map +0 -1
  14. package/dist/tools.js +0 -116
  15. package/dist/tools.js.map +0 -1
  16. package/dist/translator/translator.d.ts +0 -22
  17. package/dist/translator/translator.d.ts.map +0 -1
  18. package/dist/translator/translator.js +0 -227
  19. package/dist/translator/translator.js.map +0 -1
  20. package/dist/translator/types.d.ts +0 -39
  21. package/dist/translator/types.d.ts.map +0 -1
  22. package/dist/translator/types.js +0 -2
  23. package/dist/translator/types.js.map +0 -1
  24. package/dist/vendor/pi-agent-core/agent-loop.d.ts +0 -24
  25. package/dist/vendor/pi-agent-core/agent-loop.d.ts.map +0 -1
  26. package/dist/vendor/pi-agent-core/agent-loop.js +0 -479
  27. package/dist/vendor/pi-agent-core/agent-loop.js.map +0 -1
  28. package/dist/vendor/pi-agent-core/agent.d.ts +0 -125
  29. package/dist/vendor/pi-agent-core/agent.d.ts.map +0 -1
  30. package/dist/vendor/pi-agent-core/agent.js +0 -402
  31. package/dist/vendor/pi-agent-core/agent.js.map +0 -1
  32. package/dist/vendor/pi-agent-core/harness/agent-harness.d.ts +0 -85
  33. package/dist/vendor/pi-agent-core/harness/agent-harness.d.ts.map +0 -1
  34. package/dist/vendor/pi-agent-core/harness/agent-harness.js +0 -728
  35. package/dist/vendor/pi-agent-core/harness/agent-harness.js.map +0 -1
  36. package/dist/vendor/pi-agent-core/harness/compaction/branch-summarization.d.ts +0 -88
  37. package/dist/vendor/pi-agent-core/harness/compaction/branch-summarization.d.ts.map +0 -1
  38. package/dist/vendor/pi-agent-core/harness/compaction/branch-summarization.js +0 -243
  39. package/dist/vendor/pi-agent-core/harness/compaction/branch-summarization.js.map +0 -1
  40. package/dist/vendor/pi-agent-core/harness/compaction/compaction.d.ts +0 -122
  41. package/dist/vendor/pi-agent-core/harness/compaction/compaction.d.ts.map +0 -1
  42. package/dist/vendor/pi-agent-core/harness/compaction/compaction.js +0 -616
  43. package/dist/vendor/pi-agent-core/harness/compaction/compaction.js.map +0 -1
  44. package/dist/vendor/pi-agent-core/harness/compaction/utils.d.ts +0 -38
  45. package/dist/vendor/pi-agent-core/harness/compaction/utils.d.ts.map +0 -1
  46. package/dist/vendor/pi-agent-core/harness/compaction/utils.js +0 -153
  47. package/dist/vendor/pi-agent-core/harness/compaction/utils.js.map +0 -1
  48. package/dist/vendor/pi-agent-core/harness/env/nodejs.d.ts +0 -44
  49. package/dist/vendor/pi-agent-core/harness/env/nodejs.d.ts.map +0 -1
  50. package/dist/vendor/pi-agent-core/harness/env/nodejs.js +0 -348
  51. package/dist/vendor/pi-agent-core/harness/env/nodejs.js.map +0 -1
  52. package/dist/vendor/pi-agent-core/harness/execution-env.d.ts +0 -4
  53. package/dist/vendor/pi-agent-core/harness/execution-env.d.ts.map +0 -1
  54. package/dist/vendor/pi-agent-core/harness/execution-env.js +0 -3
  55. package/dist/vendor/pi-agent-core/harness/execution-env.js.map +0 -1
  56. package/dist/vendor/pi-agent-core/harness/messages.d.ts +0 -51
  57. package/dist/vendor/pi-agent-core/harness/messages.d.ts.map +0 -1
  58. package/dist/vendor/pi-agent-core/harness/messages.js +0 -102
  59. package/dist/vendor/pi-agent-core/harness/messages.js.map +0 -1
  60. package/dist/vendor/pi-agent-core/harness/prompt-templates.d.ts +0 -45
  61. package/dist/vendor/pi-agent-core/harness/prompt-templates.d.ts.map +0 -1
  62. package/dist/vendor/pi-agent-core/harness/prompt-templates.js +0 -200
  63. package/dist/vendor/pi-agent-core/harness/prompt-templates.js.map +0 -1
  64. package/dist/vendor/pi-agent-core/harness/session/repo/jsonl.d.ts +0 -20
  65. package/dist/vendor/pi-agent-core/harness/session/repo/jsonl.d.ts.map +0 -1
  66. package/dist/vendor/pi-agent-core/harness/session/repo/jsonl.js +0 -92
  67. package/dist/vendor/pi-agent-core/harness/session/repo/jsonl.js.map +0 -1
  68. package/dist/vendor/pi-agent-core/harness/session/repo/memory.d.ts +0 -18
  69. package/dist/vendor/pi-agent-core/harness/session/repo/memory.d.ts.map +0 -1
  70. package/dist/vendor/pi-agent-core/harness/session/repo/memory.js +0 -42
  71. package/dist/vendor/pi-agent-core/harness/session/repo/memory.js.map +0 -1
  72. package/dist/vendor/pi-agent-core/harness/session/repo/shared.d.ts +0 -10
  73. package/dist/vendor/pi-agent-core/harness/session/repo/shared.d.ts.map +0 -1
  74. package/dist/vendor/pi-agent-core/harness/session/repo/shared.js +0 -31
  75. package/dist/vendor/pi-agent-core/harness/session/repo/shared.js.map +0 -1
  76. package/dist/vendor/pi-agent-core/harness/session/session.d.ts +0 -32
  77. package/dist/vendor/pi-agent-core/harness/session/session.d.ts.map +0 -1
  78. package/dist/vendor/pi-agent-core/harness/session/session.js +0 -196
  79. package/dist/vendor/pi-agent-core/harness/session/session.js.map +0 -1
  80. package/dist/vendor/pi-agent-core/harness/session/storage/jsonl.d.ts +0 -30
  81. package/dist/vendor/pi-agent-core/harness/session/storage/jsonl.d.ts.map +0 -1
  82. package/dist/vendor/pi-agent-core/harness/session/storage/jsonl.js +0 -170
  83. package/dist/vendor/pi-agent-core/harness/session/storage/jsonl.js.map +0 -1
  84. package/dist/vendor/pi-agent-core/harness/session/storage/memory.d.ts +0 -26
  85. package/dist/vendor/pi-agent-core/harness/session/storage/memory.d.ts.map +0 -1
  86. package/dist/vendor/pi-agent-core/harness/session/storage/memory.js +0 -90
  87. package/dist/vendor/pi-agent-core/harness/session/storage/memory.js.map +0 -1
  88. package/dist/vendor/pi-agent-core/harness/session/uuid.d.ts +0 -2
  89. package/dist/vendor/pi-agent-core/harness/session/uuid.d.ts.map +0 -1
  90. package/dist/vendor/pi-agent-core/harness/session/uuid.js +0 -40
  91. package/dist/vendor/pi-agent-core/harness/session/uuid.js.map +0 -1
  92. package/dist/vendor/pi-agent-core/harness/skills.d.ts +0 -41
  93. package/dist/vendor/pi-agent-core/harness/skills.d.ts.map +0 -1
  94. package/dist/vendor/pi-agent-core/harness/skills.js +0 -259
  95. package/dist/vendor/pi-agent-core/harness/skills.js.map +0 -1
  96. package/dist/vendor/pi-agent-core/harness/system-prompt.d.ts +0 -3
  97. package/dist/vendor/pi-agent-core/harness/system-prompt.d.ts.map +0 -1
  98. package/dist/vendor/pi-agent-core/harness/system-prompt.js +0 -30
  99. package/dist/vendor/pi-agent-core/harness/system-prompt.js.map +0 -1
  100. package/dist/vendor/pi-agent-core/harness/types.d.ts +0 -525
  101. package/dist/vendor/pi-agent-core/harness/types.d.ts.map +0 -1
  102. package/dist/vendor/pi-agent-core/harness/types.js +0 -16
  103. package/dist/vendor/pi-agent-core/harness/types.js.map +0 -1
  104. package/dist/vendor/pi-agent-core/harness/utils/shell-output.d.ts +0 -14
  105. package/dist/vendor/pi-agent-core/harness/utils/shell-output.d.ts.map +0 -1
  106. package/dist/vendor/pi-agent-core/harness/utils/shell-output.js +0 -97
  107. package/dist/vendor/pi-agent-core/harness/utils/shell-output.js.map +0 -1
  108. package/dist/vendor/pi-agent-core/harness/utils/truncate.d.ts +0 -70
  109. package/dist/vendor/pi-agent-core/harness/utils/truncate.d.ts.map +0 -1
  110. package/dist/vendor/pi-agent-core/harness/utils/truncate.js +0 -205
  111. package/dist/vendor/pi-agent-core/harness/utils/truncate.js.map +0 -1
  112. package/dist/vendor/pi-agent-core/index.d.ts +0 -21
  113. package/dist/vendor/pi-agent-core/index.d.ts.map +0 -1
  114. package/dist/vendor/pi-agent-core/index.js +0 -26
  115. package/dist/vendor/pi-agent-core/index.js.map +0 -1
  116. package/dist/vendor/pi-agent-core/proxy.d.ts +0 -69
  117. package/dist/vendor/pi-agent-core/proxy.d.ts.map +0 -1
  118. package/dist/vendor/pi-agent-core/proxy.js +0 -278
  119. package/dist/vendor/pi-agent-core/proxy.js.map +0 -1
  120. package/dist/vendor/pi-agent-core/types.d.ts +0 -386
  121. package/dist/vendor/pi-agent-core/types.d.ts.map +0 -1
  122. package/dist/vendor/pi-agent-core/types.js +0 -2
  123. package/dist/vendor/pi-agent-core/types.js.map +0 -1
  124. package/src/vendor/pi-agent-core/LICENSE +0 -21
  125. package/src/vendor/pi-agent-core/README.md +0 -15
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.1 - 2026-06-11
4
+
5
+ - Update the `@onkernel/cua-ai` dependency to 0.2.1.
6
+
7
+ ## 0.3.0 - 2026-06-10
8
+
9
+ - Replaces the vendored pi-agent-core snapshot with the released `@earendil-works/pi-agent-core@0.79.1` dependency. The full pi surface is still re-exported, but it now tracks the published package instead of a frozen fork.
10
+ - BREAKING: `harness.agent` is removed. It only existed in the vendored pre-release snapshot and never shipped in any pi-agent-core release; use `getModel()`, `getTools()`, and `getActiveTools()` instead.
11
+ - BREAKING: `steer()`, `followUp()`, `nextTurn()`, and `setStreamOptions()` on the harness now return promises and must be awaited.
12
+ - BREAKING: the harness `model_select` and `thinking_level_select` events are renamed `model_update` and `thinking_level_update`, and the `steeringMode`/`followUpMode` property accessors became `getSteeringMode()`/`setSteeringMode()`/`getFollowUpMode()`/`setFollowUpMode()` methods.
13
+ - BREAKING: `ExecutionEnv` is now `Result`-based. Custom env implementations return `Result` values instead of throwing.
14
+ - BREAKING: requires Node.js >= 22.19.0.
15
+ - `NodeExecutionEnv` now comes from `@earendil-works/pi-agent-core`'s `/node` subpath; importing it from `@onkernel/cua-agent` keeps working.
16
+ - Tool execution follows pi's throw-on-failure contract: failed browser actions throw an error labeled with the action instead of also encoding the failure into tool result content and details.
17
+ - Moves the yutori screenshot payload append into `@onkernel/cua-ai`'s payload middleware.
18
+ - Built ESM output uses explicit `.js` relative import specifiers so `dist` resolves under plain Node.js.
19
+
3
20
  ## 0.2.0 - 2026-05-13
4
21
 
5
22
  - Adds `CuaAgentHarness`, a provider-aware harness API with session-backed turns, resource and prompt helpers, active tool selection, and model switching.
package/README.md CHANGED
@@ -1,7 +1,9 @@
1
1
  # `@onkernel/cua-agent`
2
2
 
3
- Kernel browser computer-use classes built on vendored pi `Agent` and
4
- `AgentHarness` source.
3
+ Kernel browser computer-use classes built on the `Agent` and `AgentHarness`
4
+ classes from [`@earendil-works/pi-agent-core`](https://www.npmjs.com/package/@earendil-works/pi-agent-core).
5
+ The full pi-agent-core surface is re-exported from this package, including
6
+ `NodeExecutionEnv` from its `/node` subpath.
5
7
 
6
8
  This package keeps pi agent semantics intact and adds browser execution
7
9
  plumbing for canonical CUA tools.
@@ -84,6 +86,8 @@ Both classes mirror pi constructor shapes and behavior, with minimal additions:
84
86
  - `browser` (Kernel browser response)
85
87
  - `client` (Kernel SDK client)
86
88
  - CUA model refs (`"provider:model"`) accepted where pi expects a concrete model
89
+ - `extraTools` to add your own pi tools alongside the built-in browser tools
90
+ - `computerUseExtra: true` to let the model use a small navigation helper
87
91
 
88
92
  If auth callbacks are omitted, both classes default to CUA env var conventions:
89
93
  - OpenAI: `OPENAI_API_KEY`
@@ -94,9 +98,19 @@ If auth callbacks are omitted, both classes default to CUA env var conventions:
94
98
 
95
99
  ### Tool Defaults
96
100
 
97
- If tools are omitted, the classes install canonical CUA computer tool executors
98
- using runtime specs from `@onkernel/cua-ai`. If tools are provided, they are
99
- used exactly.
101
+ By default, the classes install provider-selected CUA computer tool executors
102
+ from `@onkernel/cua-ai`. Each provider decides which tool names the model sees;
103
+ the matching executor adapter translates returned tool calls into canonical CUA
104
+ actions that run against the Kernel browser.
105
+
106
+ Use `extraTools` to add your own pi tools alongside the provider's
107
+ computer-use tools. This is useful when the model needs to call
108
+ application-specific code, such as looking up a record, writing a database row,
109
+ or handing off to another service while it also controls the browser.
110
+
111
+ `computerUseExtra: true` adds the `computer_use_extra` tool. Use it when you
112
+ want one compact helper for common browser navigation/read operations:
113
+ `goto`, `back`, `forward`, and `url`.
100
114
 
101
115
  ### Model Switching
102
116
 
@@ -111,8 +125,8 @@ the next provider request.
111
125
 
112
126
  ### Tool Composition
113
127
 
114
- Use `createCuaComputerTools()` to compose your own tool list from canonical
115
- tool definitions:
128
+ Use `createCuaComputerTools()` to compose your own tool list from provider
129
+ execution adapters:
116
130
 
117
131
  ```ts
118
132
  import { resolveCuaRuntimeSpec } from "@onkernel/cua-ai";
@@ -123,11 +137,12 @@ const tools = [
123
137
  ...createCuaComputerTools({
124
138
  browser,
125
139
  client,
126
- toolDefinitions: runtime.toolDefinitions,
140
+ toolExecutors: runtime.toolExecutors,
127
141
  }),
128
142
  myCustomTool,
129
143
  ];
130
144
  ```
131
145
 
132
146
  For full event semantics, steering, follow-up queues, and tool execution
133
- details, see the pi agent core source vendored in this package.
147
+ details, see the [`@earendil-works/pi-agent-core`](https://www.npmjs.com/package/@earendil-works/pi-agent-core)
148
+ package.
package/dist/index.d.ts CHANGED
@@ -1,8 +1,138 @@
1
- export * from "./vendor/pi-agent-core/index";
2
- export type { KernelBrowser } from "./translator/translator";
3
- export { createCuaComputerTools } from "./tools";
4
- export type { BatchDetails, ComputerToolOptions, CuaExecutorTool, NavigationDetails, SupportedCuaExecutorToolName, } from "./tools";
5
- export { SUPPORTED_CUA_EXECUTOR_TOOL_NAMES } from "./tools";
6
- export { CuaAgent, CuaAgentHarness } from "./agent";
7
- export type { CuaAgentHarnessOptions, CuaAgentOptions, CuaAgentState } from "./agent";
8
- //# sourceMappingURL=index.d.ts.map
1
+ import { Agent, AgentHarness, AgentHarnessOptions, AgentOptions, AgentState, AgentTool, PromptTemplate, Skill } from "@earendil-works/pi-agent-core";
2
+ import { NodeExecutionEnv } from "@earendil-works/pi-agent-core/node";
3
+ import { Api, ComputerToolCoordinateSystem, CuaModelRef, CuaScreenshotSpec, CuaToolExecutorSpec, Model, SimpleStreamOptions, TSchema } from "@onkernel/cua-ai";
4
+ import Kernel from "@onkernel/sdk";
5
+ import { BrowserCreateResponse, BrowserRetrieveResponse } from "@onkernel/sdk/resources/browsers";
6
+ export * from "@earendil-works/pi-agent-core";
7
+
8
+ //#region src/translator/translator.d.ts
9
+ type KernelBrowser = BrowserCreateResponse | BrowserRetrieveResponse;
10
+ //#endregion
11
+ //#region src/tools.d.ts
12
+ interface ComputerToolOptions {
13
+ browser: KernelBrowser;
14
+ client: Kernel;
15
+ toolExecutors: CuaToolExecutorSpec[];
16
+ coordinateSystem?: ComputerToolCoordinateSystem;
17
+ screenshot?: CuaScreenshotSpec;
18
+ computerUseExtra?: boolean;
19
+ }
20
+ interface BatchDetails {
21
+ statusText: string;
22
+ readResults: Array<{
23
+ type: "url";
24
+ url: string;
25
+ } | {
26
+ type: "screenshot";
27
+ bytes: number;
28
+ } | {
29
+ type: "cursor_position";
30
+ x: number;
31
+ y: number;
32
+ }>;
33
+ }
34
+ interface NavigationDetails {
35
+ action: string;
36
+ statusText: string;
37
+ url?: string;
38
+ }
39
+ type BatchTool = AgentTool<TSchema, BatchDetails>;
40
+ type NavigationTool = AgentTool<TSchema, NavigationDetails>;
41
+ type ActionTool = AgentTool<TSchema, BatchDetails>;
42
+ type CuaExecutorTool = BatchTool | NavigationTool | ActionTool;
43
+ declare function createCuaComputerTools(args: ComputerToolOptions): CuaExecutorTool[];
44
+ //#endregion
45
+ //#region src/agent.d.ts
46
+ /** A CUA model reference string or a concrete pi model object. */
47
+ type CuaRuntimeInput = CuaModelRef | Model<Api>;
48
+ /**
49
+ * Agent state exposed by {@link CuaAgent}.
50
+ *
51
+ * It is the regular pi `AgentState`, except assigning `state.model` may use a
52
+ * CUA model ref such as `"openai:gpt-5.5"`. CUA-owned tools and the default
53
+ * system prompt are refreshed to match the new provider runtime.
54
+ */
55
+ interface CuaAgentState extends Omit<AgentState, "model"> {
56
+ /** The concrete pi model currently used by the underlying agent loop. */
57
+ get model(): Model<Api>;
58
+ /** Assign a concrete pi model or CUA model ref and refresh CUA runtime defaults. */
59
+ set model(model: CuaRuntimeInput);
60
+ }
61
+ /** Initial state for {@link CuaAgent}. */
62
+ type CuaAgentInitialState = Omit<NonNullable<AgentOptions["initialState"]>, "model" | "tools"> & {
63
+ /** Model to use for the first turn. CUA refs are resolved before pi sees the state. */model: CuaRuntimeInput;
64
+ };
65
+ /**
66
+ * Constructor options for {@link CuaAgent}.
67
+ *
68
+ * `browser` and `client` are used to build the default computer-use tools.
69
+ * Everything else follows pi `AgentOptions`, with `initialState.model`
70
+ * widened to accept CUA model refs.
71
+ */
72
+ type CuaAgentOptions = Omit<AgentOptions, "initialState"> & {
73
+ /** Kernel browser session used by default CUA tools. */browser: KernelBrowser; /** Kernel SDK client used by default CUA tools. */
74
+ client: Kernel; /** Initial pi state plus a CUA-aware model value. */
75
+ initialState: CuaAgentInitialState; /** Add your own pi tools alongside the built-in browser tools. */
76
+ extraTools?: AgentTool[]; /** Expose a helper for browser navigation and URL reads. */
77
+ computerUseExtra?: boolean;
78
+ };
79
+ /**
80
+ * Constructor options for {@link CuaAgentHarness}.
81
+ *
82
+ * The harness keeps pi `AgentHarnessOptions` intact except that `model`
83
+ * accepts CUA refs and `browser`/`client` are required to build default
84
+ * computer-use tools. Callers provide pi's `env` and `session` directly.
85
+ */
86
+ type CuaAgentHarnessOptions<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> = Omit<AgentHarnessOptions<TSkill, TPromptTemplate, AgentTool>, "model" | "tools"> & {
87
+ /** Kernel browser session used by default CUA tools. */browser: KernelBrowser; /** Kernel SDK client used by default CUA tools. */
88
+ client: Kernel; /** Model used by the harness. CUA refs are resolved before pi sees the model. */
89
+ model: CuaRuntimeInput; /** Add your own pi tools alongside the built-in browser tools. */
90
+ extraTools?: AgentTool[]; /** Expose a helper for browser navigation and URL reads. */
91
+ computerUseExtra?: boolean; /** Optional payload hook composed after the provider-specific CUA payload hook. */
92
+ onPayload?: SimpleStreamOptions["onPayload"];
93
+ };
94
+ /**
95
+ * Pi `Agent` configured for Kernel browser computer use.
96
+ *
97
+ * Use this class when you want direct access to the lower-level pi agent state,
98
+ * queues, event stream, and `state.model` mutation model. It resolves CUA model
99
+ * refs, installs provider-appropriate CUA tools by default, and keeps those
100
+ * defaults in sync when `agent.state.model` changes.
101
+ */
102
+ declare class CuaAgent extends Agent {
103
+ private readonly runtime;
104
+ private readonly ownsSystemPrompt;
105
+ private stateProxy?;
106
+ constructor(options: CuaAgentOptions);
107
+ /**
108
+ * Return a state proxy so `agent.state.model = "provider:model"` can behave
109
+ * like pi's normal mutable state while also re-resolving CUA tools, prompt,
110
+ * and payload hooks for the selected provider.
111
+ */
112
+ get state(): CuaAgentState;
113
+ private applyRuntime;
114
+ }
115
+ /**
116
+ * Pi `AgentHarness` configured for Kernel browser computer use.
117
+ *
118
+ * Use this class when you want pi's higher-level harness APIs for sessions,
119
+ * resources, prompt templates, queue events, compaction, and model selection.
120
+ * It installs provider CUA tools by default and keeps CUA-owned runtime
121
+ * defaults in sync through `setModel()`.
122
+ */
123
+ declare class CuaAgentHarness<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> extends AgentHarness<TSkill, TPromptTemplate, AgentTool> {
124
+ private readonly runtime;
125
+ private requestedActiveToolNames?;
126
+ constructor(options: CuaAgentHarnessOptions<TSkill, TPromptTemplate>);
127
+ /**
128
+ * Mirror pi `AgentHarness.setModel()` while accepting CUA model refs.
129
+ *
130
+ * The override refreshes CUA-owned tools before delegating to pi so the
131
+ * harness snapshot and session model-change entry are written with the
132
+ * concrete model selected by `@onkernel/cua-ai`.
133
+ */
134
+ setModel(model: CuaRuntimeInput): Promise<void>;
135
+ setActiveTools(toolNames: string[]): Promise<void>;
136
+ }
137
+ //#endregion
138
+ export { type BatchDetails, type ComputerToolOptions, CuaAgent, CuaAgentHarness, type CuaAgentHarnessOptions, type CuaAgentOptions, type CuaAgentState, type CuaExecutorTool, type KernelBrowser, type NavigationDetails, NodeExecutionEnv, createCuaComputerTools };