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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (696) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -22
  3. package/bundle/CHANGELOG.md +1361 -0
  4. package/bundle/DESIGN.md +229 -0
  5. package/bundle/LICENSE +201 -0
  6. package/bundle/README.md +143 -0
  7. package/bundle/UPGRADE.md +252 -0
  8. package/bundle/extract-corpus-parity.json +21 -0
  9. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  10. package/bundle/references/adapters/package-publication.json +488 -0
  11. package/bundle/references/adapters/package-registry.yaml +435 -188
  12. package/bundle/references/adapters/package-surface-characterization.md +66 -34
  13. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  14. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  15. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  16. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  17. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  18. package/bundle/references/analysis/verification-policy.yaml +266 -0
  19. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  20. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  21. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  22. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  23. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  24. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  25. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  26. package/bundle/references/cli/routing-model.md +155 -0
  27. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  28. package/bundle/references/cli/update-channels.yaml +19 -2
  29. package/bundle/references/cli/vocabulary-index.yaml +20 -17
  30. package/bundle/references/cli/vocabulary.md +325 -362
  31. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  32. package/bundle/registry.json +13 -13
  33. package/bundle/skills/agentera/SKILL.md +226 -422
  34. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  35. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  36. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  37. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  38. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +103 -0
  39. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +8 -6
  40. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  41. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +184 -0
  42. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  44. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  45. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  46. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  47. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  48. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  50. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  52. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  53. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  55. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  56. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  57. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  58. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  59. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  61. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  62. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  63. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  64. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  65. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  66. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  67. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  68. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  69. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  71. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  72. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  73. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  74. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  75. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  77. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  78. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  79. package/bundle/skills/agentera/capability_schema_contract.yaml +178 -34
  80. package/bundle/skills/agentera/protocol.yaml +31 -31
  81. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  82. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  83. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +39 -21
  84. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  85. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  86. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  87. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  88. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  89. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  90. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +461 -36
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +133 -20
  92. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +342 -42
  93. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  94. package/dist/analytics/extractCorpus/cli.js +101 -12
  95. package/dist/analytics/extractCorpus/copilotSessions.js +53 -9
  96. package/dist/analytics/extractCorpus/core.js +59 -24
  97. package/dist/analytics/extractCorpus/corpus.js +58 -23
  98. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  99. package/dist/analytics/extractCorpus/cursorSessions.js +12 -7
  100. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  101. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  102. package/dist/analytics/extractCorpus/filesystemSources.js +1 -5
  103. package/dist/analytics/extractCorpus/index.js +6 -1
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +24 -5
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +98 -6
  107. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  108. package/dist/analytics/extractCorpus.js +0 -1
  109. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  110. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  111. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  112. package/dist/analytics/personalGlossaryProfile.js +219 -0
  113. package/dist/analytics/profileSignals.js +211 -0
  114. package/dist/analytics/usageStats.js +169 -42
  115. package/dist/audit/terminologyDrift.js +281 -0
  116. package/dist/bin/agentera.js +3 -2
  117. package/dist/capabilities/audit/instructions.js +16 -0
  118. package/dist/capabilities/build/instructions.js +59 -0
  119. package/dist/capabilities/design/instructions.js +4 -0
  120. package/dist/capabilities/discuss/instructions.js +29 -0
  121. package/dist/capabilities/document/instructions.js +11 -0
  122. package/dist/capabilities/index.js +29 -27
  123. package/dist/capabilities/optimize/instructions.js +14 -0
  124. package/dist/capabilities/orchestrate/instructions.js +42 -0
  125. package/dist/capabilities/plan/instructions.js +33 -0
  126. package/dist/capabilities/profile/instructions.js +70 -0
  127. package/dist/capabilities/research/instructions.js +5 -0
  128. package/dist/capabilities/status/instructions.js +15 -0
  129. package/dist/capabilities/status/startupInstructions.js +34 -0
  130. package/dist/capabilities/vision/instructions.js +4 -0
  131. package/dist/cli/appContext.js +30 -24
  132. package/dist/cli/argvalidate.js +0 -1
  133. package/dist/cli/capabilityContext/benchmark.js +25 -17
  134. package/dist/cli/capabilityContext/bespoke.js +31 -12
  135. package/dist/cli/capabilityContext/build.js +251 -0
  136. package/dist/cli/capabilityContext/closeout.js +33 -30
  137. package/dist/cli/capabilityContext/contract.js +39 -46
  138. package/dist/cli/capabilityContext/evidence.js +90 -73
  139. package/dist/cli/capabilityContext/index.js +1 -2
  140. package/dist/cli/capabilityContext/orchestration.js +45 -21
  141. package/dist/cli/capabilityContext/planState.js +93 -100
  142. package/dist/cli/capabilityContext/progress.js +60 -14
  143. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  144. package/dist/cli/capabilityContext/shared.js +9 -20
  145. package/dist/cli/capabilityContext/slim.js +56 -10
  146. package/dist/cli/capabilityContext/startup.js +57 -115
  147. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  148. package/dist/cli/capabilityContext/types.js +37 -24
  149. package/dist/cli/capabilityContext.js +1 -2
  150. package/dist/cli/commands/appHome.js +22 -0
  151. package/dist/cli/commands/capability.js +4 -4
  152. package/dist/cli/commands/compact.js +163 -13
  153. package/dist/cli/commands/doctor.js +122 -114
  154. package/dist/cli/commands/durability.js +81 -0
  155. package/dist/cli/commands/glossaryAdvice.js +138 -0
  156. package/dist/cli/commands/lint.js +22 -8
  157. package/dist/cli/commands/personalGlossary.js +176 -0
  158. package/dist/cli/commands/prime/briefOrientation.js +746 -0
  159. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  160. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  161. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  162. package/dist/cli/commands/prime/collectOrientationState.js +219 -0
  163. package/dist/cli/commands/prime/orientationOutput.js +421 -0
  164. package/dist/cli/commands/prime/types.js +1 -0
  165. package/dist/cli/commands/prime/v1Migration.js +38 -0
  166. package/dist/cli/commands/prime.js +80 -558
  167. package/dist/cli/commands/profileGrounding.js +55 -0
  168. package/dist/cli/commands/query.js +77 -52
  169. package/dist/cli/commands/report.js +88 -26
  170. package/dist/cli/commands/route.js +142 -0
  171. package/dist/cli/commands/schema.js +266 -142
  172. package/dist/cli/commands/state/decisions.js +51 -61
  173. package/dist/cli/commands/state/docs.js +63 -86
  174. package/dist/cli/commands/state/experimentRecords.js +151 -0
  175. package/dist/cli/commands/state/experiments.js +11 -64
  176. package/dist/cli/commands/state/get.js +129 -0
  177. package/dist/cli/commands/state/health.js +11 -111
  178. package/dist/cli/commands/state/index.js +6 -41
  179. package/dist/cli/commands/state/list.js +194 -0
  180. package/dist/cli/commands/state/objective.js +21 -64
  181. package/dist/cli/commands/state/plan.js +11 -169
  182. package/dist/cli/commands/state/planTasks.js +154 -0
  183. package/dist/cli/commands/state/plans.js +154 -0
  184. package/dist/cli/commands/state/progress.js +11 -45
  185. package/dist/cli/commands/state/shared.js +0 -1
  186. package/dist/cli/commands/state/todo.js +29 -108
  187. package/dist/cli/commands/state/write.js +433 -0
  188. package/dist/cli/commands/upgrade.js +146 -5
  189. package/dist/cli/commands/upgradeVerify.js +118 -0
  190. package/dist/cli/commands/validate.js +246 -211
  191. package/dist/cli/commands/verify.js +24 -9
  192. package/dist/cli/contracts/bundleStatus.js +1 -0
  193. package/dist/cli/contracts/orientationState.js +1 -0
  194. package/dist/cli/dispatch/argvParser.js +32 -0
  195. package/dist/cli/dispatch/check.js +94 -50
  196. package/dist/cli/dispatch/commands.js +27 -0
  197. package/dist/cli/dispatch/index.js +82 -52
  198. package/dist/cli/dispatch/lifecycle.js +268 -108
  199. package/dist/cli/dispatch/prime.js +68 -29
  200. package/dist/cli/dispatch/projections.js +17 -0
  201. package/dist/cli/dispatch/shared.js +1 -2
  202. package/dist/cli/dispatch/state.js +68 -77
  203. package/dist/cli/dispatch.js +0 -1
  204. package/dist/cli/errors.js +16 -17
  205. package/dist/cli/help.js +395 -41
  206. package/dist/cli/migrationRequired.js +122 -0
  207. package/dist/cli/orientation/attention.js +61 -0
  208. package/dist/cli/orientation/corpusCoverage.js +102 -0
  209. package/dist/cli/orientation.js +438 -170
  210. package/dist/cli/planArtifacts.js +350 -0
  211. package/dist/cli/planEvidence.js +157 -0
  212. package/dist/cli/planLifecycleState.js +36 -0
  213. package/dist/cli/planTaskIndex.js +11 -0
  214. package/dist/cli/preCutoverCommand.js +32 -0
  215. package/dist/cli/prime-blob.js +71 -3
  216. package/dist/cli/profileAcquisition.js +167 -0
  217. package/dist/cli/startupCompletenessContract.js +59 -0
  218. package/dist/cli/stateQuery.js +56 -14
  219. package/dist/cli/structured.js +0 -1
  220. package/dist/cli/todoMarkdown.js +25 -12
  221. package/dist/cli/todoReadinessSelection.js +192 -0
  222. package/dist/cli/todoSeverity.js +18 -0
  223. package/dist/core/atomicWriter.js +20 -0
  224. package/dist/core/developmentChannel.js +1 -0
  225. package/dist/core/developmentInvocation.js +374 -0
  226. package/dist/core/difflib.js +0 -1
  227. package/dist/core/envPaths.js +20 -0
  228. package/dist/core/jsonValue.js +5 -0
  229. package/dist/core/paths.js +0 -1
  230. package/dist/core/pyjson.js +67 -3
  231. package/dist/core/shell.js +4 -0
  232. package/dist/core/skillIdentity.js +23 -0
  233. package/dist/core/sourceRoot.js +9 -12
  234. package/dist/core/text.js +10 -0
  235. package/dist/core/toml.js +0 -1
  236. package/dist/core/yaml.js +8 -1
  237. package/dist/eval/evalSkills.js +30 -26
  238. package/dist/eval/hybridRouteEvaluation.js +155 -0
  239. package/dist/eval/semanticEval.js +43 -20
  240. package/dist/eval/semanticFixtures.js +16 -5
  241. package/dist/hooks/common.js +3 -56
  242. package/dist/hooks/compaction/apply.js +252 -50
  243. package/dist/hooks/compaction/dryRun.js +7 -4
  244. package/dist/hooks/compaction/index.js +5 -6
  245. package/dist/hooks/compaction/parse.js +201 -5
  246. package/dist/hooks/compaction/retention.js +30 -25
  247. package/dist/hooks/compaction/status.js +149 -32
  248. package/dist/hooks/compaction/types.js +0 -1
  249. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  250. package/dist/hooks/validateArtifact/index.js +7 -64
  251. package/dist/hooks/validateArtifact/markdown.js +57 -7
  252. package/dist/hooks/validateArtifact/schema.js +110 -19
  253. package/dist/hooks/validateArtifact/traversal.js +13 -11
  254. package/dist/hooks/validateArtifact/violations.js +7 -5
  255. package/dist/migrate/v2HandoffManifest.js +127 -8
  256. package/dist/registries/activationContract.js +2 -0
  257. package/dist/registries/activationTuples.js +108 -0
  258. package/dist/registries/artifactProtocolIds.js +2 -1
  259. package/dist/registries/artifactRegistry.js +224 -63
  260. package/dist/registries/artifactSchemaProjection.js +45 -0
  261. package/dist/registries/capabilityContract.js +129 -2
  262. package/dist/registries/evaluatorHandoffContract.js +2 -3
  263. package/dist/registries/evidenceTierContract.js +371 -0
  264. package/dist/registries/glossaryAdviceContract.js +79 -0
  265. package/dist/registries/glossaryCaveatContract.js +67 -0
  266. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  267. package/dist/registries/glossaryEntryContract.js +757 -0
  268. package/dist/registries/glossaryTermIdentity.js +17 -0
  269. package/dist/registries/glossaryTermOccurrence.js +20 -0
  270. package/dist/registries/hybridRoute.js +274 -0
  271. package/dist/registries/hybridRouteReceipt.js +221 -0
  272. package/dist/registries/packagePublication.js +273 -0
  273. package/dist/registries/packageRegistry.js +187 -211
  274. package/dist/registries/todoReadinessContract.js +448 -0
  275. package/dist/registries/triggerLoader.js +174 -0
  276. package/dist/registries/verbosityBudgetContract.js +205 -0
  277. package/dist/release/releaseMetadata.js +156 -6
  278. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  279. package/dist/runtime/lifecycleAdapters.js +777 -0
  280. package/dist/runtime/lifecycleAuthority.js +453 -0
  281. package/dist/runtime/lifecycleOperationContract.js +123 -0
  282. package/dist/runtime/lifecycleOperations.js +634 -0
  283. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  284. package/dist/runtime/lifecyclePublication.js +415 -0
  285. package/dist/runtime/lifecycleSnapshot.js +438 -0
  286. package/dist/runtime/nativeResourceCleanup.js +502 -0
  287. package/dist/setup/opencode.js +20 -13
  288. package/dist/setup/opencodeConstants.js +1 -0
  289. package/dist/setup/sharedSkill.js +45 -0
  290. package/dist/setup/smokeChecks.js +21 -82
  291. package/dist/state/archiveDiscovery.js +580 -0
  292. package/dist/state/archivePublication.js +225 -0
  293. package/dist/state/archiveRecovery.js +237 -0
  294. package/dist/state/archiveReplay.js +53 -0
  295. package/dist/state/canonicalMigrationRecord.js +36 -0
  296. package/dist/state/changelog.js +221 -0
  297. package/dist/state/decisionEntities.js +367 -0
  298. package/dist/state/decisionLegacyValidation.js +215 -0
  299. package/dist/state/decisionMigrationProvenance.js +199 -0
  300. package/dist/state/decisionOverlay.js +254 -0
  301. package/dist/state/decisionRevision.js +256 -0
  302. package/dist/state/decisionRevisionMigration.js +89 -0
  303. package/dist/state/directRetrieval.js +323 -0
  304. package/dist/state/durability.js +324 -0
  305. package/dist/state/entityCutover.js +459 -0
  306. package/dist/state/entityCutoverGit.js +127 -0
  307. package/dist/state/entityGlossaryAuthority.js +13 -0
  308. package/dist/state/entityListProjection.js +187 -0
  309. package/dist/state/entityListRuntimeRegistry.js +85 -0
  310. package/dist/state/entityMigrationCausality.js +97 -0
  311. package/dist/state/entityMigrationIdentity.js +5 -0
  312. package/dist/state/entityMigrationPreview.js +840 -0
  313. package/dist/state/entityMigrationTodo.js +133 -0
  314. package/dist/state/entityPublicationContext.js +859 -0
  315. package/dist/state/entityRetrievalHelp.js +506 -0
  316. package/dist/state/entityStorage.js +899 -0
  317. package/dist/state/exactReplacementRecovery.js +18 -0
  318. package/dist/state/experimentArchive.js +63 -0
  319. package/dist/state/experimentIdentity.js +202 -0
  320. package/dist/state/healthEntities.js +262 -0
  321. package/dist/state/healthEntityValidation.js +18 -0
  322. package/dist/state/healthRepair.js +69 -0
  323. package/dist/state/installRoot.js +64 -25
  324. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  325. package/dist/state/legacyIdentity.js +47 -0
  326. package/dist/state/legacySummaryRecord.js +6 -0
  327. package/dist/state/listAccounting.js +54 -0
  328. package/dist/state/listClassification.js +17 -0
  329. package/dist/state/listCursor.js +42 -0
  330. package/dist/state/listRetrieval.js +781 -0
  331. package/dist/state/migrationSourceBinding.js +30 -0
  332. package/dist/state/objectiveExperimentEntities.js +322 -0
  333. package/dist/state/planEntities.js +1027 -0
  334. package/dist/state/planIdentity.js +47 -0
  335. package/dist/state/planLineageValidation.js +52 -0
  336. package/dist/state/planReplacementTransaction.js +475 -0
  337. package/dist/state/planRetrieval.js +313 -0
  338. package/dist/state/planTaskRetrieval.js +294 -0
  339. package/dist/state/progressEntities.js +512 -0
  340. package/dist/state/progressGlossaryCaveat.js +168 -0
  341. package/dist/state/progressPublicationOrder.js +19 -0
  342. package/dist/state/progressWritePolicy.js +33 -0
  343. package/dist/state/projectRoot.js +62 -0
  344. package/dist/state/projectionPolicy.js +190 -0
  345. package/dist/state/retrievalAuthority.js +156 -0
  346. package/dist/state/safeProjectFile.js +155 -0
  347. package/dist/state/startupAnalysis/benchmark.js +92 -27
  348. package/dist/state/startupAnalysis/contract.js +48 -10
  349. package/dist/state/startupAnalysis/helpers.js +27 -73
  350. package/dist/state/startupAnalysis/index.js +0 -1
  351. package/dist/state/startupAnalysis/metrics.js +25 -19
  352. package/dist/state/startupAnalysis/records.js +13 -10
  353. package/dist/state/startupAnalysis/report.js +26 -38
  354. package/dist/state/startupAnalysis/threshold.js +19 -7
  355. package/dist/state/startupAnalysis.js +0 -1
  356. package/dist/state/startupProjection.js +499 -0
  357. package/dist/state/stateMode.js +222 -0
  358. package/dist/state/stateStorageAuthority.js +47 -0
  359. package/dist/state/summaryEntityRead.js +25 -0
  360. package/dist/state/summaryMigrationProvenance.js +66 -0
  361. package/dist/state/summarySourceRowAuthority.js +36 -0
  362. package/dist/state/todoActivationSafety.js +58 -0
  363. package/dist/state/todoDocsEntities.js +1124 -0
  364. package/dist/state/todoDocsEntityValidation.js +158 -0
  365. package/dist/state/todoMarkdownProjection.js +51 -0
  366. package/dist/state/todoReconciliationActivation.js +182 -0
  367. package/dist/state/todoReconciliationInspection.js +171 -0
  368. package/dist/state/todoReconciliationRepair.js +318 -0
  369. package/dist/state/todoReconciliationTransaction.js +595 -0
  370. package/dist/state/write/assign.js +20 -0
  371. package/dist/state/write/candidateMutation.js +269 -0
  372. package/dist/state/write/errors.js +11 -0
  373. package/dist/state/write/experimentPublication.js +192 -0
  374. package/dist/state/write/explain.js +377 -0
  375. package/dist/state/write/fields.js +61 -0
  376. package/dist/state/write/glossaryPublication.js +263 -0
  377. package/dist/state/write/grammar.js +285 -0
  378. package/dist/state/write/helpers.js +29 -0
  379. package/dist/state/write/index.js +12 -0
  380. package/dist/state/write/input.js +391 -0
  381. package/dist/state/write/lock.js +837 -0
  382. package/dist/state/write/mutation.js +234 -0
  383. package/dist/state/write/operations.js +170 -0
  384. package/dist/state/write/planEvaluation.js +128 -0
  385. package/dist/state/write/planPublication.js +179 -0
  386. package/dist/state/write/runtimeOperations.js +146 -0
  387. package/dist/state/write/serialize.js +1 -0
  388. package/dist/state/write/transaction.js +57 -0
  389. package/dist/state/write/validate.js +7 -0
  390. package/dist/upgrade/appContentRefresh.js +383 -0
  391. package/dist/upgrade/appModel.js +8 -7
  392. package/dist/upgrade/atomicWriter.js +1 -0
  393. package/dist/upgrade/bundleEvidence.js +33 -0
  394. package/dist/upgrade/channels.js +12 -8
  395. package/dist/upgrade/compatibility.js +56 -21
  396. package/dist/upgrade/doctor.js +165 -199
  397. package/dist/upgrade/doctorClassifier.js +187 -0
  398. package/dist/upgrade/installedHooksRetirement.js +196 -0
  399. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  400. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  401. package/dist/upgrade/migrateArtifactsV2ToV3.js +375 -79
  402. package/dist/upgrade/migrationPublication.js +122 -0
  403. package/dist/upgrade/nextMajorDoctor.js +29 -10
  404. package/dist/upgrade/npxPlatformStatus.js +22 -0
  405. package/dist/upgrade/projectIntegration.js +145 -189
  406. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  407. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  408. package/dist/upgrade/runtimeMigration.js +272 -373
  409. package/dist/upgrade/upgradeCommands.js +14 -1
  410. package/dist/upgrade/upgradeLock.js +85 -0
  411. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  412. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  413. package/dist/upgrade/versionResolution.js +2 -3
  414. package/dist/validate/activationArtifactEvidence.js +852 -0
  415. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  416. package/dist/validate/activationConjunction.js +816 -0
  417. package/dist/validate/activationEvidenceManifest.js +531 -0
  418. package/dist/validate/activationPackageSemantics.js +29 -0
  419. package/dist/validate/appHomeContract.js +2 -8
  420. package/dist/validate/bootstrapAuthority.js +44 -0
  421. package/dist/validate/capability.js +133 -12
  422. package/dist/validate/crossCapability.js +15 -10
  423. package/dist/validate/retainedReferenceAuthority.js +879 -0
  424. package/dist/validate/selfAudit.js +39 -45
  425. package/dist/validate/v1LegacyCruft.js +131 -0
  426. package/dist/validate/vocabularyAuthority.js +18 -13
  427. package/package.json +60 -29
  428. package/bundle/references/adapters/cursor.md +0 -213
  429. package/bundle/references/adapters/opencode.md +0 -530
  430. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  431. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  432. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  433. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  434. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  435. package/bundle/references/analysis/benchmark.md +0 -267
  436. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  437. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  438. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  439. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  440. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  441. package/bundle/references/cli/coexistence-probe.yaml +0 -9
  442. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  443. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  444. package/bundle/references/cli/upgrade-repair-wording.md +0 -31
  445. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  446. package/bundle/references/meta/documentation-inventory.md +0 -49
  447. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  448. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  449. package/bundle/skills/agentera/agents/hej.toml +0 -6
  450. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  451. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  452. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  453. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  454. package/bundle/skills/agentera/agents/planera.toml +0 -6
  455. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  456. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  457. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  458. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  459. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  460. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  461. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  462. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  463. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  464. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  465. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  466. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  467. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  468. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  471. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -120
  472. package/bundle/skills/agentera/capabilities/planera/schemas/artifacts.yaml +0 -62
  473. package/bundle/skills/agentera/capabilities/planera/schemas/triggers.yaml +0 -34
  474. package/bundle/skills/agentera/capabilities/planera/schemas/validation.yaml +0 -61
  475. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  478. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  479. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  481. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  482. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  483. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  484. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  485. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  486. package/bundle/skills/agentera/references/contract.md +0 -1039
  487. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  488. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  489. package/dist/analytics/extractCorpus/core.js.map +0 -1
  490. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  491. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  492. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  493. package/dist/analytics/extractCorpus/index.js.map +0 -1
  494. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  495. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  496. package/dist/analytics/extractCorpus.js.map +0 -1
  497. package/dist/analytics/usageStats.js.map +0 -1
  498. package/dist/bin/agentera.js.map +0 -1
  499. package/dist/capabilities/dokumentera/instructions.js +0 -6
  500. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  501. package/dist/capabilities/hej/instructions.js +0 -6
  502. package/dist/capabilities/hej/instructions.js.map +0 -1
  503. package/dist/capabilities/index.js.map +0 -1
  504. package/dist/capabilities/inspektera/instructions.js +0 -6
  505. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  506. package/dist/capabilities/inspirera/instructions.js +0 -6
  507. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  508. package/dist/capabilities/optimera/instructions.js +0 -6
  509. package/dist/capabilities/optimera/instructions.js.map +0 -1
  510. package/dist/capabilities/orkestrera/instructions.js +0 -6
  511. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  512. package/dist/capabilities/planera/instructions.js +0 -6
  513. package/dist/capabilities/planera/instructions.js.map +0 -1
  514. package/dist/capabilities/profilera/instructions.js +0 -6
  515. package/dist/capabilities/profilera/instructions.js.map +0 -1
  516. package/dist/capabilities/realisera/instructions.js +0 -6
  517. package/dist/capabilities/realisera/instructions.js.map +0 -1
  518. package/dist/capabilities/resonera/instructions.js +0 -6
  519. package/dist/capabilities/resonera/instructions.js.map +0 -1
  520. package/dist/capabilities/visionera/instructions.js +0 -6
  521. package/dist/capabilities/visionera/instructions.js.map +0 -1
  522. package/dist/capabilities/visualisera/instructions.js +0 -6
  523. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  524. package/dist/cli/appContext.js.map +0 -1
  525. package/dist/cli/argvalidate.js.map +0 -1
  526. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  527. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  528. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  529. package/dist/cli/capabilityContext/contract.js.map +0 -1
  530. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  531. package/dist/cli/capabilityContext/index.js.map +0 -1
  532. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  533. package/dist/cli/capabilityContext/planState.js.map +0 -1
  534. package/dist/cli/capabilityContext/progress.js.map +0 -1
  535. package/dist/cli/capabilityContext/realisera.js +0 -174
  536. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  537. package/dist/cli/capabilityContext/shared.js.map +0 -1
  538. package/dist/cli/capabilityContext/slim.js.map +0 -1
  539. package/dist/cli/capabilityContext/startup.js.map +0 -1
  540. package/dist/cli/capabilityContext/types.js.map +0 -1
  541. package/dist/cli/capabilityContext.js.map +0 -1
  542. package/dist/cli/commands/backfill.js +0 -84
  543. package/dist/cli/commands/backfill.js.map +0 -1
  544. package/dist/cli/commands/capability.js.map +0 -1
  545. package/dist/cli/commands/compact.js.map +0 -1
  546. package/dist/cli/commands/doctor.js.map +0 -1
  547. package/dist/cli/commands/lint.js.map +0 -1
  548. package/dist/cli/commands/prime.js.map +0 -1
  549. package/dist/cli/commands/query.js.map +0 -1
  550. package/dist/cli/commands/report.js.map +0 -1
  551. package/dist/cli/commands/schema.js.map +0 -1
  552. package/dist/cli/commands/state/decisions.js.map +0 -1
  553. package/dist/cli/commands/state/docs.js.map +0 -1
  554. package/dist/cli/commands/state/experiments.js.map +0 -1
  555. package/dist/cli/commands/state/health.js.map +0 -1
  556. package/dist/cli/commands/state/index.js.map +0 -1
  557. package/dist/cli/commands/state/objective.js.map +0 -1
  558. package/dist/cli/commands/state/plan.js.map +0 -1
  559. package/dist/cli/commands/state/progress.js.map +0 -1
  560. package/dist/cli/commands/state/shared.js.map +0 -1
  561. package/dist/cli/commands/state/todo.js.map +0 -1
  562. package/dist/cli/commands/state.js +0 -1023
  563. package/dist/cli/commands/state.js.map +0 -1
  564. package/dist/cli/commands/upgrade.js.map +0 -1
  565. package/dist/cli/commands/validate.js.map +0 -1
  566. package/dist/cli/commands/verify.js.map +0 -1
  567. package/dist/cli/dispatch/check.js.map +0 -1
  568. package/dist/cli/dispatch/index.js.map +0 -1
  569. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  570. package/dist/cli/dispatch/prime.js.map +0 -1
  571. package/dist/cli/dispatch/shared.js.map +0 -1
  572. package/dist/cli/dispatch/state.js.map +0 -1
  573. package/dist/cli/dispatch.js.map +0 -1
  574. package/dist/cli/errors.js.map +0 -1
  575. package/dist/cli/help.js.map +0 -1
  576. package/dist/cli/orientation.js.map +0 -1
  577. package/dist/cli/prime-blob.js.map +0 -1
  578. package/dist/cli/stateQuery.js.map +0 -1
  579. package/dist/cli/structured.js.map +0 -1
  580. package/dist/cli/todoMarkdown.js.map +0 -1
  581. package/dist/core/difflib.js.map +0 -1
  582. package/dist/core/git.js +0 -43
  583. package/dist/core/git.js.map +0 -1
  584. package/dist/core/paths.js.map +0 -1
  585. package/dist/core/pyjson.js.map +0 -1
  586. package/dist/core/sourceRoot.js.map +0 -1
  587. package/dist/core/toml.js.map +0 -1
  588. package/dist/core/yaml.js.map +0 -1
  589. package/dist/eval/evalSkills.js.map +0 -1
  590. package/dist/eval/semanticEval.js.map +0 -1
  591. package/dist/eval/semanticFixtures.js.map +0 -1
  592. package/dist/hooks/common.js.map +0 -1
  593. package/dist/hooks/compaction/apply.js.map +0 -1
  594. package/dist/hooks/compaction/dryRun.js.map +0 -1
  595. package/dist/hooks/compaction/index.js.map +0 -1
  596. package/dist/hooks/compaction/parse.js.map +0 -1
  597. package/dist/hooks/compaction/retention.js.map +0 -1
  598. package/dist/hooks/compaction/status.js.map +0 -1
  599. package/dist/hooks/compaction/types.js.map +0 -1
  600. package/dist/hooks/compaction.js +0 -935
  601. package/dist/hooks/compaction.js.map +0 -1
  602. package/dist/hooks/cursorPreToolUse.js +0 -19
  603. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  604. package/dist/hooks/cursorSessionStart.js +0 -71
  605. package/dist/hooks/cursorSessionStart.js.map +0 -1
  606. package/dist/hooks/sessionStart.js +0 -209
  607. package/dist/hooks/sessionStart.js.map +0 -1
  608. package/dist/hooks/sessionStop.js +0 -203
  609. package/dist/hooks/sessionStop.js.map +0 -1
  610. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  611. package/dist/hooks/validateArtifact/index.js.map +0 -1
  612. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  613. package/dist/hooks/validateArtifact/runtime.js +0 -83
  614. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  615. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  616. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  617. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  618. package/dist/hooks/validateArtifact.js +0 -924
  619. package/dist/hooks/validateArtifact.js.map +0 -1
  620. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  621. package/dist/registries/artifactProtocolIds.js.map +0 -1
  622. package/dist/registries/artifactRegistry.js.map +0 -1
  623. package/dist/registries/capabilityContract.js.map +0 -1
  624. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  625. package/dist/registries/packageRegistry.js.map +0 -1
  626. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  627. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  628. package/dist/release/releaseMetadata.js.map +0 -1
  629. package/dist/setup/codex/agents.js +0 -96
  630. package/dist/setup/codex/agents.js.map +0 -1
  631. package/dist/setup/codex/cli.js +0 -161
  632. package/dist/setup/codex/cli.js.map +0 -1
  633. package/dist/setup/codex/configToml.js +0 -644
  634. package/dist/setup/codex/configToml.js.map +0 -1
  635. package/dist/setup/codex/constants.js +0 -29
  636. package/dist/setup/codex/constants.js.map +0 -1
  637. package/dist/setup/codex/installRoot.js +0 -64
  638. package/dist/setup/codex/installRoot.js.map +0 -1
  639. package/dist/setup/codex/state.js +0 -270
  640. package/dist/setup/codex/state.js.map +0 -1
  641. package/dist/setup/codex.js +0 -12
  642. package/dist/setup/codex.js.map +0 -1
  643. package/dist/setup/copilot.js +0 -227
  644. package/dist/setup/copilot.js.map +0 -1
  645. package/dist/setup/cursor.js +0 -127
  646. package/dist/setup/cursor.js.map +0 -1
  647. package/dist/setup/doctor/core.js +0 -300
  648. package/dist/setup/doctor/core.js.map +0 -1
  649. package/dist/setup/doctor/diagnostics.js +0 -247
  650. package/dist/setup/doctor/diagnostics.js.map +0 -1
  651. package/dist/setup/doctor/opencode.js +0 -281
  652. package/dist/setup/doctor/opencode.js.map +0 -1
  653. package/dist/setup/doctor/report.js +0 -474
  654. package/dist/setup/doctor/report.js.map +0 -1
  655. package/dist/setup/doctor.js +0 -10
  656. package/dist/setup/doctor.js.map +0 -1
  657. package/dist/setup/opencode.js.map +0 -1
  658. package/dist/setup/smokeChecks.js.map +0 -1
  659. package/dist/state/installRoot.js.map +0 -1
  660. package/dist/state/progressCommit.js +0 -289
  661. package/dist/state/progressCommit.js.map +0 -1
  662. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  663. package/dist/state/startupAnalysis/contract.js.map +0 -1
  664. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  665. package/dist/state/startupAnalysis/index.js.map +0 -1
  666. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  667. package/dist/state/startupAnalysis/records.js.map +0 -1
  668. package/dist/state/startupAnalysis/report.js.map +0 -1
  669. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  670. package/dist/state/startupAnalysis.js.map +0 -1
  671. package/dist/upgrade/appModel.js.map +0 -1
  672. package/dist/upgrade/channels.js.map +0 -1
  673. package/dist/upgrade/coexistenceProbe.js +0 -83
  674. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  675. package/dist/upgrade/compatibility.js.map +0 -1
  676. package/dist/upgrade/doctor.js.map +0 -1
  677. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  678. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  679. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  680. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  681. package/dist/upgrade/projectIntegration.js.map +0 -1
  682. package/dist/upgrade/runtimeMigration.js.map +0 -1
  683. package/dist/upgrade/upgradeCommands.js.map +0 -1
  684. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  685. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  686. package/dist/upgrade/versionResolution.js.map +0 -1
  687. package/dist/validate/appHomeContract.js.map +0 -1
  688. package/dist/validate/capability.js.map +0 -1
  689. package/dist/validate/crossCapability.js.map +0 -1
  690. package/dist/validate/lifecycleAdapters.js +0 -772
  691. package/dist/validate/lifecycleAdapters.js.map +0 -1
  692. package/dist/validate/selfAudit.js.map +0 -1
  693. package/dist/validate/vocabularyAuthority.js.map +0 -1
  694. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  695. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  696. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -1,644 +0,0 @@
1
- import crypto from "node:crypto";
2
- import fs from "node:fs";
3
- import os from "node:os";
4
- import path from "node:path";
5
- import { isFile, pathExists, resolvePath } from "../../core/paths.js";
6
- import { parseToml } from "../../core/toml.js";
7
- import { CODEX_HOOK_COMMAND, CODEX_HOOK_MATCHER, CODEX_HOOK_STATUS_MESSAGE, CODEX_HOOK_TIMEOUT, CODEX_PLUGIN_HOOK_COMMAND, CODEX_PLUGIN_HOOK_SOURCE, CODEX_PLUGIN_ID, DEFAULT_AGENT_LIMITS, MANAGED_KEY, SECTION_NAME, SET_SUBTABLE_NAME, } from "./constants.js";
8
- /** Python repr() for a scalar, used to display non-string sibling set values. */
9
- function pyRepr(value) {
10
- if (value === null || value === undefined)
11
- return "None";
12
- if (value === true)
13
- return "True";
14
- if (value === false)
15
- return "False";
16
- if (typeof value === "string") {
17
- return value.includes("'") && !value.includes('"') ? `"${value}"` : `'${value}'`;
18
- }
19
- return String(value);
20
- }
21
- export function classifyToml(text) {
22
- if (!text.trim()) {
23
- return { sectionPresent: false, setPresent: false, setTable: {}, sectionLevelHome: null };
24
- }
25
- const parsed = parseToml(text);
26
- const section = parsed[SECTION_NAME];
27
- if (!section || typeof section !== "object" || Array.isArray(section)) {
28
- return { sectionPresent: false, setPresent: false, setTable: {}, sectionLevelHome: null };
29
- }
30
- const sectionDict = section;
31
- const sectionHome = sectionDict[MANAGED_KEY];
32
- const sectionLevelHome = typeof sectionHome === "string" && sectionHome ? sectionHome : null;
33
- const setValue = sectionDict.set;
34
- if (!setValue || typeof setValue !== "object" || Array.isArray(setValue)) {
35
- return { sectionPresent: true, setPresent: false, setTable: {}, sectionLevelHome };
36
- }
37
- const coerced = {};
38
- for (const [key, value] of Object.entries(setValue)) {
39
- coerced[String(key)] = typeof value === "string" ? value : pyRepr(value);
40
- }
41
- return { sectionPresent: true, setPresent: true, setTable: coerced, sectionLevelHome };
42
- }
43
- export function hasInlineSetLine(text) {
44
- const plainLines = splitKeepEnds(text).map(rstripEol);
45
- const sectionIdx = findSectionHeaderIndex(plainLines);
46
- if (sectionIdx === null)
47
- return false;
48
- return findSetLineIndex(plainLines, sectionIdx) !== null;
49
- }
50
- export function hasSetSubtableHeader(text) {
51
- const plainLines = splitKeepEnds(text).map(rstripEol);
52
- return findTableHeaderIndex(plainLines, SET_SUBTABLE_NAME) !== null;
53
- }
54
- export function managedHomeInSet(section) {
55
- const setValue = section.set;
56
- if (!setValue || typeof setValue !== "object" || Array.isArray(setValue))
57
- return null;
58
- const value = setValue[MANAGED_KEY];
59
- return typeof value === "string" && value ? value : null;
60
- }
61
- export function codexManagedHomeConfigured(text) {
62
- if (!text || !text.trim())
63
- return false;
64
- const parsed = parseToml(text);
65
- const section = parsed[SECTION_NAME];
66
- if (!section || typeof section !== "object" || Array.isArray(section))
67
- return false;
68
- return managedHomeInSet(section) !== null;
69
- }
70
- export function needsShellEnvNormalize(state, text) {
71
- if (state.sectionLevelHome !== null)
72
- return true;
73
- if (state.setPresent && !hasInlineSetLine(text))
74
- return true;
75
- if (hasSetSubtableHeader(text))
76
- return true;
77
- return false;
78
- }
79
- export function mergeSetPairs(section, installRoot) {
80
- const pairs = {};
81
- const setValue = section.set;
82
- if (setValue && typeof setValue === "object" && !Array.isArray(setValue)) {
83
- for (const [key, value] of Object.entries(setValue)) {
84
- if (key === MANAGED_KEY)
85
- continue;
86
- pairs[String(key)] = typeof value === "string" ? value : pyRepr(value);
87
- }
88
- }
89
- pairs[MANAGED_KEY] = installRoot;
90
- return pairs;
91
- }
92
- function shellPolicySectionEnd(plainLines, sectionIdx) {
93
- let idx = sectionIdx + 1;
94
- while (idx < plainLines.length) {
95
- const line = plainLines[idx];
96
- if (SECTION_HEADER_RE.test(line))
97
- return idx;
98
- if (tableHeaderRe(SET_SUBTABLE_NAME).test(line)) {
99
- idx += 1;
100
- while (idx < plainLines.length && !/^\s*\[/.test(plainLines[idx]))
101
- idx += 1;
102
- continue;
103
- }
104
- if (/^\s*\[/.test(line))
105
- return idx;
106
- idx += 1;
107
- }
108
- return plainLines.length;
109
- }
110
- export function normalizeShellEnvironmentPolicy(text, installRoot) {
111
- const parsed = parseToml(text);
112
- const section = parsed[SECTION_NAME];
113
- if (!section || typeof section !== "object" || Array.isArray(section)) {
114
- throw new Error(`normalize_shell_environment_policy: [${SECTION_NAME}] missing`);
115
- }
116
- const pairs = mergeSetPairs(section, installRoot);
117
- const linesWithEnds = splitKeepEnds(text);
118
- const plainLines = linesWithEnds.map(rstripEol);
119
- const sectionIdx = findSectionHeaderIndex(plainLines);
120
- if (sectionIdx === null) {
121
- throw new Error(`normalize_shell_environment_policy: [${SECTION_NAME}] header not found`);
122
- }
123
- const endIdx = shellPolicySectionEnd(plainLines, sectionIdx);
124
- const terminator = lineTerminator(linesWithEnds[sectionIdx]);
125
- const setLine = `set = ${emitSetInlineTable(pairs)}${terminator}`;
126
- return [...linesWithEnds.slice(0, sectionIdx + 1), setLine, ...linesWithEnds.slice(endIdx)].join("");
127
- }
128
- // ── TOML emission ──────────────────────────────────────────────────
129
- const BASIC_STRING_ESCAPE = {
130
- "\\": "\\\\",
131
- '"': '\\"',
132
- "\b": "\\b",
133
- "\f": "\\f",
134
- "\n": "\\n",
135
- "\r": "\\r",
136
- "\t": "\\t",
137
- };
138
- export function tomlBasicString(value) {
139
- const escapedChars = [];
140
- for (const char of value) {
141
- if (char in BASIC_STRING_ESCAPE) {
142
- escapedChars.push(BASIC_STRING_ESCAPE[char]);
143
- }
144
- else if (char.charCodeAt(0) < 0x20) {
145
- escapedChars.push("\\u" + char.charCodeAt(0).toString(16).toUpperCase().padStart(4, "0"));
146
- }
147
- else {
148
- escapedChars.push(char);
149
- }
150
- }
151
- return '"' + escapedChars.join("") + '"';
152
- }
153
- export function emitSetInlineTable(pairs) {
154
- const entries = Object.entries(pairs);
155
- const rendered = entries.map(([key, value]) => `${key} = ${tomlBasicString(value)}`).join(", ");
156
- return entries.length > 0 ? `{ ${rendered} }` : "{ }";
157
- }
158
- export function renderAgentsConfigSection() {
159
- return "[agents]\n" + Object.entries(DEFAULT_AGENT_LIMITS).map(([k, v]) => `${k} = ${v}`).join("\n") + "\n";
160
- }
161
- export function renderFreshConfig(installRoot) {
162
- const setValue = emitSetInlineTable({ [MANAGED_KEY]: installRoot });
163
- return (`[${SECTION_NAME}]\nset = ${setValue}\n\n` +
164
- `${renderAgentsConfigSection()}\n` +
165
- `[features.multi_agent_v2]\n` +
166
- `max_concurrent_threads_per_session = 6\n`);
167
- }
168
- // ── Codex hook trust hashing ───────────────────────────────────────
169
- /** Compact canonical JSON: sort_keys=True, separators=(",",":"), ensure_ascii. */
170
- function canonicalJson(value) {
171
- if (value === null || value === undefined)
172
- return "null";
173
- if (value === true)
174
- return "true";
175
- if (value === false)
176
- return "false";
177
- if (typeof value === "number")
178
- return String(value);
179
- if (typeof value === "string")
180
- return jsonStringAscii(value);
181
- if (Array.isArray(value))
182
- return "[" + value.map((v) => canonicalJson(v)).join(",") + "]";
183
- if (typeof value === "object") {
184
- const keys = Object.keys(value).sort();
185
- return "{" + keys.map((k) => `${jsonStringAscii(k)}:${canonicalJson(value[k])}`).join(",") + "}";
186
- }
187
- return "null";
188
- }
189
- function jsonStringAscii(str) {
190
- let out = '"';
191
- for (const ch of str) {
192
- const cp = ch.codePointAt(0);
193
- if (ch === '"')
194
- out += '\\"';
195
- else if (ch === "\\")
196
- out += "\\\\";
197
- else if (cp === 0x08)
198
- out += "\\b";
199
- else if (cp === 0x09)
200
- out += "\\t";
201
- else if (cp === 0x0a)
202
- out += "\\n";
203
- else if (cp === 0x0c)
204
- out += "\\f";
205
- else if (cp === 0x0d)
206
- out += "\\r";
207
- else if (cp < 0x20)
208
- out += "\\u" + cp.toString(16).padStart(4, "0");
209
- else if (cp < 0x80)
210
- out += ch;
211
- else if (cp > 0xffff) {
212
- const v = cp - 0x10000;
213
- out += "\\u" + (0xd800 + (v >> 10)).toString(16).padStart(4, "0");
214
- out += "\\u" + (0xdc00 + (v & 0x3ff)).toString(16).padStart(4, "0");
215
- }
216
- else {
217
- out += "\\u" + cp.toString(16).padStart(4, "0");
218
- }
219
- }
220
- return out + '"';
221
- }
222
- export function codexHookTrustedHash(eventLabel, matcher, command = CODEX_HOOK_COMMAND, timeout = CODEX_HOOK_TIMEOUT, statusMessage = CODEX_HOOK_STATUS_MESSAGE) {
223
- const handler = { type: "command", command, timeout, async: false };
224
- if (statusMessage !== null)
225
- handler.statusMessage = statusMessage;
226
- const identity = { event_name: eventLabel, hooks: [handler] };
227
- if (matcher !== null)
228
- identity.matcher = matcher;
229
- const payload = canonicalJson(identity);
230
- return "sha256:" + crypto.createHash("sha256").update(payload, "utf8").digest("hex");
231
- }
232
- export function codexValidatorCommand(installRoot) {
233
- const candidates = [
234
- path.join(installRoot, "app", "hooks", "validate_artifact.py"),
235
- path.join(installRoot, "hooks", "validate_artifact.py"),
236
- ];
237
- const validator = candidates.find((c) => isFile(c)) ?? candidates[0];
238
- return `uv run "${validator}"`;
239
- }
240
- export function renderCodexHooksConfig(command) {
241
- const hooks = {};
242
- for (const event of ["PreToolUse", "PostToolUse"]) {
243
- hooks[event] = [
244
- {
245
- matcher: CODEX_HOOK_MATCHER,
246
- hooks: [
247
- { type: "command", command, timeout: CODEX_HOOK_TIMEOUT, statusMessage: CODEX_HOOK_STATUS_MESSAGE },
248
- ],
249
- },
250
- ];
251
- }
252
- const payload = {
253
- description: "agentera v2 Codex hooks: schema-backed apply_patch artifact validation",
254
- hooks,
255
- };
256
- return JSON.stringify(payload, null, 2) + "\n";
257
- }
258
- export function codexHookStateEntries(hooksPath, command = CODEX_HOOK_COMMAND) {
259
- const resolved = resolvePath(hooksPath);
260
- return {
261
- [`${resolved}:pre_tool_use:0:0`]: codexHookTrustedHash("pre_tool_use", CODEX_HOOK_MATCHER, command),
262
- [`${resolved}:post_tool_use:0:0`]: codexHookTrustedHash("post_tool_use", CODEX_HOOK_MATCHER, command),
263
- };
264
- }
265
- export function codexPluginHookStateEntries(command = CODEX_PLUGIN_HOOK_COMMAND) {
266
- return {
267
- [`${CODEX_PLUGIN_HOOK_SOURCE}:pre_tool_use:0:0`]: codexHookTrustedHash("pre_tool_use", CODEX_HOOK_MATCHER, command),
268
- [`${CODEX_PLUGIN_HOOK_SOURCE}:post_tool_use:0:0`]: codexHookTrustedHash("post_tool_use", CODEX_HOOK_MATCHER, command),
269
- };
270
- }
271
- export function codexPluginHooksEnabled(text) {
272
- if (!text || !text.trim())
273
- return false;
274
- const parsed = parseToml(text);
275
- const plugins = parsed.plugins;
276
- if (!plugins || typeof plugins !== "object" || Array.isArray(plugins))
277
- return false;
278
- const agentera = plugins[CODEX_PLUGIN_ID];
279
- return Boolean(agentera && typeof agentera === "object" && agentera.enabled === true);
280
- }
281
- // ===========================================================================
282
- // Slice 2: line-based TOML mutation engine
283
- // ===========================================================================
284
- function splitKeepEnds(text) {
285
- return text.match(/[^\n]*\n|[^\n]+/g) ?? [];
286
- }
287
- function rstripEol(line) {
288
- return line.replace(/[\r\n]+$/, "");
289
- }
290
- function lineTerminator(lineWithEnd) {
291
- if (lineWithEnd.endsWith("\r\n"))
292
- return "\r\n";
293
- if (lineWithEnd.endsWith("\n"))
294
- return "\n";
295
- return "\n";
296
- }
297
- const SECTION_HEADER_RE = new RegExp(`^\\s*\\[\\s*${SECTION_NAME.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s*\\]\\s*$`);
298
- const SET_LINE_RE = /^\s*set\s*=\s*/;
299
- export function findSectionHeaderIndex(lines) {
300
- for (let idx = 0; idx < lines.length; idx++) {
301
- if (SECTION_HEADER_RE.test(lines[idx]))
302
- return idx;
303
- }
304
- return null;
305
- }
306
- export function findSetLineIndex(lines, sectionIdx) {
307
- for (let idx = sectionIdx + 1; idx < lines.length; idx++) {
308
- const line = lines[idx];
309
- if (SECTION_HEADER_RE.test(line))
310
- return null;
311
- if (/^\s*\[/.test(line))
312
- return null;
313
- if (SET_LINE_RE.test(line))
314
- return idx;
315
- }
316
- return null;
317
- }
318
- export function insertSetLine(text, installRoot) {
319
- const linesWithEnds = splitKeepEnds(text);
320
- const plainLines = linesWithEnds.map(rstripEol);
321
- const sectionIdx = findSectionHeaderIndex(plainLines);
322
- if (sectionIdx === null) {
323
- throw new Error(`insert_set_line called but [${SECTION_NAME}] header not found`);
324
- }
325
- const terminator = lineTerminator(linesWithEnds[sectionIdx]);
326
- const setValue = emitSetInlineTable({ [MANAGED_KEY]: installRoot });
327
- const insertedLine = `set = ${setValue}${terminator}`;
328
- return [...linesWithEnds.slice(0, sectionIdx + 1), insertedLine, ...linesWithEnds.slice(sectionIdx + 1)].join("");
329
- }
330
- export function rewriteSetLine(text, mergedPairs) {
331
- const linesWithEnds = splitKeepEnds(text);
332
- const plainLines = linesWithEnds.map(rstripEol);
333
- const sectionIdx = findSectionHeaderIndex(plainLines);
334
- if (sectionIdx === null) {
335
- throw new Error(`rewrite_set_line called but [${SECTION_NAME}] header not found`);
336
- }
337
- const setIdx = findSetLineIndex(plainLines, sectionIdx);
338
- if (setIdx === null) {
339
- throw new Error(`rewrite_set_line called but no set line found in [${SECTION_NAME}]`);
340
- }
341
- const setLine = plainLines[setIdx];
342
- if (setLine.includes("{") && !setLine.includes("}")) {
343
- throw new Error("existing set value spans multiple lines; cannot safely merge");
344
- }
345
- const setLineWithEnd = linesWithEnds[setIdx];
346
- const terminator = setLineWithEnd.endsWith("\r\n") ? "\r\n" : setLineWithEnd.endsWith("\n") ? "\n" : "";
347
- const setValue = emitSetInlineTable(mergedPairs);
348
- const newLine = `set = ${setValue}${terminator}`;
349
- return [...linesWithEnds.slice(0, setIdx), newLine, ...linesWithEnds.slice(setIdx + 1)].join("");
350
- }
351
- function tableHeaderRe(table) {
352
- const dotted = table
353
- .split(".")
354
- .map((part) => part.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"))
355
- .join("\\s*\\.\\s*");
356
- return new RegExp(`^\\s*\\[\\s*${dotted}\\s*\\]\\s*$`);
357
- }
358
- function findTableHeaderIndex(lines, table) {
359
- const pattern = tableHeaderRe(table);
360
- for (let idx = 0; idx < lines.length; idx++) {
361
- if (pattern.test(lines[idx]))
362
- return idx;
363
- }
364
- return null;
365
- }
366
- function findTableKeyIndex(lines, tableIdx, keyLiteral) {
367
- const keyRe = new RegExp(`^\\s*${keyLiteral.replace(/[.*+?^${}()|[\]\\]/g, "\\$&")}\\s*=`);
368
- for (let idx = tableIdx + 1; idx < lines.length; idx++) {
369
- const line = lines[idx];
370
- if (/^\s*\[/.test(line))
371
- return null;
372
- if (keyRe.test(line))
373
- return idx;
374
- }
375
- return null;
376
- }
377
- function insertTableKeyLine(text, table, line) {
378
- const linesWithEnds = splitKeepEnds(text);
379
- const plainLines = linesWithEnds.map(rstripEol);
380
- const tableIdx = findTableHeaderIndex(plainLines, table);
381
- if (tableIdx === null)
382
- throw new Error(`[${table}] header not found`);
383
- const terminator = lineTerminator(linesWithEnds[tableIdx]);
384
- return [...linesWithEnds.slice(0, tableIdx + 1), line + terminator, ...linesWithEnds.slice(tableIdx + 1)].join("");
385
- }
386
- function replaceTableKeyLine(text, table, keyLiteral, line) {
387
- const linesWithEnds = splitKeepEnds(text);
388
- const plainLines = linesWithEnds.map(rstripEol);
389
- const tableIdx = findTableHeaderIndex(plainLines, table);
390
- if (tableIdx === null)
391
- throw new Error(`[${table}] header not found`);
392
- const keyIdx = findTableKeyIndex(plainLines, tableIdx, keyLiteral);
393
- if (keyIdx === null)
394
- throw new Error(`${keyLiteral} not found in [${table}]`);
395
- if (plainLines[keyIdx].includes("{") && !plainLines[keyIdx].includes("}")) {
396
- throw new Error(`${keyLiteral} spans multiple lines in [${table}]`);
397
- }
398
- const terminator = lineTerminator(linesWithEnds[keyIdx]);
399
- return [...linesWithEnds.slice(0, keyIdx), line + terminator, ...linesWithEnds.slice(keyIdx + 1)].join("");
400
- }
401
- function appendTable(text, table, lines) {
402
- let prefix = text;
403
- if (!prefix.endsWith("\n"))
404
- prefix += "\n";
405
- if (!prefix.endsWith("\n\n"))
406
- prefix += "\n";
407
- return prefix + `[${table}]\n` + lines.join("\n") + "\n";
408
- }
409
- function tomlLoadOrEmpty(text) {
410
- return text.trim() ? parseToml(text) : {};
411
- }
412
- function ensureFeatureEnabled(text, key) {
413
- const parsed = tomlLoadOrEmpty(text);
414
- const features = parsed.features;
415
- if (features && typeof features === "object" && !Array.isArray(features) && features[key] === true) {
416
- return text;
417
- }
418
- const lines = splitKeepEnds(text).map(rstripEol);
419
- const tableIdx = findTableHeaderIndex(lines, "features");
420
- if (tableIdx === null) {
421
- if (features && typeof features === "object" && !Array.isArray(features)) {
422
- if (lines.some((line) => /^\s*features\s*=/.test(line))) {
423
- throw new Error("[features] uses an unsupported inline or dotted-table form");
424
- }
425
- }
426
- return appendTable(text, "features", [`${key} = true`]);
427
- }
428
- const keyIdx = findTableKeyIndex(lines, tableIdx, key);
429
- if (keyIdx === null)
430
- return insertTableKeyLine(text, "features", `${key} = true`);
431
- return replaceTableKeyLine(text, "features", key, `${key} = true`);
432
- }
433
- function ensureFeaturesHooksEnabled(text) {
434
- return ensureFeatureEnabled(text, "hooks");
435
- }
436
- function ensureFeaturesPluginHooksEnabled(text) {
437
- return ensureFeatureEnabled(ensureFeaturesHooksEnabled(text), "plugin_hooks");
438
- }
439
- function removeTableKeyLine(text, table, key) {
440
- const linesWithEnds = splitKeepEnds(text);
441
- const plainLines = linesWithEnds.map(rstripEol);
442
- const tableIdx = findTableHeaderIndex(plainLines, table);
443
- if (tableIdx === null)
444
- return text;
445
- const keyLiteral = tomlBasicString(key);
446
- let keyIdx = findTableKeyIndex(plainLines, tableIdx, keyLiteral);
447
- if (keyIdx === null)
448
- keyIdx = findTableKeyIndex(plainLines, tableIdx, key);
449
- if (keyIdx === null)
450
- return text;
451
- return [...linesWithEnds.slice(0, keyIdx), ...linesWithEnds.slice(keyIdx + 1)].join("");
452
- }
453
- function codexMultiAgentThreadLimit(parsed) {
454
- const agents = parsed.agents;
455
- if (agents && typeof agents === "object" && !Array.isArray(agents) && "max_threads" in agents) {
456
- const n = Number(agents.max_threads);
457
- if (Number.isInteger(n))
458
- return n;
459
- }
460
- const features = parsed.features;
461
- if (features && typeof features === "object" && !Array.isArray(features)) {
462
- const multi = features.multi_agent_v2;
463
- if (multi && typeof multi === "object" && "max_concurrent_threads_per_session" in multi) {
464
- const n = Number(multi.max_concurrent_threads_per_session);
465
- if (Number.isInteger(n))
466
- return n;
467
- }
468
- }
469
- return 6;
470
- }
471
- function ensureCodexMultiAgentV2(text, maxThreadsVal) {
472
- const parsed = tomlLoadOrEmpty(text);
473
- const features = parsed.features;
474
- let multi = {};
475
- if (features && typeof features === "object" && !Array.isArray(features)) {
476
- const m = features.multi_agent_v2;
477
- if (m && typeof m === "object" && !Array.isArray(m))
478
- multi = m;
479
- }
480
- if (multi.max_concurrent_threads_per_session === maxThreadsVal)
481
- return text;
482
- const lines = splitKeepEnds(text).map(rstripEol);
483
- const tableIdx = findTableHeaderIndex(lines, "features.multi_agent_v2");
484
- const key = "max_concurrent_threads_per_session";
485
- const line = `${key} = ${maxThreadsVal}`;
486
- if (tableIdx === null)
487
- return appendTable(text, "features.multi_agent_v2", [line]);
488
- const keyIdx = findTableKeyIndex(lines, tableIdx, key);
489
- if (keyIdx === null)
490
- return insertTableKeyLine(text, "features.multi_agent_v2", line);
491
- return replaceTableKeyLine(text, "features.multi_agent_v2", key, line);
492
- }
493
- export function ensureCodexAgentLimits(text) {
494
- let parsed = tomlLoadOrEmpty(text);
495
- const maxThreadsVal = codexMultiAgentThreadLimit(parsed);
496
- text = removeTableKeyLine(text, "agents", "max_threads");
497
- parsed = tomlLoadOrEmpty(text);
498
- const agents = parsed.agents;
499
- const agentsMatches = agents && typeof agents === "object" && !Array.isArray(agents) &&
500
- Object.entries(DEFAULT_AGENT_LIMITS).every(([k, v]) => agents[k] === v);
501
- if (!agentsMatches) {
502
- const lines = splitKeepEnds(text).map(rstripEol);
503
- const tableIdx = findTableHeaderIndex(lines, "agents");
504
- if (tableIdx === null) {
505
- if (agents && typeof agents === "object" && !Array.isArray(agents) && Object.keys(agents).length > 0) {
506
- throw new Error("[agents] uses an unsupported inline or child-table-only form");
507
- }
508
- text = appendTable(text, "agents", Object.entries(DEFAULT_AGENT_LIMITS).map(([k, v]) => `${k} = ${v}`));
509
- }
510
- else {
511
- for (const [key, value] of Object.entries(DEFAULT_AGENT_LIMITS)) {
512
- const line = `${key} = ${value}`;
513
- const curLines = splitKeepEnds(text).map(rstripEol);
514
- const curTableIdx = findTableHeaderIndex(curLines, "agents");
515
- if (curTableIdx === null)
516
- throw new Error("[agents] header disappeared during update");
517
- if (findTableKeyIndex(curLines, curTableIdx, key) === null) {
518
- text = insertTableKeyLine(text, "agents", line);
519
- }
520
- else {
521
- text = replaceTableKeyLine(text, "agents", key, line);
522
- }
523
- }
524
- }
525
- }
526
- return ensureCodexMultiAgentV2(text, maxThreadsVal);
527
- }
528
- function hookStateLine(key, trustedHash) {
529
- return `${tomlBasicString(key)} = { trusted_hash = ${tomlBasicString(trustedHash)}, enabled = true }`;
530
- }
531
- function ensureCodexHookStateEntries(text, entries) {
532
- const parsed = tomlLoadOrEmpty(text);
533
- const hooks = parsed.hooks;
534
- let state = {};
535
- if (hooks && typeof hooks === "object" && !Array.isArray(hooks)) {
536
- const s = hooks.state;
537
- if (s && typeof s === "object" && !Array.isArray(s))
538
- state = s;
539
- }
540
- const allPresent = Object.entries(entries).every(([key, trustedHash]) => {
541
- const e = state[key];
542
- return e && typeof e === "object" && e.trusted_hash === trustedHash && e.enabled === true;
543
- });
544
- if (allPresent)
545
- return text;
546
- const lines = splitKeepEnds(text).map(rstripEol);
547
- const tableIdx = findTableHeaderIndex(lines, "hooks.state");
548
- if (tableIdx === null) {
549
- if (Object.keys(state).length > 0) {
550
- throw new Error("[hooks.state] uses an unsupported inline or dotted-table form");
551
- }
552
- return appendTable(text, "hooks.state", Object.entries(entries).map(([key, trustedHash]) => hookStateLine(key, trustedHash)));
553
- }
554
- for (const [key, trustedHash] of Object.entries(entries)) {
555
- const keyLiteral = tomlBasicString(key);
556
- const line = hookStateLine(key, trustedHash);
557
- const curLines = splitKeepEnds(text).map(rstripEol);
558
- const curTableIdx = findTableHeaderIndex(curLines, "hooks.state");
559
- if (curTableIdx === null)
560
- throw new Error("[hooks.state] header disappeared during update");
561
- if (findTableKeyIndex(curLines, curTableIdx, keyLiteral) === null) {
562
- text = insertTableKeyLine(text, "hooks.state", line);
563
- }
564
- else {
565
- text = replaceTableKeyLine(text, "hooks.state", keyLiteral, line);
566
- }
567
- }
568
- return text;
569
- }
570
- export function ensureCodexHookTrust(text, hooksPath, command = CODEX_HOOK_COMMAND) {
571
- return ensureCodexHookStateEntries(ensureFeaturesHooksEnabled(text), codexHookStateEntries(hooksPath, command));
572
- }
573
- export function codexCopiedHooksAreAgenteraOnly(text) {
574
- let payload;
575
- try {
576
- payload = JSON.parse(text);
577
- }
578
- catch {
579
- return false;
580
- }
581
- if (!payload || typeof payload !== "object" || Array.isArray(payload))
582
- return false;
583
- const p = payload;
584
- if (typeof p.description !== "string" || !p.description.includes("agentera v2 Codex hooks"))
585
- return false;
586
- const hooks = p.hooks;
587
- if (!hooks || typeof hooks !== "object" || Array.isArray(hooks))
588
- return false;
589
- const keys = Object.keys(hooks);
590
- if (keys.length === 0)
591
- return false;
592
- for (const key of keys) {
593
- if (key !== "PreToolUse" && key !== "PostToolUse")
594
- return false;
595
- }
596
- for (const [event, entries] of Object.entries(hooks)) {
597
- if (event !== "PreToolUse" && event !== "PostToolUse")
598
- return false;
599
- if (!Array.isArray(entries) || entries.length !== 1)
600
- return false;
601
- const entry = entries[0];
602
- if (!entry || typeof entry !== "object" || entry.matcher !== CODEX_HOOK_MATCHER)
603
- return false;
604
- const handlers = entry.hooks;
605
- if (!Array.isArray(handlers) || handlers.length !== 1)
606
- return false;
607
- const handler = handlers[0];
608
- if (!handler || typeof handler !== "object")
609
- return false;
610
- const command = handler.command;
611
- if (handler.type !== "command" || typeof command !== "string")
612
- return false;
613
- if (!command.includes("hooks/validate_artifact.py") && !command.includes("hook validate-artifact"))
614
- return false;
615
- if (handler.timeout !== undefined && handler.timeout !== CODEX_HOOK_TIMEOUT)
616
- return false;
617
- if (handler.statusMessage !== undefined && handler.statusMessage !== CODEX_HOOK_STATUS_MESSAGE)
618
- return false;
619
- }
620
- return true;
621
- }
622
- export function retireCodexCopiedHookTrust(text, hooksPath) {
623
- if (pathExists(hooksPath)) {
624
- let hooksText;
625
- try {
626
- hooksText = fs.readFileSync(hooksPath, "utf8");
627
- }
628
- catch {
629
- return text;
630
- }
631
- if (!codexCopiedHooksAreAgenteraOnly(hooksText))
632
- return text;
633
- }
634
- const resolved = resolvePath(hooksPath);
635
- text = removeTableKeyLine(text, "hooks.state", `${resolved}:pre_tool_use:0:0`);
636
- text = removeTableKeyLine(text, "hooks.state", `${resolved}:post_tool_use:0:0`);
637
- return text;
638
- }
639
- export function ensureCodexPluginHookTrust(text, command = CODEX_PLUGIN_HOOK_COMMAND, hooksPath = null) {
640
- text = ensureCodexHookStateEntries(ensureFeaturesPluginHooksEnabled(text), codexPluginHookStateEntries(command));
641
- const target = hooksPath ?? path.join(os.homedir(), ".codex", "hooks.json");
642
- return retireCodexCopiedHookTrust(text, target);
643
- }
644
- //# sourceMappingURL=configToml.js.map