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,81 @@
1
+ import { resolvePath } from "../../core/paths.js";
2
+ import { resolveSourceRoot } from "../../core/sourceRoot.js";
3
+ import { emitStructured } from "../structured.js";
4
+ import { stateDurabilityContract } from "../../state/archiveDiscovery.js";
5
+ import { StateRetrievalFailure } from "../../state/directRetrieval.js";
6
+ import { inspectDurability, renderDurabilityText, } from "../../state/durability.js";
7
+ import { entityArtifactValues } from "../../state/entityStorage.js";
8
+ export function requestedDurabilityFormat(argv) {
9
+ for (let index = 0; index < argv.length; index += 1) {
10
+ if (argv[index] === "--format") {
11
+ const value = argv[index + 1];
12
+ if (value === "json" || value === "yaml")
13
+ return value;
14
+ }
15
+ if (argv[index].startsWith("--format=")) {
16
+ const value = argv[index].slice("--format=".length);
17
+ if (value === "json" || value === "yaml")
18
+ return value;
19
+ }
20
+ }
21
+ return "text";
22
+ }
23
+ export function validateDurabilityArgs(args, sourceRoot) {
24
+ const contract = stateDurabilityContract(sourceRoot);
25
+ const validArtifacts = entityArtifactValues(sourceRoot);
26
+ if (args.number !== undefined)
27
+ throw entityDurabilityFailure("entity mode rejects --number; use --artifact ARTIFACT --id ID", args.artifact, args.id ?? undefined, validArtifacts);
28
+ if (!args.artifact || !args.id)
29
+ throw entityDurabilityFailure("entity-mode durability requires --artifact ARTIFACT --id ID", args.artifact, args.id ?? undefined, validArtifacts);
30
+ if (!/^[a-z]{10}$/.test(args.id))
31
+ throw entityDurabilityFailure(`entity ID '${args.id}' must be ten lowercase letters`, args.artifact, args.id, validArtifacts);
32
+ if (args.artifact && !validArtifacts.includes(args.artifact)) {
33
+ throw entityDurabilityFailure(`unsupported durability artifact '${args.artifact}'`, args.artifact, args.id ?? undefined, validArtifacts);
34
+ }
35
+ if (args.limit !== undefined && (args.limit < 1 || args.limit > contract.maximumLimit)) {
36
+ throw entityDurabilityFailure(`argument --limit must be between 1 and ${contract.maximumLimit}`, args.artifact, args.id ?? undefined, validArtifacts);
37
+ }
38
+ }
39
+ export function entityDurabilityFailure(message, artifact, id, validValues) {
40
+ return new StateRetrievalFailure({
41
+ schemaVersion: "agentera.stateFailure.v1",
42
+ status: "fail",
43
+ error: {
44
+ class: "invalid_request",
45
+ message,
46
+ syntax: "agentera check durability --artifact ARTIFACT --id ID --format json",
47
+ example: "agentera check durability --artifact progress --id qjtrmnpvka --format json",
48
+ recovery: "Use one bare entity ID returned by the artifact list; no state was changed.",
49
+ ...(artifact ? { artifact } : {}),
50
+ ...(id ? { id } : {}),
51
+ ...(validValues ? { valid_values: validValues } : {}),
52
+ },
53
+ }, 2);
54
+ }
55
+ export function emitDurabilityFailure(failure, format, io) {
56
+ const out = io.out ?? ((text) => process.stdout.write(text));
57
+ if (format === "json" || format === "yaml")
58
+ emitStructured(failure.body, format, out);
59
+ else {
60
+ const details = failure.body.error;
61
+ out([
62
+ `Error: ${details.message}`,
63
+ `Class: ${details.class}`,
64
+ `Syntax: ${details.syntax}`,
65
+ `Example: ${details.example}`,
66
+ `Recovery: ${details.recovery}`,
67
+ ].join("\n") + "\n");
68
+ }
69
+ return failure.exitCode;
70
+ }
71
+ export function cmdDurability(args, io = {}) {
72
+ const output = io.out ?? ((text) => process.stdout.write(text));
73
+ const response = inspectDurability(resolvePath(args.project ?? process.cwd()), args, { sourceRoot: resolveSourceRoot() });
74
+ if (args.format === "json" || args.format === "yaml") {
75
+ emitStructured(response, args.format, output);
76
+ }
77
+ else {
78
+ renderDurabilityText(response, output);
79
+ }
80
+ return 0;
81
+ }
@@ -0,0 +1,138 @@
1
+ import fs from "node:fs";
2
+ import { acquireGlossaryInputs } from "../../analytics/glossaryInputAcquisition.js";
3
+ import { GlossaryAdviceInputError, resolveGlossaryAdvice, } from "../../analytics/glossaryAdviceResolution.js";
4
+ import { loadYamlMapping } from "../../core/yaml.js";
5
+ import { glossaryAdviceContract } from "../../registries/glossaryAdviceContract.js";
6
+ import { discoverSchemasDir } from "../appContext.js";
7
+ import { emitInvalidInput } from "../errors.js";
8
+ import { registryArtifactPath } from "../orientation.js";
9
+ import { emitStructured } from "../structured.js";
10
+ const contract = glossaryAdviceContract();
11
+ const COMMAND = contract.command.replace("REQUEST", "<file|->");
12
+ const RECOVERY = `Correct the bounded request and retry ${COMMAND}; no state was changed.`;
13
+ function mapping(value) {
14
+ return value !== null && typeof value === "object" && !Array.isArray(value)
15
+ ? value
16
+ : null;
17
+ }
18
+ function invalid(io, body) {
19
+ return emitInvalidInput(io, { format: "json", body: { ...body, recovery: RECOVERY } });
20
+ }
21
+ function parseArgs(argv) {
22
+ let input;
23
+ for (let index = 0; index < argv.length; index += 1) {
24
+ const [name, inline] = argv[index].split("=", 2);
25
+ if (name !== "--input" && name !== "--format") {
26
+ return {
27
+ class: "unrecognized_argument",
28
+ message: `unrecognized arguments: ${name}`,
29
+ syntax: COMMAND,
30
+ };
31
+ }
32
+ const value = inline ?? argv[++index];
33
+ if (!value || value.startsWith("--")) {
34
+ return {
35
+ class: "missing_argument",
36
+ message: `${name} requires a value`,
37
+ syntax: `${name} VALUE`,
38
+ };
39
+ }
40
+ if (name === "--format" && value !== "json") {
41
+ return {
42
+ class: "invalid_choice",
43
+ message: "glossary-advice requires --format json",
44
+ valid_values: ["json"],
45
+ };
46
+ }
47
+ if (name === "--input") {
48
+ if (input !== undefined)
49
+ return { class: "mutually_exclusive", message: "--input may only be supplied once" };
50
+ input = value;
51
+ }
52
+ }
53
+ return input ?? { class: "missing_argument", message: "--input is required", syntax: COMMAND };
54
+ }
55
+ function readRequest(source, io) {
56
+ const bytes = source === "-"
57
+ ? Buffer.from(io.stdin ? io.stdin() : fs.readFileSync(0))
58
+ : fs.readFileSync(source);
59
+ if (bytes.length > contract.maxRequestUtf8Bytes)
60
+ throw new Error("over bound");
61
+ const text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
62
+ const request = mapping(loadYamlMapping(text));
63
+ if (!request)
64
+ throw new Error("not a mapping");
65
+ return request;
66
+ }
67
+ function validatedRequest(request) {
68
+ const keys = Object.keys(request);
69
+ if (keys.some((key) => !contract.requestFields.includes(key)) ||
70
+ contract.requestFields.slice(0, 2).some((key) => !(key in request))) {
71
+ return {
72
+ class: "schema_violation",
73
+ message: "glossary advice request fields are invalid",
74
+ valid_values: contract.requestFields,
75
+ };
76
+ }
77
+ if (request.schema_version !== contract.requestSchemaVersion ||
78
+ typeof request.requested_term !== "string") {
79
+ return {
80
+ class: "schema_violation",
81
+ message: `request must use ${contract.requestSchemaVersion} with one string requested_term`,
82
+ valid_values: [contract.requestSchemaVersion],
83
+ };
84
+ }
85
+ if (request.host_review === undefined || request.host_review === null)
86
+ return { requestedTerm: request.requested_term };
87
+ const review = mapping(request.host_review);
88
+ if (!review ||
89
+ JSON.stringify(Object.keys(review).sort()) !==
90
+ JSON.stringify([...contract.hostReviewFields].sort())) {
91
+ return {
92
+ class: "schema_violation",
93
+ message: "host_review fields are invalid",
94
+ valid_values: contract.hostReviewFields,
95
+ };
96
+ }
97
+ return {
98
+ requestedTerm: request.requested_term,
99
+ hostReview: {
100
+ relation: review.relation,
101
+ candidate_owner: review.candidate_owner,
102
+ candidate_term: review.candidate_term,
103
+ },
104
+ };
105
+ }
106
+ export function runGlossaryAdviceCommand(argv, io) {
107
+ const parsedArgs = parseArgs(argv);
108
+ if (typeof parsedArgs !== "string")
109
+ return invalid(io, parsedArgs);
110
+ let request;
111
+ try {
112
+ request = readRequest(parsedArgs, io);
113
+ }
114
+ catch {
115
+ return invalid(io, {
116
+ class: "invalid_format",
117
+ message: "--input must be one readable bounded UTF-8 YAML or JSON mapping",
118
+ });
119
+ }
120
+ const parsed = validatedRequest(request);
121
+ if ("class" in parsed)
122
+ return invalid(io, parsed);
123
+ try {
124
+ const profilePath = registryArtifactPath("profile", discoverSchemasDir());
125
+ const advice = resolveGlossaryAdvice(parsed.requestedTerm, acquireGlossaryInputs(process.cwd(), profilePath), parsed.hostReview);
126
+ emitStructured({
127
+ schemaVersion: contract.schemaVersion,
128
+ command: "report glossary-advice",
129
+ status: "ok",
130
+ advice,
131
+ }, "json", io.out ?? ((text) => process.stdout.write(text)));
132
+ return 0;
133
+ }
134
+ catch (error) {
135
+ const code = error instanceof GlossaryAdviceInputError ? error.code : "invalid_acquisition";
136
+ return invalid(io, { class: "invalid_request", message: `glossary advice failed: ${code}` });
137
+ }
138
+ }
@@ -9,29 +9,7 @@ const LINT_CHECKS = [
9
9
  ["abstraction", "Add a concrete anchor such as a path, line number, metric, command, identifier, or quote."],
10
10
  ["filler", "Remove the named filler phrase category before writing the artifact."],
11
11
  ];
12
- const LINT_CANONICAL_LABELS = {
13
- changelog: "CHANGELOG.md",
14
- decisions: "DECISIONS.md",
15
- design: "DESIGN.md",
16
- docs: "DOCS.md",
17
- health: "HEALTH.md",
18
- plan: "PLAN.md",
19
- progress: "PROGRESS.md",
20
- todo: "TODO.md",
21
- vision: "VISION.md",
22
- experiments: "EXPERIMENTS.md",
23
- };
24
- const VALIDATE_ARTIFACT_LABELS = [
25
- "CHANGELOG.md",
26
- "DECISIONS.md",
27
- "DESIGN.md",
28
- "DOCS.md",
29
- "HEALTH.md",
30
- "PLAN.md",
31
- "PROGRESS.md",
32
- "TODO.md",
33
- "VISION.md",
34
- ];
12
+ import { VALIDATE_ARTIFACT_PROTOCOL_IDS, normalizeArtifactProtocolId } from "../../registries/artifactProtocolIds.js";
35
13
  function lintSchemaName(artifact, schemas) {
36
14
  if (artifact in schemas)
37
15
  return artifact;
@@ -48,24 +26,14 @@ function lintSchemaName(artifact, schemas) {
48
26
  return stem;
49
27
  return null;
50
28
  }
51
- function lintCanonicalLabel(schemaName, info, artifact) {
52
- if (schemaName in LINT_CANONICAL_LABELS)
53
- return LINT_CANONICAL_LABELS[schemaName];
54
- const record = info.record;
55
- if (record && record.displayName)
56
- return record.displayName;
57
- if (VALIDATE_ARTIFACT_LABELS.includes(artifact))
58
- return artifact;
59
- const upper = artifact.trim().toUpperCase();
60
- if (VALIDATE_ARTIFACT_LABELS.includes(upper))
61
- return upper;
62
- return artifact;
29
+ function lintCanonicalLabel(schemaName, _info, artifact) {
30
+ return normalizeArtifactProtocolId(artifact) ?? schemaName;
63
31
  }
64
32
  function resolveLintArtifactFile(artifact) {
65
33
  const schemas = loadSchemas(discoverSchemasDir());
66
34
  const schemaName = lintSchemaName(artifact, schemas);
67
35
  if (schemaName === null) {
68
- const validLabels = VALIDATE_ARTIFACT_LABELS.join(", ");
36
+ const validLabels = VALIDATE_ARTIFACT_PROTOCOL_IDS.join(", ");
69
37
  throw new Error(`unsupported artifact ${pyRepr(artifact)}; provide --file or --text, ` +
70
38
  "or use a schema name from `agentera query --list-artifacts` " +
71
39
  `or a canonical label (${validLabels})`);
@@ -112,6 +80,9 @@ function isFileSafe(p) {
112
80
  return false;
113
81
  }
114
82
  }
83
+ function isVerbosityAuthorityError(detail) {
84
+ return detail.startsWith("verbosity authority error");
85
+ }
115
86
  function lintChecks(text, artifact, fullArtifact) {
116
87
  const verbosityCheck = fullArtifact ? checkFullFileVerbosity(text, artifact) : checkVerbosity(text, artifact);
117
88
  const raw = {
@@ -127,14 +98,16 @@ function lintChecks(text, artifact, fullArtifact) {
127
98
  name,
128
99
  status: passed ? "pass" : "fail",
129
100
  detail,
130
- action: passed ? "" : actions[name],
101
+ action: passed
102
+ ? ""
103
+ : name === "verbosity" && isVerbosityAuthorityError(detail)
104
+ ? "Repair the verbosity budget authority or its owning artifact schema, then retry lint."
105
+ : actions[name],
131
106
  });
132
107
  }
133
108
  return checks;
134
109
  }
135
- export function lintPayload(args) {
136
- const [text, source, fullArtifact, budgetArtifact] = lintInputText(args);
137
- const artifact = budgetArtifact || String(args.artifact);
110
+ function lintPayloadForContent(artifact, text, source, fullArtifact, strict = false) {
138
111
  validateAgentString(artifact, "artifact");
139
112
  const checks = lintChecks(text, artifact, fullArtifact);
140
113
  const failures = checks.filter((c) => c.status === "fail");
@@ -143,15 +116,24 @@ export function lintPayload(args) {
143
116
  status: failures.length > 0 ? "fail" : "pass",
144
117
  artifact,
145
118
  source,
146
- strict: Boolean(args.strict),
119
+ strict,
147
120
  checks,
148
121
  summary: {
149
122
  failed: failures.length,
150
123
  passed: checks.length - failures.length,
151
- advisory: !args.strict,
124
+ advisory: !strict,
152
125
  },
153
126
  };
154
127
  }
128
+ /** Runs the same full-artifact checks as `check lint --file` without a staging file. */
129
+ export function lintFullArtifactPayload(artifact, content) {
130
+ return lintPayloadForContent(artifact, content, "candidate", true, true);
131
+ }
132
+ export function lintPayload(args) {
133
+ const [text, source, fullArtifact, budgetArtifact] = lintInputText(args);
134
+ const artifact = budgetArtifact || String(args.artifact);
135
+ return lintPayloadForContent(artifact, text, source, fullArtifact, Boolean(args.strict));
136
+ }
155
137
  function emitLintText(payload, out) {
156
138
  const failures = payload.checks.filter((c) => c.status === "fail");
157
139
  out(`lint ${payload.status}: ${payload.artifact} (${payload.source})\n`);
@@ -174,6 +156,6 @@ export function cmdLint(args, io = {}) {
174
156
  else {
175
157
  emitLintText(payload, out);
176
158
  }
177
- return payload.status === "fail" ? 1 : 0;
159
+ const operationalFailure = payload.checks.some((check) => check.status === "fail" && isVerbosityAuthorityError(check.detail));
160
+ return operationalFailure || (args.strict && payload.status === "fail") ? 1 : 0;
178
161
  }
179
- //# sourceMappingURL=lint.js.map
@@ -0,0 +1,176 @@
1
+ import fs from "node:fs";
2
+ import { updatePersonalGlossaryProfile } from "../../analytics/personalGlossaryProfile.js";
3
+ import { loadYamlMapping } from "../../core/yaml.js";
4
+ import { personalGlossaryOutputContract } from "../../registries/glossaryEntryContract.js";
5
+ import { emitInvalidInput } from "../errors.js";
6
+ import { emitStructured } from "../structured.js";
7
+ const REQUEST_FIELDS = ["schema_version", "profile_path", "as_of", "fresh_entries", "retained_history"];
8
+ const HISTORY_FIELDS = ["source_id", "evidence_anchor", "source_kind", "signal_type"];
9
+ const RECOVERY = "Correct the request and retry the same command; no profile bytes were changed.";
10
+ function mapping(value) {
11
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : null;
12
+ }
13
+ function calendarDate(value) {
14
+ if (typeof value !== "string" || !/^\d{4}-\d{2}-\d{2}$/.test(value))
15
+ return false;
16
+ const date = new Date(`${value}T00:00:00.000Z`);
17
+ return !Number.isNaN(date.getTime()) && date.toISOString().slice(0, 10) === value;
18
+ }
19
+ function invalid(io, body) {
20
+ return emitInvalidInput(io, { format: "json", body: { ...body, recovery: body.recovery ?? RECOVERY } });
21
+ }
22
+ function parseArgs(argv) {
23
+ let input;
24
+ let dryRun = false;
25
+ for (let index = 0; index < argv.length; index += 1) {
26
+ const argument = argv[index];
27
+ const [name, inline] = argument.split("=", 2);
28
+ if (name === "--dry-run") {
29
+ if (inline !== undefined)
30
+ return { class: "unrecognized_argument", message: "--dry-run does not accept a value" };
31
+ dryRun = true;
32
+ continue;
33
+ }
34
+ if (name === "--input" || name === "--format") {
35
+ const value = inline ?? argv[++index];
36
+ if (!value || value.startsWith("--"))
37
+ return { class: "missing_argument", message: `${name} requires a value`, syntax: `${name} VALUE` };
38
+ if (name === "--format") {
39
+ if (value !== "json")
40
+ return { class: "invalid_choice", message: `argument --format: invalid choice: '${value}' (choose from 'json')`, valid_values: ["json"] };
41
+ }
42
+ else {
43
+ if (input !== undefined)
44
+ return { class: "mutually_exclusive", message: "--input may only be supplied once" };
45
+ input = value;
46
+ }
47
+ continue;
48
+ }
49
+ return { class: "unrecognized_argument", message: `unrecognized arguments: ${argument}`, syntax: "agentera report profile-glossary --input <file|-> [--dry-run] --format json" };
50
+ }
51
+ if (!input)
52
+ return { class: "missing_argument", message: "--input is required", syntax: "agentera report profile-glossary --input <file|-> [--dry-run] --format json" };
53
+ return { input, dryRun };
54
+ }
55
+ function readRequest(source, io) {
56
+ let bytes;
57
+ if (source === "-")
58
+ bytes = Buffer.from(io.stdin ? io.stdin() : fs.readFileSync(0));
59
+ else
60
+ bytes = fs.readFileSync(source);
61
+ const text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
62
+ const parsed = mapping(loadYamlMapping(text));
63
+ if (!parsed)
64
+ throw new Error("request is not a mapping");
65
+ return parsed;
66
+ }
67
+ function validateRequest(value) {
68
+ const contract = personalGlossaryOutputContract();
69
+ const keys = Object.keys(value);
70
+ const unsupported = keys.filter((key) => !REQUEST_FIELDS.includes(key));
71
+ const missing = REQUEST_FIELDS.filter((key) => !(key in value));
72
+ if (unsupported.length > 0 || missing.length > 0) {
73
+ return { class: "schema_violation", message: `request fields are invalid${missing.length ? `; missing: ${missing.join(", ")}` : ""}${unsupported.length ? `; unsupported: ${unsupported.join(", ")}` : ""}`, valid_values: REQUEST_FIELDS };
74
+ }
75
+ if (value.schema_version !== contract.requestSchemaVersion) {
76
+ return { class: "schema_violation", message: `schema_version must be ${contract.requestSchemaVersion}`, valid_values: [contract.requestSchemaVersion] };
77
+ }
78
+ if (typeof value.profile_path !== "string" || value.profile_path.trim() === "") {
79
+ return { class: "invalid_request", message: "profile_path must be the exact non-empty path returned by prime profile context", valid_values: ["profile_context.profile.path"] };
80
+ }
81
+ if (!calendarDate(value.as_of)) {
82
+ return { class: "invalid_request", message: "as_of must be an ISO calendar date", valid_values: ["YYYY-MM-DD"] };
83
+ }
84
+ if (!Array.isArray(value.fresh_entries) || value.fresh_entries.some((entry) => !mapping(entry))) {
85
+ return { class: "invalid_request", message: "fresh_entries must be a list of shared personal glossary entries", valid_values: ["fresh_entries: []"] };
86
+ }
87
+ for (const [index, raw] of value.fresh_entries.entries()) {
88
+ const entry = mapping(raw);
89
+ const temporal = mapping(entry.temporal);
90
+ if (!temporal || !calendarDate(temporal.observed_at) || !calendarDate(temporal.last_confirmed_at)) {
91
+ return { class: "invalid_request", message: `fresh_entries[${index}].temporal requires observed_at and last_confirmed_at ISO calendar dates`, valid_values: ["YYYY-MM-DD"] };
92
+ }
93
+ if (!["stable", "durable", "situational"].includes(entry.permanence)) {
94
+ return { class: "invalid_request", message: `fresh_entries[${index}].permanence is invalid`, valid_values: ["stable", "durable", "situational"] };
95
+ }
96
+ const provenance = mapping(entry.provenance);
97
+ if (!provenance || !["personal_explicit_definition", "personal_inferred_usage"].includes(String(provenance.kind))) {
98
+ return { class: "invalid_request", message: `fresh_entries[${index}].provenance.kind is invalid`, valid_values: ["personal_explicit_definition", "personal_inferred_usage"] };
99
+ }
100
+ }
101
+ if (!Array.isArray(value.retained_history) || value.retained_history.some((row) => !mapping(row))) {
102
+ return { class: "invalid_request", message: "retained_history must be a list", valid_values: ["retained_history: []"] };
103
+ }
104
+ for (const [index, raw] of value.retained_history.entries()) {
105
+ const row = mapping(raw);
106
+ if (JSON.stringify(Object.keys(row).sort()) !== JSON.stringify([...HISTORY_FIELDS].sort()) || HISTORY_FIELDS.some((field) => typeof row[field] !== "string" || String(row[field]).trim() === "")) {
107
+ return { class: "invalid_request", message: `retained_history[${index}] must contain exactly ${HISTORY_FIELDS.join(", ")}`, valid_values: HISTORY_FIELDS };
108
+ }
109
+ }
110
+ return null;
111
+ }
112
+ function admissionContext(rows) {
113
+ const retainedHistory = new Map();
114
+ for (const raw of rows) {
115
+ const row = mapping(raw);
116
+ const anchor = String(row.evidence_anchor);
117
+ if (retainedHistory.has(anchor))
118
+ return { class: "conflict", message: `retained_history contains duplicate evidence_anchor '${anchor}'`, valid_values: ["one row per evidence_anchor"] };
119
+ retainedHistory.set(anchor, { sourceId: String(row.source_id), sourceKind: String(row.source_kind), signalType: String(row.signal_type) });
120
+ }
121
+ return { retainedHistory };
122
+ }
123
+ export function runPersonalGlossaryCommand(argv, io) {
124
+ const parsed = parseArgs(argv);
125
+ if ("class" in parsed)
126
+ return invalid(io, parsed);
127
+ let request;
128
+ try {
129
+ request = readRequest(parsed.input, io);
130
+ }
131
+ catch {
132
+ return invalid(io, { class: "invalid_format", message: "--input must be a readable UTF-8 YAML or JSON mapping", valid_values: ["YAML mapping", "JSON object"] });
133
+ }
134
+ const requestError = validateRequest(request);
135
+ if (requestError)
136
+ return invalid(io, requestError);
137
+ const profilePath = String(request.profile_path);
138
+ try {
139
+ if (!fs.statSync(profilePath).isFile())
140
+ throw new Error("not a regular file");
141
+ }
142
+ catch {
143
+ return invalid(io, { class: "invalid_request", message: `profile_path is not an existing readable PROFILE.md file: ${profilePath}`, valid_values: ["existing PROFILE.md path from profile_context.profile.path"] });
144
+ }
145
+ const context = admissionContext(request.retained_history);
146
+ if ("class" in context)
147
+ return invalid(io, context);
148
+ try {
149
+ const result = updatePersonalGlossaryProfile({
150
+ profilePath,
151
+ asOf: String(request.as_of),
152
+ freshEntries: request.fresh_entries,
153
+ retainedHistory: context,
154
+ dryRun: parsed.dryRun,
155
+ });
156
+ const candidateStatus = result.changed ? "changed" : "unchanged";
157
+ emitStructured({
158
+ schemaVersion: "agentera.personalGlossaryUpdate.v1",
159
+ command: "report profile-glossary",
160
+ status: parsed.dryRun ? "dry_run_candidate" : result.changed ? "changed" : "unchanged_replay",
161
+ dry_run: parsed.dryRun,
162
+ candidate_status: candidateStatus,
163
+ profile_path: profilePath,
164
+ entry_count: result.entries.length,
165
+ }, "json", io.out ?? ((text) => process.stdout.write(text)));
166
+ return 0;
167
+ }
168
+ catch (error) {
169
+ const message = error.message;
170
+ return invalid(io, {
171
+ class: /conflict|duplicate|ambiguous/i.test(message) ? "conflict" : "invalid_request",
172
+ message,
173
+ valid_values: ["stable", "durable", "situational", "personal_explicit_definition", "personal_inferred_usage"],
174
+ });
175
+ }
176
+ }