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,9 +1,6 @@
1
1
  /**
2
- * Public surface for the validate-artifact hook. The CLI command
3
- * (`packages/cli/src/cli/commands/validate.ts`), the smoke checks, and
4
- * the dispatch entry all import the public classes from this barrel
5
- * to keep import paths stable as the file is split across the
6
- * per-responsibility submodules.
2
+ * Artifact validation used by the explicit `agentera check validate artifact`
3
+ * command and state publication.
7
4
  */
8
5
  import fs from "node:fs";
9
6
  import path from "node:path";
@@ -11,10 +8,8 @@ import { loadYamlMapping } from "../../core/yaml.js";
11
8
  import { resolvePath } from "../../core/paths.js";
12
9
  import { normalizeArtifactProtocolId } from "../../registries/artifactProtocolIds.js";
13
10
  import { DEFAULT_ARTIFACT_PATHS } from "../common.js";
14
- import { ArtifactWrite, RuntimeEventParser } from "./runtime.js";
15
- import { isMapping } from "./schema.js";
16
11
  import { validateMd } from "./markdown.js";
17
- import { artifactForWrite, defaultArtifactPath, readIfNeeded, compactAfterValidWrite, } from "./traversal.js";
12
+ import { defaultArtifactPath, readIfNeeded, } from "./traversal.js";
18
13
  import { schemasDirDefault, validateYamlContent } from "./violations.js";
19
14
  import { AGENT_FACING_ARTIFACT_IDS, HUMAN_FACING_ARTIFACT_IDS } from "./agentFacing.js";
20
15
  export class ArtifactSchemaValidator {
@@ -28,6 +23,7 @@ export class ArtifactSchemaValidator {
28
23
  if (!this.schemaCache.has(name)) {
29
24
  const p = path.join(this.schemasDir, `${name}.yaml`);
30
25
  if (fs.existsSync(p) && fs.statSync(p).isFile()) {
26
+ // cast: artifact schema parsed from a YAML schema file
31
27
  this.schemaCache.set(name, loadYamlMapping(fs.readFileSync(p, "utf8")));
32
28
  }
33
29
  else {
@@ -42,37 +38,6 @@ export class ArtifactSchemaValidator {
42
38
  validateMarkdown(content, name, schema = null) {
43
39
  return validateMd(content, name, schema);
44
40
  }
45
- validateWrite(write, cwd) {
46
- const absPath = path.isAbsolute(write.file_path) ? write.file_path : path.join(cwd, write.file_path);
47
- const rel = path.relative(cwd, absPath).replace(/\\/g, "/");
48
- const basename = path.basename(absPath);
49
- const artifact = artifactForWrite(absPath, rel, basename, cwd);
50
- if (artifact && AGENT_FACING_ARTIFACT_IDS.has(artifact)) {
51
- const schema = this.loadSchema(artifact);
52
- if (schema === null)
53
- return [];
54
- if (Object.keys(schema).length === 0)
55
- return [`${artifact}: schema file is empty or contains no valid definitions`];
56
- const content = readIfNeeded(write.content, absPath);
57
- if (content === null)
58
- return [];
59
- let violations = this.validateYaml(content, schema, artifact);
60
- if (violations.length > 0)
61
- return violations;
62
- return compactAfterValidWrite(artifact, absPath);
63
- }
64
- if (artifact && HUMAN_FACING_ARTIFACT_IDS.has(artifact)) {
65
- const content = readIfNeeded(write.content, absPath);
66
- if (content === null)
67
- return [];
68
- const schema = this.loadSchema(artifact);
69
- const violations = this.validateMarkdown(content, artifact, schema);
70
- if (violations.length > 0)
71
- return violations;
72
- return compactAfterValidWrite(artifact, absPath);
73
- }
74
- return [];
75
- }
76
41
  validateExplicit(artifact, filePath, cwd) {
77
42
  const content = readIfNeeded(null, filePath);
78
43
  if (content === null)
@@ -102,32 +67,11 @@ export class ArtifactSchemaValidator {
102
67
  export function loadSchema(name) {
103
68
  return new ArtifactSchemaValidator().loadSchema(name);
104
69
  }
105
- export class HookCliAdapter {
106
- parser;
70
+ export class ArtifactValidationAdapter {
107
71
  validator;
108
- constructor(parser, validator) {
109
- this.parser = parser ?? new RuntimeEventParser();
72
+ constructor(validator) {
110
73
  this.validator = validator ?? new ArtifactSchemaValidator();
111
74
  }
112
- run(raw, defaultCwd = null) {
113
- let data;
114
- try {
115
- if (!raw.trim())
116
- return [0, []];
117
- data = JSON.parse(raw);
118
- }
119
- catch {
120
- return [0, []];
121
- }
122
- if (!isMapping(data))
123
- return [0, []];
124
- const write = this.parser.parse(data);
125
- if (write === null)
126
- return [0, []];
127
- const cwd = data.cwd ?? defaultCwd ?? process.cwd();
128
- const violations = this.validator.validateWrite(write, cwd);
129
- return violations.length > 0 ? [2, violations] : [0, []];
130
- }
131
75
  runExplicit(artifact, filePath, cwd) {
132
76
  artifact = artifact.trim();
133
77
  const defaultPath = defaultArtifactPath(artifact, cwd);
@@ -145,5 +89,4 @@ export class HookCliAdapter {
145
89
  return violations.length > 0 ? [2, payload] : [0, payload];
146
90
  }
147
91
  }
148
- export { ArtifactWrite, RuntimeEventParser, resolvePath };
149
- //# sourceMappingURL=index.js.map
92
+ export { resolvePath };
@@ -4,7 +4,52 @@
4
4
  * with required `field` entries and dispatches to the appropriate
5
5
  * section check (ITEM, RELEASE, TOKEN).
6
6
  */
7
+ import { parseTodoMarkdownListItem } from "../../cli/todoMarkdown.js";
8
+ import { classifyTodoSectionHeading, countTodoResolvedSectionHeadings, isLegacyStrikethroughTodoLine, } from "../compaction/parse.js";
7
9
  import { isMapping } from "./schema.js";
10
+ function validateTodoResolvedPlacement(content, name) {
11
+ const violations = [];
12
+ let section = "other";
13
+ for (const line of content.split(/\r\n|\r|\n/)) {
14
+ const kind = classifyTodoSectionHeading(line);
15
+ if (kind === "resolved") {
16
+ section = "resolved";
17
+ continue;
18
+ }
19
+ if (kind === "severity") {
20
+ section = "severity";
21
+ continue;
22
+ }
23
+ if (/^##\s/.test(line.trim())) {
24
+ section = "other";
25
+ continue;
26
+ }
27
+ const trimmed = line.trim();
28
+ if (!trimmed.startsWith("-"))
29
+ continue;
30
+ const parsed = parseTodoMarkdownListItem(trimmed);
31
+ if (parsed?.status === "resolved") {
32
+ if (section === "severity") {
33
+ violations.push(`${name}: resolved checkbox item must live under '## ✓ Resolved', not in severity bands`);
34
+ break;
35
+ }
36
+ }
37
+ if (isLegacyStrikethroughTodoLine(trimmed)) {
38
+ violations.push(`${name}: legacy strikethrough resolved items are not allowed; use '- [x]' under '## ✓ Resolved'`);
39
+ break;
40
+ }
41
+ }
42
+ // Exactly one section keeps parsing and compaction unambiguous, including
43
+ // before the first item is resolved. See todo.yaml TC8.
44
+ const resolvedHeadingCount = countTodoResolvedSectionHeadings(content);
45
+ if (resolvedHeadingCount === 0) {
46
+ violations.push(`${name}: missing required '## ✓ Resolved' section`);
47
+ }
48
+ else if (resolvedHeadingCount > 1) {
49
+ violations.push(`${name}: ${resolvedHeadingCount} '## ✓ Resolved' sections found; merge into exactly one (duplicate sections hide entries from the compaction gate and parsing processes only the first).`);
50
+ }
51
+ return violations;
52
+ }
8
53
  const SKIP_META = new Set(["meta", "GROUP_PREFIXES", "BUDGET", "COMPACTION", "VALIDATION", "CONVENTION"]);
9
54
  export function validateMd(content, name, schema = null) {
10
55
  const violations = [];
@@ -43,7 +88,6 @@ export function validateMdItems(content, name, violations) {
43
88
  return;
44
89
  }
45
90
  const severityGlyphs = ["⇶", "⇉", "→", "⇢"];
46
- const requiredItemGlyphs = new Set(["⇶"]);
47
91
  let found = false;
48
92
  for (const glyph of severityGlyphs) {
49
93
  const g = glyph.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
@@ -60,15 +104,22 @@ export function validateMdItems(content, name, violations) {
60
104
  bodyStart += 1;
61
105
  const sectionEnd = nextMatch ? idx + nextMatch.index : content.length;
62
106
  const sectionBody = content.slice(bodyStart, sectionEnd);
63
- if (requiredItemGlyphs.has(glyph) && !/^\s*-/m.test(sectionBody)) {
64
- const headingSlice = content.slice(sectionStart.index, sectionStart.index + sectionStart[0].length);
65
- const glyphNameMatch = new RegExp(`^##\\s*(${g}.+)$`, "m").exec(headingSlice);
66
- const headingText = glyphNameMatch ? glyphNameMatch[1] : glyph;
67
- violations.push(`${name}: severity section '${headingText}' has no list entries (expected '- [type]' items)`);
107
+ const headingSlice = content.slice(sectionStart.index, sectionStart.index + sectionStart[0].length);
108
+ const glyphNameMatch = new RegExp(`^##\\s*(${g}.+)$`, "m").exec(headingSlice);
109
+ const headingText = glyphNameMatch ? glyphNameMatch[1] : glyph;
110
+ const gluedNextSection = nextMatch?.index === 0;
111
+ if (gluedNextSection || /^\s*##\s/m.test(sectionBody)) {
112
+ violations.push(`${name}: severity section '${headingText}' body contains a nested heading; add a blank line before the next '##' section`);
113
+ }
114
+ if (glyph === "⇶" && /^\s*-\s+\[x\]/im.test(sectionBody)) {
115
+ violations.push(`${name}: severity section '⇶ Critical' must not contain resolved '- [x]' items; move them to '## ✓ Resolved'`);
68
116
  }
69
117
  }
70
118
  }
71
119
  }
120
+ if (name === "TODO.md" || name === "todo") {
121
+ violations.push(...validateTodoResolvedPlacement(content, name));
122
+ }
72
123
  if (!found) {
73
124
  violations.push(`${name}: missing severity glyph in section headings (expected '## ⇶ Critical', '## ⇉ Degraded', '## → Normal', '## ⇢ Annoying')`);
74
125
  }
@@ -92,4 +143,3 @@ export function validateMdTokens(content, name, violations) {
92
143
  violations.push(`${name}: missing YAML code block with token definitions (expected '\`\`\`yaml')`);
93
144
  }
94
145
  }
95
- //# sourceMappingURL=markdown.js.map
@@ -28,18 +28,28 @@ export function pyTypeName(v) {
28
28
  export function wordCount(text) {
29
29
  return (text.match(/\S+/g) ?? []).length;
30
30
  }
31
- const SKIP_META = new Set(["meta", "GROUP_PREFIXES", "BUDGET", "COMPACTION", "VALIDATION", "CONVENTION"]);
31
+ const SKIP_META = new Set([
32
+ "meta",
33
+ "GROUP_PREFIXES",
34
+ "BUDGET",
35
+ "COMPACTION",
36
+ "VALIDATION",
37
+ "CONVENTION",
38
+ ]);
32
39
  const LIST_INDICATORS = new Set(["number", "entry", "summary"]);
33
40
  const SEQUENCE_KEYS_BY_ARTIFACT = {
34
41
  decisions: { DECISION: "decisions", ARCHIVE: "archive" },
35
42
  docs: { MAPPING: "mapping", INDEX: "index", AUDIT_LOG: "audit_log" },
36
43
  experiments: { EXPERIMENT: "experiments", ARCHIVE: "archive" },
37
- plan: { TASK: "tasks" },
44
+ health: { AUDIT: "audits", ARCHIVE: "archive" },
45
+ plan: { TASK: "tasks", UNKNOWN: "unknowns", REJECTED: "rejected" },
38
46
  progress: { CYCLE: "cycles", ARCHIVE: "archive" },
39
47
  session: { BOOKMARK: "bookmarks" },
40
48
  vision: { PERSONA: "personas", PRINCIPLE: "principles" },
41
49
  };
42
- const NESTED_SEQUENCE_KEYS = [[["DECISION", "ALTERNATIVE"], "alternatives"]];
50
+ const NESTED_SEQUENCE_KEYS = [
51
+ [["DECISION", "ALTERNATIVE"], "alternatives"],
52
+ ];
43
53
  const SEQUENCE_ORDER_BY_ARTIFACT = { "progress\0cycles": "descending" };
44
54
  export function collectSingletonGroups(schema) {
45
55
  const result = [];
@@ -48,7 +58,7 @@ export function collectSingletonGroups(schema) {
48
58
  continue;
49
59
  let isListOrSub = false;
50
60
  for (const e of Object.values(gv)) {
51
- if (isMapping(e) && (LIST_INDICATORS.has(e.field) || e.parent)) {
61
+ if (isMapping(e) && (LIST_INDICATORS.has(String(e.field)) || e.parent)) {
52
62
  isListOrSub = true;
53
63
  break;
54
64
  }
@@ -58,7 +68,7 @@ export function collectSingletonGroups(schema) {
58
68
  const fields = [];
59
69
  for (const e of Object.values(gv)) {
60
70
  if (isMapping(e) && e.required && "field" in e)
61
- fields.push(e.field);
71
+ fields.push(String(e.field));
62
72
  }
63
73
  if (fields.length > 0)
64
74
  result.push([gk, gk.toLowerCase(), fields]);
@@ -95,15 +105,19 @@ export function validateField(violations, name, scope, field, p) {
95
105
  }
96
106
  }
97
107
  export function allowedValues(entry) {
108
+ // cast: schema `validation` rules parsed from a YAML artifact schema file
98
109
  for (const rule of entry.validation ?? []) {
99
110
  if (typeof rule === "string" && rule.startsWith("Must be one of: ")) {
100
- return rule.slice("Must be one of: ".length).split(",").map((v) => v.trim());
111
+ return rule
112
+ .slice("Must be one of: ".length)
113
+ .split(",")
114
+ .map((v) => v.trim());
101
115
  }
102
116
  }
103
117
  return [];
104
118
  }
105
119
  export function validateAllowedValue(violations, name, scope, entry, p) {
106
- const field = entry.field;
120
+ const field = String(entry.field);
107
121
  const allowed = allowedValues(entry);
108
122
  if (!field || allowed.length === 0 || !(field in scope) || isEmptyRequired(scope[field]))
109
123
  return;
@@ -113,7 +127,7 @@ export function validateAllowedValue(violations, name, scope, entry, p) {
113
127
  }
114
128
  }
115
129
  export function validateFieldType(violations, name, scope, entry, p) {
116
- const field = entry.field;
130
+ const field = String(entry.field);
117
131
  if (!field || !(field in scope))
118
132
  return true;
119
133
  const value = scope[field];
@@ -146,6 +160,12 @@ export function validateFieldType(violations, name, scope, entry, p) {
146
160
  isValid = false;
147
161
  }
148
162
  }
163
+ else if (expectedType === "list[integer|string]") {
164
+ if (!Array.isArray(value) || !value.every((x) => typeof x === "string" || (typeof x === "number" && Number.isInteger(x)))) {
165
+ violations.push(`${name}: '${fullPath}' must be a list of integers or strings`);
166
+ isValid = false;
167
+ }
168
+ }
149
169
  else if (expectedType === "list[map]") {
150
170
  if (!Array.isArray(value) || !value.every((x) => isMapping(x))) {
151
171
  violations.push(`${name}: '${fullPath}' must be a list of mappings`);
@@ -155,15 +175,18 @@ export function validateFieldType(violations, name, scope, entry, p) {
155
175
  return isValid;
156
176
  }
157
177
  export function validateFieldConstraints(violations, name, scope, entry, p) {
158
- const field = entry.field;
178
+ const field = String(entry.field);
159
179
  if (!field || !(field in scope))
160
180
  return;
161
181
  const value = scope[field];
182
+ // cast: schema `validation` rules parsed from a YAML artifact schema file
162
183
  for (const rule of entry.validation ?? []) {
163
184
  if (typeof rule !== "string")
164
185
  continue;
165
186
  if (rule === "Must be a positive integer") {
166
- if (typeof value === "boolean" || !(typeof value === "number" && Number.isInteger(value)) || value <= 0) {
187
+ if (typeof value === "boolean" ||
188
+ !(typeof value === "number" && Number.isInteger(value)) ||
189
+ value <= 0) {
167
190
  const fullPath = p ? `${p}.${field}` : field;
168
191
  violations.push(`${name}: '${fullPath}' must be a positive integer`);
169
192
  }
@@ -172,7 +195,7 @@ export function validateFieldConstraints(violations, name, scope, entry, p) {
172
195
  }
173
196
  export function validateRequiredFields(violations, name, schema, group, scope, p) {
174
197
  for (const entry of iterGroupEntries(schema, group)) {
175
- const field = entry.field;
198
+ const field = String(entry.field);
176
199
  if (entry.parent || field === "entry")
177
200
  continue;
178
201
  if (entry.required)
@@ -185,9 +208,10 @@ export function validateRequiredFields(violations, name, schema, group, scope, p
185
208
  }
186
209
  const value = scope[field];
187
210
  if (isMapping(value)) {
211
+ // cast: schema `children` list parsed from a YAML artifact schema file
188
212
  for (const child of entry.children ?? []) {
189
213
  if (isMapping(child) && child.field) {
190
- const childField = child.field;
214
+ const childField = String(child.field);
191
215
  const childPath = p ? `${p}.${field}` : field;
192
216
  if (child.required)
193
217
  validateField(violations, name, value, childField, childPath);
@@ -204,7 +228,7 @@ export function validateRequiredFields(violations, name, schema, group, scope, p
204
228
  }
205
229
  export function validateSingletonGroup(violations, name, schema, group, scope, p) {
206
230
  for (const entry of iterGroupEntries(schema, group)) {
207
- const field = entry.field;
231
+ const field = String(entry.field);
208
232
  if (entry.parent || field === "entry")
209
233
  continue;
210
234
  if (entry.required)
@@ -221,7 +245,7 @@ export function schemaFieldNames(schema, group) {
221
245
  const out = new Set();
222
246
  for (const entry of iterGroupEntries(schema, group)) {
223
247
  if (entry.field && !entry.parent && entry.field !== "entry")
224
- out.add(entry.field);
248
+ out.add(String(entry.field));
225
249
  }
226
250
  return out;
227
251
  }
@@ -257,6 +281,10 @@ export function validateFullPlanContract(data, violations) {
257
281
  validateField(violations, "plan", header, field, "header");
258
282
  }
259
283
  validateField(violations, "plan", data, "design", "");
284
+ const unknowns = data.unknowns;
285
+ if (!Array.isArray(unknowns) || unknowns.length === 0) {
286
+ violations.push("plan: full plans require at least one 'unknowns' entry");
287
+ }
260
288
  const criticIssues = header.critic_issues;
261
289
  if (!isEmptyRequired(criticIssues)) {
262
290
  const match = /^\s*(\d+)\s+found,\s*(\d+)\s+addressed,\s*(\d+)\s+dismissed\s*$/.exec(String(criticIssues));
@@ -301,7 +329,9 @@ export function parentRequirements(schema, parentGroup) {
301
329
  entry.required &&
302
330
  entry.field) {
303
331
  const parentField = parent.slice(prefix.length);
304
- (requirements[parentField] ??= []).push(entry.field);
332
+ const fields = requirements[parentField] ?? [];
333
+ fields.push(String(entry.field));
334
+ requirements[parentField] = fields;
305
335
  }
306
336
  }
307
337
  }
@@ -312,7 +342,7 @@ export function entryRequirements(schema, group) {
312
342
  const out = [];
313
343
  for (const entry of iterGroupEntries(schema, group)) {
314
344
  if (entry.parent === parent && entry.required && entry.field)
315
- out.push(entry.field);
345
+ out.push(String(entry.field));
316
346
  }
317
347
  return out;
318
348
  }
@@ -332,6 +362,8 @@ export function validateSequences(data, schema, name, violations) {
332
362
  const childRequirements = parentRequirements(schema, group);
333
363
  seq.forEach((item, index) => {
334
364
  const p = `${key}[${index}]`;
365
+ if (name === "health" && group === "ARCHIVE" && typeof item === "string")
366
+ return;
335
367
  if (!isMapping(item)) {
336
368
  violations.push(`${name}: '${p}' must be a mapping`);
337
369
  return;
@@ -370,8 +402,62 @@ export function validateSequences(data, schema, name, violations) {
370
402
  });
371
403
  }
372
404
  }
405
+ export function validatePlanDependencies(data, violations) {
406
+ if (!Array.isArray(data.tasks))
407
+ return;
408
+ const tasks = data.tasks.filter((task) => isMapping(task));
409
+ const byRef = new Map();
410
+ tasks.forEach((task, index) => {
411
+ if (task.number !== null && task.number !== undefined)
412
+ byRef.set(String(task.number), index);
413
+ const name = String(task.name ?? "").trim();
414
+ if (name && !byRef.has(name))
415
+ byRef.set(name, index);
416
+ });
417
+ const edges = tasks.map(() => []);
418
+ tasks.forEach((task, index) => {
419
+ if (!Array.isArray(task.depends_on))
420
+ return;
421
+ for (const dependency of task.depends_on) {
422
+ const dependencyRef = String(dependency);
423
+ const target = byRef.get(dependencyRef);
424
+ if (target === undefined) {
425
+ violations.push(`plan: 'tasks[${index}].depends_on' references unknown task '${dependencyRef}' (PV4)`);
426
+ }
427
+ else {
428
+ edges[index].push(target);
429
+ }
430
+ }
431
+ });
432
+ const state = tasks.map(() => 0);
433
+ const stack = [];
434
+ const visit = (index) => {
435
+ state[index] = 1;
436
+ stack.push(index);
437
+ for (const target of edges[index]) {
438
+ if (state[target] === 0 && visit(target))
439
+ return true;
440
+ if (state[target] === 1) {
441
+ const cycleStart = stack.indexOf(target);
442
+ const cycle = [...stack.slice(cycleStart), target]
443
+ .map((taskIndex) => String(tasks[taskIndex]?.number ?? taskIndex + 1))
444
+ .join(" -> ");
445
+ violations.push(`plan: circular dependency chain ${cycle} (PV4)`);
446
+ return true;
447
+ }
448
+ }
449
+ stack.pop();
450
+ state[index] = 2;
451
+ return false;
452
+ };
453
+ for (let index = 0; index < tasks.length; index += 1) {
454
+ if (state[index] === 0 && visit(index))
455
+ break;
456
+ }
457
+ }
373
458
  export function validateDecisionAlternatives(data, name) {
374
459
  const violations = [];
460
+ // cast: `decisions` read from a parsed YAML artifact mapping
375
461
  (data.decisions ?? []).forEach((decision, index) => {
376
462
  if (!isMapping(decision))
377
463
  return;
@@ -389,8 +475,14 @@ export function validateDecisionSatisfaction(data, name) {
389
475
  const violations = [];
390
476
  const allowedStates = new Set(["open", "provisionally_satisfied", "user_confirmed_satisfied"]);
391
477
  const entries = [
392
- ...(data.decisions ?? []).map((d, i) => [`decisions[${i}]`, d]),
393
- ...(data.archive ?? []).map((d, i) => [`archive[${i}]`, d]),
478
+ ...(data.decisions ?? []).map((d, i) => [
479
+ `decisions[${i}]`,
480
+ d,
481
+ ]),
482
+ ...(data.archive ?? []).map((d, i) => [
483
+ `archive[${i}]`,
484
+ d,
485
+ ]),
394
486
  ];
395
487
  for (const [entryPath, decision] of entries) {
396
488
  if (!isMapping(decision) || !("satisfaction" in decision))
@@ -452,4 +544,3 @@ export function sequenceInOrder(nums, direction) {
452
544
  const sorted = [...nums].sort((a, b) => (reverse ? b - a : a - b));
453
545
  return nums.length === sorted.length && nums.every((n, i) => n === sorted[i]);
454
546
  }
455
- //# sourceMappingURL=schema.js.map
@@ -12,17 +12,19 @@ import { loadYamlMapping } from "../../core/yaml.js";
12
12
  import { ARTIFACT_PROTOCOL_PATHS, HUMAN_FACING_ARTIFACT_IDS, normalizeArtifactProtocolId, } from "../../registries/artifactProtocolIds.js";
13
13
  import { DEFAULT_ARTIFACT_PATHS } from "../common.js";
14
14
  import { COMPACTABLE_YAML_ARTIFACTS, compactFile, compactYamlFile } from "../compaction/index.js";
15
+ import { withStateMutation } from "../../state/write/mutation.js";
15
16
  import { isMapping } from "./schema.js";
16
17
  const AGENT_YAML_RE = /\.agentera\/([a-z_]+)\.yaml$/;
17
18
  function resolvePathRel(fp, cwd) {
18
19
  return path.isAbsolute(fp) ? fp : path.join(cwd, fp);
19
20
  }
20
21
  function docsPathOverrides(cwd) {
21
- const docsPath = path.join(cwd, ".agentera", "docs.yaml");
22
+ const docsPath = path.join(cwd, ARTIFACT_PROTOCOL_PATHS.docs);
22
23
  if (!fs.existsSync(docsPath) || !fs.statSync(docsPath).isFile())
23
24
  return {};
24
25
  let data;
25
26
  try {
27
+ // cast: docs.yaml path-override mapping parsed from a YAML file
26
28
  data = loadYamlMapping(fs.readFileSync(docsPath, "utf8"));
27
29
  }
28
30
  catch (exc) {
@@ -82,19 +84,20 @@ function readIfNeeded(content, absPath) {
82
84
  return null;
83
85
  }
84
86
  }
85
- function compactAfterValidWrite(artifact, absPath) {
87
+ function compactAfterValidWrite(artifact, absPath, projectRoot) {
86
88
  if (!fs.existsSync(absPath))
87
89
  return [];
88
90
  try {
89
- if (artifact === "todo") {
90
- compactFile(absPath, "todo-resolved");
91
- }
92
- else if (artifact in COMPACTABLE_YAML_ARTIFACTS) {
93
- compactYamlFile(absPath, artifact);
94
- }
95
- else {
91
+ if (artifact !== "todo" && !(artifact in COMPACTABLE_YAML_ARTIFACTS))
96
92
  return [];
97
- }
93
+ withStateMutation(projectRoot, (transaction) => {
94
+ if (artifact === "todo") {
95
+ transaction.mutateProjection(absPath, (stage) => compactFile(stage, "todo-resolved"));
96
+ }
97
+ else {
98
+ transaction.mutateProjection(absPath, (stage) => compactYamlFile(stage, artifact, projectRoot));
99
+ }
100
+ });
98
101
  }
99
102
  catch (exc) {
100
103
  return [`${artifact}: compaction failed: ${exc.message}`];
@@ -102,4 +105,3 @@ function compactAfterValidWrite(artifact, absPath) {
102
105
  return [];
103
106
  }
104
107
  export { readIfNeeded, compactAfterValidWrite };
105
- //# sourceMappingURL=traversal.js.map
@@ -10,7 +10,7 @@ import path from "node:path";
10
10
  import { parseYaml } from "../../core/yaml.js";
11
11
  import { resolveSourceRoot } from "../../core/sourceRoot.js";
12
12
  import { loadYamlMapping } from "../../core/yaml.js";
13
- import { expectedSequenceOrder, isMapping, sequenceInOrder, validationRuleSeverity, validateDecisionAlternatives, validateDecisionSatisfaction, validateFullPlanContract, validatePlanKnownFields, validateSequences, validateSingletonGroup, collectSingletonGroups, wordCount, } from "./schema.js";
13
+ import { expectedSequenceOrder, isMapping, sequenceInOrder, validationRuleSeverity, validateDecisionAlternatives, validateDecisionSatisfaction, validateFullPlanContract, validatePlanDependencies, validatePlanKnownFields, validateSequences, validateSingletonGroup, collectSingletonGroups, wordCount, } from "./schema.js";
14
14
  function schemasDirDefault() {
15
15
  return path.join(resolveSourceRoot(), "skills", "agentera", "schemas", "artifacts");
16
16
  }
@@ -42,6 +42,7 @@ export function validateYamlContent(content, schema, name) {
42
42
  if (name === "plan") {
43
43
  validatePlanKnownFields(data, schema, violations);
44
44
  validateFullPlanContract(data, violations);
45
+ validatePlanDependencies(data, violations);
45
46
  }
46
47
  validateSequences(data, schema, name, violations);
47
48
  if (name === "decisions") {
@@ -56,7 +57,7 @@ export function validateYamlContent(content, schema, name) {
56
57
  const scope = be.scope ?? "";
57
58
  if (mw && String(scope).includes("full_file") && wordBudgetSeverity === "error") {
58
59
  const wc = wordCount(content);
59
- if (wc > mw)
60
+ if (wc > Number(mw))
60
61
  violations.push(`${name}: word count (${wc}) exceeds budget (${mw})`);
61
62
  }
62
63
  }
@@ -64,13 +65,15 @@ export function validateYamlContent(content, schema, name) {
64
65
  for (const ve of Object.values(schema[groupKey] ?? {})) {
65
66
  if (!isMapping(ve))
66
67
  continue;
67
- const rule = ve.rule ?? "";
68
+ const rule = String(ve.rule ?? "");
68
69
  if (ve.severity !== "error")
69
70
  continue;
70
71
  if (rule.includes("unique") && rule.includes("number")) {
71
72
  for (const [key, val] of Object.entries(data)) {
72
73
  if (Array.isArray(val)) {
73
- const nums = val.filter((e) => isMapping(e) && "number" in e).map((e) => e.number);
74
+ const nums = val
75
+ .filter((e) => isMapping(e) && "number" in e)
76
+ .map((e) => e.number);
74
77
  if (nums.length > 0) {
75
78
  if (nums.length !== new Set(nums).size) {
76
79
  violations.push(`${name}: duplicate numbers in '${key}'`);
@@ -102,4 +105,3 @@ export function validateYamlContent(content, schema, name) {
102
105
  return violations;
103
106
  }
104
107
  export { loadYamlMapping, schemasDirDefault };
105
- //# sourceMappingURL=violations.js.map