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
@@ -41,22 +41,23 @@ function boundsFromRecords(records) {
41
41
  }
42
42
  return { earliest, latest };
43
43
  }
44
- /** Canonical opencode parity snapshot used by TS and the generated Python wrapper. */
44
+ /** Production opencode parity snapshot compared with the generated independent Python oracle. */
45
45
  export function opencodeParitySnapshot(dbPath) {
46
46
  if (!fs.existsSync(dbPath)) {
47
47
  throw new Error(`extract-corpus parity: missing opencode db at ${dbPath}`);
48
48
  }
49
49
  const audit = runCoverageAudit({
50
50
  output: dbPath,
51
+ tierOutput: null,
51
52
  projectRoot: [path.dirname(dbPath)],
52
53
  codexSessionsDir: path.join(path.dirname(dbPath), "unused-codex"),
53
- claudeProjectsDir: path.join(path.dirname(dbPath), "unused-claude"),
54
+ claudeProjectsDir: null,
54
55
  opencodeConversationsDir: dbPath,
55
56
  copilotConversationsDir: null,
56
57
  cursorProjectsDir: null,
57
58
  cursorChatsDir: null,
58
59
  noCodex: true,
59
- noClaude: true,
60
+ importSources: [],
60
61
  noOpencode: false,
61
62
  noCopilot: true,
62
63
  noCursor: true,
@@ -102,4 +103,3 @@ export function opencodeParitySnapshot(dbPath) {
102
103
  },
103
104
  };
104
105
  }
105
- //# sourceMappingURL=extractCorpusParity.js.map
@@ -4,10 +4,7 @@ import { resolvePath } from "../../core/paths.js";
4
4
  import { isPlainObject, isoFromMtime, record, splitLines, } from "./core.js";
5
5
  export function extractInstructionDocuments(projectRoots, errors) {
6
6
  const records = [];
7
- const docNames = [
8
- ["AGENTS.md", "agents_md"],
9
- ["CLAUDE.md", "claude_md"],
10
- ];
7
+ const docNames = [["AGENTS.md", "agents_md"]];
11
8
  for (const root of projectRoots) {
12
9
  for (const [filename, docType] of docNames) {
13
10
  const p = path.join(root, filename);
@@ -26,7 +23,9 @@ export function extractInstructionDocuments(projectRoots, errors) {
26
23
  timestamp: isoFromMtime(p),
27
24
  projectPath: root,
28
25
  runtime: "filesystem",
26
+ origin: resolvePath(p),
29
27
  sourceParts: [resolvePath(p)],
28
+ content,
30
29
  data: { doc_type: docType, name: filename, content, scope: "project" },
31
30
  }));
32
31
  }
@@ -112,11 +111,12 @@ export function extractProjectConfigSignals(projectRoots, errors) {
112
111
  timestamp: isoFromMtime(p),
113
112
  projectPath: root,
114
113
  runtime: "filesystem",
114
+ origin: resolvePath(p),
115
115
  sourceParts: [resolvePath(p), configType],
116
+ content: signals.join("\n"),
116
117
  data: { config_type: configType, file_path: path.relative(root, p), signals },
117
118
  }));
118
119
  }
119
120
  }
120
121
  return records;
121
122
  }
122
- //# sourceMappingURL=filesystemSources.js.map
@@ -1,4 +1,4 @@
1
- export { ADAPTER_VERSION, FAMILIES, RUNTIME_STORE_GLOBS, isoNow, isoFromMtime, stableId, projectIdFromPath, defaultAgenteraHome, defaultProfileDir, defaultOutputPath, runtimeStatus, discoverRuntimeStore, record, payloadItem, eventKind, eventTimestamp, textFromContent, claudeContentItems, iterJsonl, signalType, } from "./core.js";
1
+ export { ADAPTER_VERSION, FAMILIES, RUNTIME_STORE_GLOBS, isoNow, isoFromMtime, stableId, originIdentity, contentFingerprint, transportProvenance, authorClassForRole, missingProvenanceFields, assessProvenance, countIndependentOrigins, projectIdFromPath, defaultAgenteraHome, defaultProfileDir, defaultOutputPath, runtimeStatus, discoverRuntimeStore, record, payloadItem, eventKind, eventTimestamp, textFromContent, claudeContentItems, iterJsonl, signalType, } from "./core.js";
2
2
  export { extractInstructionDocuments, extractProjectConfigSignals } from "./filesystemSources.js";
3
3
  export { extractCodexSessions, extractClaudeProjectSessions } from "./jsonlSessions.js";
4
4
  export { extractOpencodeSessions, PermissionDeniedError } from "./sqliteSessions.js";
@@ -8,5 +8,7 @@ export { ExtractionNotImplementedError, dedupeRecords, buildMetadata, buildCorpu
8
8
  export { formatTruncationWarnings, resolveSqliteCaps, } from "./sqliteCaps.js";
9
9
  export { COVERAGE_EXIT_FLAGGED, corpusEnvelopeCoverage, formatCoverageSummaryText, resolveRuntimeStoreConfigs, runCoverageAudit, } from "./coverageAudit.js";
10
10
  export { parseExtractArgs, extractCorpusMain } from "./cli.js";
11
+ export { TIER_SCHEMA_VERSION, CURRENT_POINTER_VERSION, defaultTiersDir, familyOf, deriveSignalRecords, shardFullEvidence, selectSignalsForBound, generationId, publishEvidenceTiers, readCurrentPointer, readCurrentGeneration, readSignalTier, missingSignalProvenanceFields, getFullRecord, resolveEvidenceAnchor, evidenceTierCompatibility, iterTierRecords, readTierCorpusMetadata, } from "./evidenceTiers.js";
12
+ export { tiersDirForCorpusPath, resolveTiersDir, isAnalyzable, recoveryForState, assessTiers, readBoundedMetadata, iterBoundedRecords, legacyCorpusReadable, } from "./tierReader.js";
11
13
  export { EXTRACT_CORPUS_PARITY_SCHEMA, buildExtractCorpusParityManifest, opencodeParitySnapshot, } from "./extractCorpusParity.js";
12
- //# sourceMappingURL=index.js.map
14
+ export { readProfileSignals, resolveProfileEvidence, profileSignalsStatus, assessProfileSufficiency, } from "../profileSignals.js";
@@ -1,12 +1,43 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { resolvePath } from "../../core/paths.js";
4
- import { claudeContentItems, eventKind, eventTimestamp, isPlainObject, isoFromMtime, iterJsonl, payloadItem, record, rglob, signalType, textFromContent, toolCallRecord, toolCallRecordFromItem, } from "./core.js";
4
+ import { claudeContentItems, authorClassForRole, eventKind, eventTimestamp, inspectTransportProvenance, isPlainObject, isoFromMtime, iterJsonl, payloadItem, record, rglob, signalType, textFromContent, transportProvenance, toolCallRecord, toolCallRecordFromItem, } from "./core.js";
5
5
  function pathStem(p) {
6
6
  const base = path.basename(p);
7
7
  const ext = path.extname(base);
8
8
  return ext ? base.slice(0, -ext.length) : base;
9
9
  }
10
+ function updateSessionProvenance(current, update) {
11
+ if (update.originState === "invalid")
12
+ return current;
13
+ const originId = update.originState === "valid" ? update.originId : current.originId;
14
+ const originChanged = update.originState === "valid" && originId !== current.originId;
15
+ if (originChanged) {
16
+ return {
17
+ originId,
18
+ authorClass: update.authorState === "valid" ? update.authorClass : null,
19
+ };
20
+ }
21
+ if (originId !== null && update.authorState === "valid") {
22
+ return { originId, authorClass: update.authorClass };
23
+ }
24
+ return { originId, authorClass: current.authorClass };
25
+ }
26
+ function codexMessageProvenance(role, message, session) {
27
+ const originId = message.originState === "valid" ? message.originId : session.originId;
28
+ if (message.originState === "invalid" || message.authorState === "invalid") {
29
+ return { originId, authorClass: null };
30
+ }
31
+ const explicitAuthorClass = message.authorState === "valid"
32
+ ? message.authorClass
33
+ : originId !== null && originId === session.originId
34
+ ? session.authorClass
35
+ : null;
36
+ return {
37
+ originId,
38
+ authorClass: authorClassForRole(role, explicitAuthorClass, originId),
39
+ };
40
+ }
10
41
  export function extractCodexSessions(sessionsDir, errors) {
11
42
  if (sessionsDir === null || !fs.existsSync(sessionsDir))
12
43
  return [];
@@ -14,6 +45,7 @@ export function extractCodexSessions(sessionsDir, errors) {
14
45
  for (const p of rglob(sessionsDir, "*.jsonl")) {
15
46
  const fallbackTimestamp = isoFromMtime(p);
16
47
  let sessionId = pathStem(p);
48
+ let sessionProvenance = { originId: null, authorClass: null };
17
49
  let projectPath = null;
18
50
  let previousAssistant = "";
19
51
  let index = 0;
@@ -25,6 +57,7 @@ export function extractCodexSessions(sessionsDir, errors) {
25
57
  const sid = payload.id || event.id;
26
58
  if (typeof sid === "string" && sid)
27
59
  sessionId = sid;
60
+ sessionProvenance = updateSessionProvenance(sessionProvenance, inspectTransportProvenance(event, payload));
28
61
  const cwd = payload.cwd || payload.working_directory;
29
62
  if (typeof cwd === "string" && cwd)
30
63
  projectPath = cwd;
@@ -46,7 +79,7 @@ export function extractCodexSessions(sessionsDir, errors) {
46
79
  let role = item.role || item.actor;
47
80
  if (kind === "user_msg")
48
81
  role = "user";
49
- if (role !== "user" && role !== "assistant")
82
+ if (typeof role !== "string" || role.length === 0)
50
83
  continue;
51
84
  const skipType = itemType !== undefined && itemType !== null && itemType !== "message";
52
85
  if (skipType && !["response_item", "user_msg"].includes(kind))
@@ -55,6 +88,7 @@ export function extractCodexSessions(sessionsDir, errors) {
55
88
  if (!content)
56
89
  continue;
57
90
  const timestamp = eventTimestamp(event, fallbackTimestamp);
91
+ const transport = codexMessageProvenance(role, inspectTransportProvenance(event, item), sessionProvenance);
58
92
  const data = { actor: role, content };
59
93
  if (role === "user") {
60
94
  if (previousAssistant)
@@ -73,6 +107,9 @@ export function extractCodexSessions(sessionsDir, errors) {
73
107
  runtime: "codex",
74
108
  sourceParts: [resolvePath(p), index, role, content.slice(0, 80)],
75
109
  sessionId,
110
+ originId: transport.originId,
111
+ authorClass: transport.authorClass,
112
+ content,
76
113
  data,
77
114
  }));
78
115
  if (role === "user") {
@@ -85,6 +122,9 @@ export function extractCodexSessions(sessionsDir, errors) {
85
122
  runtime: "codex",
86
123
  sourceParts: [resolvePath(p), index, "history", content.slice(0, 120)],
87
124
  sessionId,
125
+ originId: transport.originId,
126
+ authorClass: transport.authorClass,
127
+ content,
88
128
  data: { prompt: content, signal_type: sig },
89
129
  }));
90
130
  }
@@ -111,7 +151,18 @@ export function extractClaudeProjectSessions(projectsDir, errors) {
111
151
  const cwd = event.cwd || event.workingDirectory || event.working_directory;
112
152
  if (typeof cwd === "string" && cwd)
113
153
  projectPath = cwd;
114
- const toolRecord = toolCallRecord({ event, fallbackTimestamp, projectPath, runtime: "claude-code", sourcePath: p, index, sessionId });
154
+ const toolRecord = toolCallRecord({
155
+ event,
156
+ fallbackTimestamp,
157
+ projectPath,
158
+ runtime: null,
159
+ sourceClass: "historical_import",
160
+ sourceProduct: "claude-code",
161
+ activeRuntime: false,
162
+ sourcePath: p,
163
+ index,
164
+ sessionId,
165
+ });
115
166
  if (toolRecord !== null) {
116
167
  records.push(toolRecord);
117
168
  continue;
@@ -124,7 +175,10 @@ export function extractClaudeProjectSessions(projectsDir, errors) {
124
175
  event,
125
176
  fallbackTimestamp,
126
177
  projectPath,
127
- runtime: "claude-code",
178
+ runtime: null,
179
+ sourceClass: "historical_import",
180
+ sourceProduct: "claude-code",
181
+ activeRuntime: false,
128
182
  sourcePath: p,
129
183
  index: index * 1000 + contentIndex,
130
184
  sessionId,
@@ -138,12 +192,15 @@ export function extractClaudeProjectSessions(projectsDir, errors) {
138
192
  if (isPlainObject(message))
139
193
  role = message.role;
140
194
  }
141
- if (role !== "user" && role !== "assistant")
195
+ if (typeof role !== "string" || role.length === 0)
142
196
  continue;
143
197
  const content = textFromContent(event.content || event.text || (isPlainObject(event.message) ? event.message : null));
144
198
  if (!content)
145
199
  continue;
146
200
  const timestamp = eventTimestamp(event, fallbackTimestamp);
201
+ const transport = transportProvenance(event, isPlainObject(event.message) ? event.message : null);
202
+ const originId = transport.originId;
203
+ const authorClass = authorClassForRole(role, transport.authorClass, transport.originId);
147
204
  const data = { actor: role, content };
148
205
  if (role === "user") {
149
206
  if (previousAssistant)
@@ -159,9 +216,15 @@ export function extractClaudeProjectSessions(projectsDir, errors) {
159
216
  sourceKind: "conversation_turn",
160
217
  timestamp,
161
218
  projectPath,
162
- runtime: "claude-code",
219
+ runtime: null,
220
+ sourceClass: "historical_import",
221
+ sourceProduct: "claude-code",
222
+ activeRuntime: false,
163
223
  sourceParts: [resolvePath(p), index, role, content.slice(0, 80)],
164
224
  sessionId,
225
+ originId,
226
+ authorClass,
227
+ content,
165
228
  data,
166
229
  }));
167
230
  if (role === "user") {
@@ -171,9 +234,15 @@ export function extractClaudeProjectSessions(projectsDir, errors) {
171
234
  sourceKind: "history_prompt",
172
235
  timestamp,
173
236
  projectPath,
174
- runtime: "claude-code",
237
+ runtime: null,
238
+ sourceClass: "historical_import",
239
+ sourceProduct: "claude-code",
240
+ activeRuntime: false,
175
241
  sourceParts: [resolvePath(p), index, "history", content.slice(0, 120)],
176
242
  sessionId,
243
+ originId,
244
+ authorClass,
245
+ content,
177
246
  data: { prompt: content, signal_type: sig },
178
247
  }));
179
248
  }
@@ -182,4 +251,3 @@ export function extractClaudeProjectSessions(projectsDir, errors) {
182
251
  }
183
252
  return records;
184
253
  }
185
- //# sourceMappingURL=jsonlSessions.js.map
@@ -41,4 +41,3 @@ export function applyTruncationToStatus(status, truncation) {
41
41
  truncation_limit: truncation.limit,
42
42
  };
43
43
  }
44
- //# sourceMappingURL=sqliteCaps.js.map
@@ -1,7 +1,7 @@
1
1
  import fs from "node:fs";
2
2
  import { createRequire } from "node:module";
3
3
  import { resolvePath } from "../../core/paths.js";
4
- import { isoFromMtime, record, signalType, textFromContent, } from "./core.js";
4
+ import { authorClassForRole, isoFromMtime, record, signalType, textFromContent, transportProvenance, } from "./core.js";
5
5
  import { isPlainObject, isFilePath, rglob } from "./core.js";
6
6
  import { resolveSqliteCaps, } from "./sqliteCaps.js";
7
7
  const requireCjs = createRequire(import.meta.url);
@@ -271,8 +271,11 @@ export function extractOpencodeSessions(storePath, errors, ctx) {
271
271
  const messageTime = row.message_time || nestedTimeCreated(messageData);
272
272
  let item = messages.get(messageId);
273
273
  if (item === undefined) {
274
+ const transport = transportProvenance(messageData);
274
275
  item = {
275
276
  role,
277
+ origin_id: transport.originId,
278
+ author_class: authorClassForRole(role, transport.authorClass, transport.originId),
276
279
  session_id: String(row.session_id),
277
280
  project_path: row.project_path,
278
281
  timestamp: sqliteTimestamp(messageTime, fallbackTimestamp),
@@ -305,9 +308,9 @@ export function extractOpencodeSessions(storePath, errors, ctx) {
305
308
  let index = 0;
306
309
  for (const item of messages.values()) {
307
310
  index += 1;
308
- const role = String(item.role).toLowerCase();
309
- if (role !== "user" && role !== "assistant")
311
+ if (typeof item.role !== "string" || item.role.length === 0)
310
312
  continue;
313
+ const role = item.role.toLowerCase();
311
314
  const content = item.parts.filter((p) => p).join("\n");
312
315
  if (!content && item.tools.length === 0)
313
316
  continue;
@@ -331,6 +334,9 @@ export function extractOpencodeSessions(storePath, errors, ctx) {
331
334
  runtime: "opencode",
332
335
  sourceParts: [resolvePath(dbPath), index, role, content.slice(0, 80)],
333
336
  sessionId: item.session_id,
337
+ originId: item.origin_id,
338
+ authorClass: item.author_class,
339
+ content,
334
340
  data,
335
341
  }));
336
342
  }
@@ -357,6 +363,9 @@ export function extractOpencodeSessions(storePath, errors, ctx) {
357
363
  runtime: "opencode",
358
364
  sourceParts: [resolvePath(dbPath), index, "history", content.slice(0, 120)],
359
365
  sessionId: item.session_id,
366
+ originId: item.origin_id,
367
+ authorClass: item.author_class,
368
+ content,
360
369
  data: { prompt: content, signal_type: sig },
361
370
  }));
362
371
  }
@@ -365,4 +374,3 @@ export function extractOpencodeSessions(storePath, errors, ctx) {
365
374
  }
366
375
  return records;
367
376
  }
368
- //# sourceMappingURL=sqliteSessions.js.map
@@ -0,0 +1,108 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { compatibilityStates, evidenceTierBounds, } from "../../registries/evidenceTierContract.js";
4
+ import { defaultTiersDir, evidenceTierCompatibility, iterTierRecords, readSignalTier, readTierCorpusMetadata, } from "./evidenceTiers.js";
5
+ /**
6
+ * Bounded tier reader for analytics consumers (plan Task 3).
7
+ *
8
+ * Task 2 publishes bounded full-evidence shards and a bounded signal tier with
9
+ * an atomic generation pointer. This module is the consumer-side surface that
10
+ * projects the contract's compatibility states and recovery guidance, resolves
11
+ * the tiers directory from a corpus path, and exposes bounded reads (full-evidence
12
+ * records one shard at a time; metadata/signal reads without full records). It does
13
+ * not duplicate the tier map, source families, bounds, or compatibility outcomes —
14
+ * those are projected from `evidenceTierContract` and `evidenceTiers`.
15
+ *
16
+ * Consumers preserve their JSON output shape and exit codes. A non-current tier
17
+ * degrades with actionable, contract-projected recovery rather than indefinitely
18
+ * loading an oversized monolithic corpus envelope. `incomplete` is a degrade
19
+ * outcome: consumers analyze available sources and surface the coverage gap, so a
20
+ * host missing some runtimes still gets useful analysis instead of a hard failure.
21
+ */
22
+ /** A corpus path's co-located tiers directory (`<intermediate>/tiers`). */
23
+ export function tiersDirForCorpusPath(corpusPath) {
24
+ return path.join(path.dirname(corpusPath), "tiers");
25
+ }
26
+ /** Canonical tiers directory for the stats profile. */
27
+ export function resolveTiersDir(env = process.env, platform = process.platform) {
28
+ return defaultTiersDir(env, platform);
29
+ }
30
+ /** Whether a compatibility state still permits analysis of available sources. */
31
+ export function isAnalyzable(state) {
32
+ return state === "current" || state === "incomplete";
33
+ }
34
+ /**
35
+ * Actionable recovery guidance projected from the authority contract for a
36
+ * compatibility state. The contract owns the recovery text; this never
37
+ * duplicates it. Returns `null` for states that proceed (current/incomplete).
38
+ */
39
+ export function recoveryForState(state) {
40
+ if (state === "current" || state === "incomplete")
41
+ return null;
42
+ const states = compatibilityStates();
43
+ const def = states.find((s) => s.state_id === state);
44
+ return def?.recovery ?? null;
45
+ }
46
+ /**
47
+ * Assess the tiers directory against the contract's compatibility states. When a
48
+ * legacy corpus envelope is supplied, a missing tier with an existing envelope
49
+ * surfaces as `legacy` (refresh guidance) rather than a bare missing state.
50
+ */
51
+ export function assessTiers(tiersDir, corpusPath) {
52
+ const compat = evidenceTierCompatibility(tiersDir, corpusPath);
53
+ const assessment = {
54
+ state: compat.state,
55
+ analyzable: isAnalyzable(compat.state),
56
+ tiersDir,
57
+ corpusPath,
58
+ recovery: recoveryForState(compat.state) ?? undefined,
59
+ };
60
+ if (compat.state === "incomplete")
61
+ assessment.coverageGaps = compat.detail;
62
+ if (compat.state === "oversized")
63
+ assessment.artifact = compat.artifact;
64
+ if (compat.state === "current")
65
+ assessment.generation = compat.generation;
66
+ return assessment;
67
+ }
68
+ /**
69
+ * Read bounded metadata for signal-tier consumers (report status, prime
70
+ * coverage). Reads the manifest and the bounded signal tier only — never the
71
+ * full-evidence shards — so metadata consumers stay bounded at real scale. The
72
+ * signal tier is bounded by construction; a defensively oversized signal tier is
73
+ * reported as null so the caller degrades with the assessment's recovery.
74
+ */
75
+ export function readBoundedMetadata(tiersDir) {
76
+ const signal = readSignalTier(tiersDir);
77
+ const corpusMetadata = readTierCorpusMetadata(tiersDir);
78
+ const bounds = evidenceTierBounds();
79
+ if (signal && (signal.bytes > bounds.signalByteCap || signal.manifest.signal.bytes > bounds.signalByteCap)) {
80
+ return { corpusMetadata: null, signal: null, manifest: signal.manifest };
81
+ }
82
+ return { corpusMetadata, signal, manifest: signal?.manifest ?? null };
83
+ }
84
+ /**
85
+ * Iterate full-evidence records for the current generation, one bounded shard at
86
+ * a time. Full-record consumers (usage analytics, startup analysis) use this so
87
+ * they never materialize the monolithic corpus envelope. Returns `null` when no
88
+ * current generation exists; callers report the assessment instead.
89
+ */
90
+ export function iterBoundedRecords(tiersDir) {
91
+ return iterTierRecords(tiersDir);
92
+ }
93
+ /**
94
+ * Legacy fallback: a small monolithic corpus envelope may still be read for
95
+ * backward compatibility when no tiers were published. Oversized legacy state
96
+ * is never loaded whole — it returns `false` so the caller emits refresh guidance.
97
+ */
98
+ export function legacyCorpusReadable(corpusPath) {
99
+ if (!corpusPath || !fs.existsSync(corpusPath))
100
+ return false;
101
+ const bounds = evidenceTierBounds();
102
+ try {
103
+ return fs.statSync(corpusPath).size <= bounds.readerByteCap;
104
+ }
105
+ catch {
106
+ return false;
107
+ }
108
+ }
@@ -1,3 +1,2 @@
1
1
  /** Barrel: stable import path for corpus extraction (split across ./extractCorpus/). */
2
2
  export * from "./extractCorpus/index.js";
3
- //# sourceMappingURL=extractCorpus.js.map
@@ -0,0 +1,166 @@
1
+ import { glossaryAdviceContract, } from "../registries/glossaryAdviceContract.js";
2
+ import { unicodeCaselessExact } from "../registries/glossaryTermIdentity.js";
3
+ const RECOVERY = {
4
+ invalid_request: "Provide one non-empty bounded requested term and retry advice resolution.",
5
+ invalid_acquisition: "Reacquire bounded glossary inputs and retry advice resolution.",
6
+ invalid_host_review: "Provide one contract-declared relation to a valid acquired personal candidate and retry advice resolution.",
7
+ };
8
+ export class GlossaryAdviceInputError extends Error {
9
+ code;
10
+ constructor(code) {
11
+ super(RECOVERY[code]);
12
+ this.code = code;
13
+ this.name = "GlossaryAdviceInputError";
14
+ }
15
+ }
16
+ function hasOnlyKeys(value, expected) {
17
+ const keys = Object.keys(value).sort();
18
+ return (keys.length === expected.length &&
19
+ keys.every((key, index) => key === [...expected].sort()[index]));
20
+ }
21
+ function boundedNonEmpty(value, maxBytes) {
22
+ return (typeof value === "string" &&
23
+ value.trim().length > 0 &&
24
+ Buffer.byteLength(value, "utf8") <= maxBytes);
25
+ }
26
+ function validateEntries(source, owner, maxEntries, maxBytes) {
27
+ if (!Array.isArray(source.entries) || source.entries.length > maxEntries) {
28
+ throw new GlossaryAdviceInputError("invalid_acquisition");
29
+ }
30
+ const terms = [];
31
+ for (const candidate of source.entries) {
32
+ if (candidate === null ||
33
+ typeof candidate !== "object" ||
34
+ !hasOnlyKeys(candidate, ["term", "meaning", "owner"]) ||
35
+ candidate.owner !== owner ||
36
+ !boundedNonEmpty(candidate.term, maxBytes) ||
37
+ !boundedNonEmpty(candidate.meaning, maxBytes)) {
38
+ throw new GlossaryAdviceInputError("invalid_acquisition");
39
+ }
40
+ if (terms.some((term) => unicodeCaselessExact(term, candidate.term))) {
41
+ throw new GlossaryAdviceInputError("invalid_acquisition");
42
+ }
43
+ terms.push(candidate.term);
44
+ }
45
+ }
46
+ function validateSource(source, owner, maxEntries, maxBytes, availabilityStates) {
47
+ if (source === null ||
48
+ typeof source !== "object" ||
49
+ !hasOnlyKeys(source, ["owner", "availability", "entries", "gap_proving", "diagnostic"])) {
50
+ throw new GlossaryAdviceInputError("invalid_acquisition");
51
+ }
52
+ const candidate = source;
53
+ if (candidate.owner !== owner ||
54
+ !availabilityStates.includes(candidate.availability) ||
55
+ typeof candidate.gap_proving !== "boolean") {
56
+ throw new GlossaryAdviceInputError("invalid_acquisition");
57
+ }
58
+ validateEntries(candidate, owner, maxEntries, maxBytes);
59
+ const valid = ["absent", "valid_empty", "valid_present"].includes(candidate.availability);
60
+ const expectedGap = owner === "project" && ["absent", "valid_empty"].includes(candidate.availability);
61
+ if (valid) {
62
+ const expectedEntryPresence = candidate.availability === "valid_present";
63
+ if (candidate.diagnostic !== null ||
64
+ candidate.gap_proving !== expectedGap ||
65
+ expectedEntryPresence !== candidate.entries.length > 0) {
66
+ throw new GlossaryAdviceInputError("invalid_acquisition");
67
+ }
68
+ return;
69
+ }
70
+ const diagnostic = candidate.diagnostic;
71
+ if (candidate.entries.length !== 0 ||
72
+ candidate.gap_proving ||
73
+ diagnostic === null ||
74
+ typeof diagnostic !== "object" ||
75
+ !hasOnlyKeys(diagnostic, ["class", "recovery"]) ||
76
+ diagnostic.class !== candidate.availability ||
77
+ typeof diagnostic.recovery !== "string" ||
78
+ diagnostic.recovery.trim().length === 0) {
79
+ throw new GlossaryAdviceInputError("invalid_acquisition");
80
+ }
81
+ }
82
+ function validateAcquired(acquired, contract) {
83
+ if (acquired === null ||
84
+ typeof acquired !== "object" ||
85
+ !hasOnlyKeys(acquired, ["project", "personal"])) {
86
+ throw new GlossaryAdviceInputError("invalid_acquisition");
87
+ }
88
+ const candidate = acquired;
89
+ validateSource(candidate.project, "project", contract.maxEntries, contract.maxRequestedTermUtf8Bytes, contract.availabilityStates);
90
+ validateSource(candidate.personal, "personal", contract.maxEntries, contract.maxRequestedTermUtf8Bytes, contract.availabilityStates);
91
+ }
92
+ function exactEntry(entries, requestedTerm) {
93
+ return entries.find((candidate) => unicodeCaselessExact(candidate.term, requestedTerm));
94
+ }
95
+ function validatedHostReview(requestedTerm, personal, hostReview, contract) {
96
+ if (hostReview === undefined)
97
+ return undefined;
98
+ if (hostReview === null ||
99
+ typeof hostReview !== "object" ||
100
+ !hasOnlyKeys(hostReview, ["relation", "candidate_owner", "candidate_term"])) {
101
+ throw new GlossaryAdviceInputError("invalid_host_review");
102
+ }
103
+ const candidate = hostReview;
104
+ if (!contract.hostReviewRelations.includes(candidate.relation) ||
105
+ !contract.hostReviewCandidateOwners.includes(candidate.candidate_owner) ||
106
+ !boundedNonEmpty(candidate.candidate_term, contract.maxRequestedTermUtf8Bytes) ||
107
+ unicodeCaselessExact(candidate.candidate_term, requestedTerm) ||
108
+ !personal.entries.some((entry) => unicodeCaselessExact(entry.term, candidate.candidate_term))) {
109
+ throw new GlossaryAdviceInputError("invalid_host_review");
110
+ }
111
+ return candidate;
112
+ }
113
+ export function classifyGlossaryAdviceInputs(requestedTerm, acquired, hostReview) {
114
+ const projectExact = exactEntry(acquired.project.entries, requestedTerm);
115
+ const personalExact = exactEntry(acquired.personal.entries, requestedTerm);
116
+ const projectValid = ["absent", "valid_empty", "valid_present"].includes(acquired.project.availability);
117
+ const personalUsable = ["valid_empty", "valid_present"].includes(acquired.personal.availability);
118
+ return {
119
+ project_input: !projectValid ? "invalid" : projectExact ? "valid_exact" : "valid_gap",
120
+ personal_input: personalExact
121
+ ? "valid_exact"
122
+ : personalUsable
123
+ ? "valid_without_exact"
124
+ : "invalid",
125
+ exact_meaning: projectExact && personalExact
126
+ ? projectExact.meaning === personalExact.meaning
127
+ ? "equivalent"
128
+ : "divergent"
129
+ : "not_applicable",
130
+ inferred_candidate: hostReview ? "present" : "absent",
131
+ };
132
+ }
133
+ function matches(match, state) {
134
+ return Object.entries(state).every(([dimension, value]) => match[dimension]?.includes(value));
135
+ }
136
+ export function resolveGlossaryAdvice(requestedTerm, acquired, hostReview) {
137
+ const contract = glossaryAdviceContract();
138
+ if (!boundedNonEmpty(requestedTerm, contract.maxRequestedTermUtf8Bytes)) {
139
+ throw new GlossaryAdviceInputError("invalid_request");
140
+ }
141
+ validateAcquired(acquired, contract);
142
+ const review = validatedHostReview(requestedTerm, acquired.personal, hostReview, contract);
143
+ const state = classifyGlossaryAdviceInputs(requestedTerm, acquired, review);
144
+ const rows = contract.rows.filter((row) => matches(row.match, state));
145
+ if (rows.length !== 1)
146
+ throw new GlossaryAdviceInputError("invalid_acquisition");
147
+ const row = rows[0];
148
+ const selectedOwner = row.selectedOwner === "project" || row.selectedOwner === "personal" ? row.selectedOwner : null;
149
+ const selectedEntry = selectedOwner
150
+ ? exactEntry(acquired[selectedOwner].entries, requestedTerm)
151
+ : undefined;
152
+ const advisories = contract.advisories.filter((advisory) => advisory.primaryOutcome === row.name && matches(advisory.match, state));
153
+ if (advisories.length > 1)
154
+ throw new GlossaryAdviceInputError("invalid_acquisition");
155
+ const advisory = advisories[0];
156
+ return {
157
+ outcome: row.name,
158
+ applicable_meaning: selectedEntry?.meaning ?? null,
159
+ applicable_owner: selectedOwner,
160
+ review: advisory?.review ?? row.review,
161
+ tension: row.tension,
162
+ advisory: advisory
163
+ ? { reason: advisory.caveatReason, ownership_state: advisory.ownershipState }
164
+ : null,
165
+ };
166
+ }