@onkernel/cua-agent 0.1.0 → 0.2.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.
- package/CHANGELOG.md +6 -0
- package/README.md +44 -19
- package/dist/agent.d.ts +83 -27
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +176 -74
- package/dist/agent.js.map +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/tools.d.ts +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js.map +1 -1
- package/dist/translator/translator.js +63 -6
- package/dist/translator/translator.js.map +1 -1
- package/dist/vendor/pi-agent-core/agent-loop.d.ts +24 -0
- package/dist/vendor/pi-agent-core/agent-loop.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/agent-loop.js +479 -0
- package/dist/vendor/pi-agent-core/agent-loop.js.map +1 -0
- package/dist/vendor/pi-agent-core/agent.d.ts +125 -0
- package/dist/vendor/pi-agent-core/agent.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/agent.js +402 -0
- package/dist/vendor/pi-agent-core/agent.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/agent-harness.d.ts +85 -0
- package/dist/vendor/pi-agent-core/harness/agent-harness.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/agent-harness.js +728 -0
- package/dist/vendor/pi-agent-core/harness/agent-harness.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/compaction/branch-summarization.d.ts +88 -0
- package/dist/vendor/pi-agent-core/harness/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/compaction/branch-summarization.js +243 -0
- package/dist/vendor/pi-agent-core/harness/compaction/branch-summarization.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/compaction/compaction.d.ts +122 -0
- package/dist/vendor/pi-agent-core/harness/compaction/compaction.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/compaction/compaction.js +616 -0
- package/dist/vendor/pi-agent-core/harness/compaction/compaction.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/compaction/utils.d.ts +38 -0
- package/dist/vendor/pi-agent-core/harness/compaction/utils.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/compaction/utils.js +153 -0
- package/dist/vendor/pi-agent-core/harness/compaction/utils.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/env/nodejs.d.ts +44 -0
- package/dist/vendor/pi-agent-core/harness/env/nodejs.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/env/nodejs.js +348 -0
- package/dist/vendor/pi-agent-core/harness/env/nodejs.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/execution-env.d.ts +4 -0
- package/dist/vendor/pi-agent-core/harness/execution-env.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/execution-env.js +3 -0
- package/dist/vendor/pi-agent-core/harness/execution-env.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/messages.d.ts +51 -0
- package/dist/vendor/pi-agent-core/harness/messages.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/messages.js +102 -0
- package/dist/vendor/pi-agent-core/harness/messages.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/prompt-templates.d.ts +45 -0
- package/dist/vendor/pi-agent-core/harness/prompt-templates.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/prompt-templates.js +200 -0
- package/dist/vendor/pi-agent-core/harness/prompt-templates.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/jsonl.d.ts +20 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/jsonl.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/jsonl.js +92 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/jsonl.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/memory.d.ts +18 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/memory.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/memory.js +42 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/memory.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/shared.d.ts +10 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/shared.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/shared.js +31 -0
- package/dist/vendor/pi-agent-core/harness/session/repo/shared.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/session.d.ts +32 -0
- package/dist/vendor/pi-agent-core/harness/session/session.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/session.js +196 -0
- package/dist/vendor/pi-agent-core/harness/session/session.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/storage/jsonl.d.ts +30 -0
- package/dist/vendor/pi-agent-core/harness/session/storage/jsonl.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/storage/jsonl.js +170 -0
- package/dist/vendor/pi-agent-core/harness/session/storage/jsonl.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/storage/memory.d.ts +26 -0
- package/dist/vendor/pi-agent-core/harness/session/storage/memory.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/storage/memory.js +90 -0
- package/dist/vendor/pi-agent-core/harness/session/storage/memory.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/uuid.d.ts +2 -0
- package/dist/vendor/pi-agent-core/harness/session/uuid.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/session/uuid.js +40 -0
- package/dist/vendor/pi-agent-core/harness/session/uuid.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/skills.d.ts +41 -0
- package/dist/vendor/pi-agent-core/harness/skills.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/skills.js +259 -0
- package/dist/vendor/pi-agent-core/harness/skills.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/system-prompt.d.ts +3 -0
- package/dist/vendor/pi-agent-core/harness/system-prompt.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/system-prompt.js +30 -0
- package/dist/vendor/pi-agent-core/harness/system-prompt.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/types.d.ts +525 -0
- package/dist/vendor/pi-agent-core/harness/types.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/types.js +16 -0
- package/dist/vendor/pi-agent-core/harness/types.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/utils/shell-output.d.ts +14 -0
- package/dist/vendor/pi-agent-core/harness/utils/shell-output.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/utils/shell-output.js +97 -0
- package/dist/vendor/pi-agent-core/harness/utils/shell-output.js.map +1 -0
- package/dist/vendor/pi-agent-core/harness/utils/truncate.d.ts +70 -0
- package/dist/vendor/pi-agent-core/harness/utils/truncate.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/harness/utils/truncate.js +205 -0
- package/dist/vendor/pi-agent-core/harness/utils/truncate.js.map +1 -0
- package/dist/vendor/pi-agent-core/index.d.ts +21 -0
- package/dist/vendor/pi-agent-core/index.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/index.js +26 -0
- package/dist/vendor/pi-agent-core/index.js.map +1 -0
- package/dist/vendor/pi-agent-core/proxy.d.ts +69 -0
- package/dist/vendor/pi-agent-core/proxy.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/proxy.js +278 -0
- package/dist/vendor/pi-agent-core/proxy.js.map +1 -0
- package/dist/vendor/pi-agent-core/types.d.ts +386 -0
- package/dist/vendor/pi-agent-core/types.d.ts.map +1 -0
- package/dist/vendor/pi-agent-core/types.js +2 -0
- package/dist/vendor/pi-agent-core/types.js.map +1 -0
- package/examples/agent-openai-smoke.ts +4 -10
- package/examples/agent-provider-matrix.ts +4 -0
- package/examples/harness-openai-smoke.ts +17 -16
- package/examples/harness-provider-matrix.ts +16 -4
- package/examples/shared/logging.ts +37 -0
- package/package.json +6 -4
- package/src/vendor/pi-agent-core/LICENSE +21 -0
- package/src/vendor/pi-agent-core/README.md +15 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.2.0 - 2026-05-13
|
|
4
|
+
|
|
5
|
+
- Adds `CuaAgentHarness`, a provider-aware harness API with session-backed turns, resource and prompt helpers, active tool selection, and model switching.
|
|
6
|
+
- Keeps CUA runtime defaults in sync when changing models so provider-specific tools, prompts, and payload middleware update together.
|
|
7
|
+
- Improves browser keyboard shortcut translation for Kernel computer actions.
|
|
8
|
+
|
|
3
9
|
## 0.1.0
|
|
4
10
|
|
|
5
11
|
- Class-first CUA runtime: `CuaAgent` and `CuaHarness` on top of pi-agent-core.
|
package/README.md
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# `@onkernel/cua-agent`
|
|
2
2
|
|
|
3
|
-
Kernel browser computer-use classes built on
|
|
4
|
-
|
|
3
|
+
Kernel browser computer-use classes built on vendored pi `Agent` and
|
|
4
|
+
`AgentHarness` source.
|
|
5
5
|
|
|
6
|
-
This package keeps pi
|
|
6
|
+
This package keeps pi agent semantics intact and adds browser execution
|
|
7
7
|
plumbing for canonical CUA tools.
|
|
8
8
|
|
|
9
9
|
## Installation
|
|
@@ -33,45 +33,59 @@ const agent = new CuaAgent({
|
|
|
33
33
|
await agent.prompt("Open news.ycombinator.com and summarize the top story.");
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
## Quick Start (`
|
|
36
|
+
## Quick Start (`CuaAgentHarness`)
|
|
37
37
|
|
|
38
38
|
```ts
|
|
39
|
-
import {
|
|
39
|
+
import { CuaAgentHarness, InMemorySessionRepo, NodeExecutionEnv } from "@onkernel/cua-agent";
|
|
40
40
|
|
|
41
|
-
const
|
|
41
|
+
const sessionRepo = new InMemorySessionRepo();
|
|
42
|
+
const session = await sessionRepo.create({ id: "example" });
|
|
43
|
+
|
|
44
|
+
const harness = new CuaAgentHarness({
|
|
42
45
|
browser,
|
|
43
46
|
client,
|
|
47
|
+
env: new NodeExecutionEnv({ cwd: process.cwd() }),
|
|
44
48
|
model: "openai:gpt-5.5",
|
|
49
|
+
session,
|
|
45
50
|
});
|
|
46
51
|
|
|
47
|
-
await harness.prompt("Open example.com and tell me the current URL.");
|
|
48
|
-
const
|
|
49
|
-
|
|
52
|
+
const response = await harness.prompt("Open example.com and tell me the current URL.");
|
|
53
|
+
const branch = await session.getBranch();
|
|
54
|
+
const lastAssistant = [...branch]
|
|
55
|
+
.reverse()
|
|
56
|
+
.flatMap((entry) =>
|
|
57
|
+
entry.type === "message" && entry.message.role === "assistant" ? [entry.message] : [],
|
|
58
|
+
)[0];
|
|
59
|
+
const assistant = lastAssistant ?? response;
|
|
60
|
+
const assistantText = assistant.content
|
|
61
|
+
.flatMap((block) => (block.type === "text" ? [block.text] : []))
|
|
62
|
+
.join("")
|
|
63
|
+
.trim();
|
|
64
|
+
console.log("assistant stopReason:", assistant.stopReason);
|
|
65
|
+
console.log("assistant text:", assistantText || "(no text)");
|
|
50
66
|
```
|
|
51
67
|
|
|
52
|
-
Use `CuaAgent` when you want direct pi `Agent` control: raw
|
|
68
|
+
Use `CuaAgent` when you want direct pi `Agent` control: raw message state,
|
|
53
69
|
lifecycle events, custom streaming, and explicit prompt/continue/queue control.
|
|
54
70
|
Reach for the harness shape when you want an app layer around the loop:
|
|
55
|
-
session
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
`getTranscript()`.
|
|
71
|
+
session-backed turns, resource and prompt entry points, provider/auth hooks,
|
|
72
|
+
active tool selection, compaction/tree workflows, and higher-level queue events.
|
|
73
|
+
`CuaAgentHarness` extends pi `AgentHarness`, installs CUA defaults, and refreshes
|
|
74
|
+
provider-specific runtime state when `setModel()` changes models.
|
|
60
75
|
|
|
61
76
|
## Core Concepts
|
|
62
77
|
|
|
63
78
|
### Class-First API
|
|
64
79
|
|
|
65
80
|
- `CuaAgent extends Agent`
|
|
66
|
-
- `
|
|
67
|
-
delegated runtime methods.
|
|
81
|
+
- `CuaAgentHarness extends AgentHarness`
|
|
68
82
|
|
|
69
83
|
Both classes mirror pi constructor shapes and behavior, with minimal additions:
|
|
70
84
|
- `browser` (Kernel browser response)
|
|
71
85
|
- `client` (Kernel SDK client)
|
|
72
86
|
- CUA model refs (`"provider:model"`) accepted where pi expects a concrete model
|
|
73
87
|
|
|
74
|
-
If
|
|
88
|
+
If auth callbacks are omitted, both classes default to CUA env var conventions:
|
|
75
89
|
- OpenAI: `OPENAI_API_KEY`
|
|
76
90
|
- Anthropic: `ANTHROPIC_OAUTH_TOKEN` or `ANTHROPIC_API_KEY`
|
|
77
91
|
- Gemini: `GOOGLE_API_KEY` or `GEMINI_API_KEY`
|
|
@@ -84,6 +98,17 @@ If tools are omitted, the classes install canonical CUA computer tool executors
|
|
|
84
98
|
using runtime specs from `@onkernel/cua-ai`. If tools are provided, they are
|
|
85
99
|
used exactly.
|
|
86
100
|
|
|
101
|
+
### Model Switching
|
|
102
|
+
|
|
103
|
+
`CuaAgent` follows pi `Agent` semantics: assign `agent.state.model` to a
|
|
104
|
+
concrete model or CUA model ref. CUA-owned tools and the default system prompt
|
|
105
|
+
refresh with the new provider runtime.
|
|
106
|
+
|
|
107
|
+
`CuaAgentHarness` follows pi `AgentHarness` semantics: call
|
|
108
|
+
`await harness.setModel(model)`. The harness updates its model through pi's
|
|
109
|
+
snapshot machinery and refreshes CUA-owned tools and default prompt state for
|
|
110
|
+
the next provider request.
|
|
111
|
+
|
|
87
112
|
### Tool Composition
|
|
88
113
|
|
|
89
114
|
Use `createCuaComputerTools()` to compose your own tool list from canonical
|
|
@@ -105,4 +130,4 @@ const tools = [
|
|
|
105
130
|
```
|
|
106
131
|
|
|
107
132
|
For full event semantics, steering, follow-up queues, and tool execution
|
|
108
|
-
details, see the pi
|
|
133
|
+
details, see the pi agent core source vendored in this package.
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,46 +1,102 @@
|
|
|
1
|
-
import { Agent, type AgentOptions, type AgentTool, type
|
|
2
|
-
import { type
|
|
1
|
+
import { Agent, AgentHarness, type AgentHarnessOptions, type AgentOptions, type AgentState, type AgentTool, type PromptTemplate, type Skill } from "./vendor/pi-agent-core/index";
|
|
2
|
+
import { type Api, type CuaModelRef, type Model, type SimpleStreamOptions } from "@onkernel/cua-ai";
|
|
3
3
|
import type Kernel from "@onkernel/sdk";
|
|
4
4
|
import type { KernelBrowser } from "./translator/translator";
|
|
5
|
+
/** A CUA model reference string or a concrete pi model object. */
|
|
6
|
+
type CuaRuntimeInput = CuaModelRef | Model<Api>;
|
|
7
|
+
/**
|
|
8
|
+
* Agent state exposed by {@link CuaAgent}.
|
|
9
|
+
*
|
|
10
|
+
* It is the regular pi `AgentState`, except assigning `state.model` may use a
|
|
11
|
+
* CUA model ref such as `"openai:gpt-5.5"`. CUA-owned tools and the default
|
|
12
|
+
* system prompt are refreshed to match the new provider runtime.
|
|
13
|
+
*/
|
|
14
|
+
export interface CuaAgentState extends Omit<AgentState, "model"> {
|
|
15
|
+
/** The concrete pi model currently used by the underlying agent loop. */
|
|
16
|
+
get model(): Model<Api>;
|
|
17
|
+
/** Assign a concrete pi model or CUA model ref and refresh CUA runtime defaults. */
|
|
18
|
+
set model(model: CuaRuntimeInput);
|
|
19
|
+
}
|
|
20
|
+
/** Initial state for {@link CuaAgent}. */
|
|
5
21
|
type CuaAgentInitialState = Omit<NonNullable<AgentOptions["initialState"]>, "model" | "tools"> & {
|
|
6
|
-
|
|
22
|
+
/** Model to use for the first turn. CUA refs are resolved before pi sees the state. */
|
|
23
|
+
model: CuaRuntimeInput;
|
|
24
|
+
/** Optional caller-owned tools. Omit this to install the provider's default CUA tools. */
|
|
7
25
|
tools?: AgentTool[];
|
|
8
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Constructor options for {@link CuaAgent}.
|
|
29
|
+
*
|
|
30
|
+
* `browser` and `client` are used to build the default computer-use tools.
|
|
31
|
+
* Everything else follows pi `AgentOptions`, with `initialState.model`
|
|
32
|
+
* widened to accept CUA model refs.
|
|
33
|
+
*/
|
|
9
34
|
export type CuaAgentOptions = Omit<AgentOptions, "initialState"> & {
|
|
35
|
+
/** Kernel browser session used by default CUA tools. */
|
|
10
36
|
browser: KernelBrowser;
|
|
37
|
+
/** Kernel SDK client used by default CUA tools. */
|
|
11
38
|
client: Kernel;
|
|
39
|
+
/** Initial pi state plus a CUA-aware model value. */
|
|
12
40
|
initialState: CuaAgentInitialState;
|
|
13
41
|
};
|
|
14
|
-
|
|
42
|
+
/**
|
|
43
|
+
* Constructor options for {@link CuaAgentHarness}.
|
|
44
|
+
*
|
|
45
|
+
* The harness keeps pi `AgentHarnessOptions` intact except that `model`
|
|
46
|
+
* accepts CUA refs and `browser`/`client` are required to build default
|
|
47
|
+
* computer-use tools. Callers provide pi's `env` and `session` directly.
|
|
48
|
+
*/
|
|
49
|
+
export type CuaAgentHarnessOptions<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> = Omit<AgentHarnessOptions<TSkill, TPromptTemplate, AgentTool>, "model"> & {
|
|
50
|
+
/** Kernel browser session used by default CUA tools. */
|
|
15
51
|
browser: KernelBrowser;
|
|
52
|
+
/** Kernel SDK client used by default CUA tools. */
|
|
16
53
|
client: Kernel;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
54
|
+
/** Model used by the harness. CUA refs are resolved before pi sees the model. */
|
|
55
|
+
model: CuaRuntimeInput;
|
|
56
|
+
/** Optional payload hook composed after the provider-specific CUA payload hook. */
|
|
57
|
+
onPayload?: SimpleStreamOptions["onPayload"];
|
|
20
58
|
};
|
|
59
|
+
/**
|
|
60
|
+
* Pi `Agent` configured for Kernel browser computer use.
|
|
61
|
+
*
|
|
62
|
+
* Use this class when you want direct access to the lower-level pi agent state,
|
|
63
|
+
* queues, event stream, and `state.model` mutation model. It resolves CUA model
|
|
64
|
+
* refs, installs provider-appropriate CUA tools by default, and keeps those
|
|
65
|
+
* defaults in sync when `agent.state.model` changes.
|
|
66
|
+
*/
|
|
21
67
|
export declare class CuaAgent extends Agent {
|
|
68
|
+
private readonly runtime;
|
|
69
|
+
private stateProxy?;
|
|
22
70
|
constructor(options: CuaAgentOptions);
|
|
71
|
+
/**
|
|
72
|
+
* Return a state proxy so `agent.state.model = "provider:model"` can behave
|
|
73
|
+
* like pi's normal mutable state while also re-resolving CUA tools, prompt,
|
|
74
|
+
* and payload hooks for the selected provider.
|
|
75
|
+
*/
|
|
76
|
+
get state(): CuaAgentState;
|
|
77
|
+
private applyRuntime;
|
|
23
78
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
79
|
+
/**
|
|
80
|
+
* Pi `AgentHarness` configured for Kernel browser computer use.
|
|
81
|
+
*
|
|
82
|
+
* Use this class when you want pi's higher-level harness APIs for sessions,
|
|
83
|
+
* resources, prompt templates, queue events, compaction, and model selection.
|
|
84
|
+
* It installs provider CUA tools by default and keeps CUA-owned runtime
|
|
85
|
+
* defaults in sync through `setModel()`.
|
|
86
|
+
*/
|
|
87
|
+
export declare class CuaAgentHarness<TSkill extends Skill = Skill, TPromptTemplate extends PromptTemplate = PromptTemplate> extends AgentHarness<TSkill, TPromptTemplate, AgentTool> {
|
|
88
|
+
private readonly runtime;
|
|
89
|
+
private requestedActiveToolNames?;
|
|
90
|
+
constructor(options: CuaAgentHarnessOptions<TSkill, TPromptTemplate>);
|
|
91
|
+
/**
|
|
92
|
+
* Mirror pi `AgentHarness.setModel()` while accepting CUA model refs.
|
|
93
|
+
*
|
|
94
|
+
* The override refreshes CUA-owned tools before delegating to pi so the
|
|
95
|
+
* harness snapshot and session model-change entry are written with the
|
|
96
|
+
* concrete model selected by `@onkernel/cua-ai`.
|
|
97
|
+
*/
|
|
98
|
+
setModel(model: CuaRuntimeInput): Promise<void>;
|
|
99
|
+
setActiveTools(toolNames: string[]): Promise<void>;
|
|
44
100
|
}
|
|
45
101
|
export {};
|
|
46
102
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,KAAK,EAEV,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,KAAK,GAAG,EACR,KAAK,WAAW,EAEhB,KAAK,KAAK,EAEV,KAAK,mBAAmB,EAExB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAExC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,kEAAkE;AAClE,KAAK,eAAe,GAAG,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;AAIhD;;;;;;GAMG;AACH,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,UAAU,EAAE,OAAO,CAAC;IAC/D,yEAAyE;IACzE,IAAI,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC;IACxB,oFAAoF;IACpF,IAAI,KAAK,CAAC,KAAK,EAAE,eAAe,EAAE;CAClC;AAED,0CAA0C;AAC1C,KAAK,oBAAoB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,GAAG;IAChG,uFAAuF;IACvF,KAAK,EAAE,eAAe,CAAC;IACvB,0FAA0F;IAC1F,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;CACpB,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,GAAG;IAClE,wDAAwD;IACxD,OAAO,EAAE,aAAa,CAAC;IACvB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,qDAAqD;IACrD,YAAY,EAAE,oBAAoB,CAAC;CACnC,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,sBAAsB,CACjC,MAAM,SAAS,KAAK,GAAG,KAAK,EAC5B,eAAe,SAAS,cAAc,GAAG,cAAc,IACpD,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,GAAG;IAC5E,wDAAwD;IACxD,OAAO,EAAE,aAAa,CAAC;IACvB,mDAAmD;IACnD,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IACjF,KAAK,EAAE,eAAe,CAAC;IACvB,mFAAmF;IACnF,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC7C,CAAC;AA8DF;;;;;;;GAOG;AACH,qBAAa,QAAS,SAAQ,KAAK;IAClC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,UAAU,CAAC,CAAgB;gBAEvB,OAAO,EAAE,eAAe;IA2DpC;;;;OAIG;IACH,IAAa,KAAK,IAAI,aAAa,CAalC;IAED,OAAO,CAAC,YAAY;CAWpB;AAED;;;;;;;GAOG;AACH,qBAAa,eAAe,CAC3B,MAAM,SAAS,KAAK,GAAG,KAAK,EAC5B,eAAe,SAAS,cAAc,GAAG,cAAc,CACtD,SAAQ,YAAY,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,CAAC;IACzD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAuB;IAC/C,OAAO,CAAC,wBAAwB,CAAC,CAAW;gBAEhC,OAAO,EAAE,sBAAsB,CAAC,MAAM,EAAE,eAAe,CAAC;IAsCpE;;;;;;OAMG;IACY,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;CAIjE"}
|
package/dist/agent.js
CHANGED
|
@@ -1,95 +1,197 @@
|
|
|
1
|
-
import { Agent, } from "
|
|
1
|
+
import { Agent, AgentHarness, } from "./vendor/pi-agent-core/index";
|
|
2
2
|
import { getCuaEnvApiKey, resolveCuaRuntimeSpec, streamSimple, } from "@onkernel/cua-ai";
|
|
3
3
|
import { createCuaComputerTools } from "./tools";
|
|
4
|
+
/**
|
|
5
|
+
* Holds the CUA-specific pieces that have to change when a model changes.
|
|
6
|
+
*
|
|
7
|
+
* If callers omit `tools` or `systemPrompt`, CUA owns those values and refreshes
|
|
8
|
+
* them from `@onkernel/cua-ai` whenever the model changes. If callers pass
|
|
9
|
+
* their own tools or prompt, the controller preserves those caller-owned values.
|
|
10
|
+
*/
|
|
11
|
+
class CuaRuntimeController {
|
|
12
|
+
options;
|
|
13
|
+
runtimeSpec;
|
|
14
|
+
constructor(options) {
|
|
15
|
+
this.options = options;
|
|
16
|
+
this.runtimeSpec = resolveCuaRuntimeSpec(options.model);
|
|
17
|
+
}
|
|
18
|
+
get model() {
|
|
19
|
+
return this.runtimeSpec.model;
|
|
20
|
+
}
|
|
21
|
+
get ownsTools() {
|
|
22
|
+
return this.options.tools === undefined;
|
|
23
|
+
}
|
|
24
|
+
get ownsSystemPrompt() {
|
|
25
|
+
return this.options.systemPrompt === undefined;
|
|
26
|
+
}
|
|
27
|
+
get systemPrompt() {
|
|
28
|
+
return this.runtimeSpec.defaultSystemPrompt;
|
|
29
|
+
}
|
|
30
|
+
setModel(model) {
|
|
31
|
+
this.runtimeSpec = resolveCuaRuntimeSpec(model);
|
|
32
|
+
}
|
|
33
|
+
tools() {
|
|
34
|
+
return (this.options.tools ??
|
|
35
|
+
createCuaComputerTools({
|
|
36
|
+
browser: this.options.browser,
|
|
37
|
+
client: this.options.client,
|
|
38
|
+
toolDefinitions: this.runtimeSpec.toolDefinitions,
|
|
39
|
+
}));
|
|
40
|
+
}
|
|
41
|
+
onPayloadFor(model) {
|
|
42
|
+
const runtimeSpec = resolveCuaRuntimeSpec(model);
|
|
43
|
+
return composeOnPayload(runtimeSpec.onPayload, this.options.onPayload);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Pi `Agent` configured for Kernel browser computer use.
|
|
48
|
+
*
|
|
49
|
+
* Use this class when you want direct access to the lower-level pi agent state,
|
|
50
|
+
* queues, event stream, and `state.model` mutation model. It resolves CUA model
|
|
51
|
+
* refs, installs provider-appropriate CUA tools by default, and keeps those
|
|
52
|
+
* defaults in sync when `agent.state.model` changes.
|
|
53
|
+
*/
|
|
4
54
|
export class CuaAgent extends Agent {
|
|
55
|
+
runtime;
|
|
56
|
+
stateProxy;
|
|
5
57
|
constructor(options) {
|
|
6
|
-
const { browser, client, initialState, onPayload, streamFn, ...agentOptions } = options;
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
58
|
+
const { browser, client, initialState, onPayload, streamFn, prepareNextTurn, ...agentOptions } = options;
|
|
59
|
+
const runtime = new CuaRuntimeController({
|
|
60
|
+
browser,
|
|
61
|
+
client,
|
|
62
|
+
model: initialState.model,
|
|
63
|
+
tools: initialState.tools,
|
|
64
|
+
systemPrompt: initialState.systemPrompt,
|
|
65
|
+
onPayload,
|
|
66
|
+
});
|
|
67
|
+
const wrappedStreamFn = (model, context, streamOptions) => (streamFn ?? streamSimple)(model, context, {
|
|
68
|
+
...streamOptions,
|
|
69
|
+
onPayload: runtime.onPayloadFor(model),
|
|
70
|
+
});
|
|
10
71
|
super({
|
|
11
72
|
...agentOptions,
|
|
12
73
|
getApiKey: agentOptions.getApiKey ?? getCuaEnvApiKey,
|
|
13
|
-
streamFn:
|
|
14
|
-
onPayload: composeOnPayload(runtimeSpec.onPayload, onPayload),
|
|
74
|
+
streamFn: wrappedStreamFn,
|
|
15
75
|
initialState: {
|
|
16
76
|
...initialState,
|
|
17
|
-
model:
|
|
18
|
-
tools,
|
|
19
|
-
systemPrompt,
|
|
77
|
+
model: runtime.model,
|
|
78
|
+
tools: runtime.tools(),
|
|
79
|
+
systemPrompt: initialState.systemPrompt ?? runtime.systemPrompt,
|
|
20
80
|
},
|
|
21
81
|
});
|
|
82
|
+
this.runtime = runtime;
|
|
83
|
+
/**
|
|
84
|
+
* pi calls `prepareNextTurn` between provider requests. Wrapping it lets CUA
|
|
85
|
+
* honor any user-provided turn update while also refreshing provider-specific
|
|
86
|
+
* defaults if that update changes the model.
|
|
87
|
+
*/
|
|
88
|
+
this.prepareNextTurn = async (signal) => {
|
|
89
|
+
const update = await prepareNextTurn?.(signal);
|
|
90
|
+
if (update?.model) {
|
|
91
|
+
this.applyRuntime(update.model);
|
|
92
|
+
}
|
|
93
|
+
const state = super.state;
|
|
94
|
+
const context = update?.context ?? {
|
|
95
|
+
systemPrompt: state.systemPrompt,
|
|
96
|
+
messages: state.messages.slice(),
|
|
97
|
+
tools: state.tools.slice(),
|
|
98
|
+
};
|
|
99
|
+
return {
|
|
100
|
+
...update,
|
|
101
|
+
model: state.model,
|
|
102
|
+
context: {
|
|
103
|
+
...context,
|
|
104
|
+
systemPrompt: this.runtime.ownsSystemPrompt ? state.systemPrompt : context.systemPrompt,
|
|
105
|
+
tools: this.runtime.ownsTools ? state.tools.slice() : context.tools,
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Return a state proxy so `agent.state.model = "provider:model"` can behave
|
|
112
|
+
* like pi's normal mutable state while also re-resolving CUA tools, prompt,
|
|
113
|
+
* and payload hooks for the selected provider.
|
|
114
|
+
*/
|
|
115
|
+
get state() {
|
|
116
|
+
if (!this.stateProxy) {
|
|
117
|
+
this.stateProxy = new Proxy(super.state, {
|
|
118
|
+
set: (target, prop, value, receiver) => {
|
|
119
|
+
if (prop === "model") {
|
|
120
|
+
this.applyRuntime(value);
|
|
121
|
+
return true;
|
|
122
|
+
}
|
|
123
|
+
return Reflect.set(target, prop, value, receiver);
|
|
124
|
+
},
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
return this.stateProxy;
|
|
128
|
+
}
|
|
129
|
+
applyRuntime(model) {
|
|
130
|
+
this.runtime.setModel(model);
|
|
131
|
+
const state = super.state;
|
|
132
|
+
state.model = this.runtime.model;
|
|
133
|
+
if (this.runtime.ownsTools) {
|
|
134
|
+
state.tools = this.runtime.tools();
|
|
135
|
+
}
|
|
136
|
+
if (this.runtime.ownsSystemPrompt) {
|
|
137
|
+
state.systemPrompt = this.runtime.systemPrompt;
|
|
138
|
+
}
|
|
22
139
|
}
|
|
23
140
|
}
|
|
24
|
-
|
|
25
|
-
|
|
141
|
+
/**
|
|
142
|
+
* Pi `AgentHarness` configured for Kernel browser computer use.
|
|
143
|
+
*
|
|
144
|
+
* Use this class when you want pi's higher-level harness APIs for sessions,
|
|
145
|
+
* resources, prompt templates, queue events, compaction, and model selection.
|
|
146
|
+
* It installs provider CUA tools by default and keeps CUA-owned runtime
|
|
147
|
+
* defaults in sync through `setModel()`.
|
|
148
|
+
*/
|
|
149
|
+
export class CuaAgentHarness extends AgentHarness {
|
|
150
|
+
runtime;
|
|
151
|
+
requestedActiveToolNames;
|
|
26
152
|
constructor(options) {
|
|
27
|
-
const { browser, client, model, tools, systemPrompt, onPayload,
|
|
28
|
-
const
|
|
29
|
-
const resolvedTools = tools
|
|
30
|
-
|
|
31
|
-
...
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
153
|
+
const { browser, client, model, tools, systemPrompt, getApiKeyAndHeaders, onPayload, activeToolNames, ...harnessOptions } = options;
|
|
154
|
+
const runtime = new CuaRuntimeController({ browser, client, model, tools, systemPrompt, onPayload });
|
|
155
|
+
const resolvedTools = runtime.tools();
|
|
156
|
+
super({
|
|
157
|
+
...harnessOptions,
|
|
158
|
+
model: runtime.model,
|
|
159
|
+
tools: resolvedTools,
|
|
160
|
+
systemPrompt: systemPrompt ?? (() => runtime.systemPrompt),
|
|
161
|
+
getApiKeyAndHeaders: getApiKeyAndHeaders ??
|
|
162
|
+
(async (requestModel) => {
|
|
163
|
+
const apiKey = getCuaEnvApiKey(requestModel.provider);
|
|
164
|
+
return apiKey ? { apiKey } : undefined;
|
|
165
|
+
}),
|
|
166
|
+
activeToolNames: activeToolNames ?? resolvedTools.map((tool) => tool.name),
|
|
167
|
+
});
|
|
168
|
+
this.runtime = runtime;
|
|
169
|
+
this.requestedActiveToolNames = activeToolNames;
|
|
170
|
+
this.on("before_provider_payload", async ({ model, payload }) => {
|
|
171
|
+
const onPayload = this.runtime.onPayloadFor(model);
|
|
172
|
+
if (!onPayload)
|
|
173
|
+
return { payload };
|
|
174
|
+
return { payload: (await onPayload(payload, model)) ?? payload };
|
|
40
175
|
});
|
|
41
176
|
}
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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;
|
|
177
|
+
/**
|
|
178
|
+
* Mirror pi `AgentHarness.setModel()` while accepting CUA model refs.
|
|
179
|
+
*
|
|
180
|
+
* The override refreshes CUA-owned tools before delegating to pi so the
|
|
181
|
+
* harness snapshot and session model-change entry are written with the
|
|
182
|
+
* concrete model selected by `@onkernel/cua-ai`.
|
|
183
|
+
*/
|
|
184
|
+
async setModel(model) {
|
|
185
|
+
this.runtime.setModel(model);
|
|
186
|
+
if (this.runtime.ownsTools) {
|
|
187
|
+
const tools = this.runtime.tools();
|
|
188
|
+
await super.setTools(tools, this.requestedActiveToolNames ?? tools.map((tool) => tool.name));
|
|
64
189
|
}
|
|
65
|
-
await this.
|
|
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();
|
|
190
|
+
await super.setModel(this.runtime.model);
|
|
90
191
|
}
|
|
91
|
-
|
|
92
|
-
|
|
192
|
+
async setActiveTools(toolNames) {
|
|
193
|
+
await super.setActiveTools(toolNames);
|
|
194
|
+
this.requestedActiveToolNames = [...toolNames];
|
|
93
195
|
}
|
|
94
196
|
}
|
|
95
197
|
function composeOnPayload(first, second) {
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,EACL,YAAY,GAQZ,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAGN,eAAe,EAEf,qBAAqB,EAErB,YAAY,GACZ,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAmEjD;;;;;;GAMG;AACH,MAAM,oBAAoB;IAIP;IAHV,WAAW,CAAiB;IAEpC,YACkB,OAOhB;QAPgB,YAAO,GAAP,OAAO,CAOvB;QAED,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,KAAK;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;IACzC,CAAC;IAED,IAAI,gBAAgB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC;IAChD,CAAC;IAED,IAAI,YAAY;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,mBAAmB,CAAC;IAC7C,CAAC;IAED,QAAQ,CAAC,KAAsB;QAC9B,IAAI,CAAC,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,KAAK;QACJ,OAAO,CACN,IAAI,CAAC,OAAO,CAAC,KAAK;YAClB,sBAAsB,CAAC;gBACtB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;gBAC7B,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,eAAe;aACjD,CAAC,CACF,CAAC;IACH,CAAC;IAED,YAAY,CAAC,KAAsB;QAClC,MAAM,WAAW,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACjD,OAAO,gBAAgB,CAAC,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxE,CAAC;CACD;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjB,OAAO,CAAuB;IACvC,UAAU,CAAiB;IAEnC,YAAY,OAAwB;QACnC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,YAAY,EAAE,GAAG,OAAO,CAAC;QACzG,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC;YACxC,OAAO;YACP,MAAM;YACN,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,KAAK,EAAE,YAAY,CAAC,KAAK;YACzB,YAAY,EAAE,YAAY,CAAC,YAAY;YACvC,SAAS;SACT,CAAC,CAAC;QACH,MAAM,eAAe,GAAa,CAAC,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,EAAE,CACnE,CAAC,QAAQ,IAAI,YAAY,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE;YAC1C,GAAG,aAAa;YAChB,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,KAAmB,CAAC;SACpD,CAAC,CAAC;QAEJ,KAAK,CAAC;YACL,GAAG,YAAY;YACf,SAAS,EAAE,YAAY,CAAC,SAAS,IAAI,eAAe;YACpD,QAAQ,EAAE,eAAe;YACzB,YAAY,EAAE;gBACb,GAAG,YAAY;gBACf,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE;gBACtB,YAAY,EAAE,YAAY,CAAC,YAAY,IAAI,OAAO,CAAC,YAAY;aAC/D;SACD,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB;;;;WAIG;QACH,IAAI,CAAC,eAAe,GAAG,KAAK,EAAE,MAA+B,EAAE,EAAE;YAChE,MAAM,MAAM,GAAG,MAAM,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,MAAM,EAAE,KAAK,EAAE,CAAC;gBACnB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAwB,CAAC,CAAC;YACpD,CAAC;YAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC1B,MAAM,OAAO,GAAG,MAAM,EAAE,OAAO,IAAI;gBAClC,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE;gBAChC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;aAC1B,CAAC;YAEF,OAAO;gBACN,GAAG,MAAM;gBACT,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,OAAO,EAAE;oBACR,GAAG,OAAO;oBACV,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY;oBACvF,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK;iBACnE;aACD,CAAC;QACH,CAAC,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,IAAa,KAAK;QACjB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE;gBACxC,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;oBACtC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;wBACtB,IAAI,CAAC,YAAY,CAAC,KAAwB,CAAC,CAAC;wBAC5C,OAAO,IAAI,CAAC;oBACb,CAAC;oBACD,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACnD,CAAC;aACD,CAAkB,CAAC;QACrB,CAAC;QACD,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;IAEO,YAAY,CAAC,KAAsB;QAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC1B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5B,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QACpC,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;YACnC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;QAChD,CAAC;IACF,CAAC;CACD;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,eAGX,SAAQ,YAAgD;IACxC,OAAO,CAAuB;IACvC,wBAAwB,CAAY;IAE5C,YAAY,OAAwD;QACnE,MAAM,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,KAAK,EACL,YAAY,EACZ,mBAAmB,EACnB,SAAS,EACT,eAAe,EACf,GAAG,cAAc,EACjB,GAAG,OAAO,CAAC;QACZ,MAAM,OAAO,GAAG,IAAI,oBAAoB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC,CAAC;QACrG,MAAM,aAAa,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;QAEtC,KAAK,CAAC;YACL,GAAG,cAAc;YACjB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,KAAK,EAAE,aAAa;YACpB,YAAY,EAAE,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;YAC1D,mBAAmB,EAClB,mBAAmB;gBACnB,CAAC,KAAK,EAAE,YAAwB,EAAE,EAAE;oBACnC,MAAM,MAAM,GAAG,eAAe,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;oBACtD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxC,CAAC,CAAC;YACH,eAAe,EAAE,eAAe,IAAI,aAAa,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SAC1E,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,wBAAwB,GAAG,eAAe,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC,yBAAyB,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAA2C,EAAE,EAAE;YACxG,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAmB,CAAC,CAAC;YACjE,IAAI,CAAC,SAAS;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC;YACnC,OAAO,EAAE,OAAO,EAAE,CAAC,MAAM,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;QAClE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACM,KAAK,CAAC,QAAQ,CAAC,KAAsB;QAC7C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnC,MAAM,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,wBAAwB,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9F,CAAC;QACD,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC1C,CAAC;IAEQ,KAAK,CAAC,cAAc,CAAC,SAAmB;QAChD,MAAM,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACtC,IAAI,CAAC,wBAAwB,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;IAChD,CAAC;CACD;AAED,SAAS,gBAAgB,CAAC,KAAgC,EAAE,MAAiC;IAC5F,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE;QAClC,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC,UAAU,IAAI,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC,CAAC;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export * from "
|
|
1
|
+
export * from "./vendor/pi-agent-core/index";
|
|
2
2
|
export type { KernelBrowser } from "./translator/translator";
|
|
3
3
|
export { createCuaComputerTools } from "./tools";
|
|
4
4
|
export type { BatchDetails, ComputerToolOptions, CuaExecutorTool, NavigationDetails, SupportedCuaExecutorToolName, } from "./tools";
|
|
5
5
|
export { SUPPORTED_CUA_EXECUTOR_TOOL_NAMES } from "./tools";
|
|
6
|
-
export { CuaAgent,
|
|
7
|
-
export type { CuaAgentOptions,
|
|
6
|
+
export { CuaAgent, CuaAgentHarness } from "./agent";
|
|
7
|
+
export type { CuaAgentHarnessOptions, CuaAgentOptions, CuaAgentState } from "./agent";
|
|
8
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAE7C,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,eAAe,EAAE,MAAM,SAAS,CAAC;AACpD,YAAY,EAAE,sBAAsB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export * from "
|
|
1
|
+
export * from "./vendor/pi-agent-core/index";
|
|
2
2
|
export { createCuaComputerTools } from "./tools";
|
|
3
3
|
export { SUPPORTED_CUA_EXECUTOR_TOOL_NAMES } from "./tools";
|
|
4
|
-
export { CuaAgent,
|
|
4
|
+
export { CuaAgent, CuaAgentHarness } from "./agent";
|
|
5
5
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAG7C,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAQjD,OAAO,EAAE,iCAAiC,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type Kernel from "@onkernel/sdk";
|
|
2
|
-
import type { AgentTool } from "@earendil-works/pi-agent-core";
|
|
3
2
|
import type { Tool } from "@earendil-works/pi-ai";
|
|
4
3
|
import { CuaBatchSchema, CuaNavigationSchema } from "@onkernel/cua-ai";
|
|
5
4
|
import { type KernelBrowser } from "./translator/translator";
|
|
5
|
+
import type { AgentTool } from "./vendor/pi-agent-core/index";
|
|
6
6
|
export interface ComputerToolOptions {
|
|
7
7
|
browser: KernelBrowser;
|
|
8
8
|
client: Kernel;
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AACxC,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;AACzF,OAAO,KAAK,EAAE,SAAS,EAAmB,MAAM,8BAA8B,CAAC;AAE/E,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"}
|