agentera 3.0.0-dev.7 → 3.0.0-dev.74

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 (763) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +229 -22
  3. package/bundle/.agentera-build-source.json +8 -0
  4. package/bundle/CHANGELOG.md +1361 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +143 -0
  8. package/bundle/UPGRADE.md +252 -0
  9. package/bundle/extract-corpus-parity.json +2 -4
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +484 -0
  12. package/bundle/references/adapters/package-registry.yaml +439 -188
  13. package/bundle/references/adapters/package-surface-characterization.md +68 -34
  14. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  15. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  16. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  17. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  18. package/bundle/references/analysis/evidence-tier-authority.yaml +559 -0
  19. package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
  20. package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
  21. package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
  22. package/bundle/references/analysis/verification-policy.yaml +266 -0
  23. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  24. package/bundle/references/artifacts/glossary-entry-contract.yaml +2752 -0
  25. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  26. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  27. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  28. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  29. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  30. package/bundle/references/cli/routing-model.md +152 -93
  31. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  32. package/bundle/references/cli/update-channels.yaml +6 -4
  33. package/bundle/references/cli/vocabulary-index.yaml +5 -7
  34. package/bundle/references/cli/vocabulary.md +52 -94
  35. package/bundle/references/meta/retained-reference-authority.yaml +166 -0
  36. package/bundle/skills/agentera/SKILL.md +183 -63
  37. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  38. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  39. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  40. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  41. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  42. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  43. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  44. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  45. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  46. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  47. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  48. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  51. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  52. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  53. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  54. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  55. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  56. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  57. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  58. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  59. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  62. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  63. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  64. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  65. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  66. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  67. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
  68. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
  69. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  70. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
  71. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  72. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  73. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  74. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  75. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  76. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  77. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  78. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  79. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  80. package/bundle/skills/agentera/protocol.yaml +4 -4
  81. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  82. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  83. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +30 -12
  84. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  85. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -12
  86. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -9
  87. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
  88. package/bundle/skills/agentera/schemas/artifacts/health.yaml +56 -19
  89. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
  90. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +464 -32
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +131 -18
  92. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +302 -7
  93. package/dist/.agentera-build-source.json +8 -0
  94. package/dist/analytics/extractCorpus/cli.js +52 -11
  95. package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
  96. package/dist/analytics/extractCorpus/core.js +262 -14
  97. package/dist/analytics/extractCorpus/corpus.js +57 -18
  98. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  99. package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
  100. package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
  101. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  102. package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
  103. package/dist/analytics/extractCorpus/index.js +4 -2
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
  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 +113 -0
  112. package/dist/analytics/personalGlossaryCandidateProjection.js +692 -0
  113. package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
  114. package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
  115. package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
  116. package/dist/analytics/personalGlossaryDecision.js +203 -0
  117. package/dist/analytics/personalGlossaryExplicit.js +788 -0
  118. package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
  119. package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
  120. package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
  121. package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
  122. package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
  123. package/dist/analytics/personalGlossaryProfile.js +229 -0
  124. package/dist/analytics/personalGlossaryRecurrence.js +618 -0
  125. package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
  126. package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
  127. package/dist/analytics/profileSignals.js +211 -0
  128. package/dist/analytics/usageStats.js +150 -23
  129. package/dist/audit/terminologyDrift.js +281 -0
  130. package/dist/bin/agentera.js +3 -2
  131. package/dist/capabilities/audit/instructions.js +16 -6
  132. package/dist/capabilities/build/instructions.js +59 -6
  133. package/dist/capabilities/design/instructions.js +3 -4
  134. package/dist/capabilities/discuss/instructions.js +29 -6
  135. package/dist/capabilities/document/instructions.js +11 -6
  136. package/dist/capabilities/index.js +20 -14
  137. package/dist/capabilities/optimize/instructions.js +14 -6
  138. package/dist/capabilities/orchestrate/instructions.js +42 -6
  139. package/dist/capabilities/plan/instructions.js +30 -3
  140. package/dist/capabilities/profile/instructions.js +104 -5
  141. package/dist/capabilities/research/instructions.js +4 -5
  142. package/dist/capabilities/status/instructions.js +15 -6
  143. package/dist/capabilities/status/startupInstructions.js +34 -0
  144. package/dist/capabilities/vision/instructions.js +3 -5
  145. package/dist/cli/appContext.js +14 -7
  146. package/dist/cli/argvalidate.js +0 -1
  147. package/dist/cli/capabilityContext/benchmark.js +5 -4
  148. package/dist/cli/capabilityContext/bespoke.js +14 -6
  149. package/dist/cli/capabilityContext/build.js +116 -42
  150. package/dist/cli/capabilityContext/closeout.js +30 -27
  151. package/dist/cli/capabilityContext/contract.js +18 -27
  152. package/dist/cli/capabilityContext/evidence.js +84 -77
  153. package/dist/cli/capabilityContext/index.js +0 -1
  154. package/dist/cli/capabilityContext/orchestration.js +42 -18
  155. package/dist/cli/capabilityContext/planState.js +89 -96
  156. package/dist/cli/capabilityContext/progress.js +51 -12
  157. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  158. package/dist/cli/capabilityContext/shared.js +9 -20
  159. package/dist/cli/capabilityContext/slim.js +52 -8
  160. package/dist/cli/capabilityContext/startup.js +51 -114
  161. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  162. package/dist/cli/capabilityContext/types.js +26 -10
  163. package/dist/cli/capabilityContext.js +0 -1
  164. package/dist/cli/commands/appHome.js +0 -1
  165. package/dist/cli/commands/capability.js +2 -2
  166. package/dist/cli/commands/compact.js +163 -13
  167. package/dist/cli/commands/doctor.js +117 -11
  168. package/dist/cli/commands/durability.js +81 -0
  169. package/dist/cli/commands/glossaryAdvice.js +138 -0
  170. package/dist/cli/commands/lint.js +22 -8
  171. package/dist/cli/commands/personalGlossaryCandidateReads.js +744 -0
  172. package/dist/cli/commands/personalGlossaryDecision.js +349 -0
  173. package/dist/cli/commands/personalGlossaryPublish.js +484 -0
  174. package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
  175. package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
  176. package/dist/cli/commands/prime/briefOrientation.js +845 -0
  177. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  178. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  179. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  180. package/dist/cli/commands/prime/collectOrientationState.js +126 -63
  181. package/dist/cli/commands/prime/orientationOutput.js +267 -56
  182. package/dist/cli/commands/prime/types.js +0 -1
  183. package/dist/cli/commands/prime/v1Migration.js +0 -1
  184. package/dist/cli/commands/prime.js +76 -11
  185. package/dist/cli/commands/profileGrounding.js +55 -0
  186. package/dist/cli/commands/query.js +74 -52
  187. package/dist/cli/commands/report.js +91 -21
  188. package/dist/cli/commands/route.js +142 -0
  189. package/dist/cli/commands/schema.js +436 -138
  190. package/dist/cli/commands/state/decisions.js +40 -56
  191. package/dist/cli/commands/state/docs.js +58 -85
  192. package/dist/cli/commands/state/experimentRecords.js +151 -0
  193. package/dist/cli/commands/state/experiments.js +11 -65
  194. package/dist/cli/commands/state/get.js +129 -0
  195. package/dist/cli/commands/state/health.js +11 -113
  196. package/dist/cli/commands/state/index.js +6 -41
  197. package/dist/cli/commands/state/list.js +194 -0
  198. package/dist/cli/commands/state/objective.js +21 -65
  199. package/dist/cli/commands/state/plan.js +11 -170
  200. package/dist/cli/commands/state/planTasks.js +154 -0
  201. package/dist/cli/commands/state/plans.js +154 -0
  202. package/dist/cli/commands/state/progress.js +11 -45
  203. package/dist/cli/commands/state/shared.js +0 -1
  204. package/dist/cli/commands/state/todo.js +28 -107
  205. package/dist/cli/commands/state/write.js +433 -0
  206. package/dist/cli/commands/upgrade.js +146 -5
  207. package/dist/cli/commands/upgradeVerify.js +118 -0
  208. package/dist/cli/commands/validate.js +235 -136
  209. package/dist/cli/commands/verify.js +73 -16
  210. package/dist/cli/contracts/bundleStatus.js +0 -1
  211. package/dist/cli/contracts/orientationState.js +0 -1
  212. package/dist/cli/dispatch/argvParser.js +0 -1
  213. package/dist/cli/dispatch/check.js +84 -40
  214. package/dist/cli/dispatch/commands.js +3 -3
  215. package/dist/cli/dispatch/index.js +77 -52
  216. package/dist/cli/dispatch/lifecycle.js +162 -62
  217. package/dist/cli/dispatch/prime.js +37 -2
  218. package/dist/cli/dispatch/projections.js +17 -0
  219. package/dist/cli/dispatch/shared.js +1 -2
  220. package/dist/cli/dispatch/state.js +62 -66
  221. package/dist/cli/dispatch.js +0 -1
  222. package/dist/cli/errors.js +16 -17
  223. package/dist/cli/help.js +404 -39
  224. package/dist/cli/migrationRequired.js +125 -0
  225. package/dist/cli/orientation/attention.js +19 -19
  226. package/dist/cli/orientation/corpusCoverage.js +32 -1
  227. package/dist/cli/orientation.js +346 -129
  228. package/dist/cli/planArtifacts.js +350 -0
  229. package/dist/cli/planEvidence.js +157 -0
  230. package/dist/cli/planLifecycleState.js +36 -0
  231. package/dist/cli/planTaskIndex.js +11 -0
  232. package/dist/cli/preCutoverCommand.js +32 -0
  233. package/dist/cli/prime-blob.js +71 -3
  234. package/dist/cli/profileAcquisition.js +167 -0
  235. package/dist/cli/startupCompletenessContract.js +11 -8
  236. package/dist/cli/stateQuery.js +47 -12
  237. package/dist/cli/structured.js +0 -1
  238. package/dist/cli/todoMarkdown.js +25 -12
  239. package/dist/cli/todoReadinessSelection.js +192 -0
  240. package/dist/cli/todoSeverity.js +0 -1
  241. package/dist/core/atomicWriter.js +23 -0
  242. package/dist/core/developmentChannel.js +1 -0
  243. package/dist/core/developmentInvocation.js +377 -0
  244. package/dist/core/difflib.js +0 -1
  245. package/dist/core/envPaths.js +0 -1
  246. package/dist/core/jsonValue.js +0 -1
  247. package/dist/core/paths.js +0 -1
  248. package/dist/core/pyjson.js +0 -1
  249. package/dist/core/shell.js +4 -0
  250. package/dist/core/skillIdentity.js +23 -0
  251. package/dist/core/sourceRoot.js +9 -12
  252. package/dist/core/text.js +10 -0
  253. package/dist/core/toml.js +0 -1
  254. package/dist/core/yaml.js +61 -2
  255. package/dist/eval/evalSkills.js +13 -14
  256. package/dist/eval/glossaryEvaluation.js +751 -0
  257. package/dist/eval/glossaryEvaluationProcess.js +29 -0
  258. package/dist/eval/glossaryEvaluationRunner.js +571 -0
  259. package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
  260. package/dist/eval/hybridRouteEvaluation.js +155 -0
  261. package/dist/eval/semanticEval.js +0 -1
  262. package/dist/eval/semanticFixtures.js +0 -1
  263. package/dist/hooks/common.js +3 -56
  264. package/dist/hooks/compaction/apply.js +224 -47
  265. package/dist/hooks/compaction/dryRun.js +2 -1
  266. package/dist/hooks/compaction/index.js +5 -6
  267. package/dist/hooks/compaction/parse.js +73 -6
  268. package/dist/hooks/compaction/retention.js +28 -25
  269. package/dist/hooks/compaction/status.js +145 -26
  270. package/dist/hooks/compaction/types.js +0 -1
  271. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  272. package/dist/hooks/validateArtifact/index.js +6 -65
  273. package/dist/hooks/validateArtifact/markdown.js +9 -10
  274. package/dist/hooks/validateArtifact/schema.js +96 -9
  275. package/dist/hooks/validateArtifact/traversal.js +12 -11
  276. package/dist/hooks/validateArtifact/violations.js +5 -3
  277. package/dist/migrate/v2HandoffManifest.js +8 -3
  278. package/dist/registries/activationContract.js +2 -0
  279. package/dist/registries/activationTuples.js +136 -0
  280. package/dist/registries/artifactProtocolIds.js +2 -1
  281. package/dist/registries/artifactRegistry.js +207 -60
  282. package/dist/registries/artifactSchemaProjection.js +45 -0
  283. package/dist/registries/capabilityContract.js +5 -21
  284. package/dist/registries/evaluatorHandoffContract.js +0 -1
  285. package/dist/registries/evidenceTierContract.js +375 -0
  286. package/dist/registries/explicitSegmentGrammarContract.js +619 -0
  287. package/dist/registries/glossaryAdviceContract.js +79 -0
  288. package/dist/registries/glossaryCandidateContractPaths.js +6 -0
  289. package/dist/registries/glossaryCandidateContracts.js +820 -0
  290. package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
  291. package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
  292. package/dist/registries/glossaryCandidateProjectionAuthority.js +197 -0
  293. package/dist/registries/glossaryCandidateProjectionContract.js +104 -0
  294. package/dist/registries/glossaryCaveatContract.js +67 -0
  295. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  296. package/dist/registries/glossaryEntryContract.js +759 -0
  297. package/dist/registries/glossaryEntryTemporal.js +12 -0
  298. package/dist/registries/glossaryMiningAuthority.js +764 -0
  299. package/dist/registries/glossaryProfileFullContract.js +24 -0
  300. package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
  301. package/dist/registries/glossaryReviewRecordsContract.js +129 -0
  302. package/dist/registries/glossaryTermIdentity.js +139 -0
  303. package/dist/registries/glossaryTermOccurrence.js +20 -0
  304. package/dist/registries/hybridRoute.js +274 -0
  305. package/dist/registries/hybridRouteReceipt.js +221 -0
  306. package/dist/registries/packagePublication.js +273 -0
  307. package/dist/registries/packageRegistry.js +184 -209
  308. package/dist/registries/personalGlossaryContracts.js +1 -0
  309. package/dist/registries/todoReadinessContract.js +448 -0
  310. package/dist/registries/triggerLoader.js +7 -44
  311. package/dist/registries/verbosityBudgetContract.js +205 -0
  312. package/dist/release/releaseMetadata.js +167 -10
  313. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  314. package/dist/runtime/lifecycleAdapters.js +777 -0
  315. package/dist/runtime/lifecycleAuthority.js +453 -0
  316. package/dist/runtime/lifecycleOperationContract.js +123 -0
  317. package/dist/runtime/lifecycleOperations.js +634 -0
  318. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  319. package/dist/runtime/lifecyclePublication.js +415 -0
  320. package/dist/runtime/lifecycleSnapshot.js +438 -0
  321. package/dist/runtime/nativeResourceCleanup.js +502 -0
  322. package/dist/setup/opencode.js +20 -13
  323. package/dist/setup/opencodeConstants.js +1 -0
  324. package/dist/setup/sharedSkill.js +45 -0
  325. package/dist/setup/smokeChecks.js +14 -75
  326. package/dist/state/archiveDiscovery.js +580 -0
  327. package/dist/state/archivePublication.js +225 -0
  328. package/dist/state/archiveRecovery.js +237 -0
  329. package/dist/state/archiveReplay.js +53 -0
  330. package/dist/state/canonicalMigrationRecord.js +36 -0
  331. package/dist/state/changelog.js +221 -0
  332. package/dist/state/decisionEntities.js +367 -0
  333. package/dist/state/decisionLegacyValidation.js +215 -0
  334. package/dist/state/decisionMigrationProvenance.js +199 -0
  335. package/dist/state/decisionOverlay.js +254 -0
  336. package/dist/state/decisionRevision.js +256 -0
  337. package/dist/state/decisionRevisionMigration.js +89 -0
  338. package/dist/state/directRetrieval.js +323 -0
  339. package/dist/state/durability.js +324 -0
  340. package/dist/state/entityCutover.js +459 -0
  341. package/dist/state/entityCutoverGit.js +127 -0
  342. package/dist/state/entityGlossaryAuthority.js +13 -0
  343. package/dist/state/entityListProjection.js +187 -0
  344. package/dist/state/entityListRuntimeRegistry.js +85 -0
  345. package/dist/state/entityMigrationCausality.js +97 -0
  346. package/dist/state/entityMigrationIdentity.js +5 -0
  347. package/dist/state/entityMigrationPreview.js +840 -0
  348. package/dist/state/entityMigrationTodo.js +133 -0
  349. package/dist/state/entityPublicationContext.js +859 -0
  350. package/dist/state/entityRetrievalHelp.js +506 -0
  351. package/dist/state/entityStorage.js +899 -0
  352. package/dist/state/exactReplacementRecovery.js +18 -0
  353. package/dist/state/experimentArchive.js +63 -0
  354. package/dist/state/experimentIdentity.js +202 -0
  355. package/dist/state/healthEntities.js +262 -0
  356. package/dist/state/healthEntityValidation.js +18 -0
  357. package/dist/state/healthRepair.js +69 -0
  358. package/dist/state/installRoot.js +15 -7
  359. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  360. package/dist/state/legacyIdentity.js +47 -0
  361. package/dist/state/legacySummaryRecord.js +6 -0
  362. package/dist/state/listAccounting.js +54 -0
  363. package/dist/state/listClassification.js +17 -0
  364. package/dist/state/listCursor.js +42 -0
  365. package/dist/state/listRetrieval.js +781 -0
  366. package/dist/state/migrationSourceBinding.js +30 -0
  367. package/dist/state/objectiveExperimentEntities.js +322 -0
  368. package/dist/state/planEntities.js +1027 -0
  369. package/dist/state/planIdentity.js +47 -0
  370. package/dist/state/planLineageValidation.js +52 -0
  371. package/dist/state/planReplacementTransaction.js +475 -0
  372. package/dist/state/planRetrieval.js +313 -0
  373. package/dist/state/planTaskRetrieval.js +294 -0
  374. package/dist/state/progressEntities.js +512 -0
  375. package/dist/state/progressGlossaryCaveat.js +168 -0
  376. package/dist/state/progressPublicationOrder.js +19 -0
  377. package/dist/state/progressWritePolicy.js +33 -0
  378. package/dist/state/projectRoot.js +62 -0
  379. package/dist/state/projectionPolicy.js +190 -0
  380. package/dist/state/retrievalAuthority.js +156 -0
  381. package/dist/state/safeProjectFile.js +155 -0
  382. package/dist/state/startupAnalysis/benchmark.js +70 -9
  383. package/dist/state/startupAnalysis/contract.js +44 -10
  384. package/dist/state/startupAnalysis/helpers.js +1 -2
  385. package/dist/state/startupAnalysis/index.js +0 -1
  386. package/dist/state/startupAnalysis/metrics.js +0 -1
  387. package/dist/state/startupAnalysis/records.js +0 -1
  388. package/dist/state/startupAnalysis/report.js +0 -1
  389. package/dist/state/startupAnalysis/threshold.js +13 -1
  390. package/dist/state/startupAnalysis.js +0 -1
  391. package/dist/state/startupProjection.js +499 -0
  392. package/dist/state/stateMode.js +222 -0
  393. package/dist/state/stateStorageAuthority.js +47 -0
  394. package/dist/state/summaryEntityRead.js +25 -0
  395. package/dist/state/summaryMigrationProvenance.js +66 -0
  396. package/dist/state/summarySourceRowAuthority.js +36 -0
  397. package/dist/state/todoActivationSafety.js +58 -0
  398. package/dist/state/todoDocsEntities.js +1124 -0
  399. package/dist/state/todoDocsEntityValidation.js +158 -0
  400. package/dist/state/todoMarkdownProjection.js +51 -0
  401. package/dist/state/todoReconciliationActivation.js +182 -0
  402. package/dist/state/todoReconciliationInspection.js +171 -0
  403. package/dist/state/todoReconciliationRepair.js +318 -0
  404. package/dist/state/todoReconciliationTransaction.js +595 -0
  405. package/dist/state/write/assign.js +20 -0
  406. package/dist/state/write/candidateMutation.js +269 -0
  407. package/dist/state/write/errors.js +11 -0
  408. package/dist/state/write/experimentPublication.js +192 -0
  409. package/dist/state/write/explain.js +377 -0
  410. package/dist/state/write/fields.js +61 -0
  411. package/dist/state/write/glossaryPublication.js +263 -0
  412. package/dist/state/write/grammar.js +285 -0
  413. package/dist/state/write/helpers.js +29 -0
  414. package/dist/state/write/index.js +12 -0
  415. package/dist/state/write/input.js +391 -0
  416. package/dist/state/write/lock.js +837 -0
  417. package/dist/state/write/mutation.js +234 -0
  418. package/dist/state/write/operations.js +170 -0
  419. package/dist/state/write/planEvaluation.js +128 -0
  420. package/dist/state/write/planPublication.js +179 -0
  421. package/dist/state/write/runtimeOperations.js +146 -0
  422. package/dist/state/write/serialize.js +1 -0
  423. package/dist/state/write/transaction.js +57 -0
  424. package/dist/state/write/validate.js +7 -0
  425. package/dist/upgrade/appContentRefresh.js +77 -36
  426. package/dist/upgrade/appModel.js +0 -1
  427. package/dist/upgrade/atomicWriter.js +1 -0
  428. package/dist/upgrade/bundleEvidence.js +0 -1
  429. package/dist/upgrade/channels.js +6 -9
  430. package/dist/upgrade/compatibility.js +43 -17
  431. package/dist/upgrade/doctor.js +55 -32
  432. package/dist/upgrade/doctorClassifier.js +11 -1
  433. package/dist/upgrade/installedHooksRetirement.js +46 -40
  434. package/dist/upgrade/legacyAgentCleanup.js +187 -21
  435. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  436. package/dist/upgrade/migrateArtifactsV2ToV3.js +334 -64
  437. package/dist/upgrade/migrationPublication.js +122 -0
  438. package/dist/upgrade/nextMajorDoctor.js +0 -1
  439. package/dist/upgrade/npxPlatformStatus.js +2 -2
  440. package/dist/upgrade/projectIntegration.js +128 -160
  441. package/dist/upgrade/projectIntegrationDecision.js +42 -85
  442. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  443. package/dist/upgrade/runtimeMigration.js +262 -453
  444. package/dist/upgrade/upgradeCommands.js +14 -1
  445. package/dist/upgrade/upgradeLock.js +85 -0
  446. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  447. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  448. package/dist/upgrade/versionResolution.js +0 -1
  449. package/dist/validate/activationArtifactEvidence.js +866 -0
  450. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  451. package/dist/validate/activationConjunction.js +816 -0
  452. package/dist/validate/activationEvidenceManifest.js +610 -0
  453. package/dist/validate/activationPackageSemantics.js +29 -0
  454. package/dist/validate/appHomeContract.js +1 -7
  455. package/dist/validate/bootstrapAuthority.js +44 -0
  456. package/dist/validate/capability.js +11 -3
  457. package/dist/validate/crossCapability.js +14 -9
  458. package/dist/validate/retainedReferenceAuthority.js +879 -0
  459. package/dist/validate/selfAudit.js +39 -45
  460. package/dist/validate/v1LegacyCruft.js +131 -0
  461. package/dist/validate/vocabularyAuthority.js +8 -8
  462. package/package.json +39 -13
  463. package/bundle/references/adapters/cursor.md +0 -214
  464. package/bundle/references/adapters/opencode.md +0 -530
  465. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  466. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  467. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  468. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  469. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  470. package/bundle/references/analysis/benchmark.md +0 -267
  471. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  472. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  473. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  474. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  475. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  476. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  477. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  478. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  479. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  480. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  481. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  482. package/bundle/references/meta/documentation-inventory.md +0 -49
  483. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  484. package/bundle/skills/agentera/agents/audit.toml +0 -6
  485. package/bundle/skills/agentera/agents/build.toml +0 -6
  486. package/bundle/skills/agentera/agents/design.toml +0 -6
  487. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  488. package/bundle/skills/agentera/agents/document.toml +0 -6
  489. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  490. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  491. package/bundle/skills/agentera/agents/plan.toml +0 -6
  492. package/bundle/skills/agentera/agents/profile.toml +0 -6
  493. package/bundle/skills/agentera/agents/research.toml +0 -6
  494. package/bundle/skills/agentera/agents/status.toml +0 -6
  495. package/bundle/skills/agentera/agents/vision.toml +0 -6
  496. package/bundle/skills/agentera/references/contract.md +0 -1048
  497. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  498. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  499. package/dist/analytics/extractCorpus/core.js.map +0 -1
  500. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  501. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  502. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  503. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  504. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  505. package/dist/analytics/extractCorpus/index.js.map +0 -1
  506. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  507. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  508. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  509. package/dist/analytics/extractCorpus.js.map +0 -1
  510. package/dist/analytics/usageStats.js.map +0 -1
  511. package/dist/bin/agentera.js.map +0 -1
  512. package/dist/capabilities/audit/instructions.js.map +0 -1
  513. package/dist/capabilities/build/instructions.js.map +0 -1
  514. package/dist/capabilities/design/instructions.js.map +0 -1
  515. package/dist/capabilities/discuss/instructions.js.map +0 -1
  516. package/dist/capabilities/document/instructions.js.map +0 -1
  517. package/dist/capabilities/dokumentera/instructions.js +0 -6
  518. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  519. package/dist/capabilities/hej/instructions.js +0 -6
  520. package/dist/capabilities/hej/instructions.js.map +0 -1
  521. package/dist/capabilities/index.js.map +0 -1
  522. package/dist/capabilities/inspektera/instructions.js +0 -6
  523. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  524. package/dist/capabilities/inspirera/instructions.js +0 -6
  525. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  526. package/dist/capabilities/optimera/instructions.js +0 -6
  527. package/dist/capabilities/optimera/instructions.js.map +0 -1
  528. package/dist/capabilities/optimize/instructions.js.map +0 -1
  529. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  530. package/dist/capabilities/orkestrera/instructions.js +0 -6
  531. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  532. package/dist/capabilities/plan/instructions.js.map +0 -1
  533. package/dist/capabilities/planera/instructions.js +0 -6
  534. package/dist/capabilities/planera/instructions.js.map +0 -1
  535. package/dist/capabilities/profile/instructions.js.map +0 -1
  536. package/dist/capabilities/profilera/instructions.js +0 -6
  537. package/dist/capabilities/profilera/instructions.js.map +0 -1
  538. package/dist/capabilities/realisera/instructions.js +0 -6
  539. package/dist/capabilities/realisera/instructions.js.map +0 -1
  540. package/dist/capabilities/research/instructions.js.map +0 -1
  541. package/dist/capabilities/resonera/instructions.js +0 -6
  542. package/dist/capabilities/resonera/instructions.js.map +0 -1
  543. package/dist/capabilities/status/instructions.js.map +0 -1
  544. package/dist/capabilities/vision/instructions.js.map +0 -1
  545. package/dist/capabilities/visionera/instructions.js +0 -6
  546. package/dist/capabilities/visionera/instructions.js.map +0 -1
  547. package/dist/capabilities/visualisera/instructions.js +0 -5
  548. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  549. package/dist/cli/appContext.js.map +0 -1
  550. package/dist/cli/argvalidate.js.map +0 -1
  551. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  552. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  553. package/dist/cli/capabilityContext/build.js.map +0 -1
  554. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  555. package/dist/cli/capabilityContext/contract.js.map +0 -1
  556. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  557. package/dist/cli/capabilityContext/index.js.map +0 -1
  558. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  559. package/dist/cli/capabilityContext/planState.js.map +0 -1
  560. package/dist/cli/capabilityContext/progress.js.map +0 -1
  561. package/dist/cli/capabilityContext/realisera.js +0 -174
  562. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  563. package/dist/cli/capabilityContext/shared.js.map +0 -1
  564. package/dist/cli/capabilityContext/slim.js.map +0 -1
  565. package/dist/cli/capabilityContext/startup.js.map +0 -1
  566. package/dist/cli/capabilityContext/types.js.map +0 -1
  567. package/dist/cli/capabilityContext.js.map +0 -1
  568. package/dist/cli/commands/appHome.js.map +0 -1
  569. package/dist/cli/commands/backfill.js +0 -84
  570. package/dist/cli/commands/backfill.js.map +0 -1
  571. package/dist/cli/commands/capability.js.map +0 -1
  572. package/dist/cli/commands/compact.js.map +0 -1
  573. package/dist/cli/commands/doctor.js.map +0 -1
  574. package/dist/cli/commands/lint.js.map +0 -1
  575. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  576. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  577. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  578. package/dist/cli/commands/prime/routeOutput.js +0 -50
  579. package/dist/cli/commands/prime/routeOutput.js.map +0 -1
  580. package/dist/cli/commands/prime/types.js.map +0 -1
  581. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  582. package/dist/cli/commands/prime.js.map +0 -1
  583. package/dist/cli/commands/query.js.map +0 -1
  584. package/dist/cli/commands/report.js.map +0 -1
  585. package/dist/cli/commands/schema.js.map +0 -1
  586. package/dist/cli/commands/state/decisions.js.map +0 -1
  587. package/dist/cli/commands/state/docs.js.map +0 -1
  588. package/dist/cli/commands/state/experiments.js.map +0 -1
  589. package/dist/cli/commands/state/health.js.map +0 -1
  590. package/dist/cli/commands/state/index.js.map +0 -1
  591. package/dist/cli/commands/state/objective.js.map +0 -1
  592. package/dist/cli/commands/state/plan.js.map +0 -1
  593. package/dist/cli/commands/state/progress.js.map +0 -1
  594. package/dist/cli/commands/state/shared.js.map +0 -1
  595. package/dist/cli/commands/state/todo.js.map +0 -1
  596. package/dist/cli/commands/state.js +0 -1023
  597. package/dist/cli/commands/state.js.map +0 -1
  598. package/dist/cli/commands/upgrade.js.map +0 -1
  599. package/dist/cli/commands/validate.js.map +0 -1
  600. package/dist/cli/commands/verify.js.map +0 -1
  601. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  602. package/dist/cli/contracts/orientationState.js.map +0 -1
  603. package/dist/cli/dispatch/argvParser.js.map +0 -1
  604. package/dist/cli/dispatch/check.js.map +0 -1
  605. package/dist/cli/dispatch/commands.js.map +0 -1
  606. package/dist/cli/dispatch/index.js.map +0 -1
  607. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  608. package/dist/cli/dispatch/prime.js.map +0 -1
  609. package/dist/cli/dispatch/shared.js.map +0 -1
  610. package/dist/cli/dispatch/state.js.map +0 -1
  611. package/dist/cli/dispatch.js.map +0 -1
  612. package/dist/cli/errors.js.map +0 -1
  613. package/dist/cli/help.js.map +0 -1
  614. package/dist/cli/orientation/attention.js.map +0 -1
  615. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  616. package/dist/cli/orientation.js.map +0 -1
  617. package/dist/cli/prime-blob.js.map +0 -1
  618. package/dist/cli/startupCompletenessContract.js.map +0 -1
  619. package/dist/cli/stateQuery.js.map +0 -1
  620. package/dist/cli/structured.js.map +0 -1
  621. package/dist/cli/todoMarkdown.js.map +0 -1
  622. package/dist/cli/todoSeverity.js.map +0 -1
  623. package/dist/core/difflib.js.map +0 -1
  624. package/dist/core/envPaths.js.map +0 -1
  625. package/dist/core/git.js +0 -43
  626. package/dist/core/git.js.map +0 -1
  627. package/dist/core/jsonValue.js.map +0 -1
  628. package/dist/core/paths.js.map +0 -1
  629. package/dist/core/pyjson.js.map +0 -1
  630. package/dist/core/sourceRoot.js.map +0 -1
  631. package/dist/core/toml.js.map +0 -1
  632. package/dist/core/yaml.js.map +0 -1
  633. package/dist/eval/evalSkills.js.map +0 -1
  634. package/dist/eval/semanticEval.js.map +0 -1
  635. package/dist/eval/semanticFixtures.js.map +0 -1
  636. package/dist/hooks/common.js.map +0 -1
  637. package/dist/hooks/compaction/apply.js.map +0 -1
  638. package/dist/hooks/compaction/dryRun.js.map +0 -1
  639. package/dist/hooks/compaction/index.js.map +0 -1
  640. package/dist/hooks/compaction/parse.js.map +0 -1
  641. package/dist/hooks/compaction/retention.js.map +0 -1
  642. package/dist/hooks/compaction/status.js.map +0 -1
  643. package/dist/hooks/compaction/todoResolved.js +0 -137
  644. package/dist/hooks/compaction/todoResolved.js.map +0 -1
  645. package/dist/hooks/compaction/types.js.map +0 -1
  646. package/dist/hooks/compaction.js +0 -935
  647. package/dist/hooks/compaction.js.map +0 -1
  648. package/dist/hooks/cursorPreToolUse.js +0 -19
  649. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  650. package/dist/hooks/cursorSessionStart.js +0 -79
  651. package/dist/hooks/cursorSessionStart.js.map +0 -1
  652. package/dist/hooks/sessionStart.js +0 -216
  653. package/dist/hooks/sessionStart.js.map +0 -1
  654. package/dist/hooks/sessionStop.js +0 -206
  655. package/dist/hooks/sessionStop.js.map +0 -1
  656. package/dist/hooks/todoLayout.js +0 -177
  657. package/dist/hooks/todoLayout.js.map +0 -1
  658. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  659. package/dist/hooks/validateArtifact/index.js.map +0 -1
  660. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  661. package/dist/hooks/validateArtifact/runtime.js +0 -86
  662. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  663. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  664. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  665. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  666. package/dist/hooks/validateArtifact.js +0 -924
  667. package/dist/hooks/validateArtifact.js.map +0 -1
  668. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  669. package/dist/registries/artifactProtocolIds.js.map +0 -1
  670. package/dist/registries/artifactRegistry.js.map +0 -1
  671. package/dist/registries/capabilityContract.js.map +0 -1
  672. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  673. package/dist/registries/packageRegistry.js.map +0 -1
  674. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  675. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  676. package/dist/registries/triggerLoader.js.map +0 -1
  677. package/dist/release/releaseMetadata.js.map +0 -1
  678. package/dist/routing/index.js +0 -2
  679. package/dist/routing/index.js.map +0 -1
  680. package/dist/routing/routeEngine.js +0 -189
  681. package/dist/routing/routeEngine.js.map +0 -1
  682. package/dist/setup/codex/agents.js +0 -96
  683. package/dist/setup/codex/agents.js.map +0 -1
  684. package/dist/setup/codex/cli.js +0 -161
  685. package/dist/setup/codex/cli.js.map +0 -1
  686. package/dist/setup/codex/configToml.js +0 -639
  687. package/dist/setup/codex/configToml.js.map +0 -1
  688. package/dist/setup/codex/constants.js +0 -29
  689. package/dist/setup/codex/constants.js.map +0 -1
  690. package/dist/setup/codex/installRoot.js +0 -64
  691. package/dist/setup/codex/installRoot.js.map +0 -1
  692. package/dist/setup/codex/state.js +0 -270
  693. package/dist/setup/codex/state.js.map +0 -1
  694. package/dist/setup/codex.js +0 -12
  695. package/dist/setup/codex.js.map +0 -1
  696. package/dist/setup/copilot.js +0 -227
  697. package/dist/setup/copilot.js.map +0 -1
  698. package/dist/setup/cursor.js +0 -129
  699. package/dist/setup/cursor.js.map +0 -1
  700. package/dist/setup/cursorSurfaces.js +0 -67
  701. package/dist/setup/cursorSurfaces.js.map +0 -1
  702. package/dist/setup/doctor/core.js +0 -300
  703. package/dist/setup/doctor/core.js.map +0 -1
  704. package/dist/setup/doctor/diagnostics.js +0 -240
  705. package/dist/setup/doctor/diagnostics.js.map +0 -1
  706. package/dist/setup/doctor/opencode.js +0 -313
  707. package/dist/setup/doctor/opencode.js.map +0 -1
  708. package/dist/setup/doctor/report.js +0 -425
  709. package/dist/setup/doctor/report.js.map +0 -1
  710. package/dist/setup/doctor.js +0 -10
  711. package/dist/setup/doctor.js.map +0 -1
  712. package/dist/setup/opencode.js.map +0 -1
  713. package/dist/setup/smokeChecks.js.map +0 -1
  714. package/dist/state/installRoot.js.map +0 -1
  715. package/dist/state/progressCommit.js +0 -289
  716. package/dist/state/progressCommit.js.map +0 -1
  717. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  718. package/dist/state/startupAnalysis/contract.js.map +0 -1
  719. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  720. package/dist/state/startupAnalysis/index.js.map +0 -1
  721. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  722. package/dist/state/startupAnalysis/records.js.map +0 -1
  723. package/dist/state/startupAnalysis/report.js.map +0 -1
  724. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  725. package/dist/state/startupAnalysis.js.map +0 -1
  726. package/dist/upgrade/appContentRefresh.js.map +0 -1
  727. package/dist/upgrade/appModel.js.map +0 -1
  728. package/dist/upgrade/bundleEvidence.js.map +0 -1
  729. package/dist/upgrade/channels.js.map +0 -1
  730. package/dist/upgrade/cliProbe.js +0 -22
  731. package/dist/upgrade/cliProbe.js.map +0 -1
  732. package/dist/upgrade/coexistenceProbe.js +0 -107
  733. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  734. package/dist/upgrade/compatibility.js.map +0 -1
  735. package/dist/upgrade/doctor.js.map +0 -1
  736. package/dist/upgrade/doctorClassifier.js.map +0 -1
  737. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  738. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  739. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  740. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  741. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  742. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  743. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  744. package/dist/upgrade/projectIntegration.js.map +0 -1
  745. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  746. package/dist/upgrade/runtimeMigration.js.map +0 -1
  747. package/dist/upgrade/upgradeCommands.js.map +0 -1
  748. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  749. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  750. package/dist/upgrade/versionResolution.js.map +0 -1
  751. package/dist/validate/appHomeContract.js.map +0 -1
  752. package/dist/validate/capability.js.map +0 -1
  753. package/dist/validate/crossCapability.js.map +0 -1
  754. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  755. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  756. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  757. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  758. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  759. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  760. package/dist/validate/lifecycleAdapters.js +0 -62
  761. package/dist/validate/lifecycleAdapters.js.map +0 -1
  762. package/dist/validate/selfAudit.js.map +0 -1
  763. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -1,12 +1,38 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { resolveArtifactPath, } from "../registries/artifactRegistry.js";
4
- import { activeObjectiveName, artifactPath, loadRegistryForSchemas, } from "./appContext.js";
5
- import { asList, extractEntries, firstPresent, loadArtifact, progressEntriesForOutput, recentCycles, truncate, } from "./stateQuery.js";
6
- import { decisionContextEntry, latestHealthAudit, normalizeSeverity } from "./commands/state/index.js";
3
+ import { preCutoverCommand } from "./preCutoverCommand.js";
4
+ import { loadArtifactRecord, resolveArtifactPath, } from "../registries/artifactRegistry.js";
5
+ import { activeObjectiveName, artifactPath, resolveRegistryModelPath, } from "./appContext.js";
6
+ import { asList, extractEntries, firstPresent, loadArtifact, recentCycles, truncate, } from "./stateQuery.js";
7
+ import { normalizeSeverity } from "./commands/state/index.js";
7
8
  import { isResolvedTodoMarkdownStatus, parseTodoMarkdownListItem } from "./todoMarkdown.js";
8
- import { TODO_SEVERITY_ORDER, TODO_SEVERITY_ORDER_KEYS } from "./todoSeverity.js";
9
+ import { truncateCodePoints } from "../core/text.js";
10
+ import { TODO_SEVERITY_ORDER_KEYS } from "./todoSeverity.js";
11
+ import { evaluateTodoReadinessQueue, } from "./todoReadinessSelection.js";
9
12
  import { capabilityStartupComplete } from "./startupCompletenessContract.js";
13
+ import { discoverPlanArtifacts, planCatalogEntry, planDocumentParts } from "./planArtifacts.js";
14
+ import { planLifecycleState } from "./planLifecycleState.js";
15
+ import { firstActionablePlanTask } from "./capabilityContext/planState.js";
16
+ import { resolveSourceRoot } from "../core/sourceRoot.js";
17
+ import { entityListFamily } from "../state/entityRetrievalHelp.js";
18
+ import { scanYamlCollection } from "../state/startupProjection.js";
19
+ import { numberedArchiveContract } from "../state/archiveDiscovery.js";
20
+ const PLAN_FAMILY = entityListFamily("plans");
21
+ const PLAN_TASK_FAMILY = entityListFamily("plan_tasks");
22
+ const OBJECTIVE_FAMILY = entityListFamily("objective");
23
+ const PLAN_LIST_COMMAND = preCutoverCommand(`state ${PLAN_FAMILY.commandTokens.join(" ")} list --format json`);
24
+ function planTaskListCommand(planId) {
25
+ const selector = typeof planId === "string" && planId ? ` ${planId}` : "";
26
+ return preCutoverCommand(`state ${PLAN_TASK_FAMILY.commandTokens.join(" ")} list${selector} --limit 100 --format json`);
27
+ }
28
+ function planTaskGetCommand(taskId) {
29
+ const selector = typeof taskId === "string" && taskId ? taskId : "ID";
30
+ return preCutoverCommand(`state ${PLAN_TASK_FAMILY.commandTokens.join(" ")} get --id ${selector} --format json`);
31
+ }
32
+ function objectiveGetCommand(objectiveId) {
33
+ const selector = typeof objectiveId === "string" && objectiveId ? objectiveId : "ID";
34
+ return preCutoverCommand(`state ${OBJECTIVE_FAMILY.commandTokens.join(" ")} get --id ${selector} --format json`);
35
+ }
10
36
  /**
11
37
  * Orientation summaries layer for prime/status. Faithful port of the
12
38
  * scripts/agentera `_*_summary`, `_load_todo_items`, `_issue_counts`,
@@ -16,12 +42,6 @@ export const DONE_STATUSES = new Set(["complete", "completed", "closed", "done",
16
42
  export const BLOCKED_STATUSES = new Set(["blocked", "stuck"]);
17
43
  export const DECISION_ATTENTION_MAX_ENTRIES = 3;
18
44
  const TODO_SECTION_SEVERITIES = Object.fromEntries(TODO_SEVERITY_ORDER_KEYS.map((key) => [key, key]));
19
- const TODO_PLAN_SIGNALS = new Set([
20
- "acceptance", "artifact", "capability", "capability-context", "compatibility", "contract",
21
- "cross-capability", "docs", "metadata", "migration", "schema", "startup", "surface", "test", "validation",
22
- ]);
23
- const PROFILE_STALE_DAYS_ENV = "AGENTERA_PROFILE_MAX_AGE_DAYS";
24
- const DEFAULT_PROFILE_STALE_DAYS = 7;
25
45
  const AUDIT_STALE_DAYS_ENV = "AGENTERA_AUDIT_MAX_AGE_DAYS";
26
46
  const DEFAULT_AUDIT_STALE_DAYS = 30;
27
47
  const AUDIT_STALE_CYCLES_ENV = "AGENTERA_AUDIT_MAX_CYCLES";
@@ -68,8 +88,22 @@ export function loadNamedArtifact(schemas, name) {
68
88
  return null;
69
89
  return loadArtifact(artifactPath(info, name));
70
90
  }
71
- export function registryArtifactPath(artifactId, schemasDir, env = process.env) {
72
- const record = loadRegistryForSchemas(schemasDir).get(artifactId);
91
+ export function registryArtifactPath(artifactId, schemasDir, env = process.env, options = {}) {
92
+ // Targeted lookup: resolving a single identity (e.g. `profile` against a
93
+ // v2-shaped install) must not walk the full registry and warn about every
94
+ // required schema that happens to be absent from this install. Only the
95
+ // requested identity is inspected; model/schemas authority is shared with the
96
+ // full loader via `resolveRegistryModelPath`.
97
+ let record;
98
+ try {
99
+ record = loadArtifactRecord(artifactId, schemasDir, resolveRegistryModelPath(schemasDir));
100
+ }
101
+ catch (exc) {
102
+ if (options.warn !== false) {
103
+ process.stderr.write(`warning: failed to load artifact registry for schemas: ${exc.message}\n`);
104
+ }
105
+ record = undefined;
106
+ }
73
107
  if (record === undefined)
74
108
  throw new Error(`artifact registry does not define '${artifactId}'`);
75
109
  return resolveArtifactPath(record, process.cwd(), activeObjectiveName(), env);
@@ -86,34 +120,6 @@ export function parseProfileHeaderDates(text) {
86
120
  const validatedUtc = validatedDate ? dateFromIso(validatedDate) : null;
87
121
  return { generatedDate, validatedDate, generatedUtc, validatedUtc };
88
122
  }
89
- function profileRefreshAnchorUtc(text) {
90
- const { generatedUtc, validatedUtc } = parseProfileHeaderDates(text);
91
- if (generatedUtc === null && validatedUtc === null)
92
- return null;
93
- if (generatedUtc === null)
94
- return validatedUtc;
95
- if (validatedUtc === null)
96
- return generatedUtc;
97
- return Math.max(generatedUtc, validatedUtc);
98
- }
99
- export function checkProfileStaleness(profilePath, env = process.env) {
100
- if (!fs.existsSync(profilePath))
101
- return null;
102
- let text;
103
- try {
104
- text = fs.readFileSync(profilePath, "utf8");
105
- }
106
- catch (exc) {
107
- process.stderr.write(`warning: failed to read profile path ${profilePath}: ${exc.message}\n`);
108
- return null;
109
- }
110
- const anchor = profileRefreshAnchorUtc(text);
111
- if (anchor === null)
112
- return null;
113
- const staleDays = intEnv(env, PROFILE_STALE_DAYS_ENV, DEFAULT_PROFILE_STALE_DAYS);
114
- const since = daysSince(anchor);
115
- return [since >= staleDays, since, staleDays];
116
- }
117
123
  export function healthAuditDate(entry) {
118
124
  for (const key of ["date", "timestamp"]) {
119
125
  const value = entry[key];
@@ -136,8 +142,25 @@ function progressEntryDate(entry) {
136
142
  }
137
143
  return null;
138
144
  }
145
+ function scanSchemaArtifact(schemas, artifactId) {
146
+ const info = schemas[artifactId];
147
+ const contract = numberedArchiveContract(artifactId, resolveSourceRoot());
148
+ const currentPath = info ? artifactPath(info, artifactId) : path.join(process.cwd(), ".agentera", `${artifactId}.yaml`);
149
+ const primary = scanYamlCollection(currentPath, contract.entryCollection, artifactId, contract.entryNumberField);
150
+ const active = artifactId === "progress" && !primary.collection_found
151
+ ? scanYamlCollection(currentPath, "progress", artifactId, contract.entryNumberField)
152
+ : primary;
153
+ return {
154
+ active,
155
+ archive: scanYamlCollection(currentPath, "archive", artifactId, contract.entryNumberField),
156
+ };
157
+ }
139
158
  function cyclesSinceHealthAudit(schemas, auditDate) {
140
- const entries = extractEntries(loadNamedArtifact(schemas, "progress"));
159
+ const info = schemas.progress;
160
+ if (!info)
161
+ return null;
162
+ const scan = scanSchemaArtifact(schemas, "progress").active;
163
+ const entries = scan.entries.map((entry) => entry.fields);
141
164
  if (entries.length === 0)
142
165
  return null;
143
166
  let count = 0;
@@ -239,7 +262,7 @@ export function loadTodoItems(schemas) {
239
262
  export function issueCounts(todoItems) {
240
263
  const counts = { critical: 0, degraded: 0, normal: 0, annoying: 0 };
241
264
  for (const item of todoItems) {
242
- const severity = item.severity;
265
+ const severity = String(item.severity ?? "normal");
243
266
  if (severity === "critical")
244
267
  counts.critical += 1;
245
268
  else if (severity === "degraded" || severity === "warning")
@@ -251,89 +274,201 @@ export function issueCounts(todoItems) {
251
274
  }
252
275
  return counts;
253
276
  }
254
- function todoNeedsPlan(item) {
255
- const text = item.text.toLowerCase();
256
- let signalCount = 0;
257
- for (const signal of TODO_PLAN_SIGNALS)
258
- if (text.includes(signal))
259
- signalCount += 1;
260
- return signalCount >= 2 || (signalCount >= 1 && text.length > 180);
261
- }
262
277
  // ── per-artifact summaries ──────────────────────────────────────────
263
278
  export function planSummary(schemas) {
264
- const data = loadNamedArtifact(schemas, "plan");
265
- if (!data || typeof data !== "object" || Array.isArray(data)) {
266
- return {
279
+ const info = schemas.plan;
280
+ if (!info) {
281
+ const summary = {
267
282
  exists: false,
268
283
  active: false,
269
284
  tasks: [],
270
285
  status: "absent",
271
286
  title: "",
272
- absence_reason: "No active plan artifact is available from agentera plan.",
287
+ active_path: "",
288
+ absence_reason: "No active plan artifact is available from agentera state plan.",
273
289
  };
290
+ summary.lifecycle_state = planLifecycleState(summary);
291
+ return summary;
274
292
  }
275
- const d = data;
276
- const legacyEntries = asList(d.entries);
277
- let tasks;
278
- let status;
279
- let title;
280
- if (legacyEntries.length > 0) {
281
- tasks = legacyEntries;
282
- status = entryStatusPy(tasks[0], "");
283
- title = String(firstPresent(tasks[0], ["title", "name"], ""));
284
- }
285
- else {
286
- const header = d.header && typeof d.header === "object" && !Array.isArray(d.header) ? d.header : {};
287
- tasks = asList(d.tasks);
288
- status = String(firstPresent(header, ["status"], d.status ?? "") || "");
289
- title = String(firstPresent(header, ["title"], d.title ?? "") || "");
293
+ const discovery = discoverPlanArtifacts(artifactPath(info, "plan"));
294
+ const activeDiagnostics = discovery.diagnostics.filter((diagnostic) => diagnostic.path === discovery.activePath && diagnostic.category !== "legacy");
295
+ const archivedPlans = discovery.archived.map((artifact) => planCatalogEntry(artifact, discovery.activePath));
296
+ if (!discovery.active) {
297
+ const summary = {
298
+ exists: activeDiagnostics.length === 0 && archivedPlans.length > 0,
299
+ active: false,
300
+ tasks: [],
301
+ status: activeDiagnostics.length > 0 ? "invalid" : archivedPlans.length > 0 ? "archived" : "absent",
302
+ title: "",
303
+ active_path: discovery.activePath,
304
+ absence_reason: activeDiagnostics.length > 0
305
+ ? "Current plan artifact is invalid; see diagnostics."
306
+ : archivedPlans.length > 0
307
+ ? "No active plan artifact is available; archived plan state is history only."
308
+ : "No active plan artifact is available from agentera state plan.",
309
+ complete: 0,
310
+ total: 0,
311
+ complete_plan: false,
312
+ first_pending: null,
313
+ archived_plans: archivedPlans,
314
+ archive_count: archivedPlans.length,
315
+ invalid_archive_paths: discovery.invalidArchivePaths,
316
+ ...(activeDiagnostics.length > 0 ? { invalid_path: discovery.activePath } : {}),
317
+ diagnostics: discovery.diagnostics,
318
+ };
319
+ summary.lifecycle_state = planLifecycleState(summary);
320
+ return summary;
290
321
  }
322
+ const d = discovery.active.data;
323
+ const parts = planDocumentParts(d);
324
+ const tasks = parts.tasks;
325
+ const status = parts.legacyEntries ? entryStatusPy(tasks[0], "") : parts.status;
326
+ const title = parts.legacyEntries
327
+ ? String(firstPresent(tasks[0] ?? {}, ["title", "name"], ""))
328
+ : parts.title;
291
329
  const complete = tasks.filter((task) => DONE_STATUSES.has(entryStatusPy(task, ""))).length;
292
330
  const total = tasks.length;
293
331
  const completePlan = DONE_STATUSES.has(status.toLowerCase()) && complete === total;
294
- let firstPending = null;
295
- if (!completePlan) {
296
- for (const task of tasks) {
297
- const ts = entryStatusPy(task, "pending");
298
- if (DONE_STATUSES.has(ts) || BLOCKED_STATUSES.has(ts))
299
- continue;
300
- firstPending = task;
301
- break;
302
- }
303
- }
304
- return {
332
+ const firstPending = completePlan
333
+ ? null
334
+ : firstActionablePlanTask(tasks);
335
+ const summary = {
305
336
  exists: true,
306
337
  status,
307
338
  title,
339
+ active_path: discovery.activePath,
308
340
  constraints: d.constraints ?? null,
309
341
  scope: d.scope ?? null,
310
342
  design: d.design ?? null,
311
343
  tasks,
312
344
  complete,
313
345
  total,
314
- active: !completePlan,
346
+ active: true,
315
347
  complete_plan: completePlan,
316
348
  first_pending: firstPending,
349
+ archived_plans: archivedPlans,
350
+ archive_count: archivedPlans.length,
351
+ invalid_archive_paths: discovery.invalidArchivePaths,
352
+ diagnostics: discovery.diagnostics,
353
+ };
354
+ summary.lifecycle_state = planLifecycleState(summary);
355
+ return summary;
356
+ }
357
+ /** Startup keeps plan routing metadata, not the full active plan body. */
358
+ export function startupPlanSummary(plan) {
359
+ const tasks = asList(plan.tasks).filter((task) => task && typeof task === "object" && !Array.isArray(task));
360
+ const boundedTasks = tasks.slice(0, 10).map((task) => {
361
+ const item = {};
362
+ for (const key of ["id", "artifact", "name", "title", "status", "depends_on", "acceptance_summary", "evidence_summary", "blocked_reasons", "evaluation_state"]) {
363
+ if (!(key in task))
364
+ continue;
365
+ if (key === "acceptance_summary" || key === "evidence_summary") {
366
+ const summary = task[key];
367
+ item[key] = summary && typeof summary === "object" && !Array.isArray(summary)
368
+ ? { count: summary.count ?? asList(summary.items).length }
369
+ : null;
370
+ }
371
+ else if (key === "evaluation_state") {
372
+ const evaluation = task[key];
373
+ item[key] = evaluation && typeof evaluation === "object" && !Array.isArray(evaluation)
374
+ ? Object.fromEntries(Object.entries(evaluation).filter(([name]) => ["attempt_count", "failure_count", "last_verdict"].includes(name)))
375
+ : null;
376
+ }
377
+ else if (key === "depends_on") {
378
+ item[key] = asList(task[key]).slice(0, 20);
379
+ }
380
+ else if (key === "blocked_reasons") {
381
+ item[key] = asList(task[key]).slice(0, 3).map((reason) => truncateCodePoints(String(reason), 160));
382
+ }
383
+ else {
384
+ item[key] = typeof task[key] === "string" ? truncateCodePoints(task[key], 256) : task[key];
385
+ }
386
+ }
387
+ return item;
388
+ });
389
+ const archived = asList(plan.archived_plans).slice(0, 10);
390
+ const diagnostics = asList(plan.diagnostics).slice(0, 10);
391
+ const totalTasks = Number(plan.total ?? tasks.length);
392
+ const taskOmission = plan.task_omission && typeof plan.task_omission === "object" && !Array.isArray(plan.task_omission) ? plan.task_omission : {};
393
+ const finalTaskOmission = {
394
+ ...taskOmission,
395
+ omitted: totalTasks > boundedTasks.length,
396
+ total: totalTasks,
397
+ returned_count: boundedTasks.length,
398
+ omitted_count: Math.max(0, totalTasks - boundedTasks.length),
399
+ omission_reason: totalTasks > boundedTasks.length ? taskOmission.omission_reason ?? "startup_detail_capacity" : "none",
400
+ retrieval: taskOmission.retrieval ?? { list: planTaskListCommand(plan.id), restart: planTaskListCommand(plan.id), get: PLAN_TASK_FAMILY.get },
401
+ };
402
+ const pending = plan.first_pending && typeof plan.first_pending === "object" && !Array.isArray(plan.first_pending)
403
+ ? plan.first_pending
404
+ : null;
405
+ const pendingDependencies = pending ? asList(pending.depends_on).slice(0, 20).map(String) : [];
406
+ const pendingAcceptance = pending
407
+ ? asList(pending.acceptance).slice(0, 10).map((item) => truncateCodePoints(String(item), 200, "…"))
408
+ : [];
409
+ const firstPending = pending ? {
410
+ id: pending.id ?? null,
411
+ artifact: pending.artifact ?? "plan",
412
+ name: truncateCodePoints(String(pending.name ?? pending.title ?? ""), 256, "…"),
413
+ status: pending.status ?? "pending",
414
+ depends_on: pendingDependencies,
415
+ dependency_count: asList(pending.depends_on).length,
416
+ omitted_dependency_count: Math.max(0, asList(pending.depends_on).length - pendingDependencies.length),
417
+ acceptance: pendingAcceptance,
418
+ acceptance_count: asList(pending.acceptance).length,
419
+ omitted_acceptance_count: Math.max(0, asList(pending.acceptance).length - pendingAcceptance.length),
420
+ retrieval: { get: planTaskGetCommand(pending.id) },
421
+ } : null;
422
+ return {
423
+ id: plan.id ?? null,
424
+ artifact: plan.artifact ?? "plan",
425
+ exists: Boolean(plan.exists),
426
+ active: Boolean(plan.active),
427
+ status: plan.status,
428
+ title: plan.title ?? "",
429
+ complete: plan.complete ?? 0,
430
+ superseded: plan.superseded ?? 0,
431
+ total: totalTasks,
432
+ task_status_counts: plan.task_status_counts ?? {},
433
+ task_omission: finalTaskOmission,
434
+ complete_plan: Boolean(plan.complete_plan),
435
+ first_pending: firstPending,
436
+ tasks: boundedTasks,
437
+ task_count: totalTasks,
438
+ omitted_task_count: Math.max(0, totalTasks - boundedTasks.length),
439
+ archived_plans: archived,
440
+ archive_count: plan.archive_count ?? archived.length,
441
+ omitted_archive_count: Math.max(0, Number(plan.archive_count ?? archived.length) - archived.length),
442
+ invalid_archive_paths: (plan.invalid_archive_paths ?? []).slice(0, 10),
443
+ diagnostics,
444
+ omitted_diagnostic_count: Math.max(0, (plan.diagnostics ?? []).length - diagnostics.length),
445
+ source_contract: {
446
+ detail_availability: totalTasks > boundedTasks.length ? "summary" : "full",
447
+ retrieval: PLAN_LIST_COMMAND,
448
+ raw_archive_records: false,
449
+ },
450
+ lifecycle_state: plan.lifecycle_state ?? null,
317
451
  };
318
452
  }
319
453
  export function docsSummary(schemas, startupInput = {}) {
320
- const data = loadNamedArtifact(schemas, "docs");
321
- if (!data || typeof data !== "object" || Array.isArray(data)) {
322
- return { exists: false, status: "absent", absence_reason: "No docs mapping artifact is available from agentera docs." };
454
+ const info = schemas.docs;
455
+ if (!info) {
456
+ return { exists: false, status: "absent", absence_reason: "No docs mapping artifact is available from agentera state docs." };
323
457
  }
324
- const d = data;
325
- const mapping = asList(d.mapping);
326
- const index = asList(d.index);
327
- const coverage = d.coverage && typeof d.coverage === "object" && !Array.isArray(d.coverage) ? d.coverage : {};
328
- const conventions = d.conventions && typeof d.conventions === "object" && !Array.isArray(d.conventions) ? d.conventions : {};
458
+ const docsPath = artifactPath(info, "docs");
459
+ const mapping = scanYamlCollection(docsPath, "mapping", "docs", "artifact");
460
+ const index = scanYamlCollection(docsPath, "index", "docs", "artifact");
461
+ const exists = fs.existsSync(docsPath);
462
+ const header = exists ? truncateCodePoints(fs.readFileSync(docsPath, "utf8"), 4096) : "";
463
+ const lastAudit = /^last_audit:\s*(.+)$/m.exec(header)?.[1]?.trim().replace(/^['"]|['"]$/g, "") ?? null;
329
464
  return {
330
- exists: true,
465
+ exists,
331
466
  status: "available",
332
- last_audit: d.last_audit ?? null,
333
- conventions,
334
- mapping,
335
- mapping_entries: mapping.length,
336
- coverage,
467
+ last_audit: lastAudit,
468
+ conventions: {},
469
+ mapping: mapping.entries.slice(0, 10).map((entry) => entry.fields),
470
+ mapping_entries: mapping.entries.length,
471
+ coverage: {},
337
472
  source_contract: {
338
473
  capability_startup_complete: capabilityStartupComplete(startupInput),
339
474
  raw_artifact_reads_required: false,
@@ -344,30 +479,41 @@ export function docsSummary(schemas, startupInput = {}) {
344
479
  "Document closeout context metadata for docs/TODO/changelog/progress synchronization",
345
480
  ],
346
481
  },
347
- indexed_documents: index.length,
482
+ indexed_documents: index.entries.length,
348
483
  };
349
484
  }
350
485
  export function progressSummary(schemas) {
351
- const data = loadNamedArtifact(schemas, "progress");
352
- const entries = extractEntries(data);
486
+ const info = schemas.progress;
487
+ if (!info)
488
+ return { exists: false, status: "absent", absence_reason: "No progress cycles are available from agentera progress." };
489
+ const scan = scanSchemaArtifact(schemas, "progress").active;
490
+ const entries = scan.entries.map((entry) => entry.fields);
353
491
  if (entries.length === 0) {
354
492
  return { exists: false, status: "absent", absence_reason: "No progress cycles are available from agentera progress." };
355
493
  }
356
- const latest = progressEntriesForOutput(recentCycles(entries, 1))[0];
494
+ const latest = recentCycles(entries, 1)[0] ?? {};
495
+ const latestCycle = {};
496
+ for (const key of ["number", "timestamp", "type", "phase", "what", "status"]) {
497
+ if (key in latest)
498
+ latestCycle[key] = latest[key];
499
+ }
357
500
  return {
358
501
  exists: true,
359
502
  status: "available",
360
- latest,
361
- latest_verification: latest.verified ?? null,
503
+ latest: latestCycle,
504
+ latest_verification: latest.verified_present ? { present: true } : null,
362
505
  cycle_count: entries.length,
363
506
  };
364
507
  }
365
508
  export function healthSummary(schemas, env = process.env) {
366
- const data = loadNamedArtifact(schemas, "health");
367
- const entries = extractEntries(data);
509
+ const info = schemas.health;
510
+ if (!info)
511
+ return { exists: false };
512
+ const scan = scanSchemaArtifact(schemas, "health").active;
513
+ const entries = scan.entries.map((entry) => entry.fields);
368
514
  if (entries.length === 0)
369
515
  return { exists: false };
370
- const latest = latestHealthAudit(entries);
516
+ const latest = [...entries].sort((left, right) => Number(right.number ?? 0) - Number(left.number ?? 0))[0] ?? null;
371
517
  if (!latest)
372
518
  return { exists: false };
373
519
  const grades = latest.grades && typeof latest.grades === "object" && !Array.isArray(latest.grades) ? latest.grades : {};
@@ -382,11 +528,11 @@ export function healthSummary(schemas, env = process.env) {
382
528
  const trajectory = String(latest.trajectory ?? "");
383
529
  const auditDate = healthAuditDate(latest);
384
530
  const dateStr = auditDate !== null ? isoFromUtc(auditDate) : null;
385
- const latestNumber = typeof latest.number === "string" || typeof latest.number === "number" ? latest.number : "?";
386
531
  const latestTimestamp = typeof latest.timestamp === "string" ? latest.timestamp : null;
387
532
  const summary = {
388
533
  exists: true,
389
- number: latestNumber,
534
+ id: latest.id ?? null,
535
+ artifact: "health",
390
536
  date: dateStr,
391
537
  timestamp: dateStr ?? latestTimestamp,
392
538
  trajectory,
@@ -495,9 +641,7 @@ export function statePresence(plan, docs, progress, health, objective) {
495
641
  }
496
642
  // ── decisions follow-up + attention ─────────────────────────────────
497
643
  export function decisionFollowUp(schemas) {
498
- const data = loadNamedArtifact(schemas, "decisions");
499
- for (const rawEntry of extractEntries(data)) {
500
- const entry = decisionContextEntry(rawEntry);
644
+ for (const entry of startupDecisionEntries(schemas)) {
501
645
  const satisfaction = entry.satisfaction;
502
646
  if (!satisfaction || typeof satisfaction !== "object" || Array.isArray(satisfaction) || !satisfaction.review_needed)
503
647
  continue;
@@ -507,6 +651,15 @@ export function decisionFollowUp(schemas) {
507
651
  }
508
652
  return null;
509
653
  }
654
+ export function startupDecisionEntries(schemas) {
655
+ if (!schemas.decisions)
656
+ return [];
657
+ const scans = scanSchemaArtifact(schemas, "decisions");
658
+ return [...scans.active.entries, ...scans.archive.entries].map((candidate) => ({
659
+ ...candidate.fields,
660
+ ...(candidate.identity.number !== null && candidate.fields.number === undefined ? { number: candidate.identity.number } : {}),
661
+ }));
662
+ }
510
663
  function decisionAttentionState(satisfaction) {
511
664
  const state = satisfaction.state;
512
665
  if (state === null || state === undefined || state === "")
@@ -520,18 +673,17 @@ function decisionAttentionState(satisfaction) {
520
673
  return "unrecognized";
521
674
  }
522
675
  export function decisionReviewAttention(schemas) {
523
- const data = loadNamedArtifact(schemas, "decisions");
524
676
  const reviewEntries = [];
525
677
  const stateCounts = {};
526
- for (const rawEntry of extractEntries(data)) {
527
- const entry = decisionContextEntry(rawEntry);
678
+ for (const entry of startupDecisionEntries(schemas)) {
528
679
  const satisfaction = entry.satisfaction;
529
680
  if (!satisfaction || typeof satisfaction !== "object" || Array.isArray(satisfaction) || !satisfaction.review_needed)
530
681
  continue;
531
682
  const state = decisionAttentionState(satisfaction);
532
683
  stateCounts[state] = (stateCounts[state] ?? 0) + 1;
533
684
  reviewEntries.push({
534
- number: typeof entry.number === "string" || typeof entry.number === "number" ? entry.number : "?",
685
+ id: String(entry.stable_id ?? entry.number ?? "legacy-unaddressable"),
686
+ artifact: "decisions",
535
687
  title: truncate(firstPresent(entry, ["question", "choice", "summary"], "decision review"), 80),
536
688
  state,
537
689
  source: satisfaction.source ?? null,
@@ -544,7 +696,7 @@ export function decisionReviewAttention(schemas) {
544
696
  .sort()
545
697
  .map((name) => `${name}=${stateCounts[name]}`)
546
698
  .join(", ");
547
- const refs = boundedEntries.map((entry) => `Decision ${entry.number}: ${entry.title}`).join("; ");
699
+ const refs = boundedEntries.map((entry) => `Decision ${entry.id}: ${entry.title}`).join("; ");
548
700
  const more = reviewEntries.length - boundedEntries.length;
549
701
  const suffix = more > 0 ? `; +${more} more` : "";
550
702
  return {
@@ -560,8 +712,28 @@ export function decisionReviewAttention(schemas) {
560
712
  export function formatNextAction(action) {
561
713
  if (!action)
562
714
  return "object=VISION refresh | capability=vision | reason=no executable follow-up | phase=envision";
563
- const phase = "phase" in action && action.phase ? ` | phase=${action.phase}` : "";
564
- return `object=${truncate(action.object)} | capability=${action.capability} | reason=${action.reason}${phase}`;
715
+ const fields = [
716
+ `object=${truncate(action.object)}`,
717
+ `capability=${action.capability}`,
718
+ `reason=${action.reason}`,
719
+ ];
720
+ if ("phase" in action && action.phase)
721
+ fields.push(`phase=${action.phase}`);
722
+ if ("id" in action && action.id)
723
+ fields.push(`id=${action.id}`);
724
+ if ("artifact" in action && action.artifact)
725
+ fields.push(`artifact=${action.artifact}`);
726
+ if ("outcome" in action && action.outcome)
727
+ fields.push(`outcome=${action.outcome}`);
728
+ if ("eligible" in action && typeof action.eligible === "boolean")
729
+ fields.push(`eligible=${String(action.eligible)}`);
730
+ if ("retrieval" in action
731
+ && action.retrieval
732
+ && typeof action.retrieval === "object"
733
+ && "exact" in action.retrieval
734
+ && typeof action.retrieval.exact === "string")
735
+ fields.push(`retrieval=${action.retrieval.exact}`);
736
+ return fields.join(" | ");
565
737
  }
566
738
  /**
567
739
  * Evolved state-readiness hint (Decision 76). Evaluates every cascade branch
@@ -569,17 +741,25 @@ export function formatNextAction(action) {
569
741
  * envision → PH5 audit). Position 1 (`recommended`) is the branch that would
570
742
  * have won under the legacy early-return cascade.
571
743
  */
572
- export function selectStatusReadiness(plan, health, objective, todoItems, decision, savedContext) {
744
+ export function selectStatusReadiness(plan, health, objective, todoItems, decision, savedContext, completeTodoReadiness) {
573
745
  const candidates = [];
574
746
  const pending = plan.first_pending;
575
747
  if (pending && typeof pending === "object" && !Array.isArray(pending)) {
576
748
  const number = pending.number ?? "?";
577
749
  const title = firstPresent(pending, ["name", "title"], "pending task");
750
+ const id = typeof pending.id === "string" ? pending.id : undefined;
578
751
  candidates.push({
579
752
  object: `PLAN Task ${number}: ${title}`,
580
753
  capability: "orchestrate",
581
754
  reason: "first pending plan task",
582
755
  phase: "build",
756
+ ...(id ? {
757
+ id,
758
+ artifact: typeof pending.artifact === "string" ? pending.artifact : "plan",
759
+ outcome: String(pending.status ?? "pending"),
760
+ eligible: true,
761
+ retrieval: { exact: planTaskGetCommand(id) },
762
+ } : {}),
583
763
  });
584
764
  }
585
765
  if (health.degrading) {
@@ -593,25 +773,63 @@ export function selectStatusReadiness(plan, health, objective, todoItems, decisi
593
773
  });
594
774
  }
595
775
  if (objective.active) {
776
+ const id = typeof objective.id === "string" ? objective.id : undefined;
596
777
  candidates.push({
597
778
  object: `OBJECTIVE: ${objective.metric || objective.title}`,
598
779
  capability: "optimize",
599
780
  reason: "active non-closed objective",
600
781
  phase: "build",
782
+ ...(id ? {
783
+ id,
784
+ artifact: typeof objective.artifact === "string" ? objective.artifact : "objective",
785
+ outcome: objective.status ?? "active",
786
+ eligible: true,
787
+ retrieval: { exact: objectiveGetCommand(id) },
788
+ } : {}),
601
789
  });
602
790
  }
603
- if (todoItems.length > 0) {
604
- const item = [...todoItems].sort((a, b) => (TODO_SEVERITY_ORDER[a.severity] ?? 2) - (TODO_SEVERITY_ORDER[b.severity] ?? 2))[0];
605
- if (todoNeedsPlan(item)) {
606
- candidates.push({ object: `TODO: ${item.text}`, capability: "plan", reason: "complex TODO needs planning", phase: "plan" });
607
- }
608
- else {
609
- candidates.push({ object: `TODO: ${item.text}`, capability: "build", reason: "highest-priority open TODO", phase: "build" });
791
+ const todoReadiness = completeTodoReadiness ?? evaluateTodoReadinessQueue(todoItems.map((item) => ({
792
+ id: String(item.id ?? ""),
793
+ artifact: String(item.artifact ?? "todo"),
794
+ record: { ...item, description: item.text },
795
+ })));
796
+ if (todoReadiness.selected) {
797
+ const item = todoReadiness.selected;
798
+ candidates.push({
799
+ object: `TODO ${item.id}: ${truncate(item.description, 120)}`,
800
+ capability: item.capability,
801
+ reason: item.reason,
802
+ phase: item.phase,
803
+ id: item.id,
804
+ artifact: item.artifact,
805
+ outcome: item.result,
806
+ eligible: item.eligible,
807
+ retrieval: item.retrieval,
808
+ });
809
+ if (todoReadiness.triage.count > 0) {
810
+ candidates.push({
811
+ object: `TODO triage: ${todoReadiness.triage.count} item(s)`,
812
+ capability: "status",
813
+ reason: todoReadiness.triage.recovery,
814
+ phase: "audit",
815
+ outcome: "needs-triage",
816
+ eligible: false,
817
+ });
610
818
  }
611
819
  }
820
+ else if (todoReadiness.abstainRecovery) {
821
+ candidates.push({
822
+ object: "TODO queue: no actionable item",
823
+ capability: "status",
824
+ reason: todoReadiness.abstainRecovery,
825
+ phase: "audit",
826
+ outcome: "needs-triage",
827
+ eligible: false,
828
+ });
829
+ }
612
830
  if (health.stale && !health.degrading) {
613
831
  candidates.push({
614
- object: `HEALTH: Audit ${health.number ?? "?"} stale`,
832
+ object: `HEALTH: audit ${String(health.id ?? "unknown")} stale`,
615
833
  capability: "audit",
616
834
  reason: "stale health audit",
617
835
  phase: "audit",
@@ -642,8 +860,7 @@ export function selectStatusReadiness(plan, health, objective, todoItems, decisi
642
860
  }
643
861
  /** Legacy single-entry projection of {@link selectStatusReadiness}: the
644
862
  * top-priority candidate as `{object, capability, reason}` (no `phase`). */
645
- export function selectStatusNextAction(plan, health, objective, todoItems, decision, savedContext) {
646
- const { recommended } = selectStatusReadiness(plan, health, objective, todoItems, decision, savedContext);
863
+ export function selectStatusNextAction(plan, health, objective, todoItems, decision, savedContext, completeTodoReadiness) {
864
+ const { recommended } = selectStatusReadiness(plan, health, objective, todoItems, decision, savedContext, completeTodoReadiness);
647
865
  return { object: recommended.object, capability: recommended.capability, reason: recommended.reason };
648
866
  }
649
- //# sourceMappingURL=orientation.js.map