agentera 3.0.0-dev.8 → 3.0.0-dev.80

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 (724) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +252 -22
  3. package/bundle/.agentera-build-source.json +8 -0
  4. package/bundle/CHANGELOG.md +1387 -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 +271 -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 +443 -188
  13. package/bundle/references/adapters/package-surface-characterization.md +68 -34
  14. package/bundle/references/adapters/product-v1-reset.yaml +101 -0
  15. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  16. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  17. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  18. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  19. package/bundle/references/analysis/evidence-tier-authority.yaml +559 -0
  20. package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
  21. package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
  22. package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
  23. package/bundle/references/analysis/verification-policy.yaml +261 -0
  24. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  25. package/bundle/references/artifacts/glossary-entry-contract.yaml +2906 -0
  26. package/bundle/references/artifacts/state-storage-authority.yaml +3065 -0
  27. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  28. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  29. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  30. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  31. package/bundle/references/cli/routing-model.md +152 -93
  32. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  33. package/bundle/references/cli/update-channels.yaml +7 -5
  34. package/bundle/references/cli/vocabulary-index.yaml +7 -9
  35. package/bundle/references/cli/vocabulary.md +54 -97
  36. package/bundle/references/meta/retained-reference-authority.yaml +171 -0
  37. package/bundle/skills/agentera/SKILL.md +183 -63
  38. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  39. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  40. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  41. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  42. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  43. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  44. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  45. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  46. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  47. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  48. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  49. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  51. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  52. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  53. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  54. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  55. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  56. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  57. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  58. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  59. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  60. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  62. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  63. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  64. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  65. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  66. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  67. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  68. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
  69. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
  70. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  71. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
  72. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  73. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  74. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  75. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  76. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  77. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  79. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  81. package/bundle/skills/agentera/protocol.yaml +4 -4
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +29 -30
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -43
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -34
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +53 -51
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -35
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +453 -55
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +128 -39
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +305 -7
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +0 -19
  95. package/dist/.agentera-build-source.json +8 -0
  96. package/dist/analytics/extractCorpus/cli.js +52 -11
  97. package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
  98. package/dist/analytics/extractCorpus/core.js +262 -14
  99. package/dist/analytics/extractCorpus/corpus.js +57 -18
  100. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  101. package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
  102. package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
  103. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  104. package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
  105. package/dist/analytics/extractCorpus/index.js +4 -2
  106. package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
  107. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  108. package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
  109. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  110. package/dist/analytics/extractCorpus.js +0 -1
  111. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  112. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  113. package/dist/analytics/personalGlossaryAdmission.js +113 -0
  114. package/dist/analytics/personalGlossaryCandidateProjection.js +788 -0
  115. package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
  116. package/dist/analytics/personalGlossaryCandidateProjectionModel.js +1 -0
  117. package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
  118. package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
  119. package/dist/analytics/personalGlossaryDecision.js +203 -0
  120. package/dist/analytics/personalGlossaryExplicit.js +788 -0
  121. package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
  122. package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
  123. package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
  124. package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
  125. package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
  126. package/dist/analytics/personalGlossaryProfile.js +229 -0
  127. package/dist/analytics/personalGlossaryRecurrence.js +618 -0
  128. package/dist/analytics/personalGlossaryRefreshProjection.js +351 -0
  129. package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
  130. package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
  131. package/dist/analytics/profileSignals.js +211 -0
  132. package/dist/analytics/usageStats.js +150 -23
  133. package/dist/audit/terminologyDrift.js +281 -0
  134. package/dist/bin/agentera.js +3 -2
  135. package/dist/capabilities/audit/instructions.js +16 -6
  136. package/dist/capabilities/build/instructions.js +59 -6
  137. package/dist/capabilities/design/instructions.js +3 -4
  138. package/dist/capabilities/discuss/instructions.js +29 -6
  139. package/dist/capabilities/document/instructions.js +11 -6
  140. package/dist/capabilities/index.js +20 -14
  141. package/dist/capabilities/optimize/instructions.js +14 -6
  142. package/dist/capabilities/orchestrate/instructions.js +42 -6
  143. package/dist/capabilities/plan/instructions.js +30 -3
  144. package/dist/capabilities/profile/instructions.js +104 -5
  145. package/dist/capabilities/research/instructions.js +4 -5
  146. package/dist/capabilities/status/instructions.js +15 -6
  147. package/dist/capabilities/status/startupInstructions.js +34 -0
  148. package/dist/capabilities/vision/instructions.js +3 -5
  149. package/dist/cli/appContext.js +14 -7
  150. package/dist/cli/argvalidate.js +0 -1
  151. package/dist/cli/capabilityContext/benchmark.js +5 -4
  152. package/dist/cli/capabilityContext/bespoke.js +14 -6
  153. package/dist/cli/capabilityContext/build.js +116 -42
  154. package/dist/cli/capabilityContext/closeout.js +30 -27
  155. package/dist/cli/capabilityContext/contract.js +18 -27
  156. package/dist/cli/capabilityContext/evidence.js +84 -77
  157. package/dist/cli/capabilityContext/index.js +0 -1
  158. package/dist/cli/capabilityContext/orchestration.js +42 -18
  159. package/dist/cli/capabilityContext/planState.js +89 -96
  160. package/dist/cli/capabilityContext/progress.js +52 -12
  161. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  162. package/dist/cli/capabilityContext/shared.js +9 -20
  163. package/dist/cli/capabilityContext/slim.js +52 -8
  164. package/dist/cli/capabilityContext/startup.js +51 -114
  165. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  166. package/dist/cli/capabilityContext/types.js +26 -10
  167. package/dist/cli/capabilityContext.js +0 -1
  168. package/dist/cli/commands/appHome.js +0 -1
  169. package/dist/cli/commands/capability.js +2 -2
  170. package/dist/cli/commands/compact.js +163 -13
  171. package/dist/cli/commands/doctor.js +118 -11
  172. package/dist/cli/commands/durability.js +81 -0
  173. package/dist/cli/commands/glossaryAdvice.js +138 -0
  174. package/dist/cli/commands/lint.js +22 -8
  175. package/dist/cli/commands/personalGlossaryCandidateReads.js +755 -0
  176. package/dist/cli/commands/personalGlossaryDecision.js +349 -0
  177. package/dist/cli/commands/personalGlossaryPublish.js +484 -0
  178. package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
  179. package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
  180. package/dist/cli/commands/prime/briefOrientation.js +845 -0
  181. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  182. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  183. package/dist/cli/commands/prime/collectEntityOrientation.js +338 -0
  184. package/dist/cli/commands/prime/collectOrientationState.js +124 -68
  185. package/dist/cli/commands/prime/orientationOutput.js +271 -59
  186. package/dist/cli/commands/prime/types.js +0 -1
  187. package/dist/cli/commands/prime.js +89 -11
  188. package/dist/cli/commands/profileGrounding.js +55 -0
  189. package/dist/cli/commands/query.js +74 -52
  190. package/dist/cli/commands/report.js +187 -27
  191. package/dist/cli/commands/route.js +142 -0
  192. package/dist/cli/commands/schema.js +436 -138
  193. package/dist/cli/commands/state/decisions.js +40 -56
  194. package/dist/cli/commands/state/docs.js +58 -85
  195. package/dist/cli/commands/state/experimentRecords.js +151 -0
  196. package/dist/cli/commands/state/experiments.js +11 -65
  197. package/dist/cli/commands/state/get.js +129 -0
  198. package/dist/cli/commands/state/health.js +11 -113
  199. package/dist/cli/commands/state/index.js +6 -41
  200. package/dist/cli/commands/state/list.js +194 -0
  201. package/dist/cli/commands/state/objective.js +21 -65
  202. package/dist/cli/commands/state/plan.js +11 -170
  203. package/dist/cli/commands/state/planTasks.js +154 -0
  204. package/dist/cli/commands/state/plans.js +154 -0
  205. package/dist/cli/commands/state/progress.js +11 -45
  206. package/dist/cli/commands/state/shared.js +0 -1
  207. package/dist/cli/commands/state/todo.js +28 -107
  208. package/dist/cli/commands/state/write.js +459 -0
  209. package/dist/cli/commands/upgrade.js +176 -5
  210. package/dist/cli/commands/upgradeVerify.js +118 -0
  211. package/dist/cli/commands/validate.js +235 -136
  212. package/dist/cli/commands/verify.js +73 -16
  213. package/dist/cli/contracts/bundleStatus.js +0 -1
  214. package/dist/cli/contracts/orientationState.js +0 -1
  215. package/dist/cli/dispatch/argvParser.js +0 -1
  216. package/dist/cli/dispatch/check.js +84 -40
  217. package/dist/cli/dispatch/commands.js +3 -3
  218. package/dist/cli/dispatch/index.js +84 -52
  219. package/dist/cli/dispatch/lifecycle.js +182 -62
  220. package/dist/cli/dispatch/prime.js +37 -2
  221. package/dist/cli/dispatch/projections.js +17 -0
  222. package/dist/cli/dispatch/shared.js +1 -2
  223. package/dist/cli/dispatch/state.js +62 -66
  224. package/dist/cli/dispatch.js +0 -1
  225. package/dist/cli/errors.js +16 -17
  226. package/dist/cli/help.js +419 -41
  227. package/dist/cli/migrationRequired.js +125 -0
  228. package/dist/cli/orientation/attention.js +19 -22
  229. package/dist/cli/orientation/corpusCoverage.js +32 -1
  230. package/dist/cli/orientation.js +346 -129
  231. package/dist/cli/planArtifacts.js +350 -0
  232. package/dist/cli/planEvidence.js +157 -0
  233. package/dist/cli/planLifecycleState.js +36 -0
  234. package/dist/cli/planTaskIndex.js +11 -0
  235. package/dist/cli/preCutoverCommand.js +32 -0
  236. package/dist/cli/prime-blob.js +71 -3
  237. package/dist/cli/productV1Eol.js +55 -0
  238. package/dist/cli/profileAcquisition.js +167 -0
  239. package/dist/cli/startupCompletenessContract.js +11 -9
  240. package/dist/cli/stateQuery.js +47 -12
  241. package/dist/cli/structured.js +0 -1
  242. package/dist/cli/todoMarkdown.js +25 -12
  243. package/dist/cli/todoReadinessSelection.js +192 -0
  244. package/dist/cli/todoSeverity.js +0 -1
  245. package/dist/core/atomicWriter.js +23 -0
  246. package/dist/core/developmentChannel.js +1 -0
  247. package/dist/core/developmentInvocation.js +377 -0
  248. package/dist/core/difflib.js +0 -1
  249. package/dist/core/envPaths.js +0 -1
  250. package/dist/core/jsonValue.js +0 -1
  251. package/dist/core/paths.js +0 -1
  252. package/dist/core/pyjson.js +0 -1
  253. package/dist/core/shell.js +4 -0
  254. package/dist/core/skillIdentity.js +23 -0
  255. package/dist/core/sourceRoot.js +9 -12
  256. package/dist/core/text.js +10 -0
  257. package/dist/core/toml.js +0 -1
  258. package/dist/core/yaml.js +61 -2
  259. package/dist/eval/evalSkills.js +13 -14
  260. package/dist/eval/glossaryEvaluation.js +751 -0
  261. package/dist/eval/glossaryEvaluationProcess.js +29 -0
  262. package/dist/eval/glossaryEvaluationRunner.js +571 -0
  263. package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
  264. package/dist/eval/hybridRouteEvaluation.js +155 -0
  265. package/dist/eval/semanticEval.js +0 -1
  266. package/dist/eval/semanticFixtures.js +0 -1
  267. package/dist/hooks/common.js +3 -56
  268. package/dist/hooks/compaction/apply.js +224 -47
  269. package/dist/hooks/compaction/dryRun.js +2 -1
  270. package/dist/hooks/compaction/index.js +5 -6
  271. package/dist/hooks/compaction/parse.js +73 -6
  272. package/dist/hooks/compaction/retention.js +28 -25
  273. package/dist/hooks/compaction/status.js +145 -26
  274. package/dist/hooks/compaction/types.js +0 -1
  275. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  276. package/dist/hooks/validateArtifact/index.js +6 -65
  277. package/dist/hooks/validateArtifact/markdown.js +9 -10
  278. package/dist/hooks/validateArtifact/schema.js +96 -9
  279. package/dist/hooks/validateArtifact/traversal.js +12 -11
  280. package/dist/hooks/validateArtifact/violations.js +5 -3
  281. package/dist/migrate/v2HandoffManifest.js +8 -3
  282. package/dist/registries/activationContract.js +2 -0
  283. package/dist/registries/activationTuples.js +145 -0
  284. package/dist/registries/artifactProtocolIds.js +2 -1
  285. package/dist/registries/artifactRegistry.js +207 -60
  286. package/dist/registries/artifactSchemaProjection.js +45 -0
  287. package/dist/registries/capabilityContract.js +5 -21
  288. package/dist/registries/evaluatorHandoffContract.js +0 -1
  289. package/dist/registries/evidenceTierContract.js +375 -0
  290. package/dist/registries/explicitSegmentGrammarContract.js +619 -0
  291. package/dist/registries/glossaryAdviceContract.js +79 -0
  292. package/dist/registries/glossaryCandidateContractPaths.js +6 -0
  293. package/dist/registries/glossaryCandidateContracts.js +820 -0
  294. package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
  295. package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
  296. package/dist/registries/glossaryCandidateProjectionAuthority.js +345 -0
  297. package/dist/registries/glossaryCandidateProjectionContract.js +108 -0
  298. package/dist/registries/glossaryCaveatContract.js +67 -0
  299. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  300. package/dist/registries/glossaryEntryContract.js +759 -0
  301. package/dist/registries/glossaryEntryTemporal.js +12 -0
  302. package/dist/registries/glossaryMiningAuthority.js +764 -0
  303. package/dist/registries/glossaryProfileFullContract.js +24 -0
  304. package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
  305. package/dist/registries/glossaryReviewRecordsContract.js +129 -0
  306. package/dist/registries/glossaryTermIdentity.js +139 -0
  307. package/dist/registries/glossaryTermOccurrence.js +20 -0
  308. package/dist/registries/hybridRoute.js +274 -0
  309. package/dist/registries/hybridRouteReceipt.js +221 -0
  310. package/dist/registries/packagePublication.js +273 -0
  311. package/dist/registries/packageRegistry.js +184 -209
  312. package/dist/registries/personalGlossaryContracts.js +1 -0
  313. package/dist/registries/todoReadinessContract.js +448 -0
  314. package/dist/registries/triggerLoader.js +7 -44
  315. package/dist/registries/verbosityBudgetContract.js +205 -0
  316. package/dist/release/releaseMetadata.js +168 -11
  317. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  318. package/dist/runtime/lifecycleAdapters.js +777 -0
  319. package/dist/runtime/lifecycleAuthority.js +453 -0
  320. package/dist/runtime/lifecycleOperationContract.js +123 -0
  321. package/dist/runtime/lifecycleOperations.js +634 -0
  322. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  323. package/dist/runtime/lifecyclePublication.js +415 -0
  324. package/dist/runtime/lifecycleSnapshot.js +438 -0
  325. package/dist/runtime/nativeResourceCleanup.js +503 -0
  326. package/dist/setup/opencode.js +20 -13
  327. package/dist/setup/opencodeConstants.js +1 -0
  328. package/dist/setup/sharedSkill.js +45 -0
  329. package/dist/setup/smokeChecks.js +14 -75
  330. package/dist/state/archiveDiscovery.js +580 -0
  331. package/dist/state/archivePublication.js +225 -0
  332. package/dist/state/archiveRecovery.js +237 -0
  333. package/dist/state/archiveReplay.js +53 -0
  334. package/dist/state/canonicalMigrationRecord.js +36 -0
  335. package/dist/state/changelog.js +221 -0
  336. package/dist/state/decisionEntities.js +367 -0
  337. package/dist/state/decisionLegacyValidation.js +215 -0
  338. package/dist/state/decisionMigrationProvenance.js +199 -0
  339. package/dist/state/decisionOverlay.js +254 -0
  340. package/dist/state/decisionRevision.js +256 -0
  341. package/dist/state/decisionRevisionMigration.js +89 -0
  342. package/dist/state/directRetrieval.js +323 -0
  343. package/dist/state/durability.js +324 -0
  344. package/dist/state/entityCutover.js +459 -0
  345. package/dist/state/entityCutoverGit.js +127 -0
  346. package/dist/state/entityGlossaryAuthority.js +13 -0
  347. package/dist/state/entityListProjection.js +187 -0
  348. package/dist/state/entityListRuntimeRegistry.js +85 -0
  349. package/dist/state/entityMigrationCausality.js +97 -0
  350. package/dist/state/entityMigrationIdentity.js +5 -0
  351. package/dist/state/entityMigrationPreview.js +840 -0
  352. package/dist/state/entityMigrationTodo.js +133 -0
  353. package/dist/state/entityPublicationContext.js +859 -0
  354. package/dist/state/entityRetrievalHelp.js +506 -0
  355. package/dist/state/entityStorage.js +899 -0
  356. package/dist/state/exactReplacementRecovery.js +18 -0
  357. package/dist/state/experimentArchive.js +63 -0
  358. package/dist/state/experimentIdentity.js +202 -0
  359. package/dist/state/healthEntities.js +262 -0
  360. package/dist/state/healthEntityValidation.js +18 -0
  361. package/dist/state/healthRepair.js +69 -0
  362. package/dist/state/installRoot.js +15 -7
  363. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  364. package/dist/state/legacyIdentity.js +47 -0
  365. package/dist/state/legacySummaryRecord.js +6 -0
  366. package/dist/state/listAccounting.js +54 -0
  367. package/dist/state/listClassification.js +17 -0
  368. package/dist/state/listCursor.js +42 -0
  369. package/dist/state/listRetrieval.js +781 -0
  370. package/dist/state/migrationSourceBinding.js +30 -0
  371. package/dist/state/objectiveExperimentEntities.js +322 -0
  372. package/dist/state/planEntities.js +1027 -0
  373. package/dist/state/planIdentity.js +47 -0
  374. package/dist/state/planLineageValidation.js +52 -0
  375. package/dist/state/planReplacementTransaction.js +475 -0
  376. package/dist/state/planRetrieval.js +313 -0
  377. package/dist/state/planTaskRetrieval.js +294 -0
  378. package/dist/state/progressEntities.js +512 -0
  379. package/dist/state/progressGlossaryCaveat.js +168 -0
  380. package/dist/state/progressPublicationOrder.js +19 -0
  381. package/dist/state/progressWritePolicy.js +33 -0
  382. package/dist/state/projectRoot.js +62 -0
  383. package/dist/state/projectionPolicy.js +190 -0
  384. package/dist/state/retrievalAuthority.js +156 -0
  385. package/dist/state/safeProjectFile.js +155 -0
  386. package/dist/state/startupAnalysis/benchmark.js +70 -9
  387. package/dist/state/startupAnalysis/contract.js +44 -10
  388. package/dist/state/startupAnalysis/helpers.js +1 -2
  389. package/dist/state/startupAnalysis/index.js +0 -1
  390. package/dist/state/startupAnalysis/metrics.js +0 -1
  391. package/dist/state/startupAnalysis/records.js +0 -1
  392. package/dist/state/startupAnalysis/report.js +0 -1
  393. package/dist/state/startupAnalysis/threshold.js +13 -1
  394. package/dist/state/startupAnalysis.js +0 -1
  395. package/dist/state/startupProjection.js +499 -0
  396. package/dist/state/stateMode.js +222 -0
  397. package/dist/state/stateStorageAuthority.js +47 -0
  398. package/dist/state/summaryEntityRead.js +25 -0
  399. package/dist/state/summaryMigrationProvenance.js +66 -0
  400. package/dist/state/summarySourceRowAuthority.js +36 -0
  401. package/dist/state/todoActivationSafety.js +58 -0
  402. package/dist/state/todoCreateBatch.js +69 -0
  403. package/dist/state/todoDocsEntities.js +1339 -0
  404. package/dist/state/todoDocsEntityValidation.js +158 -0
  405. package/dist/state/todoMarkdownProjection.js +63 -0
  406. package/dist/state/todoReconciliationActivation.js +182 -0
  407. package/dist/state/todoReconciliationInspection.js +184 -0
  408. package/dist/state/todoReconciliationRepair.js +320 -0
  409. package/dist/state/todoReconciliationTransaction.js +628 -0
  410. package/dist/state/todoSeverityHeadings.js +71 -0
  411. package/dist/state/todoTransitionBatch.js +65 -0
  412. package/dist/state/todoUpdateBatch.js +50 -0
  413. package/dist/state/write/assign.js +20 -0
  414. package/dist/state/write/candidateMutation.js +269 -0
  415. package/dist/state/write/errors.js +11 -0
  416. package/dist/state/write/experimentPublication.js +192 -0
  417. package/dist/state/write/explain.js +380 -0
  418. package/dist/state/write/fields.js +61 -0
  419. package/dist/state/write/glossaryPublication.js +263 -0
  420. package/dist/state/write/grammar.js +285 -0
  421. package/dist/state/write/helpers.js +29 -0
  422. package/dist/state/write/index.js +12 -0
  423. package/dist/state/write/input.js +391 -0
  424. package/dist/state/write/lock.js +837 -0
  425. package/dist/state/write/mutation.js +234 -0
  426. package/dist/state/write/operations.js +170 -0
  427. package/dist/state/write/planEvaluation.js +128 -0
  428. package/dist/state/write/planPublication.js +179 -0
  429. package/dist/state/write/runtimeOperations.js +146 -0
  430. package/dist/state/write/serialize.js +1 -0
  431. package/dist/state/write/transaction.js +57 -0
  432. package/dist/state/write/validate.js +7 -0
  433. package/dist/upgrade/appContentRefresh.js +77 -36
  434. package/dist/upgrade/appModel.js +0 -1
  435. package/dist/upgrade/atomicWriter.js +1 -0
  436. package/dist/upgrade/bundleEvidence.js +0 -1
  437. package/dist/upgrade/channels.js +6 -9
  438. package/dist/upgrade/compatibility.js +43 -17
  439. package/dist/upgrade/doctor.js +55 -32
  440. package/dist/upgrade/doctorClassifier.js +11 -1
  441. package/dist/upgrade/installedHooksRetirement.js +46 -40
  442. package/dist/upgrade/legacyAgentCleanup.js +133 -34
  443. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  444. package/dist/upgrade/migrateArtifactsV2ToV3.js +325 -82
  445. package/dist/upgrade/migrationPublication.js +122 -0
  446. package/dist/upgrade/nextMajorDoctor.js +0 -22
  447. package/dist/upgrade/npxPlatformStatus.js +2 -2
  448. package/dist/upgrade/productV1Reset.js +515 -0
  449. package/dist/upgrade/productV1ResetAuthority.js +139 -0
  450. package/dist/upgrade/projectIntegration.js +126 -134
  451. package/dist/upgrade/projectIntegrationDecision.js +21 -13
  452. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  453. package/dist/upgrade/runtimeMigration.js +210 -430
  454. package/dist/upgrade/upgradeCommands.js +14 -1
  455. package/dist/upgrade/upgradeLock.js +85 -0
  456. package/dist/upgrade/upgradeOrchestrator.js +253 -48
  457. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  458. package/dist/upgrade/versionResolution.js +0 -1
  459. package/dist/validate/activationArtifactEvidence.js +866 -0
  460. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  461. package/dist/validate/activationConjunction.js +816 -0
  462. package/dist/validate/activationEvidenceManifest.js +610 -0
  463. package/dist/validate/activationPackageSemantics.js +29 -0
  464. package/dist/validate/appHomeContract.js +1 -7
  465. package/dist/validate/bootstrapAuthority.js +44 -0
  466. package/dist/validate/capability.js +11 -3
  467. package/dist/validate/crossCapability.js +14 -9
  468. package/dist/validate/glossaryVariantGuard.js +96 -0
  469. package/dist/validate/retainedReferenceAuthority.js +879 -0
  470. package/dist/validate/selfAudit.js +39 -45
  471. package/dist/validate/vocabularyAuthority.js +8 -8
  472. package/package.json +39 -13
  473. package/bundle/references/adapters/cursor.md +0 -214
  474. package/bundle/references/adapters/opencode.md +0 -530
  475. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  476. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  477. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  478. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  479. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  480. package/bundle/references/analysis/benchmark.md +0 -267
  481. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  482. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  483. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  484. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  485. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  486. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  487. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  488. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  489. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  490. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  491. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  492. package/bundle/references/meta/documentation-inventory.md +0 -49
  493. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  494. package/bundle/skills/agentera/agents/audit.toml +0 -6
  495. package/bundle/skills/agentera/agents/build.toml +0 -6
  496. package/bundle/skills/agentera/agents/design.toml +0 -6
  497. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  498. package/bundle/skills/agentera/agents/document.toml +0 -6
  499. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  500. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  501. package/bundle/skills/agentera/agents/plan.toml +0 -6
  502. package/bundle/skills/agentera/agents/profile.toml +0 -6
  503. package/bundle/skills/agentera/agents/research.toml +0 -6
  504. package/bundle/skills/agentera/agents/status.toml +0 -6
  505. package/bundle/skills/agentera/agents/vision.toml +0 -6
  506. package/bundle/skills/agentera/references/contract.md +0 -1048
  507. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  508. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  509. package/dist/analytics/extractCorpus/core.js.map +0 -1
  510. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  511. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  512. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  513. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  514. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  515. package/dist/analytics/extractCorpus/index.js.map +0 -1
  516. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  517. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  518. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  519. package/dist/analytics/extractCorpus.js.map +0 -1
  520. package/dist/analytics/usageStats.js.map +0 -1
  521. package/dist/bin/agentera.js.map +0 -1
  522. package/dist/capabilities/audit/instructions.js.map +0 -1
  523. package/dist/capabilities/build/instructions.js.map +0 -1
  524. package/dist/capabilities/design/instructions.js.map +0 -1
  525. package/dist/capabilities/discuss/instructions.js.map +0 -1
  526. package/dist/capabilities/document/instructions.js.map +0 -1
  527. package/dist/capabilities/index.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/plan/instructions.js.map +0 -1
  531. package/dist/capabilities/profile/instructions.js.map +0 -1
  532. package/dist/capabilities/research/instructions.js.map +0 -1
  533. package/dist/capabilities/status/instructions.js.map +0 -1
  534. package/dist/capabilities/vision/instructions.js.map +0 -1
  535. package/dist/cli/appContext.js.map +0 -1
  536. package/dist/cli/argvalidate.js.map +0 -1
  537. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  538. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  539. package/dist/cli/capabilityContext/build.js.map +0 -1
  540. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  541. package/dist/cli/capabilityContext/contract.js.map +0 -1
  542. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  543. package/dist/cli/capabilityContext/index.js.map +0 -1
  544. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  545. package/dist/cli/capabilityContext/planState.js.map +0 -1
  546. package/dist/cli/capabilityContext/progress.js.map +0 -1
  547. package/dist/cli/capabilityContext/shared.js.map +0 -1
  548. package/dist/cli/capabilityContext/slim.js.map +0 -1
  549. package/dist/cli/capabilityContext/startup.js.map +0 -1
  550. package/dist/cli/capabilityContext/types.js.map +0 -1
  551. package/dist/cli/capabilityContext.js.map +0 -1
  552. package/dist/cli/commands/appHome.js.map +0 -1
  553. package/dist/cli/commands/capability.js.map +0 -1
  554. package/dist/cli/commands/compact.js.map +0 -1
  555. package/dist/cli/commands/doctor.js.map +0 -1
  556. package/dist/cli/commands/lint.js.map +0 -1
  557. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  558. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  559. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  560. package/dist/cli/commands/prime/types.js.map +0 -1
  561. package/dist/cli/commands/prime/v1Migration.js +0 -39
  562. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  563. package/dist/cli/commands/prime.js.map +0 -1
  564. package/dist/cli/commands/query.js.map +0 -1
  565. package/dist/cli/commands/report.js.map +0 -1
  566. package/dist/cli/commands/schema.js.map +0 -1
  567. package/dist/cli/commands/state/decisions.js.map +0 -1
  568. package/dist/cli/commands/state/docs.js.map +0 -1
  569. package/dist/cli/commands/state/experiments.js.map +0 -1
  570. package/dist/cli/commands/state/health.js.map +0 -1
  571. package/dist/cli/commands/state/index.js.map +0 -1
  572. package/dist/cli/commands/state/objective.js.map +0 -1
  573. package/dist/cli/commands/state/plan.js.map +0 -1
  574. package/dist/cli/commands/state/progress.js.map +0 -1
  575. package/dist/cli/commands/state/shared.js.map +0 -1
  576. package/dist/cli/commands/state/todo.js.map +0 -1
  577. package/dist/cli/commands/upgrade.js.map +0 -1
  578. package/dist/cli/commands/validate.js.map +0 -1
  579. package/dist/cli/commands/verify.js.map +0 -1
  580. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  581. package/dist/cli/contracts/orientationState.js.map +0 -1
  582. package/dist/cli/dispatch/argvParser.js.map +0 -1
  583. package/dist/cli/dispatch/check.js.map +0 -1
  584. package/dist/cli/dispatch/commands.js.map +0 -1
  585. package/dist/cli/dispatch/index.js.map +0 -1
  586. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  587. package/dist/cli/dispatch/prime.js.map +0 -1
  588. package/dist/cli/dispatch/shared.js.map +0 -1
  589. package/dist/cli/dispatch/state.js.map +0 -1
  590. package/dist/cli/dispatch.js.map +0 -1
  591. package/dist/cli/errors.js.map +0 -1
  592. package/dist/cli/help.js.map +0 -1
  593. package/dist/cli/orientation/attention.js.map +0 -1
  594. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  595. package/dist/cli/orientation.js.map +0 -1
  596. package/dist/cli/prime-blob.js.map +0 -1
  597. package/dist/cli/startupCompletenessContract.js.map +0 -1
  598. package/dist/cli/stateQuery.js.map +0 -1
  599. package/dist/cli/structured.js.map +0 -1
  600. package/dist/cli/todoMarkdown.js.map +0 -1
  601. package/dist/cli/todoSeverity.js.map +0 -1
  602. package/dist/core/difflib.js.map +0 -1
  603. package/dist/core/envPaths.js.map +0 -1
  604. package/dist/core/jsonValue.js.map +0 -1
  605. package/dist/core/paths.js.map +0 -1
  606. package/dist/core/pyjson.js.map +0 -1
  607. package/dist/core/sourceRoot.js.map +0 -1
  608. package/dist/core/toml.js.map +0 -1
  609. package/dist/core/yaml.js.map +0 -1
  610. package/dist/eval/evalSkills.js.map +0 -1
  611. package/dist/eval/semanticEval.js.map +0 -1
  612. package/dist/eval/semanticFixtures.js.map +0 -1
  613. package/dist/hooks/common.js.map +0 -1
  614. package/dist/hooks/compaction/apply.js.map +0 -1
  615. package/dist/hooks/compaction/dryRun.js.map +0 -1
  616. package/dist/hooks/compaction/index.js.map +0 -1
  617. package/dist/hooks/compaction/parse.js.map +0 -1
  618. package/dist/hooks/compaction/retention.js.map +0 -1
  619. package/dist/hooks/compaction/status.js.map +0 -1
  620. package/dist/hooks/compaction/types.js.map +0 -1
  621. package/dist/hooks/cursorPreToolUse.js +0 -19
  622. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  623. package/dist/hooks/cursorSessionStart.js +0 -79
  624. package/dist/hooks/cursorSessionStart.js.map +0 -1
  625. package/dist/hooks/sessionStart.js +0 -216
  626. package/dist/hooks/sessionStart.js.map +0 -1
  627. package/dist/hooks/sessionStop.js +0 -206
  628. package/dist/hooks/sessionStop.js.map +0 -1
  629. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  630. package/dist/hooks/validateArtifact/index.js.map +0 -1
  631. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  632. package/dist/hooks/validateArtifact/runtime.js +0 -86
  633. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  634. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  635. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  636. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  637. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  638. package/dist/registries/artifactProtocolIds.js.map +0 -1
  639. package/dist/registries/artifactRegistry.js.map +0 -1
  640. package/dist/registries/capabilityContract.js.map +0 -1
  641. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  642. package/dist/registries/packageRegistry.js.map +0 -1
  643. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  644. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  645. package/dist/registries/triggerLoader.js.map +0 -1
  646. package/dist/release/releaseMetadata.js.map +0 -1
  647. package/dist/setup/codex/agents.js +0 -96
  648. package/dist/setup/codex/agents.js.map +0 -1
  649. package/dist/setup/codex/cli.js +0 -161
  650. package/dist/setup/codex/cli.js.map +0 -1
  651. package/dist/setup/codex/configToml.js +0 -639
  652. package/dist/setup/codex/configToml.js.map +0 -1
  653. package/dist/setup/codex/constants.js +0 -29
  654. package/dist/setup/codex/constants.js.map +0 -1
  655. package/dist/setup/codex/installRoot.js +0 -64
  656. package/dist/setup/codex/installRoot.js.map +0 -1
  657. package/dist/setup/codex/state.js +0 -270
  658. package/dist/setup/codex/state.js.map +0 -1
  659. package/dist/setup/codex.js +0 -12
  660. package/dist/setup/codex.js.map +0 -1
  661. package/dist/setup/copilot.js +0 -227
  662. package/dist/setup/copilot.js.map +0 -1
  663. package/dist/setup/cursor.js +0 -129
  664. package/dist/setup/cursor.js.map +0 -1
  665. package/dist/setup/cursorSurfaces.js +0 -67
  666. package/dist/setup/cursorSurfaces.js.map +0 -1
  667. package/dist/setup/doctor/core.js +0 -300
  668. package/dist/setup/doctor/core.js.map +0 -1
  669. package/dist/setup/doctor/diagnostics.js +0 -240
  670. package/dist/setup/doctor/diagnostics.js.map +0 -1
  671. package/dist/setup/doctor/opencode.js +0 -313
  672. package/dist/setup/doctor/opencode.js.map +0 -1
  673. package/dist/setup/doctor/report.js +0 -425
  674. package/dist/setup/doctor/report.js.map +0 -1
  675. package/dist/setup/doctor.js +0 -10
  676. package/dist/setup/doctor.js.map +0 -1
  677. package/dist/setup/opencode.js.map +0 -1
  678. package/dist/setup/smokeChecks.js.map +0 -1
  679. package/dist/state/installRoot.js.map +0 -1
  680. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  681. package/dist/state/startupAnalysis/contract.js.map +0 -1
  682. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  683. package/dist/state/startupAnalysis/index.js.map +0 -1
  684. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  685. package/dist/state/startupAnalysis/records.js.map +0 -1
  686. package/dist/state/startupAnalysis/report.js.map +0 -1
  687. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  688. package/dist/state/startupAnalysis.js.map +0 -1
  689. package/dist/upgrade/appContentRefresh.js.map +0 -1
  690. package/dist/upgrade/appModel.js.map +0 -1
  691. package/dist/upgrade/bundleEvidence.js.map +0 -1
  692. package/dist/upgrade/channels.js.map +0 -1
  693. package/dist/upgrade/coexistenceProbe.js +0 -107
  694. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  695. package/dist/upgrade/compatibility.js.map +0 -1
  696. package/dist/upgrade/doctor.js.map +0 -1
  697. package/dist/upgrade/doctorClassifier.js.map +0 -1
  698. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  699. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  700. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  701. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  702. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  703. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  704. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  705. package/dist/upgrade/projectIntegration.js.map +0 -1
  706. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  707. package/dist/upgrade/runtimeMigration.js.map +0 -1
  708. package/dist/upgrade/upgradeCommands.js.map +0 -1
  709. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  710. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  711. package/dist/upgrade/versionResolution.js.map +0 -1
  712. package/dist/validate/appHomeContract.js.map +0 -1
  713. package/dist/validate/capability.js.map +0 -1
  714. package/dist/validate/crossCapability.js.map +0 -1
  715. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  716. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  717. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  718. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  719. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  720. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  721. package/dist/validate/lifecycleAdapters.js +0 -62
  722. package/dist/validate/lifecycleAdapters.js.map +0 -1
  723. package/dist/validate/selfAudit.js.map +0 -1
  724. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import { personalProfileGroundingContract } from "../../registries/glossaryEntryContract.js";
2
+ import { emitInvalidInput } from "../errors.js";
3
+ import { acquireProfile } from "../profileAcquisition.js";
4
+ import { emitStructured } from "../structured.js";
5
+ const COMMAND = "agentera report profile-grounding --format json";
6
+ const REQUEST_RECOVERY = `Run ${COMMAND}; no profile bytes were changed.`;
7
+ const INVALID_PROFILE_MESSAGE = "PROFILE.md is unavailable for bounded profile grounding.";
8
+ function invalid(io, body, recovery) {
9
+ return emitInvalidInput(io, { format: "json", body: { ...body, recovery } });
10
+ }
11
+ export function runProfileGroundingCommand(argv, io) {
12
+ for (let index = 0; index < argv.length; index += 1) {
13
+ const argument = argv[index];
14
+ const [name, inline] = argument.split("=", 2);
15
+ if (name !== "--format") {
16
+ return invalid(io, { class: "unrecognized_argument", message: "profile-grounding accepts only --format json", syntax: COMMAND }, REQUEST_RECOVERY);
17
+ }
18
+ const value = inline ?? argv[++index];
19
+ if (value !== "json") {
20
+ return invalid(io, { class: "invalid_choice", message: "profile-grounding requires --format json", valid_values: ["json"] }, REQUEST_RECOVERY);
21
+ }
22
+ }
23
+ const contract = personalProfileGroundingContract();
24
+ const acquired = acquireProfile();
25
+ const output = io.out ?? ((text) => process.stdout.write(text));
26
+ if (acquired.validity.status !== "valid" || acquired.groundingContent === null) {
27
+ emitStructured({
28
+ schemaVersion: contract.schemaVersion,
29
+ command: "report profile-grounding",
30
+ status: acquired.validity.status,
31
+ validity: acquired.validity,
32
+ freshness: acquired.freshness,
33
+ content: null,
34
+ recovery: acquired.validity.recovery,
35
+ error: {
36
+ class: "profile_unavailable",
37
+ message: INVALID_PROFILE_MESSAGE,
38
+ recovery: acquired.validity.recovery,
39
+ },
40
+ }, "json", output);
41
+ return 2;
42
+ }
43
+ emitStructured({
44
+ schemaVersion: contract.schemaVersion,
45
+ command: "report profile-grounding",
46
+ status: "ok",
47
+ validity: acquired.validity,
48
+ freshness: acquired.freshness,
49
+ content: acquired.groundingContent,
50
+ content_utf8_bytes: Buffer.byteLength(acquired.groundingContent),
51
+ excluded: "owned_personal_glossary_section",
52
+ recovery: null,
53
+ }, "json", output);
54
+ return 0;
55
+ }
@@ -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,23 @@ 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 { acquirePersonalGlossaryRefreshCommitLock, PersonalGlossaryRefreshCommitLockError, produceCurrentPersonalGlossaryProjection, releasePersonalGlossaryRefreshCommitLock, } from "../../analytics/personalGlossaryRefreshProjection.js";
9
+ import { tiersDirForCorpusPath, assessTiers, readBoundedMetadata, readCurrentGeneration, } from "../../analytics/extractCorpus/index.js";
8
10
  function buildExtractArgv(args, corpusPath) {
9
- const argv = ["--output", corpusPath];
11
+ // Refresh publishes bounded evidence tiers to the directory co-located with
12
+ // the canonical corpus path (`<dir>/tiers`); the extract engine no longer
13
+ // accepts the monolithic `--output corpusPath` write target (tiers are the
14
+ // only canonical output). Passing `--tier-output` makes the displayed
15
+ // `corpus_path`/`tier_path` truthful: tiers land at `dirname(corpusPath)/tiers`.
16
+ const argv = ["--tier-output", tiersDirForCorpusPath(corpusPath)];
10
17
  for (const root of args.projectRoot ?? [])
11
18
  argv.push("--project-root", root);
12
19
  if (args.codexSessionsDir)
13
20
  argv.push("--codex-sessions-dir", args.codexSessionsDir);
14
21
  if (args.claudeProjectsDir)
15
22
  argv.push("--claude-projects-dir", args.claudeProjectsDir);
23
+ for (const source of args.importSources ?? [])
24
+ argv.push("--import-source", source);
16
25
  if (args.opencodeConversationsDir)
17
26
  argv.push("--opencode-conversations-dir", args.opencodeConversationsDir);
18
27
  if (args.copilotConversationsDir)
@@ -23,8 +32,6 @@ function buildExtractArgv(args, corpusPath) {
23
32
  argv.push("--cursor-chats-dir", args.cursorChatsDir);
24
33
  if (args.noCodex)
25
34
  argv.push("--no-codex");
26
- if (args.noClaude)
27
- argv.push("--no-claude");
28
35
  if (args.noOpencode)
29
36
  argv.push("--no-opencode");
30
37
  if (args.noCopilot)
@@ -38,7 +45,7 @@ function buildExtractArgv(args, corpusPath) {
38
45
  return argv;
39
46
  }
40
47
  function usageSyntax() {
41
- return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE]";
48
+ return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE] [--sources active|all]";
42
49
  }
43
50
  function usageExample() {
44
51
  return "agentera usage --format json --project agentera";
@@ -73,30 +80,62 @@ export function statsCorpusPath(env = process.env, platform = process.platform)
73
80
  }
74
81
  /** Faithful port of `_stats_existing_corpus_status`. */
75
82
  export function statsExistingCorpusStatus(corpusPath) {
83
+ // Bounded tier path: when tiers are published, report readiness from the
84
+ // manifest + retained corpus metadata without reading full evidence. The
85
+ // documented `tier_state`/`tier_path` fields extend the legacy shape;
86
+ // existing `status`/`reason`/`extracted_at`/`total_records` are preserved.
87
+ const tiersDir = tiersDirForCorpusPath(corpusPath);
88
+ const assessment = assessTiers(tiersDir, corpusPath);
89
+ if (assessment.analyzable) {
90
+ const meta = readBoundedMetadata(tiersDir);
91
+ const manifest = meta.manifest;
92
+ const extractedAt = meta.corpusMetadata?.extracted_at ?? null;
93
+ return {
94
+ status: "ready",
95
+ path: corpusPath,
96
+ tier_path: tiersDir,
97
+ tier_state: assessment.state,
98
+ reason: "bounded evidence tier published",
99
+ extracted_at: extractedAt ?? (manifest?.published_at ?? null),
100
+ total_records: manifest?.total_records ?? 0,
101
+ };
102
+ }
103
+ if (assessment.state === "oversized" || assessment.state === "corrupt") {
104
+ return {
105
+ status: "stale",
106
+ path: corpusPath,
107
+ tier_path: tiersDir,
108
+ tier_state: assessment.state,
109
+ reason: assessment.recovery ?? `${assessment.state} evidence tier`,
110
+ ...(assessment.artifact ? { artifact: assessment.artifact } : {}),
111
+ };
112
+ }
113
+ // Legacy or missing: preserve the corpus-envelope status behavior.
76
114
  if (!fs.existsSync(corpusPath)) {
77
115
  return { status: "missing", path: corpusPath, reason: "corpus file does not exist" };
78
116
  }
79
117
  const tooLarge = corpusTooLargeReason(corpusPath);
80
118
  if (tooLarge) {
81
- return { status: "stale", path: corpusPath, reason: tooLarge };
119
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: tooLarge };
82
120
  }
83
121
  let data;
84
122
  try {
85
123
  data = JSON.parse(fs.readFileSync(corpusPath, "utf8"));
86
124
  }
87
125
  catch (exc) {
88
- return { status: "stale", path: corpusPath, reason: `corpus is not readable JSON: ${exc.message}` };
126
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: `corpus is not readable JSON: ${exc.message}` };
89
127
  }
90
128
  const records = data && typeof data === "object" && !Array.isArray(data) ? data.records ?? [] : [];
91
129
  const hasTurn = Array.isArray(records) &&
92
130
  records.some((r) => r && typeof r === "object" && r.source_kind === "conversation_turn");
93
131
  if (!hasTurn) {
94
- return { status: "stale", path: corpusPath, reason: "corpus has no conversation_turn records" };
132
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: "corpus has no conversation_turn records" };
95
133
  }
96
134
  const metadata = data.metadata && typeof data.metadata === "object" ? data.metadata : {};
97
135
  return {
98
136
  status: "ready",
99
137
  path: corpusPath,
138
+ tier_state: "legacy",
100
139
  reason: "existing corpus has conversation_turn records",
101
140
  extracted_at: metadata.extracted_at ?? null,
102
141
  total_records: records.length,
@@ -105,9 +144,9 @@ export function statsExistingCorpusStatus(corpusPath) {
105
144
  /**
106
145
  * Faithful port of scripts/agentera `cmd_stats` (canonical command is `report`;
107
146
  * `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.
147
+ * reuses the ported usage engine over bounded tiers (with a legacy
148
+ * corpus.json fallback when no tiers are published). `stats refresh` publishes
149
+ * bounded tiers from local runtime history under explicit consent.
111
150
  */
112
151
  export function cmdReport(args, io = {}) {
113
152
  const out = io.out ?? ((t) => process.stdout.write(t));
@@ -129,8 +168,24 @@ export function cmdReport(args, io = {}) {
129
168
  return 2;
130
169
  }
131
170
  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");
171
+ const recovery = "agentera report refresh --consent local-history";
172
+ const message = "Error: agentera stats refresh requires explicit --consent local-history to read local runtime history. " +
173
+ "Preview first with agentera stats refresh --dry-run";
174
+ if (outputFormat === "json") {
175
+ out(JSON.stringify({
176
+ command: "stats refresh",
177
+ status: "degraded_consent_required",
178
+ recovery,
179
+ privacy: {
180
+ local_history_read: false,
181
+ local_history_write: false,
182
+ tier_write: false,
183
+ required_consent: "local-history",
184
+ provided_consent: consent,
185
+ },
186
+ }, null, 2) + "\n");
187
+ }
188
+ err(`${message}\nRecovery: ${recovery}\n`);
134
189
  return 2;
135
190
  }
136
191
  const corpusPath = args.output || statsCorpusPath();
@@ -143,53 +198,157 @@ export function cmdReport(args, io = {}) {
143
198
  privacy: {
144
199
  local_history_read: false,
145
200
  local_history_write: false,
146
- corpus_write: false,
201
+ tier_write: false,
147
202
  required_consent: "local-history",
148
203
  provided_consent: null,
149
204
  },
150
205
  corpus_path: corpusPath,
206
+ tier_path: tiersDirForCorpusPath(corpusPath),
151
207
  engine: { command: engineCommand },
152
208
  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",
209
+ "dry-run does not read runtime history or write tier files",
210
+ "published tiers are internal state for stats at $AGENTERA_PROFILE_DIR/intermediate/tiers",
211
+ ...(args.importSources?.includes("claude")
212
+ ? ["Claude historical import can contain secrets, file contents, and command output; apply stays local and read-only"]
213
+ : []),
155
214
  ],
156
215
  };
157
216
  if (outputFormat === "json") {
158
217
  out(JSON.stringify(payload, null, 2) + "\n");
159
218
  }
160
219
  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");
220
+ out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\nengine=${engineCommand.join(" ")}\n`);
221
+ out("privacy=local_history_read=false, tier_write=false, required_consent=local-history\n");
163
222
  }
164
223
  return 0;
165
224
  }
166
- // consent === "local-history": run the corpus extractor over local history.
225
+ // consent === "local-history": extract local history into bounded tiers.
226
+ const tiersDir = tiersDirForCorpusPath(corpusPath);
227
+ let refreshLock;
228
+ try {
229
+ refreshLock = acquirePersonalGlossaryRefreshCommitLock();
230
+ }
231
+ catch (error) {
232
+ if (!(error instanceof PersonalGlossaryRefreshCommitLockError))
233
+ throw error;
234
+ const recovery = error.recovery;
235
+ const currentGeneration = readCurrentGeneration(tiersDir);
236
+ const projection = {
237
+ status: "failed",
238
+ reason: error.message,
239
+ recovery,
240
+ };
241
+ const payload = {
242
+ command: "stats refresh",
243
+ status: "fail",
244
+ exit_signal: null,
245
+ privacy: {
246
+ local_history_read: false,
247
+ local_history_write: false,
248
+ tier_write: false,
249
+ projection_write: false,
250
+ required_consent: "local-history",
251
+ provided_consent: "local-history",
252
+ historical_imports: args.importSources ?? [],
253
+ historical_import_warning: args.importSources?.includes("claude")
254
+ ? "Claude transcripts can contain secrets, file contents, and command output. Import is local and read-only."
255
+ : null,
256
+ },
257
+ corpus_path: corpusPath,
258
+ tier_path: tiersDir,
259
+ evidence: {
260
+ status: currentGeneration ? "readable" : "unavailable",
261
+ ...(currentGeneration ? {
262
+ generation: currentGeneration.manifest.generation,
263
+ published_at: currentGeneration.manifest.published_at,
264
+ } : {}),
265
+ },
266
+ projection,
267
+ engine: { command: engineCommand, exit_code: null, stdout: [], stderr: [] },
268
+ };
269
+ if (outputFormat === "json") {
270
+ out(JSON.stringify(payload, null, 2) + "\n");
271
+ }
272
+ else {
273
+ out(`agentera stats refresh: fail\ncorpus=${corpusPath}\ntiers=${tiersDir}\n`);
274
+ err(`candidate projection failed: ${projection.reason}\nRecovery: ${recovery}\n`);
275
+ }
276
+ return 1;
277
+ }
167
278
  let engineOut = "";
168
279
  let engineErr = "";
169
- const rc = extractCorpusMain(engineArgv, {
170
- out: (t) => (engineOut += t + "\n"),
171
- err: (t) => (engineErr += t + "\n"),
172
- });
173
- const refreshStatus = rc === 0 ? "pass" : rc === 4 ? "flagged" : "fail";
280
+ let rc;
281
+ let projection = { status: "not_attempted" };
282
+ let finalRc;
283
+ let currentGeneration;
284
+ try {
285
+ rc = extractCorpusMain(engineArgv, {
286
+ out: (t) => (engineOut += t + "\n"),
287
+ err: (t) => (engineErr += t + "\n"),
288
+ });
289
+ finalRc = rc;
290
+ currentGeneration = rc === 0 ? readCurrentGeneration(tiersDir) : null;
291
+ if (rc === 0) {
292
+ try {
293
+ const produced = produceCurrentPersonalGlossaryProjection({ tiersDir });
294
+ projection = { ...produced, write_status: produced.status, status: "published" };
295
+ }
296
+ catch (error) {
297
+ finalRc = 1;
298
+ projection = {
299
+ status: "failed",
300
+ reason: error.message,
301
+ recovery: "npx -y agentera@next report refresh --consent local-history",
302
+ };
303
+ }
304
+ }
305
+ }
306
+ finally {
307
+ releasePersonalGlossaryRefreshCommitLock(refreshLock);
308
+ }
309
+ const refreshStatus = finalRc === 0 ? "pass" : rc === 4 ? "flagged" : "fail";
174
310
  const payload = {
175
311
  command: "stats refresh",
176
312
  status: refreshStatus,
177
313
  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" },
314
+ privacy: {
315
+ local_history_read: true,
316
+ local_history_write: false,
317
+ tier_write: rc === 0,
318
+ projection_write: projection.status === "published",
319
+ required_consent: "local-history",
320
+ provided_consent: "local-history",
321
+ historical_imports: args.importSources ?? [],
322
+ historical_import_warning: args.importSources?.includes("claude")
323
+ ? "Claude transcripts can contain secrets, file contents, and command output. Import is local and read-only."
324
+ : null,
325
+ },
179
326
  corpus_path: corpusPath,
327
+ tier_path: tiersDir,
328
+ evidence: {
329
+ status: rc === 0 ? "published" : "failed",
330
+ ...(currentGeneration ? {
331
+ generation: currentGeneration.manifest.generation,
332
+ published_at: currentGeneration.manifest.published_at,
333
+ } : {}),
334
+ },
335
+ projection,
180
336
  engine: { command: engineCommand, exit_code: rc, stdout: engineOut.split("\n").filter((l) => l), stderr: engineErr.split("\n").filter((l) => l) },
181
337
  };
182
338
  if (outputFormat === "json") {
183
339
  out(JSON.stringify(payload, null, 2) + "\n");
184
340
  }
185
341
  else {
186
- out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\n`);
342
+ out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\n`);
187
343
  if (engineOut)
188
344
  out(engineOut);
189
345
  if (engineErr)
190
346
  err(engineErr);
347
+ if (projection.status === "failed") {
348
+ err(`candidate projection failed: ${String(projection.reason)}\nRecovery: ${String(projection.recovery)}\n`);
349
+ }
191
350
  }
192
- return rc;
351
+ return finalRc;
193
352
  }
194
353
  if (action !== null) {
195
354
  err(`Error: unsupported stats action '${action}'. ` +
@@ -221,6 +380,8 @@ export function cmdReport(args, io = {}) {
221
380
  const engineArgs = ["--corpus", corpusPath];
222
381
  if (args.project)
223
382
  engineArgs.push("--project", args.project);
383
+ if (args.sources)
384
+ engineArgs.push("--sources", args.sources);
224
385
  if (outputFormat === "json")
225
386
  engineArgs.push("--json");
226
387
  return usageMain(engineArgs, {
@@ -228,4 +389,3 @@ export function cmdReport(args, io = {}) {
228
389
  err: (t) => err(t + "\n"),
229
390
  });
230
391
  }
231
- //# sourceMappingURL=report.js.map