agentera 3.0.0-dev.6 → 3.0.0-dev.69

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 (696) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -22
  3. package/bundle/CHANGELOG.md +1361 -0
  4. package/bundle/DESIGN.md +229 -0
  5. package/bundle/LICENSE +201 -0
  6. package/bundle/README.md +143 -0
  7. package/bundle/UPGRADE.md +252 -0
  8. package/bundle/extract-corpus-parity.json +21 -0
  9. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  10. package/bundle/references/adapters/package-publication.json +488 -0
  11. package/bundle/references/adapters/package-registry.yaml +435 -188
  12. package/bundle/references/adapters/package-surface-characterization.md +66 -34
  13. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  14. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  15. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  16. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  17. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  18. package/bundle/references/analysis/verification-policy.yaml +266 -0
  19. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  20. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  21. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  22. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  23. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  24. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  25. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  26. package/bundle/references/cli/routing-model.md +155 -0
  27. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  28. package/bundle/references/cli/update-channels.yaml +19 -2
  29. package/bundle/references/cli/vocabulary-index.yaml +20 -17
  30. package/bundle/references/cli/vocabulary.md +325 -362
  31. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  32. package/bundle/registry.json +13 -13
  33. package/bundle/skills/agentera/SKILL.md +226 -422
  34. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  35. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  36. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  37. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  38. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +103 -0
  39. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +8 -6
  40. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  41. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +184 -0
  42. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  44. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  45. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  46. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  47. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  48. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  50. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  52. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  53. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  55. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  56. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  57. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  58. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  59. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  61. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  62. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  63. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  64. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  65. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  66. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  67. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  68. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  69. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  71. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  72. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  73. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  74. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  75. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  77. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  78. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  79. package/bundle/skills/agentera/capability_schema_contract.yaml +178 -34
  80. package/bundle/skills/agentera/protocol.yaml +31 -31
  81. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  82. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  83. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +39 -21
  84. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  85. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  86. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  87. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  88. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  89. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  90. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +461 -36
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +133 -20
  92. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +342 -42
  93. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  94. package/dist/analytics/extractCorpus/cli.js +101 -12
  95. package/dist/analytics/extractCorpus/copilotSessions.js +53 -9
  96. package/dist/analytics/extractCorpus/core.js +59 -24
  97. package/dist/analytics/extractCorpus/corpus.js +58 -23
  98. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  99. package/dist/analytics/extractCorpus/cursorSessions.js +12 -7
  100. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  101. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  102. package/dist/analytics/extractCorpus/filesystemSources.js +1 -5
  103. package/dist/analytics/extractCorpus/index.js +6 -1
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +24 -5
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +98 -6
  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 +133 -0
  112. package/dist/analytics/personalGlossaryProfile.js +219 -0
  113. package/dist/analytics/profileSignals.js +211 -0
  114. package/dist/analytics/usageStats.js +169 -42
  115. package/dist/audit/terminologyDrift.js +281 -0
  116. package/dist/bin/agentera.js +3 -2
  117. package/dist/capabilities/audit/instructions.js +16 -0
  118. package/dist/capabilities/build/instructions.js +59 -0
  119. package/dist/capabilities/design/instructions.js +4 -0
  120. package/dist/capabilities/discuss/instructions.js +29 -0
  121. package/dist/capabilities/document/instructions.js +11 -0
  122. package/dist/capabilities/index.js +29 -27
  123. package/dist/capabilities/optimize/instructions.js +14 -0
  124. package/dist/capabilities/orchestrate/instructions.js +42 -0
  125. package/dist/capabilities/plan/instructions.js +33 -0
  126. package/dist/capabilities/profile/instructions.js +70 -0
  127. package/dist/capabilities/research/instructions.js +5 -0
  128. package/dist/capabilities/status/instructions.js +15 -0
  129. package/dist/capabilities/status/startupInstructions.js +34 -0
  130. package/dist/capabilities/vision/instructions.js +4 -0
  131. package/dist/cli/appContext.js +30 -24
  132. package/dist/cli/argvalidate.js +0 -1
  133. package/dist/cli/capabilityContext/benchmark.js +25 -17
  134. package/dist/cli/capabilityContext/bespoke.js +31 -12
  135. package/dist/cli/capabilityContext/build.js +251 -0
  136. package/dist/cli/capabilityContext/closeout.js +33 -30
  137. package/dist/cli/capabilityContext/contract.js +39 -46
  138. package/dist/cli/capabilityContext/evidence.js +90 -73
  139. package/dist/cli/capabilityContext/index.js +1 -2
  140. package/dist/cli/capabilityContext/orchestration.js +45 -21
  141. package/dist/cli/capabilityContext/planState.js +93 -100
  142. package/dist/cli/capabilityContext/progress.js +60 -14
  143. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  144. package/dist/cli/capabilityContext/shared.js +9 -20
  145. package/dist/cli/capabilityContext/slim.js +56 -10
  146. package/dist/cli/capabilityContext/startup.js +57 -115
  147. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  148. package/dist/cli/capabilityContext/types.js +37 -24
  149. package/dist/cli/capabilityContext.js +1 -2
  150. package/dist/cli/commands/appHome.js +22 -0
  151. package/dist/cli/commands/capability.js +4 -4
  152. package/dist/cli/commands/compact.js +163 -13
  153. package/dist/cli/commands/doctor.js +122 -114
  154. package/dist/cli/commands/durability.js +81 -0
  155. package/dist/cli/commands/glossaryAdvice.js +138 -0
  156. package/dist/cli/commands/lint.js +22 -8
  157. package/dist/cli/commands/personalGlossary.js +176 -0
  158. package/dist/cli/commands/prime/briefOrientation.js +746 -0
  159. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  160. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  161. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  162. package/dist/cli/commands/prime/collectOrientationState.js +219 -0
  163. package/dist/cli/commands/prime/orientationOutput.js +421 -0
  164. package/dist/cli/commands/prime/types.js +1 -0
  165. package/dist/cli/commands/prime/v1Migration.js +38 -0
  166. package/dist/cli/commands/prime.js +80 -558
  167. package/dist/cli/commands/profileGrounding.js +55 -0
  168. package/dist/cli/commands/query.js +77 -52
  169. package/dist/cli/commands/report.js +88 -26
  170. package/dist/cli/commands/route.js +142 -0
  171. package/dist/cli/commands/schema.js +266 -142
  172. package/dist/cli/commands/state/decisions.js +51 -61
  173. package/dist/cli/commands/state/docs.js +63 -86
  174. package/dist/cli/commands/state/experimentRecords.js +151 -0
  175. package/dist/cli/commands/state/experiments.js +11 -64
  176. package/dist/cli/commands/state/get.js +129 -0
  177. package/dist/cli/commands/state/health.js +11 -111
  178. package/dist/cli/commands/state/index.js +6 -41
  179. package/dist/cli/commands/state/list.js +194 -0
  180. package/dist/cli/commands/state/objective.js +21 -64
  181. package/dist/cli/commands/state/plan.js +11 -169
  182. package/dist/cli/commands/state/planTasks.js +154 -0
  183. package/dist/cli/commands/state/plans.js +154 -0
  184. package/dist/cli/commands/state/progress.js +11 -45
  185. package/dist/cli/commands/state/shared.js +0 -1
  186. package/dist/cli/commands/state/todo.js +29 -108
  187. package/dist/cli/commands/state/write.js +433 -0
  188. package/dist/cli/commands/upgrade.js +146 -5
  189. package/dist/cli/commands/upgradeVerify.js +118 -0
  190. package/dist/cli/commands/validate.js +246 -211
  191. package/dist/cli/commands/verify.js +24 -9
  192. package/dist/cli/contracts/bundleStatus.js +1 -0
  193. package/dist/cli/contracts/orientationState.js +1 -0
  194. package/dist/cli/dispatch/argvParser.js +32 -0
  195. package/dist/cli/dispatch/check.js +94 -50
  196. package/dist/cli/dispatch/commands.js +27 -0
  197. package/dist/cli/dispatch/index.js +82 -52
  198. package/dist/cli/dispatch/lifecycle.js +268 -108
  199. package/dist/cli/dispatch/prime.js +68 -29
  200. package/dist/cli/dispatch/projections.js +17 -0
  201. package/dist/cli/dispatch/shared.js +1 -2
  202. package/dist/cli/dispatch/state.js +68 -77
  203. package/dist/cli/dispatch.js +0 -1
  204. package/dist/cli/errors.js +16 -17
  205. package/dist/cli/help.js +395 -41
  206. package/dist/cli/migrationRequired.js +122 -0
  207. package/dist/cli/orientation/attention.js +61 -0
  208. package/dist/cli/orientation/corpusCoverage.js +102 -0
  209. package/dist/cli/orientation.js +438 -170
  210. package/dist/cli/planArtifacts.js +350 -0
  211. package/dist/cli/planEvidence.js +157 -0
  212. package/dist/cli/planLifecycleState.js +36 -0
  213. package/dist/cli/planTaskIndex.js +11 -0
  214. package/dist/cli/preCutoverCommand.js +32 -0
  215. package/dist/cli/prime-blob.js +71 -3
  216. package/dist/cli/profileAcquisition.js +167 -0
  217. package/dist/cli/startupCompletenessContract.js +59 -0
  218. package/dist/cli/stateQuery.js +56 -14
  219. package/dist/cli/structured.js +0 -1
  220. package/dist/cli/todoMarkdown.js +25 -12
  221. package/dist/cli/todoReadinessSelection.js +192 -0
  222. package/dist/cli/todoSeverity.js +18 -0
  223. package/dist/core/atomicWriter.js +20 -0
  224. package/dist/core/developmentChannel.js +1 -0
  225. package/dist/core/developmentInvocation.js +374 -0
  226. package/dist/core/difflib.js +0 -1
  227. package/dist/core/envPaths.js +20 -0
  228. package/dist/core/jsonValue.js +5 -0
  229. package/dist/core/paths.js +0 -1
  230. package/dist/core/pyjson.js +67 -3
  231. package/dist/core/shell.js +4 -0
  232. package/dist/core/skillIdentity.js +23 -0
  233. package/dist/core/sourceRoot.js +9 -12
  234. package/dist/core/text.js +10 -0
  235. package/dist/core/toml.js +0 -1
  236. package/dist/core/yaml.js +8 -1
  237. package/dist/eval/evalSkills.js +30 -26
  238. package/dist/eval/hybridRouteEvaluation.js +155 -0
  239. package/dist/eval/semanticEval.js +43 -20
  240. package/dist/eval/semanticFixtures.js +16 -5
  241. package/dist/hooks/common.js +3 -56
  242. package/dist/hooks/compaction/apply.js +252 -50
  243. package/dist/hooks/compaction/dryRun.js +7 -4
  244. package/dist/hooks/compaction/index.js +5 -6
  245. package/dist/hooks/compaction/parse.js +201 -5
  246. package/dist/hooks/compaction/retention.js +30 -25
  247. package/dist/hooks/compaction/status.js +149 -32
  248. package/dist/hooks/compaction/types.js +0 -1
  249. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  250. package/dist/hooks/validateArtifact/index.js +7 -64
  251. package/dist/hooks/validateArtifact/markdown.js +57 -7
  252. package/dist/hooks/validateArtifact/schema.js +110 -19
  253. package/dist/hooks/validateArtifact/traversal.js +13 -11
  254. package/dist/hooks/validateArtifact/violations.js +7 -5
  255. package/dist/migrate/v2HandoffManifest.js +127 -8
  256. package/dist/registries/activationContract.js +2 -0
  257. package/dist/registries/activationTuples.js +108 -0
  258. package/dist/registries/artifactProtocolIds.js +2 -1
  259. package/dist/registries/artifactRegistry.js +224 -63
  260. package/dist/registries/artifactSchemaProjection.js +45 -0
  261. package/dist/registries/capabilityContract.js +129 -2
  262. package/dist/registries/evaluatorHandoffContract.js +2 -3
  263. package/dist/registries/evidenceTierContract.js +371 -0
  264. package/dist/registries/glossaryAdviceContract.js +79 -0
  265. package/dist/registries/glossaryCaveatContract.js +67 -0
  266. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  267. package/dist/registries/glossaryEntryContract.js +757 -0
  268. package/dist/registries/glossaryTermIdentity.js +17 -0
  269. package/dist/registries/glossaryTermOccurrence.js +20 -0
  270. package/dist/registries/hybridRoute.js +274 -0
  271. package/dist/registries/hybridRouteReceipt.js +221 -0
  272. package/dist/registries/packagePublication.js +273 -0
  273. package/dist/registries/packageRegistry.js +187 -211
  274. package/dist/registries/todoReadinessContract.js +448 -0
  275. package/dist/registries/triggerLoader.js +174 -0
  276. package/dist/registries/verbosityBudgetContract.js +205 -0
  277. package/dist/release/releaseMetadata.js +156 -6
  278. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  279. package/dist/runtime/lifecycleAdapters.js +777 -0
  280. package/dist/runtime/lifecycleAuthority.js +453 -0
  281. package/dist/runtime/lifecycleOperationContract.js +123 -0
  282. package/dist/runtime/lifecycleOperations.js +634 -0
  283. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  284. package/dist/runtime/lifecyclePublication.js +415 -0
  285. package/dist/runtime/lifecycleSnapshot.js +438 -0
  286. package/dist/runtime/nativeResourceCleanup.js +502 -0
  287. package/dist/setup/opencode.js +20 -13
  288. package/dist/setup/opencodeConstants.js +1 -0
  289. package/dist/setup/sharedSkill.js +45 -0
  290. package/dist/setup/smokeChecks.js +21 -82
  291. package/dist/state/archiveDiscovery.js +580 -0
  292. package/dist/state/archivePublication.js +225 -0
  293. package/dist/state/archiveRecovery.js +237 -0
  294. package/dist/state/archiveReplay.js +53 -0
  295. package/dist/state/canonicalMigrationRecord.js +36 -0
  296. package/dist/state/changelog.js +221 -0
  297. package/dist/state/decisionEntities.js +367 -0
  298. package/dist/state/decisionLegacyValidation.js +215 -0
  299. package/dist/state/decisionMigrationProvenance.js +199 -0
  300. package/dist/state/decisionOverlay.js +254 -0
  301. package/dist/state/decisionRevision.js +256 -0
  302. package/dist/state/decisionRevisionMigration.js +89 -0
  303. package/dist/state/directRetrieval.js +323 -0
  304. package/dist/state/durability.js +324 -0
  305. package/dist/state/entityCutover.js +459 -0
  306. package/dist/state/entityCutoverGit.js +127 -0
  307. package/dist/state/entityGlossaryAuthority.js +13 -0
  308. package/dist/state/entityListProjection.js +187 -0
  309. package/dist/state/entityListRuntimeRegistry.js +85 -0
  310. package/dist/state/entityMigrationCausality.js +97 -0
  311. package/dist/state/entityMigrationIdentity.js +5 -0
  312. package/dist/state/entityMigrationPreview.js +840 -0
  313. package/dist/state/entityMigrationTodo.js +133 -0
  314. package/dist/state/entityPublicationContext.js +859 -0
  315. package/dist/state/entityRetrievalHelp.js +506 -0
  316. package/dist/state/entityStorage.js +899 -0
  317. package/dist/state/exactReplacementRecovery.js +18 -0
  318. package/dist/state/experimentArchive.js +63 -0
  319. package/dist/state/experimentIdentity.js +202 -0
  320. package/dist/state/healthEntities.js +262 -0
  321. package/dist/state/healthEntityValidation.js +18 -0
  322. package/dist/state/healthRepair.js +69 -0
  323. package/dist/state/installRoot.js +64 -25
  324. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  325. package/dist/state/legacyIdentity.js +47 -0
  326. package/dist/state/legacySummaryRecord.js +6 -0
  327. package/dist/state/listAccounting.js +54 -0
  328. package/dist/state/listClassification.js +17 -0
  329. package/dist/state/listCursor.js +42 -0
  330. package/dist/state/listRetrieval.js +781 -0
  331. package/dist/state/migrationSourceBinding.js +30 -0
  332. package/dist/state/objectiveExperimentEntities.js +322 -0
  333. package/dist/state/planEntities.js +1027 -0
  334. package/dist/state/planIdentity.js +47 -0
  335. package/dist/state/planLineageValidation.js +52 -0
  336. package/dist/state/planReplacementTransaction.js +475 -0
  337. package/dist/state/planRetrieval.js +313 -0
  338. package/dist/state/planTaskRetrieval.js +294 -0
  339. package/dist/state/progressEntities.js +512 -0
  340. package/dist/state/progressGlossaryCaveat.js +168 -0
  341. package/dist/state/progressPublicationOrder.js +19 -0
  342. package/dist/state/progressWritePolicy.js +33 -0
  343. package/dist/state/projectRoot.js +62 -0
  344. package/dist/state/projectionPolicy.js +190 -0
  345. package/dist/state/retrievalAuthority.js +156 -0
  346. package/dist/state/safeProjectFile.js +155 -0
  347. package/dist/state/startupAnalysis/benchmark.js +92 -27
  348. package/dist/state/startupAnalysis/contract.js +48 -10
  349. package/dist/state/startupAnalysis/helpers.js +27 -73
  350. package/dist/state/startupAnalysis/index.js +0 -1
  351. package/dist/state/startupAnalysis/metrics.js +25 -19
  352. package/dist/state/startupAnalysis/records.js +13 -10
  353. package/dist/state/startupAnalysis/report.js +26 -38
  354. package/dist/state/startupAnalysis/threshold.js +19 -7
  355. package/dist/state/startupAnalysis.js +0 -1
  356. package/dist/state/startupProjection.js +499 -0
  357. package/dist/state/stateMode.js +222 -0
  358. package/dist/state/stateStorageAuthority.js +47 -0
  359. package/dist/state/summaryEntityRead.js +25 -0
  360. package/dist/state/summaryMigrationProvenance.js +66 -0
  361. package/dist/state/summarySourceRowAuthority.js +36 -0
  362. package/dist/state/todoActivationSafety.js +58 -0
  363. package/dist/state/todoDocsEntities.js +1124 -0
  364. package/dist/state/todoDocsEntityValidation.js +158 -0
  365. package/dist/state/todoMarkdownProjection.js +51 -0
  366. package/dist/state/todoReconciliationActivation.js +182 -0
  367. package/dist/state/todoReconciliationInspection.js +171 -0
  368. package/dist/state/todoReconciliationRepair.js +318 -0
  369. package/dist/state/todoReconciliationTransaction.js +595 -0
  370. package/dist/state/write/assign.js +20 -0
  371. package/dist/state/write/candidateMutation.js +269 -0
  372. package/dist/state/write/errors.js +11 -0
  373. package/dist/state/write/experimentPublication.js +192 -0
  374. package/dist/state/write/explain.js +377 -0
  375. package/dist/state/write/fields.js +61 -0
  376. package/dist/state/write/glossaryPublication.js +263 -0
  377. package/dist/state/write/grammar.js +285 -0
  378. package/dist/state/write/helpers.js +29 -0
  379. package/dist/state/write/index.js +12 -0
  380. package/dist/state/write/input.js +391 -0
  381. package/dist/state/write/lock.js +837 -0
  382. package/dist/state/write/mutation.js +234 -0
  383. package/dist/state/write/operations.js +170 -0
  384. package/dist/state/write/planEvaluation.js +128 -0
  385. package/dist/state/write/planPublication.js +179 -0
  386. package/dist/state/write/runtimeOperations.js +146 -0
  387. package/dist/state/write/serialize.js +1 -0
  388. package/dist/state/write/transaction.js +57 -0
  389. package/dist/state/write/validate.js +7 -0
  390. package/dist/upgrade/appContentRefresh.js +383 -0
  391. package/dist/upgrade/appModel.js +8 -7
  392. package/dist/upgrade/atomicWriter.js +1 -0
  393. package/dist/upgrade/bundleEvidence.js +33 -0
  394. package/dist/upgrade/channels.js +12 -8
  395. package/dist/upgrade/compatibility.js +56 -21
  396. package/dist/upgrade/doctor.js +165 -199
  397. package/dist/upgrade/doctorClassifier.js +187 -0
  398. package/dist/upgrade/installedHooksRetirement.js +196 -0
  399. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  400. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  401. package/dist/upgrade/migrateArtifactsV2ToV3.js +375 -79
  402. package/dist/upgrade/migrationPublication.js +122 -0
  403. package/dist/upgrade/nextMajorDoctor.js +29 -10
  404. package/dist/upgrade/npxPlatformStatus.js +22 -0
  405. package/dist/upgrade/projectIntegration.js +145 -189
  406. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  407. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  408. package/dist/upgrade/runtimeMigration.js +272 -373
  409. package/dist/upgrade/upgradeCommands.js +14 -1
  410. package/dist/upgrade/upgradeLock.js +85 -0
  411. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  412. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  413. package/dist/upgrade/versionResolution.js +2 -3
  414. package/dist/validate/activationArtifactEvidence.js +852 -0
  415. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  416. package/dist/validate/activationConjunction.js +816 -0
  417. package/dist/validate/activationEvidenceManifest.js +531 -0
  418. package/dist/validate/activationPackageSemantics.js +29 -0
  419. package/dist/validate/appHomeContract.js +2 -8
  420. package/dist/validate/bootstrapAuthority.js +44 -0
  421. package/dist/validate/capability.js +133 -12
  422. package/dist/validate/crossCapability.js +15 -10
  423. package/dist/validate/retainedReferenceAuthority.js +879 -0
  424. package/dist/validate/selfAudit.js +39 -45
  425. package/dist/validate/v1LegacyCruft.js +131 -0
  426. package/dist/validate/vocabularyAuthority.js +18 -13
  427. package/package.json +60 -29
  428. package/bundle/references/adapters/cursor.md +0 -213
  429. package/bundle/references/adapters/opencode.md +0 -530
  430. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  431. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  432. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  433. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  434. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  435. package/bundle/references/analysis/benchmark.md +0 -267
  436. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  437. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  438. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  439. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  440. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  441. package/bundle/references/cli/coexistence-probe.yaml +0 -9
  442. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  443. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  444. package/bundle/references/cli/upgrade-repair-wording.md +0 -31
  445. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  446. package/bundle/references/meta/documentation-inventory.md +0 -49
  447. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  448. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  449. package/bundle/skills/agentera/agents/hej.toml +0 -6
  450. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  451. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  452. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  453. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  454. package/bundle/skills/agentera/agents/planera.toml +0 -6
  455. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  456. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  457. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  458. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  459. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  460. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  461. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  462. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  463. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  464. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  465. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  466. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  467. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  468. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  471. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -120
  472. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  473. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  474. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  475. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  478. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  479. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  481. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  482. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  483. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  484. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  485. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  486. package/bundle/skills/agentera/references/contract.md +0 -1039
  487. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  488. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  489. package/dist/analytics/extractCorpus/core.js.map +0 -1
  490. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  491. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  492. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  493. package/dist/analytics/extractCorpus/index.js.map +0 -1
  494. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  495. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  496. package/dist/analytics/extractCorpus.js.map +0 -1
  497. package/dist/analytics/usageStats.js.map +0 -1
  498. package/dist/bin/agentera.js.map +0 -1
  499. package/dist/capabilities/dokumentera/instructions.js +0 -6
  500. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  501. package/dist/capabilities/hej/instructions.js +0 -6
  502. package/dist/capabilities/hej/instructions.js.map +0 -1
  503. package/dist/capabilities/index.js.map +0 -1
  504. package/dist/capabilities/inspektera/instructions.js +0 -6
  505. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  506. package/dist/capabilities/inspirera/instructions.js +0 -6
  507. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  508. package/dist/capabilities/optimera/instructions.js +0 -6
  509. package/dist/capabilities/optimera/instructions.js.map +0 -1
  510. package/dist/capabilities/orkestrera/instructions.js +0 -6
  511. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  512. package/dist/capabilities/planera/instructions.js +0 -6
  513. package/dist/capabilities/planera/instructions.js.map +0 -1
  514. package/dist/capabilities/profilera/instructions.js +0 -6
  515. package/dist/capabilities/profilera/instructions.js.map +0 -1
  516. package/dist/capabilities/realisera/instructions.js +0 -6
  517. package/dist/capabilities/realisera/instructions.js.map +0 -1
  518. package/dist/capabilities/resonera/instructions.js +0 -6
  519. package/dist/capabilities/resonera/instructions.js.map +0 -1
  520. package/dist/capabilities/visionera/instructions.js +0 -6
  521. package/dist/capabilities/visionera/instructions.js.map +0 -1
  522. package/dist/capabilities/visualisera/instructions.js +0 -6
  523. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  524. package/dist/cli/appContext.js.map +0 -1
  525. package/dist/cli/argvalidate.js.map +0 -1
  526. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  527. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  528. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  529. package/dist/cli/capabilityContext/contract.js.map +0 -1
  530. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  531. package/dist/cli/capabilityContext/index.js.map +0 -1
  532. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  533. package/dist/cli/capabilityContext/planState.js.map +0 -1
  534. package/dist/cli/capabilityContext/progress.js.map +0 -1
  535. package/dist/cli/capabilityContext/realisera.js +0 -174
  536. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  537. package/dist/cli/capabilityContext/shared.js.map +0 -1
  538. package/dist/cli/capabilityContext/slim.js.map +0 -1
  539. package/dist/cli/capabilityContext/startup.js.map +0 -1
  540. package/dist/cli/capabilityContext/types.js.map +0 -1
  541. package/dist/cli/capabilityContext.js.map +0 -1
  542. package/dist/cli/commands/backfill.js +0 -84
  543. package/dist/cli/commands/backfill.js.map +0 -1
  544. package/dist/cli/commands/capability.js.map +0 -1
  545. package/dist/cli/commands/compact.js.map +0 -1
  546. package/dist/cli/commands/doctor.js.map +0 -1
  547. package/dist/cli/commands/lint.js.map +0 -1
  548. package/dist/cli/commands/prime.js.map +0 -1
  549. package/dist/cli/commands/query.js.map +0 -1
  550. package/dist/cli/commands/report.js.map +0 -1
  551. package/dist/cli/commands/schema.js.map +0 -1
  552. package/dist/cli/commands/state/decisions.js.map +0 -1
  553. package/dist/cli/commands/state/docs.js.map +0 -1
  554. package/dist/cli/commands/state/experiments.js.map +0 -1
  555. package/dist/cli/commands/state/health.js.map +0 -1
  556. package/dist/cli/commands/state/index.js.map +0 -1
  557. package/dist/cli/commands/state/objective.js.map +0 -1
  558. package/dist/cli/commands/state/plan.js.map +0 -1
  559. package/dist/cli/commands/state/progress.js.map +0 -1
  560. package/dist/cli/commands/state/shared.js.map +0 -1
  561. package/dist/cli/commands/state/todo.js.map +0 -1
  562. package/dist/cli/commands/state.js +0 -1023
  563. package/dist/cli/commands/state.js.map +0 -1
  564. package/dist/cli/commands/upgrade.js.map +0 -1
  565. package/dist/cli/commands/validate.js.map +0 -1
  566. package/dist/cli/commands/verify.js.map +0 -1
  567. package/dist/cli/dispatch/check.js.map +0 -1
  568. package/dist/cli/dispatch/index.js.map +0 -1
  569. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  570. package/dist/cli/dispatch/prime.js.map +0 -1
  571. package/dist/cli/dispatch/shared.js.map +0 -1
  572. package/dist/cli/dispatch/state.js.map +0 -1
  573. package/dist/cli/dispatch.js.map +0 -1
  574. package/dist/cli/errors.js.map +0 -1
  575. package/dist/cli/help.js.map +0 -1
  576. package/dist/cli/orientation.js.map +0 -1
  577. package/dist/cli/prime-blob.js.map +0 -1
  578. package/dist/cli/stateQuery.js.map +0 -1
  579. package/dist/cli/structured.js.map +0 -1
  580. package/dist/cli/todoMarkdown.js.map +0 -1
  581. package/dist/core/difflib.js.map +0 -1
  582. package/dist/core/git.js +0 -43
  583. package/dist/core/git.js.map +0 -1
  584. package/dist/core/paths.js.map +0 -1
  585. package/dist/core/pyjson.js.map +0 -1
  586. package/dist/core/sourceRoot.js.map +0 -1
  587. package/dist/core/toml.js.map +0 -1
  588. package/dist/core/yaml.js.map +0 -1
  589. package/dist/eval/evalSkills.js.map +0 -1
  590. package/dist/eval/semanticEval.js.map +0 -1
  591. package/dist/eval/semanticFixtures.js.map +0 -1
  592. package/dist/hooks/common.js.map +0 -1
  593. package/dist/hooks/compaction/apply.js.map +0 -1
  594. package/dist/hooks/compaction/dryRun.js.map +0 -1
  595. package/dist/hooks/compaction/index.js.map +0 -1
  596. package/dist/hooks/compaction/parse.js.map +0 -1
  597. package/dist/hooks/compaction/retention.js.map +0 -1
  598. package/dist/hooks/compaction/status.js.map +0 -1
  599. package/dist/hooks/compaction/types.js.map +0 -1
  600. package/dist/hooks/compaction.js +0 -935
  601. package/dist/hooks/compaction.js.map +0 -1
  602. package/dist/hooks/cursorPreToolUse.js +0 -19
  603. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  604. package/dist/hooks/cursorSessionStart.js +0 -71
  605. package/dist/hooks/cursorSessionStart.js.map +0 -1
  606. package/dist/hooks/sessionStart.js +0 -209
  607. package/dist/hooks/sessionStart.js.map +0 -1
  608. package/dist/hooks/sessionStop.js +0 -203
  609. package/dist/hooks/sessionStop.js.map +0 -1
  610. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  611. package/dist/hooks/validateArtifact/index.js.map +0 -1
  612. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  613. package/dist/hooks/validateArtifact/runtime.js +0 -83
  614. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  615. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  616. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  617. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  618. package/dist/hooks/validateArtifact.js +0 -924
  619. package/dist/hooks/validateArtifact.js.map +0 -1
  620. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  621. package/dist/registries/artifactProtocolIds.js.map +0 -1
  622. package/dist/registries/artifactRegistry.js.map +0 -1
  623. package/dist/registries/capabilityContract.js.map +0 -1
  624. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  625. package/dist/registries/packageRegistry.js.map +0 -1
  626. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  627. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  628. package/dist/release/releaseMetadata.js.map +0 -1
  629. package/dist/setup/codex/agents.js +0 -96
  630. package/dist/setup/codex/agents.js.map +0 -1
  631. package/dist/setup/codex/cli.js +0 -161
  632. package/dist/setup/codex/cli.js.map +0 -1
  633. package/dist/setup/codex/configToml.js +0 -644
  634. package/dist/setup/codex/configToml.js.map +0 -1
  635. package/dist/setup/codex/constants.js +0 -29
  636. package/dist/setup/codex/constants.js.map +0 -1
  637. package/dist/setup/codex/installRoot.js +0 -64
  638. package/dist/setup/codex/installRoot.js.map +0 -1
  639. package/dist/setup/codex/state.js +0 -270
  640. package/dist/setup/codex/state.js.map +0 -1
  641. package/dist/setup/codex.js +0 -12
  642. package/dist/setup/codex.js.map +0 -1
  643. package/dist/setup/copilot.js +0 -227
  644. package/dist/setup/copilot.js.map +0 -1
  645. package/dist/setup/cursor.js +0 -127
  646. package/dist/setup/cursor.js.map +0 -1
  647. package/dist/setup/doctor/core.js +0 -300
  648. package/dist/setup/doctor/core.js.map +0 -1
  649. package/dist/setup/doctor/diagnostics.js +0 -247
  650. package/dist/setup/doctor/diagnostics.js.map +0 -1
  651. package/dist/setup/doctor/opencode.js +0 -281
  652. package/dist/setup/doctor/opencode.js.map +0 -1
  653. package/dist/setup/doctor/report.js +0 -474
  654. package/dist/setup/doctor/report.js.map +0 -1
  655. package/dist/setup/doctor.js +0 -10
  656. package/dist/setup/doctor.js.map +0 -1
  657. package/dist/setup/opencode.js.map +0 -1
  658. package/dist/setup/smokeChecks.js.map +0 -1
  659. package/dist/state/installRoot.js.map +0 -1
  660. package/dist/state/progressCommit.js +0 -289
  661. package/dist/state/progressCommit.js.map +0 -1
  662. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  663. package/dist/state/startupAnalysis/contract.js.map +0 -1
  664. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  665. package/dist/state/startupAnalysis/index.js.map +0 -1
  666. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  667. package/dist/state/startupAnalysis/records.js.map +0 -1
  668. package/dist/state/startupAnalysis/report.js.map +0 -1
  669. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  670. package/dist/state/startupAnalysis.js.map +0 -1
  671. package/dist/upgrade/appModel.js.map +0 -1
  672. package/dist/upgrade/channels.js.map +0 -1
  673. package/dist/upgrade/coexistenceProbe.js +0 -83
  674. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  675. package/dist/upgrade/compatibility.js.map +0 -1
  676. package/dist/upgrade/doctor.js.map +0 -1
  677. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  678. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  679. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  680. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  681. package/dist/upgrade/projectIntegration.js.map +0 -1
  682. package/dist/upgrade/runtimeMigration.js.map +0 -1
  683. package/dist/upgrade/upgradeCommands.js.map +0 -1
  684. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  685. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  686. package/dist/upgrade/versionResolution.js.map +0 -1
  687. package/dist/validate/appHomeContract.js.map +0 -1
  688. package/dist/validate/capability.js.map +0 -1
  689. package/dist/validate/crossCapability.js.map +0 -1
  690. package/dist/validate/lifecycleAdapters.js +0 -772
  691. package/dist/validate/lifecycleAdapters.js.map +0 -1
  692. package/dist/validate/selfAudit.js.map +0 -1
  693. package/dist/validate/vocabularyAuthority.js.map +0 -1
  694. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  695. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  696. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -3,14 +3,14 @@ import path from "node:path";
3
3
  import { loadYamlMapping } from "../core/yaml.js";
4
4
  import { resolvePath } from "../core/paths.js";
5
5
  import { resolveSourceRoot } from "../core/sourceRoot.js";
6
+ /** PackageManifest registry loader and contract validator. Port of scripts/package_registry.py. */
6
7
  export const EXPECTED_PACKAGE_ORDER = ["agentera"];
7
8
  export const REQUIRED_GROUPS = [
8
9
  "identity",
9
10
  "version_authority",
10
11
  "version_surfaces",
11
- "runtime_package_manifests",
12
12
  "bundle_surfaces",
13
- "package_commands",
13
+ "bootstrap_command_authority",
14
14
  "docs_targets",
15
15
  "release_policy",
16
16
  ];
@@ -22,11 +22,10 @@ const REQUIRED_FIELDS = {
22
22
  "access_interface",
23
23
  "future_authority_change_requires",
24
24
  ],
25
- version_surfaces: ["surfaces", "excluded_runtime_manifests"],
26
- runtime_package_manifests: ["manifests", "shared_paths", "shared_paths_policy"],
27
- bundle_surfaces: ["directories", "files", "skip_parts", "skip_suffixes"],
28
- package_commands: ["commands", "safety"],
29
- docs_targets: ["version_files_source", "version_files", "index_targets", "excluded_version_files"],
25
+ version_surfaces: ["surfaces"],
26
+ bundle_surfaces: ["directories", "files", "generated_files", "skip_parts", "skip_suffixes"],
27
+ bootstrap_command_authority: ["scanned_formats", "scalar_classifications", "emitted_producers", "constructor_non_producers"],
28
+ docs_targets: ["version_files_source", "version_files", "index_targets"],
30
29
  release_policy: [
31
30
  "semver_policy_source",
32
31
  "version_bump_required_for_interface_only_change",
@@ -34,17 +33,11 @@ const REQUIRED_FIELDS = {
34
33
  ],
35
34
  };
36
35
  const CONSUMER_GROUPS = {
37
- validator: ["identity", "version_authority", "version_surfaces", "runtime_package_manifests"],
38
- upgrade: ["identity", "version_authority", "bundle_surfaces", "package_commands"],
36
+ validator: ["identity", "version_authority", "version_surfaces"],
37
+ upgrade: ["identity", "version_authority", "bundle_surfaces", "bootstrap_command_authority"],
39
38
  docs: ["identity", "version_authority", "docs_targets", "release_policy"],
40
39
  tests: REQUIRED_GROUPS,
41
40
  };
42
- const APPROVED_EXECUTABLES = new Set(["npx"]);
43
- const APPROVED_ACTIONS = new Set(["remove-legacy-skills", "install-agentera-skill"]);
44
- const APPROVED_RUNTIMES = new Set(["all", "claude", "opencode"]);
45
- const APPROVED_RUNTIME_AGENTS = new Set(["claude-code", "opencode"]);
46
- const CLEANUP_ACTIONS = new Set(["remove-legacy-skills"]);
47
- const RUNTIME_INSTALL_ACTIONS = new Set(["install-agentera-skill"]);
48
41
  const FORBIDDEN_INSTALL_ROOT_FIELDS = new Set([
49
42
  "install_root",
50
43
  "install_root_classification",
@@ -80,6 +73,29 @@ function isMapping(value) {
80
73
  function isStringList(value) {
81
74
  return Array.isArray(value) && value.every((item) => typeof item === "string");
82
75
  }
76
+ function selectorParts(selector) {
77
+ const parts = [];
78
+ for (const match of selector.matchAll(/([^[.\]]+)|\[(\d+)\]/g)) {
79
+ parts.push(match[2] === undefined ? match[1] : Number(match[2]));
80
+ }
81
+ return parts;
82
+ }
83
+ function selectedVersion(root, surface) {
84
+ const source = fs.readFileSync(path.join(root, surface.path), "utf8");
85
+ if (surface.selector === "frontmatter.version") {
86
+ return /^version:\s*["']?([^"'\s]+)["']?\s*$/m.exec(source)?.[1] ?? null;
87
+ }
88
+ let value = JSON.parse(source);
89
+ for (const part of selectorParts(surface.selector)) {
90
+ if (typeof part === "number") {
91
+ value = Array.isArray(value) ? value[part] : undefined;
92
+ }
93
+ else {
94
+ value = isMapping(value) ? value[part] : undefined;
95
+ }
96
+ }
97
+ return typeof value === "string" ? value : null;
98
+ }
83
99
  export class PackageRegistry {
84
100
  records;
85
101
  root;
@@ -105,11 +121,11 @@ export class PackageRegistry {
105
121
  authority.selector !== "skills[0].version") {
106
122
  throw new RegistryError("unsupported suite version authority selector");
107
123
  }
108
- let data;
124
+ let data; // cast: JSON.parse IO boundary
109
125
  try {
110
126
  data = JSON.parse(fs.readFileSync(path.join(this.root, authority.persisted_authority), "utf8"));
111
127
  }
112
- catch (exc) {
128
+ catch {
113
129
  throw new RegistryError(`registry.json missing skills[0].version`);
114
130
  }
115
131
  const version = data?.skills?.[0]?.version;
@@ -137,34 +153,12 @@ export class PackageRegistry {
137
153
  versionSurfaceIds(packageId = "agentera") {
138
154
  return this.get(packageId).version_surfaces.surfaces.map((s) => s.id);
139
155
  }
140
- runtimeManifestIds(packageId = "agentera") {
141
- return this.get(packageId).runtime_package_manifests.manifests.map((m) => m.id);
142
- }
143
- runtimeManifestPaths(packageId = "agentera") {
144
- const paths = {};
145
- for (const manifest of this.get(packageId).runtime_package_manifests.manifests) {
146
- if (!(manifest.runtime in paths)) {
147
- paths[manifest.runtime] = manifest.path;
148
- }
149
- }
150
- return paths;
151
- }
152
- runtimePackageShapes(packageId = "agentera") {
153
- const shapes = {};
154
- for (const manifest of this.get(packageId).runtime_package_manifests.manifests) {
155
- shapes[manifest.runtime] = manifest.package_shape;
156
- }
157
- return shapes;
158
- }
159
- sharedPathRequirements(packageId = "agentera") {
160
- const requirements = {};
161
- for (const entry of this.get(packageId).runtime_package_manifests.shared_paths) {
162
- requirements[entry.path] = entry.kind;
156
+ versionSurfaceValues(packageId = "agentera") {
157
+ const values = {};
158
+ for (const surface of this.get(packageId).version_surfaces.surfaces) {
159
+ values[surface.id] = selectedVersion(this.root, surface);
163
160
  }
164
- return requirements;
165
- }
166
- nonVersionBearingRuntimeManifests(packageId = "agentera") {
167
- return this.get(packageId).runtime_package_manifests.manifests.filter((m) => m.version_bearing === false);
161
+ return values;
168
162
  }
169
163
  }
170
164
  export function loadRegistry(registryPath = defaultRegistryPath(), root = defaultRoot()) {
@@ -173,7 +167,7 @@ export function loadRegistry(registryPath = defaultRegistryPath(), root = defaul
173
167
  if (errors.length > 0) {
174
168
  throw new RegistryError("PackageManifest registry validation failed: " + errors.join("; "));
175
169
  }
176
- return new PackageRegistry(data.records, root);
170
+ return new PackageRegistry(data.records, root); // cast: parsed registry IO boundary
177
171
  }
178
172
  export function validateRegistryFile(registryPath = defaultRegistryPath(), root = defaultRoot()) {
179
173
  return validateRegistryData(loadYamlMapping(fs.readFileSync(registryPath, "utf8")), root);
@@ -263,14 +257,11 @@ function validateGroup(prefix, group, value, root) {
263
257
  case "version_surfaces":
264
258
  errors.push(...validateVersionSurfaces(prefix, value, root));
265
259
  break;
266
- case "runtime_package_manifests":
267
- errors.push(...validateRuntimeManifests(prefix, value, root));
268
- break;
269
260
  case "bundle_surfaces":
270
- errors.push(...validateBundleSurfaces(prefix, value, root));
261
+ errors.push(...validateBundleSurfaces(prefix, value));
271
262
  break;
272
- case "package_commands":
273
- errors.push(...validatePackageCommands(prefix, value));
263
+ case "bootstrap_command_authority":
264
+ errors.push(...validateBootstrapCommandAuthority(prefix, value, root));
274
265
  break;
275
266
  case "docs_targets":
276
267
  errors.push(...validateDocsTargets(prefix, value, root));
@@ -325,141 +316,196 @@ function validateVersionSurfaces(prefix, value, root) {
325
316
  errors.push(...validateRepoPath(`${surfacePrefix}.path`, surface.path, root));
326
317
  });
327
318
  }
328
- errors.push(...validatePathList(`${prefix}.excluded_runtime_manifests`, value.excluded_runtime_manifests, root));
329
319
  return errors;
330
320
  }
331
- function validateRuntimeManifests(prefix, value, root) {
321
+ function validateBundleSurfaces(prefix, value) {
332
322
  const errors = [];
333
- const manifests = value.manifests;
334
- if (!Array.isArray(manifests)) {
335
- errors.push(`${prefix}.manifests must be a list`);
336
- }
337
- else {
338
- errors.push(...validateIdList(`${prefix}.manifests`, manifests));
339
- let nonVersionBearing = 0;
340
- manifests.forEach((manifest, index) => {
341
- const manifestPrefix = `${prefix}.manifests[${index}]`;
342
- if (!isMapping(manifest)) {
343
- errors.push(`${manifestPrefix} must be an object`);
323
+ const ids = new Map();
324
+ const paths = new Map();
325
+ for (const field of ["directories", "files"]) {
326
+ const entries = value[field];
327
+ if (!Array.isArray(entries)) {
328
+ errors.push(`${prefix}.${field} must be a list`);
329
+ continue;
330
+ }
331
+ entries.forEach((entry, index) => {
332
+ const entryPrefix = `${prefix}.${field}[${index}]`;
333
+ if (!isMapping(entry)) {
334
+ errors.push(`${entryPrefix} must be an object`);
344
335
  return;
345
336
  }
346
- errors.push(...validateRequiredObjectFields(manifestPrefix, manifest, [
347
- "id",
348
- "runtime",
349
- "path",
350
- "version_bearing",
351
- "package_shape",
352
- ]));
353
- errors.push(...validateRepoPath(`${manifestPrefix}.path`, manifest.path, root));
354
- if (typeof manifest.version_bearing !== "boolean") {
355
- errors.push(`${manifestPrefix}.version_bearing must be a boolean`);
337
+ errors.push(...validateRequiredObjectFields(entryPrefix, entry, ["id", "path"]));
338
+ const entryId = entry.id;
339
+ if (typeof entryId === "string" && entryId.length > 0) {
340
+ const previous = ids.get(entryId);
341
+ if (previous !== undefined) {
342
+ errors.push(`${entryPrefix}.id ${JSON.stringify(entryId)} duplicates ${previous}.id; ` +
343
+ "correction: use a unique id across bundle directories and files");
344
+ }
345
+ else {
346
+ ids.set(entryId, entryPrefix);
347
+ }
356
348
  }
357
- else if (manifest.version_bearing === false) {
358
- nonVersionBearing += 1;
349
+ const entryPath = entry.path;
350
+ errors.push(...validateBundlePath(entryPrefix, entryId, entryPath));
351
+ if (typeof entryPath === "string" && entryPath.length > 0) {
352
+ const previous = paths.get(entryPath);
353
+ if (previous !== undefined) {
354
+ errors.push(`${entryPrefix}.path ${JSON.stringify(entryPath)} for id ${JSON.stringify(entryId)} ` +
355
+ `duplicates ${previous}.path; correction: use a unique path across bundle directories and files`);
356
+ }
357
+ else {
358
+ paths.set(entryPath, entryPrefix);
359
+ }
359
360
  }
360
361
  });
361
- if (nonVersionBearing === 0) {
362
- errors.push(`${prefix}.manifests must include non-version-bearing runtime package manifests separately`);
362
+ }
363
+ for (const field of ["skip_parts", "skip_suffixes"]) {
364
+ if (!isStringList(value[field])) {
365
+ errors.push(`${prefix}.${field} must be a list of strings`);
363
366
  }
364
367
  }
365
- const sharedPaths = value.shared_paths;
366
- if (!Array.isArray(sharedPaths)) {
367
- errors.push(`${prefix}.shared_paths must be a list`);
368
+ const generated = value.generated_files;
369
+ if (!Array.isArray(generated)) {
370
+ errors.push(`${prefix}.generated_files must be a list`);
368
371
  }
369
372
  else {
370
- errors.push(...validateIdList(`${prefix}.shared_paths`, sharedPaths));
371
- sharedPaths.forEach((entry, index) => {
372
- const entryPrefix = `${prefix}.shared_paths[${index}]`;
373
+ generated.forEach((entry, index) => {
374
+ const entryPrefix = `${prefix}.generated_files[${index}]`;
373
375
  if (!isMapping(entry)) {
374
376
  errors.push(`${entryPrefix} must be an object`);
375
377
  return;
376
378
  }
377
- errors.push(...validateRequiredObjectFields(entryPrefix, entry, ["id", "path", "kind"]));
378
- errors.push(...validateRepoPath(`${entryPrefix}.path`, entry.path, root));
379
- if (entry.kind !== "dir" && entry.kind !== "file") {
380
- errors.push(`${entryPrefix}.kind must be dir or file`);
379
+ errors.push(...validateRequiredObjectFields(entryPrefix, entry, ["id", "path", "format", "classification", "command_authority_reason"]));
380
+ errors.push(...validateBundlePath(entryPrefix, entry.id, entry.path));
381
+ if (typeof entry.id === "string" && entry.id) {
382
+ const previous = ids.get(entry.id);
383
+ if (previous)
384
+ errors.push(`${entryPrefix}.id ${JSON.stringify(entry.id)} duplicates ${previous}.id; correction: use a unique id across all bundle surfaces`);
385
+ else
386
+ ids.set(entry.id, entryPrefix);
387
+ }
388
+ if (typeof entry.path === "string" && entry.path) {
389
+ const previous = paths.get(entry.path);
390
+ if (previous)
391
+ errors.push(`${entryPrefix}.path ${JSON.stringify(entry.path)} for id ${JSON.stringify(entry.id)} duplicates ${previous}.path; correction: use a unique path across all bundle surfaces`);
392
+ else
393
+ paths.set(entry.path, entryPrefix);
394
+ }
395
+ if (entry.format !== "json")
396
+ errors.push(`${entryPrefix}.format must be json`);
397
+ if (entry.classification !== "active")
398
+ errors.push(`${entryPrefix}.classification must be active`);
399
+ if (typeof entry.command_authority_reason !== "string" || !entry.command_authority_reason) {
400
+ errors.push(`${entryPrefix}.command_authority_reason must be a non-empty string`);
381
401
  }
382
402
  });
383
403
  }
384
- if (typeof value.shared_paths_policy !== "string" || !value.shared_paths_policy) {
385
- errors.push(`${prefix}.shared_paths_policy must be a non-empty string`);
386
- }
387
404
  return errors;
388
405
  }
389
- function validateBundleSurfaces(prefix, value, root) {
406
+ function validateBootstrapCommandAuthority(prefix, value, root) {
390
407
  const errors = [];
391
- for (const field of ["directories", "files"]) {
408
+ const formats = value.scanned_formats;
409
+ if (!Array.isArray(formats) || !formats.every((item) => typeof item === "string") || new Set(formats).size !== 3 || !["markdown", "yaml", "json"].every((format) => formats.includes(format))) {
410
+ errors.push(`${prefix}.scanned_formats must contain exactly markdown, yaml, and json`);
411
+ }
412
+ for (const field of ["emitted_producers", "constructor_non_producers"]) {
392
413
  const entries = value[field];
393
414
  if (!Array.isArray(entries)) {
394
415
  errors.push(`${prefix}.${field} must be a list`);
395
416
  continue;
396
417
  }
397
- errors.push(...validateIdList(`${prefix}.${field}`, entries));
418
+ const paths = new Set();
398
419
  entries.forEach((entry, index) => {
399
420
  const entryPrefix = `${prefix}.${field}[${index}]`;
400
421
  if (!isMapping(entry)) {
401
422
  errors.push(`${entryPrefix} must be an object`);
402
423
  return;
403
424
  }
404
- errors.push(...validateRequiredObjectFields(entryPrefix, entry, ["id", "path"]));
425
+ errors.push(...validateRequiredObjectFields(entryPrefix, entry, ["path", "reason"]));
405
426
  errors.push(...validateRepoPath(`${entryPrefix}.path`, entry.path, root));
427
+ if (typeof entry.reason !== "string" || !entry.reason)
428
+ errors.push(`${entryPrefix}.reason must be a non-empty string`);
429
+ if (typeof entry.path === "string") {
430
+ if (paths.has(entry.path))
431
+ errors.push(`${entryPrefix}.path duplicates ${JSON.stringify(entry.path)}`);
432
+ paths.add(entry.path);
433
+ }
406
434
  });
407
435
  }
408
- for (const field of ["skip_parts", "skip_suffixes"]) {
409
- if (!isStringList(value[field])) {
410
- errors.push(`${prefix}.${field} must be a list of strings`);
411
- }
412
- }
413
- return errors;
414
- }
415
- function validatePackageCommands(prefix, value) {
416
- const errors = [];
417
- const commands = value.commands;
418
- if (!Array.isArray(commands)) {
419
- errors.push(`${prefix}.commands must be a list`);
436
+ const classifications = value.scalar_classifications;
437
+ if (!Array.isArray(classifications)) {
438
+ errors.push(`${prefix}.scalar_classifications must be a list`);
420
439
  }
421
440
  else {
422
- errors.push(...validateIdList(`${prefix}.commands`, commands));
423
- commands.forEach((command, index) => {
424
- const commandPrefix = `${prefix}.commands[${index}]`;
425
- if (!isMapping(command)) {
426
- errors.push(`${commandPrefix} must be an object`);
441
+ const identities = new Set();
442
+ const reasons = new Set();
443
+ classifications.forEach((entry, index) => {
444
+ const entryPrefix = `${prefix}.scalar_classifications[${index}]`;
445
+ if (!isMapping(entry)) {
446
+ errors.push(`${entryPrefix} must be an object`);
427
447
  return;
428
448
  }
429
- errors.push(...validateRequiredObjectFields(commandPrefix, command, [
430
- "id",
431
- "runtime",
432
- "action",
433
- "phase",
434
- "argv",
435
- "skipped_without_update_packages_message",
449
+ errors.push(...validateRequiredObjectFields(entryPrefix, entry, [
450
+ "path",
451
+ "region",
452
+ "category",
453
+ "classification",
454
+ "normalized_sha256",
455
+ "reason",
436
456
  ]));
437
- errors.push(...validateCommandSpec(commandPrefix, command));
457
+ errors.push(...validateRepoPath(`${entryPrefix}.path`, entry.path, root));
458
+ if (typeof entry.region !== "string" || !entry.region)
459
+ errors.push(`${entryPrefix}.region must be a non-empty string`);
460
+ if (!["identity_only", "argument_bearing", "other_vocabulary"].includes(String(entry.category)))
461
+ errors.push(`${entryPrefix}.category is invalid`);
462
+ if (!["bounded_descriptive", "exact_exemption"].includes(String(entry.classification)))
463
+ errors.push(`${entryPrefix}.classification is invalid`);
464
+ if (typeof entry.normalized_sha256 !== "string" || !/^[a-f0-9]{64}$/u.test(entry.normalized_sha256))
465
+ errors.push(`${entryPrefix}.normalized_sha256 must be lowercase SHA-256`);
466
+ if (typeof entry.reason !== "string" || !entry.reason)
467
+ errors.push(`${entryPrefix}.reason must be a non-empty string`);
468
+ else if (reasons.has(entry.reason))
469
+ errors.push(`${entryPrefix}.reason duplicates another scalar-specific reason`);
470
+ else
471
+ reasons.add(entry.reason);
472
+ if (typeof entry.path === "string" && typeof entry.region === "string") {
473
+ const identity = `${entry.path}\u0000${entry.region}`;
474
+ if (identities.has(identity))
475
+ errors.push(`${entryPrefix} duplicates path and region ${JSON.stringify(entry.path)} ${JSON.stringify(entry.region)}`);
476
+ identities.add(identity);
477
+ }
438
478
  });
439
479
  }
440
- const safety = value.safety;
441
- const expectedSafety = {
442
- argv_only: true,
443
- update_packages_required_to_plan: true,
444
- yes_required_to_execute: true,
445
- preserve_existing_write_gates: true,
446
- cleanup_phase: "cleanup",
447
- runtime_install_phase: "runtime-install",
448
- };
449
- if (!isMapping(safety)) {
450
- errors.push(`${prefix}.safety must be an object`);
451
- }
452
- else if (!shallowEqual(safety, expectedSafety)) {
453
- errors.push(`${prefix}.safety must preserve approved write gates and phase names`);
454
- }
455
480
  return errors;
456
481
  }
482
+ function validateBundlePath(prefix, id, value) {
483
+ const segments = typeof value === "string" ? value.split("/") : [];
484
+ const invalid = typeof value !== "string" ||
485
+ value.length === 0 ||
486
+ path.posix.isAbsolute(value) ||
487
+ path.win32.isAbsolute(value) ||
488
+ /^[A-Za-z]:/.test(value) ||
489
+ value.includes("\\") ||
490
+ value.startsWith("./") ||
491
+ value.endsWith("/") ||
492
+ segments.includes(".") ||
493
+ segments.includes("..") ||
494
+ path.posix.normalize(value) !== value;
495
+ if (!invalid)
496
+ return [];
497
+ return [
498
+ `${prefix}.path ${JSON.stringify(value)} for id ${JSON.stringify(id)} is invalid; ` +
499
+ "correction: use a non-empty normalized relative POSIX path without absolute roots, " +
500
+ "drive prefixes, backslashes, leading './', trailing separators, or '.'/'..' segments",
501
+ ];
502
+ }
457
503
  function validateDocsTargets(prefix, value, root) {
458
504
  const errors = [];
459
505
  if (typeof value.version_files_source !== "string" || !value.version_files_source) {
460
506
  errors.push(`${prefix}.version_files_source must be a non-empty string`);
461
507
  }
462
- for (const field of ["version_files", "index_targets", "excluded_version_files"]) {
508
+ for (const field of ["version_files", "index_targets"]) {
463
509
  errors.push(...validatePathList(`${prefix}.${field}`, value[field], root));
464
510
  }
465
511
  return errors;
@@ -479,51 +525,6 @@ function validateReleasePolicy(prefix, value) {
479
525
  }
480
526
  return errors;
481
527
  }
482
- function validateCommandSpec(prefix, command) {
483
- const errors = [];
484
- const runtime = command.runtime;
485
- const action = command.action;
486
- const phase = command.phase;
487
- const argv = command.argv;
488
- if (!APPROVED_RUNTIMES.has(runtime)) {
489
- errors.push(`${prefix}.runtime ${pyRepr(runtime)} is not approved`);
490
- }
491
- if (!APPROVED_ACTIONS.has(action)) {
492
- errors.push(`${prefix}.action ${pyRepr(action)} is not approved`);
493
- }
494
- if (!Array.isArray(argv) || argv.length === 0 || !argv.every((part) => typeof part === "string")) {
495
- errors.push(`${prefix}.argv must be a list of strings`);
496
- return errors;
497
- }
498
- if (!APPROVED_EXECUTABLES.has(argv[0])) {
499
- errors.push(`${prefix}.argv uses unapproved executable ${pyRepr(argv[0])}`);
500
- }
501
- if (argv.length < 3 || argv[1] !== "skills" || !["remove", "add"].includes(argv[2])) {
502
- errors.push(`${prefix}.argv must use approved skills action`);
503
- }
504
- if (CLEANUP_ACTIONS.has(action) && (runtime !== "all" || phase !== "cleanup" || argv[2] !== "remove")) {
505
- errors.push(`${prefix}: cleanup commands must stay separate from runtime installs`);
506
- }
507
- if (RUNTIME_INSTALL_ACTIONS.has(action)) {
508
- if (runtime === "all" || phase !== "runtime-install" || argv[2] !== "add") {
509
- errors.push(`${prefix}: runtime install commands must stay out of cleanup`);
510
- }
511
- if (!argv.includes("-a")) {
512
- errors.push(`${prefix}: runtime install commands must declare runtime agent`);
513
- }
514
- else {
515
- const agentIndex = argv.indexOf("-a") + 1;
516
- const agent = agentIndex < argv.length ? argv[agentIndex] : null;
517
- if (agent === null || !APPROVED_RUNTIME_AGENTS.has(agent)) {
518
- errors.push(`${prefix}: runtime install agent ${pyRepr(agent)} is not approved`);
519
- }
520
- }
521
- }
522
- if (typeof command.skipped_without_update_packages_message !== "string") {
523
- errors.push(`${prefix}.skipped_without_update_packages_message must be a string`);
524
- }
525
- return errors;
526
- }
527
528
  function validateRequiredObjectFields(prefix, value, expected) {
528
529
  const errors = [];
529
530
  for (const field of expected) {
@@ -536,7 +537,7 @@ function validateRequiredObjectFields(prefix, value, expected) {
536
537
  errors.push(`${prefix}: unknown field ${field}`);
537
538
  }
538
539
  }
539
- for (const field of ["id", "runtime", "action", "phase", "selector", "package_shape"]) {
540
+ for (const field of ["id", "selector"]) {
540
541
  if (field in value && (typeof value[field] !== "string" || !value[field])) {
541
542
  errors.push(`${prefix}.${field} must be a non-empty string`);
542
543
  }
@@ -585,11 +586,10 @@ function validateRepoPath(prefix, value, root) {
585
586
  if (rel !== "" && (rel.startsWith("..") || path.isAbsolute(rel))) {
586
587
  return [`${prefix} must stay inside repo root`];
587
588
  }
588
- // Existence is advisory for a package DISTRIBUTION spec: surfaces such as
589
- // version files, plugin manifests, and build outputs may be generated at
590
- // build/release time or be runtime-specific, and need not be present in every
591
- // checkout (e.g. a node-only tree without the Python build files). Structural
592
- // and traversal safety above still apply.
589
+ // Existence is advisory for a package distribution spec: version files and
590
+ // build outputs may be generated at build/release time and need not be
591
+ // present in every checkout. Structural and traversal safety above still
592
+ // apply.
593
593
  return [];
594
594
  }
595
595
  function validateForbiddenFields(prefix, value) {
@@ -615,27 +615,3 @@ function validateForbiddenFields(prefix, value) {
615
615
  }
616
616
  return errors;
617
617
  }
618
- function shallowEqual(a, b) {
619
- const ak = Object.keys(a);
620
- const bk = Object.keys(b);
621
- if (ak.length !== bk.length) {
622
- return false;
623
- }
624
- for (const k of ak) {
625
- if (a[k] !== b[k]) {
626
- return false;
627
- }
628
- }
629
- return true;
630
- }
631
- /** Mirror Python repr() for the scalar values used in validator messages. */
632
- function pyRepr(value) {
633
- if (value === null || value === undefined) {
634
- return "None";
635
- }
636
- if (typeof value === "string") {
637
- return `'${value}'`;
638
- }
639
- return String(value);
640
- }
641
- //# sourceMappingURL=packageRegistry.js.map