@tangle-network/agent-runtime 0.325.16 → 0.325.17-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{activation-BZz9_4us.d.ts → activation-BBW-m71u.d.ts} +2 -2
- package/dist/{activation-BC_sG5Vt.js → activation-D96mexEy.js} +3 -3
- package/dist/{activation-BC_sG5Vt.js.map → activation-D96mexEy.js.map} +1 -1
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +2 -2
- package/dist/{bundle-DqvlwhKP.js → bundle-BJJmfEsw.js} +2 -2
- package/dist/{bundle-DqvlwhKP.js.map → bundle-BJJmfEsw.js.map} +1 -1
- package/dist/candidate-execution/index.js +5 -5
- package/dist/{coordination-driver-BbX61_O3.js → coordination-driver-BDW2BD3B.js} +5 -12
- package/dist/{coordination-driver-BbX61_O3.js.map → coordination-driver-BDW2BD3B.js.map} +1 -1
- package/dist/{delegate-BzlYG0rC.js → delegate-DfLfoyqH.js} +2 -2
- package/dist/{delegate-BzlYG0rC.js.map → delegate-DfLfoyqH.js.map} +1 -1
- package/dist/durable.d.ts +1 -1
- package/dist/durable.js +5 -5
- package/dist/{graph-DLRi2Eu0.js → graph-Db0mn91l.js} +4 -4
- package/dist/{graph-DLRi2Eu0.js.map → graph-Db0mn91l.js.map} +1 -1
- package/dist/{improvement-cycle-BWy2LAfd.js → improvement-cycle-vIlvNX1K.js} +6 -6
- package/dist/{improvement-cycle-BWy2LAfd.js.map → improvement-cycle-vIlvNX1K.js.map} +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +9 -9
- package/dist/intelligence.d.ts +2 -2
- package/dist/intelligence.js +7 -7
- package/dist/kernel.d.ts +2 -2
- package/dist/kernel.js +9 -9
- package/dist/{loop-runner-bin-Cmo6nly8.js → loop-runner-bin-CGo7AZ5o.js} +3 -3
- package/dist/{loop-runner-bin-Cmo6nly8.js.map → loop-runner-bin-CGo7AZ5o.js.map} +1 -1
- package/dist/{loop-runner-bin-UpYsI0iM.d.ts → loop-runner-bin-cUBz2dI3.d.ts} +2 -2
- package/dist/loop-runner-bin.d.ts +1 -1
- package/dist/loop-runner-bin.js +1 -1
- package/dist/mcp/bin.js +3 -3
- package/dist/mcp/index.d.ts +2 -2
- package/dist/mcp/index.js +5 -5
- package/dist/{openai-tools-BoHnTyO2.d.ts → openai-tools-B_iSLxRt.d.ts} +2 -2
- package/dist/placement.d.ts +1 -1
- package/dist/{prepare-0kTqt9qn.js → prepare-DpavgJT8.js} +7 -8
- package/dist/{prepare-0kTqt9qn.js.map → prepare-DpavgJT8.js.map} +1 -1
- package/dist/{profile-DhZvQngF.js → profile-ZS7_KLwK.js} +55 -30
- package/dist/profile-ZS7_KLwK.js.map +1 -0
- package/dist/{profile-materialization-BnoEf1co.d.ts → profile-materialization-C5-t3HJ7.d.ts} +8 -3
- package/dist/profiles.d.ts +1 -1
- package/dist/{protected-model-port-CFQj32Lt.js → protected-model-port-BLyyfL3l.js} +4 -4
- package/dist/{protected-model-port-CFQj32Lt.js.map → protected-model-port-BLyyfL3l.js.map} +1 -1
- package/dist/{provision-supervisor-CyQfHdRp.js → provision-supervisor-BZx-pDF2.js} +4 -4
- package/dist/{provision-supervisor-CyQfHdRp.js.map → provision-supervisor-BZx-pDF2.js.map} +1 -1
- package/dist/{runtime-CcRx5_Vj.js → runtime-Agdr28lx.js} +111 -177
- package/dist/runtime-Agdr28lx.js.map +1 -0
- package/dist/{search-executor-D-fj_D5B.js → search-executor-DkxGFYh8.js} +3 -3
- package/dist/{search-executor-D-fj_D5B.js.map → search-executor-DkxGFYh8.js.map} +1 -1
- package/dist/{server-_lleZFlY.js → server-DRvmdqAe.js} +4 -4
- package/dist/{server-_lleZFlY.js.map → server-DRvmdqAe.js.map} +1 -1
- package/dist/{supervise-D1Zs0u8D.js → supervise-Hn5Bkl4x.js} +11 -50
- package/dist/supervise-Hn5Bkl4x.js.map +1 -0
- package/dist/{supervisor-BBhhuv4v.js → supervisor-Cwnf_e8V.js} +97 -84
- package/dist/supervisor-Cwnf_e8V.js.map +1 -0
- package/dist/testing.d.ts +1 -1
- package/dist/testing.js +14 -14
- package/dist/tui/index.d.ts +1 -1
- package/dist/tui/index.js +1 -1
- package/dist/{types-Ca5R4QXR.d.ts → types-D3un8JfP.d.ts} +4 -5
- package/dist/{sandbox-profile-compat-CVgQWb7T.js → workspace-streams-CcoARX4v.js} +12 -49
- package/dist/workspace-streams-CcoARX4v.js.map +1 -0
- package/package.json +9 -9
- package/dist/profile-DhZvQngF.js.map +0 -1
- package/dist/runtime-CcRx5_Vj.js.map +0 -1
- package/dist/sandbox-profile-compat-CVgQWb7T.js.map +0 -1
- package/dist/supervise-D1Zs0u8D.js.map +0 -1
- package/dist/supervisor-BBhhuv4v.js.map +0 -1
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
import { m as ValidationError } from "./errors-DodWX-cb.js";
|
|
2
|
-
import {
|
|
2
|
+
import { I as embeddedCandidateArtifact, L as immutableCandidateValue, M as canonicalCandidateBytes$1, N as canonicalCandidateDigest$1, P as canonicalCandidateDocument, R as omitTopLevelDigest, z as sha256Bytes$1 } from "./workspace-streams-CcoARX4v.js";
|
|
3
3
|
import { agentCandidateProfileActivationSchema, agentCandidateProfileSchema, agentProfileDiffSchema, agentProfileSchema, applyAgentProfileDiff } from "@tangle-network/agent-interface";
|
|
4
4
|
import { posix } from "node:path";
|
|
5
5
|
import { isMaterializerHarness, materializeCandidateProfile, resolvePiRuntimePaths } from "@tangle-network/agent-profile-materialize";
|
|
6
|
-
//#region src/candidate-execution/public-config.ts
|
|
7
|
-
/** Candidate execution has no private secret resolver; never lower a reference to argv or env. */
|
|
8
|
-
function requirePublicCandidateConfigValue(value, path) {
|
|
9
|
-
if (value.kind !== "public") throw new ValidationError(`candidate ${path} requires a public value; secret references are unsupported`);
|
|
10
|
-
return value.value;
|
|
11
|
-
}
|
|
12
|
-
//#endregion
|
|
13
6
|
//#region src/candidate-execution/system-prompt.ts
|
|
14
7
|
const SYSTEM_PROMPT_FILE = ".tangle/system-prompt.md";
|
|
15
8
|
const APPEND_SYSTEM_PROMPT_FILE = ".tangle/append-system-prompt.md";
|
|
@@ -77,20 +70,17 @@ const HARNESS_SYSTEM_PROMPTS = {
|
|
|
77
70
|
const MATERIALIZED_PROMPT_DELIVERIES = {
|
|
78
71
|
codex: {
|
|
79
72
|
executable: "codex",
|
|
80
|
-
delivered: (plan) => plan.files.some((file) => file.relPath === ".codex/system-prompt.md") && plan.flags.some((flag) =>
|
|
73
|
+
delivered: (plan) => plan.files.some((file) => file.relPath === ".codex/system-prompt.md") && plan.flags.some((flag) => flag.value === "model_instructions_file=.codex/system-prompt.md"),
|
|
81
74
|
conflictsWithArgs: argsSetCodexInstructionOverride
|
|
82
75
|
},
|
|
83
76
|
gemini: {
|
|
84
77
|
executable: "gemini",
|
|
85
|
-
delivered: (plan) =>
|
|
86
|
-
const env = plan.env.GEMINI_SYSTEM_MD;
|
|
87
|
-
return plan.files.some((file) => file.relPath === ".gemini/system.md") && env !== void 0 && requirePublicCandidateConfigValue(env, "profile.env.GEMINI_SYSTEM_MD") === "1";
|
|
88
|
-
},
|
|
78
|
+
delivered: (plan) => plan.files.some((file) => file.relPath === ".gemini/system.md") && plan.env.GEMINI_SYSTEM_MD?.value === "1",
|
|
89
79
|
conflictsWithArgs: argsSetSystemPromptFlag
|
|
90
80
|
}
|
|
91
81
|
};
|
|
92
82
|
/** Project both prompt intents onto their distinct native process controls. */
|
|
93
|
-
function projectCandidatePromptIntents(plan, launch, systemPromptFilePath, requestedSystemPrompt = plan.systemPrompt
|
|
83
|
+
function projectCandidatePromptIntents(plan, launch, systemPromptFilePath, requestedSystemPrompt = plan.systemPrompt?.value, requestedAppendSystemPrompt = plan.appendSystemPrompt?.value) {
|
|
94
84
|
const systemPrompt = plan.systemPrompt;
|
|
95
85
|
const appendSystemPrompt = plan.appendSystemPrompt;
|
|
96
86
|
const delivery = MATERIALIZED_PROMPT_DELIVERIES[plan.harness];
|
|
@@ -106,18 +96,18 @@ function projectCandidatePromptIntents(plan, launch, systemPromptFilePath, reque
|
|
|
106
96
|
const requestedReplacement = requestedSystemPrompt !== void 0;
|
|
107
97
|
if (requestedReplacement && systemPrompt === void 0) throw new Error(`profile materializer did not deliver the candidate system prompt for ${plan.harness}`);
|
|
108
98
|
if (systemPrompt !== void 0 && requestedSystemPrompt === void 0) throw new Error(`profile materializer added an unexpected candidate system prompt for ${plan.harness}`);
|
|
109
|
-
if (systemPrompt !== void 0 &&
|
|
110
|
-
if (appendSystemPrompt !== void 0 &&
|
|
99
|
+
if (systemPrompt !== void 0 && systemPrompt.value !== requestedSystemPrompt) throw new Error("profile materializer changed the candidate system prompt");
|
|
100
|
+
if (appendSystemPrompt !== void 0 && appendSystemPrompt.value !== requestedAppendSystemPrompt) throw new Error("profile materializer changed the candidate append system prompt");
|
|
111
101
|
const intent = requestedReplacement ? "replacement" : "addition";
|
|
112
102
|
assertProvableNativeLaunch(plan.harness, projection.executable, launch, intent);
|
|
113
|
-
const launchArgs = (launch.args ?? []).map((value
|
|
103
|
+
const launchArgs = (launch.args ?? []).map((value) => value.value);
|
|
114
104
|
if (requestedReplacement && projection.conflictsWithArgs(launchArgs)) throw new Error(`${plan.harness} launch arguments conflict with the candidate profile system prompt`);
|
|
115
105
|
if (requestedAppendSystemPrompt !== void 0 && projection.conflictsWithAppendArgs(launchArgs)) throw new Error(`${plan.harness} launch arguments conflict with the candidate profile append system prompt`);
|
|
116
106
|
let projected = plan;
|
|
117
|
-
if (systemPrompt !== void 0) projected = projection.project(projection.retainsProjectedSystemPrompt ? projected : omitPromptIntent(projected, "systemPrompt"),
|
|
107
|
+
if (systemPrompt !== void 0) projected = projection.project(projection.retainsProjectedSystemPrompt ? projected : omitPromptIntent(projected, "systemPrompt"), systemPrompt.value, systemPromptFilePath);
|
|
118
108
|
if (appendSystemPrompt !== void 0) {
|
|
119
109
|
if (!projection.projectAppend) throw new Error(`candidate append system prompt has no native launch projection for ${plan.harness}`);
|
|
120
|
-
projected = projection.projectAppend(omitPromptIntent(projected, "appendSystemPrompt"),
|
|
110
|
+
projected = projection.projectAppend(omitPromptIntent(projected, "appendSystemPrompt"), appendSystemPrompt.value, posix.join(posix.dirname(systemPromptFilePath), "append-system-prompt.md"));
|
|
121
111
|
}
|
|
122
112
|
return projected;
|
|
123
113
|
}
|
|
@@ -126,7 +116,7 @@ function assertProvableNativeLaunch(harness, expectedExecutable, launch, intent)
|
|
|
126
116
|
if (launch.executable !== expectedExecutable && !(posix.isAbsolute(launch.executable) && posix.basename(launch.executable) === expectedExecutable)) throw new Error(`${harness} system-prompt ${intent} requires the native ${expectedExecutable} executable`);
|
|
127
117
|
}
|
|
128
118
|
function assertNoShadowingArgs(harness, conflictsWithArgs, launch, intent) {
|
|
129
|
-
if (conflictsWithArgs((launch.args ?? []).map((value
|
|
119
|
+
if (conflictsWithArgs((launch.args ?? []).map((value) => value.value))) throw new Error(`${harness} launch arguments conflict with the candidate profile ${intent === "replacement" ? "system" : "append system"} prompt`);
|
|
130
120
|
}
|
|
131
121
|
function omitPromptIntent(plan, intent) {
|
|
132
122
|
const projected = { ...plan };
|
|
@@ -136,10 +126,10 @@ function omitPromptIntent(plan, intent) {
|
|
|
136
126
|
function appendFlags(plan, ...values) {
|
|
137
127
|
return {
|
|
138
128
|
...plan,
|
|
139
|
-
flags: [...plan.flags, ...values.map(publicValue)]
|
|
129
|
+
flags: [...plan.flags, ...values.map(publicValue$1)]
|
|
140
130
|
};
|
|
141
131
|
}
|
|
142
|
-
function publicValue(value) {
|
|
132
|
+
function publicValue$1(value) {
|
|
143
133
|
return {
|
|
144
134
|
kind: "public",
|
|
145
135
|
value
|
|
@@ -232,7 +222,7 @@ const CANDIDATE_PROFILE_DIRECT_FIELDS = [
|
|
|
232
222
|
];
|
|
233
223
|
/** Convert only behavior-preserving generic profile fields into the closed candidate contract. */
|
|
234
224
|
function freezeGenericAgentCandidateProfile(input) {
|
|
235
|
-
|
|
225
|
+
refuseFieldsSandboxCannotCarry(input);
|
|
236
226
|
return candidateProfileFromGenericProfile(parseExactAgentProfile(input, "profile"));
|
|
237
227
|
}
|
|
238
228
|
/**
|
|
@@ -270,7 +260,7 @@ function candidateProfileFromGenericProfile(profile) {
|
|
|
270
260
|
}
|
|
271
261
|
/** Prove the measured generic profile and sealed candidate profile describe the same behavior. */
|
|
272
262
|
function assertCandidateProfileBinding(measuredInput, bundled) {
|
|
273
|
-
|
|
263
|
+
refuseFieldsSandboxCannotCarry(measuredInput);
|
|
274
264
|
if (canonicalCandidateDigest$1(candidateProfileFromGenericProfile(parseExactAgentProfile(measuredInput, "measured agent profile"))) !== canonicalCandidateDigest$1(bundled)) throw new Error("measured agent profile does not match sealed candidate profile");
|
|
275
265
|
}
|
|
276
266
|
/** Parse a complete profile without silently discarding unsupported fields. */
|
|
@@ -308,7 +298,7 @@ function parseExactCandidateProfile(input) {
|
|
|
308
298
|
/** Reject profile fields whose behavioral effect is not yet proven by candidate executors. */
|
|
309
299
|
function assertCandidateProfileExecutionSupport(profile) {
|
|
310
300
|
assertResolvedKnowledgeResources(profile.resources);
|
|
311
|
-
|
|
301
|
+
refuseFieldsSandboxCannotCarry(profile);
|
|
312
302
|
const unsupported = [
|
|
313
303
|
"tools",
|
|
314
304
|
"permissions",
|
|
@@ -320,7 +310,7 @@ function assertCandidateProfileExecutionSupport(profile) {
|
|
|
320
310
|
/** Convert the candidate profile contract into the portable interface profile it represents. */
|
|
321
311
|
function agentCandidateProfileAsAgentProfile(candidate) {
|
|
322
312
|
assertResolvedKnowledgeResources(candidate.resources);
|
|
323
|
-
|
|
313
|
+
refuseFieldsSandboxCannotCarry(candidate);
|
|
324
314
|
const output = {};
|
|
325
315
|
copyDirectProfileFields(output, candidate);
|
|
326
316
|
if (candidate.model) output.model = { ...candidate.model };
|
|
@@ -333,7 +323,7 @@ function agentCandidateProfileAsAgentProfile(candidate) {
|
|
|
333
323
|
if (candidate.modes) output.modes = cloneRecord(candidate.modes);
|
|
334
324
|
if (candidate.hooks) output.hooks = Object.fromEntries(Object.entries(candidate.hooks).map(([event, hooks]) => [event, hooks.map(({ executable, args, env, ...hook }) => ({
|
|
335
325
|
...hook,
|
|
336
|
-
command: [executable, ...(args ?? []).map(
|
|
326
|
+
command: [executable, ...(args ?? []).map(publicValue)].map(shellQuote).join(" "),
|
|
337
327
|
...env ? { env: cloneRecord(env) } : {}
|
|
338
328
|
}))]));
|
|
339
329
|
if (candidate.resources) {
|
|
@@ -382,6 +372,38 @@ function freezeMcpServers(servers) {
|
|
|
382
372
|
function assertResolvedKnowledgeResources(resources) {
|
|
383
373
|
if (resources !== null && typeof resources === "object" && "knowledge" in resources && resources.knowledge !== void 0) throw new Error("candidate profile resources.knowledge must be owner-authorized and resolved before candidate conversion or execution");
|
|
384
374
|
}
|
|
375
|
+
/**
|
|
376
|
+
* Interface 5.3 admits profile `proxySecrets` and candidate secret-ref config values, but
|
|
377
|
+
* Sandbox still ships its own Interface 4.0.0, which carries neither. Refuse them by name
|
|
378
|
+
* rather than drop them; remove this once Sandbox adopts Interface 5.3.
|
|
379
|
+
*/
|
|
380
|
+
function refuseFieldsSandboxCannotCarry(profile) {
|
|
381
|
+
if (!isRecord(profile)) return;
|
|
382
|
+
if (profile.proxySecrets !== void 0) refuseFieldSandboxCannotCarry("proxySecrets");
|
|
383
|
+
if (isRecord(profile.mcp)) for (const [name, server] of Object.entries(profile.mcp)) {
|
|
384
|
+
if (!isRecord(server)) continue;
|
|
385
|
+
refuseNonPublicConfigValues(server.args, `mcp.${name}.args`);
|
|
386
|
+
refuseNonPublicConfigValues(server.env, `mcp.${name}.env`);
|
|
387
|
+
}
|
|
388
|
+
if (isRecord(profile.hooks)) for (const [event, hooks] of Object.entries(profile.hooks)) {
|
|
389
|
+
if (!Array.isArray(hooks)) continue;
|
|
390
|
+
for (const [index, hook] of hooks.entries()) {
|
|
391
|
+
if (!isRecord(hook)) continue;
|
|
392
|
+
refuseNonPublicConfigValues(hook.args, `hooks.${event}[${index}].args`);
|
|
393
|
+
refuseNonPublicConfigValues(hook.env, `hooks.${event}[${index}].env`);
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
function refuseNonPublicConfigValues(values, path) {
|
|
398
|
+
const entries = Array.isArray(values) ? values.map((value, index) => [`${path}[${index}]`, value]) : isRecord(values) ? Object.entries(values).map(([name, value]) => [`${path}.${name}`, value]) : [];
|
|
399
|
+
for (const [field, value] of entries) if (isRecord(value) && value.kind !== "public") refuseFieldSandboxCannotCarry(`${field} (${String(value.kind)})`);
|
|
400
|
+
}
|
|
401
|
+
function refuseFieldSandboxCannotCarry(field) {
|
|
402
|
+
throw new ValidationError(`candidate profile field ${field} is refused: Sandbox's Interface 4.0.0 cannot carry it yet, and Runtime does not drop it`);
|
|
403
|
+
}
|
|
404
|
+
function isRecord(value) {
|
|
405
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
406
|
+
}
|
|
385
407
|
function freezeResources(resources) {
|
|
386
408
|
if (resources.failOnError !== true) throw new Error("candidate profile resources require failOnError: true");
|
|
387
409
|
return {
|
|
@@ -429,7 +451,7 @@ function publicResource(resource) {
|
|
|
429
451
|
/** Freeze one profile config value into the candidate's PUBLIC-only config
|
|
430
452
|
* shape. A secret-ref is refused, never silently dropped or unwrapped. */
|
|
431
453
|
function candidatePublicValue(value, path) {
|
|
432
|
-
if (value.kind !== "public")
|
|
454
|
+
if (value.kind !== "public") refuseFieldSandboxCannotCarry(`${path} (${value.kind})`);
|
|
433
455
|
return {
|
|
434
456
|
kind: "public",
|
|
435
457
|
value: value.value
|
|
@@ -438,6 +460,9 @@ function candidatePublicValue(value, path) {
|
|
|
438
460
|
function mapCandidatePublicValues(values, pathPrefix) {
|
|
439
461
|
return Object.fromEntries(Object.entries(values).map(([name, value]) => [name, candidatePublicValue(value, `${pathPrefix}.${name}`)]));
|
|
440
462
|
}
|
|
463
|
+
function publicValue(value) {
|
|
464
|
+
return value.value;
|
|
465
|
+
}
|
|
441
466
|
function cloneRecord(values) {
|
|
442
467
|
return Object.fromEntries(Object.entries(values).map(([key, value]) => [key, { ...value }]));
|
|
443
468
|
}
|
|
@@ -451,6 +476,6 @@ function unsupportedProfileField(path) {
|
|
|
451
476
|
throw new Error(`generic AgentProfile field ${path} is not representable in a sealed candidate profile`);
|
|
452
477
|
}
|
|
453
478
|
//#endregion
|
|
454
|
-
export { assertCandidateProfileBinding as a, createAgentCandidateProfileActivation as c, omitUndefinedObjectFields as d, parseAgentCandidateProfileActivation as f,
|
|
479
|
+
export { assertCandidateProfileBinding as a, createAgentCandidateProfileActivation as c, omitUndefinedObjectFields as d, parseAgentCandidateProfileActivation as f, parseExactCandidateProfile as h, applyExactAgentProfileDiff as i, freezeGenericAgentCandidateProfile as l, parseExactAgentProfileDiff as m, PI_CANDIDATE_SESSION_DIR_ENV as n, assertCandidateProfileExecutionSupport as o, parseExactAgentProfile as p, agentCandidateProfileAsAgentProfile as r, candidateProfileAgentPaths as s, PI_CANDIDATE_AGENT_DIR_ENV as t, materializeAgentCandidateProfilePlan as u };
|
|
455
480
|
|
|
456
|
-
//# sourceMappingURL=profile-
|
|
481
|
+
//# sourceMappingURL=profile-ZS7_KLwK.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-ZS7_KLwK.js","names":["publicValue","canonicalCandidateBytes","sha256Bytes","canonicalCandidateDigest"],"sources":["../src/candidate-execution/system-prompt.ts","../src/candidate-execution/profile.ts"],"sourcesContent":["import { posix } from 'node:path'\n\nimport type {\n AgentCandidateConfigValue,\n AgentCandidateLaunch,\n} from '@tangle-network/agent-interface'\nimport type {\n AgentCandidateWorkspacePlan,\n HarnessId,\n} from '@tangle-network/agent-profile-materialize'\n\nconst SYSTEM_PROMPT_FILE = '.tangle/system-prompt.md'\nconst APPEND_SYSTEM_PROMPT_FILE = '.tangle/append-system-prompt.md'\n\n/**\n * One row describes the native process control for each prompt intent this adapter owns.\n * A row with no executor projection means the shared materializer already lowered the intent into\n * the signed workspace plan; this adapter still proves that the launch reaches the native binary.\n */\ninterface HarnessSystemPrompt {\n /** The native binary the launch must run for this projection to be provable. */\n readonly executable: string\n /** Apply a replacement prompt to the harness's own control. */\n readonly project: (\n plan: AgentCandidateWorkspacePlan,\n systemPrompt: string,\n systemPromptFilePath: string,\n ) => AgentCandidateWorkspacePlan\n /** Apply an addition without replacing the harness's own prompt. */\n readonly projectAppend?: (\n plan: AgentCandidateWorkspacePlan,\n appendSystemPrompt: string,\n appendSystemPromptFilePath: string,\n ) => AgentCandidateWorkspacePlan\n /** The materializer already projected replacement text into native plan files and flags. */\n readonly retainsProjectedSystemPrompt?: boolean\n /** Does caller argv already set a replacement control this projection would shadow? */\n readonly conflictsWithArgs: (values: readonly string[]) => boolean\n /** Does caller argv already set an additive control this projection would shadow? */\n readonly conflictsWithAppendArgs: (values: readonly string[]) => boolean\n}\n\nconst SYSTEM_PROMPT_FLAGS = ['--system-prompt', '--system-prompt-file'] as const\nconst APPEND_SYSTEM_PROMPT_FLAGS = [\n '--append-system-prompt',\n '--append-system-prompt-file',\n] as const\n\nfunction argsSetSystemPromptFlag(values: readonly string[]): boolean {\n return values.some((value) =>\n SYSTEM_PROMPT_FLAGS.some((flag) => value === flag || value.startsWith(`${flag}=`)),\n )\n}\n\nfunction argsSetAppendSystemPromptFlag(values: readonly string[]): boolean {\n return values.some((value) =>\n APPEND_SYSTEM_PROMPT_FLAGS.some((flag) => value === flag || value.startsWith(`${flag}=`)),\n )\n}\n\n/** Codex keys that can replace or contaminate the materializer's sealed instructions file. */\nconst CODEX_INSTRUCTION_KEYS = ['model_instructions_file', 'developer_instructions'] as const\n\nfunction argsSetCodexInstructionOverride(values: readonly string[]): boolean {\n for (let index = 0; index < values.length; index++) {\n const value = values[index]!\n const config =\n value === '-c' || value === '--config'\n ? values[index + 1]\n : value.startsWith('--config=')\n ? value.slice('--config='.length)\n : undefined\n if (\n config !== undefined &&\n CODEX_INSTRUCTION_KEYS.some((key) => config.trimStart().startsWith(`${key}=`))\n ) {\n return true\n }\n }\n return false\n}\n\nconst HARNESS_SYSTEM_PROMPTS = {\n 'claude-code': {\n executable: 'claude',\n project: (plan, systemPrompt, path) =>\n appendFlags(\n addPromptFile(plan, SYSTEM_PROMPT_FILE, systemPrompt),\n '--system-prompt-file',\n path,\n ),\n projectAppend: (plan, appendSystemPrompt, path) =>\n appendFlags(\n addPromptFile(plan, APPEND_SYSTEM_PROMPT_FILE, appendSystemPrompt),\n '--append-system-prompt-file',\n path,\n ),\n conflictsWithArgs: argsSetSystemPromptFlag,\n conflictsWithAppendArgs: argsSetAppendSystemPromptFlag,\n },\n /** OpenCode's bound primary agent is already selected by the materializer's --agent flag. */\n opencode: {\n executable: 'opencode',\n project: (plan) => plan,\n retainsProjectedSystemPrompt: true,\n conflictsWithArgs: (values) =>\n values.some((value) => value === '--agent' || value.startsWith('--agent=')),\n conflictsWithAppendArgs: argsSetAppendSystemPromptFlag,\n },\n pi: {\n executable: 'pi',\n project: (plan, systemPrompt, path) =>\n appendFlags(addPromptFile(plan, SYSTEM_PROMPT_FILE, systemPrompt), '--system-prompt', path),\n projectAppend: (plan, appendSystemPrompt, path) =>\n appendFlags(\n addPromptFile(plan, APPEND_SYSTEM_PROMPT_FILE, appendSystemPrompt),\n '--append-system-prompt',\n path,\n ),\n conflictsWithArgs: argsSetSystemPromptFlag,\n conflictsWithAppendArgs: argsSetAppendSystemPromptFlag,\n },\n prime: {\n executable: 'prime-agent',\n project: (plan, systemPrompt, path) =>\n appendFlags(addPromptFile(plan, SYSTEM_PROMPT_FILE, systemPrompt), '--system-prompt', path),\n projectAppend: (plan, appendSystemPrompt, path) =>\n appendFlags(\n addPromptFile(plan, APPEND_SYSTEM_PROMPT_FILE, appendSystemPrompt),\n '--append-system-prompt',\n path,\n ),\n conflictsWithArgs: argsSetSystemPromptFlag,\n conflictsWithAppendArgs: argsSetAppendSystemPromptFlag,\n },\n /** Gemini's file and env lowering is materializer-owned; this row supplies the launch proof. */\n gemini: {\n executable: 'gemini',\n project: (plan) => plan,\n conflictsWithArgs: argsSetSystemPromptFlag,\n conflictsWithAppendArgs: argsSetAppendSystemPromptFlag,\n },\n} as const satisfies Partial<Record<HarnessId, HarnessSystemPrompt>>\n\ninterface MaterializedPromptDelivery {\n readonly executable: string\n readonly delivered: (plan: AgentCandidateWorkspacePlan) => boolean\n readonly conflictsWithArgs: (values: readonly string[]) => boolean\n}\n\n/**\n * These controls are lowered by agent-profile-materialize into files plus launch inputs. The\n * candidate adapter does not own the spawn, so it must reject an arbitrary entrypoint even when\n * the plan has the right bytes: only the native binary can make those inputs effective.\n */\nconst MATERIALIZED_PROMPT_DELIVERIES = {\n codex: {\n executable: 'codex',\n delivered: (plan) =>\n plan.files.some((file) => file.relPath === '.codex/system-prompt.md') &&\n plan.flags.some((flag) => flag.value === 'model_instructions_file=.codex/system-prompt.md'),\n conflictsWithArgs: argsSetCodexInstructionOverride,\n },\n gemini: {\n executable: 'gemini',\n delivered: (plan) =>\n plan.files.some((file) => file.relPath === '.gemini/system.md') &&\n plan.env.GEMINI_SYSTEM_MD?.value === '1',\n conflictsWithArgs: argsSetSystemPromptFlag,\n },\n} as const satisfies Partial<Record<HarnessId, MaterializedPromptDelivery>>\n\n/** Project both prompt intents onto their distinct native process controls. */\nexport function projectCandidatePromptIntents(\n plan: AgentCandidateWorkspacePlan,\n launch: AgentCandidateLaunch,\n systemPromptFilePath: string,\n requestedSystemPrompt: string | undefined = plan.systemPrompt?.value,\n requestedAppendSystemPrompt: string | undefined = plan.appendSystemPrompt?.value,\n): AgentCandidateWorkspacePlan {\n const systemPrompt = plan.systemPrompt\n const appendSystemPrompt = plan.appendSystemPrompt\n const delivery = MATERIALIZED_PROMPT_DELIVERIES[\n plan.harness as keyof typeof MATERIALIZED_PROMPT_DELIVERIES\n ] as MaterializedPromptDelivery | undefined\n\n if (systemPrompt === undefined && delivery?.delivered(plan)) {\n assertProvableNativeLaunch(plan.harness, delivery.executable, launch, 'replacement')\n assertNoShadowingArgs(plan.harness, delivery.conflictsWithArgs, launch, 'replacement')\n if (requestedSystemPrompt === undefined) return plan\n return plan\n }\n\n if (requestedSystemPrompt === undefined && requestedAppendSystemPrompt === undefined) {\n return plan\n }\n\n const projection = HARNESS_SYSTEM_PROMPTS[plan.harness as keyof typeof HARNESS_SYSTEM_PROMPTS] as\n | HarnessSystemPrompt\n | undefined\n if (!projection) {\n throw new Error(`candidate system prompt has no native launch projection for ${plan.harness}`)\n }\n\n const requestedReplacement = requestedSystemPrompt !== undefined\n if (requestedReplacement && systemPrompt === undefined) {\n throw new Error(\n `profile materializer did not deliver the candidate system prompt for ${plan.harness}`,\n )\n }\n if (systemPrompt !== undefined && requestedSystemPrompt === undefined) {\n throw new Error(\n `profile materializer added an unexpected candidate system prompt for ${plan.harness}`,\n )\n }\n if (systemPrompt !== undefined && systemPrompt.value !== requestedSystemPrompt) {\n throw new Error('profile materializer changed the candidate system prompt')\n }\n if (\n appendSystemPrompt !== undefined &&\n appendSystemPrompt.value !== requestedAppendSystemPrompt\n ) {\n throw new Error('profile materializer changed the candidate append system prompt')\n }\n\n const intent = requestedReplacement ? 'replacement' : 'addition'\n assertProvableNativeLaunch(plan.harness, projection.executable, launch, intent)\n const launchArgs = (launch.args ?? []).map((value) => value.value)\n if (requestedReplacement && projection.conflictsWithArgs(launchArgs)) {\n throw new Error(\n `${plan.harness} launch arguments conflict with the candidate profile system prompt`,\n )\n }\n if (requestedAppendSystemPrompt !== undefined && projection.conflictsWithAppendArgs(launchArgs)) {\n throw new Error(\n `${plan.harness} launch arguments conflict with the candidate profile append system prompt`,\n )\n }\n\n let projected = plan\n if (systemPrompt !== undefined) {\n projected = projection.project(\n projection.retainsProjectedSystemPrompt\n ? projected\n : omitPromptIntent(projected, 'systemPrompt'),\n systemPrompt.value,\n systemPromptFilePath,\n )\n }\n if (appendSystemPrompt !== undefined) {\n if (!projection.projectAppend) {\n throw new Error(\n `candidate append system prompt has no native launch projection for ${plan.harness}`,\n )\n }\n projected = projection.projectAppend(\n omitPromptIntent(projected, 'appendSystemPrompt'),\n appendSystemPrompt.value,\n posix.join(posix.dirname(systemPromptFilePath), 'append-system-prompt.md'),\n )\n }\n // The source-profile digest binds authored values. Remove executor handoff fields only after\n // converting them into native controls; materializer-owned controls remain visible in the plan.\n return projected\n}\n\nfunction assertProvableNativeLaunch(\n harness: string,\n expectedExecutable: string,\n launch: AgentCandidateLaunch,\n intent: 'replacement' | 'addition',\n): asserts launch is AgentCandidateLaunch & { kind: 'container-command' } {\n if (launch.kind !== 'container-command') {\n throw new Error(`candidate-entrypoint launch cannot prove ${harness} system-prompt ${intent}`)\n }\n if (\n launch.executable !== expectedExecutable &&\n !(\n posix.isAbsolute(launch.executable) &&\n posix.basename(launch.executable) === expectedExecutable\n )\n ) {\n throw new Error(\n `${harness} system-prompt ${intent} requires the native ${expectedExecutable} executable`,\n )\n }\n}\n\nfunction assertNoShadowingArgs(\n harness: string,\n conflictsWithArgs: (values: readonly string[]) => boolean,\n launch: Extract<AgentCandidateLaunch, { kind: 'container-command' }>,\n intent: 'replacement' | 'addition',\n): void {\n if (conflictsWithArgs((launch.args ?? []).map((value) => value.value))) {\n throw new Error(\n `${harness} launch arguments conflict with the candidate profile ${intent === 'replacement' ? 'system' : 'append system'} prompt`,\n )\n }\n}\n\nfunction omitPromptIntent(\n plan: AgentCandidateWorkspacePlan,\n intent: 'systemPrompt' | 'appendSystemPrompt',\n): AgentCandidateWorkspacePlan {\n const projected = { ...plan }\n delete projected[intent]\n return projected\n}\n\nfunction appendFlags(\n plan: AgentCandidateWorkspacePlan,\n ...values: string[]\n): AgentCandidateWorkspacePlan {\n return {\n ...plan,\n flags: [...plan.flags, ...values.map(publicValue)],\n }\n}\n\nfunction publicValue(value: string): AgentCandidateConfigValue {\n return { kind: 'public', value }\n}\n\nfunction addPromptFile(\n plan: AgentCandidateWorkspacePlan,\n relPath: string,\n prompt: string,\n): AgentCandidateWorkspacePlan {\n // Candidate argv rejects control characters. Native prompt-file loading preserves multiline\n // bytes without weakening the shared process schema.\n if (plan.files.some((file) => file.relPath === relPath)) {\n throw new Error(`candidate profile conflicts with reserved ${relPath}`)\n }\n return {\n ...plan,\n files: [\n ...plan.files,\n {\n relPath,\n content: prompt,\n source: 'generated',\n },\n ],\n }\n}\n","import { posix } from 'node:path'\n\nimport type {\n AgentCandidateConfigValue,\n AgentCandidateLaunch,\n AgentCandidateProfile,\n AgentCandidateProfileActivation,\n AgentCandidateProfilePlanEvidence,\n AgentCandidateResourceRef,\n AgentProfile,\n AgentProfileConfigValue,\n AgentProfileDiff,\n AgentProfileMcpServer,\n AgentProfileResourceRef,\n HarnessType,\n Sha256Digest,\n} from '@tangle-network/agent-interface'\nimport {\n agentCandidateProfileActivationSchema,\n agentCandidateProfileSchema,\n agentProfileDiffSchema,\n agentProfileSchema,\n applyAgentProfileDiff,\n} from '@tangle-network/agent-interface'\nimport type {\n AgentCandidateWorkspacePlan,\n HarnessId,\n} from '@tangle-network/agent-profile-materialize'\nimport {\n isMaterializerHarness,\n materializeCandidateProfile,\n resolvePiRuntimePaths,\n} from '@tangle-network/agent-profile-materialize'\n\nimport { ValidationError } from '../errors'\nimport {\n canonicalCandidateBytes,\n canonicalCandidateDigest,\n canonicalCandidateDocument,\n embeddedCandidateArtifact,\n immutableCandidateValue,\n omitTopLevelDigest,\n sha256Bytes,\n} from './digest'\nimport { projectCandidatePromptIntents } from './system-prompt'\n\nexport function candidateMaterializerHarness(harness: HarnessType): HarnessId {\n if (!isMaterializerHarness(harness)) {\n throw new Error(\n `sealed candidate profile materialization is unsupported for harness ${harness}`,\n )\n }\n return harness\n}\n\n/** Runtime applies the materializer's launch flags to the candidate process. */\nexport const CANDIDATE_PROFILE_MATERIALIZER_BINDS = ['systemPrompt'] as const\nexport const PI_CANDIDATE_AGENT_DIR_ENV = 'PI_CODING_AGENT_DIR'\nexport const PI_CANDIDATE_SESSION_DIR_ENV = 'PI_CODING_AGENT_SESSION_DIR'\n\ninterface MaterializeAgentCandidateProfilePlanOptions {\n profile: AgentCandidateProfile\n harness: HarnessType\n launch: AgentCandidateLaunch\n workspace: 'task' | 'candidate'\n workspaces: {\n taskRoot: string\n candidateRoot?: string\n }\n resolvedResources?: ReadonlyMap<Sha256Digest, string>\n}\n\n/** Derive the exact native profile plan used by preparation and later evidence checks. */\nexport function materializeAgentCandidateProfilePlan(\n options: MaterializeAgentCandidateProfilePlanOptions,\n): AgentCandidateWorkspacePlan {\n const root =\n options.workspace === 'task' ? options.workspaces.taskRoot : options.workspaces.candidateRoot\n if (!root) throw new Error('candidate profile target is missing its execution workspace root')\n const plan = materializeCandidateProfile(\n options.profile,\n candidateMaterializerHarness(options.harness),\n {\n binds: CANDIDATE_PROFILE_MATERIALIZER_BINDS,\n resolvedResources: options.resolvedResources,\n },\n )\n return projectCandidatePromptIntents(\n plan,\n options.launch,\n posix.join(root, '.tangle/system-prompt.md'),\n options.profile.prompt?.systemPrompt,\n options.profile.prompt?.appendSystemPrompt,\n )\n}\n\n/** Resolve the private Pi roots needed by an agent-root profile plan. */\nexport function candidateProfileAgentPaths(\n plan: {\n harness: HarnessType\n files: ReadonlyArray<{ root?: 'agent' | 'workspace' }>\n },\n runtimeHome: string | undefined,\n): { agentDir: string; sessionDir: string } | undefined {\n if (!plan.files.some((file) => file.root === 'agent')) return undefined\n if (plan.harness !== 'pi') {\n throw new Error(`candidate profile agent-root files are unsupported for ${plan.harness}`)\n }\n if (runtimeHome === undefined) {\n throw new Error('candidate profile agent-root files require executionRoots.profileRoot')\n }\n return resolvePiRuntimePaths(runtimeHome)\n}\n\n/** Bind exact native profile text to the canonical plan captured during preparation. */\nexport function createAgentCandidateProfileActivation(\n plan: AgentCandidateWorkspacePlan,\n profilePlan: AgentCandidateProfilePlanEvidence,\n): AgentCandidateProfileActivation {\n const sourceByIdentity = new Map(\n plan.files.map((file) => [profileFileIdentity(file.root, file.relPath), file]),\n )\n if (sourceByIdentity.size !== plan.files.length) {\n throw new Error('candidate profile activation contains duplicate rooted native file paths')\n }\n const files = profilePlan.material.files.map((expected) => {\n const source = sourceByIdentity.get(profileFileIdentity(expected.root, expected.relPath))\n if (!source) {\n throw new Error(\n `candidate profile activation is missing ${profileFileLabel(expected.root, expected.relPath)}`,\n )\n }\n const mode = source.mode ?? 0o644\n if (!Number.isSafeInteger(mode) || mode < 0 || mode > 0o777) {\n throw new Error(\n `candidate profile activation has invalid mode for ${profileFileLabel(expected.root, expected.relPath)}`,\n )\n }\n return { path: expected.relPath, mode, content: source.content }\n })\n if (files.length !== plan.files.length) {\n throw new Error('candidate profile activation contains unplanned native files')\n }\n return parseAgentCandidateProfileActivation(\n canonicalCandidateDocument<AgentCandidateProfileActivation>({\n kind: 'agent-candidate-profile-activation',\n profilePlan,\n files,\n }).value,\n profilePlan.digest,\n )\n}\n\nfunction profileFileIdentity(root: 'agent' | 'workspace' | undefined, relPath: string): string {\n return `${root ?? 'workspace'}\\0${relPath}`\n}\n\nfunction profileFileLabel(root: 'agent' | 'workspace' | undefined, relPath: string): string {\n return root === 'agent' ? `agent:${relPath}` : relPath\n}\n\n/** Parse and check every native file hash plus both canonical document digests. */\nexport function parseAgentCandidateProfileActivation(\n input: unknown,\n expectedProfilePlanDigest?: AgentCandidateProfilePlanEvidence['digest'],\n): AgentCandidateProfileActivation {\n const activation = agentCandidateProfileActivationSchema.parse(input)\n const planBytes = canonicalCandidateBytes(activation.profilePlan.material)\n const profilePlanArtifact = activation.profilePlan.artifact\n if (\n sha256Bytes(planBytes) !== activation.profilePlan.digest ||\n profilePlanArtifact.sha256 !== activation.profilePlan.digest ||\n profilePlanArtifact.byteLength !== planBytes.byteLength ||\n ('content' in profilePlanArtifact &&\n !Buffer.from(profilePlanArtifact.content, 'base64').equals(Buffer.from(planBytes))) ||\n (expectedProfilePlanDigest !== undefined &&\n activation.profilePlan.digest !== expectedProfilePlanDigest)\n ) {\n throw new Error('candidate profile activation has an invalid canonical profile plan')\n }\n if (canonicalCandidateDigest(omitTopLevelDigest(activation)) !== activation.digest) {\n throw new Error('candidate profile activation digest does not match')\n }\n return immutableCandidateValue(activation)\n}\n\nconst CANDIDATE_PROFILE_DIRECT_FIELDS = [\n 'name',\n 'description',\n 'version',\n 'tags',\n 'prompt',\n 'harness',\n 'permissions',\n 'tools',\n 'confidential',\n] as const\n\n/** Convert only behavior-preserving generic profile fields into the closed candidate contract. */\nexport function freezeGenericAgentCandidateProfile(input: AgentProfile): AgentCandidateProfile {\n refuseFieldsSandboxCannotCarry(input)\n const profile = parseExactAgentProfile(input, 'profile')\n return candidateProfileFromGenericProfile(profile)\n}\n\n/**\n * Keep every generic-profile-to-candidate conversion in one place.\n * Callers use this both when sealing a new bundle and when proving a measured\n * profile is exactly the profile in an existing candidate.\n */\nfunction candidateProfileFromGenericProfile(profile: AgentProfile): AgentCandidateProfile {\n assertResolvedKnowledgeResources(profile.resources)\n if (profile.connections !== undefined) unsupportedProfileField('connections')\n if (profile.metadata !== undefined) unsupportedProfileField('metadata')\n if (profile.extensions !== undefined) unsupportedProfileField('extensions')\n if (profile.model?.metadata !== undefined) unsupportedProfileField('model.metadata')\n\n const candidate: Record<string, unknown> = {}\n copyDirectProfileFields(candidate, profile as Record<string, unknown>)\n if (profile.model) {\n const { metadata: _metadata, ...model } = profile.model\n candidate.model = model\n }\n if (profile.mcp) candidate.mcp = freezeMcpServers(profile.mcp)\n if (profile.subagents) {\n candidate.subagents = Object.fromEntries(\n Object.entries(profile.subagents).map(([name, subagent]) => {\n if (subagent.metadata !== undefined) unsupportedProfileField(`subagents.${name}.metadata`)\n const { metadata: _metadata, ...value } = subagent\n return [name, value]\n }),\n )\n }\n if (profile.resources) candidate.resources = freezeResources(profile.resources)\n if (profile.hooks && Object.values(profile.hooks).some((commands) => commands.length > 0)) {\n throw new Error(\n 'generic AgentProfile hooks cannot be safely tokenized; use a candidate-profile source with executable/args',\n )\n }\n if (profile.hooks) candidate.hooks = profile.hooks\n if (profile.modes) {\n candidate.modes = Object.fromEntries(\n Object.entries(profile.modes).map(([name, mode]) => {\n if (mode.metadata !== undefined) unsupportedProfileField(`modes.${name}.metadata`)\n const { metadata: _metadata, ...value } = mode\n return [name, value]\n }),\n )\n }\n const parsed = parseExactCandidateProfile(candidate)\n return parsed\n}\n\n/** Prove the measured generic profile and sealed candidate profile describe the same behavior. */\nexport function assertCandidateProfileBinding(\n measuredInput: unknown,\n bundled: AgentCandidateProfile,\n): void {\n refuseFieldsSandboxCannotCarry(measuredInput)\n const measured = parseExactAgentProfile(measuredInput, 'measured agent profile')\n const expected = candidateProfileFromGenericProfile(measured)\n if (canonicalCandidateDigest(expected) !== canonicalCandidateDigest(bundled)) {\n throw new Error('measured agent profile does not match sealed candidate profile')\n }\n}\n\n/** Parse a complete profile without silently discarding unsupported fields. */\nexport function parseExactAgentProfile(input: unknown, label: string): AgentProfile {\n let parsed: AgentProfile\n try {\n parsed = agentProfileSchema.parse(input) as AgentProfile\n } catch (cause) {\n throw new Error(`${label} contains unsupported or non-canonical fields`, { cause })\n }\n assertCanonicalParse(input, parsed, label)\n return parsed\n}\n\n/** Parse a profile diff without silently discarding unsupported fields. */\nexport function parseExactAgentProfileDiff(input: unknown, label: string): AgentProfileDiff {\n let parsed: AgentProfileDiff\n try {\n parsed = agentProfileDiffSchema.parse(input) as AgentProfileDiff\n } catch (cause) {\n throw new Error(`${label} contains unsupported or non-canonical fields`, { cause })\n }\n assertCanonicalParse(input, parsed, label)\n return parsed\n}\n\n/** Apply one exact diff and reject any value that cannot be preserved canonically. */\nexport function applyExactAgentProfileDiff(\n baseInput: unknown,\n diffInput: unknown,\n label: string,\n): AgentProfile {\n const base = parseExactAgentProfile(baseInput, `${label} base profile`)\n const diff = parseExactAgentProfileDiff(diffInput, `${label} diff`)\n const applied = omitUndefinedObjectFields(applyAgentProfileDiff(base, diff), label)\n return parseExactAgentProfile(applied, `${label} result`)\n}\n\n/** Parse a candidate profile without silently discarding unsupported or non-canonical fields. */\nexport function parseExactCandidateProfile(input: unknown): AgentCandidateProfile {\n const parsed = agentCandidateProfileSchema.parse(input)\n assertCanonicalParse(input, parsed, 'candidate profile')\n return parsed\n}\n\n/** Reject profile fields whose behavioral effect is not yet proven by candidate executors. */\nexport function assertCandidateProfileExecutionSupport(profile: AgentCandidateProfile): void {\n assertResolvedKnowledgeResources(profile.resources)\n refuseFieldsSandboxCannotCarry(profile)\n const fields = ['tools', 'permissions', 'modes', 'confidential'] as const\n const unsupported = fields.filter((field) => hasEntries(profile[field]))\n if (unsupported.length > 0) {\n throw new Error(\n `candidate execution cannot prove in-session effects for non-empty AgentProfile fields: ${unsupported.join(', ')}`,\n )\n }\n}\n\n/** Convert the candidate profile contract into the portable interface profile it represents. */\nexport function agentCandidateProfileAsAgentProfile(\n candidate: AgentCandidateProfile,\n): AgentProfile {\n assertResolvedKnowledgeResources(candidate.resources)\n refuseFieldsSandboxCannotCarry(candidate)\n const output: Record<string, unknown> = {}\n copyDirectProfileFields(output, candidate as unknown as Record<string, unknown>)\n if (candidate.model) output.model = { ...candidate.model }\n if (candidate.mcp) {\n output.mcp = Object.fromEntries(\n Object.entries(candidate.mcp).map(([name, server]) => [\n name,\n {\n ...server,\n // Candidate config values ({kind:'public', value}) are already valid\n // AgentProfileConfigValue entries under interface >=0.40 — clone them\n // rather than unwrapping to plain strings, which the 0.40 profile\n // schema rejects.\n ...(server.args ? { args: server.args.map((value) => ({ ...value })) } : {}),\n ...(server.env ? { env: cloneRecord(server.env) } : {}),\n },\n ]),\n )\n }\n if (candidate.subagents) output.subagents = cloneRecord(candidate.subagents)\n if (candidate.modes) output.modes = cloneRecord(candidate.modes)\n if (candidate.hooks) {\n output.hooks = Object.fromEntries(\n Object.entries(candidate.hooks).map(([event, hooks]) => [\n event,\n hooks.map(({ executable, args, env, ...hook }) => ({\n ...hook,\n command: [executable, ...(args ?? []).map(publicValue)].map(shellQuote).join(' '),\n // Hook env stays in config-value form: the 0.40 profile hook contract\n // types env as Record<string, AgentProfileConfigValue>.\n ...(env ? { env: cloneRecord(env) } : {}),\n })),\n ]),\n )\n }\n if (candidate.resources) {\n if (candidate.resources.failOnError !== true) {\n throw new Error('sealed candidate profile contains fields unsupported by generic profiles')\n }\n output.resources = {\n failOnError: true,\n ...(candidate.resources.files\n ? {\n files: candidate.resources.files.map((file) => ({\n ...file,\n resource: publicResource(file.resource),\n })),\n }\n : {}),\n ...(candidate.resources.tools\n ? { tools: candidate.resources.tools.map(publicResource) }\n : {}),\n ...(candidate.resources.skills\n ? { skills: candidate.resources.skills.map(publicResource) }\n : {}),\n ...(candidate.resources.agents\n ? { agents: candidate.resources.agents.map(publicResource) }\n : {}),\n ...(candidate.resources.commands\n ? { commands: candidate.resources.commands.map(publicResource) }\n : {}),\n ...(candidate.resources.instructions !== undefined\n ? {\n instructions:\n typeof candidate.resources.instructions === 'string'\n ? candidate.resources.instructions\n : publicResource(candidate.resources.instructions),\n }\n : {}),\n }\n }\n return output as AgentProfile\n}\n\n/** Recursively remove undefined object fields while refusing undefined array entries. */\nexport function omitUndefinedObjectFields(value: unknown, path: string): unknown {\n if (Array.isArray(value)) {\n return value.map((entry, index) => {\n if (entry === undefined) {\n throw new Error(`${path} produced an undefined array entry at ${index}`)\n }\n return omitUndefinedObjectFields(entry, `${path}[${index}]`)\n })\n }\n if (value === null || typeof value !== 'object') return value\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .filter(([, entry]) => entry !== undefined)\n .map(([key, entry]) => [key, omitUndefinedObjectFields(entry, `${path}.${key}`)]),\n )\n}\n\nfunction freezeMcpServers(servers: Record<string, AgentProfileMcpServer>): Record<string, unknown> {\n return Object.fromEntries(\n Object.entries(servers).map(([name, server]) => {\n if (server.transport !== undefined && server.transport !== 'stdio') {\n unsupportedProfileField(`mcp.${name}.transport=${server.transport}`)\n }\n if (server.url !== undefined) unsupportedProfileField(`mcp.${name}.url`)\n if (server.headers !== undefined) unsupportedProfileField(`mcp.${name}.headers`)\n if (server.metadata !== undefined) unsupportedProfileField(`mcp.${name}.metadata`)\n return [\n name,\n {\n ...(server.transport ? { transport: server.transport } : {}),\n ...(server.command ? { command: server.command } : {}),\n ...(server.args\n ? {\n args: server.args.map((value, index) =>\n candidatePublicValue(value, `mcp.${name}.args[${index}]`),\n ),\n }\n : {}),\n ...(server.env ? { env: mapCandidatePublicValues(server.env, `mcp.${name}.env`) } : {}),\n ...(server.cwd ? { cwd: server.cwd } : {}),\n ...(server.enabled === undefined ? {} : { enabled: server.enabled }),\n },\n ]\n }),\n )\n}\n\n/** A newer peer may admit knowledge pins that these candidate conversions cannot preserve. */\nfunction assertResolvedKnowledgeResources(resources: unknown): void {\n if (\n resources !== null &&\n typeof resources === 'object' &&\n 'knowledge' in resources &&\n resources.knowledge !== undefined\n ) {\n throw new Error(\n 'candidate profile resources.knowledge must be owner-authorized and resolved before candidate conversion or execution',\n )\n }\n}\n\n/**\n * Interface 5.3 admits profile `proxySecrets` and candidate secret-ref config values, but\n * Sandbox still ships its own Interface 4.0.0, which carries neither. Refuse them by name\n * rather than drop them; remove this once Sandbox adopts Interface 5.3.\n */\nfunction refuseFieldsSandboxCannotCarry(profile: unknown): void {\n if (!isRecord(profile)) return\n if (profile.proxySecrets !== undefined) refuseFieldSandboxCannotCarry('proxySecrets')\n if (isRecord(profile.mcp)) {\n for (const [name, server] of Object.entries(profile.mcp)) {\n if (!isRecord(server)) continue\n refuseNonPublicConfigValues(server.args, `mcp.${name}.args`)\n refuseNonPublicConfigValues(server.env, `mcp.${name}.env`)\n }\n }\n if (isRecord(profile.hooks)) {\n for (const [event, hooks] of Object.entries(profile.hooks)) {\n if (!Array.isArray(hooks)) continue\n for (const [index, hook] of hooks.entries()) {\n if (!isRecord(hook)) continue\n refuseNonPublicConfigValues(hook.args, `hooks.${event}[${index}].args`)\n refuseNonPublicConfigValues(hook.env, `hooks.${event}[${index}].env`)\n }\n }\n }\n}\n\nfunction refuseNonPublicConfigValues(values: unknown, path: string): void {\n const entries = Array.isArray(values)\n ? values.map((value, index) => [`${path}[${index}]`, value] as const)\n : isRecord(values)\n ? Object.entries(values).map(([name, value]) => [`${path}.${name}`, value] as const)\n : []\n for (const [field, value] of entries) {\n if (isRecord(value) && value.kind !== 'public') {\n refuseFieldSandboxCannotCarry(`${field} (${String(value.kind)})`)\n }\n }\n}\n\nfunction refuseFieldSandboxCannotCarry(field: string): never {\n throw new ValidationError(\n `candidate profile field ${field} is refused: Sandbox's Interface 4.0.0 cannot carry it yet, and Runtime does not drop it`,\n )\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === 'object' && !Array.isArray(value)\n}\n\nfunction freezeResources(resources: NonNullable<AgentProfile['resources']>): unknown {\n if (resources.failOnError !== true) {\n throw new Error('candidate profile resources require failOnError: true')\n }\n return {\n failOnError: true,\n ...(resources.files\n ? {\n files: resources.files.map((file) => ({\n ...file,\n resource: freezeResource(file.resource),\n })),\n }\n : {}),\n ...(resources.tools ? { tools: resources.tools.map(freezeResource) } : {}),\n ...(resources.skills ? { skills: resources.skills.map(freezeResource) } : {}),\n ...(resources.agents ? { agents: resources.agents.map(freezeResource) } : {}),\n ...(resources.commands ? { commands: resources.commands.map(freezeResource) } : {}),\n ...(resources.instructions === undefined\n ? {}\n : {\n instructions:\n typeof resources.instructions === 'string'\n ? resources.instructions\n : freezeResource(resources.instructions),\n }),\n }\n}\n\nfunction freezeResource(resource: AgentProfileResourceRef): AgentCandidateResourceRef {\n if (resource.kind === 'github') {\n throw new Error(\n 'generic GitHub profile resources do not carry byte identity; use a candidate-profile source with a pinned commit, digest, and byte length',\n )\n }\n const bytes = Buffer.from(resource.content, 'utf8')\n return {\n ...resource,\n sha256: embeddedCandidateArtifact(bytes).sha256,\n byteLength: bytes.byteLength,\n }\n}\n\nfunction copyDirectProfileFields(\n target: Record<string, unknown>,\n source: Record<string, unknown>,\n): void {\n for (const key of CANDIDATE_PROFILE_DIRECT_FIELDS) {\n if (source[key] !== undefined) target[key] = source[key]\n }\n}\n\nfunction assertCanonicalParse(input: unknown, parsed: unknown, label: string): void {\n if (!Buffer.from(canonicalCandidateBytes(input)).equals(canonicalCandidateBytes(parsed))) {\n throw new Error(`${label} contains unsupported or non-canonical fields`)\n }\n}\n\nfunction publicResource(resource: AgentCandidateResourceRef): unknown {\n if (resource.kind === 'inline') {\n return { kind: 'inline', name: resource.name, content: resource.content }\n }\n return {\n kind: 'github',\n repository: `${resource.repository.owner}/${resource.repository.repo}`,\n path: resource.path,\n ref: resource.commit,\n ...(resource.name ? { name: resource.name } : {}),\n }\n}\n\n/** Freeze one profile config value into the candidate's PUBLIC-only config\n * shape. A secret-ref is refused, never silently dropped or unwrapped. */\nfunction candidatePublicValue(\n value: AgentProfileConfigValue,\n path: string,\n): { kind: 'public'; value: string } {\n if (value.kind !== 'public') refuseFieldSandboxCannotCarry(`${path} (${value.kind})`)\n return { kind: 'public', value: value.value }\n}\n\nfunction mapCandidatePublicValues(\n values: Record<string, AgentProfileConfigValue>,\n pathPrefix: string,\n): Record<string, { kind: 'public'; value: string }> {\n return Object.fromEntries(\n Object.entries(values).map(([name, value]) => [\n name,\n candidatePublicValue(value, `${pathPrefix}.${name}`),\n ]),\n )\n}\n\nfunction publicValue(value: AgentCandidateConfigValue): string {\n return value.value\n}\n\nfunction cloneRecord<T>(values: Record<string, T>): Record<string, T> {\n return Object.fromEntries(\n Object.entries(values).map(([key, value]) => [key, { ...value }]),\n ) as Record<string, T>\n}\n\nfunction hasEntries(value: unknown): boolean {\n return value !== undefined && value !== null && typeof value === 'object'\n ? Object.keys(value).length > 0\n : false\n}\n\nfunction shellQuote(value: string): string {\n return /^[A-Za-z0-9_./:@%+=,-]+$/.test(value) ? value : `'${value.replaceAll(\"'\", `'\"'\"'`)}'`\n}\n\nfunction unsupportedProfileField(path: string): never {\n throw new Error(\n `generic AgentProfile field ${path} is not representable in a sealed candidate profile`,\n )\n}\n"],"mappings":"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"}
|
package/dist/{profile-materialization-BnoEf1co.d.ts → profile-materialization-C5-t3HJ7.d.ts}
RENAMED
|
@@ -59,8 +59,13 @@ declare const controlProfileMaterialization: ProfileMaterializationContract;
|
|
|
59
59
|
* applies the profile prompt, name, placement, and metadata, but not model selection. */
|
|
60
60
|
declare const promptControlProfileMaterialization: ProfileMaterializationContract;
|
|
61
61
|
/**
|
|
62
|
-
*
|
|
63
|
-
*
|
|
62
|
+
* Materialization contract for `createSandboxAct`.
|
|
63
|
+
*
|
|
64
|
+
* `createSandboxAct` hands the whole `AgentProfile` to the sandbox as `backend.profile`, so every
|
|
65
|
+
* profile leaf crosses the boundary. `buildBackendOptions` resolves the runner only from
|
|
66
|
+
* `profile.harness`; an explicit `sandboxOverrides.backend.type` may confirm that choice but cannot
|
|
67
|
+
* replace it. A candidate declaring a harness the sandbox cannot run throws rather than running
|
|
68
|
+
* elsewhere and reporting success.
|
|
64
69
|
*/
|
|
65
70
|
declare const sandboxActProfileMaterialization: ProfileMaterializationContract;
|
|
66
71
|
/** Materialization contract for a run path that only injects prompt text. */
|
|
@@ -93,4 +98,4 @@ declare function assertProfileMaterializes(profile: AgentProfile, harness: Harne
|
|
|
93
98
|
declare function renderProfileMaterializationIssues(issues: readonly ProfileMaterializationIssue[], context?: string): string;
|
|
94
99
|
//#endregion
|
|
95
100
|
export { worktreeCliProfileMaterialization as C, validateProfileMaterialization as S, promptModelProfileMaterialization as _, DefineProfileMaterializationContractOptions as a, renderProfileMaterializationIssues as b, ProfileMaterializationIssue as c, assertProfileMaterializes as d, controlProfileMaterialization as f, promptControlProfileMaterialization as g, profileMaterializationAxes$1 as h, CanonicalAgentProfileMaterializationAxis as i, ValidateProfileMaterializationOptions as l, fullProfileMaterialization as m, AgentProfileMaterializationAxis as n, KnownAgentProfileMaterializationAxis as o, defineProfileMaterializationContract as p, AssertProfileMaterializationOptions as r, ProfileMaterializationContract as s, AGENT_PROFILE_MATERIALIZATION_AXES as t, assertProfileMaterialization as u, promptOnlyProfileMaterialization as v, sandboxActProfileMaterialization as x, promptResourceProfileMaterialization as y };
|
|
96
|
-
//# sourceMappingURL=profile-materialization-
|
|
101
|
+
//# sourceMappingURL=profile-materialization-C5-t3HJ7.d.ts.map
|
package/dist/profiles.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $y as ResearchOutput, Gy as UI_LENSES, Jy as UiFindingSeverity, Ky as UiFinding, Ob as CoderTask, Qy as MultiHarnessResearcherFanoutOptions, Wy as UI_FINDING_SEVERITIES, Xy as KnowledgeItem, Yy as UiLens, Zy as KnowledgeUpdate, ab as researcherProfile, eb as ResearchSource, ib as multiHarnessResearcherFanout, kb as coderTaskToPrompt, nb as ResearcherProfileOptions, qy as UiFindingScreenshot, rb as createResearcherValidator, tb as ResearchTask } from "./types-
|
|
1
|
+
import { $y as ResearchOutput, Gy as UI_LENSES, Jy as UiFindingSeverity, Ky as UiFinding, Ob as CoderTask, Qy as MultiHarnessResearcherFanoutOptions, Wy as UI_FINDING_SEVERITIES, Xy as KnowledgeItem, Yy as UiLens, Zy as KnowledgeUpdate, ab as researcherProfile, eb as ResearchSource, ib as multiHarnessResearcherFanout, kb as coderTaskToPrompt, nb as ResearcherProfileOptions, qy as UiFindingScreenshot, rb as createResearcherValidator, tb as ResearchTask } from "./types-D3un8JfP.js";
|
|
2
2
|
import { SandboxEvent } from "@tangle-network/sandbox";
|
|
3
3
|
//#region src/profiles/ui-auditor/lens-prompts.d.ts
|
|
4
4
|
/** Cross-lens rules injected into every UI audit iteration: finding quality standards and scope limits. @experimental */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { b as assertAgentCandidateExecutionRoots, d as sealAgentCandidateModelSettlement, f as usdToNanos, i as candidateKnowledgeExecutionPaths } from "./prepare-
|
|
3
|
-
import { s as candidateProfileAgentPaths } from "./profile-
|
|
1
|
+
import { L as immutableCandidateValue, M as canonicalCandidateBytes, N as canonicalCandidateDigest, _ as assertExactObjectKeys, z as sha256Bytes } from "./workspace-streams-CcoARX4v.js";
|
|
2
|
+
import { b as assertAgentCandidateExecutionRoots, d as sealAgentCandidateModelSettlement, f as usdToNanos, i as candidateKnowledgeExecutionPaths } from "./prepare-DpavgJT8.js";
|
|
3
|
+
import { s as candidateProfileAgentPaths } from "./profile-ZS7_KLwK.js";
|
|
4
4
|
import { posix } from "node:path";
|
|
5
5
|
import { isDeepStrictEqual } from "node:util";
|
|
6
6
|
//#region src/candidate-execution/exact-process-executor.ts
|
|
@@ -763,4 +763,4 @@ function record(value, label) {
|
|
|
763
763
|
//#endregion
|
|
764
764
|
export { exactProcessProviderAsCandidateExecutor as n, createProtectedAgentCandidateModelPort as t };
|
|
765
765
|
|
|
766
|
-
//# sourceMappingURL=protected-model-port-
|
|
766
|
+
//# sourceMappingURL=protected-model-port-BLyyfL3l.js.map
|