agentera 3.0.0-dev.3 → 3.0.0-dev.30

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