agentera 3.0.0-dev.8 → 3.0.0-dev.80

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 (724) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +252 -22
  3. package/bundle/.agentera-build-source.json +8 -0
  4. package/bundle/CHANGELOG.md +1387 -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 +271 -0
  9. package/bundle/extract-corpus-parity.json +2 -4
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +484 -0
  12. package/bundle/references/adapters/package-registry.yaml +443 -188
  13. package/bundle/references/adapters/package-surface-characterization.md +68 -34
  14. package/bundle/references/adapters/product-v1-reset.yaml +101 -0
  15. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  16. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  17. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  18. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  19. package/bundle/references/analysis/evidence-tier-authority.yaml +559 -0
  20. package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
  21. package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
  22. package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
  23. package/bundle/references/analysis/verification-policy.yaml +261 -0
  24. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  25. package/bundle/references/artifacts/glossary-entry-contract.yaml +2906 -0
  26. package/bundle/references/artifacts/state-storage-authority.yaml +3065 -0
  27. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  28. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  29. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  30. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  31. package/bundle/references/cli/routing-model.md +152 -93
  32. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  33. package/bundle/references/cli/update-channels.yaml +7 -5
  34. package/bundle/references/cli/vocabulary-index.yaml +7 -9
  35. package/bundle/references/cli/vocabulary.md +54 -97
  36. package/bundle/references/meta/retained-reference-authority.yaml +171 -0
  37. package/bundle/skills/agentera/SKILL.md +183 -63
  38. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  39. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  40. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  41. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  42. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  43. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  44. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  45. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  46. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  47. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  48. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  49. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  51. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  52. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  53. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  54. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  55. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  56. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  57. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  58. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  59. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  60. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  62. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  63. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  64. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  65. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  66. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  67. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  68. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
  69. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
  70. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  71. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
  72. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  73. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  74. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  75. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  76. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  77. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  79. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  81. package/bundle/skills/agentera/protocol.yaml +4 -4
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +29 -30
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -43
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -34
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +53 -51
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -35
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +453 -55
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +128 -39
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +305 -7
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +0 -19
  95. package/dist/.agentera-build-source.json +8 -0
  96. package/dist/analytics/extractCorpus/cli.js +52 -11
  97. package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
  98. package/dist/analytics/extractCorpus/core.js +262 -14
  99. package/dist/analytics/extractCorpus/corpus.js +57 -18
  100. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  101. package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
  102. package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
  103. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  104. package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
  105. package/dist/analytics/extractCorpus/index.js +4 -2
  106. package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
  107. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  108. package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
  109. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  110. package/dist/analytics/extractCorpus.js +0 -1
  111. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  112. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  113. package/dist/analytics/personalGlossaryAdmission.js +113 -0
  114. package/dist/analytics/personalGlossaryCandidateProjection.js +788 -0
  115. package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
  116. package/dist/analytics/personalGlossaryCandidateProjectionModel.js +1 -0
  117. package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
  118. package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
  119. package/dist/analytics/personalGlossaryDecision.js +203 -0
  120. package/dist/analytics/personalGlossaryExplicit.js +788 -0
  121. package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
  122. package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
  123. package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
  124. package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
  125. package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
  126. package/dist/analytics/personalGlossaryProfile.js +229 -0
  127. package/dist/analytics/personalGlossaryRecurrence.js +618 -0
  128. package/dist/analytics/personalGlossaryRefreshProjection.js +351 -0
  129. package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
  130. package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
  131. package/dist/analytics/profileSignals.js +211 -0
  132. package/dist/analytics/usageStats.js +150 -23
  133. package/dist/audit/terminologyDrift.js +281 -0
  134. package/dist/bin/agentera.js +3 -2
  135. package/dist/capabilities/audit/instructions.js +16 -6
  136. package/dist/capabilities/build/instructions.js +59 -6
  137. package/dist/capabilities/design/instructions.js +3 -4
  138. package/dist/capabilities/discuss/instructions.js +29 -6
  139. package/dist/capabilities/document/instructions.js +11 -6
  140. package/dist/capabilities/index.js +20 -14
  141. package/dist/capabilities/optimize/instructions.js +14 -6
  142. package/dist/capabilities/orchestrate/instructions.js +42 -6
  143. package/dist/capabilities/plan/instructions.js +30 -3
  144. package/dist/capabilities/profile/instructions.js +104 -5
  145. package/dist/capabilities/research/instructions.js +4 -5
  146. package/dist/capabilities/status/instructions.js +15 -6
  147. package/dist/capabilities/status/startupInstructions.js +34 -0
  148. package/dist/capabilities/vision/instructions.js +3 -5
  149. package/dist/cli/appContext.js +14 -7
  150. package/dist/cli/argvalidate.js +0 -1
  151. package/dist/cli/capabilityContext/benchmark.js +5 -4
  152. package/dist/cli/capabilityContext/bespoke.js +14 -6
  153. package/dist/cli/capabilityContext/build.js +116 -42
  154. package/dist/cli/capabilityContext/closeout.js +30 -27
  155. package/dist/cli/capabilityContext/contract.js +18 -27
  156. package/dist/cli/capabilityContext/evidence.js +84 -77
  157. package/dist/cli/capabilityContext/index.js +0 -1
  158. package/dist/cli/capabilityContext/orchestration.js +42 -18
  159. package/dist/cli/capabilityContext/planState.js +89 -96
  160. package/dist/cli/capabilityContext/progress.js +52 -12
  161. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  162. package/dist/cli/capabilityContext/shared.js +9 -20
  163. package/dist/cli/capabilityContext/slim.js +52 -8
  164. package/dist/cli/capabilityContext/startup.js +51 -114
  165. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  166. package/dist/cli/capabilityContext/types.js +26 -10
  167. package/dist/cli/capabilityContext.js +0 -1
  168. package/dist/cli/commands/appHome.js +0 -1
  169. package/dist/cli/commands/capability.js +2 -2
  170. package/dist/cli/commands/compact.js +163 -13
  171. package/dist/cli/commands/doctor.js +118 -11
  172. package/dist/cli/commands/durability.js +81 -0
  173. package/dist/cli/commands/glossaryAdvice.js +138 -0
  174. package/dist/cli/commands/lint.js +22 -8
  175. package/dist/cli/commands/personalGlossaryCandidateReads.js +755 -0
  176. package/dist/cli/commands/personalGlossaryDecision.js +349 -0
  177. package/dist/cli/commands/personalGlossaryPublish.js +484 -0
  178. package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
  179. package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
  180. package/dist/cli/commands/prime/briefOrientation.js +845 -0
  181. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  182. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  183. package/dist/cli/commands/prime/collectEntityOrientation.js +338 -0
  184. package/dist/cli/commands/prime/collectOrientationState.js +124 -68
  185. package/dist/cli/commands/prime/orientationOutput.js +271 -59
  186. package/dist/cli/commands/prime/types.js +0 -1
  187. package/dist/cli/commands/prime.js +89 -11
  188. package/dist/cli/commands/profileGrounding.js +55 -0
  189. package/dist/cli/commands/query.js +74 -52
  190. package/dist/cli/commands/report.js +187 -27
  191. package/dist/cli/commands/route.js +142 -0
  192. package/dist/cli/commands/schema.js +436 -138
  193. package/dist/cli/commands/state/decisions.js +40 -56
  194. package/dist/cli/commands/state/docs.js +58 -85
  195. package/dist/cli/commands/state/experimentRecords.js +151 -0
  196. package/dist/cli/commands/state/experiments.js +11 -65
  197. package/dist/cli/commands/state/get.js +129 -0
  198. package/dist/cli/commands/state/health.js +11 -113
  199. package/dist/cli/commands/state/index.js +6 -41
  200. package/dist/cli/commands/state/list.js +194 -0
  201. package/dist/cli/commands/state/objective.js +21 -65
  202. package/dist/cli/commands/state/plan.js +11 -170
  203. package/dist/cli/commands/state/planTasks.js +154 -0
  204. package/dist/cli/commands/state/plans.js +154 -0
  205. package/dist/cli/commands/state/progress.js +11 -45
  206. package/dist/cli/commands/state/shared.js +0 -1
  207. package/dist/cli/commands/state/todo.js +28 -107
  208. package/dist/cli/commands/state/write.js +459 -0
  209. package/dist/cli/commands/upgrade.js +176 -5
  210. package/dist/cli/commands/upgradeVerify.js +118 -0
  211. package/dist/cli/commands/validate.js +235 -136
  212. package/dist/cli/commands/verify.js +73 -16
  213. package/dist/cli/contracts/bundleStatus.js +0 -1
  214. package/dist/cli/contracts/orientationState.js +0 -1
  215. package/dist/cli/dispatch/argvParser.js +0 -1
  216. package/dist/cli/dispatch/check.js +84 -40
  217. package/dist/cli/dispatch/commands.js +3 -3
  218. package/dist/cli/dispatch/index.js +84 -52
  219. package/dist/cli/dispatch/lifecycle.js +182 -62
  220. package/dist/cli/dispatch/prime.js +37 -2
  221. package/dist/cli/dispatch/projections.js +17 -0
  222. package/dist/cli/dispatch/shared.js +1 -2
  223. package/dist/cli/dispatch/state.js +62 -66
  224. package/dist/cli/dispatch.js +0 -1
  225. package/dist/cli/errors.js +16 -17
  226. package/dist/cli/help.js +419 -41
  227. package/dist/cli/migrationRequired.js +125 -0
  228. package/dist/cli/orientation/attention.js +19 -22
  229. package/dist/cli/orientation/corpusCoverage.js +32 -1
  230. package/dist/cli/orientation.js +346 -129
  231. package/dist/cli/planArtifacts.js +350 -0
  232. package/dist/cli/planEvidence.js +157 -0
  233. package/dist/cli/planLifecycleState.js +36 -0
  234. package/dist/cli/planTaskIndex.js +11 -0
  235. package/dist/cli/preCutoverCommand.js +32 -0
  236. package/dist/cli/prime-blob.js +71 -3
  237. package/dist/cli/productV1Eol.js +55 -0
  238. package/dist/cli/profileAcquisition.js +167 -0
  239. package/dist/cli/startupCompletenessContract.js +11 -9
  240. package/dist/cli/stateQuery.js +47 -12
  241. package/dist/cli/structured.js +0 -1
  242. package/dist/cli/todoMarkdown.js +25 -12
  243. package/dist/cli/todoReadinessSelection.js +192 -0
  244. package/dist/cli/todoSeverity.js +0 -1
  245. package/dist/core/atomicWriter.js +23 -0
  246. package/dist/core/developmentChannel.js +1 -0
  247. package/dist/core/developmentInvocation.js +377 -0
  248. package/dist/core/difflib.js +0 -1
  249. package/dist/core/envPaths.js +0 -1
  250. package/dist/core/jsonValue.js +0 -1
  251. package/dist/core/paths.js +0 -1
  252. package/dist/core/pyjson.js +0 -1
  253. package/dist/core/shell.js +4 -0
  254. package/dist/core/skillIdentity.js +23 -0
  255. package/dist/core/sourceRoot.js +9 -12
  256. package/dist/core/text.js +10 -0
  257. package/dist/core/toml.js +0 -1
  258. package/dist/core/yaml.js +61 -2
  259. package/dist/eval/evalSkills.js +13 -14
  260. package/dist/eval/glossaryEvaluation.js +751 -0
  261. package/dist/eval/glossaryEvaluationProcess.js +29 -0
  262. package/dist/eval/glossaryEvaluationRunner.js +571 -0
  263. package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
  264. package/dist/eval/hybridRouteEvaluation.js +155 -0
  265. package/dist/eval/semanticEval.js +0 -1
  266. package/dist/eval/semanticFixtures.js +0 -1
  267. package/dist/hooks/common.js +3 -56
  268. package/dist/hooks/compaction/apply.js +224 -47
  269. package/dist/hooks/compaction/dryRun.js +2 -1
  270. package/dist/hooks/compaction/index.js +5 -6
  271. package/dist/hooks/compaction/parse.js +73 -6
  272. package/dist/hooks/compaction/retention.js +28 -25
  273. package/dist/hooks/compaction/status.js +145 -26
  274. package/dist/hooks/compaction/types.js +0 -1
  275. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  276. package/dist/hooks/validateArtifact/index.js +6 -65
  277. package/dist/hooks/validateArtifact/markdown.js +9 -10
  278. package/dist/hooks/validateArtifact/schema.js +96 -9
  279. package/dist/hooks/validateArtifact/traversal.js +12 -11
  280. package/dist/hooks/validateArtifact/violations.js +5 -3
  281. package/dist/migrate/v2HandoffManifest.js +8 -3
  282. package/dist/registries/activationContract.js +2 -0
  283. package/dist/registries/activationTuples.js +145 -0
  284. package/dist/registries/artifactProtocolIds.js +2 -1
  285. package/dist/registries/artifactRegistry.js +207 -60
  286. package/dist/registries/artifactSchemaProjection.js +45 -0
  287. package/dist/registries/capabilityContract.js +5 -21
  288. package/dist/registries/evaluatorHandoffContract.js +0 -1
  289. package/dist/registries/evidenceTierContract.js +375 -0
  290. package/dist/registries/explicitSegmentGrammarContract.js +619 -0
  291. package/dist/registries/glossaryAdviceContract.js +79 -0
  292. package/dist/registries/glossaryCandidateContractPaths.js +6 -0
  293. package/dist/registries/glossaryCandidateContracts.js +820 -0
  294. package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
  295. package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
  296. package/dist/registries/glossaryCandidateProjectionAuthority.js +345 -0
  297. package/dist/registries/glossaryCandidateProjectionContract.js +108 -0
  298. package/dist/registries/glossaryCaveatContract.js +67 -0
  299. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  300. package/dist/registries/glossaryEntryContract.js +759 -0
  301. package/dist/registries/glossaryEntryTemporal.js +12 -0
  302. package/dist/registries/glossaryMiningAuthority.js +764 -0
  303. package/dist/registries/glossaryProfileFullContract.js +24 -0
  304. package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
  305. package/dist/registries/glossaryReviewRecordsContract.js +129 -0
  306. package/dist/registries/glossaryTermIdentity.js +139 -0
  307. package/dist/registries/glossaryTermOccurrence.js +20 -0
  308. package/dist/registries/hybridRoute.js +274 -0
  309. package/dist/registries/hybridRouteReceipt.js +221 -0
  310. package/dist/registries/packagePublication.js +273 -0
  311. package/dist/registries/packageRegistry.js +184 -209
  312. package/dist/registries/personalGlossaryContracts.js +1 -0
  313. package/dist/registries/todoReadinessContract.js +448 -0
  314. package/dist/registries/triggerLoader.js +7 -44
  315. package/dist/registries/verbosityBudgetContract.js +205 -0
  316. package/dist/release/releaseMetadata.js +168 -11
  317. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  318. package/dist/runtime/lifecycleAdapters.js +777 -0
  319. package/dist/runtime/lifecycleAuthority.js +453 -0
  320. package/dist/runtime/lifecycleOperationContract.js +123 -0
  321. package/dist/runtime/lifecycleOperations.js +634 -0
  322. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  323. package/dist/runtime/lifecyclePublication.js +415 -0
  324. package/dist/runtime/lifecycleSnapshot.js +438 -0
  325. package/dist/runtime/nativeResourceCleanup.js +503 -0
  326. package/dist/setup/opencode.js +20 -13
  327. package/dist/setup/opencodeConstants.js +1 -0
  328. package/dist/setup/sharedSkill.js +45 -0
  329. package/dist/setup/smokeChecks.js +14 -75
  330. package/dist/state/archiveDiscovery.js +580 -0
  331. package/dist/state/archivePublication.js +225 -0
  332. package/dist/state/archiveRecovery.js +237 -0
  333. package/dist/state/archiveReplay.js +53 -0
  334. package/dist/state/canonicalMigrationRecord.js +36 -0
  335. package/dist/state/changelog.js +221 -0
  336. package/dist/state/decisionEntities.js +367 -0
  337. package/dist/state/decisionLegacyValidation.js +215 -0
  338. package/dist/state/decisionMigrationProvenance.js +199 -0
  339. package/dist/state/decisionOverlay.js +254 -0
  340. package/dist/state/decisionRevision.js +256 -0
  341. package/dist/state/decisionRevisionMigration.js +89 -0
  342. package/dist/state/directRetrieval.js +323 -0
  343. package/dist/state/durability.js +324 -0
  344. package/dist/state/entityCutover.js +459 -0
  345. package/dist/state/entityCutoverGit.js +127 -0
  346. package/dist/state/entityGlossaryAuthority.js +13 -0
  347. package/dist/state/entityListProjection.js +187 -0
  348. package/dist/state/entityListRuntimeRegistry.js +85 -0
  349. package/dist/state/entityMigrationCausality.js +97 -0
  350. package/dist/state/entityMigrationIdentity.js +5 -0
  351. package/dist/state/entityMigrationPreview.js +840 -0
  352. package/dist/state/entityMigrationTodo.js +133 -0
  353. package/dist/state/entityPublicationContext.js +859 -0
  354. package/dist/state/entityRetrievalHelp.js +506 -0
  355. package/dist/state/entityStorage.js +899 -0
  356. package/dist/state/exactReplacementRecovery.js +18 -0
  357. package/dist/state/experimentArchive.js +63 -0
  358. package/dist/state/experimentIdentity.js +202 -0
  359. package/dist/state/healthEntities.js +262 -0
  360. package/dist/state/healthEntityValidation.js +18 -0
  361. package/dist/state/healthRepair.js +69 -0
  362. package/dist/state/installRoot.js +15 -7
  363. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  364. package/dist/state/legacyIdentity.js +47 -0
  365. package/dist/state/legacySummaryRecord.js +6 -0
  366. package/dist/state/listAccounting.js +54 -0
  367. package/dist/state/listClassification.js +17 -0
  368. package/dist/state/listCursor.js +42 -0
  369. package/dist/state/listRetrieval.js +781 -0
  370. package/dist/state/migrationSourceBinding.js +30 -0
  371. package/dist/state/objectiveExperimentEntities.js +322 -0
  372. package/dist/state/planEntities.js +1027 -0
  373. package/dist/state/planIdentity.js +47 -0
  374. package/dist/state/planLineageValidation.js +52 -0
  375. package/dist/state/planReplacementTransaction.js +475 -0
  376. package/dist/state/planRetrieval.js +313 -0
  377. package/dist/state/planTaskRetrieval.js +294 -0
  378. package/dist/state/progressEntities.js +512 -0
  379. package/dist/state/progressGlossaryCaveat.js +168 -0
  380. package/dist/state/progressPublicationOrder.js +19 -0
  381. package/dist/state/progressWritePolicy.js +33 -0
  382. package/dist/state/projectRoot.js +62 -0
  383. package/dist/state/projectionPolicy.js +190 -0
  384. package/dist/state/retrievalAuthority.js +156 -0
  385. package/dist/state/safeProjectFile.js +155 -0
  386. package/dist/state/startupAnalysis/benchmark.js +70 -9
  387. package/dist/state/startupAnalysis/contract.js +44 -10
  388. package/dist/state/startupAnalysis/helpers.js +1 -2
  389. package/dist/state/startupAnalysis/index.js +0 -1
  390. package/dist/state/startupAnalysis/metrics.js +0 -1
  391. package/dist/state/startupAnalysis/records.js +0 -1
  392. package/dist/state/startupAnalysis/report.js +0 -1
  393. package/dist/state/startupAnalysis/threshold.js +13 -1
  394. package/dist/state/startupAnalysis.js +0 -1
  395. package/dist/state/startupProjection.js +499 -0
  396. package/dist/state/stateMode.js +222 -0
  397. package/dist/state/stateStorageAuthority.js +47 -0
  398. package/dist/state/summaryEntityRead.js +25 -0
  399. package/dist/state/summaryMigrationProvenance.js +66 -0
  400. package/dist/state/summarySourceRowAuthority.js +36 -0
  401. package/dist/state/todoActivationSafety.js +58 -0
  402. package/dist/state/todoCreateBatch.js +69 -0
  403. package/dist/state/todoDocsEntities.js +1339 -0
  404. package/dist/state/todoDocsEntityValidation.js +158 -0
  405. package/dist/state/todoMarkdownProjection.js +63 -0
  406. package/dist/state/todoReconciliationActivation.js +182 -0
  407. package/dist/state/todoReconciliationInspection.js +184 -0
  408. package/dist/state/todoReconciliationRepair.js +320 -0
  409. package/dist/state/todoReconciliationTransaction.js +628 -0
  410. package/dist/state/todoSeverityHeadings.js +71 -0
  411. package/dist/state/todoTransitionBatch.js +65 -0
  412. package/dist/state/todoUpdateBatch.js +50 -0
  413. package/dist/state/write/assign.js +20 -0
  414. package/dist/state/write/candidateMutation.js +269 -0
  415. package/dist/state/write/errors.js +11 -0
  416. package/dist/state/write/experimentPublication.js +192 -0
  417. package/dist/state/write/explain.js +380 -0
  418. package/dist/state/write/fields.js +61 -0
  419. package/dist/state/write/glossaryPublication.js +263 -0
  420. package/dist/state/write/grammar.js +285 -0
  421. package/dist/state/write/helpers.js +29 -0
  422. package/dist/state/write/index.js +12 -0
  423. package/dist/state/write/input.js +391 -0
  424. package/dist/state/write/lock.js +837 -0
  425. package/dist/state/write/mutation.js +234 -0
  426. package/dist/state/write/operations.js +170 -0
  427. package/dist/state/write/planEvaluation.js +128 -0
  428. package/dist/state/write/planPublication.js +179 -0
  429. package/dist/state/write/runtimeOperations.js +146 -0
  430. package/dist/state/write/serialize.js +1 -0
  431. package/dist/state/write/transaction.js +57 -0
  432. package/dist/state/write/validate.js +7 -0
  433. package/dist/upgrade/appContentRefresh.js +77 -36
  434. package/dist/upgrade/appModel.js +0 -1
  435. package/dist/upgrade/atomicWriter.js +1 -0
  436. package/dist/upgrade/bundleEvidence.js +0 -1
  437. package/dist/upgrade/channels.js +6 -9
  438. package/dist/upgrade/compatibility.js +43 -17
  439. package/dist/upgrade/doctor.js +55 -32
  440. package/dist/upgrade/doctorClassifier.js +11 -1
  441. package/dist/upgrade/installedHooksRetirement.js +46 -40
  442. package/dist/upgrade/legacyAgentCleanup.js +133 -34
  443. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  444. package/dist/upgrade/migrateArtifactsV2ToV3.js +325 -82
  445. package/dist/upgrade/migrationPublication.js +122 -0
  446. package/dist/upgrade/nextMajorDoctor.js +0 -22
  447. package/dist/upgrade/npxPlatformStatus.js +2 -2
  448. package/dist/upgrade/productV1Reset.js +515 -0
  449. package/dist/upgrade/productV1ResetAuthority.js +139 -0
  450. package/dist/upgrade/projectIntegration.js +126 -134
  451. package/dist/upgrade/projectIntegrationDecision.js +21 -13
  452. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  453. package/dist/upgrade/runtimeMigration.js +210 -430
  454. package/dist/upgrade/upgradeCommands.js +14 -1
  455. package/dist/upgrade/upgradeLock.js +85 -0
  456. package/dist/upgrade/upgradeOrchestrator.js +253 -48
  457. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  458. package/dist/upgrade/versionResolution.js +0 -1
  459. package/dist/validate/activationArtifactEvidence.js +866 -0
  460. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  461. package/dist/validate/activationConjunction.js +816 -0
  462. package/dist/validate/activationEvidenceManifest.js +610 -0
  463. package/dist/validate/activationPackageSemantics.js +29 -0
  464. package/dist/validate/appHomeContract.js +1 -7
  465. package/dist/validate/bootstrapAuthority.js +44 -0
  466. package/dist/validate/capability.js +11 -3
  467. package/dist/validate/crossCapability.js +14 -9
  468. package/dist/validate/glossaryVariantGuard.js +96 -0
  469. package/dist/validate/retainedReferenceAuthority.js +879 -0
  470. package/dist/validate/selfAudit.js +39 -45
  471. package/dist/validate/vocabularyAuthority.js +8 -8
  472. package/package.json +39 -13
  473. package/bundle/references/adapters/cursor.md +0 -214
  474. package/bundle/references/adapters/opencode.md +0 -530
  475. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  476. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  477. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  478. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  479. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  480. package/bundle/references/analysis/benchmark.md +0 -267
  481. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  482. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  483. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  484. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  485. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  486. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  487. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  488. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  489. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  490. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  491. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  492. package/bundle/references/meta/documentation-inventory.md +0 -49
  493. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  494. package/bundle/skills/agentera/agents/audit.toml +0 -6
  495. package/bundle/skills/agentera/agents/build.toml +0 -6
  496. package/bundle/skills/agentera/agents/design.toml +0 -6
  497. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  498. package/bundle/skills/agentera/agents/document.toml +0 -6
  499. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  500. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  501. package/bundle/skills/agentera/agents/plan.toml +0 -6
  502. package/bundle/skills/agentera/agents/profile.toml +0 -6
  503. package/bundle/skills/agentera/agents/research.toml +0 -6
  504. package/bundle/skills/agentera/agents/status.toml +0 -6
  505. package/bundle/skills/agentera/agents/vision.toml +0 -6
  506. package/bundle/skills/agentera/references/contract.md +0 -1048
  507. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  508. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  509. package/dist/analytics/extractCorpus/core.js.map +0 -1
  510. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  511. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  512. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  513. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  514. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  515. package/dist/analytics/extractCorpus/index.js.map +0 -1
  516. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  517. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  518. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  519. package/dist/analytics/extractCorpus.js.map +0 -1
  520. package/dist/analytics/usageStats.js.map +0 -1
  521. package/dist/bin/agentera.js.map +0 -1
  522. package/dist/capabilities/audit/instructions.js.map +0 -1
  523. package/dist/capabilities/build/instructions.js.map +0 -1
  524. package/dist/capabilities/design/instructions.js.map +0 -1
  525. package/dist/capabilities/discuss/instructions.js.map +0 -1
  526. package/dist/capabilities/document/instructions.js.map +0 -1
  527. package/dist/capabilities/index.js.map +0 -1
  528. package/dist/capabilities/optimize/instructions.js.map +0 -1
  529. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  530. package/dist/capabilities/plan/instructions.js.map +0 -1
  531. package/dist/capabilities/profile/instructions.js.map +0 -1
  532. package/dist/capabilities/research/instructions.js.map +0 -1
  533. package/dist/capabilities/status/instructions.js.map +0 -1
  534. package/dist/capabilities/vision/instructions.js.map +0 -1
  535. package/dist/cli/appContext.js.map +0 -1
  536. package/dist/cli/argvalidate.js.map +0 -1
  537. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  538. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  539. package/dist/cli/capabilityContext/build.js.map +0 -1
  540. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  541. package/dist/cli/capabilityContext/contract.js.map +0 -1
  542. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  543. package/dist/cli/capabilityContext/index.js.map +0 -1
  544. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  545. package/dist/cli/capabilityContext/planState.js.map +0 -1
  546. package/dist/cli/capabilityContext/progress.js.map +0 -1
  547. package/dist/cli/capabilityContext/shared.js.map +0 -1
  548. package/dist/cli/capabilityContext/slim.js.map +0 -1
  549. package/dist/cli/capabilityContext/startup.js.map +0 -1
  550. package/dist/cli/capabilityContext/types.js.map +0 -1
  551. package/dist/cli/capabilityContext.js.map +0 -1
  552. package/dist/cli/commands/appHome.js.map +0 -1
  553. package/dist/cli/commands/capability.js.map +0 -1
  554. package/dist/cli/commands/compact.js.map +0 -1
  555. package/dist/cli/commands/doctor.js.map +0 -1
  556. package/dist/cli/commands/lint.js.map +0 -1
  557. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  558. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  559. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  560. package/dist/cli/commands/prime/types.js.map +0 -1
  561. package/dist/cli/commands/prime/v1Migration.js +0 -39
  562. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  563. package/dist/cli/commands/prime.js.map +0 -1
  564. package/dist/cli/commands/query.js.map +0 -1
  565. package/dist/cli/commands/report.js.map +0 -1
  566. package/dist/cli/commands/schema.js.map +0 -1
  567. package/dist/cli/commands/state/decisions.js.map +0 -1
  568. package/dist/cli/commands/state/docs.js.map +0 -1
  569. package/dist/cli/commands/state/experiments.js.map +0 -1
  570. package/dist/cli/commands/state/health.js.map +0 -1
  571. package/dist/cli/commands/state/index.js.map +0 -1
  572. package/dist/cli/commands/state/objective.js.map +0 -1
  573. package/dist/cli/commands/state/plan.js.map +0 -1
  574. package/dist/cli/commands/state/progress.js.map +0 -1
  575. package/dist/cli/commands/state/shared.js.map +0 -1
  576. package/dist/cli/commands/state/todo.js.map +0 -1
  577. package/dist/cli/commands/upgrade.js.map +0 -1
  578. package/dist/cli/commands/validate.js.map +0 -1
  579. package/dist/cli/commands/verify.js.map +0 -1
  580. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  581. package/dist/cli/contracts/orientationState.js.map +0 -1
  582. package/dist/cli/dispatch/argvParser.js.map +0 -1
  583. package/dist/cli/dispatch/check.js.map +0 -1
  584. package/dist/cli/dispatch/commands.js.map +0 -1
  585. package/dist/cli/dispatch/index.js.map +0 -1
  586. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  587. package/dist/cli/dispatch/prime.js.map +0 -1
  588. package/dist/cli/dispatch/shared.js.map +0 -1
  589. package/dist/cli/dispatch/state.js.map +0 -1
  590. package/dist/cli/dispatch.js.map +0 -1
  591. package/dist/cli/errors.js.map +0 -1
  592. package/dist/cli/help.js.map +0 -1
  593. package/dist/cli/orientation/attention.js.map +0 -1
  594. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  595. package/dist/cli/orientation.js.map +0 -1
  596. package/dist/cli/prime-blob.js.map +0 -1
  597. package/dist/cli/startupCompletenessContract.js.map +0 -1
  598. package/dist/cli/stateQuery.js.map +0 -1
  599. package/dist/cli/structured.js.map +0 -1
  600. package/dist/cli/todoMarkdown.js.map +0 -1
  601. package/dist/cli/todoSeverity.js.map +0 -1
  602. package/dist/core/difflib.js.map +0 -1
  603. package/dist/core/envPaths.js.map +0 -1
  604. package/dist/core/jsonValue.js.map +0 -1
  605. package/dist/core/paths.js.map +0 -1
  606. package/dist/core/pyjson.js.map +0 -1
  607. package/dist/core/sourceRoot.js.map +0 -1
  608. package/dist/core/toml.js.map +0 -1
  609. package/dist/core/yaml.js.map +0 -1
  610. package/dist/eval/evalSkills.js.map +0 -1
  611. package/dist/eval/semanticEval.js.map +0 -1
  612. package/dist/eval/semanticFixtures.js.map +0 -1
  613. package/dist/hooks/common.js.map +0 -1
  614. package/dist/hooks/compaction/apply.js.map +0 -1
  615. package/dist/hooks/compaction/dryRun.js.map +0 -1
  616. package/dist/hooks/compaction/index.js.map +0 -1
  617. package/dist/hooks/compaction/parse.js.map +0 -1
  618. package/dist/hooks/compaction/retention.js.map +0 -1
  619. package/dist/hooks/compaction/status.js.map +0 -1
  620. package/dist/hooks/compaction/types.js.map +0 -1
  621. package/dist/hooks/cursorPreToolUse.js +0 -19
  622. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  623. package/dist/hooks/cursorSessionStart.js +0 -79
  624. package/dist/hooks/cursorSessionStart.js.map +0 -1
  625. package/dist/hooks/sessionStart.js +0 -216
  626. package/dist/hooks/sessionStart.js.map +0 -1
  627. package/dist/hooks/sessionStop.js +0 -206
  628. package/dist/hooks/sessionStop.js.map +0 -1
  629. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  630. package/dist/hooks/validateArtifact/index.js.map +0 -1
  631. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  632. package/dist/hooks/validateArtifact/runtime.js +0 -86
  633. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  634. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  635. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  636. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  637. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  638. package/dist/registries/artifactProtocolIds.js.map +0 -1
  639. package/dist/registries/artifactRegistry.js.map +0 -1
  640. package/dist/registries/capabilityContract.js.map +0 -1
  641. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  642. package/dist/registries/packageRegistry.js.map +0 -1
  643. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  644. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  645. package/dist/registries/triggerLoader.js.map +0 -1
  646. package/dist/release/releaseMetadata.js.map +0 -1
  647. package/dist/setup/codex/agents.js +0 -96
  648. package/dist/setup/codex/agents.js.map +0 -1
  649. package/dist/setup/codex/cli.js +0 -161
  650. package/dist/setup/codex/cli.js.map +0 -1
  651. package/dist/setup/codex/configToml.js +0 -639
  652. package/dist/setup/codex/configToml.js.map +0 -1
  653. package/dist/setup/codex/constants.js +0 -29
  654. package/dist/setup/codex/constants.js.map +0 -1
  655. package/dist/setup/codex/installRoot.js +0 -64
  656. package/dist/setup/codex/installRoot.js.map +0 -1
  657. package/dist/setup/codex/state.js +0 -270
  658. package/dist/setup/codex/state.js.map +0 -1
  659. package/dist/setup/codex.js +0 -12
  660. package/dist/setup/codex.js.map +0 -1
  661. package/dist/setup/copilot.js +0 -227
  662. package/dist/setup/copilot.js.map +0 -1
  663. package/dist/setup/cursor.js +0 -129
  664. package/dist/setup/cursor.js.map +0 -1
  665. package/dist/setup/cursorSurfaces.js +0 -67
  666. package/dist/setup/cursorSurfaces.js.map +0 -1
  667. package/dist/setup/doctor/core.js +0 -300
  668. package/dist/setup/doctor/core.js.map +0 -1
  669. package/dist/setup/doctor/diagnostics.js +0 -240
  670. package/dist/setup/doctor/diagnostics.js.map +0 -1
  671. package/dist/setup/doctor/opencode.js +0 -313
  672. package/dist/setup/doctor/opencode.js.map +0 -1
  673. package/dist/setup/doctor/report.js +0 -425
  674. package/dist/setup/doctor/report.js.map +0 -1
  675. package/dist/setup/doctor.js +0 -10
  676. package/dist/setup/doctor.js.map +0 -1
  677. package/dist/setup/opencode.js.map +0 -1
  678. package/dist/setup/smokeChecks.js.map +0 -1
  679. package/dist/state/installRoot.js.map +0 -1
  680. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  681. package/dist/state/startupAnalysis/contract.js.map +0 -1
  682. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  683. package/dist/state/startupAnalysis/index.js.map +0 -1
  684. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  685. package/dist/state/startupAnalysis/records.js.map +0 -1
  686. package/dist/state/startupAnalysis/report.js.map +0 -1
  687. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  688. package/dist/state/startupAnalysis.js.map +0 -1
  689. package/dist/upgrade/appContentRefresh.js.map +0 -1
  690. package/dist/upgrade/appModel.js.map +0 -1
  691. package/dist/upgrade/bundleEvidence.js.map +0 -1
  692. package/dist/upgrade/channels.js.map +0 -1
  693. package/dist/upgrade/coexistenceProbe.js +0 -107
  694. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  695. package/dist/upgrade/compatibility.js.map +0 -1
  696. package/dist/upgrade/doctor.js.map +0 -1
  697. package/dist/upgrade/doctorClassifier.js.map +0 -1
  698. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  699. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  700. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  701. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  702. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  703. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  704. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  705. package/dist/upgrade/projectIntegration.js.map +0 -1
  706. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  707. package/dist/upgrade/runtimeMigration.js.map +0 -1
  708. package/dist/upgrade/upgradeCommands.js.map +0 -1
  709. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  710. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  711. package/dist/upgrade/versionResolution.js.map +0 -1
  712. package/dist/validate/appHomeContract.js.map +0 -1
  713. package/dist/validate/capability.js.map +0 -1
  714. package/dist/validate/crossCapability.js.map +0 -1
  715. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  716. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  717. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  718. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  719. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  720. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  721. package/dist/validate/lifecycleAdapters.js +0 -62
  722. package/dist/validate/lifecycleAdapters.js.map +0 -1
  723. package/dist/validate/selfAudit.js.map +0 -1
  724. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -0,0 +1,377 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { CANONICAL_DEVELOPMENT_CLI } from "./developmentChannel.js";
4
+ import { ENTITY_LIST_RUNTIME_FAMILIES, } from "../state/entityListRuntimeRegistry.js";
5
+ import { runtimeOperationSpec, runtimeOperationSpecs, } from "../state/write/runtimeOperations.js";
6
+ export const CANONICAL_DEVELOPMENT_INVOCATION = CANONICAL_DEVELOPMENT_CLI;
7
+ const LOCAL_RUNTIME_INVOCATION = "agentera";
8
+ export class DevelopmentInvocationError extends Error {
9
+ classification;
10
+ constructor(classification, reason) {
11
+ super(`development invocation rejected [${classification}]: ${reason}`);
12
+ this.name = "DevelopmentInvocationError";
13
+ this.classification = classification;
14
+ }
15
+ }
16
+ export const DEVELOPMENT_RUNTIME_REQUIRED_FILES = Object.freeze([
17
+ "package.json",
18
+ "README.md",
19
+ "LICENSE",
20
+ "dist/bin/agentera.js",
21
+ "bundle/.agentera-npx-bundle.json",
22
+ "bundle/registry.json",
23
+ "bundle/skills/agentera/SKILL.md",
24
+ "bundle/references/adapters/package-registry.yaml",
25
+ ]);
26
+ export const DEVELOPMENT_CHILD_ENV_ALLOWLIST = Object.freeze([
27
+ "AGENTERA_BOOTSTRAP_SOURCE_ROOT",
28
+ "AGENTERA_HOME",
29
+ "AGENTERA_UPDATE_CHANNEL",
30
+ "DO_NOT_TRACK",
31
+ "HOME",
32
+ "LANG",
33
+ "LC_ALL",
34
+ "PATH",
35
+ "TMPDIR",
36
+ "XDG_CACHE_HOME",
37
+ "XDG_CONFIG_HOME",
38
+ "XDG_DATA_HOME",
39
+ "XDG_STATE_HOME",
40
+ ]);
41
+ export const DEVELOPMENT_CHILD_PATH = process.platform === "win32"
42
+ ? path.dirname(process.execPath)
43
+ : "/usr/bin:/bin";
44
+ function developmentCommand(argumentsText) {
45
+ return `${CANONICAL_DEVELOPMENT_INVOCATION} ${argumentsText}`;
46
+ }
47
+ const profileGroundingCommand = developmentCommand("report profile-grounding --format json");
48
+ const GLOSSARY_PROJECTIONS = {
49
+ "profile_output.command": developmentCommand("report personal-glossary-publish"),
50
+ "profile_grounding.command": profileGroundingCommand,
51
+ "profile_grounding.repair": `Use the Profile capability to repair or regenerate PROFILE.md, then retry \`${profileGroundingCommand}\`; no profile bytes were changed.`,
52
+ "profile_grounding.absent": `Use the Profile capability to generate PROFILE.md, then retry ${profileGroundingCommand}.`,
53
+ "advice.command": developmentCommand("report glossary-advice --input REQUEST --format json"),
54
+ "candidate_retrieval.command": developmentCommand("report personal-glossary-candidates"),
55
+ "candidate_decision.command": developmentCommand("report personal-glossary-decision"),
56
+ "review_records.command": developmentCommand("report personal-glossary-reviews"),
57
+ };
58
+ function invalid(reason) {
59
+ throw new Error(`invalid development command projection: ${reason}`);
60
+ }
61
+ function runtimeValue(source) {
62
+ return source.split(CANONICAL_DEVELOPMENT_INVOCATION).join(LOCAL_RUNTIME_INVOCATION);
63
+ }
64
+ function assertExact(value, owner, source) {
65
+ if (typeof value !== "string" || value !== source)
66
+ invalid(`'${owner}' does not match its code-owned exact source value`);
67
+ return runtimeValue(source);
68
+ }
69
+ function commandWords(command) {
70
+ const words = [];
71
+ let value = "";
72
+ let started = false;
73
+ let quote = null;
74
+ for (let index = 0; index < command.length; index += 1) {
75
+ const character = command[index];
76
+ if (quote) {
77
+ if (character === quote) {
78
+ quote = null;
79
+ started = true;
80
+ continue;
81
+ }
82
+ if (quote === '"' && character === "\\") {
83
+ const escaped = command[++index];
84
+ if (escaped === undefined)
85
+ invalid("trailing escape");
86
+ if (escaped === "\n" || escaped === "\r")
87
+ invalid("shell continuation is not allowed");
88
+ value += escaped;
89
+ started = true;
90
+ continue;
91
+ }
92
+ if (quote === '"' && (character === "`" || (character === "$" && command[index + 1] === "(")))
93
+ invalid("command substitution is not allowed");
94
+ value += character;
95
+ started = true;
96
+ continue;
97
+ }
98
+ if (character === "\n" || character === "\r")
99
+ invalid("line separators are allowed only inside one quoted argument");
100
+ if (/\s/u.test(character)) {
101
+ if (started) {
102
+ words.push({ value });
103
+ value = "";
104
+ started = false;
105
+ }
106
+ continue;
107
+ }
108
+ if (character === "'" || character === '"') {
109
+ quote = character;
110
+ started = true;
111
+ continue;
112
+ }
113
+ if (character === "\\") {
114
+ const escaped = command[++index];
115
+ if (escaped === undefined)
116
+ invalid("trailing escape");
117
+ if (escaped === "\n" || escaped === "\r")
118
+ invalid("shell continuation is not allowed");
119
+ value += escaped;
120
+ started = true;
121
+ continue;
122
+ }
123
+ if (";&|<>()`".includes(character) || (character === "$" && command[index + 1] === "("))
124
+ invalid("composition, redirection, substitution, and grouping are not allowed");
125
+ value += character;
126
+ started = true;
127
+ }
128
+ if (quote)
129
+ invalid("unclosed quote");
130
+ if (started)
131
+ words.push({ value });
132
+ return words;
133
+ }
134
+ function parsedDevelopmentWords(command, classification) {
135
+ try {
136
+ return commandWords(command).map(({ value }) => value);
137
+ }
138
+ catch (error) {
139
+ throw new DevelopmentInvocationError(classification, error instanceof Error ? error.message : String(error));
140
+ }
141
+ }
142
+ function hasDevelopmentPrefix(words) {
143
+ return words[0] === "npx" && words[1] === "-y" && words[2] === "agentera@next";
144
+ }
145
+ /**
146
+ * Bind an untrusted command specification to one exact code-owned development
147
+ * command before a caller crosses a process boundary. The returned argv omits
148
+ * npx and the package selector because callers execute a verified local bin.
149
+ */
150
+ export function bindDevelopmentInvocation(identity, candidate) {
151
+ if (!/^[a-z0-9][a-z0-9_.:-]*$/u.test(identity.owner)) {
152
+ throw new DevelopmentInvocationError("invalid_authority", "owner is not a canonical identity");
153
+ }
154
+ const authorityWords = parsedDevelopmentWords(identity.source, "invalid_authority");
155
+ if (!hasDevelopmentPrefix(authorityWords) || authorityWords.length === 3) {
156
+ throw new DevelopmentInvocationError("invalid_authority", `authority must be one complete ${CANONICAL_DEVELOPMENT_INVOCATION} command`);
157
+ }
158
+ const candidateWords = parsedDevelopmentWords(candidate, "malformed");
159
+ if (!hasDevelopmentPrefix(candidateWords)) {
160
+ throw new DevelopmentInvocationError("wrong_channel", `command must begin with the exact ${CANONICAL_DEVELOPMENT_INVOCATION} argv`);
161
+ }
162
+ if (candidate !== identity.source) {
163
+ throw new DevelopmentInvocationError("not_exact", `command does not match code-owned identity '${identity.owner}'`);
164
+ }
165
+ return Object.freeze({
166
+ owner: identity.owner,
167
+ source: identity.source,
168
+ argv: Object.freeze(candidateWords.slice(3)),
169
+ });
170
+ }
171
+ /** Fail closed before process start when a constructed runtime is incomplete. */
172
+ export function assertDevelopmentRuntimeSurface(root) {
173
+ for (const relative of DEVELOPMENT_RUNTIME_REQUIRED_FILES) {
174
+ const target = path.join(root, relative);
175
+ let stat;
176
+ try {
177
+ stat = fs.lstatSync(target);
178
+ }
179
+ catch {
180
+ throw new DevelopmentInvocationError("invalid_authority", `runtime is missing required file '${relative}'`);
181
+ }
182
+ if (!stat.isFile()) {
183
+ throw new DevelopmentInvocationError("invalid_authority", `runtime required file '${relative}' is not a regular file`);
184
+ }
185
+ }
186
+ let manifest;
187
+ try {
188
+ manifest = JSON.parse(fs.readFileSync(path.join(root, "package.json"), "utf8"));
189
+ }
190
+ catch {
191
+ throw new DevelopmentInvocationError("invalid_authority", "package manifest is not valid JSON");
192
+ }
193
+ if (manifest.bin?.agentera !== "dist/bin/agentera.js") {
194
+ throw new DevelopmentInvocationError("invalid_authority", "package bin declaration is not canonical");
195
+ }
196
+ const files = manifest.files;
197
+ if (!Array.isArray(files) || !["dist", "bundle"].every((entry) => files.includes(entry))) {
198
+ throw new DevelopmentInvocationError("invalid_authority", "package files declaration omits dist or bundle");
199
+ }
200
+ const bin = path.join(root, "dist/bin/agentera.js");
201
+ if ((fs.statSync(bin).mode & 0o111) === 0) {
202
+ throw new DevelopmentInvocationError("invalid_authority", "package bin is not executable");
203
+ }
204
+ return bin;
205
+ }
206
+ /** Keep only reviewed process inputs; PATH is always code-owned. */
207
+ export function scrubDevelopmentChildEnvironment(inherited, explicit) {
208
+ const result = {};
209
+ for (const key of DEVELOPMENT_CHILD_ENV_ALLOWLIST) {
210
+ if (key === "PATH")
211
+ continue;
212
+ const value = explicit[key] ?? inherited[key];
213
+ if (value !== undefined)
214
+ result[key] = value;
215
+ }
216
+ result.PATH = DEVELOPMENT_CHILD_PATH;
217
+ return result;
218
+ }
219
+ function fieldValueIssue(field, value) {
220
+ if (field.validValues && !field.validValues.includes(value))
221
+ return "invalid value domain";
222
+ if (field.kind === "boolean" && value !== "true" && value !== "false")
223
+ return "invalid boolean";
224
+ if (field.kind === "integer" && !/^-?(?:0|[1-9][0-9]*)$/u.test(value))
225
+ return "invalid integer";
226
+ if (field.kind === "date" && !/^\d{4}-\d{2}-\d{2}$/u.test(value))
227
+ return "invalid date";
228
+ if (field.kind === "datetime" && !/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/u.test(value))
229
+ return "invalid datetime";
230
+ return undefined;
231
+ }
232
+ function validateOperationExample(spec, template) {
233
+ if (template.runtime !== runtimeValue(template.source))
234
+ invalid(`${spec.artifact}.${spec.verb} has a non-canonical runtime example`);
235
+ if (!template.source.startsWith(`${CANONICAL_DEVELOPMENT_INVOCATION} `))
236
+ invalid(`${spec.artifact}.${spec.verb} example has no canonical prefix`);
237
+ const words = commandWords(template.source).map(({ value }) => value);
238
+ const prefix = ["npx", "-y", "agentera@next", "state", spec.artifact, spec.verb];
239
+ if (!prefix.every((word, index) => words[index] === word))
240
+ invalid(`${spec.artifact}.${spec.verb} example has the wrong operation family`);
241
+ const fields = new Map(spec.fields.map((field) => [field.flag, field]));
242
+ const seen = new Map();
243
+ let input = false;
244
+ let format = false;
245
+ for (let index = prefix.length; index < words.length;) {
246
+ const flag = words[index++];
247
+ if (!flag.startsWith("--") || flag === "--")
248
+ invalid(`${spec.artifact}.${spec.verb} example has an extra positional argument`);
249
+ const count = (seen.get(flag) ?? 0) + 1;
250
+ seen.set(flag, count);
251
+ if (flag === "--dry-run" || flag === "--force") {
252
+ if (count > 1)
253
+ invalid(`${spec.artifact}.${spec.verb} example repeats ${flag}`);
254
+ if (flag === "--force" && !spec.allowForce)
255
+ invalid(`${spec.artifact}.${spec.verb} example uses unauthorized --force`);
256
+ continue;
257
+ }
258
+ const bareBoolean = fields.get(flag);
259
+ if (bareBoolean?.kind === "boolean" && (words[index] === undefined || words[index].startsWith("--"))) {
260
+ if (!bareBoolean.repeatable && count > 1)
261
+ invalid(`${spec.artifact}.${spec.verb} example repeats ${flag}`);
262
+ continue;
263
+ }
264
+ const argument = words[index++];
265
+ if (argument === undefined || argument.startsWith("--"))
266
+ invalid(`${spec.artifact}.${spec.verb} ${flag} needs one non-option value`);
267
+ if (flag === "--format") {
268
+ if (count > 1 || !spec.projection.formatValues.includes(argument))
269
+ invalid(`${spec.artifact}.${spec.verb} example has an invalid format`);
270
+ format = true;
271
+ continue;
272
+ }
273
+ if (flag === "--input") {
274
+ if (count > 1 || spec.inputMode !== "structured")
275
+ invalid(`${spec.artifact}.${spec.verb} example has an unauthorized input`);
276
+ input = true;
277
+ continue;
278
+ }
279
+ const field = fields.get(flag);
280
+ if (!field)
281
+ invalid(`${spec.artifact}.${spec.verb} example has unauthorized flag ${flag}`);
282
+ if (!field.repeatable && count > 1)
283
+ invalid(`${spec.artifact}.${spec.verb} example repeats ${flag}`);
284
+ const issue = fieldValueIssue(field, argument);
285
+ if (issue)
286
+ invalid(`${spec.artifact}.${spec.verb} example has ${issue} for ${flag}`);
287
+ }
288
+ if (!format)
289
+ invalid(`${spec.artifact}.${spec.verb} example omits --format`);
290
+ if (spec.inputMode === "structured" && !spec.inputOptional && !input)
291
+ invalid(`${spec.artifact}.${spec.verb} example omits --input`);
292
+ for (const field of spec.fields) {
293
+ if (field.required && !seen.has(field.flag))
294
+ invalid(`${spec.artifact}.${spec.verb} example omits ${field.flag}`);
295
+ }
296
+ }
297
+ const validatedOperations = new Set();
298
+ function exactOperation(artifact, verb) {
299
+ const spec = runtimeOperationSpec(artifact, verb);
300
+ if (!spec)
301
+ invalid(`operation '${artifact}.${verb}' is not code-owned`);
302
+ const key = `${artifact}.${verb}`;
303
+ if (!validatedOperations.has(key)) {
304
+ if (spec.projection.recovery.runtime !== runtimeValue(spec.projection.recovery.source))
305
+ invalid(`${key} has a non-canonical runtime recovery`);
306
+ if (spec.projection.examples.length === 0)
307
+ invalid(`${key} has no code-owned example`);
308
+ for (const example of spec.projection.examples)
309
+ validateOperationExample(spec, example);
310
+ validatedOperations.add(key);
311
+ }
312
+ return spec;
313
+ }
314
+ export function projectRuntimeOperationRecovery(value, artifact, verb) {
315
+ const spec = exactOperation(artifact, verb);
316
+ return assertExact(value, `mutation.${artifact}.${verb}.recovery`, spec.projection.recovery.source);
317
+ }
318
+ export function projectRuntimeOperationExamples(value, artifact, verb) {
319
+ const spec = exactOperation(artifact, verb);
320
+ if (!Array.isArray(value) || value.length !== spec.projection.examples.length)
321
+ invalid(`'mutation.${artifact}.${verb}.examples' does not match its code-owned exact source list`);
322
+ return spec.projection.examples.map((template, index) => assertExact(value[index], `mutation.${artifact}.${verb}.examples[${index}]`, template.source));
323
+ }
324
+ export function projectEntityDevelopmentValue(value, familyKey, field) {
325
+ const family = ENTITY_LIST_RUNTIME_FAMILIES.find(({ key }) => key === familyKey);
326
+ const source = family?.projection[field];
327
+ if (!family || typeof source !== "string")
328
+ invalid(`retrieval.${familyKey}.${field} is not a code-owned projection`);
329
+ return assertExact(value, `retrieval.${familyKey}.${field}`, source);
330
+ }
331
+ export function projectGlossaryDevelopmentValue(value, owner) {
332
+ return assertExact(value, `glossary.${owner}`, GLOSSARY_PROJECTIONS[owner]);
333
+ }
334
+ export function developmentProjectionOwners() {
335
+ const owners = [];
336
+ for (const spec of runtimeOperationSpecs()) {
337
+ exactOperation(spec.artifact, spec.verb);
338
+ owners.push({
339
+ owner: `mutation.${spec.artifact}.${spec.verb}.recovery`,
340
+ family: "mutation",
341
+ ...spec.projection.recovery,
342
+ consumers: ["schema", "help", "explain"],
343
+ });
344
+ spec.projection.examples.forEach((example, index) => owners.push({
345
+ owner: `mutation.${spec.artifact}.${spec.verb}.examples[${index}]`,
346
+ family: "mutation",
347
+ ...example,
348
+ consumers: ["schema", "help", "explain", "parity"],
349
+ }));
350
+ }
351
+ for (const family of ENTITY_LIST_RUNTIME_FAMILIES) {
352
+ for (const field of ["list", "get", "example", "bareRecovery"]) {
353
+ const source = family.projection[field];
354
+ if (typeof source !== "string")
355
+ continue;
356
+ owners.push({
357
+ owner: `retrieval.${family.key}.${field}`,
358
+ family: "retrieval",
359
+ source,
360
+ runtime: runtimeValue(source),
361
+ consumers: ["schema", "help", "runtime_failure"],
362
+ });
363
+ }
364
+ }
365
+ for (const [owner, source] of Object.entries(GLOSSARY_PROJECTIONS)) {
366
+ owners.push({
367
+ owner: `glossary.${owner}`,
368
+ family: "glossary",
369
+ source,
370
+ runtime: runtimeValue(source),
371
+ consumers: ["schema", "help", "runtime_contract"],
372
+ });
373
+ }
374
+ if (new Set(owners.map(({ owner }) => owner)).size !== owners.length)
375
+ invalid("code-owned projection owner identities are not unique");
376
+ return owners;
377
+ }
@@ -271,4 +271,3 @@ export function unifiedDiff(a, b, fromfile = "", tofile = "", fromfiledate = "",
271
271
  export function splitLinesKeepEnds(text) {
272
272
  return text.match(/[^\n]*\n|[^\n]+/g) ?? [];
273
273
  }
274
- //# sourceMappingURL=difflib.js.map
@@ -18,4 +18,3 @@ export function resolveXdgDataHome(env, home = os.homedir()) {
18
18
  const xdg = env.XDG_DATA_HOME;
19
19
  return xdg ? expanduser(xdg) : path.join(expanduser(home), ".local", "share");
20
20
  }
21
- //# sourceMappingURL=envPaths.js.map
@@ -3,4 +3,3 @@
3
3
  * Prefer these types at module export boundaries; narrow with casts only at IO edges.
4
4
  */
5
5
  export {};
6
- //# sourceMappingURL=jsonValue.js.map
@@ -47,4 +47,3 @@ export function isFile(p) {
47
47
  return false;
48
48
  }
49
49
  }
50
- //# sourceMappingURL=paths.js.map
@@ -163,4 +163,3 @@ export function pyJsonIndentSorted(value, indent = 2, level = 0, hook) {
163
163
  }
164
164
  return "null";
165
165
  }
166
- //# sourceMappingURL=pyjson.js.map
@@ -0,0 +1,4 @@
1
+ /** Quote one argument for a POSIX shell command without permitting expansion. */
2
+ export function shellQuoteArgument(value) {
3
+ return `'${String(value).replaceAll("'", "'\\''")}'`;
4
+ }
@@ -0,0 +1,23 @@
1
+ import YAML from "yaml";
2
+ export function declaresAgenteraSkill(text) {
3
+ const lines = text.split(/\r?\n/);
4
+ if (lines[0] !== "---")
5
+ return false;
6
+ const closing = lines.indexOf("---", 1);
7
+ if (closing === -1)
8
+ return false;
9
+ const metadataLines = lines.slice(1, closing);
10
+ try {
11
+ const document = YAML.parseDocument(metadataLines.join("\n"));
12
+ if (document.errors.length > 0)
13
+ return false;
14
+ const metadata = document.toJS();
15
+ if (metadata === null || typeof metadata !== "object" || Array.isArray(metadata))
16
+ return false;
17
+ }
18
+ catch {
19
+ return false;
20
+ }
21
+ const names = metadataLines.filter((line) => /^name\s*:/.test(line));
22
+ return names.length === 1 && names[0] === "name: agentera";
23
+ }
@@ -40,9 +40,9 @@ function walkUp(start) {
40
40
  }
41
41
  /**
42
42
  * Resolve the Agentera "app source root" that holds skills/, scripts/, schemas,
43
- * references/, etc. Mirrors the bootstrap precedence in src/agentera/__main__.py:
44
- * AGENTERA_BOOTSTRAP_SOURCE_ROOT wins, then a walk-up from the module location,
45
- * then a walk-up from the working directory.
43
+ * references/, etc. AGENTERA_BOOTSTRAP_SOURCE_ROOT wins, followed by a
44
+ * checkout containing the executing module, a self-contained package bundle,
45
+ * and finally a walk-up from the working directory.
46
46
  */
47
47
  export function resolveSourceRoot(env = process.env) {
48
48
  const configured = env[BOOTSTRAP_SOURCE_ROOT_ENV];
@@ -54,19 +54,16 @@ export function resolveSourceRoot(env = process.env) {
54
54
  if (fromModule) {
55
55
  return fromModule;
56
56
  }
57
+ // A packaged CLI must keep runtime code and app data on the same version.
58
+ // Otherwise an Agentera checkout used as cwd can override the package bundle.
59
+ const bundled = path.resolve(moduleDir, "..", "..", "bundle");
60
+ if (isNpxBundleRoot(bundled)) {
61
+ return bundled;
62
+ }
57
63
  const fromCwd = walkUp(process.cwd());
58
64
  if (fromCwd) {
59
65
  return fromCwd;
60
66
  }
61
- // Self-contained npm package: app data is staged under <packageRoot>/bundle
62
- // (see scripts/copy-bundle.mjs). This makes `npx agentera` work with no repo
63
- // checkout and no AGENTERA_HOME. Only reached when no checkout/app-home is
64
- // found, so it never overrides a real checkout, installed app, or cwd match.
65
- const bundled = path.resolve(moduleDir, "..", "..", "bundle");
66
- if (hasSourceMarker(bundled)) {
67
- return bundled;
68
- }
69
67
  // Last resort: package root two levels above dist/core.
70
68
  return path.resolve(moduleDir, "..", "..");
71
69
  }
72
- //# sourceMappingURL=sourceRoot.js.map
@@ -0,0 +1,10 @@
1
+ export function truncateCodePoints(value, maxChars, suffix = "", trimTrailingWhitespace = false) {
2
+ const characters = Array.from(value);
3
+ if (characters.length <= maxChars)
4
+ return value;
5
+ const suffixCharacters = Array.from(suffix).slice(0, maxChars);
6
+ const prefix = characters
7
+ .slice(0, Math.max(0, maxChars - suffixCharacters.length))
8
+ .join("");
9
+ return `${trimTrailingWhitespace ? prefix.replace(/\s+$/, "") : prefix}${suffixCharacters.join("")}`;
10
+ }
package/dist/core/toml.js CHANGED
@@ -8,4 +8,3 @@ export function parseToml(text) {
8
8
  export function loadTomlFile(path) {
9
9
  return parseToml(fs.readFileSync(path, "utf8"));
10
10
  }
11
- //# sourceMappingURL=toml.js.map
package/dist/core/yaml.js CHANGED
@@ -1,5 +1,34 @@
1
+ import crypto from "node:crypto";
1
2
  import fs from "node:fs";
2
3
  import YAML from "yaml";
4
+ const MAX_MAPPING_CACHE_ENTRIES = 64;
5
+ let activeMappingCache = null;
6
+ /** Run synchronous work with a bounded, content-invalidated YAML mapping cache. */
7
+ export function withYamlMappingCache(run) {
8
+ return withActiveYamlMappingCache(run, false);
9
+ }
10
+ /** Share frozen YAML mappings only inside one trusted read-only operation. */
11
+ export function withReadOnlyYamlMappingCache(run) {
12
+ return withActiveYamlMappingCache(run, true);
13
+ }
14
+ function withActiveYamlMappingCache(run, readOnly) {
15
+ const previous = activeMappingCache;
16
+ activeMappingCache = { entries: new Map(), readOnly };
17
+ try {
18
+ return run();
19
+ }
20
+ finally {
21
+ activeMappingCache = previous;
22
+ }
23
+ }
24
+ function freezeYamlValue(value, seen = new WeakSet()) {
25
+ if (value === null || typeof value !== "object" || seen.has(value))
26
+ return;
27
+ seen.add(value);
28
+ for (const child of Object.values(value))
29
+ freezeYamlValue(child, seen);
30
+ Object.freeze(value);
31
+ }
3
32
  /**
4
33
  * Parse YAML text as a mapping. Empty/whitespace-only documents return `{}`.
5
34
  * Non-mapping roots throw. Faithful port of `scripts/yaml_mapping.py`.
@@ -16,10 +45,40 @@ export function loadYamlMapping(text) {
16
45
  }
17
46
  /** Read `path` and parse it with {@link loadYamlMapping}. */
18
47
  export function loadYamlMappingFile(path) {
19
- return loadYamlMapping(fs.readFileSync(path, "utf8"));
48
+ const cache = activeMappingCache;
49
+ if (cache === null)
50
+ return loadYamlMapping(fs.readFileSync(path, "utf8"));
51
+ // One synchronous operation sees a stable frozen authority snapshot.
52
+ // A fresh scope still fingerprints its current bytes before reuse.
53
+ if (cache.readOnly) {
54
+ const cached = cache.entries.get(path);
55
+ if (cached)
56
+ return cached.value;
57
+ }
58
+ const text = fs.readFileSync(path, "utf8");
59
+ const digest = crypto.createHash("sha256").update(text).digest("hex");
60
+ // A digest check preserves fresh authority reads while avoiding repeated parses.
61
+ const cached = cache.entries.get(path);
62
+ if (cached?.digest === digest)
63
+ return cache.readOnly ? cached.value : structuredClone(cached.value);
64
+ const value = loadYamlMapping(text);
65
+ if (cache.readOnly)
66
+ freezeYamlValue(value);
67
+ cache.entries.set(path, { digest, value });
68
+ if (cache.entries.size > MAX_MAPPING_CACHE_ENTRIES) {
69
+ cache.entries.delete(cache.entries.keys().next().value);
70
+ }
71
+ return cache.readOnly ? value : structuredClone(value);
20
72
  }
21
73
  /** Parse arbitrary YAML (any root type). */
22
74
  export function parseYaml(text) {
23
75
  return YAML.parse(text);
24
76
  }
25
- //# sourceMappingURL=yaml.js.map
77
+ /** Serialize a YAML mapping with stable block-style prose and insertion-order keys. */
78
+ export function dumpYamlMapping(doc) {
79
+ return YAML.stringify(doc, {
80
+ blockQuote: "literal",
81
+ collectionStyle: "block",
82
+ lineWidth: 0,
83
+ });
84
+ }
@@ -41,7 +41,11 @@ export function detectRuntime(explicit, opts = {}) {
41
41
  const which = opts.which ?? realWhich;
42
42
  const err = opts.err ?? ((line) => process.stderr.write(line + "\n"));
43
43
  if (explicit && explicit !== "auto") {
44
- 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") {
45
49
  if (which("cursor-agent") === null && which("agent") === null) {
46
50
  err("ERROR: 'cursor-agent' not found on PATH. Install Cursor Agent CLI " +
47
51
  "and ensure the binary is accessible.");
@@ -50,17 +54,14 @@ export function detectRuntime(explicit, opts = {}) {
50
54
  }
51
55
  return explicit;
52
56
  }
53
- const hasClaude = which("claude") !== null;
54
57
  const hasOpencode = which("opencode") !== null;
55
58
  const hasCursorAgent = which("cursor-agent") !== null || which("agent") !== null;
56
- if (hasClaude)
57
- return "claude";
58
59
  if (hasOpencode)
59
60
  return "opencode";
60
61
  if (hasCursorAgent)
61
- return "cursor-agent";
62
- err("ERROR: Neither 'claude', 'opencode', nor 'cursor-agent' found on PATH. " +
63
- "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.");
64
65
  throw new ExitError(1);
65
66
  }
66
67
  export function parseFrontmatterName(text) {
@@ -108,7 +109,7 @@ const realRun = (cmd, opts) => {
108
109
  timedOut: result.signal === "SIGTERM" && result.error !== undefined,
109
110
  };
110
111
  };
111
- export function invokeSkill(name, prompt, timeout, runtime = "claude", opts = {}) {
112
+ export function invokeSkill(name, prompt, timeout, runtime = "opencode", opts = {}) {
112
113
  const which = opts.which ?? realWhich;
113
114
  const run = opts.run ?? realRun;
114
115
  const repoRoot = opts.repoRoot ?? resolveSourceRoot();
@@ -118,14 +119,13 @@ export function invokeSkill(name, prompt, timeout, runtime = "claude", opts = {}
118
119
  cmd = ["opencode", "run", "--prompt"];
119
120
  stdinPrompt = prompt;
120
121
  }
121
- else if (runtime === "cursor-agent") {
122
+ else if (runtime === "cursor") {
122
123
  const binary = which("cursor-agent") ? "cursor-agent" : "agent";
123
124
  cmd = [binary, "-p", "--output-format", "json", "--force", prompt];
124
125
  stdinPrompt = null;
125
126
  }
126
127
  else {
127
- cmd = ["claude", "-p", "--output-format", "json"];
128
- stdinPrompt = prompt;
128
+ throw new ExitError(1, `unsupported active eval runtime: ${runtime}`);
129
129
  }
130
130
  const start = Date.now();
131
131
  let error = null;
@@ -168,7 +168,7 @@ export function invokeSkill(name, prompt, timeout, runtime = "claude", opts = {}
168
168
  error,
169
169
  };
170
170
  }
171
- export function runSkills(skills, timeout, _parallel, runtime = "claude", opts = {}) {
171
+ export function runSkills(skills, timeout, _parallel, runtime = "opencode", opts = {}) {
172
172
  // Parallelism in the Python runner is a maintainer perf detail; the smoke
173
173
  // semantics (one result per skill, original order) are preserved sequentially.
174
174
  return skills.map((entry) => invokeSkill(entry.name, entry.prompt, timeout, runtime, opts));
@@ -184,7 +184,7 @@ export function buildReport(results) {
184
184
  results,
185
185
  };
186
186
  }
187
- export function buildDryRun(skills, runtime = "claude", runtimeSource = "auto-detected") {
187
+ export function buildDryRun(skills, runtime = "opencode", runtimeSource = "auto-detected") {
188
188
  return {
189
189
  mode: "dry-run",
190
190
  runtime: `${runtime} (${runtimeSource})`,
@@ -260,4 +260,3 @@ export function parseArgs(argv) {
260
260
  }
261
261
  return args;
262
262
  }
263
- //# sourceMappingURL=evalSkills.js.map