agentic-engineering-harness 0.6.9 → 0.6.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,32 @@
1
1
  import type { HarnessProjectConfig } from "../core/types.js";
2
2
  import type { AgentExecutionSelection } from "./types.js";
3
+ export type OpenCodeAgentBindingSource = "aeh-managed" | "explicit";
4
+ export interface OpenCodeAgentBinding {
5
+ agentId: string;
6
+ source: OpenCodeAgentBindingSource;
7
+ managed: boolean;
8
+ }
9
+ export interface OpenCodeRuntimeProjection {
10
+ binding: OpenCodeAgentBinding;
11
+ config: Record<string, unknown>;
12
+ env: Record<string, string>;
13
+ }
3
14
  export declare function validateExecutionCapabilities(selection: AgentExecutionSelection, transport: string): string[];
4
15
  export declare function permissionSummary(selection: AgentExecutionSelection): string;
5
- export declare function buildOpenCodeRuntimeConfig(selection: AgentExecutionSelection, config?: HarnessProjectConfig): Record<string, unknown>;
16
+ /**
17
+ * Resolve the concrete OpenCode execution identity for an AEH logical agent.
18
+ *
19
+ * Explicit nativeAgent is an externally-authored OpenCode primary/all agent and
20
+ * is preserved exactly. Otherwise AEH owns the native identity and injects a
21
+ * primary agent with a deterministic collision-resistant name into the
22
+ * session-local OpenCode config.
23
+ */
24
+ export declare function resolveOpenCodeAgentBinding(selection: AgentExecutionSelection): OpenCodeAgentBinding;
25
+ /**
26
+ * Compile the inline OpenCode configuration used by direct, Podman and Paseo
27
+ * transports. OPENCODE_CONFIG_CONTENT is loaded after ordinary user/project
28
+ * config, so the AEH-managed identity and policy are deterministic without
29
+ * mutating the user's global OpenCode configuration.
30
+ */
31
+ export declare function buildOpenCodeRuntimeConfig(selection: AgentExecutionSelection, config?: HarnessProjectConfig, binding?: OpenCodeAgentBinding): Record<string, unknown>;
32
+ export declare function compileOpenCodeRuntimeProjection(selection: AgentExecutionSelection, config?: HarnessProjectConfig): OpenCodeRuntimeProjection;
@@ -1,30 +1,189 @@
1
- export function validateExecutionCapabilities(selection, transport) { const issues = []; if (selection.nativeAgent && selection.runtimeCapabilities.nativeAgent === false)
2
- issues.push(`Runtime ${selection.runtimeName} cannot select native agent ${selection.nativeAgent}.`); if (selection.nativeAgent && transport === "paseo" && selection.runtimeCapabilities.nativeAgentViaPaseo !== true)
3
- issues.push(`Agent ${selection.logicalAgent} requires nativeAgent=${selection.nativeAgent}, but runtime ${selection.runtimeName} does not declare nativeAgentViaPaseo. Use transport=direct/podman or configure a Paseo provider that exposes this native agent.`); if (selection.variant && selection.runtimeCapabilities.variantSelection === false)
4
- issues.push(`Runtime ${selection.runtimeName} cannot select variant ${selection.variant}.`); if (selection.role === "implementer" && selection.permissions.write === "deny")
5
- issues.push(`Implementer ${selection.logicalAgent} denies write permission.`); if ((selection.role === "reviewer" || selection.role === "validator") && selection.permissions.write === "allow")
6
- issues.push(`${selection.role} ${selection.logicalAgent} explicitly allows writes; read-only roles should use write=deny unless intentionally mutating.`); if (selection.role === "orchestrator" && selection.permissions.delegate === "deny")
7
- issues.push(`Orchestrator ${selection.logicalAgent} denies delegation.`); return issues; }
8
- export function permissionSummary(selection) { return Object.entries(selection.permissions).map(([key, value]) => `${key}=${value}`).join(", ") || "unspecified"; }
9
- export function buildOpenCodeRuntimeConfig(selection, config) { const permission = {}; const p = selection.permissions; if (p.read)
10
- permission.read = p.read; if (p.write)
11
- permission.edit = p.write; if (p.network) {
12
- permission.webfetch = p.network;
13
- permission.websearch = p.network;
14
- } if (p.delegate)
15
- permission.task = p.delegate; const bash = buildBashPermission(p.shell, p.gitWrite); if (bash)
16
- permission.bash = bash; if (selection.skills.length && !selection.skills.includes("*"))
17
- permission.skill = Object.fromEntries([["*", "deny"], ...selection.skills.map((skill) => [skill, "allow"])]); const mcp = {}; const tools = {}; const configured = config?.mcp?.servers ?? {}; for (const [name, server] of Object.entries(configured)) {
18
- const selected = selection.mcps.includes(name) && server.enabled !== false;
19
- tools[`${name}_*`] = selected;
20
- if (selected)
21
- mcp[name] = toOpenCodeMcp(server);
22
- } for (const name of selection.mcps)
23
- if (!configured[name])
24
- tools[`${name}_*`] = true; return { $schema: "https://opencode.ai/config.json", permission, ...(Object.keys(mcp).length ? { mcp } : {}), ...(Object.keys(tools).length ? { tools } : {}) }; }
25
- function toOpenCodeMcp(server) { if (server.type === "local")
26
- return { type: "local", command: server.command, enabled: true, ...(server.environment ? { environment: server.environment } : {}), ...(server.timeoutMs ? { timeout: server.timeoutMs } : {}) }; return { type: "remote", url: server.url, enabled: true, ...(server.headers ? { headers: server.headers } : {}), ...(server.oauth !== undefined ? { oauth: server.oauth } : {}), ...(server.timeoutMs ? { timeout: server.timeoutMs } : {}) }; }
27
- function buildBashPermission(shell, gitWrite) { if (!gitWrite)
28
- return shell; const result = { "*": shell ?? "ask" }; for (const pattern of ["git add *", "git commit *", "git push *", "git tag *", "git checkout *", "git switch *", "git reset *", "git clean *", "git restore *", "git merge *", "git rebase *", "git cherry-pick *"])
29
- result[pattern] = gitWrite; return result; }
1
+ import { createHash } from "node:crypto";
2
+ export function validateExecutionCapabilities(selection, transport) {
3
+ const issues = [];
4
+ if (selection.nativeAgent && selection.runtimeCapabilities.nativeAgent === false) {
5
+ issues.push(`Runtime ${selection.runtimeName} cannot select native agent ${selection.nativeAgent}.`);
6
+ }
7
+ const nativeAgentViaPaseo = selection.runtimeCapabilities.nativeAgentViaPaseo === true ||
8
+ (selection.runtimeAdapter === "opencode" && selection.paseoProvider === "opencode");
9
+ if (selection.nativeAgent && transport === "paseo" && !nativeAgentViaPaseo) {
10
+ issues.push(`Agent ${selection.logicalAgent} requires nativeAgent=${selection.nativeAgent}, but runtime ${selection.runtimeName} does not support that native agent through Paseo.`);
11
+ }
12
+ if (selection.variant && selection.runtimeCapabilities.variantSelection === false) {
13
+ issues.push(`Runtime ${selection.runtimeName} cannot select variant ${selection.variant}.`);
14
+ }
15
+ if (selection.role === "implementer" && selection.permissions.write === "deny") {
16
+ issues.push(`Implementer ${selection.logicalAgent} denies write permission.`);
17
+ }
18
+ if ((selection.role === "reviewer" || selection.role === "validator") &&
19
+ selection.permissions.write === "allow") {
20
+ issues.push(`${selection.role} ${selection.logicalAgent} explicitly allows writes; read-only roles should use write=deny unless intentionally mutating.`);
21
+ }
22
+ if (selection.role === "orchestrator" && selection.permissions.delegate === "deny") {
23
+ issues.push(`Orchestrator ${selection.logicalAgent} denies delegation.`);
24
+ }
25
+ return issues;
26
+ }
27
+ export function permissionSummary(selection) {
28
+ return (Object.entries(selection.permissions)
29
+ .map(([key, value]) => `${key}=${value}`)
30
+ .join(", ") || "unspecified");
31
+ }
32
+ /**
33
+ * Resolve the concrete OpenCode execution identity for an AEH logical agent.
34
+ *
35
+ * Explicit nativeAgent is an externally-authored OpenCode primary/all agent and
36
+ * is preserved exactly. Otherwise AEH owns the native identity and injects a
37
+ * primary agent with a deterministic collision-resistant name into the
38
+ * session-local OpenCode config.
39
+ */
40
+ export function resolveOpenCodeAgentBinding(selection) {
41
+ const explicit = selection.nativeAgent?.trim();
42
+ if (explicit) {
43
+ return { agentId: explicit, source: "explicit", managed: false };
44
+ }
45
+ return {
46
+ agentId: managedOpenCodeAgentId(selection.logicalAgent),
47
+ source: "aeh-managed",
48
+ managed: true
49
+ };
50
+ }
51
+ /**
52
+ * Compile the inline OpenCode configuration used by direct, Podman and Paseo
53
+ * transports. OPENCODE_CONFIG_CONTENT is loaded after ordinary user/project
54
+ * config, so the AEH-managed identity and policy are deterministic without
55
+ * mutating the user's global OpenCode configuration.
56
+ */
57
+ export function buildOpenCodeRuntimeConfig(selection, config, binding = resolveOpenCodeAgentBinding(selection)) {
58
+ const permission = buildOpenCodePermission(selection);
59
+ const mcp = {};
60
+ const tools = {};
61
+ const configured = config?.mcp?.servers ?? {};
62
+ for (const [name, server] of Object.entries(configured)) {
63
+ const selected = selection.mcps.includes(name) && server.enabled !== false;
64
+ tools[`${name}_*`] = selected;
65
+ if (selected)
66
+ mcp[name] = toOpenCodeMcp(server);
67
+ }
68
+ for (const name of selection.mcps) {
69
+ if (!configured[name])
70
+ tools[`${name}_*`] = true;
71
+ }
72
+ const managedAgent = binding.managed
73
+ ? {
74
+ agent: {
75
+ [binding.agentId]: {
76
+ mode: "primary",
77
+ description: selection.description ??
78
+ `AEH-managed OpenCode execution identity for ${selection.logicalAgent}.`,
79
+ model: selection.modelId,
80
+ prompt: `AEH execution identity: ${selection.logicalAgent}. Follow the task-scoped AEH charter, frozen control-plane context, permissions and acceptance criteria supplied with each turn.`,
81
+ ...(selection.variant ? { variant: selection.variant } : {}),
82
+ ...(selection.temperature !== undefined
83
+ ? { temperature: selection.temperature }
84
+ : {}),
85
+ ...(Object.keys(permission).length ? { permission } : {})
86
+ }
87
+ },
88
+ default_agent: binding.agentId
89
+ }
90
+ : {};
91
+ return {
92
+ $schema: "https://opencode.ai/config.json",
93
+ permission,
94
+ ...managedAgent,
95
+ ...(Object.keys(mcp).length ? { mcp } : {}),
96
+ ...(Object.keys(tools).length ? { tools } : {})
97
+ };
98
+ }
99
+ export function compileOpenCodeRuntimeProjection(selection, config) {
100
+ const binding = resolveOpenCodeAgentBinding(selection);
101
+ const runtimeConfig = buildOpenCodeRuntimeConfig(selection, config, binding);
102
+ return {
103
+ binding,
104
+ config: runtimeConfig,
105
+ env: {
106
+ OPENCODE_CONFIG_CONTENT: JSON.stringify(runtimeConfig)
107
+ }
108
+ };
109
+ }
110
+ function buildOpenCodePermission(selection) {
111
+ const permission = {};
112
+ const p = selection.permissions;
113
+ if (p.read)
114
+ permission.read = p.read;
115
+ if (p.write)
116
+ permission.edit = p.write;
117
+ if (p.network) {
118
+ permission.webfetch = p.network;
119
+ permission.websearch = p.network;
120
+ }
121
+ if (p.delegate)
122
+ permission.task = p.delegate;
123
+ const bash = buildBashPermission(p.shell, p.gitWrite);
124
+ if (bash)
125
+ permission.bash = bash;
126
+ if (selection.skills.length && !selection.skills.includes("*")) {
127
+ permission.skill = Object.fromEntries([
128
+ ["*", "deny"],
129
+ ...selection.skills.map((skill) => [skill, "allow"])
130
+ ]);
131
+ }
132
+ return permission;
133
+ }
134
+ function managedOpenCodeAgentId(logicalAgent) {
135
+ const original = logicalAgent.trim();
136
+ if (!original)
137
+ throw new Error("AEH logical agent name is required for OpenCode identity.");
138
+ const slug = original
139
+ .toLowerCase()
140
+ .replace(/[^a-z0-9._-]+/g, "-")
141
+ .replace(/^-+|-+$/g, "") || "agent";
142
+ const normalizedOriginal = original.toLowerCase();
143
+ if (slug === normalizedOriginal)
144
+ return `aeh-${slug}`;
145
+ const digest = createHash("sha256").update(original).digest("hex").slice(0, 8);
146
+ return `aeh-${slug}-${digest}`;
147
+ }
148
+ function toOpenCodeMcp(server) {
149
+ if (server.type === "local") {
150
+ return {
151
+ type: "local",
152
+ command: server.command,
153
+ enabled: true,
154
+ ...(server.environment ? { environment: server.environment } : {}),
155
+ ...(server.timeoutMs ? { timeout: server.timeoutMs } : {})
156
+ };
157
+ }
158
+ return {
159
+ type: "remote",
160
+ url: server.url,
161
+ enabled: true,
162
+ ...(server.headers ? { headers: server.headers } : {}),
163
+ ...(server.oauth !== undefined ? { oauth: server.oauth } : {}),
164
+ ...(server.timeoutMs ? { timeout: server.timeoutMs } : {})
165
+ };
166
+ }
167
+ function buildBashPermission(shell, gitWrite) {
168
+ if (!gitWrite)
169
+ return shell;
170
+ const result = { "*": shell ?? "ask" };
171
+ for (const pattern of [
172
+ "git add *",
173
+ "git commit *",
174
+ "git push *",
175
+ "git tag *",
176
+ "git checkout *",
177
+ "git switch *",
178
+ "git reset *",
179
+ "git clean *",
180
+ "git restore *",
181
+ "git merge *",
182
+ "git rebase *",
183
+ "git cherry-pick *"
184
+ ]) {
185
+ result[pattern] = gitWrite;
186
+ }
187
+ return result;
188
+ }
30
189
  //# sourceMappingURL=permissions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/agents/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../../src/agents/permissions.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import { type OpenCodeAgentBindingSource } from "../agents/permissions.js";
1
2
  import type { AgentExecutionSelection } from "../agents/types.js";
2
3
  import type { HarnessProjectConfig, TaskContract } from "../core/types.js";
3
4
  export interface PaseoLaunchSpecOptions {
@@ -14,6 +15,11 @@ export interface PaseoAgentLaunchSpec {
14
15
  title: string;
15
16
  provider: string;
16
17
  model?: string;
18
+ modeId?: string;
19
+ modeSource?: OpenCodeAgentBindingSource;
20
+ thinkingOptionId?: string;
21
+ env?: Record<string, string>;
22
+ nativeAgentId?: string;
17
23
  workspaceId?: string;
18
24
  labels: Record<string, string>;
19
25
  timeoutSeconds: number;
@@ -1,3 +1,4 @@
1
+ import { compileOpenCodeRuntimeProjection } from "../agents/permissions.js";
1
2
  import { deliveryWorkspaceId } from "../delivery/handoff.js";
2
3
  import { currentOperationContext } from "../operations/state.js";
3
4
  export async function compilePaseoAgentLaunchSpec(root, config, contract, options = {}) {
@@ -5,7 +6,12 @@ export async function compilePaseoAgentLaunchSpec(root, config, contract, option
5
6
  const worker = config.orchestration?.worker;
6
7
  const logicalAgent = options.logicalAgent ?? selection?.logicalAgent ?? "worker";
7
8
  const provider = options.provider ?? selection?.paseoProvider ?? worker?.provider ?? "opencode";
8
- const model = options.model ?? (selection ? (selection.runtimeAdapter === "codex" ? selection.modelName : selection.modelId) : worker?.model);
9
+ const model = options.model ??
10
+ (selection
11
+ ? selection.runtimeAdapter === "codex"
12
+ ? selection.modelName
13
+ : selection.modelId
14
+ : worker?.model);
9
15
  const operation = currentOperationContext();
10
16
  const operationId = operation.id ?? contract.task.id;
11
17
  const operationKind = operation.kind ?? options.kind ?? inferOperationKind(contract);
@@ -13,6 +19,9 @@ export async function compilePaseoAgentLaunchSpec(root, config, contract, option
13
19
  const deliveryId = await deliveryWorkspaceId(root, config, contract.task.id);
14
20
  const workspaceId = deliveryId ?? operation.workspaceId;
15
21
  const title = `${options.titlePrefix ?? worker?.titlePrefix ?? "aeh"}-${contract.task.id}-${logicalAgent}`;
22
+ const openCode = selection?.runtimeAdapter === "opencode" && provider === "opencode"
23
+ ? compileOpenCodeRuntimeProjection(selection, config)
24
+ : undefined;
16
25
  const labels = {
17
26
  "aeh.project": config.project.name,
18
27
  "aeh.kind": "worker",
@@ -24,8 +33,13 @@ export async function compilePaseoAgentLaunchSpec(root, config, contract, option
24
33
  };
25
34
  if (selection?.profile)
26
35
  labels["aeh.profile"] = selection.profile;
27
- if (workspaceId && workspaceId === operation.workspaceId && !deliveryId)
36
+ if (openCode) {
37
+ labels["aeh.native-agent"] = openCode.binding.agentId;
38
+ labels["aeh.native-agent.source"] = openCode.binding.source;
39
+ }
40
+ if (workspaceId && workspaceId === operation.workspaceId && !deliveryId) {
28
41
  labels["aeh.workspace.kind"] = "orchestration";
42
+ }
29
43
  if (workspaceId && deliveryId)
30
44
  labels["aeh.workspace.kind"] = "delivery";
31
45
  return {
@@ -33,6 +47,11 @@ export async function compilePaseoAgentLaunchSpec(root, config, contract, option
33
47
  title,
34
48
  provider,
35
49
  model,
50
+ modeId: openCode?.binding.agentId,
51
+ modeSource: openCode?.binding.source,
52
+ thinkingOptionId: openCode ? selection?.variant : undefined,
53
+ env: openCode?.env,
54
+ nativeAgentId: openCode?.binding.agentId,
36
55
  workspaceId,
37
56
  labels,
38
57
  timeoutSeconds: worker?.timeoutSeconds ?? 1800,
@@ -54,8 +73,11 @@ export function inferAgentPhase(selection, logicalAgent) {
54
73
  return "spec-authoring";
55
74
  if (name.includes("environment-manager"))
56
75
  return "environment-recovery";
57
- if (role === "implementer" || name.includes("implementer") || name.includes("worker"))
76
+ if (role === "implementer" ||
77
+ name.includes("implementer") ||
78
+ name.includes("worker")) {
58
79
  return "implementation";
80
+ }
59
81
  return "work";
60
82
  }
61
83
  function inferOperationKind(contract) {
@@ -1 +1 @@
1
- {"version":3,"file":"launchSpec.js","sourceRoot":"","sources":["../../src/paseo/launchSpec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"launchSpec.js","sourceRoot":"","sources":["../../src/paseo/launchSpec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ export interface PaseoProviderModePreflightResult {
2
+ ok: boolean;
3
+ provider: string;
4
+ modeId: string;
5
+ availableModes: string[];
6
+ source: "paseo-provider-modes";
7
+ message: string;
8
+ }
9
+ /**
10
+ * Validate an externally-authored provider mode before AEH dispatches work.
11
+ * This is intentionally fail-closed: an explicit nativeAgent is part of the
12
+ * frozen execution contract, so silently falling back to an ambient default
13
+ * would execute a different agent than the one AEH selected.
14
+ */
15
+ export declare function preflightPaseoProviderMode(root: string, provider: string, modeId: string, cwd?: string): Promise<PaseoProviderModePreflightResult>;
@@ -0,0 +1,118 @@
1
+ import process from "node:process";
2
+ import { pathToFileURL } from "node:url";
3
+ import { PaseoSdkUnavailableError } from "./sdk.js";
4
+ import { resolvePaseoSdkFromCli } from "./sdkResolve.js";
5
+ import { recordPaseoTrace } from "./trace.js";
6
+ /**
7
+ * Validate an externally-authored provider mode before AEH dispatches work.
8
+ * This is intentionally fail-closed: an explicit nativeAgent is part of the
9
+ * frozen execution contract, so silently falling back to an ambient default
10
+ * would execute a different agent than the one AEH selected.
11
+ */
12
+ export async function preflightPaseoProviderMode(root, provider, modeId, cwd = root) {
13
+ const normalizedProvider = provider.trim();
14
+ const normalizedMode = modeId.trim();
15
+ if (!normalizedProvider)
16
+ throw new Error("Paseo provider is required for mode preflight.");
17
+ if (!normalizedMode)
18
+ throw new Error("Paseo modeId is required for mode preflight.");
19
+ const sdk = await loadSdk(root);
20
+ const client = sdk.createPaseoClient({
21
+ url: process.env.PASEO_DAEMON_URL?.trim() || "ws://127.0.0.1:6767/ws",
22
+ clientId: `aeh-mode-preflight-${process.pid}`,
23
+ password: process.env.PASEO_DAEMON_PASSWORD?.trim() || undefined
24
+ });
25
+ try {
26
+ await client.connect();
27
+ if (typeof client.providers?.listModes !== "function") {
28
+ throw new Error("The active Paseo SDK does not expose providers.listModes(), which AEH requires to validate an explicit native OpenCode agent before dispatch.");
29
+ }
30
+ const response = await client.providers.listModes(normalizedProvider, { cwd });
31
+ const availableModes = modeIds(response);
32
+ const ok = availableModes.includes(normalizedMode);
33
+ const result = {
34
+ ok,
35
+ provider: normalizedProvider,
36
+ modeId: normalizedMode,
37
+ availableModes,
38
+ source: "paseo-provider-modes",
39
+ message: ok
40
+ ? `Paseo provider ${normalizedProvider} exposes mode ${normalizedMode}.`
41
+ : availableModes.length
42
+ ? `Paseo provider ${normalizedProvider} does not expose requested mode ${normalizedMode}.`
43
+ : `Paseo provider ${normalizedProvider} reported no selectable modes for ${cwd}.`
44
+ };
45
+ await recordPaseoTrace(root, "provider.mode.preflight", {
46
+ ok,
47
+ provider: normalizedProvider,
48
+ modeId: normalizedMode,
49
+ availableModeCount: availableModes.length,
50
+ source: result.source,
51
+ message: result.message
52
+ });
53
+ return result;
54
+ }
55
+ finally {
56
+ await client.close().catch(() => undefined);
57
+ }
58
+ }
59
+ async function loadSdk(root) {
60
+ const bundled = await resolvePaseoSdkFromCli(root);
61
+ if (bundled.resolved) {
62
+ try {
63
+ const sdk = (await import(pathToFileURL(bundled.resolved).href));
64
+ if (typeof sdk.createPaseoClient === "function")
65
+ return sdk;
66
+ }
67
+ catch (error) {
68
+ bundled.diagnostics.push(`mode preflight bundled import: ${String(error)}`);
69
+ }
70
+ }
71
+ const packageName = "@getpaseo/client";
72
+ let directError;
73
+ try {
74
+ const direct = (await import(packageName));
75
+ if (typeof direct.createPaseoClient === "function")
76
+ return direct;
77
+ }
78
+ catch (error) {
79
+ directError = error;
80
+ }
81
+ const detail = bundled.diagnostics.length
82
+ ? ` Resolution diagnostics: ${bundled.diagnostics.join("; ")}.`
83
+ : "";
84
+ throw new PaseoSdkUnavailableError(`Paseo SDK could not be resolved for explicit provider-mode preflight.${detail}${directError ? ` Direct import: ${String(directError)}` : ""}`, { cause: directError });
85
+ }
86
+ function modeIds(value) {
87
+ const result = new Set();
88
+ const visit = (item) => {
89
+ if (Array.isArray(item)) {
90
+ for (const child of item)
91
+ visit(child);
92
+ return;
93
+ }
94
+ if (!item || typeof item !== "object")
95
+ return;
96
+ const record = item;
97
+ const id = stringField(record, ["id", "modeId", "mode_id"]);
98
+ if (id &&
99
+ ("label" in record ||
100
+ "description" in record ||
101
+ "colorTier" in record ||
102
+ "isDefault" in record)) {
103
+ result.add(id);
104
+ }
105
+ for (const child of Object.values(record))
106
+ visit(child);
107
+ };
108
+ visit(value);
109
+ return [...result];
110
+ }
111
+ function stringField(record, keys) {
112
+ for (const key of keys) {
113
+ if (typeof record[key] === "string" && record[key])
114
+ return record[key];
115
+ }
116
+ return undefined;
117
+ }
118
+ //# sourceMappingURL=modePreflight.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modePreflight.js","sourceRoot":"","sources":["../../src/paseo/modePreflight.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,13 @@
1
+ import type { OpenCodeAgentBindingSource } from "../agents/permissions.js";
1
2
  import { runProcess } from "../utils/process.js";
2
3
  import { detectPaseoCapabilities } from "./capabilities.js";
4
+ import { preflightPaseoProviderMode } from "./modePreflight.js";
3
5
  import { capturePaseoAgentTurnBaseline, preflightPaseoProviderModel, waitForPaseoAgentNative, type PaseoTurnBaseline } from "./native.js";
4
6
  import { createPaseoSdkAgent, dispatchPaseoSdkAgent, inspectPaseoSdkAgent, listPaseoSdkAgents, materializePaseoSdkAgent, probePaseoSdkAgent, runPaseoSdkAgent, waitPaseoSdkAgent, type PaseoSdkAgentOptions, type PaseoSdkAgentRecord } from "./sdk.js";
5
7
  import { recordPaseoTrace } from "./trace.js";
6
8
  export interface ManagedPaseoAgentOptions extends PaseoSdkAgentOptions {
7
9
  timeoutSeconds?: number;
10
+ modeSource?: OpenCodeAgentBindingSource;
8
11
  }
9
12
  export interface ManagedPaseoAgentResult {
10
13
  id?: string;
@@ -22,6 +25,7 @@ interface PaseoRuntimeDeps {
22
25
  trace?: typeof recordPaseoTrace;
23
26
  native?: {
24
27
  preflight: typeof preflightPaseoProviderModel;
28
+ preflightMode: typeof preflightPaseoProviderMode;
25
29
  wait: typeof waitForPaseoAgentNative;
26
30
  capture?: typeof capturePaseoAgentTurnBaseline;
27
31
  };