agentera 3.0.0-dev.4 → 3.0.0-dev.46

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 (585) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +108 -22
  3. package/bundle/.agentera-npx-bundle.json +1 -1
  4. package/bundle/CHANGELOG.md +1351 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +143 -0
  8. package/bundle/UPGRADE.md +236 -0
  9. package/bundle/extract-corpus-parity.json +21 -0
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +437 -0
  12. package/bundle/references/adapters/package-registry.yaml +434 -189
  13. package/bundle/references/adapters/package-surface-characterization.md +66 -35
  14. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  15. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  16. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  17. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  18. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  19. package/bundle/references/analysis/verification-policy.yaml +191 -0
  20. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +20 -10
  21. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  22. package/bundle/references/artifacts/state-storage-authority.yaml +2982 -0
  23. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  24. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +7 -8
  25. package/bundle/references/cli/capability-instruction-contract.yaml +97 -59
  26. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  27. package/bundle/references/cli/routing-model.md +155 -0
  28. package/bundle/references/cli/trigger-schema-enrichment.md +147 -0
  29. package/bundle/references/cli/update-channels.yaml +35 -2
  30. package/bundle/references/cli/vocabulary-index.yaml +23 -20
  31. package/bundle/references/cli/vocabulary.md +337 -366
  32. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  33. package/bundle/registry.json +14 -14
  34. package/bundle/skills/agentera/SKILL.md +218 -408
  35. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +84 -0
  36. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/exit.yaml +2 -2
  37. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +25 -0
  38. package/bundle/skills/agentera/capabilities/{inspektera → audit}/schemas/validation.yaml +37 -18
  39. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +102 -0
  40. package/bundle/skills/agentera/capabilities/{realisera → build}/schemas/exit.yaml +6 -5
  41. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +27 -0
  42. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +176 -0
  43. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/artifacts.yaml +12 -12
  44. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/exit.yaml +5 -5
  45. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +16 -0
  46. package/bundle/skills/agentera/capabilities/{visualisera → design}/schemas/validation.yaml +7 -7
  47. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +51 -0
  48. package/bundle/skills/agentera/capabilities/{resonera → discuss}/schemas/exit.yaml +2 -2
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +20 -0
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +144 -0
  51. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +80 -0
  52. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +16 -0
  53. package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/validation.yaml +18 -18
  54. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/artifacts.yaml +18 -18
  55. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/exit.yaml +2 -2
  56. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +16 -0
  57. package/bundle/skills/agentera/capabilities/{optimera → optimize}/schemas/validation.yaml +9 -9
  58. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +76 -0
  59. package/bundle/skills/agentera/capabilities/{orkestrera → orchestrate}/schemas/exit.yaml +9 -7
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +23 -0
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +121 -0
  62. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +66 -0
  63. package/bundle/skills/agentera/capabilities/{planera → plan}/schemas/exit.yaml +2 -2
  64. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +23 -0
  65. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +121 -0
  66. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +23 -0
  67. package/bundle/skills/agentera/capabilities/{profilera → profile}/schemas/exit.yaml +6 -5
  68. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +20 -0
  69. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +115 -0
  70. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +24 -0
  71. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +16 -0
  72. package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/validation.yaml +2 -2
  73. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +73 -0
  74. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +22 -0
  75. package/bundle/skills/agentera/capabilities/{hej → status}/schemas/validation.yaml +5 -5
  76. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/artifacts.yaml +16 -16
  77. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +23 -0
  79. package/bundle/skills/agentera/capabilities/{visionera → vision}/schemas/validation.yaml +18 -20
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +200 -37
  81. package/bundle/skills/agentera/protocol.yaml +31 -31
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +5 -4
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +40 -22
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +5 -4
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +15 -19
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +145 -14
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +58 -21
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +22 -8
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +421 -33
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +143 -53
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +345 -31
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +3 -3
  95. package/dist/analytics/extractCorpus/cli.js +190 -0
  96. package/dist/analytics/extractCorpus/copilotSessions.js +275 -0
  97. package/dist/analytics/extractCorpus/core.js +392 -0
  98. package/dist/analytics/extractCorpus/corpus.js +167 -0
  99. package/dist/analytics/extractCorpus/coverageAudit.js +260 -0
  100. package/dist/analytics/extractCorpus/cursorSessions.js +425 -0
  101. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  102. package/dist/analytics/extractCorpus/extractCorpusParity.js +105 -0
  103. package/dist/analytics/extractCorpus/filesystemSources.js +118 -0
  104. package/dist/analytics/extractCorpus/index.js +14 -0
  105. package/dist/analytics/extractCorpus/jsonlSessions.js +204 -0
  106. package/dist/analytics/extractCorpus/sqliteCaps.js +43 -0
  107. package/dist/analytics/extractCorpus/sqliteSessions.js +367 -0
  108. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  109. package/dist/analytics/extractCorpus.js +2 -1791
  110. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  111. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  112. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  113. package/dist/analytics/personalGlossaryProfile.js +219 -0
  114. package/dist/analytics/profileSignals.js +211 -0
  115. package/dist/analytics/usageStats.js +169 -42
  116. package/dist/audit/terminologyDrift.js +281 -0
  117. package/dist/bin/agentera.js +3 -2
  118. package/dist/capabilities/audit/instructions.js +16 -0
  119. package/dist/capabilities/build/instructions.js +56 -0
  120. package/dist/capabilities/design/instructions.js +4 -0
  121. package/dist/capabilities/discuss/instructions.js +29 -0
  122. package/dist/capabilities/document/instructions.js +11 -0
  123. package/dist/capabilities/index.js +40 -0
  124. package/dist/capabilities/optimize/instructions.js +14 -0
  125. package/dist/capabilities/orchestrate/instructions.js +40 -0
  126. package/dist/capabilities/plan/instructions.js +32 -0
  127. package/dist/capabilities/profile/instructions.js +70 -0
  128. package/dist/capabilities/research/instructions.js +5 -0
  129. package/dist/capabilities/status/instructions.js +11 -0
  130. package/dist/capabilities/status/startupInstructions.js +34 -0
  131. package/dist/capabilities/vision/instructions.js +4 -0
  132. package/dist/cli/appContext.js +30 -24
  133. package/dist/cli/argvalidate.js +0 -1
  134. package/dist/cli/capabilityContext/benchmark.js +565 -0
  135. package/dist/cli/capabilityContext/bespoke.js +44 -0
  136. package/dist/cli/capabilityContext/build.js +242 -0
  137. package/dist/cli/capabilityContext/closeout.js +233 -0
  138. package/dist/cli/capabilityContext/contract.js +179 -0
  139. package/dist/cli/capabilityContext/evidence.js +463 -0
  140. package/dist/cli/capabilityContext/index.js +3 -0
  141. package/dist/cli/capabilityContext/orchestration.js +131 -0
  142. package/dist/cli/capabilityContext/planState.js +260 -0
  143. package/dist/cli/capabilityContext/progress.js +142 -0
  144. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  145. package/dist/cli/capabilityContext/shared.js +83 -0
  146. package/dist/cli/capabilityContext/slim.js +152 -0
  147. package/dist/cli/capabilityContext/startup.js +150 -0
  148. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  149. package/dist/cli/capabilityContext/types.js +56 -0
  150. package/dist/cli/capabilityContext.js +1 -2421
  151. package/dist/cli/commands/appHome.js +22 -0
  152. package/dist/cli/commands/capability.js +5 -12
  153. package/dist/cli/commands/compact.js +41 -13
  154. package/dist/cli/commands/doctor.js +127 -97
  155. package/dist/cli/commands/durability.js +81 -0
  156. package/dist/cli/commands/glossaryAdvice.js +138 -0
  157. package/dist/cli/commands/lint.js +26 -44
  158. package/dist/cli/commands/personalGlossary.js +176 -0
  159. package/dist/cli/commands/prime/briefOrientation.js +747 -0
  160. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  161. package/dist/cli/commands/prime/bundleStatus.js +190 -0
  162. package/dist/cli/commands/prime/collectEntityOrientation.js +311 -0
  163. package/dist/cli/commands/prime/collectOrientationState.js +212 -0
  164. package/dist/cli/commands/prime/orientationOutput.js +397 -0
  165. package/dist/cli/commands/prime/types.js +1 -0
  166. package/dist/cli/commands/prime/v1Migration.js +38 -0
  167. package/dist/cli/commands/prime.js +80 -558
  168. package/dist/cli/commands/profileGrounding.js +55 -0
  169. package/dist/cli/commands/query.js +78 -53
  170. package/dist/cli/commands/report.js +96 -25
  171. package/dist/cli/commands/route.js +142 -0
  172. package/dist/cli/commands/schema.js +266 -143
  173. package/dist/cli/commands/state/decisions.js +387 -0
  174. package/dist/cli/commands/state/docs.js +70 -0
  175. package/dist/cli/commands/state/experimentRecords.js +151 -0
  176. package/dist/cli/commands/state/experiments.js +14 -0
  177. package/dist/cli/commands/state/get.js +129 -0
  178. package/dist/cli/commands/state/health.js +14 -0
  179. package/dist/cli/commands/state/index.js +16 -0
  180. package/dist/cli/commands/state/list.js +194 -0
  181. package/dist/cli/commands/state/objective.js +25 -0
  182. package/dist/cli/commands/state/plan.js +14 -0
  183. package/dist/cli/commands/state/planTasks.js +154 -0
  184. package/dist/cli/commands/state/plans.js +154 -0
  185. package/dist/cli/commands/state/progress.js +13 -0
  186. package/dist/cli/commands/state/shared.js +14 -0
  187. package/dist/cli/commands/state/todo.js +42 -0
  188. package/dist/cli/commands/state/write.js +434 -0
  189. package/dist/cli/commands/upgrade.js +146 -5
  190. package/dist/cli/commands/upgradeVerify.js +118 -0
  191. package/dist/cli/commands/validate.js +272 -213
  192. package/dist/cli/commands/verify.js +24 -9
  193. package/dist/cli/contracts/bundleStatus.js +1 -0
  194. package/dist/cli/contracts/orientationState.js +1 -0
  195. package/dist/cli/dispatch/argvParser.js +32 -0
  196. package/dist/cli/dispatch/check.js +372 -0
  197. package/dist/cli/dispatch/commands.js +27 -0
  198. package/dist/cli/dispatch/index.js +207 -0
  199. package/dist/cli/dispatch/lifecycle.js +652 -0
  200. package/dist/cli/dispatch/prime.js +139 -0
  201. package/dist/cli/dispatch/projections.js +17 -0
  202. package/dist/cli/dispatch/shared.js +63 -0
  203. package/dist/cli/dispatch/state.js +140 -0
  204. package/dist/cli/dispatch.js +1 -996
  205. package/dist/cli/errors.js +52 -0
  206. package/dist/cli/help.js +390 -43
  207. package/dist/cli/migrationRequired.js +87 -0
  208. package/dist/cli/orientation/attention.js +59 -0
  209. package/dist/cli/orientation/corpusCoverage.js +102 -0
  210. package/dist/cli/orientation.js +444 -173
  211. package/dist/cli/planArtifacts.js +350 -0
  212. package/dist/cli/planEvidence.js +157 -0
  213. package/dist/cli/planLifecycleState.js +36 -0
  214. package/dist/cli/planTaskIndex.js +11 -0
  215. package/dist/cli/preCutoverCommand.js +32 -0
  216. package/dist/cli/prime-blob.js +71 -3
  217. package/dist/cli/profileAcquisition.js +167 -0
  218. package/dist/cli/startupCompletenessContract.js +59 -0
  219. package/dist/cli/stateQuery.js +63 -14
  220. package/dist/cli/structured.js +0 -1
  221. package/dist/cli/todoMarkdown.js +46 -0
  222. package/dist/cli/todoReadinessSelection.js +192 -0
  223. package/dist/cli/todoSeverity.js +18 -0
  224. package/dist/core/atomicWriter.js +20 -0
  225. package/dist/core/developmentChannel.js +1 -0
  226. package/dist/core/developmentInvocation.js +374 -0
  227. package/dist/core/difflib.js +0 -1
  228. package/dist/core/envPaths.js +20 -0
  229. package/dist/core/jsonValue.js +5 -0
  230. package/dist/core/paths.js +0 -1
  231. package/dist/core/pyjson.js +67 -3
  232. package/dist/core/shell.js +4 -0
  233. package/dist/core/skillIdentity.js +23 -0
  234. package/dist/core/sourceRoot.js +9 -12
  235. package/dist/core/text.js +10 -0
  236. package/dist/core/toml.js +0 -1
  237. package/dist/core/yaml.js +8 -1
  238. package/dist/eval/evalSkills.js +30 -26
  239. package/dist/eval/hybridRouteEvaluation.js +155 -0
  240. package/dist/eval/semanticEval.js +43 -20
  241. package/dist/eval/semanticFixtures.js +16 -5
  242. package/dist/hooks/common.js +11 -81
  243. package/dist/hooks/compaction/apply.js +446 -0
  244. package/dist/hooks/compaction/dryRun.js +184 -0
  245. package/dist/hooks/compaction/index.js +22 -0
  246. package/dist/hooks/compaction/parse.js +325 -0
  247. package/dist/hooks/compaction/retention.js +202 -0
  248. package/dist/hooks/compaction/status.js +360 -0
  249. package/dist/hooks/compaction/types.js +5 -0
  250. package/dist/hooks/validateArtifact/agentFacing.js +9 -0
  251. package/dist/hooks/validateArtifact/index.js +92 -0
  252. package/dist/hooks/validateArtifact/markdown.js +145 -0
  253. package/dist/hooks/validateArtifact/schema.js +546 -0
  254. package/dist/hooks/validateArtifact/traversal.js +107 -0
  255. package/dist/hooks/validateArtifact/violations.js +107 -0
  256. package/dist/migrate/v2HandoffManifest.js +452 -0
  257. package/dist/registries/activationContract.js +2 -0
  258. package/dist/registries/activationTuples.js +106 -0
  259. package/dist/registries/artifactProtocolIds.js +78 -0
  260. package/dist/registries/artifactRegistry.js +224 -63
  261. package/dist/registries/artifactSchemaProjection.js +45 -0
  262. package/dist/registries/capabilityContract.js +141 -13
  263. package/dist/registries/evaluatorHandoffContract.js +170 -0
  264. package/dist/registries/evidenceTierContract.js +371 -0
  265. package/dist/registries/glossaryAdviceContract.js +79 -0
  266. package/dist/registries/glossaryCaveatContract.js +67 -0
  267. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  268. package/dist/registries/glossaryEntryContract.js +757 -0
  269. package/dist/registries/glossaryTermIdentity.js +17 -0
  270. package/dist/registries/glossaryTermOccurrence.js +20 -0
  271. package/dist/registries/hybridRoute.js +274 -0
  272. package/dist/registries/hybridRouteReceipt.js +221 -0
  273. package/dist/registries/packagePublication.js +229 -0
  274. package/dist/registries/packageRegistry.js +187 -211
  275. package/dist/registries/todoReadinessContract.js +448 -0
  276. package/dist/registries/triggerLoader.js +174 -0
  277. package/dist/registries/verbosityBudgetContract.js +205 -0
  278. package/dist/release/releaseMetadata.js +385 -0
  279. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  280. package/dist/runtime/lifecycleAdapters.js +777 -0
  281. package/dist/runtime/lifecycleAuthority.js +453 -0
  282. package/dist/runtime/lifecycleOperationContract.js +123 -0
  283. package/dist/runtime/lifecycleOperations.js +634 -0
  284. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  285. package/dist/runtime/lifecyclePublication.js +415 -0
  286. package/dist/runtime/lifecycleSnapshot.js +438 -0
  287. package/dist/runtime/nativeResourceCleanup.js +502 -0
  288. package/dist/setup/opencode.js +20 -0
  289. package/dist/setup/opencodeConstants.js +1 -0
  290. package/dist/setup/sharedSkill.js +45 -0
  291. package/dist/setup/smokeChecks.js +21 -82
  292. package/dist/state/archiveDiscovery.js +580 -0
  293. package/dist/state/archivePublication.js +225 -0
  294. package/dist/state/archiveRecovery.js +237 -0
  295. package/dist/state/archiveReplay.js +53 -0
  296. package/dist/state/canonicalMigrationRecord.js +36 -0
  297. package/dist/state/changelog.js +221 -0
  298. package/dist/state/decisionEntities.js +367 -0
  299. package/dist/state/decisionLegacyValidation.js +215 -0
  300. package/dist/state/decisionMigrationProvenance.js +199 -0
  301. package/dist/state/decisionOverlay.js +254 -0
  302. package/dist/state/decisionRevision.js +256 -0
  303. package/dist/state/decisionRevisionMigration.js +89 -0
  304. package/dist/state/directRetrieval.js +323 -0
  305. package/dist/state/durability.js +324 -0
  306. package/dist/state/entityCutover.js +459 -0
  307. package/dist/state/entityCutoverGit.js +127 -0
  308. package/dist/state/entityGlossaryAuthority.js +13 -0
  309. package/dist/state/entityListProjection.js +187 -0
  310. package/dist/state/entityListRuntimeRegistry.js +85 -0
  311. package/dist/state/entityMigrationCausality.js +97 -0
  312. package/dist/state/entityMigrationIdentity.js +5 -0
  313. package/dist/state/entityMigrationPreview.js +846 -0
  314. package/dist/state/entityMigrationTodo.js +133 -0
  315. package/dist/state/entityPublicationContext.js +806 -0
  316. package/dist/state/entityRetrievalHelp.js +506 -0
  317. package/dist/state/entityStorage.js +896 -0
  318. package/dist/state/exactReplacementRecovery.js +18 -0
  319. package/dist/state/experimentArchive.js +63 -0
  320. package/dist/state/experimentIdentity.js +202 -0
  321. package/dist/state/healthEntities.js +262 -0
  322. package/dist/state/healthEntityValidation.js +18 -0
  323. package/dist/state/healthRepair.js +69 -0
  324. package/dist/state/installRoot.js +64 -25
  325. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  326. package/dist/state/legacyIdentity.js +47 -0
  327. package/dist/state/legacySummaryRecord.js +6 -0
  328. package/dist/state/listAccounting.js +54 -0
  329. package/dist/state/listClassification.js +17 -0
  330. package/dist/state/listCursor.js +42 -0
  331. package/dist/state/listRetrieval.js +781 -0
  332. package/dist/state/migrationSourceBinding.js +30 -0
  333. package/dist/state/objectiveExperimentEntities.js +322 -0
  334. package/dist/state/planEntities.js +530 -0
  335. package/dist/state/planIdentity.js +47 -0
  336. package/dist/state/planRetrieval.js +313 -0
  337. package/dist/state/planTaskRetrieval.js +294 -0
  338. package/dist/state/progressEntities.js +512 -0
  339. package/dist/state/progressGlossaryCaveat.js +168 -0
  340. package/dist/state/progressPublicationOrder.js +19 -0
  341. package/dist/state/projectRoot.js +62 -0
  342. package/dist/state/projectionPolicy.js +190 -0
  343. package/dist/state/retrievalAuthority.js +156 -0
  344. package/dist/state/safeProjectFile.js +155 -0
  345. package/dist/state/startupAnalysis/benchmark.js +432 -0
  346. package/dist/state/startupAnalysis/contract.js +160 -0
  347. package/dist/state/startupAnalysis/helpers.js +286 -0
  348. package/dist/state/startupAnalysis/index.js +6 -0
  349. package/dist/state/startupAnalysis/metrics.js +340 -0
  350. package/dist/state/startupAnalysis/records.js +198 -0
  351. package/dist/state/startupAnalysis/report.js +111 -0
  352. package/dist/state/startupAnalysis/threshold.js +512 -0
  353. package/dist/state/startupAnalysis.js +2 -1953
  354. package/dist/state/startupProjection.js +499 -0
  355. package/dist/state/stateMode.js +85 -0
  356. package/dist/state/stateStorageAuthority.js +47 -0
  357. package/dist/state/summaryEntityRead.js +25 -0
  358. package/dist/state/summaryMigrationProvenance.js +66 -0
  359. package/dist/state/summarySourceRowAuthority.js +36 -0
  360. package/dist/state/todoDocsEntities.js +1064 -0
  361. package/dist/state/todoDocsEntityValidation.js +158 -0
  362. package/dist/state/todoMarkdownProjection.js +51 -0
  363. package/dist/state/todoReconciliationActivation.js +132 -0
  364. package/dist/state/todoReconciliationInspection.js +173 -0
  365. package/dist/state/todoReconciliationRepair.js +170 -0
  366. package/dist/state/todoReconciliationTransaction.js +582 -0
  367. package/dist/state/write/assign.js +20 -0
  368. package/dist/state/write/candidateMutation.js +269 -0
  369. package/dist/state/write/errors.js +11 -0
  370. package/dist/state/write/experimentPublication.js +192 -0
  371. package/dist/state/write/explain.js +332 -0
  372. package/dist/state/write/fields.js +61 -0
  373. package/dist/state/write/glossaryPublication.js +263 -0
  374. package/dist/state/write/grammar.js +280 -0
  375. package/dist/state/write/helpers.js +29 -0
  376. package/dist/state/write/index.js +12 -0
  377. package/dist/state/write/input.js +367 -0
  378. package/dist/state/write/lock.js +837 -0
  379. package/dist/state/write/mutation.js +234 -0
  380. package/dist/state/write/operations.js +169 -0
  381. package/dist/state/write/planEvaluation.js +128 -0
  382. package/dist/state/write/planPublication.js +179 -0
  383. package/dist/state/write/runtimeOperations.js +142 -0
  384. package/dist/state/write/serialize.js +1 -0
  385. package/dist/state/write/transaction.js +52 -0
  386. package/dist/state/write/validate.js +7 -0
  387. package/dist/upgrade/appContentRefresh.js +383 -0
  388. package/dist/upgrade/appModel.js +8 -7
  389. package/dist/upgrade/atomicWriter.js +1 -0
  390. package/dist/upgrade/bundleEvidence.js +33 -0
  391. package/dist/upgrade/channels.js +12 -8
  392. package/dist/upgrade/compatibility.js +56 -21
  393. package/dist/upgrade/doctor.js +197 -192
  394. package/dist/upgrade/doctorClassifier.js +187 -0
  395. package/dist/upgrade/installedHooksRetirement.js +196 -0
  396. package/dist/upgrade/legacyAgentCleanup.js +282 -0
  397. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  398. package/dist/upgrade/migrateArtifactsV2ToV3.js +367 -149
  399. package/dist/upgrade/migrationPublication.js +122 -0
  400. package/dist/upgrade/nextMajorDoctor.js +155 -0
  401. package/dist/upgrade/npxPlatformStatus.js +22 -0
  402. package/dist/upgrade/projectIntegration.js +145 -187
  403. package/dist/upgrade/projectIntegrationDecision.js +50 -0
  404. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  405. package/dist/upgrade/runtimeMigration.js +278 -352
  406. package/dist/upgrade/upgradeCommands.js +14 -1
  407. package/dist/upgrade/upgradeLock.js +85 -0
  408. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  409. package/dist/upgrade/v3CapabilitySurface.js +14 -0
  410. package/dist/upgrade/versionResolution.js +12 -5
  411. package/dist/validate/activationArtifactEvidence.js +844 -0
  412. package/dist/validate/activationConjunction.js +816 -0
  413. package/dist/validate/activationEvidenceManifest.js +515 -0
  414. package/dist/validate/activationPackageSemantics.js +29 -0
  415. package/dist/validate/appHomeContract.js +5 -11
  416. package/dist/validate/bootstrapAuthority.js +44 -0
  417. package/dist/validate/capability.js +144 -15
  418. package/dist/validate/crossCapability.js +15 -10
  419. package/dist/validate/retainedReferenceAuthority.js +879 -0
  420. package/dist/validate/selfAudit.js +73 -37
  421. package/dist/validate/v1LegacyCruft.js +131 -0
  422. package/dist/validate/vocabularyAuthority.js +303 -0
  423. package/package.json +53 -27
  424. package/bundle/references/adapters/cursor.md +0 -213
  425. package/bundle/references/adapters/opencode.md +0 -530
  426. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  427. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  428. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  429. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -548
  430. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  431. package/bundle/references/analysis/benchmark.md +0 -267
  432. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  433. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  434. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -355
  435. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -278
  436. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  437. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  438. package/bundle/references/meta/documentation-inventory.md +0 -43
  439. package/bundle/references/v1-section-mapping.md +0 -47
  440. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  441. package/bundle/skills/agentera/agents/dokumentera.toml +0 -6
  442. package/bundle/skills/agentera/agents/hej.toml +0 -6
  443. package/bundle/skills/agentera/agents/inspektera.toml +0 -6
  444. package/bundle/skills/agentera/agents/inspirera.toml +0 -6
  445. package/bundle/skills/agentera/agents/optimera.toml +0 -6
  446. package/bundle/skills/agentera/agents/orkestrera.toml +0 -6
  447. package/bundle/skills/agentera/agents/planera.toml +0 -6
  448. package/bundle/skills/agentera/agents/profilera.toml +0 -6
  449. package/bundle/skills/agentera/agents/realisera.toml +0 -6
  450. package/bundle/skills/agentera/agents/resonera.toml +0 -6
  451. package/bundle/skills/agentera/agents/visionera.toml +0 -6
  452. package/bundle/skills/agentera/agents/visualisera.toml +0 -6
  453. package/bundle/skills/agentera/capabilities/dokumentera/instructions.md +0 -428
  454. package/bundle/skills/agentera/capabilities/dokumentera/schemas/artifacts.yaml +0 -73
  455. package/bundle/skills/agentera/capabilities/dokumentera/schemas/triggers.yaml +0 -35
  456. package/bundle/skills/agentera/capabilities/hej/instructions.md +0 -331
  457. package/bundle/skills/agentera/capabilities/hej/schemas/artifacts.yaml +0 -69
  458. package/bundle/skills/agentera/capabilities/hej/schemas/triggers.yaml +0 -58
  459. package/bundle/skills/agentera/capabilities/inspektera/instructions.md +0 -514
  460. package/bundle/skills/agentera/capabilities/inspektera/schemas/artifacts.yaml +0 -76
  461. package/bundle/skills/agentera/capabilities/inspektera/schemas/triggers.yaml +0 -38
  462. package/bundle/skills/agentera/capabilities/inspirera/instructions.md +0 -280
  463. package/bundle/skills/agentera/capabilities/inspirera/schemas/artifacts.yaml +0 -24
  464. package/bundle/skills/agentera/capabilities/inspirera/schemas/triggers.yaml +0 -34
  465. package/bundle/skills/agentera/capabilities/optimera/instructions.md +0 -437
  466. package/bundle/skills/agentera/capabilities/optimera/schemas/triggers.yaml +0 -39
  467. package/bundle/skills/agentera/capabilities/orkestrera/instructions.md +0 -433
  468. package/bundle/skills/agentera/capabilities/orkestrera/schemas/artifacts.yaml +0 -64
  469. package/bundle/skills/agentera/capabilities/orkestrera/schemas/triggers.yaml +0 -42
  470. package/bundle/skills/agentera/capabilities/orkestrera/schemas/validation.yaml +0 -107
  471. package/bundle/skills/agentera/capabilities/planera/instructions.md +0 -368
  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/instructions.md +0 -419
  476. package/bundle/skills/agentera/capabilities/profilera/schemas/artifacts.yaml +0 -18
  477. package/bundle/skills/agentera/capabilities/profilera/schemas/triggers.yaml +0 -45
  478. package/bundle/skills/agentera/capabilities/profilera/schemas/validation.yaml +0 -57
  479. package/bundle/skills/agentera/capabilities/realisera/instructions.md +0 -403
  480. package/bundle/skills/agentera/capabilities/realisera/schemas/artifacts.yaml +0 -80
  481. package/bundle/skills/agentera/capabilities/realisera/schemas/triggers.yaml +0 -39
  482. package/bundle/skills/agentera/capabilities/realisera/schemas/validation.yaml +0 -110
  483. package/bundle/skills/agentera/capabilities/resonera/instructions.md +0 -329
  484. package/bundle/skills/agentera/capabilities/resonera/schemas/artifacts.yaml +0 -47
  485. package/bundle/skills/agentera/capabilities/resonera/schemas/triggers.yaml +0 -46
  486. package/bundle/skills/agentera/capabilities/resonera/schemas/validation.yaml +0 -77
  487. package/bundle/skills/agentera/capabilities/visionera/instructions.md +0 -309
  488. package/bundle/skills/agentera/capabilities/visionera/schemas/triggers.yaml +0 -41
  489. package/bundle/skills/agentera/capabilities/visualisera/instructions.md +0 -400
  490. package/bundle/skills/agentera/capabilities/visualisera/schemas/triggers.yaml +0 -33
  491. package/bundle/skills/agentera/references/contract.md +0 -1039
  492. package/bundle/skills/hej/.claude-plugin/plugin.json +0 -6
  493. package/bundle/skills/hej/SKILL.md +0 -69
  494. package/bundle/skills/hej/agents/hej.toml +0 -11
  495. package/bundle/skills/hej/agents/openai.yaml +0 -8
  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/cli/appContext.js.map +0 -1
  500. package/dist/cli/argvalidate.js.map +0 -1
  501. package/dist/cli/capabilityContext.js.map +0 -1
  502. package/dist/cli/commands/backfill.js +0 -84
  503. package/dist/cli/commands/backfill.js.map +0 -1
  504. package/dist/cli/commands/capability.js.map +0 -1
  505. package/dist/cli/commands/compact.js.map +0 -1
  506. package/dist/cli/commands/doctor.js.map +0 -1
  507. package/dist/cli/commands/lint.js.map +0 -1
  508. package/dist/cli/commands/prime.js.map +0 -1
  509. package/dist/cli/commands/query.js.map +0 -1
  510. package/dist/cli/commands/report.js.map +0 -1
  511. package/dist/cli/commands/schema.js.map +0 -1
  512. package/dist/cli/commands/state.js +0 -1012
  513. package/dist/cli/commands/state.js.map +0 -1
  514. package/dist/cli/commands/upgrade.js.map +0 -1
  515. package/dist/cli/commands/validate.js.map +0 -1
  516. package/dist/cli/commands/verify.js.map +0 -1
  517. package/dist/cli/dispatch.js.map +0 -1
  518. package/dist/cli/help.js.map +0 -1
  519. package/dist/cli/orientation.js.map +0 -1
  520. package/dist/cli/prime-blob.js.map +0 -1
  521. package/dist/cli/stateQuery.js.map +0 -1
  522. package/dist/cli/structured.js.map +0 -1
  523. package/dist/core/difflib.js.map +0 -1
  524. package/dist/core/git.js +0 -43
  525. package/dist/core/git.js.map +0 -1
  526. package/dist/core/paths.js.map +0 -1
  527. package/dist/core/pyjson.js.map +0 -1
  528. package/dist/core/sourceRoot.js.map +0 -1
  529. package/dist/core/toml.js.map +0 -1
  530. package/dist/core/yaml.js.map +0 -1
  531. package/dist/eval/evalSkills.js.map +0 -1
  532. package/dist/eval/semanticEval.js.map +0 -1
  533. package/dist/eval/semanticFixtures.js.map +0 -1
  534. package/dist/hooks/common.js.map +0 -1
  535. package/dist/hooks/compaction.js +0 -935
  536. package/dist/hooks/compaction.js.map +0 -1
  537. package/dist/hooks/cursorPreToolUse.js +0 -19
  538. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  539. package/dist/hooks/cursorSessionStart.js +0 -71
  540. package/dist/hooks/cursorSessionStart.js.map +0 -1
  541. package/dist/hooks/sessionStart.js +0 -209
  542. package/dist/hooks/sessionStart.js.map +0 -1
  543. package/dist/hooks/sessionStop.js +0 -212
  544. package/dist/hooks/sessionStop.js.map +0 -1
  545. package/dist/hooks/validateArtifact.js +0 -933
  546. package/dist/hooks/validateArtifact.js.map +0 -1
  547. package/dist/registries/artifactRegistry.js.map +0 -1
  548. package/dist/registries/capabilityContract.js.map +0 -1
  549. package/dist/registries/packageRegistry.js.map +0 -1
  550. package/dist/registries/runtimeAdapterRegistry.js +0 -315
  551. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  552. package/dist/setup/codex.js +0 -1056
  553. package/dist/setup/codex.js.map +0 -1
  554. package/dist/setup/copilot.js +0 -227
  555. package/dist/setup/copilot.js.map +0 -1
  556. package/dist/setup/cursor.js +0 -127
  557. package/dist/setup/cursor.js.map +0 -1
  558. package/dist/setup/doctor.js +0 -1297
  559. package/dist/setup/doctor.js.map +0 -1
  560. package/dist/setup/smokeChecks.js.map +0 -1
  561. package/dist/state/installRoot.js.map +0 -1
  562. package/dist/state/progressCommit.js +0 -289
  563. package/dist/state/progressCommit.js.map +0 -1
  564. package/dist/state/startupAnalysis.js.map +0 -1
  565. package/dist/upgrade/appModel.js.map +0 -1
  566. package/dist/upgrade/channels.js.map +0 -1
  567. package/dist/upgrade/compatibility.js.map +0 -1
  568. package/dist/upgrade/doctor.js.map +0 -1
  569. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -571
  570. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  571. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  572. package/dist/upgrade/projectIntegration.js.map +0 -1
  573. package/dist/upgrade/runtimeMigration.js.map +0 -1
  574. package/dist/upgrade/upgradeCommands.js.map +0 -1
  575. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  576. package/dist/upgrade/versionResolution.js.map +0 -1
  577. package/dist/validate/appHomeContract.js.map +0 -1
  578. package/dist/validate/capability.js.map +0 -1
  579. package/dist/validate/crossCapability.js.map +0 -1
  580. package/dist/validate/lifecycleAdapters.js +0 -772
  581. package/dist/validate/lifecycleAdapters.js.map +0 -1
  582. package/dist/validate/selfAudit.js.map +0 -1
  583. /package/bundle/skills/agentera/capabilities/{dokumentera → document}/schemas/exit.yaml +0 -0
  584. /package/bundle/skills/agentera/capabilities/{inspirera → research}/schemas/exit.yaml +0 -0
  585. /package/bundle/skills/agentera/capabilities/{hej → status}/schemas/exit.yaml +0 -0
@@ -0,0 +1,463 @@
1
+ import fs from "node:fs";
2
+ import { artifactPath } from "../appContext.js";
3
+ import { asList } from "../stateQuery.js";
4
+ import { capabilityContext } from "./contract.js";
5
+ import { docsConventions, sourceProvenance, uniqueList, hasRecordedValue } from "./shared.js";
6
+ import { selectEvidenceTarget, taskByRef } from "./planState.js";
7
+ import { progressVerificationSummary, retryState } from "./progress.js";
8
+ import { STATE_FAMILY_FALLBACK_COMMANDS, STATE_FAMILY_LIST_COMMANDS } from "./types.js";
9
+ import { deferredStartupFamilies } from "./startupAggregation.js";
10
+ import { preCutoverCommand } from "../preCutoverCommand.js";
11
+ export function dateFromIsoUtc(s) {
12
+ const m = /^(\d{4})-(\d{2})-(\d{2})/.exec(s.trim());
13
+ if (!m)
14
+ return null;
15
+ const utc = Date.UTC(Number(m[1]), Number(m[2]) - 1, Number(m[3]));
16
+ const back = new Date(utc);
17
+ if (back.getUTCFullYear() !== Number(m[1]) || back.getUTCMonth() !== Number(m[2]) - 1 || back.getUTCDate() !== Number(m[3]))
18
+ return null;
19
+ return utc;
20
+ }
21
+ export function todayUtcMs() {
22
+ const now = new Date();
23
+ return Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
24
+ }
25
+ export function currentStateStatus(value, label, staleAfterDays = 30) {
26
+ if (typeof value !== "string" || !value.trim())
27
+ return ["unknown", null];
28
+ const observed = dateFromIsoUtc(value.trim().slice(0, 10));
29
+ if (observed === null)
30
+ return ["unknown", `${label} current-state date is not ISO-parseable in CLI state.`];
31
+ const ageDays = Math.round((todayUtcMs() - observed) / 86400000);
32
+ if (ageDays > staleAfterDays)
33
+ return ["stale", `${label} evidence is stale (${ageDays} days old; threshold=${staleAfterDays}).`];
34
+ return ["current", null];
35
+ }
36
+ export function evidenceDocsState(docs) {
37
+ const available = Boolean(docs.exists);
38
+ const nonEmptyFields = ["mapping_entries", "indexed_documents", "last_audit"].filter((f) => hasRecordedValue(docs[f]));
39
+ const [currentState, currentStateCaveat] = currentStateStatus(docs.last_audit, "Docs");
40
+ return {
41
+ status: available ? "available" : "unavailable",
42
+ source_provenance: sourceProvenance("docs", STATE_FAMILY_FALLBACK_COMMANDS.docs),
43
+ mapping_entries: docs.mapping_entries ?? 0,
44
+ indexed_documents: docs.indexed_documents ?? 0,
45
+ last_audit: docs.last_audit ?? null,
46
+ current_state: currentState,
47
+ non_empty_evidence_present: nonEmptyFields.length > 0,
48
+ non_empty_evidence_fields: nonEmptyFields,
49
+ caveats: [
50
+ ...(available ? [] : ["Docs state is unavailable in CLI docs state."]),
51
+ ...(available && currentStateCaveat ? [currentStateCaveat] : []),
52
+ ],
53
+ };
54
+ }
55
+ export function evidenceHealthState(health) {
56
+ const available = Boolean(health.exists);
57
+ const nonEmptyFields = ["id", "artifact", "trajectory", "grade"].filter((f) => hasRecordedValue(health[f]));
58
+ const auditDate = health.date ?? health.timestamp ?? null;
59
+ const [currentState, currentStateCaveat] = currentStateStatus(auditDate, "Health");
60
+ return {
61
+ status: available ? "available" : "unavailable",
62
+ source_provenance: sourceProvenance("health", STATE_FAMILY_LIST_COMMANDS.health),
63
+ id: health.id ?? null,
64
+ artifact: health.artifact ?? "health",
65
+ date: auditDate,
66
+ timestamp: auditDate,
67
+ trajectory: health.trajectory ?? null,
68
+ grade: health.grade ?? null,
69
+ degrading: Boolean(health.degrading),
70
+ current_state: currentState,
71
+ non_empty_evidence_present: nonEmptyFields.length > 0,
72
+ non_empty_evidence_fields: nonEmptyFields,
73
+ caveats: [
74
+ ...(available ? [] : ["Health state is unavailable in CLI health state."]),
75
+ ...(available && currentStateCaveat ? [currentStateCaveat] : []),
76
+ ],
77
+ };
78
+ }
79
+ export function evidenceTodoState(schemas, todoItems) {
80
+ const info = schemas.todo ?? { path: "TODO.md", record: undefined, schema: {}, fields: {} };
81
+ const exists = fs.existsSync(artifactPath(info, "todo"));
82
+ return {
83
+ status: exists ? "available" : "unavailable",
84
+ source_provenance: sourceProvenance("todo", STATE_FAMILY_FALLBACK_COMMANDS.todo),
85
+ open_count: todoItems.length,
86
+ items: todoItems,
87
+ non_empty_evidence_present: todoItems.length > 0,
88
+ non_empty_evidence_fields: todoItems.length > 0 ? ["items"] : [],
89
+ caveats: exists ? [] : ["TODO state is unavailable in CLI TODO state."],
90
+ };
91
+ }
92
+ export function evidenceProtectedStateChecks() {
93
+ const source = sourceProvenance("evidence_context", preCutoverCommand("prime --context audit --format json"), "protected_state_checks");
94
+ return {
95
+ status: "not_checked_by_design",
96
+ allowed_status_values: ["verified_local", "not_checked_by_design", "requires_manual_check", "unavailable"],
97
+ source_provenance: source,
98
+ checks: [
99
+ {
100
+ name: "vision_state",
101
+ status: "not_checked_by_design",
102
+ protected: true,
103
+ checked: false,
104
+ source_provenance: source,
105
+ caveats: ["Vision state is protected during execution cycles and was not read or modified."],
106
+ },
107
+ {
108
+ name: "objective_state",
109
+ status: "not_checked_by_design",
110
+ protected: true,
111
+ checked: false,
112
+ source_provenance: source,
113
+ caveats: ["Objective state is protected during execution cycles and was not read or modified."],
114
+ },
115
+ ],
116
+ caveats: ["Protected-state boundaries are reported without reading or modifying vision or objective state."],
117
+ };
118
+ }
119
+ export function evidenceVersionChecks(docs) {
120
+ const conventions = docsConventions(docs);
121
+ const versionFiles = asList(conventions.version_files);
122
+ const semverPolicy = conventions.semver_policy && typeof conventions.semver_policy === "object" && !Array.isArray(conventions.semver_policy) ? conventions.semver_policy : {};
123
+ const source = sourceProvenance("docs", STATE_FAMILY_FALLBACK_COMMANDS.docs, "summary.conventions");
124
+ const ec = (field) => sourceProvenance("evidence_context", preCutoverCommand("prime --context audit --format json"), field);
125
+ const checks = [
126
+ {
127
+ name: "docs_version_policy",
128
+ status: Object.keys(semverPolicy).length > 0 ? "verified_local" : "unavailable",
129
+ source_provenance: source,
130
+ evidence: { semver_policy: semverPolicy },
131
+ caveats: Object.keys(semverPolicy).length > 0 ? [] : ["Docs semver policy is unavailable in CLI docs state."],
132
+ },
133
+ {
134
+ name: "version_files",
135
+ status: versionFiles.length > 0 ? "verified_local" : "unavailable",
136
+ source_provenance: source,
137
+ evidence: { version_files: versionFiles },
138
+ caveats: versionFiles.length > 0 ? [] : ["Docs version files are unavailable in CLI docs state."],
139
+ },
140
+ {
141
+ name: "publication_evidence",
142
+ status: "requires_manual_check",
143
+ source_provenance: ec("version_checks.publication_evidence"),
144
+ remote_checks_performed: false,
145
+ registry_checks_performed: false,
146
+ caveats: ["Publication and registry evidence is not recorded in CLI evidence context and requires manual verification if needed."],
147
+ },
148
+ {
149
+ name: "remote_push_evidence",
150
+ status: "requires_manual_check",
151
+ source_provenance: ec("version_checks.remote_push_evidence"),
152
+ remote_checks_performed: false,
153
+ caveats: ["Remote push evidence is not recorded in CLI evidence context and requires manual verification if needed."],
154
+ },
155
+ {
156
+ name: "installed_app_refresh",
157
+ status: "not_checked_by_design",
158
+ source_provenance: ec("version_checks.installed_app_refresh"),
159
+ refresh_performed: false,
160
+ caveats: ["Installed app refresh state is deliberately not checked or changed by evidence context."],
161
+ },
162
+ ];
163
+ let status;
164
+ if (checks.some((c) => c.status === "requires_manual_check"))
165
+ status = "requires_manual_check";
166
+ else if (checks.some((c) => c.status === "unavailable"))
167
+ status = "unavailable";
168
+ else
169
+ status = "verified_local";
170
+ return {
171
+ status,
172
+ allowed_status_values: ["verified_local", "not_checked_by_design", "requires_manual_check", "unavailable"],
173
+ source_provenance: source,
174
+ checks,
175
+ caveats: checks.flatMap((c) => (c.caveats ?? [])),
176
+ };
177
+ }
178
+ export function evidencePlanCriteria(plan, target) {
179
+ const taskRefObj = target.task && typeof target.task === "object" && !Array.isArray(target.task) ? target.task : null;
180
+ const selected = taskByRef(plan, taskRefObj);
181
+ const criteria = selected && typeof selected === "object" ? asList(selected.acceptance) : [];
182
+ return {
183
+ status: criteria.length > 0 ? "available" : "incomplete",
184
+ source_provenance: sourceProvenance("plan", STATE_FAMILY_FALLBACK_COMMANDS.plan, "entries.acceptance"),
185
+ target: taskRefObj,
186
+ criteria,
187
+ criteria_count: criteria.length,
188
+ non_empty_evidence_present: criteria.length > 0,
189
+ non_empty_evidence_fields: criteria.length > 0 ? ["criteria"] : [],
190
+ caveats: criteria.length > 0 ? [] : ["Selected evaluation target has no acceptance criteria in CLI plan state."],
191
+ };
192
+ }
193
+ export function residualRiskEntry(category, status, message, sp) {
194
+ return { category, status, message, source_provenance: sp };
195
+ }
196
+ function decisionHistoryEntries(history) {
197
+ return asList(history.entries).flatMap((value) => {
198
+ if (!value || typeof value !== "object" || Array.isArray(value))
199
+ return [];
200
+ const entry = value;
201
+ const record = entry.record;
202
+ if (!record || typeof record !== "object" || Array.isArray(record))
203
+ return [];
204
+ return [{ ...record, id: entry.id ?? null, artifact: entry.artifact ?? "decisions", retrieval: entry.retrieval ?? null }];
205
+ });
206
+ }
207
+ function decisionHistoryCounts(history) {
208
+ return history.counts && typeof history.counts === "object" && !Array.isArray(history.counts)
209
+ ? history.counts
210
+ : {};
211
+ }
212
+ export function decisionContextRisk(history) {
213
+ const entries = decisionHistoryEntries(history);
214
+ const counts = decisionHistoryCounts(history);
215
+ if (history.command !== "state decisions list") {
216
+ return {
217
+ status: "unavailable",
218
+ source_provenance: sourceProvenance("decisions", STATE_FAMILY_LIST_COMMANDS.decisions),
219
+ summary: null,
220
+ caveats: ["Decision state is unavailable in CLI evidence context."],
221
+ };
222
+ }
223
+ const omitted = Number(counts.remaining ?? history.omitted_count ?? 0);
224
+ const missing = entries.filter((entry) => !entry.id || !entry.date || !entry.question || !entry.choice).length;
225
+ const caveats = uniqueList([
226
+ ...(omitted > 0 ? [`Decision startup history omits ${omitted} decision detail entr${omitted === 1 ? "y" : "ies"}; run ${STATE_FAMILY_LIST_COMMANDS.decisions} for the ordinary bounded list.`] : []),
227
+ ...(missing > 0 ? [`${missing} bounded decision entr${missing === 1 ? "y is" : "ies are"} missing review context fields.`] : []),
228
+ ]);
229
+ return {
230
+ status: caveats.length > 0 ? "caveated" : "available",
231
+ source_provenance: sourceProvenance("decisions", STATE_FAMILY_LIST_COMMANDS.decisions),
232
+ summary: {
233
+ total_entries: Number(counts.total ?? entries.length),
234
+ returned_entries: Number(counts.returned ?? entries.length),
235
+ omitted_entries: omitted,
236
+ entries_with_missing_fields: missing,
237
+ authority: "canonical_entity_files",
238
+ },
239
+ caveats,
240
+ };
241
+ }
242
+ export function parseDecisionReviewDate(value) {
243
+ if (typeof value !== "string" || !value.trim())
244
+ return null;
245
+ return dateFromIsoUtc(value.trim().slice(0, 10));
246
+ }
247
+ export function decisionReviewDue(entry) {
248
+ const satisfaction = entry.satisfaction && typeof entry.satisfaction === "object" && !Array.isArray(entry.satisfaction) ? entry.satisfaction : {};
249
+ const candidates = [
250
+ ["review_date", entry.review_date],
251
+ ["review_by", entry.review_by],
252
+ ["satisfaction.review_date", satisfaction.review_date],
253
+ ["satisfaction.review_by", satisfaction.review_by],
254
+ ["satisfaction.review_due", satisfaction.review_due],
255
+ ];
256
+ for (const [field, value] of candidates) {
257
+ const parsed = parseDecisionReviewDate(value);
258
+ if (parsed !== null)
259
+ return [field, parsed];
260
+ }
261
+ return [null, null];
262
+ }
263
+ export function decisionLabel(entry) {
264
+ const id = entry.id;
265
+ if (typeof id === "string" && id)
266
+ return `Decision ${id}`;
267
+ const number = entry.number;
268
+ if (number !== null && number !== undefined && number !== "")
269
+ return `Decision ${number}`;
270
+ const summary = entry.summary;
271
+ if (typeof summary === "string" && summary.trim())
272
+ return summary.trim().split(":", 1)[0];
273
+ return "Decision entry";
274
+ }
275
+ export function isoFromUtcMs(utc) {
276
+ const d = new Date(utc);
277
+ return `${d.getUTCFullYear()}-${String(d.getUTCMonth() + 1).padStart(2, "0")}-${String(d.getUTCDate()).padStart(2, "0")}`;
278
+ }
279
+ export function decisionReviewPressure(history) {
280
+ const sp = sourceProvenance("decisions", STATE_FAMILY_LIST_COMMANDS.decisions);
281
+ if (history.command !== "state decisions list") {
282
+ return { status: "unavailable", source_provenance: sp, summary: null, stale_protected_decisions: [], caveats: [] };
283
+ }
284
+ const activeEntries = decisionHistoryEntries(history);
285
+ const counts = decisionHistoryCounts(history);
286
+ const omitted = Number(counts.remaining ?? history.omitted_count ?? 0);
287
+ const protectedActive = activeEntries.filter((e) => e.satisfaction && typeof e.satisfaction === "object" && !Array.isArray(e.satisfaction) && e.satisfaction.review_needed);
288
+ const protectedArchive = [];
289
+ const today = todayUtcMs();
290
+ const stale = [];
291
+ let caveats = omitted > 0
292
+ ? [`Decision review pressure is bounded with ${omitted} decision(s) omitted; continue with ${STATE_FAMILY_LIST_COMMANDS.decisions}.`]
293
+ : [];
294
+ for (const [collection, entries] of [["decisions", protectedActive], ["archive", protectedArchive]]) {
295
+ for (const entry of entries) {
296
+ const [field, reviewDate] = decisionReviewDue(entry);
297
+ if (reviewDate === null || reviewDate > today)
298
+ continue;
299
+ const label = decisionLabel(entry);
300
+ const message = `${label} requires protected decision review because ${field} elapsed on ${isoFromUtcMs(reviewDate)}.`;
301
+ stale.push({ label, collection, reason: "review_date_elapsed", review_date: isoFromUtcMs(reviewDate), source_field: field, message });
302
+ caveats.push(message);
303
+ }
304
+ }
305
+ const protectedOverflowCount = Math.max(protectedActive.length - 10, protectedArchive.length - 40, protectedActive.length + protectedArchive.length - 50, 0);
306
+ if (protectedOverflowCount) {
307
+ const message = "Protected decisions exceed the 10/40/50 compaction budget; " +
308
+ `${protectedOverflowCount} protected decision(s) require review before compaction can complete.`;
309
+ stale.push({ label: "decisions", collection: "decisions/archive", reason: "protected_compaction_budget_pressure", protected_overflow_count: protectedOverflowCount, message });
310
+ caveats.push(message);
311
+ }
312
+ caveats = uniqueList(caveats);
313
+ return {
314
+ status: stale.length > 0 || protectedOverflowCount > 0 ? "review_required" : omitted > 0 ? "degraded" : "available",
315
+ source_provenance: sp,
316
+ summary: {
317
+ protected_active_decisions: protectedActive.length,
318
+ protected_archive_decisions: protectedArchive.length,
319
+ protected_overflow_count: protectedOverflowCount,
320
+ stale_protected_decisions: stale.length,
321
+ returned_decisions: Number(counts.returned ?? activeEntries.length),
322
+ total_decisions: Number(counts.total ?? activeEntries.length),
323
+ omitted_decisions: omitted,
324
+ },
325
+ stale_protected_decisions: stale,
326
+ caveats,
327
+ };
328
+ }
329
+ export function auditEvidenceContext(capability, schemas, plan, progress, health, todoItems, docs, profile, bundle, decisionHistory) {
330
+ if (capability !== "audit")
331
+ return null;
332
+ const capabilityContract = capabilityContext(capability) ?? {};
333
+ const evaluationTarget = selectEvidenceTarget(plan);
334
+ const planCriteria = evidencePlanCriteria(plan, evaluationTarget);
335
+ const progressVerification = progressVerificationSummary(progress);
336
+ const docsState = evidenceDocsState(docs);
337
+ const healthState = evidenceHealthState(health);
338
+ const todoState = evidenceTodoState(schemas, todoItems);
339
+ const protectedStateChecks = evidenceProtectedStateChecks();
340
+ const versionChecks = evidenceVersionChecks(docs);
341
+ const decisionRisk = decisionContextRisk(decisionHistory);
342
+ const reviewPressure = decisionReviewPressure(decisionHistory);
343
+ let stateCaveats = [];
344
+ const attributedRisks = [];
345
+ for (const family of deferredStartupFamilies(capabilityContract)) {
346
+ const message = `${family} detail is deferred from prime --context startup.`;
347
+ stateCaveats.push(message);
348
+ attributedRisks.push(residualRiskEntry("deferred_state_detail", "caveated", message, sourceProvenance("prime", preCutoverCommand("prime --context audit --format json"), "capability_context.startup.availability")));
349
+ }
350
+ if (bundle.status !== "up_to_date") {
351
+ const message = "Agentera app files are not up to date; this is a caveat, not approval to repair or update app files.";
352
+ stateCaveats.push(message);
353
+ attributedRisks.push(residualRiskEntry("installed_app_state", "caveated", message, sourceProvenance("status", preCutoverCommand("prime --format json"), "app.status")));
354
+ }
355
+ if (profile.status !== "valid") {
356
+ const message = "profile-derived state is unavailable in prime --context response.";
357
+ stateCaveats.push(message);
358
+ attributedRisks.push(residualRiskEntry("profile_state", "unavailable", message, sourceProvenance("status", preCutoverCommand("prime --format json"), "profile.status")));
359
+ }
360
+ else if (profile.stale === true) {
361
+ const message = "profile-derived state is stale; this is a caveat, not approval to refresh profile state.";
362
+ stateCaveats.push(message);
363
+ attributedRisks.push(residualRiskEntry("profile_state", "caveated", message, sourceProvenance("status", preCutoverCommand("prime --format json"), "profile.stale")));
364
+ }
365
+ for (const component of [evaluationTarget, planCriteria, progressVerification, docsState, healthState, todoState, protectedStateChecks, versionChecks]) {
366
+ for (const caveat of (component.caveats ?? [])) {
367
+ stateCaveats.push(caveat);
368
+ // cast: component source_provenance comes from evidence builders backed by parsed artifact/decision state
369
+ const componentSp = component.source_provenance ?? sourceProvenance("evidence_context", preCutoverCommand("prime --context audit --format json"));
370
+ attributedRisks.push(residualRiskEntry("evidence_family", "caveated", caveat, componentSp));
371
+ }
372
+ }
373
+ for (const caveat of (decisionRisk.caveats ?? [])) {
374
+ stateCaveats.push(caveat);
375
+ attributedRisks.push(residualRiskEntry("decisions_context", decisionRisk.status, caveat, decisionRisk.source_provenance));
376
+ }
377
+ for (const caveat of (reviewPressure.caveats ?? [])) {
378
+ stateCaveats.push(caveat);
379
+ attributedRisks.push(residualRiskEntry("decision_review_pressure", reviewPressure.status, caveat, reviewPressure.source_provenance));
380
+ }
381
+ const retry = retryState();
382
+ for (const caveat of (retry.caveats ?? [])) {
383
+ stateCaveats.push(caveat);
384
+ attributedRisks.push(residualRiskEntry("retry_state", retry.status, caveat, retry.source_provenance));
385
+ }
386
+ stateCaveats = uniqueList(stateCaveats);
387
+ const dedupedRisks = [];
388
+ const seen = new Set();
389
+ for (const risk of attributedRisks) {
390
+ const key = `${risk.category}\u0000${risk.message}`;
391
+ if (!seen.has(key)) {
392
+ seen.add(key);
393
+ dedupedRisks.push(risk);
394
+ }
395
+ }
396
+ const requiredState = {
397
+ evaluation_target: evaluationTarget.status === "selected",
398
+ plan_criteria: planCriteria.status === "available",
399
+ progress_verification: progressVerification.status === "available",
400
+ docs_state: docsState.status === "available",
401
+ health_state: healthState.status === "available",
402
+ todo_state: todoState.status === "available",
403
+ source_contract: true,
404
+ };
405
+ const missingRequired = Object.entries(requiredState).filter(([, present]) => !present).map(([name]) => name);
406
+ const fallbackCommands = uniqueList([
407
+ STATE_FAMILY_FALLBACK_COMMANDS.plan,
408
+ STATE_FAMILY_FALLBACK_COMMANDS.progress,
409
+ STATE_FAMILY_FALLBACK_COMMANDS.docs,
410
+ STATE_FAMILY_FALLBACK_COMMANDS.health,
411
+ STATE_FAMILY_FALLBACK_COMMANDS.todo,
412
+ preCutoverCommand("state query --list-artifacts --format json"),
413
+ ]);
414
+ return {
415
+ capability: "audit",
416
+ evaluation_target: evaluationTarget,
417
+ plan_criteria: planCriteria,
418
+ progress_verification: progressVerification,
419
+ docs_state: docsState,
420
+ health_state: healthState,
421
+ todo_state: todoState,
422
+ protected_state_checks: protectedStateChecks,
423
+ version_checks: versionChecks,
424
+ decision_context: decisionRisk,
425
+ decision_review_pressure: reviewPressure,
426
+ residual_risks: {
427
+ status: dedupedRisks.length > 0 ? "caveated" : "none_recorded",
428
+ items: stateCaveats,
429
+ attributed_items: dedupedRisks,
430
+ caveats: [],
431
+ },
432
+ state_family_caveats: stateCaveats,
433
+ fallback_commands: fallbackCommands,
434
+ source_contract: {
435
+ complete_for_evidence_context: missingRequired.length === 0,
436
+ caveated: stateCaveats.length > 0,
437
+ raw_artifact_reads_required: false,
438
+ raw_artifact_read_policy: "Use this evidence_context and included status state first. Run listed routine/query CLI fallback commands " +
439
+ "for missing or incomplete evidence state; raw artifact reads are last-resort diagnostics, not normal evaluation startup behavior.",
440
+ required_evidence_state: requiredState,
441
+ missing_required_evidence_state: missingRequired,
442
+ fallback_commands: fallbackCommands,
443
+ caveats: stateCaveats,
444
+ owns: [
445
+ "evaluation target",
446
+ "plan criteria",
447
+ "progress verification",
448
+ "docs state",
449
+ "health state",
450
+ "TODO state",
451
+ "protected-state placeholder checks",
452
+ "version boundary checks",
453
+ "compacted decision caveats",
454
+ "protected decision review pressure",
455
+ "attributed residual risks",
456
+ "fallback commands",
457
+ "raw-read policy",
458
+ "truthful completeness metadata",
459
+ ],
460
+ deferred: [],
461
+ },
462
+ };
463
+ }
@@ -0,0 +1,3 @@
1
+ export { CAPABILITY_NAMES } from "./types.js";
2
+ export { validatePrimeCapability } from "./shared.js";
3
+ export { buildPrimeCapabilityContextPayload } from "./startup.js";
@@ -0,0 +1,131 @@
1
+ import { capabilityContext } from "./contract.js";
2
+ import { entryStatus, uniqueList } from "./shared.js";
3
+ import { formatPlanTaskDepRef, indexPlanTasksByNumber, orchestrationTaskSummary, planDependsOnList, resolvePlanTaskByRef, DONE_STATUSES_ORCH, BLOCKED_STATUSES_ORCH, } from "./planState.js";
4
+ import { progressVerificationSummary, retryState, evaluatorHandoff } from "./progress.js";
5
+ import { STATE_FAMILY_FALLBACK_COMMANDS } from "./types.js";
6
+ import { planLifecycleState } from "../planLifecycleState.js";
7
+ import { planTaskIndex } from "../planTaskIndex.js";
8
+ import { entityListFamily } from "../../state/entityRetrievalHelp.js";
9
+ import { deferredStartupFamilies } from "./startupAggregation.js";
10
+ import { preCutoverCommand, preCutoverCommandFromBare } from "../preCutoverCommand.js";
11
+ export function orchestrationContext(capability, plan, progress, health, todoItems, docs, profile, nextAction) {
12
+ if (capability !== "orchestrate")
13
+ return null;
14
+ const lifecycle = planLifecycleState(plan);
15
+ const tasks = lifecycle.current_plan_degraded === true
16
+ ? []
17
+ : planTaskIndex(plan);
18
+ const taskByNumber = indexPlanTasksByNumber(tasks);
19
+ const dependencyReady = [];
20
+ const blocked = [];
21
+ const complete = tasks.filter((task) => entryStatus(task, "pending") === "complete").length;
22
+ const superseded = tasks.filter((task) => entryStatus(task, "pending") === "superseded").length;
23
+ const statusCounts = tasks.reduce((counts, task) => {
24
+ const status = entryStatus(task, "pending");
25
+ counts[status] = (counts[status] ?? 0) + 1;
26
+ return counts;
27
+ }, {});
28
+ for (const task of tasks) {
29
+ const status = entryStatus(task, "pending");
30
+ if (DONE_STATUSES_ORCH.has(status))
31
+ continue;
32
+ const reasons = [];
33
+ if (BLOCKED_STATUSES_ORCH.has(status))
34
+ reasons.push(`task status is ${status}`);
35
+ for (const dep of planDependsOnList(task)) {
36
+ const dependency = resolvePlanTaskByRef(taskByNumber, dep);
37
+ if (dependency === undefined)
38
+ reasons.push(`dependency ${formatPlanTaskDepRef(dep)} is not present in plan tasks`);
39
+ else if (!DONE_STATUSES_ORCH.has(entryStatus(dependency, "pending"))) {
40
+ reasons.push(`dependency ${formatPlanTaskDepRef(dep)} is ${entryStatus(dependency, "pending")}`);
41
+ }
42
+ }
43
+ if (reasons.length > 0)
44
+ blocked.push({ ...orchestrationTaskSummary(task), blocked_reasons: reasons });
45
+ else
46
+ dependencyReady.push(orchestrationTaskSummary(task));
47
+ }
48
+ const selected = dependencyReady.length > 0 ? dependencyReady[0] : null;
49
+ const planTasks = entityListFamily("plan_tasks");
50
+ const queueCommand = plan.id
51
+ ? preCutoverCommand(`state ${planTasks.commandTokens.join(" ")} list ${String(plan.id)} --limit 100 --format json`)
52
+ : null;
53
+ const queueRetrieval = queueCommand
54
+ ? { list: queueCommand, restart: queueCommand, get: preCutoverCommandFromBare(planTasks.get) }
55
+ : null;
56
+ const stateCaveats = [];
57
+ let fallbackCommands = [];
58
+ const capabilityContract = capabilityContext(capability) ?? {};
59
+ for (const family of deferredStartupFamilies(capabilityContract)) {
60
+ stateCaveats.push(`${family} detail is deferred from prime --context startup.`);
61
+ }
62
+ if (!plan.exists) {
63
+ stateCaveats.push("plan state is unavailable; task queue cannot be complete.");
64
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.plan);
65
+ }
66
+ if (lifecycle.status === "degraded") {
67
+ stateCaveats.push(...(lifecycle.caveats ?? []));
68
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.plan);
69
+ }
70
+ if (!progress.exists) {
71
+ stateCaveats.push("progress state is unavailable; latest verification is not summarized here.");
72
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.progress);
73
+ }
74
+ if (!health.exists) {
75
+ stateCaveats.push("health state is unavailable or incomplete.");
76
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.health);
77
+ }
78
+ if (!docs.exists) {
79
+ stateCaveats.push("docs mapping state is unavailable or incomplete.");
80
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.docs);
81
+ }
82
+ if (todoItems.length === 0) {
83
+ stateCaveats.push("todo state has no open entries in prime --context response; absence may mean none open or unavailable.");
84
+ fallbackCommands.push(STATE_FAMILY_FALLBACK_COMMANDS.todo);
85
+ }
86
+ if (profile.status !== "valid") {
87
+ stateCaveats.push("profile-derived state is unavailable in prime --context response.");
88
+ }
89
+ else if (profile.stale === true) {
90
+ stateCaveats.push("profile-derived state is stale; this is a caveat, not approval to refresh profile state.");
91
+ }
92
+ fallbackCommands = uniqueList(fallbackCommands);
93
+ const progressVerification = progressVerificationSummary(progress);
94
+ const retry = retryState(selected, tasks);
95
+ const handoff = evaluatorHandoff(selected, progressVerification, retry, stateCaveats);
96
+ const contextComplete = Boolean(plan.exists) && tasks.length > 0 && stateCaveats.length === 0 && (dependencyReady.length + blocked.length === 0 || queueRetrieval !== null);
97
+ return {
98
+ capability: "orchestrate",
99
+ task_queue: { total: tasks.length, complete, superseded, status_counts: statusCounts, dependency_ready_tasks: dependencyReady, blocked_tasks: blocked, retrieval: queueRetrieval },
100
+ selected_next_task: selected,
101
+ selected_next_action: nextAction,
102
+ progress_verification: progressVerification,
103
+ retry_state: retry,
104
+ plan_lifecycle_state: lifecycle,
105
+ evaluator_handoff: handoff,
106
+ task_summaries: tasks.map((task) => orchestrationTaskSummary(task)),
107
+ state_family_caveats: stateCaveats,
108
+ fallback_commands: fallbackCommands,
109
+ source_contract: {
110
+ complete_for_orchestration_context: contextComplete,
111
+ raw_artifact_reads_required: false,
112
+ raw_artifact_read_policy: "Use this orchestration_context and included status state first. Run listed routine CLI fallback commands " +
113
+ "for missing or incomplete state families; raw artifact reads are last-resort diagnostics, not normal startup behavior.",
114
+ fallback_commands: fallbackCommands,
115
+ caveats: stateCaveats,
116
+ owns: [
117
+ "dependency-ready task queue",
118
+ "blocked task reasons",
119
+ "selected next task",
120
+ "task acceptance summaries",
121
+ "task evidence summaries",
122
+ "latest progress verification summary",
123
+ "retry_state provenance",
124
+ "evaluator handoff inputs",
125
+ "state-family caveats",
126
+ "plan lifecycle state",
127
+ ],
128
+ deferred: [],
129
+ },
130
+ };
131
+ }