agentera 3.0.0-dev.5 → 3.0.0-dev.51

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 (598) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +119 -22
  3. package/bundle/CHANGELOG.md +1351 -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 +236 -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 +437 -0
  11. package/bundle/references/adapters/package-registry.yaml +435 -189
  12. package/bundle/references/adapters/package-surface-characterization.md +66 -35
  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 +191 -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 +3022 -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 -1
  29. package/bundle/references/cli/vocabulary-index.yaml +20 -17
  30. package/bundle/references/cli/vocabulary.md +326 -361
  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 +224 -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 +102 -0
  39. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
  40. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  41. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -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 +458 -36
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +128 -17
  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 +190 -0
  95. package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
  96. package/dist/analytics/extractCorpus/core.js +392 -0
  97. package/dist/analytics/extractCorpus/corpus.js +167 -0
  98. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  99. package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
  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 +118 -0
  103. package/dist/analytics/extractCorpus/index.js +14 -0
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
  107. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  108. package/dist/analytics/extractCorpus.js +2 -1791
  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 +56 -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 +565 -0
  134. package/dist/cli/capabilityContext/bespoke.js +44 -0
  135. package/dist/cli/capabilityContext/build.js +242 -0
  136. package/dist/cli/capabilityContext/closeout.js +233 -0
  137. package/dist/cli/capabilityContext/contract.js +179 -0
  138. package/dist/cli/capabilityContext/evidence.js +463 -0
  139. package/dist/cli/capabilityContext/index.js +3 -0
  140. package/dist/cli/capabilityContext/orchestration.js +131 -0
  141. package/dist/cli/capabilityContext/planState.js +260 -0
  142. package/dist/cli/capabilityContext/progress.js +142 -0
  143. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  144. package/dist/cli/capabilityContext/shared.js +83 -0
  145. package/dist/cli/capabilityContext/slim.js +152 -0
  146. package/dist/cli/capabilityContext/startup.js +150 -0
  147. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  148. package/dist/cli/capabilityContext/types.js +56 -0
  149. package/dist/cli/capabilityContext.js +1 -2487
  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 +164 -14
  153. package/dist/cli/commands/doctor.js +122 -97
  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 +26 -44
  157. package/dist/cli/commands/personalGlossary.js +176 -0
  158. package/dist/cli/commands/prime/briefOrientation.js +747 -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 +212 -0
  163. package/dist/cli/commands/prime/orientationOutput.js +399 -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 +78 -53
  169. package/dist/cli/commands/report.js +96 -25
  170. package/dist/cli/commands/route.js +142 -0
  171. package/dist/cli/commands/schema.js +266 -143
  172. package/dist/cli/commands/state/decisions.js +387 -0
  173. package/dist/cli/commands/state/docs.js +70 -0
  174. package/dist/cli/commands/state/experimentRecords.js +151 -0
  175. package/dist/cli/commands/state/experiments.js +14 -0
  176. package/dist/cli/commands/state/get.js +129 -0
  177. package/dist/cli/commands/state/health.js +14 -0
  178. package/dist/cli/commands/state/index.js +16 -0
  179. package/dist/cli/commands/state/list.js +194 -0
  180. package/dist/cli/commands/state/objective.js +25 -0
  181. package/dist/cli/commands/state/plan.js +14 -0
  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 +13 -0
  185. package/dist/cli/commands/state/shared.js +14 -0
  186. package/dist/cli/commands/state/todo.js +42 -0
  187. package/dist/cli/commands/state/write.js +430 -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 +272 -223
  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 +372 -0
  196. package/dist/cli/dispatch/commands.js +27 -0
  197. package/dist/cli/dispatch/index.js +207 -0
  198. package/dist/cli/dispatch/lifecycle.js +652 -0
  199. package/dist/cli/dispatch/prime.js +139 -0
  200. package/dist/cli/dispatch/projections.js +17 -0
  201. package/dist/cli/dispatch/shared.js +63 -0
  202. package/dist/cli/dispatch/state.js +140 -0
  203. package/dist/cli/dispatch.js +1 -1294
  204. package/dist/cli/errors.js +16 -17
  205. package/dist/cli/help.js +394 -43
  206. package/dist/cli/migrationRequired.js +87 -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 +11 -79
  242. package/dist/hooks/compaction/apply.js +446 -0
  243. package/dist/hooks/compaction/dryRun.js +184 -0
  244. package/dist/hooks/compaction/index.js +22 -0
  245. package/dist/hooks/compaction/parse.js +325 -0
  246. package/dist/hooks/compaction/retention.js +202 -0
  247. package/dist/hooks/compaction/status.js +360 -0
  248. package/dist/hooks/compaction/types.js +5 -0
  249. package/dist/hooks/validateArtifact/agentFacing.js +9 -0
  250. package/dist/hooks/validateArtifact/index.js +92 -0
  251. package/dist/hooks/validateArtifact/markdown.js +145 -0
  252. package/dist/hooks/validateArtifact/schema.js +546 -0
  253. package/dist/hooks/validateArtifact/traversal.js +107 -0
  254. package/dist/hooks/validateArtifact/violations.js +107 -0
  255. package/dist/migrate/v2HandoffManifest.js +452 -0
  256. package/dist/registries/activationContract.js +2 -0
  257. package/dist/registries/activationTuples.js +107 -0
  258. package/dist/registries/artifactProtocolIds.js +78 -0
  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 +229 -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 +385 -0
  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 -0
  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 +846 -0
  313. package/dist/state/entityMigrationTodo.js +133 -0
  314. package/dist/state/entityPublicationContext.js +806 -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 +982 -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/projectRoot.js +62 -0
  343. package/dist/state/projectionPolicy.js +190 -0
  344. package/dist/state/retrievalAuthority.js +156 -0
  345. package/dist/state/safeProjectFile.js +155 -0
  346. package/dist/state/startupAnalysis/benchmark.js +432 -0
  347. package/dist/state/startupAnalysis/contract.js +160 -0
  348. package/dist/state/startupAnalysis/helpers.js +286 -0
  349. package/dist/state/startupAnalysis/index.js +6 -0
  350. package/dist/state/startupAnalysis/metrics.js +340 -0
  351. package/dist/state/startupAnalysis/records.js +198 -0
  352. package/dist/state/startupAnalysis/report.js +111 -0
  353. package/dist/state/startupAnalysis/threshold.js +512 -0
  354. package/dist/state/startupAnalysis.js +2 -1953
  355. package/dist/state/startupProjection.js +499 -0
  356. package/dist/state/stateMode.js +85 -0
  357. package/dist/state/stateStorageAuthority.js +47 -0
  358. package/dist/state/summaryEntityRead.js +25 -0
  359. package/dist/state/summaryMigrationProvenance.js +66 -0
  360. package/dist/state/summarySourceRowAuthority.js +36 -0
  361. package/dist/state/todoActivationSafety.js +58 -0
  362. package/dist/state/todoDocsEntities.js +1069 -0
  363. package/dist/state/todoDocsEntityValidation.js +158 -0
  364. package/dist/state/todoMarkdownProjection.js +51 -0
  365. package/dist/state/todoReconciliationActivation.js +140 -0
  366. package/dist/state/todoReconciliationInspection.js +169 -0
  367. package/dist/state/todoReconciliationRepair.js +170 -0
  368. package/dist/state/todoReconciliationTransaction.js +582 -0
  369. package/dist/state/write/assign.js +20 -0
  370. package/dist/state/write/candidateMutation.js +269 -0
  371. package/dist/state/write/errors.js +11 -0
  372. package/dist/state/write/experimentPublication.js +192 -0
  373. package/dist/state/write/explain.js +363 -0
  374. package/dist/state/write/fields.js +61 -0
  375. package/dist/state/write/glossaryPublication.js +263 -0
  376. package/dist/state/write/grammar.js +285 -0
  377. package/dist/state/write/helpers.js +29 -0
  378. package/dist/state/write/index.js +12 -0
  379. package/dist/state/write/input.js +367 -0
  380. package/dist/state/write/lock.js +837 -0
  381. package/dist/state/write/mutation.js +234 -0
  382. package/dist/state/write/operations.js +170 -0
  383. package/dist/state/write/planEvaluation.js +128 -0
  384. package/dist/state/write/planPublication.js +179 -0
  385. package/dist/state/write/runtimeOperations.js +144 -0
  386. package/dist/state/write/serialize.js +1 -0
  387. package/dist/state/write/transaction.js +52 -0
  388. package/dist/state/write/validate.js +7 -0
  389. package/dist/upgrade/appContentRefresh.js +383 -0
  390. package/dist/upgrade/appModel.js +8 -7
  391. package/dist/upgrade/atomicWriter.js +1 -0
  392. package/dist/upgrade/bundleEvidence.js +33 -0
  393. package/dist/upgrade/channels.js +12 -8
  394. package/dist/upgrade/compatibility.js +56 -21
  395. package/dist/upgrade/doctor.js +197 -192
  396. package/dist/upgrade/doctorClassifier.js +187 -0
  397. package/dist/upgrade/installedHooksRetirement.js +196 -0
  398. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  399. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  400. package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
  401. package/dist/upgrade/migrationPublication.js +122 -0
  402. package/dist/upgrade/nextMajorDoctor.js +42 -8
  403. package/dist/upgrade/npxPlatformStatus.js +22 -0
  404. package/dist/upgrade/projectIntegration.js +145 -187
  405. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  406. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  407. package/dist/upgrade/runtimeMigration.js +273 -363
  408. package/dist/upgrade/upgradeCommands.js +14 -1
  409. package/dist/upgrade/upgradeLock.js +85 -0
  410. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  411. package/dist/upgrade/v3CapabilitySurface.js +14 -0
  412. package/dist/upgrade/versionResolution.js +8 -1
  413. package/dist/validate/activationArtifactEvidence.js +844 -0
  414. package/dist/validate/activationConjunction.js +816 -0
  415. package/dist/validate/activationEvidenceManifest.js +515 -0
  416. package/dist/validate/activationPackageSemantics.js +29 -0
  417. package/dist/validate/appHomeContract.js +5 -11
  418. package/dist/validate/bootstrapAuthority.js +44 -0
  419. package/dist/validate/capability.js +133 -12
  420. package/dist/validate/crossCapability.js +15 -10
  421. package/dist/validate/retainedReferenceAuthority.js +879 -0
  422. package/dist/validate/selfAudit.js +73 -37
  423. package/dist/validate/v1LegacyCruft.js +131 -0
  424. package/dist/validate/vocabularyAuthority.js +303 -0
  425. package/package.json +53 -27
  426. package/bundle/references/adapters/cursor.md +0 -213
  427. package/bundle/references/adapters/opencode.md +0 -530
  428. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  429. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  430. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  431. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  432. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  433. package/bundle/references/analysis/benchmark.md +0 -267
  434. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  435. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  436. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
  437. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
  438. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  439. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  440. package/bundle/references/meta/documentation-inventory.md +0 -43
  441. package/bundle/references/v1-section-mapping.md +0 -47
  442. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  443. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  444. package/bundle/skills/agentera/agents/hej.toml +0 -6
  445. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  446. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  447. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  448. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  449. package/bundle/skills/agentera/agents/planera.toml +0 -6
  450. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  451. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  452. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  453. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  454. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  455. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  456. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  457. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  458. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  459. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  460. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  461. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  462. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  463. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  464. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  465. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  466. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -120
  467. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  468. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  469. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  470. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  471. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  472. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  473. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  474. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  475. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  476. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  477. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  478. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  479. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  480. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  481. package/bundle/skills/agentera/references/contract.md +0 -1039
  482. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  483. package/bundle/skills/hej/SKILL.md +0 -69
  484. package/bundle/skills/hej/agents/hej.toml +0 -11
  485. package/bundle/skills/hej/agents/openai.yaml +0 -8
  486. package/dist/analytics/extractCorpus.js.map +0 -1
  487. package/dist/analytics/usageStats.js.map +0 -1
  488. package/dist/bin/agentera.js.map +0 -1
  489. package/dist/capabilities/dokumentera/instructions.js +0 -6
  490. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  491. package/dist/capabilities/hej/instructions.js +0 -6
  492. package/dist/capabilities/hej/instructions.js.map +0 -1
  493. package/dist/capabilities/index.js.map +0 -1
  494. package/dist/capabilities/inspektera/instructions.js +0 -6
  495. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  496. package/dist/capabilities/inspirera/instructions.js +0 -6
  497. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  498. package/dist/capabilities/optimera/instructions.js +0 -6
  499. package/dist/capabilities/optimera/instructions.js.map +0 -1
  500. package/dist/capabilities/orkestrera/instructions.js +0 -6
  501. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  502. package/dist/capabilities/planera/instructions.js +0 -6
  503. package/dist/capabilities/planera/instructions.js.map +0 -1
  504. package/dist/capabilities/profilera/instructions.js +0 -6
  505. package/dist/capabilities/profilera/instructions.js.map +0 -1
  506. package/dist/capabilities/realisera/instructions.js +0 -6
  507. package/dist/capabilities/realisera/instructions.js.map +0 -1
  508. package/dist/capabilities/resonera/instructions.js +0 -6
  509. package/dist/capabilities/resonera/instructions.js.map +0 -1
  510. package/dist/capabilities/visionera/instructions.js +0 -6
  511. package/dist/capabilities/visionera/instructions.js.map +0 -1
  512. package/dist/capabilities/visualisera/instructions.js +0 -6
  513. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  514. package/dist/cli/appContext.js.map +0 -1
  515. package/dist/cli/argvalidate.js.map +0 -1
  516. package/dist/cli/capabilityContext.js.map +0 -1
  517. package/dist/cli/commands/capability.js.map +0 -1
  518. package/dist/cli/commands/compact.js.map +0 -1
  519. package/dist/cli/commands/doctor.js.map +0 -1
  520. package/dist/cli/commands/lint.js.map +0 -1
  521. package/dist/cli/commands/prime.js.map +0 -1
  522. package/dist/cli/commands/query.js.map +0 -1
  523. package/dist/cli/commands/report.js.map +0 -1
  524. package/dist/cli/commands/schema.js.map +0 -1
  525. package/dist/cli/commands/state.js +0 -1023
  526. package/dist/cli/commands/state.js.map +0 -1
  527. package/dist/cli/commands/upgrade.js.map +0 -1
  528. package/dist/cli/commands/validate.js.map +0 -1
  529. package/dist/cli/commands/verify.js.map +0 -1
  530. package/dist/cli/dispatch.js.map +0 -1
  531. package/dist/cli/errors.js.map +0 -1
  532. package/dist/cli/help.js.map +0 -1
  533. package/dist/cli/orientation.js.map +0 -1
  534. package/dist/cli/prime-blob.js.map +0 -1
  535. package/dist/cli/stateQuery.js.map +0 -1
  536. package/dist/cli/structured.js.map +0 -1
  537. package/dist/cli/todoMarkdown.js.map +0 -1
  538. package/dist/core/difflib.js.map +0 -1
  539. package/dist/core/paths.js.map +0 -1
  540. package/dist/core/pyjson.js.map +0 -1
  541. package/dist/core/sourceRoot.js.map +0 -1
  542. package/dist/core/toml.js.map +0 -1
  543. package/dist/core/yaml.js.map +0 -1
  544. package/dist/eval/evalSkills.js.map +0 -1
  545. package/dist/eval/semanticEval.js.map +0 -1
  546. package/dist/eval/semanticFixtures.js.map +0 -1
  547. package/dist/hooks/common.js.map +0 -1
  548. package/dist/hooks/compaction.js +0 -935
  549. package/dist/hooks/compaction.js.map +0 -1
  550. package/dist/hooks/cursorPreToolUse.js +0 -19
  551. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  552. package/dist/hooks/cursorSessionStart.js +0 -71
  553. package/dist/hooks/cursorSessionStart.js.map +0 -1
  554. package/dist/hooks/sessionStart.js +0 -209
  555. package/dist/hooks/sessionStart.js.map +0 -1
  556. package/dist/hooks/sessionStop.js +0 -212
  557. package/dist/hooks/sessionStop.js.map +0 -1
  558. package/dist/hooks/validateArtifact.js +0 -935
  559. package/dist/hooks/validateArtifact.js.map +0 -1
  560. package/dist/registries/artifactRegistry.js.map +0 -1
  561. package/dist/registries/capabilityContract.js.map +0 -1
  562. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  563. package/dist/registries/packageRegistry.js.map +0 -1
  564. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  565. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  566. package/dist/setup/codex.js +0 -1197
  567. package/dist/setup/codex.js.map +0 -1
  568. package/dist/setup/copilot.js +0 -227
  569. package/dist/setup/copilot.js.map +0 -1
  570. package/dist/setup/cursor.js +0 -127
  571. package/dist/setup/cursor.js.map +0 -1
  572. package/dist/setup/doctor.js +0 -1297
  573. package/dist/setup/doctor.js.map +0 -1
  574. package/dist/setup/smokeChecks.js.map +0 -1
  575. package/dist/state/installRoot.js.map +0 -1
  576. package/dist/state/startupAnalysis.js.map +0 -1
  577. package/dist/upgrade/appModel.js.map +0 -1
  578. package/dist/upgrade/channels.js.map +0 -1
  579. package/dist/upgrade/compatibility.js.map +0 -1
  580. package/dist/upgrade/doctor.js.map +0 -1
  581. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  582. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  583. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  584. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  585. package/dist/upgrade/projectIntegration.js.map +0 -1
  586. package/dist/upgrade/runtimeMigration.js.map +0 -1
  587. package/dist/upgrade/upgradeCommands.js.map +0 -1
  588. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  589. package/dist/upgrade/versionResolution.js.map +0 -1
  590. package/dist/validate/appHomeContract.js.map +0 -1
  591. package/dist/validate/capability.js.map +0 -1
  592. package/dist/validate/crossCapability.js.map +0 -1
  593. package/dist/validate/lifecycleAdapters.js +0 -772
  594. package/dist/validate/lifecycleAdapters.js.map +0 -1
  595. package/dist/validate/selfAudit.js.map +0 -1
  596. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  597. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  598. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -0,0 +1,55 @@
1
+ import { personalProfileGroundingContract } from "../../registries/glossaryEntryContract.js";
2
+ import { emitInvalidInput } from "../errors.js";
3
+ import { acquireProfile } from "../profileAcquisition.js";
4
+ import { emitStructured } from "../structured.js";
5
+ const COMMAND = "agentera report profile-grounding --format json";
6
+ const REQUEST_RECOVERY = `Run ${COMMAND}; no profile bytes were changed.`;
7
+ const INVALID_PROFILE_MESSAGE = "PROFILE.md is unavailable for bounded profile grounding.";
8
+ function invalid(io, body, recovery) {
9
+ return emitInvalidInput(io, { format: "json", body: { ...body, recovery } });
10
+ }
11
+ export function runProfileGroundingCommand(argv, io) {
12
+ for (let index = 0; index < argv.length; index += 1) {
13
+ const argument = argv[index];
14
+ const [name, inline] = argument.split("=", 2);
15
+ if (name !== "--format") {
16
+ return invalid(io, { class: "unrecognized_argument", message: "profile-grounding accepts only --format json", syntax: COMMAND }, REQUEST_RECOVERY);
17
+ }
18
+ const value = inline ?? argv[++index];
19
+ if (value !== "json") {
20
+ return invalid(io, { class: "invalid_choice", message: "profile-grounding requires --format json", valid_values: ["json"] }, REQUEST_RECOVERY);
21
+ }
22
+ }
23
+ const contract = personalProfileGroundingContract();
24
+ const acquired = acquireProfile();
25
+ const output = io.out ?? ((text) => process.stdout.write(text));
26
+ if (acquired.validity.status !== "valid" || acquired.groundingContent === null) {
27
+ emitStructured({
28
+ schemaVersion: contract.schemaVersion,
29
+ command: "report profile-grounding",
30
+ status: acquired.validity.status,
31
+ validity: acquired.validity,
32
+ freshness: acquired.freshness,
33
+ content: null,
34
+ recovery: acquired.validity.recovery,
35
+ error: {
36
+ class: "profile_unavailable",
37
+ message: INVALID_PROFILE_MESSAGE,
38
+ recovery: acquired.validity.recovery,
39
+ },
40
+ }, "json", output);
41
+ return 2;
42
+ }
43
+ emitStructured({
44
+ schemaVersion: contract.schemaVersion,
45
+ command: "report profile-grounding",
46
+ status: "ok",
47
+ validity: acquired.validity,
48
+ freshness: acquired.freshness,
49
+ content: acquired.groundingContent,
50
+ content_utf8_bytes: Buffer.byteLength(acquired.groundingContent),
51
+ excluded: "owned_personal_glossary_section",
52
+ recovery: null,
53
+ }, "json", output);
54
+ return 0;
55
+ }
@@ -1,12 +1,16 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
- import { resolveArtifactPath } from "../../registries/artifactRegistry.js";
3
+ import { preCutoverCommand } from "../preCutoverCommand.js";
4
+ import { loadDocsPathOverrides, resolveArtifactPath, } from "../../registries/artifactRegistry.js";
4
5
  import { activeObjectiveName, artifactPath, discoverSchemasDir, loadSchemas, resolveArtifactPathLocal, } from "../appContext.js";
5
6
  import { validateAgentString } from "../argvalidate.js";
6
- import { loadDocsPathOverrides } from "../../registries/artifactRegistry.js";
7
7
  import { emitStructured } from "../structured.js";
8
- import { COMMAND_FILTERS, emitStateStructured, extractEntries, filterByFieldValue, filterByTopic, formatEntry, loadArtifact, missingSchemaError, recentCycles, sourceMetadata, structuredState, validateFilterValues, } from "../stateQuery.js";
9
- import { displayFields, queryTodo } from "./state.js";
8
+ import { COMMAND_FILTERS, emitStateStructured, extractEntries, filterByFieldValue, filterByTopic, formatEntry, loadArtifact, missingSchemaError, sourceMetadata, structuredState, validateFilterValues, } from "../stateQuery.js";
9
+ import { displayFields, queryTodo } from "./state/index.js";
10
+ import { STATE_FAMILY_GET_COMMANDS, STATE_FAMILY_LIST_COMMANDS } from "../capabilityContext/types.js";
11
+ import { entityPublicRetrieval } from "../../state/retrievalAuthority.js";
12
+ import { listProgressEntities } from "../../state/progressEntities.js";
13
+ import { readChangelog } from "../../state/changelog.js";
10
14
  const ENCODED_TRAVERSAL_RE = /%(?:2e|2f|5c)/i;
11
15
  const ALLOWED_RAW_ARTIFACT_USES = [
12
16
  "artifact writes",
@@ -17,7 +21,7 @@ const ALLOWED_RAW_ARTIFACT_USES = [
17
21
  "unavailable or incomplete CLI state after CLI fallbacks",
18
22
  "benchmark analysis",
19
23
  ];
20
- const BENCHMARK_CONTEXT_COMMAND = "agentera prime --context optimera --format json";
24
+ const BENCHMARK_CONTEXT_COMMAND = preCutoverCommand("prime --context optimize --format json");
21
25
  const STATE_COMMAND_NAMES = new Set([
22
26
  "decisions",
23
27
  "docs",
@@ -43,7 +47,16 @@ function projectRelativeOrAbsolute(p) {
43
47
  }
44
48
  function artifactReadInterfaces(name, record) {
45
49
  const artifactId = record !== null ? record.artifactId : name;
46
- const routineCommand = STATE_COMMAND_NAMES.has(artifactId) ? `agentera ${artifactId} --format json` : null;
50
+ const retrieval = (entityPublicRetrieval().commands ?? {});
51
+ const experimentList = retrieval.experiments.list
52
+ .replace(" [--limit N] [--cursor TOKEN]", " --limit 20");
53
+ const routineCommand = artifactId === "experiments"
54
+ ? experimentList
55
+ : STATE_FAMILY_LIST_COMMANDS[artifactId] ?? (STATE_COMMAND_NAMES.has(artifactId) ? `agentera state ${artifactId} --format json` : null);
56
+ const requiredSelectors = artifactId === "experiments" ? ["--objective OBJECTIVE_ID"] : [];
57
+ const detailCommand = artifactId === "experiments"
58
+ ? retrieval.experiments.get
59
+ : STATE_FAMILY_GET_COMMANDS[artifactId] ?? null;
47
60
  let advancedCommand;
48
61
  if (artifactId === "benchmark_context")
49
62
  advancedCommand = BENCHMARK_CONTEXT_COMMAND;
@@ -52,7 +65,11 @@ function artifactReadInterfaces(name, record) {
52
65
  else
53
66
  advancedCommand = `agentera query ${artifactId} --format json`;
54
67
  let policy;
55
- if (routineCommand)
68
+ if (artifactId === "experiments")
69
+ policy = "Replace OBJECTIVE_ID with one stable objective identity, use the objective-scoped bounded list for discovery, and use exact get for detail; no selector-free normal read exists.";
70
+ else if (STATE_FAMILY_LIST_COMMANDS[artifactId])
71
+ policy = "Use bounded state list for discovery and exact state get for detail before any raw artifact access.";
72
+ else if (routineCommand)
56
73
  policy = "Use the routine state command for normal content reads before any raw artifact access.";
57
74
  else if (advancedCommand)
58
75
  policy = "Use the listed CLI discovery/query surface before any last-resort raw artifact access.";
@@ -60,6 +77,9 @@ function artifactReadInterfaces(name, record) {
60
77
  policy = "No normal content-read command is registered; raw access is limited to allowed boundary cases.";
61
78
  return {
62
79
  normal_read_command: routineCommand,
80
+ normal_read_required_selectors: requiredSelectors,
81
+ normal_detail_command: detailCommand,
82
+ normal_read_guidance: policy,
63
83
  advanced_query_command: advancedCommand,
64
84
  raw_access_boundary: {
65
85
  normal_policy: policy,
@@ -67,21 +87,23 @@ function artifactReadInterfaces(name, record) {
67
87
  },
68
88
  };
69
89
  }
70
- function artifactLocationRecord(name, info, schemasDir, docsOverrides) {
90
+ function artifactLocationRecord(name, info, schemasDir) {
71
91
  const record = info.record ?? null;
72
92
  const schema = info.schema && typeof info.schema === "object" ? info.schema : {};
93
+ // cast: schema.meta is read from a parsed artifact schema (YAML IO boundary)
73
94
  const meta = (schema.meta ?? {});
74
95
  const schemaFile = path.join(schemasDir, `${name}.yaml`);
75
96
  const artifactId = record !== null ? record.artifactId : name;
76
97
  const displayName = record !== null ? record.displayName : String(meta.name ?? name);
77
98
  const defaultPath = record !== null ? record.defaultPath : String(info.path ?? "");
78
- let mappedPath = defaultPath;
79
- let resolutionSource = record !== null ? "registry default" : "schema metadata";
99
+ const docsOverrides = record !== null ? loadDocsPathOverrides(process.cwd()) : {};
100
+ const mappedPath = record !== null && record.docsYamlCanOverridePath && record.displayName in docsOverrides
101
+ ? docsOverrides[record.displayName]
102
+ : defaultPath;
103
+ const resolutionSource = record !== null
104
+ ? mappedPath === defaultPath ? "registry default" : "docs mapping for registry identity"
105
+ : "schema metadata";
80
106
  const caveats = [];
81
- if (record !== null && record.docsYamlCanOverridePath && record.displayName in docsOverrides) {
82
- mappedPath = docsOverrides[record.displayName];
83
- resolutionSource = ".agentera/docs.yaml mapping";
84
- }
85
107
  const objectiveName = activeObjectiveName();
86
108
  let resolvedPath = null;
87
109
  if (record !== null && record.pathTemplate && mappedPath.includes("<name>") && !objectiveName) {
@@ -103,14 +125,15 @@ function artifactLocationRecord(name, info, schemasDir, docsOverrides) {
103
125
  display_path: resolvedPath !== null ? projectRelativeOrAbsolute(resolvedPath) : mappedPath,
104
126
  resolution_source: resolutionSource,
105
127
  exists: resolvedPath !== null ? fs.existsSync(resolvedPath) : false,
106
- docs_yaml_can_override_path: record !== null ? record.docsYamlCanOverridePath : false,
128
+ docs_yaml_can_override_path: record?.docsYamlCanOverridePath ?? false,
107
129
  project_boundary_check: resolvedPath !== null ? "enforced" : "not_resolved",
108
130
  };
109
131
  return {
110
- artifact_id: artifactId,
132
+ artifact: artifactId,
111
133
  name: artifactId,
112
134
  display_name: displayName,
113
135
  artifact_type: record !== null ? record.artifactType : meta.artifact_type ?? "unknown",
136
+ implementation_status: record !== null ? record.implementationStatus : meta.implementation_status ?? "implemented",
114
137
  format: typeof meta === "object" ? meta.format ?? "unknown" : "unknown",
115
138
  producer: record !== null ? [...record.producers].sort() : meta.producer ?? "unknown",
116
139
  consumers: record !== null ? [...record.consumers].sort() : meta.consumers ?? "unknown",
@@ -129,17 +152,16 @@ function fileExists(p) {
129
152
  }
130
153
  }
131
154
  export function artifactLocationContract(schemasDir, schemas) {
132
- const docsOverrides = loadDocsPathOverrides(process.cwd());
133
155
  const names = Object.keys(schemas).sort();
134
- const records = names.map((name) => artifactLocationRecord(name, schemas[name], schemasDir, docsOverrides));
156
+ const records = names.map((name) => artifactLocationRecord(name, schemas[name], schemasDir));
157
+ // cast: record.caveats is built from schema/registry path resolution (IO boundary)
135
158
  const caveats = records.flatMap((record) => record.caveats);
136
159
  return {
137
160
  schemaVersion: "agentera.artifact_locations.v1",
138
161
  status: dirExists(schemasDir) ? "complete" : "missing_schemas",
139
162
  source: {
140
163
  schemas_dir: schemasDir,
141
- docs_yaml_path: path.join(process.cwd(), ".agentera", "docs.yaml"),
142
- docs_yaml_overrides_loaded: Object.keys(docsOverrides).length > 0,
164
+ path_overrides: "disabled_for_entity_authority",
143
165
  },
144
166
  source_contract: {
145
167
  raw_artifact_reads_required_for_discovery: false,
@@ -211,30 +233,35 @@ function queryGeneric(args, schemas, name, io) {
211
233
  }
212
234
  return 0;
213
235
  }
214
- function queryLastPhase(args, schemas, io) {
215
- const o = out(io);
216
- const e = err(io);
236
+ function matchedSchemaName(schemas, query) {
237
+ if (query in schemas)
238
+ return query;
239
+ return Object.keys(schemas).find((name) => query === name.replace(/s$/, "") || query === `${name}s`) ?? null;
240
+ }
241
+ function rejectEntityAggregateQuery(args, name, query, io) {
217
242
  const format = args.format ?? "text";
218
- const info = schemas.progress;
219
- if (!info) {
220
- e(missingSchemaError("progress") + "\n");
221
- return 1;
243
+ const command = `agentera state ${name} --format ${format}`;
244
+ if (format !== "text") {
245
+ emitStructured({ schemaVersion: "agentera.stateFailure.v1", status: "fail", error: { class: "unsupported_target", message: `routine artifact alias '${query}' is not available through state query`, syntax: command, example: command, recovery: `Use the canonical entity-aware command: ${command}` } }, format, out(io));
222
246
  }
223
- const data = loadArtifact(artifactPath(info, "progress"));
224
- const entries = extractEntries(data);
225
- if (entries.length === 0) {
226
- if (format !== "text")
227
- emitStructured(null, format, o);
228
- return 0;
247
+ else {
248
+ err(io)(`Unsupported routine query: ${query}. Use \`${command}\` instead.\n`);
229
249
  }
230
- const last = recentCycles(entries, 1)[0];
231
- const phase = last.phase ?? "";
232
- if (format !== "text") {
233
- emitStructured({ phase }, format, o);
234
- return 0;
250
+ return 1;
251
+ }
252
+ function queryLastPhase(args, schemas, io) {
253
+ const o = out(io);
254
+ const format = args.format ?? "text";
255
+ const response = listProgressEntities(process.cwd(), 1, {}, undefined, { format: format });
256
+ const entry = Array.isArray(response.entries) ? response.entries[0] : undefined;
257
+ const record = entry?.record;
258
+ const phase = String(record?.phase ?? "");
259
+ if (format === "text") {
260
+ if (phase)
261
+ o(`${phase}\n`);
235
262
  }
236
- if (phase)
237
- o(phase + "\n");
263
+ else
264
+ emitStructured(entry ? { phase, id: entry.id, artifact: entry.artifact, provenance: entry.provenance, snapshot: response.snapshot, retrieval: { get: `agentera state progress get --id ${entry.id} --format json` } } : null, format, o);
238
265
  return 0;
239
266
  }
240
267
  function queryDesign(args, schemas, io) {
@@ -279,6 +306,7 @@ export function cmdQuery(args, io) {
279
306
  const o = out(io);
280
307
  const e = err(io);
281
308
  const format = args.format ?? "text";
309
+ // cast: args are parsed CLI argv values passed to the filter validator (external-input boundary)
282
310
  validateFilterValues(args, COMMAND_FILTERS.query);
283
311
  if (args.limit !== null && args.limit !== undefined && args.limit < 0) {
284
312
  throw new Error("limit must be zero or greater");
@@ -314,10 +342,6 @@ export function cmdQuery(args, io) {
314
342
  if (query.includes("/") || query.includes("\\") || query === "." || query === ".." || ENCODED_TRAVERSAL_RE.test(query)) {
315
343
  throw new Error(`unsupported artifact/query name ${pyRepr(query)}; path-like values are not artifact names`);
316
344
  }
317
- if (STATE_COMMAND_NAMES.has(query)) {
318
- e(`Unsupported routine query: ${query}. Use \`agentera ${query}\` instead.\n`);
319
- return 1;
320
- }
321
345
  const schemas = loadSchemas(discoverSchemasDir());
322
346
  const stateArgs = args;
323
347
  const handlers = {
@@ -326,16 +350,18 @@ export function cmdQuery(args, io) {
326
350
  "open-todos": (a, s, ioo) => queryTodo({ ...a, command: "todo" }, s, ioo, true),
327
351
  };
328
352
  if (query in handlers) {
329
- if (format !== "text" && query in schemas)
330
- return queryGeneric(args, schemas, query, io);
331
- return handlers[query](args, schemas, io);
353
+ if (format === "text" || !(query in schemas))
354
+ return handlers[query](args, schemas, io);
332
355
  }
333
- if (query in schemas)
334
- return queryGeneric(args, schemas, query, io);
335
- for (const name of Object.keys(schemas)) {
336
- if (query === name || query === name.replace(/s$/, "") || query === name + "s") {
337
- return queryGeneric(args, schemas, name, io);
356
+ const name = matchedSchemaName(schemas, query);
357
+ if (name !== null) {
358
+ if (STATE_COMMAND_NAMES.has(name)) {
359
+ return rejectEntityAggregateQuery(args, name, query, io);
360
+ }
361
+ if (name === "changelog" && format !== "text") {
362
+ return emitStateStructured(name, readChangelog(process.cwd()).projection, format, args.fields, o, e);
338
363
  }
364
+ return queryGeneric(args, schemas, name, io);
339
365
  }
340
366
  e(`Unknown query: ${query}\n`);
341
367
  return 1;
@@ -343,4 +369,3 @@ export function cmdQuery(args, io) {
343
369
  function pyRepr(value) {
344
370
  return value.includes("'") && !value.includes('"') ? `"${value}"` : `'${value}'`;
345
371
  }
346
- //# sourceMappingURL=query.js.map
@@ -1,16 +1,26 @@
1
1
  import fs from "node:fs";
2
2
  import os from "node:os";
3
3
  import path from "node:path";
4
+ import { resolveProfileDirOverride, resolveXdgDataHome } from "../../core/envPaths.js";
5
+ import { expanduser } from "../../core/paths.js";
4
6
  import { usageMain, corpusTooLargeReason } from "../../analytics/usageStats.js";
5
7
  import { extractCorpusMain } from "../../analytics/extractCorpus.js";
8
+ import { tiersDirForCorpusPath, assessTiers, readBoundedMetadata, } from "../../analytics/extractCorpus/index.js";
6
9
  function buildExtractArgv(args, corpusPath) {
7
- const argv = ["--output", corpusPath];
10
+ // Refresh publishes bounded evidence tiers to the directory co-located with
11
+ // the canonical corpus path (`<dir>/tiers`); the extract engine no longer
12
+ // accepts the monolithic `--output corpusPath` write target (tiers are the
13
+ // only canonical output). Passing `--tier-output` makes the displayed
14
+ // `corpus_path`/`tier_path` truthful: tiers land at `dirname(corpusPath)/tiers`.
15
+ const argv = ["--tier-output", tiersDirForCorpusPath(corpusPath)];
8
16
  for (const root of args.projectRoot ?? [])
9
17
  argv.push("--project-root", root);
10
18
  if (args.codexSessionsDir)
11
19
  argv.push("--codex-sessions-dir", args.codexSessionsDir);
12
20
  if (args.claudeProjectsDir)
13
21
  argv.push("--claude-projects-dir", args.claudeProjectsDir);
22
+ for (const source of args.importSources ?? [])
23
+ argv.push("--import-source", source);
14
24
  if (args.opencodeConversationsDir)
15
25
  argv.push("--opencode-conversations-dir", args.opencodeConversationsDir);
16
26
  if (args.copilotConversationsDir)
@@ -21,18 +31,20 @@ function buildExtractArgv(args, corpusPath) {
21
31
  argv.push("--cursor-chats-dir", args.cursorChatsDir);
22
32
  if (args.noCodex)
23
33
  argv.push("--no-codex");
24
- if (args.noClaude)
25
- argv.push("--no-claude");
26
34
  if (args.noOpencode)
27
35
  argv.push("--no-opencode");
28
36
  if (args.noCopilot)
29
37
  argv.push("--no-copilot");
30
38
  if (args.noCursor)
31
39
  argv.push("--no-cursor");
40
+ if (args.acceptCoverageGap)
41
+ argv.push("--accept-coverage-gap");
42
+ if (args.coverageAuditOnly)
43
+ argv.push("--coverage-audit-only");
32
44
  return argv;
33
45
  }
34
46
  function usageSyntax() {
35
- return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE]";
47
+ return "agentera usage [--format text|json] [--corpus PATH] [--project VALUE] [--sources active|all]";
36
48
  }
37
49
  function usageExample() {
38
50
  return "agentera usage --format json --project agentera";
@@ -47,50 +59,82 @@ function validateUsageRequest(format) {
47
59
  }
48
60
  /** Faithful port of `_stats_corpus_path`. */
49
61
  export function statsCorpusPath(env = process.env, platform = process.platform) {
50
- const override = env.PROFILERA_PROFILE_DIR;
51
- if (override)
52
- return path.join(override, "intermediate", "corpus.json");
62
+ const profileOverride = resolveProfileDirOverride(env);
63
+ if (profileOverride)
64
+ return path.join(expanduser(profileOverride), "intermediate", "corpus.json");
53
65
  const appHome = env.AGENTERA_HOME;
54
66
  if (appHome)
55
- return path.join(appHome, "intermediate", "corpus.json");
67
+ return path.join(expanduser(appHome), "intermediate", "corpus.json");
56
68
  let base;
57
69
  if (platform === "darwin") {
58
70
  base = path.join(os.homedir(), "Library", "Application Support", "agentera");
59
71
  }
60
72
  else if (platform === "win32") {
61
- base = path.join(env.APPDATA || path.join(os.homedir(), "AppData", "Roaming"), "agentera");
73
+ base = path.join(expanduser(env.APPDATA || path.join(os.homedir(), "AppData", "Roaming")), "agentera");
62
74
  }
63
75
  else {
64
- base = path.join(env.XDG_DATA_HOME || path.join(os.homedir(), ".local", "share"), "agentera");
76
+ base = path.join(resolveXdgDataHome(env), "agentera");
65
77
  }
66
78
  return path.join(base, "intermediate", "corpus.json");
67
79
  }
68
80
  /** Faithful port of `_stats_existing_corpus_status`. */
69
81
  export function statsExistingCorpusStatus(corpusPath) {
82
+ // Bounded tier path: when tiers are published, report readiness from the
83
+ // manifest + retained corpus metadata without reading full evidence. The
84
+ // documented `tier_state`/`tier_path` fields extend the legacy shape;
85
+ // existing `status`/`reason`/`extracted_at`/`total_records` are preserved.
86
+ const tiersDir = tiersDirForCorpusPath(corpusPath);
87
+ const assessment = assessTiers(tiersDir, corpusPath);
88
+ if (assessment.analyzable) {
89
+ const meta = readBoundedMetadata(tiersDir);
90
+ const manifest = meta.manifest;
91
+ const extractedAt = meta.corpusMetadata?.extracted_at ?? null;
92
+ return {
93
+ status: "ready",
94
+ path: corpusPath,
95
+ tier_path: tiersDir,
96
+ tier_state: assessment.state,
97
+ reason: "bounded evidence tier published",
98
+ extracted_at: extractedAt ?? (manifest?.published_at ?? null),
99
+ total_records: manifest?.total_records ?? 0,
100
+ };
101
+ }
102
+ if (assessment.state === "oversized" || assessment.state === "corrupt") {
103
+ return {
104
+ status: "stale",
105
+ path: corpusPath,
106
+ tier_path: tiersDir,
107
+ tier_state: assessment.state,
108
+ reason: assessment.recovery ?? `${assessment.state} evidence tier`,
109
+ ...(assessment.artifact ? { artifact: assessment.artifact } : {}),
110
+ };
111
+ }
112
+ // Legacy or missing: preserve the corpus-envelope status behavior.
70
113
  if (!fs.existsSync(corpusPath)) {
71
114
  return { status: "missing", path: corpusPath, reason: "corpus file does not exist" };
72
115
  }
73
116
  const tooLarge = corpusTooLargeReason(corpusPath);
74
117
  if (tooLarge) {
75
- return { status: "stale", path: corpusPath, reason: tooLarge };
118
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: tooLarge };
76
119
  }
77
120
  let data;
78
121
  try {
79
122
  data = JSON.parse(fs.readFileSync(corpusPath, "utf8"));
80
123
  }
81
124
  catch (exc) {
82
- return { status: "stale", path: corpusPath, reason: `corpus is not readable JSON: ${exc.message}` };
125
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: `corpus is not readable JSON: ${exc.message}` };
83
126
  }
84
127
  const records = data && typeof data === "object" && !Array.isArray(data) ? data.records ?? [] : [];
85
128
  const hasTurn = Array.isArray(records) &&
86
129
  records.some((r) => r && typeof r === "object" && r.source_kind === "conversation_turn");
87
130
  if (!hasTurn) {
88
- return { status: "stale", path: corpusPath, reason: "corpus has no conversation_turn records" };
131
+ return { status: "stale", path: corpusPath, tier_state: "legacy", reason: "corpus has no conversation_turn records" };
89
132
  }
90
133
  const metadata = data.metadata && typeof data.metadata === "object" ? data.metadata : {};
91
134
  return {
92
135
  status: "ready",
93
136
  path: corpusPath,
137
+ tier_state: "legacy",
94
138
  reason: "existing corpus has conversation_turn records",
95
139
  extracted_at: metadata.extracted_at ?? null,
96
140
  total_records: records.length,
@@ -99,9 +143,9 @@ export function statsExistingCorpusStatus(corpusPath) {
99
143
  /**
100
144
  * Faithful port of scripts/agentera `cmd_stats` (canonical command is `report`;
101
145
  * `stats` is the deprecated alias and shares this logic). The plain read path
102
- * reuses the ported usage engine; corpus refresh (which would run the maintainer
103
- * extractor over local runtime history) is reported as unavailable in the
104
- * self-contained package.
146
+ * reuses the ported usage engine over bounded tiers (with a legacy
147
+ * corpus.json fallback when no tiers are published). `stats refresh` publishes
148
+ * bounded tiers from local runtime history under explicit consent.
105
149
  */
106
150
  export function cmdReport(args, io = {}) {
107
151
  const out = io.out ?? ((t) => process.stdout.write(t));
@@ -134,39 +178,65 @@ export function cmdReport(args, io = {}) {
134
178
  const payload = {
135
179
  command: "stats refresh",
136
180
  status: "dry_run",
137
- privacy: { local_history_read: false, local_history_write: false, corpus_write: false, required_consent: "local-history" },
181
+ privacy: {
182
+ local_history_read: false,
183
+ local_history_write: false,
184
+ tier_write: false,
185
+ required_consent: "local-history",
186
+ provided_consent: null,
187
+ },
138
188
  corpus_path: corpusPath,
189
+ tier_path: tiersDirForCorpusPath(corpusPath),
139
190
  engine: { command: engineCommand },
140
- diagnostics: ["dry-run does not read runtime history or write corpus files"],
191
+ diagnostics: [
192
+ "dry-run does not read runtime history or write tier files",
193
+ "published tiers are internal state for stats at $AGENTERA_PROFILE_DIR/intermediate/tiers",
194
+ ...(args.importSources?.includes("claude")
195
+ ? ["Claude historical import can contain secrets, file contents, and command output; apply stays local and read-only"]
196
+ : []),
197
+ ],
141
198
  };
142
199
  if (outputFormat === "json") {
143
200
  out(JSON.stringify(payload, null, 2) + "\n");
144
201
  }
145
202
  else {
146
- out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\nengine=${engineCommand.join(" ")}\n`);
147
- out("privacy=local_history_read=false, corpus_write=false, required_consent=local-history\n");
203
+ out(`agentera stats refresh: dry_run\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\nengine=${engineCommand.join(" ")}\n`);
204
+ out("privacy=local_history_read=false, tier_write=false, required_consent=local-history\n");
148
205
  }
149
206
  return 0;
150
207
  }
151
- // consent === "local-history": run the corpus extractor over local history.
208
+ // consent === "local-history": extract local history into bounded tiers.
152
209
  let engineOut = "";
153
210
  let engineErr = "";
154
211
  const rc = extractCorpusMain(engineArgv, {
155
212
  out: (t) => (engineOut += t + "\n"),
156
213
  err: (t) => (engineErr += t + "\n"),
157
214
  });
215
+ const refreshStatus = rc === 0 ? "pass" : rc === 4 ? "flagged" : "fail";
158
216
  const payload = {
159
217
  command: "stats refresh",
160
- status: rc === 0 ? "pass" : "fail",
161
- privacy: { local_history_read: true, local_history_write: false, corpus_write: true, required_consent: "local-history", provided_consent: "local-history" },
218
+ status: refreshStatus,
219
+ exit_signal: rc === 4 ? "EX2" : null,
220
+ privacy: {
221
+ local_history_read: true,
222
+ local_history_write: false,
223
+ tier_write: rc === 0,
224
+ required_consent: "local-history",
225
+ provided_consent: "local-history",
226
+ historical_imports: args.importSources ?? [],
227
+ historical_import_warning: args.importSources?.includes("claude")
228
+ ? "Claude transcripts can contain secrets, file contents, and command output. Import is local and read-only."
229
+ : null,
230
+ },
162
231
  corpus_path: corpusPath,
232
+ tier_path: tiersDirForCorpusPath(corpusPath),
163
233
  engine: { command: engineCommand, exit_code: rc, stdout: engineOut.split("\n").filter((l) => l), stderr: engineErr.split("\n").filter((l) => l) },
164
234
  };
165
235
  if (outputFormat === "json") {
166
236
  out(JSON.stringify(payload, null, 2) + "\n");
167
237
  }
168
238
  else {
169
- out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\n`);
239
+ out(`agentera stats refresh: ${payload.status}\ncorpus=${corpusPath}\ntiers=${tiersDirForCorpusPath(corpusPath)}\n`);
170
240
  if (engineOut)
171
241
  out(engineOut);
172
242
  if (engineErr)
@@ -204,6 +274,8 @@ export function cmdReport(args, io = {}) {
204
274
  const engineArgs = ["--corpus", corpusPath];
205
275
  if (args.project)
206
276
  engineArgs.push("--project", args.project);
277
+ if (args.sources)
278
+ engineArgs.push("--sources", args.sources);
207
279
  if (outputFormat === "json")
208
280
  engineArgs.push("--json");
209
281
  return usageMain(engineArgs, {
@@ -211,4 +283,3 @@ export function cmdReport(args, io = {}) {
211
283
  err: (t) => err(t + "\n"),
212
284
  });
213
285
  }
214
- //# sourceMappingURL=report.js.map