agentera 3.0.0-dev.4 → 3.0.0-dev.46

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 (585) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +108 -22
  3. package/bundle/.agentera-npx-bundle.json +1 -1
  4. package/bundle/CHANGELOG.md +1351 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +143 -0
  8. package/bundle/UPGRADE.md +236 -0
  9. package/bundle/extract-corpus-parity.json +21 -0
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +437 -0
  12. package/bundle/references/adapters/package-registry.yaml +434 -189
  13. package/bundle/references/adapters/package-surface-characterization.md +66 -35
  14. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  15. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  16. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  17. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  18. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  19. package/bundle/references/analysis/verification-policy.yaml +191 -0
  20. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  21. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  22. package/bundle/references/artifacts/state-storage-authority.yaml +2982 -0
  23. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  24. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  25. package/bundle/references/cli/capability-instruction-contract.yaml +97 -59
  26. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  27. package/bundle/references/cli/routing-model.md +155 -0
  28. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  29. package/bundle/references/cli/update-channels.yaml +35 -2
  30. package/bundle/references/cli/vocabulary-index.yaml +23 -20
  31. package/bundle/references/cli/vocabulary.md +337 -366
  32. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  33. package/bundle/registry.json +14 -14
  34. package/bundle/skills/agentera/SKILL.md +218 -408
  35. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  36. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  37. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  38. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  39. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +102 -0
  40. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
  41. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  42. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -0
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  44. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  45. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  46. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  47. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  48. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  52. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  53. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  55. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  56. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  57. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  58. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  59. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  62. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  63. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  64. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  65. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  66. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  67. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  68. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  69. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  71. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  72. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  73. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  74. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  75. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  77. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  79. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +200 -37
  81. package/bundle/skills/agentera/protocol.yaml +31 -31
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +40 -22
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +421 -33
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +143 -53
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +345 -31
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  95. package/dist/analytics/extractCorpus/cli.js +190 -0
  96. package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
  97. package/dist/analytics/extractCorpus/core.js +392 -0
  98. package/dist/analytics/extractCorpus/corpus.js +167 -0
  99. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  100. package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
  101. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  102. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  103. package/dist/analytics/extractCorpus/filesystemSources.js +118 -0
  104. package/dist/analytics/extractCorpus/index.js +14 -0
  105. package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
  106. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  107. package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
  108. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  109. package/dist/analytics/extractCorpus.js +2 -1791
  110. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  111. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  112. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  113. package/dist/analytics/personalGlossaryProfile.js +219 -0
  114. package/dist/analytics/profileSignals.js +211 -0
  115. package/dist/analytics/usageStats.js +169 -42
  116. package/dist/audit/terminologyDrift.js +281 -0
  117. package/dist/bin/agentera.js +3 -2
  118. package/dist/capabilities/audit/instructions.js +16 -0
  119. package/dist/capabilities/build/instructions.js +56 -0
  120. package/dist/capabilities/design/instructions.js +4 -0
  121. package/dist/capabilities/discuss/instructions.js +29 -0
  122. package/dist/capabilities/document/instructions.js +11 -0
  123. package/dist/capabilities/index.js +40 -0
  124. package/dist/capabilities/optimize/instructions.js +14 -0
  125. package/dist/capabilities/orchestrate/instructions.js +40 -0
  126. package/dist/capabilities/plan/instructions.js +32 -0
  127. package/dist/capabilities/profile/instructions.js +70 -0
  128. package/dist/capabilities/research/instructions.js +5 -0
  129. package/dist/capabilities/status/instructions.js +11 -0
  130. package/dist/capabilities/status/startupInstructions.js +34 -0
  131. package/dist/capabilities/vision/instructions.js +4 -0
  132. package/dist/cli/appContext.js +30 -24
  133. package/dist/cli/argvalidate.js +0 -1
  134. package/dist/cli/capabilityContext/benchmark.js +565 -0
  135. package/dist/cli/capabilityContext/bespoke.js +44 -0
  136. package/dist/cli/capabilityContext/build.js +242 -0
  137. package/dist/cli/capabilityContext/closeout.js +233 -0
  138. package/dist/cli/capabilityContext/contract.js +179 -0
  139. package/dist/cli/capabilityContext/evidence.js +463 -0
  140. package/dist/cli/capabilityContext/index.js +3 -0
  141. package/dist/cli/capabilityContext/orchestration.js +131 -0
  142. package/dist/cli/capabilityContext/planState.js +260 -0
  143. package/dist/cli/capabilityContext/progress.js +142 -0
  144. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  145. package/dist/cli/capabilityContext/shared.js +83 -0
  146. package/dist/cli/capabilityContext/slim.js +152 -0
  147. package/dist/cli/capabilityContext/startup.js +150 -0
  148. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  149. package/dist/cli/capabilityContext/types.js +56 -0
  150. package/dist/cli/capabilityContext.js +1 -2421
  151. package/dist/cli/commands/appHome.js +22 -0
  152. package/dist/cli/commands/capability.js +5 -12
  153. package/dist/cli/commands/compact.js +41 -13
  154. package/dist/cli/commands/doctor.js +127 -97
  155. package/dist/cli/commands/durability.js +81 -0
  156. package/dist/cli/commands/glossaryAdvice.js +138 -0
  157. package/dist/cli/commands/lint.js +26 -44
  158. package/dist/cli/commands/personalGlossary.js +176 -0
  159. package/dist/cli/commands/prime/briefOrientation.js +747 -0
  160. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  161. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  162. package/dist/cli/commands/prime/collectEntityOrientation.js +311 -0
  163. package/dist/cli/commands/prime/collectOrientationState.js +212 -0
  164. package/dist/cli/commands/prime/orientationOutput.js +397 -0
  165. package/dist/cli/commands/prime/types.js +1 -0
  166. package/dist/cli/commands/prime/v1Migration.js +38 -0
  167. package/dist/cli/commands/prime.js +80 -558
  168. package/dist/cli/commands/profileGrounding.js +55 -0
  169. package/dist/cli/commands/query.js +78 -53
  170. package/dist/cli/commands/report.js +96 -25
  171. package/dist/cli/commands/route.js +142 -0
  172. package/dist/cli/commands/schema.js +266 -143
  173. package/dist/cli/commands/state/decisions.js +387 -0
  174. package/dist/cli/commands/state/docs.js +70 -0
  175. package/dist/cli/commands/state/experimentRecords.js +151 -0
  176. package/dist/cli/commands/state/experiments.js +14 -0
  177. package/dist/cli/commands/state/get.js +129 -0
  178. package/dist/cli/commands/state/health.js +14 -0
  179. package/dist/cli/commands/state/index.js +16 -0
  180. package/dist/cli/commands/state/list.js +194 -0
  181. package/dist/cli/commands/state/objective.js +25 -0
  182. package/dist/cli/commands/state/plan.js +14 -0
  183. package/dist/cli/commands/state/planTasks.js +154 -0
  184. package/dist/cli/commands/state/plans.js +154 -0
  185. package/dist/cli/commands/state/progress.js +13 -0
  186. package/dist/cli/commands/state/shared.js +14 -0
  187. package/dist/cli/commands/state/todo.js +42 -0
  188. package/dist/cli/commands/state/write.js +434 -0
  189. package/dist/cli/commands/upgrade.js +146 -5
  190. package/dist/cli/commands/upgradeVerify.js +118 -0
  191. package/dist/cli/commands/validate.js +272 -213
  192. package/dist/cli/commands/verify.js +24 -9
  193. package/dist/cli/contracts/bundleStatus.js +1 -0
  194. package/dist/cli/contracts/orientationState.js +1 -0
  195. package/dist/cli/dispatch/argvParser.js +32 -0
  196. package/dist/cli/dispatch/check.js +372 -0
  197. package/dist/cli/dispatch/commands.js +27 -0
  198. package/dist/cli/dispatch/index.js +207 -0
  199. package/dist/cli/dispatch/lifecycle.js +652 -0
  200. package/dist/cli/dispatch/prime.js +139 -0
  201. package/dist/cli/dispatch/projections.js +17 -0
  202. package/dist/cli/dispatch/shared.js +63 -0
  203. package/dist/cli/dispatch/state.js +140 -0
  204. package/dist/cli/dispatch.js +1 -996
  205. package/dist/cli/errors.js +52 -0
  206. package/dist/cli/help.js +390 -43
  207. package/dist/cli/migrationRequired.js +87 -0
  208. package/dist/cli/orientation/attention.js +59 -0
  209. package/dist/cli/orientation/corpusCoverage.js +102 -0
  210. package/dist/cli/orientation.js +444 -173
  211. package/dist/cli/planArtifacts.js +350 -0
  212. package/dist/cli/planEvidence.js +157 -0
  213. package/dist/cli/planLifecycleState.js +36 -0
  214. package/dist/cli/planTaskIndex.js +11 -0
  215. package/dist/cli/preCutoverCommand.js +32 -0
  216. package/dist/cli/prime-blob.js +71 -3
  217. package/dist/cli/profileAcquisition.js +167 -0
  218. package/dist/cli/startupCompletenessContract.js +59 -0
  219. package/dist/cli/stateQuery.js +63 -14
  220. package/dist/cli/structured.js +0 -1
  221. package/dist/cli/todoMarkdown.js +46 -0
  222. package/dist/cli/todoReadinessSelection.js +192 -0
  223. package/dist/cli/todoSeverity.js +18 -0
  224. package/dist/core/atomicWriter.js +20 -0
  225. package/dist/core/developmentChannel.js +1 -0
  226. package/dist/core/developmentInvocation.js +374 -0
  227. package/dist/core/difflib.js +0 -1
  228. package/dist/core/envPaths.js +20 -0
  229. package/dist/core/jsonValue.js +5 -0
  230. package/dist/core/paths.js +0 -1
  231. package/dist/core/pyjson.js +67 -3
  232. package/dist/core/shell.js +4 -0
  233. package/dist/core/skillIdentity.js +23 -0
  234. package/dist/core/sourceRoot.js +9 -12
  235. package/dist/core/text.js +10 -0
  236. package/dist/core/toml.js +0 -1
  237. package/dist/core/yaml.js +8 -1
  238. package/dist/eval/evalSkills.js +30 -26
  239. package/dist/eval/hybridRouteEvaluation.js +155 -0
  240. package/dist/eval/semanticEval.js +43 -20
  241. package/dist/eval/semanticFixtures.js +16 -5
  242. package/dist/hooks/common.js +11 -81
  243. package/dist/hooks/compaction/apply.js +446 -0
  244. package/dist/hooks/compaction/dryRun.js +184 -0
  245. package/dist/hooks/compaction/index.js +22 -0
  246. package/dist/hooks/compaction/parse.js +325 -0
  247. package/dist/hooks/compaction/retention.js +202 -0
  248. package/dist/hooks/compaction/status.js +360 -0
  249. package/dist/hooks/compaction/types.js +5 -0
  250. package/dist/hooks/validateArtifact/agentFacing.js +9 -0
  251. package/dist/hooks/validateArtifact/index.js +92 -0
  252. package/dist/hooks/validateArtifact/markdown.js +145 -0
  253. package/dist/hooks/validateArtifact/schema.js +546 -0
  254. package/dist/hooks/validateArtifact/traversal.js +107 -0
  255. package/dist/hooks/validateArtifact/violations.js +107 -0
  256. package/dist/migrate/v2HandoffManifest.js +452 -0
  257. package/dist/registries/activationContract.js +2 -0
  258. package/dist/registries/activationTuples.js +106 -0
  259. package/dist/registries/artifactProtocolIds.js +78 -0
  260. package/dist/registries/artifactRegistry.js +224 -63
  261. package/dist/registries/artifactSchemaProjection.js +45 -0
  262. package/dist/registries/capabilityContract.js +141 -13
  263. package/dist/registries/evaluatorHandoffContract.js +170 -0
  264. package/dist/registries/evidenceTierContract.js +371 -0
  265. package/dist/registries/glossaryAdviceContract.js +79 -0
  266. package/dist/registries/glossaryCaveatContract.js +67 -0
  267. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  268. package/dist/registries/glossaryEntryContract.js +757 -0
  269. package/dist/registries/glossaryTermIdentity.js +17 -0
  270. package/dist/registries/glossaryTermOccurrence.js +20 -0
  271. package/dist/registries/hybridRoute.js +274 -0
  272. package/dist/registries/hybridRouteReceipt.js +221 -0
  273. package/dist/registries/packagePublication.js +229 -0
  274. package/dist/registries/packageRegistry.js +187 -211
  275. package/dist/registries/todoReadinessContract.js +448 -0
  276. package/dist/registries/triggerLoader.js +174 -0
  277. package/dist/registries/verbosityBudgetContract.js +205 -0
  278. package/dist/release/releaseMetadata.js +385 -0
  279. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  280. package/dist/runtime/lifecycleAdapters.js +777 -0
  281. package/dist/runtime/lifecycleAuthority.js +453 -0
  282. package/dist/runtime/lifecycleOperationContract.js +123 -0
  283. package/dist/runtime/lifecycleOperations.js +634 -0
  284. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  285. package/dist/runtime/lifecyclePublication.js +415 -0
  286. package/dist/runtime/lifecycleSnapshot.js +438 -0
  287. package/dist/runtime/nativeResourceCleanup.js +502 -0
  288. package/dist/setup/opencode.js +20 -0
  289. package/dist/setup/opencodeConstants.js +1 -0
  290. package/dist/setup/sharedSkill.js +45 -0
  291. package/dist/setup/smokeChecks.js +21 -82
  292. package/dist/state/archiveDiscovery.js +580 -0
  293. package/dist/state/archivePublication.js +225 -0
  294. package/dist/state/archiveRecovery.js +237 -0
  295. package/dist/state/archiveReplay.js +53 -0
  296. package/dist/state/canonicalMigrationRecord.js +36 -0
  297. package/dist/state/changelog.js +221 -0
  298. package/dist/state/decisionEntities.js +367 -0
  299. package/dist/state/decisionLegacyValidation.js +215 -0
  300. package/dist/state/decisionMigrationProvenance.js +199 -0
  301. package/dist/state/decisionOverlay.js +254 -0
  302. package/dist/state/decisionRevision.js +256 -0
  303. package/dist/state/decisionRevisionMigration.js +89 -0
  304. package/dist/state/directRetrieval.js +323 -0
  305. package/dist/state/durability.js +324 -0
  306. package/dist/state/entityCutover.js +459 -0
  307. package/dist/state/entityCutoverGit.js +127 -0
  308. package/dist/state/entityGlossaryAuthority.js +13 -0
  309. package/dist/state/entityListProjection.js +187 -0
  310. package/dist/state/entityListRuntimeRegistry.js +85 -0
  311. package/dist/state/entityMigrationCausality.js +97 -0
  312. package/dist/state/entityMigrationIdentity.js +5 -0
  313. package/dist/state/entityMigrationPreview.js +846 -0
  314. package/dist/state/entityMigrationTodo.js +133 -0
  315. package/dist/state/entityPublicationContext.js +806 -0
  316. package/dist/state/entityRetrievalHelp.js +506 -0
  317. package/dist/state/entityStorage.js +896 -0
  318. package/dist/state/exactReplacementRecovery.js +18 -0
  319. package/dist/state/experimentArchive.js +63 -0
  320. package/dist/state/experimentIdentity.js +202 -0
  321. package/dist/state/healthEntities.js +262 -0
  322. package/dist/state/healthEntityValidation.js +18 -0
  323. package/dist/state/healthRepair.js +69 -0
  324. package/dist/state/installRoot.js +64 -25
  325. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  326. package/dist/state/legacyIdentity.js +47 -0
  327. package/dist/state/legacySummaryRecord.js +6 -0
  328. package/dist/state/listAccounting.js +54 -0
  329. package/dist/state/listClassification.js +17 -0
  330. package/dist/state/listCursor.js +42 -0
  331. package/dist/state/listRetrieval.js +781 -0
  332. package/dist/state/migrationSourceBinding.js +30 -0
  333. package/dist/state/objectiveExperimentEntities.js +322 -0
  334. package/dist/state/planEntities.js +530 -0
  335. package/dist/state/planIdentity.js +47 -0
  336. package/dist/state/planRetrieval.js +313 -0
  337. package/dist/state/planTaskRetrieval.js +294 -0
  338. package/dist/state/progressEntities.js +512 -0
  339. package/dist/state/progressGlossaryCaveat.js +168 -0
  340. package/dist/state/progressPublicationOrder.js +19 -0
  341. package/dist/state/projectRoot.js +62 -0
  342. package/dist/state/projectionPolicy.js +190 -0
  343. package/dist/state/retrievalAuthority.js +156 -0
  344. package/dist/state/safeProjectFile.js +155 -0
  345. package/dist/state/startupAnalysis/benchmark.js +432 -0
  346. package/dist/state/startupAnalysis/contract.js +160 -0
  347. package/dist/state/startupAnalysis/helpers.js +286 -0
  348. package/dist/state/startupAnalysis/index.js +6 -0
  349. package/dist/state/startupAnalysis/metrics.js +340 -0
  350. package/dist/state/startupAnalysis/records.js +198 -0
  351. package/dist/state/startupAnalysis/report.js +111 -0
  352. package/dist/state/startupAnalysis/threshold.js +512 -0
  353. package/dist/state/startupAnalysis.js +2 -1953
  354. package/dist/state/startupProjection.js +499 -0
  355. package/dist/state/stateMode.js +85 -0
  356. package/dist/state/stateStorageAuthority.js +47 -0
  357. package/dist/state/summaryEntityRead.js +25 -0
  358. package/dist/state/summaryMigrationProvenance.js +66 -0
  359. package/dist/state/summarySourceRowAuthority.js +36 -0
  360. package/dist/state/todoDocsEntities.js +1064 -0
  361. package/dist/state/todoDocsEntityValidation.js +158 -0
  362. package/dist/state/todoMarkdownProjection.js +51 -0
  363. package/dist/state/todoReconciliationActivation.js +132 -0
  364. package/dist/state/todoReconciliationInspection.js +173 -0
  365. package/dist/state/todoReconciliationRepair.js +170 -0
  366. package/dist/state/todoReconciliationTransaction.js +582 -0
  367. package/dist/state/write/assign.js +20 -0
  368. package/dist/state/write/candidateMutation.js +269 -0
  369. package/dist/state/write/errors.js +11 -0
  370. package/dist/state/write/experimentPublication.js +192 -0
  371. package/dist/state/write/explain.js +332 -0
  372. package/dist/state/write/fields.js +61 -0
  373. package/dist/state/write/glossaryPublication.js +263 -0
  374. package/dist/state/write/grammar.js +280 -0
  375. package/dist/state/write/helpers.js +29 -0
  376. package/dist/state/write/index.js +12 -0
  377. package/dist/state/write/input.js +367 -0
  378. package/dist/state/write/lock.js +837 -0
  379. package/dist/state/write/mutation.js +234 -0
  380. package/dist/state/write/operations.js +169 -0
  381. package/dist/state/write/planEvaluation.js +128 -0
  382. package/dist/state/write/planPublication.js +179 -0
  383. package/dist/state/write/runtimeOperations.js +142 -0
  384. package/dist/state/write/serialize.js +1 -0
  385. package/dist/state/write/transaction.js +52 -0
  386. package/dist/state/write/validate.js +7 -0
  387. package/dist/upgrade/appContentRefresh.js +383 -0
  388. package/dist/upgrade/appModel.js +8 -7
  389. package/dist/upgrade/atomicWriter.js +1 -0
  390. package/dist/upgrade/bundleEvidence.js +33 -0
  391. package/dist/upgrade/channels.js +12 -8
  392. package/dist/upgrade/compatibility.js +56 -21
  393. package/dist/upgrade/doctor.js +197 -192
  394. package/dist/upgrade/doctorClassifier.js +187 -0
  395. package/dist/upgrade/installedHooksRetirement.js +196 -0
  396. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  397. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  398. package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
  399. package/dist/upgrade/migrationPublication.js +122 -0
  400. package/dist/upgrade/nextMajorDoctor.js +155 -0
  401. package/dist/upgrade/npxPlatformStatus.js +22 -0
  402. package/dist/upgrade/projectIntegration.js +145 -187
  403. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  404. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  405. package/dist/upgrade/runtimeMigration.js +278 -352
  406. package/dist/upgrade/upgradeCommands.js +14 -1
  407. package/dist/upgrade/upgradeLock.js +85 -0
  408. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  409. package/dist/upgrade/v3CapabilitySurface.js +14 -0
  410. package/dist/upgrade/versionResolution.js +12 -5
  411. package/dist/validate/activationArtifactEvidence.js +844 -0
  412. package/dist/validate/activationConjunction.js +816 -0
  413. package/dist/validate/activationEvidenceManifest.js +515 -0
  414. package/dist/validate/activationPackageSemantics.js +29 -0
  415. package/dist/validate/appHomeContract.js +5 -11
  416. package/dist/validate/bootstrapAuthority.js +44 -0
  417. package/dist/validate/capability.js +144 -15
  418. package/dist/validate/crossCapability.js +15 -10
  419. package/dist/validate/retainedReferenceAuthority.js +879 -0
  420. package/dist/validate/selfAudit.js +73 -37
  421. package/dist/validate/v1LegacyCruft.js +131 -0
  422. package/dist/validate/vocabularyAuthority.js +303 -0
  423. package/package.json +53 -27
  424. package/bundle/references/adapters/cursor.md +0 -213
  425. package/bundle/references/adapters/opencode.md +0 -530
  426. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  427. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  428. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  429. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  430. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  431. package/bundle/references/analysis/benchmark.md +0 -267
  432. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  433. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  434. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
  435. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
  436. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  437. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  438. package/bundle/references/meta/documentation-inventory.md +0 -43
  439. package/bundle/references/v1-section-mapping.md +0 -47
  440. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  441. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  442. package/bundle/skills/agentera/agents/hej.toml +0 -6
  443. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  444. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  445. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  446. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  447. package/bundle/skills/agentera/agents/planera.toml +0 -6
  448. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  449. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  450. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  451. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  452. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  453. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  454. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  455. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  456. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  457. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  458. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  459. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  460. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  461. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  462. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  463. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  464. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  465. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  466. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  467. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  468. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -107
  471. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  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/instructions.md +0 -419
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  478. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  479. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  481. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  482. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  483. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  484. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  485. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  486. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  487. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  488. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  489. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  490. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  491. package/bundle/skills/agentera/references/contract.md +0 -1039
  492. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  493. package/bundle/skills/hej/SKILL.md +0 -69
  494. package/bundle/skills/hej/agents/hej.toml +0 -11
  495. package/bundle/skills/hej/agents/openai.yaml +0 -8
  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/cli/appContext.js.map +0 -1
  500. package/dist/cli/argvalidate.js.map +0 -1
  501. package/dist/cli/capabilityContext.js.map +0 -1
  502. package/dist/cli/commands/backfill.js +0 -84
  503. package/dist/cli/commands/backfill.js.map +0 -1
  504. package/dist/cli/commands/capability.js.map +0 -1
  505. package/dist/cli/commands/compact.js.map +0 -1
  506. package/dist/cli/commands/doctor.js.map +0 -1
  507. package/dist/cli/commands/lint.js.map +0 -1
  508. package/dist/cli/commands/prime.js.map +0 -1
  509. package/dist/cli/commands/query.js.map +0 -1
  510. package/dist/cli/commands/report.js.map +0 -1
  511. package/dist/cli/commands/schema.js.map +0 -1
  512. package/dist/cli/commands/state.js +0 -1012
  513. package/dist/cli/commands/state.js.map +0 -1
  514. package/dist/cli/commands/upgrade.js.map +0 -1
  515. package/dist/cli/commands/validate.js.map +0 -1
  516. package/dist/cli/commands/verify.js.map +0 -1
  517. package/dist/cli/dispatch.js.map +0 -1
  518. package/dist/cli/help.js.map +0 -1
  519. package/dist/cli/orientation.js.map +0 -1
  520. package/dist/cli/prime-blob.js.map +0 -1
  521. package/dist/cli/stateQuery.js.map +0 -1
  522. package/dist/cli/structured.js.map +0 -1
  523. package/dist/core/difflib.js.map +0 -1
  524. package/dist/core/git.js +0 -43
  525. package/dist/core/git.js.map +0 -1
  526. package/dist/core/paths.js.map +0 -1
  527. package/dist/core/pyjson.js.map +0 -1
  528. package/dist/core/sourceRoot.js.map +0 -1
  529. package/dist/core/toml.js.map +0 -1
  530. package/dist/core/yaml.js.map +0 -1
  531. package/dist/eval/evalSkills.js.map +0 -1
  532. package/dist/eval/semanticEval.js.map +0 -1
  533. package/dist/eval/semanticFixtures.js.map +0 -1
  534. package/dist/hooks/common.js.map +0 -1
  535. package/dist/hooks/compaction.js +0 -935
  536. package/dist/hooks/compaction.js.map +0 -1
  537. package/dist/hooks/cursorPreToolUse.js +0 -19
  538. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  539. package/dist/hooks/cursorSessionStart.js +0 -71
  540. package/dist/hooks/cursorSessionStart.js.map +0 -1
  541. package/dist/hooks/sessionStart.js +0 -209
  542. package/dist/hooks/sessionStart.js.map +0 -1
  543. package/dist/hooks/sessionStop.js +0 -212
  544. package/dist/hooks/sessionStop.js.map +0 -1
  545. package/dist/hooks/validateArtifact.js +0 -933
  546. package/dist/hooks/validateArtifact.js.map +0 -1
  547. package/dist/registries/artifactRegistry.js.map +0 -1
  548. package/dist/registries/capabilityContract.js.map +0 -1
  549. package/dist/registries/packageRegistry.js.map +0 -1
  550. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  551. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  552. package/dist/setup/codex.js +0 -1056
  553. package/dist/setup/codex.js.map +0 -1
  554. package/dist/setup/copilot.js +0 -227
  555. package/dist/setup/copilot.js.map +0 -1
  556. package/dist/setup/cursor.js +0 -127
  557. package/dist/setup/cursor.js.map +0 -1
  558. package/dist/setup/doctor.js +0 -1297
  559. package/dist/setup/doctor.js.map +0 -1
  560. package/dist/setup/smokeChecks.js.map +0 -1
  561. package/dist/state/installRoot.js.map +0 -1
  562. package/dist/state/progressCommit.js +0 -289
  563. package/dist/state/progressCommit.js.map +0 -1
  564. package/dist/state/startupAnalysis.js.map +0 -1
  565. package/dist/upgrade/appModel.js.map +0 -1
  566. package/dist/upgrade/channels.js.map +0 -1
  567. package/dist/upgrade/compatibility.js.map +0 -1
  568. package/dist/upgrade/doctor.js.map +0 -1
  569. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -571
  570. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  571. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  572. package/dist/upgrade/projectIntegration.js.map +0 -1
  573. package/dist/upgrade/runtimeMigration.js.map +0 -1
  574. package/dist/upgrade/upgradeCommands.js.map +0 -1
  575. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  576. package/dist/upgrade/versionResolution.js.map +0 -1
  577. package/dist/validate/appHomeContract.js.map +0 -1
  578. package/dist/validate/capability.js.map +0 -1
  579. package/dist/validate/crossCapability.js.map +0 -1
  580. package/dist/validate/lifecycleAdapters.js +0 -772
  581. package/dist/validate/lifecycleAdapters.js.map +0 -1
  582. package/dist/validate/selfAudit.js.map +0 -1
  583. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  584. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  585. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -1,7 +1,16 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
+ import { resolveSourceRoot } from "../core/sourceRoot.js";
3
4
  import { loadYamlMapping } from "../core/yaml.js";
4
5
  import { loadCapabilitySchemaContract, } from "../registries/capabilityContract.js";
6
+ /**
7
+ * Validate a capability directory against the capability schema contract.
8
+ * Faithful TS port of scripts/validate_capability.py.
9
+ *
10
+ * Note: YAML integer keys (`1:`) parse to JS string keys ("1"); numeric-key
11
+ * detection uses a digit regex, which matches Python's `isinstance(key, int)`
12
+ * for all real (bare-integer) schema keys.
13
+ */
5
14
  export const PROTOCOL_GROUPS = [
6
15
  "CONFIDENCE_SCALE",
7
16
  "SEVERITY_FINDING",
@@ -41,13 +50,13 @@ function pyListRepr(values) {
41
50
  return "[" + values.map((v) => `'${v}'`).join(", ") + "]";
42
51
  }
43
52
  export function loadContract(contractPath) {
44
- return loadYamlMapping(fs.readFileSync(contractPath, "utf8"));
53
+ return loadYamlMapping(fs.readFileSync(contractPath, "utf8")); // cast: YAML parse IO boundary
45
54
  }
46
55
  export function loadSchemaFile(p) {
47
- return loadYamlMapping(fs.readFileSync(p, "utf8"));
56
+ return loadYamlMapping(fs.readFileSync(p, "utf8")); // cast: YAML parse IO boundary
48
57
  }
49
58
  export function loadProtocol(protocolPath) {
50
- return loadYamlMapping(fs.readFileSync(protocolPath, "utf8"));
59
+ return loadYamlMapping(fs.readFileSync(protocolPath, "utf8")); // cast: YAML parse IO boundary
51
60
  }
52
61
  function listSchemaFiles(schemasDir, glob) {
53
62
  // Agentera schema globs are always "*.yaml"; match on suffix.
@@ -71,7 +80,7 @@ export function collectSchemaGroups(schemasDir, requiredGroups, schemaGlob = "*.
71
80
  combined[groupName] = {};
72
81
  }
73
82
  if (isMapping(groupData)) {
74
- Object.assign(combined[groupName], groupData);
83
+ Object.assign(combined[groupName], groupData); // cast: parsed schema IO data
75
84
  }
76
85
  }
77
86
  }
@@ -81,11 +90,18 @@ export function collectSchemaGroups(schemasDir, requiredGroups, schemaGlob = "*.
81
90
  export function checkDirectoryStructure(capDir, contract) {
82
91
  const errors = [];
83
92
  const directoryRules = contract.directoryRules;
84
- const prose = path.join(capDir, directoryRules.instructionPath);
85
93
  const schemas = path.join(capDir, directoryRules.schemasPath);
86
- const isFile = fs.existsSync(prose) && fs.statSync(prose).isFile();
94
+ // The instruction module path is a repo-relative path under
95
+ // packages/cli/src/capabilities/<name>/instructions.ts (D65). Resolve the
96
+ // capability name from the capDir (last path segment) and look up the
97
+ // module against the resolved Agentera source root, not the capDir.
98
+ const capabilityName = path.basename(capDir);
99
+ const instructionModulePath = (directoryRules.instructionModulePath ?? directoryRules.instructionPath).replace(/<name>/g, capabilityName);
100
+ const sourceRoot = resolveSourceRoot();
101
+ const instructionModuleAbs = path.join(sourceRoot, instructionModulePath);
102
+ const isFile = fs.existsSync(instructionModuleAbs) && fs.statSync(instructionModuleAbs).isFile();
87
103
  if (!isFile) {
88
- errors.push(`V1 [error]: ${directoryRules.instructionPath} not found in ${capDir}`);
104
+ errors.push(`V1 [error]: ${instructionModulePath} not found in ${capDir}`);
89
105
  }
90
106
  const isDir = fs.existsSync(schemas) && fs.statSync(schemas).isDirectory();
91
107
  if (!isDir) {
@@ -165,13 +181,125 @@ export function checkTriggerPriorities(groups, sourceLabel, contract) {
165
181
  if (priority === null && priorityRules.required) {
166
182
  errors.push(`V5b [error]: TRIGGERS entry ${key} in ${sourceLabel} missing 'priority'`);
167
183
  }
168
- else if (priority !== null && !priorityRules.allowedValues.includes(priority)) {
184
+ else if (priority !== null && !priorityRules.allowedValues.includes(priority)) { // cast: parsed schema IO data
169
185
  errors.push(`V5b [error]: TRIGGERS entry ${key} in ${sourceLabel} has invalid priority=${valueRepr(priority)} ` +
170
186
  `(must be one of: ${priorityRules.allowedValues.join(", ")})`);
171
187
  }
172
188
  }
173
189
  return errors;
174
190
  }
191
+ /**
192
+ * V7 trigger-entry enrichment validation. Enforces the four optional fields
193
+ * declared in TRIGGER_ENRICHMENT in capability_schema_contract.yaml. Every
194
+ * field is OPTIONAL; a triggers.yaml entry that omits all compatibility fields
195
+ * passes. The hybrid route contract limits these fields to the semantic phase
196
+ * after deterministic abstention while this validator preserves legacy
197
+ * enriched-file compatibility. Error messages include the
198
+ * valid range/value and the offending entry ID so authors can locate the
199
+ * violation without grepping the contract.
200
+ */
201
+ export function checkTriggerEnrichment(groups, sourceLabel, contract) {
202
+ const errors = [];
203
+ const triggers = groups.TRIGGERS ?? {};
204
+ if (!isMapping(triggers)) {
205
+ return errors;
206
+ }
207
+ const enrichment = contract.triggerEnrichment;
208
+ const confidenceField = enrichment.fields.confidence_threshold;
209
+ const borderlineField = enrichment.fields.borderline_band;
210
+ const allowedIds = enrichment.allowedCapabilityIds;
211
+ for (const [key, entry] of Object.entries(triggers)) {
212
+ if (!isMapping(entry)) {
213
+ continue;
214
+ }
215
+ const entryId = entry.id ?? key;
216
+ const location = `TRIGGERS entry ${key} (${entryId}) in ${sourceLabel}`;
217
+ if (entry.patterns !== undefined) {
218
+ const value = entry.patterns;
219
+ if (!Array.isArray(value) || !value.every((pattern) => typeof pattern === "string")) {
220
+ errors.push(`V7 [error]: ${location} has patterns=${valueRepr(value)} ` +
221
+ `(must be a list of strings)`);
222
+ }
223
+ }
224
+ if (entry.confidence_threshold !== undefined) {
225
+ const value = entry.confidence_threshold;
226
+ const min = confidenceField.min ?? 0;
227
+ const max = confidenceField.max ?? 100;
228
+ if (typeof value !== "number" ||
229
+ !Number.isInteger(value) ||
230
+ value < min ||
231
+ value > max) {
232
+ errors.push(`V7 [error]: ${location} has confidence_threshold=${valueRepr(value)} ` +
233
+ `(must be an integer in range ${min}..${max})`);
234
+ }
235
+ }
236
+ if (entry.borderline_band !== undefined) {
237
+ const value = entry.borderline_band;
238
+ const min = borderlineField.min ?? 0;
239
+ const max = borderlineField.max ?? 100;
240
+ if (typeof value !== "number" ||
241
+ !Number.isInteger(value) ||
242
+ value < min ||
243
+ value > max) {
244
+ errors.push(`V7 [error]: ${location} has borderline_band=${valueRepr(value)} ` +
245
+ `(must be an integer in range ${min}..${max})`);
246
+ }
247
+ }
248
+ if (entry.patterns_regex !== undefined) {
249
+ const value = entry.patterns_regex;
250
+ if (!Array.isArray(value)) {
251
+ errors.push(`V7 [error]: ${location} has patterns_regex=${valueRepr(value)} ` +
252
+ `(must be a list of regex strings)`);
253
+ }
254
+ else {
255
+ for (let i = 0; i < value.length; i++) {
256
+ const pattern = value[i];
257
+ if (typeof pattern !== "string") {
258
+ errors.push(`V7 [error]: ${location} patterns_regex[${i}] is not a string`);
259
+ continue;
260
+ }
261
+ try {
262
+ new RegExp(pattern);
263
+ }
264
+ catch {
265
+ errors.push(`V7 [error]: ${location} patterns_regex[${i}]=${valueRepr(pattern)} ` +
266
+ `is not a valid regular expression`);
267
+ }
268
+ }
269
+ }
270
+ }
271
+ if (entry.disambiguates_against !== undefined) {
272
+ const value = entry.disambiguates_against;
273
+ if (!Array.isArray(value)) {
274
+ errors.push(`V7 [error]: ${location} has disambiguates_against=${valueRepr(value)} ` +
275
+ `(must be a list of mappings each with 'capability' and 'hint')`);
276
+ continue;
277
+ }
278
+ for (let i = 0; i < value.length; i++) {
279
+ const item = value[i];
280
+ if (!isMapping(item)) {
281
+ errors.push(`V7 [error]: ${location} disambiguates_against[${i}] must be a mapping with 'capability' and 'hint'`);
282
+ continue;
283
+ }
284
+ const capability = item.capability;
285
+ if (typeof capability !== "string" || !capability) {
286
+ errors.push(`V7 [error]: ${location} disambiguates_against[${i}] missing 'capability' ` +
287
+ `(must be one of: ${allowedIds.join(", ")})`);
288
+ }
289
+ else if (!allowedIds.includes(capability)) {
290
+ errors.push(`V7 [error]: ${location} disambiguates_against[${i}].capability=${valueRepr(capability)} ` +
291
+ `is not a canonical capability ID (must be one of: ${allowedIds.join(", ")})`);
292
+ }
293
+ const hint = item.hint;
294
+ if (typeof hint !== "string" || hint.trim() === "") {
295
+ errors.push(`V7 [error]: ${location} disambiguates_against[${i}] missing or empty 'hint' ` +
296
+ `(must be a non-empty string distinguishing this trigger from the named capability)`);
297
+ }
298
+ }
299
+ }
300
+ }
301
+ return errors;
302
+ }
175
303
  export function checkDeprecation(groups, sourceLabel, contract) {
176
304
  const warnings = [];
177
305
  const markerField = contract.deprecationRules.marker_field;
@@ -225,6 +353,7 @@ export function validateContractSelf(contractPath) {
225
353
  errors.push(...checkNumberedEntries(groups, contractPath, contract));
226
354
  errors.push(...checkStableIds(groups, contractPath, contract));
227
355
  errors.push(...checkTriggerPriorities(groups, contractPath, contract));
356
+ errors.push(...checkTriggerEnrichment(groups, contractPath, contract));
228
357
  for (const w of checkDeprecation(groups, contractPath, contract)) {
229
358
  process.stderr.write(w + "\n");
230
359
  }
@@ -241,6 +370,7 @@ export function validateCapability(capDir, contractPath) {
241
370
  allErrors.push(...checkNumberedEntries(groups, capDir, contract));
242
371
  allErrors.push(...checkStableIds(groups, capDir, contract));
243
372
  allErrors.push(...checkTriggerPriorities(groups, capDir, contract));
373
+ allErrors.push(...checkTriggerEnrichment(groups, capDir, contract));
244
374
  for (const w of checkDeprecation(groups, capDir, contract)) {
245
375
  process.stderr.write(w + "\n");
246
376
  }
@@ -260,7 +390,7 @@ export function buildProtocolValueLookup(protocolData) {
260
390
  continue;
261
391
  }
262
392
  if ("value" in entry) {
263
- values.add(entry.value);
393
+ values.add(entry.value); // cast: parsed protocol IO data
264
394
  }
265
395
  }
266
396
  if (values.size > 0) {
@@ -282,7 +412,7 @@ export function checkProtocolStructure(protocolData, sourceLabel) {
282
412
  errors.push(`[error]: group ${groupName} missing in ${sourceLabel}`);
283
413
  continue;
284
414
  }
285
- const expectedPrefix = prefixes[groupName] ?? "";
415
+ const expectedPrefix = (prefixes[groupName] ?? ""); // cast: parsed protocol IO data
286
416
  const validIds = new Set();
287
417
  for (const [key, entry] of Object.entries(group)) {
288
418
  if (!isNumericKey(key)) {
@@ -314,7 +444,7 @@ export function checkProtocolStructure(protocolData, sourceLabel) {
314
444
  errors.push(`[warning]: entry ${key} (${entry.id ?? "?"}) ` +
315
445
  `in ${groupName} is deprecated but has no replaced_by`);
316
446
  }
317
- else if (!validIds.has(replaced)) {
447
+ else if (!validIds.has(replaced)) { // cast: parsed protocol IO data
318
448
  errors.push(`[warning]: entry ${key} (${entry.id ?? "?"}) ` +
319
449
  `in ${groupName} has replaced_by=${valueRepr(replaced)} ` +
320
450
  `which does not match any entry ID`);
@@ -334,14 +464,14 @@ export function checkPhaseTransitions(protocolData, sourceLabel) {
334
464
  const phaseValues = new Set();
335
465
  for (const [key, entry] of Object.entries(phasesGroup)) {
336
466
  if (isNumericKey(key) && isMapping(entry) && "value" in entry) {
337
- phaseValues.add(entry.value);
467
+ phaseValues.add(entry.value); // cast: parsed protocol IO data
338
468
  }
339
469
  }
340
470
  for (const [key, entry] of Object.entries(phasesGroup)) {
341
471
  if (!isNumericKey(key) || !isMapping(entry)) {
342
472
  continue;
343
473
  }
344
- const successors = entry.valid_successors ?? [];
474
+ const successors = (entry.valid_successors ?? []); // cast: parsed protocol IO data
345
475
  const entryId = entry.id ?? `entry ${key}`;
346
476
  for (const s of successors) {
347
477
  if (!phaseValues.has(s)) {
@@ -392,7 +522,7 @@ export function checkPrimitiveReferences(capDir, protocolPath, contractPath = "s
392
522
  for (const v of valuesToCheck) {
393
523
  let resolved = false;
394
524
  for (const pg of protocolGroups) {
395
- if (pg in lookup && lookup[pg].has(v)) {
525
+ if (pg in lookup && lookup[pg].has(v)) { // cast: parsed schema/protocol IO data
396
526
  resolved = true;
397
527
  break;
398
528
  }
@@ -409,4 +539,3 @@ export function checkPrimitiveReferences(capDir, protocolPath, contractPath = "s
409
539
  }
410
540
  return errors;
411
541
  }
412
- //# sourceMappingURL=capability.js.map
@@ -2,21 +2,22 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { loadYamlMapping } from "../core/yaml.js";
4
4
  import { resolveSourceRoot } from "../core/sourceRoot.js";
5
- import { artifactSchemasDir as defaultArtifactSchemasDir, loadArtifactRegistry, } from "../registries/artifactRegistry.js";
5
+ import { artifactSchemasDir as defaultArtifactSchemasDir, loadArtifactRegistry, registryModelPath as defaultRegistryModelPath, } from "../registries/artifactRegistry.js";
6
6
  function capabilitiesDirDefault() {
7
7
  return path.join(resolveSourceRoot(), "skills", "agentera", "capabilities");
8
8
  }
9
9
  function loadYaml(p) {
10
- return loadYamlMapping(fs.readFileSync(p, "utf8"));
10
+ return loadYamlMapping(fs.readFileSync(p, "utf8")); // cast: YAML parse IO boundary
11
11
  }
12
- export function loadCanonicalArtifacts(artifactSchemasDir = defaultArtifactSchemasDir()) {
12
+ export function loadCanonicalArtifacts(artifactSchemasDir = defaultArtifactSchemasDir(), registryModelPathArg = defaultRegistryModelPath()) {
13
13
  const out = new Map();
14
- for (const [artifactId, record] of loadArtifactRegistry(artifactSchemasDir)) {
14
+ for (const [artifactId, record] of loadArtifactRegistry(artifactSchemasDir, registryModelPathArg)) {
15
15
  out.set(artifactId, {
16
16
  artifactId: record.artifactId,
17
17
  displayName: record.displayName,
18
18
  producers: record.producers,
19
19
  consumers: record.consumers,
20
+ implementationStatus: record.implementationStatus,
20
21
  });
21
22
  }
22
23
  return out;
@@ -47,7 +48,7 @@ export function loadCapabilityArtifacts(capabilitiesDir = capabilitiesDirDefault
47
48
  continue;
48
49
  }
49
50
  const e = entry;
50
- const artifactId = String(e.artifact_id ?? "").trim();
51
+ const artifactId = String(e.artifact ?? "").trim();
51
52
  const localRole = String(e.local_role ?? "").trim();
52
53
  if (!artifactId) {
53
54
  continue;
@@ -102,9 +103,12 @@ function sortedListRepr(s) {
102
103
  const arr = [...s].sort();
103
104
  return "[" + arr.map((v) => `'${v}'`).join(", ") + "]";
104
105
  }
105
- export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(), capabilitiesDir = capabilitiesDirDefault()) {
106
- const registry = loadArtifactRegistry(artifactSchemasDir);
107
- const canonical = loadCanonicalArtifacts(artifactSchemasDir);
106
+ export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(), capabilitiesDir = capabilitiesDirDefault(), registryModelPathArg = defaultRegistryModelPath()) {
107
+ // Thread the same model path into both registry loads so a synthetic
108
+ // test fixture (or a non-default install) resolves the same identity set in
109
+ // the canonical map and the dependency-graph walk below.
110
+ const registry = loadArtifactRegistry(artifactSchemasDir, registryModelPathArg);
111
+ const canonical = loadCanonicalArtifacts(artifactSchemasDir, registryModelPathArg);
108
112
  const capabilityArtifacts = loadCapabilityArtifacts(capabilitiesDir);
109
113
  const capabilityNames = new Set(listCapabilityDirs(capabilitiesDir));
110
114
  const errors = [];
@@ -116,7 +120,7 @@ export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(),
116
120
  byArtifactId.get(record.artifactId).push(record);
117
121
  const name = displayName(record, registry);
118
122
  if (!canonical.has(record.artifactId)) {
119
- errors.push(`${record.capability}: unknown artifact_id '${record.artifactId}'`);
123
+ errors.push(`${record.capability}: unknown artifact '${record.artifactId}'`);
120
124
  continue;
121
125
  }
122
126
  if (record.producers.size === 0 && record.consumers.size === 0) {
@@ -124,6 +128,8 @@ export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(),
124
128
  }
125
129
  }
126
130
  for (const [artifactId, artifact] of canonical) {
131
+ if (artifact.implementationStatus === "declared_deferred")
132
+ continue;
127
133
  const records = byArtifactId.get(artifactId) ?? [];
128
134
  const producedBy = records.length ? unionSets(records.map((r) => r.producers)) : new Set();
129
135
  const consumedBy = records.length ? unionSets(records.map((r) => r.consumers)) : new Set();
@@ -142,4 +148,3 @@ export function validateGraph(artifactSchemasDir = defaultArtifactSchemasDir(),
142
148
  }
143
149
  return errors;
144
150
  }
145
- //# sourceMappingURL=crossCapability.js.map