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
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * `state decisions` query (decisions.yaml + archive) plus the
3
- * decision context enrichment utilities consumed by prime/hej.
3
+ * decision context enrichment utilities consumed by prime.
4
4
  *
5
5
  * The contract for decision context: never infer satisfaction from
6
6
  * downstream references, commits, or compacted history. Only
@@ -9,9 +9,12 @@
9
9
  * satisfied; everything else carries a `review_needed` flag and
10
10
  * a `caveats` array.
11
11
  */
12
- import { emitStateStructured, extractEntries, loadArtifact, missingSchemaError, sourceMetadata, stringFieldNames, structuredState, } from "../../stateQuery.js";
13
- import { artifactPath } from "../../appContext.js";
14
- import { out, err } from "./shared.js";
12
+ import { extractEntries, } from "../../stateQuery.js";
13
+ import { out } from "./shared.js";
14
+ import { hydrateDecisionRecords, } from "../../../state/decisionOverlay.js";
15
+ import { listDecisionEntities } from "../../../state/decisionEntities.js";
16
+ import { emitStructured } from "../../structured.js";
17
+ import YAML from "yaml";
15
18
  const DECISION_CONTEXT_FIELDS = [
16
19
  "number",
17
20
  "date",
@@ -38,6 +41,7 @@ export function displayFields(fields, limit = 6) {
38
41
  return ordered.slice(0, limit);
39
42
  }
40
43
  function isEmptyValue(v) {
44
+ // cast: v is a field value from a parsed decisions.yaml entry (IO boundary)
41
45
  return (v === null ||
42
46
  v === undefined ||
43
47
  v === "" ||
@@ -45,6 +49,7 @@ function isEmptyValue(v) {
45
49
  (typeof v === "object" && !Array.isArray(v) && Object.keys(v).length === 0));
46
50
  }
47
51
  function decisionArchiveEntry(entry) {
52
+ // cast: entry comes from the parsed decisions archive array (YAML IO boundary)
48
53
  const archiveEntry = entry && typeof entry === "object" && !Array.isArray(entry) ? { ...entry } : { summary: String(entry) };
49
54
  archiveEntry.compacted = true;
50
55
  const summary = String(archiveEntry.summary ?? "");
@@ -60,11 +65,12 @@ function decisionArchiveEntry(entry) {
60
65
  export function extractDecisionEntries(data) {
61
66
  if (!data || typeof data !== "object" || Array.isArray(data))
62
67
  return extractEntries(data);
68
+ // cast: data is the parsed decisions artifact from loadArtifact (YAML IO boundary)
63
69
  const d = data;
64
70
  const decisions = d.decisions ?? [];
65
71
  const archive = d.archive ?? [];
66
72
  const entries = Array.isArray(decisions)
67
- ? decisions.filter((e) => e && typeof e === "object" && !Array.isArray(e))
73
+ ? decisions.filter((e) => Boolean(e && typeof e === "object" && !Array.isArray(e)))
68
74
  : [];
69
75
  if (Array.isArray(archive)) {
70
76
  for (const entry of archive)
@@ -72,10 +78,8 @@ export function extractDecisionEntries(data) {
72
78
  }
73
79
  return entries;
74
80
  }
75
- function filterDecisionsByTopic(entries, topic, fields) {
76
- const t = topic.toLowerCase();
77
- const fnames = [...stringFieldNames(fields), "summary", "outcome"];
78
- return entries.filter((entry) => fnames.some((f) => String(entry[f] ?? "").toLowerCase().includes(t)));
81
+ export function hydrateDecisionEntries(entries, projectRoot = process.cwd()) {
82
+ return hydrateDecisionRecords(entries, projectRoot);
79
83
  }
80
84
  function decisionFieldMissing(entry, field) {
81
85
  return isEmptyValue(entry[field]);
@@ -110,6 +114,7 @@ export function decisionSatisfactionContext(entry) {
110
114
  caveats: ["Missing legacy satisfaction state is not treated as satisfied."],
111
115
  };
112
116
  }
117
+ // cast: satisfaction is read from a parsed decisions.yaml entry (IO boundary)
113
118
  const sat = satisfaction;
114
119
  const state = sat.state;
115
120
  const evidence = sat.evidence ?? null;
@@ -117,15 +122,23 @@ export function decisionSatisfactionContext(entry) {
117
122
  const explicitReviewNeeded = sat.review_needed === true;
118
123
  let caveats = [];
119
124
  let reviewNeeded = true;
120
- if (state === "user_confirmed_satisfied") {
125
+ let source = "decision.satisfaction";
126
+ if (state === null || state === undefined || state === "") {
127
+ source = "missing_legacy_state";
128
+ caveats.push("Missing legacy satisfaction state is not treated as satisfied.");
129
+ }
130
+ else if (state === "user_confirmed_satisfied") {
131
+ // cast: user_confirmation is read from a parsed decisions.yaml entry (IO boundary)
132
+ const confirmation = userConfirmation && typeof userConfirmation === "object" && !Array.isArray(userConfirmation)
133
+ ? userConfirmation
134
+ : {};
121
135
  reviewNeeded =
122
- !(userConfirmation && typeof userConfirmation === "object" && !Array.isArray(userConfirmation)) ||
123
- Object.keys(userConfirmation).length === 0;
136
+ !isNonEmptyText(confirmation.confirmed_by) || !isNonEmptyText(confirmation.confirmed_at);
124
137
  if (reviewNeeded)
125
138
  caveats.push("User-confirmed satisfaction is missing explicit user confirmation metadata.");
126
139
  }
127
140
  else if (state === "provisionally_satisfied") {
128
- if (isEmptyValue(evidence))
141
+ if (!isNonEmptyText(evidence))
129
142
  caveats.push("Provisional satisfaction is missing concrete evidence.");
130
143
  caveats.push("Provisional satisfaction still requires user confirmation.");
131
144
  }
@@ -150,13 +163,18 @@ export function decisionSatisfactionContext(entry) {
150
163
  if (!("user_confirmation" in enriched))
151
164
  enriched.user_confirmation = userConfirmation;
152
165
  enriched.review_needed = reviewNeeded;
153
- enriched.source = "decision.satisfaction";
166
+ enriched.source = source;
154
167
  enriched.caveats = caveats;
155
168
  return enriched;
156
169
  }
157
- export function decisionContextEntry(entry) {
170
+ function isNonEmptyText(value) {
171
+ return typeof value === "string" && value.trim().length > 0;
172
+ }
173
+ export function decisionContextEntry(entry, options = {}) {
158
174
  const enriched = { ...entry };
159
- if ((enriched.outcome === null || enriched.outcome === undefined || enriched.outcome === "") &&
175
+ const inferOutcome = options.inferOutcome !== false;
176
+ if (inferOutcome &&
177
+ (enriched.outcome === null || enriched.outcome === undefined || enriched.outcome === "") &&
160
178
  enriched.choice !== null && enriched.choice !== undefined && enriched.choice !== "") {
161
179
  enriched.outcome = enriched.choice;
162
180
  }
@@ -164,7 +182,8 @@ export function decisionContextEntry(entry) {
164
182
  ("summary" in enriched &&
165
183
  ["question", "reasoning", "confidence"].some((field) => decisionFieldMissing(enriched, field)));
166
184
  const missingFields = DECISION_CONTEXT_FIELDS.filter((field) => decisionFieldMissing(enriched, field));
167
- if (decisionFieldMissing(enriched, "choice") && decisionFieldMissing(enriched, "outcome")) {
185
+ if ((inferOutcome && decisionFieldMissing(enriched, "choice") && decisionFieldMissing(enriched, "outcome")) ||
186
+ (!inferOutcome && decisionFieldMissing(enriched, "outcome"))) {
168
187
  missingFields.push("outcome");
169
188
  }
170
189
  const downstreamReferences = decisionDownstreamReferences(enriched);
@@ -194,11 +213,12 @@ export function decisionSourceContract(source, entries, filters) {
194
213
  const activeFilters = Object.fromEntries(Object.entries(filters).filter(([, v]) => v !== null && v !== undefined));
195
214
  const filteredNoMatch = sourceExists && Object.keys(activeFilters).length > 0 && entries.length === 0;
196
215
  const compactedEntries = entries.filter((e) => e.compacted).length;
197
- const entriesWithMissingFields = entries.filter((e) => e.missing_fields && e.missing_fields.length > 0).length;
216
+ const entriesWithMissingFields = entries.filter((e) => Array.isArray(e.missing_fields) && e.missing_fields.length > 0).length;
198
217
  const entriesWithoutDownstream = entries.filter((e) => e.downstream_consequence_references === null).length;
199
- const entriesRequiringSatisfactionReview = entries.filter((e) => e.satisfaction && typeof e.satisfaction === "object" && e.satisfaction.review_needed).length;
218
+ const entriesRequiringSatisfactionReview = entries.filter((e) => e.satisfaction && typeof e.satisfaction === "object" && !Array.isArray(e.satisfaction) && e.satisfaction.review_needed).length;
200
219
  const userConfirmedSatisfied = entries.filter((e) => e.satisfaction &&
201
220
  typeof e.satisfaction === "object" &&
221
+ !Array.isArray(e.satisfaction) &&
202
222
  e.satisfaction.state === "user_confirmed_satisfied" &&
203
223
  !e.satisfaction.review_needed).length;
204
224
  const completeForReturned = sourceExists && entries.every((e) => e.context_complete === true);
@@ -330,17 +350,18 @@ export function decisionSourceContract(source, entries, filters) {
330
350
  do_not: "Do not expand archive decisions or reconstruct missing context from git history.",
331
351
  },
332
352
  raw_artifact_access_boundary: {
333
- normal_deliberation: "skip raw `.agentera/decisions.yaml` reads when complete_for_normal_deliberation_context=true",
353
+ normal_deliberation: "skip raw decision-state reads when complete_for_normal_deliberation_context=true",
334
354
  allowed_raw_artifact_uses: [
335
- "Resonera-owned decision writes or repairs",
355
+ "Discuss-owned decision writes or repairs",
336
356
  "artifact corruption diagnostics",
337
357
  "CLI defect investigation",
338
358
  ],
339
359
  },
340
360
  raw_artifact_reads_required: false,
341
- raw_artifact_read_policy: "Use `agentera decisions --format json` for normal deliberation context and key normal use off " +
361
+ raw_artifact_read_policy: "Use `agentera state decisions list --limit 20 --format json` for bounded normal deliberation discovery; " +
362
+ "use `agentera state decisions get --id ID --format json` for exact detail, and key normal use off " +
342
363
  "complete_for_normal_deliberation_context. " +
343
- "Do not read `.agentera/decisions.yaml` unless investigating artifact corruption or CLI defects; " +
364
+ "Do not read raw decision state unless investigating entity corruption or CLI defects; " +
344
365
  "historical compacted gaps are exposed through missing_fields and caveats.",
345
366
  caveats,
346
367
  fallback_behavior: {
@@ -354,44 +375,13 @@ export function decisionSourceContract(source, entries, filters) {
354
375
  filters: activeFilters,
355
376
  };
356
377
  }
357
- export function queryDecisions(args, schemas, io) {
358
- const o = out(io);
359
- const e = err(io);
360
- const info = schemas.decisions;
361
- if (!info) {
362
- e(missingSchemaError("decisions") + "\n");
363
- return 1;
364
- }
365
- const p = artifactPath(info, "decisions");
366
- const data = loadArtifact(p);
367
- let entries = extractDecisionEntries(data);
368
- const topic = args.topic ?? null;
369
- if (topic)
370
- entries = filterDecisionsByTopic(entries, topic, info.fields);
378
+ export function queryDecisions(args, _schemas, io) {
379
+ const output = out(io);
371
380
  const format = args.format ?? "text";
372
- if (format !== "text") {
373
- const enriched = entries.map((entry) => decisionContextEntry(entry));
374
- const source = sourceMetadata("decisions", p);
375
- const filters = { topic };
376
- return emitStateStructured("decisions", structuredState("decisions", enriched, source, {
377
- filters,
378
- sourceContract: decisionSourceContract(source, enriched, filters),
379
- }), format, args.fields, o, e);
380
- }
381
- if (entries.length === 0)
382
- return 0;
383
- const disp = displayFields(info.fields);
384
- for (const entry of entries) {
385
- const parts = [];
386
- for (const fn of disp) {
387
- const v = entry[fn];
388
- if (v !== null && v !== undefined && v !== "" && !Array.isArray(v) && typeof v !== "object") {
389
- parts.push(`${fn}=${v}`);
390
- }
391
- }
392
- if (parts.length > 0)
393
- o(parts.join(" | ") + "\n");
394
- }
381
+ const response = listDecisionEntities(process.cwd(), args.limit ?? undefined, args.topic ?? undefined, args.cursor ?? undefined, { format });
382
+ if (format === "text")
383
+ output(YAML.stringify(response));
384
+ else
385
+ emitStructured(response, format, output);
395
386
  return 0;
396
387
  }
397
- //# sourceMappingURL=decisions.js.map
@@ -1,93 +1,70 @@
1
- /**
2
- * `state docs` query (DOCS.md / docs.yaml).
3
- *
4
- * Returns the docs index (document, path, last_updated, status) and
5
- * a source_contract that asserts
6
- * `capability_startup_complete` so prime/hej can skip raw
7
- * `.agentera/docs.yaml` reads.
8
- */
9
- import { asList, emitStateStructured, filterByFieldValue, formatEntry, loadArtifact, missingSchemaError, printStatusCounts, sourceMetadata, statusCounts, structuredState, truncate, } from "../../stateQuery.js";
10
- import { artifactPath } from "../../appContext.js";
11
- import { out, err } from "./shared.js";
12
- const STARTUP_COMPLETENESS_MISSING_STATE = [];
1
+ import fs from "node:fs";
2
+ import YAML from "yaml";
3
+ import { StateRetrievalFailure } from "../../../state/directRetrieval.js";
4
+ import { listTodoDocsEntities } from "../../../state/todoDocsEntities.js";
5
+ import { artifactPath, discoverSchemasDir } from "../../appContext.js";
6
+ import { registryArtifactPath } from "../../orientation.js";
7
+ import { capabilityStartupComplete } from "../../startupCompletenessContract.js";
8
+ import { asList, loadArtifact } from "../../stateQuery.js";
9
+ import { emitStructured } from "../../structured.js";
10
+ import { err, out } from "./shared.js";
13
11
  export function queryDocs(args, schemas, io) {
14
- const o = out(io);
15
- const e = err(io);
16
- const info = schemas.docs;
17
- if (!info) {
18
- e(missingSchemaError("docs") + "\n");
19
- return 1;
20
- }
21
- const p = artifactPath(info, "docs");
22
- const data = loadArtifact(p);
12
+ const output = out(io);
23
13
  const format = args.format ?? "text";
24
- const isDict = data !== null && typeof data === "object" && !Array.isArray(data);
25
- if (!isDict) {
26
- if (format !== "text") {
27
- return emitStateStructured("docs", structuredState("docs", [], sourceMetadata("docs", p), {
28
- filters: { topic: args.topic ?? null, status: args.status ?? null },
29
- }), format, args.fields, o, e);
30
- }
31
- return 0;
32
- }
33
- const d = data;
34
- const legacyEntries = asList(d.entries);
35
- if (legacyEntries.length > 0) {
36
- let entries = legacyEntries;
37
- const statusFilter = args.status ?? null;
38
- if (statusFilter)
39
- entries = filterByFieldValue(entries, "status", statusFilter);
40
- if (format !== "text") {
41
- return emitStateStructured("docs", structuredState("docs", entries, sourceMetadata("docs", p), { filters: { status: statusFilter } }), format, args.fields, o, e);
42
- }
43
- for (const entry of entries) {
44
- const line = formatEntry(entry, ["last_audit", "document", "path", "status"]);
45
- if (line)
46
- o(line + "\n");
14
+ const profilePath = registryArtifactPath("profile", discoverSchemasDir());
15
+ const profileStatus = fs.existsSync(profilePath) ? "loaded" : "not found";
16
+ const info = schemas.docs;
17
+ if (!info)
18
+ throw new Error("docs schema is unavailable");
19
+ const singletonPath = artifactPath(info, "docs");
20
+ const data = loadArtifact(singletonPath);
21
+ try {
22
+ const singleton = data !== null && typeof data === "object" && !Array.isArray(data)
23
+ ? data
24
+ : {};
25
+ const mapping = asList(singleton.mapping);
26
+ const coverage = singleton.coverage && typeof singleton.coverage === "object" && !Array.isArray(singleton.coverage)
27
+ ? singleton.coverage
28
+ : {};
29
+ const conventions = singleton.conventions && typeof singleton.conventions === "object" && !Array.isArray(singleton.conventions)
30
+ ? singleton.conventions
31
+ : {};
32
+ const summary = {
33
+ last_audit: singleton.last_audit,
34
+ conventions,
35
+ mapping,
36
+ mapping_entries: mapping.length,
37
+ coverage,
38
+ source_contract: {
39
+ capability_startup_complete: capabilityStartupComplete({ profileStatus }),
40
+ raw_artifact_reads_required: false,
41
+ inventory_authority: "canonical_entity_files",
42
+ singleton_authority: singletonPath,
43
+ },
44
+ };
45
+ const reservedUtf8Bytes = Math.max(Buffer.byteLength(JSON.stringify({ summary }, null, 2)), Buffer.byteLength(YAML.stringify({ summary }))) + 256;
46
+ const response = listTodoDocsEntities(process.cwd(), "docs", args.limit ?? undefined, undefined, {
47
+ ...(args.topic ? { topic: args.topic } : {}),
48
+ ...(args.status ? { status: args.status } : {}),
49
+ }, { format, reservedUtf8Bytes });
50
+ const projected = { ...response, summary };
51
+ if (format === "json" || format === "yaml")
52
+ emitStructured(projected, format, output);
53
+ else {
54
+ output(`Docs: last_audit=${singleton.last_audit ?? "-"}\nMapping: entries=${mapping.length}\n`);
55
+ for (const entry of response.entries) {
56
+ output(`${entry.id} document=${entry.record.document} | path=${entry.record.path} | last_updated=${entry.record.last_updated} | status=${entry.record.status}\n`);
57
+ }
47
58
  }
48
59
  return 0;
49
60
  }
50
- const mapping = asList(d.mapping);
51
- let index = asList(d.index);
52
- const coverage = d.coverage && typeof d.coverage === "object" && !Array.isArray(d.coverage) ? d.coverage : {};
53
- const conventions = d.conventions && typeof d.conventions === "object" && !Array.isArray(d.conventions) ? d.conventions : {};
54
- const topic = args.topic ?? null;
55
- if (topic) {
56
- const t = topic.toLowerCase();
57
- index = index.filter((entry) => String(entry.document ?? "").toLowerCase().includes(t) ||
58
- String(entry.path ?? "").toLowerCase().includes(t) ||
59
- String(entry.status ?? "").toLowerCase().includes(t));
60
- }
61
- const statusFilter = args.status ?? null;
62
- if (statusFilter)
63
- index = filterByFieldValue(index, "status", statusFilter);
64
- if (format !== "text") {
65
- return emitStateStructured("docs", structuredState("docs", index, sourceMetadata("docs", p), {
66
- filters: { topic, status: statusFilter },
67
- summary: {
68
- last_audit: d.last_audit,
69
- conventions,
70
- mapping,
71
- mapping_entries: mapping.length,
72
- coverage,
73
- source_contract: {
74
- capability_startup_complete: STARTUP_COMPLETENESS_MISSING_STATE.length === 0,
75
- raw_artifact_reads_required: false,
76
- },
77
- },
78
- }), format, args.fields, o, e);
79
- }
80
- o(`Docs: last_audit=${d.last_audit ?? "-"}\n`);
81
- o(`Mapping: entries=${mapping.length}\n`);
82
- if (Object.keys(coverage).length > 0) {
83
- o("Coverage: " + Object.entries(coverage).map(([k, v]) => `${k}=${truncate(v)}`).join(" | ") + "\n");
84
- }
85
- printStatusCounts("Docs status", statusCounts(index), o);
86
- for (const entry of index.slice(0, 10)) {
87
- const line = formatEntry(entry, ["document", "path", "last_updated", "status"]);
88
- if (line)
89
- o(line + "\n");
61
+ catch (error) {
62
+ if (!(error instanceof StateRetrievalFailure))
63
+ throw error;
64
+ if (format === "json" || format === "yaml")
65
+ emitStructured(error.body, format, output);
66
+ else
67
+ err(io)(YAML.stringify(error.body));
68
+ return error.exitCode;
90
69
  }
91
- return 0;
92
70
  }
93
- //# sourceMappingURL=docs.js.map
@@ -0,0 +1,151 @@
1
+ import YAML from "yaml";
2
+ import { StateRetrievalFailure } from "../../../state/directRetrieval.js";
3
+ import { getExperimentEntity, listExperimentEntities } from "../../../state/objectiveExperimentEntities.js";
4
+ import { emitStructured } from "../../structured.js";
5
+ import { entityListFamily, entityListValidValues } from "../../../state/entityRetrievalHelp.js";
6
+ function requestedFormat(argv) {
7
+ for (let index = 0; index < argv.length; index += 1) {
8
+ const token = argv[index];
9
+ const value = token === "--format" ? argv[index + 1] : token.startsWith("--format=") ? token.slice(9) : undefined;
10
+ if (value === "json" || value === "yaml")
11
+ return value;
12
+ }
13
+ return "text";
14
+ }
15
+ function failure(message, verb) {
16
+ const list = verb === "list";
17
+ const family = entityListFamily("experiments");
18
+ return new StateRetrievalFailure({
19
+ schemaVersion: "agentera.stateFailure.v1",
20
+ status: "fail",
21
+ error: {
22
+ class: "invalid_request",
23
+ message,
24
+ syntax: list
25
+ ? family.syntax
26
+ : family.get,
27
+ example: list
28
+ ? family.example
29
+ : "agentera state experiments get --id qjtrmnpvka --format json",
30
+ recovery: list ? `Run \`${family.example}\`; no state was changed.` : "Use bare ten-letter entity IDs and retry; no state was changed.",
31
+ valid_values: list
32
+ ? entityListValidValues(family)
33
+ : ["get", "--id ID", "--format text|json|yaml"],
34
+ },
35
+ }, 2);
36
+ }
37
+ function value(argv, index, name) {
38
+ const token = argv[index];
39
+ if (token.startsWith(`${name}=`))
40
+ return { value: token.slice(name.length + 1), next: index + 1 };
41
+ const next = argv[index + 1];
42
+ if (!next || next.startsWith("--"))
43
+ throw new Error(`${name} requires a value`);
44
+ return { value: next, next: index + 2 };
45
+ }
46
+ function parse(argv, verb) {
47
+ const family = entityListFamily("experiments");
48
+ let format = "text";
49
+ let objective;
50
+ let id;
51
+ let limit = family.bounds.default;
52
+ let cursor;
53
+ const selector = {};
54
+ const seen = new Set();
55
+ for (let index = 0; index < argv.length;) {
56
+ const token = argv[index];
57
+ if (verb === "list" && token === "--ids-only") {
58
+ if (selector.idsOnly)
59
+ throw failure("--ids-only may only be supplied once", verb);
60
+ selector.idsOnly = true;
61
+ index += 1;
62
+ continue;
63
+ }
64
+ const allowed = verb === "list" ? ["--format", "--objective", "--limit", "--cursor", "--fields"] : ["--format", "--id"];
65
+ const name = allowed.find((flag) => token === flag || token.startsWith(`${flag}=`));
66
+ if (!name)
67
+ throw failure(`unrecognized argument '${token}'`, verb);
68
+ if (seen.has(name))
69
+ throw failure(`${name} may only be supplied once`, verb);
70
+ seen.add(name);
71
+ let parsed;
72
+ try {
73
+ parsed = value(argv, index, name);
74
+ }
75
+ catch (error) {
76
+ throw failure(error.message, verb);
77
+ }
78
+ index = parsed.next;
79
+ if (name === "--format") {
80
+ if (!family.formats.includes(parsed.value))
81
+ throw failure(`invalid --format '${parsed.value}'`, verb);
82
+ format = parsed.value;
83
+ }
84
+ else if (name === "--objective")
85
+ objective = parsed.value;
86
+ else if (name === "--id")
87
+ id = parsed.value;
88
+ else if (name === "--cursor")
89
+ cursor = parsed.value;
90
+ else if (name === "--fields")
91
+ selector.fields = parsed.value;
92
+ else {
93
+ if (!/^[1-9][0-9]*$/.test(parsed.value) || Number(parsed.value) < family.bounds.minimum || Number(parsed.value) > family.bounds.maximum)
94
+ throw failure(`--limit must be an integer from ${family.bounds.minimum} through ${family.bounds.maximum}`, verb);
95
+ limit = Number(parsed.value);
96
+ }
97
+ }
98
+ if (verb === "list" && !objective)
99
+ throw failure("--objective is required", verb);
100
+ if (verb === "get" && !id)
101
+ throw failure("--id is required", verb);
102
+ return { format, objective, id, limit, cursor, selector };
103
+ }
104
+ function emitFailure(error, format, io) {
105
+ if (format === "json" || format === "yaml")
106
+ emitStructured(error.body, format, io.out ?? ((text) => process.stdout.write(text)));
107
+ else {
108
+ const detail = error.body.error;
109
+ (io.err ?? ((text) => process.stderr.write(text)))([
110
+ `Error: ${detail.message}`,
111
+ `Class: ${detail.class}`,
112
+ `Valid forms: ${(detail.valid_values ?? [detail.syntax]).join("; ")}`,
113
+ `Example: ${detail.example}`,
114
+ `Recovery: ${detail.recovery}`,
115
+ ].join("\n") + "\n");
116
+ }
117
+ return error.exitCode;
118
+ }
119
+ export function runExperimentRecords(argv, io) {
120
+ const format = requestedFormat(argv);
121
+ const verb = argv[0];
122
+ if (verb !== "list" && verb !== "get")
123
+ return emitFailure(failure(`expected 'list' or 'get', received '${verb ?? "nothing"}'`, "list"), format, io);
124
+ try {
125
+ const args = parse(argv.slice(1), verb);
126
+ const response = verb === "list"
127
+ ? listExperimentEntities(process.cwd(), args.objective, args.limit, args.cursor, { format: args.format, selector: args.selector })
128
+ : getExperimentEntity(process.cwd(), args.id);
129
+ const output = io.out ?? ((text) => process.stdout.write(text));
130
+ if (args.format === "json" || args.format === "yaml")
131
+ emitStructured(response, args.format, output);
132
+ else
133
+ output(YAML.stringify(response));
134
+ return 0;
135
+ }
136
+ catch (error) {
137
+ if (error instanceof StateRetrievalFailure)
138
+ return emitFailure(error, format, io);
139
+ return emitFailure(new StateRetrievalFailure({
140
+ schemaVersion: "agentera.stateFailure.v1",
141
+ status: "fail",
142
+ error: {
143
+ class: "unsupported_state",
144
+ message: error.message,
145
+ syntax: "agentera state experiments list --objective ID [options] | agentera state experiments get --id ID [--format text|json|yaml]",
146
+ example: "agentera state experiments list --objective qjtrmnpvka --format json",
147
+ recovery: "Use supported objective-scoped experiment state and retry; no state was changed.",
148
+ },
149
+ }, 1), format, io);
150
+ }
151
+ }
@@ -1,67 +1,14 @@
1
- /**
2
- * `state experiments` query (experiments.yaml).
3
- *
4
- * Returns the most recent N experiments (default 5) filtered by
5
- * topic or status, including per-entry metric and conclusion.
6
- */
7
- import { asList, emitStateStructured, filterByFieldValue, filterByTopic, formatEntry, loadArtifact, missingSchemaError, printStatusCounts, sourceMetadata, statusCounts, structuredState, truncate, } from "../../stateQuery.js";
8
- import { artifactPath } from "../../appContext.js";
9
- import { out, err } from "./shared.js";
10
- export function queryExperiments(args, schemas, io) {
11
- const o = out(io);
12
- const e = err(io);
13
- const info = schemas.experiments;
14
- if (!info) {
15
- e(missingSchemaError("experiments") + "\n");
16
- return 1;
17
- }
18
- const p = artifactPath(info, "experiments");
19
- const data = loadArtifact(p);
1
+ import { emitStructured } from "../../structured.js";
2
+ import { listCurrentExperimentEntities } from "../../../state/objectiveExperimentEntities.js";
3
+ import YAML from "yaml";
4
+ import { out } from "./shared.js";
5
+ export function queryExperiments(args, _schemas, io) {
20
6
  const format = args.format ?? "text";
21
- const isDict = data !== null && typeof data === "object" && !Array.isArray(data);
22
- if (!isDict) {
23
- if (format !== "text") {
24
- return emitStateStructured("experiments", structuredState("experiments", [], sourceMetadata("experiments", p), {
25
- filters: { topic: args.topic ?? null, status: args.status ?? null, limit: args.limit ?? 5 },
26
- }), format, args.fields, o, e);
27
- }
28
- return 0;
29
- }
30
- const d = data;
31
- let entries = asList(d.experiments);
32
- const statusFilter = args.status ?? null;
33
- if (statusFilter)
34
- entries = filterByFieldValue(entries, "status", statusFilter);
35
- const topic = args.topic ?? null;
36
- if (topic)
37
- entries = filterByTopic(entries, topic, info.fields);
38
- const limit = (args.limit ?? 5) || 5;
39
- entries = entries.slice(-limit);
40
- const closure = d.closure && typeof d.closure === "object" && !Array.isArray(d.closure) ? d.closure : {};
41
- if (format !== "text") {
42
- return emitStateStructured("experiments", structuredState("experiments", entries, sourceMetadata("experiments", p), {
43
- filters: { topic, status: statusFilter, limit },
44
- summary: { closure },
45
- }), format, args.fields, o, e);
46
- }
47
- printStatusCounts("Experiment status", statusCounts(entries), o);
48
- for (const entry of entries) {
49
- o(formatEntry(entry, ["number", "date", "label", "status"]) + "\n");
50
- const metric = entry.metric;
51
- if (metric && typeof metric === "object" && !Array.isArray(metric)) {
52
- const metricLine = formatEntry(metric, ["primary_value", "delta_vs_baseline"]);
53
- if (metricLine)
54
- o(` metric: ${metricLine}\n`);
55
- }
56
- for (const key of ["conclusion", "next"]) {
57
- const value = entry[key];
58
- if (value)
59
- o(` ${key}: ${truncate(value)}\n`);
60
- }
61
- }
62
- if (Object.keys(closure).length > 0) {
63
- o("Closure: " + formatEntry(closure, ["final_value", "target", "reason"]) + "\n");
64
- }
7
+ const response = listCurrentExperimentEntities(process.cwd(), args.objective ?? undefined, args.limit ?? undefined, args.cursor ?? undefined, { topic: args.topic ?? undefined, status: args.status ?? undefined }, { format });
8
+ const output = out(io);
9
+ if (format === "text")
10
+ output(YAML.stringify(response));
11
+ else
12
+ emitStructured(response, format, output);
65
13
  return 0;
66
14
  }
67
- //# sourceMappingURL=experiments.js.map