agentera 3.0.0-dev.8 → 3.0.0-dev.81

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 (725) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +252 -22
  3. package/bundle/.agentera-build-source.json +8 -0
  4. package/bundle/CHANGELOG.md +1389 -0
  5. package/bundle/DESIGN.md +229 -0
  6. package/bundle/LICENSE +201 -0
  7. package/bundle/README.md +142 -0
  8. package/bundle/UPGRADE.md +275 -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 +443 -188
  13. package/bundle/references/adapters/package-surface-characterization.md +68 -34
  14. package/bundle/references/adapters/product-v1-reset.yaml +101 -0
  15. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  16. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  17. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  18. package/bundle/references/adapters/runtime-retired-resources.yaml +357 -0
  19. package/bundle/references/analysis/evidence-tier-authority.yaml +559 -0
  20. package/bundle/references/analysis/personal-glossary-evaluation-authority.yaml +175 -0
  21. package/bundle/references/analysis/personal-glossary-evaluation-corpus.yaml +291 -0
  22. package/bundle/references/analysis/personal-glossary-holdout.yaml +192 -0
  23. package/bundle/references/analysis/verification-policy.yaml +262 -0
  24. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  25. package/bundle/references/artifacts/glossary-entry-contract.yaml +2906 -0
  26. package/bundle/references/artifacts/state-storage-authority.yaml +3075 -0
  27. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  28. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  29. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  30. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  31. package/bundle/references/cli/routing-model.md +152 -93
  32. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  33. package/bundle/references/cli/update-channels.yaml +7 -5
  34. package/bundle/references/cli/vocabulary-index.yaml +7 -9
  35. package/bundle/references/cli/vocabulary.md +54 -97
  36. package/bundle/references/meta/retained-reference-authority.yaml +171 -0
  37. package/bundle/skills/agentera/SKILL.md +183 -63
  38. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  39. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  40. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  41. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  42. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  43. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  44. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  45. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  46. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  47. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  48. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  49. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  50. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  51. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  52. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  53. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  54. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  55. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  56. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  57. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  58. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  59. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  60. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  61. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  62. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  63. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  64. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  65. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  66. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  67. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  68. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +13 -4
  69. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +8 -5
  70. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  71. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +67 -3
  72. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  73. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  74. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  75. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  76. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  77. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  78. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  79. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  80. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  81. package/bundle/skills/agentera/protocol.yaml +4 -4
  82. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  83. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  84. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +29 -30
  85. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  86. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -43
  87. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -34
  88. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +87 -0
  89. package/bundle/skills/agentera/schemas/artifacts/health.yaml +53 -51
  90. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -35
  91. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +453 -55
  92. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +128 -39
  93. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +305 -7
  94. package/bundle/skills/agentera/schemas/artifacts/vision.yaml +0 -19
  95. package/dist/.agentera-build-source.json +8 -0
  96. package/dist/analytics/extractCorpus/cli.js +52 -11
  97. package/dist/analytics/extractCorpus/copilotSessions.js +19 -8
  98. package/dist/analytics/extractCorpus/core.js +262 -14
  99. package/dist/analytics/extractCorpus/corpus.js +57 -18
  100. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  101. package/dist/analytics/extractCorpus/cursorSessions.js +28 -8
  102. package/dist/analytics/extractCorpus/evidenceTiers.js +709 -0
  103. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  104. package/dist/analytics/extractCorpus/filesystemSources.js +5 -5
  105. package/dist/analytics/extractCorpus/index.js +4 -2
  106. package/dist/analytics/extractCorpus/jsonlSessions.js +76 -8
  107. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  108. package/dist/analytics/extractCorpus/sqliteSessions.js +12 -4
  109. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  110. package/dist/analytics/extractCorpus.js +0 -1
  111. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  112. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  113. package/dist/analytics/personalGlossaryAdmission.js +113 -0
  114. package/dist/analytics/personalGlossaryCandidateProjection.js +788 -0
  115. package/dist/analytics/personalGlossaryCandidateProjectionExcerpts.js +144 -0
  116. package/dist/analytics/personalGlossaryCandidateProjectionModel.js +1 -0
  117. package/dist/analytics/personalGlossaryCandidateReadView.js +23 -0
  118. package/dist/analytics/personalGlossaryCurrentGeneration.js +25 -0
  119. package/dist/analytics/personalGlossaryDecision.js +203 -0
  120. package/dist/analytics/personalGlossaryExplicit.js +788 -0
  121. package/dist/analytics/personalGlossaryExplicitMining.js +285 -0
  122. package/dist/analytics/personalGlossaryExplicitScope.js +41 -0
  123. package/dist/analytics/personalGlossaryExplicitSegments.js +418 -0
  124. package/dist/analytics/personalGlossaryExplicitTypes.js +26 -0
  125. package/dist/analytics/personalGlossaryLexicalClassifier.js +175 -0
  126. package/dist/analytics/personalGlossaryProfile.js +229 -0
  127. package/dist/analytics/personalGlossaryRecurrence.js +618 -0
  128. package/dist/analytics/personalGlossaryRefreshProjection.js +351 -0
  129. package/dist/analytics/personalGlossaryReviewRecordStorage.js +428 -0
  130. package/dist/analytics/personalGlossaryReviewRecords.js +332 -0
  131. package/dist/analytics/profileSignals.js +211 -0
  132. package/dist/analytics/usageStats.js +150 -23
  133. package/dist/audit/terminologyDrift.js +281 -0
  134. package/dist/bin/agentera.js +3 -2
  135. package/dist/capabilities/audit/instructions.js +16 -6
  136. package/dist/capabilities/build/instructions.js +59 -6
  137. package/dist/capabilities/design/instructions.js +3 -4
  138. package/dist/capabilities/discuss/instructions.js +29 -6
  139. package/dist/capabilities/document/instructions.js +11 -6
  140. package/dist/capabilities/index.js +20 -14
  141. package/dist/capabilities/optimize/instructions.js +14 -6
  142. package/dist/capabilities/orchestrate/instructions.js +42 -6
  143. package/dist/capabilities/plan/instructions.js +30 -3
  144. package/dist/capabilities/profile/instructions.js +104 -5
  145. package/dist/capabilities/research/instructions.js +4 -5
  146. package/dist/capabilities/status/instructions.js +15 -6
  147. package/dist/capabilities/status/startupInstructions.js +34 -0
  148. package/dist/capabilities/vision/instructions.js +3 -5
  149. package/dist/cli/appContext.js +14 -7
  150. package/dist/cli/argvalidate.js +0 -1
  151. package/dist/cli/capabilityContext/benchmark.js +5 -4
  152. package/dist/cli/capabilityContext/bespoke.js +14 -6
  153. package/dist/cli/capabilityContext/build.js +116 -42
  154. package/dist/cli/capabilityContext/closeout.js +30 -27
  155. package/dist/cli/capabilityContext/contract.js +18 -27
  156. package/dist/cli/capabilityContext/evidence.js +84 -77
  157. package/dist/cli/capabilityContext/index.js +0 -1
  158. package/dist/cli/capabilityContext/orchestration.js +42 -18
  159. package/dist/cli/capabilityContext/planState.js +89 -96
  160. package/dist/cli/capabilityContext/progress.js +52 -12
  161. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  162. package/dist/cli/capabilityContext/shared.js +9 -20
  163. package/dist/cli/capabilityContext/slim.js +52 -8
  164. package/dist/cli/capabilityContext/startup.js +51 -114
  165. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  166. package/dist/cli/capabilityContext/types.js +26 -10
  167. package/dist/cli/capabilityContext.js +0 -1
  168. package/dist/cli/commands/appHome.js +0 -1
  169. package/dist/cli/commands/capability.js +2 -2
  170. package/dist/cli/commands/compact.js +163 -13
  171. package/dist/cli/commands/doctor.js +162 -11
  172. package/dist/cli/commands/durability.js +81 -0
  173. package/dist/cli/commands/glossaryAdvice.js +138 -0
  174. package/dist/cli/commands/lint.js +22 -8
  175. package/dist/cli/commands/personalGlossaryCandidateReads.js +755 -0
  176. package/dist/cli/commands/personalGlossaryDecision.js +349 -0
  177. package/dist/cli/commands/personalGlossaryPublish.js +484 -0
  178. package/dist/cli/commands/personalGlossaryReviewRecordReads.js +209 -0
  179. package/dist/cli/commands/personalGlossaryReviewRecords.js +623 -0
  180. package/dist/cli/commands/prime/briefOrientation.js +845 -0
  181. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  182. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  183. package/dist/cli/commands/prime/collectEntityOrientation.js +338 -0
  184. package/dist/cli/commands/prime/collectOrientationState.js +124 -68
  185. package/dist/cli/commands/prime/orientationOutput.js +271 -59
  186. package/dist/cli/commands/prime/types.js +0 -1
  187. package/dist/cli/commands/prime.js +89 -11
  188. package/dist/cli/commands/profileGrounding.js +55 -0
  189. package/dist/cli/commands/query.js +74 -52
  190. package/dist/cli/commands/report.js +187 -27
  191. package/dist/cli/commands/route.js +142 -0
  192. package/dist/cli/commands/schema.js +436 -138
  193. package/dist/cli/commands/state/decisions.js +40 -56
  194. package/dist/cli/commands/state/docs.js +58 -85
  195. package/dist/cli/commands/state/experimentRecords.js +151 -0
  196. package/dist/cli/commands/state/experiments.js +11 -65
  197. package/dist/cli/commands/state/get.js +129 -0
  198. package/dist/cli/commands/state/health.js +11 -113
  199. package/dist/cli/commands/state/index.js +6 -41
  200. package/dist/cli/commands/state/list.js +194 -0
  201. package/dist/cli/commands/state/objective.js +21 -65
  202. package/dist/cli/commands/state/plan.js +11 -170
  203. package/dist/cli/commands/state/planTasks.js +154 -0
  204. package/dist/cli/commands/state/plans.js +154 -0
  205. package/dist/cli/commands/state/progress.js +11 -45
  206. package/dist/cli/commands/state/shared.js +0 -1
  207. package/dist/cli/commands/state/todo.js +28 -107
  208. package/dist/cli/commands/state/write.js +459 -0
  209. package/dist/cli/commands/upgrade.js +176 -5
  210. package/dist/cli/commands/upgradeVerify.js +118 -0
  211. package/dist/cli/commands/validate.js +235 -136
  212. package/dist/cli/commands/verify.js +73 -16
  213. package/dist/cli/contracts/bundleStatus.js +0 -1
  214. package/dist/cli/contracts/orientationState.js +0 -1
  215. package/dist/cli/dispatch/argvParser.js +0 -1
  216. package/dist/cli/dispatch/check.js +84 -40
  217. package/dist/cli/dispatch/commands.js +3 -3
  218. package/dist/cli/dispatch/index.js +84 -52
  219. package/dist/cli/dispatch/lifecycle.js +182 -62
  220. package/dist/cli/dispatch/prime.js +37 -2
  221. package/dist/cli/dispatch/projections.js +17 -0
  222. package/dist/cli/dispatch/shared.js +1 -2
  223. package/dist/cli/dispatch/state.js +62 -66
  224. package/dist/cli/dispatch.js +0 -1
  225. package/dist/cli/errors.js +16 -17
  226. package/dist/cli/help.js +419 -41
  227. package/dist/cli/migrationRequired.js +125 -0
  228. package/dist/cli/orientation/attention.js +19 -22
  229. package/dist/cli/orientation/corpusCoverage.js +32 -1
  230. package/dist/cli/orientation.js +346 -129
  231. package/dist/cli/planArtifacts.js +350 -0
  232. package/dist/cli/planEvidence.js +157 -0
  233. package/dist/cli/planLifecycleState.js +36 -0
  234. package/dist/cli/planTaskIndex.js +11 -0
  235. package/dist/cli/preCutoverCommand.js +32 -0
  236. package/dist/cli/prime-blob.js +71 -3
  237. package/dist/cli/productV1Eol.js +55 -0
  238. package/dist/cli/profileAcquisition.js +167 -0
  239. package/dist/cli/startupCompletenessContract.js +11 -9
  240. package/dist/cli/stateQuery.js +47 -12
  241. package/dist/cli/structured.js +0 -1
  242. package/dist/cli/todoMarkdown.js +25 -12
  243. package/dist/cli/todoReadinessSelection.js +192 -0
  244. package/dist/cli/todoSeverity.js +0 -1
  245. package/dist/core/atomicWriter.js +23 -0
  246. package/dist/core/developmentChannel.js +1 -0
  247. package/dist/core/developmentInvocation.js +377 -0
  248. package/dist/core/difflib.js +0 -1
  249. package/dist/core/envPaths.js +0 -1
  250. package/dist/core/jsonValue.js +0 -1
  251. package/dist/core/paths.js +0 -1
  252. package/dist/core/pyjson.js +0 -1
  253. package/dist/core/shell.js +4 -0
  254. package/dist/core/skillIdentity.js +23 -0
  255. package/dist/core/sourceRoot.js +9 -12
  256. package/dist/core/text.js +10 -0
  257. package/dist/core/toml.js +0 -1
  258. package/dist/core/yaml.js +61 -2
  259. package/dist/eval/evalSkills.js +13 -14
  260. package/dist/eval/glossaryEvaluation.js +751 -0
  261. package/dist/eval/glossaryEvaluationProcess.js +29 -0
  262. package/dist/eval/glossaryEvaluationRunner.js +571 -0
  263. package/dist/eval/glossaryEvaluationSuccessReport.js +297 -0
  264. package/dist/eval/hybridRouteEvaluation.js +155 -0
  265. package/dist/eval/semanticEval.js +0 -1
  266. package/dist/eval/semanticFixtures.js +0 -1
  267. package/dist/hooks/common.js +3 -56
  268. package/dist/hooks/compaction/apply.js +224 -47
  269. package/dist/hooks/compaction/dryRun.js +2 -1
  270. package/dist/hooks/compaction/index.js +5 -6
  271. package/dist/hooks/compaction/parse.js +73 -6
  272. package/dist/hooks/compaction/retention.js +28 -25
  273. package/dist/hooks/compaction/status.js +145 -26
  274. package/dist/hooks/compaction/types.js +0 -1
  275. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  276. package/dist/hooks/validateArtifact/index.js +6 -65
  277. package/dist/hooks/validateArtifact/markdown.js +9 -10
  278. package/dist/hooks/validateArtifact/schema.js +96 -9
  279. package/dist/hooks/validateArtifact/traversal.js +12 -11
  280. package/dist/hooks/validateArtifact/violations.js +5 -3
  281. package/dist/migrate/v2HandoffManifest.js +8 -3
  282. package/dist/registries/activationContract.js +2 -0
  283. package/dist/registries/activationTuples.js +145 -0
  284. package/dist/registries/artifactProtocolIds.js +2 -1
  285. package/dist/registries/artifactRegistry.js +207 -60
  286. package/dist/registries/artifactSchemaProjection.js +45 -0
  287. package/dist/registries/capabilityContract.js +5 -21
  288. package/dist/registries/evaluatorHandoffContract.js +0 -1
  289. package/dist/registries/evidenceTierContract.js +375 -0
  290. package/dist/registries/explicitSegmentGrammarContract.js +619 -0
  291. package/dist/registries/glossaryAdviceContract.js +79 -0
  292. package/dist/registries/glossaryCandidateContractPaths.js +6 -0
  293. package/dist/registries/glossaryCandidateContracts.js +820 -0
  294. package/dist/registries/glossaryCandidateDecisionAuthority.js +119 -0
  295. package/dist/registries/glossaryCandidateDecisionContract.js +62 -0
  296. package/dist/registries/glossaryCandidateProjectionAuthority.js +345 -0
  297. package/dist/registries/glossaryCandidateProjectionContract.js +108 -0
  298. package/dist/registries/glossaryCaveatContract.js +67 -0
  299. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  300. package/dist/registries/glossaryEntryContract.js +759 -0
  301. package/dist/registries/glossaryEntryTemporal.js +12 -0
  302. package/dist/registries/glossaryMiningAuthority.js +764 -0
  303. package/dist/registries/glossaryProfileFullContract.js +24 -0
  304. package/dist/registries/glossaryReviewRecordsAuthority.js +426 -0
  305. package/dist/registries/glossaryReviewRecordsContract.js +129 -0
  306. package/dist/registries/glossaryTermIdentity.js +139 -0
  307. package/dist/registries/glossaryTermOccurrence.js +20 -0
  308. package/dist/registries/hybridRoute.js +274 -0
  309. package/dist/registries/hybridRouteReceipt.js +221 -0
  310. package/dist/registries/packagePublication.js +273 -0
  311. package/dist/registries/packageRegistry.js +184 -209
  312. package/dist/registries/personalGlossaryContracts.js +1 -0
  313. package/dist/registries/todoReadinessContract.js +448 -0
  314. package/dist/registries/triggerLoader.js +7 -44
  315. package/dist/registries/verbosityBudgetContract.js +205 -0
  316. package/dist/release/releaseMetadata.js +168 -11
  317. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  318. package/dist/runtime/lifecycleAdapters.js +777 -0
  319. package/dist/runtime/lifecycleAuthority.js +453 -0
  320. package/dist/runtime/lifecycleOperationContract.js +123 -0
  321. package/dist/runtime/lifecycleOperations.js +634 -0
  322. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  323. package/dist/runtime/lifecyclePublication.js +415 -0
  324. package/dist/runtime/lifecycleSnapshot.js +438 -0
  325. package/dist/runtime/nativeResourceCleanup.js +618 -0
  326. package/dist/setup/opencode.js +20 -13
  327. package/dist/setup/opencodeConstants.js +1 -0
  328. package/dist/setup/sharedSkill.js +45 -0
  329. package/dist/setup/smokeChecks.js +14 -75
  330. package/dist/state/archiveDiscovery.js +580 -0
  331. package/dist/state/archivePublication.js +225 -0
  332. package/dist/state/archiveRecovery.js +237 -0
  333. package/dist/state/archiveReplay.js +53 -0
  334. package/dist/state/canonicalMigrationRecord.js +36 -0
  335. package/dist/state/changelog.js +221 -0
  336. package/dist/state/decisionEntities.js +367 -0
  337. package/dist/state/decisionLegacyValidation.js +215 -0
  338. package/dist/state/decisionMigrationProvenance.js +199 -0
  339. package/dist/state/decisionOverlay.js +254 -0
  340. package/dist/state/decisionRevision.js +256 -0
  341. package/dist/state/decisionRevisionMigration.js +89 -0
  342. package/dist/state/directRetrieval.js +323 -0
  343. package/dist/state/durability.js +324 -0
  344. package/dist/state/entityCutover.js +459 -0
  345. package/dist/state/entityCutoverGit.js +127 -0
  346. package/dist/state/entityGlossaryAuthority.js +13 -0
  347. package/dist/state/entityListProjection.js +187 -0
  348. package/dist/state/entityListRuntimeRegistry.js +85 -0
  349. package/dist/state/entityMigrationCausality.js +97 -0
  350. package/dist/state/entityMigrationIdentity.js +5 -0
  351. package/dist/state/entityMigrationPreview.js +840 -0
  352. package/dist/state/entityMigrationTodo.js +133 -0
  353. package/dist/state/entityPublicationContext.js +859 -0
  354. package/dist/state/entityRetrievalHelp.js +506 -0
  355. package/dist/state/entityStorage.js +894 -0
  356. package/dist/state/entityWriterLock.js +18 -0
  357. package/dist/state/exactReplacementRecovery.js +18 -0
  358. package/dist/state/experimentArchive.js +63 -0
  359. package/dist/state/experimentIdentity.js +202 -0
  360. package/dist/state/healthEntities.js +262 -0
  361. package/dist/state/healthEntityValidation.js +18 -0
  362. package/dist/state/healthRepair.js +69 -0
  363. package/dist/state/installRoot.js +15 -7
  364. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  365. package/dist/state/legacyIdentity.js +47 -0
  366. package/dist/state/legacySummaryRecord.js +6 -0
  367. package/dist/state/listAccounting.js +54 -0
  368. package/dist/state/listClassification.js +17 -0
  369. package/dist/state/listCursor.js +42 -0
  370. package/dist/state/listRetrieval.js +781 -0
  371. package/dist/state/migrationSourceBinding.js +30 -0
  372. package/dist/state/objectiveExperimentEntities.js +322 -0
  373. package/dist/state/planEntities.js +1027 -0
  374. package/dist/state/planIdentity.js +47 -0
  375. package/dist/state/planLineageValidation.js +52 -0
  376. package/dist/state/planReplacementTransaction.js +475 -0
  377. package/dist/state/planRetrieval.js +313 -0
  378. package/dist/state/planTaskRetrieval.js +294 -0
  379. package/dist/state/progressEntities.js +512 -0
  380. package/dist/state/progressGlossaryCaveat.js +168 -0
  381. package/dist/state/progressPublicationOrder.js +19 -0
  382. package/dist/state/progressWritePolicy.js +33 -0
  383. package/dist/state/projectRoot.js +62 -0
  384. package/dist/state/projectionPolicy.js +190 -0
  385. package/dist/state/retrievalAuthority.js +156 -0
  386. package/dist/state/safeProjectFile.js +155 -0
  387. package/dist/state/startupAnalysis/benchmark.js +70 -9
  388. package/dist/state/startupAnalysis/contract.js +44 -10
  389. package/dist/state/startupAnalysis/helpers.js +1 -2
  390. package/dist/state/startupAnalysis/index.js +0 -1
  391. package/dist/state/startupAnalysis/metrics.js +0 -1
  392. package/dist/state/startupAnalysis/records.js +0 -1
  393. package/dist/state/startupAnalysis/report.js +0 -1
  394. package/dist/state/startupAnalysis/threshold.js +13 -1
  395. package/dist/state/startupAnalysis.js +0 -1
  396. package/dist/state/startupProjection.js +499 -0
  397. package/dist/state/stateMode.js +222 -0
  398. package/dist/state/stateStorageAuthority.js +47 -0
  399. package/dist/state/summaryEntityRead.js +25 -0
  400. package/dist/state/summaryMigrationProvenance.js +66 -0
  401. package/dist/state/summarySourceRowAuthority.js +36 -0
  402. package/dist/state/todoActivationSafety.js +58 -0
  403. package/dist/state/todoCreateBatch.js +69 -0
  404. package/dist/state/todoDocsEntities.js +1339 -0
  405. package/dist/state/todoDocsEntityValidation.js +158 -0
  406. package/dist/state/todoMarkdownProjection.js +63 -0
  407. package/dist/state/todoReconciliationActivation.js +182 -0
  408. package/dist/state/todoReconciliationInspection.js +184 -0
  409. package/dist/state/todoReconciliationRepair.js +320 -0
  410. package/dist/state/todoReconciliationTransaction.js +628 -0
  411. package/dist/state/todoSeverityHeadings.js +71 -0
  412. package/dist/state/todoTransitionBatch.js +65 -0
  413. package/dist/state/todoUpdateBatch.js +50 -0
  414. package/dist/state/write/assign.js +20 -0
  415. package/dist/state/write/candidateMutation.js +269 -0
  416. package/dist/state/write/errors.js +11 -0
  417. package/dist/state/write/experimentPublication.js +192 -0
  418. package/dist/state/write/explain.js +380 -0
  419. package/dist/state/write/fields.js +61 -0
  420. package/dist/state/write/glossaryPublication.js +263 -0
  421. package/dist/state/write/grammar.js +285 -0
  422. package/dist/state/write/helpers.js +29 -0
  423. package/dist/state/write/index.js +12 -0
  424. package/dist/state/write/input.js +391 -0
  425. package/dist/state/write/lock.js +837 -0
  426. package/dist/state/write/mutation.js +234 -0
  427. package/dist/state/write/operations.js +170 -0
  428. package/dist/state/write/planEvaluation.js +128 -0
  429. package/dist/state/write/planPublication.js +179 -0
  430. package/dist/state/write/runtimeOperations.js +146 -0
  431. package/dist/state/write/serialize.js +1 -0
  432. package/dist/state/write/transaction.js +57 -0
  433. package/dist/state/write/validate.js +7 -0
  434. package/dist/upgrade/appContentRefresh.js +77 -36
  435. package/dist/upgrade/appModel.js +0 -1
  436. package/dist/upgrade/atomicWriter.js +1 -0
  437. package/dist/upgrade/bundleEvidence.js +0 -1
  438. package/dist/upgrade/channels.js +6 -9
  439. package/dist/upgrade/compatibility.js +43 -17
  440. package/dist/upgrade/doctor.js +55 -32
  441. package/dist/upgrade/doctorClassifier.js +11 -1
  442. package/dist/upgrade/installedHooksRetirement.js +46 -40
  443. package/dist/upgrade/legacyAgentCleanup.js +133 -34
  444. package/dist/upgrade/lifecycleUpgrade.js +126 -0
  445. package/dist/upgrade/migrateArtifactsV2ToV3.js +325 -82
  446. package/dist/upgrade/migrationPublication.js +122 -0
  447. package/dist/upgrade/nextMajorDoctor.js +0 -22
  448. package/dist/upgrade/npxPlatformStatus.js +2 -2
  449. package/dist/upgrade/productV1Reset.js +515 -0
  450. package/dist/upgrade/productV1ResetAuthority.js +139 -0
  451. package/dist/upgrade/projectIntegration.js +126 -134
  452. package/dist/upgrade/projectIntegrationDecision.js +21 -13
  453. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  454. package/dist/upgrade/runtimeMigration.js +210 -430
  455. package/dist/upgrade/upgradeCommands.js +14 -1
  456. package/dist/upgrade/upgradeLock.js +85 -0
  457. package/dist/upgrade/upgradeOrchestrator.js +257 -48
  458. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  459. package/dist/upgrade/versionResolution.js +0 -1
  460. package/dist/validate/activationArtifactEvidence.js +866 -0
  461. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  462. package/dist/validate/activationConjunction.js +816 -0
  463. package/dist/validate/activationEvidenceManifest.js +610 -0
  464. package/dist/validate/activationPackageSemantics.js +29 -0
  465. package/dist/validate/appHomeContract.js +1 -7
  466. package/dist/validate/bootstrapAuthority.js +44 -0
  467. package/dist/validate/capability.js +11 -3
  468. package/dist/validate/crossCapability.js +14 -9
  469. package/dist/validate/glossaryVariantGuard.js +96 -0
  470. package/dist/validate/retainedReferenceAuthority.js +879 -0
  471. package/dist/validate/selfAudit.js +39 -45
  472. package/dist/validate/vocabularyAuthority.js +8 -8
  473. package/package.json +39 -13
  474. package/bundle/references/adapters/cursor.md +0 -214
  475. package/bundle/references/adapters/opencode.md +0 -530
  476. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  477. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  478. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  479. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  480. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  481. package/bundle/references/analysis/benchmark.md +0 -267
  482. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  483. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  484. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  485. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  486. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  487. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  488. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  489. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  490. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  491. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  492. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  493. package/bundle/references/meta/documentation-inventory.md +0 -49
  494. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  495. package/bundle/skills/agentera/agents/audit.toml +0 -6
  496. package/bundle/skills/agentera/agents/build.toml +0 -6
  497. package/bundle/skills/agentera/agents/design.toml +0 -6
  498. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  499. package/bundle/skills/agentera/agents/document.toml +0 -6
  500. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  501. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  502. package/bundle/skills/agentera/agents/plan.toml +0 -6
  503. package/bundle/skills/agentera/agents/profile.toml +0 -6
  504. package/bundle/skills/agentera/agents/research.toml +0 -6
  505. package/bundle/skills/agentera/agents/status.toml +0 -6
  506. package/bundle/skills/agentera/agents/vision.toml +0 -6
  507. package/bundle/skills/agentera/references/contract.md +0 -1048
  508. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  509. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  510. package/dist/analytics/extractCorpus/core.js.map +0 -1
  511. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  512. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  513. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  514. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  515. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  516. package/dist/analytics/extractCorpus/index.js.map +0 -1
  517. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  518. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  519. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  520. package/dist/analytics/extractCorpus.js.map +0 -1
  521. package/dist/analytics/usageStats.js.map +0 -1
  522. package/dist/bin/agentera.js.map +0 -1
  523. package/dist/capabilities/audit/instructions.js.map +0 -1
  524. package/dist/capabilities/build/instructions.js.map +0 -1
  525. package/dist/capabilities/design/instructions.js.map +0 -1
  526. package/dist/capabilities/discuss/instructions.js.map +0 -1
  527. package/dist/capabilities/document/instructions.js.map +0 -1
  528. package/dist/capabilities/index.js.map +0 -1
  529. package/dist/capabilities/optimize/instructions.js.map +0 -1
  530. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  531. package/dist/capabilities/plan/instructions.js.map +0 -1
  532. package/dist/capabilities/profile/instructions.js.map +0 -1
  533. package/dist/capabilities/research/instructions.js.map +0 -1
  534. package/dist/capabilities/status/instructions.js.map +0 -1
  535. package/dist/capabilities/vision/instructions.js.map +0 -1
  536. package/dist/cli/appContext.js.map +0 -1
  537. package/dist/cli/argvalidate.js.map +0 -1
  538. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  539. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  540. package/dist/cli/capabilityContext/build.js.map +0 -1
  541. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  542. package/dist/cli/capabilityContext/contract.js.map +0 -1
  543. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  544. package/dist/cli/capabilityContext/index.js.map +0 -1
  545. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  546. package/dist/cli/capabilityContext/planState.js.map +0 -1
  547. package/dist/cli/capabilityContext/progress.js.map +0 -1
  548. package/dist/cli/capabilityContext/shared.js.map +0 -1
  549. package/dist/cli/capabilityContext/slim.js.map +0 -1
  550. package/dist/cli/capabilityContext/startup.js.map +0 -1
  551. package/dist/cli/capabilityContext/types.js.map +0 -1
  552. package/dist/cli/capabilityContext.js.map +0 -1
  553. package/dist/cli/commands/appHome.js.map +0 -1
  554. package/dist/cli/commands/capability.js.map +0 -1
  555. package/dist/cli/commands/compact.js.map +0 -1
  556. package/dist/cli/commands/doctor.js.map +0 -1
  557. package/dist/cli/commands/lint.js.map +0 -1
  558. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  559. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  560. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  561. package/dist/cli/commands/prime/types.js.map +0 -1
  562. package/dist/cli/commands/prime/v1Migration.js +0 -39
  563. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  564. package/dist/cli/commands/prime.js.map +0 -1
  565. package/dist/cli/commands/query.js.map +0 -1
  566. package/dist/cli/commands/report.js.map +0 -1
  567. package/dist/cli/commands/schema.js.map +0 -1
  568. package/dist/cli/commands/state/decisions.js.map +0 -1
  569. package/dist/cli/commands/state/docs.js.map +0 -1
  570. package/dist/cli/commands/state/experiments.js.map +0 -1
  571. package/dist/cli/commands/state/health.js.map +0 -1
  572. package/dist/cli/commands/state/index.js.map +0 -1
  573. package/dist/cli/commands/state/objective.js.map +0 -1
  574. package/dist/cli/commands/state/plan.js.map +0 -1
  575. package/dist/cli/commands/state/progress.js.map +0 -1
  576. package/dist/cli/commands/state/shared.js.map +0 -1
  577. package/dist/cli/commands/state/todo.js.map +0 -1
  578. package/dist/cli/commands/upgrade.js.map +0 -1
  579. package/dist/cli/commands/validate.js.map +0 -1
  580. package/dist/cli/commands/verify.js.map +0 -1
  581. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  582. package/dist/cli/contracts/orientationState.js.map +0 -1
  583. package/dist/cli/dispatch/argvParser.js.map +0 -1
  584. package/dist/cli/dispatch/check.js.map +0 -1
  585. package/dist/cli/dispatch/commands.js.map +0 -1
  586. package/dist/cli/dispatch/index.js.map +0 -1
  587. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  588. package/dist/cli/dispatch/prime.js.map +0 -1
  589. package/dist/cli/dispatch/shared.js.map +0 -1
  590. package/dist/cli/dispatch/state.js.map +0 -1
  591. package/dist/cli/dispatch.js.map +0 -1
  592. package/dist/cli/errors.js.map +0 -1
  593. package/dist/cli/help.js.map +0 -1
  594. package/dist/cli/orientation/attention.js.map +0 -1
  595. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  596. package/dist/cli/orientation.js.map +0 -1
  597. package/dist/cli/prime-blob.js.map +0 -1
  598. package/dist/cli/startupCompletenessContract.js.map +0 -1
  599. package/dist/cli/stateQuery.js.map +0 -1
  600. package/dist/cli/structured.js.map +0 -1
  601. package/dist/cli/todoMarkdown.js.map +0 -1
  602. package/dist/cli/todoSeverity.js.map +0 -1
  603. package/dist/core/difflib.js.map +0 -1
  604. package/dist/core/envPaths.js.map +0 -1
  605. package/dist/core/jsonValue.js.map +0 -1
  606. package/dist/core/paths.js.map +0 -1
  607. package/dist/core/pyjson.js.map +0 -1
  608. package/dist/core/sourceRoot.js.map +0 -1
  609. package/dist/core/toml.js.map +0 -1
  610. package/dist/core/yaml.js.map +0 -1
  611. package/dist/eval/evalSkills.js.map +0 -1
  612. package/dist/eval/semanticEval.js.map +0 -1
  613. package/dist/eval/semanticFixtures.js.map +0 -1
  614. package/dist/hooks/common.js.map +0 -1
  615. package/dist/hooks/compaction/apply.js.map +0 -1
  616. package/dist/hooks/compaction/dryRun.js.map +0 -1
  617. package/dist/hooks/compaction/index.js.map +0 -1
  618. package/dist/hooks/compaction/parse.js.map +0 -1
  619. package/dist/hooks/compaction/retention.js.map +0 -1
  620. package/dist/hooks/compaction/status.js.map +0 -1
  621. package/dist/hooks/compaction/types.js.map +0 -1
  622. package/dist/hooks/cursorPreToolUse.js +0 -19
  623. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  624. package/dist/hooks/cursorSessionStart.js +0 -79
  625. package/dist/hooks/cursorSessionStart.js.map +0 -1
  626. package/dist/hooks/sessionStart.js +0 -216
  627. package/dist/hooks/sessionStart.js.map +0 -1
  628. package/dist/hooks/sessionStop.js +0 -206
  629. package/dist/hooks/sessionStop.js.map +0 -1
  630. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  631. package/dist/hooks/validateArtifact/index.js.map +0 -1
  632. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  633. package/dist/hooks/validateArtifact/runtime.js +0 -86
  634. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  635. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  636. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  637. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  638. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  639. package/dist/registries/artifactProtocolIds.js.map +0 -1
  640. package/dist/registries/artifactRegistry.js.map +0 -1
  641. package/dist/registries/capabilityContract.js.map +0 -1
  642. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  643. package/dist/registries/packageRegistry.js.map +0 -1
  644. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  645. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  646. package/dist/registries/triggerLoader.js.map +0 -1
  647. package/dist/release/releaseMetadata.js.map +0 -1
  648. package/dist/setup/codex/agents.js +0 -96
  649. package/dist/setup/codex/agents.js.map +0 -1
  650. package/dist/setup/codex/cli.js +0 -161
  651. package/dist/setup/codex/cli.js.map +0 -1
  652. package/dist/setup/codex/configToml.js +0 -639
  653. package/dist/setup/codex/configToml.js.map +0 -1
  654. package/dist/setup/codex/constants.js +0 -29
  655. package/dist/setup/codex/constants.js.map +0 -1
  656. package/dist/setup/codex/installRoot.js +0 -64
  657. package/dist/setup/codex/installRoot.js.map +0 -1
  658. package/dist/setup/codex/state.js +0 -270
  659. package/dist/setup/codex/state.js.map +0 -1
  660. package/dist/setup/codex.js +0 -12
  661. package/dist/setup/codex.js.map +0 -1
  662. package/dist/setup/copilot.js +0 -227
  663. package/dist/setup/copilot.js.map +0 -1
  664. package/dist/setup/cursor.js +0 -129
  665. package/dist/setup/cursor.js.map +0 -1
  666. package/dist/setup/cursorSurfaces.js +0 -67
  667. package/dist/setup/cursorSurfaces.js.map +0 -1
  668. package/dist/setup/doctor/core.js +0 -300
  669. package/dist/setup/doctor/core.js.map +0 -1
  670. package/dist/setup/doctor/diagnostics.js +0 -240
  671. package/dist/setup/doctor/diagnostics.js.map +0 -1
  672. package/dist/setup/doctor/opencode.js +0 -313
  673. package/dist/setup/doctor/opencode.js.map +0 -1
  674. package/dist/setup/doctor/report.js +0 -425
  675. package/dist/setup/doctor/report.js.map +0 -1
  676. package/dist/setup/doctor.js +0 -10
  677. package/dist/setup/doctor.js.map +0 -1
  678. package/dist/setup/opencode.js.map +0 -1
  679. package/dist/setup/smokeChecks.js.map +0 -1
  680. package/dist/state/installRoot.js.map +0 -1
  681. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  682. package/dist/state/startupAnalysis/contract.js.map +0 -1
  683. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  684. package/dist/state/startupAnalysis/index.js.map +0 -1
  685. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  686. package/dist/state/startupAnalysis/records.js.map +0 -1
  687. package/dist/state/startupAnalysis/report.js.map +0 -1
  688. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  689. package/dist/state/startupAnalysis.js.map +0 -1
  690. package/dist/upgrade/appContentRefresh.js.map +0 -1
  691. package/dist/upgrade/appModel.js.map +0 -1
  692. package/dist/upgrade/bundleEvidence.js.map +0 -1
  693. package/dist/upgrade/channels.js.map +0 -1
  694. package/dist/upgrade/coexistenceProbe.js +0 -107
  695. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  696. package/dist/upgrade/compatibility.js.map +0 -1
  697. package/dist/upgrade/doctor.js.map +0 -1
  698. package/dist/upgrade/doctorClassifier.js.map +0 -1
  699. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  700. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  701. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  702. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  703. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  704. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  705. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  706. package/dist/upgrade/projectIntegration.js.map +0 -1
  707. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  708. package/dist/upgrade/runtimeMigration.js.map +0 -1
  709. package/dist/upgrade/upgradeCommands.js.map +0 -1
  710. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  711. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  712. package/dist/upgrade/versionResolution.js.map +0 -1
  713. package/dist/validate/appHomeContract.js.map +0 -1
  714. package/dist/validate/capability.js.map +0 -1
  715. package/dist/validate/crossCapability.js.map +0 -1
  716. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  717. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  718. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  719. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  720. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  721. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  722. package/dist/validate/lifecycleAdapters.js +0 -62
  723. package/dist/validate/lifecycleAdapters.js.map +0 -1
  724. package/dist/validate/selfAudit.js.map +0 -1
  725. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -0,0 +1,55 @@
1
+ import fs from "node:fs";
2
+ import os from "node:os";
3
+ import path from "node:path";
4
+ import { resolveCandidate } from "../state/installRoot.js";
5
+ import { isProductV1PackageVersion, loadProductV1ResetAuthority, } from "../upgrade/productV1ResetAuthority.js";
6
+ import { emitStructured } from "./structured.js";
7
+ const authority = loadProductV1ResetAuthority();
8
+ function installedProductV1Evidence() {
9
+ const [installRoot] = resolveCandidate(null, { env: process.env, home: os.homedir() });
10
+ const manifest = path.join(installRoot, authority.installationPackage.manifest);
11
+ if (!fs.existsSync(manifest))
12
+ return null;
13
+ try {
14
+ const registry = JSON.parse(fs.readFileSync(manifest, "utf8"));
15
+ const version = registry.skills?.[0]?.version;
16
+ return typeof version === "string" && isProductV1PackageVersion(version) ? manifest : null;
17
+ }
18
+ catch {
19
+ return null;
20
+ }
21
+ }
22
+ export function productV1Evidence(projectRoot) {
23
+ const evidence = authority.projectArtifacts
24
+ .filter(({ triggersReset, path: relativePath }) => triggersReset && fs.existsSync(path.join(projectRoot, relativePath)))
25
+ .map(({ path: relativePath }) => path.join(projectRoot, relativePath));
26
+ const installation = installedProductV1Evidence();
27
+ if (installation)
28
+ evidence.push(installation);
29
+ return evidence;
30
+ }
31
+ /** Read-only EOL gate. */
32
+ export function enforceProductV1Eol(projectRoot, format, io = {}) {
33
+ const evidence = productV1Evidence(path.resolve(projectRoot));
34
+ if (evidence.length === 0)
35
+ return null;
36
+ const error = {
37
+ class: "product_v1_eol",
38
+ message: "Agentera product v1 is end-of-life and cannot be used by the v3 CLI.",
39
+ evidence,
40
+ reset_workflow: [
41
+ "Run agentera upgrade --reset-product-v1 --dry-run --format json.",
42
+ "Review every deletion, recreation, and irreversible loss in that preview.",
43
+ "Explicitly approve apply to remove scoped Agentera state and initialize fresh v3 state.",
44
+ ],
45
+ recovery: "Preview the product-v1 reset, then apply with --yes and the preview authorization; this command did not change state.",
46
+ };
47
+ if (format === "json" || format === "yaml") {
48
+ emitStructured({ schemaVersion: "agentera.stateFailure.v1", status: "fail", error }, format, io.out ?? ((text) => process.stdout.write(text)));
49
+ }
50
+ else {
51
+ const err = io.err ?? ((text) => process.stderr.write(text));
52
+ err(`Error: ${error.message}\nReset workflow: ${error.reset_workflow.join(" ")}\nRecovery: ${error.recovery}\n`);
53
+ }
54
+ return 1;
55
+ }
@@ -0,0 +1,167 @@
1
+ import fs from "node:fs";
2
+ import { TextDecoder } from "node:util";
3
+ import { personalProfileGrounding, PersonalGlossaryBoundaryError, } from "../analytics/personalGlossaryProfile.js";
4
+ import { personalProfileGroundingContract } from "../registries/glossaryEntryContract.js";
5
+ import { discoverSchemasDir } from "./appContext.js";
6
+ import { parseProfileHeaderDates, registryArtifactPath } from "./orientation.js";
7
+ const DEFAULT_STALE_DAYS = 7;
8
+ const STALE_DAYS_ENV = "AGENTERA_PROFILE_MAX_AGE_DAYS";
9
+ function errorCode(error) {
10
+ return typeof error === "object" && error !== null && "code" in error
11
+ ? String(error.code)
12
+ : undefined;
13
+ }
14
+ function sameIdentity(left, right) {
15
+ return left.dev === right.dev && left.ino === right.ino && left.mode === right.mode;
16
+ }
17
+ function sameSnapshot(left, right) {
18
+ return sameIdentity(left, right)
19
+ && left.size === right.size
20
+ && left.mtimeNs === right.mtimeNs
21
+ && left.ctimeNs === right.ctimeNs;
22
+ }
23
+ /** Read one path without following a final symlink and reject source changes. */
24
+ export function readProfileSourceSafely(profilePath, maxBytes, hooks = {}) {
25
+ let pathSnapshot;
26
+ try {
27
+ pathSnapshot = fs.lstatSync(profilePath, { bigint: true });
28
+ }
29
+ catch (error) {
30
+ return { status: errorCode(error) === "ENOENT" ? "absent" : "unreadable" };
31
+ }
32
+ if (!pathSnapshot.isFile() || pathSnapshot.isSymbolicLink())
33
+ return { status: "unsafe" };
34
+ hooks.afterPathSnapshot?.();
35
+ let fd;
36
+ try {
37
+ const noFollow = hooks.noFollowFlag ?? (fs.constants.O_NOFOLLOW ?? 0);
38
+ fd = fs.openSync(profilePath, fs.constants.O_RDONLY | noFollow);
39
+ }
40
+ catch (error) {
41
+ return { status: errorCode(error) === "ELOOP" ? "unsafe" : "unreadable" };
42
+ }
43
+ try {
44
+ const opened = fs.fstatSync(fd, { bigint: true });
45
+ if (!opened.isFile() || !sameIdentity(pathSnapshot, opened))
46
+ return { status: "unsafe" };
47
+ if (opened.size > BigInt(maxBytes))
48
+ return { status: "oversized" };
49
+ hooks.afterOpen?.();
50
+ const bytes = Buffer.alloc(maxBytes + 1);
51
+ let offset = 0;
52
+ while (offset < bytes.length) {
53
+ const read = fs.readSync(fd, bytes, offset, bytes.length - offset, offset);
54
+ if (read === 0)
55
+ break;
56
+ offset += read;
57
+ }
58
+ hooks.afterRead?.();
59
+ const afterRead = fs.fstatSync(fd, { bigint: true });
60
+ let currentPath;
61
+ try {
62
+ currentPath = fs.lstatSync(profilePath, { bigint: true });
63
+ }
64
+ catch {
65
+ return { status: "unsafe" };
66
+ }
67
+ if (!sameSnapshot(opened, afterRead) || !sameSnapshot(afterRead, currentPath)) {
68
+ return { status: "unsafe" };
69
+ }
70
+ if (offset > maxBytes)
71
+ return { status: "oversized" };
72
+ return { status: "ok", bytes: bytes.subarray(0, offset) };
73
+ }
74
+ catch {
75
+ return { status: "unreadable" };
76
+ }
77
+ finally {
78
+ try {
79
+ fs.closeSync(fd);
80
+ }
81
+ catch {
82
+ // The acquisition already has a bounded result; close diagnostics are private.
83
+ }
84
+ }
85
+ }
86
+ function staleThreshold(env) {
87
+ const parsed = Number.parseInt(env[STALE_DAYS_ENV] ?? String(DEFAULT_STALE_DAYS), 10);
88
+ return Number.isNaN(parsed) || parsed < 0 ? DEFAULT_STALE_DAYS : parsed;
89
+ }
90
+ function unknownFreshness(env) {
91
+ return {
92
+ state: "unknown",
93
+ days_since_generated: null,
94
+ stale_threshold_days: staleThreshold(env),
95
+ generated_date: null,
96
+ validated_date: null,
97
+ };
98
+ }
99
+ function freshness(text, env) {
100
+ const dates = parseProfileHeaderDates(text);
101
+ const anchor = dates.generatedUtc === null
102
+ ? dates.validatedUtc
103
+ : dates.validatedUtc === null
104
+ ? dates.generatedUtc
105
+ : Math.max(dates.generatedUtc, dates.validatedUtc);
106
+ const threshold = staleThreshold(env);
107
+ if (anchor === null) {
108
+ return { ...unknownFreshness(env), generated_date: dates.generatedDate, validated_date: dates.validatedDate };
109
+ }
110
+ const now = new Date();
111
+ const today = Date.UTC(now.getFullYear(), now.getMonth(), now.getDate());
112
+ const days = Math.round((today - anchor) / 86_400_000);
113
+ return {
114
+ state: days >= threshold ? "stale" : "current",
115
+ days_since_generated: days,
116
+ stale_threshold_days: threshold,
117
+ generated_date: dates.generatedDate,
118
+ validated_date: dates.validatedDate,
119
+ };
120
+ }
121
+ function result(profilePath, env, status, validityClass, recovery) {
122
+ return {
123
+ validity: { status, class: validityClass, recovery },
124
+ freshness: unknownFreshness(env),
125
+ profilePath,
126
+ groundingContent: null,
127
+ };
128
+ }
129
+ export function acquireProfile(schemasDir, env = process.env, hooks = {}) {
130
+ const contract = personalProfileGroundingContract();
131
+ let profilePath;
132
+ try {
133
+ profilePath = registryArtifactPath("profile", schemasDir ?? discoverSchemasDir(), env, { warn: false });
134
+ }
135
+ catch {
136
+ return result(null, env, "repair_needed", "unsafe", contract.repairRecovery);
137
+ }
138
+ const source = readProfileSourceSafely(profilePath, contract.maxProfileUtf8Bytes, hooks);
139
+ if (source.status === "absent") {
140
+ return result(profilePath, env, "absent", "absent", contract.absentRecovery);
141
+ }
142
+ if (source.status !== "ok") {
143
+ return result(profilePath, env, "repair_needed", source.status, contract.repairRecovery);
144
+ }
145
+ let decoded;
146
+ try {
147
+ decoded = new TextDecoder("utf-8", { fatal: true, ignoreBOM: true }).decode(source.bytes);
148
+ }
149
+ catch {
150
+ return result(profilePath, env, "repair_needed", "invalid_utf8", contract.repairRecovery);
151
+ }
152
+ try {
153
+ const groundingContent = personalProfileGrounding(decoded);
154
+ return {
155
+ validity: { status: "valid", class: "valid", recovery: null },
156
+ freshness: freshness(decoded, env),
157
+ profilePath,
158
+ groundingContent,
159
+ };
160
+ }
161
+ catch (error) {
162
+ const validityClass = error instanceof PersonalGlossaryBoundaryError
163
+ ? error.availability
164
+ : "malformed";
165
+ return result(profilePath, env, "repair_needed", validityClass, contract.repairRecovery);
166
+ }
167
+ }
@@ -1,8 +1,8 @@
1
+ import { STATE_FAMILY_FALLBACK_COMMANDS, STATE_FAMILY_LIST_COMMANDS } from "./capabilityContext/types.js";
1
2
  export const STARTUP_AVAILABLE_STATE_FIELDS = [
2
3
  "app_home",
3
4
  "mode",
4
5
  "profile",
5
- "v1_migration",
6
6
  "health",
7
7
  "todo",
8
8
  "plan",
@@ -21,13 +21,13 @@ export const STARTUP_AVAILABLE_STATE_FIELDS = [
21
21
  "execution_context",
22
22
  ];
23
23
  export const STARTUP_COMPLETENESS_CONFIDENCE_CAVEATS = [
24
- "representative benchmark evidence exists, but claude-code and github-copilot coverage is degraded by schema divergence",
24
+ "representative benchmark evidence exists, but some source products remain degraded by schema divergence",
25
25
  "Audit evidence context uses existing status, plan, progress, docs, health, TODO, and decisions state outputs",
26
26
  ];
27
27
  export const STARTUP_COMPLETENESS_CLI_FALLBACK = [
28
- "agentera plan --format json",
29
- "agentera docs --format json",
30
- "agentera progress --format json",
28
+ STATE_FAMILY_FALLBACK_COMMANDS.plan,
29
+ STATE_FAMILY_FALLBACK_COMMANDS.docs,
30
+ STATE_FAMILY_LIST_COMMANDS.progress,
31
31
  ];
32
32
  export function startupCompletenessContract(input = {}) {
33
33
  const missingState = [];
@@ -35,15 +35,18 @@ export function startupCompletenessContract(input = {}) {
35
35
  if (schemaError) {
36
36
  missingState.push(schemaError);
37
37
  }
38
- if (input.profileStatus === "not found") {
38
+ if (input.profileStatus === "not found")
39
39
  missingState.push("profile not found");
40
- }
40
+ if (input.profileStatus === "absent")
41
+ missingState.push("profile absent");
42
+ if (input.profileStatus === "repair_needed")
43
+ missingState.push("profile repair needed");
41
44
  const complete = missingState.length === 0;
42
45
  return {
43
46
  complete_for_capability_startup: complete,
44
47
  raw_artifact_reads_required: false,
45
48
  raw_artifact_read_policy: "Do not read raw artifacts when complete_for_capability_startup is true. " +
46
- "When incomplete, try cli_fallback first; raw artifact reads are only a last-resort fallback.",
49
+ "When incomplete, try cli_fallback first; raw reads are permitted only for a named corruption or CLI-defect diagnostic.",
47
50
  available_state: [...STARTUP_AVAILABLE_STATE_FIELDS],
48
51
  missing_state: missingState,
49
52
  confidence_caveats: [...STARTUP_COMPLETENESS_CONFIDENCE_CAVEATS],
@@ -53,4 +56,3 @@ export function startupCompletenessContract(input = {}) {
53
56
  export function capabilityStartupComplete(input = {}) {
54
57
  return Boolean(startupCompletenessContract(input).complete_for_capability_startup);
55
58
  }
56
- //# sourceMappingURL=startupCompletenessContract.js.map
@@ -5,8 +5,11 @@ import { loadYamlMapping } from "../core/yaml.js";
5
5
  import { activeAppModel, discoverSchemasDir } from "./appContext.js";
6
6
  import { validateAgentString, validateIdentifier } from "./argvalidate.js";
7
7
  import { emitStructured } from "./structured.js";
8
+ import { truncateCodePoints } from "../core/text.js";
9
+ import { boundStructuredProjection } from "../state/projectionPolicy.js";
10
+ import { preCutoverCommand } from "./preCutoverCommand.js";
8
11
  /** Shared state-query infrastructure ported from scripts/agentera. */
9
- export const REQUIRED_SPARSE_CONTEXT_FIELDS = ["command", "status"];
12
+ export const REQUIRED_SPARSE_CONTEXT_FIELDS = ["command", "outcome"];
10
13
  export const ROUTINE_STRUCTURED_FIELDS = [
11
14
  "command",
12
15
  "status",
@@ -15,18 +18,51 @@ export const ROUTINE_STRUCTURED_FIELDS = [
15
18
  "source",
16
19
  "filters",
17
20
  "summary",
21
+ "plans",
18
22
  "source_contract",
19
23
  ];
24
+ /** Canonical structured field set for the bare prime orientation briefing.
25
+ * `agentera schema` discovery, the emitted prime JSON `source_contract.fields`,
26
+ * and the text-mode source-contract line derive from this list. The shared skill
27
+ * is the permanent host integration authority. The published bare-prime shape
28
+ * stays stable: omission of default-only conditional payload is governed by
29
+ * `state_presence` (missing-vs-empty) and named recovery commands, not by
30
+ * trimming this set. */
31
+ export const PRIME_STRUCTURED_FIELDS = [
32
+ "command", "outcome", "app_home", "app", "mode", "health",
33
+ "todo", "plan", "docs", "progress", "objective", "state_presence", "shared_skill", "project_integration", "attention",
34
+ "history",
35
+ "decision_attention", "next_action", "orchestration_context", "closeout_context",
36
+ "evidence_context", "benchmark_context", "execution_context", "startup", "source", "source_contract",
37
+ ];
38
+ /** Retired prime fields that receive one structured correction instead of
39
+ * falling through to the generic unsupported-field error. */
40
+ export const RETIRED_PRIME_FIELD_CORRECTIONS = {
41
+ issues: "todo",
42
+ };
43
+ /** Field declared available on the prime selector but emitted only by the
44
+ * `prime --context <capability>` surface, not by the bare default briefing.
45
+ * The bare briefing carries it as a `source_contract.capability_context`
46
+ * pointer with a `fetch_command`. */
47
+ export const PRIME_CONTEXT_ONLY_FIELDS = ["capability_context"];
48
+ /** Fields selectable via `prime [--context <cap>] --fields`. Derives the
49
+ * canonical structured set and the context-only `capability_context` pointer
50
+ * from one authority, so schema discovery and the prime selector cannot drift. */
51
+ export function availablePrimeFields(command) {
52
+ return command === "prime"
53
+ ? [...PRIME_STRUCTURED_FIELDS, ...PRIME_CONTEXT_ONLY_FIELDS]
54
+ : [...PRIME_STRUCTURED_FIELDS];
55
+ }
20
56
  export const COMMAND_FILTERS = {
21
57
  prime: [],
22
- plan: ["status"],
23
- progress: ["topic", "status", "limit"],
24
- health: ["dimension"],
58
+ plan: ["status", "limit", "cursor"],
59
+ progress: ["topic", "status", "limit", "cursor"],
60
+ health: ["dimension", "limit", "cursor"],
25
61
  todo: ["severity", "status"],
26
- decisions: ["topic"],
62
+ decisions: ["topic", "limit", "cursor"],
27
63
  docs: ["topic", "status"],
28
64
  objective: ["status"],
29
- experiments: ["topic", "status", "limit"],
65
+ experiments: ["topic", "status", "limit", "cursor", "objective"],
30
66
  query: ["list_artifacts", "topic", "severity", "dimension", "status", "limit"],
31
67
  };
32
68
  export function appModelPayload(model = activeAppModel()) {
@@ -40,8 +76,8 @@ export function surfaceMissingMessage(surface, p, model = activeAppModel()) {
40
76
  return (`${surface} is missing. Agentera cannot find it at ${p}. ` +
41
77
  `Agentera directory: ${payload.appHome}. ` +
42
78
  `App files directory: ${payload.managedAppRoot}. ` +
43
- "Run `agentera doctor` to preview the repair; run " +
44
- "`agentera doctor --format json` for structured details. " +
79
+ `Run \`${preCutoverCommand("doctor")}\` to preview the repair; run ` +
80
+ `\`${preCutoverCommand("doctor --format json")}\` for structured details. ` +
45
81
  `Technical details: appHome=${payload.appHome} managedAppRoot=${payload.managedAppRoot} ` +
46
82
  `skillRoot=${payload.skillRoot} runtimeRoot=${payload.runtimeRoot}.`);
47
83
  }
@@ -111,13 +147,13 @@ function pyReprInner(val) {
111
147
  export function formatScalar(val) {
112
148
  if (Array.isArray(val) || (val !== null && typeof val === "object")) {
113
149
  const s = pyStr(val);
114
- return s.length > 80 ? s.slice(0, 80) + "..." : s;
150
+ return truncateCodePoints(s, 80, "...");
115
151
  }
116
152
  return pyStr(val);
117
153
  }
118
154
  export function truncate(value, limit = 110) {
119
155
  const text = formatScalar(value).replace(/\n/g, " ");
120
- return text.length > limit ? text.slice(0, limit - 3) + "..." : text;
156
+ return truncateCodePoints(text, limit, "...");
121
157
  }
122
158
  export function asList(value) {
123
159
  return Array.isArray(value) ? value : [];
@@ -289,7 +325,7 @@ export function emitStateStructured(command, value, format, fieldsArg, out, err)
289
325
  const selected = selectStructuredFields(command, value, fieldsArg, err);
290
326
  if (selected === null)
291
327
  return 1;
292
- emitStructured(selected, format, out);
328
+ emitStructured(boundStructuredProjection(selected, command, format), format, out);
293
329
  return 0;
294
330
  }
295
331
  export function validateFilterValues(args, names) {
@@ -303,4 +339,3 @@ export function validateFilterValues(args, names) {
303
339
  }
304
340
  }
305
341
  }
306
- //# sourceMappingURL=stateQuery.js.map
@@ -15,4 +15,3 @@ export function emitStructured(value, outputFormat, out) {
15
15
  out(YAML.stringify(value, { sortMapEntries: false }));
16
16
  }
17
17
  }
18
- //# sourceMappingURL=structured.js.map
@@ -2,10 +2,9 @@
2
2
  * Markdown TODO list-item parsing for GitHub checkboxes and Agentera type tags.
3
3
  */
4
4
  const TODO_LIST_ITEM_RE = /^- \[([^\]]+)\]\s+(.*)/;
5
- /** GitHub task-list checkbox tokens (inner bracket content). */
6
- function isGithubCheckboxOpen(token) {
7
- return token === " ";
8
- }
5
+ const TODO_TYPE_TAG_RE = /^\[([a-z][a-z0-9_-]*)(?::([^\]\s]+))?\]\s+(.*)$/;
6
+ const TODO_LEGACY_ID_RE = /^(?:(\[[a-z][a-z0-9_-]*(?::[^\]\s]+)?\]\s+))?`([a-z]{10})`\s+(.*)$/;
7
+ const TODO_ID_TAG_RE = /^\[id:([a-z]{10})\]\s+(.*)$/;
9
8
  function isGithubCheckboxResolved(token) {
10
9
  return token.toLowerCase() === "x";
11
10
  }
@@ -19,15 +18,29 @@ export function parseTodoMarkdownListItem(line) {
19
18
  return null;
20
19
  const token = m[1];
21
20
  const rest = m[2].trim();
22
- if (isGithubCheckboxResolved(token)) {
23
- return { status: "resolved", description: rest };
24
- }
25
- if (isGithubCheckboxOpen(token)) {
26
- return { status: "open", description: rest };
27
- }
28
- return { status: "open", description: rest };
21
+ const explicitId = TODO_ID_TAG_RE.exec(rest);
22
+ const legacyId = explicitId ? null : TODO_LEGACY_ID_RE.exec(rest);
23
+ const id = explicitId?.[1] ?? legacyId?.[2];
24
+ const publicRest = explicitId?.[2]?.trim()
25
+ ?? (legacyId ? `${legacyId[1] ?? ""}${legacyId[3]}`.trim() : rest);
26
+ const typed = TODO_TYPE_TAG_RE.exec(publicRest) ?? TODO_TYPE_TAG_RE.exec(`[${token}] ${publicRest}`);
27
+ const status = isGithubCheckboxResolved(token) ? "resolved" : "open";
28
+ return {
29
+ status,
30
+ description: rest,
31
+ ...(typed ? { kind: typed[1], target_version: typed[2] ?? null, title: typed[3].trim() } : { title: publicRest }),
32
+ ...(id ? { id } : {}),
33
+ ...(publicRest !== rest ? { public_description: publicRest } : {}),
34
+ };
29
35
  }
30
36
  export function isResolvedTodoMarkdownStatus(status) {
31
37
  return status === "resolved";
32
38
  }
33
- //# sourceMappingURL=todoMarkdown.js.map
39
+ export function renderTodoPublicRecord(record) {
40
+ if (typeof record.title === "string" && record.title.trim()) {
41
+ const kind = typeof record.kind === "string" && record.kind.trim() ? record.kind : "task";
42
+ const target = typeof record.target_version === "string" && record.target_version.trim() ? `:${record.target_version}` : "";
43
+ return `[${kind}${target}] ${record.title.trim()}`;
44
+ }
45
+ return String(record.description ?? "");
46
+ }
@@ -0,0 +1,192 @@
1
+ import path from "node:path";
2
+ import { preCutoverCommand } from "./preCutoverCommand.js";
3
+ import { loadTodoReadinessContract } from "../registries/todoReadinessContract.js";
4
+ import { TODO_SEVERITY_ORDER } from "./todoSeverity.js";
5
+ import { renderTodoPublicRecord } from "./todoMarkdown.js";
6
+ function mapping(value) {
7
+ return value !== null && typeof value === "object" && !Array.isArray(value);
8
+ }
9
+ function validProjectedOrder(value) {
10
+ if (!mapping(value))
11
+ return false;
12
+ if (value.kind === "absent")
13
+ return Object.keys(value).length === 1;
14
+ return value.kind === "managed"
15
+ && Object.keys(value).sort().join(",") === "kind,markdownOrder"
16
+ && Number.isSafeInteger(value.markdownOrder)
17
+ && Number(value.markdownOrder) > 0;
18
+ }
19
+ function projectedMode(entities) {
20
+ const declared = entities.filter((entity) => Object.hasOwn(entity, "projectedOrder"));
21
+ if (!declared.length)
22
+ return false;
23
+ if (declared.length !== entities.length || declared.some((entity) => !validProjectedOrder(entity.projectedOrder))) {
24
+ throw new Error("projected TODO readiness requires one valid projectedOrder for every entity");
25
+ }
26
+ return true;
27
+ }
28
+ function compareProjectedOrder(left, right) {
29
+ const a = left.projectedOrder;
30
+ const b = right.projectedOrder;
31
+ if (a.kind !== b.kind)
32
+ return a.kind === "managed" ? -1 : 1;
33
+ if (a.kind === "managed" && b.kind === "managed")
34
+ return a.markdownOrder - b.markdownOrder || left.id.localeCompare(right.id);
35
+ return (left.queueRank ?? Number.MAX_SAFE_INTEGER) - (right.queueRank ?? Number.MAX_SAFE_INTEGER) || left.id.localeCompare(right.id);
36
+ }
37
+ function dependencies(readiness) {
38
+ return Array.isArray(readiness.dependencies)
39
+ ? readiness.dependencies.filter(mapping)
40
+ : [];
41
+ }
42
+ function hasDependencyCycle(itemId, byId) {
43
+ const visit = (id, visiting, visited) => {
44
+ if (visiting.has(id))
45
+ return true;
46
+ if (visited.has(id))
47
+ return false;
48
+ const entity = byId.get(id);
49
+ const readiness = mapping(entity?.record.readiness) ? entity.record.readiness : null;
50
+ if (!readiness)
51
+ return false;
52
+ visiting.add(id);
53
+ for (const dependency of dependencies(readiness)) {
54
+ if (dependency.artifact === "todo" && typeof dependency.id === "string") {
55
+ if (visit(dependency.id, visiting, visited))
56
+ return true;
57
+ }
58
+ }
59
+ visiting.delete(id);
60
+ visited.add(id);
61
+ return false;
62
+ };
63
+ return visit(itemId, new Set(), new Set());
64
+ }
65
+ export function evaluateTodoReadinessQueue(entities, sourceRoot) {
66
+ if (entities.length === 0) {
67
+ return {
68
+ selected: null,
69
+ evaluations: [],
70
+ triage: { count: 0, bounded: true, recovery: null },
71
+ abstainRecovery: null,
72
+ };
73
+ }
74
+ const contract = sourceRoot
75
+ ? loadTodoReadinessContract(path.join(sourceRoot, "skills/agentera/schemas/artifacts/todo.yaml"), path.join(sourceRoot, "skills/agentera/protocol.yaml"), path.join(sourceRoot, "skills/agentera/capability_schema_contract.yaml"))
76
+ : loadTodoReadinessContract();
77
+ const projected = projectedMode(entities);
78
+ const byId = new Map(entities.map((entity) => [entity.id, entity]));
79
+ const evaluate = (entity) => {
80
+ const { record } = entity;
81
+ const readiness = mapping(record.readiness) ? record.readiness : null;
82
+ const dependencyList = readiness ? dependencies(readiness) : [];
83
+ let outcome = "actionable";
84
+ let declaredRecovery = null;
85
+ if (record.status === "resolved")
86
+ outcome = "todo_resolved";
87
+ else if (!readiness)
88
+ outcome = "readiness_absent";
89
+ else if (readiness.blocked !== null) {
90
+ outcome = "blocked";
91
+ declaredRecovery = mapping(readiness.blocked) && typeof readiness.blocked.recovery === "string"
92
+ ? readiness.blocked.recovery
93
+ : null;
94
+ }
95
+ else if (mapping(readiness.gate) && readiness.gate.state === "pending") {
96
+ outcome = "gate_pending";
97
+ declaredRecovery = typeof readiness.gate.recovery === "string" ? readiness.gate.recovery : null;
98
+ }
99
+ else if (dependencyList.some((dependency) => dependency.artifact !== "todo")) {
100
+ outcome = "dependency_cross_artifact";
101
+ }
102
+ else if (dependencyList.some((dependency) => typeof dependency.id !== "string" || !byId.has(dependency.id))) {
103
+ outcome = "dependency_missing";
104
+ }
105
+ else if (hasDependencyCycle(entity.id, byId)) {
106
+ outcome = "dependency_cycle";
107
+ }
108
+ else if (dependencyList.some((dependency) => byId.get(String(dependency.id))?.record.status !== "resolved")) {
109
+ outcome = "dependency_open";
110
+ }
111
+ const authority = contract.outcomes[outcome];
112
+ const capability = readiness && typeof readiness.capability === "string" ? readiness.capability : undefined;
113
+ const queueRank = readiness && Number.isInteger(readiness.queue_rank) ? Number(readiness.queue_rank) : undefined;
114
+ return {
115
+ id: entity.id,
116
+ artifact: entity.artifact,
117
+ severity: String(record.severity ?? "normal"),
118
+ description: renderTodoPublicRecord(record),
119
+ outcome,
120
+ result: String(authority.result),
121
+ eligible: authority.eligible === true,
122
+ attention: String(authority.attention),
123
+ recovery: declaredRecovery ?? (typeof authority.recovery === "string" ? authority.recovery : null),
124
+ retrieval: { exact: preCutoverCommand(`state todo get --id ${entity.id} --format json`) },
125
+ ...(capability ? {
126
+ capability,
127
+ phase: contract.phaseByCapability.get(capability),
128
+ reason: typeof readiness?.reason === "string" ? readiness.reason : "",
129
+ } : {}),
130
+ ...(queueRank === undefined ? {} : { queueRank }),
131
+ ...(projected ? { projectedOrder: entity.projectedOrder } : {}),
132
+ };
133
+ };
134
+ const evaluations = entities.map(evaluate);
135
+ const actionable = evaluations.filter((entry) => entry.eligible);
136
+ if (!projected) {
137
+ const ranks = new Map();
138
+ for (const entry of actionable) {
139
+ const key = `${entry.severity}\0${String(entry.queueRank)}`;
140
+ ranks.set(key, [...(ranks.get(key) ?? []), entry]);
141
+ }
142
+ for (const conflicts of ranks.values()) {
143
+ if (conflicts.length < 2)
144
+ continue;
145
+ const authority = contract.outcomes.ordering_conflict;
146
+ for (const entry of conflicts) {
147
+ entry.outcome = "ordering_conflict";
148
+ entry.result = String(authority.result);
149
+ entry.eligible = false;
150
+ entry.attention = String(authority.attention);
151
+ entry.recovery = typeof authority.recovery === "string" ? authority.recovery : null;
152
+ }
153
+ }
154
+ }
155
+ const selected = evaluations
156
+ .filter((entry) => entry.eligible)
157
+ .sort((left, right) => (TODO_SEVERITY_ORDER[left.severity] ?? TODO_SEVERITY_ORDER.normal)
158
+ - (TODO_SEVERITY_ORDER[right.severity] ?? TODO_SEVERITY_ORDER.normal)
159
+ || (projected
160
+ ? compareProjectedOrder(left, right)
161
+ : (left.queueRank ?? Number.MAX_SAFE_INTEGER) - (right.queueRank ?? Number.MAX_SAFE_INTEGER) || left.id.localeCompare(right.id)))[0] ?? null;
162
+ const triageCount = evaluations.filter((entry) => entry.attention === "item").length;
163
+ const mixedRecovery = contract.queueOutcomes.mixed_actionable_and_triage?.recovery;
164
+ const queueRecovery = contract.queueOutcomes.all_non_actionable?.recovery;
165
+ const nonActionable = evaluations
166
+ .filter((entry) => !entry.eligible && entry.result !== "resolved")
167
+ .sort((left, right) => (TODO_SEVERITY_ORDER[left.severity] ?? TODO_SEVERITY_ORDER.normal)
168
+ - (TODO_SEVERITY_ORDER[right.severity] ?? TODO_SEVERITY_ORDER.normal)
169
+ || contract.precedence.indexOf(left.outcome) - contract.precedence.indexOf(right.outcome)
170
+ || (left.queueRank ?? Number.MAX_SAFE_INTEGER) - (right.queueRank ?? Number.MAX_SAFE_INTEGER));
171
+ const recoveryCandidate = nonActionable[0];
172
+ const equallyRankedRecoveries = recoveryCandidate
173
+ ? new Set(nonActionable
174
+ .filter((entry) => entry.severity === recoveryCandidate.severity
175
+ && entry.outcome === recoveryCandidate.outcome
176
+ && entry.queueRank === recoveryCandidate.queueRank)
177
+ .map((entry) => entry.recovery))
178
+ : new Set();
179
+ const abstainRecovery = equallyRankedRecoveries.size === 1
180
+ ? recoveryCandidate?.recovery ?? null
181
+ : typeof queueRecovery === "string" ? queueRecovery : null;
182
+ return {
183
+ selected,
184
+ evaluations,
185
+ triage: {
186
+ count: triageCount,
187
+ bounded: true,
188
+ recovery: triageCount > 0 && typeof mixedRecovery === "string" ? mixedRecovery : null,
189
+ },
190
+ abstainRecovery: !selected ? abstainRecovery : null,
191
+ };
192
+ }
@@ -16,4 +16,3 @@ export const TODO_SEVERITY_ORDER = {
16
16
  info: 3,
17
17
  annoying: 3,
18
18
  };
19
- //# sourceMappingURL=todoSeverity.js.map
@@ -0,0 +1,23 @@
1
+ import fs from "node:fs";
2
+ export function writeFileAtomic(target, data, encoding = "utf8", options = {}) {
3
+ const targetMode = options.preserveTargetMode ? fs.statSync(target).mode & 0o777 : undefined;
4
+ const tmp = `${target}.tmp.${process.pid}.${Date.now()}`;
5
+ try {
6
+ if (Buffer.isBuffer(data))
7
+ fs.writeFileSync(tmp, data);
8
+ else
9
+ fs.writeFileSync(tmp, data, encoding);
10
+ if (targetMode !== undefined)
11
+ fs.chmodSync(tmp, targetMode);
12
+ fs.renameSync(tmp, target);
13
+ }
14
+ catch (err) {
15
+ try {
16
+ fs.unlinkSync(tmp);
17
+ }
18
+ catch {
19
+ // The stage may not exist or may already have been published.
20
+ }
21
+ throw err;
22
+ }
23
+ }
@@ -0,0 +1 @@
1
+ export const CANONICAL_DEVELOPMENT_CLI = "npx -y agentera@next";