agentera 3.0.0-dev.39 → 3.0.0-dev.41

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 (428) hide show
  1. package/README.md +1 -1
  2. package/bundle/CHANGELOG.md +55 -8
  3. package/bundle/README.md +3 -3
  4. package/bundle/references/artifacts/glossary-entry-contract.yaml +18 -5
  5. package/bundle/references/artifacts/state-storage-authority.yaml +865 -171
  6. package/bundle/references/cli/agent-ready-state-contract.yaml +12 -12
  7. package/bundle/references/cli/audience-namespace-cli-migration.yaml +5 -5
  8. package/bundle/references/cli/prime-consumer-compatibility.yaml +58 -18
  9. package/bundle/references/cli/vocabulary-index.yaml +1 -1
  10. package/bundle/references/cli/vocabulary.md +4 -3
  11. package/bundle/skills/agentera/SKILL.md +23 -4
  12. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +3 -3
  13. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +3 -1
  14. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +2 -1
  15. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +3 -1
  16. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +2 -2
  17. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +3 -1
  18. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +3 -1
  19. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +2 -1
  20. package/bundle/skills/agentera/capability_schema_contract.yaml +1 -1
  21. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +89 -30
  22. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +103 -20
  23. package/dist/analytics/extractCorpus/cli.js.map +1 -1
  24. package/dist/analytics/extractCorpus/copilotSessions.js.map +1 -1
  25. package/dist/analytics/extractCorpus/core.js.map +1 -1
  26. package/dist/analytics/extractCorpus/corpus.js.map +1 -1
  27. package/dist/analytics/extractCorpus/coverageAudit.js.map +1 -1
  28. package/dist/analytics/extractCorpus/cursorSessions.js.map +1 -1
  29. package/dist/analytics/extractCorpus/evidenceTiers.js.map +1 -1
  30. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +1 -1
  31. package/dist/analytics/extractCorpus/filesystemSources.js.map +1 -1
  32. package/dist/analytics/extractCorpus/index.js.map +1 -1
  33. package/dist/analytics/extractCorpus/jsonlSessions.js.map +1 -1
  34. package/dist/analytics/extractCorpus/sqliteCaps.js.map +1 -1
  35. package/dist/analytics/extractCorpus/sqliteSessions.js.map +1 -1
  36. package/dist/analytics/extractCorpus/tierReader.js.map +1 -1
  37. package/dist/analytics/extractCorpus.js.map +1 -1
  38. package/dist/analytics/glossaryAdviceResolution.js.map +1 -1
  39. package/dist/analytics/glossaryInputAcquisition.js.map +1 -1
  40. package/dist/analytics/personalGlossaryAdmission.js.map +1 -1
  41. package/dist/analytics/personalGlossaryProfile.js +2 -1
  42. package/dist/analytics/personalGlossaryProfile.js.map +1 -1
  43. package/dist/analytics/profileSignals.js.map +1 -1
  44. package/dist/analytics/usageStats.js.map +1 -1
  45. package/dist/audit/terminologyDrift.js.map +1 -1
  46. package/dist/bin/agentera.js.map +1 -1
  47. package/dist/capabilities/audit/instructions.js.map +1 -1
  48. package/dist/capabilities/build/instructions.js +2 -2
  49. package/dist/capabilities/build/instructions.js.map +1 -1
  50. package/dist/capabilities/design/instructions.js.map +1 -1
  51. package/dist/capabilities/discuss/instructions.js +2 -1
  52. package/dist/capabilities/discuss/instructions.js.map +1 -1
  53. package/dist/capabilities/document/instructions.js.map +1 -1
  54. package/dist/capabilities/index.js +1 -1
  55. package/dist/capabilities/index.js.map +1 -1
  56. package/dist/capabilities/optimize/instructions.js +1 -0
  57. package/dist/capabilities/optimize/instructions.js.map +1 -1
  58. package/dist/capabilities/orchestrate/instructions.js.map +1 -1
  59. package/dist/capabilities/plan/instructions.js +3 -2
  60. package/dist/capabilities/plan/instructions.js.map +1 -1
  61. package/dist/capabilities/profile/instructions.js.map +1 -1
  62. package/dist/capabilities/research/instructions.js.map +1 -1
  63. package/dist/capabilities/status/instructions.js +8 -1
  64. package/dist/capabilities/status/instructions.js.map +1 -1
  65. package/dist/capabilities/status/startupInstructions.js.map +1 -1
  66. package/dist/capabilities/vision/instructions.js.map +1 -1
  67. package/dist/cli/appContext.js.map +1 -1
  68. package/dist/cli/argvalidate.js.map +1 -1
  69. package/dist/cli/capabilityContext/benchmark.js +2 -1
  70. package/dist/cli/capabilityContext/benchmark.js.map +1 -1
  71. package/dist/cli/capabilityContext/bespoke.js.map +1 -1
  72. package/dist/cli/capabilityContext/build.js +6 -6
  73. package/dist/cli/capabilityContext/build.js.map +1 -1
  74. package/dist/cli/capabilityContext/closeout.js +11 -7
  75. package/dist/cli/capabilityContext/closeout.js.map +1 -1
  76. package/dist/cli/capabilityContext/contract.js +4 -4
  77. package/dist/cli/capabilityContext/contract.js.map +1 -1
  78. package/dist/cli/capabilityContext/evidence.js +4 -4
  79. package/dist/cli/capabilityContext/evidence.js.map +1 -1
  80. package/dist/cli/capabilityContext/index.js.map +1 -1
  81. package/dist/cli/capabilityContext/orchestration.js +12 -7
  82. package/dist/cli/capabilityContext/orchestration.js.map +1 -1
  83. package/dist/cli/capabilityContext/planState.js.map +1 -1
  84. package/dist/cli/capabilityContext/progress.js.map +1 -1
  85. package/dist/cli/capabilityContext/projectVerification.js.map +1 -1
  86. package/dist/cli/capabilityContext/shared.js +2 -2
  87. package/dist/cli/capabilityContext/shared.js.map +1 -1
  88. package/dist/cli/capabilityContext/slim.js.map +1 -1
  89. package/dist/cli/capabilityContext/startup.js +6 -2
  90. package/dist/cli/capabilityContext/startup.js.map +1 -1
  91. package/dist/cli/capabilityContext/types.js +19 -14
  92. package/dist/cli/capabilityContext/types.js.map +1 -1
  93. package/dist/cli/capabilityContext.js.map +1 -1
  94. package/dist/cli/commands/appHome.js.map +1 -1
  95. package/dist/cli/commands/capability.js.map +1 -1
  96. package/dist/cli/commands/compact.js.map +1 -1
  97. package/dist/cli/commands/doctor.js.map +1 -1
  98. package/dist/cli/commands/durability.js.map +1 -1
  99. package/dist/cli/commands/entityMigrate.js.map +1 -1
  100. package/dist/cli/commands/glossaryAdvice.js.map +1 -1
  101. package/dist/cli/commands/lint.js.map +1 -1
  102. package/dist/cli/commands/personalGlossary.js.map +1 -1
  103. package/dist/cli/commands/prime/briefOrientation.js +260 -44
  104. package/dist/cli/commands/prime/briefOrientation.js.map +1 -1
  105. package/dist/cli/commands/prime/buildExecutionRequest.js.map +1 -1
  106. package/dist/cli/commands/prime/bundleStatus.js.map +1 -1
  107. package/dist/cli/commands/prime/collectEntityOrientation.js +22 -13
  108. package/dist/cli/commands/prime/collectEntityOrientation.js.map +1 -1
  109. package/dist/cli/commands/prime/collectOrientationState.js +20 -28
  110. package/dist/cli/commands/prime/collectOrientationState.js.map +1 -1
  111. package/dist/cli/commands/prime/orientationOutput.js +4 -5
  112. package/dist/cli/commands/prime/orientationOutput.js.map +1 -1
  113. package/dist/cli/commands/prime/types.js.map +1 -1
  114. package/dist/cli/commands/prime/v1Migration.js.map +1 -1
  115. package/dist/cli/commands/prime.js +1 -1
  116. package/dist/cli/commands/prime.js.map +1 -1
  117. package/dist/cli/commands/profileGrounding.js +29 -50
  118. package/dist/cli/commands/profileGrounding.js.map +1 -1
  119. package/dist/cli/commands/query.js.map +1 -1
  120. package/dist/cli/commands/report.js.map +1 -1
  121. package/dist/cli/commands/route.js.map +1 -1
  122. package/dist/cli/commands/schema.js +4 -43
  123. package/dist/cli/commands/schema.js.map +1 -1
  124. package/dist/cli/commands/state/decisions.js +1 -1
  125. package/dist/cli/commands/state/decisions.js.map +1 -1
  126. package/dist/cli/commands/state/docs.js.map +1 -1
  127. package/dist/cli/commands/state/experimentRecords.js +28 -15
  128. package/dist/cli/commands/state/experimentRecords.js.map +1 -1
  129. package/dist/cli/commands/state/experiments.js.map +1 -1
  130. package/dist/cli/commands/state/get.js +6 -3
  131. package/dist/cli/commands/state/get.js.map +1 -1
  132. package/dist/cli/commands/state/health.js.map +1 -1
  133. package/dist/cli/commands/state/index.js +3 -46
  134. package/dist/cli/commands/state/index.js.map +1 -1
  135. package/dist/cli/commands/state/list.js +41 -22
  136. package/dist/cli/commands/state/list.js.map +1 -1
  137. package/dist/cli/commands/state/objective.js.map +1 -1
  138. package/dist/cli/commands/state/plan.js.map +1 -1
  139. package/dist/cli/commands/state/planTasks.js +26 -13
  140. package/dist/cli/commands/state/planTasks.js.map +1 -1
  141. package/dist/cli/commands/state/plans.js +31 -19
  142. package/dist/cli/commands/state/plans.js.map +1 -1
  143. package/dist/cli/commands/state/progress.js.map +1 -1
  144. package/dist/cli/commands/state/shared.js.map +1 -1
  145. package/dist/cli/commands/state/todo.js +2 -1
  146. package/dist/cli/commands/state/todo.js.map +1 -1
  147. package/dist/cli/commands/state/write.js +52 -48
  148. package/dist/cli/commands/state/write.js.map +1 -1
  149. package/dist/cli/commands/upgrade.js.map +1 -1
  150. package/dist/cli/commands/upgradeVerify.js.map +1 -1
  151. package/dist/cli/commands/validate.js +44 -4
  152. package/dist/cli/commands/validate.js.map +1 -1
  153. package/dist/cli/commands/verify.js.map +1 -1
  154. package/dist/cli/contracts/bundleStatus.js.map +1 -1
  155. package/dist/cli/contracts/orientationState.js.map +1 -1
  156. package/dist/cli/dispatch/argvParser.js.map +1 -1
  157. package/dist/cli/dispatch/check.js.map +1 -1
  158. package/dist/cli/dispatch/commands.js.map +1 -1
  159. package/dist/cli/dispatch/index.js +12 -4
  160. package/dist/cli/dispatch/index.js.map +1 -1
  161. package/dist/cli/dispatch/lifecycle.js.map +1 -1
  162. package/dist/cli/dispatch/prime.js.map +1 -1
  163. package/dist/cli/dispatch/shared.js.map +1 -1
  164. package/dist/cli/dispatch/state.js +53 -86
  165. package/dist/cli/dispatch/state.js.map +1 -1
  166. package/dist/cli/dispatch.js.map +1 -1
  167. package/dist/cli/errors.js.map +1 -1
  168. package/dist/cli/help.js +134 -48
  169. package/dist/cli/help.js.map +1 -1
  170. package/dist/cli/migrationRequired.js.map +1 -1
  171. package/dist/cli/orientation/attention.js +8 -5
  172. package/dist/cli/orientation/attention.js.map +1 -1
  173. package/dist/cli/orientation/corpusCoverage.js.map +1 -1
  174. package/dist/cli/orientation.js +61 -38
  175. package/dist/cli/orientation.js.map +1 -1
  176. package/dist/cli/planArtifacts.js.map +1 -1
  177. package/dist/cli/planEvidence.js.map +1 -1
  178. package/dist/cli/planLifecycleState.js +3 -1
  179. package/dist/cli/planLifecycleState.js.map +1 -1
  180. package/dist/cli/planTaskIndex.js.map +1 -1
  181. package/dist/cli/prime-blob.js +2 -1
  182. package/dist/cli/prime-blob.js.map +1 -1
  183. package/dist/cli/profileAcquisition.js +168 -0
  184. package/dist/cli/profileAcquisition.js.map +1 -0
  185. package/dist/cli/startupCompletenessContract.js +5 -2
  186. package/dist/cli/startupCompletenessContract.js.map +1 -1
  187. package/dist/cli/stateQuery.js.map +1 -1
  188. package/dist/cli/structured.js.map +1 -1
  189. package/dist/cli/todoMarkdown.js +25 -11
  190. package/dist/cli/todoMarkdown.js.map +1 -1
  191. package/dist/cli/todoReadinessSelection.js +52 -17
  192. package/dist/cli/todoReadinessSelection.js.map +1 -1
  193. package/dist/cli/todoSeverity.js.map +1 -1
  194. package/dist/core/atomicWriter.js.map +1 -1
  195. package/dist/core/difflib.js.map +1 -1
  196. package/dist/core/envPaths.js.map +1 -1
  197. package/dist/core/jsonValue.js.map +1 -1
  198. package/dist/core/paths.js.map +1 -1
  199. package/dist/core/pyjson.js.map +1 -1
  200. package/dist/core/shell.js +5 -0
  201. package/dist/core/shell.js.map +1 -0
  202. package/dist/core/skillIdentity.js.map +1 -1
  203. package/dist/core/sourceRoot.js.map +1 -1
  204. package/dist/core/text.js.map +1 -1
  205. package/dist/core/toml.js.map +1 -1
  206. package/dist/core/yaml.js.map +1 -1
  207. package/dist/eval/evalSkills.js.map +1 -1
  208. package/dist/eval/hybridRouteEvaluation.js.map +1 -1
  209. package/dist/eval/semanticEval.js.map +1 -1
  210. package/dist/eval/semanticFixtures.js.map +1 -1
  211. package/dist/hooks/common.js.map +1 -1
  212. package/dist/hooks/compaction/apply.js.map +1 -1
  213. package/dist/hooks/compaction/dryRun.js.map +1 -1
  214. package/dist/hooks/compaction/index.js.map +1 -1
  215. package/dist/hooks/compaction/parse.js.map +1 -1
  216. package/dist/hooks/compaction/retention.js.map +1 -1
  217. package/dist/hooks/compaction/status.js.map +1 -1
  218. package/dist/hooks/compaction/types.js.map +1 -1
  219. package/dist/hooks/cursorPreToolUse.js.map +1 -1
  220. package/dist/hooks/cursorSessionStart.js.map +1 -1
  221. package/dist/hooks/projectHookInput.js.map +1 -1
  222. package/dist/hooks/sessionStart.js.map +1 -1
  223. package/dist/hooks/sessionStop.js.map +1 -1
  224. package/dist/hooks/validateArtifact/agentFacing.js.map +1 -1
  225. package/dist/hooks/validateArtifact/index.js.map +1 -1
  226. package/dist/hooks/validateArtifact/markdown.js.map +1 -1
  227. package/dist/hooks/validateArtifact/runtime.js.map +1 -1
  228. package/dist/hooks/validateArtifact/schema.js +6 -0
  229. package/dist/hooks/validateArtifact/schema.js.map +1 -1
  230. package/dist/hooks/validateArtifact/traversal.js.map +1 -1
  231. package/dist/hooks/validateArtifact/violations.js.map +1 -1
  232. package/dist/migrate/v2HandoffManifest.js.map +1 -1
  233. package/dist/registries/artifactProtocolIds.js.map +1 -1
  234. package/dist/registries/artifactRegistry.js.map +1 -1
  235. package/dist/registries/artifactSchemaProjection.js +46 -0
  236. package/dist/registries/artifactSchemaProjection.js.map +1 -0
  237. package/dist/registries/capabilityContract.js.map +1 -1
  238. package/dist/registries/evaluatorHandoffContract.js.map +1 -1
  239. package/dist/registries/evidenceTierContract.js.map +1 -1
  240. package/dist/registries/glossaryAdviceContract.js.map +1 -1
  241. package/dist/registries/glossaryCaveatContract.js.map +1 -1
  242. package/dist/registries/glossaryConsumerContractValidation.js +1 -5
  243. package/dist/registries/glossaryConsumerContractValidation.js.map +1 -1
  244. package/dist/registries/glossaryEntryContract.js +10 -0
  245. package/dist/registries/glossaryEntryContract.js.map +1 -1
  246. package/dist/registries/glossaryTermIdentity.js.map +1 -1
  247. package/dist/registries/glossaryTermOccurrence.js.map +1 -1
  248. package/dist/registries/hybridRoute.js.map +1 -1
  249. package/dist/registries/hybridRouteReceipt.js.map +1 -1
  250. package/dist/registries/packageRegistry.js.map +1 -1
  251. package/dist/registries/todoReadinessContract.js +49 -6
  252. package/dist/registries/todoReadinessContract.js.map +1 -1
  253. package/dist/registries/triggerLoader.js.map +1 -1
  254. package/dist/registries/verbosityBudgetContract.js.map +1 -1
  255. package/dist/release/releaseMetadata.js.map +1 -1
  256. package/dist/runtime/lifecycleAdapterContract.js.map +1 -1
  257. package/dist/runtime/lifecycleAdapters.js.map +1 -1
  258. package/dist/runtime/lifecycleAuthority.js.map +1 -1
  259. package/dist/runtime/lifecycleOperationContract.js.map +1 -1
  260. package/dist/runtime/lifecycleOperations.js.map +1 -1
  261. package/dist/runtime/lifecycleOwnershipJournal.js.map +1 -1
  262. package/dist/runtime/lifecyclePublication.js.map +1 -1
  263. package/dist/runtime/lifecycleSnapshot.js.map +1 -1
  264. package/dist/runtime/nativeResourceCleanup.js.map +1 -1
  265. package/dist/setup/codex/cli.js.map +1 -1
  266. package/dist/setup/codex/configToml.js.map +1 -1
  267. package/dist/setup/codex/constants.js.map +1 -1
  268. package/dist/setup/codex/installRoot.js.map +1 -1
  269. package/dist/setup/codex/state.js.map +1 -1
  270. package/dist/setup/codex.js.map +1 -1
  271. package/dist/setup/opencode.js.map +1 -1
  272. package/dist/setup/opencodeConstants.js.map +1 -1
  273. package/dist/setup/sharedSkill.js.map +1 -1
  274. package/dist/setup/smokeChecks.js.map +1 -1
  275. package/dist/state/archiveDiscovery.js +8 -5
  276. package/dist/state/archiveDiscovery.js.map +1 -1
  277. package/dist/state/archivePublication.js.map +1 -1
  278. package/dist/state/archiveRecovery.js.map +1 -1
  279. package/dist/state/archiveReplay.js.map +1 -1
  280. package/dist/state/canonicalMigrationRecord.js.map +1 -1
  281. package/dist/state/changelog.js.map +1 -1
  282. package/dist/state/decisionEntities.js +59 -20
  283. package/dist/state/decisionEntities.js.map +1 -1
  284. package/dist/state/decisionLegacyValidation.js.map +1 -1
  285. package/dist/state/decisionMigrationProvenance.js.map +1 -1
  286. package/dist/state/decisionOverlay.js.map +1 -1
  287. package/dist/state/decisionRevision.js.map +1 -1
  288. package/dist/state/decisionRevisionMigration.js.map +1 -1
  289. package/dist/state/directRetrieval.js.map +1 -1
  290. package/dist/state/durability.js.map +1 -1
  291. package/dist/state/entityCutover.js.map +1 -1
  292. package/dist/state/entityCutoverGit.js.map +1 -1
  293. package/dist/state/entityGlossaryAuthority.js.map +1 -1
  294. package/dist/state/entityListProjection.js +188 -0
  295. package/dist/state/entityListProjection.js.map +1 -0
  296. package/dist/state/entityListRuntimeRegistry.js +50 -0
  297. package/dist/state/entityListRuntimeRegistry.js.map +1 -0
  298. package/dist/state/entityMigrationCausality.js.map +1 -1
  299. package/dist/state/entityMigrationIdentity.js.map +1 -1
  300. package/dist/state/entityMigrationPreview.js +32 -3
  301. package/dist/state/entityMigrationPreview.js.map +1 -1
  302. package/dist/state/entityPublicationContext.js +607 -765
  303. package/dist/state/entityPublicationContext.js.map +1 -1
  304. package/dist/state/entityRetrievalHelp.js +476 -0
  305. package/dist/state/entityRetrievalHelp.js.map +1 -0
  306. package/dist/state/entityStorage.js.map +1 -1
  307. package/dist/state/exactReplacementRecovery.js +19 -0
  308. package/dist/state/exactReplacementRecovery.js.map +1 -0
  309. package/dist/state/experimentArchive.js.map +1 -1
  310. package/dist/state/experimentIdentity.js.map +1 -1
  311. package/dist/state/healthEntities.js +15 -16
  312. package/dist/state/healthEntities.js.map +1 -1
  313. package/dist/state/healthEntityValidation.js.map +1 -1
  314. package/dist/state/healthRepair.js.map +1 -1
  315. package/dist/state/installRoot.js.map +1 -1
  316. package/dist/state/legacyEntityCutoverEvidence.js.map +1 -1
  317. package/dist/state/legacyIdentity.js.map +1 -1
  318. package/dist/state/legacySummaryRecord.js.map +1 -1
  319. package/dist/state/listAccounting.js.map +1 -1
  320. package/dist/state/listClassification.js.map +1 -1
  321. package/dist/state/listCursor.js.map +1 -1
  322. package/dist/state/listRetrieval.js.map +1 -1
  323. package/dist/state/migrationSourceBinding.js.map +1 -1
  324. package/dist/state/objectiveExperimentEntities.js +22 -22
  325. package/dist/state/objectiveExperimentEntities.js.map +1 -1
  326. package/dist/state/planEntities.js +75 -29
  327. package/dist/state/planEntities.js.map +1 -1
  328. package/dist/state/planIdentity.js +4 -1
  329. package/dist/state/planIdentity.js.map +1 -1
  330. package/dist/state/planRetrieval.js.map +1 -1
  331. package/dist/state/planTaskRetrieval.js +41 -31
  332. package/dist/state/planTaskRetrieval.js.map +1 -1
  333. package/dist/state/progressEntities.js +40 -25
  334. package/dist/state/progressEntities.js.map +1 -1
  335. package/dist/state/progressGlossaryCaveat.js.map +1 -1
  336. package/dist/state/progressPublicationOrder.js.map +1 -1
  337. package/dist/state/projectRoot.js.map +1 -1
  338. package/dist/state/projectionPolicy.js +12 -5
  339. package/dist/state/projectionPolicy.js.map +1 -1
  340. package/dist/state/retrievalAuthority.js +86 -272
  341. package/dist/state/retrievalAuthority.js.map +1 -1
  342. package/dist/state/safeProjectFile.js.map +1 -1
  343. package/dist/state/startupAnalysis/benchmark.js.map +1 -1
  344. package/dist/state/startupAnalysis/contract.js.map +1 -1
  345. package/dist/state/startupAnalysis/helpers.js.map +1 -1
  346. package/dist/state/startupAnalysis/index.js.map +1 -1
  347. package/dist/state/startupAnalysis/metrics.js.map +1 -1
  348. package/dist/state/startupAnalysis/records.js.map +1 -1
  349. package/dist/state/startupAnalysis/report.js.map +1 -1
  350. package/dist/state/startupAnalysis/threshold.js.map +1 -1
  351. package/dist/state/startupAnalysis.js.map +1 -1
  352. package/dist/state/startupProjection.js.map +1 -1
  353. package/dist/state/stateMode.js +11 -8
  354. package/dist/state/stateMode.js.map +1 -1
  355. package/dist/state/stateStorageAuthority.js.map +1 -1
  356. package/dist/state/summaryEntityRead.js.map +1 -1
  357. package/dist/state/summaryMigrationProvenance.js.map +1 -1
  358. package/dist/state/summarySourceRowAuthority.js.map +1 -1
  359. package/dist/state/todoDocsEntities.js +811 -91
  360. package/dist/state/todoDocsEntities.js.map +1 -1
  361. package/dist/state/todoDocsEntityValidation.js +127 -2
  362. package/dist/state/todoDocsEntityValidation.js.map +1 -1
  363. package/dist/state/todoReconciliationActivation.js +63 -0
  364. package/dist/state/todoReconciliationActivation.js.map +1 -0
  365. package/dist/state/todoReconciliationTransaction.js +554 -0
  366. package/dist/state/todoReconciliationTransaction.js.map +1 -0
  367. package/dist/state/write/assign.js.map +1 -1
  368. package/dist/state/write/candidateMutation.js +1 -12
  369. package/dist/state/write/candidateMutation.js.map +1 -1
  370. package/dist/state/write/errors.js.map +1 -1
  371. package/dist/state/write/experimentPublication.js.map +1 -1
  372. package/dist/state/write/explain.js +198 -177
  373. package/dist/state/write/explain.js.map +1 -1
  374. package/dist/state/write/fields.js.map +1 -1
  375. package/dist/state/write/glossaryPublication.js.map +1 -1
  376. package/dist/state/write/grammar.js +271 -0
  377. package/dist/state/write/grammar.js.map +1 -0
  378. package/dist/state/write/helpers.js.map +1 -1
  379. package/dist/state/write/index.js.map +1 -1
  380. package/dist/state/write/input.js +351 -5
  381. package/dist/state/write/input.js.map +1 -1
  382. package/dist/state/write/lock.js.map +1 -1
  383. package/dist/state/write/mutation.js.map +1 -1
  384. package/dist/state/write/operations.js +140 -343
  385. package/dist/state/write/operations.js.map +1 -1
  386. package/dist/state/write/planEvaluation.js +4 -0
  387. package/dist/state/write/planEvaluation.js.map +1 -1
  388. package/dist/state/write/planPublication.js +48 -3
  389. package/dist/state/write/planPublication.js.map +1 -1
  390. package/dist/state/write/runtimeOperations.js +65 -0
  391. package/dist/state/write/runtimeOperations.js.map +1 -0
  392. package/dist/state/write/serialize.js.map +1 -1
  393. package/dist/state/write/transaction.js +13 -7
  394. package/dist/state/write/transaction.js.map +1 -1
  395. package/dist/state/write/validate.js.map +1 -1
  396. package/dist/upgrade/appContentRefresh.js.map +1 -1
  397. package/dist/upgrade/appModel.js.map +1 -1
  398. package/dist/upgrade/atomicWriter.js.map +1 -1
  399. package/dist/upgrade/bundleEvidence.js.map +1 -1
  400. package/dist/upgrade/channels.js.map +1 -1
  401. package/dist/upgrade/coexistenceProbe.js.map +1 -1
  402. package/dist/upgrade/compatibility.js.map +1 -1
  403. package/dist/upgrade/doctor.js.map +1 -1
  404. package/dist/upgrade/doctorClassifier.js.map +1 -1
  405. package/dist/upgrade/installedHooksRetirement.js.map +1 -1
  406. package/dist/upgrade/legacyAgentCleanup.js.map +1 -1
  407. package/dist/upgrade/lifecycleUpgrade.js.map +1 -1
  408. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +1 -1
  409. package/dist/upgrade/migrationPublication.js.map +1 -1
  410. package/dist/upgrade/nextMajorDoctor.js.map +1 -1
  411. package/dist/upgrade/npxPlatformStatus.js.map +1 -1
  412. package/dist/upgrade/projectIntegration.js.map +1 -1
  413. package/dist/upgrade/projectIntegrationDecision.js.map +1 -1
  414. package/dist/upgrade/runtimeMigration.js.map +1 -1
  415. package/dist/upgrade/upgradeCommands.js.map +1 -1
  416. package/dist/upgrade/upgradeLock.js.map +1 -1
  417. package/dist/upgrade/upgradeOrchestrator.js.map +1 -1
  418. package/dist/upgrade/v3CapabilitySurface.js.map +1 -1
  419. package/dist/upgrade/versionResolution.js.map +1 -1
  420. package/dist/validate/appHomeContract.js.map +1 -1
  421. package/dist/validate/capability.js.map +1 -1
  422. package/dist/validate/crossCapability.js.map +1 -1
  423. package/dist/validate/selfAudit.js.map +1 -1
  424. package/dist/validate/v1LegacyCruft.js.map +1 -1
  425. package/dist/validate/vocabularyAuthority.js.map +1 -1
  426. package/package.json +2 -2
  427. package/dist/state/experimentRetrieval.js +0 -447
  428. package/dist/state/experimentRetrieval.js.map +0 -1
@@ -0,0 +1,554 @@
1
+ import { createHash } from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { loadYamlMapping } from "../core/yaml.js";
5
+ import { canonicalRecordJson } from "./archiveDiscovery.js";
6
+ import { entityExactGetMaxBytes } from "./entityStorage.js";
7
+ import { FILE_REPLACEMENT_METADATA_NAME, FILE_REPLACEMENT_RECOVERY_VERSION, validateEntityRecoveryDirectory, } from "./entityPublicationContext.js";
8
+ import { ExactReplacementConflictError, FileReplacementError } from "./exactReplacementRecovery.js";
9
+ import { TODO_RECONCILIATION_ACTIVATION_PATH, TODO_RECONCILIATION_ITEM_LIMIT, } from "./todoReconciliationActivation.js";
10
+ import { reject } from "./write/errors.js";
11
+ const VERSION = "agentera.todoReconciliationTransaction.v1";
12
+ const DIRECTORY = ".agentera/.todo-reconciliation";
13
+ const MAX_JOURNAL_BYTES = 4 * 1024 * 1024;
14
+ const MAX_TARGET_BYTES = 1024 * 1024;
15
+ const MAX_TARGETS = TODO_RECONCILIATION_ITEM_LIMIT + 2;
16
+ export class InjectedTodoReconciliationInterruption extends Error {
17
+ publishedTargets;
18
+ constructor(publishedTargets) {
19
+ super(`injected TODO reconciliation interruption after ${publishedTargets} target publications`);
20
+ this.publishedTargets = publishedTargets;
21
+ this.name = "InjectedTodoReconciliationInterruption";
22
+ }
23
+ }
24
+ function encode(bytes) {
25
+ return Buffer.from(bytes).toString("base64");
26
+ }
27
+ function decode(bytes) {
28
+ return Buffer.from(bytes, "base64");
29
+ }
30
+ function exactBase64(value) {
31
+ if (typeof value !== "string")
32
+ return false;
33
+ try {
34
+ return encode(decode(value)) === value;
35
+ }
36
+ catch {
37
+ return false;
38
+ }
39
+ }
40
+ export function todoCreateRequestSha256(record) {
41
+ return createHash("sha256")
42
+ .update("agentera.todoCreateRequest.v1\0")
43
+ .update(canonicalRecordJson(record))
44
+ .digest("hex");
45
+ }
46
+ function bytesAt(root, relative) {
47
+ const target = path.join(root, relative);
48
+ return fs.existsSync(target) ? fs.readFileSync(target) : null;
49
+ }
50
+ function same(left, right) {
51
+ return left === null ? right === null : right !== null && left.equals(right);
52
+ }
53
+ function validTarget(relative, publicPath) {
54
+ return relative === publicPath
55
+ || relative === TODO_RECONCILIATION_ACTIVATION_PATH
56
+ || /^\.agentera\/entities\/todo\/todo_item\/[a-z]{10}\.yaml$/.test(relative);
57
+ }
58
+ function createReceiptFromTargets(targets) {
59
+ const created = targets.filter((target) => target.before === null && /^\.agentera\/entities\/todo\/todo_item\/[a-z]{10}\.yaml$/.test(target.path));
60
+ if (!created.length)
61
+ return undefined;
62
+ if (created.length !== 1)
63
+ invalidJournal("TODO reconciliation journal has multiple immutable TODO entity targets");
64
+ const target = created[0];
65
+ const createdId = path.posix.basename(target.path, ".yaml");
66
+ let envelope;
67
+ try {
68
+ envelope = loadYamlMapping(decode(target.after).toString("utf8"));
69
+ }
70
+ catch {
71
+ invalidJournal("TODO reconciliation journal has an invalid created entity envelope");
72
+ }
73
+ if (envelope.id !== createdId || envelope.artifact !== "todo" || !envelope.record || typeof envelope.record !== "object" || Array.isArray(envelope.record)) {
74
+ invalidJournal("TODO reconciliation journal create target does not match its canonical entity envelope");
75
+ }
76
+ const request = structuredClone(envelope.record);
77
+ delete request.reconciliation;
78
+ return { created_id: createdId, request_sha256: todoCreateRequestSha256(request) };
79
+ }
80
+ function invalidJournal(message) {
81
+ reject({
82
+ class: "conflict",
83
+ message,
84
+ recovery: `Preserve '${DIRECTORY}', restore its last valid committed journal bytes, and retry the exact non-dry-run TODO mutation; no target bytes were changed.`,
85
+ });
86
+ }
87
+ function parseJournal(bytes, fileName) {
88
+ if (bytes.length > MAX_JOURNAL_BYTES)
89
+ invalidJournal("TODO reconciliation journal exceeds its byte bound");
90
+ let parsed;
91
+ try {
92
+ parsed = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
93
+ }
94
+ catch {
95
+ invalidJournal("TODO reconciliation journal is not valid bounded UTF-8 JSON");
96
+ }
97
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed))
98
+ invalidJournal("TODO reconciliation journal is not a mapping");
99
+ const value = parsed;
100
+ const expectedKeys = value.create === undefined
101
+ ? "id,mapping_sha256,public_path,schema_version,targets"
102
+ : "create,id,mapping_sha256,public_path,schema_version,targets";
103
+ if (Object.keys(value).sort().join(",") !== expectedKeys
104
+ || value.schema_version !== VERSION
105
+ || typeof value.id !== "string"
106
+ || !/^[a-f0-9]{24}$/.test(value.id)
107
+ || typeof value.public_path !== "string"
108
+ || typeof value.mapping_sha256 !== "string"
109
+ || !/^[a-f0-9]{64}$/.test(value.mapping_sha256)
110
+ || !Array.isArray(value.targets)
111
+ || value.targets.length < 1
112
+ || value.targets.length > MAX_TARGETS)
113
+ invalidJournal("TODO reconciliation journal is malformed");
114
+ if (value.create !== undefined && (!value.create
115
+ || typeof value.create !== "object"
116
+ || Array.isArray(value.create)
117
+ || Object.keys(value.create).sort().join(",") !== "created_id,request_sha256"
118
+ || typeof value.create.created_id !== "string"
119
+ || !/^[a-z]{10}$/.test(value.create.created_id)
120
+ || typeof value.create.request_sha256 !== "string"
121
+ || !/^[a-f0-9]{64}$/.test(value.create.request_sha256)))
122
+ invalidJournal("TODO reconciliation journal has an invalid create receipt");
123
+ const paths = new Set();
124
+ for (const target of value.targets) {
125
+ if (!target
126
+ || typeof target !== "object"
127
+ || Array.isArray(target)
128
+ || Object.keys(target).sort().join(",") !== "after,before,path"
129
+ || typeof target.path !== "string"
130
+ || !validTarget(target.path, value.public_path)
131
+ || paths.has(target.path)
132
+ || (target.before !== null && !exactBase64(target.before))
133
+ || !exactBase64(target.after)
134
+ || decode(target.after).length > MAX_TARGET_BYTES
135
+ || (target.before !== null && decode(target.before).length > MAX_TARGET_BYTES))
136
+ invalidJournal("TODO reconciliation journal has an invalid target");
137
+ paths.add(target.path);
138
+ }
139
+ const body = value.targets;
140
+ const inferredCreate = createReceiptFromTargets(body);
141
+ if (value.create && (!inferredCreate
142
+ || value.create.created_id !== inferredCreate.created_id
143
+ || value.create.request_sha256 !== inferredCreate.request_sha256))
144
+ invalidJournal("TODO reconciliation create receipt does not match its canonical entity target");
145
+ const identity = value.create ? { create: value.create, targets: body } : body;
146
+ const expectedId = createHash("sha256").update(canonicalRecordJson(identity)).digest("hex").slice(0, 24);
147
+ if (value.id !== expectedId || (fileName !== undefined && fileName !== `${value.id}.json`)) {
148
+ invalidJournal("TODO reconciliation journal identity does not match its canonical targets");
149
+ }
150
+ const create = value.create ?? inferredCreate;
151
+ return { ...value, ...(create ? { create } : {}) };
152
+ }
153
+ function targetLimit(target, sourceRoot) {
154
+ return target.path.startsWith(".agentera/entities/todo/todo_item/") ? entityExactGetMaxBytes(sourceRoot) : MAX_TARGET_BYTES;
155
+ }
156
+ function assertBinding(journal, binding) {
157
+ if (journal.public_path !== binding.publicPath || journal.mapping_sha256 !== binding.mappingSha256)
158
+ reject({
159
+ class: "conflict",
160
+ message: "TODO reconciliation mapping changed while a transaction is pending",
161
+ recovery: `Restore the docs mapping that resolves TODO.md to '${journal.public_path}', then retry the exact non-dry-run mutation once; no state was changed.`,
162
+ });
163
+ }
164
+ function fsyncDirectory(directory) {
165
+ if (process.platform === "win32")
166
+ return;
167
+ const fd = fs.openSync(directory, "r");
168
+ try {
169
+ fs.fsyncSync(fd);
170
+ }
171
+ finally {
172
+ fs.closeSync(fd);
173
+ }
174
+ }
175
+ function removeExactRole(file, expected) {
176
+ if (!fs.readFileSync(file).equals(expected))
177
+ throw new Error(`exact replacement recovery role '${file}' changed`);
178
+ fs.unlinkSync(file);
179
+ }
180
+ function parseFileRecoveryMetadata(file) {
181
+ let parsed;
182
+ try {
183
+ const bytes = fs.readFileSync(file);
184
+ if (bytes.length > 1024)
185
+ throw new Error("over bound");
186
+ parsed = JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(bytes));
187
+ }
188
+ catch {
189
+ invalidJournal(`file replacement recovery metadata '${file}' is invalid`);
190
+ }
191
+ if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
192
+ invalidJournal(`file replacement recovery metadata '${file}' is not a mapping`);
193
+ }
194
+ const value = parsed;
195
+ if (Object.keys(value).sort().join(",") !== "after_sha256,before_sha256,schema_version,target_path"
196
+ || value.schema_version !== FILE_REPLACEMENT_RECOVERY_VERSION
197
+ || typeof value.target_path !== "string"
198
+ || typeof value.before_sha256 !== "string"
199
+ || typeof value.after_sha256 !== "string"
200
+ || !/^[a-f0-9]{64}$/.test(value.before_sha256)
201
+ || !/^[a-f0-9]{64}$/.test(value.after_sha256))
202
+ invalidJournal(`file replacement recovery metadata '${file}' has an invalid canonical record`);
203
+ return value;
204
+ }
205
+ function recoveryConflict(target, paths, detail) {
206
+ const boundedPaths = paths.slice(0, 4).map((file) => path.relative(process.cwd(), file).split(path.sep).join("/"));
207
+ reject({
208
+ class: "conflict",
209
+ message: `TODO reconciliation target '${target.path}' conflicts with retained recovery roles: ${detail}`,
210
+ violations: boundedPaths.length ? boundedPaths.map((file) => `preserved recovery role: ${file}`) : undefined,
211
+ recovery: `Preserve the pending journal, canonical competitor, and every listed recovery role. Choose the intended canonical bytes, restore '${target.path}' to the journal's recorded before or after bytes without deleting the competitor copy, then retry the exact non-dry-run mutation once; this rejection changed no bytes.`,
212
+ });
213
+ }
214
+ function recoverImmutablePublicationStage(root, target) {
215
+ if (target.before !== null)
216
+ return;
217
+ const absolute = path.join(root, target.path);
218
+ const directory = path.dirname(absolute);
219
+ if (!fs.existsSync(directory))
220
+ return;
221
+ const name = path.basename(absolute);
222
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
223
+ const pattern = new RegExp(`^\\.${escaped}\\.\\d+\\.[a-f0-9-]+\\.tmp$`);
224
+ const names = fs.readdirSync(directory).filter((candidate) => pattern.test(candidate));
225
+ if (!names.length)
226
+ return;
227
+ if (names.length > 1)
228
+ recoveryConflict(target, names.map((candidate) => path.join(directory, candidate)), "multiple immutable publication stages claim the same target");
229
+ const stage = path.join(directory, names[0]);
230
+ const stat = fs.lstatSync(stage);
231
+ const after = decode(target.after);
232
+ if (!stat.isFile() || stat.isSymbolicLink() || !fs.readFileSync(stage).equals(after)) {
233
+ recoveryConflict(target, [stage], "an immutable publication stage changed");
234
+ }
235
+ const current = bytesAt(root, target.path);
236
+ if (current !== null && !current.equals(after)) {
237
+ recoveryConflict(target, [stage], "the canonical target contains concurrent bytes");
238
+ }
239
+ removeExactRole(stage, after);
240
+ fsyncDirectory(directory);
241
+ }
242
+ function recoverFileReplacementRoles(context, target, entries, recoveryRoot, recoveryRootIdentity, targetDirectory) {
243
+ const before = target.before === null ? null : decode(target.before);
244
+ if (before === null)
245
+ return false;
246
+ const after = decode(target.after);
247
+ const matches = [];
248
+ for (const entry of entries) {
249
+ if (entry.name === ".gitignore")
250
+ continue;
251
+ const directory = path.join(recoveryRoot, entry.name);
252
+ const attemptIdentity = validateEntityRecoveryDirectory(context.validatedRoot, directory, targetDirectory, `private entity recovery attempt '${path.relative(context.pinnedPath(), directory).split(path.sep).join("/")}'`);
253
+ const metadata = path.join(directory, FILE_REPLACEMENT_METADATA_NAME);
254
+ if (!fs.existsSync(metadata))
255
+ continue;
256
+ const value = parseFileRecoveryMetadata(metadata);
257
+ if (value.target_path !== target.path)
258
+ continue;
259
+ if (value.before_sha256 !== createHash("sha256").update(before).digest("hex")
260
+ || value.after_sha256 !== createHash("sha256").update(after).digest("hex"))
261
+ recoveryConflict(target, [metadata], "the role digest does not match the pending journal");
262
+ const roleNames = fs.readdirSync(directory).sort();
263
+ if (roleNames.some((name) => !["original.previous", "replacement.tmp", FILE_REPLACEMENT_METADATA_NAME].includes(name))) {
264
+ recoveryConflict(target, roleNames.map((name) => path.join(directory, name)), "the recovery attempt contains an unknown role");
265
+ }
266
+ const previous = path.join(directory, "original.previous");
267
+ const stage = path.join(directory, "replacement.tmp");
268
+ if (fs.existsSync(previous)) {
269
+ const stat = fs.lstatSync(previous);
270
+ if (!stat.isFile() || stat.isSymbolicLink() || !fs.readFileSync(previous).equals(before)) {
271
+ recoveryConflict(target, [metadata, previous], "the retained baseline role changed");
272
+ }
273
+ }
274
+ if (fs.existsSync(stage)) {
275
+ const stat = fs.lstatSync(stage);
276
+ if (!stat.isFile() || stat.isSymbolicLink() || !fs.readFileSync(stage).equals(after)) {
277
+ recoveryConflict(target, [metadata, stage], "the replacement stage changed");
278
+ }
279
+ }
280
+ matches.push({
281
+ directory,
282
+ identity: attemptIdentity,
283
+ metadata,
284
+ ...(fs.existsSync(previous) ? { previous } : {}),
285
+ ...(fs.existsSync(stage) ? { stage } : {}),
286
+ });
287
+ }
288
+ if (matches.length > 1)
289
+ recoveryConflict(target, matches.map(({ metadata }) => metadata), "multiple recovery attempts claim the same target");
290
+ const match = matches[0];
291
+ if (!match)
292
+ return false;
293
+ const current = bytesAt(context.pinnedPath(), target.path);
294
+ if (!same(current, before) && !same(current, after)) {
295
+ recoveryConflict(target, [match.metadata, ...(match.previous ? [match.previous] : []), ...(match.stage ? [match.stage] : [])], current === null ? "the canonical target is absent" : "the canonical target contains concurrent bytes");
296
+ }
297
+ validateEntityRecoveryDirectory(context.validatedRoot, recoveryRoot, targetDirectory, "private entity recovery root '.agentera/.entity-recovery'", recoveryRootIdentity);
298
+ validateEntityRecoveryDirectory(context.validatedRoot, match.directory, targetDirectory, `private entity recovery attempt '${path.relative(context.pinnedPath(), match.directory).split(path.sep).join("/")}'`, match.identity);
299
+ if (match.stage)
300
+ removeExactRole(match.stage, after);
301
+ if (match.previous)
302
+ removeExactRole(match.previous, before);
303
+ removeExactRole(match.metadata, fs.readFileSync(match.metadata));
304
+ fs.rmdirSync(match.directory);
305
+ fsyncDirectory(recoveryRoot);
306
+ return true;
307
+ }
308
+ function recoverFileReplacement(context, target) {
309
+ if (target.before === null)
310
+ return;
311
+ const recoveryRoot = path.join(context.pinnedPath(), ".agentera/.entity-recovery");
312
+ if (!fs.existsSync(recoveryRoot))
313
+ return;
314
+ const targetDirectory = path.dirname(context.pinnedPath(target.path));
315
+ const recoveryRootIdentity = validateEntityRecoveryDirectory(context.validatedRoot, recoveryRoot, targetDirectory, "private entity recovery root '.agentera/.entity-recovery'");
316
+ const entries = fs.readdirSync(recoveryRoot, { withFileTypes: true });
317
+ if (entries.length > 128)
318
+ invalidJournal("file replacement recovery root exceeds its bounded entry count");
319
+ recoverFileReplacementRoles(context, target, entries, recoveryRoot, recoveryRootIdentity, targetDirectory);
320
+ }
321
+ function applyTarget(context, root, target, sourceRoot, publicPath) {
322
+ const before = target.before === null ? null : decode(target.before);
323
+ const after = decode(target.after);
324
+ recoverImmutablePublicationStage(root, target);
325
+ recoverFileReplacement(context, target);
326
+ const current = bytesAt(root, target.path);
327
+ if (same(current, after))
328
+ return null;
329
+ if (!same(current, before))
330
+ reject({
331
+ class: "conflict",
332
+ message: `TODO reconciliation target '${target.path}' changed after transaction preparation`,
333
+ recovery: "Preserve the pending journal and both repository changes, restore every target to either the recorded before or after bytes, then retry once; no additional state was changed.",
334
+ });
335
+ if (before === null) {
336
+ const identity = context.publishImmutable(target.path, after.toString("utf8"));
337
+ if (!identity)
338
+ reject({
339
+ class: "conflict",
340
+ message: `TODO reconciliation target '${target.path}' appeared during publication`,
341
+ recovery: `Preserve the competing target and retry the exact TODO mutation after reconciling it with the pending transaction; no competing bytes were overwritten.`,
342
+ });
343
+ return identity;
344
+ }
345
+ const replacement = target.path === publicPath
346
+ ? context.replaceVisible(target.path, before, after.toString("utf8"), targetLimit(target, sourceRoot))
347
+ : context.replaceExisting(target.path, before, after.toString("utf8"), targetLimit(target, sourceRoot));
348
+ return replacement.publishedIdentity;
349
+ }
350
+ function rollback(context, applied, sourceRoot, publicPath) {
351
+ const issues = [];
352
+ for (const { target, identity } of [...applied].reverse()) {
353
+ try {
354
+ if (target.before === null) {
355
+ const result = context.removeExact(target.path, identity, false);
356
+ if (result !== "removed")
357
+ throw new Error(`exact removal returned ${result}`);
358
+ }
359
+ else {
360
+ if (target.path === publicPath) {
361
+ context.restoreVisible(target.path, identity, decode(target.before).toString("utf8"), targetLimit(target, sourceRoot));
362
+ }
363
+ else {
364
+ context.restoreExact(target.path, identity, decode(target.before).toString("utf8"), targetLimit(target, sourceRoot));
365
+ }
366
+ }
367
+ }
368
+ catch (error) {
369
+ issues.push({
370
+ path: target.path,
371
+ message: (error instanceof Error ? error.message : String(error)).slice(0, 512),
372
+ retainedPaths: error instanceof ExactReplacementConflictError
373
+ ? error.retainedPaths.slice(0, 8).map((retainedPath) => retainedPath.slice(0, 512))
374
+ : [],
375
+ });
376
+ }
377
+ }
378
+ return issues;
379
+ }
380
+ function rejectIncompleteRollback(primary, issues) {
381
+ const primaryMessage = (primary instanceof Error ? primary.message : String(primary)).slice(0, 512);
382
+ const violations = issues.slice(0, 8).map(({ path: targetPath, message }) => `rollback target '${targetPath}': ${message}`);
383
+ const retained = [...new Set(issues.flatMap(({ retainedPaths }) => retainedPaths))].slice(0, 8);
384
+ violations.push(...retained.map((role) => `preserved recovery role: ${role}`));
385
+ reject({
386
+ class: "conflict",
387
+ message: `TODO reconciliation attempted rollback for every published target after '${primaryMessage}', but ${issues.length} target${issues.length === 1 ? "" : "s"} could not be restored`,
388
+ violations,
389
+ recovery: "Preserve the pending journal, each listed canonical target, and every listed recovery role. Targets not listed were restored. Reconcile each listed target to the journal's recorded before or after bytes without deleting concurrent bytes, then retry the exact non-dry-run mutation once.",
390
+ });
391
+ }
392
+ function rejectPublicationFailure(error, pendingJournal) {
393
+ reject({
394
+ class: "unsupported_target",
395
+ message: `recoverable complete-file replacement is unavailable for this target${error.code ? ` (${error.code})` : ""}`,
396
+ violations: [error.message.slice(0, 512)],
397
+ recovery: `${pendingJournal ? "Preserve the pending journal. " : ""}Use an owner-controlled regular file on the project-state filesystem with standard rename support, correct the reported capability or permission, then retry the exact non-dry-run mutation; all attempted target bytes were restored.`,
398
+ });
399
+ }
400
+ function rejectReplacementConflict(error) {
401
+ reject({
402
+ class: "conflict",
403
+ message: `TODO reconciliation retained a concurrent target without overwriting it: ${error.message.slice(0, 1024)}`,
404
+ violations: error.retainedPaths.slice(0, 4).map((role) => `preserved recovery role: ${role.slice(0, 512)}`),
405
+ recovery: "Preserve the pending journal, canonical competitor, and listed recovery roles. Choose the intended canonical bytes, restore the conflicted target to the journal's recorded before or after bytes without deleting the competitor copy, then retry the exact non-dry-run mutation once; no competitor bytes were overwritten.",
406
+ });
407
+ }
408
+ function journalPath(id) {
409
+ return `${DIRECTORY}/${id}.json`;
410
+ }
411
+ function finishJournal(context, relative, identity) {
412
+ if (context.removeExact(relative, identity) !== "removed")
413
+ throw new Error(`TODO reconciliation journal '${relative}' changed before cleanup`);
414
+ }
415
+ export function inspectTodoReconciliation(root, binding) {
416
+ const directory = path.join(root, DIRECTORY);
417
+ if (!fs.existsSync(directory))
418
+ return [];
419
+ const names = fs.readdirSync(directory).filter((name) => name.endsWith(".json")).sort();
420
+ if (names.length > 1)
421
+ reject({ class: "conflict", message: "multiple pending TODO reconciliation journals exist", recovery: "Preserve the journals and reconcile them to one transaction before retrying; no state was changed." });
422
+ return names.map((name) => { const journal = parseJournal(fs.readFileSync(path.join(directory, name)), name); assertBinding(journal, binding); return journal.id; });
423
+ }
424
+ export function recoverTodoReconciliation(context, sourceRoot, binding, options = {}) {
425
+ const root = context.pinnedPath();
426
+ const directory = path.join(root, DIRECTORY);
427
+ if (!fs.existsSync(directory))
428
+ return [];
429
+ const names = fs.readdirSync(directory).filter((name) => name.endsWith(".json")).sort();
430
+ if (names.length > 1)
431
+ reject({ class: "conflict", message: "multiple pending TODO reconciliation journals exist", recovery: "Preserve the journals and reconcile them to one transaction before retrying; no state was changed." });
432
+ const recovered = [];
433
+ for (const name of names) {
434
+ const relative = `${DIRECTORY}/${name}`;
435
+ const journalBytes = fs.readFileSync(path.join(root, relative));
436
+ const journal = parseJournal(journalBytes, name);
437
+ assertBinding(journal, binding);
438
+ if (journal.create && options.createRequestSha256 !== journal.create.request_sha256)
439
+ reject({
440
+ class: "conflict",
441
+ message: `pending TODO create for '${journal.create.created_id}' does not match this request`,
442
+ recovery: `Retry the exact original TODO create input to recover '${journal.create.created_id}'; no transaction target bytes were changed.`,
443
+ });
444
+ const applied = [];
445
+ try {
446
+ for (const target of journal.targets) {
447
+ const identity = applyTarget(context, root, target, sourceRoot, journal.public_path);
448
+ if (identity)
449
+ applied.push({ target, identity });
450
+ }
451
+ options.beforeCommit?.();
452
+ context.assertValid();
453
+ const journalIdentity = context.replaceExisting(relative, journalBytes, journalBytes.toString("utf8"), MAX_JOURNAL_BYTES).publishedIdentity;
454
+ finishJournal(context, relative, journalIdentity);
455
+ recovered.push({
456
+ transaction_id: journal.id,
457
+ target_count: journal.targets.length,
458
+ ...(journal.create ? { create: journal.create } : {}),
459
+ });
460
+ }
461
+ catch (error) {
462
+ const rollbackIssues = applied.length ? rollback(context, applied, sourceRoot, journal.public_path) : [];
463
+ if (rollbackIssues.length)
464
+ rejectIncompleteRollback(error, rollbackIssues);
465
+ if (error instanceof ExactReplacementConflictError)
466
+ rejectReplacementConflict(error);
467
+ if (error instanceof FileReplacementError)
468
+ rejectPublicationFailure(error, true);
469
+ throw error;
470
+ }
471
+ }
472
+ return recovered;
473
+ }
474
+ export function publishTodoReconciliation(context, sourceRoot, binding, targets, options = {}) {
475
+ const normalized = targets
476
+ .filter((target) => !same(target.before, Buffer.from(target.after)))
477
+ .sort((left, right) => Number(left.path === binding.publicPath) - Number(right.path === binding.publicPath) || left.path.localeCompare(right.path));
478
+ const body = normalized.map((target) => ({ path: target.path, before: target.before === null ? null : encode(target.before), after: encode(target.after) }));
479
+ const identity = options.create ? { create: options.create, targets: body } : body;
480
+ const id = createHash("sha256").update(canonicalRecordJson(identity)).digest("hex").slice(0, 24);
481
+ if (!normalized.length)
482
+ return { id, targetCount: 0 };
483
+ if (body.length > MAX_TARGETS
484
+ || new Set(body.map(({ path: targetPath }) => targetPath)).size !== body.length
485
+ || body.some((target) => !validTarget(target.path, binding.publicPath)))
486
+ reject({
487
+ class: "schema_violation",
488
+ message: "TODO reconciliation transaction has invalid or duplicate bounded targets",
489
+ recovery: `Reduce the managed TODO working set to at most ${TODO_RECONCILIATION_ITEM_LIMIT} items and retry; no state was changed.`,
490
+ });
491
+ const publicTarget = normalized.find((target) => target.path === binding.publicPath && target.before !== null);
492
+ if (publicTarget) {
493
+ const root = context.pinnedPath();
494
+ const publicDevice = fs.statSync(path.dirname(path.join(root, binding.publicPath)), { bigint: true }).dev;
495
+ const recoveryDevice = fs.statSync(path.join(root, ".agentera"), { bigint: true }).dev;
496
+ if (publicDevice !== recoveryDevice)
497
+ reject({
498
+ class: "unsupported_target",
499
+ message: `mapped TODO target '${binding.publicPath}' is on a different filesystem from its private recovery root`,
500
+ recovery: "Map TODO.md to a regular file on the project-state filesystem, then retry the exact mutation; no journal or target bytes were changed.",
501
+ });
502
+ }
503
+ const journal = {
504
+ schema_version: VERSION,
505
+ id,
506
+ public_path: binding.publicPath,
507
+ mapping_sha256: binding.mappingSha256,
508
+ ...(options.create ? { create: options.create } : {}),
509
+ targets: body,
510
+ };
511
+ const bytes = `${JSON.stringify(journal)}\n`;
512
+ if (Buffer.byteLength(bytes) > MAX_JOURNAL_BYTES)
513
+ reject({ class: "schema_violation", message: "TODO reconciliation transaction exceeds its byte bound", recovery: "Reduce the managed TODO working set below the declared transaction bound and retry; no state was changed." });
514
+ const relativeJournal = journalPath(id);
515
+ const journalIdentity = context.publishImmutable(relativeJournal, bytes);
516
+ if (!journalIdentity)
517
+ reject({
518
+ class: "conflict",
519
+ message: `TODO reconciliation journal '${id}' already exists`,
520
+ recovery: "Retry the exact non-dry-run TODO mutation once so the existing journal is inspected and recovered before another transaction is prepared; no target bytes were changed.",
521
+ });
522
+ if (options.interruptAfterTarget === 0)
523
+ throw new InjectedTodoReconciliationInterruption(0);
524
+ const applied = [];
525
+ try {
526
+ for (const target of journal.targets) {
527
+ const identity = applyTarget(context, context.pinnedPath(), target, sourceRoot, journal.public_path);
528
+ if (identity)
529
+ applied.push({ target, identity });
530
+ if (options.interruptAfterTarget === applied.length)
531
+ throw new InjectedTodoReconciliationInterruption(applied.length);
532
+ }
533
+ options.beforeCommit?.();
534
+ context.assertValid();
535
+ finishJournal(context, relativeJournal, journalIdentity);
536
+ return { id, targetCount: normalized.length };
537
+ }
538
+ catch (error) {
539
+ if (error instanceof InjectedTodoReconciliationInterruption)
540
+ throw error;
541
+ const rollbackIssues = rollback(context, applied, sourceRoot, journal.public_path);
542
+ if (rollbackIssues.length)
543
+ rejectIncompleteRollback(error, rollbackIssues);
544
+ if (error instanceof ExactReplacementConflictError)
545
+ rejectReplacementConflict(error);
546
+ if (error instanceof FileReplacementError) {
547
+ finishJournal(context, relativeJournal, journalIdentity);
548
+ rejectPublicationFailure(error, false);
549
+ }
550
+ finishJournal(context, relativeJournal, journalIdentity);
551
+ throw error;
552
+ }
553
+ }
554
+ //# sourceMappingURL=todoReconciliationTransaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"todoReconciliationTransaction.js","sourceRoot":"","sources":["../../../../../home/jgabor/git/agentera.release-publish-dev40/packages/cli/src/state/todoReconciliationTransaction.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"assign.js","sourceRoot":"","sources":["../../../../../../home/jgabor/git/agentera/packages/cli/src/state/write/assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,SAAS,IAAI,CAAC,GAA4B,EAAE,GAAW;IACrD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAA4B,EAAE,SAAiB;IAC7E,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAA4B;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IACxC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IAC7C,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACrH,CAAC"}
1
+ {"version":3,"file":"assign.js","sourceRoot":"","sources":["../../../../../../home/jgabor/git/agentera.release-publish-dev40/packages/cli/src/state/write/assign.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,SAAS,IAAI,CAAC,GAA4B,EAAE,GAAW;IACrD,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAE,GAAG,CAAC,GAAG,CAAe,CAAC,CAAC,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAA4B,EAAE,SAAiB;IAC7E,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACxF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAA4B;IACzD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC;AACrE,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IACxC,MAAM,CAAC,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,GAAG,GAAG,IAAI,IAAI,EAAE;IAC7C,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACrH,CAAC"}
@@ -1,6 +1,5 @@
1
1
  import { isDeepStrictEqual } from "node:util";
2
2
  import { isExactArchiveReplay, recoverArchivedEntry, } from "../archiveReplay.js";
3
- import { repairHealthDuplicates } from "../healthRepair.js";
4
3
  import { localDate, localTimestamp, nextEntryNumber, nextTaskNumber } from "./assign.js";
5
4
  import { reject } from "./errors.js";
6
5
  import { array, findByNumber, mapping, mappingPath } from "./helpers.js";
@@ -120,16 +119,6 @@ export function mutateCandidate(req, doc, recovered) {
120
119
  };
121
120
  }
122
121
  if (req.artifact === "health") {
123
- if (req.spec.verb === "repair") {
124
- if (!req.force)
125
- reject({ class: "conflict", message: "health repair requires --force; use --dry-run to preview the edit" });
126
- const number = Number(req.values.number);
127
- const keep = req.values.keep === "last" ? "last" : "first";
128
- const repaired = repairHealthDuplicates(candidate, number, keep);
129
- if (repaired.removed === 0)
130
- reject({ class: "unsupported_target", message: `health audit ${number} has no duplicate current-history rows to repair` });
131
- return { candidate: repaired.candidate, written: { number, removed_rows: repaired.removed, retained: keep }, assigned: { number, removed_rows: repaired.removed }, replay: false };
132
- }
133
122
  if (req.input && ("audits" in req.input || "archive" in req.input)) {
134
123
  reject({
135
124
  class: "schema_violation",
@@ -185,7 +174,7 @@ export function mutateCandidate(req, doc, recovered) {
185
174
  };
186
175
  reject({
187
176
  class: "conflict",
188
- message: `plan task "${req.values.name}" exists with different fields; use 'state plan update --task ${sameName.number}' to modify it`,
177
+ message: `plan task "${req.values.name}" exists with different fields; use 'state plan update --id ID --input task-patch.yaml' to modify it`,
189
178
  });
190
179
  }
191
180
  const entry = {