@paradigma-inc/flywheel 0.1.111 → 0.1.134

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 (628) hide show
  1. package/README.md +79 -13
  2. package/package.json +14 -6
  3. package/skills/flywheel/SKILL.md +9 -6
  4. package/skills/flywheel/example-workflows/organizing-exploring-and-iterating-on-a-research-topic.md +38 -46
  5. package/skills/flywheel/example-workflows/reproducing-papers-on-a-budget.md +34 -36
  6. package/skills/flywheel/getting-started/flywheel-quickstart.md +2 -5
  7. package/skills/flywheel/getting-started/flywheel-tutorial-overview.md +1 -1
  8. package/skills/flywheel/references/INTERFACES.md +2 -2
  9. package/skills/flywheel/references/experiment-design-protocol.md +32 -25
  10. package/skills/flywheel/references/flywheel-cli-tool-map.md +120 -76
  11. package/skills/flywheel/references/flywheel-mcp-tool-map.md +42 -32
  12. package/skills/flywheel/setting-up-flywheel/claude-code-cli-installation.md +1 -1
  13. package/skills/flywheel/setting-up-flywheel/codex-cli-installation.md +1 -1
  14. package/skills/flywheel/setting-up-flywheel/how-can-i-get-an-authorized-client_id-for-the-oauth-flow.md +12 -4
  15. package/skills/flywheel/setting-up-flywheel/installation-overview.md +2 -6
  16. package/skills/flywheel/setting-up-flywheel/other-hosts-installation.md +53 -26
  17. package/skills/flywheel/setting-up-flywheel/updating-flywheel-mcp.md +34 -11
  18. package/skills/flywheel-auto/SKILL.md +40 -23
  19. package/skills/flywheel-auto/evals/evals.json +1 -1
  20. package/skills/flywheel-auto/references/INTERFACES.md +2 -2
  21. package/skills/flywheel-auto/references/experiment-design-protocol.md +31 -23
  22. package/skills/flywheel-auto/references/flywheel-cli-tool-map.md +172 -127
  23. package/skills/flywheel-auto/references/flywheel-mcp-tool-map.md +22 -24
  24. package/skills/flywheel-lookahead/SKILL.md +47 -28
  25. package/skills/flywheel-lookahead/agents/openai.yaml +1 -1
  26. package/skills/flywheel-lookahead/evals/evals.json +6 -6
  27. package/skills/flywheel-lookahead/references/INTERFACES.md +2 -2
  28. package/skills/flywheel-lookahead/references/flywheel-cli-tool-map.md +172 -127
  29. package/skills/flywheel-lookahead/references/flywheel-mcp-tool-map.md +22 -24
  30. package/skills/flywheel-prove/SKILL.md +2 -2
  31. package/skills/flywheel-prove/references/workflow.md +21 -2
  32. package/skills/flywheel-reproduce/SKILL.md +39 -19
  33. package/skills/flywheel-reproduce/evals/evals.json +1 -1
  34. package/skills/flywheel-reproduce/references/INTERFACES.md +2 -2
  35. package/skills/flywheel-reproduce/references/experiment-design-protocol.md +31 -23
  36. package/skills/flywheel-reproduce/references/flywheel-cli-tool-map.md +172 -127
  37. package/skills/flywheel-reproduce/references/flywheel-mcp-tool-map.md +22 -24
  38. package/skills/flywheel-to-graph/SKILL.md +37 -17
  39. package/skills/flywheel-to-graph/references/INTERFACES.md +2 -2
  40. package/skills/flywheel-to-graph/references/flywheel-cli-tool-map.md +172 -127
  41. package/skills/flywheel-to-graph/references/flywheel-mcp-tool-map.md +22 -24
  42. package/skills/flywheel-tree/references/workflow.md +6 -37
  43. package/src/cli.mjs +1145 -1141
  44. package/src/mcp-writer.mjs +413 -435
  45. package/src/public-command-metadata.mjs +28 -5
  46. package/src/runtime/delegate.mjs +2 -19
  47. package/src/runtime/required-runtime-commands.json +83 -28
  48. package/src/runtime/runtime-config.mjs +39 -60
  49. package/src/runtime/vendor/flywheel-cli-dist/auth/credentials.js +330 -0
  50. package/src/runtime/vendor/flywheel-cli-dist/auth/credentials.js.map +1 -0
  51. package/src/runtime/vendor/flywheel-cli-dist/auth/login.js +90 -139
  52. package/src/runtime/vendor/flywheel-cli-dist/auth/login.js.map +1 -1
  53. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.js +1 -1
  54. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.js.map +1 -1
  55. package/src/runtime/vendor/flywheel-cli-dist/auth/secure-write.js +116 -0
  56. package/src/runtime/vendor/flywheel-cli-dist/auth/secure-write.js.map +1 -0
  57. package/src/runtime/vendor/flywheel-cli-dist/commands/_browser-handoff.js +36 -14
  58. package/src/runtime/vendor/flywheel-cli-dist/commands/_browser-handoff.js.map +1 -1
  59. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.js +15 -6
  60. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.js.map +1 -1
  61. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-test-users-create.js +256 -0
  62. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-test-users-create.js.map +1 -0
  63. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-test-users-delete.js +11 -0
  64. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-test-users-delete.js.map +1 -0
  65. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-test-users-login.js +84 -0
  66. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-test-users-login.js.map +1 -0
  67. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-test-users-revoke-api-key.js +17 -0
  68. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-test-users-revoke-api-key.js.map +1 -0
  69. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.js +3 -7
  70. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.js.map +1 -1
  71. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-credentials-clear.js +12 -0
  72. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-credentials-clear.js.map +1 -0
  73. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-credentials-set.js +29 -0
  74. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-credentials-set.js.map +1 -0
  75. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.js +12 -0
  76. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.js.map +1 -1
  77. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.js +46 -10
  78. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.js.map +1 -1
  79. package/src/runtime/vendor/flywheel-cli-dist/commands/env.js +17 -40
  80. package/src/runtime/vendor/flywheel-cli-dist/commands/env.js.map +1 -1
  81. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-operation-resources.js +305 -0
  82. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-operation-resources.js.map +1 -0
  83. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-operation-support.js +72 -0
  84. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-operation-support.js.map +1 -0
  85. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-operation.js +286 -0
  86. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-operation.js.map +1 -0
  87. package/src/runtime/vendor/flywheel-cli-dist/commands/help-metadata.js +30 -5
  88. package/src/runtime/vendor/flywheel-cli-dist/commands/help-metadata.js.map +1 -1
  89. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js +27 -12
  90. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js.map +1 -1
  91. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-commit-replay.js +284 -0
  92. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-commit-replay.js.map +1 -0
  93. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-graph.js +169 -0
  94. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-graph.js.map +1 -0
  95. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-lineage-list.js +13 -0
  96. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-lineage-list.js.map +1 -0
  97. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-repository-snapshot.js +227 -0
  98. package/src/runtime/vendor/flywheel-cli-dist/commands/hosted-repository-snapshot.js.map +1 -0
  99. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js +239 -263
  100. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js.map +1 -1
  101. package/src/runtime/vendor/flywheel-cli-dist/commands/node-create-schema.js +25 -0
  102. package/src/runtime/vendor/flywheel-cli-dist/commands/node-create-schema.js.map +1 -0
  103. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.js +11 -9
  104. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.js.map +1 -1
  105. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.js +38 -45
  106. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.js.map +1 -1
  107. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.js +14 -17
  108. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.js.map +1 -1
  109. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.js +13 -8
  110. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.js.map +1 -1
  111. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/admin.js +237 -66
  112. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/admin.js.map +1 -1
  113. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.js +9 -9
  114. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.js.map +1 -1
  115. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/hosted.js +76 -0
  116. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/hosted.js.map +1 -0
  117. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js +4 -138
  118. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js.map +1 -1
  119. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.js +8 -13
  120. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.js.map +1 -1
  121. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js +362 -0
  122. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/repository.js.map +1 -0
  123. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js +45 -183
  124. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js.map +1 -1
  125. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-edit.js +47 -0
  126. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-edit.js.map +1 -0
  127. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-operation.js +181 -0
  128. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-operation.js.map +1 -0
  129. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js +163 -0
  130. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-output.js.map +1 -0
  131. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-projection.js +79 -0
  132. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-projection.js.map +1 -0
  133. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-selection.js +80 -0
  134. package/src/runtime/vendor/flywheel-cli-dist/commands/repository-selection.js.map +1 -0
  135. package/src/runtime/vendor/flywheel-cli-dist/commands/retired-command-names.js +78 -0
  136. package/src/runtime/vendor/flywheel-cli-dist/commands/retired-command-names.js.map +1 -0
  137. package/src/runtime/vendor/flywheel-cli-dist/commands/types.js.map +1 -1
  138. package/src/runtime/vendor/flywheel-cli-dist/commands/usage-spec.js +3 -2
  139. package/src/runtime/vendor/flywheel-cli-dist/commands/usage-spec.js.map +1 -1
  140. package/src/runtime/vendor/flywheel-cli-dist/config/index.js +5 -0
  141. package/src/runtime/vendor/flywheel-cli-dist/config/index.js.map +1 -0
  142. package/src/runtime/vendor/flywheel-cli-dist/config/io.js +139 -0
  143. package/src/runtime/vendor/flywheel-cli-dist/config/io.js.map +1 -0
  144. package/src/runtime/vendor/flywheel-cli-dist/config/migration.js +299 -0
  145. package/src/runtime/vendor/flywheel-cli-dist/config/migration.js.map +1 -0
  146. package/src/runtime/vendor/flywheel-cli-dist/config/model.js +214 -0
  147. package/src/runtime/vendor/flywheel-cli-dist/config/model.js.map +1 -0
  148. package/src/runtime/vendor/flywheel-cli-dist/config/path.js +30 -0
  149. package/src/runtime/vendor/flywheel-cli-dist/config/path.js.map +1 -0
  150. package/src/runtime/vendor/flywheel-cli-dist/credential-output.js +29 -0
  151. package/src/runtime/vendor/flywheel-cli-dist/credential-output.js.map +1 -0
  152. package/src/runtime/vendor/flywheel-cli-dist/errors.js +1 -16
  153. package/src/runtime/vendor/flywheel-cli-dist/errors.js.map +1 -1
  154. package/src/runtime/vendor/flywheel-cli-dist/generatedProductTelemetryContract.js +3 -3
  155. package/src/runtime/vendor/flywheel-cli-dist/generatedProductTelemetryContract.js.map +1 -1
  156. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.js +19 -9
  157. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.js.map +1 -1
  158. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.js +33 -4
  159. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.js.map +1 -1
  160. package/src/runtime/vendor/flywheel-cli-dist/http/client.js +322 -302
  161. package/src/runtime/vendor/flywheel-cli-dist/http/client.js.map +1 -1
  162. package/src/runtime/vendor/flywheel-cli-dist/http/debug.js +1 -21
  163. package/src/runtime/vendor/flywheel-cli-dist/http/debug.js.map +1 -1
  164. package/src/runtime/vendor/flywheel-cli-dist/http/retry.js +1 -0
  165. package/src/runtime/vendor/flywheel-cli-dist/http/retry.js.map +1 -1
  166. package/src/runtime/vendor/flywheel-cli-dist/local/adapter.js +244 -0
  167. package/src/runtime/vendor/flywheel-cli-dist/local/adapter.js.map +1 -0
  168. package/src/runtime/vendor/flywheel-cli-dist/local/domain/errors.js +7 -0
  169. package/src/runtime/vendor/flywheel-cli-dist/local/domain/errors.js.map +1 -0
  170. package/src/runtime/vendor/flywheel-cli-dist/local/domain/history.js +35 -0
  171. package/src/runtime/vendor/flywheel-cli-dist/local/domain/history.js.map +1 -0
  172. package/src/runtime/vendor/flywheel-cli-dist/local/domain/invariants.js +42 -0
  173. package/src/runtime/vendor/flywheel-cli-dist/local/domain/invariants.js.map +1 -0
  174. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/artifact-properties.js +179 -0
  175. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/artifact-properties.js.map +1 -0
  176. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/commits.js +152 -0
  177. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/commits.js.map +1 -0
  178. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/constants.js +71 -0
  179. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/constants.js.map +1 -0
  180. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/encoding.js +73 -0
  181. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/encoding.js.map +1 -0
  182. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/imported-artifact-properties.js +82 -0
  183. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/imported-artifact-properties.js.map +1 -0
  184. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/operations.js +345 -0
  185. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/operations.js.map +1 -0
  186. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js +57 -0
  187. package/src/runtime/vendor/flywheel-cli-dist/local/domain/models/tags.js.map +1 -0
  188. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js +149 -0
  189. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/conflicts.js.map +1 -0
  190. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/context.js +115 -0
  191. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/context.js.map +1 -0
  192. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/keys.js +44 -0
  193. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/keys.js.map +1 -0
  194. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js +159 -0
  195. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/pull.js.map +1 -0
  196. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js +346 -0
  197. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/replay.js.map +1 -0
  198. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js +37 -0
  199. package/src/runtime/vendor/flywheel-cli-dist/local/domain/rebase/resolve.js.map +1 -0
  200. package/src/runtime/vendor/flywheel-cli-dist/local/domain/revert/inverses.js +203 -0
  201. package/src/runtime/vendor/flywheel-cli-dist/local/domain/revert/inverses.js.map +1 -0
  202. package/src/runtime/vendor/flywheel-cli-dist/local/domain/revert/plan.js +207 -0
  203. package/src/runtime/vendor/flywheel-cli-dist/local/domain/revert/plan.js.map +1 -0
  204. package/src/runtime/vendor/flywheel-cli-dist/local/domain/revert/tag-inverses.js +109 -0
  205. package/src/runtime/vendor/flywheel-cli-dist/local/domain/revert/tag-inverses.js.map +1 -0
  206. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/commit.js +61 -0
  207. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/commit.js.map +1 -0
  208. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/projection.js +46 -0
  209. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/projection.js.map +1 -0
  210. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/revert.js +203 -0
  211. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/revert.js.map +1 -0
  212. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/staging.js +44 -0
  213. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/staging.js.map +1 -0
  214. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/writes.js +188 -0
  215. package/src/runtime/vendor/flywheel-cli-dist/local/domain/service/writes.js.map +1 -0
  216. package/src/runtime/vendor/flywheel-cli-dist/local/domain/sync/cursors.js +54 -0
  217. package/src/runtime/vendor/flywheel-cli-dist/local/domain/sync/cursors.js.map +1 -0
  218. package/src/runtime/vendor/flywheel-cli-dist/local/domain/sync/local-pull.js +25 -0
  219. package/src/runtime/vendor/flywheel-cli-dist/local/domain/sync/local-pull.js.map +1 -0
  220. package/src/runtime/vendor/flywheel-cli-dist/local/domain/sync-models.js +2 -0
  221. package/src/runtime/vendor/flywheel-cli-dist/local/domain/sync-models.js.map +1 -0
  222. package/src/runtime/vendor/flywheel-cli-dist/local/fs/native.js +7 -0
  223. package/src/runtime/vendor/flywheel-cli-dist/local/fs/native.js.map +1 -0
  224. package/src/runtime/vendor/flywheel-cli-dist/local/fs/state.js +129 -0
  225. package/src/runtime/vendor/flywheel-cli-dist/local/fs/state.js.map +1 -0
  226. package/src/runtime/vendor/flywheel-cli-dist/local/fs/writer-lock.js +277 -0
  227. package/src/runtime/vendor/flywheel-cli-dist/local/fs/writer-lock.js.map +1 -0
  228. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/bootstrap.js +183 -0
  229. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/bootstrap.js.map +1 -0
  230. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/context.js +2 -0
  231. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/context.js.map +1 -0
  232. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/dispatch.js +121 -0
  233. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/dispatch.js.map +1 -0
  234. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/doctor.js +16 -0
  235. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/doctor.js.map +1 -0
  236. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/identity.js +72 -0
  237. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/identity.js.map +1 -0
  238. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js +59 -0
  239. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/conflicts.js.map +1 -0
  240. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/core.js +125 -0
  241. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/core.js.map +1 -0
  242. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/history.js +129 -0
  243. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/history.js.map +1 -0
  244. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/index.js +31 -0
  245. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/index.js.map +1 -0
  246. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/maintenance.js +49 -0
  247. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/maintenance.js.map +1 -0
  248. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/projections.js +30 -0
  249. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/projections.js.map +1 -0
  250. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/shared.js +12 -0
  251. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/operations/shared.js.map +1 -0
  252. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/platform.js +18 -0
  253. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/platform.js.map +1 -0
  254. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/projection.js +125 -0
  255. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/projection.js.map +1 -0
  256. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/clone.js +37 -0
  257. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/clone.js.map +1 -0
  258. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/pull.js +44 -0
  259. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/pull.js.map +1 -0
  260. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/purge.js +58 -0
  261. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/purge.js.map +1 -0
  262. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/push.js +118 -0
  263. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/push.js.map +1 -0
  264. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/transport.js +277 -0
  265. package/src/runtime/vendor/flywheel-cli-dist/local/runtime/remote/transport.js.map +1 -0
  266. package/src/runtime/vendor/flywheel-cli-dist/local/store/apply.js +132 -0
  267. package/src/runtime/vendor/flywheel-cli-dist/local/store/apply.js.map +1 -0
  268. package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/archive.js +372 -0
  269. package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/archive.js.map +1 -0
  270. package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/backup.js +210 -0
  271. package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/backup.js.map +1 -0
  272. package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/restore.js +278 -0
  273. package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/restore.js.map +1 -0
  274. package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/retained-directory.js +192 -0
  275. package/src/runtime/vendor/flywheel-cli-dist/local/store/backup/retained-directory.js.map +1 -0
  276. package/src/runtime/vendor/flywheel-cli-dist/local/store/commits.js +114 -0
  277. package/src/runtime/vendor/flywheel-cli-dist/local/store/commits.js.map +1 -0
  278. package/src/runtime/vendor/flywheel-cli-dist/local/store/contract.js +65 -0
  279. package/src/runtime/vendor/flywheel-cli-dist/local/store/contract.js.map +1 -0
  280. package/src/runtime/vendor/flywheel-cli-dist/local/store/diagnostics-worker.js +145 -0
  281. package/src/runtime/vendor/flywheel-cli-dist/local/store/diagnostics-worker.js.map +1 -0
  282. package/src/runtime/vendor/flywheel-cli-dist/local/store/diagnostics.js +218 -0
  283. package/src/runtime/vendor/flywheel-cli-dist/local/store/diagnostics.js.map +1 -0
  284. package/src/runtime/vendor/flywheel-cli-dist/local/store/gc.js +71 -0
  285. package/src/runtime/vendor/flywheel-cli-dist/local/store/gc.js.map +1 -0
  286. package/src/runtime/vendor/flywheel-cli-dist/local/store/history-validation.js +298 -0
  287. package/src/runtime/vendor/flywheel-cli-dist/local/store/history-validation.js.map +1 -0
  288. package/src/runtime/vendor/flywheel-cli-dist/local/store/latest-values.js +121 -0
  289. package/src/runtime/vendor/flywheel-cli-dist/local/store/latest-values.js.map +1 -0
  290. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrate.js +69 -0
  291. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrate.js.map +1 -0
  292. package/src/runtime/vendor/flywheel-cli-dist/local/store/migration/provenance.js +49 -0
  293. package/src/runtime/vendor/flywheel-cli-dist/local/store/migration/provenance.js.map +1 -0
  294. package/src/runtime/vendor/flywheel-cli-dist/local/store/migration/steps.js +424 -0
  295. package/src/runtime/vendor/flywheel-cli-dist/local/store/migration/steps.js.map +1 -0
  296. package/src/runtime/vendor/flywheel-cli-dist/local/store/migration/versions.js +10 -0
  297. package/src/runtime/vendor/flywheel-cli-dist/local/store/migration/versions.js.map +1 -0
  298. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrations/001_initial.sql +319 -0
  299. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrations/002_staged_latest_values.sql +8 -0
  300. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrations/003_remove_cli_editing_lease.sql +21 -0
  301. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrations/004_hosted_association.sql +7 -0
  302. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrations/005_artifact_properties.sql +68 -0
  303. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrations.js +12 -0
  304. package/src/runtime/vendor/flywheel-cli-dist/local/store/migrations.js.map +1 -0
  305. package/src/runtime/vendor/flywheel-cli-dist/local/store/objects.js +410 -0
  306. package/src/runtime/vendor/flywheel-cli-dist/local/store/objects.js.map +1 -0
  307. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/apply.js +77 -0
  308. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/apply.js.map +1 -0
  309. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js +240 -0
  310. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/artifacts.js.map +1 -0
  311. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/nodes.js +127 -0
  312. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/nodes.js.map +1 -0
  313. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/relations.js +107 -0
  314. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/relations.js.map +1 -0
  315. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/rules.js +80 -0
  316. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/rules.js.map +1 -0
  317. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js +219 -0
  318. package/src/runtime/vendor/flywheel-cli-dist/local/store/projection/tags.js.map +1 -0
  319. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/hosted.js +164 -0
  320. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/hosted.js.map +1 -0
  321. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/read.js +20 -0
  322. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/read.js.map +1 -0
  323. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/replace.js +41 -0
  324. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/replace.js.map +1 -0
  325. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/schema.js +22 -0
  326. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/schema.js.map +1 -0
  327. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/validate.js +188 -0
  328. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot/validate.js.map +1 -0
  329. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot.js +5 -0
  330. package/src/runtime/vendor/flywheel-cli-dist/local/store/snapshot.js.map +1 -0
  331. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/connection.js +214 -0
  332. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/connection.js.map +1 -0
  333. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/errors.js +4 -0
  334. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/errors.js.map +1 -0
  335. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/rows.js +44 -0
  336. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/rows.js.map +1 -0
  337. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/schema.js +38 -0
  338. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/schema.js.map +1 -0
  339. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/store.js +284 -0
  340. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/store.js.map +1 -0
  341. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/verify.js +133 -0
  342. package/src/runtime/vendor/flywheel-cli-dist/local/store/sqlite/verify.js.map +1 -0
  343. package/src/runtime/vendor/flywheel-cli-dist/local/store/sync-commits.js +98 -0
  344. package/src/runtime/vendor/flywheel-cli-dist/local/store/sync-commits.js.map +1 -0
  345. package/src/runtime/vendor/flywheel-cli-dist/local/store/sync.js +161 -0
  346. package/src/runtime/vendor/flywheel-cli-dist/local/store/sync.js.map +1 -0
  347. package/src/runtime/vendor/flywheel-cli-dist/local/store/workspace-state.js +97 -0
  348. package/src/runtime/vendor/flywheel-cli-dist/local/store/workspace-state.js.map +1 -0
  349. package/src/runtime/vendor/flywheel-cli-dist/local/store/workspace.js +69 -0
  350. package/src/runtime/vendor/flywheel-cli-dist/local/store/workspace.js.map +1 -0
  351. package/src/runtime/vendor/flywheel-cli-dist/main.js +651 -376
  352. package/src/runtime/vendor/flywheel-cli-dist/main.js.map +1 -1
  353. package/src/runtime/vendor/flywheel-cli-dist/output/format.js +18 -11
  354. package/src/runtime/vendor/flywheel-cli-dist/output/format.js.map +1 -1
  355. package/src/runtime/vendor/flywheel-cli-dist/prebuilds/darwin-arm64/node.napi.node +0 -0
  356. package/src/runtime/vendor/flywheel-cli-dist/prebuilds/darwin-x64/node.napi.node +0 -0
  357. package/src/runtime/vendor/flywheel-cli-dist/prebuilds/linux-arm64/node.napi.glibc.node +0 -0
  358. package/src/runtime/vendor/flywheel-cli-dist/prebuilds/linux-arm64/node.napi.musl.node +0 -0
  359. package/src/runtime/vendor/flywheel-cli-dist/prebuilds/linux-x64/node.napi.glibc.node +0 -0
  360. package/src/runtime/vendor/flywheel-cli-dist/prebuilds/linux-x64/node.napi.musl.node +0 -0
  361. package/src/runtime/vendor/manifest.json +252 -254
  362. package/src/setup/command.mjs +5 -0
  363. package/src/setup/io/patchers/json.mjs +1 -1
  364. package/src/setup/io/patchers/toml.mjs +3 -1
  365. package/src/setup/io/patchers/yaml.mjs +1 -1
  366. package/src/setup/modes/cli.mjs +76 -7
  367. package/src/setup/modes/mcp-command.mjs +802 -793
  368. package/src/setup/modes/mcp.mjs +7 -3
  369. package/src/setup/shared/prior-mode-detect.mjs +18 -21
  370. package/src/setup/test-seams.mjs +25 -0
  371. package/src/setup-auth.mjs +76 -10
  372. package/src/toml-lines.mjs +52 -0
  373. package/src/unified-cli.mjs +31 -16
  374. package/skills/flywheel-llm-proof-paper/scripts/__pycache__/check_paper.cpython-312.pyc +0 -0
  375. package/src/runtime/vendor/flywheel-cli-dist/auth/active-key-id.d.ts +0 -1
  376. package/src/runtime/vendor/flywheel-cli-dist/auth/baseurl.d.ts +0 -35
  377. package/src/runtime/vendor/flywheel-cli-dist/auth/config.d.ts +0 -34
  378. package/src/runtime/vendor/flywheel-cli-dist/auth/config.js +0 -92
  379. package/src/runtime/vendor/flywheel-cli-dist/auth/config.js.map +0 -1
  380. package/src/runtime/vendor/flywheel-cli-dist/auth/fingerprint.d.ts +0 -5
  381. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.d.ts +0 -4
  382. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.js +0 -31
  383. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.js.map +0 -1
  384. package/src/runtime/vendor/flywheel-cli-dist/auth/login.d.ts +0 -24
  385. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.d.ts +0 -15
  386. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.js +0 -150
  387. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.js.map +0 -1
  388. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.d.ts +0 -27
  389. package/src/runtime/vendor/flywheel-cli-dist/commands/_admin-auth.d.ts +0 -27
  390. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.d.ts +0 -32
  391. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.js +0 -213
  392. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.js.map +0 -1
  393. package/src/runtime/vendor/flywheel-cli-dist/commands/_browser-handoff.d.ts +0 -21
  394. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.d.ts +0 -2
  395. package/src/runtime/vendor/flywheel-cli-dist/commands/_secret-param.d.ts +0 -7
  396. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-file-out.d.ts +0 -39
  397. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-writer.d.ts +0 -34
  398. package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.d.ts +0 -50
  399. package/src/runtime/vendor/flywheel-cli-dist/commands/account-detach.d.ts +0 -2
  400. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-add.d.ts +0 -2
  401. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-remove.d.ts +0 -2
  402. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-set-primary.d.ts +0 -2
  403. package/src/runtime/vendor/flywheel-cli-dist/commands/account-get.d.ts +0 -2
  404. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-preview.d.ts +0 -2
  405. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-proof.d.ts +0 -2
  406. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge.d.ts +0 -2
  407. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-compute-policy-get.d.ts +0 -2
  408. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-compute-policy-set.d.ts +0 -2
  409. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export-stream.d.ts +0 -2
  410. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-export.d.ts +0 -2
  411. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-graphs-list.d.ts +0 -4
  412. package/src/runtime/vendor/flywheel-cli-dist/commands/admin-nodes-audit-list.d.ts +0 -2
  413. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.d.ts +0 -13
  414. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-create.d.ts +0 -2
  415. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-delete.d.ts +0 -2
  416. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-list.d.ts +0 -18
  417. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-rotate.d.ts +0 -2
  418. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-expire.d.ts +0 -2
  419. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-heartbeat.d.ts +0 -2
  420. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-list.d.ts +0 -2
  421. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete-bulk.d.ts +0 -2
  422. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete-bulk.js +0 -22
  423. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete-bulk.js.map +0 -1
  424. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.d.ts +0 -2
  425. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.js +0 -8
  426. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.js.map +0 -1
  427. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-get.d.ts +0 -2
  428. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-list.d.ts +0 -2
  429. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.d.ts +0 -2
  430. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.js +0 -9
  431. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.js.map +0 -1
  432. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.d.ts +0 -2
  433. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.js +0 -7
  434. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.js.map +0 -1
  435. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.d.ts +0 -2
  436. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.js +0 -15
  437. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.js.map +0 -1
  438. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.d.ts +0 -2
  439. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.js +0 -5
  440. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.js.map +0 -1
  441. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.d.ts +0 -2
  442. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.js +0 -8
  443. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.js.map +0 -1
  444. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.d.ts +0 -2
  445. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.js +0 -30
  446. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.js.map +0 -1
  447. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.d.ts +0 -2
  448. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-mode.d.ts +0 -4
  449. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.d.ts +0 -2
  450. package/src/runtime/vendor/flywheel-cli-dist/commands/blobs-get.d.ts +0 -2
  451. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-create.d.ts +0 -2
  452. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-list.d.ts +0 -1
  453. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-revoke.d.ts +0 -1
  454. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-update.d.ts +0 -2
  455. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-snapshot.d.ts +0 -1
  456. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.d.ts +0 -2
  457. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-budgets.d.ts +0 -2
  458. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-connection.d.ts +0 -2
  459. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-funding.d.ts +0 -2
  460. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-list.d.ts +0 -2
  461. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-request-approval.d.ts +0 -2
  462. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-options.d.ts +0 -2
  463. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release-all.d.ts +0 -2
  464. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release.d.ts +0 -2
  465. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-status.d.ts +0 -2
  466. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-balance.d.ts +0 -1
  467. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-billing-portal.d.ts +0 -2
  468. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-purchase.d.ts +0 -2
  469. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral-claim.d.ts +0 -2
  470. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral.d.ts +0 -1
  471. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscribe.d.ts +0 -2
  472. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscription.d.ts +0 -1
  473. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-transactions.d.ts +0 -2
  474. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-usage.d.ts +0 -2
  475. package/src/runtime/vendor/flywheel-cli-dist/commands/destructive-confirmation.d.ts +0 -2
  476. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.d.ts +0 -22
  477. package/src/runtime/vendor/flywheel-cli-dist/commands/env.d.ts +0 -8
  478. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-launch.d.ts +0 -2
  479. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-list.d.ts +0 -1
  480. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-terminate.d.ts +0 -2
  481. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.d.ts +0 -2
  482. package/src/runtime/vendor/flywheel-cli-dist/commands/export-subgraph.d.ts +0 -2
  483. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-pdf.d.ts +0 -2
  484. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-render-pdf.d.ts +0 -2
  485. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-stream.d.ts +0 -2
  486. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary.d.ts +0 -2
  487. package/src/runtime/vendor/flywheel-cli-dist/commands/feedback-create.d.ts +0 -2
  488. package/src/runtime/vendor/flywheel-cli-dist/commands/files-list.d.ts +0 -2
  489. package/src/runtime/vendor/flywheel-cli-dist/commands/github-disconnect.d.ts +0 -1
  490. package/src/runtime/vendor/flywheel-cli-dist/commands/github-link.d.ts +0 -2
  491. package/src/runtime/vendor/flywheel-cli-dist/commands/github-refresh-repos.d.ts +0 -1
  492. package/src/runtime/vendor/flywheel-cli-dist/commands/github-status.d.ts +0 -1
  493. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-get.d.ts +0 -2
  494. package/src/runtime/vendor/flywheel-cli-dist/commands/handler-factory.d.ts +0 -22
  495. package/src/runtime/vendor/flywheel-cli-dist/commands/help-format.d.ts +0 -31
  496. package/src/runtime/vendor/flywheel-cli-dist/commands/help-metadata.d.ts +0 -36
  497. package/src/runtime/vendor/flywheel-cli-dist/commands/help.d.ts +0 -17
  498. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-create.d.ts +0 -2
  499. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-delete.d.ts +0 -1
  500. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-list.d.ts +0 -2
  501. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-runs-list.d.ts +0 -2
  502. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-create.d.ts +0 -2
  503. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-delete.d.ts +0 -1
  504. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-list.d.ts +0 -1
  505. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-secrets-update.d.ts +0 -2
  506. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-set-enabled.d.ts +0 -2
  507. package/src/runtime/vendor/flywheel-cli-dist/commands/hooks-update.d.ts +0 -2
  508. package/src/runtime/vendor/flywheel-cli-dist/commands/import-subgraph.d.ts +0 -2
  509. package/src/runtime/vendor/flywheel-cli-dist/commands/index.d.ts +0 -23
  510. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-remove.d.ts +0 -1
  511. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-set.d.ts +0 -2
  512. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-status.d.ts +0 -1
  513. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-remove.d.ts +0 -1
  514. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-set.d.ts +0 -2
  515. package/src/runtime/vendor/flywheel-cli-dist/commands/machines-list.d.ts +0 -1
  516. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.d.ts +0 -2
  517. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.js +0 -15
  518. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.js.map +0 -1
  519. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.d.ts +0 -2
  520. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.js +0 -10
  521. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.js.map +0 -1
  522. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-children.d.ts +0 -2
  523. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-children.js +0 -8
  524. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-children.js.map +0 -1
  525. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.d.ts +0 -2
  526. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.js +0 -6
  527. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.js.map +0 -1
  528. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.d.ts +0 -2
  529. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.js +0 -7
  530. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.js.map +0 -1
  531. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.d.ts +0 -2
  532. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.js +0 -6
  533. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.js.map +0 -1
  534. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.d.ts +0 -2
  535. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.js +0 -16
  536. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.js.map +0 -1
  537. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.d.ts +0 -2
  538. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.js +0 -11
  539. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.js.map +0 -1
  540. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-files.d.ts +0 -1
  541. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-get.d.ts +0 -2
  542. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-list.d.ts +0 -2
  543. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.d.ts +0 -2
  544. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.js +0 -33
  545. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.js.map +0 -1
  546. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-parents.d.ts +0 -2
  547. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-parents.js +0 -8
  548. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-parents.js.map +0 -1
  549. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.d.ts +0 -2
  550. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.js +0 -15
  551. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.js.map +0 -1
  552. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-ancestry.d.ts +0 -2
  553. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-summary.d.ts +0 -2
  554. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-tree.d.ts +0 -2
  555. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.d.ts +0 -2
  556. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-get.d.ts +0 -1
  557. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set-bulk.d.ts +0 -2
  558. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set.d.ts +0 -2
  559. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-summaries.d.ts +0 -2
  560. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-acquire.d.ts +0 -2
  561. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-heartbeat.d.ts +0 -2
  562. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-release.d.ts +0 -2
  563. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.d.ts +0 -2
  564. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.d.ts +0 -2
  565. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.d.ts +0 -2
  566. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.d.ts +0 -2
  567. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/account.d.ts +0 -2
  568. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/admin.d.ts +0 -8
  569. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/api-keys.d.ts +0 -2
  570. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/approval.d.ts +0 -2
  571. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.d.ts +0 -2
  572. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.js +0 -140
  573. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.js.map +0 -1
  574. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.d.ts +0 -2
  575. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/budgets.d.ts +0 -2
  576. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.d.ts +0 -2
  577. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/credits.d.ts +0 -2
  578. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.d.ts +0 -2
  579. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/executions.d.ts +0 -2
  580. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/export.d.ts +0 -2
  581. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/github.d.ts +0 -2
  582. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/graph.d.ts +0 -2
  583. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/hooks.d.ts +0 -2
  584. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/integrations.d.ts +0 -2
  585. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.d.ts +0 -2
  586. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.d.ts +0 -2
  587. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.d.ts +0 -2
  588. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/sharing.d.ts +0 -2
  589. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.d.ts +0 -2
  590. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.js +0 -98
  591. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.js.map +0 -1
  592. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/updates.d.ts +0 -2
  593. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.d.ts +0 -27
  594. package/src/runtime/vendor/flywheel-cli-dist/commands/remote-artifacts-refresh.d.ts +0 -2
  595. package/src/runtime/vendor/flywheel-cli-dist/commands/remote-artifacts-resolve.d.ts +0 -2
  596. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.d.ts +0 -2
  597. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.js +0 -25
  598. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.js.map +0 -1
  599. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.d.ts +0 -2
  600. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.js +0 -25
  601. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.js.map +0 -1
  602. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.d.ts +0 -2
  603. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.js +0 -11
  604. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.js.map +0 -1
  605. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.d.ts +0 -2
  606. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.js +0 -28
  607. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.js.map +0 -1
  608. package/src/runtime/vendor/flywheel-cli-dist/commands/types.d.ts +0 -30
  609. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide-all-active.d.ts +0 -1
  610. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide.d.ts +0 -2
  611. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-list.d.ts +0 -2
  612. package/src/runtime/vendor/flywheel-cli-dist/commands/usage-spec.d.ts +0 -6
  613. package/src/runtime/vendor/flywheel-cli-dist/commands/utils.d.ts +0 -11
  614. package/src/runtime/vendor/flywheel-cli-dist/errors.d.ts +0 -86
  615. package/src/runtime/vendor/flywheel-cli-dist/exit-codes.d.ts +0 -8
  616. package/src/runtime/vendor/flywheel-cli-dist/generatedFeedbackContract.d.ts +0 -41
  617. package/src/runtime/vendor/flywheel-cli-dist/generatedProductTelemetryContract.d.ts +0 -13
  618. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.d.ts +0 -26
  619. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.d.ts +0 -17
  620. package/src/runtime/vendor/flywheel-cli-dist/http/client.d.ts +0 -91
  621. package/src/runtime/vendor/flywheel-cli-dist/http/debug.d.ts +0 -5
  622. package/src/runtime/vendor/flywheel-cli-dist/http/poll.d.ts +0 -18
  623. package/src/runtime/vendor/flywheel-cli-dist/http/retry.d.ts +0 -30
  624. package/src/runtime/vendor/flywheel-cli-dist/main.d.ts +0 -33
  625. package/src/runtime/vendor/flywheel-cli-dist/output/format.d.ts +0 -9
  626. package/src/runtime/vendor/flywheel-cli-dist/runtime-entry.d.ts +0 -1
  627. package/src/runtime/vendor/flywheel-cli-dist/version.d.ts +0 -3
  628. package/src/secure-write.mjs +0 -43
@@ -19,7 +19,7 @@ Help the user clarify what they are trying to learn, shape the work around that
19
19
  - Propose defaults for structural choices such as experiment shape, stop condition, or artifact plan. Use questions rather than defaults for epistemic choices such as beliefs, assumptions, and what evidence would matter.
20
20
  - When a reasoning or design gap is visible, raise it as a question rather than an assertion.
21
21
  - If the core gate is satisfied and the user wants to proceed, stop asking more design questions.
22
- - Use Flywheel `insight` nodes to preserve design context when it will help across turns or sessions.
22
+ - Use Flywheel nodes to preserve design context when it will help across turns or sessions.
23
23
 
24
24
  ## Phase 1: Clarify what the user is trying to learn
25
25
 
@@ -43,7 +43,7 @@ If the work is exploratory, ask:
43
43
  - What is the cheapest or cleanest way to learn that first piece?
44
44
  - What signal or pattern are you looking for?
45
45
 
46
- If the user is still fuzzy after this phase, stay in planning mode. If needed, create or update an `insight` node rather than an `empirical` node.
46
+ If the user is still fuzzy after this phase, stay in planning mode. If needed, record planning or exploratory content rather than launching an empirical probe.
47
47
 
48
48
  ## Phase 2: Shape the work
49
49
 
@@ -117,35 +117,42 @@ If the run is expensive or high-risk, ask for explicit confirmation.
117
117
 
118
118
  ## Phase 5: Drive Flywheel
119
119
 
120
- Use Flywheel in layers when possible.
121
-
122
- Before execution, load `references/flywheel-mcp-tool-map.md` and verify the
123
- exact tool surface exposed by the current MCP host before critical flows.
120
+ Use the active configured interface throughout design, execution, and result
121
+ persistence, following this skill's installation-mode guidance. A skill-only
122
+ MCP install uses a separately configured CLI, not an MCP tool surface; do not
123
+ assume that installing the skill configured the CLI.
124
+
125
+ 1. **Active MCP interface:** verify that the active MCP host exposes the required
126
+ tool surface, then load this skill's [MCP tool map](flywheel-mcp-tool-map.md).
127
+ Use its design, empirical, and final-result flows. If that surface is not
128
+ available, do not substitute CLI commands; configure the intended interface
129
+ or explain the blocker. Its caller-local new-node payload flow is distinct
130
+ from its existing-node session-stage-lease and full-payload commit flow; do
131
+ not recast either as a CLI repository commit.
132
+ 2. **Active CLI interface (including skill-only MCP installs):** load this skill's
133
+ [CLI tool map](flywheel-cli-tool-map.md). First determine the destination:
134
+ use its Local authoring workflow for an identified local repository
135
+ (stage, commit locally, and push only when publication is requested), or its
136
+ direct hosted/Empirical Workflow for an identified hosted repository
137
+ (immediate hosted commits). If the destination is unknown, ask before
138
+ writing; a missing local repository is not a reason to switch to hosted
139
+ storage.
124
140
 
125
141
  ### Design layer
126
142
 
127
- Use an `insight` node to capture rationale, open questions, experiment shape, and any decomposition needed for exploratory or multi-stage work.
128
-
129
- Typical flow:
130
-
131
- 1. `mcp__flywheel__flywheel_commit_new_node`
132
- 2. `mcp__flywheel__flywheel_acquire_stage_lease` when refining an existing design node
133
- 3. `mcp__flywheel__flywheel_commit_node` once the design brief is coherent
143
+ Persist rationale, open questions, experiment shape, and exploratory or
144
+ multi-stage decomposition through the selected map's matching write flow.
145
+ Preserve the interface and destination choice while refining that design; do
146
+ not mix MCP staged payloads with CLI local or hosted commit semantics.
134
147
 
135
148
  ### Execution layer
136
149
 
137
- Only after the design gate passes, create or branch the node for the runnable part of the work.
138
-
139
- Typical flow:
140
-
141
- 1. `mcp__flywheel__flywheel_branch_node` or `mcp__flywheel__flywheel_commit_new_node`
142
- 2. `mcp__flywheel__flywheel_acquire_stage_lease` + `mcp__flywheel__flywheel_commit_node` with the explicit run summary and the local question or hypothesis for that branch
143
- 3. `mcp__flywheel__flywheel_request_compute_grant_approval` only after the user accepts the design
144
- 4. `mcp__flywheel__flywheel_list_compute_grants(status=active, approval_session_id=<session_id>)` when you need to resolve the approved `compute_grant_id`
145
- 5. `mcp__flywheel__flywheel_compute_acquire` and related compute tools only when execution is actually needed
146
- 6. `mcp__flywheel__flywheel_prepare_artifact_uploads`, raw upload to the returned signed URLs, then `mcp__flywheel__flywheel_finalize_artifact_uploads`
147
- 7. Do a brief epistemic check before commit: verify what the evidence actually shows, whether it matches the interpretation rule from the brief, and whether any gap between the data and the hoped-for story needs to be named explicitly in the node summary.
148
- 8. `mcp__flywheel__flywheel_commit_node`
150
+ Only after the design gate passes, create or branch the runnable work through
151
+ the selected map. For managed compute, follow that map's Empirical Workflow
152
+ end-to-end: catalog selection, approval, grant resolution, acquisition,
153
+ execution, evidence artifacts, and the final result persistence path. Before
154
+ that final result write, check that the evidence supports the interpretation
155
+ and name any gap in the summary.
149
156
 
150
157
  Important notes:
151
158
 
@@ -4,23 +4,24 @@ Contract-aligned routing guide for the Flywheel runtime CLI.
4
4
 
5
5
  The Flywheel CLI (`flywheel <command>`) is the runtime command surface shipped by `@paradigma-inc/flywheel`. It wraps the canonical Flywheel HTTP API and is the parallel surface to Flywheel MCP. Use this map when the host install is `--mode cli` (skills installed without an MCP server entry) or whenever scripted / direct-API workflows are preferable to MCP tool calls.
6
6
 
7
- For the MCP routing, see `flywheel-mcp-tool-map.md`. Every entry in the "MCP-equivalent" families below maps one-to-one to an MCP tool there. The "CLI-only" family at the end contains commands with no MCP counterpart.
7
+ For MCP routing, see `flywheel-mcp-tool-map.md`. The families below group related capabilities; CLI repository commands and MCP tools do not share the same staging or commit workflow.
8
8
 
9
9
  ## Core Contract Expectations
10
10
 
11
- The CLI respects the same contracts the MCP surface enforces. See `flywheel-mcp-tool-map.md`'s "Core Contract Expectations" section for the canonical statements; the additions below are CLI-specific:
11
+ Follow `flywheel-mcp-tool-map.md` for MCP-specific payload and lease workflows. For the CLI:
12
12
 
13
- - Mutating commands enforce optimistic locking via flags like `--expected_revision`; pass the latest revision token read from `flywheel nodes:get` and handle `409 conflict` with explicit reconciliation.
14
- - Stage-lease coordination mirrors the MCP stage-lease tools: `flywheel nodes:stage:lease:acquire` `flywheel nodes:stage:lease:heartbeat` (during long edits) `flywheel nodes:commit` `flywheel nodes:stage:lease:release`.
15
- - Inline JSON payloads can be supplied with `--payload_json=<json>` or read from a file with `--payload_json=@path/to/file.json`.
16
- - Output format is controlled by `--format json|tsv|csv|table` (default: `json`). Pipe-friendly forms (`tsv`, `csv`) are useful for scripting.
17
- - For artifact uploads, the CLI offers a one-shot `flywheel artifacts:upload` that internally runs prepare + raw PUT + finalize. The split commands (`flywheel artifacts:upload:prepare`, `flywheel artifacts:upload:finalize`) are available for streaming or chunked uploads.
13
+ - Direct `hosted:` graph mutations require `--repository-id <uuid>` and immediately post one hosted repository commit. They accept `--expected-head`; omit it to let the CLI fetch the current head, or pass the last observed head for optimistic locking. Direct hosted mutations are not local repository commits and do not require a clone or initialization.
14
+ - For local repository operations, select an explicit `--repo` path, an explicitly requested `--personal` repository, or a repository found from the current directory and its ancestors. `--repo` and `--personal` conflict. A missing or invalid local selection fails; it does not fall back to hosted storage.
15
+ - Local `repo:` mutations stage operations without network access. `repo:commit` commits the exact staging digest locally. Use `repo:push` only when publication is requested; use `--create-remote` only when that publication must create the hosted repository.
16
+ - Node values, tag definitions, edge content, and artifact metadata use the file flags documented by each graph command.
17
+ - `repo:` and `hosted:` commands default to human output. Pass `--format=json` explicitly for scripts; other available formats are listed by command help.
18
+ - Attach an artifact with `flywheel hosted:artifact:attach node <owner-id> --repository-id <uuid> --file <path> --metadata-file artifact.json --format=json`; the CLI prepares the upload, sends raw bytes, and commits the attachment.
18
19
  - Mutating commands are subject to per-user write limits: 120 node creates per minute, 2,000 node creates per 24 hours, and 120 graph writes per minute. Graph writes include existing-node commits, edge changes, deletes, merges, tags, sharing, artifact finalization, artifact deletion, and artifact-note updates. On `429`, honor `Retry-After` and retry the same idempotent command after waiting.
19
20
  - Run `flywheel help <command>` for canonical per-command flags, types, defaults, examples, and related commands.
20
21
 
21
- ## MCP-Equivalent Tool Families
22
+ ## CLI Families and Related MCP Operations
22
23
 
23
- The families below mirror `flywheel-mcp-tool-map.md` and list the canonical CLI equivalent of each MCP tool.
24
+ The families below group CLI capabilities alongside related MCP tools. A related MCP tool is not a drop-in replacement for a CLI repository command.
24
25
 
25
26
  ### Discovery and sharing
26
27
 
@@ -30,48 +31,46 @@ The families below mirror `flywheel-mcp-tool-map.md` and list the canonical CLI
30
31
  - `flywheel updates:hide` (mutating; scopes: `write`; HTTP: `POST /updates/{announcement_id}/hide`; MCP equivalent: `flywheel_updates_hide`): Hide a specific announcement.
31
32
  - `flywheel updates:hide-all-active` (mutating; scopes: `write`; HTTP: `POST /updates/hide-all-active`; MCP equivalent: `flywheel_updates_hide_all_active`): Hide all currently active announcements.
32
33
  - `flywheel updates:unhide` (mutating; scopes: `write`; HTTP: `DELETE /updates/{announcement_id}/hide`; MCP equivalent: `flywheel_updates_unhide`): Restore a previously hidden announcement.
33
- - `flywheel nodes:list` (read; scopes: `read`; HTTP: `GET /nodes`; MCP equivalent: `flywheel_list_nodes`): List nodes with optional pagination, status, and archive filters.
34
+ - `flywheel hosted:node:list` (read; scopes: `read`; HTTP: `GET /nodes`; MCP equivalent: `flywheel_list_nodes`): List nodes with optional pagination, status, and archive filters.
34
35
  - `flywheel nodes:resolve-slug` (read; scopes: `read`; HTTP: `GET /nodes/resolve-by-slug`; MCP equivalent: `flywheel_resolve_node_slug`): Resolve a slug to a node ID with explicit conflict handling (`unique`, `context_resolved`, `ambiguous`, `not_found`).
35
36
  - `flywheel nodes:sharing:get` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_get_node_sharing`): Get sharing (access policy) for a node.
36
37
  - `flywheel nodes:sharing:set` (mutating; scopes: `write`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_set_sharing_for_node`): Replace sharing (access policy) for a node.
37
38
  - `flywheel nodes:sharing:set-bulk` (mutating; scopes: `write`; HTTP: `POST /nodes/access-policy/bulk`; MCP equivalent: `flywheel_set_sharing_for_nodes`): Apply one sharing policy to multiple nodes.
38
- - `flywheel nodes:get` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_get_node`): Fetch one node by identifier. Relationship arrays are not guaranteed complete; use relationship paging commands for traversal.
39
- - `flywheel nodes:children` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/children`; MCP equivalent: `flywheel_get_node_children`): Page direct visible children with `--first`, `--after`, and `--projection`.
40
- - `flywheel nodes:parents` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/parents`; MCP equivalent: `flywheel_get_node_parents`): Page direct visible parents with `--first`, `--after`, and `--projection`.
41
- - `flywheel tags:create` (mutating; scopes: `write`; HTTP: `POST /nodes/{root_node_id}/tags`; MCP equivalent: `flywheel_create_node_tag`): Create a reusable tag on a graph root.
42
- - `flywheel tags:update` (mutating; scopes: `write`; HTTP: `PATCH /nodes/{root_node_id}/tags/{tag_id}`; MCP equivalent: `flywheel_update_node_tag`): Update a tag definition.
43
- - `flywheel tags:delete` (mutating; scopes: `write`; HTTP: `DELETE /nodes/{root_node_id}/tags/{tag_id}`; MCP equivalent: `flywheel_delete_node_tag`): Delete a tag definition from the graph.
44
- - `flywheel tags:assign` (mutating; scopes: `write`; HTTP: `PUT /nodes/{node_id}/tags`; MCP equivalent: `flywheel_set_node_tag_assignments`): Assign or clear tags on a node (atomic replace; `--tag_ids` accepts comma-separated IDs; `--expected_revision` is required).
39
+ - `flywheel hosted:node:get` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}`; MCP equivalent: `flywheel_get_node`): Read current hosted node state before writes; it does not return the repository commit head. Relationship arrays are not guaranteed complete; use `hosted:lineage:list` for traversal.
40
+ - `flywheel hosted:lineage:list <node_id> --direction children` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/children`; MCP equivalent: `flywheel_get_node_children`): Page direct visible children with `--first`, `--after`, and `--projection`.
41
+ - `flywheel hosted:lineage:list <node_id> --direction parents` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/parents`; MCP equivalent: `flywheel_get_node_parents`): Page direct visible parents with `--first`, `--after`, and `--projection`.
42
+ - `flywheel hosted:tag:define` (mutating; scopes: `write`; MCP equivalent: `flywheel_create_node_tag`): Define a reusable tag and commit it immediately.
43
+ - `flywheel hosted:tag:update` (mutating; scopes: `write`; MCP equivalent: `flywheel_update_node_tag`): Update a tag definition and commit it immediately.
44
+ - `flywheel hosted:tag:retire` (mutating; scopes: `write`; MCP equivalent: `flywheel_delete_node_tag`): Retire a tag definition and commit it immediately.
45
+ - `flywheel hosted:node-tag:assign` and `flywheel hosted:node-tag:remove` (mutating; scopes: `write`; MCP equivalent: `flywheel_set_node_tag_assignments`): Add or remove one tag assignment per hosted commit.
45
46
  - `flywheel nodes:render:tree` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/tree`; MCP equivalent: `flywheel_get_node_tree`): Render a bounded tree projection for a node.
46
47
  - `flywheel nodes:render:ancestry` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/ancestry`; MCP equivalent: `flywheel_get_node_ancestry`): Render ancestry (roots-ward lineage) for a node.
47
48
  - `flywheel campaign:snapshot` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/campaign/snapshot`; MCP equivalent: `flywheel_get_campaign_snapshot`): Resolve campaign root snapshot for a node.
48
- - `flywheel nodes:audit:list` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/audit`; MCP equivalent: `flywheel_list_audit`): List audit events for node-level actions.
49
49
 
50
- ### Node stage and commit
50
+ ### Hosted graph mutations and stage leases
51
51
 
52
- - `flywheel nodes:commit-new` (mutating; scopes: `write`; HTTP: `POST /nodes/commit-new`; MCP equivalent: `flywheel_commit_new_node`): Create and commit a new node in one request.
53
- - `flywheel nodes:stage:lease:acquire` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/stage/lease/acquire`; MCP equivalent: `flywheel_acquire_stage_lease`): Acquire an edit lease for an existing node.
52
+ - `flywheel hosted:node:create` (mutating; scopes: `write`; MCP equivalent: `flywheel_commit_new_node`): Create a node in one hosted commit.
53
+ - `flywheel nodes:stage:lease:acquire` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/stage/lease/acquire`; MCP equivalent: `flywheel_acquire_stage_lease`): Acquire a session-scoped edit lease for an existing-node MCP staged-payload workflow, not local CLI `repo:` authoring or direct `hosted:` mutations.
54
54
  - `flywheel nodes:stage:lease:heartbeat` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/stage/lease/heartbeat`; MCP equivalent: `flywheel_heartbeat_stage_lease`): Heartbeat an active node stage lease.
55
55
  - `flywheel nodes:stage:lease:release` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/stage/lease/release`; MCP equivalent: `flywheel_release_stage_lease`): Release a node stage lease.
56
- - `flywheel nodes:commit` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/commit`; MCP equivalent: `flywheel_commit_node`): Commit staged changes to an existing node under an active stage lease with a full `--payload_json` body.
57
- - `flywheel nodes:branch` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/branch`; MCP equivalent: `flywheel_branch_node`): Create a child branch from a node. Preflight with `flywheel nodes:get --format=json` and pass `--expected_revision` for optimistic locking.
58
- - `flywheel nodes:merge` (mutating; scopes: `write`; HTTP: `POST /nodes/merge`; MCP equivalent: `flywheel_merge_nodes`): Merge multiple nodes into one resolved node.
59
- - `flywheel nodes:add-parent` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/parents/add`; MCP equivalent: `flywheel_add_parent`): Add a parent-child edge.
60
- - `flywheel nodes:remove-parent` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/parents/remove`; MCP equivalent: `flywheel_remove_parent`): Remove a parent-child edge.
61
- - `flywheel nodes:delete` (mutating; scopes: `write`; HTTP: `DELETE /nodes/{node_id}`; MCP equivalent: `flywheel_delete_node`): Delete a node by identifier. Requires `--yes`. Modes: `cascade` (delete subtree), `detach_shared` (preserve descendants with surviving parents).
62
- - `flywheel nodes:delete-bulk` (mutating; scopes: `write`; HTTP: `POST /nodes/bulk-delete`; MCP equivalent: `flywheel_bulk_delete_nodes`): Delete multiple node subtrees. Requires `--yes`.
56
+ - `flywheel hosted:node:set` (mutating; scopes: `write`; MCP equivalent: `flywheel_commit_node`): Set one node field in one hosted commit.
57
+ - `flywheel hosted:node:branch` (mutating; scopes: `write`; MCP equivalent: `flywheel_branch_node`): Create a child branch in one hosted commit. Pass `--expected-head` when the caller must reject concurrent hosted changes.
58
+ - `flywheel hosted:node:merge` (mutating; scopes: `write`; MCP equivalent: `flywheel_merge_nodes`): Merge repeated `--source` nodes into one node in one hosted commit.
59
+ - `flywheel hosted:lineage:add` (mutating; scopes: `write`; MCP equivalent: `flywheel_add_parent`): Add a parent-child lineage relation in one hosted commit.
60
+ - `flywheel hosted:lineage:remove` (mutating; scopes: `write`; MCP equivalent: `flywheel_remove_parent`): Remove a parent-child lineage relation in one hosted commit.
61
+ - `flywheel hosted:node:tombstone` (mutating; scopes: `write`; MCP equivalent: `flywheel_delete_node`): Tombstone one node in one hosted commit.
62
+ - There is no hosted bulk-tombstone command; run `flywheel hosted:node:tombstone` once per node.
63
63
 
64
64
  ### Artifacts
65
65
 
66
- - `flywheel artifacts:upload:prepare` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/artifacts/uploads/prepare`; MCP equivalent: `flywheel_prepare_artifact_uploads`): Create upload batch with signed per-item upload tickets. Upload raw file bytes to the returned URLs (no JSON metadata wrappers).
67
- - `flywheel artifacts:upload:finalize` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/artifacts/uploads/finalize`; MCP equivalent: `flywheel_finalize_artifact_uploads`): Finalize prepared artifact uploads and attach all staged artifacts in one revision bump.
66
+ - `flywheel hosted:artifact:attach` (mutating; scopes: `write`; related MCP operations: `flywheel_prepare_artifact_uploads`, `flywheel_finalize_artifact_uploads`): Prepare the upload, send raw bytes, and commit the attachment in one CLI invocation. MCP callers separately prepare, upload, and finalize; do not invoke the CLI attachment command twice.
68
67
  - `flywheel remote-artifacts:resolve` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/remote-artifacts/resolve`; MCP equivalent: `flywheel_resolve_remote_artifact`): Resolve and materialize a public HTTPS JSON remote artifact for a node, using the cached artifact when it is still fresh.
69
68
  - `flywheel remote-artifacts:refresh` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/remote-artifacts/refresh`; MCP equivalent: `flywheel_refresh_remote_artifact`): Force refresh and materialize a public HTTPS JSON remote artifact for a node.
70
- - `flywheel artifacts:list` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_list_artifacts`): List artifacts for a node.
71
- - `flywheel artifacts:get` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_get_artifact`): Fetch one artifact metadata record.
72
- - `flywheel artifacts:delete` (mutating; scopes: `write`; HTTP: `DELETE /nodes/{node_id}/artifacts/{artifact_id}`; MCP equivalent: `flywheel_delete_artifact`): Delete an artifact from a node (optimistic locking).
73
- - `flywheel artifacts:delete-bulk` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/artifacts/bulk-delete`; MCP equivalent: `flywheel_bulk_delete_artifacts`): Delete multiple artifacts from one node. Requires `--yes`.
74
- - `flywheel artifacts:note:set` (mutating; scopes: `write`; HTTP: `PATCH /nodes/{node_id}/artifacts/{artifact_id}/note`; MCP equivalent: `flywheel_set_artifact_note`): Add, update, or clear an artifact note (optimistic locking).
69
+ - `flywheel hosted:artifact:list` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/artifacts`; MCP equivalent: `flywheel_list_artifacts`): List artifacts for a node.
70
+ - `flywheel hosted:artifact:get` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/artifacts/{artifact_id}`; MCP equivalent: `flywheel_get_artifact`): Fetch one artifact metadata record.
71
+ - `flywheel hosted:artifact:detach` (mutating; scopes: `write`; MCP equivalent: `flywheel_delete_artifact`): Detach one artifact in one hosted commit.
72
+ - There is no hosted bulk-detach command; run `flywheel hosted:artifact:detach` once per artifact.
73
+ - `flywheel hosted:artifact:set-metadata` (mutating; scopes: `write`; MCP equivalent: `flywheel_set_artifact_note`): Set one artifact metadata field in one hosted commit.
75
74
 
76
75
  ### Executions
77
76
 
@@ -81,7 +80,7 @@ The families below mirror `flywheel-mcp-tool-map.md` and list the canonical CLI
81
80
 
82
81
  ### Compute and budgets
83
82
 
84
- - `flywheel compute:options` (read; scopes: `compute`; HTTP: `GET /compute/catalog`; MCP equivalent: `flywheel_compute_list_options`): List allowed compute catalog options for a node. Use `--node_id`; optionally add `--provider`, `--limit`, or `--detail compact|full`.
83
+ - `flywheel compute:options` (read; scopes: `compute`; HTTP: `GET /compute/catalog`; MCP equivalent: `flywheel_compute_list_options`): List compute catalog options for a node, including policy `allowed` flags. Use it only when a lease is needed and no suitable active lease exists. Use `--node_id`; optionally add `--provider`, `--limit`, or `--detail compact|full` (`full` exposes `region_selection_mode`). Filter `compute.options` to `allowed=true`, then select the offer and region as described in the empirical workflow. Catalog-only read; excludes grant/budget money fields.
85
84
  - `flywheel compute:funding` (read; scopes: `compute`; HTTP: `GET /compute/funding`; MCP equivalent: `flywheel_compute_funding`): Read grant-scoped funding context (`grant_cents`, `remaining_cents`, backing budget fields) before compute acquire.
86
85
  - `flywheel compute:status` (read; scopes: `compute`; HTTP: `GET /compute/status`; MCP equivalent: `flywheel_compute_status`): Return compute lease status. Lease rows include ownership flags so hosts can distinguish user-owned leases from sponsor-visible campaign leases.
87
86
  - `flywheel compute:connection` (read; scopes: `compute`; HTTP: `GET /compute/connection`; MCP equivalent: `flywheel_compute_connection`): Get SSH connection material for a usable lease (token-scoped to `lease_control_token`; only owned leases are connectable).
@@ -94,7 +93,7 @@ The families below mirror `flywheel-mcp-tool-map.md` and list the canonical CLI
94
93
  - `flywheel campaign-budgets:create` (mutating; scopes: `compute`; HTTP: `POST /nodes/{root_node_id}/campaign-budgets`; MCP equivalent: `flywheel_create_campaign_budget`): Create a campaign compute budget grant.
95
94
  - `flywheel campaign-budgets:update` (mutating; scopes: `compute`; HTTP: `PATCH /nodes/{root_node_id}/campaign-budgets/{compute_budget_id}`; MCP equivalent: `flywheel_update_campaign_budget`): Update explicit campaign budget fields such as `--hard_cap_cents`, `--per_user_hard_cap_cents`, `--name`, and `--description`.
96
95
  - `flywheel campaign-budgets:revoke` (mutating; scopes: `compute`; HTTP: `DELETE /nodes/{root_node_id}/campaign-budgets/{compute_budget_id}`; MCP equivalent: `flywheel_revoke_campaign_budget`): Revoke a campaign budget grant.
97
- - `flywheel compute:acquire` (mutating; scopes: `compute`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_compute_acquire`): Acquire managed compute for a node. Set `--requested_sku` to the exact `offer_id` returned by `flywheel compute:options` (`options[].offer_id`), including provider prefixes (e.g., `nebius::...`); do not pass display names or partial IDs. Returns lease state only; poll `flywheel compute:status` for readiness.
96
+ - `flywheel compute:acquire` (mutating; scopes: `compute`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_compute_acquire`): Acquire managed compute for a node once requirements are clear. Requires a valid `--compute_grant_id`; set `--requested_sku` to the exact `offer_id` from an `allowed=true` option returned by `flywheel compute:options` (`compute.options[].offer_id`), including provider prefixes (e.g., `nebius::...`); do not pass display names or partial IDs. Returns lease/provisioning state only (not SSH key material); capture `compute.lease_control_token` from the response for follow-up lease control commands, then poll `flywheel compute:status` for readiness.
98
97
  - `flywheel compute:release` (mutating; scopes: `compute`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_compute_release`): Release one active compute lease (async; use `--wait` to block).
99
98
  - `flywheel compute:release-all` (mutating; scopes: `compute`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_compute_release_all`): Release active leases in the current `lease_control_token` scope; `--force --yes` still requires `--lease_control_token` and explicitly broadens cleanup to all current-user active leases.
100
99
 
@@ -117,8 +116,8 @@ These commands have no MCP counterpart. They cover auth/profile management, acco
117
116
  ### Auth and profiles
118
117
 
119
118
  - `flywheel auth:login` (mutating; scopes: `write`): Bootstrap API key auth via RFC 8628 device flow (FLY-416: replaces legacy /setup-exchange redeem).
120
- - `flywheel auth:keychain:set` (local): Store an API key in the OS keychain for a profile. Reads the key from stdin.
121
- - `flywheel auth:keychain:clear` (local): Remove an API key from the OS keychain for a profile.
119
+ - `flywheel auth:credentials:set [--profile <name>]` (local): Store an API key in the user credential file for a profile. Reads the key from stdin. Omitted `--profile` means `default`, not the active profile.
120
+ - `flywheel auth:credentials:clear [--profile <name>]` (local): Remove only that profile's local API-key entry from the user credential file. Omitted `--profile` means `default`, not the active profile.
122
121
  - `flywheel profile:list` (local): List configured CLI profiles.
123
122
  - `flywheel profile:show` (local): Show a profile definition.
124
123
  - `flywheel profile:set` (local): Create or update a CLI profile (never stores plaintext keys).
@@ -126,14 +125,10 @@ These commands have no MCP counterpart. They cover auth/profile management, acco
126
125
 
127
126
  ### Node helpers (CLI-only)
128
127
 
129
- - `flywheel nodes:create` (mutating; scopes: `write`): Create a minimal node (title only) and emit graph-change event.
128
+ - `flywheel repo:node:create` (mutating; scopes: `write`): Create and stage a minimal node in the local repository.
130
129
  - `flywheel nodes:files` (read; scopes: `read`): List files attached to a node.
131
130
  - `flywheel nodes:sharing:summaries` (read; scopes: `read`): Read access summaries for multiple nodes in one batch.
132
131
 
133
- ### Artifact helpers (CLI-only)
134
-
135
- - `flywheel artifacts:upload` (mutating; scopes: `write`): One-shot upload — runs prepare + raw PUT + finalize from a single invocation. Use this in scripts; the prepare/finalize split is for streaming or chunked uploads.
136
-
137
132
  ### Compute policy and budgets (CLI-only)
138
133
 
139
134
  - `flywheel admin:compute:policy:get` (admin-only read; scopes: `compute`): Read compute budget policy for a node.
@@ -190,69 +185,118 @@ Account merge, detach, and email mutation commands are browser-session-bound. AP
190
185
  - `flywheel api-keys:create` (mutating; scopes: `write`): Create a new API key and return the raw material once.
191
186
  - `flywheel api-keys:delete` (mutating; scopes: `write`): Delete an API key (refuses to delete the active one unless `--allow-self`).
192
187
  - `flywheel api-keys:rotate` (mutating; scopes: `write`): Rotate an API key (refuses to rotate the active one unless `--allow-self`).
193
- <!-- FLY-416: removed — device flow replaces legacy /setup-exchange. -->
194
- <!-- - `flywheel api-keys:setup-exchange:create` (mutating; scopes: `write`): Start browser-assisted setup exchange. -->
195
- <!-- - `flywheel api-keys:setup-exchange:redeem` (mutating; scopes: `write`): Redeem a setup exchange token into a raw API key. -->
196
188
 
197
189
  ## Practical Command Sequences
198
190
 
199
191
  ### List Owned Nodes
200
192
 
201
- 1. `flywheel nodes:list --page 1 --page_size 20`.
193
+ ```bash
194
+ flywheel hosted:node:list --page 1 --page_size 20 --format=json
195
+ ```
202
196
 
203
197
  ### Safe Node Update
204
198
 
205
- 1. `flywheel nodes:get --node_id=<id>`: Read latest node state and capture `revision`.
206
- 2. `flywheel nodes:stage:lease:acquire --node_id=<id> --stage_session_id=<sid> --base_committed_revision=<rev>`: Acquire a session-scoped stage lease.
207
- 3. `flywheel nodes:commit --node_id=<id> --payload_json=@payload.json`: Commit once terminal and contract-complete; the payload file includes `stage_session_id`, `base_committed_revision`, and `staged_payload`.
199
+ Read the hosted node before updating it. Omit `--expected-head` to let the CLI fetch the repository head, or supply a separately observed repository head for optimistic locking; the node read does not return that head.
200
+
201
+ ```bash
202
+ flywheel hosted:node:get "<node-id>" --format=json
203
+ flywheel hosted:node:set "<node-id>" --repository-id "<repository-id>" --field "<field>" --value-file "<value-path>" --format=json
204
+ ```
208
205
 
209
206
  ### Empirical Workflow
210
207
 
211
- 1. `flywheel nodes:commit-new --payload_json=@new-node.json`: Commit a local staged new node to canonical storage as the first persistence boundary.
212
- 2. `flywheel compute:options --node_id=<id> --detail compact`: List allowed offers; pick the exact `offer_id`.
213
- 3. `flywheel compute-grants:request-approval --purpose "train" --requested_sku=<offer_id> --budget_source=user --acquire_node_id=<id>`: Request budget approval. Branch on response `status` (`already_approved` | `approval_required` | `insufficient_credits`).
214
- 4. If `approval_required`: present `approval_url` to the user, then `flywheel compute-grants:list --status=active --approval_session_id=<sid>` to fetch the active grant.
215
- 5. `flywheel compute:acquire --node_id=<id> --compute_grant_id=<gid> --requested_sku=<offer_id> --approval_session_id=<sid>`: Acquire lease.
216
- 6. `flywheel compute:status --lease_control_token=<tok>`: Poll until the lease is ready.
217
- 7. `flywheel executions:launch --node_id=<id>`: Launch execution.
218
- 8. `flywheel executions:list --node_id=<id>`: Poll until execution reaches terminal status.
219
- 9. `flywheel artifacts:upload --node_id=<id> --expected_revision=<rev> --items=@items.json`: One-shot upload using an upload item array, for example `[{"local_path":"results.json","artifact_type":"json"}]` (or use the prepare/finalize split for streaming).
220
- 10. `flywheel nodes:commit --node_id=<id> --payload_json=@payload.json`: Commit terminal empirical node.
208
+ For an identified hosted repository, create the node as a direct hosted commit,
209
+ choose the exact offered SKU, request approval, and retain the response's
210
+ `approval_session_id`:
211
+
212
+ ```bash
213
+ flywheel hosted:node:create --repository-id "<repository-id>" --title "<node-title>" --format=json
214
+ flywheel compute:options --node_id "<node-id>" --detail full --format=json
215
+ flywheel compute-grants:request-approval --purpose "train" --requested_sku "<offer-id>" --region "<region>" --budget_source user --acquire_node_id "<node-id>" --format=json
216
+ ```
217
+
218
+ Filter `compute.options` to `allowed=true`, then use the selected option's exact
219
+ `offer_id` and choose `<region>` from its `regions` list when
220
+ `region_selection_mode` is `required_from_list`. Pass the same offer and region
221
+ to approval and acquisition. For `provider_validated` offers, region is optional;
222
+ omit `--region` from both commands when not selecting one.
223
+
224
+ Branch on the approval response before acquiring compute:
225
+
226
+ - `already_approved`: retain `approval_session_id` and use the returned
227
+ `compute_grant_id` directly.
228
+ - `approval_required`: present `approval_url` to the user and wait for their
229
+ confirmation. Then list active grants scoped to the returned session and use
230
+ `grants[].compute_grant_id`:
231
+
232
+ ```bash
233
+ flywheel compute-grants:list --status active --approval_session_id "<approval-session-id-from-response>" --format=json
234
+ ```
235
+
236
+ - `insufficient_credits`: stop; do not list grants or acquire compute. The user
237
+ must add credits before submitting a new approval request.
238
+
239
+ Once a valid grant is available for that session, acquire compute and continue:
240
+
241
+ ```bash
242
+ flywheel compute:acquire --node_id "<node-id>" --compute_grant_id "<compute-grant-id>" --requested_sku "<offer-id>" --region "<region>" --approval_session_id "<approval-session-id>" --format=json
243
+ flywheel compute:status --lease_control_token "<lease-control-token>" --format=json
244
+ flywheel hosted:node:get "<node-id>" --format=json
245
+ flywheel executions:launch --node_id "<node-id>" --expected_revision "<expected-revision>" --format=json
246
+ flywheel executions:list --node_id "<node-id>" --format=json
247
+ flywheel hosted:artifact:attach node "<node-id>" --repository-id "<repository-id>" --file "<results-path>" --metadata-file "<metadata-path>" --format=json
248
+ flywheel hosted:node:set "<node-id>" --repository-id "<repository-id>" --field summary --value-file "<summary-path>" --format=json
249
+ ```
250
+
251
+ Use the node read response's current integer `revision` for
252
+ `<expected-revision>` when launching execution, not the repository commit head.
253
+
254
+ ### Local authoring workflow
255
+
256
+ `<repository-path>` is a new local repository directory. `<node-title>` and
257
+ `<commit-message>` are user-supplied text, and `<node-id>` comes from the
258
+ preceding create response. Use the push line only when publication is requested.
259
+
260
+ ```bash
261
+ flywheel repo:init "<repository-path>" --format=json
262
+ flywheel repo:node:create --repo "<repository-path>" --title "<node-title>" --format=json
263
+ flywheel repo:status --repo "<repository-path>" --format=json
264
+ flywheel repo:commit --repo "<repository-path>" --message "<commit-message>" --format=json
265
+ flywheel repo:status --repo "<repository-path>" --format=json
266
+ flywheel repo:node:get "<node-id>" --repo "<repository-path>" --format=json
267
+ flywheel repo:push --repo "<repository-path>" --create-remote --format=json
268
+ flywheel repo:status --repo "<repository-path>" --format=json
269
+ flywheel hosted:node:get "<node-id>" --format=json
270
+ ```
221
271
 
222
272
  ## Runtime Guidance
223
273
 
224
274
  - `flywheel nodes:resolve-slug` resolves human-facing slug references. If response status is `ambiguous`, ask the user to confirm the intended `node_id` before mutating anything.
225
- - `flywheel nodes:get` reads the current node state before writes; capture `revision` for optimistic-locking writes.
226
- - `flywheel nodes:stage:lease:acquire`, `flywheel nodes:stage:lease:heartbeat`, `flywheel nodes:stage:lease:release` coordinate session-scoped local staged edits for an existing node before commit.
227
275
  - `flywheel campaign:snapshot` reads the current derived campaign state for a node's root campaign instead of inferring standings from freeform text.
228
276
  - `flywheel nodes:sharing:get` verifies sharing state after sharing writes before reporting private/shared/public state.
229
- - `flywheel tags:assign` accepts `--tag_ids t1,t2`; use `--tag_ids ""` to clear all assignments and always include `--expected_revision`.
230
- - `flywheel nodes:list` accepts pagination plus status/archive filters such as `--page`, `--page_size`, `--status`, and `--include_archived`.
277
+ - `flywheel hosted:node-tag:assign <scope-node-id> <node-id> <tag-id> --repository-id=<repository-id> --expected-head=<head> --format=json` assigns one tag with optimistic locking; use `flywheel hosted:node-tag:remove` to remove one.
278
+ - `flywheel hosted:node:list --page 1 --page_size 20 --format=json` accepts the preserved pagination and status/archive filters.
231
279
  - `flywheel compute:status` checks first when work may need managed compute (GPU), using the active `--lease_control_token` from prior acquire (or pass it explicitly).
232
- - `flywheel compute-grants:list` lists active compute grants and selects one `--compute_grant_id` for acquisition.
233
- - `flywheel compute-grants:request-approval` requests/confirms budget before acquire and chooses a budget source (`user` or `root`); branch on status (`already_approved`, `approval_required`, `insufficient_credits`).
234
280
  - `flywheel compute:connection` reads SSH connection material for the active user lease once status indicates the lease is usable, scoped by `--lease_control_token`.
235
- - `flywheel compute:options` is used when a lease is needed and no suitable active lease exists; copy the exact provider-qualified `offer_id` (`provider::offer_id`) and `region` from `options[].offer_id` verbatim. Catalog-only read; excludes grant/budget money fields.
236
281
  - `flywheel compute:funding` reads grant-scoped funding context (`grant_cents`, `remaining_cents`, backing budget fields) for the selected `--compute_grant_id` before acquire.
237
- - `flywheel compute:acquire` provisions compute once requirements are clear. Requires a valid `--compute_grant_id`; set `--requested_sku` to the exact selected `options[].offer_id`; returns lease/provisioning state only (not SSH key material). Capture `compute.lease_control_token` from the response for follow-up lease control commands.
238
282
  - `flywheel compute:release` releases compute when no longer needed, scoped by `--lease_control_token`. Use `--wait` to block until release completes.
239
283
  - `flywheel executions:launch`, `flywheel executions:list`, `flywheel executions:terminate` manage execution status transitions.
240
- - `flywheel artifacts:upload:prepare` prepares one or more signed raw-file upload requests for concrete deliverables/evidence produced by the work. `flywheel artifacts:upload` is the one-shot convenience wrapper for typical scripts.
241
- - `flywheel artifacts:upload:finalize` finalizes a staged artifact batch and appends all uploaded artifacts in one revision bump.
242
- - `flywheel artifacts:delete` removes an accidental/obsolete node artifact.
243
- - `flywheel artifacts:list`, `flywheel artifacts:get` inspect node artifact metadata (`title` is the display label) and consume `storage_url` for raw artifact bytes only.
244
- - `flywheel nodes:commit-new`, `flywheel nodes:commit` publish the caller's full staged payload once terminal and contract-complete; commit on an existing node requires an active stage lease and a `--payload_json` body with explicit `base_committed_revision`.
284
+ - `flywheel hosted:artifact:attach node <node-id> --repository-id=<repository-id> --file=results.json --metadata-file=metadata.json --format=json` uploads and commits one artifact.
285
+ - `flywheel hosted:artifact:detach node <node-id> <artifact-id> --repository-id=<repository-id> --format=json` removes an accidental or obsolete node artifact.
286
+ - `flywheel hosted:artifact:list --node_id=<id> --format=json` and `flywheel hosted:artifact:get --node_id=<id> --artifact_id=<artifact-id> --format=json` inspect node artifact metadata and expose `storage_url` for raw artifact bytes.
287
+ - `flywheel hosted:node:create --repository-id=<repository-id> --title=<title> --format=json` and `flywheel hosted:node:set <node-id> --repository-id=<repository-id> --field=<field> --value-file=<path> --format=json` publish repository commits directly.
245
288
 
246
289
  ## Admin only (FLY-359)
247
290
 
248
- These commands require `FLYWHEEL_ADMIN_KEY` in the environment (forwarded as the `X-Admin-Key` header) or an admin browser session. Default help and JSON help hide admin commands unless `FLYWHEEL_ADMIN_KEY` or `FLYWHEEL_CLI_INTERNAL=1` is present, but explicit `flywheel help admin:<command>` still works. API-key-only callers fail locally with `admin_auth_required`. The endpoints are omitted from the public OpenAPI schema and from the API-key allowlist.
291
+ These commands require `FLYWHEEL_ADMIN_KEY` in the environment (forwarded as the `X-Admin-Key` header) or an admin browser session. Default help and JSON help hide admin commands unless `FLYWHEEL_ADMIN_KEY` or `FLYWHEEL_CLI_INTERNAL=1` is present; `admin:<command>` below is generic syntax, not a concrete public command. API-key-only callers fail locally with `admin_auth_required`. The endpoints are omitted from the public OpenAPI schema and from the API-key allowlist.
249
292
 
250
293
  - `flywheel admin:graphs:list` — list every root-node graph across all users. Filters: `--tag-id`, `--owner-user-id`, `--created-after`, `--created-before`, `--cursor`, `--page-size` (1..200).
251
294
  - `flywheel admin:graphs:export --root-node-id=<id>` — export one graph as canonical JSON, bypassing per-caller visibility.
252
295
  - `flywheel admin:graphs:export:stream` — stream canonical graph JSON for many graphs as NDJSON (one page per call, `--out=<file>` to write to disk). Filters match `admin:graphs:list`.
296
+ - `flywheel admin:nodes:audit:list --node_id=<node-id>` — list audit events for node-level actions across all users. Use `--limit` to bound the number of events.
253
297
 
254
298
  ## See Also
255
299
 
256
300
  - `flywheel-mcp-tool-map.md` — the matching MCP routing reference.
257
301
  - `flywheel help <command>` — canonical per-command flags, types, defaults, examples, and related commands.
258
- - `flywheel --format json|tsv|csv|table` — output format selector for scripting workflows.
302
+ - `flywheel hosted:node:list --format json` — a concrete command with the output-format selector for scripting workflows.
@@ -11,11 +11,11 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
11
11
  - Node body state is `title`, Markdown `content`, and optional `summary`; represent observations, decisions, experiments, and evidence with Markdown structure, tags, artifacts, and executions.
12
12
  - Node references include immutable `node_id` and optional immutable `slug_name`; prefer communicating both together for human clarity and disambiguation.
13
13
  - Graph topology should encode logical/causal relations between concepts and experiments. Avoid defaulting to shallow root-only branching unless work items are truly independent.
14
- - Node staging is local (non-canonical) and commit is the only canonical persistence boundary (`commit_new_node`, `commit_node`).
15
- - Mutating node writes are optimistic-locking operations: read latest state, pass `expected_revision` or `base_committed_revision` as required, and handle `409 conflict` with explicit reconciliation.
14
+ - Node-body staging for `flywheel_commit_new_node` and `flywheel_commit_node` is caller-local until commit. Topology mutations such as `flywheel_branch_node`, `flywheel_merge_nodes`, `flywheel_add_parent`, and `flywheel_remove_parent` become canonical immediately when they succeed.
15
+ - Mutating node writes are optimistic-locking operations: read latest state, pass `expected_revision` or `base_committed_revision` as required, and reconcile a `409 conflict` explicitly.
16
16
  - Mutating operations are idempotent; MCP tool transport auto-manages `Idempotency-Key` on mutating tool calls.
17
- - Existing-node field editing may use a session-scoped stage lease (`flywheel_acquire_stage_lease`, `flywheel_heartbeat_stage_lease`, `flywheel_release_stage_lease`) to coordinate local staged state before commit.
18
- - Existing-node commit publishes a full staged payload under an active stage lease: commit requests require `stage_session_id`, `base_committed_revision`, and `staged_payload`; conflicts on stale committed revisions are surfaced directly and are not transport-retried.
17
+ - For a new node, call `flywheel_commit_new_node` with caller-local `local_temp_node_id`, `parent_ids`, and the full `staged_payload`; no existing-node lease is acquired. For an existing node, first read its committed revision, acquire a stage lease using the caller's `stage_session_id`, keep the staged body caller-local, then call `flywheel_commit_node` with that `stage_session_id`, `base_committed_revision`, and the full `staged_payload`. Do not translate either flow into a CLI repository commit.
18
+ - Existing-node commit conflicts on stale committed revisions are surfaced directly and are not transport-retried.
19
19
  - Committed node state uses the same canonical body fields for every node; `summary` may be empty when the node body is intentionally represented by content, artifacts, tags, or executions.
20
20
  - When code is involved, pass `repo_url`/`branch_name`/`head_commit_sha` and align git structure with graph topology where practical (without forcing one-to-one mapping).
21
21
  - Content, summaries, and artifacts should be reproduction-grade: enough setup, method, evidence, and interpretation for another reader to reproduce or audit results.
@@ -49,7 +49,7 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
49
49
  - `flywheel_get_node_tree` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/tree`; full-surface only): Get a root-aware bounded tree/DAG projection for an anchor node.
50
50
  - `flywheel_get_node_ancestry` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/ancestry`; full-surface only): Get ordered ancestry metadata from an anchor node to root boundaries.
51
51
  - `flywheel_get_campaign_snapshot` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/campaign/snapshot`; core surface): Read the current campaign snapshot for a node's root campaign, including configured views and derived records.
52
- - `flywheel_list_audit` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/audit`; full-surface only): List node MCP audit events.
52
+ - `flywheel_admin_nodes_audit_list` (admin-only read; scopes: `read`; HTTP: `GET /admin/nodes/{node_id}/audit`; full-surface only): List audit events from every actor on the node; requires admin authorization.
53
53
 
54
54
  ### Node stage and commit
55
55
 
@@ -112,7 +112,7 @@ Hook workflow-if contract (first version):
112
112
 
113
113
  ### Compute and budgets
114
114
 
115
- - `flywheel_compute_list_options` (read; scopes: `compute`; HTTP: `GET /compute/catalog`; core surface): List managed compute options allowed for a node. When using grant-backed compute, pass the same compute_grant_id you will use for acquire.
115
+ - `flywheel_compute_list_options` (read; scopes: `compute`; HTTP: `GET /compute/catalog`; core surface): List managed compute catalog options and their policy `allowed` flags for a node when no suitable active lease exists; no compute grant is required. This catalog-only read excludes grant/budget money fields. Filter `compute.options` to `allowed=true`; copy the exact provider-qualified `compute.options[].offer_id` (`provider::offer_id`) verbatim (not a display name or partial ID), and select region as described in the empirical workflow.
116
116
  - `flywheel_compute_funding` (read; scopes: `compute`; HTTP: `GET /compute/funding`; core surface): Read grant-scoped funding context (`grant_cents`, `remaining_cents`, and backing budget fields) for a `compute_grant_id` before compute acquire.
117
117
  - `flywheel_compute_status` (read; scopes: `compute`; HTTP: `GET /compute/status`; core surface): Read managed compute lease status for the current user and current lease_control_token scope. Lease rows include ownership flags so hosts can distinguish user-owned leases from sponsor-visible campaign leases. When checking a grant-backed lease, reuse the same compute_grant_id passed to acquire.
118
118
  - `flywheel_compute_connection` (read; scopes: `compute`; HTTP: `GET /compute/connection`; core surface): Read SSH connection material for an active managed compute lease once flywheel_compute_status indicates the lease is usable. This tool is token-scoped to lease_control_token and only leases owned by the current user are connectable. Pass lease_id or node_id to disambiguate when needed.
@@ -126,7 +126,7 @@ Hook workflow-if contract (first version):
126
126
  - `flywheel_create_campaign_budget` (mutating; scopes: `compute`; HTTP: `POST /nodes/{root_node_id}/campaign-budgets`; full-surface only): Create an organizer-funded campaign compute budget shared with participants.
127
127
  - `flywheel_update_campaign_budget` (mutating; scopes: `compute`; HTTP: `PATCH /nodes/{root_node_id}/campaign-budgets/{compute_budget_id}`; full-surface only): Update hard caps or metadata for an organizer-funded campaign compute budget.
128
128
  - `flywheel_revoke_campaign_budget` (mutating; scopes: `compute`; HTTP: `DELETE /nodes/{root_node_id}/campaign-budgets/{compute_budget_id}`; full-surface only): Revoke an organizer-funded campaign compute budget.
129
- - `flywheel_compute_acquire` (mutating; scopes: `compute`; HTTP: `tool-mediated`; core surface): Acquire managed compute for a node with explicit SKU + region and required compute_grant_id (returns accepted/completed lease state only; poll flywheel_compute_status for readiness, not SSH key material). This tool forwards approval_session_id. Set `requested_sku` to the exact `offer_id` returned by `flywheel_compute_list_options` (`options[].offer_id`), including provider prefixes (for example `nebius::...`); do not pass display names or partial IDs.
129
+ - `flywheel_compute_acquire` (mutating; scopes: `compute`; HTTP: `tool-mediated`; core surface): Acquire managed compute for a node with explicit SKU, a region when the selected offer requires one, and required compute_grant_id (returns accepted/completed lease state only; poll flywheel_compute_status for readiness, not SSH key material). This tool forwards approval_session_id. Set `requested_sku` to the exact `offer_id` from an `allowed=true` option returned by `flywheel_compute_list_options` (`compute.options[].offer_id`), including provider prefixes (for example `nebius::...`); do not pass display names or partial IDs. Capture `compute.lease_control_token` from the response for follow-up lease-control tools.
130
130
  - `flywheel_compute_release` (mutating; scopes: `compute`; HTTP: `tool-mediated`; core surface): Asynchronously release one managed compute lease by lease_id within the current lease_control_token scope.
131
131
  - `flywheel_compute_release_all` (mutating; scopes: `compute`; HTTP: `tool-mediated`; core surface): Asynchronously release active managed compute leases in the current lease_control_token scope; set `force=true` with `lease_control_token` for explicit account-wide cleanup for the current user.
132
132
 
@@ -146,37 +146,50 @@ Hook workflow-if contract (first version):
146
146
 
147
147
  ### List Owned Nodes
148
148
 
149
- 1. `flywheel_list_nodes` with `{'owners': ['me'], 'projection': 'core'}`.
149
+ Ask `flywheel_list_nodes` for the caller's owned nodes with the core projection.
150
150
 
151
151
  ### Safe Node Update
152
152
 
153
- 1. `flywheel_get_node`: Read latest node state before mutating fields.
154
- 2. `flywheel_acquire_stage_lease`: Acquire a session-scoped stage lease before editing an existing node locally.
155
- 3. `flywheel_commit_node`: Commit with `stage_session_id`, `base_committed_revision`, and full `staged_payload` once terminal and contract-complete.
153
+ Read the latest existing node. With the observed committed revision, acquire an
154
+ existing-node stage lease using a caller `stage_session_id`. Keep the complete
155
+ staged body caller-local, then call `flywheel_commit_node` with the same
156
+ `stage_session_id`, `base_committed_revision`, and full `staged_payload`. A
157
+ successful commit releases the lease. On a stale-revision `409`, release the
158
+ caller's stale lease, reread and reconcile the node, then acquire a fresh lease
159
+ at the latest committed revision before retrying.
156
160
 
157
161
  ### Empirical Workflow
158
162
 
159
- 1. `flywheel_commit_new_node`: Commit a local staged new node to canonical storage as the first persistence boundary.
160
- 2. `flywheel_commit_node`: Commit staged empirical fields with `stage_session_id`, `base_committed_revision`, and a full `staged_payload` once the working state is ready to publish.
161
- 3. `flywheel_request_compute_grant_approval`: If compute is needed, request budget approval context first. Branch on response status.
162
- 4. Branch on `flywheel_request_compute_grant_approval.status`: Branch by response status (`already_approved`, `approval_required`, `insufficient_credits`).. if `already_approved` then `reuse_compute_grant_id`: Use returned `compute_grant_id` directly for flywheel_compute_acquire.. if `approval_required` then `present_approval_url_to_user`: Present `approval_url` to the user; the user opens it and confirms budget approval.; `flywheel_list_compute_grants`: After approval, list active grants for the current `approval_session_id` and use the returned `compute_grant_id` for acquire.. if `insufficient_credits` then `request_user_credit_top_up`: No `approval_url` is returned. Ask the user to add credits, then retry flywheel_request_compute_grant_approval.
163
- 5. `flywheel_compute_acquire`: Acquire lease with `compute_grant_id`; include `approval_session_id` from approval response and set `requested_sku` to the exact selected `options[].offer_id`.
164
- 6. `flywheel_compute_status`: Poll until the active lease is ready; follow `recommended_next_action`.
165
- 7. `flywheel_launch_execution`: Launch execution once compute and inputs are ready.
166
- 8. `flywheel_list_executions`: Poll until execution reaches terminal status.
167
- 9. `flywheel_prepare_artifact_uploads`: Prepare signed upload URLs for empirical evidence.
168
- 10. `raw_file_upload`: Upload raw bytes to each signed URL with required headers.
169
- 11. `flywheel_finalize_artifact_uploads`: Finalize prepared uploads before commit when the work produced evidence artifacts.
170
- 12. `flywheel_commit_node`: Commit terminal empirical node once contract requirements are satisfied.
163
+ For a new empirical node, call `flywheel_commit_new_node` with a caller-local
164
+ `local_temp_node_id`, intended `parent_ids`, and a full `staged_payload`; do
165
+ not acquire an existing-node lease. For a later update to that canonical node,
166
+ use the existing-node lease and commit flow above.
167
+
168
+ If compute is needed, call `flywheel_compute_list_options` with `detail="full"`,
169
+ filter `compute.options` to `allowed=true`, and select the exact `offer_id`.
170
+ For `region_selection_mode` `required_from_list`, choose `region` from the
171
+ selected option's `regions`. For `provider_validated`, pass `region=""` to
172
+ `flywheel_request_compute_grant_approval`, then omit `region` from acquisition.
173
+ Call approval with the selected option's `provider`, that `requested_sku`,
174
+ the selected region or empty string, the intended `grant_action`, purpose,
175
+ and budget source. Branch on its status.
176
+ Reuse the returned grant for `already_approved`; present `approval_url` to the
177
+ user and then obtain an active grant scoped to the approval session for
178
+ `approval_required`; ask the user to add credits before retrying for
179
+ `insufficient_credits`. Acquire compute using the same selected offer, grant,
180
+ approval session, and selected region when required, then poll status to
181
+ readiness. Launch and poll execution, prepare uploads, send raw file bytes to
182
+ the signed URLs, and finalize the artifact batch. Then reread the node and
183
+ acquire a fresh stage lease at its latest committed revision. Publish the result
184
+ fields and terminal state together in one full `staged_payload` through
185
+ `flywheel_commit_node`.
171
186
 
172
187
  ### Hook Automation Workflow
173
188
 
174
- 1. `flywheel_create_hook_secret`: Create endpoint credentials if the action needs auth.
175
- 2. `flywheel_create_hook`: Define `workflow_yaml.on`, scope, `workflow_yaml.if`, and `jobs.main.steps`.
176
- 3. `flywheel_set_hook_enabled`: Enable hook once configuration is complete.
177
- 4. `flywheel_list_hooks`: Confirm the hook is enabled and scoped correctly.
178
- 5. `flywheel_finalize_artifact_uploads` or `flywheel_set_sharing_for_node`: Emit `artifact.finalized` on successful finalize writes or `node.published` when an eligible submission node becomes public.
179
- 6. `flywheel_list_hook_runs`: Inspect run outcomes (`queued`, `running`, `succeeded`, `failed`).
189
+ Create a hook secret when the action needs endpoint credentials, then create the
190
+ hook with its trigger, scope, condition, and steps. Enable it once configured,
191
+ verify its scope and enabled state, and inspect hook-run outcomes after the
192
+ triggering artifact finalization or eligible node publication.
180
193
 
181
194
  ## Runtime Guidance
182
195
 
@@ -191,16 +204,13 @@ Hook workflow-if contract (first version):
191
204
  - `flywheel_list_compute_grants`: list active compute grants (funded by user/root budgets) and select one `compute_grant_id` for acquisition.
192
205
  - `flywheel_request_compute_grant_approval`: request/confirm budget before acquire and choose a budget source (`user` or `root`); branch on status (`already_approved`, `approval_required`, `insufficient_credits`).
193
206
  - `flywheel_compute_connection`: read SSH connection material for the active user lease once status indicates the lease is usable, scoped by lease_control_token.
194
- - `flywheel_compute_list_options`: use when a lease is needed and no suitable active lease exists, then select the exact provider-qualified `offer_id` from `options[].offer_id` (`provider::offer_id`) and `region`. Copy `offer_id` verbatim; do not strip prefixes or substitute display names. This is a catalog-only read and excludes grant/budget money fields.
195
207
  - `flywheel_compute_funding`: read grant-scoped funding context (`grant_cents`, `remaining_cents`, backing budget fields) for the selected `compute_grant_id` before acquire.
196
- - `flywheel_compute_acquire`: provision compute once requirements are clear. This requires a valid `compute_grant_id`; set `requested_sku` to the exact selected `options[].offer_id`; and returns lease/provisioning state only (not SSH key material). Capture `compute.lease_control_token` from the response for follow-up lease control tools.
197
208
  - `flywheel_compute_release`: release compute when no longer needed, scoped by lease_control_token.
198
209
  - `flywheel_launch_execution`, `flywheel_list_executions`, `flywheel_terminate_execution`: manage execution status transitions.
199
210
  - `flywheel_prepare_artifact_uploads`: prepare one or more signed raw-file upload requests for concrete deliverables/evidence produced by the work.
200
211
  - `flywheel_finalize_artifact_uploads`: finalize a staged artifact batch and append all uploaded artifacts in one revision bump.
201
212
  - `flywheel_delete_artifact`: remove an accidental/obsolete node artifact.
202
213
  - `flywheel_list_artifacts`, `flywheel_get_artifact`: inspect node artifact metadata (`title` is the display label) and consume `storage_url` for raw artifact bytes only.
203
- - `flywheel_commit_new_node`, `flywheel_commit_node`: publish the caller's full staged payload for an existing node once terminal and contract-complete; requires an active stage lease and explicit `base_committed_revision`.
204
214
 
205
215
  ### Admin only (FLY-359)
206
216
 
@@ -13,4 +13,4 @@ npx --yes @paradigma-inc/flywheel uninstall --claude
13
13
  npx --yes @paradigma-inc/flywheel setup --mode mcp --claude
14
14
  ```
15
15
 
16
- If your previous install used a server name different from `flywheel`, pass `--name <old-name>` to uninstall that specific entry.
16
+ If your previous install used a server name different from `flywheel`, append `--name "<old-name>"` to the uninstall command above to remove that selected entry.
@@ -13,4 +13,4 @@ npx --yes @paradigma-inc/flywheel uninstall --codex
13
13
  npx --yes @paradigma-inc/flywheel setup --mode mcp --codex
14
14
  ```
15
15
 
16
- If your previous install used a server name different from `flywheel`, pass `--name <old-name>` to uninstall that specific entry.
16
+ If your previous install used a server name different from `flywheel`, append `--name "<old-name>"` to the uninstall command above to remove that selected entry.