agentera 3.0.0-dev.7 → 3.0.0-dev.72

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 (723) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +118 -22
  3. package/bundle/CHANGELOG.md +1361 -0
  4. package/bundle/DESIGN.md +229 -0
  5. package/bundle/LICENSE +201 -0
  6. package/bundle/README.md +143 -0
  7. package/bundle/UPGRADE.md +252 -0
  8. package/bundle/extract-corpus-parity.json +2 -4
  9. package/bundle/fixtures/routing/hybrid-corpus.yaml +154 -0
  10. package/bundle/references/adapters/package-publication.json +488 -0
  11. package/bundle/references/adapters/package-registry.yaml +435 -188
  12. package/bundle/references/adapters/package-surface-characterization.md +66 -34
  13. package/bundle/references/adapters/runtime-lifecycle-adapters.yaml +74 -0
  14. package/bundle/references/adapters/runtime-lifecycle-authority.yaml +62 -0
  15. package/bundle/references/adapters/runtime-lifecycle-operation-contract.yaml +84 -0
  16. package/bundle/references/adapters/runtime-retired-resources.yaml +333 -0
  17. package/bundle/references/analysis/evidence-tier-authority.yaml +518 -0
  18. package/bundle/references/analysis/verification-policy.yaml +266 -0
  19. package/bundle/references/artifacts/artifact-registry-interface-model.yaml +17 -8
  20. package/bundle/references/artifacts/glossary-entry-contract.yaml +1254 -0
  21. package/bundle/references/artifacts/state-storage-authority.yaml +3061 -0
  22. package/bundle/references/artifacts/verbosity-budget-authority.yaml +42 -0
  23. package/bundle/references/cli/app-lifecycle-vocabulary.yaml +3 -4
  24. package/bundle/references/cli/capability-instruction-contract.yaml +11 -14
  25. package/bundle/references/cli/hybrid-route-contract.yaml +438 -0
  26. package/bundle/references/cli/routing-model.md +152 -93
  27. package/bundle/references/cli/trigger-schema-enrichment.md +57 -46
  28. package/bundle/references/cli/update-channels.yaml +4 -2
  29. package/bundle/references/cli/vocabulary-index.yaml +5 -7
  30. package/bundle/references/cli/vocabulary.md +51 -93
  31. package/bundle/references/meta/retained-reference-authority.yaml +151 -0
  32. package/bundle/skills/agentera/SKILL.md +183 -63
  33. package/bundle/skills/agentera/capabilities/audit/schemas/artifacts.yaml +27 -19
  34. package/bundle/skills/agentera/capabilities/audit/schemas/exit.yaml +2 -2
  35. package/bundle/skills/agentera/capabilities/audit/schemas/triggers.yaml +13 -35
  36. package/bundle/skills/agentera/capabilities/audit/schemas/validation.yaml +30 -11
  37. package/bundle/skills/agentera/capabilities/build/schemas/artifacts.yaml +44 -21
  38. package/bundle/skills/agentera/capabilities/build/schemas/exit.yaml +8 -6
  39. package/bundle/skills/agentera/capabilities/build/schemas/triggers.yaml +14 -36
  40. package/bundle/skills/agentera/capabilities/build/schemas/validation.yaml +95 -21
  41. package/bundle/skills/agentera/capabilities/design/schemas/artifacts.yaml +6 -6
  42. package/bundle/skills/agentera/capabilities/design/schemas/exit.yaml +5 -5
  43. package/bundle/skills/agentera/capabilities/design/schemas/triggers.yaml +5 -34
  44. package/bundle/skills/agentera/capabilities/design/schemas/validation.yaml +2 -2
  45. package/bundle/skills/agentera/capabilities/discuss/schemas/artifacts.yaml +17 -13
  46. package/bundle/skills/agentera/capabilities/discuss/schemas/exit.yaml +2 -2
  47. package/bundle/skills/agentera/capabilities/discuss/schemas/triggers.yaml +6 -40
  48. package/bundle/skills/agentera/capabilities/discuss/schemas/validation.yaml +72 -5
  49. package/bundle/skills/agentera/capabilities/document/schemas/artifacts.yaml +24 -17
  50. package/bundle/skills/agentera/capabilities/document/schemas/triggers.yaml +5 -35
  51. package/bundle/skills/agentera/capabilities/document/schemas/validation.yaml +13 -13
  52. package/bundle/skills/agentera/capabilities/optimize/schemas/artifacts.yaml +10 -10
  53. package/bundle/skills/agentera/capabilities/optimize/schemas/exit.yaml +2 -2
  54. package/bundle/skills/agentera/capabilities/optimize/schemas/triggers.yaml +4 -35
  55. package/bundle/skills/agentera/capabilities/optimize/schemas/validation.yaml +3 -3
  56. package/bundle/skills/agentera/capabilities/orchestrate/schemas/artifacts.yaml +34 -22
  57. package/bundle/skills/agentera/capabilities/orchestrate/schemas/exit.yaml +9 -7
  58. package/bundle/skills/agentera/capabilities/orchestrate/schemas/triggers.yaml +5 -37
  59. package/bundle/skills/agentera/capabilities/orchestrate/schemas/validation.yaml +38 -37
  60. package/bundle/skills/agentera/capabilities/plan/schemas/artifacts.yaml +20 -16
  61. package/bundle/skills/agentera/capabilities/plan/schemas/triggers.yaml +8 -31
  62. package/bundle/skills/agentera/capabilities/plan/schemas/validation.yaml +66 -6
  63. package/bundle/skills/agentera/capabilities/profile/schemas/artifacts.yaml +9 -4
  64. package/bundle/skills/agentera/capabilities/profile/schemas/exit.yaml +4 -4
  65. package/bundle/skills/agentera/capabilities/profile/schemas/triggers.yaml +8 -37
  66. package/bundle/skills/agentera/capabilities/profile/schemas/validation.yaml +61 -3
  67. package/bundle/skills/agentera/capabilities/research/schemas/artifacts.yaml +6 -6
  68. package/bundle/skills/agentera/capabilities/research/schemas/triggers.yaml +5 -29
  69. package/bundle/skills/agentera/capabilities/status/schemas/artifacts.yaml +13 -12
  70. package/bundle/skills/agentera/capabilities/status/schemas/triggers.yaml +7 -49
  71. package/bundle/skills/agentera/capabilities/vision/schemas/artifacts.yaml +8 -8
  72. package/bundle/skills/agentera/capabilities/vision/schemas/exit.yaml +7 -6
  73. package/bundle/skills/agentera/capabilities/vision/schemas/triggers.yaml +7 -39
  74. package/bundle/skills/agentera/capabilities/vision/schemas/validation.yaml +14 -16
  75. package/bundle/skills/agentera/capability_schema_contract.yaml +32 -32
  76. package/bundle/skills/agentera/protocol.yaml +4 -4
  77. package/bundle/skills/agentera/route-phrases.yaml +81 -0
  78. package/bundle/skills/agentera/schemas/artifacts/changelog.yaml +1 -0
  79. package/bundle/skills/agentera/schemas/artifacts/decisions.yaml +30 -12
  80. package/bundle/skills/agentera/schemas/artifacts/design.yaml +1 -0
  81. package/bundle/skills/agentera/schemas/artifacts/docs.yaml +7 -12
  82. package/bundle/skills/agentera/schemas/artifacts/experiments.yaml +140 -9
  83. package/bundle/skills/agentera/schemas/artifacts/glossary.yaml +82 -0
  84. package/bundle/skills/agentera/schemas/artifacts/health.yaml +56 -19
  85. package/bundle/skills/agentera/schemas/artifacts/objective.yaml +18 -4
  86. package/bundle/skills/agentera/schemas/artifacts/plan.yaml +457 -32
  87. package/bundle/skills/agentera/schemas/artifacts/progress.yaml +131 -18
  88. package/bundle/skills/agentera/schemas/artifacts/todo.yaml +302 -7
  89. package/dist/analytics/extractCorpus/cli.js +52 -11
  90. package/dist/analytics/extractCorpus/copilotSessions.js +6 -4
  91. package/dist/analytics/extractCorpus/core.js +40 -12
  92. package/dist/analytics/extractCorpus/corpus.js +39 -17
  93. package/dist/analytics/extractCorpus/coverageAudit.js +44 -45
  94. package/dist/analytics/extractCorpus/cursorSessions.js +6 -4
  95. package/dist/analytics/extractCorpus/evidenceTiers.js +603 -0
  96. package/dist/analytics/extractCorpus/extractCorpusParity.js +4 -4
  97. package/dist/analytics/extractCorpus/filesystemSources.js +1 -5
  98. package/dist/analytics/extractCorpus/index.js +3 -1
  99. package/dist/analytics/extractCorpus/jsonlSessions.js +24 -5
  100. package/dist/analytics/extractCorpus/sqliteCaps.js +0 -1
  101. package/dist/analytics/extractCorpus/sqliteSessions.js +0 -1
  102. package/dist/analytics/extractCorpus/tierReader.js +108 -0
  103. package/dist/analytics/extractCorpus.js +0 -1
  104. package/dist/analytics/glossaryAdviceResolution.js +166 -0
  105. package/dist/analytics/glossaryInputAcquisition.js +319 -0
  106. package/dist/analytics/personalGlossaryAdmission.js +133 -0
  107. package/dist/analytics/personalGlossaryProfile.js +219 -0
  108. package/dist/analytics/profileSignals.js +211 -0
  109. package/dist/analytics/usageStats.js +150 -23
  110. package/dist/audit/terminologyDrift.js +281 -0
  111. package/dist/bin/agentera.js +3 -2
  112. package/dist/capabilities/audit/instructions.js +16 -6
  113. package/dist/capabilities/build/instructions.js +59 -6
  114. package/dist/capabilities/design/instructions.js +3 -4
  115. package/dist/capabilities/discuss/instructions.js +29 -6
  116. package/dist/capabilities/document/instructions.js +11 -6
  117. package/dist/capabilities/index.js +16 -14
  118. package/dist/capabilities/optimize/instructions.js +14 -6
  119. package/dist/capabilities/orchestrate/instructions.js +42 -6
  120. package/dist/capabilities/plan/instructions.js +30 -3
  121. package/dist/capabilities/profile/instructions.js +70 -6
  122. package/dist/capabilities/research/instructions.js +4 -5
  123. package/dist/capabilities/status/instructions.js +15 -6
  124. package/dist/capabilities/status/startupInstructions.js +34 -0
  125. package/dist/capabilities/vision/instructions.js +3 -5
  126. package/dist/cli/appContext.js +14 -7
  127. package/dist/cli/argvalidate.js +0 -1
  128. package/dist/cli/capabilityContext/benchmark.js +5 -4
  129. package/dist/cli/capabilityContext/bespoke.js +14 -6
  130. package/dist/cli/capabilityContext/build.js +116 -42
  131. package/dist/cli/capabilityContext/closeout.js +30 -27
  132. package/dist/cli/capabilityContext/contract.js +18 -27
  133. package/dist/cli/capabilityContext/evidence.js +84 -77
  134. package/dist/cli/capabilityContext/index.js +0 -1
  135. package/dist/cli/capabilityContext/orchestration.js +42 -18
  136. package/dist/cli/capabilityContext/planState.js +89 -96
  137. package/dist/cli/capabilityContext/progress.js +51 -12
  138. package/dist/cli/capabilityContext/projectVerification.js +409 -0
  139. package/dist/cli/capabilityContext/shared.js +9 -20
  140. package/dist/cli/capabilityContext/slim.js +52 -8
  141. package/dist/cli/capabilityContext/startup.js +51 -114
  142. package/dist/cli/capabilityContext/startupAggregation.js +68 -0
  143. package/dist/cli/capabilityContext/types.js +26 -10
  144. package/dist/cli/capabilityContext.js +0 -1
  145. package/dist/cli/commands/appHome.js +0 -1
  146. package/dist/cli/commands/capability.js +2 -2
  147. package/dist/cli/commands/compact.js +163 -13
  148. package/dist/cli/commands/doctor.js +117 -11
  149. package/dist/cli/commands/durability.js +81 -0
  150. package/dist/cli/commands/glossaryAdvice.js +138 -0
  151. package/dist/cli/commands/lint.js +22 -8
  152. package/dist/cli/commands/personalGlossary.js +176 -0
  153. package/dist/cli/commands/prime/briefOrientation.js +746 -0
  154. package/dist/cli/commands/prime/buildExecutionRequest.js +165 -0
  155. package/dist/cli/commands/prime/bundleStatus.js +54 -4
  156. package/dist/cli/commands/prime/collectEntityOrientation.js +326 -0
  157. package/dist/cli/commands/prime/collectOrientationState.js +126 -63
  158. package/dist/cli/commands/prime/orientationOutput.js +267 -56
  159. package/dist/cli/commands/prime/types.js +0 -1
  160. package/dist/cli/commands/prime/v1Migration.js +0 -1
  161. package/dist/cli/commands/prime.js +76 -11
  162. package/dist/cli/commands/profileGrounding.js +55 -0
  163. package/dist/cli/commands/query.js +74 -52
  164. package/dist/cli/commands/report.js +73 -19
  165. package/dist/cli/commands/route.js +142 -0
  166. package/dist/cli/commands/schema.js +257 -138
  167. package/dist/cli/commands/state/decisions.js +40 -56
  168. package/dist/cli/commands/state/docs.js +58 -85
  169. package/dist/cli/commands/state/experimentRecords.js +151 -0
  170. package/dist/cli/commands/state/experiments.js +11 -65
  171. package/dist/cli/commands/state/get.js +129 -0
  172. package/dist/cli/commands/state/health.js +11 -113
  173. package/dist/cli/commands/state/index.js +6 -41
  174. package/dist/cli/commands/state/list.js +194 -0
  175. package/dist/cli/commands/state/objective.js +21 -65
  176. package/dist/cli/commands/state/plan.js +11 -170
  177. package/dist/cli/commands/state/planTasks.js +154 -0
  178. package/dist/cli/commands/state/plans.js +154 -0
  179. package/dist/cli/commands/state/progress.js +11 -45
  180. package/dist/cli/commands/state/shared.js +0 -1
  181. package/dist/cli/commands/state/todo.js +28 -107
  182. package/dist/cli/commands/state/write.js +433 -0
  183. package/dist/cli/commands/upgrade.js +146 -5
  184. package/dist/cli/commands/upgradeVerify.js +118 -0
  185. package/dist/cli/commands/validate.js +235 -136
  186. package/dist/cli/commands/verify.js +23 -8
  187. package/dist/cli/contracts/bundleStatus.js +0 -1
  188. package/dist/cli/contracts/orientationState.js +0 -1
  189. package/dist/cli/dispatch/argvParser.js +0 -1
  190. package/dist/cli/dispatch/check.js +84 -40
  191. package/dist/cli/dispatch/commands.js +3 -3
  192. package/dist/cli/dispatch/index.js +77 -52
  193. package/dist/cli/dispatch/lifecycle.js +117 -62
  194. package/dist/cli/dispatch/prime.js +37 -2
  195. package/dist/cli/dispatch/projections.js +17 -0
  196. package/dist/cli/dispatch/shared.js +1 -2
  197. package/dist/cli/dispatch/state.js +62 -66
  198. package/dist/cli/dispatch.js +0 -1
  199. package/dist/cli/errors.js +16 -17
  200. package/dist/cli/help.js +358 -39
  201. package/dist/cli/migrationRequired.js +122 -0
  202. package/dist/cli/orientation/attention.js +19 -19
  203. package/dist/cli/orientation/corpusCoverage.js +32 -1
  204. package/dist/cli/orientation.js +346 -129
  205. package/dist/cli/planArtifacts.js +350 -0
  206. package/dist/cli/planEvidence.js +157 -0
  207. package/dist/cli/planLifecycleState.js +36 -0
  208. package/dist/cli/planTaskIndex.js +11 -0
  209. package/dist/cli/preCutoverCommand.js +32 -0
  210. package/dist/cli/prime-blob.js +71 -3
  211. package/dist/cli/profileAcquisition.js +167 -0
  212. package/dist/cli/startupCompletenessContract.js +11 -8
  213. package/dist/cli/stateQuery.js +47 -12
  214. package/dist/cli/structured.js +0 -1
  215. package/dist/cli/todoMarkdown.js +25 -12
  216. package/dist/cli/todoReadinessSelection.js +192 -0
  217. package/dist/cli/todoSeverity.js +0 -1
  218. package/dist/core/atomicWriter.js +20 -0
  219. package/dist/core/developmentChannel.js +1 -0
  220. package/dist/core/developmentInvocation.js +374 -0
  221. package/dist/core/difflib.js +0 -1
  222. package/dist/core/envPaths.js +0 -1
  223. package/dist/core/jsonValue.js +0 -1
  224. package/dist/core/paths.js +0 -1
  225. package/dist/core/pyjson.js +0 -1
  226. package/dist/core/shell.js +4 -0
  227. package/dist/core/skillIdentity.js +23 -0
  228. package/dist/core/sourceRoot.js +9 -12
  229. package/dist/core/text.js +10 -0
  230. package/dist/core/toml.js +0 -1
  231. package/dist/core/yaml.js +8 -1
  232. package/dist/eval/evalSkills.js +13 -14
  233. package/dist/eval/hybridRouteEvaluation.js +155 -0
  234. package/dist/eval/semanticEval.js +0 -1
  235. package/dist/eval/semanticFixtures.js +0 -1
  236. package/dist/hooks/common.js +3 -56
  237. package/dist/hooks/compaction/apply.js +224 -47
  238. package/dist/hooks/compaction/dryRun.js +2 -1
  239. package/dist/hooks/compaction/index.js +5 -6
  240. package/dist/hooks/compaction/parse.js +73 -6
  241. package/dist/hooks/compaction/retention.js +28 -25
  242. package/dist/hooks/compaction/status.js +145 -26
  243. package/dist/hooks/compaction/types.js +0 -1
  244. package/dist/hooks/validateArtifact/agentFacing.js +0 -1
  245. package/dist/hooks/validateArtifact/index.js +6 -65
  246. package/dist/hooks/validateArtifact/markdown.js +9 -10
  247. package/dist/hooks/validateArtifact/schema.js +96 -9
  248. package/dist/hooks/validateArtifact/traversal.js +12 -11
  249. package/dist/hooks/validateArtifact/violations.js +5 -3
  250. package/dist/migrate/v2HandoffManifest.js +8 -3
  251. package/dist/registries/activationContract.js +2 -0
  252. package/dist/registries/activationTuples.js +108 -0
  253. package/dist/registries/artifactProtocolIds.js +2 -1
  254. package/dist/registries/artifactRegistry.js +207 -60
  255. package/dist/registries/artifactSchemaProjection.js +45 -0
  256. package/dist/registries/capabilityContract.js +5 -21
  257. package/dist/registries/evaluatorHandoffContract.js +0 -1
  258. package/dist/registries/evidenceTierContract.js +371 -0
  259. package/dist/registries/glossaryAdviceContract.js +79 -0
  260. package/dist/registries/glossaryCaveatContract.js +67 -0
  261. package/dist/registries/glossaryConsumerContractValidation.js +787 -0
  262. package/dist/registries/glossaryEntryContract.js +757 -0
  263. package/dist/registries/glossaryTermIdentity.js +17 -0
  264. package/dist/registries/glossaryTermOccurrence.js +20 -0
  265. package/dist/registries/hybridRoute.js +274 -0
  266. package/dist/registries/hybridRouteReceipt.js +221 -0
  267. package/dist/registries/packagePublication.js +273 -0
  268. package/dist/registries/packageRegistry.js +184 -209
  269. package/dist/registries/todoReadinessContract.js +448 -0
  270. package/dist/registries/triggerLoader.js +7 -44
  271. package/dist/registries/verbosityBudgetContract.js +205 -0
  272. package/dist/release/releaseMetadata.js +155 -5
  273. package/dist/runtime/lifecycleAdapterContract.js +457 -0
  274. package/dist/runtime/lifecycleAdapters.js +777 -0
  275. package/dist/runtime/lifecycleAuthority.js +453 -0
  276. package/dist/runtime/lifecycleOperationContract.js +123 -0
  277. package/dist/runtime/lifecycleOperations.js +634 -0
  278. package/dist/runtime/lifecycleOwnershipJournal.js +622 -0
  279. package/dist/runtime/lifecyclePublication.js +415 -0
  280. package/dist/runtime/lifecycleSnapshot.js +438 -0
  281. package/dist/runtime/nativeResourceCleanup.js +502 -0
  282. package/dist/setup/opencode.js +20 -13
  283. package/dist/setup/opencodeConstants.js +1 -0
  284. package/dist/setup/sharedSkill.js +45 -0
  285. package/dist/setup/smokeChecks.js +14 -75
  286. package/dist/state/archiveDiscovery.js +580 -0
  287. package/dist/state/archivePublication.js +225 -0
  288. package/dist/state/archiveRecovery.js +237 -0
  289. package/dist/state/archiveReplay.js +53 -0
  290. package/dist/state/canonicalMigrationRecord.js +36 -0
  291. package/dist/state/changelog.js +221 -0
  292. package/dist/state/decisionEntities.js +367 -0
  293. package/dist/state/decisionLegacyValidation.js +215 -0
  294. package/dist/state/decisionMigrationProvenance.js +199 -0
  295. package/dist/state/decisionOverlay.js +254 -0
  296. package/dist/state/decisionRevision.js +256 -0
  297. package/dist/state/decisionRevisionMigration.js +89 -0
  298. package/dist/state/directRetrieval.js +323 -0
  299. package/dist/state/durability.js +324 -0
  300. package/dist/state/entityCutover.js +459 -0
  301. package/dist/state/entityCutoverGit.js +127 -0
  302. package/dist/state/entityGlossaryAuthority.js +13 -0
  303. package/dist/state/entityListProjection.js +187 -0
  304. package/dist/state/entityListRuntimeRegistry.js +85 -0
  305. package/dist/state/entityMigrationCausality.js +97 -0
  306. package/dist/state/entityMigrationIdentity.js +5 -0
  307. package/dist/state/entityMigrationPreview.js +840 -0
  308. package/dist/state/entityMigrationTodo.js +133 -0
  309. package/dist/state/entityPublicationContext.js +859 -0
  310. package/dist/state/entityRetrievalHelp.js +506 -0
  311. package/dist/state/entityStorage.js +899 -0
  312. package/dist/state/exactReplacementRecovery.js +18 -0
  313. package/dist/state/experimentArchive.js +63 -0
  314. package/dist/state/experimentIdentity.js +202 -0
  315. package/dist/state/healthEntities.js +262 -0
  316. package/dist/state/healthEntityValidation.js +18 -0
  317. package/dist/state/healthRepair.js +69 -0
  318. package/dist/state/installRoot.js +15 -7
  319. package/dist/state/legacyEntityCutoverEvidence.js +65 -0
  320. package/dist/state/legacyIdentity.js +47 -0
  321. package/dist/state/legacySummaryRecord.js +6 -0
  322. package/dist/state/listAccounting.js +54 -0
  323. package/dist/state/listClassification.js +17 -0
  324. package/dist/state/listCursor.js +42 -0
  325. package/dist/state/listRetrieval.js +781 -0
  326. package/dist/state/migrationSourceBinding.js +30 -0
  327. package/dist/state/objectiveExperimentEntities.js +322 -0
  328. package/dist/state/planEntities.js +1027 -0
  329. package/dist/state/planIdentity.js +47 -0
  330. package/dist/state/planLineageValidation.js +52 -0
  331. package/dist/state/planReplacementTransaction.js +475 -0
  332. package/dist/state/planRetrieval.js +313 -0
  333. package/dist/state/planTaskRetrieval.js +294 -0
  334. package/dist/state/progressEntities.js +512 -0
  335. package/dist/state/progressGlossaryCaveat.js +168 -0
  336. package/dist/state/progressPublicationOrder.js +19 -0
  337. package/dist/state/progressWritePolicy.js +33 -0
  338. package/dist/state/projectRoot.js +62 -0
  339. package/dist/state/projectionPolicy.js +190 -0
  340. package/dist/state/retrievalAuthority.js +156 -0
  341. package/dist/state/safeProjectFile.js +155 -0
  342. package/dist/state/startupAnalysis/benchmark.js +70 -9
  343. package/dist/state/startupAnalysis/contract.js +44 -10
  344. package/dist/state/startupAnalysis/helpers.js +1 -2
  345. package/dist/state/startupAnalysis/index.js +0 -1
  346. package/dist/state/startupAnalysis/metrics.js +0 -1
  347. package/dist/state/startupAnalysis/records.js +0 -1
  348. package/dist/state/startupAnalysis/report.js +0 -1
  349. package/dist/state/startupAnalysis/threshold.js +13 -1
  350. package/dist/state/startupAnalysis.js +0 -1
  351. package/dist/state/startupProjection.js +499 -0
  352. package/dist/state/stateMode.js +222 -0
  353. package/dist/state/stateStorageAuthority.js +47 -0
  354. package/dist/state/summaryEntityRead.js +25 -0
  355. package/dist/state/summaryMigrationProvenance.js +66 -0
  356. package/dist/state/summarySourceRowAuthority.js +36 -0
  357. package/dist/state/todoActivationSafety.js +58 -0
  358. package/dist/state/todoDocsEntities.js +1124 -0
  359. package/dist/state/todoDocsEntityValidation.js +158 -0
  360. package/dist/state/todoMarkdownProjection.js +51 -0
  361. package/dist/state/todoReconciliationActivation.js +182 -0
  362. package/dist/state/todoReconciliationInspection.js +171 -0
  363. package/dist/state/todoReconciliationRepair.js +318 -0
  364. package/dist/state/todoReconciliationTransaction.js +595 -0
  365. package/dist/state/write/assign.js +20 -0
  366. package/dist/state/write/candidateMutation.js +269 -0
  367. package/dist/state/write/errors.js +11 -0
  368. package/dist/state/write/experimentPublication.js +192 -0
  369. package/dist/state/write/explain.js +377 -0
  370. package/dist/state/write/fields.js +61 -0
  371. package/dist/state/write/glossaryPublication.js +263 -0
  372. package/dist/state/write/grammar.js +285 -0
  373. package/dist/state/write/helpers.js +29 -0
  374. package/dist/state/write/index.js +12 -0
  375. package/dist/state/write/input.js +391 -0
  376. package/dist/state/write/lock.js +837 -0
  377. package/dist/state/write/mutation.js +234 -0
  378. package/dist/state/write/operations.js +170 -0
  379. package/dist/state/write/planEvaluation.js +128 -0
  380. package/dist/state/write/planPublication.js +179 -0
  381. package/dist/state/write/runtimeOperations.js +146 -0
  382. package/dist/state/write/serialize.js +1 -0
  383. package/dist/state/write/transaction.js +57 -0
  384. package/dist/state/write/validate.js +7 -0
  385. package/dist/upgrade/appContentRefresh.js +77 -36
  386. package/dist/upgrade/appModel.js +0 -1
  387. package/dist/upgrade/atomicWriter.js +1 -0
  388. package/dist/upgrade/bundleEvidence.js +0 -1
  389. package/dist/upgrade/channels.js +6 -9
  390. package/dist/upgrade/compatibility.js +43 -17
  391. package/dist/upgrade/doctor.js +55 -32
  392. package/dist/upgrade/doctorClassifier.js +11 -1
  393. package/dist/upgrade/installedHooksRetirement.js +46 -40
  394. package/dist/upgrade/legacyAgentCleanup.js +187 -21
  395. package/dist/upgrade/lifecycleUpgrade.js +113 -0
  396. package/dist/upgrade/migrateArtifactsV2ToV3.js +334 -64
  397. package/dist/upgrade/migrationPublication.js +122 -0
  398. package/dist/upgrade/nextMajorDoctor.js +0 -1
  399. package/dist/upgrade/npxPlatformStatus.js +0 -1
  400. package/dist/upgrade/projectIntegration.js +121 -159
  401. package/dist/upgrade/projectIntegrationDecision.js +42 -85
  402. package/dist/upgrade/retiredResourceDiagnostics.js +117 -0
  403. package/dist/upgrade/runtimeMigration.js +262 -453
  404. package/dist/upgrade/upgradeCommands.js +14 -1
  405. package/dist/upgrade/upgradeLock.js +85 -0
  406. package/dist/upgrade/upgradeOrchestrator.js +263 -59
  407. package/dist/upgrade/v3CapabilitySurface.js +2 -3
  408. package/dist/upgrade/versionResolution.js +0 -1
  409. package/dist/validate/activationArtifactEvidence.js +852 -0
  410. package/dist/validate/activationArtifactEvidenceTypes.js +12 -0
  411. package/dist/validate/activationConjunction.js +816 -0
  412. package/dist/validate/activationEvidenceManifest.js +531 -0
  413. package/dist/validate/activationPackageSemantics.js +29 -0
  414. package/dist/validate/appHomeContract.js +1 -7
  415. package/dist/validate/bootstrapAuthority.js +44 -0
  416. package/dist/validate/capability.js +11 -3
  417. package/dist/validate/crossCapability.js +14 -9
  418. package/dist/validate/retainedReferenceAuthority.js +879 -0
  419. package/dist/validate/selfAudit.js +39 -45
  420. package/dist/validate/v1LegacyCruft.js +131 -0
  421. package/dist/validate/vocabularyAuthority.js +8 -8
  422. package/package.json +41 -13
  423. package/bundle/references/adapters/cursor.md +0 -214
  424. package/bundle/references/adapters/opencode.md +0 -530
  425. package/bundle/references/adapters/package-manifest-interface-model.yaml +0 -337
  426. package/bundle/references/adapters/runtime-adapter-characterization.md +0 -79
  427. package/bundle/references/adapters/runtime-adapter-interface-model.yaml +0 -200
  428. package/bundle/references/adapters/runtime-adapter-registry.yaml +0 -554
  429. package/bundle/references/adapters/runtime-feature-parity.md +0 -189
  430. package/bundle/references/analysis/benchmark.md +0 -267
  431. package/bundle/references/analysis/startup-measurement-contract.yaml +0 -424
  432. package/bundle/references/cli/agent-ready-state-contract.yaml +0 -953
  433. package/bundle/references/cli/audience-namespace-cli-migration.yaml +0 -369
  434. package/bundle/references/cli/bundle-skill-vocabulary.yaml +0 -250
  435. package/bundle/references/cli/capability-tool-classification.yaml +0 -53
  436. package/bundle/references/cli/coexistence-probe.yaml +0 -13
  437. package/bundle/references/cli/parity-expected-actual-template.md +0 -30
  438. package/bundle/references/cli/routing-execution-vocabulary.yaml +0 -281
  439. package/bundle/references/cli/single-name-protocol.yaml +0 -42
  440. package/bundle/references/cli/upgrade-repair-wording.md +0 -45
  441. package/bundle/references/cli/v3-handoff-manifest.schema.yaml +0 -98
  442. package/bundle/references/meta/documentation-inventory.md +0 -49
  443. package/bundle/skills/agentera/.claude-plugin/plugin.json +0 -27
  444. package/bundle/skills/agentera/agents/audit.toml +0 -6
  445. package/bundle/skills/agentera/agents/build.toml +0 -6
  446. package/bundle/skills/agentera/agents/design.toml +0 -6
  447. package/bundle/skills/agentera/agents/discuss.toml +0 -6
  448. package/bundle/skills/agentera/agents/document.toml +0 -6
  449. package/bundle/skills/agentera/agents/optimize.toml +0 -6
  450. package/bundle/skills/agentera/agents/orchestrate.toml +0 -6
  451. package/bundle/skills/agentera/agents/plan.toml +0 -6
  452. package/bundle/skills/agentera/agents/profile.toml +0 -6
  453. package/bundle/skills/agentera/agents/research.toml +0 -6
  454. package/bundle/skills/agentera/agents/status.toml +0 -6
  455. package/bundle/skills/agentera/agents/vision.toml +0 -6
  456. package/bundle/skills/agentera/references/contract.md +0 -1048
  457. package/dist/analytics/extractCorpus/cli.js.map +0 -1
  458. package/dist/analytics/extractCorpus/copilotSessions.js.map +0 -1
  459. package/dist/analytics/extractCorpus/core.js.map +0 -1
  460. package/dist/analytics/extractCorpus/corpus.js.map +0 -1
  461. package/dist/analytics/extractCorpus/coverageAudit.js.map +0 -1
  462. package/dist/analytics/extractCorpus/cursorSessions.js.map +0 -1
  463. package/dist/analytics/extractCorpus/extractCorpusParity.js.map +0 -1
  464. package/dist/analytics/extractCorpus/filesystemSources.js.map +0 -1
  465. package/dist/analytics/extractCorpus/index.js.map +0 -1
  466. package/dist/analytics/extractCorpus/jsonlSessions.js.map +0 -1
  467. package/dist/analytics/extractCorpus/sqliteCaps.js.map +0 -1
  468. package/dist/analytics/extractCorpus/sqliteSessions.js.map +0 -1
  469. package/dist/analytics/extractCorpus.js.map +0 -1
  470. package/dist/analytics/usageStats.js.map +0 -1
  471. package/dist/bin/agentera.js.map +0 -1
  472. package/dist/capabilities/audit/instructions.js.map +0 -1
  473. package/dist/capabilities/build/instructions.js.map +0 -1
  474. package/dist/capabilities/design/instructions.js.map +0 -1
  475. package/dist/capabilities/discuss/instructions.js.map +0 -1
  476. package/dist/capabilities/document/instructions.js.map +0 -1
  477. package/dist/capabilities/dokumentera/instructions.js +0 -6
  478. package/dist/capabilities/dokumentera/instructions.js.map +0 -1
  479. package/dist/capabilities/hej/instructions.js +0 -6
  480. package/dist/capabilities/hej/instructions.js.map +0 -1
  481. package/dist/capabilities/index.js.map +0 -1
  482. package/dist/capabilities/inspektera/instructions.js +0 -6
  483. package/dist/capabilities/inspektera/instructions.js.map +0 -1
  484. package/dist/capabilities/inspirera/instructions.js +0 -6
  485. package/dist/capabilities/inspirera/instructions.js.map +0 -1
  486. package/dist/capabilities/optimera/instructions.js +0 -6
  487. package/dist/capabilities/optimera/instructions.js.map +0 -1
  488. package/dist/capabilities/optimize/instructions.js.map +0 -1
  489. package/dist/capabilities/orchestrate/instructions.js.map +0 -1
  490. package/dist/capabilities/orkestrera/instructions.js +0 -6
  491. package/dist/capabilities/orkestrera/instructions.js.map +0 -1
  492. package/dist/capabilities/plan/instructions.js.map +0 -1
  493. package/dist/capabilities/planera/instructions.js +0 -6
  494. package/dist/capabilities/planera/instructions.js.map +0 -1
  495. package/dist/capabilities/profile/instructions.js.map +0 -1
  496. package/dist/capabilities/profilera/instructions.js +0 -6
  497. package/dist/capabilities/profilera/instructions.js.map +0 -1
  498. package/dist/capabilities/realisera/instructions.js +0 -6
  499. package/dist/capabilities/realisera/instructions.js.map +0 -1
  500. package/dist/capabilities/research/instructions.js.map +0 -1
  501. package/dist/capabilities/resonera/instructions.js +0 -6
  502. package/dist/capabilities/resonera/instructions.js.map +0 -1
  503. package/dist/capabilities/status/instructions.js.map +0 -1
  504. package/dist/capabilities/vision/instructions.js.map +0 -1
  505. package/dist/capabilities/visionera/instructions.js +0 -6
  506. package/dist/capabilities/visionera/instructions.js.map +0 -1
  507. package/dist/capabilities/visualisera/instructions.js +0 -5
  508. package/dist/capabilities/visualisera/instructions.js.map +0 -1
  509. package/dist/cli/appContext.js.map +0 -1
  510. package/dist/cli/argvalidate.js.map +0 -1
  511. package/dist/cli/capabilityContext/benchmark.js.map +0 -1
  512. package/dist/cli/capabilityContext/bespoke.js.map +0 -1
  513. package/dist/cli/capabilityContext/build.js.map +0 -1
  514. package/dist/cli/capabilityContext/closeout.js.map +0 -1
  515. package/dist/cli/capabilityContext/contract.js.map +0 -1
  516. package/dist/cli/capabilityContext/evidence.js.map +0 -1
  517. package/dist/cli/capabilityContext/index.js.map +0 -1
  518. package/dist/cli/capabilityContext/orchestration.js.map +0 -1
  519. package/dist/cli/capabilityContext/planState.js.map +0 -1
  520. package/dist/cli/capabilityContext/progress.js.map +0 -1
  521. package/dist/cli/capabilityContext/realisera.js +0 -174
  522. package/dist/cli/capabilityContext/realisera.js.map +0 -1
  523. package/dist/cli/capabilityContext/shared.js.map +0 -1
  524. package/dist/cli/capabilityContext/slim.js.map +0 -1
  525. package/dist/cli/capabilityContext/startup.js.map +0 -1
  526. package/dist/cli/capabilityContext/types.js.map +0 -1
  527. package/dist/cli/capabilityContext.js.map +0 -1
  528. package/dist/cli/commands/appHome.js.map +0 -1
  529. package/dist/cli/commands/backfill.js +0 -84
  530. package/dist/cli/commands/backfill.js.map +0 -1
  531. package/dist/cli/commands/capability.js.map +0 -1
  532. package/dist/cli/commands/compact.js.map +0 -1
  533. package/dist/cli/commands/doctor.js.map +0 -1
  534. package/dist/cli/commands/lint.js.map +0 -1
  535. package/dist/cli/commands/prime/bundleStatus.js.map +0 -1
  536. package/dist/cli/commands/prime/collectOrientationState.js.map +0 -1
  537. package/dist/cli/commands/prime/orientationOutput.js.map +0 -1
  538. package/dist/cli/commands/prime/routeOutput.js +0 -50
  539. package/dist/cli/commands/prime/routeOutput.js.map +0 -1
  540. package/dist/cli/commands/prime/types.js.map +0 -1
  541. package/dist/cli/commands/prime/v1Migration.js.map +0 -1
  542. package/dist/cli/commands/prime.js.map +0 -1
  543. package/dist/cli/commands/query.js.map +0 -1
  544. package/dist/cli/commands/report.js.map +0 -1
  545. package/dist/cli/commands/schema.js.map +0 -1
  546. package/dist/cli/commands/state/decisions.js.map +0 -1
  547. package/dist/cli/commands/state/docs.js.map +0 -1
  548. package/dist/cli/commands/state/experiments.js.map +0 -1
  549. package/dist/cli/commands/state/health.js.map +0 -1
  550. package/dist/cli/commands/state/index.js.map +0 -1
  551. package/dist/cli/commands/state/objective.js.map +0 -1
  552. package/dist/cli/commands/state/plan.js.map +0 -1
  553. package/dist/cli/commands/state/progress.js.map +0 -1
  554. package/dist/cli/commands/state/shared.js.map +0 -1
  555. package/dist/cli/commands/state/todo.js.map +0 -1
  556. package/dist/cli/commands/state.js +0 -1023
  557. package/dist/cli/commands/state.js.map +0 -1
  558. package/dist/cli/commands/upgrade.js.map +0 -1
  559. package/dist/cli/commands/validate.js.map +0 -1
  560. package/dist/cli/commands/verify.js.map +0 -1
  561. package/dist/cli/contracts/bundleStatus.js.map +0 -1
  562. package/dist/cli/contracts/orientationState.js.map +0 -1
  563. package/dist/cli/dispatch/argvParser.js.map +0 -1
  564. package/dist/cli/dispatch/check.js.map +0 -1
  565. package/dist/cli/dispatch/commands.js.map +0 -1
  566. package/dist/cli/dispatch/index.js.map +0 -1
  567. package/dist/cli/dispatch/lifecycle.js.map +0 -1
  568. package/dist/cli/dispatch/prime.js.map +0 -1
  569. package/dist/cli/dispatch/shared.js.map +0 -1
  570. package/dist/cli/dispatch/state.js.map +0 -1
  571. package/dist/cli/dispatch.js.map +0 -1
  572. package/dist/cli/errors.js.map +0 -1
  573. package/dist/cli/help.js.map +0 -1
  574. package/dist/cli/orientation/attention.js.map +0 -1
  575. package/dist/cli/orientation/corpusCoverage.js.map +0 -1
  576. package/dist/cli/orientation.js.map +0 -1
  577. package/dist/cli/prime-blob.js.map +0 -1
  578. package/dist/cli/startupCompletenessContract.js.map +0 -1
  579. package/dist/cli/stateQuery.js.map +0 -1
  580. package/dist/cli/structured.js.map +0 -1
  581. package/dist/cli/todoMarkdown.js.map +0 -1
  582. package/dist/cli/todoSeverity.js.map +0 -1
  583. package/dist/core/difflib.js.map +0 -1
  584. package/dist/core/envPaths.js.map +0 -1
  585. package/dist/core/git.js +0 -43
  586. package/dist/core/git.js.map +0 -1
  587. package/dist/core/jsonValue.js.map +0 -1
  588. package/dist/core/paths.js.map +0 -1
  589. package/dist/core/pyjson.js.map +0 -1
  590. package/dist/core/sourceRoot.js.map +0 -1
  591. package/dist/core/toml.js.map +0 -1
  592. package/dist/core/yaml.js.map +0 -1
  593. package/dist/eval/evalSkills.js.map +0 -1
  594. package/dist/eval/semanticEval.js.map +0 -1
  595. package/dist/eval/semanticFixtures.js.map +0 -1
  596. package/dist/hooks/common.js.map +0 -1
  597. package/dist/hooks/compaction/apply.js.map +0 -1
  598. package/dist/hooks/compaction/dryRun.js.map +0 -1
  599. package/dist/hooks/compaction/index.js.map +0 -1
  600. package/dist/hooks/compaction/parse.js.map +0 -1
  601. package/dist/hooks/compaction/retention.js.map +0 -1
  602. package/dist/hooks/compaction/status.js.map +0 -1
  603. package/dist/hooks/compaction/todoResolved.js +0 -137
  604. package/dist/hooks/compaction/todoResolved.js.map +0 -1
  605. package/dist/hooks/compaction/types.js.map +0 -1
  606. package/dist/hooks/compaction.js +0 -935
  607. package/dist/hooks/compaction.js.map +0 -1
  608. package/dist/hooks/cursorPreToolUse.js +0 -19
  609. package/dist/hooks/cursorPreToolUse.js.map +0 -1
  610. package/dist/hooks/cursorSessionStart.js +0 -79
  611. package/dist/hooks/cursorSessionStart.js.map +0 -1
  612. package/dist/hooks/sessionStart.js +0 -216
  613. package/dist/hooks/sessionStart.js.map +0 -1
  614. package/dist/hooks/sessionStop.js +0 -206
  615. package/dist/hooks/sessionStop.js.map +0 -1
  616. package/dist/hooks/todoLayout.js +0 -177
  617. package/dist/hooks/todoLayout.js.map +0 -1
  618. package/dist/hooks/validateArtifact/agentFacing.js.map +0 -1
  619. package/dist/hooks/validateArtifact/index.js.map +0 -1
  620. package/dist/hooks/validateArtifact/markdown.js.map +0 -1
  621. package/dist/hooks/validateArtifact/runtime.js +0 -86
  622. package/dist/hooks/validateArtifact/runtime.js.map +0 -1
  623. package/dist/hooks/validateArtifact/schema.js.map +0 -1
  624. package/dist/hooks/validateArtifact/traversal.js.map +0 -1
  625. package/dist/hooks/validateArtifact/violations.js.map +0 -1
  626. package/dist/hooks/validateArtifact.js +0 -924
  627. package/dist/hooks/validateArtifact.js.map +0 -1
  628. package/dist/migrate/v2HandoffManifest.js.map +0 -1
  629. package/dist/registries/artifactProtocolIds.js.map +0 -1
  630. package/dist/registries/artifactRegistry.js.map +0 -1
  631. package/dist/registries/capabilityContract.js.map +0 -1
  632. package/dist/registries/evaluatorHandoffContract.js.map +0 -1
  633. package/dist/registries/packageRegistry.js.map +0 -1
  634. package/dist/registries/runtimeAdapterRegistry.js +0 -316
  635. package/dist/registries/runtimeAdapterRegistry.js.map +0 -1
  636. package/dist/registries/triggerLoader.js.map +0 -1
  637. package/dist/release/releaseMetadata.js.map +0 -1
  638. package/dist/routing/index.js +0 -2
  639. package/dist/routing/index.js.map +0 -1
  640. package/dist/routing/routeEngine.js +0 -189
  641. package/dist/routing/routeEngine.js.map +0 -1
  642. package/dist/setup/codex/agents.js +0 -96
  643. package/dist/setup/codex/agents.js.map +0 -1
  644. package/dist/setup/codex/cli.js +0 -161
  645. package/dist/setup/codex/cli.js.map +0 -1
  646. package/dist/setup/codex/configToml.js +0 -639
  647. package/dist/setup/codex/configToml.js.map +0 -1
  648. package/dist/setup/codex/constants.js +0 -29
  649. package/dist/setup/codex/constants.js.map +0 -1
  650. package/dist/setup/codex/installRoot.js +0 -64
  651. package/dist/setup/codex/installRoot.js.map +0 -1
  652. package/dist/setup/codex/state.js +0 -270
  653. package/dist/setup/codex/state.js.map +0 -1
  654. package/dist/setup/codex.js +0 -12
  655. package/dist/setup/codex.js.map +0 -1
  656. package/dist/setup/copilot.js +0 -227
  657. package/dist/setup/copilot.js.map +0 -1
  658. package/dist/setup/cursor.js +0 -129
  659. package/dist/setup/cursor.js.map +0 -1
  660. package/dist/setup/cursorSurfaces.js +0 -67
  661. package/dist/setup/cursorSurfaces.js.map +0 -1
  662. package/dist/setup/doctor/core.js +0 -300
  663. package/dist/setup/doctor/core.js.map +0 -1
  664. package/dist/setup/doctor/diagnostics.js +0 -240
  665. package/dist/setup/doctor/diagnostics.js.map +0 -1
  666. package/dist/setup/doctor/opencode.js +0 -313
  667. package/dist/setup/doctor/opencode.js.map +0 -1
  668. package/dist/setup/doctor/report.js +0 -425
  669. package/dist/setup/doctor/report.js.map +0 -1
  670. package/dist/setup/doctor.js +0 -10
  671. package/dist/setup/doctor.js.map +0 -1
  672. package/dist/setup/opencode.js.map +0 -1
  673. package/dist/setup/smokeChecks.js.map +0 -1
  674. package/dist/state/installRoot.js.map +0 -1
  675. package/dist/state/progressCommit.js +0 -289
  676. package/dist/state/progressCommit.js.map +0 -1
  677. package/dist/state/startupAnalysis/benchmark.js.map +0 -1
  678. package/dist/state/startupAnalysis/contract.js.map +0 -1
  679. package/dist/state/startupAnalysis/helpers.js.map +0 -1
  680. package/dist/state/startupAnalysis/index.js.map +0 -1
  681. package/dist/state/startupAnalysis/metrics.js.map +0 -1
  682. package/dist/state/startupAnalysis/records.js.map +0 -1
  683. package/dist/state/startupAnalysis/report.js.map +0 -1
  684. package/dist/state/startupAnalysis/threshold.js.map +0 -1
  685. package/dist/state/startupAnalysis.js.map +0 -1
  686. package/dist/upgrade/appContentRefresh.js.map +0 -1
  687. package/dist/upgrade/appModel.js.map +0 -1
  688. package/dist/upgrade/bundleEvidence.js.map +0 -1
  689. package/dist/upgrade/channels.js.map +0 -1
  690. package/dist/upgrade/cliProbe.js +0 -22
  691. package/dist/upgrade/cliProbe.js.map +0 -1
  692. package/dist/upgrade/coexistenceProbe.js +0 -107
  693. package/dist/upgrade/coexistenceProbe.js.map +0 -1
  694. package/dist/upgrade/compatibility.js.map +0 -1
  695. package/dist/upgrade/doctor.js.map +0 -1
  696. package/dist/upgrade/doctorClassifier.js.map +0 -1
  697. package/dist/upgrade/installedHooksRetirement.js.map +0 -1
  698. package/dist/upgrade/legacyAgentCleanup.js.map +0 -1
  699. package/dist/upgrade/migrateArtifactsV1ToV2.js +0 -570
  700. package/dist/upgrade/migrateArtifactsV1ToV2.js.map +0 -1
  701. package/dist/upgrade/migrateArtifactsV2ToV3.js.map +0 -1
  702. package/dist/upgrade/nextMajorDoctor.js.map +0 -1
  703. package/dist/upgrade/npxPlatformStatus.js.map +0 -1
  704. package/dist/upgrade/projectIntegration.js.map +0 -1
  705. package/dist/upgrade/projectIntegrationDecision.js.map +0 -1
  706. package/dist/upgrade/runtimeMigration.js.map +0 -1
  707. package/dist/upgrade/upgradeCommands.js.map +0 -1
  708. package/dist/upgrade/upgradeOrchestrator.js.map +0 -1
  709. package/dist/upgrade/v3CapabilitySurface.js.map +0 -1
  710. package/dist/upgrade/versionResolution.js.map +0 -1
  711. package/dist/validate/appHomeContract.js.map +0 -1
  712. package/dist/validate/capability.js.map +0 -1
  713. package/dist/validate/crossCapability.js.map +0 -1
  714. package/dist/validate/lifecycleAdapters/legacyPythonParity.js +0 -93
  715. package/dist/validate/lifecycleAdapters/legacyPythonParity.js.map +0 -1
  716. package/dist/validate/lifecycleAdapters/nodeFormChecks.js +0 -488
  717. package/dist/validate/lifecycleAdapters/nodeFormChecks.js.map +0 -1
  718. package/dist/validate/lifecycleAdapters/shared.js +0 -198
  719. package/dist/validate/lifecycleAdapters/shared.js.map +0 -1
  720. package/dist/validate/lifecycleAdapters.js +0 -62
  721. package/dist/validate/lifecycleAdapters.js.map +0 -1
  722. package/dist/validate/selfAudit.js.map +0 -1
  723. package/dist/validate/vocabularyAuthority.js.map +0 -1
@@ -1,19 +1,24 @@
1
1
  import fs from "node:fs";
2
2
  import path from "node:path";
3
+ import YAML from "yaml";
3
4
  import { isFile, pathExists, resolvePath } from "../core/paths.js";
5
+ import { loadYamlMapping } from "../core/yaml.js";
6
+ import { loadArtifactRecord, resolveArtifactPath } from "../registries/artifactRegistry.js";
4
7
  import { BUNDLE_MARKER } from "../state/installRoot.js";
8
+ import { hasBundleRootEvidence } from "./bundleEvidence.js";
9
+ import { applyAppContentRefreshItems, planAppContentRefreshItems, } from "./appContentRefresh.js";
5
10
  import { doctorRoots } from "./appModel.js";
6
11
  import { AGENTERA_USER_STATE_NAMES, } from "./doctor.js";
7
- import { applyV1ArtifactsPhase, planV1ArtifactsPhase, } from "./migrateArtifactsV1ToV2.js";
8
12
  import { appHomeHasUnrecognizedEntriesWithPreflight, handoffCatalogMessage, resolveMigrationUserStatePreflight, } from "../migrate/v2HandoffManifest.js";
9
- import { applyAppContentRefreshItems, planAppContentRefreshItems, } from "./appContentRefresh.js";
10
- import { applyLegacyAgentCleanupItems, planLegacyAgentCleanupItems, } from "./legacyAgentCleanup.js";
11
- import { applyRuntimeMigrationItems, planRuntimeMigrationItems, resolveNpxHookCommands, rewireRuntimeText, } from "./runtimeMigration.js";
13
+ import { applyLegacyAgentCleanupItems, planLegacyAgentCleanupItems, planLegacyCapabilityAgentCleanupItems, } from "./legacyAgentCleanup.js";
14
+ import { applyRuntimeMigrationItems, planRuntimeMigrationItems, } from "./runtimeMigration.js";
15
+ import { writeFileAtomic } from "./atomicWriter.js";
16
+ import { bindMigrationTree, cloneMigrationItem, removeBoundMigrationTree } from "./migrationPublication.js";
17
+ import { applyInstalledHooksRetirementItems, planInstalledHooksRetirementItems, } from "./installedHooksRetirement.js";
12
18
  /**
13
19
  * v2→v3 migration phases: artifacts (noop for YAML), runtime rewire, cleanup.
14
- * v1 Markdown→YAML migration uses detectV1ArtifactPairs (shared with prime).
15
20
  */
16
- export const MIGRATION_STATUSES = ["pending", "applied", "noop", "blocked", "failed", "skipped"];
21
+ export const MIGRATION_STATUSES = ["pending", "applied", "noop", "blocked", "failed"];
17
22
  export const V1_ARTIFACT_PAIRS = [
18
23
  [".agentera/PROGRESS.md", ".agentera/progress.yaml"],
19
24
  [".agentera/PLAN.md", ".agentera/plan.yaml"],
@@ -22,15 +27,133 @@ export const V1_ARTIFACT_PAIRS = [
22
27
  [".agentera/DOCS.md", ".agentera/docs.yaml"],
23
28
  ["VISION.md", ".agentera/vision.yaml"],
24
29
  ];
25
- /** Default development-channel npm entrypoint for tests and legacy imports. */
26
- export const NPX_CLI_ENTRYPOINT = "npx -y agentera@next";
27
- export const NPX_HOOK_VALIDATE = `${NPX_CLI_ENTRYPOINT} hook validate-artifact`;
28
- export const NPX_HOOK_CURSOR_SESSION_START = `${NPX_CLI_ENTRYPOINT} hook cursor-session-start`;
29
- export const NPX_HOOK_CURSOR_SESSION_STOP = `${NPX_CLI_ENTRYPOINT} hook session-stop`;
30
- export const NPX_HOOK_CURSOR_PRE_TOOL = `${NPX_CLI_ENTRYPOINT} hook cursor-pre-tool-use`;
31
- export { rewireRuntimeText, resolveNpxHookCommands };
30
+ const PLAN_ARCHIVE_FILE = /^PLAN-.+\.ya?ml$/i;
31
+ const PLAN_LIFECYCLE_ACTION = "normalize-plan-lifecycle";
32
+ function isMapping(value) {
33
+ return value !== null && typeof value === "object" && !Array.isArray(value);
34
+ }
35
+ function relativeToProject(project, artifactPath) {
36
+ return path.relative(project, artifactPath);
37
+ }
38
+ function planTaskList(data) {
39
+ if (Array.isArray(data.tasks))
40
+ return data.tasks;
41
+ if (Array.isArray(data.entries))
42
+ return data.entries;
43
+ return null;
44
+ }
45
+ function completedTasksOnly(tasks) {
46
+ return tasks.every((task) => isMapping(task) && (task.status === "complete" || task.status === "completed"));
47
+ }
48
+ function rewritePlanStatus(text, status) {
49
+ const document = YAML.parseDocument(text);
50
+ if (document.errors.length > 0) {
51
+ throw new Error(document.errors.map((error) => error.message).join("; "));
52
+ }
53
+ document.setIn(["header", "status"], status);
54
+ return document.toString();
55
+ }
56
+ function lifecycleMigrationItem(project, artifactPath) {
57
+ const source = relativeToProject(project, artifactPath);
58
+ try {
59
+ const text = fs.readFileSync(artifactPath, "utf8");
60
+ const data = loadYamlMapping(text);
61
+ const header = isMapping(data.header) ? data.header : null;
62
+ const tasks = planTaskList(data);
63
+ if (!header || tasks === null) {
64
+ return {
65
+ status: "blocked",
66
+ action: PLAN_LIFECYCLE_ACTION,
67
+ source,
68
+ target: source,
69
+ message: "plan requires a header mapping and a tasks or entries array before lifecycle migration",
70
+ };
71
+ }
72
+ const status = typeof header.status === "string" ? header.status : "";
73
+ if (status === "open" || status === "complete") {
74
+ return {
75
+ status: "noop",
76
+ action: PLAN_LIFECYCLE_ACTION,
77
+ source,
78
+ target: source,
79
+ preserved: ["all plan fields"],
80
+ message: "plan lifecycle is already canonical",
81
+ };
82
+ }
83
+ if (status !== "active" && status !== "completed") {
84
+ return {
85
+ status: "blocked",
86
+ action: PLAN_LIFECYCLE_ACTION,
87
+ source,
88
+ target: source,
89
+ message: `plan header.status must be active, completed, open, or complete; received ${status || "missing"}`,
90
+ };
91
+ }
92
+ const collisions = [];
93
+ const targetStatus = status === "active" || !completedTasksOnly(tasks)
94
+ ? "open"
95
+ : "complete";
96
+ if (status === "completed" && targetStatus === "open") {
97
+ collisions.push("header.status=completed conflicts with unfinished task evidence; preserving task evidence and migrating status to open");
98
+ }
99
+ return {
100
+ status: "pending",
101
+ action: PLAN_LIFECYCLE_ACTION,
102
+ source,
103
+ target: source,
104
+ preserved: ["all plan fields except header.status"],
105
+ ...(collisions.length > 0 ? { collisions } : {}),
106
+ newText: rewritePlanStatus(text, targetStatus),
107
+ message: `will migrate plan lifecycle ${status} to ${targetStatus}`,
108
+ };
109
+ }
110
+ catch (error) {
111
+ return {
112
+ status: "blocked",
113
+ action: PLAN_LIFECYCLE_ACTION,
114
+ source,
115
+ target: source,
116
+ message: `cannot migrate plan lifecycle: ${error.message}`,
117
+ };
118
+ }
119
+ }
120
+ function lifecyclePlanArtifacts(project) {
121
+ const root = resolvePath(project);
122
+ let activePath;
123
+ try {
124
+ const record = loadArtifactRecord("plan");
125
+ if (!record)
126
+ throw new Error("plan artifact is not registered");
127
+ activePath = resolveArtifactPath(record, root, { strictWrite: true });
128
+ }
129
+ catch (error) {
130
+ return [{
131
+ status: "blocked",
132
+ action: PLAN_LIFECYCLE_ACTION,
133
+ message: `cannot resolve docs-mapped plan path: ${error.message}`,
134
+ }];
135
+ }
136
+ const artifacts = isFile(activePath) ? [activePath] : [];
137
+ const archiveDirectory = path.join(path.dirname(activePath), "archive");
138
+ try {
139
+ for (const name of fs.readdirSync(archiveDirectory).sort()) {
140
+ if (!PLAN_ARCHIVE_FILE.test(name))
141
+ continue;
142
+ const archivePath = path.join(archiveDirectory, name);
143
+ if (isFile(archivePath))
144
+ artifacts.push(archivePath);
145
+ }
146
+ }
147
+ catch {
148
+ // A missing archive directory is normal before the first archive.
149
+ }
150
+ return artifacts.map((artifactPath) => lifecycleMigrationItem(root, artifactPath));
151
+ }
152
+ export function hasPendingPlanLifecycleMigration(project) {
153
+ return lifecyclePlanArtifacts(project).some((item) => item.status === "pending");
154
+ }
32
155
  function emptySummary() {
33
- return { pending: 0, applied: 0, noop: 0, blocked: 0, failed: 0, skipped: 0 };
156
+ return { pending: 0, applied: 0, noop: 0, blocked: 0, failed: 0 };
34
157
  }
35
158
  export function summarizePhase(name, items, message = "") {
36
159
  const summary = emptySummary();
@@ -50,9 +173,6 @@ export function summarizePhase(name, items, message = "") {
50
173
  else if (summary.applied > 0) {
51
174
  status = "applied";
52
175
  }
53
- else if (summary.skipped > 0 && summary.noop === 0 && summary.applied === 0) {
54
- status = "skipped";
55
- }
56
176
  else {
57
177
  status = "noop";
58
178
  }
@@ -99,35 +219,88 @@ export function planArtifactsPhase(project) {
99
219
  ]);
100
220
  }
101
221
  const v1Pairs = detectV1ArtifactPairs(root);
102
- if (v1Pairs.length > 0) {
103
- return planV1ArtifactsPhase(root);
104
- }
222
+ const v1Items = v1Pairs.map((source) => ({
223
+ status: "blocked",
224
+ action: "manual-v1-handoff",
225
+ source,
226
+ message: "v1 Markdown state is unsupported; convert it with a v2 CLI before running the v2-to-v3 upgrade",
227
+ }));
105
228
  const yamlArtifacts = listV2YamlArtifacts(root);
106
- if (yamlArtifacts.length === 0) {
229
+ const lifecycleItems = lifecyclePlanArtifacts(root);
230
+ if (yamlArtifacts.length === 0 && v1Items.length === 0 && lifecycleItems.length === 0) {
107
231
  return summarizePhase("artifacts", [], "no project artifacts found");
108
232
  }
109
- const items = yamlArtifacts.map((source) => ({
110
- status: "noop",
111
- action: "preserve",
112
- source,
113
- message: "v2 YAML artifact preserved; no v2→v3 schema migration required",
114
- }));
233
+ const lifecycleSources = new Set(lifecycleItems.flatMap((item) => item.source ? [item.source] : []));
234
+ const items = [
235
+ ...v1Items,
236
+ ...yamlArtifacts.filter((source) => !lifecycleSources.has(source)).map((source) => ({
237
+ status: "noop",
238
+ action: "preserve",
239
+ source,
240
+ message: "v2 YAML artifact preserved; no v2→v3 schema migration required",
241
+ })),
242
+ ...lifecycleItems,
243
+ ];
115
244
  return summarizePhase("artifacts", items);
116
245
  }
117
- export function applyArtifactsPhase(phase, project, force = false) {
246
+ export function applyArtifactsPhase(phase, project, _force = false) {
118
247
  const root = resolvePath(project);
119
- const hasV1Migration = phase.items.some((item) => item.action === "migrate");
120
- if (hasV1Migration) {
121
- applyV1ArtifactsPhase(phase, root, force);
122
- return;
248
+ for (const item of phase.items) {
249
+ if (item.status !== "pending" || item.action !== PLAN_LIFECYCLE_ACTION || !item.source)
250
+ continue;
251
+ const sourcePath = path.join(root, item.source);
252
+ const current = lifecycleMigrationItem(root, sourcePath);
253
+ if (current.status !== "pending") {
254
+ item.status = current.status;
255
+ item.message = current.message;
256
+ item.collisions = current.collisions;
257
+ continue;
258
+ }
259
+ if (current.newText !== item.newText) {
260
+ item.status = "blocked";
261
+ item.message = "plan changed after migration preview; rerun dry-run before applying";
262
+ continue;
263
+ }
264
+ try {
265
+ writeFileAtomic(sourcePath, current.newText, "utf8");
266
+ item.status = "applied";
267
+ item.message = "migrated plan lifecycle without changing retained evidence";
268
+ }
269
+ catch (error) {
270
+ item.status = "failed";
271
+ item.message = `plan lifecycle migration failed: ${error.message}`;
272
+ }
123
273
  }
124
- phase.status = summarizePhase("artifacts", phase.items, phase.message).status;
274
+ const updated = summarizePhase("artifacts", phase.items, phase.message);
275
+ phase.status = updated.status;
276
+ phase.summary = updated.summary;
125
277
  }
126
- export function planRuntimeRewirePhase(ctx) {
278
+ export function delegatePlanLifecycleToEntityCutover(phase) {
279
+ for (const item of phase.items) {
280
+ if (item.status !== "pending" || item.action !== PLAN_LIFECYCLE_ACTION)
281
+ continue;
282
+ item.status = "noop";
283
+ item.message = "entity cutover normalizes plan lifecycle while retaining the legacy source as recovery evidence";
284
+ }
285
+ const updated = summarizePhase("artifacts", phase.items, phase.message);
286
+ phase.status = updated.status;
287
+ phase.summary = updated.summary;
288
+ }
289
+ export function planRuntimeRetirementPhase(ctx, _resolvedChannel) {
127
290
  const items = planRuntimeMigrationItems(ctx);
128
- return summarizePhase("runtime", items, items.length === 0 ? "no runtime configs with Python managed app-home references found" : "");
291
+ const blockedPaths = new Set(items
292
+ .filter((item) => item.status === "blocked")
293
+ .flatMap((item) => [item.source, item.target])
294
+ .filter((value) => typeof value === "string"));
295
+ for (const item of items) {
296
+ if (item.status !== "pending" || ![item.source, item.target].some((value) => value && blockedPaths.has(value)))
297
+ continue;
298
+ item.status = "blocked";
299
+ item.message = "action required before Agentera can modify this runtime resource";
300
+ }
301
+ return summarizePhase("runtime", items, items.length === 0 ? "no retired native Agentera hooks found" : "");
129
302
  }
130
- export function applyRuntimeRewirePhase(phase, ctx) {
303
+ export function applyRuntimeRetirementPhase(phase, ctx) {
131
304
  if (ctx) {
132
305
  applyRuntimeMigrationItems(phase.items, ctx);
133
306
  }
@@ -144,13 +317,72 @@ export function applyRuntimeRewirePhase(phase, ctx) {
144
317
  }
145
318
  /** Whether `app/` under app-home still carries a managed bundle worth removing during v2→v3 cleanup. */
146
319
  export function hasManagedBundleEvidence(managedAppRoot) {
147
- // v3 npm-managed installs write BUNDLE_MARKER at pack/refresh time.
148
- if (isFile(path.join(managedAppRoot, BUNDLE_MARKER))) {
149
- return true;
320
+ const marker = path.join(managedAppRoot, BUNDLE_MARKER);
321
+ if (!isFile(marker))
322
+ return false;
323
+ try {
324
+ const parsed = JSON.parse(fs.readFileSync(marker, "utf8"));
325
+ return parsed.schemaVersion === "agentera.bundle.v1" && typeof parsed.version === "string";
326
+ }
327
+ catch {
328
+ return false;
150
329
  }
151
- // Legacy v2 Python-managed installs lacked the marker but always shipped this pair.
152
- return (isFile(path.join(managedAppRoot, "scripts", "agentera")) &&
153
- isFile(path.join(managedAppRoot, "skills", "agentera", "SKILL.md")));
330
+ }
331
+ const SUPPORTED_V2_BUNDLE_INVENTORY_BY_MAJOR = {
332
+ "2": {
333
+ [BUNDLE_MARKER]: "file",
334
+ "registry.json": "file",
335
+ scripts: "directory",
336
+ "scripts/agentera": "file",
337
+ skills: "directory",
338
+ "skills/agentera": "directory",
339
+ "skills/agentera/SKILL.md": "file",
340
+ },
341
+ };
342
+ function markedBundleInventoryViolations(managedAppRoot) {
343
+ let version;
344
+ try {
345
+ const marker = JSON.parse(fs.readFileSync(path.join(managedAppRoot, BUNDLE_MARKER), "utf8"));
346
+ version = typeof marker.version === "string" ? marker.version : "";
347
+ }
348
+ catch {
349
+ return ["bundle marker is unreadable"];
350
+ }
351
+ const inventory = SUPPORTED_V2_BUNDLE_INVENTORY_BY_MAJOR[version.split(".")[0] ?? ""];
352
+ if (!inventory)
353
+ return [`bundle version ${version || "missing"} has no supported cleanup inventory`];
354
+ const actual = new Map();
355
+ const walk = (directory, prefix = "") => {
356
+ for (const name of fs.readdirSync(directory).sort()) {
357
+ const destination = path.join(directory, name);
358
+ const relative = prefix ? `${prefix}/${name}` : name;
359
+ const stat = fs.lstatSync(destination);
360
+ const kind = stat.isSymbolicLink()
361
+ ? "symlink"
362
+ : stat.isFile()
363
+ ? "file"
364
+ : stat.isDirectory()
365
+ ? "directory"
366
+ : "other";
367
+ actual.set(relative, kind);
368
+ if (kind === "directory")
369
+ walk(destination, relative);
370
+ }
371
+ };
372
+ walk(managedAppRoot);
373
+ const violations = [];
374
+ for (const [relative, kind] of actual) {
375
+ const expected = inventory[relative];
376
+ if (!expected)
377
+ violations.push(`unknown ${kind} ${relative}`);
378
+ else if (expected !== kind)
379
+ violations.push(`${relative} must be ${expected}, found ${kind}`);
380
+ }
381
+ for (const [relative, kind] of Object.entries(inventory)) {
382
+ if (!actual.has(relative))
383
+ violations.push(`missing ${kind} ${relative}`);
384
+ }
385
+ return violations.sort();
154
386
  }
155
387
  function listManagedBundlePreview(managedAppRoot, limit = 20) {
156
388
  if (!pathExists(managedAppRoot)) {
@@ -185,7 +417,17 @@ export function planCleanupPhase(ctx) {
185
417
  env: ctx.env,
186
418
  });
187
419
  const preserved = preflight.preservedAbsolutePaths;
188
- const unknown = appHomeHasUnrecognizedEntriesWithPreflight(appHome, preflight);
420
+ const installedHookItems = planInstalledHooksRetirementItems(ctx).filter((item) => item.status !== "noop"
421
+ && item.source !== undefined
422
+ && !item.source.startsWith(`${managedAppRoot}${path.sep}`));
423
+ const hasOwnedRootHooks = installedHookItems.some((item) => item.source?.startsWith(`${path.join(appHome, "hooks")}${path.sep}`));
424
+ const unknown = appHomeHasUnrecognizedEntriesWithPreflight(appHome, preflight)
425
+ .filter((name) => !(name === "hooks" && hasOwnedRootHooks));
426
+ const managedBundle = hasManagedBundleEvidence(managedAppRoot);
427
+ const refreshAuthorized = managedBundle
428
+ || hasBundleRootEvidence(roots.activeBundleRoot)
429
+ || (pathExists(appHome) && fs.readdirSync(appHome).length === 0);
430
+ const appRootUnknown = managedBundle ? markedBundleInventoryViolations(managedAppRoot) : [];
189
431
  const items = [
190
432
  ...preflight.handoffCatalog.map((entry) => ({
191
433
  status: "noop",
@@ -194,8 +436,12 @@ export function planCleanupPhase(ctx) {
194
436
  preserved: entry.entries,
195
437
  message: handoffCatalogMessage(entry),
196
438
  })),
197
- ...planAppContentRefreshItems(ctx),
198
439
  ...planLegacyAgentCleanupItems(ctx),
440
+ ...planLegacyCapabilityAgentCleanupItems(ctx),
441
+ ...installedHookItems,
442
+ ...(refreshAuthorized
443
+ ? planAppContentRefreshItems(ctx).filter((item) => item.action === "refresh-app-content")
444
+ : []),
199
445
  ];
200
446
  if (unknown.length > 0 && !ctx.force) {
201
447
  items.push({
@@ -203,18 +449,39 @@ export function planCleanupPhase(ctx) {
203
449
  action: "remove-managed-app-home",
204
450
  source: appHome,
205
451
  preserved,
206
- message: "app home contains unrecognized entries outside preserved user state; cleanup blocked without --force",
452
+ message: `app home has unrecognized entries (not preserved user state or managed app content): ${unknown.join(", ")}; cleanup blocked without --force`,
453
+ });
454
+ return summarizePhase("cleanup", items);
455
+ }
456
+ if (appRootUnknown.length > 0) {
457
+ items.push({
458
+ status: "blocked",
459
+ action: "remove-managed-app-home",
460
+ source: managedAppRoot,
461
+ target: appHome,
462
+ preserved: [managedAppRoot],
463
+ message: `managed app bundle does not match the supported v2 recursive inventory (${appRootUnknown.slice(0, 10).join(", ")}${appRootUnknown.length > 10 ? `; ${appRootUnknown.length - 10} more` : ""}); cleanup preserved the entire app directory for manual review`,
207
464
  });
208
465
  return summarizePhase("cleanup", items);
209
466
  }
210
- if (!hasManagedBundleEvidence(managedAppRoot)) {
467
+ if (!managedBundle) {
468
+ if (pathExists(managedAppRoot)) {
469
+ items.push({
470
+ status: "blocked",
471
+ action: "remove-managed-app-home",
472
+ source: managedAppRoot,
473
+ target: appHome,
474
+ message: `app directory preserved because ${BUNDLE_MARKER} ownership evidence is missing or invalid; review it manually`,
475
+ });
476
+ return summarizePhase("cleanup", items);
477
+ }
211
478
  if (items.length === 0) {
212
479
  return summarizePhase("cleanup", [], "no managed Python app-home bundle to remove");
213
480
  }
214
481
  return summarizePhase("cleanup", items);
215
482
  }
216
483
  const removedPreview = listManagedBundlePreview(managedAppRoot);
217
- items.push({
484
+ const cleanupItem = {
218
485
  status: "pending",
219
486
  action: "remove-managed-app-home",
220
487
  source: managedAppRoot,
@@ -222,32 +489,36 @@ export function planCleanupPhase(ctx) {
222
489
  preserved,
223
490
  removedPreview,
224
491
  message: "will remove managed Python app-home bundle under app/ while preserving user state at app-home root",
225
- });
226
- return summarizePhase("cleanup", items);
227
- }
228
- function removeDirectoryRecursive(dir) {
229
- if (!pathExists(dir)) {
230
- return;
492
+ };
493
+ const evidenceError = bindMigrationTree(cleanupItem, managedAppRoot, [appHome]);
494
+ if (evidenceError) {
495
+ cleanupItem.status = "blocked";
496
+ cleanupItem.message = `managed app cleanup preserved the bundle: ${evidenceError}; review the unsafe path manually`;
231
497
  }
232
- fs.rmSync(dir, { recursive: true, force: true });
498
+ items.push(cleanupItem);
499
+ return summarizePhase("cleanup", items);
233
500
  }
234
501
  export function applyCleanupPhase(phase, ctx) {
235
502
  if (ctx) {
503
+ applyLegacyAgentCleanupItems(phase.items, ctx);
504
+ applyInstalledHooksRetirementItems(phase.items, ctx);
236
505
  applyAppContentRefreshItems(phase.items, ctx);
237
506
  }
238
- applyLegacyAgentCleanupItems(phase.items);
239
507
  for (const item of phase.items) {
240
508
  if (item.status !== "pending" || item.action !== "remove-managed-app-home" || !item.source) {
241
509
  continue;
242
510
  }
243
511
  try {
244
- removeDirectoryRecursive(item.source);
512
+ if (process.env.NODE_ENV === "test" && process.env.AGENTERA_FAULT_INJECT_V2_CLEANUP_FAILURE === "1") {
513
+ throw new Error("simulated post-marker cleanup failure");
514
+ }
515
+ removeBoundMigrationTree(item);
245
516
  item.status = "applied";
246
517
  item.message = "managed Python app-home bundle removed; user state preserved";
247
518
  }
248
519
  catch (exc) {
249
- item.status = "failed";
250
- item.message = `cleanup failed: ${exc.message}`;
520
+ item.status = "blocked";
521
+ item.message = `cleanup preserved the managed app bundle: ${exc.message}; rerun migration and review it manually`;
251
522
  }
252
523
  }
253
524
  const updated = summarizePhase("cleanup", phase.items, phase.message);
@@ -257,25 +528,24 @@ export function applyCleanupPhase(phase, ctx) {
257
528
  export function dryRunMigration(ctx) {
258
529
  return {
259
530
  artifacts: planArtifactsPhase(ctx.project),
260
- runtime: planRuntimeRewirePhase(ctx),
531
+ runtime: planRuntimeRetirementPhase(ctx),
261
532
  cleanup: planCleanupPhase(ctx),
262
533
  };
263
534
  }
264
535
  export function applyMigrationPhases(ctx, preview, only = ["artifacts", "runtime", "cleanup"]) {
265
536
  const result = {
266
- artifacts: { ...preview.artifacts, items: preview.artifacts.items.map((item) => ({ ...item })) },
267
- runtime: { ...preview.runtime, items: preview.runtime.items.map((item) => ({ ...item })) },
268
- cleanup: { ...preview.cleanup, items: preview.cleanup.items.map((item) => ({ ...item })) },
537
+ artifacts: { ...preview.artifacts, items: preview.artifacts.items.map(cloneMigrationItem) },
538
+ runtime: { ...preview.runtime, items: preview.runtime.items.map(cloneMigrationItem) },
539
+ cleanup: { ...preview.cleanup, items: preview.cleanup.items.map(cloneMigrationItem) },
269
540
  };
270
541
  if (only.includes("artifacts")) {
271
542
  applyArtifactsPhase(result.artifacts, ctx.project, ctx.force);
272
543
  }
273
544
  if (only.includes("runtime")) {
274
- applyRuntimeRewirePhase(result.runtime, ctx);
545
+ applyRuntimeRetirementPhase(result.runtime, ctx);
275
546
  }
276
547
  if (only.includes("cleanup")) {
277
548
  applyCleanupPhase(result.cleanup, ctx);
278
549
  }
279
550
  return result;
280
551
  }
281
- //# sourceMappingURL=migrateArtifactsV2ToV3.js.map
@@ -0,0 +1,122 @@
1
+ import fs from "node:fs";
2
+ import path from "node:path";
3
+ import { observeLifecyclePath, publishLifecycleResource, removeLifecycleResource, verifyLifecycleResourceAtPublication, withPinnedLifecycleDirectory, } from "../runtime/lifecyclePublication.js";
4
+ const evidenceByItem = new WeakMap();
5
+ const MIGRATION_EVIDENCE = Symbol.for("agentera.migrationMutationEvidence");
6
+ function evidenceFor(item) {
7
+ const existing = evidenceByItem.get(item) ?? item[MIGRATION_EVIDENCE];
8
+ if (existing)
9
+ return existing;
10
+ const created = { resources: {} };
11
+ evidenceByItem.set(item, created);
12
+ item[MIGRATION_EVIDENCE] = created;
13
+ return created;
14
+ }
15
+ function readEvidence(item) {
16
+ return evidenceByItem.get(item) ?? item[MIGRATION_EVIDENCE];
17
+ }
18
+ export function cloneMigrationItem(item) {
19
+ const clone = { ...item };
20
+ const evidence = readEvidence(item);
21
+ if (evidence) {
22
+ evidenceByItem.set(clone, evidence);
23
+ clone[MIGRATION_EVIDENCE] = evidence;
24
+ }
25
+ return clone;
26
+ }
27
+ function observationError(destination, observation, expectedKind) {
28
+ if (observation.unsafeReason)
29
+ return observation.unsafeReason;
30
+ if (!observation.parentComplete)
31
+ return `parent chain is incomplete for ${destination}`;
32
+ if (observation.kind !== expectedKind || !observation.identity || !observation.fingerprint) {
33
+ return `${destination} is not an observable ${expectedKind}`;
34
+ }
35
+ return null;
36
+ }
37
+ export function bindMigrationResource(item, role, destination, allowedRoots, kind) {
38
+ const observation = observeLifecyclePath(destination, allowedRoots);
39
+ const error = observationError(destination, observation, kind);
40
+ if (error)
41
+ return error;
42
+ evidenceFor(item).resources[role] = { destination, kind, observation };
43
+ return null;
44
+ }
45
+ function boundResource(item, role) {
46
+ const resource = readEvidence(item)?.resources[role];
47
+ if (!resource)
48
+ throw new Error(`migration ${role} publication evidence is missing`);
49
+ return resource;
50
+ }
51
+ export function verifyBoundMigrationResource(item, role) {
52
+ const resource = boundResource(item, role);
53
+ verifyLifecycleResourceAtPublication({ id: `${item.action}.${role}`, destination: resource.destination, kind: resource.kind }, resource.observation);
54
+ }
55
+ export function withBoundMigrationDirectory(item, role, callback, hook) {
56
+ const resource = boundResource(item, role);
57
+ if (resource.kind !== "directory")
58
+ throw new Error(`migration ${role} is not a directory`);
59
+ return withPinnedLifecycleDirectory({ id: `${item.action}.${role}`, destination: resource.destination, kind: "directory" }, resource.observation, callback, hook);
60
+ }
61
+ export function updateBoundMigrationFile(item, role, content) {
62
+ const resource = boundResource(item, role);
63
+ if (resource.kind !== "file")
64
+ throw new Error(`migration ${role} is not a file`);
65
+ publishLifecycleResource({ id: `${item.action}.${role}`, destination: resource.destination, kind: "file", content }, "update", resource.observation);
66
+ }
67
+ export function removeBoundMigrationResource(item, role) {
68
+ const resource = boundResource(item, role);
69
+ removeLifecycleResource({ id: `${item.action}.${role}`, destination: resource.destination, kind: resource.kind }, resource.observation);
70
+ }
71
+ function walkTree(root) {
72
+ const entries = [];
73
+ const walk = (destination) => {
74
+ const stat = fs.lstatSync(destination);
75
+ const kind = stat.isSymbolicLink()
76
+ ? "symlink"
77
+ : stat.isFile()
78
+ ? "file"
79
+ : stat.isDirectory()
80
+ ? "directory"
81
+ : (() => { throw new Error(`unsupported bundle entry type at ${destination}`); })();
82
+ entries.push({ destination, kind });
83
+ if (kind === "directory") {
84
+ for (const name of fs.readdirSync(destination).sort())
85
+ walk(path.join(destination, name));
86
+ }
87
+ };
88
+ walk(root);
89
+ return entries;
90
+ }
91
+ export function bindMigrationTree(item, root, allowedRoots) {
92
+ try {
93
+ const tree = walkTree(root).map(({ destination, kind }) => {
94
+ const observation = observeLifecyclePath(destination, allowedRoots);
95
+ const error = observationError(destination, observation, kind);
96
+ if (error)
97
+ throw new Error(error);
98
+ return { destination, kind, observation };
99
+ });
100
+ evidenceFor(item).tree = tree;
101
+ return null;
102
+ }
103
+ catch (error) {
104
+ return error.message;
105
+ }
106
+ }
107
+ export function removeBoundMigrationTree(item) {
108
+ const tree = readEvidence(item)?.tree;
109
+ if (!tree)
110
+ throw new Error("migration cleanup tree evidence is missing");
111
+ const current = walkTree(tree[0].destination);
112
+ if (current.length !== tree.length
113
+ || current.some((entry, index) => entry.destination !== tree[index]?.destination || entry.kind !== tree[index]?.kind)) {
114
+ throw new Error("managed app cleanup set changed after preview");
115
+ }
116
+ for (const entry of tree) {
117
+ verifyLifecycleResourceAtPublication({ id: `${item.action}.verify`, destination: entry.destination, kind: entry.kind }, entry.observation);
118
+ }
119
+ for (const entry of [...tree].reverse()) {
120
+ removeLifecycleResource({ id: `${item.action}.remove`, destination: entry.destination, kind: entry.kind }, entry.observation);
121
+ }
122
+ }
@@ -153,4 +153,3 @@ export function prependNextMajorDoctorSection(text, sectionLines) {
153
153
  }
154
154
  return `${sectionLines.join("\n")}\n\n${text}`;
155
155
  }
156
- //# sourceMappingURL=nextMajorDoctor.js.map
@@ -20,4 +20,3 @@ export function resolveNpxPlatformStatus(opts) {
20
20
  const platformStatus = buildDoctorStatus(platformRoot, doctorOpts);
21
21
  return { platformRoot, platformStatus };
22
22
  }
23
- //# sourceMappingURL=npxPlatformStatus.js.map