agentera 3.0.0-dev.6 → 3.0.0-dev.69

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (696) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -22
  3. package/bundle/CHANGELOG.md +1361 -0
  4. package/bundle/DESIGN.md +229 -0
  5. package/bundle/LICENSE +201 -0
  6. package/bundle/README.md +143 -0
  7. package/bundle/UPGRADE.md +252 -0
  8. package/bundle/extract-corpus-parity.json +21 -0
  9. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  10. package/bundle/references/adapters/package-publication.json +488 -0
  11. package/bundle/references/adapters/package-registry.yaml +435 -188
  12. package/bundle/references/adapters/package-surface-characterization.md +66 -34
  13. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  14. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  15. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  16. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  17. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  18. package/bundle/references/analysis/verification-policy.yaml +266 -0
  19. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  20. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  21. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  22. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  23. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  24. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  25. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  26. package/bundle/references/cli/routing-model.md +155 -0
  27. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  28. package/bundle/references/cli/update-channels.yaml +19 -2
  29. package/bundle/references/cli/vocabulary-index.yaml +20 -17
  30. package/bundle/references/cli/vocabulary.md +325 -362
  31. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  32. package/bundle/registry.json +13 -13
  33. package/bundle/skills/agentera/SKILL.md +226 -422
  34. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  35. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  36. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  37. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  38. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +103 -0
  39. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +8 -6
  40. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  41. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +184 -0
  42. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  44. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  45. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  46. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  47. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  48. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  50. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  52. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  53. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  55. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  56. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  57. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  58. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  59. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  61. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  62. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  63. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  64. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  65. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  66. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  67. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  68. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  69. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  71. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  72. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  73. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  74. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  75. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  77. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  78. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  79. package/bundle/skills/agentera/capability_schema_contract.yaml +178 -34
  80. package/bundle/skills/agentera/protocol.yaml +31 -31
  81. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  82. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  83. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +39 -21
  84. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  85. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  86. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  87. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  88. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  89. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  90. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +461 -36
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +133 -20
  92. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +342 -42
  93. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  94. package/dist/analytics/extractCorpus/cli.js +101 -12
  95. package/dist/analytics/extractCorpus/copilotSessions.js +53 -9
  96. package/dist/analytics/extractCorpus/core.js +59 -24
  97. package/dist/analytics/extractCorpus/corpus.js +58 -23
  98. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  99. package/dist/analytics/extractCorpus/cursorSessions.js +12 -7
  100. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  101. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  102. package/dist/analytics/extractCorpus/filesystemSources.js +1 -5
  103. package/dist/analytics/extractCorpus/index.js +6 -1
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +24 -5
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +98 -6
  107. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  108. package/dist/analytics/extractCorpus.js +0 -1
  109. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  110. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  111. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  112. package/dist/analytics/personalGlossaryProfile.js +219 -0
  113. package/dist/analytics/profileSignals.js +211 -0
  114. package/dist/analytics/usageStats.js +169 -42
  115. package/dist/audit/terminologyDrift.js +281 -0
  116. package/dist/bin/agentera.js +3 -2
  117. package/dist/capabilities/audit/instructions.js +16 -0
  118. package/dist/capabilities/build/instructions.js +59 -0
  119. package/dist/capabilities/design/instructions.js +4 -0
  120. package/dist/capabilities/discuss/instructions.js +29 -0
  121. package/dist/capabilities/document/instructions.js +11 -0
  122. package/dist/capabilities/index.js +29 -27
  123. package/dist/capabilities/optimize/instructions.js +14 -0
  124. package/dist/capabilities/orchestrate/instructions.js +42 -0
  125. package/dist/capabilities/plan/instructions.js +33 -0
  126. package/dist/capabilities/profile/instructions.js +70 -0
  127. package/dist/capabilities/research/instructions.js +5 -0
  128. package/dist/capabilities/status/instructions.js +15 -0
  129. package/dist/capabilities/status/startupInstructions.js +34 -0
  130. package/dist/capabilities/vision/instructions.js +4 -0
  131. package/dist/cli/appContext.js +30 -24
  132. package/dist/cli/argvalidate.js +0 -1
  133. package/dist/cli/capabilityContext/benchmark.js +25 -17
  134. package/dist/cli/capabilityContext/bespoke.js +31 -12
  135. package/dist/cli/capabilityContext/build.js +251 -0
  136. package/dist/cli/capabilityContext/closeout.js +33 -30
  137. package/dist/cli/capabilityContext/contract.js +39 -46
  138. package/dist/cli/capabilityContext/evidence.js +90 -73
  139. package/dist/cli/capabilityContext/index.js +1 -2
  140. package/dist/cli/capabilityContext/orchestration.js +45 -21
  141. package/dist/cli/capabilityContext/planState.js +93 -100
  142. package/dist/cli/capabilityContext/progress.js +60 -14
  143. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  144. package/dist/cli/capabilityContext/shared.js +9 -20
  145. package/dist/cli/capabilityContext/slim.js +56 -10
  146. package/dist/cli/capabilityContext/startup.js +57 -115
  147. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  148. package/dist/cli/capabilityContext/types.js +37 -24
  149. package/dist/cli/capabilityContext.js +1 -2
  150. package/dist/cli/commands/appHome.js +22 -0
  151. package/dist/cli/commands/capability.js +4 -4
  152. package/dist/cli/commands/compact.js +163 -13
  153. package/dist/cli/commands/doctor.js +122 -114
  154. package/dist/cli/commands/durability.js +81 -0
  155. package/dist/cli/commands/glossaryAdvice.js +138 -0
  156. package/dist/cli/commands/lint.js +22 -8
  157. package/dist/cli/commands/personalGlossary.js +176 -0
  158. package/dist/cli/commands/prime/briefOrientation.js +746 -0
  159. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  160. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  161. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  162. package/dist/cli/commands/prime/collectOrientationState.js +219 -0
  163. package/dist/cli/commands/prime/orientationOutput.js +421 -0
  164. package/dist/cli/commands/prime/types.js +1 -0
  165. package/dist/cli/commands/prime/v1Migration.js +38 -0
  166. package/dist/cli/commands/prime.js +80 -558
  167. package/dist/cli/commands/profileGrounding.js +55 -0
  168. package/dist/cli/commands/query.js +77 -52
  169. package/dist/cli/commands/report.js +88 -26
  170. package/dist/cli/commands/route.js +142 -0
  171. package/dist/cli/commands/schema.js +266 -142
  172. package/dist/cli/commands/state/decisions.js +51 -61
  173. package/dist/cli/commands/state/docs.js +63 -86
  174. package/dist/cli/commands/state/experimentRecords.js +151 -0
  175. package/dist/cli/commands/state/experiments.js +11 -64
  176. package/dist/cli/commands/state/get.js +129 -0
  177. package/dist/cli/commands/state/health.js +11 -111
  178. package/dist/cli/commands/state/index.js +6 -41
  179. package/dist/cli/commands/state/list.js +194 -0
  180. package/dist/cli/commands/state/objective.js +21 -64
  181. package/dist/cli/commands/state/plan.js +11 -169
  182. package/dist/cli/commands/state/planTasks.js +154 -0
  183. package/dist/cli/commands/state/plans.js +154 -0
  184. package/dist/cli/commands/state/progress.js +11 -45
  185. package/dist/cli/commands/state/shared.js +0 -1
  186. package/dist/cli/commands/state/todo.js +29 -108
  187. package/dist/cli/commands/state/write.js +433 -0
  188. package/dist/cli/commands/upgrade.js +146 -5
  189. package/dist/cli/commands/upgradeVerify.js +118 -0
  190. package/dist/cli/commands/validate.js +246 -211
  191. package/dist/cli/commands/verify.js +24 -9
  192. package/dist/cli/contracts/bundleStatus.js +1 -0
  193. package/dist/cli/contracts/orientationState.js +1 -0
  194. package/dist/cli/dispatch/argvParser.js +32 -0
  195. package/dist/cli/dispatch/check.js +94 -50
  196. package/dist/cli/dispatch/commands.js +27 -0
  197. package/dist/cli/dispatch/index.js +82 -52
  198. package/dist/cli/dispatch/lifecycle.js +268 -108
  199. package/dist/cli/dispatch/prime.js +68 -29
  200. package/dist/cli/dispatch/projections.js +17 -0
  201. package/dist/cli/dispatch/shared.js +1 -2
  202. package/dist/cli/dispatch/state.js +68 -77
  203. package/dist/cli/dispatch.js +0 -1
  204. package/dist/cli/errors.js +16 -17
  205. package/dist/cli/help.js +395 -41
  206. package/dist/cli/migrationRequired.js +122 -0
  207. package/dist/cli/orientation/attention.js +61 -0
  208. package/dist/cli/orientation/corpusCoverage.js +102 -0
  209. package/dist/cli/orientation.js +438 -170
  210. package/dist/cli/planArtifacts.js +350 -0
  211. package/dist/cli/planEvidence.js +157 -0
  212. package/dist/cli/planLifecycleState.js +36 -0
  213. package/dist/cli/planTaskIndex.js +11 -0
  214. package/dist/cli/preCutoverCommand.js +32 -0
  215. package/dist/cli/prime-blob.js +71 -3
  216. package/dist/cli/profileAcquisition.js +167 -0
  217. package/dist/cli/startupCompletenessContract.js +59 -0
  218. package/dist/cli/stateQuery.js +56 -14
  219. package/dist/cli/structured.js +0 -1
  220. package/dist/cli/todoMarkdown.js +25 -12
  221. package/dist/cli/todoReadinessSelection.js +192 -0
  222. package/dist/cli/todoSeverity.js +18 -0
  223. package/dist/core/atomicWriter.js +20 -0
  224. package/dist/core/developmentChannel.js +1 -0
  225. package/dist/core/developmentInvocation.js +374 -0
  226. package/dist/core/difflib.js +0 -1
  227. package/dist/core/envPaths.js +20 -0
  228. package/dist/core/jsonValue.js +5 -0
  229. package/dist/core/paths.js +0 -1
  230. package/dist/core/pyjson.js +67 -3
  231. package/dist/core/shell.js +4 -0
  232. package/dist/core/skillIdentity.js +23 -0
  233. package/dist/core/sourceRoot.js +9 -12
  234. package/dist/core/text.js +10 -0
  235. package/dist/core/toml.js +0 -1
  236. package/dist/core/yaml.js +8 -1
  237. package/dist/eval/evalSkills.js +30 -26
  238. package/dist/eval/hybridRouteEvaluation.js +155 -0
  239. package/dist/eval/semanticEval.js +43 -20
  240. package/dist/eval/semanticFixtures.js +16 -5
  241. package/dist/hooks/common.js +3 -56
  242. package/dist/hooks/compaction/apply.js +252 -50
  243. package/dist/hooks/compaction/dryRun.js +7 -4
  244. package/dist/hooks/compaction/index.js +5 -6
  245. package/dist/hooks/compaction/parse.js +201 -5
  246. package/dist/hooks/compaction/retention.js +30 -25
  247. package/dist/hooks/compaction/status.js +149 -32
  248. package/dist/hooks/compaction/types.js +0 -1
  249. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  250. package/dist/hooks/validateArtifact/index.js +7 -64
  251. package/dist/hooks/validateArtifact/markdown.js +57 -7
  252. package/dist/hooks/validateArtifact/schema.js +110 -19
  253. package/dist/hooks/validateArtifact/traversal.js +13 -11
  254. package/dist/hooks/validateArtifact/violations.js +7 -5
  255. package/dist/migrate/v2HandoffManifest.js +127 -8
  256. package/dist/registries/activationContract.js +2 -0
  257. package/dist/registries/activationTuples.js +108 -0
  258. package/dist/registries/artifactProtocolIds.js +2 -1
  259. package/dist/registries/artifactRegistry.js +224 -63
  260. package/dist/registries/artifactSchemaProjection.js +45 -0
  261. package/dist/registries/capabilityContract.js +129 -2
  262. package/dist/registries/evaluatorHandoffContract.js +2 -3
  263. package/dist/registries/evidenceTierContract.js +371 -0
  264. package/dist/registries/glossaryAdviceContract.js +79 -0
  265. package/dist/registries/glossaryCaveatContract.js +67 -0
  266. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  267. package/dist/registries/glossaryEntryContract.js +757 -0
  268. package/dist/registries/glossaryTermIdentity.js +17 -0
  269. package/dist/registries/glossaryTermOccurrence.js +20 -0
  270. package/dist/registries/hybridRoute.js +274 -0
  271. package/dist/registries/hybridRouteReceipt.js +221 -0
  272. package/dist/registries/packagePublication.js +273 -0
  273. package/dist/registries/packageRegistry.js +187 -211
  274. package/dist/registries/todoReadinessContract.js +448 -0
  275. package/dist/registries/triggerLoader.js +174 -0
  276. package/dist/registries/verbosityBudgetContract.js +205 -0
  277. package/dist/release/releaseMetadata.js +156 -6
  278. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  279. package/dist/runtime/lifecycleAdapters.js +777 -0
  280. package/dist/runtime/lifecycleAuthority.js +453 -0
  281. package/dist/runtime/lifecycleOperationContract.js +123 -0
  282. package/dist/runtime/lifecycleOperations.js +634 -0
  283. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  284. package/dist/runtime/lifecyclePublication.js +415 -0
  285. package/dist/runtime/lifecycleSnapshot.js +438 -0
  286. package/dist/runtime/nativeResourceCleanup.js +502 -0
  287. package/dist/setup/opencode.js +20 -13
  288. package/dist/setup/opencodeConstants.js +1 -0
  289. package/dist/setup/sharedSkill.js +45 -0
  290. package/dist/setup/smokeChecks.js +21 -82
  291. package/dist/state/archiveDiscovery.js +580 -0
  292. package/dist/state/archivePublication.js +225 -0
  293. package/dist/state/archiveRecovery.js +237 -0
  294. package/dist/state/archiveReplay.js +53 -0
  295. package/dist/state/canonicalMigrationRecord.js +36 -0
  296. package/dist/state/changelog.js +221 -0
  297. package/dist/state/decisionEntities.js +367 -0
  298. package/dist/state/decisionLegacyValidation.js +215 -0
  299. package/dist/state/decisionMigrationProvenance.js +199 -0
  300. package/dist/state/decisionOverlay.js +254 -0
  301. package/dist/state/decisionRevision.js +256 -0
  302. package/dist/state/decisionRevisionMigration.js +89 -0
  303. package/dist/state/directRetrieval.js +323 -0
  304. package/dist/state/durability.js +324 -0
  305. package/dist/state/entityCutover.js +459 -0
  306. package/dist/state/entityCutoverGit.js +127 -0
  307. package/dist/state/entityGlossaryAuthority.js +13 -0
  308. package/dist/state/entityListProjection.js +187 -0
  309. package/dist/state/entityListRuntimeRegistry.js +85 -0
  310. package/dist/state/entityMigrationCausality.js +97 -0
  311. package/dist/state/entityMigrationIdentity.js +5 -0
  312. package/dist/state/entityMigrationPreview.js +840 -0
  313. package/dist/state/entityMigrationTodo.js +133 -0
  314. package/dist/state/entityPublicationContext.js +859 -0
  315. package/dist/state/entityRetrievalHelp.js +506 -0
  316. package/dist/state/entityStorage.js +899 -0
  317. package/dist/state/exactReplacementRecovery.js +18 -0
  318. package/dist/state/experimentArchive.js +63 -0
  319. package/dist/state/experimentIdentity.js +202 -0
  320. package/dist/state/healthEntities.js +262 -0
  321. package/dist/state/healthEntityValidation.js +18 -0
  322. package/dist/state/healthRepair.js +69 -0
  323. package/dist/state/installRoot.js +64 -25
  324. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  325. package/dist/state/legacyIdentity.js +47 -0
  326. package/dist/state/legacySummaryRecord.js +6 -0
  327. package/dist/state/listAccounting.js +54 -0
  328. package/dist/state/listClassification.js +17 -0
  329. package/dist/state/listCursor.js +42 -0
  330. package/dist/state/listRetrieval.js +781 -0
  331. package/dist/state/migrationSourceBinding.js +30 -0
  332. package/dist/state/objectiveExperimentEntities.js +322 -0
  333. package/dist/state/planEntities.js +1027 -0
  334. package/dist/state/planIdentity.js +47 -0
  335. package/dist/state/planLineageValidation.js +52 -0
  336. package/dist/state/planReplacementTransaction.js +475 -0
  337. package/dist/state/planRetrieval.js +313 -0
  338. package/dist/state/planTaskRetrieval.js +294 -0
  339. package/dist/state/progressEntities.js +512 -0
  340. package/dist/state/progressGlossaryCaveat.js +168 -0
  341. package/dist/state/progressPublicationOrder.js +19 -0
  342. package/dist/state/progressWritePolicy.js +33 -0
  343. package/dist/state/projectRoot.js +62 -0
  344. package/dist/state/projectionPolicy.js +190 -0
  345. package/dist/state/retrievalAuthority.js +156 -0
  346. package/dist/state/safeProjectFile.js +155 -0
  347. package/dist/state/startupAnalysis/benchmark.js +92 -27
  348. package/dist/state/startupAnalysis/contract.js +48 -10
  349. package/dist/state/startupAnalysis/helpers.js +27 -73
  350. package/dist/state/startupAnalysis/index.js +0 -1
  351. package/dist/state/startupAnalysis/metrics.js +25 -19
  352. package/dist/state/startupAnalysis/records.js +13 -10
  353. package/dist/state/startupAnalysis/report.js +26 -38
  354. package/dist/state/startupAnalysis/threshold.js +19 -7
  355. package/dist/state/startupAnalysis.js +0 -1
  356. package/dist/state/startupProjection.js +499 -0
  357. package/dist/state/stateMode.js +222 -0
  358. package/dist/state/stateStorageAuthority.js +47 -0
  359. package/dist/state/summaryEntityRead.js +25 -0
  360. package/dist/state/summaryMigrationProvenance.js +66 -0
  361. package/dist/state/summarySourceRowAuthority.js +36 -0
  362. package/dist/state/todoActivationSafety.js +58 -0
  363. package/dist/state/todoDocsEntities.js +1124 -0
  364. package/dist/state/todoDocsEntityValidation.js +158 -0
  365. package/dist/state/todoMarkdownProjection.js +51 -0
  366. package/dist/state/todoReconciliationActivation.js +182 -0
  367. package/dist/state/todoReconciliationInspection.js +171 -0
  368. package/dist/state/todoReconciliationRepair.js +318 -0
  369. package/dist/state/todoReconciliationTransaction.js +595 -0
  370. package/dist/state/write/assign.js +20 -0
  371. package/dist/state/write/candidateMutation.js +269 -0
  372. package/dist/state/write/errors.js +11 -0
  373. package/dist/state/write/experimentPublication.js +192 -0
  374. package/dist/state/write/explain.js +377 -0
  375. package/dist/state/write/fields.js +61 -0
  376. package/dist/state/write/glossaryPublication.js +263 -0
  377. package/dist/state/write/grammar.js +285 -0
  378. package/dist/state/write/helpers.js +29 -0
  379. package/dist/state/write/index.js +12 -0
  380. package/dist/state/write/input.js +391 -0
  381. package/dist/state/write/lock.js +837 -0
  382. package/dist/state/write/mutation.js +234 -0
  383. package/dist/state/write/operations.js +170 -0
  384. package/dist/state/write/planEvaluation.js +128 -0
  385. package/dist/state/write/planPublication.js +179 -0
  386. package/dist/state/write/runtimeOperations.js +146 -0
  387. package/dist/state/write/serialize.js +1 -0
  388. package/dist/state/write/transaction.js +57 -0
  389. package/dist/state/write/validate.js +7 -0
  390. package/dist/upgrade/appContentRefresh.js +383 -0
  391. package/dist/upgrade/appModel.js +8 -7
  392. package/dist/upgrade/atomicWriter.js +1 -0
  393. package/dist/upgrade/bundleEvidence.js +33 -0
  394. package/dist/upgrade/channels.js +12 -8
  395. package/dist/upgrade/compatibility.js +56 -21
  396. package/dist/upgrade/doctor.js +165 -199
  397. package/dist/upgrade/doctorClassifier.js +187 -0
  398. package/dist/upgrade/installedHooksRetirement.js +196 -0
  399. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  400. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  401. package/dist/upgrade/migrateArtifactsV2ToV3.js +375 -79
  402. package/dist/upgrade/migrationPublication.js +122 -0
  403. package/dist/upgrade/nextMajorDoctor.js +29 -10
  404. package/dist/upgrade/npxPlatformStatus.js +22 -0
  405. package/dist/upgrade/projectIntegration.js +145 -189
  406. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  407. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  408. package/dist/upgrade/runtimeMigration.js +272 -373
  409. package/dist/upgrade/upgradeCommands.js +14 -1
  410. package/dist/upgrade/upgradeLock.js +85 -0
  411. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  412. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  413. package/dist/upgrade/versionResolution.js +2 -3
  414. package/dist/validate/activationArtifactEvidence.js +852 -0
  415. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  416. package/dist/validate/activationConjunction.js +816 -0
  417. package/dist/validate/activationEvidenceManifest.js +531 -0
  418. package/dist/validate/activationPackageSemantics.js +29 -0
  419. package/dist/validate/appHomeContract.js +2 -8
  420. package/dist/validate/bootstrapAuthority.js +44 -0
  421. package/dist/validate/capability.js +133 -12
  422. package/dist/validate/crossCapability.js +15 -10
  423. package/dist/validate/retainedReferenceAuthority.js +879 -0
  424. package/dist/validate/selfAudit.js +39 -45
  425. package/dist/validate/v1LegacyCruft.js +131 -0
  426. package/dist/validate/vocabularyAuthority.js +18 -13
  427. package/package.json +60 -29
  428. package/bundle/references/adapters/cursor.md +0 -213
  429. package/bundle/references/adapters/opencode.md +0 -530
  430. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  431. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  432. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  433. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  434. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  435. package/bundle/references/analysis/benchmark.md +0 -267
  436. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  437. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  438. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  439. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  440. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  441. package/bundle/references/cli/coexistence-probe.yaml +0 -9
  442. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  443. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  444. package/bundle/references/cli/upgrade-repair-wording.md +0 -31
  445. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  446. package/bundle/references/meta/documentation-inventory.md +0 -49
  447. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  448. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  449. package/bundle/skills/agentera/agents/hej.toml +0 -6
  450. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  451. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  452. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  453. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  454. package/bundle/skills/agentera/agents/planera.toml +0 -6
  455. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  456. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  457. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  458. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  459. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  460. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  461. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  462. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  463. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  464. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  465. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  466. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  467. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  468. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  471. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -120
  472. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  473. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  474. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  475. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  478. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  479. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  481. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  482. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  483. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  484. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  485. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  486. package/bundle/skills/agentera/references/contract.md +0 -1039
  487. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  488. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  489. package/dist/analytics/extractCorpus/core.js.map +0 -1
  490. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  491. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  492. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  493. package/dist/analytics/extractCorpus/index.js.map +0 -1
  494. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  495. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  496. package/dist/analytics/extractCorpus.js.map +0 -1
  497. package/dist/analytics/usageStats.js.map +0 -1
  498. package/dist/bin/agentera.js.map +0 -1
  499. package/dist/capabilities/dokumentera/instructions.js +0 -6
  500. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  501. package/dist/capabilities/hej/instructions.js +0 -6
  502. package/dist/capabilities/hej/instructions.js.map +0 -1
  503. package/dist/capabilities/index.js.map +0 -1
  504. package/dist/capabilities/inspektera/instructions.js +0 -6
  505. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  506. package/dist/capabilities/inspirera/instructions.js +0 -6
  507. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  508. package/dist/capabilities/optimera/instructions.js +0 -6
  509. package/dist/capabilities/optimera/instructions.js.map +0 -1
  510. package/dist/capabilities/orkestrera/instructions.js +0 -6
  511. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  512. package/dist/capabilities/planera/instructions.js +0 -6
  513. package/dist/capabilities/planera/instructions.js.map +0 -1
  514. package/dist/capabilities/profilera/instructions.js +0 -6
  515. package/dist/capabilities/profilera/instructions.js.map +0 -1
  516. package/dist/capabilities/realisera/instructions.js +0 -6
  517. package/dist/capabilities/realisera/instructions.js.map +0 -1
  518. package/dist/capabilities/resonera/instructions.js +0 -6
  519. package/dist/capabilities/resonera/instructions.js.map +0 -1
  520. package/dist/capabilities/visionera/instructions.js +0 -6
  521. package/dist/capabilities/visionera/instructions.js.map +0 -1
  522. package/dist/capabilities/visualisera/instructions.js +0 -6
  523. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  524. package/dist/cli/appContext.js.map +0 -1
  525. package/dist/cli/argvalidate.js.map +0 -1
  526. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  527. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  528. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  529. package/dist/cli/capabilityContext/contract.js.map +0 -1
  530. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  531. package/dist/cli/capabilityContext/index.js.map +0 -1
  532. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  533. package/dist/cli/capabilityContext/planState.js.map +0 -1
  534. package/dist/cli/capabilityContext/progress.js.map +0 -1
  535. package/dist/cli/capabilityContext/realisera.js +0 -174
  536. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  537. package/dist/cli/capabilityContext/shared.js.map +0 -1
  538. package/dist/cli/capabilityContext/slim.js.map +0 -1
  539. package/dist/cli/capabilityContext/startup.js.map +0 -1
  540. package/dist/cli/capabilityContext/types.js.map +0 -1
  541. package/dist/cli/capabilityContext.js.map +0 -1
  542. package/dist/cli/commands/backfill.js +0 -84
  543. package/dist/cli/commands/backfill.js.map +0 -1
  544. package/dist/cli/commands/capability.js.map +0 -1
  545. package/dist/cli/commands/compact.js.map +0 -1
  546. package/dist/cli/commands/doctor.js.map +0 -1
  547. package/dist/cli/commands/lint.js.map +0 -1
  548. package/dist/cli/commands/prime.js.map +0 -1
  549. package/dist/cli/commands/query.js.map +0 -1
  550. package/dist/cli/commands/report.js.map +0 -1
  551. package/dist/cli/commands/schema.js.map +0 -1
  552. package/dist/cli/commands/state/decisions.js.map +0 -1
  553. package/dist/cli/commands/state/docs.js.map +0 -1
  554. package/dist/cli/commands/state/experiments.js.map +0 -1
  555. package/dist/cli/commands/state/health.js.map +0 -1
  556. package/dist/cli/commands/state/index.js.map +0 -1
  557. package/dist/cli/commands/state/objective.js.map +0 -1
  558. package/dist/cli/commands/state/plan.js.map +0 -1
  559. package/dist/cli/commands/state/progress.js.map +0 -1
  560. package/dist/cli/commands/state/shared.js.map +0 -1
  561. package/dist/cli/commands/state/todo.js.map +0 -1
  562. package/dist/cli/commands/state.js +0 -1023
  563. package/dist/cli/commands/state.js.map +0 -1
  564. package/dist/cli/commands/upgrade.js.map +0 -1
  565. package/dist/cli/commands/validate.js.map +0 -1
  566. package/dist/cli/commands/verify.js.map +0 -1
  567. package/dist/cli/dispatch/check.js.map +0 -1
  568. package/dist/cli/dispatch/index.js.map +0 -1
  569. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  570. package/dist/cli/dispatch/prime.js.map +0 -1
  571. package/dist/cli/dispatch/shared.js.map +0 -1
  572. package/dist/cli/dispatch/state.js.map +0 -1
  573. package/dist/cli/dispatch.js.map +0 -1
  574. package/dist/cli/errors.js.map +0 -1
  575. package/dist/cli/help.js.map +0 -1
  576. package/dist/cli/orientation.js.map +0 -1
  577. package/dist/cli/prime-blob.js.map +0 -1
  578. package/dist/cli/stateQuery.js.map +0 -1
  579. package/dist/cli/structured.js.map +0 -1
  580. package/dist/cli/todoMarkdown.js.map +0 -1
  581. package/dist/core/difflib.js.map +0 -1
  582. package/dist/core/git.js +0 -43
  583. package/dist/core/git.js.map +0 -1
  584. package/dist/core/paths.js.map +0 -1
  585. package/dist/core/pyjson.js.map +0 -1
  586. package/dist/core/sourceRoot.js.map +0 -1
  587. package/dist/core/toml.js.map +0 -1
  588. package/dist/core/yaml.js.map +0 -1
  589. package/dist/eval/evalSkills.js.map +0 -1
  590. package/dist/eval/semanticEval.js.map +0 -1
  591. package/dist/eval/semanticFixtures.js.map +0 -1
  592. package/dist/hooks/common.js.map +0 -1
  593. package/dist/hooks/compaction/apply.js.map +0 -1
  594. package/dist/hooks/compaction/dryRun.js.map +0 -1
  595. package/dist/hooks/compaction/index.js.map +0 -1
  596. package/dist/hooks/compaction/parse.js.map +0 -1
  597. package/dist/hooks/compaction/retention.js.map +0 -1
  598. package/dist/hooks/compaction/status.js.map +0 -1
  599. package/dist/hooks/compaction/types.js.map +0 -1
  600. package/dist/hooks/compaction.js +0 -935
  601. package/dist/hooks/compaction.js.map +0 -1
  602. package/dist/hooks/cursorPreToolUse.js +0 -19
  603. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  604. package/dist/hooks/cursorSessionStart.js +0 -71
  605. package/dist/hooks/cursorSessionStart.js.map +0 -1
  606. package/dist/hooks/sessionStart.js +0 -209
  607. package/dist/hooks/sessionStart.js.map +0 -1
  608. package/dist/hooks/sessionStop.js +0 -203
  609. package/dist/hooks/sessionStop.js.map +0 -1
  610. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  611. package/dist/hooks/validateArtifact/index.js.map +0 -1
  612. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  613. package/dist/hooks/validateArtifact/runtime.js +0 -83
  614. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  615. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  616. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  617. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  618. package/dist/hooks/validateArtifact.js +0 -924
  619. package/dist/hooks/validateArtifact.js.map +0 -1
  620. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  621. package/dist/registries/artifactProtocolIds.js.map +0 -1
  622. package/dist/registries/artifactRegistry.js.map +0 -1
  623. package/dist/registries/capabilityContract.js.map +0 -1
  624. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  625. package/dist/registries/packageRegistry.js.map +0 -1
  626. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  627. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  628. package/dist/release/releaseMetadata.js.map +0 -1
  629. package/dist/setup/codex/agents.js +0 -96
  630. package/dist/setup/codex/agents.js.map +0 -1
  631. package/dist/setup/codex/cli.js +0 -161
  632. package/dist/setup/codex/cli.js.map +0 -1
  633. package/dist/setup/codex/configToml.js +0 -644
  634. package/dist/setup/codex/configToml.js.map +0 -1
  635. package/dist/setup/codex/constants.js +0 -29
  636. package/dist/setup/codex/constants.js.map +0 -1
  637. package/dist/setup/codex/installRoot.js +0 -64
  638. package/dist/setup/codex/installRoot.js.map +0 -1
  639. package/dist/setup/codex/state.js +0 -270
  640. package/dist/setup/codex/state.js.map +0 -1
  641. package/dist/setup/codex.js +0 -12
  642. package/dist/setup/codex.js.map +0 -1
  643. package/dist/setup/copilot.js +0 -227
  644. package/dist/setup/copilot.js.map +0 -1
  645. package/dist/setup/cursor.js +0 -127
  646. package/dist/setup/cursor.js.map +0 -1
  647. package/dist/setup/doctor/core.js +0 -300
  648. package/dist/setup/doctor/core.js.map +0 -1
  649. package/dist/setup/doctor/diagnostics.js +0 -247
  650. package/dist/setup/doctor/diagnostics.js.map +0 -1
  651. package/dist/setup/doctor/opencode.js +0 -281
  652. package/dist/setup/doctor/opencode.js.map +0 -1
  653. package/dist/setup/doctor/report.js +0 -474
  654. package/dist/setup/doctor/report.js.map +0 -1
  655. package/dist/setup/doctor.js +0 -10
  656. package/dist/setup/doctor.js.map +0 -1
  657. package/dist/setup/opencode.js.map +0 -1
  658. package/dist/setup/smokeChecks.js.map +0 -1
  659. package/dist/state/installRoot.js.map +0 -1
  660. package/dist/state/progressCommit.js +0 -289
  661. package/dist/state/progressCommit.js.map +0 -1
  662. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  663. package/dist/state/startupAnalysis/contract.js.map +0 -1
  664. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  665. package/dist/state/startupAnalysis/index.js.map +0 -1
  666. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  667. package/dist/state/startupAnalysis/records.js.map +0 -1
  668. package/dist/state/startupAnalysis/report.js.map +0 -1
  669. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  670. package/dist/state/startupAnalysis.js.map +0 -1
  671. package/dist/upgrade/appModel.js.map +0 -1
  672. package/dist/upgrade/channels.js.map +0 -1
  673. package/dist/upgrade/coexistenceProbe.js +0 -83
  674. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  675. package/dist/upgrade/compatibility.js.map +0 -1
  676. package/dist/upgrade/doctor.js.map +0 -1
  677. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  678. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  679. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  680. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  681. package/dist/upgrade/projectIntegration.js.map +0 -1
  682. package/dist/upgrade/runtimeMigration.js.map +0 -1
  683. package/dist/upgrade/upgradeCommands.js.map +0 -1
  684. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  685. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  686. package/dist/upgrade/versionResolution.js.map +0 -1
  687. package/dist/validate/appHomeContract.js.map +0 -1
  688. package/dist/validate/capability.js.map +0 -1
  689. package/dist/validate/crossCapability.js.map +0 -1
  690. package/dist/validate/lifecycleAdapters.js +0 -772
  691. package/dist/validate/lifecycleAdapters.js.map +0 -1
  692. package/dist/validate/selfAudit.js.map +0 -1
  693. package/dist/validate/vocabularyAuthority.js.map +0 -1
  694. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  695. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  696. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -0,0 +1,155 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { assertValidatedProjectRoot } from "./projectRoot.js";
4
+ function projectPathType(stat) {
5
+ if (stat.isFile())
6
+ return "file";
7
+ if (stat.isDirectory())
8
+ return "directory";
9
+ if (stat.isSymbolicLink())
10
+ return "symlink";
11
+ return "other";
12
+ }
13
+ function samePathIdentity(left, right) {
14
+ return left.dev === right.dev && left.ino === right.ino && projectPathType(left) === projectPathType(right);
15
+ }
16
+ function sameFileSnapshot(left, right) {
17
+ return left.isFile()
18
+ && right.isFile()
19
+ && samePathIdentity(left, right)
20
+ && left.size === right.size
21
+ && left.mtimeNs === right.mtimeNs
22
+ && left.ctimeNs === right.ctimeNs;
23
+ }
24
+ export function snapshotProjectPath(root, relativePath, leafType) {
25
+ const targets = [root];
26
+ let absolute = root;
27
+ for (const segment of relativePath.split("/").filter(Boolean)) {
28
+ absolute = path.join(absolute, segment);
29
+ targets.push(absolute);
30
+ }
31
+ const identities = [];
32
+ let leaf;
33
+ for (const [index, target] of targets.entries()) {
34
+ let stat;
35
+ try {
36
+ stat = fs.lstatSync(target, { bigint: true });
37
+ }
38
+ catch (error) {
39
+ return error.code === "ENOENT"
40
+ ? { kind: "missing", absolute: target, reason: "missing" }
41
+ : { kind: "unsafe", absolute: target, reason: "unreadable" };
42
+ }
43
+ const type = projectPathType(stat);
44
+ if (type === "symlink")
45
+ return { kind: "unsafe", absolute: target, reason: "symlink" };
46
+ const expected = index === targets.length - 1 ? leafType : "directory";
47
+ if (type !== expected)
48
+ return { kind: "unsafe", absolute: target, reason: "type" };
49
+ identities.push({ absolute: target, dev: stat.dev, ino: stat.ino, type });
50
+ leaf = stat;
51
+ }
52
+ return { kind: "stable", absolute, identities, leaf: leaf };
53
+ }
54
+ export function projectPathIsStable(snapshot) {
55
+ return snapshot.identities.every((identity) => {
56
+ try {
57
+ const current = fs.lstatSync(identity.absolute, { bigint: true });
58
+ return current.dev === identity.dev
59
+ && current.ino === identity.ino
60
+ && projectPathType(current) === identity.type;
61
+ }
62
+ catch {
63
+ return false;
64
+ }
65
+ });
66
+ }
67
+ function containedBy(root, candidate) {
68
+ const relativePath = path.relative(root, candidate);
69
+ return relativePath !== ""
70
+ && !relativePath.startsWith(`..${path.sep}`)
71
+ && relativePath !== ".."
72
+ && !path.isAbsolute(relativePath);
73
+ }
74
+ export function resolveProjectDescriptorPath(descriptor) {
75
+ try {
76
+ return fs.realpathSync(`/proc/self/fd/${descriptor}`);
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ }
82
+ function descriptorMatchesPath(root, absolute, descriptorPath) {
83
+ try {
84
+ return containedBy(root, descriptorPath) && fs.realpathSync(absolute) === descriptorPath;
85
+ }
86
+ catch {
87
+ return false;
88
+ }
89
+ }
90
+ /** Pin one project file to a verified descriptor and return only stable in-project bytes. */
91
+ export function readProjectFileSnapshot(projectRoot, relativePath, descriptorPathResolver = resolveProjectDescriptorPath, maxBytes = null) {
92
+ const root = typeof projectRoot === "string" ? projectRoot : projectRoot.path;
93
+ const verifyRoot = () => {
94
+ if (typeof projectRoot !== "string")
95
+ assertValidatedProjectRoot(projectRoot);
96
+ };
97
+ verifyRoot();
98
+ const pathSnapshot = snapshotProjectPath(root, relativePath, "file");
99
+ if (pathSnapshot.kind === "missing") {
100
+ verifyRoot();
101
+ return { bytes: null, kind: "missing", reason: "missing", absolute: pathSnapshot.absolute };
102
+ }
103
+ if (pathSnapshot.kind === "unsafe") {
104
+ verifyRoot();
105
+ return { bytes: null, kind: "unsafe", reason: pathSnapshot.reason };
106
+ }
107
+ let descriptor;
108
+ try {
109
+ const noFollow = fs.constants.O_NOFOLLOW ?? 0;
110
+ descriptor = fs.openSync(pathSnapshot.absolute, fs.constants.O_RDONLY | noFollow);
111
+ const opened = fs.fstatSync(descriptor, { bigint: true });
112
+ if (!opened.isFile() || !samePathIdentity(pathSnapshot.leaf, opened) || !projectPathIsStable(pathSnapshot)) {
113
+ return { bytes: null, kind: "unsafe", reason: "changed" };
114
+ }
115
+ if (maxBytes !== null && opened.size > BigInt(maxBytes)) {
116
+ return { bytes: null, kind: "unsafe", reason: "over_limit" };
117
+ }
118
+ let descriptorRealPath = null;
119
+ try {
120
+ descriptorRealPath = descriptorPathResolver(descriptor);
121
+ }
122
+ catch { /* Descriptor paths are optional strengthening. */ }
123
+ if (descriptorRealPath !== null && !descriptorMatchesPath(root, pathSnapshot.absolute, descriptorRealPath)) {
124
+ return { bytes: null, kind: "unsafe", reason: "changed" };
125
+ }
126
+ const bytes = fs.readFileSync(descriptor);
127
+ const after = fs.fstatSync(descriptor, { bigint: true });
128
+ if (!sameFileSnapshot(opened, after)
129
+ || BigInt(bytes.byteLength) !== opened.size
130
+ || !projectPathIsStable(pathSnapshot)
131
+ || (descriptorRealPath !== null && !descriptorMatchesPath(root, pathSnapshot.absolute, descriptorRealPath))) {
132
+ return { bytes: null, kind: "unsafe", reason: "changed" };
133
+ }
134
+ verifyRoot();
135
+ return {
136
+ bytes,
137
+ kind: "file",
138
+ dev: after.dev,
139
+ ino: after.ino,
140
+ type: "file",
141
+ mode: Number(after.mode & 4095n),
142
+ };
143
+ }
144
+ catch {
145
+ return { bytes: null, kind: "unsafe", reason: "changed" };
146
+ }
147
+ finally {
148
+ if (descriptor !== undefined) {
149
+ try {
150
+ fs.closeSync(descriptor);
151
+ }
152
+ catch { /* Failed close cannot make unverified bytes safe. */ }
153
+ }
154
+ }
155
+ }
@@ -9,6 +9,7 @@ import { inc, counterDict, safeInt, pyJsonDumps } from "./helpers.js";
9
9
  import { boundedRuntimeStatus } from "./threshold.js";
10
10
  import { classifyStartupRecords } from "./records.js";
11
11
  import { renderStartupReport } from "./report.js";
12
+ import { tiersDirForCorpusPath, assessTiers, readBoundedMetadata, iterBoundedRecords, legacyCorpusReadable, recoveryForState, } from "../../analytics/extractCorpus/index.js";
12
13
  export const STARTUP_INTERMEDIATE_ENVELOPE = "startup_state_analysis_v1";
13
14
  export const BENCHMARK_HISTORY_JSONL = "runs.jsonl";
14
15
  export const BENCHMARK_LATEST_REPORT_JSON = "latest-report.json";
@@ -38,8 +39,8 @@ function maxRecordTimestamp(records, after = null) {
38
39
  function artifactLabelCounts(sequences) {
39
40
  const counts = {};
40
41
  for (const sequence of sequences) {
41
- for (const event of sequence.events ?? []) {
42
- if (event && typeof event === "object" && typeof event.artifact_label === "string") {
42
+ for (const event of Array.isArray(sequence.events) ? sequence.events : []) {
43
+ if (event && typeof event === "object" && !Array.isArray(event) && typeof event.artifact_label === "string") {
43
44
  inc(counts, event.artifact_label);
44
45
  }
45
46
  }
@@ -49,15 +50,17 @@ function artifactLabelCounts(sequences) {
49
50
  function runtimeRecordCounts(records) {
50
51
  const counts = {};
51
52
  for (const record of records) {
52
- if (record && typeof record === "object" && typeof record.runtime === "string") {
53
- inc(counts, record.runtime);
53
+ if (record && typeof record === "object") {
54
+ const runtime = record.runtime;
55
+ if (typeof runtime === "string")
56
+ inc(counts, runtime);
54
57
  }
55
58
  }
56
59
  return counterDict(counts);
57
60
  }
58
61
  function agenteraVersion(root = resolveSourceRoot()) {
59
62
  try {
60
- const data = loadTomlFile(path.join(root, "pyproject.toml"));
63
+ const data = loadTomlFile(path.join(root, "pyproject.toml")); // cast: IO boundary — TOML parse of pyproject.toml
61
64
  const project = data.project;
62
65
  if (project && typeof project === "object" && typeof project.version === "string") {
63
66
  return project.version;
@@ -84,8 +87,8 @@ function runtimeScope(metrics, approvedScope = null) {
84
87
  return [...new Set(approvedScope.filter((l) => l).map((l) => String(l)))].sort();
85
88
  }
86
89
  const labels = new Set();
87
- for (const item of metrics.runtime_coverage ?? []) {
88
- if (item && typeof item === "object" && typeof item.runtime === "string")
90
+ for (const item of Array.isArray(metrics.runtime_coverage) ? metrics.runtime_coverage : []) {
91
+ if (item && typeof item === "object" && !Array.isArray(item) && typeof item.runtime === "string")
89
92
  labels.add(item.runtime);
90
93
  }
91
94
  const runtimeCounts = metrics.runtime_record_counts;
@@ -195,7 +198,7 @@ function withEstimatedTokensSaved(metrics, benchmarkDir, scope) {
195
198
  return enriched;
196
199
  }
197
200
  export function buildBenchmarkHistoryRow(metrics, scope = null) {
198
- const recommendation = metrics && typeof metrics === "object" && metrics.startup_recommendation && typeof metrics.startup_recommendation === "object"
201
+ const recommendation = metrics && typeof metrics === "object" && metrics.startup_recommendation && typeof metrics.startup_recommendation === "object" && !Array.isArray(metrics.startup_recommendation)
199
202
  ? metrics.startup_recommendation
200
203
  : {};
201
204
  return {
@@ -287,21 +290,22 @@ export function buildStartupIntermediate(corpus, opts) {
287
290
  let runtimeStatuses = metadata.runtime_statuses;
288
291
  if (!Array.isArray(runtimeStatuses))
289
292
  runtimeStatuses = [];
290
- const boundary = parseTimestamp((loaded.boundary ?? {}).committed_at);
293
+ const boundaryInfo = loaded.boundary && typeof loaded.boundary === "object" && !Array.isArray(loaded.boundary) ? loaded.boundary : {};
294
+ const boundary = parseTimestamp(boundaryInfo.committed_at);
291
295
  const windowStartedAfter = opts.benchmarkWindowStartedAfter ?? boundary;
292
296
  const watermarkAt = opts.benchmarkWatermarkAt ?? maxRecordTimestamp(records, windowStartedAfter);
293
297
  const classified = classifyStartupRecords(corpus, { salt, contract: loaded });
294
- const sequences = classified.state_gathering_sequences;
298
+ const sequences = (Array.isArray(classified.state_gathering_sequences) ? classified.state_gathering_sequences : []);
295
299
  const degradations = classified.degradations;
296
300
  const runtimeCoverage = runtimeStatuses
297
- .filter((s) => s && typeof s === "object" && !Array.isArray(s))
301
+ .filter((s) => Boolean(s && typeof s === "object" && !Array.isArray(s)))
298
302
  .map((s) => boundedRuntimeStatus(s));
299
303
  return {
300
304
  output_envelope: STARTUP_INTERMEDIATE_ENVELOPE,
301
305
  contract_version: loaded.version ?? null,
302
- boundary_source: (loaded.boundary ?? {}).source ?? null,
303
- boundary_commit: (loaded.boundary ?? {}).commit ?? null,
304
- boundary_committed_at: (loaded.boundary ?? {}).committed_at ?? null,
306
+ boundary_source: boundaryInfo.source ?? null,
307
+ boundary_commit: boundaryInfo.commit ?? null,
308
+ boundary_committed_at: boundaryInfo.committed_at ?? null,
305
309
  benchmark_mode: opts.benchmarkMode || "full_boundary_snapshot",
306
310
  benchmark_previous_watermark_at: formatTimestamp(opts.benchmarkPreviousWatermarkAt ?? null),
307
311
  benchmark_window_started_after: formatTimestamp(windowStartedAfter),
@@ -319,14 +323,15 @@ export function buildStartupIntermediate(corpus, opts) {
319
323
  }
320
324
  export function buildNoRuntimeStartupIntermediate(opts = {}) {
321
325
  const loaded = opts.contract ?? loadContract();
322
- const boundary = parseTimestamp((loaded.boundary ?? {}).committed_at);
326
+ const boundaryInfo = loaded.boundary && typeof loaded.boundary === "object" && !Array.isArray(loaded.boundary) ? loaded.boundary : {};
327
+ const boundary = parseTimestamp(boundaryInfo.committed_at);
323
328
  const windowStartedAfter = opts.benchmarkPreviousWatermarkAt ?? boundary;
324
329
  return {
325
330
  output_envelope: STARTUP_INTERMEDIATE_ENVELOPE,
326
331
  contract_version: loaded.version ?? null,
327
- boundary_source: (loaded.boundary ?? {}).source ?? null,
328
- boundary_commit: (loaded.boundary ?? {}).commit ?? null,
329
- boundary_committed_at: (loaded.boundary ?? {}).committed_at ?? null,
332
+ boundary_source: boundaryInfo.source ?? null,
333
+ boundary_commit: boundaryInfo.commit ?? null,
334
+ boundary_committed_at: boundaryInfo.committed_at ?? null,
330
335
  benchmark_mode: opts.benchmarkMode ?? "since_previous_benchmark",
331
336
  benchmark_previous_watermark_at: formatTimestamp(opts.benchmarkPreviousWatermarkAt ?? null),
332
337
  benchmark_window_started_after: formatTimestamp(windowStartedAfter),
@@ -342,21 +347,82 @@ export function buildNoRuntimeStartupIntermediate(opts = {}) {
342
347
  compatibility_note: "No runtime stores were approved, so no local runtime history was read.",
343
348
  };
344
349
  }
350
+ /**
351
+ * Build a degraded corpus envelope for a tier-compatibility state. The
352
+ * local-corpus pseudo-runtime carries the contract-projected reason and
353
+ * recovery so a caller can self-service. `reason` must be a value from the
354
+ * evidence-tier authority's compatibility states (oversized,
355
+ * no_evidence, unreadable_or_schema_divergent, legacy_monolithic_state).
356
+ */
357
+ function degradeEnvelope(reason, recovery) {
358
+ const status = {
359
+ runtime: "local-corpus",
360
+ status: "degraded",
361
+ reason,
362
+ error_count: 1,
363
+ };
364
+ if (recovery)
365
+ status.recovery = recovery;
366
+ return {
367
+ metadata: { runtime_statuses: [status] },
368
+ records: [],
369
+ };
370
+ }
345
371
  export function extractStartupIntermediateFromCorpusFile(corpusPath, opts) {
372
+ const tiersDir = tiersDirForCorpusPath(corpusPath);
373
+ const assessment = assessTiers(tiersDir, corpusPath);
346
374
  let corpus;
347
- try {
348
- corpus = JSON.parse(fs.readFileSync(corpusPath, "utf8"));
349
- }
350
- catch {
375
+ if (assessment.analyzable) {
376
+ // Bounded tier read: assemble the corpus envelope from bounded evidence
377
+ // shards (read one at a time, each under the reader cap) plus the retained
378
+ // manifest metadata, then run the multi-pass startup classification. The
379
+ // monolithic corpus envelope is never read whole at real scale.
380
+ const meta = readBoundedMetadata(tiersDir);
381
+ const records = Array.from(iterBoundedRecords(tiersDir) ?? []);
351
382
  corpus = {
352
383
  metadata: {
353
- runtime_statuses: [
354
- { runtime: "local-corpus", status: "degraded", reason: "schema_divergent", error_count: 1 },
355
- ],
384
+ runtime_statuses: meta.corpusMetadata?.runtime_statuses ?? [],
385
+ adapter_version: meta.manifest?.adapter_version ?? null,
386
+ extracted_at: meta.corpusMetadata?.extracted_at ??
387
+ meta.manifest?.published_at ??
388
+ null,
356
389
  },
357
- records: [],
390
+ records,
358
391
  };
359
392
  }
393
+ else if (assessment.state === "corrupt" || assessment.state === "oversized") {
394
+ // Tier-level failure: degrade truthfully with the contract-projected
395
+ // reason and recovery guidance. The boundedRuntimeStatus normalizer
396
+ // preserves compatibility-state reasons (no_evidence, oversized,
397
+ // unreadable_or_schema_divergent, legacy_monolithic_state) and passes
398
+ // through the recovery field for self-service correction.
399
+ corpus = degradeEnvelope(assessment.state === "corrupt"
400
+ ? "unreadable_or_schema_divergent"
401
+ : "oversized", assessment.recovery);
402
+ }
403
+ else if (assessment.state === "missing") {
404
+ // No evidence artifact or tier exists at the resolved path. Degrade with
405
+ // the contract's missing reason and recovery; never auto-build or scan.
406
+ corpus = degradeEnvelope("no_evidence", assessment.recovery);
407
+ }
408
+ else {
409
+ // Legacy monolithic corpus.json exists but no bounded tiers published.
410
+ // Size-check before reading — an oversized legacy corpus is never loaded
411
+ // whole, matching the contract's oversized compatibility state.
412
+ if (!legacyCorpusReadable(corpusPath)) {
413
+ corpus = degradeEnvelope("oversized", recoveryForState("oversized") ?? undefined);
414
+ }
415
+ else {
416
+ // Small legacy corpus: backward-compat bounded read.
417
+ try {
418
+ corpus = JSON.parse(fs.readFileSync(corpusPath, "utf8"));
419
+ }
420
+ catch {
421
+ // Corrupt legacy corpus: report the contract's corrupt reason.
422
+ corpus = degradeEnvelope("unreadable_or_schema_divergent", recoveryForState("corrupt") ?? undefined);
423
+ }
424
+ }
425
+ }
360
426
  const intermediate = buildStartupIntermediate(corpus, { salt: opts.salt, contract: opts.contract ?? null });
361
427
  if (opts.outputPath) {
362
428
  fs.mkdirSync(path.dirname(opts.outputPath), { recursive: true });
@@ -364,4 +430,3 @@ export function extractStartupIntermediateFromCorpusFile(corpusPath, opts) {
364
430
  }
365
431
  return intermediate;
366
432
  }
367
- //# sourceMappingURL=benchmark.js.map
@@ -1,8 +1,4 @@
1
1
  import crypto from "node:crypto";
2
- import fs from "node:fs";
3
- import path from "node:path";
4
- import { loadYamlMapping } from "../../core/yaml.js";
5
- import { resolveSourceRoot } from "../../core/sourceRoot.js";
6
2
  export const TRANSCRIPT_KEYS = new Set([
7
3
  "content",
8
4
  "text",
@@ -15,11 +11,51 @@ export const TRANSCRIPT_KEYS = new Set([
15
11
  ]);
16
12
  export const SESSION_KEYS = new Set(["session_id", "sessionID", "sessionId", "conversation_id"]);
17
13
  export const PATH_KEYS = new Set(["path", "project_path", "store_path", "file_path", "cwd", "report_path"]);
18
- export function contractPath(root = resolveSourceRoot()) {
19
- return path.join(root, "references", "analysis", "startup-measurement-contract.yaml");
14
+ const DEFAULT_CONTRACT = {
15
+ version: "startup-state-analysis-v1",
16
+ boundary: {
17
+ source: "git tag evidence",
18
+ commit: "b18e3dc7d768d4ad2726880916e7cfe6bd8617d3",
19
+ committed_at: "2026-05-12T17:50:13+02:00",
20
+ },
21
+ degradation_reasons: [
22
+ "pre_boundary_record",
23
+ "missing_timestamp",
24
+ "malformed_record",
25
+ "missing_conversation_key",
26
+ "no_agentera_state_sequence",
27
+ "privacy_redaction_required",
28
+ ],
29
+ privacy_boundary: {
30
+ canonical_artifact_labels: {
31
+ ".agentera/plan.yaml": "plan",
32
+ ".agentera/progress.yaml": "progress",
33
+ ".agentera/docs.yaml": "docs",
34
+ ".agentera/decisions.yaml": "decisions",
35
+ ".agentera/health.yaml": "health",
36
+ ".agentera/vision.yaml": "vision",
37
+ ".agentera/objective.yaml": "objective",
38
+ ".agentera/experiments.yaml": "experiments",
39
+ plan: "plan",
40
+ progress: "progress",
41
+ docs: "docs",
42
+ decisions: "decisions",
43
+ health: "health",
44
+ vision: "vision",
45
+ objective: "objective",
46
+ experiments: "experiments",
47
+ "AGENTS.md": "AGENTS.md",
48
+ "SKILL.md": "SKILL.md",
49
+ },
50
+ },
51
+ };
52
+ /** Legacy diagnostic label; startup analysis no longer loads a reference file. */
53
+ export function contractPath() {
54
+ return "built-in:startup-state-analysis-v1";
20
55
  }
21
- export function loadContract(p = contractPath()) {
22
- return loadYamlMapping(fs.readFileSync(p, "utf8"));
56
+ /** Startup analysis is source-only compatibility code with fixed redaction defaults. */
57
+ export function loadContract() {
58
+ return DEFAULT_CONTRACT;
23
59
  }
24
60
  export function hashLabel(kind, value, salt) {
25
61
  if (!salt) {
@@ -57,7 +93,10 @@ const FALLBACK_ARTIFACT_LABELS = [
57
93
  export function canonicalArtifactLabel(value, contract = null) {
58
94
  const text = String(value).replace(/\\/g, "/");
59
95
  const loaded = contract ?? loadContract();
60
- const labels = (loaded.privacy_boundary ?? {}).canonical_artifact_labels;
96
+ const privacyBoundary = loaded.privacy_boundary && typeof loaded.privacy_boundary === "object" && !Array.isArray(loaded.privacy_boundary)
97
+ ? loaded.privacy_boundary
98
+ : {};
99
+ const labels = privacyBoundary.canonical_artifact_labels;
61
100
  if (labels && typeof labels === "object" && !Array.isArray(labels)) {
62
101
  for (const [suffix, label] of Object.entries(labels)) {
63
102
  const normalized = String(suffix).replace(/\\/g, "/");
@@ -119,4 +158,3 @@ export function formatTimestamp(value) {
119
158
  // ISO 8601 UTC, seconds precision (mirrors Python isoformat(timespec="seconds")).
120
159
  return value.toISOString().replace(/\.\d{3}Z$/, "+00:00");
121
160
  }
122
- //# sourceMappingURL=contract.js.map
@@ -1,3 +1,4 @@
1
+ import { pyJsonDumps as pyJsonDumpsCore, pyJsonString as pyJsonStringCore } from "../../core/pyjson.js";
1
2
  import { hashLabel } from "./contract.js";
2
3
  export const CLI_COMMAND_ARTIFACTS = {
3
4
  plan: new Set(["plan"]),
@@ -8,7 +9,7 @@ export const CLI_COMMAND_ARTIFACTS = {
8
9
  docs: new Set(["docs"]),
9
10
  objective: new Set(["objective"]),
10
11
  experiments: new Set(["experiments"]),
11
- hej: new Set(["plan", "progress", "health", "todo", "docs", "decisions"]),
12
+ status: new Set(["plan", "progress", "health", "todo", "docs", "decisions"]),
12
13
  prime: new Set(["plan", "progress", "health", "todo", "docs", "decisions", "changelog"]),
13
14
  };
14
15
  export const QUERY_ARTIFACTS = {
@@ -23,23 +24,23 @@ export const QUERY_ARTIFACTS = {
23
24
  experiments: "experiments",
24
25
  };
25
26
  const PRIMARY_ROUTE_TO_CAPABILITY = {
26
- build: "realisera",
27
- plan: "planera",
28
- status: "hej",
29
- discuss: "resonera",
30
- research: "inspirera",
31
- optimize: "optimera",
32
- audit: "inspektera",
33
- document: "dokumentera",
34
- profile: "profilera",
35
- design: "visualisera",
36
- orchestrate: "orkestrera",
37
- vision: "visionera",
27
+ build: "build",
28
+ plan: "plan",
29
+ status: "status",
30
+ discuss: "discuss",
31
+ research: "research",
32
+ optimize: "optimize",
33
+ audit: "audit",
34
+ document: "document",
35
+ profile: "profile",
36
+ design: "design",
37
+ orchestrate: "orchestrate",
38
+ vision: "vision",
38
39
  };
39
- const CAPABILITIES_WITH_HEJ = new Set([...Object.values(PRIMARY_ROUTE_TO_CAPABILITY), "hej"]);
40
- const MARKER_RE = /─{2,}\s+(\S)\s+([a-z]+era|hej)\s+·\s+([a-z]+(?:\s+\d+)?)\s+─{2,}/g;
40
+ const CAPABILITIES_WITH_STATUS = new Set([...Object.values(PRIMARY_ROUTE_TO_CAPABILITY)]);
41
+ const MARKER_RE = /─{2,}\s+(\S)\s+(status|vision|discuss|research|plan|build|optimize|audit|document|profile|design|orchestrate)\s+·\s+([a-z]+(?:\s+\d+)?)\s+─{2,}/g;
41
42
  const BARE_AGENTERA_ROUTE_RE = /^\s*\/agentera(?:\s+([A-Za-z0-9._:-]+))?/m;
42
- const BARE_CAPABILITY_ROUTE_RE = /^\s*\/([a-z]+era|hej)(?:\s|$)/m;
43
+ const BARE_CAPABILITY_ROUTE_RE = /^\s*\/(status|vision|discuss|research|plan|build|optimize|audit|document|profile|design|orchestrate)(?:\s|$)/m;
43
44
  const XML_ROUTE_RE = /<command-name>\s*\/(?:agentera\s+)?([A-Za-z0-9._:-]+)\s*<\/command-name>/;
44
45
  export const THRESHOLD_WARNING_PATTERNS = [
45
46
  [
@@ -50,7 +51,7 @@ export const THRESHOLD_WARNING_PATTERNS = [
50
51
  ],
51
52
  ["self_audit", "abstraction", "self_audit.abstraction", /abstraction creep/i],
52
53
  ["self_audit", "filler", "self_audit.filler", /\bfiller\s*:/i],
53
- ["compaction", "over_limit", "compaction.uniform_10_40_50", /over(?:\s+|_)limit|uniform_10_40_50/i],
54
+ ["compaction", "over_limit", "compaction.uniform_10_40_50", /over(?:\s+|_)limit|uniform_(?:10_40_50|20_50_100)/i],
54
55
  ["compaction", "protected_overflow", "compaction.protected_overflow", /protected[-_ ]overflow/i],
55
56
  ];
56
57
  export const POST_AUDIT_FLAG_RE = /\[post-audit-flagged(?::[^\]]*)?\]/gi;
@@ -139,61 +140,15 @@ export function toolArgument(record, ...keys) {
139
140
  }
140
141
  return "";
141
142
  }
142
- export function pyJsonString(str) {
143
- let out = '"';
144
- for (const ch of str) {
145
- const cp = ch.codePointAt(0);
146
- if (ch === '"')
147
- out += '\\"';
148
- else if (ch === "\\")
149
- out += "\\\\";
150
- else if (cp === 0x08)
151
- out += "\\b";
152
- else if (cp === 0x09)
153
- out += "\\t";
154
- else if (cp === 0x0a)
155
- out += "\\n";
156
- else if (cp === 0x0c)
157
- out += "\\f";
158
- else if (cp === 0x0d)
159
- out += "\\r";
160
- else if (cp < 0x20)
161
- out += "\\u" + cp.toString(16).padStart(4, "0");
162
- else if (cp < 0x80)
163
- out += ch;
164
- else if (cp > 0xffff) {
165
- const v = cp - 0x10000;
166
- const hi = 0xd800 + (v >> 10);
167
- const lo = 0xdc00 + (v & 0x3ff);
168
- out += "\\u" + hi.toString(16).padStart(4, "0") + "\\u" + lo.toString(16).padStart(4, "0");
169
- }
170
- else {
171
- out += "\\u" + cp.toString(16).padStart(4, "0");
172
- }
173
- }
174
- return out + '"';
143
+ export const pyJsonString = pyJsonStringCore;
144
+ function startupJsonScalar(value) {
145
+ if (value instanceof Flt)
146
+ return formatFloat(value.v);
147
+ return undefined;
175
148
  }
176
149
  /** Mirror Python json.dumps(value, sort_keys=True) (separators ", "/": ", ensure_ascii). */
177
150
  export function pyJsonDumps(value) {
178
- if (value === null || value === undefined)
179
- return "null";
180
- if (value === true)
181
- return "true";
182
- if (value === false)
183
- return "false";
184
- if (value instanceof Flt)
185
- return formatFloat(value.v);
186
- if (typeof value === "number")
187
- return String(value);
188
- if (typeof value === "string")
189
- return pyJsonString(value);
190
- if (Array.isArray(value))
191
- return "[" + value.map((v) => pyJsonDumps(v)).join(", ") + "]";
192
- if (typeof value === "object") {
193
- const keys = Object.keys(value).sort();
194
- return "{" + keys.map((k) => `${pyJsonString(k)}: ${pyJsonDumps(value[k])}`).join(", ") + "}";
195
- }
196
- return "null";
151
+ return pyJsonDumpsCore(value, startupJsonScalar);
197
152
  }
198
153
  export function argumentsText(record) {
199
154
  return pyJsonDumps(toolArguments(record));
@@ -213,12 +168,12 @@ export function routeCapability(text) {
213
168
  let m = XML_ROUTE_RE.exec(text);
214
169
  if (m) {
215
170
  const route = m[1].toLowerCase();
216
- return CAPABILITIES_WITH_HEJ.has(route) ? route : (PRIMARY_ROUTE_TO_CAPABILITY[route] ?? null);
171
+ return CAPABILITIES_WITH_STATUS.has(route) ? route : (PRIMARY_ROUTE_TO_CAPABILITY[route] ?? null);
217
172
  }
218
173
  m = BARE_AGENTERA_ROUTE_RE.exec(text);
219
174
  if (m) {
220
175
  const route = (m[1] || "status").toLowerCase();
221
- return CAPABILITIES_WITH_HEJ.has(route) ? route : (PRIMARY_ROUTE_TO_CAPABILITY[route] ?? null);
176
+ return CAPABILITIES_WITH_STATUS.has(route) ? route : (PRIMARY_ROUTE_TO_CAPABILITY[route] ?? null);
222
177
  }
223
178
  m = BARE_CAPABILITY_ROUTE_RE.exec(text);
224
179
  if (m) {
@@ -234,7 +189,7 @@ export function capabilityInvocation(text) {
234
189
  if (marker)
235
190
  return marker;
236
191
  const lowered = text.toLowerCase();
237
- for (const capability of [...CAPABILITIES_WITH_HEJ].sort()) {
192
+ for (const capability of [...CAPABILITIES_WITH_STATUS].sort()) {
238
193
  if (new RegExp(`\\b${capability.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\b`).test(lowered)) {
239
194
  return capability;
240
195
  }
@@ -329,4 +284,3 @@ export function safeInt(value) {
329
284
  export function nowIsoSeconds() {
330
285
  return new Date().toISOString().replace(/\.\d{3}Z$/, "+00:00");
331
286
  }
332
- //# sourceMappingURL=helpers.js.map
@@ -4,4 +4,3 @@ export { classifyStartupRecords } from "./records.js";
4
4
  export { STARTUP_METRICS_ENVELOPE, TOKEN_ESTIMATOR_VERSION, aggregateStartupMetrics, } from "./metrics.js";
5
5
  export { STARTUP_REPORT_MARKDOWN, STARTUP_REPORT_JSON, renderStartupReport, writeStartupReports, } from "./report.js";
6
6
  export { STARTUP_INTERMEDIATE_ENVELOPE, BENCHMARK_HISTORY_JSONL, BENCHMARK_LATEST_REPORT_JSON, BENCHMARK_LATEST_REPORT_MARKDOWN, previousBenchmarkWatermark, buildBenchmarkHistoryRow, persistStartupBenchmark, buildStartupIntermediate, buildNoRuntimeStartupIntermediate, extractStartupIntermediateFromCorpusFile, } from "./benchmark.js";
7
- //# sourceMappingURL=index.js.map