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
@@ -2,19 +2,24 @@ import fs from "node:fs";
2
2
  import path from "node:path";
3
3
  import { spawnSync } from "node:child_process";
4
4
  import { resolveSourceRoot } from "../core/sourceRoot.js";
5
+ /**
6
+ * Tier 2 eval runner for agentera skill smoke testing. Faithful TS port of
7
+ * scripts/eval_skills.py. Crash/error detection only; output correctness is not
8
+ * evaluated. `which`/`run` are injectable for deterministic testing.
9
+ */
5
10
  export const TRIGGER_PROMPTS = {
6
- dokumentera: "Audit the documentation for this project.",
7
- hej: "Start a new session and give me a status briefing on this project.",
8
- inspektera: "Run a codebase health audit.",
9
- inspirera: "Analyze https://example.com and map patterns to this project.",
10
- optimera: "Optimize test suite execution time.",
11
- orkestrera: "Execute the next cycle of the current plan.",
12
- planera: "Plan the next feature for this project.",
13
- profilera: "Generate a decision profile from session history.",
14
- realisera: "Run one autonomous development cycle.",
15
- resonera: "Deliberate on whether to add a new dependency.",
16
- visionera: "Create a vision document for this project.",
17
- visualisera: "Create a visual identity system for this project.",
11
+ document: "Audit the documentation for this project.",
12
+ status: "Start a new session and give me a status briefing on this project.",
13
+ audit: "Run a codebase health audit.",
14
+ research: "Analyze https://example.com and map patterns to this project.",
15
+ optimize: "Optimize test suite execution time.",
16
+ orchestrate: "Execute the next cycle of the current plan.",
17
+ plan: "Plan the next feature for this project.",
18
+ profile: "Generate a decision profile from session history.",
19
+ build: "Run one autonomous development cycle.",
20
+ discuss: "Deliberate on whether to add a new dependency.",
21
+ vision: "Create a vision document for this project.",
22
+ design: "Create a visual identity system for this project.",
18
23
  };
19
24
  export const DEFAULT_TIMEOUT = 120;
20
25
  export const DEFAULT_PARALLEL = 1;
@@ -36,7 +41,11 @@ export function detectRuntime(explicit, opts = {}) {
36
41
  const which = opts.which ?? realWhich;
37
42
  const err = opts.err ?? ((line) => process.stderr.write(line + "\n"));
38
43
  if (explicit && explicit !== "auto") {
39
- if (explicit === "cursor-agent") {
44
+ if (explicit !== "opencode" && explicit !== "cursor") {
45
+ err(`ERROR: '${explicit}' is not an active eval runtime; choose opencode or cursor.`);
46
+ throw new ExitError(1);
47
+ }
48
+ if (explicit === "cursor") {
40
49
  if (which("cursor-agent") === null && which("agent") === null) {
41
50
  err("ERROR: 'cursor-agent' not found on PATH. Install Cursor Agent CLI " +
42
51
  "and ensure the binary is accessible.");
@@ -45,17 +54,14 @@ export function detectRuntime(explicit, opts = {}) {
45
54
  }
46
55
  return explicit;
47
56
  }
48
- const hasClaude = which("claude") !== null;
49
57
  const hasOpencode = which("opencode") !== null;
50
58
  const hasCursorAgent = which("cursor-agent") !== null || which("agent") !== null;
51
- if (hasClaude)
52
- return "claude";
53
59
  if (hasOpencode)
54
60
  return "opencode";
55
61
  if (hasCursorAgent)
56
- return "cursor-agent";
57
- err("ERROR: Neither 'claude', 'opencode', nor 'cursor-agent' found on PATH. " +
58
- "Install a supported runtime host and ensure the binary is accessible.");
62
+ return "cursor";
63
+ err("ERROR: Neither the OpenCode nor Cursor eval surface was found on PATH. " +
64
+ "Install an active eval runtime host and ensure the binary is accessible.");
59
65
  throw new ExitError(1);
60
66
  }
61
67
  export function parseFrontmatterName(text) {
@@ -103,7 +109,7 @@ const realRun = (cmd, opts) => {
103
109
  timedOut: result.signal === "SIGTERM" && result.error !== undefined,
104
110
  };
105
111
  };
106
- export function invokeSkill(name, prompt, timeout, runtime = "claude", opts = {}) {
112
+ export function invokeSkill(name, prompt, timeout, runtime = "opencode", opts = {}) {
107
113
  const which = opts.which ?? realWhich;
108
114
  const run = opts.run ?? realRun;
109
115
  const repoRoot = opts.repoRoot ?? resolveSourceRoot();
@@ -113,14 +119,13 @@ export function invokeSkill(name, prompt, timeout, runtime = "claude", opts = {}
113
119
  cmd = ["opencode", "run", "--prompt"];
114
120
  stdinPrompt = prompt;
115
121
  }
116
- else if (runtime === "cursor-agent") {
122
+ else if (runtime === "cursor") {
117
123
  const binary = which("cursor-agent") ? "cursor-agent" : "agent";
118
124
  cmd = [binary, "-p", "--output-format", "json", "--force", prompt];
119
125
  stdinPrompt = null;
120
126
  }
121
127
  else {
122
- cmd = ["claude", "-p", "--output-format", "json"];
123
- stdinPrompt = prompt;
128
+ throw new ExitError(1, `unsupported active eval runtime: ${runtime}`);
124
129
  }
125
130
  const start = Date.now();
126
131
  let error = null;
@@ -163,7 +168,7 @@ export function invokeSkill(name, prompt, timeout, runtime = "claude", opts = {}
163
168
  error,
164
169
  };
165
170
  }
166
- export function runSkills(skills, timeout, _parallel, runtime = "claude", opts = {}) {
171
+ export function runSkills(skills, timeout, _parallel, runtime = "opencode", opts = {}) {
167
172
  // Parallelism in the Python runner is a maintainer perf detail; the smoke
168
173
  // semantics (one result per skill, original order) are preserved sequentially.
169
174
  return skills.map((entry) => invokeSkill(entry.name, entry.prompt, timeout, runtime, opts));
@@ -179,7 +184,7 @@ export function buildReport(results) {
179
184
  results,
180
185
  };
181
186
  }
182
- export function buildDryRun(skills, runtime = "claude", runtimeSource = "auto-detected") {
187
+ export function buildDryRun(skills, runtime = "opencode", runtimeSource = "auto-detected") {
183
188
  return {
184
189
  mode: "dry-run",
185
190
  runtime: `${runtime} (${runtimeSource})`,
@@ -255,4 +260,3 @@ export function parseArgs(argv) {
255
260
  }
256
261
  return args;
257
262
  }
258
- //# sourceMappingURL=evalSkills.js.map
@@ -0,0 +1,155 @@
1
+ import crypto from "node:crypto";
2
+ import fs from "node:fs";
3
+ import path from "node:path";
4
+ import { loadYamlMapping } from "../core/yaml.js";
5
+ import { resolveSourceRoot } from "../core/sourceRoot.js";
6
+ import { resolveRouteRequest } from "../registries/hybridRoute.js";
7
+ import { validateRouteReceiptSubmission } from "../registries/hybridRouteReceipt.js";
8
+ function mapping(value, source) {
9
+ if (value === null || typeof value !== "object" || Array.isArray(value))
10
+ throw new Error(`${source} must be a mapping`);
11
+ return value;
12
+ }
13
+ function requiredString(value, source) {
14
+ if (typeof value !== "string" || !value)
15
+ throw new Error(`${source} must be a non-empty string`);
16
+ return value;
17
+ }
18
+ function cases(value, source) {
19
+ if (!Array.isArray(value))
20
+ throw new Error(`${source} must be a list`);
21
+ return value;
22
+ }
23
+ function elapsedMs(start) {
24
+ return Number(process.hrtime.bigint() - start) / 1_000_000;
25
+ }
26
+ function percentile(values) {
27
+ if (values.length === 0)
28
+ return null;
29
+ const sorted = [...values].sort((left, right) => left - right);
30
+ return sorted[Math.ceil(sorted.length * 0.95) - 1];
31
+ }
32
+ function hashFile(file) {
33
+ return crypto.createHash("sha256").update(fs.readFileSync(file)).digest("hex");
34
+ }
35
+ function nullableFixtureReceipt(receipt) {
36
+ return {
37
+ version: null,
38
+ request_sha256: null,
39
+ semantic_capsule_sha256: null,
40
+ outcome: null,
41
+ capability: null,
42
+ compound: null,
43
+ question: null,
44
+ remainder_span: null,
45
+ ...receipt,
46
+ };
47
+ }
48
+ /** Runs the complete frozen synthetic conformance corpus without invoking a semantic host. */
49
+ export function evaluateHybridRoute(sourceRoot = resolveSourceRoot()) {
50
+ const contractPath = path.join(sourceRoot, "references/cli/hybrid-route-contract.yaml");
51
+ const corpusPath = path.join(sourceRoot, "fixtures/routing/hybrid-corpus.yaml");
52
+ const phrasePath = path.join(sourceRoot, "skills/agentera/route-phrases.yaml");
53
+ const skillPath = path.join(sourceRoot, "skills/agentera/SKILL.md");
54
+ const contract = loadYamlMapping(fs.readFileSync(contractPath, "utf8"));
55
+ const corpus = loadYamlMapping(fs.readFileSync(corpusPath, "utf8"));
56
+ const evaluation = mapping(contract.evaluation, "contract.evaluation");
57
+ const targetGates = mapping(evaluation.target_gates, "contract.evaluation.target_gates");
58
+ const routeCases = cases(corpus.route_cases, "corpus.route_cases");
59
+ const receiptCases = cases(corpus.receipt_cases, "corpus.receipt_cases");
60
+ const results = [];
61
+ const deterministicTimings = [];
62
+ const receiptTimings = [];
63
+ for (const routeCase of routeCases) {
64
+ const start = process.hrtime.bigint();
65
+ const observed = resolveRouteRequest(routeCase.request, sourceRoot);
66
+ const elapsed = elapsedMs(start);
67
+ deterministicTimings.push(elapsed);
68
+ const passed = observed.outcome === routeCase.expected.phase1
69
+ && (observed.outcome !== "deterministic_selection" || (observed.tier === routeCase.expected.tier && observed.capability === routeCase.expected.capability));
70
+ const harmfulMisroute = observed.outcome === "deterministic_selection"
71
+ && (routeCase.expected.phase1 !== "deterministic_selection" || observed.capability !== routeCase.expected.capability);
72
+ results.push({
73
+ case_id: routeCase.id,
74
+ partition: routeCase.partition,
75
+ evaluation_tier: "deterministic",
76
+ routing_tier: observed.outcome === "deterministic_selection" ? observed.tier : "deterministic_abstention",
77
+ expected_outcome: routeCase.expected.phase1,
78
+ observed_outcome: observed.outcome,
79
+ ...(observed.outcome === "deterministic_selection" ? { capability: observed.capability } : {}),
80
+ status: passed ? "pass" : "fail",
81
+ ...(passed ? {} : { failure_tier: "deterministic" }),
82
+ harmful_misroute: harmfulMisroute,
83
+ elapsed_ms: elapsed,
84
+ });
85
+ }
86
+ for (const receiptCase of receiptCases) {
87
+ const start = process.hrtime.bigint();
88
+ let terminal = "invalid_receipt";
89
+ try {
90
+ const receipt = receiptCase.valid ? nullableFixtureReceipt(receiptCase.receipt) : receiptCase.receipt;
91
+ terminal = validateRouteReceiptSubmission({ request: receiptCase.request, receipt }, sourceRoot).outcome;
92
+ }
93
+ catch {
94
+ terminal = "invalid_receipt";
95
+ }
96
+ const elapsed = elapsedMs(start);
97
+ receiptTimings.push(elapsed);
98
+ const passed = terminal === receiptCase.expected_terminal;
99
+ const harmfulMisroute = terminal === "selected" && receiptCase.expected_terminal !== "selected";
100
+ results.push({
101
+ case_id: receiptCase.id,
102
+ partition: receiptCase.partition,
103
+ evaluation_tier: "receipt_validation",
104
+ routing_tier: "semantic_receipt_validation",
105
+ expected_outcome: receiptCase.expected_terminal,
106
+ observed_outcome: terminal,
107
+ status: passed ? "pass" : "fail",
108
+ ...(passed ? {} : { failure_tier: "receipt_validation" }),
109
+ harmful_misroute: harmfulMisroute,
110
+ elapsed_ms: elapsed,
111
+ });
112
+ }
113
+ const failed = results.filter(({ status }) => status === "fail");
114
+ const harmfulMisroutes = results.filter((result) => result.harmful_misroute === true).length;
115
+ return {
116
+ schemaVersion: "agentera.hybrid_route_evaluation.v1",
117
+ status: failed.length === 0 ? "pass" : "fail",
118
+ authority: {
119
+ contract_version: requiredString(contract.schema_version, "contract.schema_version"),
120
+ protocol_sha256: hashFile(contractPath),
121
+ phrase_authority_sha256: hashFile(phrasePath),
122
+ shared_skill_sha256: hashFile(skillPath),
123
+ },
124
+ corpus: {
125
+ schema_version: requiredString(corpus.schema_version, "corpus.schema_version"),
126
+ content_sha256: hashFile(corpusPath),
127
+ partitions: corpus.partitions,
128
+ case_count: results.length,
129
+ },
130
+ results,
131
+ aggregate_metrics: {
132
+ passed: results.length - failed.length,
133
+ failed: failed.length,
134
+ harmful_misroutes: {
135
+ scope: "deterministic_and_receipt_validation_conformance",
136
+ target: targetGates.harmful_misroutes,
137
+ observed: harmfulMisroutes,
138
+ status: harmfulMisroutes === 0 ? "pass" : "fail",
139
+ taxonomy: evaluation.harmful_misroute_taxonomy,
140
+ },
141
+ },
142
+ model_context: {
143
+ status: "unmeasured",
144
+ reason: "host_dependent",
145
+ samples: 0,
146
+ distributions: {},
147
+ },
148
+ latency: {
149
+ deterministic_phase1: { sample_count: deterministicTimings.length, p95_ms: percentile(deterministicTimings), target: targetGates.deterministic_phase1_p95 },
150
+ receipt_validation: { sample_count: receiptTimings.length, p95_ms: percentile(receiptTimings), target: targetGates.receipt_validation_p95 },
151
+ semantic_model: { status: "unmeasured", reason: "host_dependent" },
152
+ end_to_end: { status: "unmeasured", reason: "host_dependent" },
153
+ },
154
+ };
155
+ }
@@ -45,7 +45,9 @@ export function buildReport(results) {
45
45
  function checkOutputFacts(fixture) {
46
46
  const facts = [];
47
47
  const expected = fixture.expectedFacts;
48
- (expected.required_output ?? []).forEach((text, index) => {
48
+ const requiredOutput = expected.required_output;
49
+ const requiredOutputArr = Array.isArray(requiredOutput) ? requiredOutput : []; // cast: JSON.parse fixture IO boundary
50
+ requiredOutputArr.forEach((text, index) => {
49
51
  const found = fixture.capturedOutput.includes(text);
50
52
  facts.push({
51
53
  fact: `required_output[${index}]`,
@@ -53,7 +55,9 @@ function checkOutputFacts(fixture) {
53
55
  detail: `captured output ${found ? "contains" : "does not contain"} ${pyRepr(text)}`,
54
56
  });
55
57
  });
56
- (expected.forbidden_output ?? []).forEach((text, index) => {
58
+ const forbiddenOutput = expected.forbidden_output;
59
+ const forbiddenOutputArr = Array.isArray(forbiddenOutput) ? forbiddenOutput : []; // cast: JSON.parse fixture IO boundary
60
+ forbiddenOutputArr.forEach((text, index) => {
57
61
  const found = fixture.capturedOutput.includes(text);
58
62
  facts.push({
59
63
  fact: `forbidden_output[${index}]`,
@@ -61,7 +65,8 @@ function checkOutputFacts(fixture) {
61
65
  detail: `captured output ${found ? "contains forbidden" : "omits forbidden"} ${pyRepr(text)}`,
62
66
  });
63
67
  });
64
- const writes = expected.artifact_expectations?.writes;
68
+ const artifactExpectations = expected.artifact_expectations; // cast: JSON.parse fixture IO boundary
69
+ const writes = artifactExpectations?.writes;
65
70
  if (writes === "none") {
66
71
  facts.push({
67
72
  fact: "artifact_expectations.writes",
@@ -74,9 +79,12 @@ function checkOutputFacts(fixture) {
74
79
  function checkToolTraceFacts(fixture) {
75
80
  const facts = [];
76
81
  const expected = fixture.expectedFacts;
77
- const callList = fixture.toolTrace.calls ?? [];
82
+ const rawCalls = fixture.toolTrace.calls;
83
+ const callList = Array.isArray(rawCalls) ? rawCalls : []; // cast: JSON.parse fixture IO boundary
78
84
  const calls = callList.join("\n");
79
- (expected.required_tool_calls ?? []).forEach((text, index) => {
85
+ const requiredToolCalls = expected.required_tool_calls;
86
+ const requiredToolCallsArr = Array.isArray(requiredToolCalls) ? requiredToolCalls : []; // cast: JSON.parse fixture IO boundary
87
+ requiredToolCallsArr.forEach((text, index) => {
80
88
  const found = calls.includes(text);
81
89
  facts.push({
82
90
  fact: `required_tool_calls[${index}]`,
@@ -84,7 +92,9 @@ function checkToolTraceFacts(fixture) {
84
92
  detail: `tool trace ${found ? "contains" : "does not contain"} ${pyRepr(text)}`,
85
93
  });
86
94
  });
87
- (expected.forbidden_tool_calls ?? []).forEach((text, index) => {
95
+ const forbiddenToolCalls = expected.forbidden_tool_calls;
96
+ const forbiddenToolCallsArr = Array.isArray(forbiddenToolCalls) ? forbiddenToolCalls : []; // cast: JSON.parse fixture IO boundary
97
+ forbiddenToolCallsArr.forEach((text, index) => {
88
98
  const found = calls.includes(text);
89
99
  facts.push({
90
100
  fact: `forbidden_tool_calls[${index}]`,
@@ -92,31 +102,43 @@ function checkToolTraceFacts(fixture) {
92
102
  detail: `tool trace ${found ? "contains forbidden" : "omits forbidden"} ${pyRepr(text)}`,
93
103
  });
94
104
  });
95
- for (const [text, expectedCount] of Object.entries(expected.tool_call_counts ?? {})) {
96
- const actual = callList.filter((call) => call.includes(text)).length;
97
- facts.push({
98
- fact: `tool_call_counts[${text}]`,
99
- status: actual === expectedCount ? "pass" : "fail",
100
- detail: `tool trace contains ${actual} call(s) matching ${pyRepr(text)}; expected ${expectedCount}`,
101
- });
105
+ const toolCallCounts = expected.tool_call_counts;
106
+ if (toolCallCounts && typeof toolCallCounts === "object" && !Array.isArray(toolCallCounts)) {
107
+ for (const [text, expectedCount] of Object.entries(toolCallCounts)) { // cast: JSON.parse fixture IO boundary
108
+ const actual = callList.filter((call) => call.includes(text)).length;
109
+ facts.push({
110
+ fact: `tool_call_counts[${text}]`,
111
+ status: actual === expectedCount ? "pass" : "fail",
112
+ detail: `tool trace contains ${actual} call(s) matching ${pyRepr(text)}; expected ${expectedCount}`,
113
+ });
114
+ }
102
115
  }
103
116
  return facts;
104
117
  }
105
118
  function checkSeededArtifactFacts(fixture) {
106
119
  const facts = [];
107
120
  const byPath = {};
108
- for (const item of fixture.seededState.files ?? []) {
109
- if (item && typeof item === "object" && typeof item.path === "string") {
110
- byPath[item.path] = item.content;
121
+ const rawFiles = fixture.seededState.files;
122
+ const filesArr = Array.isArray(rawFiles) ? rawFiles : [];
123
+ for (const item of filesArr) {
124
+ if (item && typeof item === "object" && !Array.isArray(item)) {
125
+ const obj = item; // cast: JSON.parse fixture IO boundary
126
+ const path = obj.path;
127
+ if (typeof path === "string") {
128
+ byPath[path] = obj.content; // cast: JSON.parse fixture IO boundary
129
+ }
111
130
  }
112
131
  }
113
- (fixture.expectedFacts.required_artifacts ?? []).forEach((expected, index) => {
132
+ const requiredArtifacts = fixture.expectedFacts.required_artifacts;
133
+ const requiredArtifactsArr = Array.isArray(requiredArtifacts) ? requiredArtifacts : [];
134
+ requiredArtifactsArr.forEach((expected, index) => {
114
135
  const factName = `required_artifacts[${index}]`;
115
136
  if (!expected || typeof expected !== "object" || Array.isArray(expected)) {
116
137
  facts.push({ fact: factName, status: "fail", detail: "expected artifact fact must be an object" });
117
138
  return;
118
139
  }
119
- const path = expected.path;
140
+ const expectedObj = expected; // cast: JSON.parse fixture IO boundary
141
+ const path = expectedObj.path;
120
142
  if (typeof path !== "string" || !path.trim()) {
121
143
  facts.push({ fact: factName, status: "fail", detail: "expected artifact fact must name a path" });
122
144
  return;
@@ -126,7 +148,9 @@ function checkSeededArtifactFacts(fixture) {
126
148
  facts.push({ fact: factName, status: "fail", detail: `seeded artifact ${pyRepr(path)} is missing` });
127
149
  return;
128
150
  }
129
- const missing = (expected.contains ?? []).filter((text) => !content.includes(text));
151
+ const containsRaw = expectedObj.contains;
152
+ const containsArr = Array.isArray(containsRaw) ? containsRaw : []; // cast: JSON.parse fixture IO boundary
153
+ const missing = containsArr.filter((text) => !content.includes(text));
130
154
  if (missing.length > 0) {
131
155
  facts.push({ fact: factName, status: "fail", detail: `seeded artifact ${pyRepr(path)} lacks ${pyRepr(missing[0])}` });
132
156
  }
@@ -145,4 +169,3 @@ export function main(argv = [], out = (l) => process.stdout.write(l)) {
145
169
  out(pyJsonIndent(report) + "\n");
146
170
  return report.status === "pass" ? 0 : 1;
147
171
  }
148
- //# sourceMappingURL=semanticEval.js.map
@@ -1,4 +1,8 @@
1
1
  import fs from "node:fs";
2
+ /**
3
+ * Semantic fixture contract validation for offline skill evals. Faithful TS
4
+ * port of scripts/semantic_fixtures.py. Defines the fixture shape only.
5
+ */
2
6
  export const REQUIRED_SECTIONS = [
3
7
  "Prompt",
4
8
  "Seeded Project State",
@@ -113,10 +117,18 @@ function validateExpectedFacts(sectionText) {
113
117
  errors.push(...validateStringList(d, "required_tool_calls", false));
114
118
  errors.push(...validateStringList(d, "forbidden_tool_calls", false));
115
119
  errors.push(...validateToolCallCounts(d.tool_call_counts));
116
- const hasOutputFact = Boolean(d.required_output?.length || d.forbidden_output?.length);
117
- const hasToolFact = Boolean(d.required_tool_calls?.length ||
118
- d.forbidden_tool_calls?.length ||
119
- (d.tool_call_counts && Object.keys(d.tool_call_counts).length));
120
+ const requiredOutput = d.required_output;
121
+ const forbiddenOutput = d.forbidden_output;
122
+ const hasOutputFact = Boolean((Array.isArray(requiredOutput) || typeof requiredOutput === "string" ? requiredOutput.length : 0) ||
123
+ (Array.isArray(forbiddenOutput) || typeof forbiddenOutput === "string" ? forbiddenOutput.length : 0));
124
+ const requiredToolCalls = d.required_tool_calls;
125
+ const forbiddenToolCalls = d.forbidden_tool_calls;
126
+ const toolCallCounts = d.tool_call_counts;
127
+ const hasToolFact = Boolean((Array.isArray(requiredToolCalls) || typeof requiredToolCalls === "string" ? requiredToolCalls.length : 0) ||
128
+ (Array.isArray(forbiddenToolCalls) || typeof forbiddenToolCalls === "string" ? forbiddenToolCalls.length : 0) ||
129
+ (toolCallCounts && typeof toolCallCounts === "object" && !Array.isArray(toolCallCounts)
130
+ ? Object.keys(toolCallCounts).length
131
+ : 0));
120
132
  const hasArtifactFact = "artifact_expectations" in d;
121
133
  if (!hasOutputFact && !hasToolFact && !hasArtifactFact) {
122
134
  errors.push("malformed section: Expected Facts: must declare at least one expected fact");
@@ -224,4 +236,3 @@ export function pyRepr(value) {
224
236
  }
225
237
  return "'" + value.replace(/\\/g, "\\\\").replace(/'/g, "\\'") + "'";
226
238
  }
227
- //# sourceMappingURL=semanticFixtures.js.map
@@ -1,19 +1,13 @@
1
- import crypto from "node:crypto";
2
1
  import fs from "node:fs";
3
- import os from "node:os";
4
2
  import path from "node:path";
5
- import { expanduser, resolvePath } from "../core/paths.js";
6
3
  import { ARTIFACT_PROTOCOL_PATHS, normalizeArtifactMappingKeys, normalizeArtifactProtocolId, } from "../registries/artifactProtocolIds.js";
7
- import { resolveCandidate } from "../state/installRoot.js";
8
4
  /**
9
- * Shared utilities for agentera hooks. Faithful TS port of hooks/common.py:
10
- * compaction retention caps, runtime-local session bookmark paths, and artifact
11
- * path resolution.
5
+ * Shared utilities for compaction retention caps and artifact path resolution.
12
6
  */
13
7
  export { loadYamlMapping, loadYamlMappingFile, } from "../core/yaml.js";
14
8
  export const MAX_FULL_ENTRIES = 10;
15
9
  export const MAX_ONELINE_ENTRIES = 40;
16
- export const MAX_TOTAL_ENTRIES = MAX_FULL_ENTRIES + MAX_ONELINE_ENTRIES;
10
+ export const MAX_TOTAL_ENTRIES = 50;
17
11
  export function applyRetentionCaps(fullEntries, archiveEntries, opts = {}) {
18
12
  const maxFull = opts.maxFull ?? MAX_FULL_ENTRIES;
19
13
  const maxOneline = opts.maxOneline ?? MAX_ONELINE_ENTRIES;
@@ -21,52 +15,6 @@ export function applyRetentionCaps(fullEntries, archiveEntries, opts = {}) {
21
15
  const cappedArchive = archiveEntries.slice(0, maxOneline);
22
16
  return [...fullEntries.slice(0, maxFull), ...cappedArchive].slice(0, maxTotal);
23
17
  }
24
- export function resolveAgenteraDataHome(env = process.env, home = os.homedir()) {
25
- const configured = env.AGENTERA_HOME;
26
- if (configured) {
27
- return expanduser(configured);
28
- }
29
- const [root] = resolveCandidate(null, { env, home });
30
- return root;
31
- }
32
- export function resolveSessionPath(projectRoot, env = process.env, home = os.homedir()) {
33
- const dataHome = resolveAgenteraDataHome(env, home);
34
- const resolved = resolvePath(projectRoot);
35
- const digest = crypto.createHash("sha256").update(resolved, "utf8").digest("hex").slice(0, 16);
36
- const name = path.basename(projectRoot);
37
- const slug = name.replace(/[^A-Za-z0-9_.-]+/g, "-").replace(/^[.-]+|[.-]+$/g, "") || "project";
38
- return path.join(dataHome, "sessions", `${slug}-${digest}`, "session.yaml");
39
- }
40
- export function sessionBookmarkToOneline(entry) {
41
- return {
42
- timestamp: String(entry.timestamp ?? ""),
43
- artifacts: [],
44
- summary: String(entry.summary ?? ""),
45
- kind: "oneline",
46
- };
47
- }
48
- export function compactSessionBookmarkEntries(entries, opts = {}) {
49
- const maxFull = opts.maxFull ?? MAX_FULL_ENTRIES;
50
- const maxOneline = opts.maxOneline ?? MAX_ONELINE_ENTRIES;
51
- const maxTotal = opts.maxTotal ?? MAX_TOTAL_ENTRIES;
52
- const convert = opts.toOneline ?? sessionBookmarkToOneline;
53
- const ordered = [...entries].sort((a, b) => {
54
- const ta = String(a.timestamp ?? "");
55
- const tb = String(b.timestamp ?? "");
56
- return ta < tb ? 1 : ta > tb ? -1 : 0;
57
- });
58
- const full = [];
59
- const archive = [];
60
- for (const entry of ordered) {
61
- if (entry.kind === "full" && full.length < maxFull) {
62
- full.push(entry);
63
- }
64
- else {
65
- archive.push(convert(entry));
66
- }
67
- }
68
- return applyRetentionCaps(full, archive, { maxFull, maxOneline, maxTotal });
69
- }
70
18
  export const DEFAULT_ARTIFACT_PATHS = { ...ARTIFACT_PROTOCOL_PATHS };
71
19
  function stripQuotes(value) {
72
20
  return value.replace(/^['"]|['"]$/g, "");
@@ -131,7 +79,7 @@ export function resolveArtifactPath(projectRoot, artifact, overrides = null) {
131
79
  return path.join(projectRoot, DEFAULT_ARTIFACT_PATHS[artifactId] ?? `.agentera/${artifactId}.yaml`);
132
80
  }
133
81
  export function loadArtifactOverrides(projectRoot) {
134
- const yamlPath = path.join(projectRoot, ".agentera", "docs.yaml");
82
+ const yamlPath = path.join(projectRoot, ARTIFACT_PROTOCOL_PATHS.docs);
135
83
  if (fs.existsSync(yamlPath)) {
136
84
  const mapping = parseDocsYamlMapping(fs.readFileSync(yamlPath, "utf8"));
137
85
  if (Object.keys(mapping).length > 0) {
@@ -140,4 +88,3 @@ export function loadArtifactOverrides(projectRoot) {
140
88
  }
141
89
  return null;
142
90
  }
143
- //# sourceMappingURL=common.js.map