agentera 3.0.0-dev.41 → 3.0.0-dev.46

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 (728) hide show
  1. package/README.md +33 -4
  2. package/bundle/CHANGELOG.md +91 -1
  3. package/bundle/README.md +26 -19
  4. package/bundle/UPGRADE.md +50 -15
  5. package/bundle/references/adapters/package-publication.json +408 -14
  6. package/bundle/references/adapters/package-registry.yaml +414 -1
  7. package/bundle/references/adapters/package-surface-characterization.md +20 -0
  8. package/bundle/references/adapters/runtime-retired-resources.yaml +237 -1
  9. package/bundle/references/analysis/evidence-tier-authority.yaml +3 -3
  10. package/bundle/references/analysis/verification-policy.yaml +48 -0
  11. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +1 -1
  12. package/bundle/references/artifacts/glossary-entry-contract.yaml +11 -11
  13. package/bundle/references/artifacts/state-storage-authority.yaml +170 -118
  14. package/bundle/references/cli/capability-instruction-contract.yaml +4 -4
  15. package/bundle/references/cli/hybrid-route-contract.yaml +27 -5
  16. package/bundle/references/cli/routing-model.md +20 -4
  17. package/bundle/references/cli/trigger-schema-enrichment.md +7 -0
  18. package/bundle/references/cli/vocabulary-index.yaml +1 -3
  19. package/bundle/references/cli/vocabulary.md +18 -60
  20. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  21. package/bundle/skills/agentera/SKILL.md +32 -16
  22. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +3 -3
  23. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +1 -1
  24. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +5 -5
  25. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +5 -5
  26. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +2 -2
  27. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +3 -3
  28. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +2 -2
  29. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +3 -3
  30. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +1 -1
  31. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +1 -1
  32. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +1 -1
  33. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +5 -5
  34. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +2 -2
  35. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +1 -1
  36. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +1 -1
  37. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +1 -1
  38. package/bundle/skills/agentera/capability_schema_contract.yaml +2 -2
  39. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +3 -3
  40. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +3 -3
  41. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +1 -1
  42. package/bundle/skills/agentera/schemas/artifacts/health.yaml +3 -3
  43. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +12 -10
  44. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +3 -3
  45. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +6 -4
  46. package/dist/analytics/extractCorpus/cli.js +0 -1
  47. package/dist/analytics/extractCorpus/copilotSessions.js +0 -1
  48. package/dist/analytics/extractCorpus/core.js +0 -1
  49. package/dist/analytics/extractCorpus/corpus.js +0 -1
  50. package/dist/analytics/extractCorpus/coverageAudit.js +0 -1
  51. package/dist/analytics/extractCorpus/cursorSessions.js +0 -1
  52. package/dist/analytics/extractCorpus/evidenceTiers.js +0 -1
  53. package/dist/analytics/extractCorpus/extractCorpusParity.js +0 -1
  54. package/dist/analytics/extractCorpus/filesystemSources.js +0 -1
  55. package/dist/analytics/extractCorpus/index.js +0 -1
  56. package/dist/analytics/extractCorpus/jsonlSessions.js +0 -1
  57. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  58. package/dist/analytics/extractCorpus/sqliteSessions.js +0 -1
  59. package/dist/analytics/extractCorpus/tierReader.js +0 -1
  60. package/dist/analytics/extractCorpus.js +0 -1
  61. package/dist/analytics/glossaryAdviceResolution.js +0 -1
  62. package/dist/analytics/glossaryInputAcquisition.js +0 -1
  63. package/dist/analytics/personalGlossaryAdmission.js +0 -1
  64. package/dist/analytics/personalGlossaryProfile.js +0 -1
  65. package/dist/analytics/profileSignals.js +0 -1
  66. package/dist/analytics/usageStats.js +0 -1
  67. package/dist/audit/terminologyDrift.js +0 -1
  68. package/dist/bin/agentera.js +0 -1
  69. package/dist/capabilities/audit/instructions.js +3 -4
  70. package/dist/capabilities/build/instructions.js +2 -3
  71. package/dist/capabilities/design/instructions.js +1 -2
  72. package/dist/capabilities/discuss/instructions.js +2 -3
  73. package/dist/capabilities/document/instructions.js +2 -3
  74. package/dist/capabilities/index.js +5 -4
  75. package/dist/capabilities/optimize/instructions.js +1 -2
  76. package/dist/capabilities/orchestrate/instructions.js +3 -4
  77. package/dist/capabilities/plan/instructions.js +1 -2
  78. package/dist/capabilities/profile/instructions.js +1 -2
  79. package/dist/capabilities/research/instructions.js +1 -2
  80. package/dist/capabilities/status/instructions.js +1 -2
  81. package/dist/capabilities/status/startupInstructions.js +0 -5
  82. package/dist/capabilities/vision/instructions.js +1 -2
  83. package/dist/cli/appContext.js +0 -1
  84. package/dist/cli/argvalidate.js +0 -1
  85. package/dist/cli/capabilityContext/benchmark.js +4 -4
  86. package/dist/cli/capabilityContext/bespoke.js +0 -1
  87. package/dist/cli/capabilityContext/build.js +8 -10
  88. package/dist/cli/capabilityContext/closeout.js +8 -10
  89. package/dist/cli/capabilityContext/contract.js +7 -42
  90. package/dist/cli/capabilityContext/evidence.js +12 -14
  91. package/dist/cli/capabilityContext/index.js +0 -1
  92. package/dist/cli/capabilityContext/orchestration.js +6 -8
  93. package/dist/cli/capabilityContext/planState.js +0 -1
  94. package/dist/cli/capabilityContext/progress.js +0 -1
  95. package/dist/cli/capabilityContext/projectVerification.js +0 -1
  96. package/dist/cli/capabilityContext/shared.js +2 -19
  97. package/dist/cli/capabilityContext/slim.js +0 -1
  98. package/dist/cli/capabilityContext/startup.js +24 -152
  99. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  100. package/dist/cli/capabilityContext/types.js +4 -4
  101. package/dist/cli/capabilityContext.js +0 -1
  102. package/dist/cli/commands/appHome.js +0 -1
  103. package/dist/cli/commands/capability.js +2 -2
  104. package/dist/cli/commands/compact.js +0 -1
  105. package/dist/cli/commands/doctor.js +104 -9
  106. package/dist/cli/commands/durability.js +0 -1
  107. package/dist/cli/commands/glossaryAdvice.js +0 -1
  108. package/dist/cli/commands/lint.js +0 -1
  109. package/dist/cli/commands/personalGlossary.js +0 -1
  110. package/dist/cli/commands/prime/briefOrientation.js +24 -85
  111. package/dist/cli/commands/prime/buildExecutionRequest.js +2 -2
  112. package/dist/cli/commands/prime/bundleStatus.js +0 -1
  113. package/dist/cli/commands/prime/collectEntityOrientation.js +47 -27
  114. package/dist/cli/commands/prime/collectOrientationState.js +36 -2
  115. package/dist/cli/commands/prime/orientationOutput.js +104 -84
  116. package/dist/cli/commands/prime/types.js +0 -1
  117. package/dist/cli/commands/prime/v1Migration.js +0 -1
  118. package/dist/cli/commands/prime.js +18 -36
  119. package/dist/cli/commands/profileGrounding.js +0 -1
  120. package/dist/cli/commands/query.js +2 -2
  121. package/dist/cli/commands/report.js +0 -1
  122. package/dist/cli/commands/route.js +3 -3
  123. package/dist/cli/commands/schema.js +62 -92
  124. package/dist/cli/commands/state/decisions.js +0 -1
  125. package/dist/cli/commands/state/docs.js +0 -1
  126. package/dist/cli/commands/state/experimentRecords.js +0 -1
  127. package/dist/cli/commands/state/experiments.js +0 -1
  128. package/dist/cli/commands/state/get.js +0 -1
  129. package/dist/cli/commands/state/health.js +0 -1
  130. package/dist/cli/commands/state/index.js +0 -1
  131. package/dist/cli/commands/state/list.js +0 -1
  132. package/dist/cli/commands/state/objective.js +0 -1
  133. package/dist/cli/commands/state/plan.js +0 -1
  134. package/dist/cli/commands/state/planTasks.js +0 -1
  135. package/dist/cli/commands/state/plans.js +0 -1
  136. package/dist/cli/commands/state/progress.js +0 -1
  137. package/dist/cli/commands/state/shared.js +0 -1
  138. package/dist/cli/commands/state/todo.js +0 -1
  139. package/dist/cli/commands/state/write.js +10 -1
  140. package/dist/cli/commands/upgrade.js +0 -1
  141. package/dist/cli/commands/upgradeVerify.js +0 -1
  142. package/dist/cli/commands/validate.js +106 -10
  143. package/dist/cli/commands/verify.js +0 -1
  144. package/dist/cli/contracts/bundleStatus.js +0 -1
  145. package/dist/cli/contracts/orientationState.js +0 -1
  146. package/dist/cli/dispatch/argvParser.js +0 -1
  147. package/dist/cli/dispatch/check.js +6 -24
  148. package/dist/cli/dispatch/commands.js +3 -3
  149. package/dist/cli/dispatch/index.js +9 -36
  150. package/dist/cli/dispatch/lifecycle.js +11 -57
  151. package/dist/cli/dispatch/prime.js +0 -1
  152. package/dist/cli/dispatch/projections.js +17 -0
  153. package/dist/cli/dispatch/shared.js +0 -1
  154. package/dist/cli/dispatch/state.js +0 -1
  155. package/dist/cli/dispatch.js +0 -1
  156. package/dist/cli/errors.js +0 -1
  157. package/dist/cli/help.js +51 -30
  158. package/dist/cli/migrationRequired.js +3 -5
  159. package/dist/cli/orientation/attention.js +4 -17
  160. package/dist/cli/orientation/corpusCoverage.js +0 -1
  161. package/dist/cli/orientation.js +5 -5
  162. package/dist/cli/planArtifacts.js +0 -1
  163. package/dist/cli/planEvidence.js +0 -1
  164. package/dist/cli/planLifecycleState.js +2 -2
  165. package/dist/cli/planTaskIndex.js +0 -1
  166. package/dist/cli/preCutoverCommand.js +32 -0
  167. package/dist/cli/prime-blob.js +6 -6
  168. package/dist/cli/profileAcquisition.js +0 -1
  169. package/dist/cli/startupCompletenessContract.js +0 -1
  170. package/dist/cli/stateQuery.js +17 -21
  171. package/dist/cli/structured.js +0 -1
  172. package/dist/cli/todoMarkdown.js +0 -1
  173. package/dist/cli/todoReadinessSelection.js +2 -2
  174. package/dist/cli/todoSeverity.js +0 -1
  175. package/dist/core/atomicWriter.js +0 -1
  176. package/dist/core/developmentChannel.js +1 -0
  177. package/dist/core/developmentInvocation.js +374 -0
  178. package/dist/core/difflib.js +0 -1
  179. package/dist/core/envPaths.js +0 -1
  180. package/dist/core/jsonValue.js +0 -1
  181. package/dist/core/paths.js +0 -1
  182. package/dist/core/pyjson.js +0 -1
  183. package/dist/core/shell.js +0 -1
  184. package/dist/core/skillIdentity.js +0 -1
  185. package/dist/core/sourceRoot.js +9 -12
  186. package/dist/core/text.js +0 -1
  187. package/dist/core/toml.js +0 -1
  188. package/dist/core/yaml.js +0 -1
  189. package/dist/eval/evalSkills.js +0 -1
  190. package/dist/eval/hybridRouteEvaluation.js +0 -1
  191. package/dist/eval/semanticEval.js +0 -1
  192. package/dist/eval/semanticFixtures.js +0 -1
  193. package/dist/hooks/common.js +1 -54
  194. package/dist/hooks/compaction/apply.js +0 -1
  195. package/dist/hooks/compaction/dryRun.js +0 -1
  196. package/dist/hooks/compaction/index.js +1 -2
  197. package/dist/hooks/compaction/parse.js +0 -1
  198. package/dist/hooks/compaction/retention.js +0 -1
  199. package/dist/hooks/compaction/status.js +0 -1
  200. package/dist/hooks/compaction/types.js +0 -1
  201. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  202. package/dist/hooks/validateArtifact/index.js +6 -65
  203. package/dist/hooks/validateArtifact/markdown.js +0 -1
  204. package/dist/hooks/validateArtifact/schema.js +0 -1
  205. package/dist/hooks/validateArtifact/traversal.js +0 -1
  206. package/dist/hooks/validateArtifact/violations.js +0 -1
  207. package/dist/migrate/v2HandoffManifest.js +0 -3
  208. package/dist/registries/activationContract.js +2 -0
  209. package/dist/registries/activationTuples.js +106 -0
  210. package/dist/registries/artifactProtocolIds.js +0 -1
  211. package/dist/registries/artifactRegistry.js +0 -1
  212. package/dist/registries/artifactSchemaProjection.js +0 -1
  213. package/dist/registries/capabilityContract.js +0 -1
  214. package/dist/registries/evaluatorHandoffContract.js +0 -1
  215. package/dist/registries/evidenceTierContract.js +0 -1
  216. package/dist/registries/glossaryAdviceContract.js +2 -2
  217. package/dist/registries/glossaryCaveatContract.js +0 -1
  218. package/dist/registries/glossaryConsumerContractValidation.js +5 -6
  219. package/dist/registries/glossaryEntryContract.js +8 -8
  220. package/dist/registries/glossaryTermIdentity.js +0 -1
  221. package/dist/registries/glossaryTermOccurrence.js +0 -1
  222. package/dist/registries/hybridRoute.js +73 -2
  223. package/dist/registries/hybridRouteReceipt.js +2 -2
  224. package/dist/registries/packagePublication.js +229 -0
  225. package/dist/registries/packageRegistry.js +118 -2
  226. package/dist/registries/todoReadinessContract.js +0 -1
  227. package/dist/registries/triggerLoader.js +0 -1
  228. package/dist/registries/verbosityBudgetContract.js +0 -1
  229. package/dist/release/releaseMetadata.js +69 -3
  230. package/dist/runtime/lifecycleAdapterContract.js +0 -1
  231. package/dist/runtime/lifecycleAdapters.js +0 -1
  232. package/dist/runtime/lifecycleAuthority.js +0 -1
  233. package/dist/runtime/lifecycleOperationContract.js +12 -3
  234. package/dist/runtime/lifecycleOperations.js +0 -1
  235. package/dist/runtime/lifecycleOwnershipJournal.js +0 -1
  236. package/dist/runtime/lifecyclePublication.js +0 -1
  237. package/dist/runtime/lifecycleSnapshot.js +0 -1
  238. package/dist/runtime/nativeResourceCleanup.js +191 -6
  239. package/dist/setup/opencode.js +0 -1
  240. package/dist/setup/opencodeConstants.js +0 -1
  241. package/dist/setup/sharedSkill.js +0 -1
  242. package/dist/setup/smokeChecks.js +1 -33
  243. package/dist/state/archiveDiscovery.js +0 -1
  244. package/dist/state/archivePublication.js +0 -1
  245. package/dist/state/archiveRecovery.js +0 -1
  246. package/dist/state/archiveReplay.js +0 -1
  247. package/dist/state/canonicalMigrationRecord.js +0 -1
  248. package/dist/state/changelog.js +0 -1
  249. package/dist/state/decisionEntities.js +0 -1
  250. package/dist/state/decisionLegacyValidation.js +0 -1
  251. package/dist/state/decisionMigrationProvenance.js +0 -1
  252. package/dist/state/decisionOverlay.js +0 -1
  253. package/dist/state/decisionRevision.js +0 -1
  254. package/dist/state/decisionRevisionMigration.js +0 -1
  255. package/dist/state/directRetrieval.js +0 -1
  256. package/dist/state/durability.js +0 -1
  257. package/dist/state/entityCutover.js +174 -9
  258. package/dist/state/entityCutoverGit.js +0 -1
  259. package/dist/state/entityGlossaryAuthority.js +0 -1
  260. package/dist/state/entityListProjection.js +0 -1
  261. package/dist/state/entityListRuntimeRegistry.js +46 -11
  262. package/dist/state/entityMigrationCausality.js +3 -5
  263. package/dist/state/entityMigrationIdentity.js +0 -1
  264. package/dist/state/entityMigrationPreview.js +35 -73
  265. package/dist/state/entityMigrationTodo.js +133 -0
  266. package/dist/state/entityPublicationContext.js +0 -1
  267. package/dist/state/entityRetrievalHelp.js +53 -23
  268. package/dist/state/entityStorage.js +0 -1
  269. package/dist/state/exactReplacementRecovery.js +0 -1
  270. package/dist/state/experimentArchive.js +0 -1
  271. package/dist/state/experimentIdentity.js +0 -1
  272. package/dist/state/healthEntities.js +0 -1
  273. package/dist/state/healthEntityValidation.js +0 -1
  274. package/dist/state/healthRepair.js +0 -1
  275. package/dist/state/installRoot.js +0 -1
  276. package/dist/state/legacyEntityCutoverEvidence.js +0 -1
  277. package/dist/state/legacyIdentity.js +0 -1
  278. package/dist/state/legacySummaryRecord.js +0 -1
  279. package/dist/state/listAccounting.js +0 -1
  280. package/dist/state/listClassification.js +0 -1
  281. package/dist/state/listCursor.js +0 -1
  282. package/dist/state/listRetrieval.js +0 -1
  283. package/dist/state/migrationSourceBinding.js +0 -1
  284. package/dist/state/objectiveExperimentEntities.js +0 -1
  285. package/dist/state/planEntities.js +0 -1
  286. package/dist/state/planIdentity.js +0 -1
  287. package/dist/state/planRetrieval.js +0 -1
  288. package/dist/state/planTaskRetrieval.js +0 -1
  289. package/dist/state/progressEntities.js +0 -1
  290. package/dist/state/progressGlossaryCaveat.js +0 -1
  291. package/dist/state/progressPublicationOrder.js +0 -1
  292. package/dist/state/projectRoot.js +0 -1
  293. package/dist/state/projectionPolicy.js +0 -1
  294. package/dist/state/retrievalAuthority.js +0 -1
  295. package/dist/state/safeProjectFile.js +0 -1
  296. package/dist/state/startupAnalysis/benchmark.js +0 -1
  297. package/dist/state/startupAnalysis/contract.js +44 -10
  298. package/dist/state/startupAnalysis/helpers.js +0 -1
  299. package/dist/state/startupAnalysis/index.js +0 -1
  300. package/dist/state/startupAnalysis/metrics.js +0 -1
  301. package/dist/state/startupAnalysis/records.js +0 -1
  302. package/dist/state/startupAnalysis/report.js +0 -1
  303. package/dist/state/startupAnalysis/threshold.js +0 -1
  304. package/dist/state/startupAnalysis.js +0 -1
  305. package/dist/state/startupProjection.js +2 -2
  306. package/dist/state/stateMode.js +0 -1
  307. package/dist/state/stateStorageAuthority.js +0 -1
  308. package/dist/state/summaryEntityRead.js +0 -1
  309. package/dist/state/summaryMigrationProvenance.js +0 -1
  310. package/dist/state/summarySourceRowAuthority.js +0 -1
  311. package/dist/state/todoDocsEntities.js +161 -83
  312. package/dist/state/todoDocsEntityValidation.js +0 -1
  313. package/dist/state/todoMarkdownProjection.js +51 -0
  314. package/dist/state/todoReconciliationActivation.js +73 -4
  315. package/dist/state/todoReconciliationInspection.js +173 -0
  316. package/dist/state/todoReconciliationRepair.js +170 -0
  317. package/dist/state/todoReconciliationTransaction.js +41 -13
  318. package/dist/state/write/assign.js +0 -1
  319. package/dist/state/write/candidateMutation.js +0 -1
  320. package/dist/state/write/errors.js +0 -1
  321. package/dist/state/write/experimentPublication.js +0 -1
  322. package/dist/state/write/explain.js +0 -1
  323. package/dist/state/write/fields.js +0 -1
  324. package/dist/state/write/glossaryPublication.js +0 -1
  325. package/dist/state/write/grammar.js +13 -4
  326. package/dist/state/write/helpers.js +0 -1
  327. package/dist/state/write/index.js +0 -1
  328. package/dist/state/write/input.js +0 -1
  329. package/dist/state/write/lock.js +0 -1
  330. package/dist/state/write/mutation.js +0 -1
  331. package/dist/state/write/operations.js +0 -1
  332. package/dist/state/write/planEvaluation.js +0 -1
  333. package/dist/state/write/planPublication.js +0 -1
  334. package/dist/state/write/runtimeOperations.js +83 -6
  335. package/dist/state/write/serialize.js +0 -1
  336. package/dist/state/write/transaction.js +0 -1
  337. package/dist/state/write/validate.js +0 -1
  338. package/dist/upgrade/appContentRefresh.js +0 -1
  339. package/dist/upgrade/appModel.js +0 -1
  340. package/dist/upgrade/atomicWriter.js +0 -1
  341. package/dist/upgrade/bundleEvidence.js +0 -1
  342. package/dist/upgrade/channels.js +0 -1
  343. package/dist/upgrade/compatibility.js +0 -1
  344. package/dist/upgrade/doctor.js +0 -1
  345. package/dist/upgrade/doctorClassifier.js +0 -1
  346. package/dist/upgrade/installedHooksRetirement.js +0 -1
  347. package/dist/upgrade/legacyAgentCleanup.js +0 -1
  348. package/dist/upgrade/lifecycleUpgrade.js +0 -1
  349. package/dist/upgrade/migrateArtifactsV2ToV3.js +7 -15
  350. package/dist/upgrade/migrationPublication.js +0 -1
  351. package/dist/upgrade/nextMajorDoctor.js +0 -1
  352. package/dist/upgrade/npxPlatformStatus.js +0 -1
  353. package/dist/upgrade/projectIntegration.js +4 -17
  354. package/dist/upgrade/projectIntegrationDecision.js +0 -1
  355. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  356. package/dist/upgrade/runtimeMigration.js +61 -190
  357. package/dist/upgrade/upgradeCommands.js +5 -1
  358. package/dist/upgrade/upgradeLock.js +0 -1
  359. package/dist/upgrade/upgradeOrchestrator.js +52 -9
  360. package/dist/upgrade/v3CapabilitySurface.js +0 -1
  361. package/dist/upgrade/versionResolution.js +0 -1
  362. package/dist/validate/activationArtifactEvidence.js +844 -0
  363. package/dist/validate/activationConjunction.js +816 -0
  364. package/dist/validate/activationEvidenceManifest.js +515 -0
  365. package/dist/validate/activationPackageSemantics.js +29 -0
  366. package/dist/validate/appHomeContract.js +0 -2
  367. package/dist/validate/bootstrapAuthority.js +44 -0
  368. package/dist/validate/capability.js +0 -1
  369. package/dist/validate/crossCapability.js +0 -1
  370. package/dist/validate/retainedReferenceAuthority.js +879 -0
  371. package/dist/validate/selfAudit.js +0 -1
  372. package/dist/validate/v1LegacyCruft.js +0 -10
  373. package/dist/validate/vocabularyAuthority.js +6 -8
  374. package/package.json +12 -5
  375. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -127
  376. package/bundle/references/analysis/benchmark.md +0 -271
  377. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -435
  378. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -1015
  379. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -395
  380. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -241
  381. package/bundle/references/cli/capability-instruction-structure.md +0 -144
  382. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  383. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  384. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  385. package/bundle/references/cli/prime-consumer-compatibility.yaml +0 -701
  386. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -259
  387. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  388. package/bundle/references/cli/upgrade-repair-wording.md +0 -25
  389. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -97
  390. package/bundle/references/meta/documentation-inventory.md +0 -50
  391. package/bundle/skills/agentera/references/contract.md +0 -1097
  392. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  393. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  394. package/dist/analytics/extractCorpus/core.js.map +0 -1
  395. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  396. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  397. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  398. package/dist/analytics/extractCorpus/evidenceTiers.js.map +0 -1
  399. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  400. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  401. package/dist/analytics/extractCorpus/index.js.map +0 -1
  402. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  403. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  404. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  405. package/dist/analytics/extractCorpus/tierReader.js.map +0 -1
  406. package/dist/analytics/extractCorpus.js.map +0 -1
  407. package/dist/analytics/glossaryAdviceResolution.js.map +0 -1
  408. package/dist/analytics/glossaryInputAcquisition.js.map +0 -1
  409. package/dist/analytics/personalGlossaryAdmission.js.map +0 -1
  410. package/dist/analytics/personalGlossaryProfile.js.map +0 -1
  411. package/dist/analytics/profileSignals.js.map +0 -1
  412. package/dist/analytics/usageStats.js.map +0 -1
  413. package/dist/audit/terminologyDrift.js.map +0 -1
  414. package/dist/bin/agentera.js.map +0 -1
  415. package/dist/capabilities/audit/instructions.js.map +0 -1
  416. package/dist/capabilities/build/instructions.js.map +0 -1
  417. package/dist/capabilities/design/instructions.js.map +0 -1
  418. package/dist/capabilities/discuss/instructions.js.map +0 -1
  419. package/dist/capabilities/document/instructions.js.map +0 -1
  420. package/dist/capabilities/index.js.map +0 -1
  421. package/dist/capabilities/optimize/instructions.js.map +0 -1
  422. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  423. package/dist/capabilities/plan/instructions.js.map +0 -1
  424. package/dist/capabilities/profile/instructions.js.map +0 -1
  425. package/dist/capabilities/research/instructions.js.map +0 -1
  426. package/dist/capabilities/status/instructions.js.map +0 -1
  427. package/dist/capabilities/status/startupInstructions.js.map +0 -1
  428. package/dist/capabilities/vision/instructions.js.map +0 -1
  429. package/dist/cli/appContext.js.map +0 -1
  430. package/dist/cli/argvalidate.js.map +0 -1
  431. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  432. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  433. package/dist/cli/capabilityContext/build.js.map +0 -1
  434. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  435. package/dist/cli/capabilityContext/contract.js.map +0 -1
  436. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  437. package/dist/cli/capabilityContext/index.js.map +0 -1
  438. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  439. package/dist/cli/capabilityContext/planState.js.map +0 -1
  440. package/dist/cli/capabilityContext/progress.js.map +0 -1
  441. package/dist/cli/capabilityContext/projectVerification.js.map +0 -1
  442. package/dist/cli/capabilityContext/shared.js.map +0 -1
  443. package/dist/cli/capabilityContext/slim.js.map +0 -1
  444. package/dist/cli/capabilityContext/startup.js.map +0 -1
  445. package/dist/cli/capabilityContext/types.js.map +0 -1
  446. package/dist/cli/capabilityContext.js.map +0 -1
  447. package/dist/cli/commands/appHome.js.map +0 -1
  448. package/dist/cli/commands/capability.js.map +0 -1
  449. package/dist/cli/commands/compact.js.map +0 -1
  450. package/dist/cli/commands/doctor.js.map +0 -1
  451. package/dist/cli/commands/durability.js.map +0 -1
  452. package/dist/cli/commands/entityMigrate.js +0 -132
  453. package/dist/cli/commands/entityMigrate.js.map +0 -1
  454. package/dist/cli/commands/glossaryAdvice.js.map +0 -1
  455. package/dist/cli/commands/lint.js.map +0 -1
  456. package/dist/cli/commands/personalGlossary.js.map +0 -1
  457. package/dist/cli/commands/prime/briefOrientation.js.map +0 -1
  458. package/dist/cli/commands/prime/buildExecutionRequest.js.map +0 -1
  459. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  460. package/dist/cli/commands/prime/collectEntityOrientation.js.map +0 -1
  461. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  462. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  463. package/dist/cli/commands/prime/types.js.map +0 -1
  464. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  465. package/dist/cli/commands/prime.js.map +0 -1
  466. package/dist/cli/commands/profileGrounding.js.map +0 -1
  467. package/dist/cli/commands/query.js.map +0 -1
  468. package/dist/cli/commands/report.js.map +0 -1
  469. package/dist/cli/commands/route.js.map +0 -1
  470. package/dist/cli/commands/schema.js.map +0 -1
  471. package/dist/cli/commands/state/decisions.js.map +0 -1
  472. package/dist/cli/commands/state/docs.js.map +0 -1
  473. package/dist/cli/commands/state/experimentRecords.js.map +0 -1
  474. package/dist/cli/commands/state/experiments.js.map +0 -1
  475. package/dist/cli/commands/state/get.js.map +0 -1
  476. package/dist/cli/commands/state/health.js.map +0 -1
  477. package/dist/cli/commands/state/index.js.map +0 -1
  478. package/dist/cli/commands/state/list.js.map +0 -1
  479. package/dist/cli/commands/state/objective.js.map +0 -1
  480. package/dist/cli/commands/state/plan.js.map +0 -1
  481. package/dist/cli/commands/state/planTasks.js.map +0 -1
  482. package/dist/cli/commands/state/plans.js.map +0 -1
  483. package/dist/cli/commands/state/progress.js.map +0 -1
  484. package/dist/cli/commands/state/shared.js.map +0 -1
  485. package/dist/cli/commands/state/todo.js.map +0 -1
  486. package/dist/cli/commands/state/write.js.map +0 -1
  487. package/dist/cli/commands/upgrade.js.map +0 -1
  488. package/dist/cli/commands/upgradeVerify.js.map +0 -1
  489. package/dist/cli/commands/validate.js.map +0 -1
  490. package/dist/cli/commands/verify.js.map +0 -1
  491. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  492. package/dist/cli/contracts/orientationState.js.map +0 -1
  493. package/dist/cli/dispatch/argvParser.js.map +0 -1
  494. package/dist/cli/dispatch/check.js.map +0 -1
  495. package/dist/cli/dispatch/commands.js.map +0 -1
  496. package/dist/cli/dispatch/index.js.map +0 -1
  497. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  498. package/dist/cli/dispatch/prime.js.map +0 -1
  499. package/dist/cli/dispatch/shared.js.map +0 -1
  500. package/dist/cli/dispatch/state.js.map +0 -1
  501. package/dist/cli/dispatch.js.map +0 -1
  502. package/dist/cli/errors.js.map +0 -1
  503. package/dist/cli/help.js.map +0 -1
  504. package/dist/cli/migrationRequired.js.map +0 -1
  505. package/dist/cli/orientation/attention.js.map +0 -1
  506. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  507. package/dist/cli/orientation.js.map +0 -1
  508. package/dist/cli/planArtifacts.js.map +0 -1
  509. package/dist/cli/planEvidence.js.map +0 -1
  510. package/dist/cli/planLifecycleState.js.map +0 -1
  511. package/dist/cli/planTaskIndex.js.map +0 -1
  512. package/dist/cli/prime-blob.js.map +0 -1
  513. package/dist/cli/profileAcquisition.js.map +0 -1
  514. package/dist/cli/startupCompletenessContract.js.map +0 -1
  515. package/dist/cli/stateQuery.js.map +0 -1
  516. package/dist/cli/structured.js.map +0 -1
  517. package/dist/cli/todoMarkdown.js.map +0 -1
  518. package/dist/cli/todoReadinessSelection.js.map +0 -1
  519. package/dist/cli/todoSeverity.js.map +0 -1
  520. package/dist/core/atomicWriter.js.map +0 -1
  521. package/dist/core/difflib.js.map +0 -1
  522. package/dist/core/envPaths.js.map +0 -1
  523. package/dist/core/jsonValue.js.map +0 -1
  524. package/dist/core/paths.js.map +0 -1
  525. package/dist/core/pyjson.js.map +0 -1
  526. package/dist/core/shell.js.map +0 -1
  527. package/dist/core/skillIdentity.js.map +0 -1
  528. package/dist/core/sourceRoot.js.map +0 -1
  529. package/dist/core/text.js.map +0 -1
  530. package/dist/core/toml.js.map +0 -1
  531. package/dist/core/yaml.js.map +0 -1
  532. package/dist/eval/evalSkills.js.map +0 -1
  533. package/dist/eval/hybridRouteEvaluation.js.map +0 -1
  534. package/dist/eval/semanticEval.js.map +0 -1
  535. package/dist/eval/semanticFixtures.js.map +0 -1
  536. package/dist/hooks/common.js.map +0 -1
  537. package/dist/hooks/compaction/apply.js.map +0 -1
  538. package/dist/hooks/compaction/dryRun.js.map +0 -1
  539. package/dist/hooks/compaction/index.js.map +0 -1
  540. package/dist/hooks/compaction/parse.js.map +0 -1
  541. package/dist/hooks/compaction/retention.js.map +0 -1
  542. package/dist/hooks/compaction/status.js.map +0 -1
  543. package/dist/hooks/compaction/types.js.map +0 -1
  544. package/dist/hooks/cursorPreToolUse.js +0 -19
  545. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  546. package/dist/hooks/cursorSessionStart.js +0 -64
  547. package/dist/hooks/cursorSessionStart.js.map +0 -1
  548. package/dist/hooks/projectHookInput.js +0 -26
  549. package/dist/hooks/projectHookInput.js.map +0 -1
  550. package/dist/hooks/sessionStart.js +0 -94
  551. package/dist/hooks/sessionStart.js.map +0 -1
  552. package/dist/hooks/sessionStop.js +0 -198
  553. package/dist/hooks/sessionStop.js.map +0 -1
  554. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  555. package/dist/hooks/validateArtifact/index.js.map +0 -1
  556. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  557. package/dist/hooks/validateArtifact/runtime.js +0 -86
  558. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  559. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  560. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  561. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  562. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  563. package/dist/registries/artifactProtocolIds.js.map +0 -1
  564. package/dist/registries/artifactRegistry.js.map +0 -1
  565. package/dist/registries/artifactSchemaProjection.js.map +0 -1
  566. package/dist/registries/capabilityContract.js.map +0 -1
  567. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  568. package/dist/registries/evidenceTierContract.js.map +0 -1
  569. package/dist/registries/glossaryAdviceContract.js.map +0 -1
  570. package/dist/registries/glossaryCaveatContract.js.map +0 -1
  571. package/dist/registries/glossaryConsumerContractValidation.js.map +0 -1
  572. package/dist/registries/glossaryEntryContract.js.map +0 -1
  573. package/dist/registries/glossaryTermIdentity.js.map +0 -1
  574. package/dist/registries/glossaryTermOccurrence.js.map +0 -1
  575. package/dist/registries/hybridRoute.js.map +0 -1
  576. package/dist/registries/hybridRouteReceipt.js.map +0 -1
  577. package/dist/registries/packageRegistry.js.map +0 -1
  578. package/dist/registries/todoReadinessContract.js.map +0 -1
  579. package/dist/registries/triggerLoader.js.map +0 -1
  580. package/dist/registries/verbosityBudgetContract.js.map +0 -1
  581. package/dist/release/releaseMetadata.js.map +0 -1
  582. package/dist/runtime/lifecycleAdapterContract.js.map +0 -1
  583. package/dist/runtime/lifecycleAdapters.js.map +0 -1
  584. package/dist/runtime/lifecycleAuthority.js.map +0 -1
  585. package/dist/runtime/lifecycleOperationContract.js.map +0 -1
  586. package/dist/runtime/lifecycleOperations.js.map +0 -1
  587. package/dist/runtime/lifecycleOwnershipJournal.js.map +0 -1
  588. package/dist/runtime/lifecyclePublication.js.map +0 -1
  589. package/dist/runtime/lifecycleSnapshot.js.map +0 -1
  590. package/dist/runtime/nativeResourceCleanup.js.map +0 -1
  591. package/dist/setup/codex/cli.js +0 -130
  592. package/dist/setup/codex/cli.js.map +0 -1
  593. package/dist/setup/codex/configToml.js +0 -558
  594. package/dist/setup/codex/configToml.js.map +0 -1
  595. package/dist/setup/codex/constants.js +0 -14
  596. package/dist/setup/codex/constants.js.map +0 -1
  597. package/dist/setup/codex/installRoot.js +0 -64
  598. package/dist/setup/codex/installRoot.js.map +0 -1
  599. package/dist/setup/codex/state.js +0 -252
  600. package/dist/setup/codex/state.js.map +0 -1
  601. package/dist/setup/codex.js +0 -10
  602. package/dist/setup/codex.js.map +0 -1
  603. package/dist/setup/opencode.js.map +0 -1
  604. package/dist/setup/opencodeConstants.js.map +0 -1
  605. package/dist/setup/sharedSkill.js.map +0 -1
  606. package/dist/setup/smokeChecks.js.map +0 -1
  607. package/dist/state/archiveDiscovery.js.map +0 -1
  608. package/dist/state/archivePublication.js.map +0 -1
  609. package/dist/state/archiveRecovery.js.map +0 -1
  610. package/dist/state/archiveReplay.js.map +0 -1
  611. package/dist/state/canonicalMigrationRecord.js.map +0 -1
  612. package/dist/state/changelog.js.map +0 -1
  613. package/dist/state/decisionEntities.js.map +0 -1
  614. package/dist/state/decisionLegacyValidation.js.map +0 -1
  615. package/dist/state/decisionMigrationProvenance.js.map +0 -1
  616. package/dist/state/decisionOverlay.js.map +0 -1
  617. package/dist/state/decisionRevision.js.map +0 -1
  618. package/dist/state/decisionRevisionMigration.js.map +0 -1
  619. package/dist/state/directRetrieval.js.map +0 -1
  620. package/dist/state/durability.js.map +0 -1
  621. package/dist/state/entityCutover.js.map +0 -1
  622. package/dist/state/entityCutoverGit.js.map +0 -1
  623. package/dist/state/entityGlossaryAuthority.js.map +0 -1
  624. package/dist/state/entityListProjection.js.map +0 -1
  625. package/dist/state/entityListRuntimeRegistry.js.map +0 -1
  626. package/dist/state/entityMigrationCausality.js.map +0 -1
  627. package/dist/state/entityMigrationIdentity.js.map +0 -1
  628. package/dist/state/entityMigrationPreview.js.map +0 -1
  629. package/dist/state/entityPublicationContext.js.map +0 -1
  630. package/dist/state/entityRetrievalHelp.js.map +0 -1
  631. package/dist/state/entityStorage.js.map +0 -1
  632. package/dist/state/exactReplacementRecovery.js.map +0 -1
  633. package/dist/state/experimentArchive.js.map +0 -1
  634. package/dist/state/experimentIdentity.js.map +0 -1
  635. package/dist/state/healthEntities.js.map +0 -1
  636. package/dist/state/healthEntityValidation.js.map +0 -1
  637. package/dist/state/healthRepair.js.map +0 -1
  638. package/dist/state/installRoot.js.map +0 -1
  639. package/dist/state/legacyEntityCutoverEvidence.js.map +0 -1
  640. package/dist/state/legacyIdentity.js.map +0 -1
  641. package/dist/state/legacySummaryRecord.js.map +0 -1
  642. package/dist/state/listAccounting.js.map +0 -1
  643. package/dist/state/listClassification.js.map +0 -1
  644. package/dist/state/listCursor.js.map +0 -1
  645. package/dist/state/listRetrieval.js.map +0 -1
  646. package/dist/state/migrationSourceBinding.js.map +0 -1
  647. package/dist/state/objectiveExperimentEntities.js.map +0 -1
  648. package/dist/state/planEntities.js.map +0 -1
  649. package/dist/state/planIdentity.js.map +0 -1
  650. package/dist/state/planRetrieval.js.map +0 -1
  651. package/dist/state/planTaskRetrieval.js.map +0 -1
  652. package/dist/state/progressEntities.js.map +0 -1
  653. package/dist/state/progressGlossaryCaveat.js.map +0 -1
  654. package/dist/state/progressPublicationOrder.js.map +0 -1
  655. package/dist/state/projectRoot.js.map +0 -1
  656. package/dist/state/projectionPolicy.js.map +0 -1
  657. package/dist/state/retrievalAuthority.js.map +0 -1
  658. package/dist/state/safeProjectFile.js.map +0 -1
  659. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  660. package/dist/state/startupAnalysis/contract.js.map +0 -1
  661. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  662. package/dist/state/startupAnalysis/index.js.map +0 -1
  663. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  664. package/dist/state/startupAnalysis/records.js.map +0 -1
  665. package/dist/state/startupAnalysis/report.js.map +0 -1
  666. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  667. package/dist/state/startupAnalysis.js.map +0 -1
  668. package/dist/state/startupProjection.js.map +0 -1
  669. package/dist/state/stateMode.js.map +0 -1
  670. package/dist/state/stateStorageAuthority.js.map +0 -1
  671. package/dist/state/summaryEntityRead.js.map +0 -1
  672. package/dist/state/summaryMigrationProvenance.js.map +0 -1
  673. package/dist/state/summarySourceRowAuthority.js.map +0 -1
  674. package/dist/state/todoDocsEntities.js.map +0 -1
  675. package/dist/state/todoDocsEntityValidation.js.map +0 -1
  676. package/dist/state/todoReconciliationActivation.js.map +0 -1
  677. package/dist/state/todoReconciliationTransaction.js.map +0 -1
  678. package/dist/state/write/assign.js.map +0 -1
  679. package/dist/state/write/candidateMutation.js.map +0 -1
  680. package/dist/state/write/errors.js.map +0 -1
  681. package/dist/state/write/experimentPublication.js.map +0 -1
  682. package/dist/state/write/explain.js.map +0 -1
  683. package/dist/state/write/fields.js.map +0 -1
  684. package/dist/state/write/glossaryPublication.js.map +0 -1
  685. package/dist/state/write/grammar.js.map +0 -1
  686. package/dist/state/write/helpers.js.map +0 -1
  687. package/dist/state/write/index.js.map +0 -1
  688. package/dist/state/write/input.js.map +0 -1
  689. package/dist/state/write/lock.js.map +0 -1
  690. package/dist/state/write/mutation.js.map +0 -1
  691. package/dist/state/write/operations.js.map +0 -1
  692. package/dist/state/write/planEvaluation.js.map +0 -1
  693. package/dist/state/write/planPublication.js.map +0 -1
  694. package/dist/state/write/runtimeOperations.js.map +0 -1
  695. package/dist/state/write/serialize.js.map +0 -1
  696. package/dist/state/write/transaction.js.map +0 -1
  697. package/dist/state/write/validate.js.map +0 -1
  698. package/dist/upgrade/appContentRefresh.js.map +0 -1
  699. package/dist/upgrade/appModel.js.map +0 -1
  700. package/dist/upgrade/atomicWriter.js.map +0 -1
  701. package/dist/upgrade/bundleEvidence.js.map +0 -1
  702. package/dist/upgrade/channels.js.map +0 -1
  703. package/dist/upgrade/coexistenceProbe.js +0 -105
  704. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  705. package/dist/upgrade/compatibility.js.map +0 -1
  706. package/dist/upgrade/doctor.js.map +0 -1
  707. package/dist/upgrade/doctorClassifier.js.map +0 -1
  708. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  709. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  710. package/dist/upgrade/lifecycleUpgrade.js.map +0 -1
  711. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  712. package/dist/upgrade/migrationPublication.js.map +0 -1
  713. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  714. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  715. package/dist/upgrade/projectIntegration.js.map +0 -1
  716. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  717. package/dist/upgrade/runtimeMigration.js.map +0 -1
  718. package/dist/upgrade/upgradeCommands.js.map +0 -1
  719. package/dist/upgrade/upgradeLock.js.map +0 -1
  720. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  721. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  722. package/dist/upgrade/versionResolution.js.map +0 -1
  723. package/dist/validate/appHomeContract.js.map +0 -1
  724. package/dist/validate/capability.js.map +0 -1
  725. package/dist/validate/crossCapability.js.map +0 -1
  726. package/dist/validate/selfAudit.js.map +0 -1
  727. package/dist/validate/v1LegacyCruft.js.map +0 -1
  728. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -2,13 +2,12 @@ import { createHash } from "node:crypto";
2
2
  import fs from "node:fs";
3
3
  import path from "node:path";
4
4
  import YAML from "yaml";
5
- import { resolveSourceRoot } from "../core/sourceRoot.js";
5
+ import { fullEntityUpgradePreviewCommand } from "../upgrade/upgradeCommands.js";
6
6
  import { loadYamlMapping } from "../core/yaml.js";
7
7
  import { discoverPlanArtifacts, planDocumentParts } from "../cli/planArtifacts.js";
8
- import { parseTodoMarkdownListItem, renderTodoPublicRecord } from "../cli/todoMarkdown.js";
9
8
  import { assertRealpathBoundary, docsPathOverridesFromBytes, loadArtifactRecord, resolveArtifactPath } from "../registries/artifactRegistry.js";
10
9
  import { canonicalRecordJson, validateStateRecord } from "./archiveDiscovery.js";
11
- import { canonicalEntityEnvelopeBytes, discoverEntities, entityForbiddenCanonicalAliases, entityPreservedAggregateCollections, validateCanonicalEntityTargets } from "./entityStorage.js";
10
+ import { canonicalEntityEnvelopeBytes, entityForbiddenCanonicalAliases, entityPreservedAggregateCollections, validateCanonicalEntityTargets } from "./entityStorage.js";
12
11
  import { discoverObjectiveArtifacts, inspectExperimentIdentities } from "./experimentIdentity.js";
13
12
  import { decisionRevisionContract, decisionRevisionViolations } from "./decisionRevision.js";
14
13
  import { classifyCompleteDecisionConfidence, decisionLegacyCoexistence } from "./decisionLegacyValidation.js";
@@ -22,7 +21,20 @@ import { legacyIdentity } from "./legacyIdentity.js";
22
21
  import { canonicalMigrationRecord } from "./canonicalMigrationRecord.js";
23
22
  import { legacySummaryRecord } from "./legacySummaryRecord.js";
24
23
  import { applyCausalBlockers } from "./entityMigrationCausality.js";
24
+ import { todoMigrationObservations, todoReconciliationMigrationPlan } from "./entityMigrationTodo.js";
25
+ import { detectStateMode } from "./stateMode.js";
26
+ import { TODO_RECONCILIATION_ACTIVATION_PATH } from "./todoReconciliationActivation.js";
25
27
  import { projectPathIsStable as migrationPathIsStable, readProjectFileSnapshot, resolveProjectDescriptorPath, snapshotProjectPath as snapshotMigrationPath, } from "./safeProjectFile.js";
28
+ export function classifyEntityCutoverProject(project, sourceRoot) {
29
+ if (detectStateMode(project, sourceRoot) === "entities")
30
+ return "v3";
31
+ const stateRoot = path.join(project, ".agentera");
32
+ const aggregateNames = ["plan.yaml", "progress.yaml", "decisions.yaml", "health.yaml"];
33
+ const aggregateCount = aggregateNames.filter((name) => fs.existsSync(path.join(stateRoot, name))).length;
34
+ if (!fs.existsSync(stateRoot) || aggregateCount === 0 && !fs.existsSync(path.join(stateRoot, "entities")))
35
+ return "clean";
36
+ return fs.existsSync(path.join(stateRoot, "entities")) || aggregateCount === 1 ? "partial" : "v2";
37
+ }
26
38
  export const ENTITY_MIGRATION_PREVIEW_MAX_OUTPUT_BYTES = 32_768;
27
39
  const DEFAULT_LIMIT = 100;
28
40
  const MAX_LIMIT = 1000;
@@ -127,8 +139,10 @@ function collectSources(root, validatedRoot, todoPath, docsSnapshot, descriptorP
127
139
  const archives = directoryFiles(root, validatedRoot, ".agentera/archive", (candidate) => /^\.agentera\/archive\/(progress|decisions|health)\/.+/.test(candidate)
128
140
  || PLAN_ARCHIVE_SOURCE.test(candidate), descriptorPathResolver);
129
141
  const objectives = [".agentera/optimize", ".agentera/optimera"].flatMap((directory) => directoryFiles(root, validatedRoot, directory, (candidate) => /\/(objective|experiments)\.yaml$/.test(candidate), descriptorPathResolver));
130
- const collected = [...exact, ...archives, ...objectives];
131
- const missingRoots = [".agentera/archive/", ".agentera/optimize/", ".agentera/optimera/"]
142
+ const todoEntities = directoryFiles(root, validatedRoot, ".agentera/entities/todo/todo_item", (candidate) => candidate.endsWith(".yaml"), descriptorPathResolver);
143
+ const activation = readMigrationSource(validatedRoot, TODO_RECONCILIATION_ACTIVATION_PATH, descriptorPathResolver);
144
+ const collected = [...exact, ...archives, ...objectives, ...todoEntities, activation];
145
+ const missingRoots = [".agentera/archive/", ".agentera/optimize/", ".agentera/optimera/", ".agentera/entities/todo/todo_item/"]
132
146
  .filter((directory) => {
133
147
  if (collected.some((source) => source.kind === "unsafe" && source.relative === directory))
134
148
  return false;
@@ -152,13 +166,6 @@ function authorityBinding(sourceRoot) {
152
166
  }
153
167
  return { authority_schema_version: authority.schema_version, authority_sha256: hash(bytes) };
154
168
  }
155
- export function entityMigrationAuthorityProjection(sourceRoot = resolveSourceRoot()) {
156
- const authorityPath = path.join(sourceRoot, AUTHORITY_PATH);
157
- const authority = loadYamlMapping(fs.readFileSync(authorityPath, "utf8"));
158
- if (!mapping(authority.entity_migration))
159
- throw new Error(`state storage authority '${authorityPath}' has no entity migration contract`);
160
- return { authority: AUTHORITY_PATH, ...authority.entity_migration };
161
- }
162
169
  function sourceFingerprint(files) {
163
170
  return hash(canonicalRecordJson(files.map((file) => ({
164
171
  path: file.relative,
@@ -177,7 +184,7 @@ function parseYaml(source) {
177
184
  return loadYamlMapping(source.bytes.toString("utf8"));
178
185
  }
179
186
  function recovery(project, pathName) {
180
- return `Repair '${pathName}', then run agentera state migrate entities --project '${project.replaceAll("'", "'\\''")}' --dry-run --format json.`;
187
+ return `Repair '${pathName}', then run ${fullEntityUpgradePreviewCommand(project)}.`;
181
188
  }
182
189
  function unsafeSourceMessage(pathName) {
183
190
  return `source path '${pathName}' is a symbolic link, non-file, or unreadable; replace it with a readable regular file inside the project`;
@@ -476,41 +483,8 @@ function objectiveObservations(root, files, observations) {
476
483
  observations.push({ key: `${artifact}:corrupt:${source.relative}`, artifact, boundary: artifact === "objective" ? "objective" : "experiment", path: source.relative, provenance: artifact === "objective" ? "objective_candidate" : "experiment_projection", record: null, detail: "corrupt", relationships: [], message: unsafeSourceMessage(source.relative) });
477
484
  }
478
485
  }
479
- function todoAndDocs(root, todoPath, files, observations) {
480
- const todo = files.find((source) => source.relative === todoPath);
481
- if (todo?.kind === "file" && todo.bytes) {
482
- let section = "normal";
483
- todo.bytes.toString("utf8").split(/\r?\n/).forEach((line, index) => {
484
- const heading = line.trim().match(/^##\s+(.+)$/)?.[1]?.toLowerCase();
485
- if (heading)
486
- section = heading.includes("critical") ? "critical" : heading.includes("degraded") ? "degraded" : heading.includes("annoying") ? "annoying" : heading.includes("resolved") ? "resolved" : heading.includes("normal") ? "normal" : section;
487
- const item = parseTodoMarkdownListItem(line.trim());
488
- if (!item)
489
- return;
490
- const severity = section === "resolved" ? "normal" : section;
491
- const record = item.kind
492
- ? { kind: item.kind, target_version: item.target_version ?? null, title: item.title ?? item.description, requirements: [], acceptance: [], release_blocker: false, severity, status: item.status }
493
- : { severity, status: item.status, description: item.description };
494
- const violations = todoDocsRecordViolations("todo_item", record);
495
- observations.push({ key: `${todoPath}:line:${index + 1}`, artifact: "todo", boundary: "todo_item", path: todoPath, provenance: "current_canonical", record, detail: violations.length ? "corrupt" : "full", relationships: [], message: violations.length ? violations.join("; ") : undefined });
496
- });
497
- }
498
- else if (todo?.kind === "unsafe") {
499
- observations.push({ key: "todo:document", artifact: "todo", boundary: "todo_item", path: todoPath, provenance: "current_canonical", record: null, detail: "corrupt", relationships: [], message: unsafeSourceMessage(todoPath) });
500
- }
501
- const existingTodos = discoverEntities(root, resolveSourceRoot()).entities.filter((entity) => entity.boundary === "todo_item" && entity.id && entity.record);
502
- for (const entity of existingTodos) {
503
- const row = todoMarkdownRowForMigration(todo?.kind === "file" && todo.bytes ? todo.bytes.toString("utf8") : "", entity.id);
504
- if (!row)
505
- continue;
506
- const severityMatches = row.severity === "resolved" || row.severity === null || entity.record.severity === row.severity;
507
- const publicText = row.item.public_description ?? row.item.description;
508
- const entityText = renderTodoPublicRecord(entity.record);
509
- const textMatches = entity.record.title !== undefined ? entityText === publicText : entityText === row.item.description || entityText === publicText;
510
- const publicMatches = entity.record.status === row.item.status && severityMatches && textMatches;
511
- if (!publicMatches)
512
- observations.push({ key: `conflict:todo:public:${entity.id}`, artifact: "todo", boundary: "todo_item", path: todoPath, provenance: "public_authority_conflict", record: null, detail: "corrupt", relationships: [], message: `TODO.md and Agentera disagree on public values for TODO '${entity.id}'` });
513
- }
486
+ function todoAndDocs(root, sourceRoot, todoPath, files, observations) {
487
+ observations.push(...todoMigrationObservations(root, sourceRoot, todoPath, files));
514
488
  const docs = files.find((source) => source.relative === ".agentera/docs.yaml");
515
489
  if (docs?.kind === "file") {
516
490
  try {
@@ -535,18 +509,6 @@ function todoAndDocs(root, todoPath, files, observations) {
535
509
  observations.push({ key: "docs:document", artifact: "docs", boundary: "documentation_inventory_entry", path: docs.relative, provenance: "current_canonical", record: null, detail: "corrupt", relationships: [], message: unsafeSourceMessage(docs.relative) });
536
510
  }
537
511
  }
538
- function todoMarkdownRowForMigration(text, id) {
539
- let section = "normal";
540
- for (const line of text.split(/\r?\n/)) {
541
- const heading = line.trim().match(/^##\s+(.+)$/)?.[1]?.toLowerCase();
542
- if (heading)
543
- section = heading.includes("critical") ? "critical" : heading.includes("degraded") ? "degraded" : heading.includes("annoying") ? "annoying" : heading.includes("resolved") ? "resolved" : heading.includes("normal") ? "normal" : section;
544
- const item = parseTodoMarkdownListItem(line.trim());
545
- if (item?.id === id)
546
- return { severity: section === "resolved" ? "resolved" : ["critical", "degraded", "normal", "annoying"].includes(section) ? section : null, item };
547
- }
548
- return null;
549
- }
550
512
  function preservedSingletons(files) {
551
513
  const declarations = [
552
514
  { boundary: "vision", source_path: ".agentera/vision.yaml" },
@@ -624,7 +586,8 @@ function buildEntries(project, sourceRoot, fingerprint, observations, forbiddenA
624
586
  ? [...canonicalSummaryBodies(group, forbiddenAliases)].sort()
625
587
  : [];
626
588
  const identityBinding = canonicalSummaries.length === 1 ? hash(canonicalRecordJson(canonicalSummaries)) : fingerprint;
627
- ids.set(key, entityMigrationId(identityBinding, key));
589
+ const explicitIds = [...new Set(group.map((item) => item.explicitId).filter((id) => id !== undefined))];
590
+ ids.set(key, explicitIds.length === 1 ? explicitIds[0] : entityMigrationId(identityBinding, key));
628
591
  }
629
592
  const collisions = new Set();
630
593
  const idOwners = new Map();
@@ -732,16 +695,17 @@ function migrationInventory(projectRoot, sourceRoot, resolveDescriptorPath) {
732
695
  decisionEvidence(sourceRoot, files, observations);
733
696
  planObservations(project, files, observations);
734
697
  objectiveObservations(project, files, observations);
735
- todoAndDocs(project, todoPath, files, observations);
698
+ todoAndDocs(project, sourceRoot, todoPath, files, observations);
736
699
  const preserved = preservedSingletons(files);
737
700
  const completeInventory = buildEntries(project, sourceRoot, fingerprint, observations, entityForbiddenCanonicalAliases(sourceRoot));
738
701
  const preservedResidues = completeInventory.filter((entry) => entry.classification === "historical_projection_residue");
739
702
  const completeEntries = completeInventory.filter((entry) => entry.classification !== "historical_projection_residue");
703
+ const todoReconciliation = todoReconciliationMigrationPlan(todoPath, files, completeEntries);
740
704
  for (const entry of completeEntries) {
741
705
  if (entry.proposed_target && entry.artifact)
742
706
  entry.target_sha256 = hash(canonicalEntityEnvelopeBytes({ id: entry.proposed_target.id, artifact: entry.artifact, record: entry.record, migrationProvenance: entry.canonical_migration_provenance }));
743
707
  }
744
- let causal = applyCausalBlockers(completeEntries, project, (sourcePath) => recovery(project, sourcePath));
708
+ let causal = applyCausalBlockers(completeEntries, (sourcePath) => recovery(project, sourcePath));
745
709
  const targetDiagnostics = validateEntityMigrationTargets(project, completeEntries, sourceRoot);
746
710
  for (const diagnostic of targetDiagnostics) {
747
711
  const entry = completeEntries.find((candidate) => candidate.source_identity === diagnostic.sourceIdentity);
@@ -754,7 +718,7 @@ function migrationInventory(projectRoot, sourceRoot, resolveDescriptorPath) {
754
718
  entry.recovery = recovery(project, entry.source_paths[0]);
755
719
  causal.rootReasons.set(entry.source_identity, `target_invalid: ${diagnostic.message}`);
756
720
  }
757
- causal = applyCausalBlockers(completeEntries, project, (sourcePath) => recovery(project, sourcePath), causal.rootReasons);
721
+ causal = applyCausalBlockers(completeEntries, (sourcePath) => recovery(project, sourcePath), causal.rootReasons);
758
722
  const classes = ["verified_full", "recoverable_degraded_full_projection", "valid_compacted_summary", "duplicate", "conflict", "corrupt", "unsupported", "historical_projection_residue"];
759
723
  const counts = Object.fromEntries(classes.map((classification) => [classification, completeInventory.filter((entry) => entry.classification === classification).length]));
760
724
  counts.total = completeInventory.length;
@@ -805,12 +769,12 @@ function migrationInventory(projectRoot, sourceRoot, resolveDescriptorPath) {
805
769
  counts.blockers = counts.root_blockers + counts.dependent_blockers;
806
770
  const digestEntries = completeEntries.map(({ record: _record, ...entry }) => entry);
807
771
  const digestResidues = preservedResidues.map(({ record: _record, ...entry }) => entry);
808
- const digestBody = { source_fingerprint: fingerprint, authority, selectors: { project, filter: INVENTORY_FILTER, order: INVENTORY_ORDER }, entries: digestEntries, preserved_residues: digestResidues, preserved_singletons: preserved, counts, diagnostics };
772
+ const digestBody = { source_fingerprint: fingerprint, authority, selectors: { project, filter: INVENTORY_FILTER, order: INVENTORY_ORDER }, entries: digestEntries, preserved_residues: digestResidues, preserved_singletons: preserved, counts, diagnostics, todo_reconciliation: todoReconciliation ?? null };
809
773
  const previewDigest = hash(canonicalRecordJson(digestBody));
810
774
  const sources = files.map((file) => {
811
775
  return { path: file.relative, presence: file.kind === "file" ? "file" : "missing", size: file.bytes?.byteLength ?? 0, sha256: file.bytes ? hash(file.bytes) : null, mode: file.kind === "file" ? file.mode : null, dev: file.kind === "file" ? String(file.dev) : null, ino: file.kind === "file" ? String(file.ino) : null, type: file.kind === "file" ? file.type : null, bytes_base64: file.bytes?.toString("base64") ?? null };
812
776
  });
813
- return { project, source_fingerprint: fingerprint, preview_digest: previewDigest, ...authority, preserved_singletons: preserved, entries: completeEntries, preserved_residues: preservedResidues, sources, counts, diagnostics };
777
+ return { project, source_fingerprint: fingerprint, preview_digest: previewDigest, ...authority, preserved_singletons: preserved, entries: completeEntries, preserved_residues: preservedResidues, sources, counts, diagnostics, ...(todoReconciliation ? { todo_reconciliation: todoReconciliation } : {}) };
814
778
  }
815
779
  export function planEntityMigration(projectRoot, sourceRoot, options = {}) {
816
780
  return migrationInventory(projectRoot, sourceRoot, options.resolveDescriptorPath ?? resolveProjectDescriptorPath);
@@ -822,7 +786,7 @@ export function previewEntityMigration(projectRoot, sourceRoot, options = {}) {
822
786
  const completeEntries = inventory.entries.map(({ record: _record, ...entry }) => entry);
823
787
  const preservedResidues = inventory.preserved_residues.map(({ record: _record, ...entry }) => entry);
824
788
  const requestedLimit = Math.max(1, Math.min(options.limit ?? DEFAULT_LIMIT, MAX_LIMIT));
825
- const restartCommand = `agentera state migrate entities --project '${project.replaceAll("'", "'\\''")}' --limit ${requestedLimit} --dry-run --format json`;
789
+ const restartCommand = fullEntityUpgradePreviewCommand(project);
826
790
  if (options.after !== undefined && (options.sourceFingerprint !== fingerprint || options.previewDigest !== previewDigest)) {
827
791
  throw new EntityMigrationContinuationError(restartCommand);
828
792
  }
@@ -835,12 +799,11 @@ export function previewEntityMigration(projectRoot, sourceRoot, options = {}) {
835
799
  return diagnostics.filter((diagnostic) => identities.has(diagnostic.source_identity));
836
800
  };
837
801
  let omissionReason = start > 0 || start + entries.length < completeEntries.length ? "result_limit" : null;
838
- const quotedProject = project.replaceAll("'", "'\\''");
839
- const base = { schemaVersion: "agentera.entityMigrationPreview.v1", command: "state migrate entities", status: counts.blockers > 0 ? "blocked" : "ready", mode: "preview", project, read_only: true, mutation_intent: false, mutation_performed: false, source_fingerprint: fingerprint, preview_digest: previewDigest, preserved_singletons: preserved, preserved_residues: preservedResidues, counts, source_contract: { authority: AUTHORITY_PATH, ...authority, zero_write: true, scalar_truncation: "forbidden", apply_owner: "full development-channel upgrade --yes" } };
802
+ const base = { schemaVersion: "agentera.entityMigrationPreview.v1", command: "upgrade", status: counts.blockers > 0 ? "blocked" : "ready", mode: "preview", project, read_only: true, mutation_intent: false, mutation_performed: false, source_fingerprint: fingerprint, preview_digest: previewDigest, preserved_singletons: preserved, preserved_residues: preservedResidues, counts, source_contract: { authority: AUTHORITY_PATH, ...authority, zero_write: true, scalar_truncation: "forbidden", apply_owner: "full development-channel upgrade --yes" } };
840
803
  const serializedBytes = () => {
841
804
  const pageDiagnostics = diagnosticsForEntries();
842
805
  const nextAfter = start + entries.length < completeEntries.length ? entries.at(-1)?.source_identity ?? null : null;
843
- const command = nextAfter ? `agentera state migrate entities --project '${quotedProject}' --after '${nextAfter.replaceAll("'", "'\\''")}' --source-fingerprint ${fingerprint} --preview-digest ${previewDigest} --limit ${requestedLimit} --dry-run --format json` : restartCommand;
806
+ const command = restartCommand;
844
807
  const body = { ...base, entries, diagnostics: pageDiagnostics, omitted: start > 0 || entries.length < completeEntries.length, omitted_count: completeEntries.length - entries.length, diagnostics_omitted_count: diagnostics.length - pageDiagnostics.length, omission_reason: omissionReason, page_after: options.after ?? null, next_after: nextAfter, retrieval: { command } };
845
808
  return Math.max(Buffer.byteLength(JSON.stringify(body, null, 2), "utf8"), Buffer.byteLength(YAML.stringify(body), "utf8"));
846
809
  };
@@ -852,7 +815,7 @@ export function previewEntityMigration(projectRoot, sourceRoot, options = {}) {
852
815
  throw new Error(`the next whole migration entry exceeds the ${ENTITY_MIGRATION_PREVIEW_MAX_OUTPUT_BYTES}-byte output budget; repair that source before retrying`);
853
816
  const outputDiagnostics = diagnosticsForEntries();
854
817
  const nextAfter = start + entries.length < completeEntries.length ? entries.at(-1)?.source_identity ?? null : null;
855
- const retrieval = { command: nextAfter ? `agentera state migrate entities --project '${quotedProject}' --after '${nextAfter.replaceAll("'", "'\\''")}' --source-fingerprint ${fingerprint} --preview-digest ${previewDigest} --limit ${requestedLimit} --dry-run --format json` : restartCommand };
818
+ const retrieval = { command: restartCommand };
856
819
  return { ...base, status: base.status, mode: "preview", entries, diagnostics: outputDiagnostics, omitted: start > 0 || entries.length < completeEntries.length, omitted_count: completeEntries.length - entries.length, diagnostics_omitted_count: diagnostics.length - outputDiagnostics.length, omission_reason: omissionReason, page_after: options.after ?? null, next_after: nextAfter, retrieval };
857
820
  }
858
821
  export class EntityMigrationContinuationError extends Error {
@@ -869,7 +832,7 @@ export class EntityMigrationBindingError extends Error {
869
832
  classification = "source_changed";
870
833
  restartCommand;
871
834
  constructor(current) {
872
- const restartCommand = `agentera state migrate entities --project '${current.project.replaceAll("'", "'\\''")}' --dry-run --format json`;
835
+ const restartCommand = fullEntityUpgradePreviewCommand(current.project);
873
836
  super(`entity migration source or migration authority changed after preview; rerun ${restartCommand}`);
874
837
  this.current = current;
875
838
  this.restartCommand = restartCommand;
@@ -881,4 +844,3 @@ export function assertEntityMigrationBinding(expectedSourceFingerprint, expected
881
844
  throw new EntityMigrationBindingError(current);
882
845
  return effect();
883
846
  }
884
- //# sourceMappingURL=entityMigrationPreview.js.map
@@ -0,0 +1,133 @@
1
+ import { createHash } from "node:crypto";
2
+ import { parseTodoMarkdownListItem, renderTodoPublicRecord } from "../cli/todoMarkdown.js";
3
+ import { discoverEntities } from "./entityStorage.js";
4
+ import { todoDocsRecordViolations } from "./todoDocsEntityValidation.js";
5
+ import { TODO_RECONCILIATION_ACTIVATION_PATH, todoReconciliationActivationBytes } from "./todoReconciliationActivation.js";
6
+ function migrationTodoRows(text) {
7
+ let section = "normal";
8
+ const orders = new Map();
9
+ const rows = [];
10
+ text.split(/\r?\n/).forEach((line, index) => {
11
+ const heading = line.trim().match(/^##\s+(.+)$/)?.[1]?.toLowerCase();
12
+ if (heading) {
13
+ if (heading.includes("critical"))
14
+ section = "critical";
15
+ else if (heading.includes("degraded"))
16
+ section = "degraded";
17
+ else if (heading.includes("annoying"))
18
+ section = "annoying";
19
+ else if (heading.includes("resolved"))
20
+ section = "resolved";
21
+ else if (heading.includes("normal"))
22
+ section = "normal";
23
+ else if (heading === "notes")
24
+ section = "unmanaged";
25
+ }
26
+ const item = parseTodoMarkdownListItem(line.trim());
27
+ if (!item || section === "unmanaged")
28
+ return;
29
+ const severity = section === "resolved" ? "normal" : section;
30
+ const order = (orders.get(section) ?? 0) + 1;
31
+ orders.set(section, order);
32
+ const record = item.kind && item.kind !== "x"
33
+ ? { kind: item.kind, target_version: item.target_version ?? null, title: item.title ?? item.description, requirements: [], acceptance: [], release_blocker: false, severity, status: item.status }
34
+ : { severity, status: item.status, description: item.public_description ?? item.description };
35
+ rows.push({ index, section, order, item, record });
36
+ });
37
+ return rows;
38
+ }
39
+ function importMigrationTodoPublic(entity, row) {
40
+ const record = structuredClone(entity);
41
+ if (row.record.title !== undefined) {
42
+ delete record.description;
43
+ record.kind = row.record.kind;
44
+ record.target_version = row.record.target_version;
45
+ record.title = row.record.title;
46
+ }
47
+ else {
48
+ for (const field of ["kind", "target_version", "title"])
49
+ delete record[field];
50
+ record.description = row.record.description;
51
+ }
52
+ if (row.section !== "resolved")
53
+ record.severity = row.record.severity;
54
+ record.status = row.record.status;
55
+ return record;
56
+ }
57
+ export function todoMigrationObservations(root, sourceRoot, todoPath, files) {
58
+ const observations = [];
59
+ const todo = files.find((source) => source.relative === todoPath);
60
+ const activation = files.find((source) => source.relative === TODO_RECONCILIATION_ACTIVATION_PATH);
61
+ if (activation?.kind === "file")
62
+ observations.push({ key: "todo:activation:stale", artifact: "todo", boundary: "todo_item", path: TODO_RECONCILIATION_ACTIVATION_PATH, provenance: "preexisting_activation", record: null, detail: "corrupt", relationships: [], message: "TODO reconciliation activation exists before entity cutover" });
63
+ if (todo?.kind === "file" && todo.bytes) {
64
+ const rows = migrationTodoRows(todo.bytes.toString("utf8"));
65
+ const existing = discoverEntities(root, sourceRoot).entities.filter((entity) => entity.boundary === "todo_item");
66
+ if (existing.length > 0) {
67
+ const invalid = existing.find((entity) => entity.classification !== "valid" || !entity.id || !entity.record);
68
+ if (invalid)
69
+ observations.push({ key: `todo:entity:invalid:${invalid.relativePath}`, artifact: "todo", boundary: "todo_item", path: invalid.relativePath, provenance: "precreated_entity", record: null, detail: "corrupt", relationships: [], message: "pre-created TODO entity evidence is not canonical" });
70
+ const claimed = new Set();
71
+ for (const row of rows) {
72
+ let matches = existing.filter((entity) => entity.classification === "valid" && entity.id && entity.record && !claimed.has(entity.id));
73
+ if (row.item.id)
74
+ matches = matches.filter((entity) => entity.id === row.item.id);
75
+ else
76
+ matches = matches.filter((entity) => renderTodoPublicRecord(entity.record) === (row.item.public_description ?? row.item.description) && (row.section === "resolved" || entity.record.severity === row.record.severity));
77
+ if (matches.length !== 1) {
78
+ observations.push({ key: `todo:row:${row.index + 1}`, artifact: "todo", boundary: "todo_item", path: todoPath, provenance: "precreated_entity_match", record: null, detail: "corrupt", relationships: [], message: matches.length === 0 ? `TODO.md line ${row.index + 1} has no one-to-one canonical entity match` : `TODO.md line ${row.index + 1} has multiple canonical entity matches` });
79
+ continue;
80
+ }
81
+ const entity = matches[0];
82
+ claimed.add(entity.id);
83
+ const record = importMigrationTodoPublic(entity.record, row);
84
+ const violations = todoDocsRecordViolations("todo_item", record, sourceRoot);
85
+ observations.push({ key: `${todoPath}:line:${row.index + 1}`, artifact: "todo", boundary: "todo_item", path: todoPath, provenance: "precreated_entity_match", record, detail: violations.length ? "corrupt" : "full", relationships: [], message: violations.length ? violations.join("; ") : undefined, explicitId: entity.id });
86
+ }
87
+ for (const entity of existing)
88
+ if (entity.id && !claimed.has(entity.id))
89
+ observations.push({ key: `todo:entity:unmatched:${entity.id}`, artifact: "todo", boundary: "todo_item", path: entity.relativePath, provenance: "precreated_entity_match", record: null, detail: "corrupt", relationships: [], message: `canonical TODO entity '${entity.id}' has no one-to-one TODO.md row match` });
90
+ }
91
+ else {
92
+ for (const row of rows) {
93
+ const violations = todoDocsRecordViolations("todo_item", row.record, sourceRoot);
94
+ observations.push({ key: `${todoPath}:line:${row.index + 1}`, artifact: "todo", boundary: "todo_item", path: todoPath, provenance: "current_canonical", record: row.record, detail: violations.length ? "corrupt" : "full", relationships: [], message: violations.length ? violations.join("; ") : undefined });
95
+ }
96
+ }
97
+ }
98
+ else if (todo?.kind === "unsafe")
99
+ observations.push({ key: "todo:document", artifact: "todo", boundary: "todo_item", path: todoPath, provenance: "current_canonical", record: null, detail: "corrupt", relationships: [], message: `source path '${todoPath}' is a symbolic link, non-file, or unreadable; replace it with a readable regular file inside the project` });
100
+ return observations;
101
+ }
102
+ export function todoReconciliationMigrationPlan(todoPath, files, entries) {
103
+ const todo = files.find((source) => source.relative === todoPath);
104
+ if (todo?.kind !== "file" || !todo.bytes)
105
+ return undefined;
106
+ const rows = migrationTodoRows(todo.bytes.toString("utf8"));
107
+ const byLine = new Map(entries.filter((entry) => entry.boundary === "todo_item" && entry.proposed_target).flatMap((entry) => {
108
+ const match = new RegExp(`^${todoPath.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}:line:(\\d+)$`).exec(entry.source_identity);
109
+ return match ? [[Number(match[1]) - 1, entry]] : [];
110
+ }));
111
+ if (byLine.size !== rows.length)
112
+ return undefined;
113
+ const lines = todo.bytes.toString("utf8").split(/\r?\n/);
114
+ for (const row of rows) {
115
+ const entry = byLine.get(row.index);
116
+ if (!entry?.proposed_target)
117
+ return undefined;
118
+ const record = structuredClone(entry.record);
119
+ record.reconciliation = { schema_version: "agentera.todoReconciliation.v1", public: { present: true, description: renderTodoPublicRecord(record), severity: String(record.severity), status: String(record.status), order: row.order } };
120
+ entry.record = record;
121
+ if (!row.item.id)
122
+ lines[row.index] = lines[row.index].replace(/^(\s*-\s+\[[ xX]\]\s+)/, `$1[id:${entry.proposed_target.id}] `);
123
+ }
124
+ const docs = files.find((source) => source.relative === ".agentera/docs.yaml");
125
+ const mappingBytes = docs?.kind === "file" ? docs.bytes : Buffer.from("<absent>");
126
+ return {
127
+ public_path: todoPath,
128
+ mapping_sha256: createHash("sha256").update(todoPath).update("\0").update(mappingBytes).digest("hex"),
129
+ markdown_before_base64: todo.bytes.toString("base64"),
130
+ markdown_after: `${lines.join("\n").replace(/\n*$/, "")}\n`,
131
+ activation_after: todoReconciliationActivationBytes([]),
132
+ };
133
+ }
@@ -804,4 +804,3 @@ export class EntityPublicationContext {
804
804
  }
805
805
  }
806
806
  }
807
- //# sourceMappingURL=entityPublicationContext.js.map
@@ -1,8 +1,8 @@
1
+ import { projectEntityDevelopmentValue, } from "../core/developmentInvocation.js";
1
2
  import { resolveSourceRoot } from "../core/sourceRoot.js";
2
- import { ENTITY_LIST_RUNTIME_FAMILIES, ENTITY_LIST_RUNTIME_REGISTRY, runtimeEntityFamilyForHelpArgs, runtimeEntityListFamilyForHelpArgs, } from "./entityListRuntimeRegistry.js";
3
+ import { ENTITY_LIST_RUNTIME_FAMILIES, ENTITY_LIST_RUNTIME_BOUNDS, ENTITY_LIST_RUNTIME_FORMATS, ENTITY_LIST_RUNTIME_REGISTRY, ENTITY_LIST_RUNTIME_SELECTORS, runtimeEntityFamilyForHelpArgs, runtimeEntityListFamilyForHelpArgs, } from "./entityListRuntimeRegistry.js";
3
4
  import { loadStateStorageAuthority } from "./stateStorageAuthority.js";
4
5
  export const ENTITY_LIST_HELP_SCHEMA_VERSION = "agentera.entityListHelp.v1";
5
- const RUNTIME_FORMATS = ["text", "json", "yaml"];
6
6
  let cache;
7
7
  function isMapping(value) {
8
8
  return value !== null && typeof value === "object" && !Array.isArray(value);
@@ -36,14 +36,6 @@ function exactKeys(value, required, optional, prefix, errors) {
36
36
  if (!allowed.has(field))
37
37
  errors.push(`${prefix}.unknown.${field}`);
38
38
  }
39
- function expectedListSyntax(family) {
40
- const base = `agentera state ${family.commandTokens.join(" ")} list`;
41
- const identifier = family.familyIdentifier
42
- ? ` ${family.familyIdentifier.required ? family.familyIdentifier.syntax : `[${family.familyIdentifier.syntax}]`}`
43
- : "";
44
- const filters = family.filters.map(({ flag }) => ` [${flag}]`).join("");
45
- return `${base}${identifier}${filters} [--limit N] [--cursor TOKEN] [--ids-only | --fields FIELDS] --format json`;
46
- }
47
39
  function valueFlag(syntax) {
48
40
  const tokens = syntax.split(" ");
49
41
  if (tokens.length !== 2 || !/^--[a-z][a-z0-9-]*$/.test(tokens[0]) || tokens[1].length === 0)
@@ -78,10 +70,10 @@ function exampleGrammarIssue(example, family, pattern) {
78
70
  return "type";
79
71
  const tokens = example.split(" ");
80
72
  if (example.trim() !== example
81
- || tokens.some((token) => token.length === 0 || !/^[A-Za-z0-9_.,:/|=+\-]+$/.test(token))
73
+ || tokens.some((token) => token.length === 0 || !/^[A-Za-z0-9_@.,:/|=+\-]+$/.test(token))
82
74
  || tokens.join(" ") !== example)
83
75
  return "lexical_form";
84
- const prefix = ["agentera", "state", ...family.commandTokens, "list"];
76
+ const prefix = ["npx", "-y", "agentera@next", "state", ...family.commandTokens, "list"];
85
77
  if (tokens.length < prefix.length || !prefix.every((token, index) => tokens[index] === token))
86
78
  return "command";
87
79
  const identifierSyntax = family.familyIdentifier?.syntax;
@@ -232,9 +224,9 @@ export function validateEntityListHelp(value) {
232
224
  errors.push("entity_target.public_retrieval.list_help.schema_version");
233
225
  if (!sameStrings(defaults.summary_fields, ["id", "artifact", "retrieval.get"]))
234
226
  errors.push("entity_target.public_retrieval.list_help.defaults.summary_fields");
235
- if (!sameStrings(defaults.formats, RUNTIME_FORMATS))
227
+ if (!sameStrings(defaults.formats, ENTITY_LIST_RUNTIME_FORMATS))
236
228
  errors.push("entity_target.public_retrieval.list_help.defaults.formats");
237
- for (const [field, flag] of [["ids_only", "--ids-only"], ["fields", "--fields FIELDS"]]) {
229
+ for (const [field, flag] of [["ids_only", ENTITY_LIST_RUNTIME_SELECTORS.idsOnly], ["fields", ENTITY_LIST_RUNTIME_SELECTORS.fields]]) {
238
230
  const selector = requireMapping(selectors, field, "entity_target.public_retrieval.list_help.defaults.selectors", errors);
239
231
  exactKeys(selector, ["flag", "description"], [], `entity_target.public_retrieval.list_help.defaults.selectors.${field}`, errors);
240
232
  if (selector.flag !== flag || typeof selector.description !== "string" || selector.description.trim() === "")
@@ -247,6 +239,11 @@ export function validateEntityListHelp(value) {
247
239
  errors.push(`entity_target.public_retrieval.list_help.defaults.bounds.${field}.value`);
248
240
  if (Number(bounds.minimum) > Number(bounds.default) || Number(bounds.default) > Number(bounds.maximum))
249
241
  errors.push("entity_target.public_retrieval.list_help.defaults.bounds.order");
242
+ if (bounds.minimum !== ENTITY_LIST_RUNTIME_BOUNDS.minimum
243
+ || bounds.default !== ENTITY_LIST_RUNTIME_BOUNDS.default
244
+ || bounds.maximum !== ENTITY_LIST_RUNTIME_BOUNDS.maximum
245
+ || bounds.max_utf8_bytes !== ENTITY_LIST_RUNTIME_BOUNDS.maxUtf8Bytes)
246
+ errors.push("entity_target.public_retrieval.list_help.defaults.bounds.runtime_parity");
250
247
  const runtimeKeys = Object.keys(ENTITY_LIST_RUNTIME_REGISTRY).sort();
251
248
  for (const [surface, record] of [["commands", commands], ["list_help.families", families]]) {
252
249
  const actual = Object.keys(record).sort();
@@ -260,7 +257,7 @@ export function validateEntityListHelp(value) {
260
257
  const api = mapping(value.api);
261
258
  const apiList = mapping(api.list);
262
259
  const outputBounds = mapping(policy.output_bounds);
263
- if (!sameStrings(api.formats, RUNTIME_FORMATS))
260
+ if (!sameStrings(api.formats, ENTITY_LIST_RUNTIME_FORMATS))
264
261
  errors.push("api.formats");
265
262
  if (bounds.minimum !== apiList.minimum_limit)
266
263
  errors.push("entity_target.public_retrieval.list_help.defaults.bounds.minimum_authority_parity");
@@ -282,7 +279,9 @@ export function validateEntityListHelp(value) {
282
279
  exactKeys(family, ["command_tokens", "bare_read", "filters", "example"], ["bare_recovery", "family_identifier", "summary_fields", "summary_field_notes"], prefix, errors);
283
280
  if (family.bare_read !== "alias" && family.bare_read !== "correction")
284
281
  errors.push(`${prefix}.bare_read`);
285
- if (family.bare_read === "correction" && (typeof family.bare_recovery !== "string" || !family.bare_recovery.startsWith("agentera state ")))
282
+ if (family.bare_read !== runtime.bareRead)
283
+ errors.push(`${prefix}.bare_read.runtime_parity`);
284
+ if (family.bare_read === "correction" && family.bare_recovery !== runtime.projection.bareRecovery)
286
285
  errors.push(`${prefix}.bare_recovery`);
287
286
  if (family.bare_read === "alias" && family.bare_recovery !== undefined)
288
287
  errors.push(`${prefix}.bare_recovery.unexpected`);
@@ -292,7 +291,7 @@ export function validateEntityListHelp(value) {
292
291
  errors.push(`${prefix}.filters`);
293
292
  const rawFilters = Array.isArray(family.filters) ? family.filters : [];
294
293
  const filterNames = rawFilters.map((raw) => mapping(raw).name);
295
- if (!sameStrings(filterNames, runtime.filters))
294
+ if (!sameStrings(filterNames, runtime.filters.map(({ name }) => name)))
296
295
  errors.push(`${prefix}.filters.runtime_parity`);
297
296
  const parsedFilters = [];
298
297
  rawFilters.forEach((raw, index) => {
@@ -313,6 +312,12 @@ export function validateEntityListHelp(value) {
313
312
  if (!parsedFlag || parsedFlag.valueSyntax !== declaredValues.join("|"))
314
313
  errors.push(`${prefix}.filters[${index}].flag_value_syntax`);
315
314
  }
315
+ const codeFilter = runtime.filters[index];
316
+ if (!codeFilter
317
+ || codeFilter.name !== name
318
+ || codeFilter.flag !== filter.flag
319
+ || JSON.stringify(codeFilter.values) !== JSON.stringify(filter.values))
320
+ errors.push(`${prefix}.filters[${index}].runtime_parity`);
316
321
  parsedFilters.push({ flag: String(filter.flag), name, values: Array.isArray(filter.values) ? strings(filter.values) : String(filter.values) });
317
322
  });
318
323
  const identifier = family.family_identifier === undefined ? undefined : mapping(family.family_identifier);
@@ -382,10 +387,12 @@ export function validateEntityListHelp(value) {
382
387
  formats: strings(defaults.formats),
383
388
  example: String(family.example),
384
389
  };
385
- if (command.list !== expectedListSyntax(projected))
390
+ if (command.list !== runtime.projection.list)
386
391
  errors.push(`${prefix}.list_command`);
387
- if (command.get !== `agentera state ${runtime.commandTokens.join(" ")} get --id ID --format json`)
392
+ if (command.get !== runtime.projection.get)
388
393
  errors.push(`${prefix}.get_command`);
394
+ if (family.example !== runtime.projection.example)
395
+ errors.push(`${prefix}.example.runtime_parity`);
389
396
  const exampleIssue = exampleGrammarIssue(family.example, projected, acceptedIdentity);
390
397
  if (exampleIssue)
391
398
  errors.push(`${prefix}.example.${exampleIssue}`);
@@ -427,9 +434,12 @@ export function entityListFamilies(sourceRoot = resolveSourceRoot()) {
427
434
  const note = mapping(raw);
428
435
  return [name, { description: String(note.description), ownership: String(note.ownership), persisted: note.persisted === true, filter: note.filter === true }];
429
436
  }));
430
- return {
437
+ const sourceHelp = {
431
438
  key,
432
- commandTokens: strings(family.command_tokens), syntax: String(command.list), get: String(command.get), bareRead: family.bare_read === "alias" ? "alias" : "correction", ...(typeof family.bare_recovery === "string" ? { bareRecovery: family.bare_recovery } : {}),
439
+ commandTokens: strings(family.command_tokens),
440
+ syntax: String(command.list),
441
+ get: String(command.get),
442
+ bareRead: family.bare_read === "alias" ? "alias" : "correction",
433
443
  filters: family.filters.map((raw) => { const filter = mapping(raw); return { flag: String(filter.flag), name: String(filter.name), values: Array.isArray(filter.values) ? strings(filter.values) : String(filter.values) }; }),
434
444
  ...(identifier ? { familyIdentifier: { syntax: String(identifier.syntax), required: identifier.required === true, description: String(identifier.description) } } : {}),
435
445
  summaryFields: family.summary_fields === undefined ? strings(defaults.summary_fields) : strings(family.summary_fields),
@@ -441,7 +451,28 @@ export function entityListFamilies(sourceRoot = resolveSourceRoot()) {
441
451
  mutualExclusion: defaultSelectors.mutual_exclusion === true,
442
452
  },
443
453
  bounds: { minimum: Number(defaultBounds.minimum), default: Number(defaultBounds.default), maximum: Number(defaultBounds.maximum), maxUtf8Bytes: Number(defaultBounds.max_utf8_bytes) },
444
- formats: strings(defaults.formats), example: String(family.example),
454
+ formats: strings(defaults.formats),
455
+ example: String(family.example),
456
+ };
457
+ return {
458
+ key,
459
+ commandTokens: sourceHelp.commandTokens,
460
+ syntax: projectEntityDevelopmentValue(command.list, key, "list"),
461
+ get: projectEntityDevelopmentValue(command.get, key, "get"),
462
+ bareRead: sourceHelp.bareRead,
463
+ ...(typeof family.bare_recovery === "string" ? { bareRecovery: projectEntityDevelopmentValue(family.bare_recovery, key, "bareRecovery") } : {}),
464
+ filters: sourceHelp.filters,
465
+ ...(identifier ? { familyIdentifier: { syntax: String(identifier.syntax), required: identifier.required === true, description: String(identifier.description) } } : {}),
466
+ summaryFields: family.summary_fields === undefined ? strings(defaults.summary_fields) : strings(family.summary_fields),
467
+ minimumFields: [...strings(projection.minimum_fields), ...strings(familyMinimumFields[key])],
468
+ summaryFieldNotes: notes,
469
+ selectors: {
470
+ idsOnly: { flag: String(mapping(defaultSelectors.ids_only).flag), description: String(mapping(defaultSelectors.ids_only).description) },
471
+ fields: { flag: String(mapping(defaultSelectors.fields).flag), description: String(mapping(defaultSelectors.fields).description) },
472
+ mutualExclusion: defaultSelectors.mutual_exclusion === true,
473
+ },
474
+ bounds: { minimum: Number(defaultBounds.minimum), default: Number(defaultBounds.default), maximum: Number(defaultBounds.maximum), maxUtf8Bytes: Number(defaultBounds.max_utf8_bytes) },
475
+ formats: strings(defaults.formats), example: projectEntityDevelopmentValue(family.example, key, "example"),
445
476
  };
446
477
  });
447
478
  cache = { revision: authority.revision, families };
@@ -473,4 +504,3 @@ export function entityListAuthorityProjection(sourceRoot = resolveSourceRoot())
473
504
  entityListFamilies(sourceRoot);
474
505
  return mapping(mapping(loadStateStorageAuthority(sourceRoot).document.entity_target).public_retrieval);
475
506
  }
476
- //# sourceMappingURL=entityRetrievalHelp.js.map
@@ -894,4 +894,3 @@ export function allocateAndPublishEntity(request, candidate) {
894
894
  });
895
895
  });
896
896
  }
897
- //# sourceMappingURL=entityStorage.js.map
@@ -16,4 +16,3 @@ export class FileReplacementError extends Error {
16
16
  this.code = code;
17
17
  }
18
18
  }
19
- //# sourceMappingURL=exactReplacementRecovery.js.map
@@ -61,4 +61,3 @@ export function assertExperimentArchiveReplay(publication) {
61
61
  recovery: "Retry only with the byte-equivalent experiment record for this stable identity.",
62
62
  });
63
63
  }
64
- //# sourceMappingURL=experimentArchive.js.map
@@ -200,4 +200,3 @@ export function validateExperimentPublicationIdentity(discovery, projection, obj
200
200
  }
201
201
  return stableId;
202
202
  }
203
- //# sourceMappingURL=experimentIdentity.js.map
@@ -260,4 +260,3 @@ export function listHealthEntities(root, limit, dimension, cursor, options = {})
260
260
  };
261
261
  return projectEntityList(response(), selector, projectionOptions);
262
262
  }
263
- //# sourceMappingURL=healthEntities.js.map
@@ -16,4 +16,3 @@ export function healthEntityViolations(record) {
16
16
  }
17
17
  return violations;
18
18
  }
19
- //# sourceMappingURL=healthEntityValidation.js.map
@@ -67,4 +67,3 @@ export function repairHealthProjectionBytes(bytes, number, keep) {
67
67
  }
68
68
  return { bytes, removed };
69
69
  }
70
- //# sourceMappingURL=healthRepair.js.map
@@ -316,4 +316,3 @@ export function formatResolvedAppHome(explicitRoot, opts = {}) {
316
316
  }
317
317
  return resolvedPath;
318
318
  }
319
- //# sourceMappingURL=installRoot.js.map
@@ -63,4 +63,3 @@ export function loadLegacyEntityCutoverTargets(projectRoot, markerBytes) {
63
63
  }
64
64
  return targets;
65
65
  }
66
- //# sourceMappingURL=legacyEntityCutoverEvidence.js.map
@@ -45,4 +45,3 @@ export function legacyIdentity(value, artifactId, entryNumberField) {
45
45
  export function legacyEntryNumber(value, artifactId, entryNumberField) {
46
46
  return legacyIdentity(value, artifactId, entryNumberField).number;
47
47
  }
48
- //# sourceMappingURL=legacyIdentity.js.map
@@ -4,4 +4,3 @@ export function legacySummaryRecord(value) {
4
4
  return value;
5
5
  return typeof value === "string" ? { summary: value } : null;
6
6
  }
7
- //# sourceMappingURL=legacySummaryRecord.js.map
@@ -52,4 +52,3 @@ export function provenanceCounts(entries) {
52
52
  counts.candidate_count = entries.length;
53
53
  return counts;
54
54
  }
55
- //# sourceMappingURL=listAccounting.js.map