@angelmsger/fx 0.11.0 → 0.13.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 (566) hide show
  1. package/CHANGELOG.md +155 -0
  2. package/README.md +9 -42
  3. package/defaults/tools.yaml +20 -3
  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 +9 -7
  9. package/dist/adapters/ci/github-actions/ci.js.map +1 -1
  10. package/dist/adapters/ci/github-actions/provider.js +2 -2
  11. package/dist/adapters/ci/github-actions/provider.js.map +1 -1
  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/ci/jenkins-cli/recipes.js +5 -1
  15. package/dist/adapters/ci/jenkins-cli/recipes.js.map +1 -1
  16. package/dist/adapters/cluster/kubectl/provider.js +2 -3
  17. package/dist/adapters/cluster/kubectl/provider.js.map +1 -1
  18. package/dist/adapters/code-host/bitbucket-cli/contribution-call.js +5 -27
  19. package/dist/adapters/code-host/bitbucket-cli/contribution-call.js.map +1 -1
  20. package/dist/adapters/code-host/bitbucket-cli/provider.js.map +1 -1
  21. package/dist/adapters/code-host/bitbucket-cli/pull-request-reference.js +1 -19
  22. package/dist/adapters/code-host/bitbucket-cli/pull-request-reference.js.map +1 -1
  23. package/dist/adapters/code-host/bitbucket-cli/pull-request.js +3 -17
  24. package/dist/adapters/code-host/bitbucket-cli/pull-request.js.map +1 -1
  25. package/dist/adapters/code-host/bitbucket-cli/repository-identity.js +1 -4
  26. package/dist/adapters/code-host/bitbucket-cli/repository-identity.js.map +1 -1
  27. package/dist/adapters/code-host/github/contribution.js +179 -0
  28. package/dist/adapters/code-host/github/contribution.js.map +1 -0
  29. package/dist/adapters/code-host/github/import.js +27 -0
  30. package/dist/adapters/code-host/github/import.js.map +1 -0
  31. package/dist/adapters/code-host/github/provider.js +12 -14
  32. package/dist/adapters/code-host/github/provider.js.map +1 -1
  33. package/dist/adapters/code-host/local-git/import.js +2 -2
  34. package/dist/adapters/code-host/local-git/import.js.map +1 -1
  35. package/dist/adapters/code-host/local-git/provider.js +3 -3
  36. package/dist/adapters/code-host/local-git/provider.js.map +1 -1
  37. package/dist/adapters/error-tracker/sentry/client.js +1 -1
  38. package/dist/adapters/error-tracker/sentry/client.js.map +1 -1
  39. package/dist/adapters/family/cli.js +15 -17
  40. package/dist/adapters/family/cli.js.map +1 -1
  41. package/dist/adapters/family/contribution.js +65 -0
  42. package/dist/adapters/family/contribution.js.map +1 -0
  43. package/dist/adapters/family/service-protocol.js +1 -0
  44. package/dist/adapters/family/service-protocol.js.map +1 -1
  45. package/dist/adapters/family/service.js +5 -0
  46. package/dist/adapters/family/service.js.map +1 -1
  47. package/dist/adapters/fs/node-fs.js +5 -8
  48. package/dist/adapters/fs/node-fs.js.map +1 -1
  49. package/dist/adapters/git/run.js +17 -0
  50. package/dist/adapters/git/run.js.map +1 -0
  51. package/dist/adapters/git/system-git.js +36 -16
  52. package/dist/adapters/git/system-git.js.map +1 -1
  53. package/dist/adapters/github/gh.js +1 -1
  54. package/dist/adapters/github/gh.js.map +1 -1
  55. package/dist/adapters/log-store/openobserve-cli/provider.js +1 -1
  56. package/dist/adapters/log-store/openobserve-cli/provider.js.map +1 -1
  57. package/dist/adapters/log-store/openobserve-cli/recipes.js +5 -1
  58. package/dist/adapters/log-store/openobserve-cli/recipes.js.map +1 -1
  59. package/dist/adapters/manifest-source/git-repo.js +38 -18
  60. package/dist/adapters/manifest-source/git-repo.js.map +1 -1
  61. package/dist/adapters/manifest-source/stdin.js +4 -6
  62. package/dist/adapters/manifest-source/stdin.js.map +1 -1
  63. package/dist/adapters/metrics/prometheus-cli/provider.js +1 -1
  64. package/dist/adapters/metrics/prometheus-cli/provider.js.map +1 -1
  65. package/dist/adapters/metrics/prometheus-cli/service.js +9 -1
  66. package/dist/adapters/metrics/prometheus-cli/service.js.map +1 -1
  67. package/dist/adapters/process/deadline-process.js +33 -7
  68. package/dist/adapters/process/deadline-process.js.map +1 -1
  69. package/dist/adapters/process/diagnostic-process.js +2 -3
  70. package/dist/adapters/process/diagnostic-process.js.map +1 -1
  71. package/dist/adapters/registry/registry-policy.js +4 -14
  72. package/dist/adapters/registry/registry-policy.js.map +1 -1
  73. package/dist/application/agent/list.js +12 -0
  74. package/dist/application/agent/list.js.map +1 -1
  75. package/dist/application/agent/pick.js +12 -30
  76. package/dist/application/agent/pick.js.map +1 -1
  77. package/dist/application/agent/workspace-cleanup.js +4 -1
  78. package/dist/application/agent/workspace-cleanup.js.map +1 -1
  79. package/dist/application/config/export.js +3 -2
  80. package/dist/application/config/export.js.map +1 -1
  81. package/dist/application/config/import-registry.js +3 -3
  82. package/dist/application/config/import-registry.js.map +1 -1
  83. package/dist/application/config/import.js +12 -4
  84. package/dist/application/config/import.js.map +1 -1
  85. package/dist/application/config/resolve.js +2 -4
  86. package/dist/application/config/resolve.js.map +1 -1
  87. package/dist/application/contribution/identity.js +3 -3
  88. package/dist/application/contribution/identity.js.map +1 -1
  89. package/dist/application/contribution/push-registered.js +77 -0
  90. package/dist/application/contribution/push-registered.js.map +1 -0
  91. package/dist/application/contribution/push.js +12 -19
  92. package/dist/application/contribution/push.js.map +1 -1
  93. package/dist/application/contribution/validate.js +12 -13
  94. package/dist/application/contribution/validate.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 +20 -12
  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/init/standalone.js +341 -0
  158. package/dist/application/init/standalone.js.map +1 -0
  159. package/dist/application/{doctor/login.js → login/check.js} +22 -43
  160. package/dist/application/login/check.js.map +1 -0
  161. package/dist/application/login/collect.js +2 -1
  162. package/dist/application/login/collect.js.map +1 -1
  163. package/dist/application/login/command-failure.js +2 -0
  164. package/dist/application/login/command-failure.js.map +1 -1
  165. package/dist/application/login/deps.js +2 -3
  166. package/dist/application/login/deps.js.map +1 -1
  167. package/dist/application/login/run.js +149 -54
  168. package/dist/application/login/run.js.map +1 -1
  169. package/dist/application/login/stage.js +146 -0
  170. package/dist/application/login/stage.js.map +1 -0
  171. package/dist/application/login/verify.js +49 -36
  172. package/dist/application/login/verify.js.map +1 -1
  173. package/dist/application/manifest/context.js +5 -1
  174. package/dist/application/manifest/context.js.map +1 -1
  175. package/dist/application/{import.js → manifest/import.js} +34 -27
  176. package/dist/application/manifest/import.js.map +1 -0
  177. package/dist/application/manifest/lint.js +15 -23
  178. package/dist/application/manifest/lint.js.map +1 -1
  179. package/dist/application/manifest/load.js +7 -11
  180. package/dist/application/manifest/load.js.map +1 -1
  181. package/dist/application/manifest/prepare.js +3 -2
  182. package/dist/application/manifest/prepare.js.map +1 -1
  183. package/dist/application/manifest/providers.js +4 -1
  184. package/dist/application/manifest/providers.js.map +1 -1
  185. package/dist/application/{refresh-manifest.js → manifest/refresh.js} +26 -2
  186. package/dist/application/manifest/refresh.js.map +1 -0
  187. package/dist/application/manifest/set.js +2 -1
  188. package/dist/application/manifest/set.js.map +1 -1
  189. package/dist/application/member/list.js +2 -4
  190. package/dist/application/member/list.js.map +1 -1
  191. package/dist/application/member/show.js +2 -3
  192. package/dist/application/member/show.js.map +1 -1
  193. package/dist/application/preparation.js +92 -25
  194. package/dist/application/preparation.js.map +1 -1
  195. package/dist/application/probe-record/index.js +19 -18
  196. package/dist/application/probe-record/index.js.map +1 -1
  197. package/dist/application/probe-record/plan.js +6 -4
  198. package/dist/application/probe-record/plan.js.map +1 -1
  199. package/dist/application/{can.js → readiness/can.js} +23 -11
  200. package/dist/application/readiness/can.js.map +1 -0
  201. package/dist/application/readiness/index.js +22 -35
  202. package/dist/application/readiness/index.js.map +1 -1
  203. package/dist/application/readiness/resolve.js +13 -15
  204. package/dist/application/readiness/resolve.js.map +1 -1
  205. package/dist/application/readiness/verdicts.js +2 -7
  206. package/dist/application/readiness/verdicts.js.map +1 -1
  207. package/dist/application/{where.js → readiness/where.js} +19 -21
  208. package/dist/application/readiness/where.js.map +1 -0
  209. package/dist/application/release/ci.js +1 -1
  210. package/dist/application/release/ci.js.map +1 -1
  211. package/dist/application/release/index.js +12 -17
  212. package/dist/application/release/index.js.map +1 -1
  213. package/dist/application/safety/trust.js +12 -14
  214. package/dist/application/safety/trust.js.map +1 -1
  215. package/dist/application/self/update.js +23 -13
  216. package/dist/application/self/update.js.map +1 -1
  217. package/dist/application/services/command.js +6 -8
  218. package/dist/application/services/command.js.map +1 -1
  219. package/dist/application/services/operation.js +12 -19
  220. package/dist/application/services/operation.js.map +1 -1
  221. package/dist/application/services/recipes.js +7 -2
  222. package/dist/application/services/recipes.js.map +1 -1
  223. package/dist/application/services/stage.js +6 -4
  224. package/dist/application/services/stage.js.map +1 -1
  225. package/dist/application/services/types.js +7 -1
  226. package/dist/application/services/types.js.map +1 -1
  227. package/dist/application/skill/copies.js +13 -22
  228. package/dist/application/skill/copies.js.map +1 -1
  229. package/dist/application/skill/fx-copies.js +1 -1
  230. package/dist/application/skill/fx-copies.js.map +1 -1
  231. package/dist/application/skill/stage.js +24 -26
  232. package/dist/application/skill/stage.js.map +1 -1
  233. package/dist/application/skill/standalone.js +1 -1
  234. package/dist/application/skill/standalone.js.map +1 -1
  235. package/dist/application/skill/targets.js +2 -16
  236. package/dist/application/skill/targets.js.map +1 -1
  237. package/dist/application/skill/tool-skills.js +20 -10
  238. package/dist/application/skill/tool-skills.js.map +1 -1
  239. package/dist/application/sync/checks.js +7 -45
  240. package/dist/application/sync/checks.js.map +1 -1
  241. package/dist/application/sync/index.js +76 -26
  242. package/dist/application/sync/index.js.map +1 -1
  243. package/dist/application/sync/stages.js +33 -26
  244. package/dist/application/sync/stages.js.map +1 -1
  245. package/dist/application/sync/types.js +6 -1
  246. package/dist/application/sync/types.js.map +1 -1
  247. package/dist/application/tool/check.js +8 -0
  248. package/dist/application/tool/check.js.map +1 -1
  249. package/dist/application/tool/history.js +16 -0
  250. package/dist/application/tool/history.js.map +1 -0
  251. package/dist/application/tool/initialize.js +2 -1
  252. package/dist/application/tool/initialize.js.map +1 -1
  253. package/dist/application/tool/install.js +15 -18
  254. package/dist/application/tool/install.js.map +1 -1
  255. package/dist/application/tool/installed.js +1 -1
  256. package/dist/application/tool/installed.js.map +1 -1
  257. package/dist/application/tool/list.js.map +1 -1
  258. package/dist/application/tool/scope.js +8 -7
  259. package/dist/application/tool/scope.js.map +1 -1
  260. package/dist/application/tool/select.js +2 -4
  261. package/dist/application/tool/select.js.map +1 -1
  262. package/dist/application/tool/show.js +6 -1
  263. package/dist/application/tool/show.js.map +1 -1
  264. package/dist/application/tool/toolchain.js +18 -5
  265. package/dist/application/tool/toolchain.js.map +1 -1
  266. package/dist/application/update/check.js +2 -1
  267. package/dist/application/update/check.js.map +1 -1
  268. package/dist/application/workspace/command-operation.js +4 -3
  269. package/dist/application/workspace/command-operation.js.map +1 -1
  270. package/dist/application/{workspace-context.js → workspace/context.js} +26 -19
  271. package/dist/application/workspace/context.js.map +1 -0
  272. package/dist/application/workspace/deps.js +3 -3
  273. package/dist/application/workspace/deps.js.map +1 -1
  274. package/dist/application/workspace/guidance.js +2 -4
  275. package/dist/application/workspace/guidance.js.map +1 -1
  276. package/dist/application/workspace/health.js +4 -2
  277. package/dist/application/workspace/health.js.map +1 -1
  278. package/dist/application/workspace/inspect.js +1 -4
  279. package/dist/application/workspace/inspect.js.map +1 -1
  280. package/dist/application/workspace/manage.js +83 -97
  281. package/dist/application/workspace/manage.js.map +1 -1
  282. package/dist/application/workspace/operation.js +13 -14
  283. package/dist/application/workspace/operation.js.map +1 -1
  284. package/dist/application/workspace/plan.js +2 -1
  285. package/dist/application/workspace/plan.js.map +1 -1
  286. package/dist/application/workspace/registry.js +4 -3
  287. package/dist/application/workspace/registry.js.map +1 -1
  288. package/dist/application/workspace/resolve.js +10 -12
  289. package/dist/application/workspace/resolve.js.map +1 -1
  290. package/dist/application/workspace/resources.js +39 -32
  291. package/dist/application/workspace/resources.js.map +1 -1
  292. package/dist/application/workspace/source-preview.js +6 -3
  293. package/dist/application/workspace/source-preview.js.map +1 -1
  294. package/dist/application/{status.js → workspace/status.js} +51 -6
  295. package/dist/application/workspace/status.js.map +1 -0
  296. package/dist/cli/base.js +28 -29
  297. package/dist/cli/base.js.map +1 -1
  298. package/dist/cli/commands/agent/pick.js +4 -1
  299. package/dist/cli/commands/agent/pick.js.map +1 -1
  300. package/dist/cli/commands/agent/unpick.js +5 -1
  301. package/dist/cli/commands/agent/unpick.js.map +1 -1
  302. package/dist/cli/commands/can.js +5 -21
  303. package/dist/cli/commands/can.js.map +1 -1
  304. package/dist/cli/commands/config/import.js +1 -8
  305. package/dist/cli/commands/config/import.js.map +1 -1
  306. package/dist/cli/commands/doctor.js +2 -1
  307. package/dist/cli/commands/doctor.js.map +1 -1
  308. package/dist/cli/commands/env/pick.js +1 -0
  309. package/dist/cli/commands/env/pick.js.map +1 -1
  310. package/dist/cli/commands/env/select.js +1 -0
  311. package/dist/cli/commands/env/select.js.map +1 -1
  312. package/dist/cli/commands/env/unpick.js +1 -0
  313. package/dist/cli/commands/env/unpick.js.map +1 -1
  314. package/dist/cli/commands/hook/disable.js +1 -0
  315. package/dist/cli/commands/hook/disable.js.map +1 -1
  316. package/dist/cli/commands/hook/enable.js +1 -0
  317. package/dist/cli/commands/hook/enable.js.map +1 -1
  318. package/dist/cli/commands/init.js +40 -14
  319. package/dist/cli/commands/init.js.map +1 -1
  320. package/dist/cli/commands/login.js +13 -2
  321. package/dist/cli/commands/login.js.map +1 -1
  322. package/dist/cli/commands/manifest/import.js +6 -2
  323. package/dist/cli/commands/manifest/import.js.map +1 -1
  324. package/dist/cli/commands/manifest/lint.js +5 -1
  325. package/dist/cli/commands/manifest/lint.js.map +1 -1
  326. package/dist/cli/commands/manifest/record-probe.js +1 -0
  327. package/dist/cli/commands/manifest/record-probe.js.map +1 -1
  328. package/dist/cli/commands/manifest/render.js +1 -0
  329. package/dist/cli/commands/manifest/render.js.map +1 -1
  330. package/dist/cli/commands/manifest/repo-set.js +1 -0
  331. package/dist/cli/commands/manifest/repo-set.js.map +1 -1
  332. package/dist/cli/commands/repo/add.js +1 -0
  333. package/dist/cli/commands/repo/add.js.map +1 -1
  334. package/dist/cli/commands/repo/fork.js +1 -0
  335. package/dist/cli/commands/repo/fork.js.map +1 -1
  336. package/dist/cli/commands/repo/pick.js +1 -0
  337. package/dist/cli/commands/repo/pick.js.map +1 -1
  338. package/dist/cli/commands/repo/remove.js +1 -0
  339. package/dist/cli/commands/repo/remove.js.map +1 -1
  340. package/dist/cli/commands/repo/select.js +1 -0
  341. package/dist/cli/commands/repo/select.js.map +1 -1
  342. package/dist/cli/commands/repo/unpick.js +1 -0
  343. package/dist/cli/commands/repo/unpick.js.map +1 -1
  344. package/dist/cli/commands/selection.js +1 -2
  345. package/dist/cli/commands/selection.js.map +1 -1
  346. package/dist/cli/commands/self/update.js +11 -14
  347. package/dist/cli/commands/self/update.js.map +1 -1
  348. package/dist/cli/commands/source/push.js +14 -13
  349. package/dist/cli/commands/source/push.js.map +1 -1
  350. package/dist/cli/commands/status.js +6 -36
  351. package/dist/cli/commands/status.js.map +1 -1
  352. package/dist/cli/commands/sync.js +7 -5
  353. package/dist/cli/commands/sync.js.map +1 -1
  354. package/dist/cli/commands/tool/history.js +2 -2
  355. package/dist/cli/commands/tool/history.js.map +1 -1
  356. package/dist/cli/commands/where.js +2 -1
  357. package/dist/cli/commands/where.js.map +1 -1
  358. package/dist/cli/commands/workspace/rebind.js +1 -4
  359. package/dist/cli/commands/workspace/rebind.js.map +1 -1
  360. package/dist/cli/completion.js +2 -4
  361. package/dist/cli/completion.js.map +1 -1
  362. package/dist/cli/hook-command.js +2 -2
  363. package/dist/cli/hook-command.js.map +1 -1
  364. package/dist/cli/main.js +4 -3
  365. package/dist/cli/main.js.map +1 -1
  366. package/dist/cli/notices.js +26 -24
  367. package/dist/cli/notices.js.map +1 -1
  368. package/dist/cli/preparation-view.js +226 -51
  369. package/dist/cli/preparation-view.js.map +1 -1
  370. package/dist/cli/render/exceptional.js +11 -4
  371. package/dist/cli/render/exceptional.js.map +1 -1
  372. package/dist/cli/render/fields.js +1 -3
  373. package/dist/cli/render/fields.js.map +1 -1
  374. package/dist/cli/render/human.js +1 -3
  375. package/dist/cli/render/human.js.map +1 -1
  376. package/dist/cli/render/index.js +1 -1
  377. package/dist/cli/render/index.js.map +1 -1
  378. package/dist/cli/render/status-line.js +17 -3
  379. package/dist/cli/render/status-line.js.map +1 -1
  380. package/dist/cli/render/tone.js +29 -10
  381. package/dist/cli/render/tone.js.map +1 -1
  382. package/dist/cli/tool-command.js +4 -11
  383. package/dist/cli/tool-command.js.map +1 -1
  384. package/dist/cli/workspace-write-policy.js +8 -33
  385. package/dist/cli/workspace-write-policy.js.map +1 -1
  386. package/dist/composition/agent-cleanup.js +5 -1
  387. package/dist/composition/agent-cleanup.js.map +1 -1
  388. package/dist/composition/bundled.js +4 -1
  389. package/dist/composition/bundled.js.map +1 -1
  390. package/dist/composition/command-wiring.js +55 -96
  391. package/dist/composition/command-wiring.js.map +1 -1
  392. package/dist/composition/container.js +25 -20
  393. package/dist/composition/container.js.map +1 -1
  394. package/dist/composition/contributions.js +26 -71
  395. package/dist/composition/contributions.js.map +1 -1
  396. package/dist/composition/harness.js +3 -4
  397. package/dist/composition/harness.js.map +1 -1
  398. package/dist/composition/hook-entry.js +2 -1
  399. package/dist/composition/hook-entry.js.map +1 -1
  400. package/dist/composition/hook-wiring.js +8 -16
  401. package/dist/composition/hook-wiring.js.map +1 -1
  402. package/dist/composition/hook-worker.js +9 -11
  403. package/dist/composition/hook-worker.js.map +1 -1
  404. package/dist/composition/hooks.js +6 -3
  405. package/dist/composition/hooks.js.map +1 -1
  406. package/dist/composition/import.js +8 -6
  407. package/dist/composition/import.js.map +1 -1
  408. package/dist/composition/manifest-edit.js +1 -2
  409. package/dist/composition/manifest-edit.js.map +1 -1
  410. package/dist/composition/manifest-sources.js +3 -16
  411. package/dist/composition/manifest-sources.js.map +1 -1
  412. package/dist/composition/probe-record.js +1 -2
  413. package/dist/composition/probe-record.js.map +1 -1
  414. package/dist/composition/refresh.js +1 -1
  415. package/dist/composition/refresh.js.map +1 -1
  416. package/dist/composition/registry.js +8 -37
  417. package/dist/composition/registry.js.map +1 -1
  418. package/dist/composition/tool-install.js +5 -1
  419. package/dist/composition/tool-install.js.map +1 -1
  420. package/dist/composition/tool-inventory.js +10 -1
  421. package/dist/composition/tool-inventory.js.map +1 -1
  422. package/dist/composition/trace.js +3 -4
  423. package/dist/composition/trace.js.map +1 -1
  424. package/dist/composition/update.js +12 -1
  425. package/dist/composition/update.js.map +1 -1
  426. package/dist/composition/workspace-management.js +8 -2
  427. package/dist/composition/workspace-management.js.map +1 -1
  428. package/dist/domain/config/codec.js +2 -1
  429. package/dist/domain/config/codec.js.map +1 -1
  430. package/dist/domain/config/profile.js +0 -1
  431. package/dist/domain/config/profile.js.map +1 -1
  432. package/dist/domain/contribution/pull-request.js +12 -1
  433. package/dist/domain/contribution/pull-request.js.map +1 -1
  434. package/dist/domain/contribution/selection.js +4 -8
  435. package/dist/domain/contribution/selection.js.map +1 -1
  436. package/dist/domain/errors.js +10 -3
  437. package/dist/domain/errors.js.map +1 -1
  438. package/dist/domain/fuzzy.js +6 -1
  439. package/dist/domain/fuzzy.js.map +1 -1
  440. package/dist/domain/harness/actions.js +60 -0
  441. package/dist/domain/harness/actions.js.map +1 -0
  442. package/dist/domain/harness/deadlines.js +14 -0
  443. package/dist/domain/harness/deadlines.js.map +1 -0
  444. package/dist/domain/harness/hooks.js +8 -0
  445. package/dist/domain/harness/hooks.js.map +1 -1
  446. package/dist/domain/harness/session-start.js +2 -1
  447. package/dist/domain/harness/session-start.js.map +1 -1
  448. package/dist/domain/harness/state-recovery.js.map +1 -1
  449. package/dist/domain/import/infer.js +2 -9
  450. package/dist/domain/import/infer.js.map +1 -1
  451. package/dist/domain/lease.js +30 -0
  452. package/dist/domain/lease.js.map +1 -0
  453. package/dist/domain/manifest/decode.js +5 -8
  454. package/dist/domain/manifest/decode.js.map +1 -1
  455. package/dist/domain/manifest/document.js +3 -5
  456. package/dist/domain/manifest/document.js.map +1 -1
  457. package/dist/domain/manifest/editor.js +3 -7
  458. package/dist/domain/manifest/editor.js.map +1 -1
  459. package/dist/domain/manifest/explain.js +2 -4
  460. package/dist/domain/manifest/explain.js.map +1 -1
  461. package/dist/domain/manifest/issues.js +2 -2
  462. package/dist/domain/manifest/issues.js.map +1 -1
  463. package/dist/domain/manifest/loader.js +2 -1
  464. package/dist/domain/manifest/loader.js.map +1 -1
  465. package/dist/domain/manifest/overlay.js +6 -9
  466. package/dist/domain/manifest/overlay.js.map +1 -1
  467. package/dist/domain/manifest/providers.js +34 -2
  468. package/dist/domain/manifest/providers.js.map +1 -1
  469. package/dist/domain/manifest/quarantine.js +21 -1
  470. package/dist/domain/manifest/quarantine.js.map +1 -1
  471. package/dist/domain/manifest/reflect.js +2 -31
  472. package/dist/domain/manifest/reflect.js.map +1 -1
  473. package/dist/domain/manifest/rules/harness.js +2 -16
  474. package/dist/domain/manifest/rules/harness.js.map +1 -1
  475. package/dist/domain/manifest/rules/tools.js +1 -0
  476. package/dist/domain/manifest/rules/tools.js.map +1 -1
  477. package/dist/domain/manifest/service.schema.js +5 -14
  478. package/dist/domain/manifest/service.schema.js.map +1 -1
  479. package/dist/domain/manifest/skill-frontmatter.js +1 -1
  480. package/dist/domain/manifest/skill-frontmatter.js.map +1 -1
  481. package/dist/domain/manifest/tools.schema.js +6 -0
  482. package/dist/domain/manifest/tools.schema.js.map +1 -1
  483. package/dist/domain/manifest/types.js.map +1 -1
  484. package/dist/domain/outcome.js +5 -0
  485. package/dist/domain/outcome.js.map +1 -0
  486. package/dist/domain/path.js +9 -1
  487. package/dist/domain/path.js.map +1 -1
  488. package/dist/domain/preparation.js.map +1 -1
  489. package/dist/domain/projection.js +8 -0
  490. package/dist/domain/projection.js.map +1 -0
  491. package/dist/domain/public-url.js +22 -0
  492. package/dist/domain/public-url.js.map +1 -0
  493. package/dist/domain/release/ci.js +19 -8
  494. package/dist/domain/release/ci.js.map +1 -1
  495. package/dist/domain/report.js +1 -1
  496. package/dist/domain/report.js.map +1 -1
  497. package/dist/domain/setup/names.js +23 -0
  498. package/dist/domain/setup/names.js.map +1 -0
  499. package/dist/domain/setup/planner.js +24 -22
  500. package/dist/domain/setup/planner.js.map +1 -1
  501. package/dist/domain/setup/progress.js +57 -0
  502. package/dist/domain/setup/progress.js.map +1 -0
  503. package/dist/domain/setup/types.js +5 -0
  504. package/dist/domain/setup/types.js.map +1 -1
  505. package/dist/domain/shell.js +0 -7
  506. package/dist/domain/shell.js.map +1 -1
  507. package/dist/domain/skills/frontmatter.js +1 -1
  508. package/dist/domain/skills/frontmatter.js.map +1 -1
  509. package/dist/domain/skills/projection.js +2 -3
  510. package/dist/domain/skills/projection.js.map +1 -1
  511. package/dist/domain/sync-selection.js +2 -4
  512. package/dist/domain/sync-selection.js.map +1 -1
  513. package/dist/domain/toolchain/resolve.js +30 -16
  514. package/dist/domain/toolchain/resolve.js.map +1 -1
  515. package/dist/domain/toolchain/select.js +15 -9
  516. package/dist/domain/toolchain/select.js.map +1 -1
  517. package/dist/domain/toolchain/stderr.js +34 -14
  518. package/dist/domain/toolchain/stderr.js.map +1 -1
  519. package/dist/domain/values.js +18 -2
  520. package/dist/domain/values.js.map +1 -1
  521. package/dist/domain/workspace/commits.js +5 -0
  522. package/dist/domain/workspace/commits.js.map +1 -1
  523. package/dist/domain/workspace/operation-journal.js +93 -0
  524. package/dist/domain/workspace/operation-journal.js.map +1 -0
  525. package/dist/domain/workspace/plan.js +17 -1
  526. package/dist/domain/workspace/plan.js.map +1 -1
  527. package/dist/infra/config-store.js +8 -13
  528. package/dist/infra/config-store.js.map +1 -1
  529. package/dist/infra/contribution-store.js +21 -67
  530. package/dist/infra/contribution-store.js.map +1 -1
  531. package/dist/infra/harness-state.js +21 -49
  532. package/dist/infra/harness-state.js.map +1 -1
  533. package/dist/infra/local-store.js +8 -15
  534. package/dist/infra/local-store.js.map +1 -1
  535. package/dist/infra/owned-journal.js +57 -0
  536. package/dist/infra/owned-journal.js.map +1 -0
  537. package/dist/infra/projection-store.js +4 -3
  538. package/dist/infra/projection-store.js.map +1 -1
  539. package/dist/infra/tool-history.js +19 -49
  540. package/dist/infra/tool-history.js.map +1 -1
  541. package/dist/infra/trust-store.js +2 -9
  542. package/dist/infra/trust-store.js.map +1 -1
  543. package/dist/infra/workspace-home.js +7 -1
  544. package/dist/infra/workspace-home.js.map +1 -1
  545. package/dist/ports/ci.js +2 -1
  546. package/dist/ports/ci.js.map +1 -1
  547. package/package.json +1 -1
  548. package/skills/fx-workspace/SKILL.md +7 -8
  549. package/skills/fx-workspace/references/commands.md +39 -27
  550. package/skills/fx-workspace/references/initialization.md +17 -0
  551. package/skills/fx-workspace/references/workspace-tasks.md +6 -7
  552. package/dist/application/can.js.map +0 -1
  553. package/dist/application/doctor/login.js.map +0 -1
  554. package/dist/application/import.js.map +0 -1
  555. package/dist/application/init/setup.js +0 -125
  556. package/dist/application/init/setup.js.map +0 -1
  557. package/dist/application/preview-initialization.js +0 -41
  558. package/dist/application/preview-initialization.js.map +0 -1
  559. package/dist/application/refresh-manifest.js.map +0 -1
  560. package/dist/application/refresh-workspace-manifest.js +0 -27
  561. package/dist/application/refresh-workspace-manifest.js.map +0 -1
  562. package/dist/application/status.js.map +0 -1
  563. package/dist/application/where.js.map +0 -1
  564. package/dist/application/workspace-context.js.map +0 -1
  565. package/dist/domain/deadline.js +0 -17
  566. package/dist/domain/deadline.js.map +0 -1
@@ -0,0 +1,57 @@
1
+ // The protocol the owned journals share. A journal is a single-link regular
2
+ // file below directories that are not foreign; a write holds the store's lease,
3
+ // re-reads the file to confirm it is still the store's own, and flushes it
4
+ // around the rename. Each store keeps its codec, lease and error contract.
5
+ import { promises as fs } from 'node:fs';
6
+ import path from 'node:path';
7
+ import { withLease } from '../domain/lease.js';
8
+ import { writeAtomicFile } from './atomic-file.js';
9
+ import { assertStoreParents } from './store-parents.js';
10
+ export class OwnedJournal {
11
+ spec;
12
+ constructor(spec) {
13
+ this.spec = spec;
14
+ }
15
+ async read() {
16
+ const { home, file, decode, invalid } = this.spec;
17
+ await assertStoreParents(home, file, invalid);
18
+ try {
19
+ const stat = await fs.lstat(file);
20
+ if (!stat.isFile() || stat.nlink !== 1)
21
+ throw invalid();
22
+ return decode(JSON.parse(await fs.readFile(file, 'utf8')));
23
+ }
24
+ catch (error) {
25
+ if (error.code === 'ENOENT')
26
+ return undefined;
27
+ throw invalid();
28
+ }
29
+ }
30
+ // The value is refused before anything is locked or created.
31
+ async replace(next) {
32
+ const text = this.encode(next);
33
+ await this.commit(() => text);
34
+ }
35
+ async update(change) {
36
+ await this.commit((current) => this.encode(change(current)));
37
+ }
38
+ async commit(textFor) {
39
+ const { home, file, lock, lease, invalid, busy } = this.spec;
40
+ await assertStoreParents(home, file, invalid);
41
+ await withLease(lock, lease, busy, async () => {
42
+ const text = textFor(await this.read());
43
+ await fs.mkdir(path.dirname(file), { recursive: true, mode: 0o700 });
44
+ await assertStoreParents(home, file, invalid);
45
+ await writeAtomicFile(file, text, { durable: true });
46
+ });
47
+ }
48
+ encode(value) {
49
+ try {
50
+ return this.spec.encode(value);
51
+ }
52
+ catch {
53
+ throw this.spec.invalid();
54
+ }
55
+ }
56
+ }
57
+ //# sourceMappingURL=owned-journal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owned-journal.js","sourceRoot":"","sources":["../../src/infra/owned-journal.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,8 @@ import { randomUUID } from 'node:crypto';
5
5
  import { promises as fs } from 'node:fs';
6
6
  import path from 'node:path';
7
7
  import { asDevkitError } from '../domain/errors.js';
8
- import { isAtOrInside, pathKey, samePath } from '../domain/path.js';
8
+ import { projectionLeaseKey } from '../domain/lease.js';
9
+ import { isAtOrInside, samePath } from '../domain/path.js';
9
10
  import { writeAtomicFile } from './atomic-file.js';
10
11
  export class FileProjectionStore {
11
12
  lock;
@@ -48,7 +49,7 @@ export class FileProjectionStore {
48
49
  if (input.before.kind !== 'link')
49
50
  return 'conflict';
50
51
  const file = path.resolve(input.root, input.relative);
51
- const lease = await this.lock.acquire({ key: `projection:${pathKey(file)}`, waitMs: 0 });
52
+ const lease = await this.lock.acquire({ key: projectionLeaseKey(file), waitMs: 0 });
52
53
  if (!lease)
53
54
  return 'busy';
54
55
  try {
@@ -76,7 +77,7 @@ export class FileProjectionStore {
76
77
  if (input.before.text === input.text)
77
78
  return 'unchanged';
78
79
  const file = path.resolve(input.root, input.relative);
79
- const lease = await this.lock.acquire({ key: `projection:${pathKey(file)}`, waitMs: 0 });
80
+ const lease = await this.lock.acquire({ key: projectionLeaseKey(file), waitMs: 0 });
80
81
  if (!lease)
81
82
  return 'busy';
82
83
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"projection-store.js","sourceRoot":"","sources":["../../src/infra/projection-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projection-store.js","sourceRoot":"","sources":["../../src/infra/projection-store.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,9 @@
1
1
  // A versioned personal ledger preserves every checkpoint under an atomic, locked append.
2
2
  // Invalid or foreign files fail closed, so installation cannot silently lose its audit trail.
3
- import { promises as fs } from 'node:fs';
4
3
  import path from 'node:path';
5
4
  import * as z from 'zod';
6
5
  import { busyError, DevkitError } from '../domain/errors.js';
7
- import { writeAtomicFile } from './atomic-file.js';
6
+ import { OwnedJournal } from './owned-journal.js';
8
7
  const entry = {
9
8
  id: z.string().uuid(),
10
9
  at: z.string().datetime(),
@@ -30,58 +29,29 @@ const ledger = (object) => object({
30
29
  const written = ledger(z.strictObject);
31
30
  const read = ledger(z.object);
32
31
  export class FileToolHistoryStore {
33
- home;
34
- lock;
32
+ ledger;
35
33
  constructor(home, lock) {
36
- this.home = home;
37
- this.lock = lock;
34
+ this.ledger = new OwnedJournal({
35
+ home,
36
+ file: path.join(home, 'tool-history.json'),
37
+ lock,
38
+ lease: { key: 'tool-history', waitMs: 2000 },
39
+ encode: (value) => `${JSON.stringify(written.parse(value))}\n`,
40
+ decode: (document) => read.parse(document),
41
+ invalid,
42
+ busy: () => busyError('TOOL_HISTORY_BUSY', 'The tool history', {
43
+ nextSteps: ['Retry after the other tool operation finishes.'],
44
+ }),
45
+ });
38
46
  }
39
47
  async read() {
40
- await this.checkHome();
41
- try {
42
- const stat = await fs.lstat(this.file());
43
- if (!stat.isFile() || stat.nlink !== 1)
44
- throw invalid();
45
- return read.parse(JSON.parse(await fs.readFile(this.file(), 'utf8'))).entries;
46
- }
47
- catch (error) {
48
- if (error.code === 'ENOENT')
49
- return [];
50
- throw invalid();
51
- }
48
+ return (await this.ledger.read())?.entries ?? [];
52
49
  }
53
50
  async append(entry) {
54
- await this.checkHome();
55
- const lease = await this.lock.acquire({ key: 'tool-history', waitMs: 2000 });
56
- if (!lease)
57
- throw busyError('TOOL_HISTORY_BUSY', 'The tool history', {
58
- nextSteps: ['Retry after the other tool operation finishes.'],
59
- });
60
- try {
61
- const entries = [...(await this.read()), entry];
62
- const parsed = written.safeParse({ owner: 'fx:tool-history:v2', entries });
63
- if (!parsed.success)
64
- throw invalid();
65
- await fs.mkdir(this.home, { recursive: true, mode: 0o700 });
66
- await this.checkHome();
67
- await writeAtomicFile(this.file(), JSON.stringify(parsed.data) + '\n', { durable: true });
68
- }
69
- finally {
70
- await lease.release();
71
- }
72
- }
73
- file() {
74
- return path.join(this.home, 'tool-history.json');
75
- }
76
- async checkHome() {
77
- try {
78
- if (!(await fs.lstat(this.home)).isDirectory())
79
- throw invalid();
80
- }
81
- catch (error) {
82
- if (error.code !== 'ENOENT')
83
- throw invalid();
84
- }
51
+ await this.ledger.update((current) => ({
52
+ owner: 'fx:tool-history:v2',
53
+ entries: [...(current?.entries ?? []), entry],
54
+ }));
85
55
  }
86
56
  }
87
57
  function invalid() {
@@ -1 +1 @@
1
- {"version":3,"file":"tool-history.js","sourceRoot":"","sources":["../../src/infra/tool-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-history.js","sourceRoot":"","sources":["../../src/infra/tool-history.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ import { promises as fs } from 'node:fs';
4
4
  import path from 'node:path';
5
5
  import { parse, stringify } from 'yaml';
6
6
  import { busyError } from '../domain/errors.js';
7
+ import { withLease } from '../domain/lease.js';
7
8
  import { writeAtomicFile } from './atomic-file.js';
8
9
  export class FileTrustStore {
9
10
  home;
@@ -27,15 +28,7 @@ export class FileTrustStore {
27
28
  return operation;
28
29
  }
29
30
  async record(workspace, fingerprint, label) {
30
- const lease = await this.lock.acquire({ key: this.path(), waitMs: 2000 });
31
- if (lease === null)
32
- throw busyError('LOCK_BUSY', 'The trust record');
33
- try {
34
- await this.writeRecord(workspace, fingerprint, label);
35
- }
36
- finally {
37
- await lease.release();
38
- }
31
+ await withLease(this.lock, { key: this.path(), waitMs: 2000 }, () => busyError('LOCK_BUSY', 'The trust record'), () => this.writeRecord(workspace, fingerprint, label));
39
32
  }
40
33
  async writeRecord(workspace, fingerprint, label) {
41
34
  const file = await this.read();
@@ -1 +1 @@
1
- {"version":3,"file":"trust-store.js","sourceRoot":"","sources":["../../src/infra/trust-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trust-store.js","sourceRoot":"","sources":["../../src/infra/trust-store.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,13 @@ export function localLayerPath(home, name) {
8
8
  export function manifestSourceDir(home, name) {
9
9
  return path.join(workspaceHome(home, name), 'source');
10
10
  }
11
- function workspaceHome(home, name) {
11
+ export function harnessStatePath(home, name) {
12
+ return path.join(workspaceHome(home, name), 'harness.json');
13
+ }
14
+ export function contributionJournalPath(home, name) {
15
+ return path.join(workspaceHome(home, name), 'contributions.json');
16
+ }
17
+ export function workspaceHome(home, name) {
12
18
  assertWorkspaceName(name);
13
19
  return path.join(home, 'workspaces', name);
14
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"workspace-home.js","sourceRoot":"","sources":["../../src/infra/workspace-home.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAE5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAY;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,SAAS,aAAa,CAAC,IAAY,EAAE,IAAY;IAC/C,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"workspace-home.js","sourceRoot":"","sources":["../../src/infra/workspace-home.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4DAA4D;AAE5D,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAElE,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IACvD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,IAAY;IAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAAY;IACzD,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,cAAc,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,IAAY,EAAE,IAAY;IAChE,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,oBAAoB,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY,EAAE,IAAY;IACtD,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC"}
package/dist/ports/ci.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // Where builds run: a platform that can also say how a job's last build
2
- // went. `release` asks it that, and nothing else.
2
+ // went, and which commit it built when the platform records that. `release`
3
+ // asks it that, and nothing else.
3
4
  export {};
4
5
  //# sourceMappingURL=ci.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/ports/ci.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,kDAAkD"}
1
+ {"version":3,"file":"ci.js","sourceRoot":"","sources":["../../src/ports/ci.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,4EAA4E;AAC5E,kCAAkC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@angelmsger/fx",
3
- "version": "0.11.0",
3
+ "version": "0.13.0",
4
4
  "description": "Manifest-driven multi-repository workspaces for people and coding agents",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: fx-workspace
3
- version: 0.11.0
3
+ version: 0.13.0
4
4
  description: 'Use only when the user explicitly asks for the fx workspace CLI or manifest, or the current task is inside an fx-managed workspace or routed by its fx-derived AGENTS.md. Drive workspace init and sync, repository status and selection, manifest validation and editing, companion tools and login, doctor, agent Skills, repository ownership, environment coordinates and readiness through can/where, and release checks across dependencies, branches, builds and errors. Do not use for generic Sentry, OpenObserve, Jenkins, Kubernetes, logs, errors or builds outside an fx-managed workspace.'
5
5
  metadata:
6
6
  requires:
@@ -20,15 +20,14 @@ identify the instructions shipped with this version.
20
20
 
21
21
  Choose the guide for the user's task:
22
22
 
23
- | Task | Guide |
24
- | --------------------------------------------------------------------------------------------- | ------------------------------------------------ |
25
- | Prepare a workspace from a manifest, or resume unfinished preparation | [Initialization](references/initialization.md) |
26
- | Query, synchronize or maintain an existing workspace; route a service task; edit the manifest | [Workspace tasks](references/workspace-tasks.md) |
27
- | Interpret a particular response field or advanced recovery contract | [Response contracts](references/commands.md) |
23
+ | Task | Guide |
24
+ | --------------------------------------------------------------------------------------------------------- | ------------------------------------------------ |
25
+ | Prepare a workspace from a manifest, set up companion tools without one, or resume unfinished preparation | [Initialization](references/initialization.md) |
26
+ | Query, synchronize or maintain an existing workspace; route a service task; edit the manifest | [Workspace tasks](references/workspace-tasks.md) |
27
+ | Interpret a particular response field or advanced recovery contract | [Response contracts](references/commands.md) |
28
28
 
29
29
  For initialization, the source and target directory are sufficient. Follow the
30
30
  initialization guide and `preparation.next`; it already includes verification.
31
31
  Continue the user's original task on `complete`, or hand off the named missing
32
32
  prerequisites. A list of other fx capabilities is not an initialization checklist.
33
- No Skill-loaded declaration is needed for initialization. Read the other guides
34
- only when that task or a specific failure needs them.
33
+ Read the other guides only when that task or a specific failure needs them.
@@ -18,7 +18,8 @@ not pagination. All warning/failure rows and exact pending command vectors remai
18
18
  `--details` returns the full application result; explicit `--fields` projects it.
19
19
  Explicit report projection applies in every format: JSON/NDJSON emit one object;
20
20
  human output emits selected key/value pairs. Dotted paths retain flat keys and
21
- array alignment. Without explicit fields, human/NDJSON defaults are unchanged.
21
+ array alignment. Only JSON is summarized: without explicit fields, human output
22
+ keeps its own view and NDJSON carries the complete result.
22
23
  Fact-query projections still apply per item and retain collection metadata. Error envelopes are never
23
24
  projected or compacted.
24
25
 
@@ -31,7 +32,9 @@ Initialization summaries retain selected repository, guide and Skill outcomes,
31
32
  along with setup results, so callers can verify effects without extra discovery.
32
33
  The setup stage retains completed outcomes in summary mode so callers do not
33
34
  repeat local side effects while another step needs human input.
34
- Only required blockers prevent readiness. Actions contain `actor`, `id`, `description`,
35
+ Only required blockers prevent readiness. A blocker may carry `cause` (`credential`,
36
+ `permission`, `network`) and `waits_on`, the blocker it waited on unchecked; resolve
37
+ that one first. Actions contain `actor`, `id`, `description`,
35
38
  `argv`, `cwd` and `requires_approval`, with optional `env` coordinates for the
36
39
  current configuration/home and Agent selection. Preserve these values and use
37
40
  the returned exact executable. Credentials are never included.
@@ -42,9 +45,8 @@ retains existing selection and work.
42
45
 
43
46
  `self info.bundled_skill_version` identifies the instructions shipped with the
44
47
  running executable. `skill status` reports `embedded_version`, installation
45
- versions and `activation: unverified`. Installation or an environment declaration
46
- cannot establish native host activation. Commands do not require a Skill-loaded
47
- handshake; load the bundled task guide when the task needs it.
48
+ versions and `activation: unverified`. Installation cannot establish native host
49
+ activation. Load the bundled task guide when the task needs it.
48
50
 
49
51
  `SKILL_WRITE_DENIED` keeps denied filesystem paths and partial stage evidence.
50
52
  Check access before repeating writes. To continue local repository/guide work,
@@ -61,7 +63,7 @@ management; these preserve business checkouts and respect owned-resource cleanup
61
63
 
62
64
  `repo select` / `env select` replace a personal collection. `--all` removes its
63
65
  explicit scope and follows future shared entries; `--none` stores an empty set.
64
- `pick/unpick` retain additive/removal semantics. Selection output reports modes
66
+ `pick/unpick` add or remove individual names. Selection output reports modes
65
67
  and next steps; repository selection is separate from downloading via sync.
66
68
 
67
69
  `status` keeps `{items, has_more}` and adds workspace/root/selection context,
@@ -157,7 +159,7 @@ same ambiguous setup. Doctor marks its missing verification as incomplete.
157
159
  `fx doctor` returns `preparation`, diagnostic `coverage` (`complete` or `incomplete`),
158
160
  `summary {ok, warn, fail}` and `findings[]`. The preparation verdict owns task completion;
159
161
  optional host activation can remain unverified. An incomplete verdict exits 12.
160
- `fx release check` retains `ok`, `complete`, summary and findings and exits zero when its
162
+ `fx release check` returns `ok`, `complete`, summary and findings and exits zero when its
161
163
  checklist was produced. Findings carry group, id, level, coverage, message, fix and
162
164
  handoff; full results also carry evidence. `repos[]` says what each release would ship,
163
165
  in summaries too. For `can`, inspect its capability status.
@@ -200,12 +202,14 @@ Evidence is grouped by check:
200
202
  | -------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
201
203
  | `merge` | `source`, `target`, `ahead[]`, `behind[]`, `filtered`, `unknown[]` directions; commits have `sha`, `author {id, name}`, `date`, `message` |
202
204
  | `deps` | `file`, `offending[] {name, version, section, runtime}` |
203
- | `ci` | `builds[] {side, env, branch, path, number, status, started_at, url, head, current}`; null `path` means no declared job |
205
+ | `ci` | `builds[] {side, env, branch, path, number, status, started_at, url, commit, head, current}`; null `path` means no declared job |
204
206
  | `errors` | `env`, `slug`, `since`, `capped`, `undated`, `issues[] {short_id, title, level, first_seen, last_seen, count, url}` |
205
207
 
206
- CI `current` compares build start time with the time of the branch head `head`. The CI
207
- result has no built-commit field, so it is a freshness heuristic, not revision verification.
208
- Use the companion's SCM/build details when the task requires an exact commit match.
208
+ CI `current` compares the commit the build checked out, `commit`, with the branch head
209
+ `head` when the platform names it. A null `commit` (Jenkins before jenkins-cli 0.12.0)
210
+ falls back to comparing the build's start time with the head commit's time, which is a
211
+ freshness heuristic, not revision verification; use the companion's build details then
212
+ when the task requires an exact commit match.
209
213
  The full report's merge/dependency/issue evidence is available with `--details`.
210
214
 
211
215
  Uncovered explicit repositories yield `REPO_NOT_COVERED`, unmatched tags
@@ -232,11 +236,11 @@ loaded performs no update check.
232
236
  is optional `FX_REGISTRY`, npm's package-scope setting, then npm's default setting.
233
237
  Discovery uses global mode, honoring user/global config and `NPM_CONFIG_USERCONFIG`
234
238
  while excluding project npmrc. Invalid chosen settings remain unresolved; internal
235
- packages never fall back to a public Registry. Historical tarball URLs are not used
236
- to guess Registry APIs. Metadata authentication is delegated to npm; the existing
237
- private `FX_REGISTRY_TOKEN` override remains supported when paired with explicit
238
- `FX_REGISTRY`; it is not applied to an inferred target. Self-update pins only the
239
- fx package scope, preserving npm's default route for other dependencies.
239
+ packages never fall back to a public Registry, while the public package falls back
240
+ to npmjs. Historical tarball URLs are not used to guess Registry APIs. Metadata
241
+ authentication is delegated to npm; the private `FX_REGISTRY_TOKEN` override applies
242
+ only with an explicit `FX_REGISTRY`, never to an inferred target. Self-update pins
243
+ only the fx package scope, preserving npm's default route for other dependencies.
240
244
 
241
245
  ### Initialization and synchronization
242
246
 
@@ -256,8 +260,8 @@ hook and MCP `items` where those stages ran. Rules rows are nested under
256
260
  `stage_details.docs.rules.items`. Skill tool rows retain exit `code`, a concise
257
261
  `note`, and the companion's structured `failure` when supplied. `code: null`
258
262
  means no exit result is available; consult item status and `ran` where supplied.
259
- A dry run executes no command, but an interrupted process may also lack an exit result. `stages` keeps its existing
260
- counter shape; details supplement those counts rather than replacing them.
263
+ A dry run executes no command, but an interrupted process may also lack an exit result.
264
+ `stages` holds the counts; `stage_details` holds the rows behind them.
261
265
  `fx init` nests this result under `sync`; its `written` field confirms local
262
266
  registration work, not complete synchronization or readiness.
263
267
 
@@ -277,7 +281,10 @@ plus workspace/root, the effective enabled setting, and dated observations.
277
281
  `activation: unverified` means native trust/execution has not been established;
278
282
  a matching projection alone is not readiness. An observation whose code is
279
283
  `HOOK_PHASE_UNREPORTED` names a background phase that never answered, so its
280
- absence of findings is unknown rather than clean; run its `command` to find out. `fx hook enable [--dry-run]`
284
+ absence of findings is unknown rather than clean; run its `command` to find out.
285
+ `LOGIN_UNCHECKED` likewise says every login check that did not pass was not asked or
286
+ gave no answer in the background run's time, the incomplete coverage `fx doctor`
287
+ reports; it asks for no sign-in. `fx hook enable [--dry-run]`
281
288
  enables this workspace and projects selected hosts. `fx hook disable [--dry-run]`
282
289
  disables it and removes owned entries. Global `hooks` / `FX_HOOKS` gates all
283
290
  workspaces; local `hooks.enabled` gates one. `agent unpick` remains global and
@@ -317,9 +324,8 @@ is not applicable. Use `sync --only mcp` for projection and `doctor` for repair.
317
324
  `skill path` uses the collection envelope. Each row has an optional `agent`, `path`,
318
325
  `status` (`installed`, `not_installed`, `foreign`), `version` (nullable) and
319
326
  `version_state` (`matching`, `older`, `newer`, `unknown`, `missing`). `skill status`
320
- returns `loaded`, `loaded_env`, `loaded_version`, `version_env`, `version_verified`,
321
- `embedded_version`, `installs` and `next`. The declared loaded flag and declared
322
- version are separate; neither proves reading. Neither command needs a workspace.
327
+ returns `embedded_version`, `activation: unverified` and `installs`, which holds the
328
+ same rows. Neither command needs a workspace.
323
329
 
324
330
  Install/uninstall detect agents in the selected scope by default; `--agent`
325
331
  accepts repeated or comma-separated IDs. Path/status list all known agents unless
@@ -394,12 +400,16 @@ These bundled service commands need no trust approval. Vectors the team's
394
400
  `--list` includes plan problems even with `--quiet`. If a step needs human input
395
401
  or a later step throws, read the partial result on stdout as well as the error
396
402
  on stderr. Results distinguish `handoff`, `blocked`, `failed` and `not_started`;
397
- completed steps remain visible. Handoff rows include the required action, and
398
- service preparation rows retain available `failure` and `next_steps` fields.
403
+ completed steps remain visible. After a sign-in, the same tool's earlier `failed` rows
404
+ are checked again and `blocked` ones whose prerequisite now passes are attempted. A
405
+ row passing on recheck is `verified` with a `detail` naming the sign-in; one still
406
+ failing keeps its result and adds `recheck` (`after`, `detail`, optional `code`).
407
+ Handoff rows include the required action, and service preparation rows retain
408
+ available `failure` and `next_steps` fields.
399
409
  After resolving the blocker, repeat the same invocation: setup verifies current
400
- state before rerunning actions. Consumers that previously discarded stdout on
401
- nonzero exit must now parse it when present. `self update` also captures installer
402
- output so its stdout remains parseable; inspect the returned installer `code`.
410
+ state before rerunning actions. Parse stdout on a nonzero exit whenever it is
411
+ present. `self update` also captures installer output so its stdout remains
412
+ parseable; inspect the returned installer `code`.
403
413
 
404
414
  Retain the original task, repository/environment and readiness query while
405
415
  repairing prerequisites. Authorization already given in this session persists;
@@ -433,6 +443,8 @@ recover an executable that cannot start.
433
443
  vectors; it is not just a prompt suppressor. If only part is authorized,
434
444
  use the companion's supported scoped operation, keeping the same trust
435
445
  boundary. Inspect `failed`, `blocked`, `skipped` rows and setup problems.
446
+ Bundled `phase: prepare` steps, such as reusing an existing login, run in
447
+ `fx login` without `--yes` even with `--no-input`, as they do in init and sync.
436
448
  3. **Hand off only the human part.** Prepare supported local configuration and
437
449
  start an authorized login flow when useful; leave QR/device/browser consent,
438
450
  obtaining access and new vector approval to the person. For manual/file
@@ -46,6 +46,23 @@ source was never accepted. Preserve both streams on failure. Default results
46
46
  contain the decision and recovery; use `--details` only for a specific missing
47
47
  piece of evidence, without repeating a successful write.
48
48
 
49
+ ## Companion tools without a manifest
50
+
51
+ When the user wants companion tools on this machine and has no manifest, name the
52
+ tools they asked for; `fx tool list --catalog` shows the choices. No directory is
53
+ given, and nothing is registered:
54
+
55
+ ```sh
56
+ fx init --tools "<name,...>" --dry-run --format json
57
+ fx init --tools "<name,...>" --format json
58
+ ```
59
+
60
+ Init installs the missing tools, installs their Skills and fx's own, and checks
61
+ each sign-in. A tool not signed in is a `handoff` blocker whose `actor: user`
62
+ action is the tool's own setup, such as `jira-cli config init`; it asks the person
63
+ for the service and their credentials, so give it to them instead of running it.
64
+ After they finish, run the returned `resume`, which repeats the same `--tools`.
65
+
49
66
  If fx is absent, install the package/source provided by the team within the
50
67
  authorized prefix. npm configuration supplies Registry routing and authentication;
51
68
  no separate FX_REGISTRY setup is needed. Verify `self info`, then use this route.
@@ -13,7 +13,7 @@ or resuming its preparation, use the [initialization guide](initialization.md).
13
13
  `node <checkout>/bin/fx.js`, keep using that prefix. Bare `fx` can resolve to
14
14
  a different installation after shell startup.
15
15
  2. Use `--format json` for machine-readable results. Rediscover the bundled
16
- version when the executable changes; no environment acknowledgement is needed.
16
+ version when the executable changes.
17
17
  3. Discover the task's resources using the routes below. For team-specific
18
18
  workflows, read the matching Skill from the root AGENTS.md catalog.
19
19
 
@@ -158,6 +158,8 @@ Sync clones missing repositories and fast-forwards eligible clean branches. When
158
158
  a different branch is checked out, it updates only the tracked branch ref.
159
159
  It never checks out, resets, stashes, merges or rebases. Dirty or diverged work is
160
160
  reported as `skip_dirty` / `skip_diverged`; inspect repository and resource outcomes.
161
+ An empty upstream is skipped with outcome `empty_remote`; one lacking the tracked branch
162
+ is skipped with `no_remote_branch` and still blocks readiness. Neither is a failure.
161
163
 
162
164
  The workspace root is a plain directory. Do not initialize or run Git there.
163
165
  Write output that belongs to no repository under `.workbench/` as the derived
@@ -210,11 +212,8 @@ queries; background hooks only check. Conflicts preserve existing settings.
210
212
  Follow the [service reference](commands.md#service-preparation) for
211
213
  native context conflicts and scoped login.
212
214
 
213
- fx reuses npm's effective user/global scope Registry, then its default Registry;
214
- `FX_REGISTRY` is an optional override. `self info` reports `registry_source`.
215
- Project npmrc does not redirect global self-update. Internal `@fx/devkit` still
216
- needs a private target; public `@angelmsger/fx` can fall back to npmjs. Normal
217
- metadata reads use npm authentication, including `NPM_CONFIG_USERCONFIG`.
215
+ `self info` reports the Registry fx updates from and its `registry_source`;
216
+ [update notices](commands.md#update-notices) explains how it is chosen.
218
217
  `FX_OUTDATED` and `MANIFEST_OUTDATED` are advisory. Update within the user's scope,
219
218
  then rediscover the running version and read its bundled Skill. `fx skill install`
220
- refreshes installed copies explicitly. See [update notices](commands.md#update-notices).
219
+ refreshes installed copies explicitly.
@@ -1 +0,0 @@
1
- {"version":3,"file":"can.js","sourceRoot":"","sources":["../../src/application/can.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/application/doctor/login.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/application/import.ts"],"names":[],"mappings":"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"}