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,16 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { resolveArtifactPath } from "../../registries/artifactRegistry.js";
3
+ import { preCutoverCommand } from "../preCutoverCommand.js";
4
+ import { loadDocsPathOverrides, resolveArtifactPath, } from "../../registries/artifactRegistry.js";
4
5
  import { activeObjectiveName, artifactPath, discoverSchemasDir, loadSchemas, resolveArtifactPathLocal, } from "../appContext.js";
5
6
  import { validateAgentString } from "../argvalidate.js";
6
- import { loadDocsPathOverrides } from "../../registries/artifactRegistry.js";
7
7
  import { emitStructured } from "../structured.js";
8
- import { COMMAND_FILTERS, emitStateStructured, extractEntries, filterByFieldValue, filterByTopic, formatEntry, loadArtifact, missingSchemaError, recentCycles, sourceMetadata, structuredState, validateFilterValues, } from "../stateQuery.js";
8
+ import { COMMAND_FILTERS, emitStateStructured, extractEntries, filterByFieldValue, filterByTopic, formatEntry, loadArtifact, missingSchemaError, sourceMetadata, structuredState, validateFilterValues, } from "../stateQuery.js";
9
9
  import { displayFields, queryTodo } from "./state/index.js";
10
+ import { STATE_FAMILY_GET_COMMANDS, STATE_FAMILY_LIST_COMMANDS } from "../capabilityContext/types.js";
11
+ import { entityPublicRetrieval } from "../../state/retrievalAuthority.js";
12
+ import { listProgressEntities } from "../../state/progressEntities.js";
13
+ import { readChangelog } from "../../state/changelog.js";
10
14
  const ENCODED_TRAVERSAL_RE = /%(?:2e|2f|5c)/i;
11
15
  const ALLOWED_RAW_ARTIFACT_USES = [
12
16
  "artifact writes",
@@ -17,7 +21,7 @@ const ALLOWED_RAW_ARTIFACT_USES = [
17
21
  "unavailable or incomplete CLI state after CLI fallbacks",
18
22
  "benchmark analysis",
19
23
  ];
20
- const BENCHMARK_CONTEXT_COMMAND = "agentera prime --context optimize --format json";
24
+ const BENCHMARK_CONTEXT_COMMAND = preCutoverCommand("prime --context optimize --format json");
21
25
  const STATE_COMMAND_NAMES = new Set([
22
26
  "decisions",
23
27
  "docs",
@@ -43,7 +47,16 @@ function projectRelativeOrAbsolute(p) {
43
47
  }
44
48
  function artifactReadInterfaces(name, record) {
45
49
  const artifactId = record !== null ? record.artifactId : name;
46
- const routineCommand = STATE_COMMAND_NAMES.has(artifactId) ? `agentera ${artifactId} --format json` : null;
50
+ const retrieval = (entityPublicRetrieval().commands ?? {});
51
+ const experimentList = retrieval.experiments.list
52
+ .replace(" [--limit N] [--cursor TOKEN]", " --limit 20");
53
+ const routineCommand = artifactId === "experiments"
54
+ ? experimentList
55
+ : STATE_FAMILY_LIST_COMMANDS[artifactId] ?? (STATE_COMMAND_NAMES.has(artifactId) ? `agentera state ${artifactId} --format json` : null);
56
+ const requiredSelectors = artifactId === "experiments" ? ["--objective OBJECTIVE_ID"] : [];
57
+ const detailCommand = artifactId === "experiments"
58
+ ? retrieval.experiments.get
59
+ : STATE_FAMILY_GET_COMMANDS[artifactId] ?? null;
47
60
  let advancedCommand;
48
61
  if (artifactId === "benchmark_context")
49
62
  advancedCommand = BENCHMARK_CONTEXT_COMMAND;
@@ -52,7 +65,11 @@ function artifactReadInterfaces(name, record) {
52
65
  else
53
66
  advancedCommand = `agentera query ${artifactId} --format json`;
54
67
  let policy;
55
- if (routineCommand)
68
+ if (artifactId === "experiments")
69
+ policy = "Replace OBJECTIVE_ID with one stable objective identity, use the objective-scoped bounded list for discovery, and use exact get for detail; no selector-free normal read exists.";
70
+ else if (STATE_FAMILY_LIST_COMMANDS[artifactId])
71
+ policy = "Use bounded state list for discovery and exact state get for detail before any raw artifact access.";
72
+ else if (routineCommand)
56
73
  policy = "Use the routine state command for normal content reads before any raw artifact access.";
57
74
  else if (advancedCommand)
58
75
  policy = "Use the listed CLI discovery/query surface before any last-resort raw artifact access.";
@@ -60,6 +77,9 @@ function artifactReadInterfaces(name, record) {
60
77
  policy = "No normal content-read command is registered; raw access is limited to allowed boundary cases.";
61
78
  return {
62
79
  normal_read_command: routineCommand,
80
+ normal_read_required_selectors: requiredSelectors,
81
+ normal_detail_command: detailCommand,
82
+ normal_read_guidance: policy,
63
83
  advanced_query_command: advancedCommand,
64
84
  raw_access_boundary: {
65
85
  normal_policy: policy,
@@ -67,7 +87,7 @@ function artifactReadInterfaces(name, record) {
67
87
  },
68
88
  };
69
89
  }
70
- function artifactLocationRecord(name, info, schemasDir, docsOverrides) {
90
+ function artifactLocationRecord(name, info, schemasDir) {
71
91
  const record = info.record ?? null;
72
92
  const schema = info.schema && typeof info.schema === "object" ? info.schema : {};
73
93
  // cast: schema.meta is read from a parsed artifact schema (YAML IO boundary)
@@ -76,13 +96,14 @@ function artifactLocationRecord(name, info, schemasDir, docsOverrides) {
76
96
  const artifactId = record !== null ? record.artifactId : name;
77
97
  const displayName = record !== null ? record.displayName : String(meta.name ?? name);
78
98
  const defaultPath = record !== null ? record.defaultPath : String(info.path ?? "");
79
- let mappedPath = defaultPath;
80
- let resolutionSource = record !== null ? "registry default" : "schema metadata";
99
+ const docsOverrides = record !== null ? loadDocsPathOverrides(process.cwd()) : {};
100
+ const mappedPath = record !== null && record.docsYamlCanOverridePath && record.displayName in docsOverrides
101
+ ? docsOverrides[record.displayName]
102
+ : defaultPath;
103
+ const resolutionSource = record !== null
104
+ ? mappedPath === defaultPath ? "registry default" : "docs mapping for registry identity"
105
+ : "schema metadata";
81
106
  const caveats = [];
82
- if (record !== null && record.docsYamlCanOverridePath && record.displayName in docsOverrides) {
83
- mappedPath = docsOverrides[record.displayName];
84
- resolutionSource = ".agentera/docs.yaml mapping";
85
- }
86
107
  const objectiveName = activeObjectiveName();
87
108
  let resolvedPath = null;
88
109
  if (record !== null && record.pathTemplate && mappedPath.includes("<name>") && !objectiveName) {
@@ -104,14 +125,15 @@ function artifactLocationRecord(name, info, schemasDir, docsOverrides) {
104
125
  display_path: resolvedPath !== null ? projectRelativeOrAbsolute(resolvedPath) : mappedPath,
105
126
  resolution_source: resolutionSource,
106
127
  exists: resolvedPath !== null ? fs.existsSync(resolvedPath) : false,
107
- docs_yaml_can_override_path: record !== null ? record.docsYamlCanOverridePath : false,
128
+ docs_yaml_can_override_path: record?.docsYamlCanOverridePath ?? false,
108
129
  project_boundary_check: resolvedPath !== null ? "enforced" : "not_resolved",
109
130
  };
110
131
  return {
111
- artifact_id: artifactId,
132
+ artifact: artifactId,
112
133
  name: artifactId,
113
134
  display_name: displayName,
114
135
  artifact_type: record !== null ? record.artifactType : meta.artifact_type ?? "unknown",
136
+ implementation_status: record !== null ? record.implementationStatus : meta.implementation_status ?? "implemented",
115
137
  format: typeof meta === "object" ? meta.format ?? "unknown" : "unknown",
116
138
  producer: record !== null ? [...record.producers].sort() : meta.producer ?? "unknown",
117
139
  consumers: record !== null ? [...record.consumers].sort() : meta.consumers ?? "unknown",
@@ -130,9 +152,8 @@ function fileExists(p) {
130
152
  }
131
153
  }
132
154
  export function artifactLocationContract(schemasDir, schemas) {
133
- const docsOverrides = loadDocsPathOverrides(process.cwd());
134
155
  const names = Object.keys(schemas).sort();
135
- const records = names.map((name) => artifactLocationRecord(name, schemas[name], schemasDir, docsOverrides));
156
+ const records = names.map((name) => artifactLocationRecord(name, schemas[name], schemasDir));
136
157
  // cast: record.caveats is built from schema/registry path resolution (IO boundary)
137
158
  const caveats = records.flatMap((record) => record.caveats);
138
159
  return {
@@ -140,8 +161,7 @@ export function artifactLocationContract(schemasDir, schemas) {
140
161
  status: dirExists(schemasDir) ? "complete" : "missing_schemas",
141
162
  source: {
142
163
  schemas_dir: schemasDir,
143
- docs_yaml_path: path.join(process.cwd(), ".agentera", "docs.yaml"),
144
- docs_yaml_overrides_loaded: Object.keys(docsOverrides).length > 0,
164
+ path_overrides: "disabled_for_entity_authority",
145
165
  },
146
166
  source_contract: {
147
167
  raw_artifact_reads_required_for_discovery: false,
@@ -213,30 +233,35 @@ function queryGeneric(args, schemas, name, io) {
213
233
  }
214
234
  return 0;
215
235
  }
216
- function queryLastPhase(args, schemas, io) {
217
- const o = out(io);
218
- const e = err(io);
236
+ function matchedSchemaName(schemas, query) {
237
+ if (query in schemas)
238
+ return query;
239
+ return Object.keys(schemas).find((name) => query === name.replace(/s$/, "") || query === `${name}s`) ?? null;
240
+ }
241
+ function rejectEntityAggregateQuery(args, name, query, io) {
219
242
  const format = args.format ?? "text";
220
- const info = schemas.progress;
221
- if (!info) {
222
- e(missingSchemaError("progress") + "\n");
223
- return 1;
243
+ const command = `agentera state ${name} --format ${format}`;
244
+ if (format !== "text") {
245
+ emitStructured({ schemaVersion: "agentera.stateFailure.v1", status: "fail", error: { class: "unsupported_target", message: `routine artifact alias '${query}' is not available through state query`, syntax: command, example: command, recovery: `Use the canonical entity-aware command: ${command}` } }, format, out(io));
224
246
  }
225
- const data = loadArtifact(artifactPath(info, "progress"));
226
- const entries = extractEntries(data);
227
- if (entries.length === 0) {
228
- if (format !== "text")
229
- emitStructured(null, format, o);
230
- return 0;
247
+ else {
248
+ err(io)(`Unsupported routine query: ${query}. Use \`${command}\` instead.\n`);
231
249
  }
232
- const last = recentCycles(entries, 1)[0];
233
- const phase = last.phase ?? "";
234
- if (format !== "text") {
235
- emitStructured({ phase }, format, o);
236
- return 0;
250
+ return 1;
251
+ }
252
+ function queryLastPhase(args, schemas, io) {
253
+ const o = out(io);
254
+ const format = args.format ?? "text";
255
+ const response = listProgressEntities(process.cwd(), 1, {}, undefined, { format: format });
256
+ const entry = Array.isArray(response.entries) ? response.entries[0] : undefined;
257
+ const record = entry?.record;
258
+ const phase = String(record?.phase ?? "");
259
+ if (format === "text") {
260
+ if (phase)
261
+ o(`${phase}\n`);
237
262
  }
238
- if (phase)
239
- o(phase + "\n");
263
+ else
264
+ emitStructured(entry ? { phase, id: entry.id, artifact: entry.artifact, provenance: entry.provenance, snapshot: response.snapshot, retrieval: { get: `agentera state progress get --id ${entry.id} --format json` } } : null, format, o);
240
265
  return 0;
241
266
  }
242
267
  function queryDesign(args, schemas, io) {
@@ -317,10 +342,6 @@ export function cmdQuery(args, io) {
317
342
  if (query.includes("/") || query.includes("\\") || query === "." || query === ".." || ENCODED_TRAVERSAL_RE.test(query)) {
318
343
  throw new Error(`unsupported artifact/query name ${pyRepr(query)}; path-like values are not artifact names`);
319
344
  }
320
- if (STATE_COMMAND_NAMES.has(query)) {
321
- e(`Unsupported routine query: ${query}. Use \`agentera ${query}\` instead.\n`);
322
- return 1;
323
- }
324
345
  const schemas = loadSchemas(discoverSchemasDir());
325
346
  const stateArgs = args;
326
347
  const handlers = {
@@ -329,16 +350,18 @@ export function cmdQuery(args, io) {
329
350
  "open-todos": (a, s, ioo) => queryTodo({ ...a, command: "todo" }, s, ioo, true),
330
351
  };
331
352
  if (query in handlers) {
332
- if (format !== "text" && query in schemas)
333
- return queryGeneric(args, schemas, query, io);
334
- return handlers[query](args, schemas, io);
353
+ if (format === "text" || !(query in schemas))
354
+ return handlers[query](args, schemas, io);
335
355
  }
336
- if (query in schemas)
337
- return queryGeneric(args, schemas, query, io);
338
- for (const name of Object.keys(schemas)) {
339
- if (query === name || query === name.replace(/s$/, "") || query === name + "s") {
340
- return queryGeneric(args, schemas, name, io);
356
+ const name = matchedSchemaName(schemas, query);
357
+ if (name !== null) {
358
+ if (STATE_COMMAND_NAMES.has(name)) {
359
+ return rejectEntityAggregateQuery(args, name, query, io);
360
+ }
361
+ if (name === "changelog" && format !== "text") {
362
+ return emitStateStructured(name, readChangelog(process.cwd()).projection, format, args.fields, o, e);
341
363
  }
364
+ return queryGeneric(args, schemas, name, io);
342
365
  }
343
366
  e(`Unknown query: ${query}\n`);
344
367
  return 1;
@@ -346,4 +369,3 @@ export function cmdQuery(args, io) {
346
369
  function pyRepr(value) {
347
370
  return value.includes("'") && !value.includes('"') ? `"${value}"` : `'${value}'`;
348
371
  }
349
- //# sourceMappingURL=query.js.map
@@ -5,14 +5,22 @@ import { resolveProfileDirOverride, resolveXdgDataHome } from "../../core/envPat
5
5
  import { expanduser } from "../../core/paths.js";
6
6
  import { usageMain, corpusTooLargeReason } from "../../analytics/usageStats.js";
7
7
  import { extractCorpusMain } from "../../analytics/extractCorpus.js";
8
+ import { tiersDirForCorpusPath, assessTiers, readBoundedMetadata, } from "../../analytics/extractCorpus/index.js";
8
9
  function buildExtractArgv(args, corpusPath) {
9
- const argv = ["--output", corpusPath];
10
+ // Refresh publishes bounded evidence tiers to the directory co-located with
11
+ // the canonical corpus path (`<dir>/tiers`); the extract engine no longer
12
+ // accepts the monolithic `--output corpusPath` write target (tiers are the
13
+ // only canonical output). Passing `--tier-output` makes the displayed
14
+ // `corpus_path`/`tier_path` truthful: tiers land at `dirname(corpusPath)/tiers`.
15
+ const argv = ["--tier-output", tiersDirForCorpusPath(corpusPath)];
10
16
  for (const root of args.projectRoot ?? [])
11
17
  argv.push("--project-root", root);
12
18
  if (args.codexSessionsDir)
13
19
  argv.push("--codex-sessions-dir", args.codexSessionsDir);
14
20
  if (args.claudeProjectsDir)
15
21
  argv.push("--claude-projects-dir", args.claudeProjectsDir);
22
+ for (const source of args.importSources ?? [])
23
+ argv.push("--import-source", source);
16
24
  if (args.opencodeConversationsDir)
17
25
  argv.push("--opencode-conversations-dir", args.opencodeConversationsDir);
18
26
  if (args.copilotConversationsDir)
@@ -23,8 +31,6 @@ function buildExtractArgv(args, corpusPath) {
23
31
  argv.push("--cursor-chats-dir", args.cursorChatsDir);
24
32
  if (args.noCodex)
25
33
  argv.push("--no-codex");
26
- if (args.noClaude)
27
- argv.push("--no-claude");
28
34
  if (args.noOpencode)
29
35
  argv.push("--no-opencode");
30
36
  if (args.noCopilot)
@@ -38,7 +44,7 @@ function buildExtractArgv(args, corpusPath) {
38
44
  return argv;
39
45
  }
40
46
  function usageSyntax() {
41
- return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE]";
47
+ return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE] [--sources active|all]";
42
48
  }
43
49
  function usageExample() {
44
50
  return "agentera usage --format json --project agentera";
@@ -73,30 +79,62 @@ export function statsCorpusPath(env = process.env, platform = process.platform)
73
79
  }
74
80
  /** Faithful port of `_stats_existing_corpus_status`. */
75
81
  export function statsExistingCorpusStatus(corpusPath) {
82
+ // Bounded tier path: when tiers are published, report readiness from the
83
+ // manifest + retained corpus metadata without reading full evidence. The
84
+ // documented `tier_state`/`tier_path` fields extend the legacy shape;
85
+ // existing `status`/`reason`/`extracted_at`/`total_records` are preserved.
86
+ const tiersDir = tiersDirForCorpusPath(corpusPath);
87
+ const assessment = assessTiers(tiersDir, corpusPath);
88
+ if (assessment.analyzable) {
89
+ const meta = readBoundedMetadata(tiersDir);
90
+ const manifest = meta.manifest;
91
+ const extractedAt = meta.corpusMetadata?.extracted_at ?? null;
92
+ return {
93
+ status: "ready",
94
+ path: corpusPath,
95
+ tier_path: tiersDir,
96
+ tier_state: assessment.state,
97
+ reason: "bounded evidence tier published",
98
+ extracted_at: extractedAt ?? (manifest?.published_at ?? null),
99
+ total_records: manifest?.total_records ?? 0,
100
+ };
101
+ }
102
+ if (assessment.state === "oversized" || assessment.state === "corrupt") {
103
+ return {
104
+ status: "stale",
105
+ path: corpusPath,
106
+ tier_path: tiersDir,
107
+ tier_state: assessment.state,
108
+ reason: assessment.recovery ?? `${assessment.state} evidence tier`,
109
+ ...(assessment.artifact ? { artifact: assessment.artifact } : {}),
110
+ };
111
+ }
112
+ // Legacy or missing: preserve the corpus-envelope status behavior.
76
113
  if (!fs.existsSync(corpusPath)) {
77
114
  return { status: "missing", path: corpusPath, reason: "corpus file does not exist" };
78
115
  }
79
116
  const tooLarge = corpusTooLargeReason(corpusPath);
80
117
  if (tooLarge) {
81
- return { status: "stale", path: corpusPath, reason: tooLarge };
118
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: tooLarge };
82
119
  }
83
120
  let data;
84
121
  try {
85
122
  data = JSON.parse(fs.readFileSync(corpusPath, "utf8"));
86
123
  }
87
124
  catch (exc) {
88
- return { status: "stale", path: corpusPath, reason: `corpus is not readable JSON: ${exc.message}` };
125
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: `corpus is not readable JSON: ${exc.message}` };
89
126
  }
90
127
  const records = data && typeof data === "object" && !Array.isArray(data) ? data.records ?? [] : [];
91
128
  const hasTurn = Array.isArray(records) &&
92
129
  records.some((r) => r && typeof r === "object" && r.source_kind === "conversation_turn");
93
130
  if (!hasTurn) {
94
- return { status: "stale", path: corpusPath, reason: "corpus has no conversation_turn records" };
131
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: "corpus has no conversation_turn records" };
95
132
  }
96
133
  const metadata = data.metadata && typeof data.metadata === "object" ? data.metadata : {};
97
134
  return {
98
135
  status: "ready",
99
136
  path: corpusPath,
137
+ tier_state: "legacy",
100
138
  reason: "existing corpus has conversation_turn records",
101
139
  extracted_at: metadata.extracted_at ?? null,
102
140
  total_records: records.length,
@@ -105,9 +143,9 @@ export function statsExistingCorpusStatus(corpusPath) {
105
143
  /**
106
144
  * Faithful port of scripts/agentera `cmd_stats` (canonical command is `report`;
107
145
  * `stats` is the deprecated alias and shares this logic). The plain read path
108
- * reuses the ported usage engine; corpus refresh (which would run the maintainer
109
- * extractor over local runtime history) is reported as unavailable in the
110
- * self-contained package.
146
+ * reuses the ported usage engine over bounded tiers (with a legacy
147
+ * corpus.json fallback when no tiers are published). `stats refresh` publishes
148
+ * bounded tiers from local runtime history under explicit consent.
111
149
  */
112
150
  export function cmdReport(args, io = {}) {
113
151
  const out = io.out ?? ((t) => process.stdout.write(t));
@@ -129,8 +167,24 @@ export function cmdReport(args, io = {}) {
129
167
  return 2;
130
168
  }
131
169
  if (!dryRun && consent !== "local-history") {
132
- err("Error: agentera stats refresh requires explicit --consent local-history to read local runtime history. " +
133
- "Preview first with agentera stats refresh --dry-run\n");
170
+ const recovery = "agentera report refresh --consent local-history";
171
+ const message = "Error: agentera stats refresh requires explicit --consent local-history to read local runtime history. " +
172
+ "Preview first with agentera stats refresh --dry-run";
173
+ if (outputFormat === "json") {
174
+ out(JSON.stringify({
175
+ command: "stats refresh",
176
+ status: "degraded_consent_required",
177
+ recovery,
178
+ privacy: {
179
+ local_history_read: false,
180
+ local_history_write: false,
181
+ tier_write: false,
182
+ required_consent: "local-history",
183
+ provided_consent: consent,
184
+ },
185
+ }, null, 2) + "\n");
186
+ }
187
+ err(`${message}\nRecovery: ${recovery}\n`);
134
188
  return 2;
135
189
  }
136
190
  const corpusPath = args.output || statsCorpusPath();
@@ -143,27 +197,31 @@ export function cmdReport(args, io = {}) {
143
197
  privacy: {
144
198
  local_history_read: false,
145
199
  local_history_write: false,
146
- corpus_write: false,
200
+ tier_write: false,
147
201
  required_consent: "local-history",
148
202
  provided_consent: null,
149
203
  },
150
204
  corpus_path: corpusPath,
205
+ tier_path: tiersDirForCorpusPath(corpusPath),
151
206
  engine: { command: engineCommand },
152
207
  diagnostics: [
153
- "dry-run does not read runtime history or write corpus files",
154
- "generated corpus is internal state for stats at $AGENTERA_PROFILE_DIR/intermediate/corpus.json",
208
+ "dry-run does not read runtime history or write tier files",
209
+ "published tiers are internal state for stats at $AGENTERA_PROFILE_DIR/intermediate/tiers",
210
+ ...(args.importSources?.includes("claude")
211
+ ? ["Claude historical import can contain secrets, file contents, and command output; apply stays local and read-only"]
212
+ : []),
155
213
  ],
156
214
  };
157
215
  if (outputFormat === "json") {
158
216
  out(JSON.stringify(payload, null, 2) + "\n");
159
217
  }
160
218
  else {
161
- out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\nengine=${engineCommand.join(" ")}\n`);
162
- out("privacy=local_history_read=false, corpus_write=false, required_consent=local-history\n");
219
+ out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\nengine=${engineCommand.join(" ")}\n`);
220
+ out("privacy=local_history_read=false, tier_write=false, required_consent=local-history\n");
163
221
  }
164
222
  return 0;
165
223
  }
166
- // consent === "local-history": run the corpus extractor over local history.
224
+ // consent === "local-history": extract local history into bounded tiers.
167
225
  let engineOut = "";
168
226
  let engineErr = "";
169
227
  const rc = extractCorpusMain(engineArgv, {
@@ -175,15 +233,26 @@ export function cmdReport(args, io = {}) {
175
233
  command: "stats refresh",
176
234
  status: refreshStatus,
177
235
  exit_signal: rc === 4 ? "EX2" : null,
178
- privacy: { local_history_read: true, local_history_write: false, corpus_write: rc === 0, required_consent: "local-history", provided_consent: "local-history" },
236
+ privacy: {
237
+ local_history_read: true,
238
+ local_history_write: false,
239
+ tier_write: rc === 0,
240
+ required_consent: "local-history",
241
+ provided_consent: "local-history",
242
+ historical_imports: args.importSources ?? [],
243
+ historical_import_warning: args.importSources?.includes("claude")
244
+ ? "Claude transcripts can contain secrets, file contents, and command output. Import is local and read-only."
245
+ : null,
246
+ },
179
247
  corpus_path: corpusPath,
248
+ tier_path: tiersDirForCorpusPath(corpusPath),
180
249
  engine: { command: engineCommand, exit_code: rc, stdout: engineOut.split("\n").filter((l) => l), stderr: engineErr.split("\n").filter((l) => l) },
181
250
  };
182
251
  if (outputFormat === "json") {
183
252
  out(JSON.stringify(payload, null, 2) + "\n");
184
253
  }
185
254
  else {
186
- out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\n`);
255
+ out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\n`);
187
256
  if (engineOut)
188
257
  out(engineOut);
189
258
  if (engineErr)
@@ -221,6 +290,8 @@ export function cmdReport(args, io = {}) {
221
290
  const engineArgs = ["--corpus", corpusPath];
222
291
  if (args.project)
223
292
  engineArgs.push("--project", args.project);
293
+ if (args.sources)
294
+ engineArgs.push("--sources", args.sources);
224
295
  if (outputFormat === "json")
225
296
  engineArgs.push("--json");
226
297
  return usageMain(engineArgs, {
@@ -228,4 +299,3 @@ export function cmdReport(args, io = {}) {
228
299
  err: (t) => err(t + "\n"),
229
300
  });
230
301
  }
231
- //# sourceMappingURL=report.js.map
@@ -0,0 +1,142 @@
1
+ import fs from "node:fs";
2
+ import { loadYamlMapping } from "../../core/yaml.js";
3
+ import { HybridRouteRegistryError, resolveRouteRequest } from "../../registries/hybridRoute.js";
4
+ import { RouteReceiptValidationError, validateRouteReceiptSubmission } from "../../registries/hybridRouteReceipt.js";
5
+ import { evaluateHybridRoute } from "../../eval/hybridRouteEvaluation.js";
6
+ import { emitStructured } from "../structured.js";
7
+ import { emitInvalidInput } from "../errors.js";
8
+ import { preCutoverCommand } from "../preCutoverCommand.js";
9
+ /** A conformance report that fails is a failed CLI gate, not a successful invocation. */
10
+ export const ROUTE_EVALUATION_FAILED_EXIT_CODE = 1;
11
+ export function routeEvaluationExitCode(report) {
12
+ return report.status === "fail" ? ROUTE_EVALUATION_FAILED_EXIT_CODE : 0;
13
+ }
14
+ function decodeRouteInput(bytes) {
15
+ return new TextDecoder("utf-8", { fatal: true }).decode(bytes);
16
+ }
17
+ function loadRouteInput(source, readStdin) {
18
+ let bytes;
19
+ try {
20
+ if (source === "-") {
21
+ const stdin = readStdin();
22
+ bytes = typeof stdin === "string" ? Buffer.from(stdin, "utf8") : stdin;
23
+ }
24
+ else {
25
+ bytes = fs.readFileSync(source);
26
+ }
27
+ }
28
+ catch {
29
+ throw new Error("route request input is not readable");
30
+ }
31
+ return loadYamlMapping(decodeRouteInput(bytes));
32
+ }
33
+ function invalidRouteInput(io, body) {
34
+ return emitInvalidInput({ out: io.out, err: io.err }, { format: "json", body });
35
+ }
36
+ function parse(argv) {
37
+ let input;
38
+ let format = "json";
39
+ for (let index = 0; index < argv.length; index += 1) {
40
+ const argument = argv[index];
41
+ const [name, inline] = argument.split("=", 2);
42
+ if (name === "--input" || name === "--format") {
43
+ const value = inline ?? argv[++index];
44
+ if (!value || value.startsWith("--"))
45
+ return { class: "missing_argument", message: `${name} requires a value`, syntax: `${name} VALUE` };
46
+ if (name === "--input") {
47
+ if (input)
48
+ return { class: "mutually_exclusive", message: "--input may only be supplied once" };
49
+ input = value;
50
+ }
51
+ else if (value !== "json") {
52
+ return { class: "invalid_choice", message: `argument --format: invalid choice: '${value}' (choose from 'json')`, valid_values: ["json"] };
53
+ }
54
+ continue;
55
+ }
56
+ return { class: "unrecognized_argument", message: "unrecognized route argument; request text must be supplied through --input" };
57
+ }
58
+ if (!input)
59
+ return { class: "missing_argument", message: "--input is required so request text is not placed in argv", syntax: "--input PATH", example: preCutoverCommand("route request --input - --format json") };
60
+ return { input, format };
61
+ }
62
+ export function runRouteRequest(argv, io) {
63
+ const parsed = parse(argv);
64
+ if ("class" in parsed)
65
+ return invalidRouteInput(io, parsed);
66
+ let input;
67
+ try {
68
+ input = loadRouteInput(parsed.input, io.stdin ?? readStdin);
69
+ }
70
+ catch {
71
+ return invalidRouteInput(io, { class: "invalid_format", message: "route request input must be a readable YAML or JSON mapping", syntax: "--input PATH" });
72
+ }
73
+ if (Object.keys(input).some((key) => key !== "version" && key !== "request")) {
74
+ return invalidRouteInput(io, { class: "schema_violation", message: "route request input contains unsupported fields" });
75
+ }
76
+ if (input.version !== undefined && input.version !== "agentera.route_request.v1") {
77
+ return invalidRouteInput(io, { class: "schema_violation", message: "route request version must be agentera.route_request.v1" });
78
+ }
79
+ if (typeof input.request !== "string") {
80
+ return invalidRouteInput(io, { class: "invalid_request", message: "route request input requires a string request field" });
81
+ }
82
+ try {
83
+ emitStructured(resolveRouteRequest(input.request), parsed.format, io.out ?? ((text) => process.stdout.write(text)));
84
+ return 0;
85
+ }
86
+ catch (error) {
87
+ if (error instanceof HybridRouteRegistryError) {
88
+ return invalidRouteInput(io, { class: "conflict", message: "routing authority validation failed before routing" });
89
+ }
90
+ return invalidRouteInput(io, { class: "invalid_request", message: "route request could not be resolved" });
91
+ }
92
+ }
93
+ export function runRouteReceipt(argv, io) {
94
+ const parsed = parse(argv);
95
+ if ("class" in parsed)
96
+ return invalidRouteInput(io, parsed);
97
+ let input;
98
+ try {
99
+ input = loadRouteInput(parsed.input, io.stdin ?? readStdin);
100
+ emitStructured(validateRouteReceiptSubmission(input), parsed.format, io.out ?? ((text) => process.stdout.write(text)));
101
+ return 0;
102
+ }
103
+ catch (error) {
104
+ const message = error instanceof RouteReceiptValidationError
105
+ ? `invalid route receipt at ${error.field}: ${error.message}`
106
+ : "route receipt input must be a readable UTF-8 YAML or JSON mapping";
107
+ return emitInvalidInput({ out: io.out, err: io.err }, {
108
+ format: "json",
109
+ body: {
110
+ class: "invalid_receipt",
111
+ message,
112
+ recovery: "Submit the original request and a complete nullable host receipt through --input; no capability was started.",
113
+ },
114
+ exitCode: 64,
115
+ });
116
+ }
117
+ }
118
+ /** Run the contract-owned frozen synthetic corpus without invoking a semantic host. */
119
+ export function runRouteEvaluation(argv, io) {
120
+ if (argv.length !== 2 || argv[0] !== "--format" || argv[1] !== "json") {
121
+ return invalidRouteInput(io, {
122
+ class: "unrecognized_argument",
123
+ message: "route evaluation accepts only --format json and never accepts request text or corpus overrides",
124
+ syntax: preCutoverCommand("route evaluate --format json"),
125
+ });
126
+ }
127
+ try {
128
+ const report = evaluateHybridRoute();
129
+ emitStructured(report, "json", io.out ?? ((text) => process.stdout.write(text)));
130
+ return routeEvaluationExitCode(report);
131
+ }
132
+ catch {
133
+ return invalidRouteInput(io, {
134
+ class: "conflict",
135
+ message: "routing evaluation authority validation failed before evaluation",
136
+ recovery: "Restore the contract-owned corpus and authorities, then retry; no request was sent or persisted.",
137
+ });
138
+ }
139
+ }
140
+ function readStdin() {
141
+ return process.stdin.isTTY ? Buffer.alloc(0) : fs.readFileSync(0);
142
+ }