agentera 3.0.0-dev.4 → 3.0.0-dev.46

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (585) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +108 -22
  3. package/bundle/.agentera-npx-bundle.json +1 -1
  4. package/bundle/CHANGELOG.md +1351 -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 +236 -0
  9. package/bundle/extract-corpus-parity.json +21 -0
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +437 -0
  12. package/bundle/references/adapters/package-registry.yaml +434 -189
  13. package/bundle/references/adapters/package-surface-characterization.md +66 -35
  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 +518 -0
  19. package/bundle/references/analysis/verification-policy.yaml +191 -0
  20. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  21. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  22. package/bundle/references/artifacts/state-storage-authority.yaml +2982 -0
  23. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  24. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  25. package/bundle/references/cli/capability-instruction-contract.yaml +97 -59
  26. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  27. package/bundle/references/cli/routing-model.md +155 -0
  28. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  29. package/bundle/references/cli/update-channels.yaml +35 -2
  30. package/bundle/references/cli/vocabulary-index.yaml +23 -20
  31. package/bundle/references/cli/vocabulary.md +337 -366
  32. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  33. package/bundle/registry.json +14 -14
  34. package/bundle/skills/agentera/SKILL.md +218 -408
  35. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  36. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  37. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  38. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  39. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +102 -0
  40. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
  41. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  42. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -0
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  44. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  45. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  46. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  47. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  48. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  52. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  53. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  55. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  56. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  57. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  58. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  59. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  62. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  63. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  64. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  65. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  66. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  67. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  68. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  69. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  71. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  72. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  73. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  74. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  75. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  77. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  79. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +200 -37
  81. package/bundle/skills/agentera/protocol.yaml +31 -31
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +40 -22
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +421 -33
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +143 -53
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +345 -31
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  95. package/dist/analytics/extractCorpus/cli.js +190 -0
  96. package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
  97. package/dist/analytics/extractCorpus/core.js +392 -0
  98. package/dist/analytics/extractCorpus/corpus.js +167 -0
  99. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  100. package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
  101. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  102. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  103. package/dist/analytics/extractCorpus/filesystemSources.js +118 -0
  104. package/dist/analytics/extractCorpus/index.js +14 -0
  105. package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
  106. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  107. package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
  108. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  109. package/dist/analytics/extractCorpus.js +2 -1791
  110. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  111. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  112. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  113. package/dist/analytics/personalGlossaryProfile.js +219 -0
  114. package/dist/analytics/profileSignals.js +211 -0
  115. package/dist/analytics/usageStats.js +169 -42
  116. package/dist/audit/terminologyDrift.js +281 -0
  117. package/dist/bin/agentera.js +3 -2
  118. package/dist/capabilities/audit/instructions.js +16 -0
  119. package/dist/capabilities/build/instructions.js +56 -0
  120. package/dist/capabilities/design/instructions.js +4 -0
  121. package/dist/capabilities/discuss/instructions.js +29 -0
  122. package/dist/capabilities/document/instructions.js +11 -0
  123. package/dist/capabilities/index.js +40 -0
  124. package/dist/capabilities/optimize/instructions.js +14 -0
  125. package/dist/capabilities/orchestrate/instructions.js +40 -0
  126. package/dist/capabilities/plan/instructions.js +32 -0
  127. package/dist/capabilities/profile/instructions.js +70 -0
  128. package/dist/capabilities/research/instructions.js +5 -0
  129. package/dist/capabilities/status/instructions.js +11 -0
  130. package/dist/capabilities/status/startupInstructions.js +34 -0
  131. package/dist/capabilities/vision/instructions.js +4 -0
  132. package/dist/cli/appContext.js +30 -24
  133. package/dist/cli/argvalidate.js +0 -1
  134. package/dist/cli/capabilityContext/benchmark.js +565 -0
  135. package/dist/cli/capabilityContext/bespoke.js +44 -0
  136. package/dist/cli/capabilityContext/build.js +242 -0
  137. package/dist/cli/capabilityContext/closeout.js +233 -0
  138. package/dist/cli/capabilityContext/contract.js +179 -0
  139. package/dist/cli/capabilityContext/evidence.js +463 -0
  140. package/dist/cli/capabilityContext/index.js +3 -0
  141. package/dist/cli/capabilityContext/orchestration.js +131 -0
  142. package/dist/cli/capabilityContext/planState.js +260 -0
  143. package/dist/cli/capabilityContext/progress.js +142 -0
  144. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  145. package/dist/cli/capabilityContext/shared.js +83 -0
  146. package/dist/cli/capabilityContext/slim.js +152 -0
  147. package/dist/cli/capabilityContext/startup.js +150 -0
  148. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  149. package/dist/cli/capabilityContext/types.js +56 -0
  150. package/dist/cli/capabilityContext.js +1 -2421
  151. package/dist/cli/commands/appHome.js +22 -0
  152. package/dist/cli/commands/capability.js +5 -12
  153. package/dist/cli/commands/compact.js +41 -13
  154. package/dist/cli/commands/doctor.js +127 -97
  155. package/dist/cli/commands/durability.js +81 -0
  156. package/dist/cli/commands/glossaryAdvice.js +138 -0
  157. package/dist/cli/commands/lint.js +26 -44
  158. package/dist/cli/commands/personalGlossary.js +176 -0
  159. package/dist/cli/commands/prime/briefOrientation.js +747 -0
  160. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  161. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  162. package/dist/cli/commands/prime/collectEntityOrientation.js +311 -0
  163. package/dist/cli/commands/prime/collectOrientationState.js +212 -0
  164. package/dist/cli/commands/prime/orientationOutput.js +397 -0
  165. package/dist/cli/commands/prime/types.js +1 -0
  166. package/dist/cli/commands/prime/v1Migration.js +38 -0
  167. package/dist/cli/commands/prime.js +80 -558
  168. package/dist/cli/commands/profileGrounding.js +55 -0
  169. package/dist/cli/commands/query.js +78 -53
  170. package/dist/cli/commands/report.js +96 -25
  171. package/dist/cli/commands/route.js +142 -0
  172. package/dist/cli/commands/schema.js +266 -143
  173. package/dist/cli/commands/state/decisions.js +387 -0
  174. package/dist/cli/commands/state/docs.js +70 -0
  175. package/dist/cli/commands/state/experimentRecords.js +151 -0
  176. package/dist/cli/commands/state/experiments.js +14 -0
  177. package/dist/cli/commands/state/get.js +129 -0
  178. package/dist/cli/commands/state/health.js +14 -0
  179. package/dist/cli/commands/state/index.js +16 -0
  180. package/dist/cli/commands/state/list.js +194 -0
  181. package/dist/cli/commands/state/objective.js +25 -0
  182. package/dist/cli/commands/state/plan.js +14 -0
  183. package/dist/cli/commands/state/planTasks.js +154 -0
  184. package/dist/cli/commands/state/plans.js +154 -0
  185. package/dist/cli/commands/state/progress.js +13 -0
  186. package/dist/cli/commands/state/shared.js +14 -0
  187. package/dist/cli/commands/state/todo.js +42 -0
  188. package/dist/cli/commands/state/write.js +434 -0
  189. package/dist/cli/commands/upgrade.js +146 -5
  190. package/dist/cli/commands/upgradeVerify.js +118 -0
  191. package/dist/cli/commands/validate.js +272 -213
  192. package/dist/cli/commands/verify.js +24 -9
  193. package/dist/cli/contracts/bundleStatus.js +1 -0
  194. package/dist/cli/contracts/orientationState.js +1 -0
  195. package/dist/cli/dispatch/argvParser.js +32 -0
  196. package/dist/cli/dispatch/check.js +372 -0
  197. package/dist/cli/dispatch/commands.js +27 -0
  198. package/dist/cli/dispatch/index.js +207 -0
  199. package/dist/cli/dispatch/lifecycle.js +652 -0
  200. package/dist/cli/dispatch/prime.js +139 -0
  201. package/dist/cli/dispatch/projections.js +17 -0
  202. package/dist/cli/dispatch/shared.js +63 -0
  203. package/dist/cli/dispatch/state.js +140 -0
  204. package/dist/cli/dispatch.js +1 -996
  205. package/dist/cli/errors.js +52 -0
  206. package/dist/cli/help.js +390 -43
  207. package/dist/cli/migrationRequired.js +87 -0
  208. package/dist/cli/orientation/attention.js +59 -0
  209. package/dist/cli/orientation/corpusCoverage.js +102 -0
  210. package/dist/cli/orientation.js +444 -173
  211. package/dist/cli/planArtifacts.js +350 -0
  212. package/dist/cli/planEvidence.js +157 -0
  213. package/dist/cli/planLifecycleState.js +36 -0
  214. package/dist/cli/planTaskIndex.js +11 -0
  215. package/dist/cli/preCutoverCommand.js +32 -0
  216. package/dist/cli/prime-blob.js +71 -3
  217. package/dist/cli/profileAcquisition.js +167 -0
  218. package/dist/cli/startupCompletenessContract.js +59 -0
  219. package/dist/cli/stateQuery.js +63 -14
  220. package/dist/cli/structured.js +0 -1
  221. package/dist/cli/todoMarkdown.js +46 -0
  222. package/dist/cli/todoReadinessSelection.js +192 -0
  223. package/dist/cli/todoSeverity.js +18 -0
  224. package/dist/core/atomicWriter.js +20 -0
  225. package/dist/core/developmentChannel.js +1 -0
  226. package/dist/core/developmentInvocation.js +374 -0
  227. package/dist/core/difflib.js +0 -1
  228. package/dist/core/envPaths.js +20 -0
  229. package/dist/core/jsonValue.js +5 -0
  230. package/dist/core/paths.js +0 -1
  231. package/dist/core/pyjson.js +67 -3
  232. package/dist/core/shell.js +4 -0
  233. package/dist/core/skillIdentity.js +23 -0
  234. package/dist/core/sourceRoot.js +9 -12
  235. package/dist/core/text.js +10 -0
  236. package/dist/core/toml.js +0 -1
  237. package/dist/core/yaml.js +8 -1
  238. package/dist/eval/evalSkills.js +30 -26
  239. package/dist/eval/hybridRouteEvaluation.js +155 -0
  240. package/dist/eval/semanticEval.js +43 -20
  241. package/dist/eval/semanticFixtures.js +16 -5
  242. package/dist/hooks/common.js +11 -81
  243. package/dist/hooks/compaction/apply.js +446 -0
  244. package/dist/hooks/compaction/dryRun.js +184 -0
  245. package/dist/hooks/compaction/index.js +22 -0
  246. package/dist/hooks/compaction/parse.js +325 -0
  247. package/dist/hooks/compaction/retention.js +202 -0
  248. package/dist/hooks/compaction/status.js +360 -0
  249. package/dist/hooks/compaction/types.js +5 -0
  250. package/dist/hooks/validateArtifact/agentFacing.js +9 -0
  251. package/dist/hooks/validateArtifact/index.js +92 -0
  252. package/dist/hooks/validateArtifact/markdown.js +145 -0
  253. package/dist/hooks/validateArtifact/schema.js +546 -0
  254. package/dist/hooks/validateArtifact/traversal.js +107 -0
  255. package/dist/hooks/validateArtifact/violations.js +107 -0
  256. package/dist/migrate/v2HandoffManifest.js +452 -0
  257. package/dist/registries/activationContract.js +2 -0
  258. package/dist/registries/activationTuples.js +106 -0
  259. package/dist/registries/artifactProtocolIds.js +78 -0
  260. package/dist/registries/artifactRegistry.js +224 -63
  261. package/dist/registries/artifactSchemaProjection.js +45 -0
  262. package/dist/registries/capabilityContract.js +141 -13
  263. package/dist/registries/evaluatorHandoffContract.js +170 -0
  264. package/dist/registries/evidenceTierContract.js +371 -0
  265. package/dist/registries/glossaryAdviceContract.js +79 -0
  266. package/dist/registries/glossaryCaveatContract.js +67 -0
  267. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  268. package/dist/registries/glossaryEntryContract.js +757 -0
  269. package/dist/registries/glossaryTermIdentity.js +17 -0
  270. package/dist/registries/glossaryTermOccurrence.js +20 -0
  271. package/dist/registries/hybridRoute.js +274 -0
  272. package/dist/registries/hybridRouteReceipt.js +221 -0
  273. package/dist/registries/packagePublication.js +229 -0
  274. package/dist/registries/packageRegistry.js +187 -211
  275. package/dist/registries/todoReadinessContract.js +448 -0
  276. package/dist/registries/triggerLoader.js +174 -0
  277. package/dist/registries/verbosityBudgetContract.js +205 -0
  278. package/dist/release/releaseMetadata.js +385 -0
  279. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  280. package/dist/runtime/lifecycleAdapters.js +777 -0
  281. package/dist/runtime/lifecycleAuthority.js +453 -0
  282. package/dist/runtime/lifecycleOperationContract.js +123 -0
  283. package/dist/runtime/lifecycleOperations.js +634 -0
  284. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  285. package/dist/runtime/lifecyclePublication.js +415 -0
  286. package/dist/runtime/lifecycleSnapshot.js +438 -0
  287. package/dist/runtime/nativeResourceCleanup.js +502 -0
  288. package/dist/setup/opencode.js +20 -0
  289. package/dist/setup/opencodeConstants.js +1 -0
  290. package/dist/setup/sharedSkill.js +45 -0
  291. package/dist/setup/smokeChecks.js +21 -82
  292. package/dist/state/archiveDiscovery.js +580 -0
  293. package/dist/state/archivePublication.js +225 -0
  294. package/dist/state/archiveRecovery.js +237 -0
  295. package/dist/state/archiveReplay.js +53 -0
  296. package/dist/state/canonicalMigrationRecord.js +36 -0
  297. package/dist/state/changelog.js +221 -0
  298. package/dist/state/decisionEntities.js +367 -0
  299. package/dist/state/decisionLegacyValidation.js +215 -0
  300. package/dist/state/decisionMigrationProvenance.js +199 -0
  301. package/dist/state/decisionOverlay.js +254 -0
  302. package/dist/state/decisionRevision.js +256 -0
  303. package/dist/state/decisionRevisionMigration.js +89 -0
  304. package/dist/state/directRetrieval.js +323 -0
  305. package/dist/state/durability.js +324 -0
  306. package/dist/state/entityCutover.js +459 -0
  307. package/dist/state/entityCutoverGit.js +127 -0
  308. package/dist/state/entityGlossaryAuthority.js +13 -0
  309. package/dist/state/entityListProjection.js +187 -0
  310. package/dist/state/entityListRuntimeRegistry.js +85 -0
  311. package/dist/state/entityMigrationCausality.js +97 -0
  312. package/dist/state/entityMigrationIdentity.js +5 -0
  313. package/dist/state/entityMigrationPreview.js +846 -0
  314. package/dist/state/entityMigrationTodo.js +133 -0
  315. package/dist/state/entityPublicationContext.js +806 -0
  316. package/dist/state/entityRetrievalHelp.js +506 -0
  317. package/dist/state/entityStorage.js +896 -0
  318. package/dist/state/exactReplacementRecovery.js +18 -0
  319. package/dist/state/experimentArchive.js +63 -0
  320. package/dist/state/experimentIdentity.js +202 -0
  321. package/dist/state/healthEntities.js +262 -0
  322. package/dist/state/healthEntityValidation.js +18 -0
  323. package/dist/state/healthRepair.js +69 -0
  324. package/dist/state/installRoot.js +64 -25
  325. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  326. package/dist/state/legacyIdentity.js +47 -0
  327. package/dist/state/legacySummaryRecord.js +6 -0
  328. package/dist/state/listAccounting.js +54 -0
  329. package/dist/state/listClassification.js +17 -0
  330. package/dist/state/listCursor.js +42 -0
  331. package/dist/state/listRetrieval.js +781 -0
  332. package/dist/state/migrationSourceBinding.js +30 -0
  333. package/dist/state/objectiveExperimentEntities.js +322 -0
  334. package/dist/state/planEntities.js +530 -0
  335. package/dist/state/planIdentity.js +47 -0
  336. package/dist/state/planRetrieval.js +313 -0
  337. package/dist/state/planTaskRetrieval.js +294 -0
  338. package/dist/state/progressEntities.js +512 -0
  339. package/dist/state/progressGlossaryCaveat.js +168 -0
  340. package/dist/state/progressPublicationOrder.js +19 -0
  341. package/dist/state/projectRoot.js +62 -0
  342. package/dist/state/projectionPolicy.js +190 -0
  343. package/dist/state/retrievalAuthority.js +156 -0
  344. package/dist/state/safeProjectFile.js +155 -0
  345. package/dist/state/startupAnalysis/benchmark.js +432 -0
  346. package/dist/state/startupAnalysis/contract.js +160 -0
  347. package/dist/state/startupAnalysis/helpers.js +286 -0
  348. package/dist/state/startupAnalysis/index.js +6 -0
  349. package/dist/state/startupAnalysis/metrics.js +340 -0
  350. package/dist/state/startupAnalysis/records.js +198 -0
  351. package/dist/state/startupAnalysis/report.js +111 -0
  352. package/dist/state/startupAnalysis/threshold.js +512 -0
  353. package/dist/state/startupAnalysis.js +2 -1953
  354. package/dist/state/startupProjection.js +499 -0
  355. package/dist/state/stateMode.js +85 -0
  356. package/dist/state/stateStorageAuthority.js +47 -0
  357. package/dist/state/summaryEntityRead.js +25 -0
  358. package/dist/state/summaryMigrationProvenance.js +66 -0
  359. package/dist/state/summarySourceRowAuthority.js +36 -0
  360. package/dist/state/todoDocsEntities.js +1064 -0
  361. package/dist/state/todoDocsEntityValidation.js +158 -0
  362. package/dist/state/todoMarkdownProjection.js +51 -0
  363. package/dist/state/todoReconciliationActivation.js +132 -0
  364. package/dist/state/todoReconciliationInspection.js +173 -0
  365. package/dist/state/todoReconciliationRepair.js +170 -0
  366. package/dist/state/todoReconciliationTransaction.js +582 -0
  367. package/dist/state/write/assign.js +20 -0
  368. package/dist/state/write/candidateMutation.js +269 -0
  369. package/dist/state/write/errors.js +11 -0
  370. package/dist/state/write/experimentPublication.js +192 -0
  371. package/dist/state/write/explain.js +332 -0
  372. package/dist/state/write/fields.js +61 -0
  373. package/dist/state/write/glossaryPublication.js +263 -0
  374. package/dist/state/write/grammar.js +280 -0
  375. package/dist/state/write/helpers.js +29 -0
  376. package/dist/state/write/index.js +12 -0
  377. package/dist/state/write/input.js +367 -0
  378. package/dist/state/write/lock.js +837 -0
  379. package/dist/state/write/mutation.js +234 -0
  380. package/dist/state/write/operations.js +169 -0
  381. package/dist/state/write/planEvaluation.js +128 -0
  382. package/dist/state/write/planPublication.js +179 -0
  383. package/dist/state/write/runtimeOperations.js +142 -0
  384. package/dist/state/write/serialize.js +1 -0
  385. package/dist/state/write/transaction.js +52 -0
  386. package/dist/state/write/validate.js +7 -0
  387. package/dist/upgrade/appContentRefresh.js +383 -0
  388. package/dist/upgrade/appModel.js +8 -7
  389. package/dist/upgrade/atomicWriter.js +1 -0
  390. package/dist/upgrade/bundleEvidence.js +33 -0
  391. package/dist/upgrade/channels.js +12 -8
  392. package/dist/upgrade/compatibility.js +56 -21
  393. package/dist/upgrade/doctor.js +197 -192
  394. package/dist/upgrade/doctorClassifier.js +187 -0
  395. package/dist/upgrade/installedHooksRetirement.js +196 -0
  396. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  397. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  398. package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
  399. package/dist/upgrade/migrationPublication.js +122 -0
  400. package/dist/upgrade/nextMajorDoctor.js +155 -0
  401. package/dist/upgrade/npxPlatformStatus.js +22 -0
  402. package/dist/upgrade/projectIntegration.js +145 -187
  403. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  404. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  405. package/dist/upgrade/runtimeMigration.js +278 -352
  406. package/dist/upgrade/upgradeCommands.js +14 -1
  407. package/dist/upgrade/upgradeLock.js +85 -0
  408. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  409. package/dist/upgrade/v3CapabilitySurface.js +14 -0
  410. package/dist/upgrade/versionResolution.js +12 -5
  411. package/dist/validate/activationArtifactEvidence.js +844 -0
  412. package/dist/validate/activationConjunction.js +816 -0
  413. package/dist/validate/activationEvidenceManifest.js +515 -0
  414. package/dist/validate/activationPackageSemantics.js +29 -0
  415. package/dist/validate/appHomeContract.js +5 -11
  416. package/dist/validate/bootstrapAuthority.js +44 -0
  417. package/dist/validate/capability.js +144 -15
  418. package/dist/validate/crossCapability.js +15 -10
  419. package/dist/validate/retainedReferenceAuthority.js +879 -0
  420. package/dist/validate/selfAudit.js +73 -37
  421. package/dist/validate/v1LegacyCruft.js +131 -0
  422. package/dist/validate/vocabularyAuthority.js +303 -0
  423. package/package.json +53 -27
  424. package/bundle/references/adapters/cursor.md +0 -213
  425. package/bundle/references/adapters/opencode.md +0 -530
  426. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  427. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  428. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  429. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  430. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  431. package/bundle/references/analysis/benchmark.md +0 -267
  432. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  433. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  434. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
  435. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
  436. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  437. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  438. package/bundle/references/meta/documentation-inventory.md +0 -43
  439. package/bundle/references/v1-section-mapping.md +0 -47
  440. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  441. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  442. package/bundle/skills/agentera/agents/hej.toml +0 -6
  443. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  444. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  445. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  446. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  447. package/bundle/skills/agentera/agents/planera.toml +0 -6
  448. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  449. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  450. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  451. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  452. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  453. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  454. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  455. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  456. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  457. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  458. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  459. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  460. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  461. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  462. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  463. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  464. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  465. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  466. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  467. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  468. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -107
  471. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  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/instructions.md +0 -419
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  478. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  479. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  481. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  482. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  483. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  484. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  485. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  486. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  487. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  488. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  489. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  490. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  491. package/bundle/skills/agentera/references/contract.md +0 -1039
  492. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  493. package/bundle/skills/hej/SKILL.md +0 -69
  494. package/bundle/skills/hej/agents/hej.toml +0 -11
  495. package/bundle/skills/hej/agents/openai.yaml +0 -8
  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/cli/appContext.js.map +0 -1
  500. package/dist/cli/argvalidate.js.map +0 -1
  501. package/dist/cli/capabilityContext.js.map +0 -1
  502. package/dist/cli/commands/backfill.js +0 -84
  503. package/dist/cli/commands/backfill.js.map +0 -1
  504. package/dist/cli/commands/capability.js.map +0 -1
  505. package/dist/cli/commands/compact.js.map +0 -1
  506. package/dist/cli/commands/doctor.js.map +0 -1
  507. package/dist/cli/commands/lint.js.map +0 -1
  508. package/dist/cli/commands/prime.js.map +0 -1
  509. package/dist/cli/commands/query.js.map +0 -1
  510. package/dist/cli/commands/report.js.map +0 -1
  511. package/dist/cli/commands/schema.js.map +0 -1
  512. package/dist/cli/commands/state.js +0 -1012
  513. package/dist/cli/commands/state.js.map +0 -1
  514. package/dist/cli/commands/upgrade.js.map +0 -1
  515. package/dist/cli/commands/validate.js.map +0 -1
  516. package/dist/cli/commands/verify.js.map +0 -1
  517. package/dist/cli/dispatch.js.map +0 -1
  518. package/dist/cli/help.js.map +0 -1
  519. package/dist/cli/orientation.js.map +0 -1
  520. package/dist/cli/prime-blob.js.map +0 -1
  521. package/dist/cli/stateQuery.js.map +0 -1
  522. package/dist/cli/structured.js.map +0 -1
  523. package/dist/core/difflib.js.map +0 -1
  524. package/dist/core/git.js +0 -43
  525. package/dist/core/git.js.map +0 -1
  526. package/dist/core/paths.js.map +0 -1
  527. package/dist/core/pyjson.js.map +0 -1
  528. package/dist/core/sourceRoot.js.map +0 -1
  529. package/dist/core/toml.js.map +0 -1
  530. package/dist/core/yaml.js.map +0 -1
  531. package/dist/eval/evalSkills.js.map +0 -1
  532. package/dist/eval/semanticEval.js.map +0 -1
  533. package/dist/eval/semanticFixtures.js.map +0 -1
  534. package/dist/hooks/common.js.map +0 -1
  535. package/dist/hooks/compaction.js +0 -935
  536. package/dist/hooks/compaction.js.map +0 -1
  537. package/dist/hooks/cursorPreToolUse.js +0 -19
  538. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  539. package/dist/hooks/cursorSessionStart.js +0 -71
  540. package/dist/hooks/cursorSessionStart.js.map +0 -1
  541. package/dist/hooks/sessionStart.js +0 -209
  542. package/dist/hooks/sessionStart.js.map +0 -1
  543. package/dist/hooks/sessionStop.js +0 -212
  544. package/dist/hooks/sessionStop.js.map +0 -1
  545. package/dist/hooks/validateArtifact.js +0 -933
  546. package/dist/hooks/validateArtifact.js.map +0 -1
  547. package/dist/registries/artifactRegistry.js.map +0 -1
  548. package/dist/registries/capabilityContract.js.map +0 -1
  549. package/dist/registries/packageRegistry.js.map +0 -1
  550. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  551. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  552. package/dist/setup/codex.js +0 -1056
  553. package/dist/setup/codex.js.map +0 -1
  554. package/dist/setup/copilot.js +0 -227
  555. package/dist/setup/copilot.js.map +0 -1
  556. package/dist/setup/cursor.js +0 -127
  557. package/dist/setup/cursor.js.map +0 -1
  558. package/dist/setup/doctor.js +0 -1297
  559. package/dist/setup/doctor.js.map +0 -1
  560. package/dist/setup/smokeChecks.js.map +0 -1
  561. package/dist/state/installRoot.js.map +0 -1
  562. package/dist/state/progressCommit.js +0 -289
  563. package/dist/state/progressCommit.js.map +0 -1
  564. package/dist/state/startupAnalysis.js.map +0 -1
  565. package/dist/upgrade/appModel.js.map +0 -1
  566. package/dist/upgrade/channels.js.map +0 -1
  567. package/dist/upgrade/compatibility.js.map +0 -1
  568. package/dist/upgrade/doctor.js.map +0 -1
  569. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -571
  570. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  571. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  572. package/dist/upgrade/projectIntegration.js.map +0 -1
  573. package/dist/upgrade/runtimeMigration.js.map +0 -1
  574. package/dist/upgrade/upgradeCommands.js.map +0 -1
  575. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  576. package/dist/upgrade/versionResolution.js.map +0 -1
  577. package/dist/validate/appHomeContract.js.map +0 -1
  578. package/dist/validate/capability.js.map +0 -1
  579. package/dist/validate/crossCapability.js.map +0 -1
  580. package/dist/validate/lifecycleAdapters.js +0 -772
  581. package/dist/validate/lifecycleAdapters.js.map +0 -1
  582. package/dist/validate/selfAudit.js.map +0 -1
  583. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  584. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  585. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -0,0 +1,52 @@
1
+ import YAML from "yaml";
2
+ export const INVALID_INPUT_EXIT_CODE = 2;
3
+ const DEFAULT_RECOVERY = "Correct the input and retry; no state was changed.";
4
+ const TEXT_GUIDANCE_LINES = [
5
+ "What happened: {message}",
6
+ "What the preview did: nothing; only the input was rejected.",
7
+ "What the recommended fix will do: take the corrected input and continue.",
8
+ "What it will not do: edit your project files, run live commands, or change unknown state.",
9
+ ];
10
+ export function emitInvalidInput(io, opts) {
11
+ const out = io.out ?? ((t) => process.stdout.write(t));
12
+ const err = io.err ?? ((t) => process.stderr.write(t));
13
+ if (opts.format === "json" || opts.format === "yaml") {
14
+ const envelope = {
15
+ schemaVersion: "agentera.invalidInputEnvelope.v2",
16
+ status: "fail",
17
+ error: {
18
+ ...opts.body,
19
+ recovery: opts.body.recovery ?? DEFAULT_RECOVERY,
20
+ },
21
+ };
22
+ if (opts.format === "json")
23
+ out(JSON.stringify(envelope) + "\n");
24
+ else
25
+ out(YAML.stringify(envelope));
26
+ return opts.exitCode ?? INVALID_INPUT_EXIT_CODE;
27
+ }
28
+ const lines = [];
29
+ for (const tmpl of TEXT_GUIDANCE_LINES) {
30
+ lines.push(tmpl.replace("{message}", opts.body.message));
31
+ }
32
+ if (opts.body.valid_values && opts.body.valid_values.length > 0) {
33
+ lines.push("");
34
+ lines.push("Valid values:");
35
+ for (const v of opts.body.valid_values) {
36
+ lines.push(` - ${v}`);
37
+ }
38
+ }
39
+ if (opts.body.syntax) {
40
+ lines.push("");
41
+ lines.push(`Syntax: ${opts.body.syntax}`);
42
+ }
43
+ if (opts.body.example) {
44
+ lines.push("");
45
+ lines.push("Example:");
46
+ lines.push(` ${opts.body.example}`);
47
+ }
48
+ lines.push("");
49
+ lines.push(`Recovery: ${opts.body.recovery ?? DEFAULT_RECOVERY}`);
50
+ err(lines.join("\n") + "\n");
51
+ return opts.exitCode ?? INVALID_INPUT_EXIT_CODE;
52
+ }
package/dist/cli/help.js CHANGED
@@ -1,86 +1,265 @@
1
1
  import { CAPABILITY_ROUTING_NAMES } from "./commands/capability.js";
2
- const TOP_LEVEL = [
3
- "prime",
4
- "schema",
5
- "state",
6
- ...CAPABILITY_ROUTING_NAMES.filter((n) => n !== "hej"),
7
- "upgrade",
8
- "doctor",
9
- "report",
10
- "check",
11
- ];
2
+ import { verbsForArtifact, WRITABLE_ARTIFACTS } from "../state/write/operations.js";
3
+ import { personalGlossaryOutputContract } from "../registries/glossaryEntryContract.js";
4
+ import { describeRouteReceipt } from "../registries/hybridRoute.js";
5
+ import { advertisedValidateFamilyNames } from "./commands/validate.js";
6
+ import { entityListFamilies, entityRetrievalFamilyForHelpArgs } from "../state/entityRetrievalHelp.js";
7
+ import { preCutoverCommand } from "./preCutoverCommand.js";
8
+ import { HELP_TOP_LEVEL_COMMANDS } from "./dispatch/projections.js";
12
9
  function lines(title, items) {
13
10
  return [title, ...items.map((item) => ` ${item}`), ""];
14
11
  }
15
12
  export function printTopLevelHelp() {
16
- const choices = TOP_LEVEL.join(",");
13
+ const choices = HELP_TOP_LEVEL_COMMANDS.join(",");
14
+ const plans = entityListFamilies().find(({ key }) => key === "plans");
15
+ const planListExample = `agentera state ${plans.commandTokens.join(" ")} list --format json`;
17
16
  return [
18
- `usage: agentera [-h] {${choices}} ...`,
17
+ `usage: agentera [-h] [--version] {${choices}} ...`,
19
18
  "",
20
- "agentera: read project state, upgrade installs, and print priming guidance",
19
+ "agentera: read and write project state, upgrade installs, and print priming guidance",
21
20
  "",
22
21
  ...lines("Agent commands:", [
23
22
  "prime Composite orientation briefing, capability startup context, or static guidance",
24
23
  "schema Runtime CLI/schema introspection",
25
- "state Routine artifact reads and advanced artifact query",
26
- ...CAPABILITY_ROUTING_NAMES.filter((n) => n !== "hej").map((name) => `${name.padEnd(19)} Route to ${name} capability guidance`),
24
+ "route Privacy-safe request-to-capability routing",
25
+ "state Routine artifact reads, writes, and advanced artifact query",
26
+ ...CAPABILITY_ROUTING_NAMES.map((name) => `${name.padEnd(19)} Route to ${name} capability guidance`),
27
27
  ]),
28
28
  ...lines("User commands:", [
29
- "upgrade Plan or apply an idempotent upgrade with semver/channel gate",
30
- "doctor Check Agentera CLI, app, and runtime status",
29
+ "upgrade Preview or apply app/project migration and explicit legacy cleanup",
30
+ "app-home Resolve the platform Agentera app-home path",
31
+ "doctor Check Agentera CLI, app, and shared-skill status",
31
32
  "report Privacy-gated usage analytics",
33
+ "--version Print the installed Agentera CLI version",
32
34
  ]),
33
35
  ...lines("Maintainer commands:", [
34
36
  "check Validation, verification, lint, and repository compaction gates",
35
37
  ]),
36
38
  "options:",
37
39
  " -h, --help show this help message and exit",
40
+ " --version print the installed Agentera CLI version and exit",
38
41
  "",
39
- "Examples: agentera prime; agentera state plan --format json; agentera check verify eval skills --dry-run; agentera report refresh --dry-run",
42
+ [
43
+ `Examples: ${preCutoverCommand("prime --context status --format json")}`,
44
+ ` ${preCutoverCommand(planListExample.slice("agentera ".length))}`,
45
+ ` ${preCutoverCommand("check verify eval skills --dry-run")}`,
46
+ ` ${preCutoverCommand("report refresh --dry-run")}`,
47
+ ].join("\n"),
40
48
  ].join("\n");
41
49
  }
42
50
  export function printUpgradeHelp() {
43
51
  return [
44
52
  "usage: agentera upgrade [-h] [--project PROJECT] [--install-root INSTALL_ROOT]",
45
53
  " [--home HOME] [--channel {stable,development}]",
54
+ " [--legacy-cleanup RESOURCE_ID]",
46
55
  " [--only {artifacts,runtime,cleanup}] [--dry-run] [--yes]",
47
- " [--force] [--format {text,json}]",
56
+ " [--force] [--verify] [--format {text,json}]",
48
57
  "",
49
58
  "options:",
50
59
  " -h, --help show this help message and exit",
51
60
  " --project PROJECT Project directory whose .agentera artifacts should be migrated",
52
- " --install-root PATH Agentera app home to wire into runtime configs",
53
- " --home HOME Home directory for runtime config writes/detection",
61
+ " --install-root PATH Agentera app home to inspect or update",
62
+ " --home HOME Home directory for shared-skill detection and explicit native resource cleanup",
54
63
  " --channel CHANNEL Update channel: stable (2.x) or development (3.x npm)",
64
+ " --legacy-cleanup ID Select one declared native Agentera resource for cleanup",
55
65
  " --only PHASE Upgrade phase to include; may be repeated",
56
- " --dry-run Plan only and write nothing",
57
- " --yes Apply pending local upgrade actions",
58
- " --force Overwrite managed runtime files or conflicting backups",
66
+ " --dry-run Strict read-only preview; no files, locks, caches, native commands, or telemetry",
67
+ " --yes Explicitly approve app/project migration or selected legacy cleanup",
68
+ " --force Replace only where the migration contract explicitly permits it",
69
+ " --verify Verify the current install; full v2-to-v3 apply verifies state and startup automatically",
70
+ " --format {text,json} Structured output format",
71
+ "",
72
+ "v2-to-v3 development upgrade (one-way):",
73
+ " Optional preview: npx -y agentera@next upgrade --channel development --project \"$PWD\" --dry-run",
74
+ " Full apply: npx -y agentera@next upgrade --channel development --project \"$PWD\" --yes",
75
+ " Apply requires a Git worktree whose complete v2 migration source is tracked and unchanged at HEAD.",
76
+ " Cross-major apply is always full: --only cannot be used; there is no rollback, restore, or non-Git workflow.",
77
+ "",
78
+ "active integration:",
79
+ " Agentera uses the shared skill at ~/.agents/skills/agentera plus the CLI.",
80
+ " Current runtime selectors and native plugin, hook, agent, command, descriptor, and marketplace writes are retired.",
81
+ ` Native resource cleanup preview: ${preCutoverCommand("upgrade --legacy-cleanup RESOURCE_ID --dry-run")}`,
82
+ ` Native resource cleanup apply: ${preCutoverCommand("upgrade --legacy-cleanup RESOURCE_ID --yes")}`,
83
+ ].join("\n");
84
+ }
85
+ export function printAppHomeHelp() {
86
+ return [
87
+ "usage: agentera app-home [-h] [--install-root PATH] [--home HOME] [--format {text,json}]",
88
+ "",
89
+ "Resolve the Agentera app-home path for agent/bootstrap callers.",
90
+ "",
91
+ "options:",
92
+ " -h, --help show this help message and exit",
93
+ " --install-root PATH Explicit Agentera app home to resolve",
94
+ " --home HOME Home directory for platform default resolution",
59
95
  " --format {text,json} Structured output format",
60
96
  ].join("\n");
61
97
  }
62
98
  export function printDoctorHelp() {
63
99
  return [
64
100
  "usage: agentera doctor [-h] [--install-root PATH] [--home HOME] [--project PROJECT]",
65
- " [--expected-version VERSION] [--expect-command CMD]",
101
+ " [--expected-version VERSION] [--expect-command CMD] [--retired-resource ID]",
66
102
  " [--smoke] [--allow-live-model] [--format {text,json}]",
67
103
  "",
68
104
  "options:",
69
105
  " -h, --help show this help message and exit",
70
106
  " --install-root PATH Agentera app home to diagnose",
71
- " --home HOME Home directory for runtime detection",
107
+ " --home HOME Home directory for shared-skill diagnosis",
72
108
  " --project PROJECT Project directory context",
73
109
  " --expected-version VER Expected app files version",
74
110
  " --expect-command CMD Required CLI command probe; may be repeated",
111
+ " --retired-resource ID Read-only exact retired-resource diagnostic preview",
75
112
  " --smoke Run bounded offline smoke checks (no live model calls by default)",
76
113
  " --allow-live-model Record permission for future live model smoke probes",
77
114
  " --format {text,json} Structured output format",
115
+ "",
116
+ "Reports read-only app, project-state, shared-skill, and CLI evidence, plus retired-resource diagnostics.",
78
117
  ].join("\n");
79
118
  }
119
+ function recordFamilyReadSection(command) {
120
+ const families = entityListFamilies().filter(({ commandTokens }) => commandTokens[0] === command);
121
+ if (families.length === 0)
122
+ return [];
123
+ return [
124
+ "Canonical record-family reads:",
125
+ ...families.flatMap((family) => [
126
+ ` List: ${family.syntax}`,
127
+ ` Get: ${family.get}`,
128
+ ...(family.commandTokens.length === 1
129
+ ? [family.bareRead === "alias"
130
+ ? ` Bare: agentera state ${family.commandTokens.join(" ")} is a strict alias of List.`
131
+ : ` Bare: rejected with recovery to ${family.bareRecovery}.`]
132
+ : []),
133
+ ` Summary fields: ${family.summaryFields.join(", ")}`,
134
+ ]),
135
+ "",
136
+ ];
137
+ }
80
138
  export function printStateHelp(sub) {
139
+ const stateCommands = stateCommandNames();
140
+ if (sub === "plan") {
141
+ return [
142
+ ...recordFamilyReadSection("plan"),
143
+ ` agentera state plan {${verbsForArtifact("plan").join(",")}} [write flags]`,
144
+ "",
145
+ "Plan and task reads use bare canonical IDs from entity list results.",
146
+ "Invalid historical archives remain non-fatal compatibility diagnostics unless selected.",
147
+ "Task list accepts an optional bare plan ID and otherwise defaults to the sole open plan; task get requires --id.",
148
+ "Only the displayed bare-ID selectors are accepted.",
149
+ "List limits are 1 through 100; structured pages are at most 32,768 UTF-8 bytes and omit whole entries only.",
150
+ "Legacy plan identity collisions return a structured ambiguous error.",
151
+ "",
152
+ "Discover writes: agentera state plan explain --format json",
153
+ "All verbs: agentera state plan explain --all --format json",
154
+ ].join("\n");
155
+ }
156
+ if (sub === "experiments") {
157
+ return [
158
+ ...recordFamilyReadSection("experiments"),
159
+ " agentera state experiments publish --objective ID [--id ID] --input EXPERIMENT.yaml --format json",
160
+ " (publish also accepts --dry-run and --format text)",
161
+ "",
162
+ "Publish is the validated mutation authority and atomically writes one schema-valid experiment.",
163
+ "A byte-equivalent identity retry is idempotent; collisions and pre-publication failures preserve current bytes.",
164
+ "Get verifies archive detail first, then reports full, summary-only, or unavailable detail truthfully.",
165
+ "List and publish require one bare objective ID; get requires one bare experiment ID.",
166
+ "Legacy objective/path collisions return a structured ambiguous error.",
167
+ "",
168
+ "Discover writes: agentera state experiments explain --verb publish --format json",
169
+ "All verbs: agentera state experiments explain --all --format json",
170
+ ].join("\n");
171
+ }
172
+ if (sub === "glossary") {
173
+ return [
174
+ "usage: agentera state glossary publish --input REQUEST.yaml [--dry-run] --format json",
175
+ " agentera state glossary explain [--verb publish] --format json",
176
+ "",
177
+ "Build-owned publication validates one audit terminology proposal and proposal-specific user confirmation.",
178
+ "The writer revalidates cited source lines and atomically records a separate immutable approval and shared glossary entry.",
179
+ "Confirmed project variants are enforced by the v1LegacyCruft validation guard; profile and docs-mapping mutation remain outside publication.",
180
+ "Audit and discuss remain mutation-free. Discuss, Plan, and Build use read-only glossary advice with project precedence, proven-gap personal fallback, and host review for inferred equivalence.",
181
+ "",
182
+ "Discover writes: agentera state glossary explain --verb publish --format json",
183
+ "All verbs: agentera state glossary explain --all --format json",
184
+ ].join("\n");
185
+ }
186
+ if (sub === "objective") {
187
+ return [
188
+ ...recordFamilyReadSection("objective"),
189
+ " agentera state objective create --input OBJECTIVE.yaml --format json",
190
+ " agentera state objective update --id ID --input OBJECTIVE.yaml --format json",
191
+ "",
192
+ "Objective create publishes one independent entity; update replaces that entity through rollback-safe publication.",
193
+ "Active-objective inference is not a public record-family read.",
194
+ "",
195
+ "Discover writes: agentera state objective explain --format json",
196
+ "All verbs: agentera state objective explain --all --format json",
197
+ ].join("\n");
198
+ }
199
+ if (sub === "todo") {
200
+ return [
201
+ ...recordFamilyReadSection("todo"),
202
+ " agentera state todo activate|repair --dry-run|--effect-sha256 SHA256 --yes --format json",
203
+ " agentera state todo create --input TODO.yaml --format json",
204
+ " agentera state todo update --id ID --input TODO-PATCH.yaml --format json",
205
+ " agentera state todo set-severity --id ID --severity LEVEL --reason TEXT --date YYYY-MM-DD --format json",
206
+ " agentera state todo supersede --id ID --replacement ID --reason TEXT --date YYYY-MM-DD --format json",
207
+ " agentera state todo resolve|reopen --id ID --reason TEXT --date YYYY-MM-DD --format json",
208
+ "",
209
+ "Each TODO item is one independently mutable canonical entity. IDs are bare ten-letter project-wide identities.",
210
+ "TODO views are bounded in severity/status and Markdown public order; exact get returns complete detail.",
211
+ "Create accepts a full typed YAML/JSON record; update is a patch, so omitted fields preserve state and null/empty-list clears apply only to declared clearable fields.",
212
+ "Readiness is Agentera-owned operational state; public fields are owned by TODO.md and divergent public values fail before effects.",
213
+ "Lifecycle verbs are flag-only typed transitions and cannot be supplied as record content.",
214
+ "Marker-absent repositories must complete migration before ordinary TODO access.",
215
+ "",
216
+ "Discover writes: agentera state todo explain --format json",
217
+ "All verbs: agentera state todo explain --all --format json",
218
+ ].join("\n");
219
+ }
220
+ if (sub === "docs") {
221
+ return [
222
+ ...recordFamilyReadSection("docs"),
223
+ " agentera state docs create --input ENTRY.yaml --format json",
224
+ " agentera state docs update --id ID --input ENTRY.yaml --format json",
225
+ "",
226
+ "Each documentation inventory entry is one independently mutable canonical entity; path is record data, not identity.",
227
+ "Mappings, conventions, coverage, and editorial configuration retain whole-document authority in .agentera/docs.yaml.",
228
+ "List views are bounded by path then ID; exact get returns complete detail.",
229
+ "",
230
+ "Discover writes: agentera state docs explain --format json",
231
+ "All verbs: agentera state docs explain --all --format json",
232
+ ].join("\n");
233
+ }
81
234
  if (sub) {
235
+ const verbs = verbsForArtifact(sub);
236
+ const readSection = recordFamilyReadSection(sub);
82
237
  return [
83
- `usage: agentera state ${sub} [-h] [--format {text,json,yaml}] [filters]`,
238
+ ...readSection,
239
+ ...(readSection.length === 0 ? [`usage: agentera state ${sub} [operation] [options]`] : []),
240
+ ...(verbs.length ? [` agentera state ${sub} {${verbs.join(",")}} [write flags]`] : []),
241
+ ...(sub === "progress"
242
+ ? [" agentera state progress append --input <path|-> --format json"]
243
+ : sub === "decisions"
244
+ ? [
245
+ " agentera state decisions append --input <path|-> --format json",
246
+ " agentera state decisions update --id ID --satisfaction-state STATE [transition flags] --format json",
247
+ " agentera state decisions amend --id ID --base-sha256 HASH --input <path|-> --format json",
248
+ ]
249
+ : []),
250
+ ...(verbs.length
251
+ ? [
252
+ "",
253
+ `Discover writes: agentera state ${sub} explain --format json`,
254
+ `All verbs: agentera state ${sub} explain --all --format json`,
255
+ `Per verb: agentera state ${sub} explain --verb VERB --format json`,
256
+ ]
257
+ : []),
258
+ ...(sub === "progress"
259
+ ? ["Record content is one bounded YAML/JSON mapping; content flags are retired and the writer assigns id, artifact, and publication_order."]
260
+ : sub === "decisions"
261
+ ? ["Append and amend accept one bounded YAML/JSON mapping; satisfaction update is a flag-only transition and rejects --input."]
262
+ : []),
84
263
  "",
85
264
  "options:",
86
265
  " -h, --help show this help message and exit",
@@ -88,52 +267,180 @@ export function printStateHelp(sub) {
88
267
  ].join("\n");
89
268
  }
90
269
  return [
91
- "usage: agentera state [-h] {plan,progress,health,todo,decisions,docs,objective,experiments,query} ...",
270
+ `usage: agentera state [-h] {${stateCommands.join(",")}} ...`,
92
271
  "",
93
- "Routine artifact reads and advanced artifact query.",
272
+ "Routine artifact reads, writes, and advanced artifact query.",
273
+ "Discover typed writes: agentera state <artifact> explain --format json",
274
+ "Discover all verbs: agentera state <artifact> explain --all --format json",
94
275
  ].join("\n");
95
276
  }
277
+ export function printStateListHelp(family) {
278
+ const filterLines = family.filters.length
279
+ ? family.filters.map(({ flag, values }) => ` ${flag.padEnd(35)} Filter; values: ${Array.isArray(values) ? values.join(", ") : values}`)
280
+ : [" (none)"];
281
+ const identifier = family.familyIdentifier
282
+ ? [
283
+ "Family identifier:",
284
+ ` ${family.familyIdentifier.syntax}${family.familyIdentifier.required ? " (required)" : " (optional)"}`,
285
+ ` ${family.familyIdentifier.description}`,
286
+ "",
287
+ ]
288
+ : [];
289
+ const notes = Object.entries(family.summaryFieldNotes).map(([field, note]) => ` ${field}: ${note.description} Ownership: ${note.ownership}; persisted: ${note.persisted}; ${note.filter ? `--${field.replaceAll("_", "-")} is a filter` : `--${field.replaceAll("_", "-")} is not a filter`}.`);
290
+ return [
291
+ `usage: ${family.syntax}`,
292
+ "",
293
+ `List the ${family.key} retrieval family using the authority-owned bounded projection.`,
294
+ "",
295
+ ...identifier,
296
+ "Filters:",
297
+ ...filterLines,
298
+ "",
299
+ "Summary fields:",
300
+ ` ${family.summaryFields.join(", ")}`,
301
+ ...notes,
302
+ "",
303
+ "Projection selectors:",
304
+ ` ${family.selectors.idsOnly.flag.padEnd(20)} ${family.selectors.idsOnly.description}`,
305
+ ` ${family.selectors.fields.flag.padEnd(20)} ${family.selectors.fields.description}`,
306
+ ...(family.selectors.mutualExclusion ? [" --ids-only and --fields cannot be combined."] : []),
307
+ "",
308
+ "Bounds and formats:",
309
+ ` limit: minimum ${family.bounds.minimum}, default ${family.bounds.default}, maximum ${family.bounds.maximum}`,
310
+ ` serialized output: at most ${family.bounds.maxUtf8Bytes} UTF-8 bytes; rows and scalar values are not partially returned`,
311
+ ` formats: ${family.formats.join(", ")}`,
312
+ "",
313
+ "Examples:",
314
+ ` ${family.example}`,
315
+ ` ${family.get}`,
316
+ "",
317
+ `Unsupported filters, fields, or selectors report this family's valid vocabulary and a correction based on: ${family.example}`,
318
+ ].join("\n");
319
+ }
320
+ export function printStateGetHelp(family) {
321
+ return [
322
+ `usage: ${family.get}`,
323
+ "",
324
+ `Get one complete canonical ${family.key} record by its exact opaque ID.`,
325
+ "",
326
+ "Selectors and formats:",
327
+ " --id ID required bare ten-letter canonical identity",
328
+ ` --format FORMAT ${family.formats.join(", ")}`,
329
+ "",
330
+ `List identities: ${family.example}`,
331
+ `Exact get: ${family.get}`,
332
+ ].join("\n");
333
+ }
334
+ export function stateCommandNames() {
335
+ return [...new Set([
336
+ ...entityListFamilies().map(({ commandTokens }) => commandTokens[0]),
337
+ ...WRITABLE_ARTIFACTS,
338
+ "query",
339
+ ])];
340
+ }
96
341
  export function printCheckHelp(sub) {
97
342
  if (sub === "verify") {
98
343
  return [
99
- "usage: agentera check verify [-h] eval {skills,semantic} [--format text|json] [options]",
344
+ "usage: agentera check verify [-h] eval {skills,semantic,routing} [--format text|json] [options]",
100
345
  "",
101
346
  "Evaluation verify gates. Smoke verify is retired on the npm self-contained CLI;",
102
347
  "use the stable Python line for smoke maintainer harnesses.",
103
348
  ].join("\n");
104
349
  }
350
+ if (sub === "validate") {
351
+ return [
352
+ "usage: agentera check validate [-h] VALIDATE_FAMILY [options]",
353
+ "",
354
+ "Validate capabilities, state, and retained repository contracts.",
355
+ "",
356
+ "validate families:",
357
+ ...advertisedValidateFamilyNames().map((family) => ["retained-references", "activation-conjunction"].includes(family) ? ` ${family} (source checkout only)` : ` ${family}`),
358
+ ].join("\n");
359
+ }
360
+ if (sub === "durability") {
361
+ return [
362
+ "usage: agentera check durability [-h] [--project PATH] [--artifact ARTIFACT]",
363
+ " [--number N|--id ID] [--limit N] --format {text,json,yaml}",
364
+ "",
365
+ "Read-only local archive and optional reachable Git durability evidence.",
366
+ "This is an explicit migration/readiness diagnostic, not ordinary retrieval grammar.",
367
+ "Git is never required for local state writes and no remote is contacted.",
368
+ "",
369
+ "options:",
370
+ " -h, --help show this help message and exit",
371
+ " --project PATH Project directory to inspect",
372
+ " --artifact ARTIFACT progress, decisions, or health",
373
+ " --number N Positive archive entry number; requires --artifact",
374
+ " --id ID Bare canonical entity ID after cutover; requires --artifact",
375
+ " --limit N Bound returned archive entries (maximum 100)",
376
+ " --format FORMAT Output format: text, json, or yaml",
377
+ ].join("\n");
378
+ }
105
379
  if (sub) {
106
- return [`usage: agentera check ${sub} [-h] [options]`, "", "options:", " -h, --help show this help message and exit"].join("\n");
380
+ return [
381
+ `usage: agentera check ${sub} [-h] [options]`,
382
+ "",
383
+ "options:",
384
+ " -h, --help show this help message and exit",
385
+ ].join("\n");
107
386
  }
108
387
  return [
109
- "usage: agentera check [-h] {validate,verify,lint,compact,backfill} ...",
388
+ "usage: agentera check [-h] {validate,verify,lint,compact,durability} ...",
110
389
  "",
111
390
  "Validation, verification, lint, and repository compaction gates.",
112
391
  ].join("\n");
113
392
  }
114
393
  export function printReportHelp() {
394
+ const profileGlossary = personalGlossaryOutputContract();
115
395
  return [
116
- "usage: agentera report [-h] [--format {text,json}] [--project VALUE]",
396
+ "usage: agentera report [-h] [--format {text,json}] [--project VALUE] [--sources {active,all}]",
117
397
  " | agentera report refresh [--dry-run|--consent local-history]",
398
+ " [--import-source claude]",
399
+ " [--no-<runtime> ...] [--accept-coverage-gap]",
400
+ ` | ${profileGlossary.command} --input <file|-> [--dry-run] --format json`,
401
+ " | agentera report glossary-advice --input <file|-> --format json",
402
+ " | agentera report profile-grounding --format json",
118
403
  "",
119
404
  "Privacy-gated usage analytics over an existing corpus.",
405
+ "Default analytics use --sources active and exclude historical imports.",
406
+ "Use --sources all to include historical records with visible provenance.",
407
+ `Profile Full sends ${profileGlossary.requestSchemaVersion} to the exact profile path returned by prime; this subcommand requires no project checkout.`,
408
+ "Profile grounding reports one bounded validity object (valid, absent, or repair_needed); only valid responses include non-glossary content.",
409
+ "Build requests bounded glossary advice through structured input; the command is read-only and does not publish or refresh state.",
410
+ "",
411
+ "Corpus extraction flags (report refresh with --consent local-history):",
412
+ " These flags deselect runtimes that would otherwise be included when their",
413
+ " store exists. Full-mode profile runs a Coverage Audit first; skipping an",
414
+ " available runtime flags the run until --accept-coverage-gap is passed.",
415
+ " --no-codex Skip codex even if ~/.codex/sessions exists",
416
+ " --no-opencode Skip opencode even if the opencode.db store exists",
417
+ " --no-copilot Skip github-copilot even if session-store.db exists",
418
+ " --no-cursor Skip Cursor IDE and CLI stores",
419
+ " --import-source claude Explicitly import local Claude history as historical data.",
420
+ " Transcripts can contain secrets, file contents, and command output.",
421
+ " Import is read-only, active_runtime=false, and excluded by default analytics.",
422
+ " --accept-coverage-gap Proceed despite skipped available runtimes (EX2)",
423
+ " --coverage-audit-only Run the Coverage Audit summary only; do not extract",
120
424
  ].join("\n");
121
425
  }
122
426
  export function printPrimeHelp() {
123
427
  return [
124
428
  "usage: agentera prime [-h] [--format {text,json,yaml}] [--context CAPABILITY]",
125
- " [--guidance] [--dashboard] [--orientation] [--fields FIELDS]",
429
+ " [--input FILE|-] [--guidance] [--dashboard] [--orientation] [--fields FIELDS]",
126
430
  "",
127
431
  "Composite orientation briefing, capability startup context, or static guidance.",
128
432
  "",
129
433
  "options:",
130
- " -h, --help show this help message and exit",
434
+ " -h, --help show this help message and end",
131
435
  " --format FORMAT Output format: text, json, or yaml",
132
- " --context CAPABILITY Emit startup context for a capability (e.g. planera)",
436
+ " --context CAPABILITY Emit startup context for a capability (e.g. plan)",
437
+ " --input FILE|- Transient agentera.buildExecutionRequest.v1 input; valid only with --context build",
133
438
  " --guidance Emit static routing guidance",
134
- " --dashboard Emit the hej orientation dashboard",
439
+ " --dashboard Emit the prime orientation dashboard",
135
440
  " --orientation Emit orientation briefing sections",
136
441
  " --fields FIELDS Comma-separated field filter for JSON/YAML output",
442
+ "",
443
+ "JSON output uses bounded surfaces: bare prime is at most 12000 UTF-8 bytes and status context at most 22500; startup contains one availability projection and aggregate outcome, while schema discovery owns writer detail.",
137
444
  ].join("\n");
138
445
  }
139
446
  export function printSchemaHelp() {
@@ -141,6 +448,7 @@ export function printSchemaHelp() {
141
448
  "usage: agentera schema [-h] [--format {json,yaml}]",
142
449
  "",
143
450
  "Runtime CLI and schema introspection.",
451
+ "Includes the state_writer operation matrix and per-artifact write_interface metadata.",
144
452
  "",
145
453
  "options:",
146
454
  " -h, --help show this help message and exit",
@@ -157,24 +465,61 @@ export function printCapabilityHelp(capability) {
157
465
  " -h, --help show this help message and exit",
158
466
  " --format FORMAT Output format: text, json, or yaml",
159
467
  "",
160
- `Startup context: agentera prime --context ${capability} --format json`,
468
+ `Startup context: ${preCutoverCommand(`prime --context ${capability} --format json`)}`,
469
+ ].join("\n");
470
+ }
471
+ export function printRouteHelp() {
472
+ const receipt = describeRouteReceipt();
473
+ const example = JSON.stringify(receipt.stdin_example.input);
474
+ const inspect = (value) => JSON.stringify(value, null, 2).split("\n").map((line) => ` ${line}`);
475
+ return [
476
+ `usage: ${preCutoverCommand("route <request|receipt> --input PATH [--format json]")}`,
477
+ ` ${preCutoverCommand("route evaluate --format json")}`,
478
+ "",
479
+ "Route one transient request or validate one semantic host receipt through the shared hybrid contract.",
480
+ "Request text is accepted only from the structured YAML or JSON input document, never argv.",
481
+ "Use --input - to read the document from stdin. Output is JSON on stdout.",
482
+ "Evaluate runs the frozen offline conformance corpus without a semantic host; it exits 1 when its report status is fail.",
483
+ "",
484
+ "input document: { version: agentera.route_request.v1, request: <string> }",
485
+ "Semantic receipt contract (also returned as receipt_contract after semantic_required):",
486
+ ` ${receipt.schemaVersion}; receipt version ${receipt.version}; outcomes: ${receipt.outcomes.join(", ")}.`,
487
+ " Submit exactly { request: <original string>, receipt: <complete nullable receipt> }; request text stays in stdin or a file.",
488
+ " Complete nullable receipt schema:",
489
+ ...inspect(receipt.nullable_schema),
490
+ " Outcome nullability rules:",
491
+ ...inspect(receipt.outcome_rules),
492
+ " Compound rules:",
493
+ ...inspect(receipt.compound),
494
+ " remainder_span rule:",
495
+ ...inspect(receipt.remainder_span),
496
+ " Runnable stdin round trip (run the command, write the JSON to stdin, then close stdin):",
497
+ ` ${receipt.stdin_command}`,
498
+ ` ${example}`,
499
+ "A receipt result authorizes only its reported startup command; clarify starts none.",
161
500
  ].join("\n");
162
501
  }
163
502
  export function printCommandHelp(command, rest = []) {
164
503
  const sub = rest.find((a) => !a.startsWith("-") && a !== "--help" && a !== "-h");
165
504
  switch (command) {
166
505
  case "prime":
167
- case "hej":
168
506
  return printPrimeHelp();
169
507
  case "schema":
170
- case "describe":
171
508
  return printSchemaHelp();
509
+ case "route":
510
+ return printRouteHelp();
172
511
  case "upgrade":
173
512
  return printUpgradeHelp();
513
+ case "app-home":
514
+ return printAppHomeHelp();
174
515
  case "doctor":
175
516
  return printDoctorHelp();
176
- case "state":
177
- return printStateHelp(sub);
517
+ case "state": {
518
+ const retrieval = entityRetrievalFamilyForHelpArgs(rest);
519
+ return retrieval
520
+ ? retrieval.verb === "list" ? printStateListHelp(retrieval.family) : printStateGetHelp(retrieval.family)
521
+ : sub && stateCommandNames().includes(sub) ? printStateHelp(sub) : printStateHelp();
522
+ }
178
523
  case "check":
179
524
  return printCheckHelp(sub);
180
525
  case "report":
@@ -182,6 +527,9 @@ export function printCommandHelp(command, rest = []) {
182
527
  return printReportHelp();
183
528
  case "verify":
184
529
  return printCheckHelp("verify");
530
+ case "--version":
531
+ case "version":
532
+ return "usage: agentera --version [--format {text,json}]\n\nPrint the installed Agentera CLI version.\n";
185
533
  default:
186
534
  if (CAPABILITY_ROUTING_NAMES.includes(command)) {
187
535
  return printCapabilityHelp(command);
@@ -198,4 +546,3 @@ export function splitHelpArgs(argv) {
198
546
  return { args: argv, help: false };
199
547
  return { args: argv.filter((_, i) => i !== idx), help: true };
200
548
  }
201
- //# sourceMappingURL=help.js.map