@rpamis/comet 0.4.0-beta.5 → 0.4.0-beta.7

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 (714) hide show
  1. package/README.md +215 -77
  2. package/assets/manifest.json +14 -5
  3. package/assets/skills/comet/SKILL.md +17 -282
  4. package/assets/skills/comet/reference/comet-yaml-fields.md +5 -3
  5. package/assets/skills/comet/reference/context-recovery.md +3 -3
  6. package/assets/skills/comet/reference/intent-frame.md +2 -2
  7. package/assets/skills/comet/reference/scripts.md +2 -2
  8. package/assets/skills/comet/rules/comet-workflow-guard.en.md +32 -0
  9. package/assets/skills/comet/rules/comet-workflow-guard.md +32 -0
  10. package/assets/skills/comet/scripts/comet-entry-runtime.mjs +7834 -0
  11. package/assets/skills/comet/scripts/comet-hook-router.mjs +10307 -0
  12. package/assets/skills/comet/scripts/comet-runtime.mjs +782 -425
  13. package/assets/skills/comet-any/SKILL.md +4 -4
  14. package/assets/skills/comet-any/reference/authoring-subagents.md +1 -1
  15. package/assets/skills/comet-any/reference/bundle-authoring.md +1 -1
  16. package/assets/skills/comet-any/reference/subagents/reference-author.md +1 -1
  17. package/assets/skills/comet-any/reference/subagents/script-author.md +1 -1
  18. package/assets/skills/comet-any/reference/subagents/skill-core-author.md +1 -1
  19. package/assets/skills/comet-any/reference/subagents/skill-reviewer.md +2 -2
  20. package/assets/skills/comet-any/reference/subagents/workflow-entry-author.md +3 -3
  21. package/assets/skills/comet-archive/SKILL.md +7 -9
  22. package/assets/skills/comet-build/SKILL.md +17 -11
  23. package/assets/skills/comet-classic/SKILL.md +293 -0
  24. package/assets/skills/comet-design/SKILL.md +1 -1
  25. package/assets/skills/comet-hotfix/SKILL.md +20 -6
  26. package/assets/skills/comet-native/SKILL.md +257 -0
  27. package/assets/skills/comet-native/reference/artifacts.md +204 -0
  28. package/assets/skills/comet-native/reference/commands.md +118 -0
  29. package/assets/skills/comet-native/reference/recovery.md +143 -0
  30. package/assets/skills/comet-native/scripts/comet-native-hook-guard.mjs +4 -0
  31. package/assets/skills/comet-native/scripts/comet-native-runtime.mjs +28898 -0
  32. package/assets/skills/comet-open/SKILL.md +4 -4
  33. package/assets/skills/comet-tweak/SKILL.md +22 -10
  34. package/assets/skills/comet-verify/SKILL.md +2 -0
  35. package/assets/skills-zh/comet/SKILL.md +17 -270
  36. package/assets/skills-zh/comet/reference/comet-yaml-fields.md +5 -3
  37. package/assets/skills-zh/comet/reference/context-recovery.md +3 -3
  38. package/assets/skills-zh/comet/reference/intent-frame.md +2 -2
  39. package/assets/skills-zh/comet/reference/scripts.md +2 -2
  40. package/assets/skills-zh/comet-any/SKILL.md +4 -4
  41. package/assets/skills-zh/comet-any/reference/authoring-subagents.md +1 -1
  42. package/assets/skills-zh/comet-any/reference/bundle-authoring.md +1 -1
  43. package/assets/skills-zh/comet-any/reference/subagents/reference-author.md +1 -1
  44. package/assets/skills-zh/comet-any/reference/subagents/script-author.md +1 -1
  45. package/assets/skills-zh/comet-any/reference/subagents/skill-core-author.md +1 -1
  46. package/assets/skills-zh/comet-any/reference/subagents/skill-reviewer.md +2 -2
  47. package/assets/skills-zh/comet-any/reference/subagents/workflow-entry-author.md +3 -3
  48. package/assets/skills-zh/comet-archive/SKILL.md +7 -9
  49. package/assets/skills-zh/comet-build/SKILL.md +17 -11
  50. package/assets/skills-zh/comet-classic/SKILL.md +281 -0
  51. package/assets/skills-zh/comet-design/SKILL.md +1 -1
  52. package/assets/skills-zh/comet-hotfix/SKILL.md +20 -6
  53. package/assets/skills-zh/comet-native/SKILL.md +257 -0
  54. package/assets/skills-zh/comet-native/reference/artifacts.md +206 -0
  55. package/assets/skills-zh/comet-native/reference/commands.md +118 -0
  56. package/assets/skills-zh/comet-native/reference/recovery.md +143 -0
  57. package/assets/skills-zh/comet-open/SKILL.md +4 -4
  58. package/assets/skills-zh/comet-tweak/SKILL.md +22 -10
  59. package/assets/skills-zh/comet-verify/SKILL.md +2 -0
  60. package/dist/app/cli/index.js +59 -13
  61. package/dist/app/cli/index.js.map +1 -1
  62. package/dist/app/commands/command-result.d.ts +6 -0
  63. package/dist/app/commands/command-result.d.ts.map +1 -0
  64. package/dist/app/commands/command-result.js +4 -0
  65. package/dist/app/commands/command-result.js.map +1 -0
  66. package/dist/app/commands/doctor.d.ts +1 -0
  67. package/dist/app/commands/doctor.d.ts.map +1 -1
  68. package/dist/app/commands/doctor.js +201 -26
  69. package/dist/app/commands/doctor.js.map +1 -1
  70. package/dist/app/commands/eval.d.ts +3 -1
  71. package/dist/app/commands/eval.d.ts.map +1 -1
  72. package/dist/app/commands/eval.js +17 -7
  73. package/dist/app/commands/eval.js.map +1 -1
  74. package/dist/app/commands/i18n.d.ts +1 -1
  75. package/dist/app/commands/i18n.d.ts.map +1 -1
  76. package/dist/app/commands/i18n.js +6 -2
  77. package/dist/app/commands/i18n.js.map +1 -1
  78. package/dist/app/commands/init.d.ts +10 -2
  79. package/dist/app/commands/init.d.ts.map +1 -1
  80. package/dist/app/commands/init.js +331 -50
  81. package/dist/app/commands/init.js.map +1 -1
  82. package/dist/app/commands/native.d.ts +2 -0
  83. package/dist/app/commands/native.d.ts.map +1 -0
  84. package/dist/app/commands/native.js +10 -0
  85. package/dist/app/commands/native.js.map +1 -0
  86. package/dist/app/commands/project-scope-selection.d.ts.map +1 -1
  87. package/dist/app/commands/project-scope-selection.js +2 -0
  88. package/dist/app/commands/project-scope-selection.js.map +1 -1
  89. package/dist/app/commands/resume-probe.d.ts.map +1 -1
  90. package/dist/app/commands/resume-probe.js +8 -2
  91. package/dist/app/commands/resume-probe.js.map +1 -1
  92. package/dist/app/commands/status.d.ts +0 -31
  93. package/dist/app/commands/status.d.ts.map +1 -1
  94. package/dist/app/commands/status.js +49 -172
  95. package/dist/app/commands/status.js.map +1 -1
  96. package/dist/app/commands/update.d.ts +20 -4
  97. package/dist/app/commands/update.d.ts.map +1 -1
  98. package/dist/app/commands/update.js +698 -90
  99. package/dist/app/commands/update.js.map +1 -1
  100. package/dist/app/commands/workflow.d.ts +6 -0
  101. package/dist/app/commands/workflow.d.ts.map +1 -0
  102. package/dist/app/commands/workflow.js +11 -0
  103. package/dist/app/commands/workflow.js.map +1 -0
  104. package/dist/config/repository-layout.json +21 -1
  105. package/dist/domains/comet-classic/classic-archive.d.ts.map +1 -1
  106. package/dist/domains/comet-classic/classic-archive.js +3 -0
  107. package/dist/domains/comet-classic/classic-archive.js.map +1 -1
  108. package/dist/domains/comet-classic/classic-branch-binding.d.ts +51 -0
  109. package/dist/domains/comet-classic/classic-branch-binding.d.ts.map +1 -0
  110. package/dist/domains/comet-classic/classic-branch-binding.js +107 -0
  111. package/dist/domains/comet-classic/classic-branch-binding.js.map +1 -0
  112. package/dist/domains/comet-classic/classic-current-change.d.ts +3 -5
  113. package/dist/domains/comet-classic/classic-current-change.d.ts.map +1 -1
  114. package/dist/domains/comet-classic/classic-current-change.js +59 -68
  115. package/dist/domains/comet-classic/classic-current-change.js.map +1 -1
  116. package/dist/domains/comet-classic/classic-guard.d.ts.map +1 -1
  117. package/dist/domains/comet-classic/classic-guard.js +40 -10
  118. package/dist/domains/comet-classic/classic-guard.js.map +1 -1
  119. package/dist/domains/comet-classic/classic-hook-guard.d.ts +9 -0
  120. package/dist/domains/comet-classic/classic-hook-guard.d.ts.map +1 -1
  121. package/dist/domains/comet-classic/classic-hook-guard.js +109 -13
  122. package/dist/domains/comet-classic/classic-hook-guard.js.map +1 -1
  123. package/dist/domains/comet-classic/classic-project-config.d.ts.map +1 -1
  124. package/dist/domains/comet-classic/classic-project-config.js +12 -8
  125. package/dist/domains/comet-classic/classic-project-config.js.map +1 -1
  126. package/dist/domains/comet-classic/classic-runtime-run.d.ts.map +1 -1
  127. package/dist/domains/comet-classic/classic-runtime-run.js +9 -1
  128. package/dist/domains/comet-classic/classic-runtime-run.js.map +1 -1
  129. package/dist/domains/comet-classic/classic-state-command.d.ts.map +1 -1
  130. package/dist/domains/comet-classic/classic-state-command.js +94 -4
  131. package/dist/domains/comet-classic/classic-state-command.js.map +1 -1
  132. package/dist/domains/comet-classic/classic-state-events.d.ts +1 -1
  133. package/dist/domains/comet-classic/classic-state-events.d.ts.map +1 -1
  134. package/dist/domains/comet-classic/classic-state.d.ts +2 -1
  135. package/dist/domains/comet-classic/classic-state.d.ts.map +1 -1
  136. package/dist/domains/comet-classic/classic-state.js +3 -0
  137. package/dist/domains/comet-classic/classic-state.js.map +1 -1
  138. package/dist/domains/comet-classic/classic-transitions.d.ts.map +1 -1
  139. package/dist/domains/comet-classic/classic-transitions.js +1 -0
  140. package/dist/domains/comet-classic/classic-transitions.js.map +1 -1
  141. package/dist/domains/comet-classic/classic-validate-command.d.ts.map +1 -1
  142. package/dist/domains/comet-classic/classic-validate-command.js +6 -0
  143. package/dist/domains/comet-classic/classic-validate-command.js.map +1 -1
  144. package/dist/domains/comet-entry/current-selection-repair.d.ts +17 -0
  145. package/dist/domains/comet-entry/current-selection-repair.d.ts.map +1 -0
  146. package/dist/domains/comet-entry/current-selection-repair.js +19 -0
  147. package/dist/domains/comet-entry/current-selection-repair.js.map +1 -0
  148. package/dist/domains/comet-entry/current-selection.d.ts +28 -0
  149. package/dist/domains/comet-entry/current-selection.d.ts.map +1 -0
  150. package/dist/domains/comet-entry/current-selection.js +116 -0
  151. package/dist/domains/comet-entry/current-selection.js.map +1 -0
  152. package/dist/domains/comet-entry/entry-runtime-entry.d.ts +2 -0
  153. package/dist/domains/comet-entry/entry-runtime-entry.d.ts.map +1 -0
  154. package/dist/domains/comet-entry/entry-runtime-entry.js +3 -0
  155. package/dist/domains/comet-entry/entry-runtime-entry.js.map +1 -0
  156. package/dist/domains/comet-entry/entry-runtime.d.ts +7 -0
  157. package/dist/domains/comet-entry/entry-runtime.d.ts.map +1 -0
  158. package/dist/domains/comet-entry/entry-runtime.js +55 -0
  159. package/dist/domains/comet-entry/entry-runtime.js.map +1 -0
  160. package/dist/domains/comet-entry/hook-adapter.d.ts +6 -0
  161. package/dist/domains/comet-entry/hook-adapter.d.ts.map +1 -0
  162. package/dist/domains/comet-entry/hook-adapter.js +202 -0
  163. package/dist/domains/comet-entry/hook-adapter.js.map +1 -0
  164. package/dist/domains/comet-entry/hook-router-entry.d.ts +8 -0
  165. package/dist/domains/comet-entry/hook-router-entry.d.ts.map +1 -0
  166. package/dist/domains/comet-entry/hook-router-entry.js +92 -0
  167. package/dist/domains/comet-entry/hook-router-entry.js.map +1 -0
  168. package/dist/domains/comet-entry/hook-router.d.ts +32 -0
  169. package/dist/domains/comet-entry/hook-router.d.ts.map +1 -0
  170. package/dist/domains/comet-entry/hook-router.js +133 -0
  171. package/dist/domains/comet-entry/hook-router.js.map +1 -0
  172. package/dist/domains/comet-entry/hook-types.d.ts +20 -0
  173. package/dist/domains/comet-entry/hook-types.d.ts.map +1 -0
  174. package/dist/domains/comet-entry/hook-types.js +2 -0
  175. package/dist/domains/comet-entry/hook-types.js.map +1 -0
  176. package/dist/domains/comet-entry/init-workflow.d.ts +16 -0
  177. package/dist/domains/comet-entry/init-workflow.d.ts.map +1 -0
  178. package/dist/domains/comet-entry/init-workflow.js +103 -0
  179. package/dist/domains/comet-entry/init-workflow.js.map +1 -0
  180. package/dist/domains/comet-entry/project-status.d.ts +3 -0
  181. package/dist/domains/comet-entry/project-status.d.ts.map +1 -0
  182. package/dist/domains/comet-entry/project-status.js +222 -0
  183. package/dist/domains/comet-entry/project-status.js.map +1 -0
  184. package/dist/domains/comet-entry/resolve-entry.d.ts +3 -0
  185. package/dist/domains/comet-entry/resolve-entry.d.ts.map +1 -0
  186. package/dist/domains/comet-entry/resolve-entry.js +22 -0
  187. package/dist/domains/comet-entry/resolve-entry.js.map +1 -0
  188. package/dist/domains/comet-entry/resume-probe.d.ts +34 -0
  189. package/dist/domains/comet-entry/resume-probe.d.ts.map +1 -0
  190. package/dist/domains/comet-entry/resume-probe.js +458 -0
  191. package/dist/domains/comet-entry/resume-probe.js.map +1 -0
  192. package/dist/domains/comet-entry/types.d.ts +59 -0
  193. package/dist/domains/comet-entry/types.d.ts.map +1 -0
  194. package/dist/domains/comet-entry/types.js +2 -0
  195. package/dist/domains/comet-entry/types.js.map +1 -0
  196. package/dist/domains/comet-entry/workflow-resolution.d.ts +8 -0
  197. package/dist/domains/comet-entry/workflow-resolution.d.ts.map +1 -0
  198. package/dist/domains/comet-entry/workflow-resolution.js +16 -0
  199. package/dist/domains/comet-entry/workflow-resolution.js.map +1 -0
  200. package/dist/domains/comet-native/index.d.ts +35 -0
  201. package/dist/domains/comet-native/index.d.ts.map +1 -0
  202. package/dist/domains/comet-native/index.js +35 -0
  203. package/dist/domains/comet-native/index.js.map +1 -0
  204. package/dist/domains/comet-native/native-acceptance.d.ts +42 -0
  205. package/dist/domains/comet-native/native-acceptance.d.ts.map +1 -0
  206. package/dist/domains/comet-native/native-acceptance.js +503 -0
  207. package/dist/domains/comet-native/native-acceptance.js.map +1 -0
  208. package/dist/domains/comet-native/native-archive-content.d.ts +26 -0
  209. package/dist/domains/comet-native/native-archive-content.d.ts.map +1 -0
  210. package/dist/domains/comet-native/native-archive-content.js +159 -0
  211. package/dist/domains/comet-native/native-archive-content.js.map +1 -0
  212. package/dist/domains/comet-native/native-archive-inspection.d.ts +9 -0
  213. package/dist/domains/comet-native/native-archive-inspection.d.ts.map +1 -0
  214. package/dist/domains/comet-native/native-archive-inspection.js +94 -0
  215. package/dist/domains/comet-native/native-archive-inspection.js.map +1 -0
  216. package/dist/domains/comet-native/native-archive-preflight.d.ts +52 -0
  217. package/dist/domains/comet-native/native-archive-preflight.d.ts.map +1 -0
  218. package/dist/domains/comet-native/native-archive-preflight.js +214 -0
  219. package/dist/domains/comet-native/native-archive-preflight.js.map +1 -0
  220. package/dist/domains/comet-native/native-archive-transaction.d.ts +19 -0
  221. package/dist/domains/comet-native/native-archive-transaction.d.ts.map +1 -0
  222. package/dist/domains/comet-native/native-archive-transaction.js +1181 -0
  223. package/dist/domains/comet-native/native-archive-transaction.js.map +1 -0
  224. package/dist/domains/comet-native/native-archive.d.ts +36 -0
  225. package/dist/domains/comet-native/native-archive.d.ts.map +1 -0
  226. package/dist/domains/comet-native/native-archive.js +403 -0
  227. package/dist/domains/comet-native/native-archive.js.map +1 -0
  228. package/dist/domains/comet-native/native-artifacts.d.ts +10 -0
  229. package/dist/domains/comet-native/native-artifacts.d.ts.map +1 -0
  230. package/dist/domains/comet-native/native-artifacts.js +204 -0
  231. package/dist/domains/comet-native/native-artifacts.js.map +1 -0
  232. package/dist/domains/comet-native/native-atomic-file.d.ts +10 -0
  233. package/dist/domains/comet-native/native-atomic-file.d.ts.map +1 -0
  234. package/dist/domains/comet-native/native-atomic-file.js +175 -0
  235. package/dist/domains/comet-native/native-atomic-file.js.map +1 -0
  236. package/dist/domains/comet-native/native-bounded-file.d.ts +19 -0
  237. package/dist/domains/comet-native/native-bounded-file.d.ts.map +1 -0
  238. package/dist/domains/comet-native/native-bounded-file.js +180 -0
  239. package/dist/domains/comet-native/native-bounded-file.js.map +1 -0
  240. package/dist/domains/comet-native/native-build-evidence.d.ts +42 -0
  241. package/dist/domains/comet-native/native-build-evidence.d.ts.map +1 -0
  242. package/dist/domains/comet-native/native-build-evidence.js +257 -0
  243. package/dist/domains/comet-native/native-build-evidence.js.map +1 -0
  244. package/dist/domains/comet-native/native-canonical-hash.d.ts +10 -0
  245. package/dist/domains/comet-native/native-canonical-hash.d.ts.map +1 -0
  246. package/dist/domains/comet-native/native-canonical-hash.js +100 -0
  247. package/dist/domains/comet-native/native-canonical-hash.js.map +1 -0
  248. package/dist/domains/comet-native/native-change-recovery.d.ts +11 -0
  249. package/dist/domains/comet-native/native-change-recovery.d.ts.map +1 -0
  250. package/dist/domains/comet-native/native-change-recovery.js +15 -0
  251. package/dist/domains/comet-native/native-change-recovery.js.map +1 -0
  252. package/dist/domains/comet-native/native-change.d.ts +61 -0
  253. package/dist/domains/comet-native/native-change.d.ts.map +1 -0
  254. package/dist/domains/comet-native/native-change.js +696 -0
  255. package/dist/domains/comet-native/native-change.js.map +1 -0
  256. package/dist/domains/comet-native/native-check-receipt-model.d.ts +63 -0
  257. package/dist/domains/comet-native/native-check-receipt-model.d.ts.map +1 -0
  258. package/dist/domains/comet-native/native-check-receipt-model.js +347 -0
  259. package/dist/domains/comet-native/native-check-receipt-model.js.map +1 -0
  260. package/dist/domains/comet-native/native-check-receipt-storage.d.ts +10 -0
  261. package/dist/domains/comet-native/native-check-receipt-storage.d.ts.map +1 -0
  262. package/dist/domains/comet-native/native-check-receipt-storage.js +196 -0
  263. package/dist/domains/comet-native/native-check-receipt-storage.js.map +1 -0
  264. package/dist/domains/comet-native/native-check-receipt.d.ts +19 -0
  265. package/dist/domains/comet-native/native-check-receipt.d.ts.map +1 -0
  266. package/dist/domains/comet-native/native-check-receipt.js +446 -0
  267. package/dist/domains/comet-native/native-check-receipt.js.map +1 -0
  268. package/dist/domains/comet-native/native-check.d.ts +18 -0
  269. package/dist/domains/comet-native/native-check.d.ts.map +1 -0
  270. package/dist/domains/comet-native/native-check.js +29 -0
  271. package/dist/domains/comet-native/native-check.js.map +1 -0
  272. package/dist/domains/comet-native/native-checkpoint-journal.d.ts +13 -0
  273. package/dist/domains/comet-native/native-checkpoint-journal.d.ts.map +1 -0
  274. package/dist/domains/comet-native/native-checkpoint-journal.js +53 -0
  275. package/dist/domains/comet-native/native-checkpoint-journal.js.map +1 -0
  276. package/dist/domains/comet-native/native-checkpoint-storage.d.ts +43 -0
  277. package/dist/domains/comet-native/native-checkpoint-storage.d.ts.map +1 -0
  278. package/dist/domains/comet-native/native-checkpoint-storage.js +487 -0
  279. package/dist/domains/comet-native/native-checkpoint-storage.js.map +1 -0
  280. package/dist/domains/comet-native/native-cli-entry.d.ts +2 -0
  281. package/dist/domains/comet-native/native-cli-entry.d.ts.map +1 -0
  282. package/dist/domains/comet-native/native-cli-entry.js +18 -0
  283. package/dist/domains/comet-native/native-cli-entry.js.map +1 -0
  284. package/dist/domains/comet-native/native-cli.d.ts +7 -0
  285. package/dist/domains/comet-native/native-cli.d.ts.map +1 -0
  286. package/dist/domains/comet-native/native-cli.js +642 -0
  287. package/dist/domains/comet-native/native-cli.js.map +1 -0
  288. package/dist/domains/comet-native/native-config.d.ts +15 -0
  289. package/dist/domains/comet-native/native-config.d.ts.map +1 -0
  290. package/dist/domains/comet-native/native-config.js +281 -0
  291. package/dist/domains/comet-native/native-config.js.map +1 -0
  292. package/dist/domains/comet-native/native-conflict-inspection.d.ts +17 -0
  293. package/dist/domains/comet-native/native-conflict-inspection.d.ts.map +1 -0
  294. package/dist/domains/comet-native/native-conflict-inspection.js +90 -0
  295. package/dist/domains/comet-native/native-conflict-inspection.js.map +1 -0
  296. package/dist/domains/comet-native/native-conflict-radar.d.ts +75 -0
  297. package/dist/domains/comet-native/native-conflict-radar.d.ts.map +1 -0
  298. package/dist/domains/comet-native/native-conflict-radar.js +326 -0
  299. package/dist/domains/comet-native/native-conflict-radar.js.map +1 -0
  300. package/dist/domains/comet-native/native-continuation.d.ts +9 -0
  301. package/dist/domains/comet-native/native-continuation.d.ts.map +1 -0
  302. package/dist/domains/comet-native/native-continuation.js +146 -0
  303. package/dist/domains/comet-native/native-continuation.js.map +1 -0
  304. package/dist/domains/comet-native/native-contract-files.d.ts +24 -0
  305. package/dist/domains/comet-native/native-contract-files.d.ts.map +1 -0
  306. package/dist/domains/comet-native/native-contract-files.js +66 -0
  307. package/dist/domains/comet-native/native-contract-files.js.map +1 -0
  308. package/dist/domains/comet-native/native-contract.d.ts +41 -0
  309. package/dist/domains/comet-native/native-contract.d.ts.map +1 -0
  310. package/dist/domains/comet-native/native-contract.js +141 -0
  311. package/dist/domains/comet-native/native-contract.js.map +1 -0
  312. package/dist/domains/comet-native/native-diagnostics.d.ts +18 -0
  313. package/dist/domains/comet-native/native-diagnostics.d.ts.map +1 -0
  314. package/dist/domains/comet-native/native-diagnostics.js +522 -0
  315. package/dist/domains/comet-native/native-diagnostics.js.map +1 -0
  316. package/dist/domains/comet-native/native-doctor.d.ts +12 -0
  317. package/dist/domains/comet-native/native-doctor.d.ts.map +1 -0
  318. package/dist/domains/comet-native/native-doctor.js +768 -0
  319. package/dist/domains/comet-native/native-doctor.js.map +1 -0
  320. package/dist/domains/comet-native/native-evidence-retention.d.ts +37 -0
  321. package/dist/domains/comet-native/native-evidence-retention.d.ts.map +1 -0
  322. package/dist/domains/comet-native/native-evidence-retention.js +885 -0
  323. package/dist/domains/comet-native/native-evidence-retention.js.map +1 -0
  324. package/dist/domains/comet-native/native-evidence-storage.d.ts +41 -0
  325. package/dist/domains/comet-native/native-evidence-storage.d.ts.map +1 -0
  326. package/dist/domains/comet-native/native-evidence-storage.js +351 -0
  327. package/dist/domains/comet-native/native-evidence-storage.js.map +1 -0
  328. package/dist/domains/comet-native/native-findings.d.ts +8 -0
  329. package/dist/domains/comet-native/native-findings.d.ts.map +1 -0
  330. package/dist/domains/comet-native/native-findings.js +238 -0
  331. package/dist/domains/comet-native/native-findings.js.map +1 -0
  332. package/dist/domains/comet-native/native-guards.d.ts +7 -0
  333. package/dist/domains/comet-native/native-guards.d.ts.map +1 -0
  334. package/dist/domains/comet-native/native-guards.js +126 -0
  335. package/dist/domains/comet-native/native-guards.js.map +1 -0
  336. package/dist/domains/comet-native/native-hash.d.ts +3 -0
  337. package/dist/domains/comet-native/native-hash.d.ts.map +1 -0
  338. package/dist/domains/comet-native/native-hash.js +12 -0
  339. package/dist/domains/comet-native/native-hash.js.map +1 -0
  340. package/dist/domains/comet-native/native-hook-guard.d.ts +17 -0
  341. package/dist/domains/comet-native/native-hook-guard.d.ts.map +1 -0
  342. package/dist/domains/comet-native/native-hook-guard.js +154 -0
  343. package/dist/domains/comet-native/native-hook-guard.js.map +1 -0
  344. package/dist/domains/comet-native/native-lock.d.ts +47 -0
  345. package/dist/domains/comet-native/native-lock.d.ts.map +1 -0
  346. package/dist/domains/comet-native/native-lock.js +395 -0
  347. package/dist/domains/comet-native/native-lock.js.map +1 -0
  348. package/dist/domains/comet-native/native-mutation-lock.d.ts +5 -0
  349. package/dist/domains/comet-native/native-mutation-lock.d.ts.map +1 -0
  350. package/dist/domains/comet-native/native-mutation-lock.js +66 -0
  351. package/dist/domains/comet-native/native-mutation-lock.js.map +1 -0
  352. package/dist/domains/comet-native/native-paths.d.ts +10 -0
  353. package/dist/domains/comet-native/native-paths.d.ts.map +1 -0
  354. package/dist/domains/comet-native/native-paths.js +171 -0
  355. package/dist/domains/comet-native/native-paths.js.map +1 -0
  356. package/dist/domains/comet-native/native-progress-checkpoint.d.ts +13 -0
  357. package/dist/domains/comet-native/native-progress-checkpoint.d.ts.map +1 -0
  358. package/dist/domains/comet-native/native-progress-checkpoint.js +104 -0
  359. package/dist/domains/comet-native/native-progress-checkpoint.js.map +1 -0
  360. package/dist/domains/comet-native/native-protected-file.d.ts +113 -0
  361. package/dist/domains/comet-native/native-protected-file.d.ts.map +1 -0
  362. package/dist/domains/comet-native/native-protected-file.js +509 -0
  363. package/dist/domains/comet-native/native-protected-file.js.map +1 -0
  364. package/dist/domains/comet-native/native-redaction.d.ts +2 -0
  365. package/dist/domains/comet-native/native-redaction.d.ts.map +1 -0
  366. package/dist/domains/comet-native/native-redaction.js +18 -0
  367. package/dist/domains/comet-native/native-redaction.js.map +1 -0
  368. package/dist/domains/comet-native/native-repair-integration.d.ts +42 -0
  369. package/dist/domains/comet-native/native-repair-integration.d.ts.map +1 -0
  370. package/dist/domains/comet-native/native-repair-integration.js +184 -0
  371. package/dist/domains/comet-native/native-repair-integration.js.map +1 -0
  372. package/dist/domains/comet-native/native-repair-runtime.d.ts +73 -0
  373. package/dist/domains/comet-native/native-repair-runtime.d.ts.map +1 -0
  374. package/dist/domains/comet-native/native-repair-runtime.js +509 -0
  375. package/dist/domains/comet-native/native-repair-runtime.js.map +1 -0
  376. package/dist/domains/comet-native/native-repair-stagnation.d.ts +85 -0
  377. package/dist/domains/comet-native/native-repair-stagnation.d.ts.map +1 -0
  378. package/dist/domains/comet-native/native-repair-stagnation.js +256 -0
  379. package/dist/domains/comet-native/native-repair-stagnation.js.map +1 -0
  380. package/dist/domains/comet-native/native-resume-view.d.ts +14 -0
  381. package/dist/domains/comet-native/native-resume-view.d.ts.map +1 -0
  382. package/dist/domains/comet-native/native-resume-view.js +105 -0
  383. package/dist/domains/comet-native/native-resume-view.js.map +1 -0
  384. package/dist/domains/comet-native/native-revision.d.ts +20 -0
  385. package/dist/domains/comet-native/native-revision.d.ts.map +1 -0
  386. package/dist/domains/comet-native/native-revision.js +32 -0
  387. package/dist/domains/comet-native/native-revision.js.map +1 -0
  388. package/dist/domains/comet-native/native-root-move.d.ts +20 -0
  389. package/dist/domains/comet-native/native-root-move.d.ts.map +1 -0
  390. package/dist/domains/comet-native/native-root-move.js +812 -0
  391. package/dist/domains/comet-native/native-root-move.js.map +1 -0
  392. package/dist/domains/comet-native/native-run-consistency.d.ts +3 -0
  393. package/dist/domains/comet-native/native-run-consistency.d.ts.map +1 -0
  394. package/dist/domains/comet-native/native-run-consistency.js +136 -0
  395. package/dist/domains/comet-native/native-run-consistency.js.map +1 -0
  396. package/dist/domains/comet-native/native-run-store.d.ts +41 -0
  397. package/dist/domains/comet-native/native-run-store.d.ts.map +1 -0
  398. package/dist/domains/comet-native/native-run-store.js +451 -0
  399. package/dist/domains/comet-native/native-run-store.js.map +1 -0
  400. package/dist/domains/comet-native/native-runtime-package.d.ts +16 -0
  401. package/dist/domains/comet-native/native-runtime-package.d.ts.map +1 -0
  402. package/dist/domains/comet-native/native-runtime-package.js +72 -0
  403. package/dist/domains/comet-native/native-runtime-package.js.map +1 -0
  404. package/dist/domains/comet-native/native-schema-migration.d.ts +11 -0
  405. package/dist/domains/comet-native/native-schema-migration.d.ts.map +1 -0
  406. package/dist/domains/comet-native/native-schema-migration.js +899 -0
  407. package/dist/domains/comet-native/native-schema-migration.js.map +1 -0
  408. package/dist/domains/comet-native/native-selection.d.ts +12 -0
  409. package/dist/domains/comet-native/native-selection.d.ts.map +1 -0
  410. package/dist/domains/comet-native/native-selection.js +52 -0
  411. package/dist/domains/comet-native/native-selection.js.map +1 -0
  412. package/dist/domains/comet-native/native-sensitive-paths.d.ts +7 -0
  413. package/dist/domains/comet-native/native-sensitive-paths.d.ts.map +1 -0
  414. package/dist/domains/comet-native/native-sensitive-paths.js +69 -0
  415. package/dist/domains/comet-native/native-sensitive-paths.js.map +1 -0
  416. package/dist/domains/comet-native/native-snapshot.d.ts +74 -0
  417. package/dist/domains/comet-native/native-snapshot.d.ts.map +1 -0
  418. package/dist/domains/comet-native/native-snapshot.js +2308 -0
  419. package/dist/domains/comet-native/native-snapshot.js.map +1 -0
  420. package/dist/domains/comet-native/native-specs.d.ts +12 -0
  421. package/dist/domains/comet-native/native-specs.d.ts.map +1 -0
  422. package/dist/domains/comet-native/native-specs.js +270 -0
  423. package/dist/domains/comet-native/native-specs.js.map +1 -0
  424. package/dist/domains/comet-native/native-trajectory-limits.d.ts +7 -0
  425. package/dist/domains/comet-native/native-trajectory-limits.d.ts.map +1 -0
  426. package/dist/domains/comet-native/native-trajectory-limits.js +13 -0
  427. package/dist/domains/comet-native/native-trajectory-limits.js.map +1 -0
  428. package/dist/domains/comet-native/native-trajectory-recovery.d.ts +37 -0
  429. package/dist/domains/comet-native/native-trajectory-recovery.d.ts.map +1 -0
  430. package/dist/domains/comet-native/native-trajectory-recovery.js +133 -0
  431. package/dist/domains/comet-native/native-trajectory-recovery.js.map +1 -0
  432. package/dist/domains/comet-native/native-trajectory.d.ts +16 -0
  433. package/dist/domains/comet-native/native-trajectory.d.ts.map +1 -0
  434. package/dist/domains/comet-native/native-trajectory.js +27 -0
  435. package/dist/domains/comet-native/native-trajectory.js.map +1 -0
  436. package/dist/domains/comet-native/native-transaction.d.ts +45 -0
  437. package/dist/domains/comet-native/native-transaction.d.ts.map +1 -0
  438. package/dist/domains/comet-native/native-transaction.js +846 -0
  439. package/dist/domains/comet-native/native-transaction.js.map +1 -0
  440. package/dist/domains/comet-native/native-transition-evidence.d.ts +4 -0
  441. package/dist/domains/comet-native/native-transition-evidence.d.ts.map +1 -0
  442. package/dist/domains/comet-native/native-transition-evidence.js +20 -0
  443. package/dist/domains/comet-native/native-transition-evidence.js.map +1 -0
  444. package/dist/domains/comet-native/native-transition-journal.d.ts +30 -0
  445. package/dist/domains/comet-native/native-transition-journal.d.ts.map +1 -0
  446. package/dist/domains/comet-native/native-transition-journal.js +819 -0
  447. package/dist/domains/comet-native/native-transition-journal.js.map +1 -0
  448. package/dist/domains/comet-native/native-transitions.d.ts +13 -0
  449. package/dist/domains/comet-native/native-transitions.d.ts.map +1 -0
  450. package/dist/domains/comet-native/native-transitions.js +632 -0
  451. package/dist/domains/comet-native/native-transitions.js.map +1 -0
  452. package/dist/domains/comet-native/native-types.d.ts +547 -0
  453. package/dist/domains/comet-native/native-types.d.ts.map +1 -0
  454. package/dist/domains/comet-native/native-types.js +8 -0
  455. package/dist/domains/comet-native/native-types.js.map +1 -0
  456. package/dist/domains/comet-native/native-verification-evidence.d.ts +86 -0
  457. package/dist/domains/comet-native/native-verification-evidence.d.ts.map +1 -0
  458. package/dist/domains/comet-native/native-verification-evidence.js +480 -0
  459. package/dist/domains/comet-native/native-verification-evidence.js.map +1 -0
  460. package/dist/domains/comet-native/native-verification-runtime.d.ts +58 -0
  461. package/dist/domains/comet-native/native-verification-runtime.d.ts.map +1 -0
  462. package/dist/domains/comet-native/native-verification-runtime.js +321 -0
  463. package/dist/domains/comet-native/native-verification-runtime.js.map +1 -0
  464. package/dist/domains/comet-native/native-verification-scope.d.ts +117 -0
  465. package/dist/domains/comet-native/native-verification-scope.d.ts.map +1 -0
  466. package/dist/domains/comet-native/native-verification-scope.js +1040 -0
  467. package/dist/domains/comet-native/native-verification-scope.js.map +1 -0
  468. package/dist/domains/comet-native/native-workspace.d.ts +46 -0
  469. package/dist/domains/comet-native/native-workspace.d.ts.map +1 -0
  470. package/dist/domains/comet-native/native-workspace.js +276 -0
  471. package/dist/domains/comet-native/native-workspace.js.map +1 -0
  472. package/dist/domains/dashboard/collector.d.ts.map +1 -1
  473. package/dist/domains/dashboard/collector.js +9 -1
  474. package/dist/domains/dashboard/collector.js.map +1 -1
  475. package/dist/domains/dashboard/native-adapter.d.ts +157 -0
  476. package/dist/domains/dashboard/native-adapter.d.ts.map +1 -0
  477. package/dist/domains/dashboard/native-adapter.js +302 -0
  478. package/dist/domains/dashboard/native-adapter.js.map +1 -0
  479. package/dist/domains/dashboard/native-collector.d.ts +6 -0
  480. package/dist/domains/dashboard/native-collector.d.ts.map +1 -0
  481. package/dist/domains/dashboard/native-collector.js +285 -0
  482. package/dist/domains/dashboard/native-collector.js.map +1 -0
  483. package/dist/domains/dashboard/types.d.ts +5 -0
  484. package/dist/domains/dashboard/types.d.ts.map +1 -1
  485. package/dist/domains/dashboard/web/assets/{arc-TGVUG2WN.js → arc-CxdiLJ50.js} +1 -1
  486. package/dist/domains/dashboard/web/assets/{architectureDiagram-3BPJPVTR-ASHmiHoP.js → architectureDiagram-3BPJPVTR-D5YCQu4e.js} +1 -1
  487. package/dist/domains/dashboard/web/assets/{blockDiagram-GPEHLZMM-CwASxBKe.js → blockDiagram-GPEHLZMM-8NfdCOQ8.js} +1 -1
  488. package/dist/domains/dashboard/web/assets/{c4Diagram-AAUBKEIU-BU8z_WNk.js → c4Diagram-AAUBKEIU-B3cFnNT7.js} +1 -1
  489. package/dist/domains/dashboard/web/assets/channel-B6AFly29.js +1 -0
  490. package/dist/domains/dashboard/web/assets/{chunk-2J33WTMH-CBGlUx4_.js → chunk-2J33WTMH-CBNfW-Dr.js} +1 -1
  491. package/dist/domains/dashboard/web/assets/{chunk-4BX2VUAB-CS-iGcFz.js → chunk-4BX2VUAB-vWyemRBr.js} +1 -1
  492. package/dist/domains/dashboard/web/assets/{chunk-55IACEB6-BUtCVJat.js → chunk-55IACEB6-H6haOo2C.js} +1 -1
  493. package/dist/domains/dashboard/web/assets/{chunk-727SXJPM-C94tj_pf.js → chunk-727SXJPM-D02UjGND.js} +1 -1
  494. package/dist/domains/dashboard/web/assets/{chunk-AQP2D5EJ-BFOKcpdG.js → chunk-AQP2D5EJ-wKsbOw_T.js} +1 -1
  495. package/dist/domains/dashboard/web/assets/{chunk-FMBD7UC4-Dmx8B-st.js → chunk-FMBD7UC4-eYFEZimP.js} +1 -1
  496. package/dist/domains/dashboard/web/assets/{chunk-ND2GUHAM-DYV00CNn.js → chunk-ND2GUHAM-fMaIDDI2.js} +1 -1
  497. package/dist/domains/dashboard/web/assets/{chunk-QZHKN3VN-DMJJyQnw.js → chunk-QZHKN3VN-C9rhF6Hm.js} +1 -1
  498. package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-BcnrxOTt.js +1 -0
  499. package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-BcnrxOTt.js +1 -0
  500. package/dist/domains/dashboard/web/assets/{cose-bilkent-S5V4N54A-P4nE2rea.js → cose-bilkent-S5V4N54A-CbaShPub.js} +1 -1
  501. package/dist/domains/dashboard/web/assets/{cynefin-VYW2F7L2-C-R1HXDv.js → cynefin-VYW2F7L2-DN4emAQv.js} +1 -1
  502. package/dist/domains/dashboard/web/assets/{dagre-BM42HDAG-BH8d-C9z.js → dagre-BM42HDAG-BpSzbk_V.js} +1 -1
  503. package/dist/domains/dashboard/web/assets/demo-BuVau32v.js +25 -0
  504. package/dist/domains/dashboard/web/assets/{diagram-2AECGRRQ-DpXTgQIH.js → diagram-2AECGRRQ-CfXwGGpQ.js} +1 -1
  505. package/dist/domains/dashboard/web/assets/{diagram-5GNKFQAL-DSiFJzSw.js → diagram-5GNKFQAL-DMp0Zmot.js} +1 -1
  506. package/dist/domains/dashboard/web/assets/{diagram-KO2AKTUF-DULMkben.js → diagram-KO2AKTUF-C7ZvofsM.js} +1 -1
  507. package/dist/domains/dashboard/web/assets/{diagram-LMA3HP47-Pi8m_NO9.js → diagram-LMA3HP47-BjmxFnap.js} +1 -1
  508. package/dist/domains/dashboard/web/assets/{diagram-OG6HWLK6-BSe6bCWm.js → diagram-OG6HWLK6-DFBG1Iqy.js} +1 -1
  509. package/dist/domains/dashboard/web/assets/{erDiagram-TEJ5UH35-zb-FEcbq.js → erDiagram-TEJ5UH35-MpNT7dzt.js} +1 -1
  510. package/dist/domains/dashboard/web/assets/{flowDiagram-I6XJVG4X-Dr-Gk0z2.js → flowDiagram-I6XJVG4X-_1wAR6c1.js} +1 -1
  511. package/dist/domains/dashboard/web/assets/{ganttDiagram-6RSMTGT7-qs6Zb2A6.js → ganttDiagram-6RSMTGT7-DJKjDeWl.js} +1 -1
  512. package/dist/domains/dashboard/web/assets/{gitGraphDiagram-PVQCEYII-BQ314orT.js → gitGraphDiagram-PVQCEYII-BL7yUEn-.js} +1 -1
  513. package/dist/domains/dashboard/web/assets/index-CjE9mHGb.js +24 -0
  514. package/dist/domains/dashboard/web/assets/index-D-AGxvI4.css +1 -0
  515. package/dist/domains/dashboard/web/assets/{infoDiagram-5YYISTIA-O0bQp98A.js → infoDiagram-5YYISTIA-Bt5fqrOd.js} +1 -1
  516. package/dist/domains/dashboard/web/assets/{ishikawaDiagram-YF4QCWOH-BPC7wbKh.js → ishikawaDiagram-YF4QCWOH-COCMcjBM.js} +1 -1
  517. package/dist/domains/dashboard/web/assets/{journeyDiagram-JHISSGLW-ohViOd4b.js → journeyDiagram-JHISSGLW-DGcpcWny.js} +1 -1
  518. package/dist/domains/dashboard/web/assets/{kanban-definition-UN3LZRKU-CHleNdbG.js → kanban-definition-UN3LZRKU-QSBNsWMP.js} +1 -1
  519. package/dist/domains/dashboard/web/assets/{linear-CyqiW--Q.js → linear-9uyeeBZf.js} +1 -1
  520. package/dist/domains/dashboard/web/assets/{mermaid.core-qS9XvtaK.js → mermaid.core-CkNdB471.js} +4 -4
  521. package/dist/domains/dashboard/web/assets/{mindmap-definition-RKZ34NQL-oaGkqO9l.js → mindmap-definition-RKZ34NQL-CiNxI0gP.js} +1 -1
  522. package/dist/domains/dashboard/web/assets/{pieDiagram-4H26LBE5-CPcB-AFh.js → pieDiagram-4H26LBE5-BLJ6QnRO.js} +1 -1
  523. package/dist/domains/dashboard/web/assets/{quadrantDiagram-W4KKPZXB-LFy52Qtj.js → quadrantDiagram-W4KKPZXB-CflW-eFH.js} +1 -1
  524. package/dist/domains/dashboard/web/assets/{requirementDiagram-4Y6WPE33-BdjeaYP_.js → requirementDiagram-4Y6WPE33-B9HLmRWH.js} +1 -1
  525. package/dist/domains/dashboard/web/assets/{sankeyDiagram-5OEKKPKP-DDJ4styL.js → sankeyDiagram-5OEKKPKP-6xnco5k5.js} +1 -1
  526. package/dist/domains/dashboard/web/assets/{sequenceDiagram-3UESZ5HK-BL5bFNoz.js → sequenceDiagram-3UESZ5HK-Dp1rujNZ.js} +1 -1
  527. package/dist/domains/dashboard/web/assets/{stateDiagram-AJRCARHV-BNUfikui.js → stateDiagram-AJRCARHV-C1Xc90ek.js} +1 -1
  528. package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-p-qmzXyE.js +1 -0
  529. package/dist/domains/dashboard/web/assets/{timeline-definition-PNZ67QCA--ps2uu6L.js → timeline-definition-PNZ67QCA-g9s-m5Z4.js} +1 -1
  530. package/dist/domains/dashboard/web/assets/{vennDiagram-CIIHVFJN-C2q8q26c.js → vennDiagram-CIIHVFJN-rkEyhyCc.js} +1 -1
  531. package/dist/domains/dashboard/web/assets/{wardleyDiagram-YWT4CUSO-BUH9gXqd.js → wardleyDiagram-YWT4CUSO-CJLrWGXc.js} +1 -1
  532. package/dist/domains/dashboard/web/assets/{xychartDiagram-2RQKCTM6-B-DielEy.js → xychartDiagram-2RQKCTM6-BxJvPNqo.js} +1 -1
  533. package/dist/domains/dashboard/web/index.html +2 -2
  534. package/dist/domains/engine/storage-layout.d.ts +14 -0
  535. package/dist/domains/engine/storage-layout.d.ts.map +1 -0
  536. package/dist/domains/engine/storage-layout.js +32 -0
  537. package/dist/domains/engine/storage-layout.js.map +1 -0
  538. package/dist/domains/engine/storage-run.d.ts +9 -0
  539. package/dist/domains/engine/storage-run.d.ts.map +1 -0
  540. package/dist/domains/engine/storage-run.js +116 -0
  541. package/dist/domains/engine/storage-run.js.map +1 -0
  542. package/dist/domains/factory/package.d.ts.map +1 -1
  543. package/dist/domains/factory/package.js +5 -3
  544. package/dist/domains/factory/package.js.map +1 -1
  545. package/dist/domains/integrations/openspec.d.ts.map +1 -1
  546. package/dist/domains/integrations/openspec.js +8 -6
  547. package/dist/domains/integrations/openspec.js.map +1 -1
  548. package/dist/domains/skill/find.d.ts.map +1 -1
  549. package/dist/domains/skill/find.js +7 -1
  550. package/dist/domains/skill/find.js.map +1 -1
  551. package/dist/domains/skill/platform-inspect.d.ts +6 -2
  552. package/dist/domains/skill/platform-inspect.d.ts.map +1 -1
  553. package/dist/domains/skill/platform-inspect.js +52 -8
  554. package/dist/domains/skill/platform-inspect.js.map +1 -1
  555. package/dist/domains/skill/platform-install.d.ts +18 -7
  556. package/dist/domains/skill/platform-install.d.ts.map +1 -1
  557. package/dist/domains/skill/platform-install.js +338 -71
  558. package/dist/domains/skill/platform-install.js.map +1 -1
  559. package/dist/domains/skill/project-instructions.d.ts.map +1 -1
  560. package/dist/domains/skill/project-instructions.js +12 -6
  561. package/dist/domains/skill/project-instructions.js.map +1 -1
  562. package/dist/domains/skill/uninstall.d.ts.map +1 -1
  563. package/dist/domains/skill/uninstall.js +15 -3
  564. package/dist/domains/skill/uninstall.js.map +1 -1
  565. package/dist/domains/workflow-contract/builtins.d.ts +6 -0
  566. package/dist/domains/workflow-contract/builtins.d.ts.map +1 -1
  567. package/dist/domains/workflow-contract/builtins.js +137 -0
  568. package/dist/domains/workflow-contract/builtins.js.map +1 -1
  569. package/dist/domains/workflow-contract/index.d.ts +3 -1
  570. package/dist/domains/workflow-contract/index.d.ts.map +1 -1
  571. package/dist/domains/workflow-contract/index.js +2 -1
  572. package/dist/domains/workflow-contract/index.js.map +1 -1
  573. package/dist/domains/workflow-contract/normalize.d.ts.map +1 -1
  574. package/dist/domains/workflow-contract/normalize.js +28 -10
  575. package/dist/domains/workflow-contract/normalize.js.map +1 -1
  576. package/dist/domains/workflow-contract/project-config.d.ts +7 -0
  577. package/dist/domains/workflow-contract/project-config.d.ts.map +1 -0
  578. package/dist/domains/workflow-contract/project-config.js +110 -0
  579. package/dist/domains/workflow-contract/project-config.js.map +1 -0
  580. package/dist/domains/workflow-contract/types.d.ts +4 -2
  581. package/dist/domains/workflow-contract/types.d.ts.map +1 -1
  582. package/dist/domains/workflow-contract/validation.d.ts.map +1 -1
  583. package/dist/domains/workflow-contract/validation.js +14 -5
  584. package/dist/domains/workflow-contract/validation.js.map +1 -1
  585. package/dist/platform/install/detect.d.ts +3 -1
  586. package/dist/platform/install/detect.d.ts.map +1 -1
  587. package/dist/platform/install/detect.js +4 -1
  588. package/dist/platform/install/detect.js.map +1 -1
  589. package/dist/platform/install/project-registry.js +2 -2
  590. package/dist/platform/install/project-registry.js.map +1 -1
  591. package/dist/platform/paths/repository-layout.d.ts +16 -0
  592. package/dist/platform/paths/repository-layout.d.ts.map +1 -1
  593. package/dist/platform/paths/repository-layout.js.map +1 -1
  594. package/eval/local/README.md +50 -0
  595. package/eval/local/scripts/compare_baselines.py +127 -1
  596. package/eval/local/scripts/regression_check.py +3 -4
  597. package/eval/local/tasks/comet-native-clarification/environment/Dockerfile +27 -0
  598. package/eval/local/tasks/comet-native-clarification/environment/test_wordcount.py +25 -0
  599. package/eval/local/tasks/comet-native-clarification/environment/wordcount.py +36 -0
  600. package/eval/local/tasks/comet-native-clarification/instruction.md +7 -0
  601. package/eval/local/tasks/comet-native-clarification/task.toml +40 -0
  602. package/eval/local/tasks/comet-native-clarification/validation/test_native_clarification.py +193 -0
  603. package/eval/local/tasks/comet-native-clarification-modes/environment/Dockerfile +27 -0
  604. package/eval/local/tasks/comet-native-clarification-modes/environment/test_wordcount.py +25 -0
  605. package/eval/local/tasks/comet-native-clarification-modes/environment/wordcount.py +36 -0
  606. package/eval/local/tasks/comet-native-clarification-modes/instruction.md +13 -0
  607. package/eval/local/tasks/comet-native-clarification-modes/task.toml +39 -0
  608. package/eval/local/tasks/comet-native-clarification-modes/validation/test_native_clarification_modes.py +235 -0
  609. package/eval/local/tasks/comet-native-interrupted-transition/environment/.comet/config.yaml +6 -0
  610. package/eval/local/tasks/comet-native-interrupted-transition/environment/Dockerfile +28 -0
  611. package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/brief.md +17 -0
  612. package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/comet-state.yaml +12 -0
  613. package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/runtime/transition.json +69 -0
  614. package/eval/local/tasks/comet-native-interrupted-transition/environment/docs/comet/changes/add-character-counting/specs/character-counting/spec.md +3 -0
  615. package/eval/local/tasks/comet-native-interrupted-transition/environment/test_wordcount.py +20 -0
  616. package/eval/local/tasks/comet-native-interrupted-transition/environment/wordcount.py +27 -0
  617. package/eval/local/tasks/comet-native-interrupted-transition/instruction.md +7 -0
  618. package/eval/local/tasks/comet-native-interrupted-transition/task.toml +35 -0
  619. package/eval/local/tasks/comet-native-interrupted-transition/validation/test_native_interrupted_transition.py +63 -0
  620. package/eval/local/tasks/comet-native-repository-fact/environment/Dockerfile +26 -0
  621. package/eval/local/tasks/comet-native-repository-fact/environment/PRODUCT_RULES.md +3 -0
  622. package/eval/local/tasks/comet-native-repository-fact/environment/test_wordcount.py +20 -0
  623. package/eval/local/tasks/comet-native-repository-fact/environment/wordcount.py +27 -0
  624. package/eval/local/tasks/comet-native-repository-fact/instruction.md +7 -0
  625. package/eval/local/tasks/comet-native-repository-fact/task.toml +35 -0
  626. package/eval/local/tasks/comet-native-repository-fact/validation/test_native_repository_fact.py +53 -0
  627. package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/Dockerfile +27 -0
  628. package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/test_wordcount.py +27 -0
  629. package/eval/local/tasks/comet-native-wave-b-decision-resume/environment/wordcount.py +36 -0
  630. package/eval/local/tasks/comet-native-wave-b-decision-resume/instruction.md +9 -0
  631. package/eval/local/tasks/comet-native-wave-b-decision-resume/task.toml +40 -0
  632. package/eval/local/tasks/comet-native-wave-b-decision-resume/validation/test_native_wave_b_decision_resume.py +208 -0
  633. package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/Dockerfile +27 -0
  634. package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/test_wordcount.py +27 -0
  635. package/eval/local/tasks/comet-native-wave-c-verification-integrity/environment/wordcount.py +36 -0
  636. package/eval/local/tasks/comet-native-wave-c-verification-integrity/instruction.md +11 -0
  637. package/eval/local/tasks/comet-native-wave-c-verification-integrity/task.toml +36 -0
  638. package/eval/local/tasks/comet-native-wave-c-verification-integrity/validation/test_native_wave_c_verification_integrity.py +344 -0
  639. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/Dockerfile +27 -0
  640. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/test_wordcount.py +27 -0
  641. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/environment/wordcount.py +36 -0
  642. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/instruction.md +11 -0
  643. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/task.toml +37 -0
  644. package/eval/local/tasks/comet-native-wave-d-stagnation-stop/validation/test_native_wave_d_stagnation_stop.py +284 -0
  645. package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/.include-trusted-native-runtime +1 -0
  646. package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/Dockerfile +27 -0
  647. package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/test_wordcount.py +27 -0
  648. package/eval/local/tasks/comet-native-wave-e-parallel-safety/environment/wordcount.py +36 -0
  649. package/eval/local/tasks/comet-native-wave-e-parallel-safety/instruction.md +9 -0
  650. package/eval/local/tasks/comet-native-wave-e-parallel-safety/task.toml +37 -0
  651. package/eval/local/tasks/comet-native-wave-e-parallel-safety/validation/test_native_wave_e_parallel_safety.py +309 -0
  652. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/.include-current-comet-cli +1 -0
  653. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/Dockerfile +31 -0
  654. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/current-comet-package.json +18 -0
  655. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/current-comet.sh +14 -0
  656. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/test_wordcount.py +27 -0
  657. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/environment/wordcount.py +36 -0
  658. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/instruction.md +7 -0
  659. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/task.toml +36 -0
  660. package/eval/local/tasks/comet-native-wave-f-dashboard-readonly/validation/test_native_wave_f_dashboard_readonly.py +469 -0
  661. package/eval/local/tasks/comet-native-workflow/environment/Dockerfile +27 -0
  662. package/eval/local/tasks/comet-native-workflow/environment/test_wordcount.py +25 -0
  663. package/eval/local/tasks/comet-native-workflow/environment/wordcount.py +36 -0
  664. package/eval/local/tasks/comet-native-workflow/instruction.md +14 -0
  665. package/eval/local/tasks/comet-native-workflow/task.toml +36 -0
  666. package/eval/local/tasks/comet-native-workflow/validation/test_native_workflow.py +149 -0
  667. package/eval/local/tasks/index.yaml +61 -0
  668. package/eval/local/tests/conftest.py +407 -22
  669. package/eval/local/tests/scaffold/test_aligned_comparison.py +1012 -0
  670. package/eval/local/tests/scaffold/test_conftest_helpers.py +187 -7
  671. package/eval/local/tests/scaffold/test_logging.py +135 -1
  672. package/eval/local/tests/scaffold/test_manifests.py +2 -0
  673. package/eval/local/tests/scaffold/test_native_aligned_eval.py +346 -0
  674. package/eval/local/tests/scaffold/test_native_wave_evaluations.py +1889 -0
  675. package/eval/local/tests/scaffold/test_profiles.py +33 -0
  676. package/eval/local/tests/scaffold/test_sample_quality.py +57 -0
  677. package/eval/local/tests/scaffold/test_tasks.py +377 -1
  678. package/eval/local/tests/scaffold/test_treatments.py +59 -13
  679. package/eval/local/tests/scaffold/test_utils.py +277 -4
  680. package/eval/local/tests/tasks/__init__.py +1 -0
  681. package/eval/local/tests/tasks/test_tasks.py +104 -78
  682. package/eval/local/tests/tasks/test_validation_scripts.py +37 -0
  683. package/eval/local/treatments/comet/comet_native_phase1.yaml +66 -0
  684. package/eval/scaffold/python/aligned_comparison.py +1631 -0
  685. package/eval/scaffold/python/generic_llm_judge.py +3 -1
  686. package/eval/scaffold/python/llm_judge.py +0 -3
  687. package/eval/scaffold/python/logging.py +115 -16
  688. package/eval/scaffold/python/manifests.py +2 -0
  689. package/eval/scaffold/python/native_eval.py +138 -0
  690. package/eval/scaffold/python/pass_at_k.py +0 -1
  691. package/eval/scaffold/python/report_outputs.py +226 -44
  692. package/eval/scaffold/python/sample_quality.py +45 -2
  693. package/eval/scaffold/python/tasks.py +11 -0
  694. package/eval/scaffold/python/utils.py +108 -20
  695. package/eval/scaffold/python/validation/__init__.py +15 -5
  696. package/eval/scaffold/python/validation/comet_workflow.py +10 -5
  697. package/eval/scaffold/python/validation/generic_rubric.py +1 -2
  698. package/eval/scaffold/python/validation/native_wave.py +2154 -0
  699. package/eval/scaffold/python/validation/native_workflow.py +252 -0
  700. package/eval/scaffold/python/validation/rubric.py +0 -2
  701. package/eval/scaffold/shell/completion-point.sh +18 -0
  702. package/eval/scaffold/shell/decision-point.sh +35 -0
  703. package/eval/scaffold/shell/docker.sh +150 -9
  704. package/eval/scaffold/shell/run-claude-loop.sh +57 -27
  705. package/package.json +19 -5
  706. package/dist/domains/dashboard/web/assets/channel-kp6Ng2JJ.js +0 -1
  707. package/dist/domains/dashboard/web/assets/classDiagram-4FO5ZUOK-yBDjgMY_.js +0 -1
  708. package/dist/domains/dashboard/web/assets/classDiagram-v2-Q7XG4LA2-yBDjgMY_.js +0 -1
  709. package/dist/domains/dashboard/web/assets/demo-DQyfozbi.js +0 -1
  710. package/dist/domains/dashboard/web/assets/index-BLAfkNTu.css +0 -1
  711. package/dist/domains/dashboard/web/assets/index-DtLUOcAW.js +0 -24
  712. package/dist/domains/dashboard/web/assets/stateDiagram-v2-BHNVJYJU-DGrsmWts.js +0 -1
  713. package/eval/.env.example +0 -52
  714. package/eval/langsmith/.env.example +0 -16
@@ -0,0 +1,812 @@
1
+ import { createHash, randomUUID } from 'crypto';
2
+ import { promises as fs } from 'fs';
3
+ import path from 'path';
4
+ import { atomicWriteText } from './native-atomic-file.js';
5
+ import { defaultProjectConfig, readProjectConfig, writeProjectConfig } from './native-config.js';
6
+ import { inspectNativeChange } from './native-change.js';
7
+ import { acquireNativeLock, releaseNativeLock } from './native-lock.js';
8
+ import { isInsidePath, nativeProjectPaths, normalizeArtifactRootRef } from './native-paths.js';
9
+ import { copyNativeProtectedFile, ensureNativeProtectedDirectory, quarantineNativeProtectedDirectory, readNativeProtectedDirectory, readNativeProtectedFile, removeNativeProtectedEmptyDirectory, removeNativeProtectedFile, } from './native-protected-file.js';
10
+ import { createNativeTransaction, finalizeNativeTransaction, nativeTransactionPaths, readNativeTransaction, rollbackNativeTransaction, } from './native-transaction.js';
11
+ import { writeNativeWorkspaceIdentity } from './native-workspace.js';
12
+ const NATIVE_ROOT_MOVE_MAX_FILE_BYTES = 64 * 1024 * 1024;
13
+ const NATIVE_ROOT_MOVE_MAX_JOURNAL_BYTES = 256 * 1024;
14
+ const NATIVE_ROOT_MOVE_MAX_MANIFEST_BYTES = 16 * 1024 * 1024;
15
+ async function exists(target) {
16
+ try {
17
+ await fs.access(target);
18
+ return true;
19
+ }
20
+ catch (error) {
21
+ if (error.code === 'ENOENT')
22
+ return false;
23
+ throw error;
24
+ }
25
+ }
26
+ async function assertNoUnfinishedTransactions(paths) {
27
+ let entries;
28
+ try {
29
+ entries = await fs.readdir(paths.transactionsDir, { withFileTypes: true });
30
+ }
31
+ catch (error) {
32
+ if (error.code === 'ENOENT')
33
+ return;
34
+ throw error;
35
+ }
36
+ for (const entry of entries) {
37
+ if (!entry.isDirectory() || entry.isSymbolicLink())
38
+ continue;
39
+ let journal;
40
+ try {
41
+ journal = await readNativeTransaction(paths, entry.name);
42
+ }
43
+ catch (error) {
44
+ if (error.code === 'ENOENT') {
45
+ throw new Error(`Native transaction ${entry.name} has no journal; run doctor before moving`, { cause: error });
46
+ }
47
+ throw error;
48
+ }
49
+ if (journal.status !== 'committed' && journal.status !== 'rolled-back') {
50
+ throw new Error(`Native transaction ${journal.id} is unfinished; recover it before moving`);
51
+ }
52
+ }
53
+ }
54
+ async function assertNoOtherLocks(paths, ownedLock) {
55
+ for (const entry of await fs.readdir(paths.locksDir, { withFileTypes: true })) {
56
+ const file = path.join(paths.locksDir, entry.name);
57
+ if (path.resolve(file) === path.resolve(ownedLock))
58
+ continue;
59
+ if (entry.isFile() || entry.isSymbolicLink()) {
60
+ throw new Error(`Native lock must be diagnosed before moving the root: ${file}`);
61
+ }
62
+ }
63
+ }
64
+ async function refreshNativeWorkspaceIdentities(paths) {
65
+ let entries;
66
+ try {
67
+ entries = await fs.readdir(paths.changesDir, { withFileTypes: true });
68
+ }
69
+ catch (error) {
70
+ if (error.code === 'ENOENT')
71
+ return;
72
+ throw error;
73
+ }
74
+ for (const entry of entries.sort((left, right) => left.name.localeCompare(right.name))) {
75
+ if (!entry.isDirectory() || entry.isSymbolicLink())
76
+ continue;
77
+ let inspection;
78
+ try {
79
+ inspection = await inspectNativeChange(paths, entry.name);
80
+ }
81
+ catch {
82
+ // Workspace identity is advisory. Invalid user-authored change data must not strand a
83
+ // completed root move after the source tree has already been removed.
84
+ continue;
85
+ }
86
+ if (inspection.status !== 'current' || !inspection.state || !('revision' in inspection.state)) {
87
+ continue;
88
+ }
89
+ await writeNativeWorkspaceIdentity({
90
+ paths,
91
+ name: entry.name,
92
+ revision: inspection.state.revision,
93
+ });
94
+ }
95
+ }
96
+ async function walkTree(root, options) {
97
+ const treeEntries = [];
98
+ async function visit(directory) {
99
+ const protectedDirectory = await readNativeProtectedDirectory({
100
+ root,
101
+ directory,
102
+ label: 'Native root tree',
103
+ });
104
+ const entries = protectedDirectory.entries;
105
+ entries.sort((left, right) => left.name.localeCompare(right.name));
106
+ for (const entry of entries) {
107
+ await protectedDirectory.verify();
108
+ const target = path.join(directory, entry.name);
109
+ if (options.excludedFiles?.has(path.resolve(target))) {
110
+ await protectedDirectory.verify();
111
+ continue;
112
+ }
113
+ const stat = await fs.lstat(target);
114
+ if (entry.isSymbolicLink() || stat.isSymbolicLink()) {
115
+ if (options.rejectSymlinks)
116
+ throw new Error(`Native root contains a symlink: ${target}`);
117
+ await protectedDirectory.verify();
118
+ continue;
119
+ }
120
+ if (entry.isDirectory() && stat.isDirectory()) {
121
+ treeEntries.push({
122
+ ref: path.relative(root, target).split(path.sep).join('/'),
123
+ type: 'directory',
124
+ });
125
+ await visit(target);
126
+ }
127
+ else if (entry.isFile() && stat.isFile()) {
128
+ const snapshot = await readNativeProtectedFile({
129
+ root,
130
+ file: target,
131
+ maxBytes: NATIVE_ROOT_MOVE_MAX_FILE_BYTES,
132
+ label: `Native root file ${path.relative(root, target)}`,
133
+ });
134
+ treeEntries.push({
135
+ ref: path.relative(root, target).split(path.sep).join('/'),
136
+ type: 'file',
137
+ size: snapshot.size,
138
+ hash: snapshot.hash,
139
+ });
140
+ }
141
+ else {
142
+ throw new Error(`Native root contains an unsupported file type: ${target}`);
143
+ }
144
+ await protectedDirectory.verify();
145
+ }
146
+ }
147
+ await visit(root);
148
+ return treeEntries.sort((left, right) => left.ref.localeCompare(right.ref));
149
+ }
150
+ async function copyTree(source, target, excludedFile, targetRoot) {
151
+ await ensureNativeProtectedDirectory({
152
+ root: targetRoot,
153
+ directory: target,
154
+ label: 'Native root move staging directory',
155
+ });
156
+ async function copyDirectory(from, to) {
157
+ const protectedDirectory = await readNativeProtectedDirectory({
158
+ root: source,
159
+ directory: from,
160
+ label: 'Native root move source directory',
161
+ });
162
+ const entries = protectedDirectory.entries;
163
+ for (const entry of entries) {
164
+ await protectedDirectory.verify();
165
+ const sourceEntry = path.join(from, entry.name);
166
+ if (path.resolve(sourceEntry) === path.resolve(excludedFile)) {
167
+ await protectedDirectory.verify();
168
+ continue;
169
+ }
170
+ const stat = await fs.lstat(sourceEntry);
171
+ if (entry.isSymbolicLink() || stat.isSymbolicLink()) {
172
+ throw new Error(`Native root contains a symlink: ${sourceEntry}`);
173
+ }
174
+ const targetEntry = path.join(to, entry.name);
175
+ if (entry.isDirectory() && stat.isDirectory()) {
176
+ await ensureNativeProtectedDirectory({
177
+ root: targetRoot,
178
+ directory: targetEntry,
179
+ label: 'Native root move staging directory',
180
+ });
181
+ await copyDirectory(sourceEntry, targetEntry);
182
+ }
183
+ else if (entry.isFile() && stat.isFile()) {
184
+ await copyNativeProtectedFile({
185
+ sourceRoot: source,
186
+ source: sourceEntry,
187
+ targetRoot,
188
+ target: targetEntry,
189
+ maxBytes: NATIVE_ROOT_MOVE_MAX_FILE_BYTES,
190
+ label: `Native root move file ${path.relative(source, sourceEntry)}`,
191
+ exclusive: true,
192
+ expectedTargetHash: null,
193
+ });
194
+ }
195
+ else {
196
+ throw new Error(`Native root contains an unsupported file type: ${sourceEntry}`);
197
+ }
198
+ await protectedDirectory.verify();
199
+ }
200
+ }
201
+ await copyDirectory(source, target);
202
+ }
203
+ async function assertEquivalentTrees(source, target, excludedSourceLock, excludedTargetLock) {
204
+ const sourceFiles = await walkTree(source, {
205
+ rejectSymlinks: true,
206
+ excludedFiles: excludedSourceLock ? new Set([path.resolve(excludedSourceLock)]) : undefined,
207
+ });
208
+ const targetFiles = await walkTree(target, {
209
+ rejectSymlinks: true,
210
+ excludedFiles: excludedTargetLock ? new Set([path.resolve(excludedTargetLock)]) : undefined,
211
+ });
212
+ if (JSON.stringify(sourceFiles) !== JSON.stringify(targetFiles)) {
213
+ throw new Error(`Native root copies differ; preserve both trees for manual recovery: ${source} and ${target}`);
214
+ }
215
+ }
216
+ function stagingDirectory(targetPaths, id) {
217
+ return path.join(targetPaths.artifactRoot, `.comet-native-move-${id}`);
218
+ }
219
+ function sourceRemovalDirectory(sourcePaths, id) {
220
+ return path.join(sourcePaths.artifactRoot, `.comet-native-source-${id}.removing`);
221
+ }
222
+ function stagingRemovalDirectory(staging) {
223
+ return `${staging}.removing`;
224
+ }
225
+ function rollbackRemovalDirectory(target, id) {
226
+ return path.join(path.dirname(target), `.${path.basename(target)}.${id}.rollback-removing`);
227
+ }
228
+ function cleanupManifestFile(paths, id, kind) {
229
+ return path.join(nativeTransactionPaths(paths, id).directory, `root-move-cleanup-${kind}.json`);
230
+ }
231
+ function cleanupManifestSource(manifest) {
232
+ return JSON.stringify(manifest, null, 2) + '\n';
233
+ }
234
+ function cleanupManifestHash(source) {
235
+ return createHash('sha256').update(source).digest('hex');
236
+ }
237
+ function parseCleanupManifestEntry(value, index) {
238
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
239
+ throw new Error(`Native root-move cleanup manifest entry ${index} must be an object`);
240
+ }
241
+ const entry = value;
242
+ const keys = Object.keys(entry).sort();
243
+ const expectedKeys = entry.type === 'file' ? ['hash', 'ref', 'size', 'type'] : ['ref', 'type'];
244
+ if (JSON.stringify(keys) !== JSON.stringify(expectedKeys)) {
245
+ throw new Error(`Native root-move cleanup manifest entry ${index} has invalid fields`);
246
+ }
247
+ if (typeof entry.ref !== 'string' ||
248
+ entry.ref.length === 0 ||
249
+ entry.ref.includes('\\') ||
250
+ path.posix.normalize(entry.ref) !== entry.ref ||
251
+ entry.ref.startsWith('/') ||
252
+ entry.ref.split('/').includes('..') ||
253
+ Buffer.byteLength(entry.ref, 'utf8') > 4096) {
254
+ throw new Error(`Native root-move cleanup manifest entry ${index} has an invalid ref`);
255
+ }
256
+ if (entry.type === 'directory')
257
+ return { ref: entry.ref, type: 'directory' };
258
+ if (entry.type !== 'file' ||
259
+ typeof entry.size !== 'number' ||
260
+ !Number.isSafeInteger(entry.size) ||
261
+ entry.size < 0 ||
262
+ typeof entry.hash !== 'string' ||
263
+ !/^[a-f0-9]{64}$/u.test(entry.hash)) {
264
+ throw new Error(`Native root-move cleanup manifest entry ${index} is invalid`);
265
+ }
266
+ return { ref: entry.ref, type: 'file', size: entry.size, hash: entry.hash };
267
+ }
268
+ function parseCleanupManifest(value, id, kind) {
269
+ if (!value || typeof value !== 'object' || Array.isArray(value)) {
270
+ throw new Error('Native root-move cleanup manifest must be an object');
271
+ }
272
+ const manifest = value;
273
+ if (JSON.stringify(Object.keys(manifest).sort()) !==
274
+ JSON.stringify(['entries', 'kind', 'schema', 'transactionId']) ||
275
+ manifest.schema !== 'comet.native.root-move-cleanup.v1' ||
276
+ manifest.transactionId !== id ||
277
+ manifest.kind !== kind ||
278
+ !Array.isArray(manifest.entries)) {
279
+ throw new Error('Native root-move cleanup manifest binding is invalid');
280
+ }
281
+ const entries = manifest.entries.map(parseCleanupManifestEntry);
282
+ for (let index = 0; index < entries.length; index += 1) {
283
+ if (index > 0 && entries[index - 1].ref.localeCompare(entries[index].ref) >= 0) {
284
+ throw new Error('Native root-move cleanup manifest refs must be unique and sorted');
285
+ }
286
+ const parent = path.posix.dirname(entries[index].ref);
287
+ if (parent !== '.' &&
288
+ !entries.some((candidate) => candidate.ref === parent && candidate.type === 'directory')) {
289
+ throw new Error(`Native root-move cleanup manifest parent is missing: ${parent}`);
290
+ }
291
+ }
292
+ return {
293
+ schema: 'comet.native.root-move-cleanup.v1',
294
+ transactionId: id,
295
+ kind,
296
+ entries,
297
+ };
298
+ }
299
+ async function writeCleanupManifest(options) {
300
+ const manifest = {
301
+ schema: 'comet.native.root-move-cleanup.v1',
302
+ transactionId: options.id,
303
+ kind: options.kind,
304
+ entries: options.entries,
305
+ };
306
+ const source = cleanupManifestSource(manifest);
307
+ if (Buffer.byteLength(source, 'utf8') > NATIVE_ROOT_MOVE_MAX_MANIFEST_BYTES) {
308
+ throw new Error('Native root-move cleanup manifest exceeds its byte budget');
309
+ }
310
+ await atomicWriteText(cleanupManifestFile(options.paths, options.id, options.kind), source, {
311
+ containedRoot: options.paths.nativeRoot,
312
+ });
313
+ return cleanupManifestHash(source);
314
+ }
315
+ async function readCleanupManifest(options) {
316
+ const snapshot = await readNativeProtectedFile({
317
+ root: options.paths.nativeRoot,
318
+ file: cleanupManifestFile(options.paths, options.id, options.cleanup.kind),
319
+ maxBytes: NATIVE_ROOT_MOVE_MAX_MANIFEST_BYTES,
320
+ label: `Native root-move cleanup manifest ${options.cleanup.kind}`,
321
+ });
322
+ if (snapshot.hash !== options.cleanup.manifestHash) {
323
+ throw new Error('Native root-move cleanup manifest hash changed');
324
+ }
325
+ return parseCleanupManifest(JSON.parse(snapshot.bytes.toString('utf8')), options.id, options.cleanup.kind);
326
+ }
327
+ async function assertCleanupManifestMatch(options) {
328
+ const current = await walkTree(options.quarantine, { rejectSymlinks: true });
329
+ const expected = new Map(options.manifest.entries.map((entry) => [entry.ref, entry]));
330
+ for (const entry of current) {
331
+ const bound = expected.get(entry.ref);
332
+ if (!bound || JSON.stringify(bound) !== JSON.stringify(entry)) {
333
+ throw new Error(`Native root-move cleanup quarantine differs from its bound manifest: ${entry.ref}`);
334
+ }
335
+ }
336
+ if (options.exact && current.length !== options.manifest.entries.length) {
337
+ throw new Error('Native root-move cleanup quarantine is incomplete before deletion');
338
+ }
339
+ return current;
340
+ }
341
+ function treeEntryDepth(entry) {
342
+ return entry.ref.split('/').length;
343
+ }
344
+ async function deleteCleanupManifestSubset(options) {
345
+ const current = await assertCleanupManifestMatch({
346
+ quarantine: options.quarantine,
347
+ manifest: options.manifest,
348
+ exact: false,
349
+ });
350
+ const ordered = [...current].sort((left, right) => treeEntryDepth(right) - treeEntryDepth(left) ||
351
+ (left.type === right.type
352
+ ? right.ref.localeCompare(left.ref)
353
+ : left.type === 'file'
354
+ ? -1
355
+ : 1));
356
+ let removedCount = 0;
357
+ for (const entry of ordered) {
358
+ const target = path.join(options.quarantine, ...entry.ref.split('/'));
359
+ if (entry.type === 'file') {
360
+ await removeNativeProtectedFile({
361
+ root: options.projectRoot,
362
+ file: target,
363
+ maxBytes: NATIVE_ROOT_MOVE_MAX_FILE_BYTES,
364
+ expectedHash: entry.hash,
365
+ expectedSize: entry.size,
366
+ label: `Native root-move cleanup file ${entry.ref}`,
367
+ });
368
+ }
369
+ else {
370
+ await removeNativeProtectedEmptyDirectory({
371
+ root: options.projectRoot,
372
+ directory: target,
373
+ label: `Native root-move cleanup directory ${entry.ref}`,
374
+ });
375
+ }
376
+ removedCount += 1;
377
+ await options.hooks?.afterRootMoveCleanupEntryRemoved?.(options.manifest.kind, entry.ref, removedCount);
378
+ }
379
+ await assertCleanupManifestMatch({
380
+ quarantine: options.quarantine,
381
+ manifest: options.manifest,
382
+ exact: false,
383
+ });
384
+ await removeNativeProtectedEmptyDirectory({
385
+ root: options.projectRoot,
386
+ directory: options.quarantine,
387
+ label: `Native root-move cleanup quarantine ${options.manifest.kind}`,
388
+ });
389
+ }
390
+ function pendingConfig(config, pending, activeArtifactRoot = config.native.artifact_root) {
391
+ return {
392
+ ...config,
393
+ native: { ...config.native, artifact_root: activeArtifactRoot, pending_root_move: pending },
394
+ };
395
+ }
396
+ function rootMoveJournal(options) {
397
+ return {
398
+ schema: 'comet.native.transaction.v1',
399
+ id: options.id,
400
+ kind: 'root-move',
401
+ status: 'prepared',
402
+ projectRoot: options.paths.projectRoot,
403
+ nativeRoot: options.paths.nativeRoot,
404
+ createdAt: options.now.toISOString(),
405
+ operations: [],
406
+ };
407
+ }
408
+ async function readRootMoveJournal(sourcePaths, destinationPaths, stage, id) {
409
+ for (const paths of [sourcePaths, destinationPaths]) {
410
+ try {
411
+ const journal = await readNativeTransaction(paths, id);
412
+ if (journal.kind !== 'root-move')
413
+ throw new Error(`Transaction ${id} is not a root move`);
414
+ return { journal, paths };
415
+ }
416
+ catch (error) {
417
+ if (error.code !== 'ENOENT')
418
+ throw error;
419
+ }
420
+ }
421
+ const stageJournal = path.join(stage, 'runtime', 'transactions', id, 'transaction.json');
422
+ try {
423
+ const snapshot = await readNativeProtectedFile({
424
+ root: stage,
425
+ file: stageJournal,
426
+ maxBytes: NATIVE_ROOT_MOVE_MAX_JOURNAL_BYTES,
427
+ label: `Staged Native root-move journal ${id}`,
428
+ });
429
+ const journal = JSON.parse(snapshot.bytes.toString('utf8'));
430
+ if (journal.schema !== 'comet.native.transaction.v1' || journal.kind !== 'root-move') {
431
+ throw new Error(`Invalid staged root-move journal: ${id}`);
432
+ }
433
+ return { journal, paths: destinationPaths };
434
+ }
435
+ catch (error) {
436
+ if (error.code !== 'ENOENT')
437
+ throw error;
438
+ throw new Error(`Native root-move journal is missing: ${id}`, { cause: error });
439
+ }
440
+ }
441
+ async function setPendingStage(options) {
442
+ const updated = pendingConfig(options.config, { ...options.pending, stage: options.stage }, options.activeArtifactRoot);
443
+ await writeProjectConfig(options.projectRoot, updated);
444
+ return updated;
445
+ }
446
+ async function setPendingCleanup(options) {
447
+ const pending = options.config.native.pending_root_move;
448
+ if (!pending || pending.id !== options.id) {
449
+ throw new Error(`Native root-move cleanup ${options.id} lost its pending configuration`);
450
+ }
451
+ const updated = pendingConfig(options.config, {
452
+ id: pending.id,
453
+ fromArtifactRoot: pending.fromArtifactRoot,
454
+ toArtifactRoot: pending.toArtifactRoot,
455
+ stage: pending.stage,
456
+ ...(options.cleanup ? { cleanup: options.cleanup } : {}),
457
+ }, options.config.native.artifact_root);
458
+ await writeProjectConfig(options.projectRoot, updated);
459
+ return updated;
460
+ }
461
+ async function cleanupRootMoveTree(options) {
462
+ let config = options.config;
463
+ const pending = config.native.pending_root_move;
464
+ if (!pending || pending.id !== options.id) {
465
+ throw new Error(`Native root-move cleanup ${options.id} lost its pending configuration`);
466
+ }
467
+ let cleanup = pending.cleanup;
468
+ if (cleanup && cleanup.kind !== options.kind) {
469
+ throw new Error(`Native root move has unfinished ${cleanup.kind} cleanup; cannot start ${options.kind}`);
470
+ }
471
+ let targetExists = await exists(options.target);
472
+ let quarantineExists = await exists(options.quarantine);
473
+ if (targetExists && quarantineExists) {
474
+ throw new Error(`Native root-move cleanup target and quarantine both exist: ${options.kind}`);
475
+ }
476
+ if (!cleanup) {
477
+ if (!targetExists && !quarantineExists)
478
+ return config;
479
+ if (!targetExists && quarantineExists) {
480
+ throw new Error(`Native root-move cleanup quarantine is not transaction-bound: ${options.kind}`);
481
+ }
482
+ const manifestHash = await writeCleanupManifest({
483
+ paths: options.stablePaths,
484
+ id: options.id,
485
+ kind: options.kind,
486
+ entries: await walkTree(options.target, { rejectSymlinks: true }),
487
+ });
488
+ cleanup = { kind: options.kind, state: 'prepared', manifestHash };
489
+ config = await setPendingCleanup({
490
+ projectRoot: options.projectRoot,
491
+ config,
492
+ id: options.id,
493
+ cleanup,
494
+ });
495
+ }
496
+ const manifest = await readCleanupManifest({
497
+ paths: options.stablePaths,
498
+ id: options.id,
499
+ cleanup,
500
+ });
501
+ targetExists = await exists(options.target);
502
+ quarantineExists = await exists(options.quarantine);
503
+ if (targetExists && quarantineExists) {
504
+ throw new Error(`Native root-move cleanup target and quarantine both exist: ${options.kind}`);
505
+ }
506
+ if (targetExists) {
507
+ if (cleanup.state !== 'prepared') {
508
+ throw new Error(`Native root-move cleanup target reappeared after quarantine: ${options.kind}`);
509
+ }
510
+ await quarantineNativeProtectedDirectory({
511
+ root: options.projectRoot,
512
+ directory: options.target,
513
+ quarantine: options.quarantine,
514
+ label: options.label,
515
+ beforeQuarantine: options.beforeQuarantine,
516
+ afterQuarantine: options.afterQuarantine,
517
+ });
518
+ quarantineExists = true;
519
+ }
520
+ if (!quarantineExists) {
521
+ if (cleanup.state !== 'deleting') {
522
+ throw new Error(`Native root-move cleanup quarantine disappeared: ${options.kind}`);
523
+ }
524
+ return setPendingCleanup({
525
+ projectRoot: options.projectRoot,
526
+ config,
527
+ id: options.id,
528
+ });
529
+ }
530
+ await assertCleanupManifestMatch({
531
+ quarantine: options.quarantine,
532
+ manifest,
533
+ exact: cleanup.state !== 'deleting',
534
+ });
535
+ if (cleanup.state === 'prepared') {
536
+ cleanup = { ...cleanup, state: 'quarantined' };
537
+ config = await setPendingCleanup({
538
+ projectRoot: options.projectRoot,
539
+ config,
540
+ id: options.id,
541
+ cleanup,
542
+ });
543
+ }
544
+ if (cleanup.state === 'quarantined') {
545
+ cleanup = { ...cleanup, state: 'deleting' };
546
+ config = await setPendingCleanup({
547
+ projectRoot: options.projectRoot,
548
+ config,
549
+ id: options.id,
550
+ cleanup,
551
+ });
552
+ }
553
+ await deleteCleanupManifestSubset({
554
+ projectRoot: options.projectRoot,
555
+ quarantine: options.quarantine,
556
+ manifest,
557
+ hooks: options.hooks,
558
+ });
559
+ return setPendingCleanup({
560
+ projectRoot: options.projectRoot,
561
+ config,
562
+ id: options.id,
563
+ });
564
+ }
565
+ async function finishForwardMove(options) {
566
+ let config = options.config;
567
+ let stage = config.native.pending_root_move.stage;
568
+ if (stage === 'copying') {
569
+ if (!(await exists(options.sourcePaths.nativeRoot))) {
570
+ throw new Error(`Native source root is missing: ${options.sourcePaths.nativeRoot}`);
571
+ }
572
+ const stagingRemoval = stagingRemovalDirectory(options.staging);
573
+ config = await cleanupRootMoveTree({
574
+ projectRoot: options.projectRoot,
575
+ config,
576
+ id: options.pending.id,
577
+ kind: 'restart-staging',
578
+ stablePaths: options.sourcePaths,
579
+ target: options.staging,
580
+ quarantine: stagingRemoval,
581
+ label: 'Native root move stale staging removal',
582
+ hooks: options.hooks,
583
+ });
584
+ await walkTree(options.sourcePaths.nativeRoot, {
585
+ rejectSymlinks: true,
586
+ excludedFiles: new Set([path.resolve(options.lockFile)]),
587
+ });
588
+ await copyTree(options.sourcePaths.nativeRoot, options.staging, options.lockFile, options.destinationPaths.projectRoot);
589
+ await assertEquivalentTrees(options.sourcePaths.nativeRoot, options.staging, options.lockFile);
590
+ config = await setPendingStage({
591
+ projectRoot: options.projectRoot,
592
+ config,
593
+ pending: options.pending,
594
+ stage: 'ready',
595
+ });
596
+ stage = 'ready';
597
+ await options.hooks?.afterRootMoveStage?.('ready', options.journal);
598
+ }
599
+ if (stage === 'ready') {
600
+ if (await exists(options.destinationPaths.nativeRoot)) {
601
+ if (await exists(options.staging)) {
602
+ throw new Error(`Native destination is occupied: ${options.destinationPaths.nativeRoot}`);
603
+ }
604
+ await assertEquivalentTrees(options.sourcePaths.nativeRoot, options.destinationPaths.nativeRoot, options.lockFile);
605
+ }
606
+ else {
607
+ if (!(await exists(options.staging)))
608
+ throw new Error(`Native move staging tree is missing`);
609
+ await assertEquivalentTrees(options.sourcePaths.nativeRoot, options.staging, options.lockFile);
610
+ await fs.rename(options.staging, options.destinationPaths.nativeRoot);
611
+ }
612
+ config = await setPendingStage({
613
+ projectRoot: options.projectRoot,
614
+ config,
615
+ pending: options.pending,
616
+ stage: 'switched',
617
+ activeArtifactRoot: options.pending.toArtifactRoot,
618
+ });
619
+ stage = 'switched';
620
+ await options.hooks?.afterRootMoveStage?.('switched', options.journal);
621
+ }
622
+ if (stage !== 'switched')
623
+ throw new Error(`Unsupported Native root-move stage: ${stage}`);
624
+ if (!(await exists(options.destinationPaths.nativeRoot))) {
625
+ throw new Error(`Native destination root is missing: ${options.destinationPaths.nativeRoot}`);
626
+ }
627
+ const sourceRemoval = sourceRemovalDirectory(options.sourcePaths, options.pending.id);
628
+ if (!config.native.pending_root_move?.cleanup && (await exists(options.sourcePaths.nativeRoot))) {
629
+ await assertEquivalentTrees(options.sourcePaths.nativeRoot, options.destinationPaths.nativeRoot, options.lockFile);
630
+ }
631
+ config = await cleanupRootMoveTree({
632
+ projectRoot: options.projectRoot,
633
+ config,
634
+ id: options.pending.id,
635
+ kind: 'forward-source',
636
+ stablePaths: options.destinationPaths,
637
+ target: options.sourcePaths.nativeRoot,
638
+ quarantine: sourceRemoval,
639
+ label: 'Native root move source removal',
640
+ beforeQuarantine: () => options.hooks?.beforeRootMoveSourceRemove?.(options.sourcePaths.nativeRoot),
641
+ afterQuarantine: (quarantine) => options.hooks?.afterRootMoveSourceQuarantined?.(quarantine),
642
+ hooks: options.hooks,
643
+ });
644
+ await refreshNativeWorkspaceIdentities(options.destinationPaths);
645
+ const destinationJournal = await readNativeTransaction(options.destinationPaths, options.pending.id);
646
+ await finalizeNativeTransaction(options.destinationPaths, destinationJournal, 'commit');
647
+ const stableNative = {
648
+ artifact_root: config.native.artifact_root,
649
+ language: config.native.language,
650
+ clarification_mode: config.native.clarification_mode,
651
+ };
652
+ const committed = {
653
+ ...config,
654
+ native: { ...stableNative, artifact_root: options.pending.toArtifactRoot },
655
+ };
656
+ await writeProjectConfig(options.projectRoot, committed);
657
+ return committed;
658
+ }
659
+ export async function moveNativeRoot(options) {
660
+ const current = (await readProjectConfig(options.projectRoot)) ?? defaultProjectConfig('docs');
661
+ if (current.native.pending_root_move) {
662
+ throw new Error(`Native root move ${current.native.pending_root_move.id} is already incomplete`);
663
+ }
664
+ const toArtifactRoot = normalizeArtifactRootRef(options.toArtifactRoot);
665
+ if (toArtifactRoot === current.native.artifact_root) {
666
+ throw new Error(`Native artifact root is already ${toArtifactRoot}`);
667
+ }
668
+ const sourcePaths = await nativeProjectPaths(options.projectRoot, current.native.artifact_root);
669
+ const destinationPaths = await nativeProjectPaths(options.projectRoot, toArtifactRoot);
670
+ if (isInsidePath(sourcePaths.nativeRoot, destinationPaths.nativeRoot) ||
671
+ isInsidePath(destinationPaths.nativeRoot, sourcePaths.nativeRoot)) {
672
+ throw new Error('Native source and destination roots must not overlap');
673
+ }
674
+ if (!(await exists(sourcePaths.nativeRoot))) {
675
+ throw new Error(`Native source root does not exist: ${sourcePaths.nativeRoot}`);
676
+ }
677
+ await assertNoUnfinishedTransactions(sourcePaths);
678
+ if (await exists(destinationPaths.nativeRoot)) {
679
+ throw new Error(`Native destination is occupied: ${destinationPaths.nativeRoot}`);
680
+ }
681
+ const lock = await acquireNativeLock(sourcePaths, 'root-move', `move root to ${toArtifactRoot}`);
682
+ const id = randomUUID();
683
+ const pending = {
684
+ id,
685
+ fromArtifactRoot: current.native.artifact_root,
686
+ toArtifactRoot,
687
+ stage: 'copying',
688
+ };
689
+ const journal = rootMoveJournal({ id, paths: sourcePaths, now: options.now ?? new Date() });
690
+ const staging = stagingDirectory(destinationPaths, id);
691
+ try {
692
+ await assertNoOtherLocks(sourcePaths, lock.file);
693
+ if (await exists(staging))
694
+ throw new Error(`Native move staging path is occupied: ${staging}`);
695
+ await writeProjectConfig(options.projectRoot, pendingConfig(current, pending));
696
+ await createNativeTransaction(sourcePaths, journal);
697
+ await options.hooks?.afterRootMoveStage?.('copying', journal);
698
+ await finishForwardMove({
699
+ projectRoot: options.projectRoot,
700
+ config: pendingConfig(current, pending),
701
+ pending,
702
+ sourcePaths,
703
+ destinationPaths,
704
+ staging,
705
+ journal,
706
+ lockFile: lock.file,
707
+ hooks: options.hooks,
708
+ });
709
+ return {
710
+ fromNativeRoot: sourcePaths.nativeRoot,
711
+ toNativeRoot: destinationPaths.nativeRoot,
712
+ transactionId: id,
713
+ };
714
+ }
715
+ finally {
716
+ await releaseNativeLock(lock);
717
+ }
718
+ }
719
+ export async function recoverNativeRootMove(options) {
720
+ let config = await readProjectConfig(options.projectRoot);
721
+ const pending = config?.native.pending_root_move;
722
+ if (!config || !pending)
723
+ throw new Error('No pending Native root move was found');
724
+ const sourcePaths = await nativeProjectPaths(options.projectRoot, pending.fromArtifactRoot);
725
+ const destinationPaths = await nativeProjectPaths(options.projectRoot, pending.toArtifactRoot);
726
+ const staging = stagingDirectory(destinationPaths, pending.id);
727
+ const lockPaths = (await exists(sourcePaths.nativeRoot)) ? sourcePaths : destinationPaths;
728
+ const lock = await acquireNativeLock(lockPaths, 'root-move', `recover root ${pending.id}`);
729
+ try {
730
+ let journalInfo;
731
+ try {
732
+ journalInfo = await readRootMoveJournal(sourcePaths, destinationPaths, staging, pending.id);
733
+ }
734
+ catch (error) {
735
+ if (pending.stage !== 'copying' || !(await exists(sourcePaths.nativeRoot)))
736
+ throw error;
737
+ const journal = rootMoveJournal({ id: pending.id, paths: sourcePaths, now: new Date() });
738
+ await createNativeTransaction(sourcePaths, journal);
739
+ journalInfo = { journal, paths: sourcePaths };
740
+ }
741
+ if (options.strategy === 'continue') {
742
+ const committed = await finishForwardMove({
743
+ projectRoot: options.projectRoot,
744
+ config,
745
+ pending,
746
+ sourcePaths,
747
+ destinationPaths,
748
+ staging,
749
+ journal: journalInfo.journal,
750
+ lockFile: lock.file,
751
+ hooks: options.hooks,
752
+ });
753
+ return { activeNativeRoot: destinationPaths.nativeRoot, config: committed };
754
+ }
755
+ if (!(await exists(sourcePaths.nativeRoot))) {
756
+ throw new Error('Cannot roll back after the old Native root was removed; continue recovery');
757
+ }
758
+ const destinationRemoval = rollbackRemovalDirectory(destinationPaths.nativeRoot, pending.id);
759
+ if (!config.native.pending_root_move?.cleanup && (await exists(destinationPaths.nativeRoot))) {
760
+ await assertEquivalentTrees(sourcePaths.nativeRoot, destinationPaths.nativeRoot, lock.file);
761
+ }
762
+ if (!config.native.pending_root_move?.cleanup ||
763
+ config.native.pending_root_move.cleanup.kind === 'rollback-destination') {
764
+ config = await cleanupRootMoveTree({
765
+ projectRoot: options.projectRoot,
766
+ config,
767
+ id: pending.id,
768
+ kind: 'rollback-destination',
769
+ stablePaths: sourcePaths,
770
+ target: destinationPaths.nativeRoot,
771
+ quarantine: destinationRemoval,
772
+ label: 'Native root move rollback destination removal',
773
+ hooks: options.hooks,
774
+ });
775
+ }
776
+ const stagingRemoval = rollbackRemovalDirectory(staging, pending.id);
777
+ if (!config.native.pending_root_move?.cleanup && (await exists(staging))) {
778
+ await assertEquivalentTrees(sourcePaths.nativeRoot, staging, lock.file);
779
+ }
780
+ if (!config.native.pending_root_move?.cleanup ||
781
+ config.native.pending_root_move.cleanup.kind === 'rollback-staging') {
782
+ config = await cleanupRootMoveTree({
783
+ projectRoot: options.projectRoot,
784
+ config,
785
+ id: pending.id,
786
+ kind: 'rollback-staging',
787
+ stablePaths: sourcePaths,
788
+ target: staging,
789
+ quarantine: stagingRemoval,
790
+ label: 'Native root move rollback staging removal',
791
+ hooks: options.hooks,
792
+ });
793
+ }
794
+ const sourceJournal = await readNativeTransaction(sourcePaths, pending.id);
795
+ await rollbackNativeTransaction(sourcePaths, sourceJournal);
796
+ const stableNative = {
797
+ artifact_root: config.native.artifact_root,
798
+ language: config.native.language,
799
+ clarification_mode: config.native.clarification_mode,
800
+ };
801
+ const restored = {
802
+ ...config,
803
+ native: { ...stableNative, artifact_root: pending.fromArtifactRoot },
804
+ };
805
+ await writeProjectConfig(options.projectRoot, restored);
806
+ return { activeNativeRoot: sourcePaths.nativeRoot, config: restored };
807
+ }
808
+ finally {
809
+ await releaseNativeLock(lock);
810
+ }
811
+ }
812
+ //# sourceMappingURL=native-root-move.js.map