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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (763) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +229 -22
  3. package/bundle/.agentera-build-source.json +8 -0
  4. package/bundle/CHANGELOG.md +1361 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +143 -0
  8. package/bundle/UPGRADE.md +252 -0
  9. package/bundle/extract-corpus-parity.json +2 -4
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +484 -0
  12. package/bundle/references/adapters/package-registry.yaml +439 -188
  13. package/bundle/references/adapters/package-surface-characterization.md +68 -34
  14. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  15. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  16. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  17. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  18. package/bundle/references/analysis/evidence-tier-authority.yaml +559 -0
  19. package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
  20. package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
  21. package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
  22. package/bundle/references/analysis/verification-policy.yaml +266 -0
  23. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  24. package/bundle/references/artifacts/glossary-entry-contract.yaml +2752 -0
  25. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  26. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  27. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  28. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  29. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  30. package/bundle/references/cli/routing-model.md +152 -93
  31. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  32. package/bundle/references/cli/update-channels.yaml +6 -4
  33. package/bundle/references/cli/vocabulary-index.yaml +5 -7
  34. package/bundle/references/cli/vocabulary.md +52 -94
  35. package/bundle/references/meta/retained-reference-authority.yaml +166 -0
  36. package/bundle/skills/agentera/SKILL.md +183 -63
  37. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  38. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  39. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  40. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  41. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  42. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  43. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  44. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  45. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  46. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  47. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  48. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  51. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  52. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  53. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  54. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  55. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  56. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  57. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  58. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  59. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  62. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  63. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  64. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  65. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  66. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  67. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
  68. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
  69. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  70. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
  71. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  72. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  73. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  74. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  75. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  76. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  77. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  78. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  79. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  80. package/bundle/skills/agentera/protocol.yaml +4 -4
  81. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  82. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  83. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +30 -12
  84. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  85. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -12
  86. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -9
  87. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
  88. package/bundle/skills/agentera/schemas/artifacts/health.yaml +56 -19
  89. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
  90. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +464 -32
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +131 -18
  92. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +302 -7
  93. package/dist/.agentera-build-source.json +8 -0
  94. package/dist/analytics/extractCorpus/cli.js +52 -11
  95. package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
  96. package/dist/analytics/extractCorpus/core.js +262 -14
  97. package/dist/analytics/extractCorpus/corpus.js +57 -18
  98. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  99. package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
  100. package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
  101. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  102. package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
  103. package/dist/analytics/extractCorpus/index.js +4 -2
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
  107. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  108. package/dist/analytics/extractCorpus.js +0 -1
  109. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  110. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  111. package/dist/analytics/personalGlossaryAdmission.js +113 -0
  112. package/dist/analytics/personalGlossaryCandidateProjection.js +692 -0
  113. package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
  114. package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
  115. package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
  116. package/dist/analytics/personalGlossaryDecision.js +203 -0
  117. package/dist/analytics/personalGlossaryExplicit.js +788 -0
  118. package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
  119. package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
  120. package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
  121. package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
  122. package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
  123. package/dist/analytics/personalGlossaryProfile.js +229 -0
  124. package/dist/analytics/personalGlossaryRecurrence.js +618 -0
  125. package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
  126. package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
  127. package/dist/analytics/profileSignals.js +211 -0
  128. package/dist/analytics/usageStats.js +150 -23
  129. package/dist/audit/terminologyDrift.js +281 -0
  130. package/dist/bin/agentera.js +3 -2
  131. package/dist/capabilities/audit/instructions.js +16 -6
  132. package/dist/capabilities/build/instructions.js +59 -6
  133. package/dist/capabilities/design/instructions.js +3 -4
  134. package/dist/capabilities/discuss/instructions.js +29 -6
  135. package/dist/capabilities/document/instructions.js +11 -6
  136. package/dist/capabilities/index.js +20 -14
  137. package/dist/capabilities/optimize/instructions.js +14 -6
  138. package/dist/capabilities/orchestrate/instructions.js +42 -6
  139. package/dist/capabilities/plan/instructions.js +30 -3
  140. package/dist/capabilities/profile/instructions.js +104 -5
  141. package/dist/capabilities/research/instructions.js +4 -5
  142. package/dist/capabilities/status/instructions.js +15 -6
  143. package/dist/capabilities/status/startupInstructions.js +34 -0
  144. package/dist/capabilities/vision/instructions.js +3 -5
  145. package/dist/cli/appContext.js +14 -7
  146. package/dist/cli/argvalidate.js +0 -1
  147. package/dist/cli/capabilityContext/benchmark.js +5 -4
  148. package/dist/cli/capabilityContext/bespoke.js +14 -6
  149. package/dist/cli/capabilityContext/build.js +116 -42
  150. package/dist/cli/capabilityContext/closeout.js +30 -27
  151. package/dist/cli/capabilityContext/contract.js +18 -27
  152. package/dist/cli/capabilityContext/evidence.js +84 -77
  153. package/dist/cli/capabilityContext/index.js +0 -1
  154. package/dist/cli/capabilityContext/orchestration.js +42 -18
  155. package/dist/cli/capabilityContext/planState.js +89 -96
  156. package/dist/cli/capabilityContext/progress.js +51 -12
  157. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  158. package/dist/cli/capabilityContext/shared.js +9 -20
  159. package/dist/cli/capabilityContext/slim.js +52 -8
  160. package/dist/cli/capabilityContext/startup.js +51 -114
  161. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  162. package/dist/cli/capabilityContext/types.js +26 -10
  163. package/dist/cli/capabilityContext.js +0 -1
  164. package/dist/cli/commands/appHome.js +0 -1
  165. package/dist/cli/commands/capability.js +2 -2
  166. package/dist/cli/commands/compact.js +163 -13
  167. package/dist/cli/commands/doctor.js +117 -11
  168. package/dist/cli/commands/durability.js +81 -0
  169. package/dist/cli/commands/glossaryAdvice.js +138 -0
  170. package/dist/cli/commands/lint.js +22 -8
  171. package/dist/cli/commands/personalGlossaryCandidateReads.js +744 -0
  172. package/dist/cli/commands/personalGlossaryDecision.js +349 -0
  173. package/dist/cli/commands/personalGlossaryPublish.js +484 -0
  174. package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
  175. package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
  176. package/dist/cli/commands/prime/briefOrientation.js +845 -0
  177. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  178. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  179. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  180. package/dist/cli/commands/prime/collectOrientationState.js +126 -63
  181. package/dist/cli/commands/prime/orientationOutput.js +267 -56
  182. package/dist/cli/commands/prime/types.js +0 -1
  183. package/dist/cli/commands/prime/v1Migration.js +0 -1
  184. package/dist/cli/commands/prime.js +76 -11
  185. package/dist/cli/commands/profileGrounding.js +55 -0
  186. package/dist/cli/commands/query.js +74 -52
  187. package/dist/cli/commands/report.js +91 -21
  188. package/dist/cli/commands/route.js +142 -0
  189. package/dist/cli/commands/schema.js +436 -138
  190. package/dist/cli/commands/state/decisions.js +40 -56
  191. package/dist/cli/commands/state/docs.js +58 -85
  192. package/dist/cli/commands/state/experimentRecords.js +151 -0
  193. package/dist/cli/commands/state/experiments.js +11 -65
  194. package/dist/cli/commands/state/get.js +129 -0
  195. package/dist/cli/commands/state/health.js +11 -113
  196. package/dist/cli/commands/state/index.js +6 -41
  197. package/dist/cli/commands/state/list.js +194 -0
  198. package/dist/cli/commands/state/objective.js +21 -65
  199. package/dist/cli/commands/state/plan.js +11 -170
  200. package/dist/cli/commands/state/planTasks.js +154 -0
  201. package/dist/cli/commands/state/plans.js +154 -0
  202. package/dist/cli/commands/state/progress.js +11 -45
  203. package/dist/cli/commands/state/shared.js +0 -1
  204. package/dist/cli/commands/state/todo.js +28 -107
  205. package/dist/cli/commands/state/write.js +433 -0
  206. package/dist/cli/commands/upgrade.js +146 -5
  207. package/dist/cli/commands/upgradeVerify.js +118 -0
  208. package/dist/cli/commands/validate.js +235 -136
  209. package/dist/cli/commands/verify.js +73 -16
  210. package/dist/cli/contracts/bundleStatus.js +0 -1
  211. package/dist/cli/contracts/orientationState.js +0 -1
  212. package/dist/cli/dispatch/argvParser.js +0 -1
  213. package/dist/cli/dispatch/check.js +84 -40
  214. package/dist/cli/dispatch/commands.js +3 -3
  215. package/dist/cli/dispatch/index.js +77 -52
  216. package/dist/cli/dispatch/lifecycle.js +162 -62
  217. package/dist/cli/dispatch/prime.js +37 -2
  218. package/dist/cli/dispatch/projections.js +17 -0
  219. package/dist/cli/dispatch/shared.js +1 -2
  220. package/dist/cli/dispatch/state.js +62 -66
  221. package/dist/cli/dispatch.js +0 -1
  222. package/dist/cli/errors.js +16 -17
  223. package/dist/cli/help.js +404 -39
  224. package/dist/cli/migrationRequired.js +125 -0
  225. package/dist/cli/orientation/attention.js +19 -19
  226. package/dist/cli/orientation/corpusCoverage.js +32 -1
  227. package/dist/cli/orientation.js +346 -129
  228. package/dist/cli/planArtifacts.js +350 -0
  229. package/dist/cli/planEvidence.js +157 -0
  230. package/dist/cli/planLifecycleState.js +36 -0
  231. package/dist/cli/planTaskIndex.js +11 -0
  232. package/dist/cli/preCutoverCommand.js +32 -0
  233. package/dist/cli/prime-blob.js +71 -3
  234. package/dist/cli/profileAcquisition.js +167 -0
  235. package/dist/cli/startupCompletenessContract.js +11 -8
  236. package/dist/cli/stateQuery.js +47 -12
  237. package/dist/cli/structured.js +0 -1
  238. package/dist/cli/todoMarkdown.js +25 -12
  239. package/dist/cli/todoReadinessSelection.js +192 -0
  240. package/dist/cli/todoSeverity.js +0 -1
  241. package/dist/core/atomicWriter.js +23 -0
  242. package/dist/core/developmentChannel.js +1 -0
  243. package/dist/core/developmentInvocation.js +377 -0
  244. package/dist/core/difflib.js +0 -1
  245. package/dist/core/envPaths.js +0 -1
  246. package/dist/core/jsonValue.js +0 -1
  247. package/dist/core/paths.js +0 -1
  248. package/dist/core/pyjson.js +0 -1
  249. package/dist/core/shell.js +4 -0
  250. package/dist/core/skillIdentity.js +23 -0
  251. package/dist/core/sourceRoot.js +9 -12
  252. package/dist/core/text.js +10 -0
  253. package/dist/core/toml.js +0 -1
  254. package/dist/core/yaml.js +61 -2
  255. package/dist/eval/evalSkills.js +13 -14
  256. package/dist/eval/glossaryEvaluation.js +751 -0
  257. package/dist/eval/glossaryEvaluationProcess.js +29 -0
  258. package/dist/eval/glossaryEvaluationRunner.js +571 -0
  259. package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
  260. package/dist/eval/hybridRouteEvaluation.js +155 -0
  261. package/dist/eval/semanticEval.js +0 -1
  262. package/dist/eval/semanticFixtures.js +0 -1
  263. package/dist/hooks/common.js +3 -56
  264. package/dist/hooks/compaction/apply.js +224 -47
  265. package/dist/hooks/compaction/dryRun.js +2 -1
  266. package/dist/hooks/compaction/index.js +5 -6
  267. package/dist/hooks/compaction/parse.js +73 -6
  268. package/dist/hooks/compaction/retention.js +28 -25
  269. package/dist/hooks/compaction/status.js +145 -26
  270. package/dist/hooks/compaction/types.js +0 -1
  271. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  272. package/dist/hooks/validateArtifact/index.js +6 -65
  273. package/dist/hooks/validateArtifact/markdown.js +9 -10
  274. package/dist/hooks/validateArtifact/schema.js +96 -9
  275. package/dist/hooks/validateArtifact/traversal.js +12 -11
  276. package/dist/hooks/validateArtifact/violations.js +5 -3
  277. package/dist/migrate/v2HandoffManifest.js +8 -3
  278. package/dist/registries/activationContract.js +2 -0
  279. package/dist/registries/activationTuples.js +136 -0
  280. package/dist/registries/artifactProtocolIds.js +2 -1
  281. package/dist/registries/artifactRegistry.js +207 -60
  282. package/dist/registries/artifactSchemaProjection.js +45 -0
  283. package/dist/registries/capabilityContract.js +5 -21
  284. package/dist/registries/evaluatorHandoffContract.js +0 -1
  285. package/dist/registries/evidenceTierContract.js +375 -0
  286. package/dist/registries/explicitSegmentGrammarContract.js +619 -0
  287. package/dist/registries/glossaryAdviceContract.js +79 -0
  288. package/dist/registries/glossaryCandidateContractPaths.js +6 -0
  289. package/dist/registries/glossaryCandidateContracts.js +820 -0
  290. package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
  291. package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
  292. package/dist/registries/glossaryCandidateProjectionAuthority.js +197 -0
  293. package/dist/registries/glossaryCandidateProjectionContract.js +104 -0
  294. package/dist/registries/glossaryCaveatContract.js +67 -0
  295. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  296. package/dist/registries/glossaryEntryContract.js +759 -0
  297. package/dist/registries/glossaryEntryTemporal.js +12 -0
  298. package/dist/registries/glossaryMiningAuthority.js +764 -0
  299. package/dist/registries/glossaryProfileFullContract.js +24 -0
  300. package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
  301. package/dist/registries/glossaryReviewRecordsContract.js +129 -0
  302. package/dist/registries/glossaryTermIdentity.js +139 -0
  303. package/dist/registries/glossaryTermOccurrence.js +20 -0
  304. package/dist/registries/hybridRoute.js +274 -0
  305. package/dist/registries/hybridRouteReceipt.js +221 -0
  306. package/dist/registries/packagePublication.js +273 -0
  307. package/dist/registries/packageRegistry.js +184 -209
  308. package/dist/registries/personalGlossaryContracts.js +1 -0
  309. package/dist/registries/todoReadinessContract.js +448 -0
  310. package/dist/registries/triggerLoader.js +7 -44
  311. package/dist/registries/verbosityBudgetContract.js +205 -0
  312. package/dist/release/releaseMetadata.js +167 -10
  313. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  314. package/dist/runtime/lifecycleAdapters.js +777 -0
  315. package/dist/runtime/lifecycleAuthority.js +453 -0
  316. package/dist/runtime/lifecycleOperationContract.js +123 -0
  317. package/dist/runtime/lifecycleOperations.js +634 -0
  318. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  319. package/dist/runtime/lifecyclePublication.js +415 -0
  320. package/dist/runtime/lifecycleSnapshot.js +438 -0
  321. package/dist/runtime/nativeResourceCleanup.js +502 -0
  322. package/dist/setup/opencode.js +20 -13
  323. package/dist/setup/opencodeConstants.js +1 -0
  324. package/dist/setup/sharedSkill.js +45 -0
  325. package/dist/setup/smokeChecks.js +14 -75
  326. package/dist/state/archiveDiscovery.js +580 -0
  327. package/dist/state/archivePublication.js +225 -0
  328. package/dist/state/archiveRecovery.js +237 -0
  329. package/dist/state/archiveReplay.js +53 -0
  330. package/dist/state/canonicalMigrationRecord.js +36 -0
  331. package/dist/state/changelog.js +221 -0
  332. package/dist/state/decisionEntities.js +367 -0
  333. package/dist/state/decisionLegacyValidation.js +215 -0
  334. package/dist/state/decisionMigrationProvenance.js +199 -0
  335. package/dist/state/decisionOverlay.js +254 -0
  336. package/dist/state/decisionRevision.js +256 -0
  337. package/dist/state/decisionRevisionMigration.js +89 -0
  338. package/dist/state/directRetrieval.js +323 -0
  339. package/dist/state/durability.js +324 -0
  340. package/dist/state/entityCutover.js +459 -0
  341. package/dist/state/entityCutoverGit.js +127 -0
  342. package/dist/state/entityGlossaryAuthority.js +13 -0
  343. package/dist/state/entityListProjection.js +187 -0
  344. package/dist/state/entityListRuntimeRegistry.js +85 -0
  345. package/dist/state/entityMigrationCausality.js +97 -0
  346. package/dist/state/entityMigrationIdentity.js +5 -0
  347. package/dist/state/entityMigrationPreview.js +840 -0
  348. package/dist/state/entityMigrationTodo.js +133 -0
  349. package/dist/state/entityPublicationContext.js +859 -0
  350. package/dist/state/entityRetrievalHelp.js +506 -0
  351. package/dist/state/entityStorage.js +899 -0
  352. package/dist/state/exactReplacementRecovery.js +18 -0
  353. package/dist/state/experimentArchive.js +63 -0
  354. package/dist/state/experimentIdentity.js +202 -0
  355. package/dist/state/healthEntities.js +262 -0
  356. package/dist/state/healthEntityValidation.js +18 -0
  357. package/dist/state/healthRepair.js +69 -0
  358. package/dist/state/installRoot.js +15 -7
  359. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  360. package/dist/state/legacyIdentity.js +47 -0
  361. package/dist/state/legacySummaryRecord.js +6 -0
  362. package/dist/state/listAccounting.js +54 -0
  363. package/dist/state/listClassification.js +17 -0
  364. package/dist/state/listCursor.js +42 -0
  365. package/dist/state/listRetrieval.js +781 -0
  366. package/dist/state/migrationSourceBinding.js +30 -0
  367. package/dist/state/objectiveExperimentEntities.js +322 -0
  368. package/dist/state/planEntities.js +1027 -0
  369. package/dist/state/planIdentity.js +47 -0
  370. package/dist/state/planLineageValidation.js +52 -0
  371. package/dist/state/planReplacementTransaction.js +475 -0
  372. package/dist/state/planRetrieval.js +313 -0
  373. package/dist/state/planTaskRetrieval.js +294 -0
  374. package/dist/state/progressEntities.js +512 -0
  375. package/dist/state/progressGlossaryCaveat.js +168 -0
  376. package/dist/state/progressPublicationOrder.js +19 -0
  377. package/dist/state/progressWritePolicy.js +33 -0
  378. package/dist/state/projectRoot.js +62 -0
  379. package/dist/state/projectionPolicy.js +190 -0
  380. package/dist/state/retrievalAuthority.js +156 -0
  381. package/dist/state/safeProjectFile.js +155 -0
  382. package/dist/state/startupAnalysis/benchmark.js +70 -9
  383. package/dist/state/startupAnalysis/contract.js +44 -10
  384. package/dist/state/startupAnalysis/helpers.js +1 -2
  385. package/dist/state/startupAnalysis/index.js +0 -1
  386. package/dist/state/startupAnalysis/metrics.js +0 -1
  387. package/dist/state/startupAnalysis/records.js +0 -1
  388. package/dist/state/startupAnalysis/report.js +0 -1
  389. package/dist/state/startupAnalysis/threshold.js +13 -1
  390. package/dist/state/startupAnalysis.js +0 -1
  391. package/dist/state/startupProjection.js +499 -0
  392. package/dist/state/stateMode.js +222 -0
  393. package/dist/state/stateStorageAuthority.js +47 -0
  394. package/dist/state/summaryEntityRead.js +25 -0
  395. package/dist/state/summaryMigrationProvenance.js +66 -0
  396. package/dist/state/summarySourceRowAuthority.js +36 -0
  397. package/dist/state/todoActivationSafety.js +58 -0
  398. package/dist/state/todoDocsEntities.js +1124 -0
  399. package/dist/state/todoDocsEntityValidation.js +158 -0
  400. package/dist/state/todoMarkdownProjection.js +51 -0
  401. package/dist/state/todoReconciliationActivation.js +182 -0
  402. package/dist/state/todoReconciliationInspection.js +171 -0
  403. package/dist/state/todoReconciliationRepair.js +318 -0
  404. package/dist/state/todoReconciliationTransaction.js +595 -0
  405. package/dist/state/write/assign.js +20 -0
  406. package/dist/state/write/candidateMutation.js +269 -0
  407. package/dist/state/write/errors.js +11 -0
  408. package/dist/state/write/experimentPublication.js +192 -0
  409. package/dist/state/write/explain.js +377 -0
  410. package/dist/state/write/fields.js +61 -0
  411. package/dist/state/write/glossaryPublication.js +263 -0
  412. package/dist/state/write/grammar.js +285 -0
  413. package/dist/state/write/helpers.js +29 -0
  414. package/dist/state/write/index.js +12 -0
  415. package/dist/state/write/input.js +391 -0
  416. package/dist/state/write/lock.js +837 -0
  417. package/dist/state/write/mutation.js +234 -0
  418. package/dist/state/write/operations.js +170 -0
  419. package/dist/state/write/planEvaluation.js +128 -0
  420. package/dist/state/write/planPublication.js +179 -0
  421. package/dist/state/write/runtimeOperations.js +146 -0
  422. package/dist/state/write/serialize.js +1 -0
  423. package/dist/state/write/transaction.js +57 -0
  424. package/dist/state/write/validate.js +7 -0
  425. package/dist/upgrade/appContentRefresh.js +77 -36
  426. package/dist/upgrade/appModel.js +0 -1
  427. package/dist/upgrade/atomicWriter.js +1 -0
  428. package/dist/upgrade/bundleEvidence.js +0 -1
  429. package/dist/upgrade/channels.js +6 -9
  430. package/dist/upgrade/compatibility.js +43 -17
  431. package/dist/upgrade/doctor.js +55 -32
  432. package/dist/upgrade/doctorClassifier.js +11 -1
  433. package/dist/upgrade/installedHooksRetirement.js +46 -40
  434. package/dist/upgrade/legacyAgentCleanup.js +187 -21
  435. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  436. package/dist/upgrade/migrateArtifactsV2ToV3.js +334 -64
  437. package/dist/upgrade/migrationPublication.js +122 -0
  438. package/dist/upgrade/nextMajorDoctor.js +0 -1
  439. package/dist/upgrade/npxPlatformStatus.js +2 -2
  440. package/dist/upgrade/projectIntegration.js +128 -160
  441. package/dist/upgrade/projectIntegrationDecision.js +42 -85
  442. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  443. package/dist/upgrade/runtimeMigration.js +262 -453
  444. package/dist/upgrade/upgradeCommands.js +14 -1
  445. package/dist/upgrade/upgradeLock.js +85 -0
  446. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  447. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  448. package/dist/upgrade/versionResolution.js +0 -1
  449. package/dist/validate/activationArtifactEvidence.js +866 -0
  450. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  451. package/dist/validate/activationConjunction.js +816 -0
  452. package/dist/validate/activationEvidenceManifest.js +610 -0
  453. package/dist/validate/activationPackageSemantics.js +29 -0
  454. package/dist/validate/appHomeContract.js +1 -7
  455. package/dist/validate/bootstrapAuthority.js +44 -0
  456. package/dist/validate/capability.js +11 -3
  457. package/dist/validate/crossCapability.js +14 -9
  458. package/dist/validate/retainedReferenceAuthority.js +879 -0
  459. package/dist/validate/selfAudit.js +39 -45
  460. package/dist/validate/v1LegacyCruft.js +131 -0
  461. package/dist/validate/vocabularyAuthority.js +8 -8
  462. package/package.json +39 -13
  463. package/bundle/references/adapters/cursor.md +0 -214
  464. package/bundle/references/adapters/opencode.md +0 -530
  465. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  466. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  467. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  468. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  469. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  470. package/bundle/references/analysis/benchmark.md +0 -267
  471. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  472. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  473. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  474. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  475. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  476. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  477. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  478. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  479. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  480. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  481. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  482. package/bundle/references/meta/documentation-inventory.md +0 -49
  483. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  484. package/bundle/skills/agentera/agents/audit.toml +0 -6
  485. package/bundle/skills/agentera/agents/build.toml +0 -6
  486. package/bundle/skills/agentera/agents/design.toml +0 -6
  487. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  488. package/bundle/skills/agentera/agents/document.toml +0 -6
  489. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  490. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  491. package/bundle/skills/agentera/agents/plan.toml +0 -6
  492. package/bundle/skills/agentera/agents/profile.toml +0 -6
  493. package/bundle/skills/agentera/agents/research.toml +0 -6
  494. package/bundle/skills/agentera/agents/status.toml +0 -6
  495. package/bundle/skills/agentera/agents/vision.toml +0 -6
  496. package/bundle/skills/agentera/references/contract.md +0 -1048
  497. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  498. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  499. package/dist/analytics/extractCorpus/core.js.map +0 -1
  500. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  501. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  502. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  503. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  504. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  505. package/dist/analytics/extractCorpus/index.js.map +0 -1
  506. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  507. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  508. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  509. package/dist/analytics/extractCorpus.js.map +0 -1
  510. package/dist/analytics/usageStats.js.map +0 -1
  511. package/dist/bin/agentera.js.map +0 -1
  512. package/dist/capabilities/audit/instructions.js.map +0 -1
  513. package/dist/capabilities/build/instructions.js.map +0 -1
  514. package/dist/capabilities/design/instructions.js.map +0 -1
  515. package/dist/capabilities/discuss/instructions.js.map +0 -1
  516. package/dist/capabilities/document/instructions.js.map +0 -1
  517. package/dist/capabilities/dokumentera/instructions.js +0 -6
  518. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  519. package/dist/capabilities/hej/instructions.js +0 -6
  520. package/dist/capabilities/hej/instructions.js.map +0 -1
  521. package/dist/capabilities/index.js.map +0 -1
  522. package/dist/capabilities/inspektera/instructions.js +0 -6
  523. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  524. package/dist/capabilities/inspirera/instructions.js +0 -6
  525. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  526. package/dist/capabilities/optimera/instructions.js +0 -6
  527. package/dist/capabilities/optimera/instructions.js.map +0 -1
  528. package/dist/capabilities/optimize/instructions.js.map +0 -1
  529. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  530. package/dist/capabilities/orkestrera/instructions.js +0 -6
  531. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  532. package/dist/capabilities/plan/instructions.js.map +0 -1
  533. package/dist/capabilities/planera/instructions.js +0 -6
  534. package/dist/capabilities/planera/instructions.js.map +0 -1
  535. package/dist/capabilities/profile/instructions.js.map +0 -1
  536. package/dist/capabilities/profilera/instructions.js +0 -6
  537. package/dist/capabilities/profilera/instructions.js.map +0 -1
  538. package/dist/capabilities/realisera/instructions.js +0 -6
  539. package/dist/capabilities/realisera/instructions.js.map +0 -1
  540. package/dist/capabilities/research/instructions.js.map +0 -1
  541. package/dist/capabilities/resonera/instructions.js +0 -6
  542. package/dist/capabilities/resonera/instructions.js.map +0 -1
  543. package/dist/capabilities/status/instructions.js.map +0 -1
  544. package/dist/capabilities/vision/instructions.js.map +0 -1
  545. package/dist/capabilities/visionera/instructions.js +0 -6
  546. package/dist/capabilities/visionera/instructions.js.map +0 -1
  547. package/dist/capabilities/visualisera/instructions.js +0 -5
  548. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  549. package/dist/cli/appContext.js.map +0 -1
  550. package/dist/cli/argvalidate.js.map +0 -1
  551. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  552. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  553. package/dist/cli/capabilityContext/build.js.map +0 -1
  554. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  555. package/dist/cli/capabilityContext/contract.js.map +0 -1
  556. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  557. package/dist/cli/capabilityContext/index.js.map +0 -1
  558. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  559. package/dist/cli/capabilityContext/planState.js.map +0 -1
  560. package/dist/cli/capabilityContext/progress.js.map +0 -1
  561. package/dist/cli/capabilityContext/realisera.js +0 -174
  562. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  563. package/dist/cli/capabilityContext/shared.js.map +0 -1
  564. package/dist/cli/capabilityContext/slim.js.map +0 -1
  565. package/dist/cli/capabilityContext/startup.js.map +0 -1
  566. package/dist/cli/capabilityContext/types.js.map +0 -1
  567. package/dist/cli/capabilityContext.js.map +0 -1
  568. package/dist/cli/commands/appHome.js.map +0 -1
  569. package/dist/cli/commands/backfill.js +0 -84
  570. package/dist/cli/commands/backfill.js.map +0 -1
  571. package/dist/cli/commands/capability.js.map +0 -1
  572. package/dist/cli/commands/compact.js.map +0 -1
  573. package/dist/cli/commands/doctor.js.map +0 -1
  574. package/dist/cli/commands/lint.js.map +0 -1
  575. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  576. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  577. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  578. package/dist/cli/commands/prime/routeOutput.js +0 -50
  579. package/dist/cli/commands/prime/routeOutput.js.map +0 -1
  580. package/dist/cli/commands/prime/types.js.map +0 -1
  581. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  582. package/dist/cli/commands/prime.js.map +0 -1
  583. package/dist/cli/commands/query.js.map +0 -1
  584. package/dist/cli/commands/report.js.map +0 -1
  585. package/dist/cli/commands/schema.js.map +0 -1
  586. package/dist/cli/commands/state/decisions.js.map +0 -1
  587. package/dist/cli/commands/state/docs.js.map +0 -1
  588. package/dist/cli/commands/state/experiments.js.map +0 -1
  589. package/dist/cli/commands/state/health.js.map +0 -1
  590. package/dist/cli/commands/state/index.js.map +0 -1
  591. package/dist/cli/commands/state/objective.js.map +0 -1
  592. package/dist/cli/commands/state/plan.js.map +0 -1
  593. package/dist/cli/commands/state/progress.js.map +0 -1
  594. package/dist/cli/commands/state/shared.js.map +0 -1
  595. package/dist/cli/commands/state/todo.js.map +0 -1
  596. package/dist/cli/commands/state.js +0 -1023
  597. package/dist/cli/commands/state.js.map +0 -1
  598. package/dist/cli/commands/upgrade.js.map +0 -1
  599. package/dist/cli/commands/validate.js.map +0 -1
  600. package/dist/cli/commands/verify.js.map +0 -1
  601. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  602. package/dist/cli/contracts/orientationState.js.map +0 -1
  603. package/dist/cli/dispatch/argvParser.js.map +0 -1
  604. package/dist/cli/dispatch/check.js.map +0 -1
  605. package/dist/cli/dispatch/commands.js.map +0 -1
  606. package/dist/cli/dispatch/index.js.map +0 -1
  607. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  608. package/dist/cli/dispatch/prime.js.map +0 -1
  609. package/dist/cli/dispatch/shared.js.map +0 -1
  610. package/dist/cli/dispatch/state.js.map +0 -1
  611. package/dist/cli/dispatch.js.map +0 -1
  612. package/dist/cli/errors.js.map +0 -1
  613. package/dist/cli/help.js.map +0 -1
  614. package/dist/cli/orientation/attention.js.map +0 -1
  615. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  616. package/dist/cli/orientation.js.map +0 -1
  617. package/dist/cli/prime-blob.js.map +0 -1
  618. package/dist/cli/startupCompletenessContract.js.map +0 -1
  619. package/dist/cli/stateQuery.js.map +0 -1
  620. package/dist/cli/structured.js.map +0 -1
  621. package/dist/cli/todoMarkdown.js.map +0 -1
  622. package/dist/cli/todoSeverity.js.map +0 -1
  623. package/dist/core/difflib.js.map +0 -1
  624. package/dist/core/envPaths.js.map +0 -1
  625. package/dist/core/git.js +0 -43
  626. package/dist/core/git.js.map +0 -1
  627. package/dist/core/jsonValue.js.map +0 -1
  628. package/dist/core/paths.js.map +0 -1
  629. package/dist/core/pyjson.js.map +0 -1
  630. package/dist/core/sourceRoot.js.map +0 -1
  631. package/dist/core/toml.js.map +0 -1
  632. package/dist/core/yaml.js.map +0 -1
  633. package/dist/eval/evalSkills.js.map +0 -1
  634. package/dist/eval/semanticEval.js.map +0 -1
  635. package/dist/eval/semanticFixtures.js.map +0 -1
  636. package/dist/hooks/common.js.map +0 -1
  637. package/dist/hooks/compaction/apply.js.map +0 -1
  638. package/dist/hooks/compaction/dryRun.js.map +0 -1
  639. package/dist/hooks/compaction/index.js.map +0 -1
  640. package/dist/hooks/compaction/parse.js.map +0 -1
  641. package/dist/hooks/compaction/retention.js.map +0 -1
  642. package/dist/hooks/compaction/status.js.map +0 -1
  643. package/dist/hooks/compaction/todoResolved.js +0 -137
  644. package/dist/hooks/compaction/todoResolved.js.map +0 -1
  645. package/dist/hooks/compaction/types.js.map +0 -1
  646. package/dist/hooks/compaction.js +0 -935
  647. package/dist/hooks/compaction.js.map +0 -1
  648. package/dist/hooks/cursorPreToolUse.js +0 -19
  649. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  650. package/dist/hooks/cursorSessionStart.js +0 -79
  651. package/dist/hooks/cursorSessionStart.js.map +0 -1
  652. package/dist/hooks/sessionStart.js +0 -216
  653. package/dist/hooks/sessionStart.js.map +0 -1
  654. package/dist/hooks/sessionStop.js +0 -206
  655. package/dist/hooks/sessionStop.js.map +0 -1
  656. package/dist/hooks/todoLayout.js +0 -177
  657. package/dist/hooks/todoLayout.js.map +0 -1
  658. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  659. package/dist/hooks/validateArtifact/index.js.map +0 -1
  660. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  661. package/dist/hooks/validateArtifact/runtime.js +0 -86
  662. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  663. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  664. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  665. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  666. package/dist/hooks/validateArtifact.js +0 -924
  667. package/dist/hooks/validateArtifact.js.map +0 -1
  668. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  669. package/dist/registries/artifactProtocolIds.js.map +0 -1
  670. package/dist/registries/artifactRegistry.js.map +0 -1
  671. package/dist/registries/capabilityContract.js.map +0 -1
  672. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  673. package/dist/registries/packageRegistry.js.map +0 -1
  674. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  675. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  676. package/dist/registries/triggerLoader.js.map +0 -1
  677. package/dist/release/releaseMetadata.js.map +0 -1
  678. package/dist/routing/index.js +0 -2
  679. package/dist/routing/index.js.map +0 -1
  680. package/dist/routing/routeEngine.js +0 -189
  681. package/dist/routing/routeEngine.js.map +0 -1
  682. package/dist/setup/codex/agents.js +0 -96
  683. package/dist/setup/codex/agents.js.map +0 -1
  684. package/dist/setup/codex/cli.js +0 -161
  685. package/dist/setup/codex/cli.js.map +0 -1
  686. package/dist/setup/codex/configToml.js +0 -639
  687. package/dist/setup/codex/configToml.js.map +0 -1
  688. package/dist/setup/codex/constants.js +0 -29
  689. package/dist/setup/codex/constants.js.map +0 -1
  690. package/dist/setup/codex/installRoot.js +0 -64
  691. package/dist/setup/codex/installRoot.js.map +0 -1
  692. package/dist/setup/codex/state.js +0 -270
  693. package/dist/setup/codex/state.js.map +0 -1
  694. package/dist/setup/codex.js +0 -12
  695. package/dist/setup/codex.js.map +0 -1
  696. package/dist/setup/copilot.js +0 -227
  697. package/dist/setup/copilot.js.map +0 -1
  698. package/dist/setup/cursor.js +0 -129
  699. package/dist/setup/cursor.js.map +0 -1
  700. package/dist/setup/cursorSurfaces.js +0 -67
  701. package/dist/setup/cursorSurfaces.js.map +0 -1
  702. package/dist/setup/doctor/core.js +0 -300
  703. package/dist/setup/doctor/core.js.map +0 -1
  704. package/dist/setup/doctor/diagnostics.js +0 -240
  705. package/dist/setup/doctor/diagnostics.js.map +0 -1
  706. package/dist/setup/doctor/opencode.js +0 -313
  707. package/dist/setup/doctor/opencode.js.map +0 -1
  708. package/dist/setup/doctor/report.js +0 -425
  709. package/dist/setup/doctor/report.js.map +0 -1
  710. package/dist/setup/doctor.js +0 -10
  711. package/dist/setup/doctor.js.map +0 -1
  712. package/dist/setup/opencode.js.map +0 -1
  713. package/dist/setup/smokeChecks.js.map +0 -1
  714. package/dist/state/installRoot.js.map +0 -1
  715. package/dist/state/progressCommit.js +0 -289
  716. package/dist/state/progressCommit.js.map +0 -1
  717. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  718. package/dist/state/startupAnalysis/contract.js.map +0 -1
  719. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  720. package/dist/state/startupAnalysis/index.js.map +0 -1
  721. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  722. package/dist/state/startupAnalysis/records.js.map +0 -1
  723. package/dist/state/startupAnalysis/report.js.map +0 -1
  724. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  725. package/dist/state/startupAnalysis.js.map +0 -1
  726. package/dist/upgrade/appContentRefresh.js.map +0 -1
  727. package/dist/upgrade/appModel.js.map +0 -1
  728. package/dist/upgrade/bundleEvidence.js.map +0 -1
  729. package/dist/upgrade/channels.js.map +0 -1
  730. package/dist/upgrade/cliProbe.js +0 -22
  731. package/dist/upgrade/cliProbe.js.map +0 -1
  732. package/dist/upgrade/coexistenceProbe.js +0 -107
  733. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  734. package/dist/upgrade/compatibility.js.map +0 -1
  735. package/dist/upgrade/doctor.js.map +0 -1
  736. package/dist/upgrade/doctorClassifier.js.map +0 -1
  737. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  738. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  739. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  740. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  741. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  742. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  743. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  744. package/dist/upgrade/projectIntegration.js.map +0 -1
  745. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  746. package/dist/upgrade/runtimeMigration.js.map +0 -1
  747. package/dist/upgrade/upgradeCommands.js.map +0 -1
  748. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  749. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  750. package/dist/upgrade/versionResolution.js.map +0 -1
  751. package/dist/validate/appHomeContract.js.map +0 -1
  752. package/dist/validate/capability.js.map +0 -1
  753. package/dist/validate/crossCapability.js.map +0 -1
  754. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  755. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  756. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  757. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  758. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  759. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  760. package/dist/validate/lifecycleAdapters.js +0 -62
  761. package/dist/validate/lifecycleAdapters.js.map +0 -1
  762. package/dist/validate/selfAudit.js.map +0 -1
  763. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -1,8 +1,7 @@
1
- import fs from "node:fs";
2
1
  import os from "node:os";
3
2
  import path from "node:path";
4
- import { pyJsonIndent } from "../../core/pyjson.js";
5
3
  import { defaultOutputPath, } from "./core.js";
4
+ import { defaultTiersDir, publishEvidenceTiers } from "./evidenceTiers.js";
6
5
  import { buildCorpus } from "./corpus.js";
7
6
  import { COVERAGE_EXIT_FLAGGED, corpusEnvelopeCoverage, formatCoverageSummaryText, runCoverageAudit, } from "./coverageAudit.js";
8
7
  import { formatTruncationWarnings, resolveSqliteCaps } from "./sqliteCaps.js";
@@ -11,6 +10,7 @@ export function parseExtractArgs(argv, env = process.env, platform = process.pla
11
10
  const home = env.HOME || (platform === "win32" ? env.USERPROFILE : undefined) || os.homedir();
12
11
  const args = {
13
12
  output: defaultOutputPath(env, platform),
13
+ tierOutput: null,
14
14
  projectRoot: [],
15
15
  codexSessionsDir: path.join(home, ".codex", "sessions"),
16
16
  claudeProjectsDir: path.join(home, ".claude", "projects"),
@@ -19,7 +19,7 @@ export function parseExtractArgs(argv, env = process.env, platform = process.pla
19
19
  cursorProjectsDir: null,
20
20
  cursorChatsDir: null,
21
21
  noCodex: false,
22
- noClaude: false,
22
+ importSources: [],
23
23
  noOpencode: false,
24
24
  noCopilot: false,
25
25
  noCursor: false,
@@ -27,6 +27,7 @@ export function parseExtractArgs(argv, env = process.env, platform = process.pla
27
27
  coverageAuditOnly: false,
28
28
  format: "text",
29
29
  };
30
+ let claudeProjectsDirExplicit = false;
30
31
  for (let i = 0; i < argv.length; i++) {
31
32
  const a = argv[i];
32
33
  const val = (name) => {
@@ -37,14 +38,28 @@ export function parseExtractArgs(argv, env = process.env, platform = process.pla
37
38
  return null;
38
39
  };
39
40
  let v;
41
+ // `--output` is a deprecated no-op for back-compat: it targeted the
42
+ // eliminated monolithic corpus.json write. Refresh now publishes bounded
43
+ // tiers via `--tier-output` (default: `defaultTiersDir`). `--output` is
44
+ // accepted to keep older callers from hard-crashing but has no effect.
40
45
  if ((v = val("--output")) !== null)
41
46
  args.output = v;
47
+ else if ((v = val("--tier-output")) !== null)
48
+ args.tierOutput = v;
42
49
  else if ((v = val("--project-root")) !== null)
43
50
  args.projectRoot.push(v);
44
51
  else if ((v = val("--codex-sessions-dir")) !== null)
45
52
  args.codexSessionsDir = v;
46
- else if ((v = val("--claude-projects-dir")) !== null)
53
+ else if ((v = val("--claude-projects-dir")) !== null) {
47
54
  args.claudeProjectsDir = v;
55
+ claudeProjectsDirExplicit = true;
56
+ }
57
+ else if ((v = val("--import-source")) !== null) {
58
+ if (v !== "claude")
59
+ throw new Error(`extract-corpus: unsupported historical import source '${v}'; valid source: claude`);
60
+ if (!args.importSources.includes(v))
61
+ args.importSources.push(v);
62
+ }
48
63
  else if ((v = val("--opencode-conversations-dir")) !== null)
49
64
  args.opencodeConversationsDir = v;
50
65
  else if ((v = val("--copilot-conversations-dir")) !== null)
@@ -55,8 +70,6 @@ export function parseExtractArgs(argv, env = process.env, platform = process.pla
55
70
  args.cursorChatsDir = v;
56
71
  else if (a === "--no-codex")
57
72
  args.noCodex = true;
58
- else if (a === "--no-claude")
59
- args.noClaude = true;
60
73
  else if (a === "--no-opencode")
61
74
  args.noOpencode = true;
62
75
  else if (a === "--no-copilot")
@@ -87,6 +100,9 @@ export function parseExtractArgs(argv, env = process.env, platform = process.pla
87
100
  else
88
101
  throw new Error(`extract-corpus: unrecognized argument: ${a}`);
89
102
  }
103
+ if (claudeProjectsDirExplicit && !args.importSources.includes("claude")) {
104
+ throw new Error("extract-corpus: --claude-projects-dir requires explicit --import-source claude");
105
+ }
90
106
  return args;
91
107
  }
92
108
  /** Engine entry point mirroring scripts/extract_corpus.py main(). */
@@ -105,6 +121,10 @@ export function extractCorpusMain(argv, io = {}) {
105
121
  return 2;
106
122
  }
107
123
  const projectRoots = args.projectRoot.length > 0 ? args.projectRoot : [cwd];
124
+ if (args.importSources.includes("claude")) {
125
+ err("Historical import warning: Claude transcripts can contain secrets, file contents, and command output. " +
126
+ "Import is local and read-only; records are labeled historical_import and excluded from active-runtime analytics.");
127
+ }
108
128
  const audit = runCoverageAudit(args, env, platform, args.acceptCoverageGap);
109
129
  if (args.format === "json") {
110
130
  out(JSON.stringify({ coverage_audit: audit }, null, 2));
@@ -126,7 +146,7 @@ export function extractCorpusMain(argv, io = {}) {
126
146
  const corpus = buildCorpus({
127
147
  projectRoots,
128
148
  codexSessionsDir: args.noCodex ? null : args.codexSessionsDir,
129
- claudeProjectsDir: args.noClaude ? null : args.claudeProjectsDir,
149
+ claudeProjectsDir: args.importSources.includes("claude") ? args.claudeProjectsDir : null,
130
150
  opencodeConversationsDir: args.noOpencode ? null : args.opencodeConversationsDir || resolveOpencodeDbPath(env),
131
151
  copilotConversationsDir: args.noCopilot ? null : args.copilotConversationsDir || resolveCopilotStorePath(env),
132
152
  cursorProjectsDir: skipCursor ? null : args.cursorProjectsDir || resolveCursorProjectsPath(env),
@@ -134,8 +154,6 @@ export function extractCorpusMain(argv, io = {}) {
134
154
  coverage: corpusEnvelopeCoverage(audit),
135
155
  sqliteCaps,
136
156
  });
137
- fs.mkdirSync(path.dirname(args.output), { recursive: true });
138
- fs.writeFileSync(args.output, pyJsonIndent(corpus) + "\n", "utf-8");
139
157
  const truncationWarning = formatTruncationWarnings(corpus.metadata.runtime_statuses);
140
158
  if (truncationWarning)
141
159
  err(truncationWarning);
@@ -143,7 +161,30 @@ export function extractCorpusMain(argv, io = {}) {
143
161
  const familyBits = Object.entries(corpus.metadata.families)
144
162
  .map(([name, summary]) => `${name}=${summary.count}`)
145
163
  .join(", ");
146
- out(`wrote corpus: ${args.output} (${total} records; ${familyBits})`);
164
+ // Publish bounded evidence tiers as the canonical bounded publication output.
165
+ // The monolithic corpus envelope write is eliminated: all bounded consumers
166
+ // (usage, report, prime coverage, startup analysis, profile synthesis) read
167
+ // the signal tier and full-evidence shards directly. Legacy monolithic state
168
+ // receives deterministic refresh guidance rather than read compatibility.
169
+ const tiersDir = args.tierOutput ?? defaultTiersDir(env, platform);
170
+ const publication = publishEvidenceTiers(corpus.records, {
171
+ tiersDir,
172
+ adapterVersion: corpus.metadata.adapter_version,
173
+ runtimeStatuses: corpus.metadata.runtime_statuses,
174
+ env,
175
+ platform,
176
+ corpusMetadata: {
177
+ extracted_at: corpus.metadata.extracted_at,
178
+ runtime_statuses: corpus.metadata.runtime_statuses,
179
+ coverage_envelope: {
180
+ available_runtimes: corpus.metadata.available_runtimes,
181
+ selected_runtimes: corpus.metadata.selected_runtimes,
182
+ available_but_not_selected: corpus.metadata.available_but_not_selected,
183
+ },
184
+ },
185
+ });
186
+ out(`published tiers: ${tiersDir} (generation ${publication.generation}; ` +
187
+ `${publication.shard_count} shards; ${publication.signal_count} signals; ` +
188
+ `${publication.signal_bytes} bytes${publication.signal_selection.capped ? "; selection applied" : ""}) [${total} records; ${familyBits}]`);
147
189
  return 0;
148
190
  }
149
- //# sourceMappingURL=cli.js.map
@@ -1,9 +1,9 @@
1
1
  import fs from "node:fs";
2
2
  import { resolvePath } from "../../core/paths.js";
3
- import { isoFromMtime, record, signalType, textFromContent, } from "./core.js";
3
+ import { authorClassForRole, isoFromMtime, record, signalType, textFromContent, transportProvenance, } from "./core.js";
4
4
  import { isPlainObject, rglob, isFilePath } from "./core.js";
5
5
  import { resolveSqliteCaps, } from "./sqliteCaps.js";
6
- import { PermissionDeniedError, openSqlite, sqliteTimestamp, tableColumns, firstColumn, qualified, } from "./sqliteSessions.js";
6
+ import { PermissionDeniedError, openSqlite, jsonDict, sqliteTimestamp, tableColumns, firstColumn, qualified, } from "./sqliteSessions.js";
7
7
  function copilotDbCandidates(storePath) {
8
8
  if (isFilePath(storePath))
9
9
  return [storePath];
@@ -208,15 +208,18 @@ export function extractCopilotSessions(storePath, errors, ctx) {
208
208
  let index = 0;
209
209
  for (const row of rows) {
210
210
  index += 1;
211
- const role = String(row.role).toLowerCase();
212
- if (role !== "user" && role !== "assistant")
211
+ if (typeof row.role !== "string" || row.role.length === 0)
213
212
  continue;
213
+ const role = row.role.toLowerCase();
214
214
  const content = textFromContent(row.turn_text);
215
215
  const toolItems = copilotRowTools(row, errors);
216
216
  if (!content && toolItems.length === 0)
217
217
  continue;
218
218
  const projectPath = row.project_path ? String(row.project_path) : null;
219
219
  const timestamp = sqliteTimestamp(row.turn_time || row.session_time, fallbackTimestamp);
220
+ const transport = transportProvenance(row, jsonDict(row.turn_data));
221
+ const originId = transport.originId;
222
+ const authorClass = authorClassForRole(role, transport.authorClass, transport.originId);
220
223
  if (content) {
221
224
  const data = { actor: role, content };
222
225
  if (role === "user") {
@@ -233,9 +236,13 @@ export function extractCopilotSessions(storePath, errors, ctx) {
233
236
  sourceKind: "conversation_turn",
234
237
  timestamp,
235
238
  projectPath,
236
- runtime: "github-copilot",
239
+ runtime: "copilot",
240
+ sourceProduct: "github-copilot",
237
241
  sourceParts: [resolvePath(dbPath), index, role, content.slice(0, 80)],
238
242
  sessionId: String(row.session_id),
243
+ originId,
244
+ authorClass,
245
+ content,
239
246
  data,
240
247
  }));
241
248
  }
@@ -246,7 +253,8 @@ export function extractCopilotSessions(storePath, errors, ctx) {
246
253
  sourceKind: "tool_call",
247
254
  timestamp,
248
255
  projectPath,
249
- runtime: "github-copilot",
256
+ runtime: "copilot",
257
+ sourceProduct: "github-copilot",
250
258
  sourceParts: [resolvePath(dbPath), index, toolIndex, "tool", toolItem.tool_name, row.turn_id],
251
259
  sessionId: String(row.session_id),
252
260
  data: { tool_name: String(toolItem.tool_name), arguments: toolItem.arguments || {} },
@@ -259,9 +267,13 @@ export function extractCopilotSessions(storePath, errors, ctx) {
259
267
  sourceKind: "history_prompt",
260
268
  timestamp,
261
269
  projectPath,
262
- runtime: "github-copilot",
270
+ runtime: "copilot",
271
+ sourceProduct: "github-copilot",
263
272
  sourceParts: [resolvePath(dbPath), index, "history", content.slice(0, 120)],
264
273
  sessionId: String(row.session_id),
274
+ originId,
275
+ authorClass,
276
+ content,
265
277
  data: { prompt: content, signal_type: sig },
266
278
  }));
267
279
  }
@@ -270,4 +282,3 @@ export function extractCopilotSessions(storePath, errors, ctx) {
270
282
  }
271
283
  return records;
272
284
  }
273
- //# sourceMappingURL=copilotSessions.js.map
@@ -5,7 +5,7 @@ import { resolveProfileDirOverride, resolveXdgDataHome } from "../../core/envPat
5
5
  import { expanduser } from "../../core/paths.js";
6
6
  import crypto from "node:crypto";
7
7
  import { resolvePath } from "../../core/paths.js";
8
- export const ADAPTER_VERSION = "agentera-v2-corpus-1";
8
+ export const ADAPTER_VERSION = "agentera-v3-corpus-3";
9
9
  export const FAMILIES = [
10
10
  "instruction_document",
11
11
  "history_prompt",
@@ -15,16 +15,31 @@ export const FAMILIES = [
15
15
  ];
16
16
  export const RUNTIME_STORE_GLOBS = {
17
17
  codex: "*.jsonl",
18
- "claude-code": "*.jsonl",
19
18
  cursor: "*.jsonl",
20
- "cursor-agent": "store.db",
21
19
  opencode: "opencode.db",
22
- "github-copilot": "session-store.db",
20
+ copilot: "session-store.db",
21
+ };
22
+ export const HISTORICAL_IMPORT_STORE_GLOBS = {
23
+ "claude-code": "*.jsonl",
23
24
  };
25
+ const ACTIVE_ANALYTICS_RUNTIMES = new Set(["opencode", "codex", "cursor", "copilot"]);
24
26
  export const MAX_TOOL_ARG_TEXT = 500;
25
27
  export const MAX_SQLITE_ROWS = 100_000;
26
28
  export const MAX_SQLITE_SESSIONS = 60;
27
29
  export const COPILOT_SPARSE_REMEDIATION = "/chronicle reindex";
30
+ const ORIGIN_ID_RE = /^[a-f0-9]{64}$/;
31
+ const CONTENT_FINGERPRINT_RE = /^[a-f0-9]{64}$/;
32
+ const CONVERSATION_SOURCE_KINDS = new Set(["conversation_turn", "history_prompt"]);
33
+ const PROVENANCE_NESTED_KEYS = ["payload", "item", "metadata", "meta", "provenance", "source"];
34
+ const PROVENANCE_ORIGIN_KEYS = [
35
+ "origin_id",
36
+ "original_origin_id",
37
+ "original_origin",
38
+ "origin",
39
+ "source_origin",
40
+ "instruction_origin",
41
+ ];
42
+ const PROVENANCE_AUTHOR_KEYS = ["author_class", "authorClass", "author"];
28
43
  const DECISION_RE = /\b(decide|decision|prefer|preference|instead|avoid|don't|do not|should|trade[- ]?off|scope|plan|commit|review|fix|why|question|blocked|stuck|approve|reject|change|keep|remove)\b/i;
29
44
  const CORRECTION_RE = /\b(no|not quite|actually|rather|instead|wrong|correction|that's not|that is not|don't|do not)\b/i;
30
45
  const QUESTION_RE = /\?|^\s*(why|what|how|should|can|could|would)\b/i;
@@ -42,6 +57,195 @@ export function stableId(...parts) {
42
57
  const raw = parts.map((p) => pyStr(p)).join("\0");
43
58
  return crypto.createHash("sha256").update(raw, "utf-8").digest("hex").slice(0, 24);
44
59
  }
60
+ /** A bounded, deterministic identity for the source that originally supplied a record. */
61
+ export function originIdentity(origin) {
62
+ if (typeof origin !== "string" || origin.length === 0) {
63
+ throw new TypeError("origin must be a non-empty string");
64
+ }
65
+ return crypto
66
+ .createHash("sha256")
67
+ .update("agentera.corpus.origin.v1\0", "utf-8")
68
+ .update(origin, "utf-8")
69
+ .digest("hex");
70
+ }
71
+ /** A lowercase SHA-256 of the exact source text, without normalization or truncation. */
72
+ export function contentFingerprint(content) {
73
+ if (typeof content !== "string")
74
+ throw new TypeError("content must be a string");
75
+ return crypto.createHash("sha256").update(content, "utf-8").digest("hex");
76
+ }
77
+ function nonEmptyString(value) {
78
+ return typeof value === "string" && value.length > 0;
79
+ }
80
+ function provenanceObjects(sources) {
81
+ const out = [];
82
+ const pending = sources.slice();
83
+ const seen = new Set();
84
+ while (pending.length > 0 && out.length < 24) {
85
+ const value = pending.shift();
86
+ if (!isPlainObject(value) || seen.has(value))
87
+ continue;
88
+ seen.add(value);
89
+ out.push(value);
90
+ for (const key of PROVENANCE_NESTED_KEYS) {
91
+ const nested = value[key];
92
+ if (isPlainObject(nested))
93
+ pending.push(nested);
94
+ }
95
+ }
96
+ return out;
97
+ }
98
+ function inspectStringField(sources, keys) {
99
+ for (const source of sources) {
100
+ for (const key of keys) {
101
+ if (!Object.prototype.hasOwnProperty.call(source, key))
102
+ continue;
103
+ const value = source[key];
104
+ return nonEmptyString(value)
105
+ ? { state: "valid", key, value }
106
+ : { state: "invalid", key, value: null };
107
+ }
108
+ }
109
+ return { state: "absent", key: null, value: null };
110
+ }
111
+ function transportOriginId(key, value) {
112
+ return ORIGIN_ID_RE.test(value) && key.endsWith("_id") ? value : originIdentity(value);
113
+ }
114
+ /** Inspect the first explicit transport fields without collapsing malformed values into absence. */
115
+ export function inspectTransportProvenance(...sources) {
116
+ const objects = provenanceObjects(sources);
117
+ const origin = inspectStringField(objects, PROVENANCE_ORIGIN_KEYS);
118
+ const author = inspectStringField(objects, PROVENANCE_AUTHOR_KEYS);
119
+ return {
120
+ originId: origin.state === "valid" ? transportOriginId(origin.key, origin.value) : null,
121
+ authorClass: author.state === "valid" ? author.value : null,
122
+ originState: origin.state,
123
+ authorState: author.state,
124
+ };
125
+ }
126
+ /**
127
+ * Read only explicit transport metadata. Content is never inspected to infer
128
+ * either ownership or origin. An adapter may provide an origin digest directly,
129
+ * or a bounded source label that is converted to one.
130
+ */
131
+ export function transportProvenance(...sources) {
132
+ let origin = null;
133
+ let authorClass = null;
134
+ for (const source of provenanceObjects(sources)) {
135
+ if (origin === null) {
136
+ for (const key of PROVENANCE_ORIGIN_KEYS) {
137
+ const value = source[key];
138
+ if (nonEmptyString(value)) {
139
+ origin = transportOriginId(key, value);
140
+ break;
141
+ }
142
+ }
143
+ }
144
+ if (authorClass === null) {
145
+ for (const key of PROVENANCE_AUTHOR_KEYS) {
146
+ const value = source[key];
147
+ if (nonEmptyString(value)) {
148
+ authorClass = value;
149
+ break;
150
+ }
151
+ }
152
+ }
153
+ if (origin !== null && authorClass !== null)
154
+ break;
155
+ }
156
+ return { originId: origin, authorClass };
157
+ }
158
+ /**
159
+ * Map a transport role to a source-author class without examining its text.
160
+ * A claimed transported origin requires the original author to be explicit;
161
+ * the envelope role is not evidence for the source that was transported.
162
+ */
163
+ export function authorClassForRole(role, explicitAuthorClass = null, transportedOriginId = null) {
164
+ const explicit = nonEmptyString(explicitAuthorClass);
165
+ if (!explicit && nonEmptyString(transportedOriginId))
166
+ return null;
167
+ const value = explicit ? explicitAuthorClass : nonEmptyString(role) ? role : null;
168
+ if (value === null)
169
+ return null;
170
+ switch (value.toLowerCase()) {
171
+ case "user":
172
+ return "user";
173
+ case "assistant":
174
+ case "model":
175
+ case "tool":
176
+ return "agent";
177
+ case "system":
178
+ case "developer":
179
+ case "instruction":
180
+ return "injected_instruction";
181
+ default:
182
+ return explicit ? value : null;
183
+ }
184
+ }
185
+ /** Return the bounded provenance fields missing from one retained record. */
186
+ export function missingProvenanceFields(item) {
187
+ const missing = [];
188
+ const required = [
189
+ ["source_id", nonEmptyString(item.source_id)],
190
+ ["source_kind", nonEmptyString(item.source_kind)],
191
+ ["timestamp", nonEmptyString(item.timestamp)],
192
+ ["project_id", nonEmptyString(item.project_id)],
193
+ ["source_class", nonEmptyString(item.source_class)],
194
+ ["source_product", nonEmptyString(item.source_product)],
195
+ ["adapter_version", nonEmptyString(item.adapter_version)],
196
+ ["data", isPlainObject(item.data)],
197
+ ];
198
+ for (const [field, present] of required)
199
+ if (!present)
200
+ missing.push(field);
201
+ if (typeof item.runtime !== "string" && item.runtime !== null)
202
+ missing.push("runtime");
203
+ if (typeof item.active_runtime !== "boolean")
204
+ missing.push("active_runtime");
205
+ if (CONVERSATION_SOURCE_KINDS.has(String(item.source_kind))) {
206
+ if (!ORIGIN_ID_RE.test(String(item.origin_id ?? "")))
207
+ missing.push("origin_id");
208
+ if (!nonEmptyString(item.author_class))
209
+ missing.push("author_class");
210
+ if (!CONTENT_FINGERPRINT_RE.test(String(item.content_fingerprint ?? ""))) {
211
+ missing.push("content_fingerprint");
212
+ }
213
+ if (!nonEmptyString(item.session_id))
214
+ missing.push("session_id");
215
+ }
216
+ return [...new Set(missing)];
217
+ }
218
+ export function assessProvenance(records) {
219
+ const fields = new Set();
220
+ let missingRecords = 0;
221
+ for (const record of records) {
222
+ const missing = missingProvenanceFields(record);
223
+ if (missing.length === 0)
224
+ continue;
225
+ missingRecords += 1;
226
+ for (const field of missing)
227
+ fields.add(field);
228
+ }
229
+ return { complete: missingRecords === 0, missingFields: [...fields].sort(), missingRecords };
230
+ }
231
+ /**
232
+ * Count independent conversation origins without using record IDs or copy
233
+ * counts. Repeated transport of one origin and fingerprint contributes once;
234
+ * a different origin remains independent even when its text is identical.
235
+ */
236
+ export function countIndependentOrigins(records) {
237
+ const identities = new Set();
238
+ for (const record of records) {
239
+ if (!CONVERSATION_SOURCE_KINDS.has(String(record.source_kind)))
240
+ continue;
241
+ const originId = record.origin_id;
242
+ const fingerprint = record.content_fingerprint;
243
+ if (!ORIGIN_ID_RE.test(String(originId ?? "")) || !CONTENT_FINGERPRINT_RE.test(String(fingerprint ?? "")))
244
+ continue;
245
+ identities.add(`${originId}\0${fingerprint}`);
246
+ }
247
+ return identities.size;
248
+ }
45
249
  /** Python str() for the scalar/None values stable_id receives. */
46
250
  function pyStr(value) {
47
251
  if (value === null || value === undefined)
@@ -85,7 +289,15 @@ export function defaultOutputPath(env = process.env, platform = process.platform
85
289
  return path.join(defaultProfileDir(env, platform), "intermediate", "corpus.json");
86
290
  }
87
291
  export function runtimeStatus(runtime, opts) {
88
- const item = { runtime, status: opts.status, reason: opts.reason };
292
+ const activeRuntime = opts.activeRuntime ?? (runtime !== null && ACTIVE_ANALYTICS_RUNTIMES.has(runtime));
293
+ const item = {
294
+ runtime,
295
+ source_class: opts.sourceClass ?? (activeRuntime ? "active_runtime" : "historical_import"),
296
+ source_product: opts.sourceProduct ?? runtime ?? "unknown",
297
+ active_runtime: activeRuntime,
298
+ status: opts.status,
299
+ reason: opts.reason,
300
+ };
89
301
  if (opts.storePath !== null && opts.storePath !== undefined)
90
302
  item.store_path = opts.storePath;
91
303
  if (opts.fileCount !== null && opts.fileCount !== undefined)
@@ -102,6 +314,12 @@ export function runtimeStatus(runtime, opts) {
102
314
  item.truncation_cap = opts.truncationCap;
103
315
  if (opts.truncationLimit !== null && opts.truncationLimit !== undefined)
104
316
  item.truncation_limit = opts.truncationLimit;
317
+ if (opts.provenanceMissingFields && opts.provenanceMissingFields.length > 0) {
318
+ item.provenance_missing_fields = opts.provenanceMissingFields;
319
+ }
320
+ if (opts.provenanceMissingRecords !== null && opts.provenanceMissingRecords !== undefined) {
321
+ item.provenance_missing_records = opts.provenanceMissingRecords;
322
+ }
105
323
  return item;
106
324
  }
107
325
  function isDir(p) {
@@ -146,35 +364,45 @@ function rglob(root, pattern) {
146
364
  walk(root);
147
365
  return out.sort();
148
366
  }
149
- export function discoverRuntimeStore(runtime, storePath) {
367
+ export function discoverRuntimeStore(runtime, storePath, opts = {}) {
368
+ const statusOpts = {
369
+ sourceProduct: opts.sourceProduct,
370
+ sourceClass: opts.sourceClass,
371
+ activeRuntime: opts.activeRuntime,
372
+ };
150
373
  if (storePath === null) {
151
- return runtimeStatus(runtime, { status: "skipped", reason: "disabled", storePath: null });
374
+ return runtimeStatus(runtime, { status: "skipped", reason: "disabled", storePath: null, ...statusOpts });
152
375
  }
153
376
  if (!fs.existsSync(storePath)) {
154
377
  return runtimeStatus(runtime, {
155
378
  status: "missing",
156
379
  reason: "store_absent",
157
380
  storePath,
158
- remediationLabels: runtime === "github-copilot" ? [COPILOT_SPARSE_REMEDIATION] : null,
381
+ remediationLabels: runtime === "copilot" ? [COPILOT_SPARSE_REMEDIATION] : null,
382
+ ...statusOpts,
159
383
  });
160
384
  }
161
- if ((runtime === "opencode" || runtime === "github-copilot") && isFilePath(storePath)) {
385
+ if (isFilePath(storePath)) {
162
386
  return runtimeStatus(runtime, {
163
387
  status: "available",
164
388
  reason: "candidate_files_found",
165
389
  storePath,
166
390
  fileCount: 1,
391
+ ...statusOpts,
167
392
  });
168
393
  }
169
394
  if (!isDir(storePath)) {
170
- return runtimeStatus(runtime, { status: "degraded", reason: "store_not_directory", storePath });
395
+ return runtimeStatus(runtime, { status: "degraded", reason: "store_not_directory", storePath, ...statusOpts });
171
396
  }
172
397
  let candidates;
173
398
  try {
174
- candidates = rglob(storePath, RUNTIME_STORE_GLOBS[runtime]);
399
+ const pattern = opts.pattern ?? (runtime === null ? undefined : RUNTIME_STORE_GLOBS[runtime]);
400
+ if (!pattern)
401
+ throw new Error("no declared store pattern");
402
+ candidates = rglob(storePath, pattern);
175
403
  }
176
404
  catch {
177
- return runtimeStatus(runtime, { status: "degraded", reason: "store_unreadable", storePath });
405
+ return runtimeStatus(runtime, { status: "degraded", reason: "store_unreadable", storePath, ...statusOpts });
178
406
  }
179
407
  if (candidates.length === 0) {
180
408
  return runtimeStatus(runtime, {
@@ -182,7 +410,8 @@ export function discoverRuntimeStore(runtime, storePath) {
182
410
  reason: "no_candidate_files",
183
411
  storePath,
184
412
  fileCount: 0,
185
- remediationLabels: runtime === "github-copilot" ? [COPILOT_SPARSE_REMEDIATION] : null,
413
+ remediationLabels: runtime === "copilot" ? [COPILOT_SPARSE_REMEDIATION] : null,
414
+ ...statusOpts,
186
415
  });
187
416
  }
188
417
  return runtimeStatus(runtime, {
@@ -190,6 +419,7 @@ export function discoverRuntimeStore(runtime, storePath) {
190
419
  reason: "candidate_files_found",
191
420
  storePath,
192
421
  fileCount: candidates.length,
422
+ ...statusOpts,
193
423
  });
194
424
  }
195
425
  // ── record builders + content helpers ──────────────────────────────
@@ -200,12 +430,16 @@ export function splitLines(text) {
200
430
  return parts;
201
431
  }
202
432
  export function record(opts) {
433
+ const activeRuntime = opts.activeRuntime ?? (opts.runtime !== null && ACTIVE_ANALYTICS_RUNTIMES.has(opts.runtime));
203
434
  const item = {
204
435
  source_id: stableId(opts.sourceKind, ...opts.sourceParts),
205
436
  timestamp: opts.timestamp,
206
437
  project_id: projectIdFromPath(opts.projectPath),
207
438
  source_kind: opts.sourceKind,
208
439
  runtime: opts.runtime,
440
+ source_class: opts.sourceClass ?? (activeRuntime ? "active_runtime" : "project"),
441
+ source_product: opts.sourceProduct ?? opts.runtime ?? "unknown",
442
+ active_runtime: activeRuntime,
209
443
  adapter_version: ADAPTER_VERSION,
210
444
  data: opts.data,
211
445
  };
@@ -215,6 +449,16 @@ export function record(opts) {
215
449
  item.session_id = opts.sessionId;
216
450
  item.conversation_key = opts.sessionId;
217
451
  }
452
+ if (opts.originId)
453
+ item.origin_id = opts.originId;
454
+ else if (opts.origin)
455
+ item.origin_id = originIdentity(opts.origin);
456
+ else if (opts.sessionId)
457
+ item.origin_id = originIdentity(`session:${opts.sessionId}`);
458
+ if (opts.authorClass)
459
+ item.author_class = opts.authorClass;
460
+ if (typeof opts.content === "string")
461
+ item.content_fingerprint = contentFingerprint(opts.content);
218
462
  return item;
219
463
  }
220
464
  function isPlainObject(v) {
@@ -352,8 +596,13 @@ export function toolCallRecordFromItem(args) {
352
596
  timestamp: eventTimestamp(event, args.fallbackTimestamp),
353
597
  projectPath: args.projectPath,
354
598
  runtime: args.runtime,
599
+ sourceClass: args.sourceClass,
600
+ sourceProduct: args.sourceProduct,
601
+ activeRuntime: args.activeRuntime,
355
602
  sourceParts: [resolvePath(args.sourcePath), args.index, "tool", toolName],
356
603
  sessionId: args.sessionId,
604
+ originId: transportProvenance(args.event, args.item).originId,
605
+ authorClass: "agent",
357
606
  data: { tool_name: toolName, arguments: argumentsVal }, // cast: parsed JSON IO boundary
358
607
  });
359
608
  }
@@ -361,4 +610,3 @@ export function toolCallRecord(args) {
361
610
  return toolCallRecordFromItem({ ...args, item: payloadItem(args.event) });
362
611
  }
363
612
  export { isPlainObject, rglob, isDir, isFilePath };
364
- //# sourceMappingURL=core.js.map