@angelmsger/fx 0.10.1 → 0.12.0

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 (611) hide show
  1. package/CHANGELOG.md +166 -0
  2. package/README.md +13 -47
  3. package/defaults/tools.yaml +14 -0
  4. package/dist/adapters/agent-host/toml-mcp.js +1 -3
  5. package/dist/adapters/agent-host/toml-mcp.js.map +1 -1
  6. package/dist/adapters/calendar/wecom-calendar-cli/provider.js +42 -0
  7. package/dist/adapters/calendar/wecom-calendar-cli/provider.js.map +1 -0
  8. package/dist/adapters/ci/github-actions/ci.js +97 -0
  9. package/dist/adapters/ci/github-actions/ci.js.map +1 -0
  10. package/dist/adapters/ci/github-actions/provider.js +33 -0
  11. package/dist/adapters/ci/github-actions/provider.js.map +1 -0
  12. package/dist/adapters/ci/jenkins-cli/ci.js +6 -1
  13. package/dist/adapters/ci/jenkins-cli/ci.js.map +1 -1
  14. package/dist/adapters/cluster/kubectl/provider.js +2 -3
  15. package/dist/adapters/cluster/kubectl/provider.js.map +1 -1
  16. package/dist/adapters/code-host/bitbucket-cli/contribution-call.js +5 -27
  17. package/dist/adapters/code-host/bitbucket-cli/contribution-call.js.map +1 -1
  18. package/dist/adapters/code-host/bitbucket-cli/provider.js.map +1 -1
  19. package/dist/adapters/code-host/bitbucket-cli/pull-request-reference.js +1 -19
  20. package/dist/adapters/code-host/bitbucket-cli/pull-request-reference.js.map +1 -1
  21. package/dist/adapters/code-host/bitbucket-cli/pull-request.js +3 -17
  22. package/dist/adapters/code-host/bitbucket-cli/pull-request.js.map +1 -1
  23. package/dist/adapters/code-host/bitbucket-cli/repository-identity.js +1 -4
  24. package/dist/adapters/code-host/bitbucket-cli/repository-identity.js.map +1 -1
  25. package/dist/adapters/code-host/github/contribution.js +179 -0
  26. package/dist/adapters/code-host/github/contribution.js.map +1 -0
  27. package/dist/adapters/code-host/github/import.js +27 -0
  28. package/dist/adapters/code-host/github/import.js.map +1 -0
  29. package/dist/adapters/code-host/github/provider.js +205 -0
  30. package/dist/adapters/code-host/github/provider.js.map +1 -0
  31. package/dist/adapters/code-host/local-git/import.js +2 -2
  32. package/dist/adapters/code-host/local-git/import.js.map +1 -1
  33. package/dist/adapters/code-host/local-git/provider.js +3 -3
  34. package/dist/adapters/code-host/local-git/provider.js.map +1 -1
  35. package/dist/adapters/error-tracker/sentry/client.js +1 -1
  36. package/dist/adapters/error-tracker/sentry/client.js.map +1 -1
  37. package/dist/adapters/family/cli.js +15 -17
  38. package/dist/adapters/family/cli.js.map +1 -1
  39. package/dist/adapters/family/contribution.js +65 -0
  40. package/dist/adapters/family/contribution.js.map +1 -0
  41. package/dist/adapters/family/service-protocol.js +1 -0
  42. package/dist/adapters/family/service-protocol.js.map +1 -1
  43. package/dist/adapters/fs/node-fs.js +5 -8
  44. package/dist/adapters/fs/node-fs.js.map +1 -1
  45. package/dist/adapters/git/run.js +17 -0
  46. package/dist/adapters/git/run.js.map +1 -0
  47. package/dist/adapters/git/system-git.js +36 -16
  48. package/dist/adapters/git/system-git.js.map +1 -1
  49. package/dist/adapters/github/gh.js +103 -0
  50. package/dist/adapters/github/gh.js.map +1 -0
  51. package/dist/adapters/manifest-source/git-repo.js +38 -18
  52. package/dist/adapters/manifest-source/git-repo.js.map +1 -1
  53. package/dist/adapters/manifest-source/stdin.js +4 -6
  54. package/dist/adapters/manifest-source/stdin.js.map +1 -1
  55. package/dist/adapters/metrics/prometheus-cli/service.js +9 -1
  56. package/dist/adapters/metrics/prometheus-cli/service.js.map +1 -1
  57. package/dist/adapters/process/deadline-process.js +7 -3
  58. package/dist/adapters/process/deadline-process.js.map +1 -1
  59. package/dist/adapters/process/diagnostic-process.js +2 -3
  60. package/dist/adapters/process/diagnostic-process.js.map +1 -1
  61. package/dist/adapters/process/launch.js +55 -0
  62. package/dist/adapters/process/launch.js.map +1 -0
  63. package/dist/adapters/process/node-process.js +3 -3
  64. package/dist/adapters/process/node-process.js.map +1 -1
  65. package/dist/adapters/process/powershell.js +13 -2
  66. package/dist/adapters/process/powershell.js.map +1 -1
  67. package/dist/adapters/process/stdio-bridge.js +2 -2
  68. package/dist/adapters/process/stdio-bridge.js.map +1 -1
  69. package/dist/adapters/registry/registry-policy.js +4 -14
  70. package/dist/adapters/registry/registry-policy.js.map +1 -1
  71. package/dist/application/agent/list.js +12 -0
  72. package/dist/application/agent/list.js.map +1 -1
  73. package/dist/application/agent/pick.js +12 -30
  74. package/dist/application/agent/pick.js.map +1 -1
  75. package/dist/application/agent/workspace-cleanup.js +4 -1
  76. package/dist/application/agent/workspace-cleanup.js.map +1 -1
  77. package/dist/application/config/export.js +3 -2
  78. package/dist/application/config/export.js.map +1 -1
  79. package/dist/application/config/import-registry.js +3 -3
  80. package/dist/application/config/import-registry.js.map +1 -1
  81. package/dist/application/config/import.js +12 -4
  82. package/dist/application/config/import.js.map +1 -1
  83. package/dist/application/config/resolve.js +2 -4
  84. package/dist/application/config/resolve.js.map +1 -1
  85. package/dist/application/contribution/identity.js +3 -3
  86. package/dist/application/contribution/identity.js.map +1 -1
  87. package/dist/application/contribution/push-registered.js +77 -0
  88. package/dist/application/contribution/push-registered.js.map +1 -0
  89. package/dist/application/contribution/push.js +12 -19
  90. package/dist/application/contribution/push.js.map +1 -1
  91. package/dist/application/contribution/validate.js +12 -13
  92. package/dist/application/contribution/validate.js.map +1 -1
  93. package/dist/application/docs/derive.js +14 -5
  94. package/dist/application/docs/derive.js.map +1 -1
  95. package/dist/application/docs/rendered.js +2 -1
  96. package/dist/application/docs/rendered.js.map +1 -1
  97. package/dist/application/doctor/index.js +43 -27
  98. package/dist/application/doctor/index.js.map +1 -1
  99. package/dist/application/doctor/manifest.js +5 -1
  100. package/dist/application/doctor/manifest.js.map +1 -1
  101. package/dist/application/doctor/repos.js +1 -1
  102. package/dist/application/doctor/repos.js.map +1 -1
  103. package/dist/application/doctor/tools.js +20 -31
  104. package/dist/application/doctor/tools.js.map +1 -1
  105. package/dist/application/doctor/types.js +0 -8
  106. package/dist/application/doctor/types.js.map +1 -1
  107. package/dist/application/env/names.js.map +1 -1
  108. package/dist/application/harness/apply.js +4 -3
  109. package/dist/application/harness/apply.js.map +1 -1
  110. package/dist/application/harness/cleanup.js +5 -14
  111. package/dist/application/harness/cleanup.js.map +1 -1
  112. package/dist/application/harness/mcp-readiness.js +3 -1
  113. package/dist/application/harness/mcp-readiness.js.map +1 -1
  114. package/dist/application/harness/names.js +2 -4
  115. package/dist/application/harness/names.js.map +1 -1
  116. package/dist/application/harness/plan.js +12 -10
  117. package/dist/application/harness/plan.js.map +1 -1
  118. package/dist/application/harness/reconcile.js +4 -14
  119. package/dist/application/harness/reconcile.js.map +1 -1
  120. package/dist/application/harness/session.js +2 -13
  121. package/dist/application/harness/session.js.map +1 -1
  122. package/dist/application/harness/stages.js +8 -18
  123. package/dist/application/harness/stages.js.map +1 -1
  124. package/dist/application/harness/types.js +1 -8
  125. package/dist/application/harness/types.js.map +1 -1
  126. package/dist/application/hook/apply.js +5 -4
  127. package/dist/application/hook/apply.js.map +1 -1
  128. package/dist/application/hook/automatic-sync.js +8 -3
  129. package/dist/application/hook/automatic-sync.js.map +1 -1
  130. package/dist/application/hook/cleanup.js +5 -14
  131. package/dist/application/hook/cleanup.js.map +1 -1
  132. package/dist/application/hook/dispatch.js +24 -3
  133. package/dist/application/hook/dispatch.js.map +1 -1
  134. package/dist/application/hook/observe.js +11 -9
  135. package/dist/application/hook/observe.js.map +1 -1
  136. package/dist/application/hook/plan.js.map +1 -1
  137. package/dist/application/hook/reconcile.js +2 -9
  138. package/dist/application/hook/reconcile.js.map +1 -1
  139. package/dist/application/hook/session.js +5 -12
  140. package/dist/application/hook/session.js.map +1 -1
  141. package/dist/application/hook/supervisor-report.js +2 -1
  142. package/dist/application/hook/supervisor-report.js.map +1 -1
  143. package/dist/application/hook/types.js +8 -1
  144. package/dist/application/hook/types.js.map +1 -1
  145. package/dist/application/init/errors.js +19 -19
  146. package/dist/application/init/errors.js.map +1 -1
  147. package/dist/application/init/index.js +60 -42
  148. package/dist/application/init/index.js.map +1 -1
  149. package/dist/application/init/preview-initialization.js +40 -0
  150. package/dist/application/init/preview-initialization.js.map +1 -0
  151. package/dist/application/init/preview.js +37 -19
  152. package/dist/application/init/preview.js.map +1 -1
  153. package/dist/application/init/resume.js +30 -0
  154. package/dist/application/init/resume.js.map +1 -0
  155. package/dist/application/init/source.js +8 -0
  156. package/dist/application/init/source.js.map +1 -0
  157. package/dist/application/{doctor/login.js → login/check.js} +22 -43
  158. package/dist/application/login/check.js.map +1 -0
  159. package/dist/application/login/collect.js +14 -7
  160. package/dist/application/login/collect.js.map +1 -1
  161. package/dist/application/login/command-failure.js +2 -0
  162. package/dist/application/login/command-failure.js.map +1 -1
  163. package/dist/application/login/deps.js +2 -3
  164. package/dist/application/login/deps.js.map +1 -1
  165. package/dist/application/login/run.js +149 -54
  166. package/dist/application/login/run.js.map +1 -1
  167. package/dist/application/login/stage.js +146 -0
  168. package/dist/application/login/stage.js.map +1 -0
  169. package/dist/application/login/verify.js +45 -34
  170. package/dist/application/login/verify.js.map +1 -1
  171. package/dist/application/manifest/context.js +5 -1
  172. package/dist/application/manifest/context.js.map +1 -1
  173. package/dist/application/{import.js → manifest/import.js} +36 -28
  174. package/dist/application/manifest/import.js.map +1 -0
  175. package/dist/application/manifest/lint.js +15 -23
  176. package/dist/application/manifest/lint.js.map +1 -1
  177. package/dist/application/manifest/load.js +7 -11
  178. package/dist/application/manifest/load.js.map +1 -1
  179. package/dist/application/manifest/prepare.js +3 -2
  180. package/dist/application/manifest/prepare.js.map +1 -1
  181. package/dist/application/manifest/providers.js +4 -1
  182. package/dist/application/manifest/providers.js.map +1 -1
  183. package/dist/application/{refresh-manifest.js → manifest/refresh.js} +26 -2
  184. package/dist/application/manifest/refresh.js.map +1 -0
  185. package/dist/application/manifest/set.js +2 -1
  186. package/dist/application/manifest/set.js.map +1 -1
  187. package/dist/application/member/list.js +2 -4
  188. package/dist/application/member/list.js.map +1 -1
  189. package/dist/application/member/show.js +2 -3
  190. package/dist/application/member/show.js.map +1 -1
  191. package/dist/application/preparation.js +92 -25
  192. package/dist/application/preparation.js.map +1 -1
  193. package/dist/application/probe-record/index.js +19 -18
  194. package/dist/application/probe-record/index.js.map +1 -1
  195. package/dist/application/probe-record/plan.js +6 -4
  196. package/dist/application/probe-record/plan.js.map +1 -1
  197. package/dist/application/{can.js → readiness/can.js} +23 -11
  198. package/dist/application/readiness/can.js.map +1 -0
  199. package/dist/application/readiness/index.js +22 -35
  200. package/dist/application/readiness/index.js.map +1 -1
  201. package/dist/application/readiness/resolve.js +13 -15
  202. package/dist/application/readiness/resolve.js.map +1 -1
  203. package/dist/application/readiness/verdicts.js +2 -7
  204. package/dist/application/readiness/verdicts.js.map +1 -1
  205. package/dist/application/{where.js → readiness/where.js} +19 -21
  206. package/dist/application/readiness/where.js.map +1 -0
  207. package/dist/application/release/ci.js +16 -5
  208. package/dist/application/release/ci.js.map +1 -1
  209. package/dist/application/release/errors.js +4 -0
  210. package/dist/application/release/errors.js.map +1 -1
  211. package/dist/application/release/facts.js +24 -3
  212. package/dist/application/release/facts.js.map +1 -1
  213. package/dist/application/release/index.js +26 -22
  214. package/dist/application/release/index.js.map +1 -1
  215. package/dist/application/release/repo.js +109 -0
  216. package/dist/application/release/repo.js.map +1 -0
  217. package/dist/application/safety/trust.js +12 -14
  218. package/dist/application/safety/trust.js.map +1 -1
  219. package/dist/application/self/update.js +23 -13
  220. package/dist/application/self/update.js.map +1 -1
  221. package/dist/application/services/command.js +6 -8
  222. package/dist/application/services/command.js.map +1 -1
  223. package/dist/application/services/operation.js +12 -19
  224. package/dist/application/services/operation.js.map +1 -1
  225. package/dist/application/services/recipes.js +7 -2
  226. package/dist/application/services/recipes.js.map +1 -1
  227. package/dist/application/services/stage.js +6 -4
  228. package/dist/application/services/stage.js.map +1 -1
  229. package/dist/application/services/types.js +7 -1
  230. package/dist/application/services/types.js.map +1 -1
  231. package/dist/application/skill/copies.js +13 -22
  232. package/dist/application/skill/copies.js.map +1 -1
  233. package/dist/application/skill/fx-copies.js +1 -1
  234. package/dist/application/skill/fx-copies.js.map +1 -1
  235. package/dist/application/skill/stage.js +24 -26
  236. package/dist/application/skill/stage.js.map +1 -1
  237. package/dist/application/skill/standalone.js +1 -1
  238. package/dist/application/skill/standalone.js.map +1 -1
  239. package/dist/application/skill/targets.js +2 -16
  240. package/dist/application/skill/targets.js.map +1 -1
  241. package/dist/application/skill/tool-skills.js +20 -10
  242. package/dist/application/skill/tool-skills.js.map +1 -1
  243. package/dist/application/sync/checks.js +18 -45
  244. package/dist/application/sync/checks.js.map +1 -1
  245. package/dist/application/sync/index.js +76 -26
  246. package/dist/application/sync/index.js.map +1 -1
  247. package/dist/application/sync/stages.js +43 -26
  248. package/dist/application/sync/stages.js.map +1 -1
  249. package/dist/application/sync/types.js +6 -1
  250. package/dist/application/sync/types.js.map +1 -1
  251. package/dist/application/tool/check.js +8 -0
  252. package/dist/application/tool/check.js.map +1 -1
  253. package/dist/application/tool/history.js +16 -0
  254. package/dist/application/tool/history.js.map +1 -0
  255. package/dist/application/tool/initialize.js +2 -1
  256. package/dist/application/tool/initialize.js.map +1 -1
  257. package/dist/application/tool/install.js +15 -18
  258. package/dist/application/tool/install.js.map +1 -1
  259. package/dist/application/tool/installed.js +1 -1
  260. package/dist/application/tool/installed.js.map +1 -1
  261. package/dist/application/tool/list.js.map +1 -1
  262. package/dist/application/tool/scope.js +8 -7
  263. package/dist/application/tool/scope.js.map +1 -1
  264. package/dist/application/tool/select.js +2 -4
  265. package/dist/application/tool/select.js.map +1 -1
  266. package/dist/application/tool/show.js.map +1 -1
  267. package/dist/application/tool/toolchain.js +19 -6
  268. package/dist/application/tool/toolchain.js.map +1 -1
  269. package/dist/application/update/check.js +2 -1
  270. package/dist/application/update/check.js.map +1 -1
  271. package/dist/application/workspace/command-operation.js +4 -3
  272. package/dist/application/workspace/command-operation.js.map +1 -1
  273. package/dist/application/{workspace-context.js → workspace/context.js} +26 -19
  274. package/dist/application/workspace/context.js.map +1 -0
  275. package/dist/application/workspace/deps.js +3 -3
  276. package/dist/application/workspace/deps.js.map +1 -1
  277. package/dist/application/workspace/go-work.js +77 -0
  278. package/dist/application/workspace/go-work.js.map +1 -0
  279. package/dist/application/workspace/guidance.js +2 -4
  280. package/dist/application/workspace/guidance.js.map +1 -1
  281. package/dist/application/workspace/health.js +4 -2
  282. package/dist/application/workspace/health.js.map +1 -1
  283. package/dist/application/workspace/inspect.js +1 -4
  284. package/dist/application/workspace/inspect.js.map +1 -1
  285. package/dist/application/workspace/manage.js +83 -97
  286. package/dist/application/workspace/manage.js.map +1 -1
  287. package/dist/application/workspace/operation.js +13 -14
  288. package/dist/application/workspace/operation.js.map +1 -1
  289. package/dist/application/workspace/plan.js +2 -1
  290. package/dist/application/workspace/plan.js.map +1 -1
  291. package/dist/application/workspace/registry.js +4 -3
  292. package/dist/application/workspace/registry.js.map +1 -1
  293. package/dist/application/workspace/resolve.js +10 -12
  294. package/dist/application/workspace/resolve.js.map +1 -1
  295. package/dist/application/workspace/resources.js +47 -31
  296. package/dist/application/workspace/resources.js.map +1 -1
  297. package/dist/application/workspace/root-entries.js +3 -0
  298. package/dist/application/workspace/root-entries.js.map +1 -1
  299. package/dist/application/workspace/source-preview.js +6 -3
  300. package/dist/application/workspace/source-preview.js.map +1 -1
  301. package/dist/application/{status.js → workspace/status.js} +51 -6
  302. package/dist/application/workspace/status.js.map +1 -0
  303. package/dist/cli/base.js +25 -29
  304. package/dist/cli/base.js.map +1 -1
  305. package/dist/cli/commands/agent/pick.js +4 -1
  306. package/dist/cli/commands/agent/pick.js.map +1 -1
  307. package/dist/cli/commands/agent/unpick.js +5 -1
  308. package/dist/cli/commands/agent/unpick.js.map +1 -1
  309. package/dist/cli/commands/aliases.js +1 -0
  310. package/dist/cli/commands/aliases.js.map +1 -1
  311. package/dist/cli/commands/can.js +5 -21
  312. package/dist/cli/commands/can.js.map +1 -1
  313. package/dist/cli/commands/config/import.js +1 -8
  314. package/dist/cli/commands/config/import.js.map +1 -1
  315. package/dist/cli/commands/doctor.js +2 -1
  316. package/dist/cli/commands/doctor.js.map +1 -1
  317. package/dist/cli/commands/env/pick.js +1 -0
  318. package/dist/cli/commands/env/pick.js.map +1 -1
  319. package/dist/cli/commands/env/select.js +1 -0
  320. package/dist/cli/commands/env/select.js.map +1 -1
  321. package/dist/cli/commands/env/unpick.js +1 -0
  322. package/dist/cli/commands/env/unpick.js.map +1 -1
  323. package/dist/cli/commands/hook/disable.js +1 -0
  324. package/dist/cli/commands/hook/disable.js.map +1 -1
  325. package/dist/cli/commands/hook/enable.js +1 -0
  326. package/dist/cli/commands/hook/enable.js.map +1 -1
  327. package/dist/cli/commands/index.js +3 -3
  328. package/dist/cli/commands/index.js.map +1 -1
  329. package/dist/cli/commands/init.js +14 -11
  330. package/dist/cli/commands/init.js.map +1 -1
  331. package/dist/cli/commands/login.js +13 -2
  332. package/dist/cli/commands/login.js.map +1 -1
  333. package/dist/cli/commands/manifest/import.js +6 -2
  334. package/dist/cli/commands/manifest/import.js.map +1 -1
  335. package/dist/cli/commands/manifest/lint.js +5 -1
  336. package/dist/cli/commands/manifest/lint.js.map +1 -1
  337. package/dist/cli/commands/manifest/record-probe.js +1 -0
  338. package/dist/cli/commands/manifest/record-probe.js.map +1 -1
  339. package/dist/cli/commands/manifest/render.js +1 -0
  340. package/dist/cli/commands/manifest/render.js.map +1 -1
  341. package/dist/cli/commands/manifest/repo-set.js +1 -0
  342. package/dist/cli/commands/manifest/repo-set.js.map +1 -1
  343. package/dist/cli/commands/{release.js → release/check.js} +14 -13
  344. package/dist/cli/commands/release/check.js.map +1 -0
  345. package/dist/cli/commands/repo/add.js +1 -0
  346. package/dist/cli/commands/repo/add.js.map +1 -1
  347. package/dist/cli/commands/repo/fork.js +1 -0
  348. package/dist/cli/commands/repo/fork.js.map +1 -1
  349. package/dist/cli/commands/repo/pick.js +1 -0
  350. package/dist/cli/commands/repo/pick.js.map +1 -1
  351. package/dist/cli/commands/repo/remove.js +1 -0
  352. package/dist/cli/commands/repo/remove.js.map +1 -1
  353. package/dist/cli/commands/repo/select.js +1 -0
  354. package/dist/cli/commands/repo/select.js.map +1 -1
  355. package/dist/cli/commands/repo/unpick.js +1 -0
  356. package/dist/cli/commands/repo/unpick.js.map +1 -1
  357. package/dist/cli/commands/selection.js +1 -2
  358. package/dist/cli/commands/selection.js.map +1 -1
  359. package/dist/cli/commands/self/info.js +2 -2
  360. package/dist/cli/commands/self/info.js.map +1 -1
  361. package/dist/cli/commands/self/update.js +11 -14
  362. package/dist/cli/commands/self/update.js.map +1 -1
  363. package/dist/cli/commands/source/push.js +14 -13
  364. package/dist/cli/commands/source/push.js.map +1 -1
  365. package/dist/cli/commands/status.js +6 -36
  366. package/dist/cli/commands/status.js.map +1 -1
  367. package/dist/cli/commands/sync.js +7 -5
  368. package/dist/cli/commands/sync.js.map +1 -1
  369. package/dist/cli/commands/tool/history.js +2 -2
  370. package/dist/cli/commands/tool/history.js.map +1 -1
  371. package/dist/cli/commands/where.js +2 -1
  372. package/dist/cli/commands/where.js.map +1 -1
  373. package/dist/cli/commands/workspace/rebind.js +1 -4
  374. package/dist/cli/commands/workspace/rebind.js.map +1 -1
  375. package/dist/cli/completion.js +2 -4
  376. package/dist/cli/completion.js.map +1 -1
  377. package/dist/cli/flags.js +2 -2
  378. package/dist/cli/flags.js.map +1 -1
  379. package/dist/cli/help.js +2 -8
  380. package/dist/cli/help.js.map +1 -1
  381. package/dist/cli/hook-command.js +2 -2
  382. package/dist/cli/hook-command.js.map +1 -1
  383. package/dist/cli/main.js +4 -3
  384. package/dist/cli/main.js.map +1 -1
  385. package/dist/cli/notices.js +26 -24
  386. package/dist/cli/notices.js.map +1 -1
  387. package/dist/cli/preparation-view.js +170 -52
  388. package/dist/cli/preparation-view.js.map +1 -1
  389. package/dist/cli/release-view.js +105 -17
  390. package/dist/cli/release-view.js.map +1 -1
  391. package/dist/cli/render/exceptional.js +11 -4
  392. package/dist/cli/render/exceptional.js.map +1 -1
  393. package/dist/cli/render/fields.js +1 -3
  394. package/dist/cli/render/fields.js.map +1 -1
  395. package/dist/cli/render/human.js +1 -3
  396. package/dist/cli/render/human.js.map +1 -1
  397. package/dist/cli/render/index.js +1 -1
  398. package/dist/cli/render/index.js.map +1 -1
  399. package/dist/cli/render/report.js +1 -1
  400. package/dist/cli/render/report.js.map +1 -1
  401. package/dist/cli/render/status-line.js +17 -3
  402. package/dist/cli/render/status-line.js.map +1 -1
  403. package/dist/cli/render/tone.js +29 -10
  404. package/dist/cli/render/tone.js.map +1 -1
  405. package/dist/cli/route/index.js +13 -1
  406. package/dist/cli/route/index.js.map +1 -1
  407. package/dist/cli/tool-command.js +4 -11
  408. package/dist/cli/tool-command.js.map +1 -1
  409. package/dist/cli/workspace-write-policy.js +8 -33
  410. package/dist/cli/workspace-write-policy.js.map +1 -1
  411. package/dist/composition/agent-cleanup.js +5 -1
  412. package/dist/composition/agent-cleanup.js.map +1 -1
  413. package/dist/composition/bundled.js +7 -1
  414. package/dist/composition/bundled.js.map +1 -1
  415. package/dist/composition/command-wiring.js +44 -99
  416. package/dist/composition/command-wiring.js.map +1 -1
  417. package/dist/composition/container.js +25 -20
  418. package/dist/composition/container.js.map +1 -1
  419. package/dist/composition/contributions.js +26 -71
  420. package/dist/composition/contributions.js.map +1 -1
  421. package/dist/composition/harness.js +3 -4
  422. package/dist/composition/harness.js.map +1 -1
  423. package/dist/composition/hook-entry.js +2 -1
  424. package/dist/composition/hook-entry.js.map +1 -1
  425. package/dist/composition/hook-wiring.js +8 -16
  426. package/dist/composition/hook-wiring.js.map +1 -1
  427. package/dist/composition/hook-worker.js +9 -11
  428. package/dist/composition/hook-worker.js.map +1 -1
  429. package/dist/composition/hooks.js +6 -3
  430. package/dist/composition/hooks.js.map +1 -1
  431. package/dist/composition/import.js +8 -6
  432. package/dist/composition/import.js.map +1 -1
  433. package/dist/composition/manifest-edit.js +1 -2
  434. package/dist/composition/manifest-edit.js.map +1 -1
  435. package/dist/composition/manifest-sources.js +3 -16
  436. package/dist/composition/manifest-sources.js.map +1 -1
  437. package/dist/composition/probe-record.js +1 -2
  438. package/dist/composition/probe-record.js.map +1 -1
  439. package/dist/composition/refresh.js +1 -1
  440. package/dist/composition/refresh.js.map +1 -1
  441. package/dist/composition/registry.js +12 -37
  442. package/dist/composition/registry.js.map +1 -1
  443. package/dist/composition/tool-install.js +5 -1
  444. package/dist/composition/tool-install.js.map +1 -1
  445. package/dist/composition/tool-inventory.js +10 -1
  446. package/dist/composition/tool-inventory.js.map +1 -1
  447. package/dist/composition/trace.js +3 -4
  448. package/dist/composition/trace.js.map +1 -1
  449. package/dist/composition/update.js +12 -1
  450. package/dist/composition/update.js.map +1 -1
  451. package/dist/composition/workspace-management.js +8 -2
  452. package/dist/composition/workspace-management.js.map +1 -1
  453. package/dist/domain/config/codec.js +2 -1
  454. package/dist/domain/config/codec.js.map +1 -1
  455. package/dist/domain/config/profile.js +0 -1
  456. package/dist/domain/config/profile.js.map +1 -1
  457. package/dist/domain/contribution/pull-request.js +12 -1
  458. package/dist/domain/contribution/pull-request.js.map +1 -1
  459. package/dist/domain/contribution/selection.js +4 -8
  460. package/dist/domain/contribution/selection.js.map +1 -1
  461. package/dist/domain/errors.js +10 -3
  462. package/dist/domain/errors.js.map +1 -1
  463. package/dist/domain/fuzzy.js +6 -1
  464. package/dist/domain/fuzzy.js.map +1 -1
  465. package/dist/domain/harness/actions.js +60 -0
  466. package/dist/domain/harness/actions.js.map +1 -0
  467. package/dist/domain/harness/deadlines.js +14 -0
  468. package/dist/domain/harness/deadlines.js.map +1 -0
  469. package/dist/domain/harness/hooks.js +8 -0
  470. package/dist/domain/harness/hooks.js.map +1 -1
  471. package/dist/domain/harness/session-start.js +2 -1
  472. package/dist/domain/harness/session-start.js.map +1 -1
  473. package/dist/domain/harness/state-recovery.js.map +1 -1
  474. package/dist/domain/import/infer.js +2 -9
  475. package/dist/domain/import/infer.js.map +1 -1
  476. package/dist/domain/lease.js +30 -0
  477. package/dist/domain/lease.js.map +1 -0
  478. package/dist/domain/manifest/decode.js +5 -8
  479. package/dist/domain/manifest/decode.js.map +1 -1
  480. package/dist/domain/manifest/document.js +3 -5
  481. package/dist/domain/manifest/document.js.map +1 -1
  482. package/dist/domain/manifest/editor.js +3 -7
  483. package/dist/domain/manifest/editor.js.map +1 -1
  484. package/dist/domain/manifest/explain.js +2 -4
  485. package/dist/domain/manifest/explain.js.map +1 -1
  486. package/dist/domain/manifest/files.js +8 -7
  487. package/dist/domain/manifest/files.js.map +1 -1
  488. package/dist/domain/manifest/issues.js +2 -2
  489. package/dist/domain/manifest/issues.js.map +1 -1
  490. package/dist/domain/manifest/lint.js +4 -3
  491. package/dist/domain/manifest/lint.js.map +1 -1
  492. package/dist/domain/manifest/loader.js +2 -1
  493. package/dist/domain/manifest/loader.js.map +1 -1
  494. package/dist/domain/manifest/overlay.js +6 -9
  495. package/dist/domain/manifest/overlay.js.map +1 -1
  496. package/dist/domain/manifest/providers.js +34 -2
  497. package/dist/domain/manifest/providers.js.map +1 -1
  498. package/dist/domain/manifest/quarantine.js +21 -1
  499. package/dist/domain/manifest/quarantine.js.map +1 -1
  500. package/dist/domain/manifest/reflect.js +2 -31
  501. package/dist/domain/manifest/reflect.js.map +1 -1
  502. package/dist/domain/manifest/rules/harness.js +2 -16
  503. package/dist/domain/manifest/rules/harness.js.map +1 -1
  504. package/dist/domain/manifest/service.schema.js +5 -14
  505. package/dist/domain/manifest/service.schema.js.map +1 -1
  506. package/dist/domain/manifest/skill-frontmatter.js +1 -1
  507. package/dist/domain/manifest/skill-frontmatter.js.map +1 -1
  508. package/dist/domain/manifest/types.js.map +1 -1
  509. package/dist/domain/manifest/workspace.schema.js +9 -0
  510. package/dist/domain/manifest/workspace.schema.js.map +1 -1
  511. package/dist/domain/outcome.js +5 -0
  512. package/dist/domain/outcome.js.map +1 -0
  513. package/dist/domain/path.js +9 -1
  514. package/dist/domain/path.js.map +1 -1
  515. package/dist/domain/preparation.js.map +1 -1
  516. package/dist/domain/projection.js +8 -0
  517. package/dist/domain/projection.js.map +1 -0
  518. package/dist/domain/public-url.js +22 -0
  519. package/dist/domain/public-url.js.map +1 -0
  520. package/dist/domain/release/ci.js +29 -15
  521. package/dist/domain/release/ci.js.map +1 -1
  522. package/dist/domain/release/deps.js +3 -1
  523. package/dist/domain/release/deps.js.map +1 -1
  524. package/dist/domain/release/errors.js +8 -8
  525. package/dist/domain/release/errors.js.map +1 -1
  526. package/dist/domain/release/merge.js +26 -13
  527. package/dist/domain/release/merge.js.map +1 -1
  528. package/dist/domain/release/policy.js +2 -0
  529. package/dist/domain/release/policy.js.map +1 -1
  530. package/dist/domain/release/types.js +2 -1
  531. package/dist/domain/release/types.js.map +1 -1
  532. package/dist/domain/release/version.js +133 -0
  533. package/dist/domain/release/version.js.map +1 -0
  534. package/dist/domain/release/window.js +1 -1
  535. package/dist/domain/release/window.js.map +1 -1
  536. package/dist/domain/report.js +1 -1
  537. package/dist/domain/report.js.map +1 -1
  538. package/dist/domain/setup/names.js +23 -0
  539. package/dist/domain/setup/names.js.map +1 -0
  540. package/dist/domain/setup/planner.js +26 -26
  541. package/dist/domain/setup/planner.js.map +1 -1
  542. package/dist/domain/setup/progress.js +57 -0
  543. package/dist/domain/setup/progress.js.map +1 -0
  544. package/dist/domain/setup/types.js +5 -0
  545. package/dist/domain/setup/types.js.map +1 -1
  546. package/dist/domain/shell.js +0 -7
  547. package/dist/domain/shell.js.map +1 -1
  548. package/dist/domain/skills/frontmatter.js +1 -1
  549. package/dist/domain/skills/frontmatter.js.map +1 -1
  550. package/dist/domain/skills/projection.js +2 -3
  551. package/dist/domain/skills/projection.js.map +1 -1
  552. package/dist/domain/sync-selection.js +2 -4
  553. package/dist/domain/sync-selection.js.map +1 -1
  554. package/dist/domain/toolchain/resolve.js +4 -0
  555. package/dist/domain/toolchain/resolve.js.map +1 -1
  556. package/dist/domain/toolchain/select.js +15 -9
  557. package/dist/domain/toolchain/select.js.map +1 -1
  558. package/dist/domain/toolchain/stderr.js +34 -14
  559. package/dist/domain/toolchain/stderr.js.map +1 -1
  560. package/dist/domain/values.js +18 -2
  561. package/dist/domain/values.js.map +1 -1
  562. package/dist/domain/workspace/commits.js +9 -1
  563. package/dist/domain/workspace/commits.js.map +1 -1
  564. package/dist/domain/workspace/go-work.js +75 -0
  565. package/dist/domain/workspace/go-work.js.map +1 -0
  566. package/dist/domain/workspace/operation-journal.js +93 -0
  567. package/dist/domain/workspace/operation-journal.js.map +1 -0
  568. package/dist/domain/workspace/plan.js +17 -1
  569. package/dist/domain/workspace/plan.js.map +1 -1
  570. package/dist/domain/workspace/ref.js +3 -0
  571. package/dist/domain/workspace/ref.js.map +1 -1
  572. package/dist/infra/config-store.js +8 -13
  573. package/dist/infra/config-store.js.map +1 -1
  574. package/dist/infra/contribution-store.js +21 -67
  575. package/dist/infra/contribution-store.js.map +1 -1
  576. package/dist/infra/harness-state.js +21 -49
  577. package/dist/infra/harness-state.js.map +1 -1
  578. package/dist/infra/local-store.js +8 -15
  579. package/dist/infra/local-store.js.map +1 -1
  580. package/dist/infra/owned-journal.js +57 -0
  581. package/dist/infra/owned-journal.js.map +1 -0
  582. package/dist/infra/projection-store.js +4 -3
  583. package/dist/infra/projection-store.js.map +1 -1
  584. package/dist/infra/tool-history.js +19 -49
  585. package/dist/infra/tool-history.js.map +1 -1
  586. package/dist/infra/trust-store.js +2 -9
  587. package/dist/infra/trust-store.js.map +1 -1
  588. package/dist/infra/workspace-home.js +7 -1
  589. package/dist/infra/workspace-home.js.map +1 -1
  590. package/dist/ports/ci.js +2 -1
  591. package/dist/ports/ci.js.map +1 -1
  592. package/package.json +4 -1
  593. package/skills/fx-workspace/SKILL.md +2 -3
  594. package/skills/fx-workspace/references/commands.md +64 -53
  595. package/skills/fx-workspace/references/workspace-tasks.md +12 -12
  596. package/dist/application/can.js.map +0 -1
  597. package/dist/application/doctor/login.js.map +0 -1
  598. package/dist/application/import.js.map +0 -1
  599. package/dist/application/init/setup.js +0 -125
  600. package/dist/application/init/setup.js.map +0 -1
  601. package/dist/application/preview-initialization.js +0 -41
  602. package/dist/application/preview-initialization.js.map +0 -1
  603. package/dist/application/refresh-manifest.js.map +0 -1
  604. package/dist/application/refresh-workspace-manifest.js +0 -27
  605. package/dist/application/refresh-workspace-manifest.js.map +0 -1
  606. package/dist/application/status.js.map +0 -1
  607. package/dist/application/where.js.map +0 -1
  608. package/dist/application/workspace-context.js.map +0 -1
  609. package/dist/cli/commands/release.js.map +0 -1
  610. package/dist/domain/deadline.js +0 -17
  611. package/dist/domain/deadline.js.map +0 -1
@@ -2,9 +2,11 @@
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import path from 'node:path';
4
4
  import { asDevkitError, busyError, DevkitError, withPartialResult } from '../../domain/errors.js';
5
+ import { withLease, workspaceLeaseKey } from '../../domain/lease.js';
5
6
  import { samePath } from '../../domain/path.js';
6
- import { shellLine } from '../../domain/shell.js';
7
+ import { hasReached, matchesRegistry, operationJournalPath, parseJournal, sameEntry, sameJournal, serializeJournal, } from '../../domain/workspace/operation-journal.js';
7
8
  import { assertWritable } from '../safety/posture.js';
9
+ import { recoveryCommand } from './guidance.js';
8
10
  import { withWorkspaceOperation } from './operation.js';
9
11
  import { assertDistinctWorkspaceRoot } from './registry.js';
10
12
  import { inspectRebindSource, materializeRebindSource } from './source-preview.js';
@@ -13,62 +15,65 @@ export class ManageWorkspace {
13
15
  constructor(deps) {
14
16
  this.deps = deps;
15
17
  }
18
+ command(...args) {
19
+ return recoveryCommand({ commandShell: this.deps.commandShell }, ...args);
20
+ }
16
21
  async execute(input) {
17
22
  const preview = await this.plan(input);
18
23
  if (await this.isNoop(preview))
19
- return this.output({ ...preview, after: preview.before }, [], false);
24
+ return this.unchanged(preview);
20
25
  if (input.dryRun)
21
26
  return this.run(input);
22
27
  assertWritable(input.posture, `workspace ${input.action}`);
23
- return withWorkspaceOperation(this.deps.lock, input.name, false, () => this.run(input));
28
+ return withWorkspaceOperation(this.deps.lock, input.name, () => this.run(input));
24
29
  }
25
30
  async run(input) {
26
31
  const preview = await this.plan(input);
27
32
  if (await this.isNoop(preview))
28
- return this.output({ ...preview, after: preview.before }, [], false);
33
+ return this.unchanged(preview);
29
34
  const validation = input.source && preview.phase === 'planned'
30
35
  ? await inspectRebindSource(input.source, { ...this.deps, workspace: input.name })
31
36
  : null;
32
- const resources = await this.cleanup(preview, input, true);
37
+ const resources = await this.cleanup(preview, input, { dryRun: true });
33
38
  const result = {
34
- ...(await this.output(preview, resources, false)),
39
+ ...(await this.output(preview, { resources, written: false })),
35
40
  source_validation: validation,
36
41
  };
37
42
  if (input.dryRun)
38
43
  return result;
39
44
  assertWritable(input.posture, `workspace ${input.action}`);
40
- const lease = await this.deps.lock.acquire({ key: `workspace:${input.name}`, waitMs: 2000 });
41
- if (!lease)
42
- throw busyError('LOCK_BUSY', 'The workspace', {
43
- nextSteps: ['Retry the same workspace command shortly.'],
44
- });
45
- const progress = { written: false, phase: null };
45
+ return withLease(this.deps.lock, { key: workspaceLeaseKey(input.name), waitMs: 2000 }, () => busyError('LOCK_BUSY', 'The workspace', {
46
+ nextSteps: ['Retry the same workspace command shortly.'],
47
+ }), () => this.attempt(preview, input, result));
48
+ }
49
+ async attempt(preview, input, result) {
50
+ const checkpoints = new Checkpoints(this.deps.fs, this.journalPath(input.name));
46
51
  try {
47
52
  const current = await this.plan(input, preview.id);
48
- if (JSON.stringify(current) !== JSON.stringify(preview))
53
+ if (!sameJournal(current, preview))
49
54
  throw changedRegistry();
50
- return await this.apply(current, input, progress);
55
+ return await this.apply(current, input, checkpoints);
51
56
  }
52
57
  catch (error) {
53
58
  throw withPartialResult(error, {
54
59
  ...result,
55
60
  ...asDevkitError(error).partialResult,
56
61
  backup: await this.retainedBackup(preview),
57
- written: progress.written,
58
- phase: progress.phase,
62
+ written: checkpoints.persisted !== null,
63
+ phase: checkpoints.persisted,
59
64
  recovery: this.journalPath(input.name),
60
65
  next_steps: ['Retry the same workspace command to resume the retained operation.'],
61
66
  });
62
67
  }
63
- finally {
64
- await lease.release();
65
- }
66
68
  }
67
69
  async isNoop(journal) {
68
70
  return (journal.action === 'relocate' &&
69
71
  journal.phase === 'planned' &&
70
72
  samePath(await this.deps.fs.realpath(journal.before.root), journal.root));
71
73
  }
74
+ unchanged(journal) {
75
+ return this.output({ ...journal, after: journal.before }, { resources: [], written: false });
76
+ }
72
77
  async plan(input, id = randomUUID()) {
73
78
  const pending = await this.readJournal(input.name);
74
79
  if (pending) {
@@ -84,23 +89,21 @@ export class ManageWorkspace {
84
89
  let after = before;
85
90
  if (input.action === 'relocate') {
86
91
  await this.validateRelocation(input, before, root);
87
- await assertDistinctWorkspaceRoot(config, input.name, root, this.deps.fs);
92
+ await assertDistinctWorkspaceRoot(config, input.name, root, this.deps);
88
93
  after = { ...before, root };
89
94
  }
90
95
  if (input.action === 'rebind') {
91
96
  if (!input.source)
92
97
  throw new DevkitError('usage', 'INPUT_REQUIRED', 'Rebind requires --from', {
93
98
  nextSteps: [
94
- shellLine(['fx', 'workspace', 'rebind', input.name, '--from', '<manifest-source>']),
99
+ this.command('workspace', 'rebind', input.name, '--from', '<manifest-source>'),
95
100
  ],
96
101
  });
97
102
  if (!(await this.deps.fs.isDirectory(root)))
98
103
  throw new DevkitError('not_found', 'WORKSPACE_ROOT_MISSING', 'Restore or relocate the workspace root before rebinding its source', {
99
- nextSteps: [
100
- shellLine(['fx', 'workspace', 'relocate', input.name, '<existing-directory>']),
101
- ],
104
+ nextSteps: [this.command('workspace', 'relocate', input.name, '<existing-directory>')],
102
105
  });
103
- await assertDistinctWorkspaceRoot(config, input.name, root, this.deps.fs);
106
+ await assertDistinctWorkspaceRoot(config, input.name, root, this.deps);
104
107
  after = { ...before, source: input.source.description };
105
108
  }
106
109
  if (input.action === 'unregister')
@@ -137,51 +140,43 @@ export class ManageWorkspace {
137
140
  (await this.deps.fs.isDirectory(before.root)))
138
141
  throw new DevkitError('conflict', 'WORKSPACE_ROOT_EXISTS', 'The registered root still exists', {
139
142
  nextSteps: [
140
- shellLine(['fx', 'workspace', 'show', input.name]),
143
+ this.command('workspace', 'show', input.name),
141
144
  `Move ${before.root} to the destination before relocating the identity.`,
142
145
  ],
143
146
  });
144
147
  }
145
- async apply(initial, input, progress) {
146
- let journal = initial;
147
- const save = async (phase) => {
148
- const next = { ...journal, phase };
149
- await this.deps.fs.writeText(this.journalPath(input.name), JSON.stringify(next));
150
- journal = next;
151
- progress.written = true;
152
- progress.phase = phase;
153
- };
154
- await save(journal.phase);
148
+ async apply(initial, input, checkpoints) {
149
+ let journal = await checkpoints.save(initial);
150
+ const home = this.deps.workspaceHomeFor(input.name);
155
151
  const sourceDir = this.deps.manifestDirFor(input.name);
156
152
  const staging = `${sourceDir}.rebind-${journal.id}`;
157
153
  const backup = this.backup(journal);
158
- if (journal.action === 'rebind' && journal.phase === 'planned') {
154
+ if (journal.action === 'rebind' && !hasReached(journal, 'source_ready')) {
159
155
  await this.deps.fs.remove(staging);
160
156
  await materializeRebindSource(input.source, { ...this.deps, workspace: input.name }, staging);
161
- await save('source_ready');
157
+ journal = await checkpoints.save({ ...journal, phase: 'source_ready' });
162
158
  }
163
159
  let resources = [];
164
- if (journal.phase === 'planned' || journal.phase === 'source_ready') {
165
- resources = await this.cleanup(journal, input, false);
166
- await save('resources_cleaned');
160
+ if (!hasReached(journal, 'resources_cleaned')) {
161
+ resources = await this.cleanup(journal, input, { dryRun: false });
162
+ journal = await checkpoints.save({ ...journal, phase: 'resources_cleaned' });
167
163
  }
168
- if (journal.action === 'rebind' && journal.phase === 'resources_cleaned') {
164
+ if (journal.action === 'rebind' && !hasReached(journal, 'source_replaced')) {
169
165
  if (await this.deps.fs.exists(sourceDir))
170
166
  await this.preserveDirectory(sourceDir, backup);
171
167
  await this.deps.fs.replaceDir(staging, sourceDir);
172
- await save('source_replaced');
168
+ journal = await checkpoints.save({ ...journal, phase: 'source_replaced' });
173
169
  }
174
170
  if (journal.action === 'unregister')
175
- await this.preserveDirectory(path.dirname(sourceDir), backup);
176
- if (journal.phase !== 'registered') {
171
+ await this.preserveDirectory(home, backup);
172
+ if (!hasReached(journal, 'registered')) {
177
173
  await this.deps.config.update(async (current) => {
178
174
  const observed = current.workspaces?.[input.name] ?? null;
179
- if (JSON.stringify(observed) !== JSON.stringify(journal.before) &&
180
- JSON.stringify(observed) !== JSON.stringify(journal.after))
175
+ if (!sameEntry(observed, journal.before) && !sameEntry(observed, journal.after))
181
176
  throw changedRegistry();
182
177
  const workspaces = { ...current.workspaces };
183
178
  if (journal.after) {
184
- await assertDistinctWorkspaceRoot(current, input.name, journal.after.root, this.deps.fs);
179
+ await assertDistinctWorkspaceRoot(current, input.name, journal.after.root, this.deps);
185
180
  workspaces[input.name] = journal.after;
186
181
  }
187
182
  else
@@ -191,23 +186,19 @@ export class ManageWorkspace {
191
186
  delete next.default_workspace;
192
187
  return next;
193
188
  });
194
- await save('registered');
189
+ journal = await checkpoints.save({ ...journal, phase: 'registered' });
195
190
  }
196
191
  if (journal.action === 'rebind')
197
192
  await this.deps.fs.remove(staging);
198
193
  if (journal.action === 'unregister' && !(await this.sharedRoots(journal)).length)
199
- await this.deps.fs.remove(path.dirname(sourceDir));
194
+ await this.deps.fs.remove(home);
200
195
  else
201
196
  await this.deps.fs.remove(this.journalPath(input.name));
202
- return this.output(journal, resources, true);
197
+ return this.output(journal, { resources, written: true });
203
198
  }
204
199
  async assertCurrentIdentity(journal) {
205
200
  const observed = (await this.deps.config.read()).workspaces?.[journal.name] ?? null;
206
- const before = JSON.stringify(observed) === JSON.stringify(journal.before);
207
- const after = JSON.stringify(observed) === JSON.stringify(journal.after);
208
- if (journal.phase === 'registered'
209
- ? !after
210
- : !before && !(after && ['resources_cleaned', 'source_replaced'].includes(journal.phase)))
201
+ if (!matchesRegistry(journal, observed))
211
202
  throw changedRegistry();
212
203
  }
213
204
  async preserveDirectory(source, backup) {
@@ -219,11 +210,9 @@ export class ManageWorkspace {
219
210
  await this.deps.fs.replaceDir(staged, backup);
220
211
  await this.deps.fs.remove(staged);
221
212
  }
222
- async cleanup(journal, input, dryRun) {
223
- if (journal.phase === 'registered' ||
224
- journal.phase === 'source_replaced' ||
225
- journal.phase === 'resources_cleaned')
226
- return Promise.resolve([]);
213
+ async cleanup(journal, input, options) {
214
+ if (hasReached(journal, 'resources_cleaned'))
215
+ return [];
227
216
  await this.assertCurrentIdentity(journal);
228
217
  return this.deps.resources.cleanup({
229
218
  name: input.name,
@@ -231,7 +220,7 @@ export class ManageWorkspace {
231
220
  ownershipRoot: await this.deps.fs.realpath(journal.before.root),
232
221
  manifestDir: this.deps.manifestDirFor(input.name),
233
222
  shared: await this.sharedRoots(journal),
234
- dryRun,
223
+ dryRun: options.dryRun,
235
224
  posture: input.posture,
236
225
  });
237
226
  }
@@ -242,10 +231,12 @@ export class ManageWorkspace {
242
231
  shared.push({ name, manifestDir: this.deps.manifestDirFor(name) });
243
232
  return shared;
244
233
  }
245
- async output(journal, resources, written) {
234
+ async output(journal, result) {
235
+ const { resources, written } = result;
246
236
  const backup = await this.retainedBackup(journal);
247
- const source = this.deps.manifestDirFor(journal.name);
248
- const prior = journal.action === 'unregister' ? path.dirname(source) : source;
237
+ const prior = journal.action === 'unregister'
238
+ ? this.deps.workspaceHomeFor(journal.name)
239
+ : this.deps.manifestDirFor(journal.name);
249
240
  const planned = !written &&
250
241
  !backup &&
251
242
  journal.action !== 'relocate' &&
@@ -265,8 +256,8 @@ export class ManageWorkspace {
265
256
  source_validation: journal.action === 'rebind' && !written ? 'pending_apply' : null,
266
257
  next_steps: journal.after
267
258
  ? [
268
- shellLine(['fx', 'sync', '--workspace', journal.name]),
269
- shellLine(['fx', 'workspace', 'show', journal.name]),
259
+ this.command('sync', '--workspace', journal.name),
260
+ this.command('workspace', 'show', journal.name),
270
261
  ]
271
262
  : ['fx workspace list'],
272
263
  written,
@@ -279,48 +270,43 @@ export class ManageWorkspace {
279
270
  return (await this.deps.fs.isDirectory(backup)) ? backup : null;
280
271
  }
281
272
  backup(journal) {
282
- const source = this.deps.manifestDirFor(journal.name);
283
273
  return journal.action === 'unregister'
284
- ? `${path.dirname(source)}.retired-${journal.id}`
285
- : `${source}.backup-${journal.id}`;
274
+ ? `${this.deps.workspaceHomeFor(journal.name)}.retired-${journal.id}`
275
+ : `${this.deps.manifestDirFor(journal.name)}.backup-${journal.id}`;
286
276
  }
287
277
  journalPath(name) {
288
- return path.join(path.dirname(this.deps.manifestDirFor(name)), 'workspace-operation.json');
278
+ return operationJournalPath(this.deps.workspaceHomeFor(name));
289
279
  }
290
280
  async readJournal(name) {
291
281
  const text = await this.deps.fs.readText(this.journalPath(name));
292
282
  if (text === undefined)
293
283
  return null;
294
- let value;
295
- try {
296
- value = JSON.parse(text);
297
- }
298
- catch {
299
- throw changedRegistry();
300
- }
301
- if (!value ||
302
- typeof value !== 'object' ||
303
- value.name !== name ||
304
- !/^[a-f0-9-]{36}$/.test(value.id) ||
305
- !['unregister', 'relocate', 'rebind'].includes(value.action) ||
306
- typeof value.before?.root !== 'string' ||
307
- typeof value.root !== 'string' ||
308
- !validTransition(value) ||
309
- !['planned', 'source_ready', 'resources_cleaned', 'source_replaced', 'registered'].includes(value.phase))
284
+ const journal = parseJournal(text, name);
285
+ if (!journal)
310
286
  throw changedRegistry();
311
- return value;
287
+ return journal;
288
+ }
289
+ }
290
+ // Writes the checkpoints of one run and knows the last phase that reached disk,
291
+ // which is what a failed run reports.
292
+ class Checkpoints {
293
+ fs;
294
+ file;
295
+ last = null;
296
+ constructor(fs, file) {
297
+ this.fs = fs;
298
+ this.file = file;
299
+ }
300
+ get persisted() {
301
+ return this.last;
302
+ }
303
+ async save(journal) {
304
+ await this.fs.writeText(this.file, serializeJournal(journal));
305
+ this.last = journal.phase;
306
+ return journal;
312
307
  }
313
308
  }
314
309
  function changedRegistry() {
315
310
  return new DevkitError('conflict', 'WORKSPACE_PLAN_CHANGED', 'Workspace registration or recovery state changed', { nextSteps: ['fx workspace list', 'Re-run the same command against the current state.'] });
316
311
  }
317
- function validTransition(journal) {
318
- if (journal.action === 'unregister')
319
- return journal.after === null;
320
- if (typeof journal.after?.root !== 'string')
321
- return false;
322
- if (journal.action === 'relocate')
323
- return journal.after.root === journal.root && journal.after.source === journal.before.source;
324
- return journal.after.root === journal.before.root && typeof journal.after.source === 'string';
325
- }
326
312
  //# sourceMappingURL=manage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../../src/application/workspace/manage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manage.js","sourceRoot":"","sources":["../../../src/application/workspace/manage.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,21 @@
1
1
  // Identity operations serialize outside projection leases; nested projection work keeps its existing locks.
2
2
  import { busyError } from '../../domain/errors.js';
3
+ import { withLease } from '../../domain/lease.js';
3
4
  export async function acquireWorkspaceOperation(lock, name) {
4
- const lease = await lock.acquire({ key: `workspace-operation:${name}`, waitMs: 2000 });
5
+ const lease = await lock.acquire(operationRequest(name));
5
6
  if (!lease)
6
- throw busyError('LOCK_BUSY', `Workspace "${name}"`, {
7
- nextSteps: ['Retry the same command shortly.'],
8
- });
7
+ throw operationBusy(name);
9
8
  return lease;
10
9
  }
11
- export async function withWorkspaceOperation(lock, name, dryRun, work) {
12
- if (dryRun)
13
- return work();
14
- const lease = await acquireWorkspaceOperation(lock, name);
15
- try {
16
- return await work();
17
- }
18
- finally {
19
- await lease.release();
20
- }
10
+ export async function withWorkspaceOperation(lock, name, work) {
11
+ return withLease(lock, operationRequest(name), () => operationBusy(name), work);
12
+ }
13
+ function operationRequest(name) {
14
+ return { key: `workspace-operation:${name}`, waitMs: 2000 };
15
+ }
16
+ function operationBusy(name) {
17
+ return busyError('LOCK_BUSY', `Workspace "${name}"`, {
18
+ nextSteps: ['Retry the same command shortly.'],
19
+ });
21
20
  }
22
21
  //# sourceMappingURL=operation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/application/workspace/operation.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAE5G,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGnD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAU,EAAE,IAAY;IACtE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,uBAAuB,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACvF,IAAI,CAAC,KAAK;QACR,MAAM,SAAS,CAAC,WAAW,EAAE,cAAc,IAAI,GAAG,EAAE;YAClD,SAAS,EAAE,CAAC,iCAAiC,CAAC;SAC/C,CAAC,CAAC;IACL,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAU,EACV,IAAY,EACZ,MAAe,EACf,IAAsB;IAEtB,IAAI,MAAM;QAAE,OAAO,IAAI,EAAE,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,OAAO,MAAM,IAAI,EAAE,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC;IACxB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"operation.js","sourceRoot":"","sources":["../../../src/application/workspace/operation.ts"],"names":[],"mappings":"AAAA,4GAA4G;AAE5G,OAAO,EAAE,SAAS,EAAoB,MAAM,wBAAwB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAGlD,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,IAAU,EAAE,IAAY;IACtE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;IACzD,IAAI,CAAC,KAAK;QAAE,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,IAAU,EACV,IAAY,EACZ,IAAsB;IAEtB,OAAO,SAAS,CAAC,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,EAAE,GAAG,EAAE,uBAAuB,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC9D,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IACjC,OAAO,SAAS,CAAC,WAAW,EAAE,cAAc,IAAI,GAAG,EAAE;QACnD,SAAS,EAAE,CAAC,iCAAiC,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC"}
@@ -1,5 +1,6 @@
1
1
  // Build the shared synchronization plan from checkout facts; offline previews do not query providers or mutate caches.
2
2
  import { DevkitError } from '../../domain/errors.js';
3
+ import { messageOf } from '../../domain/values.js';
3
4
  import { planSync, } from '../../domain/workspace/plan.js';
4
5
  import { pooled } from '../pool.js';
5
6
  import { inspectDisk, readabilityOf, resolveUser, urlsFor } from './inspect.js';
@@ -52,7 +53,7 @@ async function resolvePlanningUser(deps) {
52
53
  throw err;
53
54
  deps.reporter.notice({
54
55
  code: 'CODE_HOST_USER_UNKNOWN',
55
- message: `no origin remote can be set: ${err instanceof Error ? err.message : String(err)}`,
56
+ message: `no origin remote can be set: ${messageOf(err)}`,
56
57
  nextSteps: ['fx config set user <your code-host user name>', 'fx repo fork <name>'],
57
58
  });
58
59
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/application/workspace/plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../src/application/workspace/plan.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,8 @@ import path from 'node:path';
3
3
  import { DevkitError } from '../../domain/errors.js';
4
4
  import { samePath } from '../../domain/path.js';
5
5
  import { shellLine } from '../../domain/shell.js';
6
- export async function assertDistinctWorkspaceRoot(config, name, root, fs) {
6
+ export async function assertDistinctWorkspaceRoot(config, name, root, context) {
7
+ const { fs, commandShell } = context;
7
8
  const physical = await fs.realpath(path.resolve(root));
8
9
  for (const [other, entry] of Object.entries(config.workspaces ?? {})) {
9
10
  if (other === name)
@@ -12,8 +13,8 @@ export async function assertDistinctWorkspaceRoot(config, name, root, fs) {
12
13
  throw new DevkitError('conflict', 'WORKSPACE_ROOT_TAKEN', `This directory is already registered as "${other}"`, {
13
14
  hint: 'One physical directory has one workspace identity. Rebind its source or relocate its registration.',
14
15
  nextSteps: [
15
- shellLine(['fx', 'workspace', 'show', other]),
16
- shellLine(['fx', 'workspace', 'rebind', other, '--from', '<source>']),
16
+ shellLine(['fx', 'workspace', 'show', other], commandShell),
17
+ shellLine(['fx', 'workspace', 'rebind', other, '--from', '<source>'], commandShell),
17
18
  ],
18
19
  });
19
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/application/workspace/registry.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAIlD,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAkB,EAClB,IAAY,EACZ,IAAY,EACZ,EAAc;IAEd,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC7B,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,MAAM,IAAI,WAAW,CACnB,UAAU,EACV,sBAAsB,EACtB,4CAA4C,KAAK,GAAG,EACpD;gBACE,IAAI,EAAE,oGAAoG;gBAC1G,SAAS,EAAE;oBACT,SAAS,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;oBAC7C,SAAS,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAC;iBACtE;aACF,CACF,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAkB;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO;IAC1E,MAAM,IAAI,WAAW,CACnB,QAAQ,EACR,2BAA2B,EAC3B,wDAAwD,IAAI,GAAG,EAC/D;QACE,IAAI,EAAE,eACJ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;aACjC,IAAI,EAAE;aACN,IAAI,CAAC,IAAI,CAAC,IAAI,QACnB,GAAG;QACH,SAAS,EAAE;YACT,mBAAmB;YACnB,mCAAmC;YACnC,mDAAmD;SACpD;KACF,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/application/workspace/registry.ts"],"names":[],"mappings":"AAAA,wEAAwE;AAExE,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAsB,MAAM,uBAAuB,CAAC;AAItE,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,MAAkB,EAClB,IAAY,EACZ,IAAY,EACZ,OAAuF;IAEvF,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC;IACrC,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACvD,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,EAAE,CAAC;QACrE,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC7B,IAAI,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;YACjE,MAAM,IAAI,WAAW,CACnB,UAAU,EACV,sBAAsB,EACtB,4CAA4C,KAAK,GAAG,EACpD;gBACE,IAAI,EAAE,oGAAoG;gBAC1G,SAAS,EAAE;oBACT,SAAS,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,YAAY,CAAC;oBAC3D,SAAS,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC;iBACpF;aACF,CACF,CAAC;IACN,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAkB;IACvD,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;IACtC,IAAI,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO;IAC1E,MAAM,IAAI,WAAW,CACnB,QAAQ,EACR,2BAA2B,EAC3B,wDAAwD,IAAI,GAAG,EAC/D;QACE,IAAI,EAAE,eACJ,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;aACjC,IAAI,EAAE;aACN,IAAI,CAAC,IAAI,CAAC,IAAI,QACnB,GAAG;QACH,SAAS,EAAE;YACT,mBAAmB;YACnB,mCAAmC;YACnC,mDAAmD;SACpD;KACF,CACF,CAAC;AACJ,CAAC"}
@@ -3,7 +3,7 @@
3
3
  // is read here, so broken workspaces can still be selected.
4
4
  import path from 'node:path';
5
5
  import { DevkitError } from '../../domain/errors.js';
6
- import { nearest } from '../../domain/fuzzy.js';
6
+ import { nearest, suggestionHint } from '../../domain/fuzzy.js';
7
7
  import { isAtOrInside, samePath } from '../../domain/path.js';
8
8
  import { shellLine } from '../../domain/shell.js';
9
9
  import { assertDefaultWorkspace } from './registry.js';
@@ -19,7 +19,7 @@ export async function resolveWorkspace(input) {
19
19
  manifestDir: input.manifestDirFor(name),
20
20
  });
21
21
  if (input.name !== undefined) {
22
- const selected = await explicitWorkspace(input.name, input.cwd, registry, input.fs);
22
+ const selected = await explicitWorkspace(input.name, input.cwd, registry, input.fs, input.commandShell);
23
23
  return await locate(selected.name, selected.entry, input.selection ?? 'explicit');
24
24
  }
25
25
  // Nested roots are legal; the innermost one owns cwd, judged on real paths.
@@ -39,7 +39,7 @@ export async function resolveWorkspace(input) {
39
39
  const fallback = config.default_workspace;
40
40
  const entry = fallback === undefined ? undefined : registry[fallback];
41
41
  if (fallback === undefined || entry === undefined)
42
- throw workspaceNotFound(input.cwd, names);
42
+ throw workspaceNotFound(input.cwd, names, input.commandShell);
43
43
  if (names.length > 1) {
44
44
  input.reporter.notice({
45
45
  code: 'WORKSPACE_IMPLICIT',
@@ -51,7 +51,7 @@ export async function resolveWorkspace(input) {
51
51
  }
52
52
  return await locate(fallback, entry, 'default');
53
53
  }
54
- export async function explicitWorkspace(selector, cwd, registry, fs) {
54
+ export async function explicitWorkspace(selector, cwd, registry, fs, shell) {
55
55
  const named = registry[selector];
56
56
  if (Object.hasOwn(registry, selector) && named)
57
57
  return { name: selector, entry: named };
@@ -65,7 +65,7 @@ export async function explicitWorkspace(selector, cwd, registry, fs) {
65
65
  if (matches.length > 1)
66
66
  throw ambiguousRoot(matches.map((entry) => entry.name));
67
67
  if (!matches[0])
68
- throw unknownWorkspace(selector, Object.keys(registry).sort());
68
+ throw unknownWorkspace(selector, Object.keys(registry).sort(), shell);
69
69
  return { name: matches[0].name, entry: matches[0].entry };
70
70
  }
71
71
  function ambiguousRoot(names) {
@@ -78,26 +78,24 @@ function ambiguousRoot(names) {
78
78
  ],
79
79
  });
80
80
  }
81
- export function workspaceNotFound(cwd, names = []) {
81
+ function workspaceNotFound(cwd, names = [], shell) {
82
82
  return new DevkitError('not_found', 'WORKSPACE_NOT_FOUND', `${cwd} is not inside a registered workspace`, {
83
83
  hint: names.length
84
84
  ? `Registered: ${names.join(', ')}. Choose one with --workspace or set default_workspace.`
85
85
  : 'No workspaces are registered. Initialize one first.',
86
86
  nextSteps: names.length
87
- ? ['fx workspace list', shellLine(['fx', 'status', '--workspace', names[0]])]
87
+ ? ['fx workspace list', shellLine(['fx', 'status', '--workspace', names[0]], shell)]
88
88
  : ['fx init <dir> --from <manifest repository>'],
89
89
  });
90
90
  }
91
- function unknownWorkspace(name, names) {
91
+ function unknownWorkspace(name, names, shell) {
92
92
  const suggestion = nearest(name, names);
93
93
  return new DevkitError('not_found', 'WORKSPACE_UNKNOWN', `No registered workspace matches "${name}"`, {
94
- hint: suggestion === undefined
95
- ? `Registered: ${names.join(', ') || '(none)'}.`
96
- : `Did you mean "${suggestion}"?`,
94
+ hint: suggestionHint(suggestion, `Registered: ${names.join(', ') || '(none)'}.`),
97
95
  nextSteps: [
98
96
  'fx workspace list',
99
97
  ...(names.length
100
- ? [shellLine(['fx', 'workspace', 'show', suggestion ?? names[0]])]
98
+ ? [shellLine(['fx', 'workspace', 'show', suggestion ?? names[0]], shell)]
101
99
  : ['fx init <dir> --from <source>']),
102
100
  ],
103
101
  });
@@ -1 +1 @@
1
- {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/application/workspace/resolve.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4EAA4E;AAC5E,4DAA4D;AAE5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,SAAS,EAAsB,MAAM,uBAAuB,CAAC;AAMtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAqBvD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,KAAmB;IACxD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,8EAA8E;IAC9E,MAAM,MAAM,GAAG,KAAK,EAClB,IAAY,EACZ,KAAqB,EACrB,SAA+B,EACb,EAAE,CAAC,CAAC;QACtB,SAAS;QACT,IAAI;QACJ,IAAI,EAAE,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvD,WAAW,EAAE,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC;KACxC,CAAC,CAAC;IACH,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC,CAAC;QACpF,OAAO,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,IAAI,UAAU,CAAC,CAAC;IACpF,CAAC;IACD,4EAA4E;IAC5E,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,UAAU;SACvB,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;SACxD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,sBAAsB,CAAC,MAAM,CAAC,CAAC;IAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC;IAC1C,MAAM,KAAK,GAAG,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACtE,IAAI,QAAQ,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;QAAE,MAAM,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC7F,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,mDAAmD,QAAQ,kBAAkB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACzG,SAAS,EAAE,CAAC,2BAA2B,CAAC;YACxC,OAAO,EAAE,gBAAgB,QAAQ,EAAE;YACnC,IAAI,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE;SAC7E,CAAC,CAAC;IACL,CAAC;IACD,OAAO,MAAM,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,GAAW,EACX,QAAkD,EAClD,EAAc;IAEd,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,KAAK;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACxF,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACrD,IAAI;QACJ,KAAK;QACL,IAAI,EAAE,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;KAClD,CAAC,CAAC,CACJ,CAAC;IACF,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACtE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IAChF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAAE,MAAM,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,KAAwB;IAC7C,OAAO,IAAI,WAAW,CACpB,UAAU,EACV,0BAA0B,EAC1B,wDAAwD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAC1E;QACE,IAAI,EAAE,wEAAwE;QAC9E,SAAS,EAAE;YACT,mBAAmB;YACnB,0BAA0B;YAC1B,+CAA+C;SAChD;KACF,CACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,QAA2B,EAAE;IAC1E,OAAO,IAAI,WAAW,CACpB,WAAW,EACX,qBAAqB,EACrB,GAAG,GAAG,uCAAuC,EAC7C;QACE,IAAI,EAAE,KAAK,CAAC,MAAM;YAChB,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,yDAAyD;YAC1F,CAAC,CAAC,qDAAqD;QACzD,SAAS,EAAE,KAAK,CAAC,MAAM;YACrB,CAAC,CAAC,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;YAC9E,CAAC,CAAC,CAAC,4CAA4C,CAAC;KACnD,CACF,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY,EAAE,KAAwB;IAC9D,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,IAAI,WAAW,CACpB,WAAW,EACX,mBAAmB,EACnB,oCAAoC,IAAI,GAAG,EAC3C;QACE,IAAI,EACF,UAAU,KAAK,SAAS;YACtB,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG;YAChD,CAAC,CAAC,iBAAiB,UAAU,IAAI;QACrC,SAAS,EAAE;YACT,mBAAmB;YACnB,GAAG,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,IAAI,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;SACvC;KACF,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/application/workspace/resolve.ts"],"names":[],"mappings":"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"}