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,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,3 +1,4 @@
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",
@@ -21,13 +22,13 @@ export const STARTUP_AVAILABLE_STATE_FIELDS = [
21
22
  "execution_context",
22
23
  ];
23
24
  export const STARTUP_COMPLETENESS_CONFIDENCE_CAVEATS = [
24
- "representative benchmark evidence exists, but claude-code and github-copilot coverage is degraded by schema divergence",
25
+ "representative benchmark evidence exists, but some source products remain degraded by schema divergence",
25
26
  "Audit evidence context uses existing status, plan, progress, docs, health, TODO, and decisions state outputs",
26
27
  ];
27
28
  export const STARTUP_COMPLETENESS_CLI_FALLBACK = [
28
- "agentera plan --format json",
29
- "agentera docs --format json",
30
- "agentera progress --format json",
29
+ STATE_FAMILY_FALLBACK_COMMANDS.plan,
30
+ STATE_FAMILY_FALLBACK_COMMANDS.docs,
31
+ STATE_FAMILY_LIST_COMMANDS.progress,
31
32
  ];
32
33
  export function startupCompletenessContract(input = {}) {
33
34
  const missingState = [];
@@ -35,15 +36,18 @@ export function startupCompletenessContract(input = {}) {
35
36
  if (schemaError) {
36
37
  missingState.push(schemaError);
37
38
  }
38
- if (input.profileStatus === "not found") {
39
+ if (input.profileStatus === "not found")
39
40
  missingState.push("profile not found");
40
- }
41
+ if (input.profileStatus === "absent")
42
+ missingState.push("profile absent");
43
+ if (input.profileStatus === "repair_needed")
44
+ missingState.push("profile repair needed");
41
45
  const complete = missingState.length === 0;
42
46
  return {
43
47
  complete_for_capability_startup: complete,
44
48
  raw_artifact_reads_required: false,
45
49
  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.",
50
+ "When incomplete, try cli_fallback first; raw reads are permitted only for a named corruption or CLI-defect diagnostic.",
47
51
  available_state: [...STARTUP_AVAILABLE_STATE_FIELDS],
48
52
  missing_state: missingState,
49
53
  confidence_caveats: [...STARTUP_COMPLETENESS_CONFIDENCE_CAVEATS],
@@ -53,4 +57,3 @@ export function startupCompletenessContract(input = {}) {
53
57
  export function capabilityStartupComplete(input = {}) {
54
58
  return Boolean(startupCompletenessContract(input).complete_for_capability_startup);
55
59
  }
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", "v1_migration", "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";