agentera 3.0.0-dev.28 → 3.0.0-dev.29
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/README.md +7 -5
- package/bundle/CHANGELOG.md +7 -2
- package/bundle/README.md +7 -6
- package/bundle/UPGRADE.md +27 -16
- package/bundle/references/adapters/package-surface-characterization.md +1 -2
- package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -3
- package/bundle/references/adapters/runtime-retired-resources.yaml +78 -14
- package/bundle/references/artifacts/state-storage-authority.yaml +10 -1
- package/bundle/references/cli/audience-namespace-cli-migration.yaml +1 -1
- package/bundle/references/cli/bundle-skill-vocabulary.yaml +1 -1
- package/bundle/references/cli/capability-instruction-contract.yaml +0 -3
- package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -4
- package/bundle/references/cli/vocabulary.md +1 -2
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +10 -6
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +3 -2
- package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +6 -5
- package/bundle/skills/agentera/schemas/artifacts/health.yaml +25 -7
- package/bundle/skills/agentera/schemas/artifacts/plan.yaml +0 -1
- package/dist/capabilities/orchestrate/instructions.js +22 -2
- package/dist/capabilities/orchestrate/instructions.js.map +1 -1
- package/dist/cli/capabilityContext/startup.js +2 -0
- package/dist/cli/capabilityContext/startup.js.map +1 -1
- package/dist/cli/commands/schema.js +21 -23
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/upgrade.js +1 -1
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/commands/validate.js +2 -119
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/dispatch/check.js +2 -7
- package/dist/cli/dispatch/check.js.map +1 -1
- package/dist/cli/dispatch/lifecycle.js +7 -5
- package/dist/cli/dispatch/lifecycle.js.map +1 -1
- package/dist/cli/help.js +4 -4
- package/dist/cli/help.js.map +1 -1
- package/dist/runtime/lifecycleAuthority.js +10 -11
- package/dist/runtime/lifecycleAuthority.js.map +1 -1
- package/dist/runtime/nativeResourceCleanup.js +317 -0
- package/dist/runtime/nativeResourceCleanup.js.map +1 -0
- package/dist/setup/codex/cli.js +9 -40
- package/dist/setup/codex/cli.js.map +1 -1
- package/dist/setup/codex/configToml.js +2 -83
- package/dist/setup/codex/configToml.js.map +1 -1
- package/dist/setup/codex/constants.js +0 -15
- package/dist/setup/codex/constants.js.map +1 -1
- package/dist/setup/codex/state.js +2 -20
- package/dist/setup/codex/state.js.map +1 -1
- package/dist/setup/codex.js +2 -4
- package/dist/setup/codex.js.map +1 -1
- package/dist/state/healthEntities.js +43 -4
- package/dist/state/healthEntities.js.map +1 -1
- package/dist/state/healthEntityValidation.js +14 -1
- package/dist/state/healthEntityValidation.js.map +1 -1
- package/dist/state/write/explain.js +2 -1
- package/dist/state/write/explain.js.map +1 -1
- package/dist/upgrade/lifecycleUpgrade.js +14 -14
- package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
- package/dist/upgrade/upgradeOrchestrator.js +12 -12
- package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
- package/package.json +2 -2
- package/bundle/skills/agentera/agents/audit.toml +0 -6
- package/bundle/skills/agentera/agents/build.toml +0 -6
- package/bundle/skills/agentera/agents/design.toml +0 -6
- package/bundle/skills/agentera/agents/discuss.toml +0 -6
- package/bundle/skills/agentera/agents/document.toml +0 -6
- package/bundle/skills/agentera/agents/optimize.toml +0 -6
- package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
- package/bundle/skills/agentera/agents/plan.toml +0 -6
- package/bundle/skills/agentera/agents/profile.toml +0 -6
- package/bundle/skills/agentera/agents/research.toml +0 -6
- package/bundle/skills/agentera/agents/status.toml +0 -6
- package/bundle/skills/agentera/agents/vision.toml +0 -6
- package/dist/runtime/retiredRuntimeCleanup.js +0 -238
- package/dist/runtime/retiredRuntimeCleanup.js.map +0 -1
- package/dist/setup/codex/agents.js +0 -96
- package/dist/setup/codex/agents.js.map +0 -1
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { loadYamlMapping } from "../core/yaml.js";
|
|
4
|
+
import { resolveSourceRoot } from "../core/sourceRoot.js";
|
|
5
|
+
import { LIFECYCLE_OPERATION_CONTRACT_RELATIVE_PATH, LIFECYCLE_MANUAL_REVIEW_GUIDANCE, applyLifecycleOperations, createLifecycleOwnershipManifest, emptyLifecycleOwnershipLedger, planLifecycleOperations, validateLifecycleOwnershipLedger, } from "./lifecycleOperations.js";
|
|
6
|
+
import { LIFECYCLE_AUTHORITY_RELATIVE_PATH, NATIVE_RESOURCE_CLEANUP_CONTRACT_RELATIVE_PATH, } from "./lifecycleAuthority.js";
|
|
7
|
+
function isMapping(value) {
|
|
8
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
9
|
+
}
|
|
10
|
+
function stringList(value) {
|
|
11
|
+
return Array.isArray(value) && value.every((item) => typeof item === "string") ? value : [];
|
|
12
|
+
}
|
|
13
|
+
function requiredString(value, key) {
|
|
14
|
+
return typeof value[key] === "string" && value[key].length > 0;
|
|
15
|
+
}
|
|
16
|
+
export function validateNativeResourceCleanupContractData(value) {
|
|
17
|
+
if (!isMapping(value))
|
|
18
|
+
return ["native resource cleanup contract must be a YAML object"];
|
|
19
|
+
const errors = [];
|
|
20
|
+
if (value.schema_version !== "agentera.nativeResourceCleanup.v1") {
|
|
21
|
+
errors.push("schema_version must be agentera.nativeResourceCleanup.v1");
|
|
22
|
+
}
|
|
23
|
+
if (value.status !== "resource_retirement_contract") {
|
|
24
|
+
errors.push("status must be resource_retirement_contract");
|
|
25
|
+
}
|
|
26
|
+
if (value.decision !== "nksvqmnevm")
|
|
27
|
+
errors.push("decision must cite firm decision nksvqmnevm");
|
|
28
|
+
if (value.authority !== LIFECYCLE_AUTHORITY_RELATIVE_PATH) {
|
|
29
|
+
errors.push(`authority must point to ${LIFECYCLE_AUTHORITY_RELATIVE_PATH}`);
|
|
30
|
+
}
|
|
31
|
+
if (value.operation_contract !== LIFECYCLE_OPERATION_CONTRACT_RELATIVE_PATH) {
|
|
32
|
+
errors.push(`operation_contract must point to ${LIFECYCLE_OPERATION_CONTRACT_RELATIVE_PATH}`);
|
|
33
|
+
}
|
|
34
|
+
const policy = isMapping(value.policy) ? value.policy : {};
|
|
35
|
+
if (policy.host_inventory_exposure !== "evidence_only"
|
|
36
|
+
|| policy.selection !== "native_agentera_resource_only"
|
|
37
|
+
|| policy.preview !== "strictly_read_only"
|
|
38
|
+
|| policy.apply_requires !== "explicit_approval"
|
|
39
|
+
|| policy.ownership !== "matching_whole_resource_ledger_identity_and_fingerprint"
|
|
40
|
+
|| policy.shared_configuration !== "action_required_without_key_level_ownership"
|
|
41
|
+
|| policy.unsupported_platform_result !== "action_required") {
|
|
42
|
+
errors.push("policy must expose resource-only selection, pure preview, explicit approval, and fail-closed ownership");
|
|
43
|
+
}
|
|
44
|
+
const forbidden = stringList(policy.forbidden_ownership_evidence);
|
|
45
|
+
for (const evidence of ["value_equality", "managed_marker", "resource_name", "file_equality"]) {
|
|
46
|
+
if (!forbidden.includes(evidence))
|
|
47
|
+
errors.push(`policy must reject ${evidence} as ownership evidence`);
|
|
48
|
+
}
|
|
49
|
+
const hosts = Array.isArray(value.hosts) ? value.hosts : [];
|
|
50
|
+
const expectedHosts = {
|
|
51
|
+
codex: "supported",
|
|
52
|
+
cursor: "supported",
|
|
53
|
+
opencode: "supported",
|
|
54
|
+
copilot: "supported_disabled",
|
|
55
|
+
claude: "retired_historical",
|
|
56
|
+
};
|
|
57
|
+
const hostStatuses = new Map();
|
|
58
|
+
for (const host of hosts) {
|
|
59
|
+
if (!isMapping(host) || !requiredString(host, "id") || !requiredString(host, "display_name"))
|
|
60
|
+
continue;
|
|
61
|
+
if (!(host.support_status === "supported" || host.support_status === "supported_disabled" || host.support_status === "retired_historical"))
|
|
62
|
+
continue;
|
|
63
|
+
hostStatuses.set(host.id, host.support_status);
|
|
64
|
+
}
|
|
65
|
+
for (const [id, status] of Object.entries(expectedHosts)) {
|
|
66
|
+
if (hostStatuses.get(id) !== status)
|
|
67
|
+
errors.push(`hosts must retain ${id} as ${status}`);
|
|
68
|
+
}
|
|
69
|
+
const evidence = Array.isArray(value.accepted_host_evidence) ? value.accepted_host_evidence : [];
|
|
70
|
+
const proofByHost = new Map();
|
|
71
|
+
for (const item of evidence) {
|
|
72
|
+
if (isMapping(item) && requiredString(item, "host") && requiredString(item, "proof")) {
|
|
73
|
+
proofByHost.set(item.host, item.proof);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const host of ["codex", "cursor", "opencode", "copilot"]) {
|
|
77
|
+
if (!proofByHost.has(host))
|
|
78
|
+
errors.push(`accepted_host_evidence must retain ${host} proof`);
|
|
79
|
+
}
|
|
80
|
+
const resources = Array.isArray(value.resources) ? value.resources : [];
|
|
81
|
+
if (resources.length !== 2)
|
|
82
|
+
errors.push("resources must declare the Claude link and Codex descriptor class");
|
|
83
|
+
const resourceById = new Map();
|
|
84
|
+
for (const resource of resources) {
|
|
85
|
+
if (!isMapping(resource) || !requiredString(resource, "id"))
|
|
86
|
+
continue;
|
|
87
|
+
resourceById.set(resource.id, resource);
|
|
88
|
+
}
|
|
89
|
+
const claude = resourceById.get("claude.agentera-skill-link");
|
|
90
|
+
if (!claude || claude.host !== "claude" || claude.kind !== "symlink" || claude.intent !== "remove"
|
|
91
|
+
|| claude.destination !== "{home}/.claude/skills/agentera" || claude.ledger_status !== "legacy"
|
|
92
|
+
|| !requiredString(claude, "durable_proof")) {
|
|
93
|
+
errors.push("Claude cleanup must remain the legacy-ledger Agentera skill symlink removal");
|
|
94
|
+
}
|
|
95
|
+
const codex = resourceById.get("codex.agent-descriptor");
|
|
96
|
+
const descriptors = codex ? stringList(codex.descriptors) : [];
|
|
97
|
+
const expectedDescriptors = ["status", "vision", "discuss", "research", "plan", "build", "optimize", "audit", "document", "profile", "design", "orchestrate"];
|
|
98
|
+
if (!codex || codex.host !== "codex" || codex.kind !== "file" || codex.intent !== "remove"
|
|
99
|
+
|| codex.destination !== "{home}/.codex/agents/{descriptor}.toml" || codex.ledger_status !== "managed"
|
|
100
|
+
|| !requiredString(codex, "durable_proof") || descriptors.join(",") !== expectedDescriptors.join(",")) {
|
|
101
|
+
errors.push("Codex descriptors must be independently ledger-owned native files");
|
|
102
|
+
}
|
|
103
|
+
const configuration = Array.isArray(value.configuration_inventory) ? value.configuration_inventory : [];
|
|
104
|
+
const expectedKeys = [
|
|
105
|
+
"shell_environment_policy.set.AGENTERA_HOME",
|
|
106
|
+
"agents.max_depth",
|
|
107
|
+
"features.multi_agent_v2",
|
|
108
|
+
];
|
|
109
|
+
if (configuration.length !== expectedKeys.length) {
|
|
110
|
+
errors.push("configuration_inventory must declare every Agentera-written Codex key");
|
|
111
|
+
}
|
|
112
|
+
for (const key of expectedKeys) {
|
|
113
|
+
const unit = configuration.find((item) => isMapping(item) && item.key === key);
|
|
114
|
+
if (!isMapping(unit) || !requiredString(unit, "id") || unit.host !== "codex" || unit.destination !== "{home}/.codex/config.toml"
|
|
115
|
+
|| unit.durable_proof !== "key-level ownership ledger identity and fingerprint"
|
|
116
|
+
|| unit.ownership_available !== false || unit.result_without_proof !== "action_required") {
|
|
117
|
+
errors.push(`configuration_inventory must preserve ${key} without key-level ownership`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return errors;
|
|
121
|
+
}
|
|
122
|
+
function expandResource(resource, hostSupportStatus) {
|
|
123
|
+
const descriptorNames = stringList(resource.descriptors);
|
|
124
|
+
const ids = descriptorNames.length > 0
|
|
125
|
+
? descriptorNames.map((name) => `${resource.id}.${name}`)
|
|
126
|
+
: [resource.id];
|
|
127
|
+
return ids.map((id, index) => ({
|
|
128
|
+
id,
|
|
129
|
+
host: resource.host,
|
|
130
|
+
hostSupportStatus,
|
|
131
|
+
kind: resource.kind,
|
|
132
|
+
destination: descriptorNames.length > 0
|
|
133
|
+
? resource.destination.replace("{descriptor}", descriptorNames[index])
|
|
134
|
+
: resource.destination,
|
|
135
|
+
ledgerStatus: resource.ledger_status,
|
|
136
|
+
durableProof: resource.durable_proof,
|
|
137
|
+
neverTouch: stringList(resource.never_touch),
|
|
138
|
+
safetyNote: resource.safety_note ?? "",
|
|
139
|
+
}));
|
|
140
|
+
}
|
|
141
|
+
export function loadNativeResourceCleanupContract(contractPath = path.join(resolveSourceRoot(), NATIVE_RESOURCE_CLEANUP_CONTRACT_RELATIVE_PATH)) {
|
|
142
|
+
const data = loadYamlMapping(fs.readFileSync(contractPath, "utf8"));
|
|
143
|
+
const errors = validateNativeResourceCleanupContractData(data);
|
|
144
|
+
if (errors.length > 0)
|
|
145
|
+
throw new Error(`Native resource cleanup contract validation failed: ${errors.join("; ")}`);
|
|
146
|
+
const statuses = new Map(data.hosts.map((host) => [
|
|
147
|
+
host.id,
|
|
148
|
+
host.support_status,
|
|
149
|
+
]));
|
|
150
|
+
return {
|
|
151
|
+
sourcePath: contractPath,
|
|
152
|
+
resources: data.resources.flatMap((resource) => expandResource(resource, statuses.get(resource.host))),
|
|
153
|
+
configuration: data.configuration_inventory.map((unit) => ({
|
|
154
|
+
id: unit.id,
|
|
155
|
+
host: unit.host,
|
|
156
|
+
key: unit.key,
|
|
157
|
+
})),
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
export function nativeResourceCleanupIds(contract = loadNativeResourceCleanupContract()) {
|
|
161
|
+
return contract.resources.map((resource) => resource.id);
|
|
162
|
+
}
|
|
163
|
+
export function validateNativeResourceCleanupContractRoot(root = resolveSourceRoot()) {
|
|
164
|
+
const contractPath = path.join(root, NATIVE_RESOURCE_CLEANUP_CONTRACT_RELATIVE_PATH);
|
|
165
|
+
if (!fs.existsSync(contractPath)) {
|
|
166
|
+
return [`${NATIVE_RESOURCE_CLEANUP_CONTRACT_RELATIVE_PATH}: missing native resource cleanup contract`];
|
|
167
|
+
}
|
|
168
|
+
try {
|
|
169
|
+
return validateNativeResourceCleanupContractData(loadYamlMapping(fs.readFileSync(contractPath, "utf8"))).map((error) => `${NATIVE_RESOURCE_CLEANUP_CONTRACT_RELATIVE_PATH}: ${error}`);
|
|
170
|
+
}
|
|
171
|
+
catch (error) {
|
|
172
|
+
return [`${NATIVE_RESOURCE_CLEANUP_CONTRACT_RELATIVE_PATH}: could not parse contract: ${error.message}`];
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
function expandHome(template, home) {
|
|
176
|
+
if (!template.startsWith("{home}/") || template.includes("..")) {
|
|
177
|
+
throw new Error(`unsafe native resource destination template: ${template}`);
|
|
178
|
+
}
|
|
179
|
+
return path.join(path.resolve(home), template.slice("{home}/".length));
|
|
180
|
+
}
|
|
181
|
+
function ledgerDiagnostics(plan, resource) {
|
|
182
|
+
const ledger = plan.request.ledger ?? emptyLifecycleOwnershipLedger();
|
|
183
|
+
const planned = plan.operations[0];
|
|
184
|
+
if (planned?.action === "noop")
|
|
185
|
+
return [];
|
|
186
|
+
const records = ledger.records.filter((record) => record.resourceId === resource.id);
|
|
187
|
+
if (records.length !== 1)
|
|
188
|
+
return [`${resource.id}: cleanup requires exactly one ownership ledger record`];
|
|
189
|
+
const record = records[0];
|
|
190
|
+
if (record.status !== resource.ledgerStatus
|
|
191
|
+
|| record.scope !== "whole"
|
|
192
|
+
|| path.resolve(record.destination) !== path.resolve(plan.request.operations[0].destination)
|
|
193
|
+
|| record.kind !== resource.kind
|
|
194
|
+
|| record.identity === null
|
|
195
|
+
|| record.fingerprint === null) {
|
|
196
|
+
return [`${resource.id}: cleanup requires matching whole-resource ${resource.ledgerStatus} ledger identity and fingerprint`];
|
|
197
|
+
}
|
|
198
|
+
return [];
|
|
199
|
+
}
|
|
200
|
+
function blockedPlan(plan, diagnostics, invalidLedger = false) {
|
|
201
|
+
const reason = `${diagnostics.join("; ")} ${LIFECYCLE_MANUAL_REVIEW_GUIDANCE}`;
|
|
202
|
+
return {
|
|
203
|
+
...plan,
|
|
204
|
+
operations: plan.operations.map((operation) => operation.action === "noop" ? operation : {
|
|
205
|
+
...operation,
|
|
206
|
+
...(invalidLedger ? { state: "ambiguous_ownership", ownership: "ambiguous" } : {}),
|
|
207
|
+
action: "action_required",
|
|
208
|
+
reason,
|
|
209
|
+
}),
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
function configurationUnitsFor(contract, host) {
|
|
213
|
+
return contract.configuration
|
|
214
|
+
.filter((unit) => unit.host === host)
|
|
215
|
+
.map((unit) => ({
|
|
216
|
+
id: unit.id,
|
|
217
|
+
hostId: unit.host,
|
|
218
|
+
key: unit.key,
|
|
219
|
+
status: "action_required",
|
|
220
|
+
reason: "no durable key-level ownership ledger identity and fingerprint",
|
|
221
|
+
}));
|
|
222
|
+
}
|
|
223
|
+
export function previewNativeResourceCleanup(opts) {
|
|
224
|
+
const contract = opts.contract ?? loadNativeResourceCleanupContract();
|
|
225
|
+
const resource = contract.resources.find((candidate) => candidate.id === opts.resourceId);
|
|
226
|
+
if (!resource)
|
|
227
|
+
throw new Error(`unknown native Agentera resource cleanup id: ${opts.resourceId}`);
|
|
228
|
+
const operations = [{
|
|
229
|
+
id: resource.id,
|
|
230
|
+
destination: expandHome(resource.destination, opts.home),
|
|
231
|
+
kind: resource.kind,
|
|
232
|
+
intent: "remove",
|
|
233
|
+
required: true,
|
|
234
|
+
}];
|
|
235
|
+
const suppliedLedger = opts.ledger ?? emptyLifecycleOwnershipLedger();
|
|
236
|
+
const errors = validateLifecycleOwnershipLedger(suppliedLedger);
|
|
237
|
+
const plan = planLifecycleOperations({
|
|
238
|
+
allowedRoots: [path.resolve(opts.home)],
|
|
239
|
+
operations,
|
|
240
|
+
manifest: createLifecycleOwnershipManifest(operations),
|
|
241
|
+
ledger: errors.length === 0 ? suppliedLedger : emptyLifecycleOwnershipLedger(),
|
|
242
|
+
});
|
|
243
|
+
const diagnostics = errors.length > 0
|
|
244
|
+
? errors.map((error) => `invalid ownership ledger: ${error}`)
|
|
245
|
+
: ledgerDiagnostics(plan, resource);
|
|
246
|
+
return {
|
|
247
|
+
schemaVersion: "agentera.nativeResourceCleanupPreview.v1",
|
|
248
|
+
mode: "preview",
|
|
249
|
+
resourceId: resource.id,
|
|
250
|
+
hostId: resource.host,
|
|
251
|
+
hostSupportStatus: resource.hostSupportStatus,
|
|
252
|
+
ledgerStatus: resource.ledgerStatus,
|
|
253
|
+
approvalRequired: true,
|
|
254
|
+
ownershipRequirement: "matching_whole_resource_ledger",
|
|
255
|
+
ledgerAuthorization: diagnostics.length === 0 ? "match_or_absent_noop" : "blocked",
|
|
256
|
+
ledgerDiagnostics: diagnostics,
|
|
257
|
+
plan: diagnostics.length === 0 ? plan : blockedPlan(plan, diagnostics, errors.length > 0),
|
|
258
|
+
configurationUnits: configurationUnitsFor(contract, resource.host),
|
|
259
|
+
neverTouch: resource.neverTouch.map((entry) => expandHome(entry, opts.home)),
|
|
260
|
+
safetyNote: resource.safetyNote,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
function approvalRequiredResult(preview) {
|
|
264
|
+
const operations = preview.plan.operations.map((operation) => ({
|
|
265
|
+
...operation,
|
|
266
|
+
action: operation.action === "noop" || operation.action === "blocked_unowned" ? operation.action : "action_required",
|
|
267
|
+
status: operation.action === "noop" ? "noop" : operation.action === "blocked_unowned" ? "blocked_unowned" : "action_required",
|
|
268
|
+
dependencyCauses: [],
|
|
269
|
+
reason: operation.action === "noop" || operation.action === "blocked_unowned"
|
|
270
|
+
? operation.reason
|
|
271
|
+
: "explicit cleanup approval is required",
|
|
272
|
+
}));
|
|
273
|
+
const summary = {
|
|
274
|
+
applied: 0,
|
|
275
|
+
noop: operations.filter((item) => item.status === "noop").length,
|
|
276
|
+
failed: 0,
|
|
277
|
+
blocked_unowned: operations.filter((item) => item.status === "blocked_unowned").length,
|
|
278
|
+
skipped_dependency: 0,
|
|
279
|
+
action_required: operations.filter((item) => item.status === "action_required").length,
|
|
280
|
+
};
|
|
281
|
+
return {
|
|
282
|
+
schemaVersion: "agentera.lifecycleApplyResult.v1",
|
|
283
|
+
status: operations.every((item) => item.status === "noop") ? "success" : "non_success",
|
|
284
|
+
operations,
|
|
285
|
+
summary,
|
|
286
|
+
requiredUnmet: operations.filter((item) => item.required && item.status !== "noop").map((item) => item.id),
|
|
287
|
+
ownershipLedger: preview.plan.request.ledger ?? emptyLifecycleOwnershipLedger(),
|
|
288
|
+
};
|
|
289
|
+
}
|
|
290
|
+
export function applyNativeResourceCleanup(preview, options) {
|
|
291
|
+
const resource = preview.plan.request.operations[0];
|
|
292
|
+
const definition = {
|
|
293
|
+
id: preview.resourceId,
|
|
294
|
+
host: preview.hostId,
|
|
295
|
+
hostSupportStatus: preview.hostSupportStatus,
|
|
296
|
+
kind: resource.kind,
|
|
297
|
+
destination: resource.destination,
|
|
298
|
+
ledgerStatus: preview.ledgerStatus,
|
|
299
|
+
durableProof: "",
|
|
300
|
+
neverTouch: [],
|
|
301
|
+
safetyNote: "",
|
|
302
|
+
};
|
|
303
|
+
const diagnostics = ledgerDiagnostics(preview.plan, definition);
|
|
304
|
+
const authorized = preview.ledgerAuthorization === "match_or_absent_noop" && diagnostics.length === 0;
|
|
305
|
+
const result = options.approved && authorized
|
|
306
|
+
? applyLifecycleOperations(preview.plan, options)
|
|
307
|
+
: approvalRequiredResult(preview);
|
|
308
|
+
return {
|
|
309
|
+
...result,
|
|
310
|
+
resourceId: preview.resourceId,
|
|
311
|
+
hostId: preview.hostId,
|
|
312
|
+
hostSupportStatus: preview.hostSupportStatus,
|
|
313
|
+
approval: options.approved ? "approved" : "required",
|
|
314
|
+
configurationUnits: preview.configurationUnits,
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=nativeResourceCleanup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nativeResourceCleanup.js","sourceRoot":"","sources":["../../../../../home/jgabor/git/agentera/packages/cli/src/runtime/nativeResourceCleanup.ts"],"names":[],"mappings":"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"}
|
package/dist/setup/codex/cli.js
CHANGED
|
@@ -3,7 +3,6 @@ import path from "node:path";
|
|
|
3
3
|
import { parseToml } from "../../core/toml.js";
|
|
4
4
|
import { pathExists } from "../../core/paths.js";
|
|
5
5
|
import { DEFAULT_CONFIG_PATH, InstallRootError, resolveInstallRoot } from "./installRoot.js";
|
|
6
|
-
import { planAgentDescriptorChanges, writeAgentDescriptorChanges, defaultAgentsDirForConfig } from "./agents.js";
|
|
7
6
|
import { planChange } from "./state.js";
|
|
8
7
|
function readTextOrNull(p) {
|
|
9
8
|
if (!pathExists(p))
|
|
@@ -19,10 +18,8 @@ export function codexMain(argv = [], io = {}) {
|
|
|
19
18
|
const args = {
|
|
20
19
|
installRoot: null,
|
|
21
20
|
configFile: DEFAULT_CONFIG_PATH,
|
|
22
|
-
agentsDir: null,
|
|
23
21
|
dryRun: false,
|
|
24
22
|
force: false,
|
|
25
|
-
enableAgents: false,
|
|
26
23
|
};
|
|
27
24
|
const valueFlag = (a, name) => {
|
|
28
25
|
if (a === name)
|
|
@@ -34,24 +31,24 @@ export function codexMain(argv = [], io = {}) {
|
|
|
34
31
|
for (let i = 0; i < argv.length; i++) {
|
|
35
32
|
const a = argv[i];
|
|
36
33
|
let v;
|
|
37
|
-
if (
|
|
34
|
+
if (a === "--enable-agents" || a === "--agents-dir" || a.startsWith("--agents-dir=")) {
|
|
35
|
+
const option = a.startsWith("--agents-dir") ? "--agents-dir" : "--enable-agents";
|
|
36
|
+
err(`${option} is retired: use the shared skill at ~/.agents/skills/agentera/SKILL.md ` +
|
|
37
|
+
"and run `npx -y agentera@next prime --context <capability> --format json` for the CLI workflow.");
|
|
38
|
+
return 2;
|
|
39
|
+
}
|
|
40
|
+
else if ((v = valueFlag(a, "--install-root")) !== null) {
|
|
38
41
|
args.installRoot = v === "__NEXT__" ? argv[++i] : v;
|
|
39
42
|
}
|
|
40
43
|
else if ((v = valueFlag(a, "--config-file")) !== null) {
|
|
41
44
|
args.configFile = v === "__NEXT__" ? argv[++i] : v;
|
|
42
45
|
}
|
|
43
|
-
else if ((v = valueFlag(a, "--agents-dir")) !== null) {
|
|
44
|
-
args.agentsDir = v === "__NEXT__" ? argv[++i] : v;
|
|
45
|
-
}
|
|
46
46
|
else if (a === "--dry-run") {
|
|
47
47
|
args.dryRun = true;
|
|
48
48
|
}
|
|
49
49
|
else if (a === "--force") {
|
|
50
50
|
args.force = true;
|
|
51
51
|
}
|
|
52
|
-
else if (a === "--enable-agents") {
|
|
53
|
-
args.enableAgents = true;
|
|
54
|
-
}
|
|
55
52
|
else {
|
|
56
53
|
err(`setup_codex: error: unrecognized arguments: ${a}`);
|
|
57
54
|
return 2;
|
|
@@ -90,23 +87,8 @@ export function codexMain(argv = [], io = {}) {
|
|
|
90
87
|
return 2;
|
|
91
88
|
}
|
|
92
89
|
}
|
|
93
|
-
// Step 4: plan the AGENTERA_HOME change
|
|
90
|
+
// Step 4: plan the AGENTERA_HOME change.
|
|
94
91
|
const outcome = planChange(currentText, installRoot, { force: args.force });
|
|
95
|
-
let agentsDir;
|
|
96
|
-
try {
|
|
97
|
-
agentsDir = args.agentsDir ?? defaultAgentsDirForConfig(configPath);
|
|
98
|
-
}
|
|
99
|
-
catch (errx) {
|
|
100
|
-
err(`error: ${errx.message}`);
|
|
101
|
-
return 2;
|
|
102
|
-
}
|
|
103
|
-
const descriptorChanges = planAgentDescriptorChanges(installRoot, agentsDir, { force: args.force });
|
|
104
|
-
const pendingDescriptors = descriptorChanges.filter((c) => c.action === "pending");
|
|
105
|
-
const blockedDescriptors = descriptorChanges.filter((c) => c.action === "blocked");
|
|
106
|
-
if (args.enableAgents) {
|
|
107
|
-
err("--enable-agents is deprecated in Agentera v2; no [agents.*] " +
|
|
108
|
-
"blocks will be written; runtime-native descriptor files are managed separately.");
|
|
109
|
-
}
|
|
110
92
|
// Step 5: dispatch on the outcome.
|
|
111
93
|
if (outcome.action === "conflict") {
|
|
112
94
|
err(outcome.message);
|
|
@@ -114,13 +96,7 @@ export function codexMain(argv = [], io = {}) {
|
|
|
114
96
|
err(outcome.diff);
|
|
115
97
|
return 2;
|
|
116
98
|
}
|
|
117
|
-
if (
|
|
118
|
-
for (const change of blockedDescriptors) {
|
|
119
|
-
err(`error: ${change.target}: ${change.message}`);
|
|
120
|
-
}
|
|
121
|
-
return 2;
|
|
122
|
-
}
|
|
123
|
-
if (outcome.action === "noop" && pendingDescriptors.length === 0) {
|
|
99
|
+
if (outcome.action === "noop") {
|
|
124
100
|
out(outcome.message);
|
|
125
101
|
return 0;
|
|
126
102
|
}
|
|
@@ -131,9 +107,6 @@ export function codexMain(argv = [], io = {}) {
|
|
|
131
107
|
if (!outcome.diff.endsWith("\n"))
|
|
132
108
|
out("");
|
|
133
109
|
}
|
|
134
|
-
for (const change of pendingDescriptors) {
|
|
135
|
-
out(`${change.message}: ${change.target}`);
|
|
136
|
-
}
|
|
137
110
|
return 1;
|
|
138
111
|
}
|
|
139
112
|
try {
|
|
@@ -141,7 +114,6 @@ export function codexMain(argv = [], io = {}) {
|
|
|
141
114
|
fs.mkdirSync(path.dirname(configPath), { recursive: true });
|
|
142
115
|
fs.writeFileSync(configPath, outcome.newText, "utf8");
|
|
143
116
|
}
|
|
144
|
-
writeAgentDescriptorChanges(pendingDescriptors);
|
|
145
117
|
}
|
|
146
118
|
catch (errx) {
|
|
147
119
|
err(`error writing Codex setup targets: ${errx.message}`);
|
|
@@ -153,9 +125,6 @@ export function codexMain(argv = [], io = {}) {
|
|
|
153
125
|
else {
|
|
154
126
|
out(outcome.message);
|
|
155
127
|
}
|
|
156
|
-
for (const change of pendingDescriptors) {
|
|
157
|
-
out(`wrote ${change.target}: ${change.message.replaceAll("would ", "")}`);
|
|
158
|
-
}
|
|
159
128
|
return 0;
|
|
160
129
|
}
|
|
161
130
|
//# sourceMappingURL=cli.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../../home/jgabor/git/agentera/packages/cli/src/setup/codex/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../../home/jgabor/git/agentera/packages/cli/src/setup/codex/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC7F,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAIxC,SAAS,cAAc,CAAC,CAAS;IAC/B,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,OAAO,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAUD,MAAM,UAAU,SAAS,CAAC,OAAiB,EAAE,EAAE,KAAiB,EAAE;IAChE,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,EAAE,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC;IAElC,MAAM,IAAI,GAAG;QACX,WAAW,EAAE,IAAqB;QAClC,UAAU,EAAE,mBAAmB;QAC/B,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,KAAK;KACb,CAAC;IAEF,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,IAAY,EAAiB,EAAE;QAC3D,IAAI,CAAC,KAAK,IAAI;YAAE,OAAO,UAAU,CAAC;QAClC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,GAAG,CAAC;YAAE,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC9D,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAgB,CAAC;QACrB,IAAI,CAAC,KAAK,iBAAiB,IAAI,CAAC,KAAK,cAAc,IAAI,CAAC,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;YACrF,MAAM,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACjF,GAAG,CACD,GAAG,MAAM,0EAA0E;gBACjF,iGAAiG,CACpG,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACzD,IAAI,CAAC,WAAW,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,CAAC;aAAM,IAAI,CAAC,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,+CAA+C,CAAC,EAAE,CAAC,CAAC;YACxD,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,IAAI,IAAI,YAAY,gBAAgB,EAAE,CAAC;YACrC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO,CAAC,CAAC;QACX,CAAC;QACD,MAAM,IAAI,CAAC;IACb,CAAC;IAED,gDAAgD;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACnC,IAAI,WAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,WAAW,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,GAAG,CAAC,iBAAiB,UAAU,KAAM,IAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,CAAC;IACX,CAAC;IAED,wCAAwC;IACxC,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,CAAC,IAAI,EAAE,EAAE,CAAC;QAC/C,IAAI,CAAC;YACH,SAAS,CAAC,WAAW,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,IAAI,EAAE,CAAC;YACd,GAAG,CACD,UAAU,UAAU,uBAAwB,IAAc,CAAC,OAAO,KAAK;gBACrE,gDAAgD,CACnD,CAAC;YACF,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,yCAAyC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAE5E,mCAAmC;IACnC,IAAI,OAAO,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAClC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,IAAI;YAAE,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC9B,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAAC,OAAO,IAAI,EAAE,CAAC;QACd,GAAG,CAAC,sCAAuC,IAAc,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,GAAG,CAAC,SAAS,UAAU,KAAK,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -4,7 +4,7 @@ import os from "node:os";
|
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { pathExists, resolvePath } from "../../core/paths.js";
|
|
6
6
|
import { parseToml } from "../../core/toml.js";
|
|
7
|
-
import { CODEX_HOOK_COMMAND, CODEX_HOOK_MATCHER, CODEX_HOOK_STATUS_MESSAGE, CODEX_HOOK_TIMEOUT, CODEX_PLUGIN_HOOK_COMMAND, CODEX_PLUGIN_HOOK_SOURCE, CODEX_PLUGIN_ID,
|
|
7
|
+
import { CODEX_HOOK_COMMAND, CODEX_HOOK_MATCHER, CODEX_HOOK_STATUS_MESSAGE, CODEX_HOOK_TIMEOUT, CODEX_PLUGIN_HOOK_COMMAND, CODEX_PLUGIN_HOOK_SOURCE, CODEX_PLUGIN_ID, MANAGED_KEY, SECTION_NAME, SET_SUBTABLE_NAME, } from "./constants.js";
|
|
8
8
|
/** Python repr() for a scalar, used to display non-string sibling set values. */
|
|
9
9
|
function pyRepr(value) {
|
|
10
10
|
if (value === null || value === undefined)
|
|
@@ -155,15 +155,9 @@ export function emitSetInlineTable(pairs) {
|
|
|
155
155
|
const rendered = entries.map(([key, value]) => `${key} = ${tomlBasicString(value)}`).join(", ");
|
|
156
156
|
return entries.length > 0 ? `{ ${rendered} }` : "{ }";
|
|
157
157
|
}
|
|
158
|
-
export function renderAgentsConfigSection() {
|
|
159
|
-
return "[agents]\n" + Object.entries(DEFAULT_AGENT_LIMITS).map(([k, v]) => `${k} = ${v}`).join("\n") + "\n";
|
|
160
|
-
}
|
|
161
158
|
export function renderFreshConfig(installRoot) {
|
|
162
159
|
const setValue = emitSetInlineTable({ [MANAGED_KEY]: installRoot });
|
|
163
|
-
return
|
|
164
|
-
`${renderAgentsConfigSection()}\n` +
|
|
165
|
-
`[features.multi_agent_v2]\n` +
|
|
166
|
-
`max_concurrent_threads_per_session = 6\n`);
|
|
160
|
+
return `[${SECTION_NAME}]\nset = ${setValue}\n`;
|
|
167
161
|
}
|
|
168
162
|
// ── Codex hook trust hashing ───────────────────────────────────────
|
|
169
163
|
/** Compact canonical JSON: sort_keys=True, separators=(",",":"), ensure_ascii. */
|
|
@@ -445,81 +439,6 @@ function removeTableKeyLine(text, table, key) {
|
|
|
445
439
|
return text;
|
|
446
440
|
return [...linesWithEnds.slice(0, keyIdx), ...linesWithEnds.slice(keyIdx + 1)].join("");
|
|
447
441
|
}
|
|
448
|
-
function codexMultiAgentThreadLimit(parsed) {
|
|
449
|
-
const agents = parsed.agents;
|
|
450
|
-
if (agents && typeof agents === "object" && !Array.isArray(agents) && "max_threads" in agents) {
|
|
451
|
-
const n = Number(agents.max_threads);
|
|
452
|
-
if (Number.isInteger(n))
|
|
453
|
-
return n;
|
|
454
|
-
}
|
|
455
|
-
const features = parsed.features;
|
|
456
|
-
if (features && typeof features === "object" && !Array.isArray(features)) {
|
|
457
|
-
const multi = features.multi_agent_v2;
|
|
458
|
-
if (multi && typeof multi === "object" && "max_concurrent_threads_per_session" in multi) {
|
|
459
|
-
const n = Number(multi.max_concurrent_threads_per_session);
|
|
460
|
-
if (Number.isInteger(n))
|
|
461
|
-
return n;
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
return 6;
|
|
465
|
-
}
|
|
466
|
-
function ensureCodexMultiAgentV2(text, maxThreadsVal) {
|
|
467
|
-
const parsed = tomlLoadOrEmpty(text);
|
|
468
|
-
const features = parsed.features;
|
|
469
|
-
let multi = {};
|
|
470
|
-
if (features && typeof features === "object" && !Array.isArray(features)) {
|
|
471
|
-
const m = features.multi_agent_v2;
|
|
472
|
-
if (m && typeof m === "object" && !Array.isArray(m))
|
|
473
|
-
multi = m;
|
|
474
|
-
}
|
|
475
|
-
if (multi.max_concurrent_threads_per_session === maxThreadsVal)
|
|
476
|
-
return text;
|
|
477
|
-
const lines = splitKeepEnds(text).map(rstripEol);
|
|
478
|
-
const tableIdx = findTableHeaderIndex(lines, "features.multi_agent_v2");
|
|
479
|
-
const key = "max_concurrent_threads_per_session";
|
|
480
|
-
const line = `${key} = ${maxThreadsVal}`;
|
|
481
|
-
if (tableIdx === null)
|
|
482
|
-
return appendTable(text, "features.multi_agent_v2", [line]);
|
|
483
|
-
const keyIdx = findTableKeyIndex(lines, tableIdx, key);
|
|
484
|
-
if (keyIdx === null)
|
|
485
|
-
return insertTableKeyLine(text, "features.multi_agent_v2", line);
|
|
486
|
-
return replaceTableKeyLine(text, "features.multi_agent_v2", key, line);
|
|
487
|
-
}
|
|
488
|
-
export function ensureCodexAgentLimits(text) {
|
|
489
|
-
let parsed = tomlLoadOrEmpty(text);
|
|
490
|
-
const maxThreadsVal = codexMultiAgentThreadLimit(parsed);
|
|
491
|
-
text = removeTableKeyLine(text, "agents", "max_threads");
|
|
492
|
-
parsed = tomlLoadOrEmpty(text);
|
|
493
|
-
const agents = parsed.agents;
|
|
494
|
-
const agentsMatches = agents && typeof agents === "object" && !Array.isArray(agents) &&
|
|
495
|
-
Object.entries(DEFAULT_AGENT_LIMITS).every(([k, v]) => agents[k] === v);
|
|
496
|
-
if (!agentsMatches) {
|
|
497
|
-
const lines = splitKeepEnds(text).map(rstripEol);
|
|
498
|
-
const tableIdx = findTableHeaderIndex(lines, "agents");
|
|
499
|
-
if (tableIdx === null) {
|
|
500
|
-
if (agents && typeof agents === "object" && !Array.isArray(agents) && Object.keys(agents).length > 0) {
|
|
501
|
-
throw new Error("[agents] uses an unsupported inline or child-table-only form");
|
|
502
|
-
}
|
|
503
|
-
text = appendTable(text, "agents", Object.entries(DEFAULT_AGENT_LIMITS).map(([k, v]) => `${k} = ${v}`));
|
|
504
|
-
}
|
|
505
|
-
else {
|
|
506
|
-
for (const [key, value] of Object.entries(DEFAULT_AGENT_LIMITS)) {
|
|
507
|
-
const line = `${key} = ${value}`;
|
|
508
|
-
const curLines = splitKeepEnds(text).map(rstripEol);
|
|
509
|
-
const curTableIdx = findTableHeaderIndex(curLines, "agents");
|
|
510
|
-
if (curTableIdx === null)
|
|
511
|
-
throw new Error("[agents] header disappeared during update");
|
|
512
|
-
if (findTableKeyIndex(curLines, curTableIdx, key) === null) {
|
|
513
|
-
text = insertTableKeyLine(text, "agents", line);
|
|
514
|
-
}
|
|
515
|
-
else {
|
|
516
|
-
text = replaceTableKeyLine(text, "agents", key, line);
|
|
517
|
-
}
|
|
518
|
-
}
|
|
519
|
-
}
|
|
520
|
-
}
|
|
521
|
-
return ensureCodexMultiAgentV2(text, maxThreadsVal);
|
|
522
|
-
}
|
|
523
442
|
function hookStateLine(key, trustedHash) {
|
|
524
443
|
return `${tomlBasicString(key)} = { trusted_hash = ${tomlBasicString(trustedHash)}, enabled = true }`;
|
|
525
444
|
}
|