agentera 3.0.0-dev.8 → 3.0.0-dev.81

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 (725) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +252 -22
  3. package/bundle/.agentera-build-source.json +8 -0
  4. package/bundle/CHANGELOG.md +1389 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +142 -0
  8. package/bundle/UPGRADE.md +275 -0
  9. package/bundle/extract-corpus-parity.json +2 -4
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +484 -0
  12. package/bundle/references/adapters/package-registry.yaml +443 -188
  13. package/bundle/references/adapters/package-surface-characterization.md +68 -34
  14. package/bundle/references/adapters/product-v1-reset.yaml +101 -0
  15. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  16. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  17. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  18. package/bundle/references/adapters/runtime-retired-resources.yaml +357 -0
  19. package/bundle/references/analysis/evidence-tier-authority.yaml +559 -0
  20. package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
  21. package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
  22. package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
  23. package/bundle/references/analysis/verification-policy.yaml +262 -0
  24. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  25. package/bundle/references/artifacts/glossary-entry-contract.yaml +2906 -0
  26. package/bundle/references/artifacts/state-storage-authority.yaml +3075 -0
  27. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  28. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  29. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  30. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  31. package/bundle/references/cli/routing-model.md +152 -93
  32. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  33. package/bundle/references/cli/update-channels.yaml +7 -5
  34. package/bundle/references/cli/vocabulary-index.yaml +7 -9
  35. package/bundle/references/cli/vocabulary.md +54 -97
  36. package/bundle/references/meta/retained-reference-authority.yaml +171 -0
  37. package/bundle/skills/agentera/SKILL.md +183 -63
  38. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  39. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  40. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  41. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  42. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  43. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  44. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  45. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  46. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  47. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  48. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  49. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  51. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  52. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  53. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  54. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  55. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  56. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  57. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  58. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  59. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  60. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  62. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  63. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  64. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  65. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  66. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  67. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  68. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
  69. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
  70. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  71. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
  72. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  73. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  74. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  75. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  76. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  77. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  79. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  81. package/bundle/skills/agentera/protocol.yaml +4 -4
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +29 -30
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -43
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -34
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +53 -51
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -35
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +453 -55
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +128 -39
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +305 -7
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +0 -19
  95. package/dist/.agentera-build-source.json +8 -0
  96. package/dist/analytics/extractCorpus/cli.js +52 -11
  97. package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
  98. package/dist/analytics/extractCorpus/core.js +262 -14
  99. package/dist/analytics/extractCorpus/corpus.js +57 -18
  100. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  101. package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
  102. package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
  103. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  104. package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
  105. package/dist/analytics/extractCorpus/index.js +4 -2
  106. package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
  107. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  108. package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
  109. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  110. package/dist/analytics/extractCorpus.js +0 -1
  111. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  112. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  113. package/dist/analytics/personalGlossaryAdmission.js +113 -0
  114. package/dist/analytics/personalGlossaryCandidateProjection.js +788 -0
  115. package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
  116. package/dist/analytics/personalGlossaryCandidateProjectionModel.js +1 -0
  117. package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
  118. package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
  119. package/dist/analytics/personalGlossaryDecision.js +203 -0
  120. package/dist/analytics/personalGlossaryExplicit.js +788 -0
  121. package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
  122. package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
  123. package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
  124. package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
  125. package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
  126. package/dist/analytics/personalGlossaryProfile.js +229 -0
  127. package/dist/analytics/personalGlossaryRecurrence.js +618 -0
  128. package/dist/analytics/personalGlossaryRefreshProjection.js +351 -0
  129. package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
  130. package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
  131. package/dist/analytics/profileSignals.js +211 -0
  132. package/dist/analytics/usageStats.js +150 -23
  133. package/dist/audit/terminologyDrift.js +281 -0
  134. package/dist/bin/agentera.js +3 -2
  135. package/dist/capabilities/audit/instructions.js +16 -6
  136. package/dist/capabilities/build/instructions.js +59 -6
  137. package/dist/capabilities/design/instructions.js +3 -4
  138. package/dist/capabilities/discuss/instructions.js +29 -6
  139. package/dist/capabilities/document/instructions.js +11 -6
  140. package/dist/capabilities/index.js +20 -14
  141. package/dist/capabilities/optimize/instructions.js +14 -6
  142. package/dist/capabilities/orchestrate/instructions.js +42 -6
  143. package/dist/capabilities/plan/instructions.js +30 -3
  144. package/dist/capabilities/profile/instructions.js +104 -5
  145. package/dist/capabilities/research/instructions.js +4 -5
  146. package/dist/capabilities/status/instructions.js +15 -6
  147. package/dist/capabilities/status/startupInstructions.js +34 -0
  148. package/dist/capabilities/vision/instructions.js +3 -5
  149. package/dist/cli/appContext.js +14 -7
  150. package/dist/cli/argvalidate.js +0 -1
  151. package/dist/cli/capabilityContext/benchmark.js +5 -4
  152. package/dist/cli/capabilityContext/bespoke.js +14 -6
  153. package/dist/cli/capabilityContext/build.js +116 -42
  154. package/dist/cli/capabilityContext/closeout.js +30 -27
  155. package/dist/cli/capabilityContext/contract.js +18 -27
  156. package/dist/cli/capabilityContext/evidence.js +84 -77
  157. package/dist/cli/capabilityContext/index.js +0 -1
  158. package/dist/cli/capabilityContext/orchestration.js +42 -18
  159. package/dist/cli/capabilityContext/planState.js +89 -96
  160. package/dist/cli/capabilityContext/progress.js +52 -12
  161. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  162. package/dist/cli/capabilityContext/shared.js +9 -20
  163. package/dist/cli/capabilityContext/slim.js +52 -8
  164. package/dist/cli/capabilityContext/startup.js +51 -114
  165. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  166. package/dist/cli/capabilityContext/types.js +26 -10
  167. package/dist/cli/capabilityContext.js +0 -1
  168. package/dist/cli/commands/appHome.js +0 -1
  169. package/dist/cli/commands/capability.js +2 -2
  170. package/dist/cli/commands/compact.js +163 -13
  171. package/dist/cli/commands/doctor.js +162 -11
  172. package/dist/cli/commands/durability.js +81 -0
  173. package/dist/cli/commands/glossaryAdvice.js +138 -0
  174. package/dist/cli/commands/lint.js +22 -8
  175. package/dist/cli/commands/personalGlossaryCandidateReads.js +755 -0
  176. package/dist/cli/commands/personalGlossaryDecision.js +349 -0
  177. package/dist/cli/commands/personalGlossaryPublish.js +484 -0
  178. package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
  179. package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
  180. package/dist/cli/commands/prime/briefOrientation.js +845 -0
  181. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  182. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  183. package/dist/cli/commands/prime/collectEntityOrientation.js +338 -0
  184. package/dist/cli/commands/prime/collectOrientationState.js +124 -68
  185. package/dist/cli/commands/prime/orientationOutput.js +271 -59
  186. package/dist/cli/commands/prime/types.js +0 -1
  187. package/dist/cli/commands/prime.js +89 -11
  188. package/dist/cli/commands/profileGrounding.js +55 -0
  189. package/dist/cli/commands/query.js +74 -52
  190. package/dist/cli/commands/report.js +187 -27
  191. package/dist/cli/commands/route.js +142 -0
  192. package/dist/cli/commands/schema.js +436 -138
  193. package/dist/cli/commands/state/decisions.js +40 -56
  194. package/dist/cli/commands/state/docs.js +58 -85
  195. package/dist/cli/commands/state/experimentRecords.js +151 -0
  196. package/dist/cli/commands/state/experiments.js +11 -65
  197. package/dist/cli/commands/state/get.js +129 -0
  198. package/dist/cli/commands/state/health.js +11 -113
  199. package/dist/cli/commands/state/index.js +6 -41
  200. package/dist/cli/commands/state/list.js +194 -0
  201. package/dist/cli/commands/state/objective.js +21 -65
  202. package/dist/cli/commands/state/plan.js +11 -170
  203. package/dist/cli/commands/state/planTasks.js +154 -0
  204. package/dist/cli/commands/state/plans.js +154 -0
  205. package/dist/cli/commands/state/progress.js +11 -45
  206. package/dist/cli/commands/state/shared.js +0 -1
  207. package/dist/cli/commands/state/todo.js +28 -107
  208. package/dist/cli/commands/state/write.js +459 -0
  209. package/dist/cli/commands/upgrade.js +176 -5
  210. package/dist/cli/commands/upgradeVerify.js +118 -0
  211. package/dist/cli/commands/validate.js +235 -136
  212. package/dist/cli/commands/verify.js +73 -16
  213. package/dist/cli/contracts/bundleStatus.js +0 -1
  214. package/dist/cli/contracts/orientationState.js +0 -1
  215. package/dist/cli/dispatch/argvParser.js +0 -1
  216. package/dist/cli/dispatch/check.js +84 -40
  217. package/dist/cli/dispatch/commands.js +3 -3
  218. package/dist/cli/dispatch/index.js +84 -52
  219. package/dist/cli/dispatch/lifecycle.js +182 -62
  220. package/dist/cli/dispatch/prime.js +37 -2
  221. package/dist/cli/dispatch/projections.js +17 -0
  222. package/dist/cli/dispatch/shared.js +1 -2
  223. package/dist/cli/dispatch/state.js +62 -66
  224. package/dist/cli/dispatch.js +0 -1
  225. package/dist/cli/errors.js +16 -17
  226. package/dist/cli/help.js +419 -41
  227. package/dist/cli/migrationRequired.js +125 -0
  228. package/dist/cli/orientation/attention.js +19 -22
  229. package/dist/cli/orientation/corpusCoverage.js +32 -1
  230. package/dist/cli/orientation.js +346 -129
  231. package/dist/cli/planArtifacts.js +350 -0
  232. package/dist/cli/planEvidence.js +157 -0
  233. package/dist/cli/planLifecycleState.js +36 -0
  234. package/dist/cli/planTaskIndex.js +11 -0
  235. package/dist/cli/preCutoverCommand.js +32 -0
  236. package/dist/cli/prime-blob.js +71 -3
  237. package/dist/cli/productV1Eol.js +55 -0
  238. package/dist/cli/profileAcquisition.js +167 -0
  239. package/dist/cli/startupCompletenessContract.js +11 -9
  240. package/dist/cli/stateQuery.js +47 -12
  241. package/dist/cli/structured.js +0 -1
  242. package/dist/cli/todoMarkdown.js +25 -12
  243. package/dist/cli/todoReadinessSelection.js +192 -0
  244. package/dist/cli/todoSeverity.js +0 -1
  245. package/dist/core/atomicWriter.js +23 -0
  246. package/dist/core/developmentChannel.js +1 -0
  247. package/dist/core/developmentInvocation.js +377 -0
  248. package/dist/core/difflib.js +0 -1
  249. package/dist/core/envPaths.js +0 -1
  250. package/dist/core/jsonValue.js +0 -1
  251. package/dist/core/paths.js +0 -1
  252. package/dist/core/pyjson.js +0 -1
  253. package/dist/core/shell.js +4 -0
  254. package/dist/core/skillIdentity.js +23 -0
  255. package/dist/core/sourceRoot.js +9 -12
  256. package/dist/core/text.js +10 -0
  257. package/dist/core/toml.js +0 -1
  258. package/dist/core/yaml.js +61 -2
  259. package/dist/eval/evalSkills.js +13 -14
  260. package/dist/eval/glossaryEvaluation.js +751 -0
  261. package/dist/eval/glossaryEvaluationProcess.js +29 -0
  262. package/dist/eval/glossaryEvaluationRunner.js +571 -0
  263. package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
  264. package/dist/eval/hybridRouteEvaluation.js +155 -0
  265. package/dist/eval/semanticEval.js +0 -1
  266. package/dist/eval/semanticFixtures.js +0 -1
  267. package/dist/hooks/common.js +3 -56
  268. package/dist/hooks/compaction/apply.js +224 -47
  269. package/dist/hooks/compaction/dryRun.js +2 -1
  270. package/dist/hooks/compaction/index.js +5 -6
  271. package/dist/hooks/compaction/parse.js +73 -6
  272. package/dist/hooks/compaction/retention.js +28 -25
  273. package/dist/hooks/compaction/status.js +145 -26
  274. package/dist/hooks/compaction/types.js +0 -1
  275. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  276. package/dist/hooks/validateArtifact/index.js +6 -65
  277. package/dist/hooks/validateArtifact/markdown.js +9 -10
  278. package/dist/hooks/validateArtifact/schema.js +96 -9
  279. package/dist/hooks/validateArtifact/traversal.js +12 -11
  280. package/dist/hooks/validateArtifact/violations.js +5 -3
  281. package/dist/migrate/v2HandoffManifest.js +8 -3
  282. package/dist/registries/activationContract.js +2 -0
  283. package/dist/registries/activationTuples.js +145 -0
  284. package/dist/registries/artifactProtocolIds.js +2 -1
  285. package/dist/registries/artifactRegistry.js +207 -60
  286. package/dist/registries/artifactSchemaProjection.js +45 -0
  287. package/dist/registries/capabilityContract.js +5 -21
  288. package/dist/registries/evaluatorHandoffContract.js +0 -1
  289. package/dist/registries/evidenceTierContract.js +375 -0
  290. package/dist/registries/explicitSegmentGrammarContract.js +619 -0
  291. package/dist/registries/glossaryAdviceContract.js +79 -0
  292. package/dist/registries/glossaryCandidateContractPaths.js +6 -0
  293. package/dist/registries/glossaryCandidateContracts.js +820 -0
  294. package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
  295. package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
  296. package/dist/registries/glossaryCandidateProjectionAuthority.js +345 -0
  297. package/dist/registries/glossaryCandidateProjectionContract.js +108 -0
  298. package/dist/registries/glossaryCaveatContract.js +67 -0
  299. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  300. package/dist/registries/glossaryEntryContract.js +759 -0
  301. package/dist/registries/glossaryEntryTemporal.js +12 -0
  302. package/dist/registries/glossaryMiningAuthority.js +764 -0
  303. package/dist/registries/glossaryProfileFullContract.js +24 -0
  304. package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
  305. package/dist/registries/glossaryReviewRecordsContract.js +129 -0
  306. package/dist/registries/glossaryTermIdentity.js +139 -0
  307. package/dist/registries/glossaryTermOccurrence.js +20 -0
  308. package/dist/registries/hybridRoute.js +274 -0
  309. package/dist/registries/hybridRouteReceipt.js +221 -0
  310. package/dist/registries/packagePublication.js +273 -0
  311. package/dist/registries/packageRegistry.js +184 -209
  312. package/dist/registries/personalGlossaryContracts.js +1 -0
  313. package/dist/registries/todoReadinessContract.js +448 -0
  314. package/dist/registries/triggerLoader.js +7 -44
  315. package/dist/registries/verbosityBudgetContract.js +205 -0
  316. package/dist/release/releaseMetadata.js +168 -11
  317. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  318. package/dist/runtime/lifecycleAdapters.js +777 -0
  319. package/dist/runtime/lifecycleAuthority.js +453 -0
  320. package/dist/runtime/lifecycleOperationContract.js +123 -0
  321. package/dist/runtime/lifecycleOperations.js +634 -0
  322. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  323. package/dist/runtime/lifecyclePublication.js +415 -0
  324. package/dist/runtime/lifecycleSnapshot.js +438 -0
  325. package/dist/runtime/nativeResourceCleanup.js +618 -0
  326. package/dist/setup/opencode.js +20 -13
  327. package/dist/setup/opencodeConstants.js +1 -0
  328. package/dist/setup/sharedSkill.js +45 -0
  329. package/dist/setup/smokeChecks.js +14 -75
  330. package/dist/state/archiveDiscovery.js +580 -0
  331. package/dist/state/archivePublication.js +225 -0
  332. package/dist/state/archiveRecovery.js +237 -0
  333. package/dist/state/archiveReplay.js +53 -0
  334. package/dist/state/canonicalMigrationRecord.js +36 -0
  335. package/dist/state/changelog.js +221 -0
  336. package/dist/state/decisionEntities.js +367 -0
  337. package/dist/state/decisionLegacyValidation.js +215 -0
  338. package/dist/state/decisionMigrationProvenance.js +199 -0
  339. package/dist/state/decisionOverlay.js +254 -0
  340. package/dist/state/decisionRevision.js +256 -0
  341. package/dist/state/decisionRevisionMigration.js +89 -0
  342. package/dist/state/directRetrieval.js +323 -0
  343. package/dist/state/durability.js +324 -0
  344. package/dist/state/entityCutover.js +459 -0
  345. package/dist/state/entityCutoverGit.js +127 -0
  346. package/dist/state/entityGlossaryAuthority.js +13 -0
  347. package/dist/state/entityListProjection.js +187 -0
  348. package/dist/state/entityListRuntimeRegistry.js +85 -0
  349. package/dist/state/entityMigrationCausality.js +97 -0
  350. package/dist/state/entityMigrationIdentity.js +5 -0
  351. package/dist/state/entityMigrationPreview.js +840 -0
  352. package/dist/state/entityMigrationTodo.js +133 -0
  353. package/dist/state/entityPublicationContext.js +859 -0
  354. package/dist/state/entityRetrievalHelp.js +506 -0
  355. package/dist/state/entityStorage.js +894 -0
  356. package/dist/state/entityWriterLock.js +18 -0
  357. package/dist/state/exactReplacementRecovery.js +18 -0
  358. package/dist/state/experimentArchive.js +63 -0
  359. package/dist/state/experimentIdentity.js +202 -0
  360. package/dist/state/healthEntities.js +262 -0
  361. package/dist/state/healthEntityValidation.js +18 -0
  362. package/dist/state/healthRepair.js +69 -0
  363. package/dist/state/installRoot.js +15 -7
  364. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  365. package/dist/state/legacyIdentity.js +47 -0
  366. package/dist/state/legacySummaryRecord.js +6 -0
  367. package/dist/state/listAccounting.js +54 -0
  368. package/dist/state/listClassification.js +17 -0
  369. package/dist/state/listCursor.js +42 -0
  370. package/dist/state/listRetrieval.js +781 -0
  371. package/dist/state/migrationSourceBinding.js +30 -0
  372. package/dist/state/objectiveExperimentEntities.js +322 -0
  373. package/dist/state/planEntities.js +1027 -0
  374. package/dist/state/planIdentity.js +47 -0
  375. package/dist/state/planLineageValidation.js +52 -0
  376. package/dist/state/planReplacementTransaction.js +475 -0
  377. package/dist/state/planRetrieval.js +313 -0
  378. package/dist/state/planTaskRetrieval.js +294 -0
  379. package/dist/state/progressEntities.js +512 -0
  380. package/dist/state/progressGlossaryCaveat.js +168 -0
  381. package/dist/state/progressPublicationOrder.js +19 -0
  382. package/dist/state/progressWritePolicy.js +33 -0
  383. package/dist/state/projectRoot.js +62 -0
  384. package/dist/state/projectionPolicy.js +190 -0
  385. package/dist/state/retrievalAuthority.js +156 -0
  386. package/dist/state/safeProjectFile.js +155 -0
  387. package/dist/state/startupAnalysis/benchmark.js +70 -9
  388. package/dist/state/startupAnalysis/contract.js +44 -10
  389. package/dist/state/startupAnalysis/helpers.js +1 -2
  390. package/dist/state/startupAnalysis/index.js +0 -1
  391. package/dist/state/startupAnalysis/metrics.js +0 -1
  392. package/dist/state/startupAnalysis/records.js +0 -1
  393. package/dist/state/startupAnalysis/report.js +0 -1
  394. package/dist/state/startupAnalysis/threshold.js +13 -1
  395. package/dist/state/startupAnalysis.js +0 -1
  396. package/dist/state/startupProjection.js +499 -0
  397. package/dist/state/stateMode.js +222 -0
  398. package/dist/state/stateStorageAuthority.js +47 -0
  399. package/dist/state/summaryEntityRead.js +25 -0
  400. package/dist/state/summaryMigrationProvenance.js +66 -0
  401. package/dist/state/summarySourceRowAuthority.js +36 -0
  402. package/dist/state/todoActivationSafety.js +58 -0
  403. package/dist/state/todoCreateBatch.js +69 -0
  404. package/dist/state/todoDocsEntities.js +1339 -0
  405. package/dist/state/todoDocsEntityValidation.js +158 -0
  406. package/dist/state/todoMarkdownProjection.js +63 -0
  407. package/dist/state/todoReconciliationActivation.js +182 -0
  408. package/dist/state/todoReconciliationInspection.js +184 -0
  409. package/dist/state/todoReconciliationRepair.js +320 -0
  410. package/dist/state/todoReconciliationTransaction.js +628 -0
  411. package/dist/state/todoSeverityHeadings.js +71 -0
  412. package/dist/state/todoTransitionBatch.js +65 -0
  413. package/dist/state/todoUpdateBatch.js +50 -0
  414. package/dist/state/write/assign.js +20 -0
  415. package/dist/state/write/candidateMutation.js +269 -0
  416. package/dist/state/write/errors.js +11 -0
  417. package/dist/state/write/experimentPublication.js +192 -0
  418. package/dist/state/write/explain.js +380 -0
  419. package/dist/state/write/fields.js +61 -0
  420. package/dist/state/write/glossaryPublication.js +263 -0
  421. package/dist/state/write/grammar.js +285 -0
  422. package/dist/state/write/helpers.js +29 -0
  423. package/dist/state/write/index.js +12 -0
  424. package/dist/state/write/input.js +391 -0
  425. package/dist/state/write/lock.js +837 -0
  426. package/dist/state/write/mutation.js +234 -0
  427. package/dist/state/write/operations.js +170 -0
  428. package/dist/state/write/planEvaluation.js +128 -0
  429. package/dist/state/write/planPublication.js +179 -0
  430. package/dist/state/write/runtimeOperations.js +146 -0
  431. package/dist/state/write/serialize.js +1 -0
  432. package/dist/state/write/transaction.js +57 -0
  433. package/dist/state/write/validate.js +7 -0
  434. package/dist/upgrade/appContentRefresh.js +77 -36
  435. package/dist/upgrade/appModel.js +0 -1
  436. package/dist/upgrade/atomicWriter.js +1 -0
  437. package/dist/upgrade/bundleEvidence.js +0 -1
  438. package/dist/upgrade/channels.js +6 -9
  439. package/dist/upgrade/compatibility.js +43 -17
  440. package/dist/upgrade/doctor.js +55 -32
  441. package/dist/upgrade/doctorClassifier.js +11 -1
  442. package/dist/upgrade/installedHooksRetirement.js +46 -40
  443. package/dist/upgrade/legacyAgentCleanup.js +133 -34
  444. package/dist/upgrade/lifecycleUpgrade.js +126 -0
  445. package/dist/upgrade/migrateArtifactsV2ToV3.js +325 -82
  446. package/dist/upgrade/migrationPublication.js +122 -0
  447. package/dist/upgrade/nextMajorDoctor.js +0 -22
  448. package/dist/upgrade/npxPlatformStatus.js +2 -2
  449. package/dist/upgrade/productV1Reset.js +515 -0
  450. package/dist/upgrade/productV1ResetAuthority.js +139 -0
  451. package/dist/upgrade/projectIntegration.js +126 -134
  452. package/dist/upgrade/projectIntegrationDecision.js +21 -13
  453. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  454. package/dist/upgrade/runtimeMigration.js +210 -430
  455. package/dist/upgrade/upgradeCommands.js +14 -1
  456. package/dist/upgrade/upgradeLock.js +85 -0
  457. package/dist/upgrade/upgradeOrchestrator.js +257 -48
  458. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  459. package/dist/upgrade/versionResolution.js +0 -1
  460. package/dist/validate/activationArtifactEvidence.js +866 -0
  461. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  462. package/dist/validate/activationConjunction.js +816 -0
  463. package/dist/validate/activationEvidenceManifest.js +610 -0
  464. package/dist/validate/activationPackageSemantics.js +29 -0
  465. package/dist/validate/appHomeContract.js +1 -7
  466. package/dist/validate/bootstrapAuthority.js +44 -0
  467. package/dist/validate/capability.js +11 -3
  468. package/dist/validate/crossCapability.js +14 -9
  469. package/dist/validate/glossaryVariantGuard.js +96 -0
  470. package/dist/validate/retainedReferenceAuthority.js +879 -0
  471. package/dist/validate/selfAudit.js +39 -45
  472. package/dist/validate/vocabularyAuthority.js +8 -8
  473. package/package.json +39 -13
  474. package/bundle/references/adapters/cursor.md +0 -214
  475. package/bundle/references/adapters/opencode.md +0 -530
  476. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  477. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  478. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  479. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  480. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  481. package/bundle/references/analysis/benchmark.md +0 -267
  482. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  483. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  484. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  485. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  486. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  487. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  488. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  489. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  490. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  491. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  492. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  493. package/bundle/references/meta/documentation-inventory.md +0 -49
  494. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  495. package/bundle/skills/agentera/agents/audit.toml +0 -6
  496. package/bundle/skills/agentera/agents/build.toml +0 -6
  497. package/bundle/skills/agentera/agents/design.toml +0 -6
  498. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  499. package/bundle/skills/agentera/agents/document.toml +0 -6
  500. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  501. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  502. package/bundle/skills/agentera/agents/plan.toml +0 -6
  503. package/bundle/skills/agentera/agents/profile.toml +0 -6
  504. package/bundle/skills/agentera/agents/research.toml +0 -6
  505. package/bundle/skills/agentera/agents/status.toml +0 -6
  506. package/bundle/skills/agentera/agents/vision.toml +0 -6
  507. package/bundle/skills/agentera/references/contract.md +0 -1048
  508. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  509. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  510. package/dist/analytics/extractCorpus/core.js.map +0 -1
  511. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  512. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  513. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  514. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  515. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  516. package/dist/analytics/extractCorpus/index.js.map +0 -1
  517. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  518. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  519. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  520. package/dist/analytics/extractCorpus.js.map +0 -1
  521. package/dist/analytics/usageStats.js.map +0 -1
  522. package/dist/bin/agentera.js.map +0 -1
  523. package/dist/capabilities/audit/instructions.js.map +0 -1
  524. package/dist/capabilities/build/instructions.js.map +0 -1
  525. package/dist/capabilities/design/instructions.js.map +0 -1
  526. package/dist/capabilities/discuss/instructions.js.map +0 -1
  527. package/dist/capabilities/document/instructions.js.map +0 -1
  528. package/dist/capabilities/index.js.map +0 -1
  529. package/dist/capabilities/optimize/instructions.js.map +0 -1
  530. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  531. package/dist/capabilities/plan/instructions.js.map +0 -1
  532. package/dist/capabilities/profile/instructions.js.map +0 -1
  533. package/dist/capabilities/research/instructions.js.map +0 -1
  534. package/dist/capabilities/status/instructions.js.map +0 -1
  535. package/dist/capabilities/vision/instructions.js.map +0 -1
  536. package/dist/cli/appContext.js.map +0 -1
  537. package/dist/cli/argvalidate.js.map +0 -1
  538. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  539. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  540. package/dist/cli/capabilityContext/build.js.map +0 -1
  541. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  542. package/dist/cli/capabilityContext/contract.js.map +0 -1
  543. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  544. package/dist/cli/capabilityContext/index.js.map +0 -1
  545. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  546. package/dist/cli/capabilityContext/planState.js.map +0 -1
  547. package/dist/cli/capabilityContext/progress.js.map +0 -1
  548. package/dist/cli/capabilityContext/shared.js.map +0 -1
  549. package/dist/cli/capabilityContext/slim.js.map +0 -1
  550. package/dist/cli/capabilityContext/startup.js.map +0 -1
  551. package/dist/cli/capabilityContext/types.js.map +0 -1
  552. package/dist/cli/capabilityContext.js.map +0 -1
  553. package/dist/cli/commands/appHome.js.map +0 -1
  554. package/dist/cli/commands/capability.js.map +0 -1
  555. package/dist/cli/commands/compact.js.map +0 -1
  556. package/dist/cli/commands/doctor.js.map +0 -1
  557. package/dist/cli/commands/lint.js.map +0 -1
  558. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  559. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  560. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  561. package/dist/cli/commands/prime/types.js.map +0 -1
  562. package/dist/cli/commands/prime/v1Migration.js +0 -39
  563. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  564. package/dist/cli/commands/prime.js.map +0 -1
  565. package/dist/cli/commands/query.js.map +0 -1
  566. package/dist/cli/commands/report.js.map +0 -1
  567. package/dist/cli/commands/schema.js.map +0 -1
  568. package/dist/cli/commands/state/decisions.js.map +0 -1
  569. package/dist/cli/commands/state/docs.js.map +0 -1
  570. package/dist/cli/commands/state/experiments.js.map +0 -1
  571. package/dist/cli/commands/state/health.js.map +0 -1
  572. package/dist/cli/commands/state/index.js.map +0 -1
  573. package/dist/cli/commands/state/objective.js.map +0 -1
  574. package/dist/cli/commands/state/plan.js.map +0 -1
  575. package/dist/cli/commands/state/progress.js.map +0 -1
  576. package/dist/cli/commands/state/shared.js.map +0 -1
  577. package/dist/cli/commands/state/todo.js.map +0 -1
  578. package/dist/cli/commands/upgrade.js.map +0 -1
  579. package/dist/cli/commands/validate.js.map +0 -1
  580. package/dist/cli/commands/verify.js.map +0 -1
  581. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  582. package/dist/cli/contracts/orientationState.js.map +0 -1
  583. package/dist/cli/dispatch/argvParser.js.map +0 -1
  584. package/dist/cli/dispatch/check.js.map +0 -1
  585. package/dist/cli/dispatch/commands.js.map +0 -1
  586. package/dist/cli/dispatch/index.js.map +0 -1
  587. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  588. package/dist/cli/dispatch/prime.js.map +0 -1
  589. package/dist/cli/dispatch/shared.js.map +0 -1
  590. package/dist/cli/dispatch/state.js.map +0 -1
  591. package/dist/cli/dispatch.js.map +0 -1
  592. package/dist/cli/errors.js.map +0 -1
  593. package/dist/cli/help.js.map +0 -1
  594. package/dist/cli/orientation/attention.js.map +0 -1
  595. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  596. package/dist/cli/orientation.js.map +0 -1
  597. package/dist/cli/prime-blob.js.map +0 -1
  598. package/dist/cli/startupCompletenessContract.js.map +0 -1
  599. package/dist/cli/stateQuery.js.map +0 -1
  600. package/dist/cli/structured.js.map +0 -1
  601. package/dist/cli/todoMarkdown.js.map +0 -1
  602. package/dist/cli/todoSeverity.js.map +0 -1
  603. package/dist/core/difflib.js.map +0 -1
  604. package/dist/core/envPaths.js.map +0 -1
  605. package/dist/core/jsonValue.js.map +0 -1
  606. package/dist/core/paths.js.map +0 -1
  607. package/dist/core/pyjson.js.map +0 -1
  608. package/dist/core/sourceRoot.js.map +0 -1
  609. package/dist/core/toml.js.map +0 -1
  610. package/dist/core/yaml.js.map +0 -1
  611. package/dist/eval/evalSkills.js.map +0 -1
  612. package/dist/eval/semanticEval.js.map +0 -1
  613. package/dist/eval/semanticFixtures.js.map +0 -1
  614. package/dist/hooks/common.js.map +0 -1
  615. package/dist/hooks/compaction/apply.js.map +0 -1
  616. package/dist/hooks/compaction/dryRun.js.map +0 -1
  617. package/dist/hooks/compaction/index.js.map +0 -1
  618. package/dist/hooks/compaction/parse.js.map +0 -1
  619. package/dist/hooks/compaction/retention.js.map +0 -1
  620. package/dist/hooks/compaction/status.js.map +0 -1
  621. package/dist/hooks/compaction/types.js.map +0 -1
  622. package/dist/hooks/cursorPreToolUse.js +0 -19
  623. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  624. package/dist/hooks/cursorSessionStart.js +0 -79
  625. package/dist/hooks/cursorSessionStart.js.map +0 -1
  626. package/dist/hooks/sessionStart.js +0 -216
  627. package/dist/hooks/sessionStart.js.map +0 -1
  628. package/dist/hooks/sessionStop.js +0 -206
  629. package/dist/hooks/sessionStop.js.map +0 -1
  630. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  631. package/dist/hooks/validateArtifact/index.js.map +0 -1
  632. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  633. package/dist/hooks/validateArtifact/runtime.js +0 -86
  634. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  635. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  636. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  637. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  638. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  639. package/dist/registries/artifactProtocolIds.js.map +0 -1
  640. package/dist/registries/artifactRegistry.js.map +0 -1
  641. package/dist/registries/capabilityContract.js.map +0 -1
  642. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  643. package/dist/registries/packageRegistry.js.map +0 -1
  644. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  645. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  646. package/dist/registries/triggerLoader.js.map +0 -1
  647. package/dist/release/releaseMetadata.js.map +0 -1
  648. package/dist/setup/codex/agents.js +0 -96
  649. package/dist/setup/codex/agents.js.map +0 -1
  650. package/dist/setup/codex/cli.js +0 -161
  651. package/dist/setup/codex/cli.js.map +0 -1
  652. package/dist/setup/codex/configToml.js +0 -639
  653. package/dist/setup/codex/configToml.js.map +0 -1
  654. package/dist/setup/codex/constants.js +0 -29
  655. package/dist/setup/codex/constants.js.map +0 -1
  656. package/dist/setup/codex/installRoot.js +0 -64
  657. package/dist/setup/codex/installRoot.js.map +0 -1
  658. package/dist/setup/codex/state.js +0 -270
  659. package/dist/setup/codex/state.js.map +0 -1
  660. package/dist/setup/codex.js +0 -12
  661. package/dist/setup/codex.js.map +0 -1
  662. package/dist/setup/copilot.js +0 -227
  663. package/dist/setup/copilot.js.map +0 -1
  664. package/dist/setup/cursor.js +0 -129
  665. package/dist/setup/cursor.js.map +0 -1
  666. package/dist/setup/cursorSurfaces.js +0 -67
  667. package/dist/setup/cursorSurfaces.js.map +0 -1
  668. package/dist/setup/doctor/core.js +0 -300
  669. package/dist/setup/doctor/core.js.map +0 -1
  670. package/dist/setup/doctor/diagnostics.js +0 -240
  671. package/dist/setup/doctor/diagnostics.js.map +0 -1
  672. package/dist/setup/doctor/opencode.js +0 -313
  673. package/dist/setup/doctor/opencode.js.map +0 -1
  674. package/dist/setup/doctor/report.js +0 -425
  675. package/dist/setup/doctor/report.js.map +0 -1
  676. package/dist/setup/doctor.js +0 -10
  677. package/dist/setup/doctor.js.map +0 -1
  678. package/dist/setup/opencode.js.map +0 -1
  679. package/dist/setup/smokeChecks.js.map +0 -1
  680. package/dist/state/installRoot.js.map +0 -1
  681. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  682. package/dist/state/startupAnalysis/contract.js.map +0 -1
  683. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  684. package/dist/state/startupAnalysis/index.js.map +0 -1
  685. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  686. package/dist/state/startupAnalysis/records.js.map +0 -1
  687. package/dist/state/startupAnalysis/report.js.map +0 -1
  688. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  689. package/dist/state/startupAnalysis.js.map +0 -1
  690. package/dist/upgrade/appContentRefresh.js.map +0 -1
  691. package/dist/upgrade/appModel.js.map +0 -1
  692. package/dist/upgrade/bundleEvidence.js.map +0 -1
  693. package/dist/upgrade/channels.js.map +0 -1
  694. package/dist/upgrade/coexistenceProbe.js +0 -107
  695. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  696. package/dist/upgrade/compatibility.js.map +0 -1
  697. package/dist/upgrade/doctor.js.map +0 -1
  698. package/dist/upgrade/doctorClassifier.js.map +0 -1
  699. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  700. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  701. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  702. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  703. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  704. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  705. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  706. package/dist/upgrade/projectIntegration.js.map +0 -1
  707. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  708. package/dist/upgrade/runtimeMigration.js.map +0 -1
  709. package/dist/upgrade/upgradeCommands.js.map +0 -1
  710. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  711. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  712. package/dist/upgrade/versionResolution.js.map +0 -1
  713. package/dist/validate/appHomeContract.js.map +0 -1
  714. package/dist/validate/capability.js.map +0 -1
  715. package/dist/validate/crossCapability.js.map +0 -1
  716. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  717. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  718. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  719. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  720. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  721. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  722. package/dist/validate/lifecycleAdapters.js +0 -62
  723. package/dist/validate/lifecycleAdapters.js.map +0 -1
  724. package/dist/validate/selfAudit.js.map +0 -1
  725. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -10,7 +10,7 @@ import path from "node:path";
10
10
  import { parseYaml } from "../../core/yaml.js";
11
11
  import { resolveSourceRoot } from "../../core/sourceRoot.js";
12
12
  import { loadYamlMapping } from "../../core/yaml.js";
13
- import { expectedSequenceOrder, isMapping, sequenceInOrder, validationRuleSeverity, validateDecisionAlternatives, validateDecisionSatisfaction, validateFullPlanContract, validatePlanKnownFields, validateSequences, validateSingletonGroup, collectSingletonGroups, wordCount, } from "./schema.js";
13
+ import { expectedSequenceOrder, isMapping, sequenceInOrder, validationRuleSeverity, validateDecisionAlternatives, validateDecisionSatisfaction, validateFullPlanContract, validatePlanDependencies, validatePlanKnownFields, validateSequences, validateSingletonGroup, collectSingletonGroups, wordCount, } from "./schema.js";
14
14
  function schemasDirDefault() {
15
15
  return path.join(resolveSourceRoot(), "skills", "agentera", "schemas", "artifacts");
16
16
  }
@@ -42,6 +42,7 @@ export function validateYamlContent(content, schema, name) {
42
42
  if (name === "plan") {
43
43
  validatePlanKnownFields(data, schema, violations);
44
44
  validateFullPlanContract(data, violations);
45
+ validatePlanDependencies(data, violations);
45
46
  }
46
47
  validateSequences(data, schema, name, violations);
47
48
  if (name === "decisions") {
@@ -70,7 +71,9 @@ export function validateYamlContent(content, schema, name) {
70
71
  if (rule.includes("unique") && rule.includes("number")) {
71
72
  for (const [key, val] of Object.entries(data)) {
72
73
  if (Array.isArray(val)) {
73
- const nums = val.filter((e) => isMapping(e) && "number" in e).map((e) => e.number);
74
+ const nums = val
75
+ .filter((e) => isMapping(e) && "number" in e)
76
+ .map((e) => e.number);
74
77
  if (nums.length > 0) {
75
78
  if (nums.length !== new Set(nums).size) {
76
79
  violations.push(`${name}: duplicate numbers in '${key}'`);
@@ -102,4 +105,3 @@ export function validateYamlContent(content, schema, name) {
102
105
  return violations;
103
106
  }
104
107
  export { loadYamlMapping, schemasDirDefault };
105
- //# sourceMappingURL=violations.js.map
@@ -1,12 +1,12 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
+ import { isLifecycleOwnershipStateDirectory } from "../runtime/lifecycleOwnershipJournal.js";
3
4
  import { AGENTERA_PROFILE_DIR_ENV, PROFILERA_PROFILE_DIR_ENV, resolveProfileDirOverride, } from "../core/envPaths.js";
4
5
  import { expanduser, isFile, pathExists, resolvePath } from "../core/paths.js";
5
6
  import { opencodeConfigDir } from "../setup/opencode.js";
6
7
  import { doctorRoots, loadSuiteVersion } from "../upgrade/appModel.js";
8
+ import { MANAGED_APP_CONTENT_ROOT_ENTRIES } from "../upgrade/appContentRefresh.js";
7
9
  import { AGENTERA_USER_STATE_NAMES, ROOT_USER_STATE_DIR_NAMES, ROOT_USER_STATE_FILE_NAMES, } from "../upgrade/doctor.js";
8
- /** Contract authority: references/cli/v3-handoff-manifest.schema.yaml */
9
- export const V2_HANDOFF_MANIFEST_SCHEMA_REL = "references/cli/v3-handoff-manifest.schema.yaml";
10
10
  export const V2_HANDOFF_MANIFEST_FILENAME = "v3-handoff.json";
11
11
  export const V2_HANDOFF_SCHEMA_VERSION = "agentera.v3_handoff_manifest.v1";
12
12
  export const READER_PREFLIGHT_BUDGET_MS = 100;
@@ -154,6 +154,9 @@ function agenteraUserStateDirIsRecognized(dir) {
154
154
  // recognized so v2->v3 migration preserves legacy objective state.
155
155
  continue;
156
156
  }
157
+ if (entry === "runtime-lifecycle" && isLifecycleOwnershipStateDirectory(full)) {
158
+ continue;
159
+ }
157
160
  return false;
158
161
  }
159
162
  return true;
@@ -405,6 +408,9 @@ export function appHomeHasUnrecognizedEntriesWithPreflight(appHome, preflight) {
405
408
  if (entry === "app" || entry === V2_HANDOFF_MANIFEST_FILENAME) {
406
409
  continue;
407
410
  }
411
+ if (MANAGED_APP_CONTENT_ROOT_ENTRIES.has(entry)) {
412
+ continue;
413
+ }
408
414
  if (preflight.source === "manifest" && preflight.manifest) {
409
415
  if (isManifestCatalogEntryPreserved(preflight.manifest, entry)) {
410
416
  continue;
@@ -444,4 +450,3 @@ export function bundleMarkerFreshnessContext(appHome, sourceRoot) {
444
450
  bundleMarkerMtimeMs: fs.statSync(markerPath).mtimeMs,
445
451
  };
446
452
  }
447
- //# sourceMappingURL=v2HandoffManifest.js.map
@@ -0,0 +1,2 @@
1
+ export { ACTIVATION_CENSUS_AUTHORITY, ACTIVATION_CHECK_IDS, ACTIVATION_CLASSES, ACTIVATION_CLASS_AUTHORITIES, ACTIVATION_DIMENSIONS, ACTIVATION_EVIDENCE_SOURCES, } from "./packagePublication.js";
2
+ export { ACTIVATION_CANONICAL_TUPLES, ACTIVATION_TUPLE_AUTHORITY, canonicalTupleJson, digestCanonicalTuples, } from "./activationTuples.js";
@@ -0,0 +1,145 @@
1
+ import { createHash } from "node:crypto";
2
+ import { gunzipSync } from "node:zlib";
3
+ // This compressed literal is the immutable, code-owned tuple catalog. It expands
4
+ // only into exact tuple records; no production loader participates in authority.
5
+ const CATALOG = [
6
+ "H4sIAAAAAAACA+1dW3PiOBZ+319B8TyGqd23bO1DOs32ZDed9JJMV01NpihhC1DHWG7JZsJMzX9fyTdssEEm7uYcwUsugI4/fd/R",
7
+ "7egg/fpb71+9X//W6/3Zd30iZf9K/Wb9H/oyFjPi0gnz1EuhYEuqXuS/B1RMQhIt9IvEfSFzKoeqwFAKN/ntManedhdDly+XJPDk",
8
+ "IJJFQbleTrk/4eov6lM34kKZeX/7+On66ean0Xjy9PBpcjf6PLqb3Dx8/Hh9//5xU7QoEMS+r+BRZT1ibvHGhM0mJFjn77sk4AFz",
9
+ "iT9xuRDqE4wHGnMQLnvOTa+MvRdRGV1JHguX9hwn+TepC1GlVkSXvOHBlzhIjAz027pSf/1wiDUShs6CX4hrTZzHE8QX2trRFkv1",
10
+ "iAtrbVkL54J4F97a8raigs3WF9pa0iZoyEV0oa0lbTIipcpfWDNkzV0olBfaWtLms+DSQtuSplzNfbmwdkS/dpl7tGXta0zFZerR",
11
+ "uoXypXrOpWdrPdMlPvMuzfSIuS6PL6y1dzcm9VMvtLUMGjHpxvKyRmi/IJWUCHdxIa4lcaFPLq20LWnTmPnehbWWrPEwYkv2x2Us",
12
+ "bb0FE3vsMuE9Yv8lXtJLDKT9kCD4jPmXZtra4ahk88tg2npYUNM29WFxWZse4o6EZMp8Fq3r4m+xwaIhN8DUi2mZIQsU9XHy3MNE",
13
+ "lj9sA2+mi9Qyb2mZ8+bNeJVaJi4rdN7Mma9Ty9Tlpc6bO7Olapk3XeK8OTNcqZZJS4qcN2vmK9UycXmp8+bOcLFaJi4pcuYjqvFi",
14
+ "tTKkZqXOfFwwXa9Whoa00Jl7neGKteJzSZkzHx/aLFkrQ8Sm4DkwKGIFJ0kdrzZYLiIy9elALoigniNfmO87aWhgP5mZwaHPZtRd",
15
+ "uz69jqMFF0qigwz6nHh3O8VquNwL71tTnFcw+10AbsnwgivT6jOxQUpw/shAqbqiY5oiuvEpCeLQiNb7upLKPZSflxI1SoWq8FBx",
16
+ "yj36CpfSDB0SRgWNmGpgV+pZQUQFGehejvi+anMLzl8GSXWSP+XgizQI1JyA9yPqYIs6sZAKeyjoJOKKzFjSQbhGqVFTTexSSlKp",
17
+ "Q5cT9Z6IcEtVUxVbteKhLVLlNbFEKRuak73tyIIGZG3LyVORJ8rpmCqGtfU01AOrSoLOWRKb0Cv6JREvNAp99fGsJ0eh0OE6WKFO",
18
+ "6MdzFgzArkZbobdCEaFscUEFVk128CNTJY0mDfLKZUE7nwUvkLXYixqbAtpx0qo4HpWuYKHCPDDbDzylBvtx26GCWR4APBVy3Hao",
19
+ "YLjfBk+GArglOhjmrwEUokBuiRKmeQ8ApdhAt0ML46wneFqUoFuiRYsMA4ByVNDboYhR9ik8KTLYlmhgmOkFUIYCuR1KGOexw5Oi",
20
+ "BN0OLQy//QNPiQK4HToYfpsIng4FcGw6JDH9tD5FDA00/w2AUfMOPr5XhxYz4/BjeXVoMTOOIG5XCxc15whidPV4UbOOIR7XABg3",
21
+ "7y9JNTBNYKqYMbO/oF/QsJ5ixcw2C2RIX1C5egUydu7Vq8iozxFjZj7ZosBEfAkwet6h72o1AEbNO5IdrGbMuNl/0RVB1d+UIWPm",
22
+ "HvxOYQ1Y7HxjcvQNXtSsI9iLrcdrAeuYvL2EGDPzghKfSUzMlxHjZh5BrkEDYOS88wCXwxeAMfOOIJ+jFi5mzhHkbtTCxc85pg6m",
23
+ "jBg58zG22UwVMzL2eUgDnXyFKFepGTJy7qHnKzXgxc06+JylBry4WYeft9QEGDnv8HOXGhEjZx5B/lIzZOzco8hh2osatwLA85hq",
24
+ "0eJmHEcu0z7Q+PkHn8+0BzNu9jHkNDVDtoB74HlNzZCRc48jt2kvauwKYMhv2gcaN//Qc5zq4eLnHJfDo8102q4H/FynRsRWMI/L",
25
+ "6/FmPG3VBEXO0x7M2NmHn/fUDBk99zzA5vhYs5+2KgI//6kJMG7e4edANQG2gXdcnQ3iTKjdmsT4Zjl2ZEO5fKmAe7jyoWpAY+cf",
26
+ "y75hFS9W1rPrL1A5/S5mrOxvrljApUA9bgtUQDTdr0MNTgE6o0LhrdEge0MOiUdC5UBymD3dCeOprzAmN8Ecvmk1OTdSFd4UchSH",
27
+ "gSTpZdDLLwfE+PTzu7vbm+un24f7yc3D/dP4+uapnv9WiI9UIlDKVmQYekzxPmXBsLgq54vsuQvqvvTyK796yjcIC6jnbEAqyWZc",
28
+ "LEnUSwB1oUt2Rc96sCZL/3ATST+dXG+fvjfOy5u0j/zDbaXYBmmBDgHx15LJIV0xT7/kRIwKhxSXjbeVI7fzpMzkPY6RJqOagof0",
29
+ "MQRvkUwrKtgs74pCrjoGE4mybiwpvHb0VtXhrktr0laHPegs0CC7+nDzV9EfOEwj0aWcpQLst241ucVWvdj1VqFDKrXHb5Noc59L",
30
+ "SVRdFQD10837prZS5XZG2oxxD1cpdZ13UJ/040xVO1ABm7TSU07q6Gv69KjbcjBKCqc/H1MLBd9GzeqxrqSxSgeg26SS6u2nXKrK",
31
+ "OdPYm9PoDbOGwtS7xJJxs0rye90o7wk/V80Yi3a4Jvh10w8nYajWdNmyyllxl0xjn5hOunN8w01B85aVF/68W/aATCbA7ZDHJSGZ",
32
+ "Ml/7ob5/WcQJzpZDVdWQbkn0NRqGgs8FlfKgTlRVMybq759I4PHZ7CGOwlhNMb7GTFD97RH5b8GXhhPDFpWyQ8HFeiqYMstjNQgc",
33
+ "PcVIrYy1kYN66b1wf0WTD2uVqDQRZS9OO6SIQ23fcRckCKgvTUXwKZE0//1RgVNWiIEKOqhQKWOgQgNEO/jfdNKq3evLWKCPMU2A",
34
+ "bZNjsPRwyJACtSjWmQW2SzOZ/C3D3ikLkBflr9PireJs463o+pYN05Do4brYLVzLpc6Ocq2WpHc7xd4gk4VL0uba8lDhOGIWvSPY",
35
+ "Q26oVWO7ayx+vIDNVbJQyWxj0hHZXmbLnvK7bqEeUQsLN/KyD+pZraaKCvZHune5O+0omVkqbMNdgE39bEMwaKXqzttv6+2HbMf8",
36
+ "Ty/1WDDP4vtgtGiAZgfnajU/n1PhSPXAJXFoIJi70DEUWPwfgIlfi5aEHlwU5abGuaX2a6Nxo4kDghnXBbZsyTbJrmTEu8ojlYb7",
37
+ "PAqSqvSdwpgtbIy3UEf3T7dPv0zubh+fJuOf1T8fR5Px6IP6d/xLnQglYN+V26Sex7LpUTfJX4dHZxkZHj4XlPjRAhyZBSw8TOpv",
38
+ "TANs5BkqXDxOIiJfYJJZQMPDKJ9+0Y9fUXCElpHh4ZO+hmpJlewdgmO0ig0PpxH3ODgyM1CIZkfcBTgxSkGhYPF3teKgxZR9QMKQ",
39
+ "Bp4ho0nZPERWxEcPZyhsl3gMaUnFmgn7BhYiTovpMTBSa3ChZDXde4fHaoELp68uYbrqEp2n6rkztP60Agkbl7AafBUSNi4ljRzD",
40
+ "LzN+Tz4rsNBxGqtKSurBctEyKoxeqv+A6qpVbNjYVRC48JwsX9jkOJ3vyW8dOnSjv3AX5lGo7zT8F5iwsemqFT+w8b+AhIjLdKcB",
41
+ "2Mx0GxQiPouQLjAHrcGFklVY0/4aXIhYLQXLB8mpFHIBhdh6aIi41bFzYF1AFRI2LmE1/CokbFwmC2uqT3co5SdBYHQLGDpeoa35",
42
+ "d1BhYzT7OiQoPjeY8LGpDwQDRmYGCdP+CHclsLG9Cgkbl8A27yqQEHGZnygDbTJfgwsaq5nNbV7VTETvOF6J7SOZTnCQXXKEo/z1",
43
+ "x98GGaq9NPb/fO5rkM/9q+d+cc6drvpz/4fnfv755O0dy8lHUraeM0WeU6qK48A2r6tORxb//9Vvd26k8qFeeozZVS5BO2WUEWfz",
44
+ "kZOJ01qSCrjsnwZ5cIoiY9WrOEsiXqg4pTJFv5AA+vwNdap9EiLV0jNiZ4IHkUIbnVa2Eoz2/V3aoRVDwvDxv7d3d4Olt6tZzWMQ",
45
+ "KDaNA8+nqWDy9GNSW2G2Zci4RMH55gtRMA61bTMJyMvg5p94y5MO9ePR9fuPo0PfpaxQXxTBzHwczgXxqDOPmXdSAX7+9GF8/b6d",
46
+ "ApsymCXQJ0vNqc/np6T/5qfr+w+ju4cPrQQol8IsgUclmwen5P/96PH2w30r8osimJn3mUsDedKe5+72ZnT/ODInPiuAe8A9feij",
47
+ "Er/oKOyBSoPsRI1N+pujHhrGJ52DzthrFAtlOEOXH0KZIjt8bEFFKgNjKAVUK1AdHaXeVRC+OqmcAIIixUU8zgZWy8bVaOKQTs/9",
48
+ "4lM7Wj33SZJOk7xbKPbcfxcz33MKMnv/eXy476U09phUWun9zR4JvJ509eGbXo8FvWhBe/Q1OeBJvZBR+M9edktNcaJKL0dBZY9F",
49
+ "sudR9YLQJQT3Ylc9YUpdEkvaC3he2OXhWtlW/MrBc/8E3pTVK2sfjiLAZCv/G3pULaCWLtVs47v5VPrMnhKQsjA6J9+iSxZpz9o9",
50
+ "gDo/8Fm7TXqSanTSgccY4TEh3kZ7KIefZlF1NFsn2DlTn0/BCVqD7mgxt23ZJ+SC+iFECTe43iJeZsU+2ZZsnm6cZ6fxexA1bAD5",
51
+ "FkHrTNqnLlcaBVF67iRAXXfgvUXRqjELR0qfBMXRv8l9QiBHzAaUbxo562zaJ3CSIfS/mFalgSLsNrq3CFqxZZ+QOqd0TInHAirl",
52
+ "Y1IzoB3wPqRvEbjRrl1i11+vM07X7dD0NgB7rOSHTNvXxHcvw5rSwF3oaCDEdn4Q7lsa+37jZ6G9juIh0X0DtWPNM8PnoLfrc0lV",
53
+ "F4dD8irablUv2T4L4WvuaQEsfAVtx8JvbJ+D8Pll8DiEr6LtVviS7XMQngt3QZUcYGNoRpC7dYHtB5yDH8gFARoc34+1W+ULy+cg",
54
+ "ebQOqcSheAlqt4Lnhs+iiUdERHF4PZ8rQRH19024O276dU+x0C34UrHmyRIDIL2gCeabRK81arHGSUoGaHlLCDtRNrdnsahfoe6g",
55
+ "1SHsRNSv1u6kFVXUGdmwW2oJYSei5vbsE9VjUnHgLoDmcTYgfIuoO/YsFrW4Uxq0sFsoOxG3bNP2SVM52+ohjkKgeyFGmLubWNU+",
56
+ "wXpXcLmvKzdKLrN6gJ1x2Ap6h46x50HW+0eyMzx6pW6c59tSiaG72IO7Q89oeor9bqGEneHqLuohd+kMuw+wyw8qh+QBE3wX27HK",
57
+ "blk6g+A5ikj5NwiLn01yowz5C8WS2lgC23ViY276HFQHG5/ZC7Vbxe2N2DRu8aHa9fyGW51ntHYvTTnBfrOsDfLuV+41z7HYOaS7",
58
+ "UAyC9oIyxE7kLgzarGty1npytjxobbdgdqNv2aj1Gs9phEDiAmWHCqc2rRcY7uS8EWeHIls8La9W1GcSQ0PewOxQ5Myo9RondxDB",
59
+ "13gDs0ONM6MWa5wdWQ1a4ArGTtTdWLRf2s/JEzAIXEbapcyFXYvFXsFXedW1vCt7dc3TtiCnqXWXnGZ3zmFy1RrofMMSwk5yDXN7",
60
+ "FosK9ssZdQg7EdXeL2cUVZRQdxfqEHYiqrRyt0BfAlA+62lUXAoATdxDSI8Vea9du8TerNTfc1cmOawM3jej96E8VuRGm7AFnnIe",
61
+ "6fMZwm2Js9tyr9JT3g/Kl19eOywMXsfRgoutL8XW6lcU+UiUA7wWBWuvVtmGdeTNvLV0RVRGmeWe4yT/JhXMHvquinMQZUm+bSk1",
62
+ "vf/1e3Naaux4SE3a3ZXrUxKAIbSKCR2Zq78DYzIBhI7GkIiIER8YlxtU+PzyH9D88h+4aCSuS8Nk3pZcMPE15uofx5+BoXUPQPQ0",
63
+ "uwI4zQlAtDQDJRcppQoGXy5p4Cm/yHJc4RFcDxIj3R7XQCF3yDUI8RMNsUuuQYiXaKj0Iu6VV1SsnR9hdsYFNkxBGfolff5V+pcz",
64
+ "JQJQaKYBHXaCnYC+RrBZziFiplrNiqY+YG8u8OEnGXi/UQWJmW59fXPAnTVcrksIUft16DP1M68oXNfexomZ9CWTkgVzJ90ehEv6",
65
+ "Dk7MpAvKhUcF9eDyXYaImWoarJzf1QdDCrhHqYLETLc2Cp/vLZSo/VuRiMDBqyhxryblAj7hWygxE64oJBIu0zk8zBTP4iDFA5bl",
66
+ "EkLUa0llAPKsr8CHmWSXL0MuGWyHroJEvYKM/YiFkKN+JYSo4yPxVEYsimE79hZK1J5NfB1uoF66OwrYwXeA2kG7uyBBQH0MxG+g",
67
+ "wqD+t/8DfpAaejqfAQA=",
68
+ ].join("");
69
+ // Emitted producers carry `reason`, while generated files carry
70
+ // `command_authority_reason`. This immutable patch catalog intentionally updates
71
+ // the M6 tuple payload without consulting the mutable package registry loader.
72
+ const EMITTED_REASON_CATALOG = "H4sIAAAAAAACA8VYXXPrJhD9K0ye6+v3+9Z8zPShHbfx7X1HsJaYYFAAqfZ0+t+7fEhCsRNbTiy/xAIUnbMLu3uWf+9gK5wD/r2m7IWWYJdMiqU1bMloTQshhRM4KRSH3Tdn777fPehtLcEB6V/Yk0JzfItQxYl11LimJkxvtzi2pKbWElcZ3ZQV/gKxFTXASW1gwRqnWzD4srLONMxpk76iG8NgmUgR3bi6ccQyquy3u18+II2/tRFbWBRSF28IIzUnGAnrpGwEp4pB4AdHGYpESmi1QAv3Oc1Ps6xA1pHfb/hEYEc9y/fdlfx5wIF11vkPJgroQwNv2XlaCvhJYltRGuptfobXRiB0ZPkHZZVQQAwwv2V7shEgcXt7PmgC4H7SQmbO1Urue2twxx/ihj9EY05y0UaAcoHNmEW2MAuRWlL1u9gA2zMJawSGMR/Zrc3Cxh9k+KvBXRizePVTww7VRlsYmNhrUHGa62egHOGtXYMEdrhZP1aPK2TlcM9aKq/uIQOlsB7MLqt9YQR/xqiAZ2AgaheZhRnvKD/VpyzauAoPltt/zmchLCtqSQEVbYU2aHNKDawC9nI6NwyZ9UErBzu3LECxakvNS0ppWertVmY5eUeYNUKmFHHvHz2+X7gRHSbxzKO3k5/S6Nak8NdQ5g42r1u4ES9oBcfjk3LZUxrd2FnaYJQgYJb1V/nUjenFchx5rVNpHjb0NpzcvgYbKf3AR042VMoC/5dw2NBGuvm9FFPqr2WJ2TjbyXWXalsqZOc0ny+5sF+nK1IGboHQRACmZuCkXjPTjgRvBJtVEfXEgoqNnP4MgrajwwUtlbaodL/Kicdl7lRPvg56JUiXnvCsbjO+8uci4Hpuu7j8YyzU1LEq77oe0xw2S/156756VYHXk+klbiTUq+GZ+YwDIO8QVgG+qxhDf5BozR+dOJReED8ph/li9baXidOjVuZ2VIOMewowqfXDgpvLOhOnvixOJhNEN20OfHjvZ2ftBguhljiBZc7QVHKxSc9AcMn3XlooR+qmkMKidiF8iN+0ya6i+MdQZYUTLcioBqlQFnlSw7Oev+M9vRAPDIelRS+gKKPcx+8CdrU2LgeOb2AHyRsG5rKWxdb6JWWL+zjIpVLCsGMfJI8duCBu6wU0shz6jhvCG9fyQhJCY/XTfdjfPG0LfxSPuADsxU44moWy2MkuMPJEGa4Vrk7KYhBsU+isw3MfER8D/oOtebgrnBoUPbK3b8k1S1r5EZ8W0ejzGHwWuoQUkE87bPoWODwTeLg8uRT6TRhEqzt73o2A+NqE8z8GRStcpxbsfLb6O6lkqr95uj5sU5cGM2nE/DsOzoZN4uli1J9gxGY/xm79nGAjUXE9Im3G4Od05MlR1dXS4Thn1fX9opbYnH+ae+kbdHvq//xjj3fEGjxBaEYwf9QcRvTzMQ/6uw8wuwvMqRh2qAOhJJzA6PPkhwg+hvKL1yccN5lk85NClQT6+VMHpDMPd64FdfKIDEnAJ/igskV/PRKvorEAMyzT0+LjMD/89z8hk4jWPxsAAA==";
73
+ const decodedCatalog = gunzipSync(Buffer.from(CATALOG, "base64")).toString("utf8");
74
+ const emittedReasons = JSON.parse(gunzipSync(Buffer.from(EMITTED_REASON_CATALOG, "base64")).toString("utf8"));
75
+ const rawTuples = JSON.parse(decodedCatalog.slice(decodedCatalog.indexOf("[", 2)).replace(/,\s*]$/, "]"));
76
+ const addedTuples = [
77
+ { class: "state", surface_id: "write:plan.replace", owner_path: "packages/cli/src/state/write/runtimeOperations.ts", owner_symbol_or_selector: "runtimeOperationSpecs", owner_selector: "plan.replace", semantic_selector_if_any: null, canonical_correction: "node packages/cli/dist/bin/agentera.js check validate state --format json" },
78
+ { class: "state", surface_id: "write:todo.activate", owner_path: "packages/cli/src/state/write/runtimeOperations.ts", owner_symbol_or_selector: "runtimeOperationSpecs", owner_selector: "todo.activate", semantic_selector_if_any: null, canonical_correction: "node packages/cli/dist/bin/agentera.js check validate state --format json" },
79
+ { class: "state", surface_id: "write:todo.correct-owners", owner_path: "packages/cli/src/state/write/runtimeOperations.ts", owner_symbol_or_selector: "runtimeOperationSpecs", owner_selector: "todo.correct-owners", semantic_selector_if_any: null, canonical_correction: "node packages/cli/dist/bin/agentera.js check validate state --format json" },
80
+ { class: "state", surface_id: "write:todo.repair", owner_path: "packages/cli/src/state/write/runtimeOperations.ts", owner_symbol_or_selector: "runtimeOperationSpecs", owner_selector: "todo.repair", semantic_selector_if_any: null, canonical_correction: "node packages/cli/dist/bin/agentera.js check validate state --format json" },
81
+ { class: "package", surface_id: "emitted:packages/cli/src/cli/commands/doctor.ts", owner_path: "packages/cli/src/registries/packageRegistry.ts", owner_symbol_or_selector: "loadRegistry", owner_selector: "packages/cli/src/cli/commands/doctor.ts", semantic_selector_if_any: JSON.stringify({ path: "packages/cli/src/cli/commands/doctor.ts", selector: null, format: null, classification: null, reason: "Doctor project-state signals publish bounded reconciliation preview and apply guidance." }), canonical_correction: "pnpm -C packages/cli run verify:package" },
82
+ { class: "package", surface_id: "emitted:packages/cli/src/state/todoReconciliationInspection.ts", owner_path: "packages/cli/src/registries/packageRegistry.ts", owner_symbol_or_selector: "loadRegistry", owner_selector: "packages/cli/src/state/todoReconciliationInspection.ts", semantic_selector_if_any: JSON.stringify({ path: "packages/cli/src/state/todoReconciliationInspection.ts", selector: null, format: null, classification: null, reason: "TODO reconciliation inspection publishes bounded preview and effect-bound apply guidance." }), canonical_correction: "pnpm -C packages/cli run verify:package" },
83
+ { class: "package", surface_id: "generated:build-source-identity", owner_path: "packages/cli/src/registries/packageRegistry.ts", owner_symbol_or_selector: "loadRegistry", owner_selector: ".agentera-build-source.json", semantic_selector_if_any: JSON.stringify({ path: ".agentera-build-source.json", selector: null, format: "json", classification: "active", reason: "Build-generated source identity binds constructed dist and bundle output to one Git commit, tree, and exact working-tree digest; no source copy exists." }), canonical_correction: "pnpm -C packages/cli run verify:package" },
84
+ {
85
+ class: "reference",
86
+ surface_id: "references/adapters/product-v1-reset.yaml",
87
+ owner_path: "packages/cli/src/upgrade/productV1ResetAuthority.ts",
88
+ owner_symbol_or_selector: "loadProductV1ResetAuthority",
89
+ owner_selector: "references/adapters/product-v1-reset.yaml",
90
+ semantic_selector_if_any: null,
91
+ canonical_correction: "node packages/cli/dist/bin/agentera.js check validate retained-references --format json",
92
+ },
93
+ {
94
+ class: "reference",
95
+ surface_id: "references/analysis/personal-glossary-evaluation-authority.yaml",
96
+ owner_path: "packages/cli/src/eval/glossaryEvaluation.ts",
97
+ owner_symbol_or_selector: "loadGlossaryEvaluationAuthority",
98
+ owner_selector: "references/analysis/personal-glossary-evaluation-authority.yaml",
99
+ semantic_selector_if_any: null,
100
+ canonical_correction: "node packages/cli/dist/bin/agentera.js check validate retained-references --format json",
101
+ },
102
+ {
103
+ class: "reference",
104
+ surface_id: "references/analysis/personal-glossary-holdout.yaml",
105
+ owner_path: "packages/cli/src/eval/glossaryEvaluation.ts",
106
+ owner_symbol_or_selector: "loadGlossaryEvaluationHoldout",
107
+ owner_selector: "references/analysis/personal-glossary-holdout.yaml",
108
+ semantic_selector_if_any: null,
109
+ canonical_correction: "node packages/cli/dist/bin/agentera.js check validate retained-references --format json",
110
+ },
111
+ {
112
+ class: "reference",
113
+ surface_id: "references/analysis/personal-glossary-evaluation-corpus.yaml",
114
+ owner_path: "packages/cli/src/eval/glossaryEvaluation.ts",
115
+ owner_symbol_or_selector: "loadGlossaryEvaluationBehaviorFixture",
116
+ owner_selector: "references/analysis/personal-glossary-evaluation-corpus.yaml",
117
+ semantic_selector_if_any: null,
118
+ canonical_correction: "node packages/cli/dist/bin/agentera.js check validate retained-references --format json",
119
+ },
120
+ ];
121
+ const tuples = [...rawTuples, ...addedTuples].map((tuple) => {
122
+ const reason = emittedReasons[tuple.surface_id];
123
+ if (tuple.class !== "package" || reason === undefined || tuple.semantic_selector_if_any === null)
124
+ return tuple;
125
+ const semantic = JSON.parse(tuple.semantic_selector_if_any);
126
+ return { ...tuple, semantic_selector_if_any: JSON.stringify({ ...semantic, reason }) };
127
+ });
128
+ export const ACTIVATION_CANONICAL_TUPLES = Object.freeze(tuples.map((tuple) => Object.freeze(tuple)));
129
+ export const ACTIVATION_TUPLE_AUTHORITY = Object.freeze({
130
+ algorithm: "sha256(sorted_canonical_json_tuples_joined_by_lf)",
131
+ classes: {
132
+ cli: { count: 27, sha256: "9d0db6cafe592da30ea3469c91dc514bdd1b3b22e8229a0519e680cbcb01c2fa" },
133
+ capability: { count: 12, sha256: "892e6e5e2a57b41064bc44fa2946453225f1b1195aff77aad05365fd0a1071c2" },
134
+ runtime: { count: 81, sha256: "99b2abff3ebff889b54b1781c563ab4b32609a479c4e90d6aad854f48fba7edc" },
135
+ reference: { count: 26, sha256: "0daf0d131217064bb66d667be2b88c81bf928369fac321bce8023c9039d9ddfe" },
136
+ state: { count: 38, sha256: "697de8dcd13ac521124c35058ba222aa5cb6cae546f00bb54652ceaca4b662aa" },
137
+ package: { count: 67, sha256: "5dbe325af5ffb29a1ea50534070d08fcff647d4d9ef5654b4ce03d76eeaa8adb" },
138
+ bootstrap: { count: 34, sha256: "9a7dd7e27110d85cf5c08835fdd8f08119e75579858e63bc6d396c733961d0bc" },
139
+ },
140
+ total: { count: 285, sha256: "3be47d6d1928df8b7f16d494aaa57939404d690b35ef81254f2c62506fd5f984" },
141
+ });
142
+ export function canonicalTupleJson(value) { return JSON.stringify(value); }
143
+ export function digestCanonicalTuples(values) {
144
+ return createHash("sha256").update(values.map(canonicalTupleJson).sort().join("\n"), "utf8").digest("hex");
145
+ }
@@ -14,6 +14,7 @@ export const ARTIFACT_PROTOCOL_PATHS = {
14
14
  todo: "TODO.md",
15
15
  changelog: "CHANGELOG.md",
16
16
  design: "DESIGN.md",
17
+ glossary: ".agentera/glossary.yaml",
17
18
  };
18
19
  export const HUMAN_FACING_ARTIFACT_IDS = new Set(["todo", "changelog", "design"]);
19
20
  export const TRACKED_ARTIFACT_IDS = [
@@ -37,6 +38,7 @@ export const VALIDATE_ARTIFACT_PROTOCOL_IDS = [
37
38
  "progress",
38
39
  "todo",
39
40
  "vision",
41
+ "glossary",
40
42
  ];
41
43
  function artifactProtocolStem(input) {
42
44
  const lower = input.trim().toLowerCase();
@@ -74,4 +76,3 @@ export function normalizeArtifactMappingKeys(mapping) {
74
76
  }
75
77
  return out;
76
78
  }
77
- //# sourceMappingURL=artifactProtocolIds.js.map
@@ -6,6 +6,7 @@ import { resolveProfileDirOverride } from "../core/envPaths.js";
6
6
  import { resolvePath } from "../core/paths.js";
7
7
  import { resolveSourceRoot } from "../core/sourceRoot.js";
8
8
  import { resolveCandidate } from "../state/installRoot.js";
9
+ import { ARTIFACT_PROTOCOL_PATHS } from "./artifactProtocolIds.js";
9
10
  function sourceRoot() {
10
11
  return resolveSourceRoot();
11
12
  }
@@ -37,12 +38,11 @@ export function normalizePath(p) {
37
38
  s = s.replace(/<objective-name>/g, "<name>");
38
39
  return s.trim();
39
40
  }
40
- const CONTROL_CHAR_RE = /[\x00-\x1f\x7f]/;
41
41
  const URI_SCHEME_RE = /^[A-Za-z][A-Za-z0-9+.-]*:/;
42
42
  const ENCODED_TRAVERSAL_RE = /%(?:2e|2f|5c)/i;
43
43
  const WINDOWS_DRIVE_RE = /^[A-Za-z]:[\\/]/;
44
44
  function rejectUnsafeArtifactPath(p, artifactId) {
45
- if (CONTROL_CHAR_RE.test(p)) {
45
+ if ([...p].some((char) => char.charCodeAt(0) <= 31 || char.charCodeAt(0) === 127)) {
46
46
  throw new Error(`artifact '${artifactId}' path contains control characters`);
47
47
  }
48
48
  if (ENCODED_TRAVERSAL_RE.test(p)) {
@@ -69,34 +69,140 @@ function projectPath(projectRoot, artifactPath, artifactId) {
69
69
  return resolved;
70
70
  }
71
71
  export const EXPECTED_ARTIFACT_SCHEMA_VERSION = "1.0.0";
72
- function schemaMetas(dir) {
73
- const metas = new Map();
72
+ function readSchemaMeta(file) {
73
+ const meta = loadYaml(file).meta;
74
+ if (!meta || typeof meta !== "object" || Array.isArray(meta)) {
75
+ return null;
76
+ }
77
+ return meta;
78
+ }
79
+ function warnMalformedSchemaMeta(name) {
80
+ process.stderr.write(`warning: artifact schema ${name} is missing meta; expected v3 schema version ${EXPECTED_ARTIFACT_SCHEMA_VERSION}\n`);
81
+ }
82
+ function warnSchemaVersionMismatch(meta, name) {
83
+ const version = String(meta.version ?? "").trim();
84
+ if (!version || version !== EXPECTED_ARTIFACT_SCHEMA_VERSION) {
85
+ const reported = version || "(missing)";
86
+ process.stderr.write(`warning: artifact schema ${name} version ${reported} does not match expected v3 schema version ${EXPECTED_ARTIFACT_SCHEMA_VERSION}\n`);
87
+ }
88
+ }
89
+ function listSchemaFiles(dir) {
74
90
  if (!fs.existsSync(dir) || !fs.statSync(dir).isDirectory()) {
75
- return metas;
91
+ return [];
76
92
  }
77
- const files = fs
93
+ return fs
78
94
  .readdirSync(dir)
79
95
  .filter((name) => name.endsWith(".yaml"))
80
96
  .sort();
81
- for (const name of files) {
82
- const meta = loadYaml(path.join(dir, name)).meta;
83
- if (!meta || typeof meta !== "object" || Array.isArray(meta)) {
84
- process.stderr.write(`warning: artifact schema ${name} is missing meta; expected v3 schema version ${EXPECTED_ARTIFACT_SCHEMA_VERSION}\n`);
97
+ }
98
+ /**
99
+ * Full schema-meta index over an artifact schemas directory. Emits malformed-meta
100
+ * and version-mismatch warnings for every schema file; the full loader relies on
101
+ * this strict coverage to surface drift across the whole identity set.
102
+ */
103
+ function schemaMetas(dir) {
104
+ const metas = new Map();
105
+ for (const name of listSchemaFiles(dir)) {
106
+ const meta = readSchemaMeta(path.join(dir, name));
107
+ if (!meta) {
108
+ warnMalformedSchemaMeta(name);
85
109
  continue;
86
110
  }
87
- const m = meta;
88
- const version = String(m.version ?? "").trim();
89
- if (!version || version !== EXPECTED_ARTIFACT_SCHEMA_VERSION) {
90
- const reported = version || "(missing)";
91
- process.stderr.write(`warning: artifact schema ${name} version ${reported} does not match expected v3 schema version ${EXPECTED_ARTIFACT_SCHEMA_VERSION}\n`);
92
- }
93
- const artifactId = String(m.name ?? "").trim();
111
+ warnSchemaVersionMismatch(meta, name);
112
+ const artifactId = String(meta.name ?? "").trim();
94
113
  if (artifactId) {
95
- metas.set(artifactId, m);
114
+ metas.set(artifactId, meta);
96
115
  }
97
116
  }
98
117
  return metas;
99
118
  }
119
+ /**
120
+ * Targeted schema-meta lookup for a single artifact identity. Walks the schemas
121
+ * directory only to find the file whose `meta.name` matches `artifactId`, and
122
+ * emits warnings only for that schema. Unrelated malformed or version-mismatched
123
+ * schemas in the same directory stay silent so callers resolving a single
124
+ * identity (e.g. `profile`) don't fan out noise across the required-identity set.
125
+ */
126
+ function loadSchemaMetaForArtifact(dir, artifactId) {
127
+ for (const name of listSchemaFiles(dir)) {
128
+ let meta;
129
+ try {
130
+ meta = readSchemaMeta(path.join(dir, name));
131
+ }
132
+ catch {
133
+ continue;
134
+ }
135
+ if (!meta)
136
+ continue;
137
+ if (String(meta.name ?? "").trim() !== artifactId)
138
+ continue;
139
+ warnSchemaVersionMismatch(meta, name);
140
+ return meta;
141
+ }
142
+ return null;
143
+ }
144
+ function findRequiredIdentity(model, artifactId) {
145
+ const identities = (model.required_artifact_identities ?? {});
146
+ for (const [scope, identityList] of Object.entries(identities)) {
147
+ if (!Array.isArray(identityList))
148
+ continue;
149
+ for (const identity of identityList) {
150
+ if (!identity || typeof identity !== "object" || Array.isArray(identity))
151
+ continue;
152
+ const id = identity;
153
+ if (String(id.artifact_id ?? "").trim() === artifactId) {
154
+ return { scope, identity: id };
155
+ }
156
+ }
157
+ }
158
+ return null;
159
+ }
160
+ function findSpecialCase(model, artifactId) {
161
+ const specialCases = (model.explicit_special_cases ?? []);
162
+ for (const special of specialCases) {
163
+ if (!special || typeof special !== "object" || Array.isArray(special))
164
+ continue;
165
+ const sp = special;
166
+ if (String(sp.artifact_id ?? "").trim() === artifactId) {
167
+ return sp;
168
+ }
169
+ }
170
+ return null;
171
+ }
172
+ function buildRequiredRecord(scope, identity, meta) {
173
+ const template = identity.path_template;
174
+ return {
175
+ artifactId: String(identity.artifact_id ?? "").trim(),
176
+ displayName: String(identity.display_name ?? "").trim(),
177
+ defaultPath: normalizePath(String(identity.default_path ?? meta.path ?? "")),
178
+ producers: asSet(meta.producer),
179
+ consumers: asSet(meta.consumers),
180
+ artifactType: String(meta.artifact_type ?? "").trim(),
181
+ scope: String(scope),
182
+ pathTemplate: template && typeof template === "object" && !Array.isArray(template)
183
+ ? template
184
+ : null,
185
+ docsYamlCanOverridePath: true,
186
+ implementationStatus: String(meta.implementation_status ?? "implemented").trim(),
187
+ };
188
+ }
189
+ function buildSpecialCaseRecord(sp) {
190
+ const template = sp.path_template;
191
+ return {
192
+ artifactId: String(sp.artifact_id ?? "").trim(),
193
+ displayName: String(sp.display_name ?? "").trim(),
194
+ defaultPath: normalizePath(String(sp.default_path ?? "")),
195
+ producers: asSet(sp.producers),
196
+ consumers: asSet(sp.consumers),
197
+ artifactType: String(sp.artifact_type ?? "").trim(),
198
+ scope: String(sp.scope ?? "").trim(),
199
+ pathTemplate: template && typeof template === "object" && !Array.isArray(template)
200
+ ? template
201
+ : null,
202
+ docsYamlCanOverridePath: Boolean(sp.docs_yaml_can_override_path),
203
+ implementationStatus: String(sp.implementation_status ?? "implemented").trim(),
204
+ };
205
+ }
100
206
  export function loadArtifactRegistry(artifactSchemasDirPath = artifactSchemasDir(), registryModelPathArg = registryModelPath()) {
101
207
  const model = loadYaml(registryModelPathArg);
102
208
  const metas = schemaMetas(artifactSchemasDirPath);
@@ -120,20 +226,7 @@ export function loadArtifactRegistry(artifactSchemasDirPath = artifactSchemasDir
120
226
  process.stderr.write(`warning: required artifact identity '${artifactId}' has no matching schema file in ${artifactSchemasDirPath}\n`);
121
227
  continue;
122
228
  }
123
- const template = id.path_template;
124
- records.set(artifactId, {
125
- artifactId,
126
- displayName: String(id.display_name ?? "").trim(),
127
- defaultPath: normalizePath(String(id.default_path ?? meta.path ?? "")),
128
- producers: asSet(meta.producer),
129
- consumers: asSet(meta.consumers),
130
- artifactType: String(meta.artifact_type ?? "").trim(),
131
- scope: String(scope),
132
- pathTemplate: template && typeof template === "object" && !Array.isArray(template)
133
- ? template
134
- : null,
135
- docsYamlCanOverridePath: true,
136
- });
229
+ records.set(artifactId, buildRequiredRecord(scope, id, meta));
137
230
  }
138
231
  }
139
232
  const specialCases = (model.explicit_special_cases ?? []);
@@ -146,57 +239,109 @@ export function loadArtifactRegistry(artifactSchemasDirPath = artifactSchemasDir
146
239
  if (!artifactId) {
147
240
  continue;
148
241
  }
149
- const template = sp.path_template;
150
- records.set(artifactId, {
151
- artifactId,
152
- displayName: String(sp.display_name ?? "").trim(),
153
- defaultPath: normalizePath(String(sp.default_path ?? "")),
154
- producers: asSet(sp.producers),
155
- consumers: asSet(sp.consumers),
156
- artifactType: String(sp.artifact_type ?? "").trim(),
157
- scope: String(sp.scope ?? "").trim(),
158
- pathTemplate: template && typeof template === "object" && !Array.isArray(template)
159
- ? template
160
- : null,
161
- docsYamlCanOverridePath: Boolean(sp.docs_yaml_can_override_path),
162
- });
242
+ records.set(artifactId, buildSpecialCaseRecord(sp));
163
243
  }
164
244
  return records;
165
245
  }
166
- export function loadDocsPathOverrides(projectRoot) {
167
- const docsPath = path.join(projectRoot, ".agentera", "docs.yaml");
168
- if (!fs.existsSync(docsPath)) {
169
- return {};
246
+ /**
247
+ * Targeted lookup of a single artifact record. Resolves against the same
248
+ * model/schema authority as `loadArtifactRegistry` but inspects only the
249
+ * requested identity, so a special case such as `profile` loads without
250
+ * walking or warning about unrelated required schemas. A requested required
251
+ * identity still warns and returns `undefined` when its matching schema file is
252
+ * missing from the schemas directory.
253
+ */
254
+ export function loadArtifactRecord(artifactId, artifactSchemasDirPath = artifactSchemasDir(), registryModelPathArg = registryModelPath()) {
255
+ const model = loadYaml(registryModelPathArg);
256
+ const specialCase = findSpecialCase(model, artifactId);
257
+ if (specialCase) {
258
+ return buildSpecialCaseRecord(specialCase);
259
+ }
260
+ const required = findRequiredIdentity(model, artifactId);
261
+ if (!required) {
262
+ return undefined;
170
263
  }
264
+ const meta = loadSchemaMetaForArtifact(artifactSchemasDirPath, artifactId);
265
+ if (!meta) {
266
+ process.stderr.write(`warning: required artifact identity '${artifactId}' has no matching schema file in ${artifactSchemasDirPath}\n`);
267
+ return undefined;
268
+ }
269
+ return buildRequiredRecord(required.scope, required.identity, meta);
270
+ }
271
+ export function docsPathOverridesFromBytes(bytes, strict = false) {
171
272
  let data;
172
273
  try {
173
- data = loadYamlMapping(fs.readFileSync(docsPath, "utf8"));
274
+ data = loadYamlMapping(bytes.toString());
174
275
  }
175
276
  catch (exc) {
277
+ if (strict)
278
+ throw new Error(`failed to load docs path overrides: ${exc.message}`);
176
279
  process.stderr.write(`warning: failed to load docs path overrides: ${exc.message}\n`);
177
280
  return {};
178
281
  }
179
282
  const mapping = data.mapping;
180
283
  if (!Array.isArray(mapping)) {
284
+ if (strict && mapping !== undefined)
285
+ throw new Error("failed to load docs path overrides: mapping must be a list");
181
286
  return {};
182
287
  }
183
288
  const overrides = {};
184
289
  for (const entry of mapping) {
185
290
  if (!entry || typeof entry !== "object" || Array.isArray(entry)) {
291
+ if (strict)
292
+ throw new Error("failed to load docs path overrides: every mapping entry must be a mapping");
186
293
  continue;
187
294
  }
188
295
  const e = entry;
189
- const artifact = e.artifact;
190
- const p = e.path;
191
- if (typeof artifact === "string" && typeof p === "string") {
192
- overrides[artifact] = p;
193
- }
296
+ if (typeof e.artifact === "string" && typeof e.path === "string")
297
+ overrides[e.artifact] = e.path;
298
+ else if (strict)
299
+ throw new Error("failed to load docs path overrides: every mapping entry requires string artifact and path fields");
194
300
  }
195
301
  return overrides;
196
302
  }
197
- export function resolveArtifactPath(record, projectRoot, activeObjectiveName = null, env = process.env) {
303
+ export function loadDocsPathOverrides(projectRoot, strict = false) {
304
+ const docsPath = path.join(projectRoot, ARTIFACT_PROTOCOL_PATHS.docs);
305
+ if (!fs.existsSync(docsPath)) {
306
+ return {};
307
+ }
308
+ let bytes;
309
+ try {
310
+ bytes = fs.readFileSync(docsPath);
311
+ }
312
+ catch (exc) {
313
+ if (strict)
314
+ throw new Error(`failed to load docs path overrides: ${exc.message}`);
315
+ process.stderr.write(`warning: failed to load docs path overrides: ${exc.message}\n`);
316
+ return {};
317
+ }
318
+ return docsPathOverridesFromBytes(bytes, strict);
319
+ }
320
+ function nearestExistingAncestor(p) {
321
+ let current = p;
322
+ while (!fs.existsSync(current)) {
323
+ const parent = path.dirname(current);
324
+ if (parent === current)
325
+ break;
326
+ current = parent;
327
+ }
328
+ return fs.realpathSync.native(current);
329
+ }
330
+ export function assertRealpathBoundary(projectRoot, artifactPath, artifactId) {
331
+ const projectReal = nearestExistingAncestor(resolvePath(projectRoot));
332
+ const ancestorReal = nearestExistingAncestor(artifactPath);
333
+ const rel = path.relative(projectReal, ancestorReal);
334
+ if (rel !== "" && (rel.startsWith("..") || path.isAbsolute(rel))) {
335
+ throw new Error(`artifact '${artifactId}' path escapes the project boundary`);
336
+ }
337
+ }
338
+ export function resolveArtifactPath(record, projectRoot, activeObjectiveNameOrOptions = null, env = process.env) {
339
+ const options = typeof activeObjectiveNameOrOptions === "object" && activeObjectiveNameOrOptions !== null
340
+ ? activeObjectiveNameOrOptions
341
+ : { activeObjectiveName: activeObjectiveNameOrOptions };
342
+ const activeObjectiveName = options.activeObjectiveName ?? null;
198
343
  let artifactPath = record.defaultPath;
199
- const overrides = loadDocsPathOverrides(projectRoot);
344
+ const overrides = options.docsPathOverrides ?? loadDocsPathOverrides(projectRoot, options.strictWrite === true);
200
345
  if (record.docsYamlCanOverridePath && record.displayName in overrides) {
201
346
  artifactPath = overrides[record.displayName];
202
347
  }
@@ -215,6 +360,8 @@ export function resolveArtifactPath(record, projectRoot, activeObjectiveName = n
215
360
  return path.join(base, suffix);
216
361
  }
217
362
  }
218
- return projectPath(projectRoot, artifactPath, record.artifactId);
363
+ const resolved = projectPath(projectRoot, artifactPath, record.artifactId);
364
+ if (options.strictWrite)
365
+ assertRealpathBoundary(projectRoot, resolved, record.artifactId);
366
+ return resolved;
219
367
  }
220
- //# sourceMappingURL=artifactRegistry.js.map
@@ -0,0 +1,45 @@
1
+ const FIELD_SKIP = new Set([
2
+ "meta",
3
+ "GROUP_PREFIXES",
4
+ "BUDGET",
5
+ "COMPACTION",
6
+ "VALIDATION",
7
+ "ARCHIVE",
8
+ "CONVENTION",
9
+ "CONVENTIONS",
10
+ ]);
11
+ function mapping(value) {
12
+ return Boolean(value && typeof value === "object" && !Array.isArray(value));
13
+ }
14
+ export function artifactSchemaFieldDescription(entry, group) {
15
+ return {
16
+ id: entry.id ?? null,
17
+ group,
18
+ field: entry.field ?? null,
19
+ ...(typeof entry.path === "string" ? { path: entry.path } : {}),
20
+ type: entry.type ?? "unknown",
21
+ required: "required" in entry ? entry.required : "unknown",
22
+ format: entry.format ?? null,
23
+ validation: entry.validation ?? [],
24
+ ...(entry.accepted_forms !== undefined ? { accepted_forms: structuredClone(entry.accepted_forms) } : {}),
25
+ ...(entry.normalization !== undefined ? { normalization: structuredClone(entry.normalization) } : {}),
26
+ ...(entry.write_operations !== undefined ? { write_operations: structuredClone(entry.write_operations) } : {}),
27
+ };
28
+ }
29
+ export function describeArtifactSchemaFields(schema) {
30
+ const fields = [];
31
+ for (const [group, value] of Object.entries(schema)) {
32
+ if (FIELD_SKIP.has(group) || !mapping(value))
33
+ continue;
34
+ for (const entry of Object.values(value)) {
35
+ if (mapping(entry) && "field" in entry)
36
+ fields.push(artifactSchemaFieldDescription(entry, group));
37
+ }
38
+ }
39
+ return fields;
40
+ }
41
+ export function artifactSchemaFieldsForOperation(schema, verb) {
42
+ if (!schema)
43
+ return [];
44
+ return describeArtifactSchemaFields(schema).filter((field) => Array.isArray(field.write_operations) && field.write_operations.includes(verb));
45
+ }