agentera 3.0.0-dev.25 → 3.0.0-dev.26

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 (270) hide show
  1. package/README.md +16 -20
  2. package/bundle/CHANGELOG.md +15 -25
  3. package/bundle/README.md +13 -34
  4. package/bundle/UPGRADE.md +71 -165
  5. package/bundle/references/adapters/package-manifest-interface-model.yaml +40 -241
  6. package/bundle/references/adapters/package-registry.yaml +0 -145
  7. package/bundle/references/adapters/package-surface-characterization.md +13 -38
  8. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +5 -219
  9. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +2 -29
  10. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +1 -1
  11. package/bundle/references/artifacts/state-storage-authority.yaml +43 -447
  12. package/bundle/references/cli/agent-ready-state-contract.yaml +9 -9
  13. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  14. package/bundle/references/cli/bundle-skill-vocabulary.yaml +9 -18
  15. package/bundle/references/cli/capability-tool-classification.yaml +2 -2
  16. package/bundle/references/cli/prime-consumer-compatibility.yaml +28 -98
  17. package/bundle/references/cli/routing-execution-vocabulary.yaml +4 -22
  18. package/bundle/references/cli/upgrade-repair-wording.md +8 -28
  19. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +2 -3
  20. package/bundle/references/cli/vocabulary.md +18 -23
  21. package/bundle/references/meta/documentation-inventory.md +1 -1
  22. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +3 -11
  23. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +1 -1
  24. package/dist/cli/capabilityContext/bespoke.js +8 -2
  25. package/dist/cli/capabilityContext/bespoke.js.map +1 -1
  26. package/dist/cli/capabilityContext/closeout.js +3 -3
  27. package/dist/cli/capabilityContext/closeout.js.map +1 -1
  28. package/dist/cli/capabilityContext/evidence.js +52 -40
  29. package/dist/cli/capabilityContext/evidence.js.map +1 -1
  30. package/dist/cli/capabilityContext/startup.js +1 -1
  31. package/dist/cli/capabilityContext/startup.js.map +1 -1
  32. package/dist/cli/commands/doctor.js +6 -64
  33. package/dist/cli/commands/doctor.js.map +1 -1
  34. package/dist/cli/commands/durability.js +12 -48
  35. package/dist/cli/commands/durability.js.map +1 -1
  36. package/dist/cli/commands/prime/briefOrientation.js +2 -19
  37. package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
  38. package/dist/cli/commands/prime/bundleStatus.js +8 -2
  39. package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
  40. package/dist/cli/commands/prime/collectEntityOrientation.js +27 -14
  41. package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
  42. package/dist/cli/commands/prime/collectOrientationState.js +31 -52
  43. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  44. package/dist/cli/commands/prime/orientationOutput.js +3 -11
  45. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  46. package/dist/cli/commands/prime.js +0 -5
  47. package/dist/cli/commands/prime.js.map +1 -1
  48. package/dist/cli/commands/query.js +17 -49
  49. package/dist/cli/commands/query.js.map +1 -1
  50. package/dist/cli/commands/schema.js +19 -78
  51. package/dist/cli/commands/schema.js.map +1 -1
  52. package/dist/cli/commands/state/decisions.js +11 -57
  53. package/dist/cli/commands/state/decisions.js.map +1 -1
  54. package/dist/cli/commands/state/docs.js +56 -120
  55. package/dist/cli/commands/state/docs.js.map +1 -1
  56. package/dist/cli/commands/state/experimentRecords.js +22 -121
  57. package/dist/cli/commands/state/experimentRecords.js.map +1 -1
  58. package/dist/cli/commands/state/experiments.js +9 -75
  59. package/dist/cli/commands/state/experiments.js.map +1 -1
  60. package/dist/cli/commands/state/get.js +62 -143
  61. package/dist/cli/commands/state/get.js.map +1 -1
  62. package/dist/cli/commands/state/health.js +9 -123
  63. package/dist/cli/commands/state/health.js.map +1 -1
  64. package/dist/cli/commands/state/index.js +2 -2
  65. package/dist/cli/commands/state/index.js.map +1 -1
  66. package/dist/cli/commands/state/list.js +20 -36
  67. package/dist/cli/commands/state/list.js.map +1 -1
  68. package/dist/cli/commands/state/objective.js +19 -86
  69. package/dist/cli/commands/state/objective.js.map +1 -1
  70. package/dist/cli/commands/state/plan.js +9 -388
  71. package/dist/cli/commands/state/plan.js.map +1 -1
  72. package/dist/cli/commands/state/planTasks.js +58 -93
  73. package/dist/cli/commands/state/planTasks.js.map +1 -1
  74. package/dist/cli/commands/state/plans.js +13 -40
  75. package/dist/cli/commands/state/plans.js.map +1 -1
  76. package/dist/cli/commands/state/progress.js +10 -55
  77. package/dist/cli/commands/state/progress.js.map +1 -1
  78. package/dist/cli/commands/state/todo.js +24 -133
  79. package/dist/cli/commands/state/todo.js.map +1 -1
  80. package/dist/cli/commands/state/write.js +11 -33
  81. package/dist/cli/commands/state/write.js.map +1 -1
  82. package/dist/cli/commands/upgrade.js +48 -18
  83. package/dist/cli/commands/upgrade.js.map +1 -1
  84. package/dist/cli/commands/upgradeVerify.js +21 -15
  85. package/dist/cli/commands/upgradeVerify.js.map +1 -1
  86. package/dist/cli/commands/validate.js +1 -9
  87. package/dist/cli/commands/validate.js.map +1 -1
  88. package/dist/cli/dispatch/check.js +5 -12
  89. package/dist/cli/dispatch/check.js.map +1 -1
  90. package/dist/cli/dispatch/index.js +30 -29
  91. package/dist/cli/dispatch/index.js.map +1 -1
  92. package/dist/cli/dispatch/lifecycle.js +23 -40
  93. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  94. package/dist/cli/help.js +20 -100
  95. package/dist/cli/help.js.map +1 -1
  96. package/dist/cli/migrationRequired.js +22 -19
  97. package/dist/cli/migrationRequired.js.map +1 -1
  98. package/dist/cli/orientation/attention.js +1 -97
  99. package/dist/cli/orientation/attention.js.map +1 -1
  100. package/dist/cli/stateQuery.js +1 -2
  101. package/dist/cli/stateQuery.js.map +1 -1
  102. package/dist/core/skillIdentity.js +24 -0
  103. package/dist/core/skillIdentity.js.map +1 -0
  104. package/dist/hooks/common.js +1 -1
  105. package/dist/hooks/common.js.map +1 -1
  106. package/dist/hooks/compaction/status.js +2 -1
  107. package/dist/hooks/compaction/status.js.map +1 -1
  108. package/dist/hooks/cursorSessionStart.js +4 -25
  109. package/dist/hooks/cursorSessionStart.js.map +1 -1
  110. package/dist/hooks/projectHookInput.js +26 -0
  111. package/dist/hooks/projectHookInput.js.map +1 -0
  112. package/dist/hooks/sessionStart.js +23 -239
  113. package/dist/hooks/sessionStart.js.map +1 -1
  114. package/dist/hooks/sessionStop.js +4 -12
  115. package/dist/hooks/sessionStop.js.map +1 -1
  116. package/dist/hooks/validateArtifact/traversal.js +1 -1
  117. package/dist/hooks/validateArtifact/traversal.js.map +1 -1
  118. package/dist/registries/artifactRegistry.js +2 -1
  119. package/dist/registries/artifactRegistry.js.map +1 -1
  120. package/dist/registries/packageRegistry.js +57 -231
  121. package/dist/registries/packageRegistry.js.map +1 -1
  122. package/dist/release/releaseMetadata.js +1 -13
  123. package/dist/release/releaseMetadata.js.map +1 -1
  124. package/dist/runtime/lifecycleAdapterContract.js +4 -4
  125. package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
  126. package/dist/runtime/lifecycleAdapters.js +14 -2
  127. package/dist/runtime/lifecycleAdapters.js.map +1 -1
  128. package/dist/runtime/lifecycleAuthority.js +5 -43
  129. package/dist/runtime/lifecycleAuthority.js.map +1 -1
  130. package/dist/runtime/lifecycleOperationContract.js +3 -2
  131. package/dist/runtime/lifecycleOperationContract.js.map +1 -1
  132. package/dist/runtime/lifecyclePublication.js +21 -0
  133. package/dist/runtime/lifecyclePublication.js.map +1 -1
  134. package/dist/setup/opencode.js +20 -12
  135. package/dist/setup/opencode.js.map +1 -1
  136. package/dist/setup/sharedSkill.js +46 -0
  137. package/dist/setup/sharedSkill.js.map +1 -0
  138. package/dist/setup/smokeChecks.js +16 -43
  139. package/dist/setup/smokeChecks.js.map +1 -1
  140. package/dist/state/decisionEntities.js +7 -4
  141. package/dist/state/decisionEntities.js.map +1 -1
  142. package/dist/state/durability.js +4 -240
  143. package/dist/state/durability.js.map +1 -1
  144. package/dist/state/entityCutover.js +90 -186
  145. package/dist/state/entityCutover.js.map +1 -1
  146. package/dist/state/entityStorage.js +27 -8
  147. package/dist/state/entityStorage.js.map +1 -1
  148. package/dist/state/healthEntities.js +7 -4
  149. package/dist/state/healthEntities.js.map +1 -1
  150. package/dist/state/objectiveExperimentEntities.js +7 -5
  151. package/dist/state/objectiveExperimentEntities.js.map +1 -1
  152. package/dist/state/planEntities.js +14 -10
  153. package/dist/state/planEntities.js.map +1 -1
  154. package/dist/state/progressEntities.js +4 -2
  155. package/dist/state/progressEntities.js.map +1 -1
  156. package/dist/state/startupProjection.js +3 -2
  157. package/dist/state/startupProjection.js.map +1 -1
  158. package/dist/state/stateMode.js +7 -0
  159. package/dist/state/stateMode.js.map +1 -1
  160. package/dist/state/todoDocsEntities.js +6 -4
  161. package/dist/state/todoDocsEntities.js.map +1 -1
  162. package/dist/state/write/explain.js +1 -9
  163. package/dist/state/write/explain.js.map +1 -1
  164. package/dist/state/write/transaction.js +22 -532
  165. package/dist/state/write/transaction.js.map +1 -1
  166. package/dist/upgrade/appContentRefresh.js +43 -28
  167. package/dist/upgrade/appContentRefresh.js.map +1 -1
  168. package/dist/upgrade/doctor.js +5 -1
  169. package/dist/upgrade/doctor.js.map +1 -1
  170. package/dist/upgrade/installedHooksRetirement.js +46 -39
  171. package/dist/upgrade/installedHooksRetirement.js.map +1 -1
  172. package/dist/upgrade/legacyAgentCleanup.js +132 -32
  173. package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
  174. package/dist/upgrade/lifecycleUpgrade.js +65 -378
  175. package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
  176. package/dist/upgrade/migrateArtifactsV2ToV3.js +151 -52
  177. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  178. package/dist/upgrade/migrationPublication.js +123 -0
  179. package/dist/upgrade/migrationPublication.js.map +1 -0
  180. package/dist/upgrade/projectIntegration.js +46 -113
  181. package/dist/upgrade/projectIntegration.js.map +1 -1
  182. package/dist/upgrade/projectIntegrationDecision.js +6 -96
  183. package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
  184. package/dist/upgrade/runtimeMigration.js +222 -402
  185. package/dist/upgrade/runtimeMigration.js.map +1 -1
  186. package/dist/upgrade/upgradeCommands.js +5 -4
  187. package/dist/upgrade/upgradeCommands.js.map +1 -1
  188. package/dist/upgrade/upgradeLock.js +73 -41
  189. package/dist/upgrade/upgradeLock.js.map +1 -1
  190. package/dist/upgrade/upgradeOrchestrator.js +91 -158
  191. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  192. package/dist/upgrade/v3CapabilitySurface.js +2 -2
  193. package/dist/validate/appHomeContract.js +0 -4
  194. package/dist/validate/appHomeContract.js.map +1 -1
  195. package/package.json +7 -5
  196. package/bundle/.codex-plugin/plugin.json +0 -92
  197. package/bundle/.cursor/agents/agentera.md +0 -7
  198. package/bundle/.cursor/hooks.json +0 -32
  199. package/bundle/.cursor-plugin/plugin.json +0 -34
  200. package/bundle/.github/hooks/postToolUse.json +0 -9
  201. package/bundle/.github/hooks/preToolUse.json +0 -8
  202. package/bundle/.github/hooks/sessionEnd.json +0 -8
  203. package/bundle/.github/hooks/sessionStart.json +0 -8
  204. package/bundle/.github/plugin/plugin.json +0 -7
  205. package/bundle/.opencode/agents/agentera.md +0 -12
  206. package/bundle/.opencode/commands/agentera.md +0 -5
  207. package/bundle/.opencode/package.json +0 -31
  208. package/bundle/.opencode/plugins/agentera.js +0 -820
  209. package/bundle/agents/openai.yaml +0 -87
  210. package/bundle/hooks/codex-hooks.json +0 -31
  211. package/bundle/hooks/codex-plugin-hooks.json +0 -31
  212. package/bundle/plugin.json +0 -13
  213. package/bundle/references/adapters/cursor.md +0 -224
  214. package/bundle/references/adapters/opencode.md +0 -529
  215. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -44
  216. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  217. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -387
  218. package/bundle/references/adapters/runtime-feature-parity.md +0 -129
  219. package/dist/cli/commands/backfill.js +0 -231
  220. package/dist/cli/commands/backfill.js.map +0 -1
  221. package/dist/cli/commands/migrate.js +0 -681
  222. package/dist/cli/commands/migrate.js.map +0 -1
  223. package/dist/registries/runtimeAdapterRegistry.js +0 -324
  224. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  225. package/dist/setup/copilot.js +0 -227
  226. package/dist/setup/copilot.js.map +0 -1
  227. package/dist/setup/cursor.js +0 -129
  228. package/dist/setup/cursor.js.map +0 -1
  229. package/dist/setup/cursorSurfaces.js +0 -67
  230. package/dist/setup/cursorSurfaces.js.map +0 -1
  231. package/dist/setup/doctor/core.js +0 -296
  232. package/dist/setup/doctor/core.js.map +0 -1
  233. package/dist/setup/doctor/diagnostics.js +0 -201
  234. package/dist/setup/doctor/diagnostics.js.map +0 -1
  235. package/dist/setup/doctor/opencode.js +0 -301
  236. package/dist/setup/doctor/opencode.js.map +0 -1
  237. package/dist/setup/doctor/report.js +0 -425
  238. package/dist/setup/doctor/report.js.map +0 -1
  239. package/dist/setup/doctor.js +0 -10
  240. package/dist/setup/doctor.js.map +0 -1
  241. package/dist/state/gitBackfill.js +0 -561
  242. package/dist/state/gitBackfill.js.map +0 -1
  243. package/dist/state/gitBackfillAuthority.js +0 -141
  244. package/dist/state/gitBackfillAuthority.js.map +0 -1
  245. package/dist/state/gitBackfillHistory.js +0 -278
  246. package/dist/state/gitBackfillHistory.js.map +0 -1
  247. package/dist/state/gitBackfillOutput.js +0 -209
  248. package/dist/state/gitBackfillOutput.js.map +0 -1
  249. package/dist/state/legacyMigration.js +0 -516
  250. package/dist/state/legacyMigration.js.map +0 -1
  251. package/dist/state/legacyMigrationParser.js +0 -489
  252. package/dist/state/legacyMigrationParser.js.map +0 -1
  253. package/dist/state/migrationAuthority.js +0 -413
  254. package/dist/state/migrationAuthority.js.map +0 -1
  255. package/dist/state/migrationEnrichment.js +0 -35
  256. package/dist/state/migrationEnrichment.js.map +0 -1
  257. package/dist/state/projectionRecovery.js +0 -458
  258. package/dist/state/projectionRecovery.js.map +0 -1
  259. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -568
  260. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  261. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  262. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  263. package/dist/validate/lifecycleAdapters/lifecycleMain.js +0 -154
  264. package/dist/validate/lifecycleAdapters/lifecycleMain.js.map +0 -1
  265. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -481
  266. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  267. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  268. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  269. package/dist/validate/lifecycleAdapters.js +0 -10
  270. package/dist/validate/lifecycleAdapters.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/state/write/explain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../../src/state/write/explain.ts"],"names":[],"mappings":"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"}
@@ -1,553 +1,43 @@
1
- import { createHash, randomUUID } from "node:crypto";
2
- import fs from "node:fs";
3
- import path from "node:path";
4
- import { isDeepStrictEqual } from "node:util";
5
- import { splitLinesKeepEnds, unifiedDiff } from "../../core/difflib.js";
6
- import { dumpYamlMapping, loadYamlMapping } from "../../core/yaml.js";
7
- import { compactYamlFile, decisionProtectedOverflowCount, } from "../../hooks/compaction/index.js";
8
- import { assertRealpathBoundary, loadArtifactRegistry, resolveArtifactPath, } from "../../registries/artifactRegistry.js";
9
- import { withStateMutation, } from "./mutation.js";
10
- import { nextEntryNumber } from "./assign.js";
11
- import { mutateCandidate, normalizedDecisionPayload } from "./candidateMutation.js";
12
- import { array, findByNumber, mapping, schemaViolation } from "./helpers.js";
13
- import { reject } from "./errors.js";
14
- import { validateArtifactBytes } from "./validate.js";
15
- import { planEvaluationViolations, validatePlanCreateInput, validatePlanPublicationCandidate, } from "./planPublication.js";
16
- import { dependencyReadyTasks } from "../../cli/capabilityContext/planState.js";
17
- import { publishImmutableFile, } from "../archivePublication.js";
18
- import { findArchivedReplay } from "../archiveReplay.js";
19
- import { discoverNumberedArchives } from "../archiveDiscovery.js";
20
- import { hydrateDecisionRecords, updateDecisionOverlay, } from "../decisionOverlay.js";
21
- import { dispatchDecisionAmendment } from "../decisionRevisionPublication.js";
22
- import { decisionLegacyCoexistence, gateCandidateDecisions, gateCompactedDecisions, gateExistingDecisions, } from "../decisionLegacyValidation.js";
23
- import { repairHealthProjectionBytes } from "../healthRepair.js";
24
- import { executeExperimentPublication } from "./experimentPublication.js";
25
- import { detectStateModeBinding } from "../stateMode.js";
26
- import { appendProgressEntity } from "../progressEntities.js";
27
1
  import { amendDecisionEntity, appendDecisionEntity, updateDecisionSatisfactionEntity } from "../decisionEntities.js";
28
2
  import { appendHealthEntity } from "../healthEntities.js";
29
- import { mutatePlanEntities } from "../planEntities.js";
30
3
  import { mutateObjectiveEntity, publishExperimentEntity } from "../objectiveExperimentEntities.js";
4
+ import { mutatePlanEntities } from "../planEntities.js";
5
+ import { appendProgressEntity } from "../progressEntities.js";
6
+ import { requireEntityStateBinding } from "../stateMode.js";
31
7
  import { mutateTodoDocsEntity } from "../todoDocsEntities.js";
32
- function readExisting(target) {
33
- if (!fs.existsSync(target))
34
- return { doc: {}, bytes: "" };
35
- const bytes = fs.readFileSync(target, "utf8");
36
- try {
37
- return { doc: loadYamlMapping(bytes), bytes };
38
- }
39
- catch (error) {
40
- throw new Error(`cannot parse existing artifact '${target}': ${error.message}; run agentera check validate artifact before retrying`);
41
- }
42
- }
43
- function activeKey(artifact) {
44
- return artifact === "progress"
45
- ? "cycles"
46
- : artifact === "decisions"
47
- ? "decisions"
48
- : artifact === "health"
49
- ? "audits"
50
- : artifact === "experiments"
51
- ? "experiments"
52
- : "tasks";
53
- }
54
- function stateSlice(artifact, doc, archivePath) {
55
- if (artifact === "plan") {
56
- const tasks = array(doc, "tasks");
57
- return {
58
- title: mapping(doc.header).title ?? doc.title ?? null,
59
- status: mapping(doc.header).status ?? doc.status ?? null,
60
- task_count: tasks.length,
61
- next_pending_task: dependencyReadyTasks(tasks).find((task) => task.status === "pending") ?? null,
62
- ...(archivePath ? { archive_path: archivePath } : {}),
63
- };
64
- }
65
- const active = array(doc, activeKey(artifact));
66
- const archive = Array.isArray(doc.archive) ? doc.archive : [];
67
- return {
68
- active_count: active.length,
69
- archive_count: archive.length,
70
- next_number: nextEntryNumber(doc, activeKey(artifact)),
71
- ...(archivePath ? { archive_path: archivePath } : {}),
72
- };
73
- }
74
- function diffText(before, after, target) {
75
- return unifiedDiff(splitLinesKeepEnds(before), splitLinesKeepEnds(after), target, target).join("");
76
- }
77
- function slug(value) {
78
- return (String(value ?? "plan")
79
- .replace(/^Plan:\s*/i, "")
80
- .toLowerCase()
81
- .replace(/[^a-z0-9]+/g, "-")
82
- .replace(/^-|-$/g, "") || "plan");
83
- }
84
- function assertWriterBoundary(projectRoot, candidate, artifactId) {
85
- try {
86
- assertRealpathBoundary(projectRoot, candidate, artifactId);
87
- }
88
- catch (error) {
89
- const message = error.message;
90
- if (message.startsWith("artifact '"))
91
- reject({ class: "unsupported_target", message });
92
- throw error;
93
- }
94
- }
95
- function archivePathFor(projectRoot, target, doc, bytes) {
96
- const header = mapping(doc.header);
97
- const created = String(header.created ?? "undated").replace(/[^0-9-]/g, "") || "undated";
98
- const title = header.title ?? doc.title;
99
- // Archive identity must survive a retry that crosses a calendar boundary.
100
- const identity = createHash("sha256").update(bytes).digest("hex").slice(0, 16);
101
- const archivePath = path.join(path.dirname(target), "archive", `PLAN-${created}-${slug(title)}-${identity}.yaml`);
102
- assertWriterBoundary(projectRoot, archivePath, "plan archive");
103
- return archivePath;
104
- }
105
- function decisionRecordForUpdate(projectRoot, doc, number) {
106
- const current = findByNumber(array(doc, "decisions"), number) ?? findByNumber(array(doc, "archive"), number);
107
- if (current)
108
- return current;
109
- const archived = discoverNumberedArchives(projectRoot).entries.find((entry) => entry.artifactId === "decisions" && entry.entryNumber === number);
110
- return archived?.record ?? null;
111
- }
112
- function latestArchivePath(archiveDirectory) {
113
- if (!fs.existsSync(archiveDirectory))
114
- return null;
115
- const latest = fs
116
- .readdirSync(archiveDirectory)
117
- .filter((name) => name.startsWith("PLAN-") && name.endsWith(".yaml"))
118
- .sort()
119
- .at(-1);
120
- return latest ? path.join(archiveDirectory, latest) : null;
121
- }
122
- function canonicalPlanDocumentForWrite(doc) {
123
- const header = mapping(doc.header);
124
- const status = String(header.status ?? "");
125
- if (status !== "active" && status !== "completed")
126
- return doc;
127
- const canonicalStatus = status === "active" || array(doc, "tasks").some((task) => task.status !== "complete")
128
- ? "open"
129
- : "complete";
130
- return { ...doc, header: { ...header, status: canonicalStatus } };
131
- }
132
- function canonicalPlanDocumentForArchive(doc) {
133
- const candidate = structuredClone(doc);
134
- const tasks = array(candidate, "tasks");
135
- const complete = tasks.length > 0 && tasks.every((task) => task.status === "complete");
136
- candidate.header = { ...mapping(candidate.header), status: complete ? "complete" : "open" };
137
- return candidate;
138
- }
139
- function fsyncDirectory(directory) {
140
- const fd = fs.openSync(directory, "r");
8
+ import { reject } from "./errors.js";
9
+ export function executeStateWrite(req, _options = {}) {
10
+ const binding = requireEntityStateBinding(req.projectRoot);
11
+ const publicationContext = binding.publicationContext;
141
12
  try {
142
- fs.fsyncSync(fd);
143
- }
144
- finally {
145
- fs.closeSync(fd);
146
- }
147
- }
148
- function ensureArchive(archivePath, bytes) {
149
- return publishImmutableFile(archivePath, bytes, {
150
- onExisting: () => {
151
- if (fs.readFileSync(archivePath, "utf8") !== bytes)
152
- reject({
153
- class: "conflict",
154
- message: `archive path '${archivePath}' already exists with different content; historical archives are immutable`,
155
- });
156
- },
157
- });
158
- }
159
- function publishStagedPlan(stage, target) {
160
- fs.renameSync(stage, target);
161
- fsyncDirectory(path.dirname(target));
162
- }
163
- function removeCurrentPlan(target) {
164
- fs.unlinkSync(target);
165
- fsyncDirectory(path.dirname(target));
166
- }
167
- function stagingPath(req, target) {
168
- const dir = req.dryRun ? path.join(req.projectRoot, ".agentera") : path.dirname(target);
169
- if (!req.dryRun)
170
- fs.mkdirSync(dir, { recursive: true });
171
- return path.join(dir, `.${path.basename(target)}.writer.${process.pid}.${Date.now()}.tmp`);
172
- }
173
- function planLifecycle(req, target, existing, legacyLifecycle = false) {
174
- if (req.spec.verb === "archive") {
175
- const archiveDir = path.join(path.dirname(target), "archive");
176
- assertWriterBoundary(req.projectRoot, archiveDir, "plan archive");
177
- if (!existing.bytes) {
178
- const archivePath = latestArchivePath(archiveDir);
179
- if (!archivePath)
180
- reject({ class: "unsupported_target", message: "no active plan exists to archive" });
181
- const archived = readExisting(archivePath);
182
- return envelope(req, target, {}, mapping(archived.doc.header), {}, true, null, {
183
- archivePath,
184
- ...(req.dryRun ? { diff: "", before: {}, after: {} } : {}),
185
- });
186
- }
187
- const status = String(mapping(existing.doc.header).status ?? existing.doc.status ?? "");
188
- const incomplete = status !== "complete" ||
189
- array(existing.doc, "tasks").some((task) => task.status !== "complete");
190
- if (incomplete && !req.force)
191
- reject({
192
- class: "conflict",
193
- message: `active plan "${mapping(existing.doc.header).title ?? existing.doc.title ?? "untitled"}" has status ${status || "unknown"} or incomplete tasks; archiving would discard incomplete work`,
194
- syntax: "agentera state plan archive --force",
195
- });
196
- const preserveExactBytes = req.force && !legacyLifecycle;
197
- const archiveDoc = preserveExactBytes ? existing.doc : canonicalPlanDocumentForArchive(existing.doc);
198
- const archiveBytes = preserveExactBytes ? existing.bytes : dumpYamlMapping(archiveDoc);
199
- const archivePath = archivePathFor(req.projectRoot, target, archiveDoc, archiveBytes);
200
- const predecessorValidation = validatePlanPublicationCandidate(archiveBytes, {
201
- allowHistoricalBudgetOverflow: req.force,
202
- });
203
- if (!req.dryRun) {
204
- // Archive creation and current-plan removal cannot be one filesystem transaction.
205
- // The durable archive is published first; retries remove the current plan only after
206
- // they observe that exact immutable archive.
207
- ensureArchive(archivePath, archiveBytes);
208
- removeCurrentPlan(target);
209
- }
210
- return envelope(req, target, {}, mapping(archiveDoc.header), {}, false, null, {
211
- archivePath,
212
- diff: diffText(existing.bytes, "", target),
213
- before: existing.doc,
214
- after: {},
215
- validationDiagnostics: predecessorValidation.diagnostics,
216
- });
217
- }
218
- const input = structuredClone(req.input ?? {});
219
- validatePlanCreateInput(input);
220
- const candidateStatus = String(mapping(input.header).status ?? input.status ?? "");
221
- if (!candidateStatus)
222
- reject({ class: "schema_violation", message: "plan create input requires header.status" });
223
- let archivePath;
224
- let predecessorBytes = null;
225
- if (existing.bytes) {
226
- const oldStatus = String(mapping(existing.doc.header).status ?? existing.doc.status ?? "");
227
- const existingWithoutLineage = structuredClone(existing.doc);
228
- delete existingWithoutLineage.previous_plan_archived;
229
- const existingHeader = mapping(existingWithoutLineage.header);
230
- delete existingHeader.id;
231
- existingWithoutLineage.header = existingHeader;
232
- const sameWithoutLineage = isDeepStrictEqual(existingWithoutLineage, input);
233
- if (sameWithoutLineage && !legacyLifecycle) {
234
- const predecessorBytes = req.force ? existing.bytes : dumpYamlMapping(existing.doc);
235
- const predecessorValidation = validatePlanPublicationCandidate(predecessorBytes, {
236
- allowHistoricalBudgetOverflow: req.force,
237
- });
238
- return envelope(req, target, existing.doc, mapping(existing.doc.header), {}, true, null, req.dryRun
239
- ? {
240
- diff: "",
241
- before: existing.doc,
242
- after: existing.doc,
243
- validationDiagnostics: predecessorValidation.diagnostics,
244
- }
245
- : { validationDiagnostics: predecessorValidation.diagnostics });
246
- }
247
- if (!sameWithoutLineage) {
248
- if (oldStatus !== "complete" && !req.force)
249
- reject({
250
- class: "conflict",
251
- message: `active plan "${mapping(existing.doc.header).title ?? existing.doc.title ?? "untitled"}" has status ${oldStatus || "unknown"}; replacing it would discard incomplete work`,
252
- });
253
- predecessorBytes = req.force && !legacyLifecycle ? existing.bytes : dumpYamlMapping(existing.doc);
254
- archivePath = archivePathFor(req.projectRoot, target, existing.doc, predecessorBytes);
255
- input.previous_plan_archived = path.relative(req.projectRoot, archivePath);
256
- }
257
- }
258
- input.header = { ...mapping(input.header), id: `plan:${randomUUID()}` };
259
- const bytes = dumpYamlMapping(input);
260
- const predecessorValidation = predecessorBytes
261
- ? validatePlanPublicationCandidate(predecessorBytes, { allowHistoricalBudgetOverflow: req.force })
262
- : { diagnostics: [] };
263
- validatePlanPublicationCandidate(bytes);
264
- const finalDoc = loadYamlMapping(bytes);
265
- if (!req.dryRun) {
266
- const stage = stagingPath(req, target);
267
- try {
268
- fs.writeFileSync(stage, bytes);
269
- // Archive and current replacement are deliberately two durable operations. If the
270
- // process stops between them, retry sees the exact archive and converges on this plan.
271
- if (predecessorBytes && archivePath)
272
- ensureArchive(archivePath, predecessorBytes);
273
- publishStagedPlan(stage, target);
274
- }
275
- finally {
276
- try {
277
- fs.unlinkSync(stage);
278
- }
279
- catch {
280
- /* published or already removed */
281
- }
282
- }
283
- }
284
- return envelope(req, target, finalDoc, mapping(finalDoc.header), {}, false, null, {
285
- archivePath,
286
- diff: diffText(existing.bytes, bytes, target),
287
- before: existing.doc,
288
- after: finalDoc,
289
- validationDiagnostics: predecessorValidation.diagnostics,
290
- });
291
- }
292
- function envelope(req, target, finalDoc, written, assigned, replay, compaction, extra = {}) {
293
- const result = {
294
- schemaVersion: "agentera.stateWrite.v1",
295
- command: `state ${req.artifact} ${req.spec.verb}`,
296
- status: "pass",
297
- artifact: req.artifact,
298
- path: target,
299
- operation: {
300
- verb: req.spec.verb,
301
- dry_run: req.dryRun,
302
- idempotent_replay: replay,
303
- forced: req.force,
304
- },
305
- assigned,
306
- written,
307
- state: stateSlice(req.artifact, finalDoc, extra.archivePath),
308
- validation: {
309
- status: "pass",
310
- violations: [],
311
- ...(extra.validationDiagnostics && extra.validationDiagnostics.length > 0
312
- ? { diagnostics: extra.validationDiagnostics }
313
- : {}),
314
- },
315
- ...(extra.compatibilityCaveats?.length
316
- ? { compatibility: { legacy_caveats: extra.compatibilityCaveats } } : {}),
317
- compaction: compaction && req.artifact === "decisions"
318
- ? { ...compaction, protected_overflow_count: extra.protectedOverflowCount ?? 0 }
319
- : compaction,
320
- };
321
- if (req.dryRun && extra.diff !== undefined) {
322
- result.diff = extra.diff;
323
- result.before = extra.before ?? {};
324
- result.after = extra.after ?? finalDoc;
325
- }
326
- return result;
327
- }
328
- export function executeStateWrite(req, options = {}) {
329
- const progressMode = req.artifact === "progress" && req.spec.verb === "append"
330
- ? detectStateModeBinding(req.projectRoot)
331
- : null;
332
- const decisionMode = req.artifact === "decisions" && ["append", "update", "amend"].includes(req.spec.verb)
333
- ? detectStateModeBinding(req.projectRoot)
334
- : null;
335
- const healthMode = req.artifact === "health" && ["append", "repair"].includes(req.spec.verb)
336
- ? detectStateModeBinding(req.projectRoot)
337
- : null;
338
- const planMode = req.artifact === "plan" ? detectStateModeBinding(req.projectRoot) : null;
339
- const objectiveExperimentMode = req.artifact === "objective" || req.artifact === "experiments" ? detectStateModeBinding(req.projectRoot) : null;
340
- const todoDocsMode = req.artifact === "todo" || req.artifact === "docs" ? detectStateModeBinding(req.projectRoot) : null;
341
- if (progressMode?.mode === "entities") {
342
- try {
343
- return appendProgressEntity(req, {
344
- publicationContext: progressMode.publicationContext,
345
- });
346
- }
347
- finally {
348
- progressMode.publicationContext.close();
349
- }
350
- }
351
- if (decisionMode?.mode === "entities") {
352
- try {
353
- const publicationContext = decisionMode.publicationContext;
13
+ if (req.artifact === "progress")
14
+ return appendProgressEntity(req, { publicationContext });
15
+ if (req.artifact === "decisions") {
354
16
  if (req.spec.verb === "append")
355
17
  return appendDecisionEntity(req, { publicationContext });
356
18
  if (req.spec.verb === "update")
357
19
  return updateDecisionSatisfactionEntity(req, { publicationContext });
358
20
  return amendDecisionEntity(req, { publicationContext });
359
21
  }
360
- finally {
361
- decisionMode.publicationContext.close();
362
- }
363
- }
364
- if (healthMode?.mode === "entities") {
365
- try {
366
- if (req.spec.verb === "repair")
22
+ if (req.artifact === "health") {
23
+ if (req.spec.verb === "repair") {
367
24
  reject({
368
25
  class: "unsupported_target",
369
26
  message: "canonical health audit entities are immutable and cannot be row-deduplicated; run agentera check validate state to diagnose malformed or duplicate ownership before repairing entity files",
370
27
  });
371
- return appendHealthEntity(req, { publicationContext: healthMode.publicationContext });
372
- }
373
- finally {
374
- healthMode.publicationContext.close();
375
- }
376
- }
377
- if (planMode?.mode === "entities") {
378
- try {
379
- return mutatePlanEntities(req, { publicationContext: planMode.publicationContext });
380
- }
381
- finally {
382
- planMode.publicationContext.close();
383
- }
384
- }
385
- if (objectiveExperimentMode?.mode === "entities") {
386
- try {
387
- return req.artifact === "objective"
388
- ? mutateObjectiveEntity(req, { publicationContext: objectiveExperimentMode.publicationContext })
389
- : publishExperimentEntity(req, { publicationContext: objectiveExperimentMode.publicationContext });
390
- }
391
- finally {
392
- objectiveExperimentMode.publicationContext.close();
393
- }
394
- }
395
- if (todoDocsMode?.mode === "entities") {
396
- try {
397
- return mutateTodoDocsEntity(req, { publicationContext: todoDocsMode.publicationContext });
398
- }
399
- finally {
400
- todoDocsMode.publicationContext.close();
401
- }
402
- }
403
- if (todoDocsMode?.mode === "legacy") {
404
- reject({
405
- class: "unsupported_target",
406
- message: `${req.artifact} item mutations are available only after durable entity cutover; the marker-absent legacy aggregate remains unchanged`,
407
- });
408
- }
409
- if (req.artifact === "decisions" && req.spec.verb === "amend") {
410
- return dispatchDecisionAmendment(req, options);
411
- }
412
- assertWriterBoundary(req.projectRoot, path.join(req.projectRoot, ".agentera"), "writer lock");
413
- const planPublication = req.artifact === "plan" && ["archive", "create"].includes(req.spec.verb);
414
- if (req.dryRun && planPublication)
415
- return executeStateWriteUnlocked(req);
416
- return withStateMutation(req.projectRoot, (transaction) => executeStateWriteUnlocked(req, transaction), options, progressMode?.root ?? healthMode?.root);
417
- }
418
- function executeStateWriteUnlocked(req, transaction) {
419
- if (req.artifact === "experiments" && req.spec.verb === "publish")
420
- return executeExperimentPublication(req, transaction);
421
- const record = loadArtifactRegistry().get(req.artifact);
422
- if (!record)
423
- throw new Error(`artifact '${req.artifact}' is not registered`);
424
- let target;
425
- try {
426
- target = resolveArtifactPath(record, req.projectRoot, { strictWrite: true });
427
- }
428
- catch (error) {
429
- const message = error.message;
430
- if (message.startsWith("artifact '"))
431
- reject({ class: "unsupported_target", message });
432
- throw error;
433
- }
434
- const existing = readExisting(target);
435
- const legacyLifecycle = req.artifact === "plan" && ["active", "completed"].includes(String(mapping(existing.doc.header).status ?? ""));
436
- if (legacyLifecycle)
437
- existing.doc = canonicalPlanDocumentForWrite(existing.doc);
438
- const decisionCoexistence = req.artifact === "decisions" ? decisionLegacyCoexistence() : null;
439
- let decisionLegacyCaveats = [];
440
- if (existing.bytes) {
441
- const validationBytes = req.artifact === "plan" ? dumpYamlMapping(existing.doc) : existing.bytes;
442
- const violations = validateArtifactBytes(req.artifact, validationBytes);
443
- if (violations.length)
444
- decisionLegacyCaveats = gateExistingDecisions(violations, existing.doc, decisionCoexistence, target);
445
- if (req.artifact === "plan") {
446
- const evaluationViolations = planEvaluationViolations(existing.doc);
447
- if (evaluationViolations.length > 0)
448
- throw new Error(`existing artifact '${target}' is schema-invalid: ${evaluationViolations.join("; ")}; repair it before retrying`);
449
- }
450
- }
451
- if (req.artifact === "decisions" && req.spec.verb === "update") {
452
- const number = Number(req.values.number);
453
- if (!Number.isSafeInteger(number) || number < 1)
454
- reject({
455
- class: "schema_violation",
456
- message: "decision update requires a positive decision number",
457
- syntax: "agentera state decisions update --number N --satisfaction-state STATE --format json",
458
- example: "agentera state decisions update --number 53 --satisfaction-state open --format json",
459
- });
460
- const record = decisionRecordForUpdate(req.projectRoot, existing.doc, number);
461
- if (!record)
462
- reject({
463
- class: "unsupported_target",
464
- message: `no decision with number ${number}; numbered archive or current projection record is required`,
465
- syntax: "agentera state decisions update --number N --satisfaction-state STATE --format json",
466
- example: "agentera state decisions update --number 53 --satisfaction-state open --format json",
467
- });
468
- if (!transaction)
469
- throw new Error("state mutation transaction is unavailable");
470
- const update = updateDecisionOverlay(req.projectRoot, number, req.values.satisfaction, record.satisfaction, transaction, !req.dryRun);
471
- const before = dumpYamlMapping(update.before);
472
- const after = dumpYamlMapping(update.after);
473
- return envelope(req, update.path, existing.doc, { satisfaction: update.satisfaction }, { number }, update.replay, null, { diff: diffText(before, after, update.path), before: update.before, after: update.after, compatibilityCaveats: decisionLegacyCaveats });
474
- }
475
- if (req.artifact === "plan" && ["archive", "create"].includes(req.spec.verb))
476
- return planLifecycle(req, target, existing, legacyLifecycle);
477
- if (!existing.bytes && req.artifact === "plan")
478
- reject({
479
- class: "unsupported_target",
480
- message: "no active plan exists; create one before appending a task",
481
- example: "agentera state plan create --input plan.yaml",
482
- });
483
- const numberedAppend = req.spec.verb === "append" && ["progress", "decisions", "health"].includes(req.artifact);
484
- const replayPayload = req.artifact === "decisions"
485
- ? normalizedDecisionPayload(req.callerPayload)
486
- : req.callerPayload;
487
- const mutated = mutateCandidate(req, existing.doc, numberedAppend ? findArchivedReplay(req.projectRoot, req.artifact, replayPayload) : undefined);
488
- if (mutated.replay && isDeepStrictEqual(mutated.candidate, existing.doc)) {
489
- let archive;
490
- if (numberedAppend && !req.dryRun) {
491
- if (!transaction)
492
- throw new Error("state mutation transaction is unavailable");
493
- archive = transaction.publishArchive(req.artifact, Number(mutated.written.number), mutated.written);
494
- }
495
- return envelope(req, target, mutated.candidate, mutated.written, mutated.assigned, true, null, {
496
- ...(archive ? { archivePath: archive.path } : {}),
497
- ...(req.dryRun ? { diff: "", before: existing.doc, after: mutated.candidate } : {}),
498
- compatibilityCaveats: decisionLegacyCaveats,
499
- });
500
- }
501
- const repairedBytes = req.artifact === "health" && req.spec.verb === "repair"
502
- ? repairHealthProjectionBytes(existing.bytes, Number(req.values.number), req.values.keep === "last" ? "last" : "first")
503
- : null;
504
- if (repairedBytes && repairedBytes.removed === 0)
505
- reject({ class: "unsupported_target", message: `health audit ${Number(req.values.number)} has no duplicate current-history rows to repair` });
506
- const candidateBytes = repairedBytes?.bytes ?? dumpYamlMapping(mutated.candidate);
507
- const candidateViolations = validateArtifactBytes(req.artifact, candidateBytes);
508
- decisionLegacyCaveats = gateCandidateDecisions(candidateViolations, mutated.candidate, decisionCoexistence, Number(mutated.written.number), schemaViolation);
509
- const stage = req.dryRun
510
- ? stagingPath(req, target)
511
- : transaction?.stageProjection(target, candidateBytes);
512
- if (!stage)
513
- throw new Error("state mutation transaction is unavailable");
514
- let compaction = null;
515
- const protectedOverflowCount = req.artifact === "decisions"
516
- ? decisionProtectedOverflowCount(hydrateDecisionRecords(array(mutated.candidate, "decisions"), req.projectRoot), hydrateDecisionRecords(array(mutated.candidate, "archive"), req.projectRoot))
517
- : 0;
518
- try {
519
- if (req.dryRun)
520
- fs.writeFileSync(stage, candidateBytes);
521
- if (req.spec.compacts) {
522
- compaction = compactYamlFile(stage, req.artifact, req.projectRoot);
523
- }
524
- const finalBytes = fs.readFileSync(stage, "utf8");
525
- const finalViolations = validateArtifactBytes(req.artifact, finalBytes);
526
- const finalDoc = loadYamlMapping(finalBytes);
527
- decisionLegacyCaveats = gateCompactedDecisions(finalViolations, finalDoc, decisionCoexistence, Number(mutated.written.number));
528
- if (!req.dryRun)
529
- transaction?.syncStaged(stage);
530
- const diff = diffText(existing.bytes, finalBytes, target);
531
- if (req.dryRun) {
532
- return envelope(req, target, finalDoc, mutated.written, mutated.assigned, false, compaction, { diff, before: existing.doc, after: finalDoc, protectedOverflowCount, compatibilityCaveats: decisionLegacyCaveats });
28
+ }
29
+ return appendHealthEntity(req, { publicationContext });
533
30
  }
534
- const archive = numberedAppend
535
- ? transaction?.publishArchive(req.artifact, Number(mutated.written.number), mutated.written)
536
- : undefined;
537
- if (!req.dryRun)
538
- transaction?.publishProjection(stage, target);
539
- return envelope(req, target, finalDoc, mutated.written, mutated.assigned, mutated.replay, compaction, { ...(archive ? { archivePath: archive.path } : {}), protectedOverflowCount, compatibilityCaveats: decisionLegacyCaveats });
31
+ if (req.artifact === "plan")
32
+ return mutatePlanEntities(req, { publicationContext });
33
+ if (req.artifact === "objective")
34
+ return mutateObjectiveEntity(req, { publicationContext });
35
+ if (req.artifact === "experiments")
36
+ return publishExperimentEntity(req, { publicationContext });
37
+ return mutateTodoDocsEntity(req, { publicationContext });
540
38
  }
541
39
  finally {
542
- try {
543
- if (req.dryRun)
544
- fs.unlinkSync(stage);
545
- else
546
- transaction?.removeStage(stage);
547
- }
548
- catch {
549
- /* stage published or absent */
550
- }
40
+ publicationContext.close();
551
41
  }
552
42
  }
553
43
  //# sourceMappingURL=transaction.js.map