@tangle-network/agent-runtime 0.325.0 → 0.325.3
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-Q3CJgiCu.d.ts → activation-BMsOQxMD.d.ts} +2 -2
- package/dist/{activation--9-iyGR8.js → activation-C1O2zCvn.js} +3 -3
- package/dist/{activation--9-iyGR8.js.map → activation-C1O2zCvn.js.map} +1 -1
- package/dist/agent.d.ts +2 -2
- package/dist/agent.js +2 -2
- package/dist/{bundle-BJJmfEsw.js → bundle-KZGUQqRM.js} +2 -2
- package/dist/{bundle-BJJmfEsw.js.map → bundle-KZGUQqRM.js.map} +1 -1
- package/dist/candidate-execution/index.js +5 -5
- package/dist/{coordination-driver-DkkUVe9g.js → coordination-driver-g2IGDTZ5.js} +4 -4
- package/dist/{coordination-driver-DkkUVe9g.js.map → coordination-driver-g2IGDTZ5.js.map} +1 -1
- package/dist/{delegate-BDsaIl2K.js → delegate-BQc-9bkv.js} +2 -2
- package/dist/{delegate-BDsaIl2K.js.map → delegate-BQc-9bkv.js.map} +1 -1
- package/dist/durable.d.ts +1 -1
- package/dist/durable.js +5 -5
- package/dist/{graph-Cuz6Ubzd.js → graph-N80-QQQD.js} +4 -4
- package/dist/{graph-Cuz6Ubzd.js.map → graph-N80-QQQD.js.map} +1 -1
- package/dist/{improvement-cycle-B5Z8cHKx.js → improvement-cycle-IncBZK-W.js} +6 -6
- package/dist/{improvement-cycle-B5Z8cHKx.js.map → improvement-cycle-IncBZK-W.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-C16VR9cI.js → loop-runner-bin-CcpZdDHc.js} +3 -3
- package/dist/{loop-runner-bin-C16VR9cI.js.map → loop-runner-bin-CcpZdDHc.js.map} +1 -1
- package/dist/{loop-runner-bin-Co7JKSwi.d.ts → loop-runner-bin-ECJA--ZN.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-CbgZrQJ_.d.ts → openai-tools-C_dJoluR.d.ts} +2 -2
- package/dist/placement.d.ts +1 -1
- package/dist/{prepare-DpavgJT8.js → prepare-BrgoOJmU.js} +8 -7
- package/dist/{prepare-DpavgJT8.js.map → prepare-BrgoOJmU.js.map} +1 -1
- package/dist/{profile-ZS7_KLwK.js → profile-ChWlsNCI.js} +30 -55
- package/dist/profile-ChWlsNCI.js.map +1 -0
- package/dist/{profile-materialization-C5-t3HJ7.d.ts → profile-materialization-BnoEf1co.d.ts} +3 -8
- package/dist/profiles.d.ts +1 -1
- package/dist/{protected-model-port-BLyyfL3l.js → protected-model-port-CJzC-FRs.js} +4 -4
- package/dist/{protected-model-port-BLyyfL3l.js.map → protected-model-port-CJzC-FRs.js.map} +1 -1
- package/dist/{provision-supervisor-4BoHpGFJ.js → provision-supervisor-BpydSDTn.js} +4 -4
- package/dist/{provision-supervisor-4BoHpGFJ.js.map → provision-supervisor-BpydSDTn.js.map} +1 -1
- package/dist/{runtime-B9X_U-aV.js → runtime-C-ic9jfY.js} +9 -9
- package/dist/{runtime-B9X_U-aV.js.map → runtime-C-ic9jfY.js.map} +1 -1
- package/dist/{workspace-streams-CcoARX4v.js → sandbox-profile-compat-Dq7ujONv.js} +40 -6
- package/dist/sandbox-profile-compat-Dq7ujONv.js.map +1 -0
- package/dist/{search-executor-C-b4NaFl.js → search-executor-CKIXXaiX.js} +3 -3
- package/dist/{search-executor-C-b4NaFl.js.map → search-executor-CKIXXaiX.js.map} +1 -1
- package/dist/{server-CcHaXgUT.js → server-B9_c16pR.js} +4 -4
- package/dist/{server-CcHaXgUT.js.map → server-B9_c16pR.js.map} +1 -1
- package/dist/{supervise-BlaB4CeL.js → supervise-CgEHAUEr.js} +22 -9
- package/dist/supervise-CgEHAUEr.js.map +1 -0
- package/dist/{supervisor-fq4JGynd.js → supervisor-CESg1FQx.js} +12 -11
- package/dist/supervisor-CESg1FQx.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-5r334mcg.d.ts → types-CTjiMrcF.d.ts} +2 -2
- package/package.json +9 -9
- package/dist/profile-ZS7_KLwK.js.map +0 -1
- package/dist/supervise-BlaB4CeL.js.map +0 -1
- package/dist/supervisor-fq4JGynd.js.map +0 -1
- package/dist/workspace-streams-CcoARX4v.js.map +0 -1
|
@@ -1,8 +1,15 @@
|
|
|
1
1
|
import { m as ValidationError } from "./errors-DodWX-cb.js";
|
|
2
|
-
import {
|
|
2
|
+
import { B as omitTopLevelDigest, F as canonicalCandidateDigest$1, I as canonicalCandidateDocument, P as canonicalCandidateBytes$1, R as embeddedCandidateArtifact, V as sha256Bytes$1, n as refuseSandboxProfileField, t as assertSandboxProfileCompatibility, z as immutableCandidateValue } from "./sandbox-profile-compat-Dq7ujONv.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
|
|
6
13
|
//#region src/candidate-execution/system-prompt.ts
|
|
7
14
|
const SYSTEM_PROMPT_FILE = ".tangle/system-prompt.md";
|
|
8
15
|
const APPEND_SYSTEM_PROMPT_FILE = ".tangle/append-system-prompt.md";
|
|
@@ -70,17 +77,20 @@ const HARNESS_SYSTEM_PROMPTS = {
|
|
|
70
77
|
const MATERIALIZED_PROMPT_DELIVERIES = {
|
|
71
78
|
codex: {
|
|
72
79
|
executable: "codex",
|
|
73
|
-
delivered: (plan) => plan.files.some((file) => file.relPath === ".codex/system-prompt.md") && plan.flags.some((flag) => flag.
|
|
80
|
+
delivered: (plan) => plan.files.some((file) => file.relPath === ".codex/system-prompt.md") && plan.flags.some((flag) => requirePublicCandidateConfigValue(flag, "profile.flags") === "model_instructions_file=.codex/system-prompt.md"),
|
|
74
81
|
conflictsWithArgs: argsSetCodexInstructionOverride
|
|
75
82
|
},
|
|
76
83
|
gemini: {
|
|
77
84
|
executable: "gemini",
|
|
78
|
-
delivered: (plan) =>
|
|
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
|
+
},
|
|
79
89
|
conflictsWithArgs: argsSetSystemPromptFlag
|
|
80
90
|
}
|
|
81
91
|
};
|
|
82
92
|
/** Project both prompt intents onto their distinct native process controls. */
|
|
83
|
-
function projectCandidatePromptIntents(plan, launch, systemPromptFilePath, requestedSystemPrompt = plan.systemPrompt
|
|
93
|
+
function projectCandidatePromptIntents(plan, launch, systemPromptFilePath, requestedSystemPrompt = plan.systemPrompt === void 0 ? void 0 : requirePublicCandidateConfigValue(plan.systemPrompt, "profile.systemPrompt"), requestedAppendSystemPrompt = plan.appendSystemPrompt === void 0 ? void 0 : requirePublicCandidateConfigValue(plan.appendSystemPrompt, "profile.appendSystemPrompt")) {
|
|
84
94
|
const systemPrompt = plan.systemPrompt;
|
|
85
95
|
const appendSystemPrompt = plan.appendSystemPrompt;
|
|
86
96
|
const delivery = MATERIALIZED_PROMPT_DELIVERIES[plan.harness];
|
|
@@ -96,18 +106,18 @@ function projectCandidatePromptIntents(plan, launch, systemPromptFilePath, reque
|
|
|
96
106
|
const requestedReplacement = requestedSystemPrompt !== void 0;
|
|
97
107
|
if (requestedReplacement && systemPrompt === void 0) throw new Error(`profile materializer did not deliver the candidate system prompt for ${plan.harness}`);
|
|
98
108
|
if (systemPrompt !== void 0 && requestedSystemPrompt === void 0) throw new Error(`profile materializer added an unexpected candidate system prompt for ${plan.harness}`);
|
|
99
|
-
if (systemPrompt !== void 0 && systemPrompt.
|
|
100
|
-
if (appendSystemPrompt !== void 0 && appendSystemPrompt.
|
|
109
|
+
if (systemPrompt !== void 0 && requirePublicCandidateConfigValue(systemPrompt, "profile.systemPrompt") !== requestedSystemPrompt) throw new Error("profile materializer changed the candidate system prompt");
|
|
110
|
+
if (appendSystemPrompt !== void 0 && requirePublicCandidateConfigValue(appendSystemPrompt, "profile.appendSystemPrompt") !== requestedAppendSystemPrompt) throw new Error("profile materializer changed the candidate append system prompt");
|
|
101
111
|
const intent = requestedReplacement ? "replacement" : "addition";
|
|
102
112
|
assertProvableNativeLaunch(plan.harness, projection.executable, launch, intent);
|
|
103
|
-
const launchArgs = (launch.args ?? []).map((value) => value.
|
|
113
|
+
const launchArgs = (launch.args ?? []).map((value, index) => requirePublicCandidateConfigValue(value, `launch.args[${index}]`));
|
|
104
114
|
if (requestedReplacement && projection.conflictsWithArgs(launchArgs)) throw new Error(`${plan.harness} launch arguments conflict with the candidate profile system prompt`);
|
|
105
115
|
if (requestedAppendSystemPrompt !== void 0 && projection.conflictsWithAppendArgs(launchArgs)) throw new Error(`${plan.harness} launch arguments conflict with the candidate profile append system prompt`);
|
|
106
116
|
let projected = plan;
|
|
107
|
-
if (systemPrompt !== void 0) projected = projection.project(projection.retainsProjectedSystemPrompt ? projected : omitPromptIntent(projected, "systemPrompt"), systemPrompt.
|
|
117
|
+
if (systemPrompt !== void 0) projected = projection.project(projection.retainsProjectedSystemPrompt ? projected : omitPromptIntent(projected, "systemPrompt"), requirePublicCandidateConfigValue(systemPrompt, "profile.systemPrompt"), systemPromptFilePath);
|
|
108
118
|
if (appendSystemPrompt !== void 0) {
|
|
109
119
|
if (!projection.projectAppend) throw new Error(`candidate append system prompt has no native launch projection for ${plan.harness}`);
|
|
110
|
-
projected = projection.projectAppend(omitPromptIntent(projected, "appendSystemPrompt"), appendSystemPrompt.
|
|
120
|
+
projected = projection.projectAppend(omitPromptIntent(projected, "appendSystemPrompt"), requirePublicCandidateConfigValue(appendSystemPrompt, "profile.appendSystemPrompt"), posix.join(posix.dirname(systemPromptFilePath), "append-system-prompt.md"));
|
|
111
121
|
}
|
|
112
122
|
return projected;
|
|
113
123
|
}
|
|
@@ -116,7 +126,7 @@ function assertProvableNativeLaunch(harness, expectedExecutable, launch, intent)
|
|
|
116
126
|
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`);
|
|
117
127
|
}
|
|
118
128
|
function assertNoShadowingArgs(harness, conflictsWithArgs, launch, intent) {
|
|
119
|
-
if (conflictsWithArgs((launch.args ?? []).map((value) => value.
|
|
129
|
+
if (conflictsWithArgs((launch.args ?? []).map((value, index) => requirePublicCandidateConfigValue(value, `launch.args[${index}]`)))) throw new Error(`${harness} launch arguments conflict with the candidate profile ${intent === "replacement" ? "system" : "append system"} prompt`);
|
|
120
130
|
}
|
|
121
131
|
function omitPromptIntent(plan, intent) {
|
|
122
132
|
const projected = { ...plan };
|
|
@@ -126,10 +136,10 @@ function omitPromptIntent(plan, intent) {
|
|
|
126
136
|
function appendFlags(plan, ...values) {
|
|
127
137
|
return {
|
|
128
138
|
...plan,
|
|
129
|
-
flags: [...plan.flags, ...values.map(publicValue
|
|
139
|
+
flags: [...plan.flags, ...values.map(publicValue)]
|
|
130
140
|
};
|
|
131
141
|
}
|
|
132
|
-
function publicValue
|
|
142
|
+
function publicValue(value) {
|
|
133
143
|
return {
|
|
134
144
|
kind: "public",
|
|
135
145
|
value
|
|
@@ -222,7 +232,7 @@ const CANDIDATE_PROFILE_DIRECT_FIELDS = [
|
|
|
222
232
|
];
|
|
223
233
|
/** Convert only behavior-preserving generic profile fields into the closed candidate contract. */
|
|
224
234
|
function freezeGenericAgentCandidateProfile(input) {
|
|
225
|
-
|
|
235
|
+
assertSandboxProfileCompatibility(input);
|
|
226
236
|
return candidateProfileFromGenericProfile(parseExactAgentProfile(input, "profile"));
|
|
227
237
|
}
|
|
228
238
|
/**
|
|
@@ -260,7 +270,7 @@ function candidateProfileFromGenericProfile(profile) {
|
|
|
260
270
|
}
|
|
261
271
|
/** Prove the measured generic profile and sealed candidate profile describe the same behavior. */
|
|
262
272
|
function assertCandidateProfileBinding(measuredInput, bundled) {
|
|
263
|
-
|
|
273
|
+
assertSandboxProfileCompatibility(measuredInput);
|
|
264
274
|
if (canonicalCandidateDigest$1(candidateProfileFromGenericProfile(parseExactAgentProfile(measuredInput, "measured agent profile"))) !== canonicalCandidateDigest$1(bundled)) throw new Error("measured agent profile does not match sealed candidate profile");
|
|
265
275
|
}
|
|
266
276
|
/** Parse a complete profile without silently discarding unsupported fields. */
|
|
@@ -298,7 +308,7 @@ function parseExactCandidateProfile(input) {
|
|
|
298
308
|
/** Reject profile fields whose behavioral effect is not yet proven by candidate executors. */
|
|
299
309
|
function assertCandidateProfileExecutionSupport(profile) {
|
|
300
310
|
assertResolvedKnowledgeResources(profile.resources);
|
|
301
|
-
|
|
311
|
+
assertSandboxProfileCompatibility(profile);
|
|
302
312
|
const unsupported = [
|
|
303
313
|
"tools",
|
|
304
314
|
"permissions",
|
|
@@ -310,7 +320,7 @@ function assertCandidateProfileExecutionSupport(profile) {
|
|
|
310
320
|
/** Convert the candidate profile contract into the portable interface profile it represents. */
|
|
311
321
|
function agentCandidateProfileAsAgentProfile(candidate) {
|
|
312
322
|
assertResolvedKnowledgeResources(candidate.resources);
|
|
313
|
-
|
|
323
|
+
assertSandboxProfileCompatibility(candidate);
|
|
314
324
|
const output = {};
|
|
315
325
|
copyDirectProfileFields(output, candidate);
|
|
316
326
|
if (candidate.model) output.model = { ...candidate.model };
|
|
@@ -323,7 +333,7 @@ function agentCandidateProfileAsAgentProfile(candidate) {
|
|
|
323
333
|
if (candidate.modes) output.modes = cloneRecord(candidate.modes);
|
|
324
334
|
if (candidate.hooks) output.hooks = Object.fromEntries(Object.entries(candidate.hooks).map(([event, hooks]) => [event, hooks.map(({ executable, args, env, ...hook }) => ({
|
|
325
335
|
...hook,
|
|
326
|
-
command: [executable, ...(args ?? []).map(
|
|
336
|
+
command: [executable, ...(args ?? []).map((value, index) => requirePublicCandidateConfigValue(value, `hooks.${event}.args[${index}]`))].map(shellQuote).join(" "),
|
|
327
337
|
...env ? { env: cloneRecord(env) } : {}
|
|
328
338
|
}))]));
|
|
329
339
|
if (candidate.resources) {
|
|
@@ -372,38 +382,6 @@ function freezeMcpServers(servers) {
|
|
|
372
382
|
function assertResolvedKnowledgeResources(resources) {
|
|
373
383
|
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");
|
|
374
384
|
}
|
|
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
|
-
}
|
|
407
385
|
function freezeResources(resources) {
|
|
408
386
|
if (resources.failOnError !== true) throw new Error("candidate profile resources require failOnError: true");
|
|
409
387
|
return {
|
|
@@ -451,7 +429,7 @@ function publicResource(resource) {
|
|
|
451
429
|
/** Freeze one profile config value into the candidate's PUBLIC-only config
|
|
452
430
|
* shape. A secret-ref is refused, never silently dropped or unwrapped. */
|
|
453
431
|
function candidatePublicValue(value, path) {
|
|
454
|
-
if (value.kind !== "public")
|
|
432
|
+
if (value.kind !== "public") refuseSandboxProfileField(`${path} (${value.kind})`);
|
|
455
433
|
return {
|
|
456
434
|
kind: "public",
|
|
457
435
|
value: value.value
|
|
@@ -460,9 +438,6 @@ function candidatePublicValue(value, path) {
|
|
|
460
438
|
function mapCandidatePublicValues(values, pathPrefix) {
|
|
461
439
|
return Object.fromEntries(Object.entries(values).map(([name, value]) => [name, candidatePublicValue(value, `${pathPrefix}.${name}`)]));
|
|
462
440
|
}
|
|
463
|
-
function publicValue(value) {
|
|
464
|
-
return value.value;
|
|
465
|
-
}
|
|
466
441
|
function cloneRecord(values) {
|
|
467
442
|
return Object.fromEntries(Object.entries(values).map(([key, value]) => [key, { ...value }]));
|
|
468
443
|
}
|
|
@@ -476,6 +451,6 @@ function unsupportedProfileField(path) {
|
|
|
476
451
|
throw new Error(`generic AgentProfile field ${path} is not representable in a sealed candidate profile`);
|
|
477
452
|
}
|
|
478
453
|
//#endregion
|
|
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 };
|
|
454
|
+
export { assertCandidateProfileBinding as a, createAgentCandidateProfileActivation as c, omitUndefinedObjectFields as d, parseAgentCandidateProfileActivation as f, requirePublicCandidateConfigValue as g, 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 };
|
|
480
455
|
|
|
481
|
-
//# sourceMappingURL=profile-
|
|
456
|
+
//# sourceMappingURL=profile-ChWlsNCI.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-ChWlsNCI.js","names":["canonicalCandidateBytes","sha256Bytes","canonicalCandidateDigest"],"sources":["../src/candidate-execution/public-config.ts","../src/candidate-execution/system-prompt.ts","../src/candidate-execution/profile.ts"],"sourcesContent":["import type { AgentCandidateConfigValue } from '@tangle-network/agent-interface'\nimport { ValidationError } from '../errors'\n\n/** Candidate execution has no private secret resolver; never lower a reference to argv or env. */\nexport function requirePublicCandidateConfigValue(\n value: AgentCandidateConfigValue,\n path: string,\n): string {\n if (value.kind !== 'public') {\n throw new ValidationError(\n `candidate ${path} requires a public value; secret references are unsupported`,\n )\n }\n return value.value\n}\n","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'\nimport { requirePublicCandidateConfigValue } from './public-config'\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(\n (flag) =>\n requirePublicCandidateConfigValue(flag, 'profile.flags') ===\n 'model_instructions_file=.codex/system-prompt.md',\n ),\n conflictsWithArgs: argsSetCodexInstructionOverride,\n },\n gemini: {\n executable: 'gemini',\n delivered: (plan) => {\n const env = plan.env.GEMINI_SYSTEM_MD\n return (\n plan.files.some((file) => file.relPath === '.gemini/system.md') &&\n env !== undefined &&\n requirePublicCandidateConfigValue(env, 'profile.env.GEMINI_SYSTEM_MD') === '1'\n )\n },\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 === undefined\n ? undefined\n : requirePublicCandidateConfigValue(plan.systemPrompt, 'profile.systemPrompt'),\n requestedAppendSystemPrompt: string | undefined = plan.appendSystemPrompt === undefined\n ? undefined\n : requirePublicCandidateConfigValue(plan.appendSystemPrompt, 'profile.appendSystemPrompt'),\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 (\n systemPrompt !== undefined &&\n requirePublicCandidateConfigValue(systemPrompt, 'profile.systemPrompt') !==\n requestedSystemPrompt\n ) {\n throw new Error('profile materializer changed the candidate system prompt')\n }\n if (\n appendSystemPrompt !== undefined &&\n requirePublicCandidateConfigValue(appendSystemPrompt, 'profile.appendSystemPrompt') !==\n 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, index) =>\n requirePublicCandidateConfigValue(value, `launch.args[${index}]`),\n )\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 requirePublicCandidateConfigValue(systemPrompt, 'profile.systemPrompt'),\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 requirePublicCandidateConfigValue(appendSystemPrompt, 'profile.appendSystemPrompt'),\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 (\n conflictsWithArgs(\n (launch.args ?? []).map((value, index) =>\n requirePublicCandidateConfigValue(value, `launch.args[${index}]`),\n ),\n )\n ) {\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 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 {\n assertSandboxProfileCompatibility,\n refuseSandboxProfileField,\n} from '../runtime/sandbox-profile-compat'\nimport {\n canonicalCandidateBytes,\n canonicalCandidateDigest,\n canonicalCandidateDocument,\n embeddedCandidateArtifact,\n immutableCandidateValue,\n omitTopLevelDigest,\n sha256Bytes,\n} from './digest'\nimport { requirePublicCandidateConfigValue } from './public-config'\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 assertSandboxProfileCompatibility(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 assertSandboxProfileCompatibility(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 assertSandboxProfileCompatibility(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 assertSandboxProfileCompatibility(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: [\n executable,\n ...(args ?? []).map((value, index) =>\n requirePublicCandidateConfigValue(value, `hooks.${event}.args[${index}]`),\n ),\n ]\n .map(shellQuote)\n .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\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') refuseSandboxProfileField(`${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 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-C5-t3HJ7.d.ts → profile-materialization-BnoEf1co.d.ts}
RENAMED
|
@@ -59,13 +59,8 @@ 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
|
-
*
|
|
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.
|
|
62
|
+
* `createSandboxAct` sends the profile as `backend.profile`; its contract must match Sandbox.
|
|
63
|
+
* `buildBackendOptions` also refuses unsupported secret fields before creating a box.
|
|
69
64
|
*/
|
|
70
65
|
declare const sandboxActProfileMaterialization: ProfileMaterializationContract;
|
|
71
66
|
/** Materialization contract for a run path that only injects prompt text. */
|
|
@@ -98,4 +93,4 @@ declare function assertProfileMaterializes(profile: AgentProfile, harness: Harne
|
|
|
98
93
|
declare function renderProfileMaterializationIssues(issues: readonly ProfileMaterializationIssue[], context?: string): string;
|
|
99
94
|
//#endregion
|
|
100
95
|
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 };
|
|
101
|
-
//# sourceMappingURL=profile-materialization-
|
|
96
|
+
//# sourceMappingURL=profile-materialization-BnoEf1co.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-CTjiMrcF.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 { F as canonicalCandidateDigest, P as canonicalCandidateBytes, V as sha256Bytes, y as assertExactObjectKeys, z as immutableCandidateValue } from "./sandbox-profile-compat-Dq7ujONv.js";
|
|
2
|
+
import { b as assertAgentCandidateExecutionRoots, d as sealAgentCandidateModelSettlement, f as usdToNanos, i as candidateKnowledgeExecutionPaths } from "./prepare-BrgoOJmU.js";
|
|
3
|
+
import { s as candidateProfileAgentPaths } from "./profile-ChWlsNCI.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-CJzC-FRs.js.map
|