agentera 3.0.0-dev.7 → 3.0.0-dev.74

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 (763) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +229 -22
  3. package/bundle/.agentera-build-source.json +8 -0
  4. package/bundle/CHANGELOG.md +1361 -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 +252 -0
  9. package/bundle/extract-corpus-parity.json +2 -4
  10. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  11. package/bundle/references/adapters/package-publication.json +484 -0
  12. package/bundle/references/adapters/package-registry.yaml +439 -188
  13. package/bundle/references/adapters/package-surface-characterization.md +68 -34
  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 +559 -0
  19. package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
  20. package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
  21. package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
  22. package/bundle/references/analysis/verification-policy.yaml +266 -0
  23. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  24. package/bundle/references/artifacts/glossary-entry-contract.yaml +2752 -0
  25. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  26. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  27. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  28. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  29. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  30. package/bundle/references/cli/routing-model.md +152 -93
  31. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  32. package/bundle/references/cli/update-channels.yaml +6 -4
  33. package/bundle/references/cli/vocabulary-index.yaml +5 -7
  34. package/bundle/references/cli/vocabulary.md +52 -94
  35. package/bundle/references/meta/retained-reference-authority.yaml +166 -0
  36. package/bundle/skills/agentera/SKILL.md +183 -63
  37. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  38. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  39. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  40. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  41. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  42. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  43. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  44. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  45. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  46. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  47. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  48. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  49. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  51. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  52. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  53. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  54. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  55. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  56. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  57. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  58. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  59. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  60. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  62. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  63. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  64. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  65. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  66. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  67. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
  68. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
  69. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  70. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
  71. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  72. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  73. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  74. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  75. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  76. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  77. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  78. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  79. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  80. package/bundle/skills/agentera/protocol.yaml +4 -4
  81. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  82. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  83. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +30 -12
  84. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  85. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -12
  86. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -9
  87. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
  88. package/bundle/skills/agentera/schemas/artifacts/health.yaml +56 -19
  89. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
  90. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +464 -32
  91. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +131 -18
  92. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +302 -7
  93. package/dist/.agentera-build-source.json +8 -0
  94. package/dist/analytics/extractCorpus/cli.js +52 -11
  95. package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
  96. package/dist/analytics/extractCorpus/core.js +262 -14
  97. package/dist/analytics/extractCorpus/corpus.js +57 -18
  98. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  99. package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
  100. package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
  101. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  102. package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
  103. package/dist/analytics/extractCorpus/index.js +4 -2
  104. package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
  105. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  106. package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
  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 +113 -0
  112. package/dist/analytics/personalGlossaryCandidateProjection.js +692 -0
  113. package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
  114. package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
  115. package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
  116. package/dist/analytics/personalGlossaryDecision.js +203 -0
  117. package/dist/analytics/personalGlossaryExplicit.js +788 -0
  118. package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
  119. package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
  120. package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
  121. package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
  122. package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
  123. package/dist/analytics/personalGlossaryProfile.js +229 -0
  124. package/dist/analytics/personalGlossaryRecurrence.js +618 -0
  125. package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
  126. package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
  127. package/dist/analytics/profileSignals.js +211 -0
  128. package/dist/analytics/usageStats.js +150 -23
  129. package/dist/audit/terminologyDrift.js +281 -0
  130. package/dist/bin/agentera.js +3 -2
  131. package/dist/capabilities/audit/instructions.js +16 -6
  132. package/dist/capabilities/build/instructions.js +59 -6
  133. package/dist/capabilities/design/instructions.js +3 -4
  134. package/dist/capabilities/discuss/instructions.js +29 -6
  135. package/dist/capabilities/document/instructions.js +11 -6
  136. package/dist/capabilities/index.js +20 -14
  137. package/dist/capabilities/optimize/instructions.js +14 -6
  138. package/dist/capabilities/orchestrate/instructions.js +42 -6
  139. package/dist/capabilities/plan/instructions.js +30 -3
  140. package/dist/capabilities/profile/instructions.js +104 -5
  141. package/dist/capabilities/research/instructions.js +4 -5
  142. package/dist/capabilities/status/instructions.js +15 -6
  143. package/dist/capabilities/status/startupInstructions.js +34 -0
  144. package/dist/capabilities/vision/instructions.js +3 -5
  145. package/dist/cli/appContext.js +14 -7
  146. package/dist/cli/argvalidate.js +0 -1
  147. package/dist/cli/capabilityContext/benchmark.js +5 -4
  148. package/dist/cli/capabilityContext/bespoke.js +14 -6
  149. package/dist/cli/capabilityContext/build.js +116 -42
  150. package/dist/cli/capabilityContext/closeout.js +30 -27
  151. package/dist/cli/capabilityContext/contract.js +18 -27
  152. package/dist/cli/capabilityContext/evidence.js +84 -77
  153. package/dist/cli/capabilityContext/index.js +0 -1
  154. package/dist/cli/capabilityContext/orchestration.js +42 -18
  155. package/dist/cli/capabilityContext/planState.js +89 -96
  156. package/dist/cli/capabilityContext/progress.js +51 -12
  157. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  158. package/dist/cli/capabilityContext/shared.js +9 -20
  159. package/dist/cli/capabilityContext/slim.js +52 -8
  160. package/dist/cli/capabilityContext/startup.js +51 -114
  161. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  162. package/dist/cli/capabilityContext/types.js +26 -10
  163. package/dist/cli/capabilityContext.js +0 -1
  164. package/dist/cli/commands/appHome.js +0 -1
  165. package/dist/cli/commands/capability.js +2 -2
  166. package/dist/cli/commands/compact.js +163 -13
  167. package/dist/cli/commands/doctor.js +117 -11
  168. package/dist/cli/commands/durability.js +81 -0
  169. package/dist/cli/commands/glossaryAdvice.js +138 -0
  170. package/dist/cli/commands/lint.js +22 -8
  171. package/dist/cli/commands/personalGlossaryCandidateReads.js +744 -0
  172. package/dist/cli/commands/personalGlossaryDecision.js +349 -0
  173. package/dist/cli/commands/personalGlossaryPublish.js +484 -0
  174. package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
  175. package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
  176. package/dist/cli/commands/prime/briefOrientation.js +845 -0
  177. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  178. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  179. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  180. package/dist/cli/commands/prime/collectOrientationState.js +126 -63
  181. package/dist/cli/commands/prime/orientationOutput.js +267 -56
  182. package/dist/cli/commands/prime/types.js +0 -1
  183. package/dist/cli/commands/prime/v1Migration.js +0 -1
  184. package/dist/cli/commands/prime.js +76 -11
  185. package/dist/cli/commands/profileGrounding.js +55 -0
  186. package/dist/cli/commands/query.js +74 -52
  187. package/dist/cli/commands/report.js +91 -21
  188. package/dist/cli/commands/route.js +142 -0
  189. package/dist/cli/commands/schema.js +436 -138
  190. package/dist/cli/commands/state/decisions.js +40 -56
  191. package/dist/cli/commands/state/docs.js +58 -85
  192. package/dist/cli/commands/state/experimentRecords.js +151 -0
  193. package/dist/cli/commands/state/experiments.js +11 -65
  194. package/dist/cli/commands/state/get.js +129 -0
  195. package/dist/cli/commands/state/health.js +11 -113
  196. package/dist/cli/commands/state/index.js +6 -41
  197. package/dist/cli/commands/state/list.js +194 -0
  198. package/dist/cli/commands/state/objective.js +21 -65
  199. package/dist/cli/commands/state/plan.js +11 -170
  200. package/dist/cli/commands/state/planTasks.js +154 -0
  201. package/dist/cli/commands/state/plans.js +154 -0
  202. package/dist/cli/commands/state/progress.js +11 -45
  203. package/dist/cli/commands/state/shared.js +0 -1
  204. package/dist/cli/commands/state/todo.js +28 -107
  205. package/dist/cli/commands/state/write.js +433 -0
  206. package/dist/cli/commands/upgrade.js +146 -5
  207. package/dist/cli/commands/upgradeVerify.js +118 -0
  208. package/dist/cli/commands/validate.js +235 -136
  209. package/dist/cli/commands/verify.js +73 -16
  210. package/dist/cli/contracts/bundleStatus.js +0 -1
  211. package/dist/cli/contracts/orientationState.js +0 -1
  212. package/dist/cli/dispatch/argvParser.js +0 -1
  213. package/dist/cli/dispatch/check.js +84 -40
  214. package/dist/cli/dispatch/commands.js +3 -3
  215. package/dist/cli/dispatch/index.js +77 -52
  216. package/dist/cli/dispatch/lifecycle.js +162 -62
  217. package/dist/cli/dispatch/prime.js +37 -2
  218. package/dist/cli/dispatch/projections.js +17 -0
  219. package/dist/cli/dispatch/shared.js +1 -2
  220. package/dist/cli/dispatch/state.js +62 -66
  221. package/dist/cli/dispatch.js +0 -1
  222. package/dist/cli/errors.js +16 -17
  223. package/dist/cli/help.js +404 -39
  224. package/dist/cli/migrationRequired.js +125 -0
  225. package/dist/cli/orientation/attention.js +19 -19
  226. package/dist/cli/orientation/corpusCoverage.js +32 -1
  227. package/dist/cli/orientation.js +346 -129
  228. package/dist/cli/planArtifacts.js +350 -0
  229. package/dist/cli/planEvidence.js +157 -0
  230. package/dist/cli/planLifecycleState.js +36 -0
  231. package/dist/cli/planTaskIndex.js +11 -0
  232. package/dist/cli/preCutoverCommand.js +32 -0
  233. package/dist/cli/prime-blob.js +71 -3
  234. package/dist/cli/profileAcquisition.js +167 -0
  235. package/dist/cli/startupCompletenessContract.js +11 -8
  236. package/dist/cli/stateQuery.js +47 -12
  237. package/dist/cli/structured.js +0 -1
  238. package/dist/cli/todoMarkdown.js +25 -12
  239. package/dist/cli/todoReadinessSelection.js +192 -0
  240. package/dist/cli/todoSeverity.js +0 -1
  241. package/dist/core/atomicWriter.js +23 -0
  242. package/dist/core/developmentChannel.js +1 -0
  243. package/dist/core/developmentInvocation.js +377 -0
  244. package/dist/core/difflib.js +0 -1
  245. package/dist/core/envPaths.js +0 -1
  246. package/dist/core/jsonValue.js +0 -1
  247. package/dist/core/paths.js +0 -1
  248. package/dist/core/pyjson.js +0 -1
  249. package/dist/core/shell.js +4 -0
  250. package/dist/core/skillIdentity.js +23 -0
  251. package/dist/core/sourceRoot.js +9 -12
  252. package/dist/core/text.js +10 -0
  253. package/dist/core/toml.js +0 -1
  254. package/dist/core/yaml.js +61 -2
  255. package/dist/eval/evalSkills.js +13 -14
  256. package/dist/eval/glossaryEvaluation.js +751 -0
  257. package/dist/eval/glossaryEvaluationProcess.js +29 -0
  258. package/dist/eval/glossaryEvaluationRunner.js +571 -0
  259. package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
  260. package/dist/eval/hybridRouteEvaluation.js +155 -0
  261. package/dist/eval/semanticEval.js +0 -1
  262. package/dist/eval/semanticFixtures.js +0 -1
  263. package/dist/hooks/common.js +3 -56
  264. package/dist/hooks/compaction/apply.js +224 -47
  265. package/dist/hooks/compaction/dryRun.js +2 -1
  266. package/dist/hooks/compaction/index.js +5 -6
  267. package/dist/hooks/compaction/parse.js +73 -6
  268. package/dist/hooks/compaction/retention.js +28 -25
  269. package/dist/hooks/compaction/status.js +145 -26
  270. package/dist/hooks/compaction/types.js +0 -1
  271. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  272. package/dist/hooks/validateArtifact/index.js +6 -65
  273. package/dist/hooks/validateArtifact/markdown.js +9 -10
  274. package/dist/hooks/validateArtifact/schema.js +96 -9
  275. package/dist/hooks/validateArtifact/traversal.js +12 -11
  276. package/dist/hooks/validateArtifact/violations.js +5 -3
  277. package/dist/migrate/v2HandoffManifest.js +8 -3
  278. package/dist/registries/activationContract.js +2 -0
  279. package/dist/registries/activationTuples.js +136 -0
  280. package/dist/registries/artifactProtocolIds.js +2 -1
  281. package/dist/registries/artifactRegistry.js +207 -60
  282. package/dist/registries/artifactSchemaProjection.js +45 -0
  283. package/dist/registries/capabilityContract.js +5 -21
  284. package/dist/registries/evaluatorHandoffContract.js +0 -1
  285. package/dist/registries/evidenceTierContract.js +375 -0
  286. package/dist/registries/explicitSegmentGrammarContract.js +619 -0
  287. package/dist/registries/glossaryAdviceContract.js +79 -0
  288. package/dist/registries/glossaryCandidateContractPaths.js +6 -0
  289. package/dist/registries/glossaryCandidateContracts.js +820 -0
  290. package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
  291. package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
  292. package/dist/registries/glossaryCandidateProjectionAuthority.js +197 -0
  293. package/dist/registries/glossaryCandidateProjectionContract.js +104 -0
  294. package/dist/registries/glossaryCaveatContract.js +67 -0
  295. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  296. package/dist/registries/glossaryEntryContract.js +759 -0
  297. package/dist/registries/glossaryEntryTemporal.js +12 -0
  298. package/dist/registries/glossaryMiningAuthority.js +764 -0
  299. package/dist/registries/glossaryProfileFullContract.js +24 -0
  300. package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
  301. package/dist/registries/glossaryReviewRecordsContract.js +129 -0
  302. package/dist/registries/glossaryTermIdentity.js +139 -0
  303. package/dist/registries/glossaryTermOccurrence.js +20 -0
  304. package/dist/registries/hybridRoute.js +274 -0
  305. package/dist/registries/hybridRouteReceipt.js +221 -0
  306. package/dist/registries/packagePublication.js +273 -0
  307. package/dist/registries/packageRegistry.js +184 -209
  308. package/dist/registries/personalGlossaryContracts.js +1 -0
  309. package/dist/registries/todoReadinessContract.js +448 -0
  310. package/dist/registries/triggerLoader.js +7 -44
  311. package/dist/registries/verbosityBudgetContract.js +205 -0
  312. package/dist/release/releaseMetadata.js +167 -10
  313. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  314. package/dist/runtime/lifecycleAdapters.js +777 -0
  315. package/dist/runtime/lifecycleAuthority.js +453 -0
  316. package/dist/runtime/lifecycleOperationContract.js +123 -0
  317. package/dist/runtime/lifecycleOperations.js +634 -0
  318. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  319. package/dist/runtime/lifecyclePublication.js +415 -0
  320. package/dist/runtime/lifecycleSnapshot.js +438 -0
  321. package/dist/runtime/nativeResourceCleanup.js +502 -0
  322. package/dist/setup/opencode.js +20 -13
  323. package/dist/setup/opencodeConstants.js +1 -0
  324. package/dist/setup/sharedSkill.js +45 -0
  325. package/dist/setup/smokeChecks.js +14 -75
  326. package/dist/state/archiveDiscovery.js +580 -0
  327. package/dist/state/archivePublication.js +225 -0
  328. package/dist/state/archiveRecovery.js +237 -0
  329. package/dist/state/archiveReplay.js +53 -0
  330. package/dist/state/canonicalMigrationRecord.js +36 -0
  331. package/dist/state/changelog.js +221 -0
  332. package/dist/state/decisionEntities.js +367 -0
  333. package/dist/state/decisionLegacyValidation.js +215 -0
  334. package/dist/state/decisionMigrationProvenance.js +199 -0
  335. package/dist/state/decisionOverlay.js +254 -0
  336. package/dist/state/decisionRevision.js +256 -0
  337. package/dist/state/decisionRevisionMigration.js +89 -0
  338. package/dist/state/directRetrieval.js +323 -0
  339. package/dist/state/durability.js +324 -0
  340. package/dist/state/entityCutover.js +459 -0
  341. package/dist/state/entityCutoverGit.js +127 -0
  342. package/dist/state/entityGlossaryAuthority.js +13 -0
  343. package/dist/state/entityListProjection.js +187 -0
  344. package/dist/state/entityListRuntimeRegistry.js +85 -0
  345. package/dist/state/entityMigrationCausality.js +97 -0
  346. package/dist/state/entityMigrationIdentity.js +5 -0
  347. package/dist/state/entityMigrationPreview.js +840 -0
  348. package/dist/state/entityMigrationTodo.js +133 -0
  349. package/dist/state/entityPublicationContext.js +859 -0
  350. package/dist/state/entityRetrievalHelp.js +506 -0
  351. package/dist/state/entityStorage.js +899 -0
  352. package/dist/state/exactReplacementRecovery.js +18 -0
  353. package/dist/state/experimentArchive.js +63 -0
  354. package/dist/state/experimentIdentity.js +202 -0
  355. package/dist/state/healthEntities.js +262 -0
  356. package/dist/state/healthEntityValidation.js +18 -0
  357. package/dist/state/healthRepair.js +69 -0
  358. package/dist/state/installRoot.js +15 -7
  359. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  360. package/dist/state/legacyIdentity.js +47 -0
  361. package/dist/state/legacySummaryRecord.js +6 -0
  362. package/dist/state/listAccounting.js +54 -0
  363. package/dist/state/listClassification.js +17 -0
  364. package/dist/state/listCursor.js +42 -0
  365. package/dist/state/listRetrieval.js +781 -0
  366. package/dist/state/migrationSourceBinding.js +30 -0
  367. package/dist/state/objectiveExperimentEntities.js +322 -0
  368. package/dist/state/planEntities.js +1027 -0
  369. package/dist/state/planIdentity.js +47 -0
  370. package/dist/state/planLineageValidation.js +52 -0
  371. package/dist/state/planReplacementTransaction.js +475 -0
  372. package/dist/state/planRetrieval.js +313 -0
  373. package/dist/state/planTaskRetrieval.js +294 -0
  374. package/dist/state/progressEntities.js +512 -0
  375. package/dist/state/progressGlossaryCaveat.js +168 -0
  376. package/dist/state/progressPublicationOrder.js +19 -0
  377. package/dist/state/progressWritePolicy.js +33 -0
  378. package/dist/state/projectRoot.js +62 -0
  379. package/dist/state/projectionPolicy.js +190 -0
  380. package/dist/state/retrievalAuthority.js +156 -0
  381. package/dist/state/safeProjectFile.js +155 -0
  382. package/dist/state/startupAnalysis/benchmark.js +70 -9
  383. package/dist/state/startupAnalysis/contract.js +44 -10
  384. package/dist/state/startupAnalysis/helpers.js +1 -2
  385. package/dist/state/startupAnalysis/index.js +0 -1
  386. package/dist/state/startupAnalysis/metrics.js +0 -1
  387. package/dist/state/startupAnalysis/records.js +0 -1
  388. package/dist/state/startupAnalysis/report.js +0 -1
  389. package/dist/state/startupAnalysis/threshold.js +13 -1
  390. package/dist/state/startupAnalysis.js +0 -1
  391. package/dist/state/startupProjection.js +499 -0
  392. package/dist/state/stateMode.js +222 -0
  393. package/dist/state/stateStorageAuthority.js +47 -0
  394. package/dist/state/summaryEntityRead.js +25 -0
  395. package/dist/state/summaryMigrationProvenance.js +66 -0
  396. package/dist/state/summarySourceRowAuthority.js +36 -0
  397. package/dist/state/todoActivationSafety.js +58 -0
  398. package/dist/state/todoDocsEntities.js +1124 -0
  399. package/dist/state/todoDocsEntityValidation.js +158 -0
  400. package/dist/state/todoMarkdownProjection.js +51 -0
  401. package/dist/state/todoReconciliationActivation.js +182 -0
  402. package/dist/state/todoReconciliationInspection.js +171 -0
  403. package/dist/state/todoReconciliationRepair.js +318 -0
  404. package/dist/state/todoReconciliationTransaction.js +595 -0
  405. package/dist/state/write/assign.js +20 -0
  406. package/dist/state/write/candidateMutation.js +269 -0
  407. package/dist/state/write/errors.js +11 -0
  408. package/dist/state/write/experimentPublication.js +192 -0
  409. package/dist/state/write/explain.js +377 -0
  410. package/dist/state/write/fields.js +61 -0
  411. package/dist/state/write/glossaryPublication.js +263 -0
  412. package/dist/state/write/grammar.js +285 -0
  413. package/dist/state/write/helpers.js +29 -0
  414. package/dist/state/write/index.js +12 -0
  415. package/dist/state/write/input.js +391 -0
  416. package/dist/state/write/lock.js +837 -0
  417. package/dist/state/write/mutation.js +234 -0
  418. package/dist/state/write/operations.js +170 -0
  419. package/dist/state/write/planEvaluation.js +128 -0
  420. package/dist/state/write/planPublication.js +179 -0
  421. package/dist/state/write/runtimeOperations.js +146 -0
  422. package/dist/state/write/serialize.js +1 -0
  423. package/dist/state/write/transaction.js +57 -0
  424. package/dist/state/write/validate.js +7 -0
  425. package/dist/upgrade/appContentRefresh.js +77 -36
  426. package/dist/upgrade/appModel.js +0 -1
  427. package/dist/upgrade/atomicWriter.js +1 -0
  428. package/dist/upgrade/bundleEvidence.js +0 -1
  429. package/dist/upgrade/channels.js +6 -9
  430. package/dist/upgrade/compatibility.js +43 -17
  431. package/dist/upgrade/doctor.js +55 -32
  432. package/dist/upgrade/doctorClassifier.js +11 -1
  433. package/dist/upgrade/installedHooksRetirement.js +46 -40
  434. package/dist/upgrade/legacyAgentCleanup.js +187 -21
  435. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  436. package/dist/upgrade/migrateArtifactsV2ToV3.js +334 -64
  437. package/dist/upgrade/migrationPublication.js +122 -0
  438. package/dist/upgrade/nextMajorDoctor.js +0 -1
  439. package/dist/upgrade/npxPlatformStatus.js +2 -2
  440. package/dist/upgrade/projectIntegration.js +128 -160
  441. package/dist/upgrade/projectIntegrationDecision.js +42 -85
  442. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  443. package/dist/upgrade/runtimeMigration.js +262 -453
  444. package/dist/upgrade/upgradeCommands.js +14 -1
  445. package/dist/upgrade/upgradeLock.js +85 -0
  446. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  447. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  448. package/dist/upgrade/versionResolution.js +0 -1
  449. package/dist/validate/activationArtifactEvidence.js +866 -0
  450. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  451. package/dist/validate/activationConjunction.js +816 -0
  452. package/dist/validate/activationEvidenceManifest.js +610 -0
  453. package/dist/validate/activationPackageSemantics.js +29 -0
  454. package/dist/validate/appHomeContract.js +1 -7
  455. package/dist/validate/bootstrapAuthority.js +44 -0
  456. package/dist/validate/capability.js +11 -3
  457. package/dist/validate/crossCapability.js +14 -9
  458. package/dist/validate/retainedReferenceAuthority.js +879 -0
  459. package/dist/validate/selfAudit.js +39 -45
  460. package/dist/validate/v1LegacyCruft.js +131 -0
  461. package/dist/validate/vocabularyAuthority.js +8 -8
  462. package/package.json +39 -13
  463. package/bundle/references/adapters/cursor.md +0 -214
  464. package/bundle/references/adapters/opencode.md +0 -530
  465. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  466. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  467. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  468. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  469. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  470. package/bundle/references/analysis/benchmark.md +0 -267
  471. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  472. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  473. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  474. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  475. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  476. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  477. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  478. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  479. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  480. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  481. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  482. package/bundle/references/meta/documentation-inventory.md +0 -49
  483. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  484. package/bundle/skills/agentera/agents/audit.toml +0 -6
  485. package/bundle/skills/agentera/agents/build.toml +0 -6
  486. package/bundle/skills/agentera/agents/design.toml +0 -6
  487. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  488. package/bundle/skills/agentera/agents/document.toml +0 -6
  489. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  490. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  491. package/bundle/skills/agentera/agents/plan.toml +0 -6
  492. package/bundle/skills/agentera/agents/profile.toml +0 -6
  493. package/bundle/skills/agentera/agents/research.toml +0 -6
  494. package/bundle/skills/agentera/agents/status.toml +0 -6
  495. package/bundle/skills/agentera/agents/vision.toml +0 -6
  496. package/bundle/skills/agentera/references/contract.md +0 -1048
  497. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  498. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  499. package/dist/analytics/extractCorpus/core.js.map +0 -1
  500. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  501. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  502. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  503. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  504. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  505. package/dist/analytics/extractCorpus/index.js.map +0 -1
  506. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  507. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  508. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  509. package/dist/analytics/extractCorpus.js.map +0 -1
  510. package/dist/analytics/usageStats.js.map +0 -1
  511. package/dist/bin/agentera.js.map +0 -1
  512. package/dist/capabilities/audit/instructions.js.map +0 -1
  513. package/dist/capabilities/build/instructions.js.map +0 -1
  514. package/dist/capabilities/design/instructions.js.map +0 -1
  515. package/dist/capabilities/discuss/instructions.js.map +0 -1
  516. package/dist/capabilities/document/instructions.js.map +0 -1
  517. package/dist/capabilities/dokumentera/instructions.js +0 -6
  518. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  519. package/dist/capabilities/hej/instructions.js +0 -6
  520. package/dist/capabilities/hej/instructions.js.map +0 -1
  521. package/dist/capabilities/index.js.map +0 -1
  522. package/dist/capabilities/inspektera/instructions.js +0 -6
  523. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  524. package/dist/capabilities/inspirera/instructions.js +0 -6
  525. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  526. package/dist/capabilities/optimera/instructions.js +0 -6
  527. package/dist/capabilities/optimera/instructions.js.map +0 -1
  528. package/dist/capabilities/optimize/instructions.js.map +0 -1
  529. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  530. package/dist/capabilities/orkestrera/instructions.js +0 -6
  531. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  532. package/dist/capabilities/plan/instructions.js.map +0 -1
  533. package/dist/capabilities/planera/instructions.js +0 -6
  534. package/dist/capabilities/planera/instructions.js.map +0 -1
  535. package/dist/capabilities/profile/instructions.js.map +0 -1
  536. package/dist/capabilities/profilera/instructions.js +0 -6
  537. package/dist/capabilities/profilera/instructions.js.map +0 -1
  538. package/dist/capabilities/realisera/instructions.js +0 -6
  539. package/dist/capabilities/realisera/instructions.js.map +0 -1
  540. package/dist/capabilities/research/instructions.js.map +0 -1
  541. package/dist/capabilities/resonera/instructions.js +0 -6
  542. package/dist/capabilities/resonera/instructions.js.map +0 -1
  543. package/dist/capabilities/status/instructions.js.map +0 -1
  544. package/dist/capabilities/vision/instructions.js.map +0 -1
  545. package/dist/capabilities/visionera/instructions.js +0 -6
  546. package/dist/capabilities/visionera/instructions.js.map +0 -1
  547. package/dist/capabilities/visualisera/instructions.js +0 -5
  548. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  549. package/dist/cli/appContext.js.map +0 -1
  550. package/dist/cli/argvalidate.js.map +0 -1
  551. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  552. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  553. package/dist/cli/capabilityContext/build.js.map +0 -1
  554. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  555. package/dist/cli/capabilityContext/contract.js.map +0 -1
  556. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  557. package/dist/cli/capabilityContext/index.js.map +0 -1
  558. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  559. package/dist/cli/capabilityContext/planState.js.map +0 -1
  560. package/dist/cli/capabilityContext/progress.js.map +0 -1
  561. package/dist/cli/capabilityContext/realisera.js +0 -174
  562. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  563. package/dist/cli/capabilityContext/shared.js.map +0 -1
  564. package/dist/cli/capabilityContext/slim.js.map +0 -1
  565. package/dist/cli/capabilityContext/startup.js.map +0 -1
  566. package/dist/cli/capabilityContext/types.js.map +0 -1
  567. package/dist/cli/capabilityContext.js.map +0 -1
  568. package/dist/cli/commands/appHome.js.map +0 -1
  569. package/dist/cli/commands/backfill.js +0 -84
  570. package/dist/cli/commands/backfill.js.map +0 -1
  571. package/dist/cli/commands/capability.js.map +0 -1
  572. package/dist/cli/commands/compact.js.map +0 -1
  573. package/dist/cli/commands/doctor.js.map +0 -1
  574. package/dist/cli/commands/lint.js.map +0 -1
  575. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  576. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  577. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  578. package/dist/cli/commands/prime/routeOutput.js +0 -50
  579. package/dist/cli/commands/prime/routeOutput.js.map +0 -1
  580. package/dist/cli/commands/prime/types.js.map +0 -1
  581. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  582. package/dist/cli/commands/prime.js.map +0 -1
  583. package/dist/cli/commands/query.js.map +0 -1
  584. package/dist/cli/commands/report.js.map +0 -1
  585. package/dist/cli/commands/schema.js.map +0 -1
  586. package/dist/cli/commands/state/decisions.js.map +0 -1
  587. package/dist/cli/commands/state/docs.js.map +0 -1
  588. package/dist/cli/commands/state/experiments.js.map +0 -1
  589. package/dist/cli/commands/state/health.js.map +0 -1
  590. package/dist/cli/commands/state/index.js.map +0 -1
  591. package/dist/cli/commands/state/objective.js.map +0 -1
  592. package/dist/cli/commands/state/plan.js.map +0 -1
  593. package/dist/cli/commands/state/progress.js.map +0 -1
  594. package/dist/cli/commands/state/shared.js.map +0 -1
  595. package/dist/cli/commands/state/todo.js.map +0 -1
  596. package/dist/cli/commands/state.js +0 -1023
  597. package/dist/cli/commands/state.js.map +0 -1
  598. package/dist/cli/commands/upgrade.js.map +0 -1
  599. package/dist/cli/commands/validate.js.map +0 -1
  600. package/dist/cli/commands/verify.js.map +0 -1
  601. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  602. package/dist/cli/contracts/orientationState.js.map +0 -1
  603. package/dist/cli/dispatch/argvParser.js.map +0 -1
  604. package/dist/cli/dispatch/check.js.map +0 -1
  605. package/dist/cli/dispatch/commands.js.map +0 -1
  606. package/dist/cli/dispatch/index.js.map +0 -1
  607. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  608. package/dist/cli/dispatch/prime.js.map +0 -1
  609. package/dist/cli/dispatch/shared.js.map +0 -1
  610. package/dist/cli/dispatch/state.js.map +0 -1
  611. package/dist/cli/dispatch.js.map +0 -1
  612. package/dist/cli/errors.js.map +0 -1
  613. package/dist/cli/help.js.map +0 -1
  614. package/dist/cli/orientation/attention.js.map +0 -1
  615. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  616. package/dist/cli/orientation.js.map +0 -1
  617. package/dist/cli/prime-blob.js.map +0 -1
  618. package/dist/cli/startupCompletenessContract.js.map +0 -1
  619. package/dist/cli/stateQuery.js.map +0 -1
  620. package/dist/cli/structured.js.map +0 -1
  621. package/dist/cli/todoMarkdown.js.map +0 -1
  622. package/dist/cli/todoSeverity.js.map +0 -1
  623. package/dist/core/difflib.js.map +0 -1
  624. package/dist/core/envPaths.js.map +0 -1
  625. package/dist/core/git.js +0 -43
  626. package/dist/core/git.js.map +0 -1
  627. package/dist/core/jsonValue.js.map +0 -1
  628. package/dist/core/paths.js.map +0 -1
  629. package/dist/core/pyjson.js.map +0 -1
  630. package/dist/core/sourceRoot.js.map +0 -1
  631. package/dist/core/toml.js.map +0 -1
  632. package/dist/core/yaml.js.map +0 -1
  633. package/dist/eval/evalSkills.js.map +0 -1
  634. package/dist/eval/semanticEval.js.map +0 -1
  635. package/dist/eval/semanticFixtures.js.map +0 -1
  636. package/dist/hooks/common.js.map +0 -1
  637. package/dist/hooks/compaction/apply.js.map +0 -1
  638. package/dist/hooks/compaction/dryRun.js.map +0 -1
  639. package/dist/hooks/compaction/index.js.map +0 -1
  640. package/dist/hooks/compaction/parse.js.map +0 -1
  641. package/dist/hooks/compaction/retention.js.map +0 -1
  642. package/dist/hooks/compaction/status.js.map +0 -1
  643. package/dist/hooks/compaction/todoResolved.js +0 -137
  644. package/dist/hooks/compaction/todoResolved.js.map +0 -1
  645. package/dist/hooks/compaction/types.js.map +0 -1
  646. package/dist/hooks/compaction.js +0 -935
  647. package/dist/hooks/compaction.js.map +0 -1
  648. package/dist/hooks/cursorPreToolUse.js +0 -19
  649. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  650. package/dist/hooks/cursorSessionStart.js +0 -79
  651. package/dist/hooks/cursorSessionStart.js.map +0 -1
  652. package/dist/hooks/sessionStart.js +0 -216
  653. package/dist/hooks/sessionStart.js.map +0 -1
  654. package/dist/hooks/sessionStop.js +0 -206
  655. package/dist/hooks/sessionStop.js.map +0 -1
  656. package/dist/hooks/todoLayout.js +0 -177
  657. package/dist/hooks/todoLayout.js.map +0 -1
  658. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  659. package/dist/hooks/validateArtifact/index.js.map +0 -1
  660. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  661. package/dist/hooks/validateArtifact/runtime.js +0 -86
  662. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  663. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  664. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  665. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  666. package/dist/hooks/validateArtifact.js +0 -924
  667. package/dist/hooks/validateArtifact.js.map +0 -1
  668. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  669. package/dist/registries/artifactProtocolIds.js.map +0 -1
  670. package/dist/registries/artifactRegistry.js.map +0 -1
  671. package/dist/registries/capabilityContract.js.map +0 -1
  672. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  673. package/dist/registries/packageRegistry.js.map +0 -1
  674. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  675. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  676. package/dist/registries/triggerLoader.js.map +0 -1
  677. package/dist/release/releaseMetadata.js.map +0 -1
  678. package/dist/routing/index.js +0 -2
  679. package/dist/routing/index.js.map +0 -1
  680. package/dist/routing/routeEngine.js +0 -189
  681. package/dist/routing/routeEngine.js.map +0 -1
  682. package/dist/setup/codex/agents.js +0 -96
  683. package/dist/setup/codex/agents.js.map +0 -1
  684. package/dist/setup/codex/cli.js +0 -161
  685. package/dist/setup/codex/cli.js.map +0 -1
  686. package/dist/setup/codex/configToml.js +0 -639
  687. package/dist/setup/codex/configToml.js.map +0 -1
  688. package/dist/setup/codex/constants.js +0 -29
  689. package/dist/setup/codex/constants.js.map +0 -1
  690. package/dist/setup/codex/installRoot.js +0 -64
  691. package/dist/setup/codex/installRoot.js.map +0 -1
  692. package/dist/setup/codex/state.js +0 -270
  693. package/dist/setup/codex/state.js.map +0 -1
  694. package/dist/setup/codex.js +0 -12
  695. package/dist/setup/codex.js.map +0 -1
  696. package/dist/setup/copilot.js +0 -227
  697. package/dist/setup/copilot.js.map +0 -1
  698. package/dist/setup/cursor.js +0 -129
  699. package/dist/setup/cursor.js.map +0 -1
  700. package/dist/setup/cursorSurfaces.js +0 -67
  701. package/dist/setup/cursorSurfaces.js.map +0 -1
  702. package/dist/setup/doctor/core.js +0 -300
  703. package/dist/setup/doctor/core.js.map +0 -1
  704. package/dist/setup/doctor/diagnostics.js +0 -240
  705. package/dist/setup/doctor/diagnostics.js.map +0 -1
  706. package/dist/setup/doctor/opencode.js +0 -313
  707. package/dist/setup/doctor/opencode.js.map +0 -1
  708. package/dist/setup/doctor/report.js +0 -425
  709. package/dist/setup/doctor/report.js.map +0 -1
  710. package/dist/setup/doctor.js +0 -10
  711. package/dist/setup/doctor.js.map +0 -1
  712. package/dist/setup/opencode.js.map +0 -1
  713. package/dist/setup/smokeChecks.js.map +0 -1
  714. package/dist/state/installRoot.js.map +0 -1
  715. package/dist/state/progressCommit.js +0 -289
  716. package/dist/state/progressCommit.js.map +0 -1
  717. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  718. package/dist/state/startupAnalysis/contract.js.map +0 -1
  719. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  720. package/dist/state/startupAnalysis/index.js.map +0 -1
  721. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  722. package/dist/state/startupAnalysis/records.js.map +0 -1
  723. package/dist/state/startupAnalysis/report.js.map +0 -1
  724. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  725. package/dist/state/startupAnalysis.js.map +0 -1
  726. package/dist/upgrade/appContentRefresh.js.map +0 -1
  727. package/dist/upgrade/appModel.js.map +0 -1
  728. package/dist/upgrade/bundleEvidence.js.map +0 -1
  729. package/dist/upgrade/channels.js.map +0 -1
  730. package/dist/upgrade/cliProbe.js +0 -22
  731. package/dist/upgrade/cliProbe.js.map +0 -1
  732. package/dist/upgrade/coexistenceProbe.js +0 -107
  733. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  734. package/dist/upgrade/compatibility.js.map +0 -1
  735. package/dist/upgrade/doctor.js.map +0 -1
  736. package/dist/upgrade/doctorClassifier.js.map +0 -1
  737. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  738. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  739. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  740. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  741. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  742. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  743. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  744. package/dist/upgrade/projectIntegration.js.map +0 -1
  745. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  746. package/dist/upgrade/runtimeMigration.js.map +0 -1
  747. package/dist/upgrade/upgradeCommands.js.map +0 -1
  748. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  749. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  750. package/dist/upgrade/versionResolution.js.map +0 -1
  751. package/dist/validate/appHomeContract.js.map +0 -1
  752. package/dist/validate/capability.js.map +0 -1
  753. package/dist/validate/crossCapability.js.map +0 -1
  754. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  755. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  756. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  757. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  758. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  759. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  760. package/dist/validate/lifecycleAdapters.js +0 -62
  761. package/dist/validate/lifecycleAdapters.js.map +0 -1
  762. package/dist/validate/selfAudit.js.map +0 -1
  763. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -0,0 +1,845 @@
1
+ import { truncateCodePoints } from "../../../core/text.js";
2
+ import { entityListFamily } from "../../../state/entityRetrievalHelp.js";
3
+ import { preCutoverCommand } from "../../preCutoverCommand.js";
4
+ import { STATE_FAMILY_FALLBACK_COMMANDS } from "../../capabilityContext/types.js";
5
+ /**
6
+ * Bounded default decision brief for the bare `agentera prime --format json`
7
+ * emission (Plan Task 3).
8
+ *
9
+ * The bare default projects the full orientation payload
10
+ * ({@link buildOrientationJsonPayload}) to a bounded decision brief: every
11
+ * required top-level field stays PRESENT (the compatibility boundary asserts
12
+ * the key set), but rich diagnostic/writer detail within those fields is
13
+ * projected to routing-essential leaves plus a named authoritative recovery
14
+ * command for each omitted sub-detail. Dashboard startup independently omits
15
+ * duplicated ordinary history entries; explicit fields and capability contexts
16
+ * retain their separately governed projections.
17
+ *
18
+ * The byte gate is deterministic pretty-JSON UTF-8 measurement
19
+ * (Buffer.byteLength(JSON.stringify(brief, null, 2) + "\n", "utf8")); an
20
+ * over-budget brief is rejected in favor of a bounded degraded envelope.
21
+ * Diagnostics stay on stderr and are measured separately. The state-storage
22
+ * authority owns the briefing budget.
23
+ */
24
+ /** Authoritative byte budget for the default bare prime decision brief.
25
+ * Mirrors references/artifacts/state-storage-authority.yaml
26
+ * budgets.startup.surfaces.prime_briefing.max_utf8_bytes and
27
+ * scripts/json_output_surface_manifest.yaml prime-briefing byte_budget.
28
+ * archiveAuthority.test.ts binds the authority to the manifest; the
29
+ * primeProjectionContract.test.ts suite binds this constant to the authority
30
+ * so the contract and implementation cannot drift apart. */
31
+ export const PRIME_BRIEF_MAX_UTF8_BYTES = 12000;
32
+ /** Deterministic pretty-JSON UTF-8 byte length (including the trailing newline)
33
+ * used by the brief byte gate. Identical to the projection-policy serializer
34
+ * (serializedProjectionBytes) so measurement is consistent across surfaces. */
35
+ export function briefUtf8Bytes(value) {
36
+ const serialized = JSON.stringify(value, null, 2);
37
+ if (serialized === undefined)
38
+ throw new TypeError("brief value is not JSON serializable");
39
+ return Buffer.byteLength(serialized + "\n", "utf8");
40
+ }
41
+ /** Byte-gate primitive: deterministic UTF-8 measurement + budget comparison.
42
+ * AC5: a passing fixture (bytes <= budget) is accepted; an over-budget fixture
43
+ * (bytes > budget) is rejected. */
44
+ export function briefByteGate(value, budget = PRIME_BRIEF_MAX_UTF8_BYTES) {
45
+ const bytes = briefUtf8Bytes(value);
46
+ return { accepted: bytes <= budget, bytes };
47
+ }
48
+ /** Rich-state sub-detail projected out of the default brief, each with a named
49
+ * authoritative recovery command. */
50
+ const planTaskFamily = entityListFamily("plan_tasks");
51
+ const planTaskListRecovery = preCutoverCommand(`state ${planTaskFamily.commandTokens.join(" ")} list --format json`);
52
+ const OMITTED_RICH_STATE = [
53
+ { field: "startup.path_diagnostics", reason: "startup_path_diagnostics", recovery: preCutoverCommand("doctor --format json") },
54
+ { field: "plan.tasks", reason: "plan_task_detail", recovery: planTaskListRecovery },
55
+ { field: "plan.archived_plans", reason: "archive_catalog", recovery: STATE_FAMILY_FALLBACK_COMMANDS.plan },
56
+ { field: "plan.diagnostics", reason: "plan_diagnostics", recovery: STATE_FAMILY_FALLBACK_COMMANDS.plan },
57
+ { field: "history.progress.entries", reason: "startup_history_entries", recovery: STATE_FAMILY_FALLBACK_COMMANDS.progress },
58
+ { field: "history.decisions.entries", reason: "startup_history_entries", recovery: STATE_FAMILY_FALLBACK_COMMANDS.decisions },
59
+ { field: "history.health.entries", reason: "startup_history_entries", recovery: STATE_FAMILY_FALLBACK_COMMANDS.health },
60
+ { field: "project_integration.phases", reason: "phase_blockers", recovery: preCutoverCommand("doctor --format json") },
61
+ { field: "docs.source_contract", reason: "docs_state_families", recovery: STATE_FAMILY_FALLBACK_COMMANDS.docs },
62
+ { field: "profile.bounded_signals", reason: "profile_signal_detail", recovery: preCutoverCommand("report profile-grounding --format json") },
63
+ ];
64
+ /** Maximum number of ranked next_action alternatives retained in the brief.
65
+ * The recommended entry is always kept; overflow alternatives recover via the
66
+ * state-derived readiness cascade rather than raw artifact access. */
67
+ const BRIEF_NEXT_ACTION_ALTERNATIVES = 3;
68
+ const PATH_DIAGNOSTICS_RECOVERY = preCutoverCommand("doctor --format json");
69
+ /** Code-point cap for routing-essential free-text scalars retained in the brief
70
+ * (e.g. progress.latest.what/next). Matches the boundStartupValue 200-cp
71
+ * limit already applied to context payloads so the brief never lets a single
72
+ * pathological scalar blow the budget; the full value recovers via the named
73
+ * state command. */
74
+ const BRIEF_SCALAR_MAX_CHARS = 200;
75
+ function projectionMaxChars(projection) {
76
+ return projection === "normal" ? BRIEF_SCALAR_MAX_CHARS : projection === "compact" ? 120 : 80;
77
+ }
78
+ function projectionMaxItems(projection) {
79
+ return projection === "normal" ? 10 : projection === "compact" ? 6 : 3;
80
+ }
81
+ /** Keys owned by the state-presence contract. Unknown keys are caller data, not
82
+ * routing signals, so the brief never copies them into a fallback envelope. */
83
+ const STATE_PRESENCE_ACTIVE_KEYS = ["plan", "objective"];
84
+ const STATE_PRESENCE_AVAILABLE_KEYS = ["plan", "docs", "progress", "health", "objective"];
85
+ const STATE_PRESENCE_ABSENCE_KEYS = ["plan", "docs", "progress"];
86
+ const BRIEF_SOURCE_FIELDS_MAX = 64;
87
+ const BRIEF_SOURCE_STRING_MAX_CHARS = 256;
88
+ const BRIEF_COMPACT_SOURCE_FIELDS_MAX = 32;
89
+ const BRIEF_COMPACT_SOURCE_STRING_MAX_CHARS = 96;
90
+ const BRIEF_IRREDUCIBLE_SOURCE_FIELDS_MAX = 32;
91
+ const BRIEF_IRREDUCIBLE_SOURCE_STRING_MAX_CHARS = 64;
92
+ function isObject(value) {
93
+ return value !== null && typeof value === "object" && !Array.isArray(value);
94
+ }
95
+ /** Copy only the listed keys that exist on `source`. Keeps the brief stable when
96
+ * a conditional field is absent (e.g. plan.first_pending on an empty plan). */
97
+ function pick(source, keys) {
98
+ if (!isObject(source))
99
+ return {};
100
+ const out = {};
101
+ for (const key of keys) {
102
+ if (key in source)
103
+ out[key] = source[key];
104
+ }
105
+ return out;
106
+ }
107
+ function boundedString(value, maxChars) {
108
+ return typeof value === "string" ? truncateCodePoints(value, maxChars, "…") : undefined;
109
+ }
110
+ function boundedStringList(value, maxItems, maxChars) {
111
+ if (!Array.isArray(value))
112
+ return undefined;
113
+ return value
114
+ .filter((entry) => typeof entry === "string")
115
+ .slice(0, maxItems)
116
+ .map((entry) => truncateCodePoints(entry, maxChars, "…"));
117
+ }
118
+ function boundedBooleanMap(value, keys) {
119
+ if (!isObject(value))
120
+ return undefined;
121
+ const out = {};
122
+ for (const key of keys) {
123
+ if (typeof value[key] === "boolean")
124
+ out[key] = value[key];
125
+ }
126
+ return out;
127
+ }
128
+ function boundedStringMap(value, keys, maxChars) {
129
+ if (!isObject(value))
130
+ return undefined;
131
+ const out = {};
132
+ for (const key of keys) {
133
+ const bounded = boundedString(value[key], maxChars);
134
+ if (bounded !== undefined)
135
+ out[key] = bounded;
136
+ }
137
+ return out;
138
+ }
139
+ /** Project the presence authority to its finite, contract-owned shape. This is
140
+ * deliberately not a generic object trim: unknown caller keys cannot change
141
+ * routing, and therefore must not be allowed to consume the fallback budget. */
142
+ function briefStatePresence(value, maxChars = BRIEF_SCALAR_MAX_CHARS) {
143
+ if (value === null || value === undefined)
144
+ return value === null ? null : {};
145
+ if (!isObject(value))
146
+ return {};
147
+ const out = {};
148
+ const active = boundedBooleanMap(value.active, STATE_PRESENCE_ACTIVE_KEYS);
149
+ const available = boundedBooleanMap(value.available, STATE_PRESENCE_AVAILABLE_KEYS);
150
+ const absence = boundedStringMap(value.absence, STATE_PRESENCE_ABSENCE_KEYS, maxChars);
151
+ if (active !== undefined)
152
+ out.active = active;
153
+ if (available !== undefined)
154
+ out.available = available;
155
+ if (typeof value.any_active === "boolean")
156
+ out.any_active = value.any_active;
157
+ if (typeof value.absence_explained === "boolean")
158
+ out.absence_explained = value.absence_explained;
159
+ if (absence !== undefined)
160
+ out.absence = absence;
161
+ return out;
162
+ }
163
+ function briefSelectedPlanTask(task, projection) {
164
+ if (task === null)
165
+ return null;
166
+ if (!isObject(task))
167
+ return {};
168
+ const maxChars = projectionMaxChars(projection);
169
+ const maxItems = projectionMaxItems(projection);
170
+ const out = pick(task, [
171
+ "id",
172
+ "artifact",
173
+ "status",
174
+ "dependency_count",
175
+ "omitted_dependency_count",
176
+ "acceptance_count",
177
+ "omitted_acceptance_count",
178
+ ]);
179
+ const name = boundedString(task.name ?? task.title, maxChars);
180
+ if (name !== undefined)
181
+ out.name = name;
182
+ const dependencies = boundedStringList(task.depends_on, maxItems, maxChars);
183
+ if (dependencies !== undefined)
184
+ out.depends_on = dependencies;
185
+ const acceptance = boundedStringList(task.acceptance, maxItems, maxChars);
186
+ if (acceptance !== undefined)
187
+ out.acceptance = acceptance;
188
+ if (isObject(task.retrieval)) {
189
+ out.retrieval = pick(task.retrieval, ["get"]);
190
+ }
191
+ return out;
192
+ }
193
+ function briefPlan(plan, projection = "normal") {
194
+ // Keep canonical plan/task identity and the routing-essential summary consumers
195
+ // read plus the selected task's dependencies, acceptance, and exact retrieval.
196
+ // Drop the optional task catalog, archive catalog, diagnostics, and
197
+ // lifecycle_state — each recovers via OMITTED_RICH_STATE.
198
+ const out = pick(plan, [
199
+ "exists",
200
+ "id",
201
+ "artifact",
202
+ "active",
203
+ "status",
204
+ "complete",
205
+ "total",
206
+ "complete_plan",
207
+ "task_count",
208
+ "omitted_task_count",
209
+ ]);
210
+ if (isObject(plan)) {
211
+ const title = boundedString(plan.title, projectionMaxChars(projection));
212
+ if (title !== undefined)
213
+ out.title = title;
214
+ if (isObject(plan.source_contract)) {
215
+ out.source_contract = pick(plan.source_contract, ["detail_availability", "retrieval", "raw_archive_records"]);
216
+ }
217
+ }
218
+ if (isObject(plan) && "first_pending" in plan) {
219
+ out.first_pending = briefSelectedPlanTask(plan.first_pending, projection);
220
+ }
221
+ return out;
222
+ }
223
+ function briefHistoryRetrieval(value) {
224
+ return pick(value, ["list", "get"]);
225
+ }
226
+ function briefHistoryCaveats(value, maxChars) {
227
+ if (!Array.isArray(value))
228
+ return undefined;
229
+ return value.slice(0, 4).map((caveat) => {
230
+ if (typeof caveat === "string")
231
+ return truncateCodePoints(caveat, maxChars, "…");
232
+ if (!isObject(caveat))
233
+ return {};
234
+ const out = {};
235
+ for (const key of [
236
+ "class",
237
+ "kind",
238
+ "state",
239
+ "confidence",
240
+ "satisfaction_state",
241
+ "message",
242
+ "reason",
243
+ "detail_availability",
244
+ "compatibility",
245
+ "recovery",
246
+ ]) {
247
+ const bounded = boundedString(caveat[key], maxChars);
248
+ if (bounded !== undefined)
249
+ out[key] = bounded;
250
+ }
251
+ if (typeof caveat.review_needed === "boolean")
252
+ out.review_needed = caveat.review_needed;
253
+ return out;
254
+ });
255
+ }
256
+ function briefHistory(history, projection = "normal") {
257
+ if (!isObject(history))
258
+ return {};
259
+ const out = {};
260
+ const maxChars = projectionMaxChars(projection);
261
+ for (const [artifactId, entry] of Object.entries(history)) {
262
+ // Entity startup history owns canonical full/summary counts. Entry detail
263
+ // remains omitted and recovers through exact list/get commands.
264
+ const entryObj = isObject(entry) ? entry : {};
265
+ const counts = isObject(entryObj.counts) ? entryObj.counts : {};
266
+ const projected = {
267
+ ...pick(entryObj, [
268
+ "artifact",
269
+ "status",
270
+ "compatibility",
271
+ "detail_availability",
272
+ "omitted",
273
+ "omitted_count",
274
+ "omission_reason",
275
+ ]),
276
+ counts: pick(counts, ["total", "returned", "remaining", "full", "summary"]),
277
+ retrieval: briefHistoryRetrieval(entryObj.retrieval),
278
+ };
279
+ const caveats = briefHistoryCaveats(entryObj.caveats, maxChars);
280
+ if (caveats !== undefined)
281
+ projected.caveats = caveats;
282
+ if (isObject(entryObj.degraded_history)) {
283
+ const degraded = pick(entryObj.degraded_history, ["summary_count", "returned_count", "omitted_count"]);
284
+ // Compact routing already retains the same exact list/get commands on the
285
+ // parent history entry. Keep the nested copy only in the normal brief.
286
+ if (projection === "normal")
287
+ degraded.retrieval = briefHistoryRetrieval(entryObj.degraded_history.retrieval);
288
+ const degradedCaveats = briefHistoryCaveats(entryObj.degraded_history.caveats, maxChars);
289
+ if (degradedCaveats !== undefined)
290
+ degraded.caveats = degradedCaveats;
291
+ projected.degraded_history = degraded;
292
+ }
293
+ if (isObject(entryObj.source_contract)) {
294
+ projected.source_contract = pick(entryObj.source_contract, ["authority", "detail", "cursor"]);
295
+ }
296
+ out[artifactId] = projected;
297
+ }
298
+ return out;
299
+ }
300
+ function briefProjectIntegration(integration) {
301
+ // Keep the routing recommendation, message, pending counts, channel,
302
+ // aggregate status, and any major-boundary block (which overrides
303
+ // next_action). Upgrade commands are part of the executable upgrade route;
304
+ // preserve them only for that recommendation. Phase blockers and guidance
305
+ // detail recover via doctor.
306
+ const fields = [
307
+ "recommendation",
308
+ "message",
309
+ "update_channel",
310
+ "pending_artifacts",
311
+ "aggregate_status",
312
+ "major_boundary_block",
313
+ ];
314
+ if (isObject(integration) && integration.recommendation === "upgrade") {
315
+ fields.push("dry_run_command", "apply_command");
316
+ }
317
+ return pick(integration, fields);
318
+ }
319
+ function briefProfile(profile) {
320
+ // opencode reads profile.status; the dashboard glyph reads profile.status.
321
+ // bounded_signals (a legacy recovery blob) is omitted and recovers via
322
+ // `agentera profile --format json`.
323
+ return pick(profile, [
324
+ "status",
325
+ "validity",
326
+ "freshness",
327
+ "days_since_generated",
328
+ "stale",
329
+ "stale_threshold_days",
330
+ "generated_date",
331
+ "validated_date",
332
+ "suggested_action",
333
+ ]);
334
+ }
335
+ function briefApp(app) {
336
+ // `app` is required for app/v1/profile safety, but no default-bare consumer
337
+ // reads its verbose path list (the packaging gate reads app_home.source).
338
+ // Keep safety identity; path diagnostics recover through doctor so checkout
339
+ // depth cannot displace routing or canonical history evidence.
340
+ return pick(app, [
341
+ "status",
342
+ "expectedVersion",
343
+ "updateChannel",
344
+ ]);
345
+ }
346
+ function briefAppHome(appHome) {
347
+ return pick(appHome, ["install_track", "status", "source"]);
348
+ }
349
+ function briefSharedSkill(sharedSkill) {
350
+ if (!isObject(sharedSkill))
351
+ return {};
352
+ const out = pick(sharedSkill, ["name", "status", "source", "gap"]);
353
+ const message = boundedString(sharedSkill.message, BRIEF_SCALAR_MAX_CHARS);
354
+ if (message !== undefined)
355
+ out.message = message;
356
+ const details = boundedStringList(sharedSkill.details, 3, BRIEF_SCALAR_MAX_CHARS);
357
+ if (details !== undefined)
358
+ out.details = details;
359
+ return out;
360
+ }
361
+ function briefSource(source) {
362
+ return pick(source, ["artifacts_present"]);
363
+ }
364
+ function briefAttention(attention) {
365
+ // opencode reads the attention array for routing hints, but each entry is an
366
+ // advisory string. Cap each at BRIEF_SCALAR_MAX_CHARS so a pathological
367
+ // lifecycle procedure text cannot blow the budget; the full detail recovers
368
+ // via the named recovery commands in omitted_rich_state.
369
+ if (!Array.isArray(attention))
370
+ return attention ?? [];
371
+ return attention.map((entry) => typeof entry === "string" ? truncateCodePoints(entry, BRIEF_SCALAR_MAX_CHARS, "…") : entry);
372
+ }
373
+ function briefDecisionAttention(attention) {
374
+ if (attention === null)
375
+ return null;
376
+ if (!isObject(attention))
377
+ return {};
378
+ const out = pick(attention, ["type", "count", "states", "max_entries", "bounded"]);
379
+ const summary = boundedString(attention.attention, BRIEF_SCALAR_MAX_CHARS);
380
+ if (summary !== undefined)
381
+ out.attention = summary;
382
+ out.entries = Array.isArray(attention.entries)
383
+ ? attention.entries.slice(0, 3).map((entry) => {
384
+ if (!isObject(entry))
385
+ return {};
386
+ const projected = pick(entry, ["id", "artifact", "state"]);
387
+ const title = boundedString(entry.title, BRIEF_SCALAR_MAX_CHARS);
388
+ if (title !== undefined)
389
+ projected.title = title;
390
+ return projected;
391
+ })
392
+ : [];
393
+ return out;
394
+ }
395
+ function briefDocsRetrieval(value, maxChars) {
396
+ const out = {};
397
+ if (isObject(value)) {
398
+ for (const key of ["list", "get", "exact", "detail_command"]) {
399
+ const command = boundedString(value[key], maxChars);
400
+ if (command !== undefined)
401
+ out[key] = command;
402
+ }
403
+ }
404
+ return out;
405
+ }
406
+ function briefDocEntry(value, maxChars) {
407
+ if (!isObject(value))
408
+ return {};
409
+ const out = pick(value, ["id", "artifact"]);
410
+ const source = isObject(value.record) ? value.record : value;
411
+ const record = {};
412
+ for (const key of ["document", "path", "last_updated", "status"]) {
413
+ const bounded = boundedString(source[key], maxChars);
414
+ if (bounded !== undefined)
415
+ record[key] = bounded;
416
+ }
417
+ const recordCaveats = briefHistoryCaveats(source.caveats, maxChars);
418
+ if (recordCaveats !== undefined)
419
+ record.caveats = recordCaveats;
420
+ if (Object.keys(record).length > 0)
421
+ out.record = record;
422
+ const caveats = briefHistoryCaveats(value.caveats, maxChars);
423
+ if (caveats !== undefined)
424
+ out.caveats = caveats;
425
+ const retrieval = briefDocsRetrieval(value.retrieval, maxChars);
426
+ if (Object.keys(retrieval).length > 0)
427
+ out.retrieval = retrieval;
428
+ return out;
429
+ }
430
+ function briefDocs(docs, projection = "normal") {
431
+ if (!isObject(docs))
432
+ return {};
433
+ const maxChars = projectionMaxChars(projection);
434
+ const entryLimit = projection === "normal" ? 3 : 1;
435
+ const out = pick(docs, ["exists", "status", "last_audit", "mapping_entries", "indexed_documents"]);
436
+ const absenceReason = boundedString(docs.absence_reason, maxChars);
437
+ if (absenceReason !== undefined)
438
+ out.absence_reason = absenceReason;
439
+ const caveats = briefHistoryCaveats(docs.caveats, maxChars);
440
+ if (caveats !== undefined)
441
+ out.caveats = caveats;
442
+ const sourceEntries = Array.isArray(docs.entries) ? docs.entries : null;
443
+ let detailAvailability = Number(docs.mapping_entries) > 0 || Number(docs.indexed_documents) > 0
444
+ ? "summary"
445
+ : "full";
446
+ if (sourceEntries) {
447
+ const entries = sourceEntries.slice(0, entryLimit).map((entry) => briefDocEntry(entry, maxChars));
448
+ const declaredTotal = Number(docs.indexed_documents);
449
+ const total = Number.isSafeInteger(declaredTotal) && declaredTotal >= entries.length
450
+ ? declaredTotal
451
+ : sourceEntries.length;
452
+ out.counts = { total, returned: entries.length, remaining: Math.max(0, total - entries.length) };
453
+ out.entries = entries;
454
+ detailAvailability = total > entries.length ? "summary" : "full";
455
+ }
456
+ const sourceContract = isObject(docs.source_contract)
457
+ ? pick(docs.source_contract, ["detail_availability", "raw_artifact_reads_required", "capability_startup_complete", "inventory_authority"])
458
+ : {};
459
+ sourceContract.detail_availability = detailAvailability;
460
+ sourceContract.retrieval = STATE_FAMILY_FALLBACK_COMMANDS.docs;
461
+ out.source_contract = sourceContract;
462
+ return out;
463
+ }
464
+ function briefDegradedHistory(value, omitRetrieval) {
465
+ if (!isObject(value))
466
+ return undefined;
467
+ if (!omitRetrieval)
468
+ return { ...value };
469
+ const out = pick(value, ["status", "summary_count", "returned_count", "omitted_count", "caveats"]);
470
+ return out;
471
+ }
472
+ function briefProgress(progress, omitDegradedRetrieval = false) {
473
+ // opencode reads progress.latest.number/what/next; the brief keeps the
474
+ // latest cycle but caps free-text scalars at BRIEF_SCALAR_MAX_CHARS so a
475
+ // pathological value cannot blow the budget. Full detail recovers via
476
+ // `agentera state progress get --id ID --format json`.
477
+ if (!isObject(progress))
478
+ return {};
479
+ const out = pick(progress, ["exists", "status", "latest_verification", "cycle_count"]);
480
+ const degradedHistory = briefDegradedHistory(progress.degraded_history, omitDegradedRetrieval);
481
+ if (degradedHistory !== undefined)
482
+ out.degraded_history = degradedHistory;
483
+ const latest = progress.latest;
484
+ if (isObject(latest)) {
485
+ const boundedLatest = {};
486
+ for (const [key, value] of Object.entries(latest)) {
487
+ boundedLatest[key] = typeof value === "string" ? truncateCodePoints(value, BRIEF_SCALAR_MAX_CHARS, "…") : value;
488
+ }
489
+ out.latest = boundedLatest;
490
+ }
491
+ else {
492
+ out.latest = latest;
493
+ }
494
+ return out;
495
+ }
496
+ function briefHealth(health, omitDegradedRetrieval = false) {
497
+ const out = pick(health, ["exists", "id", "artifact", "date", "trajectory", "grade"]);
498
+ if (isObject(health)) {
499
+ const degradedHistory = briefDegradedHistory(health.degraded_history, omitDegradedRetrieval);
500
+ if (degradedHistory !== undefined)
501
+ out.degraded_history = degradedHistory;
502
+ }
503
+ return out;
504
+ }
505
+ function hasCanonicalHistoryRetrieval(history, artifact) {
506
+ if (!isObject(history) || !isObject(history[artifact]))
507
+ return false;
508
+ const retrieval = history[artifact].retrieval;
509
+ return isObject(retrieval)
510
+ && typeof retrieval.list === "string" && retrieval.list.length > 0
511
+ && typeof retrieval.get === "string" && retrieval.get.length > 0;
512
+ }
513
+ function briefAction(action, maxChars) {
514
+ if (!isObject(action))
515
+ return {};
516
+ const out = pick(action, ["id", "artifact", "outcome", "eligible"]);
517
+ for (const key of ["object", "capability", "reason", "phase"]) {
518
+ const bounded = boundedString(action[key], maxChars);
519
+ if (bounded !== undefined)
520
+ out[key] = bounded;
521
+ }
522
+ if (isObject(action.retrieval))
523
+ out.retrieval = pick(action.retrieval, ["exact", "get"]);
524
+ return out;
525
+ }
526
+ function briefNextAction(nextAction, projection = "normal") {
527
+ if (!isObject(nextAction))
528
+ return {};
529
+ const maxChars = projectionMaxChars(projection);
530
+ const alternativeLimit = projection === "normal"
531
+ ? BRIEF_NEXT_ACTION_ALTERNATIVES
532
+ : projection === "compact"
533
+ ? 1
534
+ : 0;
535
+ const alternatives = Array.isArray(nextAction.alternatives)
536
+ ? nextAction.alternatives.slice(0, alternativeLimit).map((entry) => briefAction(entry, maxChars))
537
+ : [];
538
+ return {
539
+ ...briefAction(nextAction, maxChars),
540
+ alternatives,
541
+ };
542
+ }
543
+ function briefCapabilityContext(value, maxChars) {
544
+ if (!isObject(value))
545
+ return {};
546
+ const out = {};
547
+ for (const key of ["capability", "fetch_command", "note"]) {
548
+ const bounded = boundedString(value[key], maxChars);
549
+ if (bounded !== undefined)
550
+ out[key] = bounded;
551
+ }
552
+ if (typeof value.required_before_rendering === "boolean") {
553
+ out.required_before_rendering = value.required_before_rendering;
554
+ }
555
+ return out;
556
+ }
557
+ function briefSourceContract(sourceContract, projection = "normal") {
558
+ if (!isObject(sourceContract))
559
+ return {};
560
+ const maxItems = projection === "normal"
561
+ ? BRIEF_SOURCE_FIELDS_MAX
562
+ : projection === "compact"
563
+ ? BRIEF_COMPACT_SOURCE_FIELDS_MAX
564
+ : BRIEF_IRREDUCIBLE_SOURCE_FIELDS_MAX;
565
+ const maxChars = projection === "normal"
566
+ ? BRIEF_SOURCE_STRING_MAX_CHARS
567
+ : projection === "compact"
568
+ ? BRIEF_COMPACT_SOURCE_STRING_MAX_CHARS
569
+ : BRIEF_IRREDUCIBLE_SOURCE_STRING_MAX_CHARS;
570
+ const out = {};
571
+ const fields = boundedStringList(sourceContract.fields, maxItems, maxChars);
572
+ if (fields !== undefined)
573
+ out.fields = fields;
574
+ for (const key of ["render", "access", "empty_state"]) {
575
+ const bounded = boundedString(sourceContract[key], maxChars);
576
+ if (bounded !== undefined)
577
+ out[key] = bounded;
578
+ }
579
+ if (projection !== "irreducible" && isObject(sourceContract.capability_context)) {
580
+ out.capability_context = briefCapabilityContext(sourceContract.capability_context, maxChars);
581
+ }
582
+ else if (projection === "irreducible" && isObject(sourceContract.capability_context)) {
583
+ const capabilityContext = briefCapabilityContext(sourceContract.capability_context, maxChars);
584
+ if ("fetch_command" in capabilityContext) {
585
+ out.capability_context = { fetch_command: capabilityContext.fetch_command };
586
+ }
587
+ }
588
+ return out;
589
+ }
590
+ /** Project the full orientation payload to a bounded decision brief. The brief
591
+ * keeps every required top-level field present (content projected to
592
+ * routing-essential leaves) plus a `brief` meta block that records the budget,
593
+ * measured bytes, status, and omitted rich-state recovery commands.
594
+ *
595
+ * Measurement uses deterministic pretty-JSON UTF-8 byte length including the
596
+ * trailing newline. The reported `utf8_bytes` is settled to a fixed point so
597
+ * it equals the actual emitted byte count (self-measurement otherwise changes
598
+ * its own digit count); the gate then decides on the final form. */
599
+ export function briefOrientationPayload(payload, options = {}) {
600
+ const budget = options.budgetBytes ?? PRIME_BRIEF_MAX_UTF8_BYTES;
601
+ if (!Number.isSafeInteger(budget) || budget < 0) {
602
+ throw new RangeError("brief budget must be a non-negative safe integer");
603
+ }
604
+ const projected = projectBriefBody(payload);
605
+ const finalPayload = withBriefMeta(projected, "ok", budget, null);
606
+ const gate = briefByteGate(finalPayload, budget);
607
+ if (gate.accepted) {
608
+ return finalPayload;
609
+ }
610
+ // Over-budget brief: reject the projected payload and emit a bounded degraded
611
+ // envelope (never emit an over-budget payload). The envelope keeps bounded
612
+ // plan/next-action/history/decision routing evidence, state presence, a brief
613
+ // source contract, and the byte-budget error with a recovery command.
614
+ return degradedBriefEnvelope(payload, budget, gate.bytes, options.degradedMode ?? "minimal");
615
+ }
616
+ /** Attach the brief meta block and settle `utf8_bytes` to a fixed point so the
617
+ * reported size equals the actual emitted byte count (otherwise the digits of
618
+ * `utf8_bytes` itself would change the measurement). */
619
+ function withBriefMeta(body, projection, budget, error) {
620
+ const meta = {
621
+ budget_utf8_bytes: budget,
622
+ projection,
623
+ path_diagnostics_recovery: PATH_DIAGNOSTICS_RECOVERY,
624
+ omitted_rich_state: OMITTED_RICH_STATE.map((entry) => ({ ...entry })),
625
+ };
626
+ if (error)
627
+ meta.error = error;
628
+ return settledBriefEnvelope(body, meta);
629
+ }
630
+ function projectBriefBody(payload) {
631
+ const out = {};
632
+ for (const [key, value] of Object.entries(payload)) {
633
+ switch (key) {
634
+ case "plan":
635
+ out[key] = briefPlan(value);
636
+ break;
637
+ case "history":
638
+ out[key] = briefHistory(value);
639
+ break;
640
+ case "project_integration":
641
+ out[key] = briefProjectIntegration(value);
642
+ break;
643
+ case "profile":
644
+ out[key] = briefProfile(value);
645
+ break;
646
+ case "app":
647
+ out[key] = briefApp(value);
648
+ break;
649
+ case "app_home":
650
+ out[key] = briefAppHome(value);
651
+ break;
652
+ case "shared_skill":
653
+ out[key] = briefSharedSkill(value);
654
+ break;
655
+ case "progress":
656
+ out[key] = briefProgress(value, hasCanonicalHistoryRetrieval(payload.history, "progress"));
657
+ break;
658
+ case "health":
659
+ out[key] = briefHealth(value, hasCanonicalHistoryRetrieval(payload.history, "health"));
660
+ break;
661
+ case "next_action":
662
+ out[key] = briefNextAction(value);
663
+ break;
664
+ case "attention":
665
+ out[key] = briefAttention(value);
666
+ break;
667
+ case "decision_attention":
668
+ out[key] = briefDecisionAttention(value);
669
+ break;
670
+ case "docs":
671
+ out[key] = briefDocs(value);
672
+ break;
673
+ case "source_contract":
674
+ out[key] = briefSourceContract(value);
675
+ break;
676
+ case "state_presence":
677
+ out[key] = briefStatePresence(value);
678
+ break;
679
+ case "source":
680
+ out[key] = briefSource(value);
681
+ break;
682
+ default:
683
+ // Command/outcome/mode, bounded ordinary state, shared-skill diagnosis,
684
+ // bespoke context pointers, and active conditional fields pass through
685
+ // at full fidelity.
686
+ out[key] = value;
687
+ break;
688
+ }
689
+ }
690
+ return out;
691
+ }
692
+ function boundedEnvelopeScalar(value, fallback) {
693
+ return boundedString(value, BRIEF_SCALAR_MAX_CHARS) ?? fallback;
694
+ }
695
+ function degradedBody(payload, projection) {
696
+ const out = {
697
+ command: boundedEnvelopeScalar(payload.command, "prime"),
698
+ outcome: boundedEnvelopeScalar(payload.outcome, "ok"),
699
+ mode: boundedEnvelopeScalar(payload.mode, "unknown"),
700
+ state_presence: briefStatePresence(payload.state_presence),
701
+ source_contract: briefSourceContract(payload.source_contract, projection),
702
+ };
703
+ if ("app_home" in payload)
704
+ out.app_home = briefAppHome(payload.app_home);
705
+ if ("app" in payload)
706
+ out.app = briefApp(payload.app);
707
+ if ("profile" in payload)
708
+ out.profile = briefProfile(payload.profile);
709
+ if ("shared_skill" in payload)
710
+ out.shared_skill = briefSharedSkill(payload.shared_skill);
711
+ if ("project_integration" in payload)
712
+ out.project_integration = briefProjectIntegration(payload.project_integration);
713
+ if ("todo_reconciliation" in payload)
714
+ out.todo_reconciliation = payload.todo_reconciliation;
715
+ if ("startup" in payload) {
716
+ // The top-level reconciliation object is the canonical bare-prime route.
717
+ // Do not repeat it inside startup when compacting an over-budget envelope.
718
+ const startup = isObject(payload.startup) ? { ...payload.startup } : payload.startup;
719
+ if (isObject(startup) && "todo_reconciliation" in out)
720
+ delete startup.todo_reconciliation;
721
+ out.startup = startup;
722
+ }
723
+ if ("health" in payload)
724
+ out.health = briefHealth(payload.health, hasCanonicalHistoryRetrieval(payload.history, "health"));
725
+ if ("todo" in payload)
726
+ out.todo = payload.todo;
727
+ if ("progress" in payload)
728
+ out.progress = briefProgress(payload.progress, hasCanonicalHistoryRetrieval(payload.history, "progress"));
729
+ if ("attention" in payload)
730
+ out.attention = briefAttention(payload.attention);
731
+ if ("source" in payload)
732
+ out.source = briefSource(payload.source);
733
+ if ("docs" in payload)
734
+ out.docs = briefDocs(payload.docs, projection);
735
+ for (const conditional of ["v1_migration", "objective"]) {
736
+ if (conditional in payload)
737
+ out[conditional] = payload[conditional];
738
+ }
739
+ if (isObject(payload.plan))
740
+ out.plan = briefPlan(payload.plan, projection);
741
+ if (isObject(payload.next_action))
742
+ out.next_action = briefNextAction(payload.next_action, projection);
743
+ if (isObject(payload.history))
744
+ out.history = briefHistory(payload.history, projection);
745
+ if (payload.decision_attention === null)
746
+ out.decision_attention = null;
747
+ else if (isObject(payload.decision_attention))
748
+ out.decision_attention = briefDecisionAttention(payload.decision_attention);
749
+ return out;
750
+ }
751
+ function statusRoutingDegradedBody(payload, projection) {
752
+ return {
753
+ ...degradedBody(payload, projection),
754
+ todo: payload.todo,
755
+ attention: briefAttention(payload.attention),
756
+ };
757
+ }
758
+ /** Settle the self-measuring byte field and return only at a fixed point. The
759
+ * serialized value and the reported value therefore use the same pretty UTF-8
760
+ * plus newline accounting as emitStructured. */
761
+ function settledBriefEnvelope(body, meta) {
762
+ let brief = { ...meta, utf8_bytes: 0 };
763
+ let envelope = { ...body, brief };
764
+ for (let guard = 0; guard < 32; guard += 1) {
765
+ const bytes = briefUtf8Bytes(envelope);
766
+ if (brief.utf8_bytes === bytes)
767
+ return envelope;
768
+ brief = { ...brief, utf8_bytes: bytes };
769
+ envelope = { ...body, brief };
770
+ }
771
+ throw new Error("brief UTF-8 byte measurement did not settle");
772
+ }
773
+ export class BriefBudgetError extends Error {
774
+ budgetBytes;
775
+ minimumBytes;
776
+ constructor(budgetBytes, minimumBytes) {
777
+ super(`brief budget ${budgetBytes} bytes cannot contain the minimum routing envelope (${minimumBytes} bytes); increase the budget or use prime --context status`);
778
+ this.name = "BriefBudgetError";
779
+ this.budgetBytes = budgetBytes;
780
+ this.minimumBytes = minimumBytes;
781
+ }
782
+ }
783
+ function degradedBriefEnvelope(payload, budget, attemptedBytes, mode) {
784
+ const detailedMeta = {
785
+ budget_utf8_bytes: budget,
786
+ projection: "degraded",
787
+ attempted_utf8_bytes: attemptedBytes,
788
+ path_diagnostics_recovery: PATH_DIAGNOSTICS_RECOVERY,
789
+ omitted_rich_state: OMITTED_RICH_STATE.map((entry) => ({ ...entry })),
790
+ error: {
791
+ class: "brief_output_budget",
792
+ message: "the projected decision brief exceeded the authority byte budget; a bounded degraded envelope was emitted instead of the over-budget payload",
793
+ recovery: `Run \`${preCutoverCommand("prime --context status --format json")}\` for status startup, or \`${preCutoverCommand("state <artifact> list --format json")}\` for a specific record family.`,
794
+ },
795
+ };
796
+ const body = (projection) => mode === "status_routing"
797
+ ? statusRoutingDegradedBody(payload, projection)
798
+ : degradedBody(payload, projection);
799
+ const detailed = settledBriefEnvelope(body("normal"), detailedMeta);
800
+ if (briefByteGate(detailed, budget).accepted)
801
+ return detailed;
802
+ // A smaller deterministic fallback drops the recovery catalog but retains the
803
+ // bounded state-presence and source-contract projections plus one recovery
804
+ // command. This is what lets a configured 7KB gate remain enforceable even
805
+ // when caller data would make the detailed degraded envelope too large.
806
+ const compactMeta = {
807
+ budget_utf8_bytes: budget,
808
+ projection: "degraded",
809
+ attempted_utf8_bytes: attemptedBytes,
810
+ path_diagnostics_recovery: PATH_DIAGNOSTICS_RECOVERY,
811
+ error: {
812
+ class: "brief_output_budget",
813
+ message: "brief exceeds byte budget",
814
+ recovery: `Run \`${preCutoverCommand("prime --context status --format json")}\`.`,
815
+ },
816
+ };
817
+ const compact = settledBriefEnvelope(body("compact"), compactMeta);
818
+ if (briefByteGate(compact, budget).accepted)
819
+ return compact;
820
+ if (mode === "status_routing") {
821
+ const minimum = settledBriefEnvelope(body("irreducible"), compactMeta);
822
+ const minimumBytes = briefUtf8Bytes(minimum);
823
+ if (minimumBytes <= budget)
824
+ return minimum;
825
+ throw new BriefBudgetError(budget, minimumBytes);
826
+ }
827
+ // The irreducible form is intentionally finite and contains only the routing
828
+ // contract. If even this cannot fit, throwing is explicit: returning an
829
+ // over-budget JSON document would violate the public output contract.
830
+ const minimumMeta = {
831
+ budget_utf8_bytes: budget,
832
+ projection: "degraded",
833
+ attempted_utf8_bytes: attemptedBytes,
834
+ error: {
835
+ class: "brief_output_budget",
836
+ message: "the configured budget cannot contain the detailed recovery envelope",
837
+ recovery: `Increase the budget or run \`${preCutoverCommand("prime --context status --format json")}\`.`,
838
+ },
839
+ };
840
+ const minimum = settledBriefEnvelope(body("irreducible"), minimumMeta);
841
+ const minimumBytes = briefUtf8Bytes(minimum);
842
+ if (minimumBytes <= budget)
843
+ return minimum;
844
+ throw new BriefBudgetError(budget, minimumBytes);
845
+ }