@agent-native/core 0.63.0 → 0.63.2
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/dist/agent/harness/ai-sdk-adapter.d.ts +44 -0
- package/dist/agent/harness/ai-sdk-adapter.d.ts.map +1 -1
- package/dist/agent/harness/ai-sdk-adapter.js +120 -1
- package/dist/agent/harness/ai-sdk-adapter.js.map +1 -1
- package/dist/agent/harness/index.d.ts +1 -1
- package/dist/agent/harness/index.d.ts.map +1 -1
- package/dist/agent/harness/index.js.map +1 -1
- package/dist/cli/code-agent-executor.js +1 -1
- package/dist/cli/code-agent-executor.js.map +1 -1
- package/dist/cli/create.js +1 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/client/NewWorkspaceAppFlow.js +1 -1
- package/dist/client/NewWorkspaceAppFlow.js.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/AnnotatedCodeBlock.js +29 -10
- package/dist/client/blocks/library/AnnotatedCodeBlock.js.map +1 -1
- package/dist/client/blocks/library/DiffBlock.d.ts.map +1 -1
- package/dist/client/blocks/library/DiffBlock.js +48 -20
- package/dist/client/blocks/library/DiffBlock.js.map +1 -1
- package/dist/client/blocks/library/diagram.d.ts.map +1 -1
- package/dist/client/blocks/library/diagram.js +14 -3
- package/dist/client/blocks/library/diagram.js.map +1 -1
- package/dist/client/blocks/library/wireframe.d.ts.map +1 -1
- package/dist/client/blocks/library/wireframe.js +14 -3
- package/dist/client/blocks/library/wireframe.js.map +1 -1
- package/dist/client/blocks/types.d.ts +5 -0
- package/dist/client/blocks/types.d.ts.map +1 -1
- package/dist/client/blocks/types.js.map +1 -1
- package/dist/client/chat/index.d.ts +2 -1
- package/dist/client/chat/index.d.ts.map +1 -1
- package/dist/client/chat/index.js +2 -1
- package/dist/client/chat/index.js.map +1 -1
- package/dist/client/chat-view-transition.d.ts +17 -0
- package/dist/client/chat-view-transition.d.ts.map +1 -1
- package/dist/client/chat-view-transition.js +46 -0
- package/dist/client/chat-view-transition.js.map +1 -1
- package/dist/client/index.d.ts +2 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +2 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/use-agent-chat-home-handoff.d.ts +27 -0
- package/dist/client/use-agent-chat-home-handoff.d.ts.map +1 -0
- package/dist/client/use-agent-chat-home-handoff.js +120 -0
- package/dist/client/use-agent-chat-home-handoff.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/server/action-discovery.d.ts.map +1 -1
- package/dist/server/action-discovery.js +24 -2
- package/dist/server/action-discovery.js.map +1 -1
- package/dist/server/deep-link.d.ts +2 -2
- package/dist/server/deep-link.d.ts.map +1 -1
- package/dist/server/deep-link.js +2 -2
- package/dist/server/deep-link.js.map +1 -1
- package/dist/styles/agent-native.css +2 -6
- package/dist/tailwind.preset.d.ts.map +1 -1
- package/dist/tailwind.preset.js +8 -1
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/templates/default/package.json +1 -0
- package/dist/templates/headless/AGENTS.md +3 -0
- package/dist/templates/headless/DEVELOPING.md +4 -0
- package/dist/templates/headless/actions/run.ts +6 -0
- package/dist/templates/workspace-root/README.md +4 -4
- package/docs/content/actions.md +32 -42
- package/docs/content/agent-surfaces.md +105 -84
- package/docs/content/agent-teams.md +2 -14
- package/docs/content/agent-web-surfaces.md +4 -4
- package/docs/content/authentication.md +40 -24
- package/docs/content/automations.md +18 -36
- package/docs/content/blueprint-installer.md +3 -0
- package/docs/content/cli-adapters.md +24 -168
- package/docs/content/client.md +11 -77
- package/docs/content/cloneable-saas.md +1 -1
- package/docs/content/code-agents-ui.md +44 -0
- package/docs/content/components.md +10 -23
- package/docs/content/context-awareness.md +3 -3
- package/docs/content/creating-templates.md +20 -18
- package/docs/content/database.md +1 -1
- package/docs/content/deployment.md +5 -37
- package/docs/content/dispatch.md +17 -28
- package/docs/content/drop-in-agent.md +24 -111
- package/docs/content/durable-resume.md +4 -0
- package/docs/content/embedding-sdk.md +141 -135
- package/docs/content/evals.md +3 -3
- package/docs/content/extensions.md +1 -1
- package/docs/content/external-agents.md +35 -61
- package/docs/content/faq.md +5 -5
- package/docs/content/frames.md +13 -4
- package/docs/content/getting-started.md +96 -142
- package/docs/content/harness-agents.md +53 -9
- package/docs/content/human-approval.md +1 -1
- package/docs/content/key-concepts.md +14 -99
- package/docs/content/local-file-mode.md +2 -2
- package/docs/content/mcp-apps.md +9 -2
- package/docs/content/mcp-clients.md +8 -3
- package/docs/content/mcp-protocol.md +11 -29
- package/docs/content/messaging.md +1 -1
- package/docs/content/migration-workbench.md +14 -175
- package/docs/content/multi-app-workspace.md +1 -1
- package/docs/content/multi-tenancy.md +18 -47
- package/docs/content/native-chat-ui.md +15 -12
- package/docs/content/observability.md +16 -4
- package/docs/content/observational-memory.md +1 -1
- package/docs/content/pure-agent-apps.md +17 -124
- package/docs/content/real-time-collaboration.md +14 -14
- package/docs/content/routing.md +71 -0
- package/docs/content/sandbox-adapters.md +78 -4
- package/docs/content/security.md +59 -39
- package/docs/content/server.md +16 -8
- package/docs/content/sharing.md +1 -6
- package/docs/content/skills-guide.md +3 -1
- package/docs/content/template-analytics.md +1 -1
- package/docs/content/template-assets.md +12 -3
- package/docs/content/template-brain.md +64 -72
- package/docs/content/template-chat.md +32 -4
- package/docs/content/template-clips.md +35 -4
- package/docs/content/template-design.md +19 -3
- package/docs/content/template-dispatch.md +9 -0
- package/docs/content/template-forms.md +15 -10
- package/docs/content/template-plan.md +13 -5
- package/docs/content/template-slides.md +14 -14
- package/docs/content/template-videos.md +10 -12
- package/docs/content/tracking.md +66 -55
- package/docs/content/using-your-agent.md +6 -16
- package/docs/content/what-is-agent-native.md +5 -11
- package/docs/content/workspace-management.md +2 -2
- package/docs/content/workspace.md +20 -160
- package/package.json +6 -2
- package/src/templates/default/package.json +1 -0
- package/src/templates/headless/AGENTS.md +3 -0
- package/src/templates/headless/DEVELOPING.md +4 -0
- package/src/templates/headless/actions/run.ts +6 -0
- package/src/templates/workspace-root/README.md +4 -4
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import type { AgentHarnessAdapter, AgentHarnessCreateSessionOptions, AgentHarnessEvent } from "./types.js";
|
|
2
2
|
export type AiSdkHarnessRuntime = "claude-code" | "codex" | "pi";
|
|
3
|
+
export type CodexCliAuthConfig = boolean | {
|
|
4
|
+
/**
|
|
5
|
+
* Local Codex home to read auth from. Defaults to CODEX_HOME, then
|
|
6
|
+
* ~/.codex.
|
|
7
|
+
*/
|
|
8
|
+
codexHome?: string;
|
|
9
|
+
/**
|
|
10
|
+
* Explicit local auth file path. Defaults to <codexHome>/auth.json.
|
|
11
|
+
*/
|
|
12
|
+
authJsonPath?: string;
|
|
13
|
+
};
|
|
3
14
|
export interface AiSdkHarnessAdapterOptions {
|
|
4
15
|
runtime: AiSdkHarnessRuntime;
|
|
5
16
|
label?: string;
|
|
@@ -7,7 +18,40 @@ export interface AiSdkHarnessAdapterOptions {
|
|
|
7
18
|
permissionMode?: AgentHarnessCreateSessionOptions["permissionMode"];
|
|
8
19
|
harnessOptions?: Record<string, unknown>;
|
|
9
20
|
agentOptions?: Record<string, unknown>;
|
|
21
|
+
/**
|
|
22
|
+
* Opt in to copying the local Codex CLI auth file into the harness sandbox
|
|
23
|
+
* before @ai-sdk/harness-codex starts. Use only with trusted/private
|
|
24
|
+
* sandboxes: ChatGPT login tokens from ~/.codex/auth.json are copied into
|
|
25
|
+
* the sandbox so the in-sandbox codex CLI can reuse `codex login`.
|
|
26
|
+
*/
|
|
27
|
+
codexCliAuth?: CodexCliAuthConfig;
|
|
10
28
|
}
|
|
29
|
+
type SandboxRunResult = {
|
|
30
|
+
stdout?: string;
|
|
31
|
+
stderr?: string;
|
|
32
|
+
exitCode?: number;
|
|
33
|
+
};
|
|
34
|
+
export type CodexCliAuthSandboxSession = {
|
|
35
|
+
run(options: {
|
|
36
|
+
command: string;
|
|
37
|
+
abortSignal?: AbortSignal;
|
|
38
|
+
}): PromiseLike<SandboxRunResult>;
|
|
39
|
+
writeTextFile(options: {
|
|
40
|
+
path: string;
|
|
41
|
+
content: string;
|
|
42
|
+
abortSignal?: AbortSignal;
|
|
43
|
+
}): PromiseLike<void>;
|
|
44
|
+
};
|
|
45
|
+
export type CodexCliAuthSandboxHook = (opts: {
|
|
46
|
+
session: CodexCliAuthSandboxSession;
|
|
47
|
+
sessionWorkDir: string;
|
|
48
|
+
abortSignal?: AbortSignal;
|
|
49
|
+
}) => Promise<void> | void;
|
|
11
50
|
export declare function createAiSdkHarnessAdapter(options: AiSdkHarnessAdapterOptions): AgentHarnessAdapter;
|
|
51
|
+
/** @internal */
|
|
52
|
+
export declare function createCodexCliAuthSandboxHook(config: CodexCliAuthConfig, existingHook?: CodexCliAuthSandboxHook): CodexCliAuthSandboxHook;
|
|
53
|
+
/** @internal */
|
|
54
|
+
export declare function normalizeCodexCliAuthConfig(config: CodexCliAuthConfig): Required<Exclude<CodexCliAuthConfig, boolean>>;
|
|
12
55
|
export declare function aiSdkHarnessPartToEvents(part: any): AgentHarnessEvent[];
|
|
56
|
+
export {};
|
|
13
57
|
//# sourceMappingURL=ai-sdk-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk-adapter.d.ts","sourceRoot":"","sources":["../../../src/agent/harness/ai-sdk-adapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ai-sdk-adapter.d.ts","sourceRoot":"","sources":["../../../src/agent/harness/ai-sdk-adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EAEnB,gCAAgC,EAChC,iBAAiB,EAGlB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,OAAO,GAAG,IAAI,CAAC;AAEjE,MAAM,MAAM,kBAAkB,GAC1B,OAAO,GACP;IACE;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEN,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,gCAAgC,CAAC,gBAAgB,CAAC,CAAC;IACpE,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC;;;;;OAKG;IACH,YAAY,CAAC,EAAE,kBAAkB,CAAC;CACnC;AAED,KAAK,gBAAgB,GAAG;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,GAAG,CAAC,OAAO,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;IAClC,aAAa,CAAC,OAAO,EAAE;QACrB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,WAAW,CAAC,EAAE,WAAW,CAAC;KAC3B,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE;IAC3C,OAAO,EAAE,0BAA0B,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAmC3B,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,0BAA0B,GAClC,mBAAmB,CA8DrB;AAyBD,gBAAgB;AAChB,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,kBAAkB,EAC1B,YAAY,CAAC,EAAE,uBAAuB,GACrC,uBAAuB,CAMzB;AAED,gBAAgB;AAChB,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,kBAAkB,GACzB,QAAQ,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAWhD;AAuMD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,GAAG,GAAG,iBAAiB,EAAE,CAyEvE"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
1
4
|
const RUNTIME_IMPORTS = {
|
|
2
5
|
"claude-code": {
|
|
3
6
|
packageName: "@ai-sdk/harness-claude-code",
|
|
@@ -54,8 +57,9 @@ export function createAiSdkHarnessAdapter(options) {
|
|
|
54
57
|
(hasHarnessOptions || exportName?.startsWith("create"))
|
|
55
58
|
? harnessFactory(options.harnessOptions)
|
|
56
59
|
: harnessFactory;
|
|
60
|
+
const agentOptions = agentOptionsWithCodexCliAuth(options);
|
|
57
61
|
const agent = new HarnessAgent({
|
|
58
|
-
...
|
|
62
|
+
...agentOptions,
|
|
59
63
|
harness,
|
|
60
64
|
...(sessionOptions.sandbox ? { sandbox: sessionOptions.sandbox } : {}),
|
|
61
65
|
...(sessionOptions.instructions
|
|
@@ -72,6 +76,121 @@ export function createAiSdkHarnessAdapter(options) {
|
|
|
72
76
|
},
|
|
73
77
|
};
|
|
74
78
|
}
|
|
79
|
+
function agentOptionsWithCodexCliAuth(options) {
|
|
80
|
+
const agentOptions = { ...(options.agentOptions ?? {}) };
|
|
81
|
+
if (!options.codexCliAuth)
|
|
82
|
+
return agentOptions;
|
|
83
|
+
if (options.runtime !== "codex") {
|
|
84
|
+
throw new Error("[agent-harness] codexCliAuth is only supported for the codex AI SDK harness runtime.");
|
|
85
|
+
}
|
|
86
|
+
const existingHook = agentOptions.onSandboxSession;
|
|
87
|
+
if (existingHook !== undefined && typeof existingHook !== "function") {
|
|
88
|
+
throw new Error("[agent-harness] agentOptions.onSandboxSession must be a function when codexCliAuth is enabled.");
|
|
89
|
+
}
|
|
90
|
+
agentOptions.onSandboxSession = createCodexCliAuthSandboxHook(options.codexCliAuth, existingHook);
|
|
91
|
+
return agentOptions;
|
|
92
|
+
}
|
|
93
|
+
/** @internal */
|
|
94
|
+
export function createCodexCliAuthSandboxHook(config, existingHook) {
|
|
95
|
+
const codexCliAuth = normalizeCodexCliAuthConfig(config);
|
|
96
|
+
return async (hookOptions) => {
|
|
97
|
+
await installCodexCliAuthIntoSandbox(codexCliAuth, hookOptions);
|
|
98
|
+
await existingHook?.(hookOptions);
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/** @internal */
|
|
102
|
+
export function normalizeCodexCliAuthConfig(config) {
|
|
103
|
+
const input = typeof config === "object" ? config : {};
|
|
104
|
+
const codexHome = input.codexHome ??
|
|
105
|
+
// guard:allow-env-credential -- CODEX_HOME is a local auth-directory path override, not a credential value.
|
|
106
|
+
process.env.CODEX_HOME ??
|
|
107
|
+
path.join(os.homedir(), ".codex");
|
|
108
|
+
return {
|
|
109
|
+
codexHome,
|
|
110
|
+
authJsonPath: input.authJsonPath ?? path.join(codexHome, "auth.json"),
|
|
111
|
+
};
|
|
112
|
+
}
|
|
113
|
+
async function installCodexCliAuthIntoSandbox(config, opts) {
|
|
114
|
+
const authJson = readCodexCliAuthJson(config.authJsonPath);
|
|
115
|
+
const home = await resolveSandboxHome(opts.session, opts.abortSignal);
|
|
116
|
+
const codexHome = path.posix.join(home, ".codex");
|
|
117
|
+
const sandboxAuthPath = path.posix.join(codexHome, "auth.json");
|
|
118
|
+
const mkdirResult = await opts.session.run({
|
|
119
|
+
command: `mkdir -p ${shellQuote(codexHome)} && chmod 700 ${shellQuote(codexHome)}`,
|
|
120
|
+
abortSignal: opts.abortSignal,
|
|
121
|
+
});
|
|
122
|
+
if (mkdirResult.exitCode !== undefined && mkdirResult.exitCode !== 0) {
|
|
123
|
+
throw new Error(`[agent-harness] Unable to create sandbox Codex home: ${mkdirResult.stderr || mkdirResult.stdout || `exit ${mkdirResult.exitCode}`}`);
|
|
124
|
+
}
|
|
125
|
+
await opts.session.writeTextFile({
|
|
126
|
+
path: sandboxAuthPath,
|
|
127
|
+
content: authJson,
|
|
128
|
+
abortSignal: opts.abortSignal,
|
|
129
|
+
});
|
|
130
|
+
const chmodResult = await opts.session.run({
|
|
131
|
+
command: `chmod 600 ${shellQuote(sandboxAuthPath)}`,
|
|
132
|
+
abortSignal: opts.abortSignal,
|
|
133
|
+
});
|
|
134
|
+
if (chmodResult.exitCode !== undefined && chmodResult.exitCode !== 0) {
|
|
135
|
+
throw new Error(`[agent-harness] Unable to secure sandbox Codex auth file: ${chmodResult.stderr || chmodResult.stdout || `exit ${chmodResult.exitCode}`}`);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function readCodexCliAuthJson(authJsonPath) {
|
|
139
|
+
let authJson;
|
|
140
|
+
try {
|
|
141
|
+
authJson = fs.readFileSync(authJsonPath, "utf8");
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
const code = error && typeof error === "object" && "code" in error
|
|
145
|
+
? String(error.code)
|
|
146
|
+
: undefined;
|
|
147
|
+
const hint = code === "ENOENT"
|
|
148
|
+
? " Run `codex login`, or pass harnessOptions.auth for API-key/gateway auth."
|
|
149
|
+
: "";
|
|
150
|
+
throw new Error(`[agent-harness] Codex CLI auth file was not readable at ${authJsonPath}.${hint}`);
|
|
151
|
+
}
|
|
152
|
+
assertCodexCliAuthJson(authJson, authJsonPath);
|
|
153
|
+
return authJson;
|
|
154
|
+
}
|
|
155
|
+
function assertCodexCliAuthJson(authJson, authJsonPath) {
|
|
156
|
+
let parsed;
|
|
157
|
+
try {
|
|
158
|
+
parsed = JSON.parse(authJson);
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
throw new Error(`[agent-harness] Codex CLI auth file at ${authJsonPath} is not valid JSON.`);
|
|
162
|
+
}
|
|
163
|
+
if (!parsed || typeof parsed !== "object") {
|
|
164
|
+
throw new Error(`[agent-harness] Codex CLI auth file at ${authJsonPath} has an invalid shape.`);
|
|
165
|
+
}
|
|
166
|
+
const record = parsed;
|
|
167
|
+
const tokens = record.tokens;
|
|
168
|
+
const hasChatGptTokens = tokens !== null &&
|
|
169
|
+
typeof tokens === "object" &&
|
|
170
|
+
(typeof tokens.access_token === "string" ||
|
|
171
|
+
typeof tokens.refresh_token === "string");
|
|
172
|
+
const hasApiKey = typeof record.OPENAI_API_KEY === "string";
|
|
173
|
+
if (!hasChatGptTokens && !hasApiKey) {
|
|
174
|
+
throw new Error(`[agent-harness] Codex CLI auth file at ${authJsonPath} does not contain usable ChatGPT tokens or an API key.`);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async function resolveSandboxHome(session, abortSignal) {
|
|
178
|
+
const result = await session.run({
|
|
179
|
+
command: 'printf "%s" "$HOME"',
|
|
180
|
+
abortSignal,
|
|
181
|
+
});
|
|
182
|
+
const home = result.stdout?.trim();
|
|
183
|
+
if (result.exitCode !== undefined && result.exitCode !== 0) {
|
|
184
|
+
throw new Error(`[agent-harness] Unable to resolve sandbox HOME: ${result.stderr || result.stdout || `exit ${result.exitCode}`}`);
|
|
185
|
+
}
|
|
186
|
+
if (!home || !path.posix.isAbsolute(home)) {
|
|
187
|
+
throw new Error("[agent-harness] Sandbox HOME was not an absolute path.");
|
|
188
|
+
}
|
|
189
|
+
return home;
|
|
190
|
+
}
|
|
191
|
+
function shellQuote(value) {
|
|
192
|
+
return `'${value.replace(/'/g, "'\\''")}'`;
|
|
193
|
+
}
|
|
75
194
|
async function createNativeSession(agent, options) {
|
|
76
195
|
if (options.resumeState && typeof agent.resumeSession === "function") {
|
|
77
196
|
return agent.resumeSession(options.resumeState);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-sdk-adapter.js","sourceRoot":"","sources":["../../../src/agent/harness/ai-sdk-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n AgentHarnessAdapter,\n AgentHarnessCapabilities,\n AgentHarnessCreateSessionOptions,\n AgentHarnessEvent,\n AgentHarnessSession,\n AgentHarnessTurnInput,\n} from \"./types.js\";\n\nexport type AiSdkHarnessRuntime = \"claude-code\" | \"codex\" | \"pi\";\n\nexport interface AiSdkHarnessAdapterOptions {\n runtime: AiSdkHarnessRuntime;\n label?: string;\n description?: string;\n permissionMode?: AgentHarnessCreateSessionOptions[\"permissionMode\"];\n harnessOptions?: Record<string, unknown>;\n agentOptions?: Record<string, unknown>;\n}\n\nconst RUNTIME_IMPORTS: Record<\n AiSdkHarnessRuntime,\n {\n packageName: string;\n exportNames: string[];\n label: string;\n sandbox: boolean;\n }\n> = {\n \"claude-code\": {\n packageName: \"@ai-sdk/harness-claude-code\",\n exportNames: [\"claudeCode\", \"createClaudeCode\"],\n label: \"Claude Code\",\n sandbox: true,\n },\n codex: {\n packageName: \"@ai-sdk/harness-codex\",\n exportNames: [\"createCodex\", \"codex\"],\n label: \"Codex\",\n sandbox: true,\n },\n pi: {\n packageName: \"@ai-sdk/harness-pi\",\n exportNames: [\"pi\", \"createPi\"],\n label: \"Pi\",\n sandbox: false,\n },\n};\n\nconst dynamicImport = new Function(\"specifier\", \"return import(specifier)\") as (\n specifier: string,\n) => Promise<any>;\n\nexport function createAiSdkHarnessAdapter(\n options: AiSdkHarnessAdapterOptions,\n): AgentHarnessAdapter {\n const runtime = RUNTIME_IMPORTS[options.runtime];\n if (!runtime) {\n throw new Error(`[agent-harness] Unsupported AI SDK harness runtime`);\n }\n const capabilities: AgentHarnessCapabilities = {\n sandbox: runtime.sandbox,\n resumable: true,\n approvals: options.runtime !== \"codex\",\n hostTools: true,\n fileEvents: true,\n };\n return {\n name: `ai-sdk-harness:${options.runtime}`,\n label: options.label ?? runtime.label,\n description:\n options.description ??\n `Runs ${runtime.label} through the AI SDK HarnessAgent adapter.`,\n installPackage: `@ai-sdk/harness@canary ${runtime.packageName}@canary`,\n capabilities,\n async createSession(sessionOptions) {\n const [{ HarnessAgent }, runtimeModule] = await Promise.all([\n dynamicImport(\"@ai-sdk/harness/agent\"),\n dynamicImport(runtime.packageName),\n ]);\n const exportName = runtime.exportNames.find(\n (name) => runtimeModule[name],\n );\n const harnessFactory = exportName ? runtimeModule[exportName] : undefined;\n if (!HarnessAgent || !harnessFactory) {\n throw new Error(\n `[agent-harness] AI SDK harness package \"${runtime.packageName}\" did not expose one of: ${runtime.exportNames.join(\", \")}`,\n );\n }\n const hasHarnessOptions =\n options.harnessOptions &&\n Object.keys(options.harnessOptions).length > 0;\n const harness =\n typeof harnessFactory === \"function\" &&\n (hasHarnessOptions || exportName?.startsWith(\"create\"))\n ? harnessFactory(options.harnessOptions)\n : harnessFactory;\n const agent = new HarnessAgent({\n ...(options.agentOptions ?? {}),\n harness,\n ...(sessionOptions.sandbox ? { sandbox: sessionOptions.sandbox } : {}),\n ...(sessionOptions.instructions\n ? { instructions: sessionOptions.instructions }\n : {}),\n ...(sessionOptions.skills ? { skills: sessionOptions.skills } : {}),\n ...(sessionOptions.tools ? { tools: sessionOptions.tools } : {}),\n permissionMode:\n sessionOptions.permissionMode ??\n options.permissionMode ??\n \"allow-reads\",\n });\n\n const nativeSession = await createNativeSession(agent, sessionOptions);\n return new AiSdkHarnessSession(agent, nativeSession);\n },\n };\n}\n\nasync function createNativeSession(\n agent: any,\n options: AgentHarnessCreateSessionOptions,\n): Promise<any> {\n if (options.resumeState && typeof agent.resumeSession === \"function\") {\n return agent.resumeSession(options.resumeState);\n }\n if (options.resumeState && typeof agent.createSession === \"function\") {\n try {\n return await agent.createSession({ resumeState: options.resumeState });\n } catch {\n return agent.createSession();\n }\n }\n if (typeof agent.createSession !== \"function\") {\n throw new Error(\n \"[agent-harness] HarnessAgent does not expose createSession()\",\n );\n }\n return agent.createSession();\n}\n\nclass AiSdkHarnessSession implements AgentHarnessSession {\n readonly id: string;\n\n constructor(\n private readonly agent: any,\n private readonly nativeSession: any,\n ) {\n this.id =\n typeof nativeSession?.id === \"string\"\n ? nativeSession.id\n : typeof nativeSession?.sessionId === \"string\"\n ? nativeSession.sessionId\n : `ai-sdk-harness-${Math.random().toString(36).slice(2)}`;\n }\n\n async *streamTurn(\n input: AgentHarnessTurnInput,\n ): AsyncIterable<AgentHarnessEvent> {\n const result = await this.agent.stream({\n session: this.nativeSession,\n ...(input.prompt ? { prompt: input.prompt } : {}),\n ...(input.messages ? { messages: input.messages } : {}),\n ...(input.abortSignal ? { abortSignal: input.abortSignal } : {}),\n });\n for await (const part of result.fullStream ?? []) {\n for (const event of aiSdkHarnessPartToEvents(part)) {\n yield event;\n }\n }\n }\n\n async *continueTurn(): AsyncIterable<AgentHarnessEvent> {\n if (typeof this.agent.continueStream !== \"function\") {\n return;\n }\n const result = await this.agent.continueStream({\n session: this.nativeSession,\n });\n for await (const part of result.fullStream ?? []) {\n for (const event of aiSdkHarnessPartToEvents(part)) {\n yield event;\n }\n }\n }\n\n async detach(): Promise<unknown> {\n if (typeof this.nativeSession.detach === \"function\") {\n return this.nativeSession.detach();\n }\n return undefined;\n }\n\n async stop(): Promise<unknown> {\n if (typeof this.nativeSession.stop === \"function\") {\n return this.nativeSession.stop();\n }\n return this.destroy();\n }\n\n async destroy(): Promise<void> {\n await this.nativeSession.destroy?.();\n }\n}\n\nexport function aiSdkHarnessPartToEvents(part: any): AgentHarnessEvent[] {\n const type = part?.type;\n const events: AgentHarnessEvent[] = [];\n switch (type) {\n case \"text-delta\":\n if (part.text) events.push({ type: \"text-delta\", text: part.text });\n break;\n case \"reasoning-delta\":\n case \"thinking-delta\":\n if (part.text) events.push({ type: \"thinking-delta\", text: part.text });\n break;\n case \"tool-input-start\":\n events.push({\n type: \"tool-start\",\n id: part.id ?? part.toolCallId,\n name: part.toolName ?? part.name ?? \"tool\",\n input: {},\n });\n break;\n case \"tool-call\":\n case \"dynamic-tool-call\":\n events.push({\n type: \"tool-start\",\n id: part.toolCallId ?? part.id,\n name: part.toolName ?? part.name ?? \"tool\",\n input: part.input ?? part.args ?? {},\n });\n break;\n case \"tool-result\":\n case \"dynamic-tool-result\":\n events.push({\n type: \"tool-done\",\n id: part.toolCallId ?? part.id,\n name: part.toolName ?? part.name ?? \"tool\",\n result: part.output ?? part.result,\n });\n break;\n case \"tool-approval-request\":\n events.push({\n type: \"approval-request\",\n id: part.id ?? part.toolCallId ?? \"approval\",\n tool: part.toolName ?? part.name,\n message: part.message ?? \"Harness is waiting for approval\",\n input: part.input ?? part.args,\n });\n break;\n case \"file-change\":\n if (part.path) {\n events.push({\n type: \"file-change\",\n path: String(part.path),\n operation: normalizeFileOperation(part.operation),\n summary: typeof part.summary === \"string\" ? part.summary : undefined,\n });\n }\n break;\n case \"compaction\":\n events.push({\n type: \"compaction\",\n summary: typeof part.summary === \"string\" ? part.summary : undefined,\n });\n break;\n case \"finish\":\n events.push({ type: \"done\", reason: part.finishReason });\n break;\n case \"error\":\n events.push({\n type: \"error\",\n error: part.error?.message ?? part.message ?? \"Harness stream error\",\n });\n break;\n }\n return events;\n}\n\nfunction normalizeFileOperation(\n value: unknown,\n): Extract<AgentHarnessEvent, { type: \"file-change\" }>[\"operation\"] {\n return value === \"create\" ||\n value === \"update\" ||\n value === \"delete\" ||\n value === \"rename\"\n ? value\n : \"unknown\";\n}\n"]}
|
|
1
|
+
{"version":3,"file":"ai-sdk-adapter.js","sourceRoot":"","sources":["../../../src/agent/harness/ai-sdk-adapter.ts"],"names":[],"mappings":"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","sourcesContent":["import fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\n\nimport type {\n AgentHarnessAdapter,\n AgentHarnessCapabilities,\n AgentHarnessCreateSessionOptions,\n AgentHarnessEvent,\n AgentHarnessSession,\n AgentHarnessTurnInput,\n} from \"./types.js\";\n\nexport type AiSdkHarnessRuntime = \"claude-code\" | \"codex\" | \"pi\";\n\nexport type CodexCliAuthConfig =\n | boolean\n | {\n /**\n * Local Codex home to read auth from. Defaults to CODEX_HOME, then\n * ~/.codex.\n */\n codexHome?: string;\n /**\n * Explicit local auth file path. Defaults to <codexHome>/auth.json.\n */\n authJsonPath?: string;\n };\n\nexport interface AiSdkHarnessAdapterOptions {\n runtime: AiSdkHarnessRuntime;\n label?: string;\n description?: string;\n permissionMode?: AgentHarnessCreateSessionOptions[\"permissionMode\"];\n harnessOptions?: Record<string, unknown>;\n agentOptions?: Record<string, unknown>;\n /**\n * Opt in to copying the local Codex CLI auth file into the harness sandbox\n * before @ai-sdk/harness-codex starts. Use only with trusted/private\n * sandboxes: ChatGPT login tokens from ~/.codex/auth.json are copied into\n * the sandbox so the in-sandbox codex CLI can reuse `codex login`.\n */\n codexCliAuth?: CodexCliAuthConfig;\n}\n\ntype SandboxRunResult = {\n stdout?: string;\n stderr?: string;\n exitCode?: number;\n};\n\nexport type CodexCliAuthSandboxSession = {\n run(options: {\n command: string;\n abortSignal?: AbortSignal;\n }): PromiseLike<SandboxRunResult>;\n writeTextFile(options: {\n path: string;\n content: string;\n abortSignal?: AbortSignal;\n }): PromiseLike<void>;\n};\n\nexport type CodexCliAuthSandboxHook = (opts: {\n session: CodexCliAuthSandboxSession;\n sessionWorkDir: string;\n abortSignal?: AbortSignal;\n}) => Promise<void> | void;\n\nconst RUNTIME_IMPORTS: Record<\n AiSdkHarnessRuntime,\n {\n packageName: string;\n exportNames: string[];\n label: string;\n sandbox: boolean;\n }\n> = {\n \"claude-code\": {\n packageName: \"@ai-sdk/harness-claude-code\",\n exportNames: [\"claudeCode\", \"createClaudeCode\"],\n label: \"Claude Code\",\n sandbox: true,\n },\n codex: {\n packageName: \"@ai-sdk/harness-codex\",\n exportNames: [\"createCodex\", \"codex\"],\n label: \"Codex\",\n sandbox: true,\n },\n pi: {\n packageName: \"@ai-sdk/harness-pi\",\n exportNames: [\"pi\", \"createPi\"],\n label: \"Pi\",\n sandbox: false,\n },\n};\n\nconst dynamicImport = new Function(\"specifier\", \"return import(specifier)\") as (\n specifier: string,\n) => Promise<any>;\n\nexport function createAiSdkHarnessAdapter(\n options: AiSdkHarnessAdapterOptions,\n): AgentHarnessAdapter {\n const runtime = RUNTIME_IMPORTS[options.runtime];\n if (!runtime) {\n throw new Error(`[agent-harness] Unsupported AI SDK harness runtime`);\n }\n const capabilities: AgentHarnessCapabilities = {\n sandbox: runtime.sandbox,\n resumable: true,\n approvals: options.runtime !== \"codex\",\n hostTools: true,\n fileEvents: true,\n };\n return {\n name: `ai-sdk-harness:${options.runtime}`,\n label: options.label ?? runtime.label,\n description:\n options.description ??\n `Runs ${runtime.label} through the AI SDK HarnessAgent adapter.`,\n installPackage: `@ai-sdk/harness@canary ${runtime.packageName}@canary`,\n capabilities,\n async createSession(sessionOptions) {\n const [{ HarnessAgent }, runtimeModule] = await Promise.all([\n dynamicImport(\"@ai-sdk/harness/agent\"),\n dynamicImport(runtime.packageName),\n ]);\n const exportName = runtime.exportNames.find(\n (name) => runtimeModule[name],\n );\n const harnessFactory = exportName ? runtimeModule[exportName] : undefined;\n if (!HarnessAgent || !harnessFactory) {\n throw new Error(\n `[agent-harness] AI SDK harness package \"${runtime.packageName}\" did not expose one of: ${runtime.exportNames.join(\", \")}`,\n );\n }\n const hasHarnessOptions =\n options.harnessOptions &&\n Object.keys(options.harnessOptions).length > 0;\n const harness =\n typeof harnessFactory === \"function\" &&\n (hasHarnessOptions || exportName?.startsWith(\"create\"))\n ? harnessFactory(options.harnessOptions)\n : harnessFactory;\n const agentOptions = agentOptionsWithCodexCliAuth(options);\n const agent = new HarnessAgent({\n ...agentOptions,\n harness,\n ...(sessionOptions.sandbox ? { sandbox: sessionOptions.sandbox } : {}),\n ...(sessionOptions.instructions\n ? { instructions: sessionOptions.instructions }\n : {}),\n ...(sessionOptions.skills ? { skills: sessionOptions.skills } : {}),\n ...(sessionOptions.tools ? { tools: sessionOptions.tools } : {}),\n permissionMode:\n sessionOptions.permissionMode ??\n options.permissionMode ??\n \"allow-reads\",\n });\n\n const nativeSession = await createNativeSession(agent, sessionOptions);\n return new AiSdkHarnessSession(agent, nativeSession);\n },\n };\n}\n\nfunction agentOptionsWithCodexCliAuth(\n options: AiSdkHarnessAdapterOptions,\n): Record<string, unknown> {\n const agentOptions = { ...(options.agentOptions ?? {}) };\n if (!options.codexCliAuth) return agentOptions;\n if (options.runtime !== \"codex\") {\n throw new Error(\n \"[agent-harness] codexCliAuth is only supported for the codex AI SDK harness runtime.\",\n );\n }\n const existingHook = agentOptions.onSandboxSession;\n if (existingHook !== undefined && typeof existingHook !== \"function\") {\n throw new Error(\n \"[agent-harness] agentOptions.onSandboxSession must be a function when codexCliAuth is enabled.\",\n );\n }\n agentOptions.onSandboxSession = createCodexCliAuthSandboxHook(\n options.codexCliAuth,\n existingHook as CodexCliAuthSandboxHook | undefined,\n );\n return agentOptions;\n}\n\n/** @internal */\nexport function createCodexCliAuthSandboxHook(\n config: CodexCliAuthConfig,\n existingHook?: CodexCliAuthSandboxHook,\n): CodexCliAuthSandboxHook {\n const codexCliAuth = normalizeCodexCliAuthConfig(config);\n return async (hookOptions) => {\n await installCodexCliAuthIntoSandbox(codexCliAuth, hookOptions);\n await existingHook?.(hookOptions);\n };\n}\n\n/** @internal */\nexport function normalizeCodexCliAuthConfig(\n config: CodexCliAuthConfig,\n): Required<Exclude<CodexCliAuthConfig, boolean>> {\n const input = typeof config === \"object\" ? config : {};\n const codexHome =\n input.codexHome ??\n // guard:allow-env-credential -- CODEX_HOME is a local auth-directory path override, not a credential value.\n process.env.CODEX_HOME ??\n path.join(os.homedir(), \".codex\");\n return {\n codexHome,\n authJsonPath: input.authJsonPath ?? path.join(codexHome, \"auth.json\"),\n };\n}\n\nasync function installCodexCliAuthIntoSandbox(\n config: Required<Exclude<CodexCliAuthConfig, boolean>>,\n opts: {\n session: CodexCliAuthSandboxSession;\n abortSignal?: AbortSignal;\n },\n): Promise<void> {\n const authJson = readCodexCliAuthJson(config.authJsonPath);\n const home = await resolveSandboxHome(opts.session, opts.abortSignal);\n const codexHome = path.posix.join(home, \".codex\");\n const sandboxAuthPath = path.posix.join(codexHome, \"auth.json\");\n\n const mkdirResult = await opts.session.run({\n command: `mkdir -p ${shellQuote(codexHome)} && chmod 700 ${shellQuote(codexHome)}`,\n abortSignal: opts.abortSignal,\n });\n if (mkdirResult.exitCode !== undefined && mkdirResult.exitCode !== 0) {\n throw new Error(\n `[agent-harness] Unable to create sandbox Codex home: ${mkdirResult.stderr || mkdirResult.stdout || `exit ${mkdirResult.exitCode}`}`,\n );\n }\n await opts.session.writeTextFile({\n path: sandboxAuthPath,\n content: authJson,\n abortSignal: opts.abortSignal,\n });\n const chmodResult = await opts.session.run({\n command: `chmod 600 ${shellQuote(sandboxAuthPath)}`,\n abortSignal: opts.abortSignal,\n });\n if (chmodResult.exitCode !== undefined && chmodResult.exitCode !== 0) {\n throw new Error(\n `[agent-harness] Unable to secure sandbox Codex auth file: ${chmodResult.stderr || chmodResult.stdout || `exit ${chmodResult.exitCode}`}`,\n );\n }\n}\n\nfunction readCodexCliAuthJson(authJsonPath: string): string {\n let authJson: string;\n try {\n authJson = fs.readFileSync(authJsonPath, \"utf8\");\n } catch (error) {\n const code =\n error && typeof error === \"object\" && \"code\" in error\n ? String((error as { code?: unknown }).code)\n : undefined;\n const hint =\n code === \"ENOENT\"\n ? \" Run `codex login`, or pass harnessOptions.auth for API-key/gateway auth.\"\n : \"\";\n throw new Error(\n `[agent-harness] Codex CLI auth file was not readable at ${authJsonPath}.${hint}`,\n );\n }\n assertCodexCliAuthJson(authJson, authJsonPath);\n return authJson;\n}\n\nfunction assertCodexCliAuthJson(authJson: string, authJsonPath: string): void {\n let parsed: unknown;\n try {\n parsed = JSON.parse(authJson);\n } catch {\n throw new Error(\n `[agent-harness] Codex CLI auth file at ${authJsonPath} is not valid JSON.`,\n );\n }\n if (!parsed || typeof parsed !== \"object\") {\n throw new Error(\n `[agent-harness] Codex CLI auth file at ${authJsonPath} has an invalid shape.`,\n );\n }\n const record = parsed as Record<string, unknown>;\n const tokens = record.tokens;\n const hasChatGptTokens =\n tokens !== null &&\n typeof tokens === \"object\" &&\n (typeof (tokens as Record<string, unknown>).access_token === \"string\" ||\n typeof (tokens as Record<string, unknown>).refresh_token === \"string\");\n const hasApiKey = typeof record.OPENAI_API_KEY === \"string\";\n if (!hasChatGptTokens && !hasApiKey) {\n throw new Error(\n `[agent-harness] Codex CLI auth file at ${authJsonPath} does not contain usable ChatGPT tokens or an API key.`,\n );\n }\n}\n\nasync function resolveSandboxHome(\n session: CodexCliAuthSandboxSession,\n abortSignal?: AbortSignal,\n): Promise<string> {\n const result = await session.run({\n command: 'printf \"%s\" \"$HOME\"',\n abortSignal,\n });\n const home = result.stdout?.trim();\n if (result.exitCode !== undefined && result.exitCode !== 0) {\n throw new Error(\n `[agent-harness] Unable to resolve sandbox HOME: ${result.stderr || result.stdout || `exit ${result.exitCode}`}`,\n );\n }\n if (!home || !path.posix.isAbsolute(home)) {\n throw new Error(\"[agent-harness] Sandbox HOME was not an absolute path.\");\n }\n return home;\n}\n\nfunction shellQuote(value: string): string {\n return `'${value.replace(/'/g, \"'\\\\''\")}'`;\n}\n\nasync function createNativeSession(\n agent: any,\n options: AgentHarnessCreateSessionOptions,\n): Promise<any> {\n if (options.resumeState && typeof agent.resumeSession === \"function\") {\n return agent.resumeSession(options.resumeState);\n }\n if (options.resumeState && typeof agent.createSession === \"function\") {\n try {\n return await agent.createSession({ resumeState: options.resumeState });\n } catch {\n return agent.createSession();\n }\n }\n if (typeof agent.createSession !== \"function\") {\n throw new Error(\n \"[agent-harness] HarnessAgent does not expose createSession()\",\n );\n }\n return agent.createSession();\n}\n\nclass AiSdkHarnessSession implements AgentHarnessSession {\n readonly id: string;\n\n constructor(\n private readonly agent: any,\n private readonly nativeSession: any,\n ) {\n this.id =\n typeof nativeSession?.id === \"string\"\n ? nativeSession.id\n : typeof nativeSession?.sessionId === \"string\"\n ? nativeSession.sessionId\n : `ai-sdk-harness-${Math.random().toString(36).slice(2)}`;\n }\n\n async *streamTurn(\n input: AgentHarnessTurnInput,\n ): AsyncIterable<AgentHarnessEvent> {\n const result = await this.agent.stream({\n session: this.nativeSession,\n ...(input.prompt ? { prompt: input.prompt } : {}),\n ...(input.messages ? { messages: input.messages } : {}),\n ...(input.abortSignal ? { abortSignal: input.abortSignal } : {}),\n });\n for await (const part of result.fullStream ?? []) {\n for (const event of aiSdkHarnessPartToEvents(part)) {\n yield event;\n }\n }\n }\n\n async *continueTurn(): AsyncIterable<AgentHarnessEvent> {\n if (typeof this.agent.continueStream !== \"function\") {\n return;\n }\n const result = await this.agent.continueStream({\n session: this.nativeSession,\n });\n for await (const part of result.fullStream ?? []) {\n for (const event of aiSdkHarnessPartToEvents(part)) {\n yield event;\n }\n }\n }\n\n async detach(): Promise<unknown> {\n if (typeof this.nativeSession.detach === \"function\") {\n return this.nativeSession.detach();\n }\n return undefined;\n }\n\n async stop(): Promise<unknown> {\n if (typeof this.nativeSession.stop === \"function\") {\n return this.nativeSession.stop();\n }\n return this.destroy();\n }\n\n async destroy(): Promise<void> {\n await this.nativeSession.destroy?.();\n }\n}\n\nexport function aiSdkHarnessPartToEvents(part: any): AgentHarnessEvent[] {\n const type = part?.type;\n const events: AgentHarnessEvent[] = [];\n switch (type) {\n case \"text-delta\":\n if (part.text) events.push({ type: \"text-delta\", text: part.text });\n break;\n case \"reasoning-delta\":\n case \"thinking-delta\":\n if (part.text) events.push({ type: \"thinking-delta\", text: part.text });\n break;\n case \"tool-input-start\":\n events.push({\n type: \"tool-start\",\n id: part.id ?? part.toolCallId,\n name: part.toolName ?? part.name ?? \"tool\",\n input: {},\n });\n break;\n case \"tool-call\":\n case \"dynamic-tool-call\":\n events.push({\n type: \"tool-start\",\n id: part.toolCallId ?? part.id,\n name: part.toolName ?? part.name ?? \"tool\",\n input: part.input ?? part.args ?? {},\n });\n break;\n case \"tool-result\":\n case \"dynamic-tool-result\":\n events.push({\n type: \"tool-done\",\n id: part.toolCallId ?? part.id,\n name: part.toolName ?? part.name ?? \"tool\",\n result: part.output ?? part.result,\n });\n break;\n case \"tool-approval-request\":\n events.push({\n type: \"approval-request\",\n id: part.id ?? part.toolCallId ?? \"approval\",\n tool: part.toolName ?? part.name,\n message: part.message ?? \"Harness is waiting for approval\",\n input: part.input ?? part.args,\n });\n break;\n case \"file-change\":\n if (part.path) {\n events.push({\n type: \"file-change\",\n path: String(part.path),\n operation: normalizeFileOperation(part.operation),\n summary: typeof part.summary === \"string\" ? part.summary : undefined,\n });\n }\n break;\n case \"compaction\":\n events.push({\n type: \"compaction\",\n summary: typeof part.summary === \"string\" ? part.summary : undefined,\n });\n break;\n case \"finish\":\n events.push({ type: \"done\", reason: part.finishReason });\n break;\n case \"error\":\n events.push({\n type: \"error\",\n error: part.error?.message ?? part.message ?? \"Harness stream error\",\n });\n break;\n }\n return events;\n}\n\nfunction normalizeFileOperation(\n value: unknown,\n): Extract<AgentHarnessEvent, { type: \"file-change\" }>[\"operation\"] {\n return value === \"create\" ||\n value === \"update\" ||\n value === \"delete\" ||\n value === \"rename\"\n ? value\n : \"unknown\";\n}\n"]}
|
|
@@ -3,7 +3,7 @@ export { agentHarnessEventToAgentChatEvents, stringifyResult as stringifyAgentHa
|
|
|
3
3
|
export { getAgentHarnessEntry, isAgentHarnessPackageInstalled, listAgentHarnesses, registerAgentHarness, resolveAgentHarness, type AgentHarnessEntry, } from "./registry.js";
|
|
4
4
|
export { ensureAgentHarnessSessionTables, getAgentHarnessSession, getAgentHarnessSessionByRunId, getLatestAgentHarnessSessionForThread, listAgentHarnessSessions, markAgentHarnessSessionStopped, saveAgentHarnessSession, updateAgentHarnessSession, type AgentHarnessSessionStatus, type SaveAgentHarnessSessionInput, type StoredAgentHarnessSession, } from "./store.js";
|
|
5
5
|
export { sendAgentHarnessEvent, startAgentHarnessRun, type StartAgentHarnessRunOptions, } from "./runner.js";
|
|
6
|
-
export { aiSdkHarnessPartToEvents, createAiSdkHarnessAdapter, type AiSdkHarnessAdapterOptions, type AiSdkHarnessRuntime, } from "./ai-sdk-adapter.js";
|
|
6
|
+
export { aiSdkHarnessPartToEvents, createAiSdkHarnessAdapter, type AiSdkHarnessAdapterOptions, type AiSdkHarnessRuntime, type CodexCliAuthConfig, } from "./ai-sdk-adapter.js";
|
|
7
7
|
export { registerBuiltinAgentHarnesses } from "./builtin.js";
|
|
8
8
|
export { agentHarnessBackgroundAgentController, createAgentHarnessBackgroundAgentController, getAgentHarnessBackgroundRun, listAgentHarnessBackgroundRuns, listAgentHarnessBackgroundTranscriptEvents, stopAgentHarnessBackgroundRun, } from "./background.js";
|
|
9
9
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/harness/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAChC,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kCAAkC,EAClC,eAAe,IAAI,2BAA2B,GAC/C,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,6BAA6B,EAC7B,qCAAqC,EACrC,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,GAC/B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agent/harness/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,mBAAmB,EACnB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,gCAAgC,EAChC,iBAAiB,EACjB,mBAAmB,EACnB,0BAA0B,EAC1B,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,kCAAkC,EAClC,eAAe,IAAI,2BAA2B,GAC/C,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,iBAAiB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,6BAA6B,EAC7B,qCAAqC,EACrC,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,EACzB,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,yBAAyB,GAC/B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,KAAK,2BAA2B,GACjC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,GACxB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EACL,qCAAqC,EACrC,2CAA2C,EAC3C,4BAA4B,EAC5B,8BAA8B,EAC9B,0CAA0C,EAC1C,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/harness/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,kCAAkC,EAClC,eAAe,IAAI,2BAA2B,GAC/C,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,6BAA6B,EAC7B,qCAAqC,EACrC,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,GAI1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agent/harness/index.ts"],"names":[],"mappings":"AAYA,OAAO,EACL,kCAAkC,EAClC,eAAe,IAAI,2BAA2B,GAC/C,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,oBAAoB,EACpB,8BAA8B,EAC9B,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,GAEpB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,+BAA+B,EAC/B,sBAAsB,EACtB,6BAA6B,EAC7B,qCAAqC,EACrC,wBAAwB,EACxB,8BAA8B,EAC9B,uBAAuB,EACvB,yBAAyB,GAI1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,qBAAqB,EACrB,oBAAoB,GAErB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,wBAAwB,EACxB,yBAAyB,GAI1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EACL,qCAAqC,EACrC,2CAA2C,EAC3C,4BAA4B,EAC5B,8BAA8B,EAC9B,0CAA0C,EAC1C,6BAA6B,GAC9B,MAAM,iBAAiB,CAAC","sourcesContent":["export type {\n AgentHarnessAdapter,\n AgentHarnessApproval,\n AgentHarnessCapabilities,\n AgentHarnessContinueInput,\n AgentHarnessCreateSessionOptions,\n AgentHarnessEvent,\n AgentHarnessMessage,\n AgentHarnessPermissionMode,\n AgentHarnessSession,\n AgentHarnessTurnInput,\n} from \"./types.js\";\nexport {\n agentHarnessEventToAgentChatEvents,\n stringifyResult as stringifyAgentHarnessResult,\n} from \"./translate.js\";\nexport {\n getAgentHarnessEntry,\n isAgentHarnessPackageInstalled,\n listAgentHarnesses,\n registerAgentHarness,\n resolveAgentHarness,\n type AgentHarnessEntry,\n} from \"./registry.js\";\nexport {\n ensureAgentHarnessSessionTables,\n getAgentHarnessSession,\n getAgentHarnessSessionByRunId,\n getLatestAgentHarnessSessionForThread,\n listAgentHarnessSessions,\n markAgentHarnessSessionStopped,\n saveAgentHarnessSession,\n updateAgentHarnessSession,\n type AgentHarnessSessionStatus,\n type SaveAgentHarnessSessionInput,\n type StoredAgentHarnessSession,\n} from \"./store.js\";\nexport {\n sendAgentHarnessEvent,\n startAgentHarnessRun,\n type StartAgentHarnessRunOptions,\n} from \"./runner.js\";\nexport {\n aiSdkHarnessPartToEvents,\n createAiSdkHarnessAdapter,\n type AiSdkHarnessAdapterOptions,\n type AiSdkHarnessRuntime,\n type CodexCliAuthConfig,\n} from \"./ai-sdk-adapter.js\";\nexport { registerBuiltinAgentHarnesses } from \"./builtin.js\";\nexport {\n agentHarnessBackgroundAgentController,\n createAgentHarnessBackgroundAgentController,\n getAgentHarnessBackgroundRun,\n listAgentHarnessBackgroundRuns,\n listAgentHarnessBackgroundTranscriptEvents,\n stopAgentHarnessBackgroundRun,\n} from \"./background.js\";\n"]}
|
|
@@ -102,7 +102,7 @@ export async function executeCodeAgentRun(options) {
|
|
|
102
102
|
}
|
|
103
103
|
const engine = options.engine ?? (await resolveExecutorEngine(requestedEngine));
|
|
104
104
|
if (!engine) {
|
|
105
|
-
const message = "No LLM provider key was found. Set ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, another supported provider key, or
|
|
105
|
+
const message = "No LLM provider key was found. Set ANTHROPIC_API_KEY, OPENAI_API_KEY, GOOGLE_GENERATIVE_AI_API_KEY, another supported provider key, or run `codex login` to use Codex CLI.";
|
|
106
106
|
options.stdout?.write(`${message}\n`);
|
|
107
107
|
appendCodeAgentTranscriptEvent({
|
|
108
108
|
runId: existing.id,
|