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.
Files changed (75) hide show
  1. package/README.md +7 -5
  2. package/bundle/CHANGELOG.md +7 -2
  3. package/bundle/README.md +7 -6
  4. package/bundle/UPGRADE.md +27 -16
  5. package/bundle/references/adapters/package-surface-characterization.md +1 -2
  6. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -3
  7. package/bundle/references/adapters/runtime-retired-resources.yaml +78 -14
  8. package/bundle/references/artifacts/state-storage-authority.yaml +10 -1
  9. package/bundle/references/cli/audience-namespace-cli-migration.yaml +1 -1
  10. package/bundle/references/cli/bundle-skill-vocabulary.yaml +1 -1
  11. package/bundle/references/cli/capability-instruction-contract.yaml +0 -3
  12. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -4
  13. package/bundle/references/cli/vocabulary.md +1 -2
  14. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +10 -6
  15. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +3 -2
  16. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +6 -5
  17. package/bundle/skills/agentera/schemas/artifacts/health.yaml +25 -7
  18. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +0 -1
  19. package/dist/capabilities/orchestrate/instructions.js +22 -2
  20. package/dist/capabilities/orchestrate/instructions.js.map +1 -1
  21. package/dist/cli/capabilityContext/startup.js +2 -0
  22. package/dist/cli/capabilityContext/startup.js.map +1 -1
  23. package/dist/cli/commands/schema.js +21 -23
  24. package/dist/cli/commands/schema.js.map +1 -1
  25. package/dist/cli/commands/upgrade.js +1 -1
  26. package/dist/cli/commands/upgrade.js.map +1 -1
  27. package/dist/cli/commands/validate.js +2 -119
  28. package/dist/cli/commands/validate.js.map +1 -1
  29. package/dist/cli/dispatch/check.js +2 -7
  30. package/dist/cli/dispatch/check.js.map +1 -1
  31. package/dist/cli/dispatch/lifecycle.js +7 -5
  32. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  33. package/dist/cli/help.js +4 -4
  34. package/dist/cli/help.js.map +1 -1
  35. package/dist/runtime/lifecycleAuthority.js +10 -11
  36. package/dist/runtime/lifecycleAuthority.js.map +1 -1
  37. package/dist/runtime/nativeResourceCleanup.js +317 -0
  38. package/dist/runtime/nativeResourceCleanup.js.map +1 -0
  39. package/dist/setup/codex/cli.js +9 -40
  40. package/dist/setup/codex/cli.js.map +1 -1
  41. package/dist/setup/codex/configToml.js +2 -83
  42. package/dist/setup/codex/configToml.js.map +1 -1
  43. package/dist/setup/codex/constants.js +0 -15
  44. package/dist/setup/codex/constants.js.map +1 -1
  45. package/dist/setup/codex/state.js +2 -20
  46. package/dist/setup/codex/state.js.map +1 -1
  47. package/dist/setup/codex.js +2 -4
  48. package/dist/setup/codex.js.map +1 -1
  49. package/dist/state/healthEntities.js +43 -4
  50. package/dist/state/healthEntities.js.map +1 -1
  51. package/dist/state/healthEntityValidation.js +14 -1
  52. package/dist/state/healthEntityValidation.js.map +1 -1
  53. package/dist/state/write/explain.js +2 -1
  54. package/dist/state/write/explain.js.map +1 -1
  55. package/dist/upgrade/lifecycleUpgrade.js +14 -14
  56. package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
  57. package/dist/upgrade/upgradeOrchestrator.js +12 -12
  58. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  59. package/package.json +2 -2
  60. package/bundle/skills/agentera/agents/audit.toml +0 -6
  61. package/bundle/skills/agentera/agents/build.toml +0 -6
  62. package/bundle/skills/agentera/agents/design.toml +0 -6
  63. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  64. package/bundle/skills/agentera/agents/document.toml +0 -6
  65. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  66. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  67. package/bundle/skills/agentera/agents/plan.toml +0 -6
  68. package/bundle/skills/agentera/agents/profile.toml +0 -6
  69. package/bundle/skills/agentera/agents/research.toml +0 -6
  70. package/bundle/skills/agentera/agents/status.toml +0 -6
  71. package/bundle/skills/agentera/agents/vision.toml +0 -6
  72. package/dist/runtime/retiredRuntimeCleanup.js +0 -238
  73. package/dist/runtime/retiredRuntimeCleanup.js.map +0 -1
  74. package/dist/setup/codex/agents.js +0 -96
  75. 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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"}
@@ -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 ((v = valueFlag(a, "--install-root")) !== null) {
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 and runtime-native descriptors.
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 (blockedDescriptors.length > 0) {
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":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../../../../../home/jgabor/git/agentera/packages/cli/src/setup/codex/cli.ts"],"names":[],"mappings":"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"}
@@ -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, DEFAULT_AGENT_LIMITS, MANAGED_KEY, SECTION_NAME, SET_SUBTABLE_NAME, } from "./constants.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, 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 (`[${SECTION_NAME}]\nset = ${setValue}\n\n` +
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
  }