agentera 3.0.0-dev.6 → 3.0.0-dev.69

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 (696) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -22
  3. package/bundle/CHANGELOG.md +1361 -0
  4. package/bundle/DESIGN.md +229 -0
  5. package/bundle/LICENSE +201 -0
  6. package/bundle/README.md +143 -0
  7. package/bundle/UPGRADE.md +252 -0
  8. package/bundle/extract-corpus-parity.json +21 -0
  9. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  10. package/bundle/references/adapters/package-publication.json +488 -0
  11. package/bundle/references/adapters/package-registry.yaml +435 -188
  12. package/bundle/references/adapters/package-surface-characterization.md +66 -34
  13. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  14. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  15. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  16. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  17. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  18. package/bundle/references/analysis/verification-policy.yaml +266 -0
  19. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  20. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  21. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  22. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  23. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  24. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  25. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  26. package/bundle/references/cli/routing-model.md +155 -0
  27. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  28. package/bundle/references/cli/update-channels.yaml +19 -2
  29. package/bundle/references/cli/vocabulary-index.yaml +20 -17
  30. package/bundle/references/cli/vocabulary.md +325 -362
  31. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  32. package/bundle/registry.json +13 -13
  33. package/bundle/skills/agentera/SKILL.md +226 -422
  34. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  35. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  36. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  37. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  38. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +103 -0
  39. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +8 -6
  40. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  41. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +184 -0
  42. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  44. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  45. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  46. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  47. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  48. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  50. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  52. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  53. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  55. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  56. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  57. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  58. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  59. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  61. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  62. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  63. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  64. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  65. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  66. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  67. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  68. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  69. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  71. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  72. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  73. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  74. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  75. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  77. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  78. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  79. package/bundle/skills/agentera/capability_schema_contract.yaml +178 -34
  80. package/bundle/skills/agentera/protocol.yaml +31 -31
  81. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  82. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  83. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +39 -21
  84. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  85. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  86. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  87. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  88. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  89. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  90. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +461 -36
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +133 -20
  92. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +342 -42
  93. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  94. package/dist/analytics/extractCorpus/cli.js +101 -12
  95. package/dist/analytics/extractCorpus/copilotSessions.js +53 -9
  96. package/dist/analytics/extractCorpus/core.js +59 -24
  97. package/dist/analytics/extractCorpus/corpus.js +58 -23
  98. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  99. package/dist/analytics/extractCorpus/cursorSessions.js +12 -7
  100. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  101. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  102. package/dist/analytics/extractCorpus/filesystemSources.js +1 -5
  103. package/dist/analytics/extractCorpus/index.js +6 -1
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +24 -5
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +98 -6
  107. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  108. package/dist/analytics/extractCorpus.js +0 -1
  109. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  110. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  111. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  112. package/dist/analytics/personalGlossaryProfile.js +219 -0
  113. package/dist/analytics/profileSignals.js +211 -0
  114. package/dist/analytics/usageStats.js +169 -42
  115. package/dist/audit/terminologyDrift.js +281 -0
  116. package/dist/bin/agentera.js +3 -2
  117. package/dist/capabilities/audit/instructions.js +16 -0
  118. package/dist/capabilities/build/instructions.js +59 -0
  119. package/dist/capabilities/design/instructions.js +4 -0
  120. package/dist/capabilities/discuss/instructions.js +29 -0
  121. package/dist/capabilities/document/instructions.js +11 -0
  122. package/dist/capabilities/index.js +29 -27
  123. package/dist/capabilities/optimize/instructions.js +14 -0
  124. package/dist/capabilities/orchestrate/instructions.js +42 -0
  125. package/dist/capabilities/plan/instructions.js +33 -0
  126. package/dist/capabilities/profile/instructions.js +70 -0
  127. package/dist/capabilities/research/instructions.js +5 -0
  128. package/dist/capabilities/status/instructions.js +15 -0
  129. package/dist/capabilities/status/startupInstructions.js +34 -0
  130. package/dist/capabilities/vision/instructions.js +4 -0
  131. package/dist/cli/appContext.js +30 -24
  132. package/dist/cli/argvalidate.js +0 -1
  133. package/dist/cli/capabilityContext/benchmark.js +25 -17
  134. package/dist/cli/capabilityContext/bespoke.js +31 -12
  135. package/dist/cli/capabilityContext/build.js +251 -0
  136. package/dist/cli/capabilityContext/closeout.js +33 -30
  137. package/dist/cli/capabilityContext/contract.js +39 -46
  138. package/dist/cli/capabilityContext/evidence.js +90 -73
  139. package/dist/cli/capabilityContext/index.js +1 -2
  140. package/dist/cli/capabilityContext/orchestration.js +45 -21
  141. package/dist/cli/capabilityContext/planState.js +93 -100
  142. package/dist/cli/capabilityContext/progress.js +60 -14
  143. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  144. package/dist/cli/capabilityContext/shared.js +9 -20
  145. package/dist/cli/capabilityContext/slim.js +56 -10
  146. package/dist/cli/capabilityContext/startup.js +57 -115
  147. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  148. package/dist/cli/capabilityContext/types.js +37 -24
  149. package/dist/cli/capabilityContext.js +1 -2
  150. package/dist/cli/commands/appHome.js +22 -0
  151. package/dist/cli/commands/capability.js +4 -4
  152. package/dist/cli/commands/compact.js +163 -13
  153. package/dist/cli/commands/doctor.js +122 -114
  154. package/dist/cli/commands/durability.js +81 -0
  155. package/dist/cli/commands/glossaryAdvice.js +138 -0
  156. package/dist/cli/commands/lint.js +22 -8
  157. package/dist/cli/commands/personalGlossary.js +176 -0
  158. package/dist/cli/commands/prime/briefOrientation.js +746 -0
  159. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  160. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  161. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  162. package/dist/cli/commands/prime/collectOrientationState.js +219 -0
  163. package/dist/cli/commands/prime/orientationOutput.js +421 -0
  164. package/dist/cli/commands/prime/types.js +1 -0
  165. package/dist/cli/commands/prime/v1Migration.js +38 -0
  166. package/dist/cli/commands/prime.js +80 -558
  167. package/dist/cli/commands/profileGrounding.js +55 -0
  168. package/dist/cli/commands/query.js +77 -52
  169. package/dist/cli/commands/report.js +88 -26
  170. package/dist/cli/commands/route.js +142 -0
  171. package/dist/cli/commands/schema.js +266 -142
  172. package/dist/cli/commands/state/decisions.js +51 -61
  173. package/dist/cli/commands/state/docs.js +63 -86
  174. package/dist/cli/commands/state/experimentRecords.js +151 -0
  175. package/dist/cli/commands/state/experiments.js +11 -64
  176. package/dist/cli/commands/state/get.js +129 -0
  177. package/dist/cli/commands/state/health.js +11 -111
  178. package/dist/cli/commands/state/index.js +6 -41
  179. package/dist/cli/commands/state/list.js +194 -0
  180. package/dist/cli/commands/state/objective.js +21 -64
  181. package/dist/cli/commands/state/plan.js +11 -169
  182. package/dist/cli/commands/state/planTasks.js +154 -0
  183. package/dist/cli/commands/state/plans.js +154 -0
  184. package/dist/cli/commands/state/progress.js +11 -45
  185. package/dist/cli/commands/state/shared.js +0 -1
  186. package/dist/cli/commands/state/todo.js +29 -108
  187. package/dist/cli/commands/state/write.js +433 -0
  188. package/dist/cli/commands/upgrade.js +146 -5
  189. package/dist/cli/commands/upgradeVerify.js +118 -0
  190. package/dist/cli/commands/validate.js +246 -211
  191. package/dist/cli/commands/verify.js +24 -9
  192. package/dist/cli/contracts/bundleStatus.js +1 -0
  193. package/dist/cli/contracts/orientationState.js +1 -0
  194. package/dist/cli/dispatch/argvParser.js +32 -0
  195. package/dist/cli/dispatch/check.js +94 -50
  196. package/dist/cli/dispatch/commands.js +27 -0
  197. package/dist/cli/dispatch/index.js +82 -52
  198. package/dist/cli/dispatch/lifecycle.js +268 -108
  199. package/dist/cli/dispatch/prime.js +68 -29
  200. package/dist/cli/dispatch/projections.js +17 -0
  201. package/dist/cli/dispatch/shared.js +1 -2
  202. package/dist/cli/dispatch/state.js +68 -77
  203. package/dist/cli/dispatch.js +0 -1
  204. package/dist/cli/errors.js +16 -17
  205. package/dist/cli/help.js +395 -41
  206. package/dist/cli/migrationRequired.js +122 -0
  207. package/dist/cli/orientation/attention.js +61 -0
  208. package/dist/cli/orientation/corpusCoverage.js +102 -0
  209. package/dist/cli/orientation.js +438 -170
  210. package/dist/cli/planArtifacts.js +350 -0
  211. package/dist/cli/planEvidence.js +157 -0
  212. package/dist/cli/planLifecycleState.js +36 -0
  213. package/dist/cli/planTaskIndex.js +11 -0
  214. package/dist/cli/preCutoverCommand.js +32 -0
  215. package/dist/cli/prime-blob.js +71 -3
  216. package/dist/cli/profileAcquisition.js +167 -0
  217. package/dist/cli/startupCompletenessContract.js +59 -0
  218. package/dist/cli/stateQuery.js +56 -14
  219. package/dist/cli/structured.js +0 -1
  220. package/dist/cli/todoMarkdown.js +25 -12
  221. package/dist/cli/todoReadinessSelection.js +192 -0
  222. package/dist/cli/todoSeverity.js +18 -0
  223. package/dist/core/atomicWriter.js +20 -0
  224. package/dist/core/developmentChannel.js +1 -0
  225. package/dist/core/developmentInvocation.js +374 -0
  226. package/dist/core/difflib.js +0 -1
  227. package/dist/core/envPaths.js +20 -0
  228. package/dist/core/jsonValue.js +5 -0
  229. package/dist/core/paths.js +0 -1
  230. package/dist/core/pyjson.js +67 -3
  231. package/dist/core/shell.js +4 -0
  232. package/dist/core/skillIdentity.js +23 -0
  233. package/dist/core/sourceRoot.js +9 -12
  234. package/dist/core/text.js +10 -0
  235. package/dist/core/toml.js +0 -1
  236. package/dist/core/yaml.js +8 -1
  237. package/dist/eval/evalSkills.js +30 -26
  238. package/dist/eval/hybridRouteEvaluation.js +155 -0
  239. package/dist/eval/semanticEval.js +43 -20
  240. package/dist/eval/semanticFixtures.js +16 -5
  241. package/dist/hooks/common.js +3 -56
  242. package/dist/hooks/compaction/apply.js +252 -50
  243. package/dist/hooks/compaction/dryRun.js +7 -4
  244. package/dist/hooks/compaction/index.js +5 -6
  245. package/dist/hooks/compaction/parse.js +201 -5
  246. package/dist/hooks/compaction/retention.js +30 -25
  247. package/dist/hooks/compaction/status.js +149 -32
  248. package/dist/hooks/compaction/types.js +0 -1
  249. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  250. package/dist/hooks/validateArtifact/index.js +7 -64
  251. package/dist/hooks/validateArtifact/markdown.js +57 -7
  252. package/dist/hooks/validateArtifact/schema.js +110 -19
  253. package/dist/hooks/validateArtifact/traversal.js +13 -11
  254. package/dist/hooks/validateArtifact/violations.js +7 -5
  255. package/dist/migrate/v2HandoffManifest.js +127 -8
  256. package/dist/registries/activationContract.js +2 -0
  257. package/dist/registries/activationTuples.js +108 -0
  258. package/dist/registries/artifactProtocolIds.js +2 -1
  259. package/dist/registries/artifactRegistry.js +224 -63
  260. package/dist/registries/artifactSchemaProjection.js +45 -0
  261. package/dist/registries/capabilityContract.js +129 -2
  262. package/dist/registries/evaluatorHandoffContract.js +2 -3
  263. package/dist/registries/evidenceTierContract.js +371 -0
  264. package/dist/registries/glossaryAdviceContract.js +79 -0
  265. package/dist/registries/glossaryCaveatContract.js +67 -0
  266. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  267. package/dist/registries/glossaryEntryContract.js +757 -0
  268. package/dist/registries/glossaryTermIdentity.js +17 -0
  269. package/dist/registries/glossaryTermOccurrence.js +20 -0
  270. package/dist/registries/hybridRoute.js +274 -0
  271. package/dist/registries/hybridRouteReceipt.js +221 -0
  272. package/dist/registries/packagePublication.js +273 -0
  273. package/dist/registries/packageRegistry.js +187 -211
  274. package/dist/registries/todoReadinessContract.js +448 -0
  275. package/dist/registries/triggerLoader.js +174 -0
  276. package/dist/registries/verbosityBudgetContract.js +205 -0
  277. package/dist/release/releaseMetadata.js +156 -6
  278. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  279. package/dist/runtime/lifecycleAdapters.js +777 -0
  280. package/dist/runtime/lifecycleAuthority.js +453 -0
  281. package/dist/runtime/lifecycleOperationContract.js +123 -0
  282. package/dist/runtime/lifecycleOperations.js +634 -0
  283. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  284. package/dist/runtime/lifecyclePublication.js +415 -0
  285. package/dist/runtime/lifecycleSnapshot.js +438 -0
  286. package/dist/runtime/nativeResourceCleanup.js +502 -0
  287. package/dist/setup/opencode.js +20 -13
  288. package/dist/setup/opencodeConstants.js +1 -0
  289. package/dist/setup/sharedSkill.js +45 -0
  290. package/dist/setup/smokeChecks.js +21 -82
  291. package/dist/state/archiveDiscovery.js +580 -0
  292. package/dist/state/archivePublication.js +225 -0
  293. package/dist/state/archiveRecovery.js +237 -0
  294. package/dist/state/archiveReplay.js +53 -0
  295. package/dist/state/canonicalMigrationRecord.js +36 -0
  296. package/dist/state/changelog.js +221 -0
  297. package/dist/state/decisionEntities.js +367 -0
  298. package/dist/state/decisionLegacyValidation.js +215 -0
  299. package/dist/state/decisionMigrationProvenance.js +199 -0
  300. package/dist/state/decisionOverlay.js +254 -0
  301. package/dist/state/decisionRevision.js +256 -0
  302. package/dist/state/decisionRevisionMigration.js +89 -0
  303. package/dist/state/directRetrieval.js +323 -0
  304. package/dist/state/durability.js +324 -0
  305. package/dist/state/entityCutover.js +459 -0
  306. package/dist/state/entityCutoverGit.js +127 -0
  307. package/dist/state/entityGlossaryAuthority.js +13 -0
  308. package/dist/state/entityListProjection.js +187 -0
  309. package/dist/state/entityListRuntimeRegistry.js +85 -0
  310. package/dist/state/entityMigrationCausality.js +97 -0
  311. package/dist/state/entityMigrationIdentity.js +5 -0
  312. package/dist/state/entityMigrationPreview.js +840 -0
  313. package/dist/state/entityMigrationTodo.js +133 -0
  314. package/dist/state/entityPublicationContext.js +859 -0
  315. package/dist/state/entityRetrievalHelp.js +506 -0
  316. package/dist/state/entityStorage.js +899 -0
  317. package/dist/state/exactReplacementRecovery.js +18 -0
  318. package/dist/state/experimentArchive.js +63 -0
  319. package/dist/state/experimentIdentity.js +202 -0
  320. package/dist/state/healthEntities.js +262 -0
  321. package/dist/state/healthEntityValidation.js +18 -0
  322. package/dist/state/healthRepair.js +69 -0
  323. package/dist/state/installRoot.js +64 -25
  324. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  325. package/dist/state/legacyIdentity.js +47 -0
  326. package/dist/state/legacySummaryRecord.js +6 -0
  327. package/dist/state/listAccounting.js +54 -0
  328. package/dist/state/listClassification.js +17 -0
  329. package/dist/state/listCursor.js +42 -0
  330. package/dist/state/listRetrieval.js +781 -0
  331. package/dist/state/migrationSourceBinding.js +30 -0
  332. package/dist/state/objectiveExperimentEntities.js +322 -0
  333. package/dist/state/planEntities.js +1027 -0
  334. package/dist/state/planIdentity.js +47 -0
  335. package/dist/state/planLineageValidation.js +52 -0
  336. package/dist/state/planReplacementTransaction.js +475 -0
  337. package/dist/state/planRetrieval.js +313 -0
  338. package/dist/state/planTaskRetrieval.js +294 -0
  339. package/dist/state/progressEntities.js +512 -0
  340. package/dist/state/progressGlossaryCaveat.js +168 -0
  341. package/dist/state/progressPublicationOrder.js +19 -0
  342. package/dist/state/progressWritePolicy.js +33 -0
  343. package/dist/state/projectRoot.js +62 -0
  344. package/dist/state/projectionPolicy.js +190 -0
  345. package/dist/state/retrievalAuthority.js +156 -0
  346. package/dist/state/safeProjectFile.js +155 -0
  347. package/dist/state/startupAnalysis/benchmark.js +92 -27
  348. package/dist/state/startupAnalysis/contract.js +48 -10
  349. package/dist/state/startupAnalysis/helpers.js +27 -73
  350. package/dist/state/startupAnalysis/index.js +0 -1
  351. package/dist/state/startupAnalysis/metrics.js +25 -19
  352. package/dist/state/startupAnalysis/records.js +13 -10
  353. package/dist/state/startupAnalysis/report.js +26 -38
  354. package/dist/state/startupAnalysis/threshold.js +19 -7
  355. package/dist/state/startupAnalysis.js +0 -1
  356. package/dist/state/startupProjection.js +499 -0
  357. package/dist/state/stateMode.js +222 -0
  358. package/dist/state/stateStorageAuthority.js +47 -0
  359. package/dist/state/summaryEntityRead.js +25 -0
  360. package/dist/state/summaryMigrationProvenance.js +66 -0
  361. package/dist/state/summarySourceRowAuthority.js +36 -0
  362. package/dist/state/todoActivationSafety.js +58 -0
  363. package/dist/state/todoDocsEntities.js +1124 -0
  364. package/dist/state/todoDocsEntityValidation.js +158 -0
  365. package/dist/state/todoMarkdownProjection.js +51 -0
  366. package/dist/state/todoReconciliationActivation.js +182 -0
  367. package/dist/state/todoReconciliationInspection.js +171 -0
  368. package/dist/state/todoReconciliationRepair.js +318 -0
  369. package/dist/state/todoReconciliationTransaction.js +595 -0
  370. package/dist/state/write/assign.js +20 -0
  371. package/dist/state/write/candidateMutation.js +269 -0
  372. package/dist/state/write/errors.js +11 -0
  373. package/dist/state/write/experimentPublication.js +192 -0
  374. package/dist/state/write/explain.js +377 -0
  375. package/dist/state/write/fields.js +61 -0
  376. package/dist/state/write/glossaryPublication.js +263 -0
  377. package/dist/state/write/grammar.js +285 -0
  378. package/dist/state/write/helpers.js +29 -0
  379. package/dist/state/write/index.js +12 -0
  380. package/dist/state/write/input.js +391 -0
  381. package/dist/state/write/lock.js +837 -0
  382. package/dist/state/write/mutation.js +234 -0
  383. package/dist/state/write/operations.js +170 -0
  384. package/dist/state/write/planEvaluation.js +128 -0
  385. package/dist/state/write/planPublication.js +179 -0
  386. package/dist/state/write/runtimeOperations.js +146 -0
  387. package/dist/state/write/serialize.js +1 -0
  388. package/dist/state/write/transaction.js +57 -0
  389. package/dist/state/write/validate.js +7 -0
  390. package/dist/upgrade/appContentRefresh.js +383 -0
  391. package/dist/upgrade/appModel.js +8 -7
  392. package/dist/upgrade/atomicWriter.js +1 -0
  393. package/dist/upgrade/bundleEvidence.js +33 -0
  394. package/dist/upgrade/channels.js +12 -8
  395. package/dist/upgrade/compatibility.js +56 -21
  396. package/dist/upgrade/doctor.js +165 -199
  397. package/dist/upgrade/doctorClassifier.js +187 -0
  398. package/dist/upgrade/installedHooksRetirement.js +196 -0
  399. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  400. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  401. package/dist/upgrade/migrateArtifactsV2ToV3.js +375 -79
  402. package/dist/upgrade/migrationPublication.js +122 -0
  403. package/dist/upgrade/nextMajorDoctor.js +29 -10
  404. package/dist/upgrade/npxPlatformStatus.js +22 -0
  405. package/dist/upgrade/projectIntegration.js +145 -189
  406. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  407. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  408. package/dist/upgrade/runtimeMigration.js +272 -373
  409. package/dist/upgrade/upgradeCommands.js +14 -1
  410. package/dist/upgrade/upgradeLock.js +85 -0
  411. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  412. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  413. package/dist/upgrade/versionResolution.js +2 -3
  414. package/dist/validate/activationArtifactEvidence.js +852 -0
  415. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  416. package/dist/validate/activationConjunction.js +816 -0
  417. package/dist/validate/activationEvidenceManifest.js +531 -0
  418. package/dist/validate/activationPackageSemantics.js +29 -0
  419. package/dist/validate/appHomeContract.js +2 -8
  420. package/dist/validate/bootstrapAuthority.js +44 -0
  421. package/dist/validate/capability.js +133 -12
  422. package/dist/validate/crossCapability.js +15 -10
  423. package/dist/validate/retainedReferenceAuthority.js +879 -0
  424. package/dist/validate/selfAudit.js +39 -45
  425. package/dist/validate/v1LegacyCruft.js +131 -0
  426. package/dist/validate/vocabularyAuthority.js +18 -13
  427. package/package.json +60 -29
  428. package/bundle/references/adapters/cursor.md +0 -213
  429. package/bundle/references/adapters/opencode.md +0 -530
  430. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  431. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  432. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  433. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  434. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  435. package/bundle/references/analysis/benchmark.md +0 -267
  436. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  437. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  438. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  439. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  440. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  441. package/bundle/references/cli/coexistence-probe.yaml +0 -9
  442. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  443. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  444. package/bundle/references/cli/upgrade-repair-wording.md +0 -31
  445. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  446. package/bundle/references/meta/documentation-inventory.md +0 -49
  447. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  448. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  449. package/bundle/skills/agentera/agents/hej.toml +0 -6
  450. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  451. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  452. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  453. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  454. package/bundle/skills/agentera/agents/planera.toml +0 -6
  455. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  456. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  457. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  458. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  459. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  460. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  461. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  462. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  463. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  464. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  465. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  466. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  467. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  468. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  471. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -120
  472. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  473. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  474. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  475. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  478. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  479. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  481. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  482. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  483. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  484. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  485. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  486. package/bundle/skills/agentera/references/contract.md +0 -1039
  487. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  488. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  489. package/dist/analytics/extractCorpus/core.js.map +0 -1
  490. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  491. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  492. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  493. package/dist/analytics/extractCorpus/index.js.map +0 -1
  494. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  495. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  496. package/dist/analytics/extractCorpus.js.map +0 -1
  497. package/dist/analytics/usageStats.js.map +0 -1
  498. package/dist/bin/agentera.js.map +0 -1
  499. package/dist/capabilities/dokumentera/instructions.js +0 -6
  500. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  501. package/dist/capabilities/hej/instructions.js +0 -6
  502. package/dist/capabilities/hej/instructions.js.map +0 -1
  503. package/dist/capabilities/index.js.map +0 -1
  504. package/dist/capabilities/inspektera/instructions.js +0 -6
  505. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  506. package/dist/capabilities/inspirera/instructions.js +0 -6
  507. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  508. package/dist/capabilities/optimera/instructions.js +0 -6
  509. package/dist/capabilities/optimera/instructions.js.map +0 -1
  510. package/dist/capabilities/orkestrera/instructions.js +0 -6
  511. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  512. package/dist/capabilities/planera/instructions.js +0 -6
  513. package/dist/capabilities/planera/instructions.js.map +0 -1
  514. package/dist/capabilities/profilera/instructions.js +0 -6
  515. package/dist/capabilities/profilera/instructions.js.map +0 -1
  516. package/dist/capabilities/realisera/instructions.js +0 -6
  517. package/dist/capabilities/realisera/instructions.js.map +0 -1
  518. package/dist/capabilities/resonera/instructions.js +0 -6
  519. package/dist/capabilities/resonera/instructions.js.map +0 -1
  520. package/dist/capabilities/visionera/instructions.js +0 -6
  521. package/dist/capabilities/visionera/instructions.js.map +0 -1
  522. package/dist/capabilities/visualisera/instructions.js +0 -6
  523. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  524. package/dist/cli/appContext.js.map +0 -1
  525. package/dist/cli/argvalidate.js.map +0 -1
  526. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  527. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  528. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  529. package/dist/cli/capabilityContext/contract.js.map +0 -1
  530. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  531. package/dist/cli/capabilityContext/index.js.map +0 -1
  532. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  533. package/dist/cli/capabilityContext/planState.js.map +0 -1
  534. package/dist/cli/capabilityContext/progress.js.map +0 -1
  535. package/dist/cli/capabilityContext/realisera.js +0 -174
  536. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  537. package/dist/cli/capabilityContext/shared.js.map +0 -1
  538. package/dist/cli/capabilityContext/slim.js.map +0 -1
  539. package/dist/cli/capabilityContext/startup.js.map +0 -1
  540. package/dist/cli/capabilityContext/types.js.map +0 -1
  541. package/dist/cli/capabilityContext.js.map +0 -1
  542. package/dist/cli/commands/backfill.js +0 -84
  543. package/dist/cli/commands/backfill.js.map +0 -1
  544. package/dist/cli/commands/capability.js.map +0 -1
  545. package/dist/cli/commands/compact.js.map +0 -1
  546. package/dist/cli/commands/doctor.js.map +0 -1
  547. package/dist/cli/commands/lint.js.map +0 -1
  548. package/dist/cli/commands/prime.js.map +0 -1
  549. package/dist/cli/commands/query.js.map +0 -1
  550. package/dist/cli/commands/report.js.map +0 -1
  551. package/dist/cli/commands/schema.js.map +0 -1
  552. package/dist/cli/commands/state/decisions.js.map +0 -1
  553. package/dist/cli/commands/state/docs.js.map +0 -1
  554. package/dist/cli/commands/state/experiments.js.map +0 -1
  555. package/dist/cli/commands/state/health.js.map +0 -1
  556. package/dist/cli/commands/state/index.js.map +0 -1
  557. package/dist/cli/commands/state/objective.js.map +0 -1
  558. package/dist/cli/commands/state/plan.js.map +0 -1
  559. package/dist/cli/commands/state/progress.js.map +0 -1
  560. package/dist/cli/commands/state/shared.js.map +0 -1
  561. package/dist/cli/commands/state/todo.js.map +0 -1
  562. package/dist/cli/commands/state.js +0 -1023
  563. package/dist/cli/commands/state.js.map +0 -1
  564. package/dist/cli/commands/upgrade.js.map +0 -1
  565. package/dist/cli/commands/validate.js.map +0 -1
  566. package/dist/cli/commands/verify.js.map +0 -1
  567. package/dist/cli/dispatch/check.js.map +0 -1
  568. package/dist/cli/dispatch/index.js.map +0 -1
  569. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  570. package/dist/cli/dispatch/prime.js.map +0 -1
  571. package/dist/cli/dispatch/shared.js.map +0 -1
  572. package/dist/cli/dispatch/state.js.map +0 -1
  573. package/dist/cli/dispatch.js.map +0 -1
  574. package/dist/cli/errors.js.map +0 -1
  575. package/dist/cli/help.js.map +0 -1
  576. package/dist/cli/orientation.js.map +0 -1
  577. package/dist/cli/prime-blob.js.map +0 -1
  578. package/dist/cli/stateQuery.js.map +0 -1
  579. package/dist/cli/structured.js.map +0 -1
  580. package/dist/cli/todoMarkdown.js.map +0 -1
  581. package/dist/core/difflib.js.map +0 -1
  582. package/dist/core/git.js +0 -43
  583. package/dist/core/git.js.map +0 -1
  584. package/dist/core/paths.js.map +0 -1
  585. package/dist/core/pyjson.js.map +0 -1
  586. package/dist/core/sourceRoot.js.map +0 -1
  587. package/dist/core/toml.js.map +0 -1
  588. package/dist/core/yaml.js.map +0 -1
  589. package/dist/eval/evalSkills.js.map +0 -1
  590. package/dist/eval/semanticEval.js.map +0 -1
  591. package/dist/eval/semanticFixtures.js.map +0 -1
  592. package/dist/hooks/common.js.map +0 -1
  593. package/dist/hooks/compaction/apply.js.map +0 -1
  594. package/dist/hooks/compaction/dryRun.js.map +0 -1
  595. package/dist/hooks/compaction/index.js.map +0 -1
  596. package/dist/hooks/compaction/parse.js.map +0 -1
  597. package/dist/hooks/compaction/retention.js.map +0 -1
  598. package/dist/hooks/compaction/status.js.map +0 -1
  599. package/dist/hooks/compaction/types.js.map +0 -1
  600. package/dist/hooks/compaction.js +0 -935
  601. package/dist/hooks/compaction.js.map +0 -1
  602. package/dist/hooks/cursorPreToolUse.js +0 -19
  603. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  604. package/dist/hooks/cursorSessionStart.js +0 -71
  605. package/dist/hooks/cursorSessionStart.js.map +0 -1
  606. package/dist/hooks/sessionStart.js +0 -209
  607. package/dist/hooks/sessionStart.js.map +0 -1
  608. package/dist/hooks/sessionStop.js +0 -203
  609. package/dist/hooks/sessionStop.js.map +0 -1
  610. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  611. package/dist/hooks/validateArtifact/index.js.map +0 -1
  612. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  613. package/dist/hooks/validateArtifact/runtime.js +0 -83
  614. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  615. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  616. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  617. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  618. package/dist/hooks/validateArtifact.js +0 -924
  619. package/dist/hooks/validateArtifact.js.map +0 -1
  620. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  621. package/dist/registries/artifactProtocolIds.js.map +0 -1
  622. package/dist/registries/artifactRegistry.js.map +0 -1
  623. package/dist/registries/capabilityContract.js.map +0 -1
  624. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  625. package/dist/registries/packageRegistry.js.map +0 -1
  626. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  627. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  628. package/dist/release/releaseMetadata.js.map +0 -1
  629. package/dist/setup/codex/agents.js +0 -96
  630. package/dist/setup/codex/agents.js.map +0 -1
  631. package/dist/setup/codex/cli.js +0 -161
  632. package/dist/setup/codex/cli.js.map +0 -1
  633. package/dist/setup/codex/configToml.js +0 -644
  634. package/dist/setup/codex/configToml.js.map +0 -1
  635. package/dist/setup/codex/constants.js +0 -29
  636. package/dist/setup/codex/constants.js.map +0 -1
  637. package/dist/setup/codex/installRoot.js +0 -64
  638. package/dist/setup/codex/installRoot.js.map +0 -1
  639. package/dist/setup/codex/state.js +0 -270
  640. package/dist/setup/codex/state.js.map +0 -1
  641. package/dist/setup/codex.js +0 -12
  642. package/dist/setup/codex.js.map +0 -1
  643. package/dist/setup/copilot.js +0 -227
  644. package/dist/setup/copilot.js.map +0 -1
  645. package/dist/setup/cursor.js +0 -127
  646. package/dist/setup/cursor.js.map +0 -1
  647. package/dist/setup/doctor/core.js +0 -300
  648. package/dist/setup/doctor/core.js.map +0 -1
  649. package/dist/setup/doctor/diagnostics.js +0 -247
  650. package/dist/setup/doctor/diagnostics.js.map +0 -1
  651. package/dist/setup/doctor/opencode.js +0 -281
  652. package/dist/setup/doctor/opencode.js.map +0 -1
  653. package/dist/setup/doctor/report.js +0 -474
  654. package/dist/setup/doctor/report.js.map +0 -1
  655. package/dist/setup/doctor.js +0 -10
  656. package/dist/setup/doctor.js.map +0 -1
  657. package/dist/setup/opencode.js.map +0 -1
  658. package/dist/setup/smokeChecks.js.map +0 -1
  659. package/dist/state/installRoot.js.map +0 -1
  660. package/dist/state/progressCommit.js +0 -289
  661. package/dist/state/progressCommit.js.map +0 -1
  662. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  663. package/dist/state/startupAnalysis/contract.js.map +0 -1
  664. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  665. package/dist/state/startupAnalysis/index.js.map +0 -1
  666. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  667. package/dist/state/startupAnalysis/records.js.map +0 -1
  668. package/dist/state/startupAnalysis/report.js.map +0 -1
  669. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  670. package/dist/state/startupAnalysis.js.map +0 -1
  671. package/dist/upgrade/appModel.js.map +0 -1
  672. package/dist/upgrade/channels.js.map +0 -1
  673. package/dist/upgrade/coexistenceProbe.js +0 -83
  674. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  675. package/dist/upgrade/compatibility.js.map +0 -1
  676. package/dist/upgrade/doctor.js.map +0 -1
  677. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  678. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  679. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  680. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  681. package/dist/upgrade/projectIntegration.js.map +0 -1
  682. package/dist/upgrade/runtimeMigration.js.map +0 -1
  683. package/dist/upgrade/upgradeCommands.js.map +0 -1
  684. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  685. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  686. package/dist/upgrade/versionResolution.js.map +0 -1
  687. package/dist/validate/appHomeContract.js.map +0 -1
  688. package/dist/validate/capability.js.map +0 -1
  689. package/dist/validate/crossCapability.js.map +0 -1
  690. package/dist/validate/lifecycleAdapters.js +0 -772
  691. package/dist/validate/lifecycleAdapters.js.map +0 -1
  692. package/dist/validate/selfAudit.js.map +0 -1
  693. package/dist/validate/vocabularyAuthority.js.map +0 -1
  694. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  695. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  696. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -1,25 +1,52 @@
1
1
  import path from "node:path";
2
- import { readdirSync as fsReaddirSync, readFileSync as fsReadFileSync, statSync as fsStatSync } from "node:fs";
2
+ import { readdirSync as fsReaddirSync, statSync as fsStatSync } from "node:fs";
3
3
  import { resolvePath } from "../../core/paths.js";
4
4
  import { resolveSourceRoot } from "../../core/sourceRoot.js";
5
5
  import { validateAgentString, validatePathValue } from "../argvalidate.js";
6
- import { HookCliAdapter } from "../../hooks/validateArtifact/index.js";
6
+ import { ArtifactValidationAdapter } from "../../hooks/validateArtifact/index.js";
7
7
  import { validateCapability, validateContractSelf, validateProtocolSelf } from "../../validate/capability.js";
8
8
  import { loadYamlMapping } from "../../core/yaml.js";
9
- import { parseToml as parseTomlValidate } from "../../core/toml.js";
10
9
  import { validateGraph } from "../../validate/crossCapability.js";
11
- import { lifecycleMain } from "../../validate/lifecycleAdapters.js";
12
10
  import { validate as validateAppHome } from "../../validate/appHomeContract.js";
13
11
  import { selfAuditMain } from "../../validate/selfAudit.js";
14
12
  import { vocabularyAuthorityMain } from "../../validate/vocabularyAuthority.js";
13
+ import { activationConjunctionMain } from "../../validate/activationConjunction.js";
14
+ import { isRetainedReferenceSourceCheckout, retainedReferenceAuthorityMain, } from "../../validate/retainedReferenceAuthority.js";
15
15
  import { releaseMetadataMain } from "../../release/releaseMetadata.js";
16
16
  import { VALIDATE_ARTIFACT_PROTOCOL_IDS, normalizeArtifactProtocolId, } from "../../registries/artifactProtocolIds.js";
17
17
  import { emitStructured } from "../structured.js";
18
+ import { validateEntityState } from "../../state/entityStorage.js";
19
+ import { inspectTodoReconciliationDrift } from "../../state/todoDocsEntities.js";
20
+ import { inspectTodoReconciliationState } from "../../state/todoReconciliationInspection.js";
21
+ import { detectStateModeBinding } from "../../state/stateMode.js";
22
+ import { loadEntityCutoverTargetsForMarker } from "../../state/entityCutover.js";
23
+ import { validateRealProjectRoot } from "../../state/projectRoot.js";
24
+ import { readProjectFileSnapshot } from "../../state/safeProjectFile.js";
25
+ import { loadTodoReadinessContract, TodoReadinessContractError, } from "../../registries/todoReadinessContract.js";
26
+ export const VALIDATE_FAMILY_NAMES = [
27
+ "cross-capability",
28
+ "app-home-contract",
29
+ "vocabularyAuthority",
30
+ "retained-references",
31
+ "activation-conjunction",
32
+ "selfAudit",
33
+ "release-metadata",
34
+ "capability",
35
+ "capability-contract",
36
+ "artifact",
37
+ "state",
38
+ ];
39
+ /** Source-only validation must not appear as a packaged CLI capability. */
40
+ export function advertisedValidateFamilyNames() {
41
+ return isRetainedReferenceSourceCheckout()
42
+ ? VALIDATE_FAMILY_NAMES
43
+ : VALIDATE_FAMILY_NAMES.filter((family) => !["retained-references", "activation-conjunction"].includes(family));
44
+ }
18
45
  const VALIDATE_DELEGATED_SCRIPTS = {
19
46
  "cross-capability": "validate_cross_capability.py",
20
- "lifecycle-adapters": "validate_lifecycle_adapters.py",
21
47
  "app-home-contract": "validate_app_home_contract.py",
22
48
  vocabularyAuthority: "validate_vocabulary_authority.py",
49
+ "retained-references": "packages/cli/src/validate/retainedReferenceAuthority.ts",
23
50
  selfAudit: "self_audit.py",
24
51
  "release-metadata": "validate_release_metadata.py",
25
52
  };
@@ -38,11 +65,6 @@ function runCrossCapability() {
38
65
  }
39
66
  return { stdout: "cross-capability artifact graph ok\n", stderr: "", returncode: 0 };
40
67
  }
41
- function runLifecycleAdapters() {
42
- const lines = [];
43
- const rc = lifecycleMain({ out: (line) => lines.push(line) });
44
- return { stdout: lines.map((l) => l + "\n").join(""), stderr: "", returncode: rc };
45
- }
46
68
  function runAppHomeContract() {
47
69
  const errors = validateAppHome(resolvePath(repoRoot()));
48
70
  if (errors.length > 0) {
@@ -59,6 +81,29 @@ function runVocabularyAuthority() {
59
81
  const rc = vocabularyAuthorityMain({ out: (line) => lines.push(line) });
60
82
  return { stdout: lines.map((l) => l + "\n").join(""), stderr: "", returncode: rc };
61
83
  }
84
+ function runRetainedReferenceAuthority() {
85
+ const lines = [];
86
+ const rc = retainedReferenceAuthorityMain({ out: (line) => lines.push(line) });
87
+ return {
88
+ stdout: lines.map((line) => line + "\n").join(""),
89
+ stderr: "",
90
+ returncode: rc,
91
+ violations: rc === 0
92
+ ? []
93
+ : lines.filter((line) => line.startsWith("- ")).map((line) => line.slice(2)),
94
+ };
95
+ }
96
+ function unsupportedRetainedReferenceValidation() {
97
+ const recovery = "Run this source-checkout-only target from the repository root after pnpm -C packages/cli build.";
98
+ return {
99
+ stdout: "",
100
+ stderr: `retained-reference validation is unavailable outside a source checkout. ${recovery}\n`,
101
+ returncode: 1,
102
+ violations: ["retained-reference validation is unavailable outside a source checkout"],
103
+ failureClass: "unsupported_source_checkout",
104
+ recovery,
105
+ };
106
+ }
62
107
  function runSelfAudit() {
63
108
  const lines = [];
64
109
  const rc = selfAuditMain({ out: (line) => lines.push(line) });
@@ -66,7 +111,11 @@ function runSelfAudit() {
66
111
  }
67
112
  function runReleaseMetadata() {
68
113
  const lines = [];
69
- const rc = releaseMetadataMain({ out: (line) => lines.push(line) });
114
+ const adapter = process.env.AGENTERA_RELEASE_ADAPTER;
115
+ const rc = releaseMetadataMain({
116
+ ...(adapter === "stable" || adapter === "development" ? { adapter } : {}),
117
+ out: (line) => lines.push(line),
118
+ });
70
119
  return { stdout: lines.map((l) => l + "\n").join(""), stderr: "", returncode: rc };
71
120
  }
72
121
  function repoRoot() {
@@ -74,16 +123,16 @@ function repoRoot() {
74
123
  return process.cwd();
75
124
  }
76
125
  const DELEGATED_RUNNERS = {
77
- "cross-capability": runCrossCapability,
78
- "lifecycle-adapters": runLifecycleAdapters,
79
- "app-home-contract": runAppHomeContract,
80
- vocabularyAuthority: runVocabularyAuthority,
81
- selfAudit: runSelfAudit,
82
- "release-metadata": runReleaseMetadata,
126
+ "cross-capability": () => runCrossCapability(),
127
+ "app-home-contract": () => runAppHomeContract(),
128
+ vocabularyAuthority: () => runVocabularyAuthority(),
129
+ "retained-references": () => runRetainedReferenceAuthority(),
130
+ selfAudit: () => runSelfAudit(),
131
+ "release-metadata": () => runReleaseMetadata(),
83
132
  };
84
133
  function validationProcessPayload(targetFamily, target, p, result) {
85
134
  const lines = pySplitlines(result.stderr).map((l) => l.trim());
86
- const violations = lines.filter((l) => l.trim()).map((l) => (l.startsWith(" ") ? l.slice(2) : l));
135
+ const violations = result.violations ?? lines.filter((l) => l.trim()).map((l) => (l.startsWith(" ") ? l.slice(2) : l));
87
136
  const payload = {
88
137
  command: "validate",
89
138
  status: result.returncode === 0 ? "pass" : "fail",
@@ -96,12 +145,17 @@ function validationProcessPayload(targetFamily, target, p, result) {
96
145
  stderr: pySplitlines(result.stderr),
97
146
  },
98
147
  };
148
+ if (result.failureClass)
149
+ payload.failure_class = result.failureClass;
150
+ if (result.recovery)
151
+ payload.recovery = result.recovery;
99
152
  if (p !== null)
100
153
  payload.path = resolvePath(p);
101
154
  return payload;
102
155
  }
103
156
  function delegatedValidationPayload(targetFamily, result, engineCommand) {
104
157
  const payload = validationProcessPayload(targetFamily, targetFamily, null, result);
158
+ // cast: payload.engine carries captured subprocess stdout/stderr (IO boundary)
105
159
  payload.engine = { ...payload.engine, command: engineCommand };
106
160
  return payload;
107
161
  }
@@ -109,10 +163,11 @@ export function cmdValidate(family, args, io) {
109
163
  const out = io.out ?? ((t) => process.stdout.write(t));
110
164
  const err = io.err ?? ((t) => process.stderr.write(t));
111
165
  if (!(family in DELEGATED_RUNNERS)) {
112
- throw new Error("unsupported validate target family; valid families: capability, artifact, descriptors, " +
113
- "cross-capability, lifecycle-adapters, app-home-contract, vocabularyAuthority, selfAudit, release-metadata, capability-contract.");
166
+ throw new Error(`unsupported validate target family; valid families: ${VALIDATE_FAMILY_NAMES.join(", ")}.`);
114
167
  }
115
- const result = DELEGATED_RUNNERS[family]();
168
+ const result = family === "retained-references" && !isRetainedReferenceSourceCheckout()
169
+ ? unsupportedRetainedReferenceValidation()
170
+ : DELEGATED_RUNNERS[family](args);
116
171
  if ((args.format ?? "text") === "json") {
117
172
  emitStructured(delegatedValidationPayload(family, result, VALIDATE_DELEGATED_SCRIPTS[family]), "json", out);
118
173
  }
@@ -127,13 +182,17 @@ export function cmdValidate(family, args, io) {
127
182
  export function isDelegatedValidateFamily(family) {
128
183
  return family in DELEGATED_RUNNERS;
129
184
  }
185
+ export function cmdValidateActivationConjunction(io) {
186
+ return activationConjunctionMain({ out: io.out });
187
+ }
130
188
  // ── capability + capability-contract families ───────────────────────
131
189
  const CAPABILITY_NAMES = [
132
- "hej", "visionera", "resonera", "inspirera", "planera", "realisera",
133
- "optimera", "inspektera", "dokumentera", "profilera", "visualisera", "orkestrera",
190
+ "status", "vision", "discuss", "research", "plan", "build",
191
+ "optimize", "audit", "document", "profile", "design", "orchestrate",
134
192
  ];
135
193
  const CONTRACT_PATH = "skills/agentera/capability_schema_contract.yaml";
136
194
  const PROTOCOL_PATH = "skills/agentera/protocol.yaml";
195
+ const TODO_READINESS_PATH = "skills/agentera/schemas/artifacts/todo.yaml";
137
196
  function pyRepr(value) {
138
197
  return value.includes("'") && !value.includes('"') ? `"${value}"` : `'${value}'`;
139
198
  }
@@ -147,7 +206,7 @@ function validateCapabilityTarget(target) {
147
206
  const valid = CAPABILITY_NAMES.join(", ");
148
207
  throw new Error(`unsupported capability target ${pyRepr(target)}; valid capability names: ${valid}. ` +
149
208
  "Syntax: agentera validate capability <capability-or-path> [--format text|json]. " +
150
- "Example: agentera validate capability hej");
209
+ "Example: agentera validate capability status");
151
210
  }
152
211
  validatePathValue(target, "capability path");
153
212
  return target;
@@ -216,6 +275,7 @@ export function cmdValidateCapability(target, args, io) {
216
275
  target,
217
276
  path: resolvePath(capDir),
218
277
  checks,
278
+ // cast: c.violations are captured validation-engine lines (subprocess IO boundary)
219
279
  violations: checks.flatMap((c) => c.violations),
220
280
  summary: {
221
281
  passed: checks.filter((c) => c.status === "pass").length,
@@ -285,12 +345,33 @@ function protocolSelfResult() {
285
345
  }
286
346
  return { stdout, stderr, returncode };
287
347
  }
348
+ function todoReadinessResult() {
349
+ let stdout = `Validating TODO readiness: ${TODO_READINESS_PATH}\n`;
350
+ let errors = [];
351
+ try {
352
+ loadTodoReadinessContract(path.join(resolveSourceRoot(), TODO_READINESS_PATH), path.join(resolveSourceRoot(), PROTOCOL_PATH), path.join(resolveSourceRoot(), CONTRACT_PATH));
353
+ }
354
+ catch (exc) {
355
+ errors = exc instanceof TodoReadinessContractError ? exc.errors : [exc.message];
356
+ }
357
+ let stderr = "";
358
+ let returncode = 0;
359
+ if (errors.length > 0) {
360
+ stderr = "FAILED:\n" + errors.map((error) => ` ${error}\n`).join("");
361
+ returncode = 1;
362
+ }
363
+ else {
364
+ stdout += "PASS: TODO readiness contract is internally consistent\n";
365
+ }
366
+ return { stdout, stderr, returncode };
367
+ }
288
368
  export function cmdValidateCapabilityContract(args, io) {
289
369
  const out = io.out ?? ((t) => process.stdout.write(t));
290
370
  const err = io.err ?? ((t) => process.stderr.write(t));
291
371
  const results = [
292
372
  ["capability-contract-self", contractSelfResult()],
293
373
  ["capability-protocol", protocolSelfResult()],
374
+ ["todo-readiness", todoReadinessResult()],
294
375
  ];
295
376
  if ((args.format ?? "text") === "json") {
296
377
  const checks = results.map(([name, result]) => delegatedValidationPayload(name, result, "validate_capability.py"));
@@ -298,8 +379,9 @@ export function cmdValidateCapabilityContract(args, io) {
298
379
  command: "validate",
299
380
  status: results.every(([, r]) => r.returncode === 0) ? "pass" : "fail",
300
381
  target_family: "capability-contract",
301
- target: "capability-schema-contract-and-protocol",
382
+ target: "capability-schema-contract-protocol-and-todo-readiness",
302
383
  checks,
384
+ // cast: c.violations are captured validation-engine lines (subprocess IO boundary)
303
385
  violations: checks.flatMap((c) => c.violations),
304
386
  summary: {
305
387
  passed: results.filter(([, r]) => r.returncode === 0).length,
@@ -317,190 +399,6 @@ export function cmdValidateCapabilityContract(args, io) {
317
399
  }
318
400
  return results.every(([, r]) => r.returncode === 0) ? 0 : 1;
319
401
  }
320
- // ── descriptors family ──────────────────────────────────────────────
321
- function pySplitlinesText(s) {
322
- return s.split(/\r\n|\r|\n/);
323
- }
324
- function descriptorValidationPayload() {
325
- const sourceRoot = resolveSourceRoot();
326
- const codexDir = path.join(sourceRoot, "skills", "agentera", "agents");
327
- const opencodeDir = path.join(sourceRoot, ".opencode", "agents");
328
- const classificationPath = path.join(sourceRoot, "references", "cli", "capability-tool-classification.yaml");
329
- const checks = [];
330
- const violations = [];
331
- let capPermissions = {};
332
- try {
333
- const classificationData = loadYamlMapping(fsReadFileSync(classificationPath, "utf8"));
334
- capPermissions = {};
335
- for (const categoryData of Object.values(classificationData.classification)) {
336
- for (const [capability, capData] of Object.entries(categoryData.capabilities)) {
337
- capPermissions[capability] = capData.permission;
338
- }
339
- }
340
- }
341
- catch (exc) {
342
- violations.push(`classification authority: failed to load classification: ${exc.message}`);
343
- capPermissions = {};
344
- }
345
- for (const name of CAPABILITY_NAMES) {
346
- const codexPath = path.join(codexDir, `${name}.toml`);
347
- let check = { runtime: "codex", capability: name, path: codexPath, status: "pass" };
348
- let text;
349
- let parsed;
350
- try {
351
- text = fsReadFileSync(codexPath, "utf8");
352
- parsed = parseTomlValidate(text);
353
- }
354
- catch (exc) {
355
- check = { ...check, status: "fail", message: exc.message };
356
- violations.push(`codex ${name}: ${exc.message}`);
357
- checks.push(check);
358
- continue;
359
- }
360
- const expectedRef = `agentera prime --context ${name} --format json`;
361
- const legacyRef = `capabilities/${name}/instructions.md`;
362
- if (parsed.name !== name) {
363
- check = { ...check, status: "fail", message: "name field does not match capability" };
364
- violations.push(`codex ${name}: name field must be ${name}`);
365
- }
366
- else if (typeof parsed.description !== "string" || !parsed.description.trim()) {
367
- check = { ...check, status: "fail", message: "description is required" };
368
- violations.push(`codex ${name}: description is required`);
369
- }
370
- else if (typeof parsed.developer_instructions !== "string" || !parsed.developer_instructions.includes(expectedRef)) {
371
- check = { ...check, status: "fail", message: "developer_instructions must reference capability instructions" };
372
- violations.push(`codex ${name}: developer_instructions must reference ${expectedRef}`);
373
- }
374
- else if (typeof parsed.developer_instructions === "string" && parsed.developer_instructions.includes(legacyRef)) {
375
- check = { ...check, status: "fail", message: "developer_instructions must not reference the retired on-disk instructions.md" };
376
- violations.push(`codex ${name}: developer_instructions must not reference ${legacyRef} (use the prime --context command)`);
377
- }
378
- else if (!pySplitlinesText(text).slice(0, 5).includes("# agentera_managed: true")) {
379
- check = { ...check, status: "fail", message: "managed marker is required" };
380
- violations.push(`codex ${name}: managed marker is required`);
381
- }
382
- else {
383
- const devInst = parsed.developer_instructions;
384
- const expectedPermission = (capPermissions[name] ?? {});
385
- if (expectedPermission && Object.keys(expectedPermission).length > 0) {
386
- let expectedGuidance;
387
- if (expectedPermission.write === "allow" && expectedPermission.bash === "allow") {
388
- expectedGuidance = "You have full file write, file edit, and shell execution tools available";
389
- }
390
- else if (expectedPermission.write === "allow" && expectedPermission.bash === "deny") {
391
- expectedGuidance =
392
- "You have file write and file edit tools available to create or update files, but shell execution is disabled";
393
- }
394
- else {
395
- expectedGuidance = "You are a read-only agent \u2014 do not write files or execute shell commands";
396
- }
397
- if (!devInst.includes(expectedGuidance)) {
398
- check = { ...check, status: "fail", message: `developer_instructions must contain guidance '${expectedGuidance}'` };
399
- violations.push(`codex ${name}: developer_instructions must contain guidance '${expectedGuidance}'`);
400
- }
401
- }
402
- }
403
- checks.push(check);
404
- const opencodePath = path.join(opencodeDir, `${name}.md`);
405
- let ocheck = { runtime: "opencode", capability: name, path: opencodePath, status: "pass" };
406
- let otext;
407
- try {
408
- otext = fsReadFileSync(opencodePath, "utf8");
409
- }
410
- catch (exc) {
411
- ocheck = { ...ocheck, status: "fail", message: exc.message };
412
- violations.push(`opencode ${name}: ${exc.message}`);
413
- checks.push(ocheck);
414
- continue;
415
- }
416
- let frontmatter = {};
417
- try {
418
- const lines = pySplitlinesText(otext);
419
- if (lines.length > 0 && lines[0] === "---") {
420
- const closing = lines.indexOf("---", 1);
421
- if (closing !== -1) {
422
- const frontmatterText = lines.slice(1, closing).join("\n");
423
- frontmatter = loadYamlMapping(frontmatterText);
424
- }
425
- }
426
- }
427
- catch {
428
- frontmatter = {};
429
- }
430
- const expectedRefO = `agentera prime --context ${name} --format json`;
431
- const legacyRefO = `capabilities/${name}/instructions.md`;
432
- const expectedPermission = (capPermissions[name] ?? {});
433
- const actualPermission = frontmatter.permission;
434
- if ("name" in frontmatter) {
435
- ocheck = { ...ocheck, status: "fail", message: "name frontmatter must be omitted" };
436
- violations.push(`opencode ${name}: name frontmatter must be omitted`);
437
- }
438
- else if (frontmatter.agentera_managed === "true") {
439
- ocheck = { ...ocheck, status: "fail", message: "agentera_managed frontmatter must be omitted" };
440
- violations.push(`opencode ${name}: agentera_managed frontmatter must be omitted`);
441
- }
442
- else if (frontmatter.mode !== "subagent") {
443
- ocheck = { ...ocheck, status: "fail", message: "mode: subagent frontmatter is required" };
444
- violations.push(`opencode ${name}: mode: subagent frontmatter is required`);
445
- }
446
- else if (!frontmatter.description) {
447
- ocheck = { ...ocheck, status: "fail", message: "description is required" };
448
- violations.push(`opencode ${name}: description is required`);
449
- }
450
- else if (!actualPermission || typeof actualPermission !== "object" || Array.isArray(actualPermission)) {
451
- ocheck = { ...ocheck, status: "fail", message: "permission frontmatter is required and must be an object" };
452
- violations.push(`opencode ${name}: permission frontmatter is required and must be an object`);
453
- }
454
- else if (actualPermission.write !== expectedPermission.write ||
455
- actualPermission.bash !== expectedPermission.bash) {
456
- ocheck = { ...ocheck, status: "fail", message: "permission frontmatter does not match classification" };
457
- violations.push(`opencode ${name}: permission frontmatter must be write: ${expectedPermission.write}, bash: ${expectedPermission.bash}`);
458
- }
459
- else if (!otext.includes("<!-- agentera: managed -->")) {
460
- ocheck = { ...ocheck, status: "fail", message: "managed body marker is required" };
461
- violations.push(`opencode ${name}: managed body marker is required`);
462
- }
463
- else if (!otext.includes(expectedRefO)) {
464
- ocheck = { ...ocheck, status: "fail", message: "descriptor must reference capability instructions" };
465
- violations.push(`opencode ${name}: descriptor must reference ${expectedRefO}`);
466
- }
467
- else if (otext.includes(legacyRefO)) {
468
- ocheck = { ...ocheck, status: "fail", message: "descriptor must not reference the retired on-disk instructions.md" };
469
- violations.push(`opencode ${name}: descriptor must not reference ${legacyRefO} (use the prime --context command)`);
470
- }
471
- else if (otext.includes("Dispatch only through the runtime-native") || otext.includes(`\`@${name}\``)) {
472
- ocheck = { ...ocheck, status: "fail", message: "descriptor must not self-dispatch from a subagent" };
473
- violations.push(`opencode ${name}: descriptor must execute directly without self-dispatch`);
474
- }
475
- checks.push(ocheck);
476
- }
477
- return {
478
- command: "validate",
479
- status: violations.length > 0 ? "fail" : "pass",
480
- target_family: "descriptors",
481
- target: "agent-descriptors",
482
- checks,
483
- violations,
484
- summary: {
485
- passed: checks.filter((c) => c.status === "pass").length,
486
- failed: checks.filter((c) => c.status === "fail").length,
487
- },
488
- };
489
- }
490
- export function cmdValidateDescriptors(args, io) {
491
- const out = io.out ?? ((t) => process.stdout.write(t));
492
- const err = io.err ?? ((t) => process.stderr.write(t));
493
- const payload = descriptorValidationPayload();
494
- if ((args.format ?? "text") === "json") {
495
- emitStructured(payload, "json", out);
496
- }
497
- else {
498
- out(`descriptor validation ${payload.status}: ${payload.summary.passed} passed, ${payload.summary.failed} failed\n`);
499
- for (const violation of payload.violations)
500
- err(`- ${violation}\n`);
501
- }
502
- return payload.status === "pass" ? 0 : 1;
503
- }
504
402
  // ── artifact family ─────────────────────────────────────────────────
505
403
  function validateArtifactLabel(artifact) {
506
404
  validateAgentString(artifact, "artifact");
@@ -517,7 +415,7 @@ export function cmdValidateArtifact(args, io) {
517
415
  const artifact = String(args.artifact);
518
416
  validateArtifactLabel(artifact);
519
417
  const cwd = resolvePath(args.cwd ?? process.cwd());
520
- const adapter = new HookCliAdapter();
418
+ const adapter = new ArtifactValidationAdapter();
521
419
  const [rc, payload] = adapter.runExplicit(artifact, args.file ?? null, cwd);
522
420
  if ((args.format ?? "text") === "json") {
523
421
  const wrapped = {
@@ -536,8 +434,145 @@ export function cmdValidateArtifact(args, io) {
536
434
  out(`status=${payload.status} | artifact=${payload.artifact} | ` +
537
435
  `file=${payload.file} | docs_mapped_default=${payload.docs_mapped_default} | ` +
538
436
  `path_source=${payload.path_source}\n`);
437
+ // cast: payload.violations come from the artifact-validation engine IO boundary
539
438
  for (const violation of payload.violations)
540
439
  err(`${violation}\n`);
541
440
  return rc;
542
441
  }
543
- //# sourceMappingURL=validate.js.map
442
+ export function cmdValidateState(args, io) {
443
+ const out = io.out ?? ((text) => process.stdout.write(text));
444
+ const err = io.err ?? ((text) => process.stderr.write(text));
445
+ const projectRoot = resolvePath(args.cwd ?? process.cwd());
446
+ const payload = validateStatePayload(projectRoot);
447
+ const issues = payload.issues;
448
+ if ((args.format ?? "text") === "json")
449
+ emitStructured(payload, "json", out);
450
+ else {
451
+ out(`status=${payload.status} | entities=${payload.entity_count} | issues=${payload.issue_count} | project_root=${projectRoot}\n`);
452
+ for (const issue of issues)
453
+ err(`${issue.code}: ${issue.message}\nrecovery: ${issue.recovery}\n`);
454
+ if (payload.omitted_issue_count > 0)
455
+ err(`omitted ${payload.omitted_issue_count} additional issues; repair listed issues and rerun agentera check validate state --cwd ${JSON.stringify(projectRoot)}\n`);
456
+ }
457
+ return payload.valid ? 0 : 1;
458
+ }
459
+ function todoReconciliationValidationIssue(diagnosis) {
460
+ const label = diagnosis.state === "inactive" ? "inactive" : diagnosis.state === "unsafe_inactive" ? "unsafe inactive" : diagnosis.state === "unsafe_active" ? "unsafe active" : "invalid lifecycle";
461
+ return {
462
+ code: `todo_reconciliation_${diagnosis.state}`,
463
+ path: "TODO.md",
464
+ artifact: "todo",
465
+ message: `TODO reconciliation is ${label}; the project is not operable through the reconciled TODO surface`,
466
+ recovery: diagnosis.recovery_command,
467
+ diagnosis: diagnosis,
468
+ };
469
+ }
470
+ /** The executable whole-state contract shared by the public command and upgrade verification. */
471
+ export function validateStatePayload(projectRootInput) {
472
+ const projectRoot = resolvePath(projectRootInput);
473
+ const result = validateEntityState(projectRoot);
474
+ const issues = [...result.issues];
475
+ let additionalOmittedIssues = 0;
476
+ let entityMode = false;
477
+ try {
478
+ const binding = detectStateModeBinding(projectRoot);
479
+ if (binding.mode === "entities") {
480
+ entityMode = true;
481
+ binding.publicationContext.close();
482
+ const markerSnapshot = readProjectFileSnapshot(validateRealProjectRoot(projectRoot), ".agentera/state-mode.yaml");
483
+ if (markerSnapshot.kind !== "file")
484
+ throw new Error("entity-mode marker became unavailable during maintenance validation");
485
+ const marker = loadYamlMapping(markerSnapshot.bytes.toString("utf8"));
486
+ if (typeof marker.migration_id === "string" || marker.cutover === "one_way_git") {
487
+ const targets = loadEntityCutoverTargetsForMarker(projectRoot, markerSnapshot.bytes);
488
+ const byPath = new Map(result.entities.map((entity) => [entity.relativePath, entity]));
489
+ for (const target of targets) {
490
+ const actual = byPath.get(target.path);
491
+ if (!actual || actual.classification !== "valid" || (target.id && actual.id !== target.id) || (target.artifact && actual.artifact !== target.artifact)) {
492
+ issues.push({ code: "missing_migrated_entity", path: target.path, id: target.id ?? null, artifact: target.artifact ?? null, message: `cutover target '${target.path}' is missing or no longer has its declared identity`, recovery: "Restore a valid canonical entity at the manifest-declared path; no state was changed." });
493
+ }
494
+ }
495
+ }
496
+ }
497
+ }
498
+ catch (error) {
499
+ const message = error.message;
500
+ if (issues.length < 100)
501
+ issues.push({
502
+ code: message.includes("state mode marker") ? "invalid_lifecycle_state" : "invalid_state_marker_or_manifest",
503
+ path: ".agentera/state-mode.yaml",
504
+ message: message.includes("state mode marker") ? "entity-state lifecycle marker is invalid" : message,
505
+ recovery: "Restore the durable marker and immutable migration evidence, then rerun this read-only check.",
506
+ });
507
+ else
508
+ additionalOmittedIssues += 1;
509
+ }
510
+ if (entityMode) {
511
+ let reconciliation = null;
512
+ try {
513
+ reconciliation = inspectTodoReconciliationState(projectRoot);
514
+ if (reconciliation?.status === "action_required") {
515
+ if (issues.length < 100)
516
+ issues.push(todoReconciliationValidationIssue(reconciliation));
517
+ else
518
+ additionalOmittedIssues += 1;
519
+ }
520
+ }
521
+ catch (error) {
522
+ if (issues.length < 100)
523
+ issues.push({ code: "invalid_todo_reconciliation", path: "TODO.md", artifact: "todo", message: "TODO reconciliation could not be inspected without state changes", recovery: "Restore valid bounded TODO reconciliation state, then rerun this read-only check." });
524
+ else
525
+ additionalOmittedIssues += 1;
526
+ }
527
+ if (reconciliation?.state === "invalid_lifecycle")
528
+ return finishStateValidation(projectRoot, result, issues, additionalOmittedIssues);
529
+ try {
530
+ const reconciliation = inspectTodoReconciliationDrift(projectRoot);
531
+ const driftItems = Array.isArray(reconciliation.items) ? reconciliation.items.filter((item) => item !== null && typeof item === "object" && !Array.isArray(item)) : [];
532
+ const reconciliationOmitted = Number(reconciliation.omitted_count ?? 0);
533
+ const available = Math.max(0, 100 - issues.length);
534
+ for (const item of driftItems.slice(0, available)) {
535
+ const id = String(item.id ?? "unknown");
536
+ const state = String(item.state ?? "drift");
537
+ const fields = [...new Set([
538
+ ...(Array.isArray(item.markdown_changed_fields) ? item.markdown_changed_fields : []),
539
+ ...(Array.isArray(item.entity_changed_fields) ? item.entity_changed_fields : []),
540
+ ...(Array.isArray(item.conflicting_fields) ? item.conflicting_fields : []),
541
+ ].filter((field) => typeof field === "string"))].sort();
542
+ issues.push({
543
+ code: "todo_reconciliation_drift",
544
+ path: "TODO.md",
545
+ id,
546
+ artifact: "todo",
547
+ message: `managed TODO '${id}' has ${state} reconciliation drift${fields.length ? ` in ${fields.join(", ")}` : ""}`,
548
+ recovery: "Review the reported authority and run the intended typed TODO mutation once; the writer reconciles one-sided changes atomically and rejects conflicts before effects.",
549
+ });
550
+ }
551
+ additionalOmittedIssues += Math.max(0, driftItems.length - available) + (Number.isSafeInteger(reconciliationOmitted) && reconciliationOmitted > 0 ? reconciliationOmitted : 0);
552
+ }
553
+ catch (error) {
554
+ if (issues.length < 100)
555
+ issues.push({ code: "invalid_todo_reconciliation", path: "TODO.md", artifact: "todo", message: error.message, recovery: "Restore valid bounded managed TODO Markdown, activation metadata, and public baselines, then rerun this read-only check." });
556
+ else
557
+ additionalOmittedIssues += 1;
558
+ }
559
+ }
560
+ return finishStateValidation(projectRoot, result, issues, additionalOmittedIssues);
561
+ }
562
+ function finishStateValidation(projectRoot, result, issues, additionalOmittedIssues) {
563
+ const omittedIssueCount = result.omittedIssueCount + additionalOmittedIssues;
564
+ const valid = result.valid && issues.length === 0 && omittedIssueCount === 0;
565
+ const payload = {
566
+ command: "check validate state",
567
+ target_family: "state",
568
+ status: valid ? "pass" : "fail",
569
+ valid,
570
+ project_root: projectRoot,
571
+ entity_count: result.entityCount,
572
+ issue_count: issues.length + omittedIssueCount,
573
+ omitted_issue_count: omittedIssueCount,
574
+ valid_artifact_values: result.validArtifactValues,
575
+ issues: issues,
576
+ };
577
+ return payload;
578
+ }