@paradigma-inc/flywheel 0.1.26 → 0.1.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (566) hide show
  1. package/README.md +117 -60
  2. package/bin/flywheel.js +10 -3
  3. package/package.json +5 -1
  4. package/skills/flywheel/SKILL.md +13 -1
  5. package/skills/flywheel/campaigns/participating-in-a-campaign.md +2 -2
  6. package/skills/flywheel/compute/managed-compute.md +26 -7
  7. package/skills/flywheel/example-workflows/organizing-exploring-and-iterating-on-a-research-topic.md +11 -11
  8. package/skills/flywheel/example-workflows/reproducing-papers-on-a-budget.md +8 -8
  9. package/skills/flywheel/getting-started/flywheel-tutorial-overview.md +2 -1
  10. package/skills/flywheel/references/ARTIFACTS.md +48 -0
  11. package/skills/flywheel/references/INTERFACES.md +208 -0
  12. package/skills/flywheel/references/experiment-design-protocol.md +5 -5
  13. package/skills/flywheel/references/flywheel-cli-tool-map.md +244 -0
  14. package/skills/flywheel/references/flywheel-mcp-tool-map.md +109 -63
  15. package/skills/flywheel/setting-up-flywheel/claude-code-cli-installation.md +1 -1
  16. package/skills/flywheel/setting-up-flywheel/codex-cli-installation.md +1 -1
  17. package/skills/flywheel/setting-up-flywheel/how-can-i-get-an-authorized-client_id-for-the-oauth-flow.md +3 -3
  18. package/skills/flywheel/setting-up-flywheel/installation-overview.md +19 -4
  19. package/skills/flywheel/setting-up-flywheel/other-hosts-installation.md +1 -1
  20. package/skills/flywheel/usage-and-workflows/what-to-do-with-flywheel.md +28 -1
  21. package/skills/flywheel/web-ui/the-flywheel-web-ui.md +1 -1
  22. package/skills/flywheel-auto/SKILL.md +23 -12
  23. package/skills/flywheel-auto/references/ARTIFACTS.md +1 -1
  24. package/skills/flywheel-auto/references/INTERFACES.md +61 -59
  25. package/skills/flywheel-auto/references/experiment-design-protocol.md +5 -5
  26. package/skills/flywheel-auto/references/flywheel-cli-tool-map.md +244 -0
  27. package/skills/flywheel-auto/references/flywheel-mcp-tool-map.md +76 -63
  28. package/skills/flywheel-lookahead/SKILL.md +22 -11
  29. package/skills/flywheel-lookahead/references/ARTIFACTS.md +1 -1
  30. package/skills/flywheel-lookahead/references/INTERFACES.md +61 -59
  31. package/skills/flywheel-lookahead/references/flywheel-cli-tool-map.md +244 -0
  32. package/skills/flywheel-lookahead/references/flywheel-mcp-tool-map.md +76 -63
  33. package/skills/flywheel-prove/SKILL.md +17 -0
  34. package/skills/flywheel-reproduce/SKILL.md +23 -12
  35. package/skills/flywheel-reproduce/references/ARTIFACTS.md +1 -1
  36. package/skills/flywheel-reproduce/references/INTERFACES.md +61 -59
  37. package/skills/flywheel-reproduce/references/experiment-design-protocol.md +5 -5
  38. package/skills/flywheel-reproduce/references/flywheel-cli-tool-map.md +244 -0
  39. package/skills/flywheel-reproduce/references/flywheel-mcp-tool-map.md +76 -63
  40. package/skills/flywheel-to-graph/SKILL.md +20 -9
  41. package/skills/flywheel-to-graph/references/ARTIFACTS.md +1 -1
  42. package/skills/flywheel-to-graph/references/INTERFACES.md +61 -59
  43. package/skills/flywheel-to-graph/references/flywheel-cli-tool-map.md +244 -0
  44. package/skills/flywheel-to-graph/references/flywheel-mcp-tool-map.md +76 -63
  45. package/skills/flywheel-tree/SKILL.md +70 -0
  46. package/skills/flywheel-tree/agents/interface.yaml +4 -0
  47. package/skills/flywheel-tree/assets/ansi_palette.json +29 -0
  48. package/skills/flywheel-tree/references/workflow.md +108 -0
  49. package/skills/flywheel-tree/scripts/render_tree.py +407 -0
  50. package/skills/flywheel-tree/scripts/render_tree_via_mcp.py +694 -0
  51. package/src/cli.mjs +204 -582
  52. package/src/mcp-writer.mjs +2 -2
  53. package/src/runtime/delegate.mjs +21 -0
  54. package/src/runtime/required-runtime-commands.json +117 -0
  55. package/src/runtime/runtime-config.mjs +84 -0
  56. package/src/runtime/vendor/.gitkeep +1 -0
  57. package/src/runtime/vendor/flywheel-cli-dist/auth/active-key-id.d.ts +1 -0
  58. package/src/runtime/vendor/flywheel-cli-dist/auth/active-key-id.js +22 -0
  59. package/src/runtime/vendor/flywheel-cli-dist/auth/active-key-id.js.map +1 -0
  60. package/src/runtime/vendor/flywheel-cli-dist/auth/baseurl.d.ts +35 -0
  61. package/src/runtime/vendor/flywheel-cli-dist/auth/baseurl.js +64 -0
  62. package/src/runtime/vendor/flywheel-cli-dist/auth/baseurl.js.map +1 -0
  63. package/src/runtime/vendor/flywheel-cli-dist/auth/config.d.ts +34 -0
  64. package/src/runtime/vendor/flywheel-cli-dist/auth/config.js +92 -0
  65. package/src/runtime/vendor/flywheel-cli-dist/auth/config.js.map +1 -0
  66. package/src/runtime/vendor/flywheel-cli-dist/auth/fingerprint.d.ts +5 -0
  67. package/src/runtime/vendor/flywheel-cli-dist/auth/fingerprint.js +12 -0
  68. package/src/runtime/vendor/flywheel-cli-dist/auth/fingerprint.js.map +1 -0
  69. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.d.ts +4 -0
  70. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.js +31 -0
  71. package/src/runtime/vendor/flywheel-cli-dist/auth/keychain.js.map +1 -0
  72. package/src/runtime/vendor/flywheel-cli-dist/auth/login.d.ts +23 -0
  73. package/src/runtime/vendor/flywheel-cli-dist/auth/login.js +387 -0
  74. package/src/runtime/vendor/flywheel-cli-dist/auth/login.js.map +1 -0
  75. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.d.ts +15 -0
  76. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.js +150 -0
  77. package/src/runtime/vendor/flywheel-cli-dist/auth/profile.js.map +1 -0
  78. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.d.ts +26 -0
  79. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.js +27 -0
  80. package/src/runtime/vendor/flywheel-cli-dist/auth/profiles.js.map +1 -0
  81. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.d.ts +32 -0
  82. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.js +171 -0
  83. package/src/runtime/vendor/flywheel-cli-dist/commands/_artifacts-upload-helpers.js.map +1 -0
  84. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.d.ts +2 -0
  85. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.js +26 -0
  86. package/src/runtime/vendor/flywheel-cli-dist/commands/_open-url.js.map +1 -0
  87. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-writer.d.ts +34 -0
  88. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-writer.js +63 -0
  89. package/src/runtime/vendor/flywheel-cli-dist/commands/_stream-writer.js.map +1 -0
  90. package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.d.ts +29 -0
  91. package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.js +75 -0
  92. package/src/runtime/vendor/flywheel-cli-dist/commands/_wait-polling.js.map +1 -0
  93. package/src/runtime/vendor/flywheel-cli-dist/commands/account-detach.d.ts +2 -0
  94. package/src/runtime/vendor/flywheel-cli-dist/commands/account-detach.js +13 -0
  95. package/src/runtime/vendor/flywheel-cli-dist/commands/account-detach.js.map +1 -0
  96. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-add.d.ts +2 -0
  97. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-add.js +6 -0
  98. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-add.js.map +1 -0
  99. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-remove.d.ts +2 -0
  100. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-remove.js +6 -0
  101. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-remove.js.map +1 -0
  102. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-set-primary.d.ts +2 -0
  103. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-set-primary.js +6 -0
  104. package/src/runtime/vendor/flywheel-cli-dist/commands/account-emails-set-primary.js.map +1 -0
  105. package/src/runtime/vendor/flywheel-cli-dist/commands/account-get.d.ts +1 -0
  106. package/src/runtime/vendor/flywheel-cli-dist/commands/account-get.js +6 -0
  107. package/src/runtime/vendor/flywheel-cli-dist/commands/account-get.js.map +1 -0
  108. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-preview.d.ts +2 -0
  109. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-preview.js +6 -0
  110. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-preview.js.map +1 -0
  111. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-proof.d.ts +2 -0
  112. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-proof.js +8 -0
  113. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge-proof.js.map +1 -0
  114. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge.d.ts +2 -0
  115. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge.js +11 -0
  116. package/src/runtime/vendor/flywheel-cli-dist/commands/account-merge.js.map +1 -0
  117. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.d.ts +13 -0
  118. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.js +13 -0
  119. package/src/runtime/vendor/flywheel-cli-dist/commands/aliases.js.map +1 -0
  120. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-create.d.ts +2 -0
  121. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-create.js +12 -0
  122. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-create.js.map +1 -0
  123. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-delete.d.ts +2 -0
  124. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-delete.js +20 -0
  125. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-delete.js.map +1 -0
  126. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-list.d.ts +1 -0
  127. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-list.js +6 -0
  128. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-list.js.map +1 -0
  129. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-rotate.d.ts +2 -0
  130. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-rotate.js +21 -0
  131. package/src/runtime/vendor/flywheel-cli-dist/commands/api-keys-rotate.js.map +1 -0
  132. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-expire.d.ts +2 -0
  133. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-expire.js +8 -0
  134. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-expire.js.map +1 -0
  135. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-heartbeat.d.ts +2 -0
  136. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-heartbeat.js +29 -0
  137. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-heartbeat.js.map +1 -0
  138. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-list.d.ts +2 -0
  139. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-list.js +10 -0
  140. package/src/runtime/vendor/flywheel-cli-dist/commands/approval-sessions-list.js.map +1 -0
  141. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.d.ts +2 -0
  142. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.js +8 -0
  143. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-delete.js.map +1 -0
  144. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-get.d.ts +2 -0
  145. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-get.js +7 -0
  146. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-get.js.map +1 -0
  147. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-list.d.ts +2 -0
  148. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-list.js +8 -0
  149. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-list.js.map +1 -0
  150. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.d.ts +2 -0
  151. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.js +9 -0
  152. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-note-set.js.map +1 -0
  153. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.d.ts +2 -0
  154. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.js +7 -0
  155. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-finalize.js.map +1 -0
  156. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.d.ts +2 -0
  157. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.js +15 -0
  158. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload-prepare.js.map +1 -0
  159. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.d.ts +2 -0
  160. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.js +5 -0
  161. package/src/runtime/vendor/flywheel-cli-dist/commands/artifacts-upload.js.map +1 -0
  162. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.d.ts +2 -0
  163. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.js +8 -0
  164. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-clear.js.map +1 -0
  165. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.d.ts +2 -0
  166. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.js +30 -0
  167. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-keychain-set.js.map +1 -0
  168. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.d.ts +2 -0
  169. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.js +34 -0
  170. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-login.js.map +1 -0
  171. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.d.ts +2 -0
  172. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.js +4 -0
  173. package/src/runtime/vendor/flywheel-cli-dist/commands/auth-status.js.map +1 -0
  174. package/src/runtime/vendor/flywheel-cli-dist/commands/blobs-get.d.ts +2 -0
  175. package/src/runtime/vendor/flywheel-cli-dist/commands/blobs-get.js +18 -0
  176. package/src/runtime/vendor/flywheel-cli-dist/commands/blobs-get.js.map +1 -0
  177. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-create.d.ts +2 -0
  178. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-create.js +11 -0
  179. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-create.js.map +1 -0
  180. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-list.d.ts +1 -0
  181. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-list.js +6 -0
  182. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-list.js.map +1 -0
  183. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-revoke.d.ts +1 -0
  184. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-revoke.js +6 -0
  185. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-revoke.js.map +1 -0
  186. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-update.d.ts +2 -0
  187. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-update.js +22 -0
  188. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-budgets-update.js.map +1 -0
  189. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-snapshot.d.ts +1 -0
  190. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-snapshot.js +6 -0
  191. package/src/runtime/vendor/flywheel-cli-dist/commands/campaign-snapshot.js.map +1 -0
  192. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.d.ts +2 -0
  193. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.js +39 -0
  194. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-acquire.js.map +1 -0
  195. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-budgets.d.ts +2 -0
  196. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-budgets.js +14 -0
  197. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-budgets.js.map +1 -0
  198. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-connection.d.ts +2 -0
  199. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-connection.js +13 -0
  200. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-connection.js.map +1 -0
  201. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-funding.d.ts +2 -0
  202. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-funding.js +10 -0
  203. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-funding.js.map +1 -0
  204. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-list.d.ts +2 -0
  205. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-list.js +13 -0
  206. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-list.js.map +1 -0
  207. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-request-approval.d.ts +2 -0
  208. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-request-approval.js +53 -0
  209. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-grants-request-approval.js.map +1 -0
  210. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-options.d.ts +2 -0
  211. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-options.js +17 -0
  212. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-options.js.map +1 -0
  213. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.d.ts +1 -0
  214. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.js +6 -0
  215. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-get.js.map +1 -0
  216. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-set.d.ts +2 -0
  217. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-set.js +19 -0
  218. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-policy-set.js.map +1 -0
  219. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release-all.d.ts +2 -0
  220. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release-all.js +39 -0
  221. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release-all.js.map +1 -0
  222. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release.d.ts +2 -0
  223. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release.js +28 -0
  224. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-release.js.map +1 -0
  225. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-status.d.ts +2 -0
  226. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-status.js +8 -0
  227. package/src/runtime/vendor/flywheel-cli-dist/commands/compute-status.js.map +1 -0
  228. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-balance.d.ts +1 -0
  229. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-balance.js +6 -0
  230. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-balance.js.map +1 -0
  231. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-billing-portal.d.ts +2 -0
  232. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-billing-portal.js +8 -0
  233. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-billing-portal.js.map +1 -0
  234. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-purchase.d.ts +2 -0
  235. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-purchase.js +10 -0
  236. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-purchase.js.map +1 -0
  237. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral-claim.d.ts +2 -0
  238. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral-claim.js +6 -0
  239. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral-claim.js.map +1 -0
  240. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral.d.ts +1 -0
  241. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral.js +6 -0
  242. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-referral.js.map +1 -0
  243. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscribe.d.ts +2 -0
  244. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscribe.js +14 -0
  245. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscribe.js.map +1 -0
  246. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscription.d.ts +1 -0
  247. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscription.js +6 -0
  248. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-subscription.js.map +1 -0
  249. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-transactions.d.ts +2 -0
  250. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-transactions.js +12 -0
  251. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-transactions.js.map +1 -0
  252. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-usage.d.ts +2 -0
  253. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-usage.js +9 -0
  254. package/src/runtime/vendor/flywheel-cli-dist/commands/credits-usage.js.map +1 -0
  255. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.d.ts +16 -0
  256. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.js +12 -0
  257. package/src/runtime/vendor/flywheel-cli-dist/commands/enums.js.map +1 -0
  258. package/src/runtime/vendor/flywheel-cli-dist/commands/env.d.ts +12 -0
  259. package/src/runtime/vendor/flywheel-cli-dist/commands/env.js +65 -0
  260. package/src/runtime/vendor/flywheel-cli-dist/commands/env.js.map +1 -0
  261. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-launch.d.ts +2 -0
  262. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-launch.js +11 -0
  263. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-launch.js.map +1 -0
  264. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-list.d.ts +1 -0
  265. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-list.js +6 -0
  266. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-list.js.map +1 -0
  267. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-terminate.d.ts +2 -0
  268. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-terminate.js +8 -0
  269. package/src/runtime/vendor/flywheel-cli-dist/commands/executions-terminate.js.map +1 -0
  270. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.d.ts +2 -0
  271. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.js +82 -0
  272. package/src/runtime/vendor/flywheel-cli-dist/commands/export-history.js.map +1 -0
  273. package/src/runtime/vendor/flywheel-cli-dist/commands/export-subgraph.d.ts +2 -0
  274. package/src/runtime/vendor/flywheel-cli-dist/commands/export-subgraph.js +18 -0
  275. package/src/runtime/vendor/flywheel-cli-dist/commands/export-subgraph.js.map +1 -0
  276. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-pdf.d.ts +2 -0
  277. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-pdf.js +19 -0
  278. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-pdf.js.map +1 -0
  279. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-render-pdf.d.ts +2 -0
  280. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-render-pdf.js +65 -0
  281. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-render-pdf.js.map +1 -0
  282. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-stream.d.ts +2 -0
  283. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-stream.js +174 -0
  284. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary-stream.js.map +1 -0
  285. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary.d.ts +2 -0
  286. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary.js +9 -0
  287. package/src/runtime/vendor/flywheel-cli-dist/commands/export-summary.js.map +1 -0
  288. package/src/runtime/vendor/flywheel-cli-dist/commands/files-list.d.ts +2 -0
  289. package/src/runtime/vendor/flywheel-cli-dist/commands/files-list.js +12 -0
  290. package/src/runtime/vendor/flywheel-cli-dist/commands/files-list.js.map +1 -0
  291. package/src/runtime/vendor/flywheel-cli-dist/commands/github-disconnect.d.ts +1 -0
  292. package/src/runtime/vendor/flywheel-cli-dist/commands/github-disconnect.js +6 -0
  293. package/src/runtime/vendor/flywheel-cli-dist/commands/github-disconnect.js.map +1 -0
  294. package/src/runtime/vendor/flywheel-cli-dist/commands/github-link.d.ts +2 -0
  295. package/src/runtime/vendor/flywheel-cli-dist/commands/github-link.js +17 -0
  296. package/src/runtime/vendor/flywheel-cli-dist/commands/github-link.js.map +1 -0
  297. package/src/runtime/vendor/flywheel-cli-dist/commands/github-refresh-repos.d.ts +1 -0
  298. package/src/runtime/vendor/flywheel-cli-dist/commands/github-refresh-repos.js +6 -0
  299. package/src/runtime/vendor/flywheel-cli-dist/commands/github-refresh-repos.js.map +1 -0
  300. package/src/runtime/vendor/flywheel-cli-dist/commands/github-status.d.ts +1 -0
  301. package/src/runtime/vendor/flywheel-cli-dist/commands/github-status.js +6 -0
  302. package/src/runtime/vendor/flywheel-cli-dist/commands/github-status.js.map +1 -0
  303. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-get.d.ts +2 -0
  304. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-get.js +15 -0
  305. package/src/runtime/vendor/flywheel-cli-dist/commands/graph-get.js.map +1 -0
  306. package/src/runtime/vendor/flywheel-cli-dist/commands/handler-factory.d.ts +22 -0
  307. package/src/runtime/vendor/flywheel-cli-dist/commands/handler-factory.js +51 -0
  308. package/src/runtime/vendor/flywheel-cli-dist/commands/handler-factory.js.map +1 -0
  309. package/src/runtime/vendor/flywheel-cli-dist/commands/help.d.ts +23 -0
  310. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js +258 -0
  311. package/src/runtime/vendor/flywheel-cli-dist/commands/help.js.map +1 -0
  312. package/src/runtime/vendor/flywheel-cli-dist/commands/import-subgraph.d.ts +2 -0
  313. package/src/runtime/vendor/flywheel-cli-dist/commands/import-subgraph.js +6 -0
  314. package/src/runtime/vendor/flywheel-cli-dist/commands/import-subgraph.js.map +1 -0
  315. package/src/runtime/vendor/flywheel-cli-dist/commands/index.d.ts +20 -0
  316. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js +238 -0
  317. package/src/runtime/vendor/flywheel-cli-dist/commands/index.js.map +1 -0
  318. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-remove.d.ts +1 -0
  319. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-remove.js +6 -0
  320. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-remove.js.map +1 -0
  321. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-set.d.ts +2 -0
  322. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-set.js +6 -0
  323. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-huggingface-set.js.map +1 -0
  324. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-status.d.ts +1 -0
  325. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-status.js +6 -0
  326. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-status.js.map +1 -0
  327. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-remove.d.ts +1 -0
  328. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-remove.js +6 -0
  329. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-remove.js.map +1 -0
  330. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-set.d.ts +2 -0
  331. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-set.js +6 -0
  332. package/src/runtime/vendor/flywheel-cli-dist/commands/integrations-wandb-set.js.map +1 -0
  333. package/src/runtime/vendor/flywheel-cli-dist/commands/machines-list.d.ts +1 -0
  334. package/src/runtime/vendor/flywheel-cli-dist/commands/machines-list.js +6 -0
  335. package/src/runtime/vendor/flywheel-cli-dist/commands/machines-list.js.map +1 -0
  336. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.d.ts +2 -0
  337. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.js +10 -0
  338. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-add-parent.js.map +1 -0
  339. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.d.ts +2 -0
  340. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.js +7 -0
  341. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-audit-list.js.map +1 -0
  342. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.d.ts +2 -0
  343. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.js +10 -0
  344. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-branch.js.map +1 -0
  345. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.d.ts +2 -0
  346. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.js +6 -0
  347. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit-new.js.map +1 -0
  348. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.d.ts +2 -0
  349. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.js +7 -0
  350. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-commit.js.map +1 -0
  351. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.d.ts +2 -0
  352. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.js +6 -0
  353. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-create.js.map +1 -0
  354. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.d.ts +2 -0
  355. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.js +14 -0
  356. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete-bulk.js.map +1 -0
  357. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.d.ts +2 -0
  358. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.js +9 -0
  359. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-delete.js.map +1 -0
  360. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-files.d.ts +1 -0
  361. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-files.js +6 -0
  362. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-files.js.map +1 -0
  363. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-get.d.ts +2 -0
  364. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-get.js +8 -0
  365. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-get.js.map +1 -0
  366. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-list.d.ts +2 -0
  367. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-list.js +7 -0
  368. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-list.js.map +1 -0
  369. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.d.ts +2 -0
  370. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.js +33 -0
  371. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-merge.js.map +1 -0
  372. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.d.ts +2 -0
  373. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.js +8 -0
  374. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-remove-parent.js.map +1 -0
  375. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-ancestry.d.ts +2 -0
  376. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-ancestry.js +10 -0
  377. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-ancestry.js.map +1 -0
  378. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-summary.d.ts +2 -0
  379. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-summary.js +10 -0
  380. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-summary.js.map +1 -0
  381. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-tree.d.ts +2 -0
  382. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-tree.js +8 -0
  383. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-render-tree.js.map +1 -0
  384. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.d.ts +2 -0
  385. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.js +13 -0
  386. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-resolve-slug.js.map +1 -0
  387. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-get.d.ts +1 -0
  388. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-get.js +6 -0
  389. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-get.js.map +1 -0
  390. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set-bulk.d.ts +2 -0
  391. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set-bulk.js +20 -0
  392. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set-bulk.js.map +1 -0
  393. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set.d.ts +2 -0
  394. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set.js +10 -0
  395. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-set.js.map +1 -0
  396. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-summaries.d.ts +2 -0
  397. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-summaries.js +11 -0
  398. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-sharing-summaries.js.map +1 -0
  399. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.d.ts +2 -0
  400. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.js +7 -0
  401. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-hypothesis.js.map +1 -0
  402. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.d.ts +2 -0
  403. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.js +7 -0
  404. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-backfill-insights.js.map +1 -0
  405. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-acquire.d.ts +2 -0
  406. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-acquire.js +13 -0
  407. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-acquire.js.map +1 -0
  408. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-heartbeat.d.ts +2 -0
  409. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-heartbeat.js +7 -0
  410. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-heartbeat.js.map +1 -0
  411. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-release.d.ts +2 -0
  412. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-release.js +7 -0
  413. package/src/runtime/vendor/flywheel-cli-dist/commands/nodes-stage-lease-release.js.map +1 -0
  414. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.d.ts +2 -0
  415. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.js +6 -0
  416. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-list.js.map +1 -0
  417. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.d.ts +2 -0
  418. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.js +56 -0
  419. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-set.js.map +1 -0
  420. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.d.ts +2 -0
  421. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.js +12 -0
  422. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-show.js.map +1 -0
  423. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.d.ts +2 -0
  424. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.js +12 -0
  425. package/src/runtime/vendor/flywheel-cli-dist/commands/profile-unset.js.map +1 -0
  426. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/account.d.ts +2 -0
  427. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/account.js +124 -0
  428. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/account.js.map +1 -0
  429. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/api-keys.d.ts +2 -0
  430. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/api-keys.js +103 -0
  431. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/api-keys.js.map +1 -0
  432. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/approval.d.ts +2 -0
  433. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/approval.js +101 -0
  434. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/approval.js.map +1 -0
  435. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.d.ts +2 -0
  436. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.js +104 -0
  437. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/artifacts.js.map +1 -0
  438. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.d.ts +2 -0
  439. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.js +37 -0
  440. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/auth.js.map +1 -0
  441. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/budgets.d.ts +2 -0
  442. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/budgets.js +72 -0
  443. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/budgets.js.map +1 -0
  444. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.d.ts +2 -0
  445. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.js +128 -0
  446. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/compute.js.map +1 -0
  447. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/credits.d.ts +2 -0
  448. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/credits.js +134 -0
  449. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/credits.js.map +1 -0
  450. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.d.ts +2 -0
  451. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.js +39 -0
  452. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/env.js.map +1 -0
  453. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/executions.d.ts +2 -0
  454. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/executions.js +55 -0
  455. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/executions.js.map +1 -0
  456. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/export.d.ts +2 -0
  457. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/export.js +88 -0
  458. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/export.js.map +1 -0
  459. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/github.d.ts +2 -0
  460. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/github.js +60 -0
  461. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/github.js.map +1 -0
  462. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/graph.d.ts +2 -0
  463. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/graph.js +22 -0
  464. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/graph.js.map +1 -0
  465. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/integrations.d.ts +2 -0
  466. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/integrations.js +69 -0
  467. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/integrations.js.map +1 -0
  468. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.d.ts +2 -0
  469. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js +284 -0
  470. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/lifecycle.js.map +1 -0
  471. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.d.ts +2 -0
  472. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.js +82 -0
  473. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/profile.js.map +1 -0
  474. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.d.ts +2 -0
  475. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.js +108 -0
  476. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/resources.js.map +1 -0
  477. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/sharing.d.ts +2 -0
  478. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/sharing.js +69 -0
  479. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/sharing.js.map +1 -0
  480. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.d.ts +2 -0
  481. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.js +98 -0
  482. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/tagging.js.map +1 -0
  483. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/updates.d.ts +2 -0
  484. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/updates.js +70 -0
  485. package/src/runtime/vendor/flywheel-cli-dist/commands/registry/updates.js.map +1 -0
  486. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.d.ts +25 -0
  487. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js +441 -0
  488. package/src/runtime/vendor/flywheel-cli-dist/commands/registry.js.map +1 -0
  489. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.d.ts +2 -0
  490. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.js +25 -0
  491. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-assign.js.map +1 -0
  492. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.d.ts +2 -0
  493. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.js +25 -0
  494. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-create.js.map +1 -0
  495. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.d.ts +2 -0
  496. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.js +11 -0
  497. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-delete.js.map +1 -0
  498. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.d.ts +2 -0
  499. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.js +28 -0
  500. package/src/runtime/vendor/flywheel-cli-dist/commands/tags-update.js.map +1 -0
  501. package/src/runtime/vendor/flywheel-cli-dist/commands/types.d.ts +30 -0
  502. package/src/runtime/vendor/flywheel-cli-dist/commands/types.js +6 -0
  503. package/src/runtime/vendor/flywheel-cli-dist/commands/types.js.map +1 -0
  504. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide-all-active.d.ts +1 -0
  505. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide-all-active.js +6 -0
  506. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide-all-active.js.map +1 -0
  507. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide.d.ts +2 -0
  508. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide.js +10 -0
  509. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-hide.js.map +1 -0
  510. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-list.d.ts +2 -0
  511. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-list.js +12 -0
  512. package/src/runtime/vendor/flywheel-cli-dist/commands/updates-list.js.map +1 -0
  513. package/src/runtime/vendor/flywheel-cli-dist/commands/utils.d.ts +10 -0
  514. package/src/runtime/vendor/flywheel-cli-dist/commands/utils.js +171 -0
  515. package/src/runtime/vendor/flywheel-cli-dist/commands/utils.js.map +1 -0
  516. package/src/runtime/vendor/flywheel-cli-dist/errors.d.ts +55 -0
  517. package/src/runtime/vendor/flywheel-cli-dist/errors.js +51 -0
  518. package/src/runtime/vendor/flywheel-cli-dist/errors.js.map +1 -0
  519. package/src/runtime/vendor/flywheel-cli-dist/exit-codes.d.ts +8 -0
  520. package/src/runtime/vendor/flywheel-cli-dist/exit-codes.js +8 -0
  521. package/src/runtime/vendor/flywheel-cli-dist/exit-codes.js.map +1 -0
  522. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.d.ts +26 -0
  523. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.js +117 -0
  524. package/src/runtime/vendor/flywheel-cli-dist/grammar/globals.js.map +1 -0
  525. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.d.ts +17 -0
  526. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.js +102 -0
  527. package/src/runtime/vendor/flywheel-cli-dist/grammar/parse.js.map +1 -0
  528. package/src/runtime/vendor/flywheel-cli-dist/http/client.d.ts +75 -0
  529. package/src/runtime/vendor/flywheel-cli-dist/http/client.js +369 -0
  530. package/src/runtime/vendor/flywheel-cli-dist/http/client.js.map +1 -0
  531. package/src/runtime/vendor/flywheel-cli-dist/http/debug.d.ts +2 -0
  532. package/src/runtime/vendor/flywheel-cli-dist/http/debug.js +68 -0
  533. package/src/runtime/vendor/flywheel-cli-dist/http/debug.js.map +1 -0
  534. package/src/runtime/vendor/flywheel-cli-dist/http/poll.d.ts +18 -0
  535. package/src/runtime/vendor/flywheel-cli-dist/http/poll.js +57 -0
  536. package/src/runtime/vendor/flywheel-cli-dist/http/poll.js.map +1 -0
  537. package/src/runtime/vendor/flywheel-cli-dist/http/retry.d.ts +30 -0
  538. package/src/runtime/vendor/flywheel-cli-dist/http/retry.js +127 -0
  539. package/src/runtime/vendor/flywheel-cli-dist/http/retry.js.map +1 -0
  540. package/src/runtime/vendor/flywheel-cli-dist/main.d.ts +31 -0
  541. package/src/runtime/vendor/flywheel-cli-dist/main.js +763 -0
  542. package/src/runtime/vendor/flywheel-cli-dist/main.js.map +1 -0
  543. package/src/runtime/vendor/flywheel-cli-dist/output/format.d.ts +9 -0
  544. package/src/runtime/vendor/flywheel-cli-dist/output/format.js +129 -0
  545. package/src/runtime/vendor/flywheel-cli-dist/output/format.js.map +1 -0
  546. package/src/runtime/vendor/flywheel-cli-dist/runtime-entry.d.ts +1 -0
  547. package/src/runtime/vendor/flywheel-cli-dist/runtime-entry.js +2 -0
  548. package/src/runtime/vendor/flywheel-cli-dist/runtime-entry.js.map +1 -0
  549. package/src/runtime/vendor/flywheel-cli-dist/version.d.ts +3 -0
  550. package/src/runtime/vendor/flywheel-cli-dist/version.js +31 -0
  551. package/src/runtime/vendor/flywheel-cli-dist/version.js.map +1 -0
  552. package/src/runtime/vendor/manifest.json +500 -0
  553. package/src/setup/command.mjs +24 -0
  554. package/src/setup/io/patchers/json.mjs +33 -0
  555. package/src/setup/io/patchers/toml.mjs +15 -0
  556. package/src/setup/io/patchers/yaml.mjs +33 -0
  557. package/src/setup/mode.mjs +113 -0
  558. package/src/setup/modes/cli.mjs +317 -0
  559. package/src/setup/modes/mcp-command.mjs +850 -0
  560. package/src/setup/modes/mcp.mjs +176 -0
  561. package/src/setup/preflight.mjs +54 -0
  562. package/src/setup/shared/prior-mode-detect.mjs +412 -0
  563. package/src/setup/shared/skill.mjs +12 -0
  564. package/src/setup/shared/summary.mjs +80 -0
  565. package/src/setup-auth.mjs +293 -178
  566. package/src/unified-cli.mjs +161 -0
@@ -0,0 +1,244 @@
1
+ # Flywheel CLI Tool Map
2
+
3
+ Contract-aligned routing guide for the Flywheel runtime CLI.
4
+
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
+
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.
8
+
9
+ ## Core Contract Expectations
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:
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.
18
+ - Run `flywheel help <command>` for canonical per-command flags, types, defaults, examples, and related commands.
19
+
20
+ ## MCP-Equivalent Tool Families
21
+
22
+ The families below mirror `flywheel-mcp-tool-map.md` and list the canonical CLI equivalent of each MCP tool.
23
+
24
+ ### Discovery and sharing
25
+
26
+ - `flywheel auth:status` (read; scopes: `read`; HTTP: `GET /auth/status`; MCP equivalent: `flywheel_auth_status`): Show authentication status for the current client context.
27
+ - `flywheel credits:balance` (read; scopes: `read`; HTTP: `GET /credits`; MCP equivalent: `flywheel_get_credits_balance`): View credit balance and totals.
28
+ - `flywheel updates:list` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_updates_list`): List in-app announcements relevant to your account.
29
+ - `flywheel updates:hide` (mutating; scopes: `write`; HTTP: `POST /updates/{announcement_id}/hide`; MCP equivalent: `flywheel_updates_hide`): Hide a specific announcement.
30
+ - `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.
31
+ - `flywheel updates:unhide` (mutating; scopes: `write`; HTTP: `DELETE /updates/{announcement_id}/hide`; MCP equivalent: `flywheel_updates_unhide`): Restore a previously hidden announcement.
32
+ - `flywheel nodes:list` (read; scopes: `read`; HTTP: `GET /nodes`; MCP equivalent: `flywheel_list_nodes`): List nodes with optional filters (owners/writers/visibility) and projection control (`core`, `topology`, `full`).
33
+ - `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`).
34
+ - `flywheel nodes:sharing:get` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_get_node_sharing`): Get sharing (access policy) for a node.
35
+ - `flywheel nodes:sharing:set` (mutating; scopes: `write`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_set_sharing_for_node`): Replace sharing (access policy) for a node.
36
+ - `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.
37
+ - `flywheel nodes:get` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_get_node`): Fetch one node by identifier.
38
+ - `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.
39
+ - `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.
40
+ - `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.
41
+ - `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 a JSON array).
42
+ - `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.
43
+ - `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.
44
+ - `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.
45
+ - `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.
46
+
47
+ ### Node stage and commit
48
+
49
+ - `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.
50
+ - `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.
51
+ - `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.
52
+ - `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.
53
+ - `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 (`--stage_session_id`, `--base_committed_revision`, `--staged_payload` required).
54
+ - `flywheel nodes:branch` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/branch`; MCP equivalent: `flywheel_branch_node`): Create a child branch from a node (`--expected_revision` required).
55
+ - `flywheel nodes:merge` (mutating; scopes: `write`; HTTP: `POST /nodes/merge`; MCP equivalent: `flywheel_merge_nodes`): Merge multiple nodes into one resolved node.
56
+ - `flywheel nodes:add-parent` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/parents/add`; MCP equivalent: `flywheel_add_parent`): Add a parent-child edge.
57
+ - `flywheel nodes:remove-parent` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/parents/remove`; MCP equivalent: `flywheel_remove_parent`): Remove a parent-child edge.
58
+ - `flywheel nodes:delete` (mutating; scopes: `write`; HTTP: `DELETE /nodes/{node_id}`; MCP equivalent: `flywheel_delete_node`): Delete a node by identifier. Modes: `cascade` (delete subtree), `detach_shared` (preserve descendants with surviving parents).
59
+ - `flywheel nodes:delete-bulk` (mutating; scopes: `write`; HTTP: `POST /nodes/bulk-delete`; MCP equivalent: `flywheel_bulk_delete_nodes`): Delete multiple node subtrees.
60
+
61
+ ### Artifacts
62
+
63
+ - `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).
64
+ - `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.
65
+ - `flywheel artifacts:list` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_list_artifacts`): List artifacts for a node.
66
+ - `flywheel artifacts:get` (read; scopes: `read`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_get_artifact`): Fetch one artifact metadata record.
67
+ - `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).
68
+ - `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
+
70
+ ### Executions
71
+
72
+ - `flywheel executions:launch` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/executions`; MCP equivalent: `flywheel_launch_execution`): Start an execution for a node.
73
+ - `flywheel executions:list` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/executions`; MCP equivalent: `flywheel_list_executions`): List executions for a node.
74
+ - `flywheel executions:terminate` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/executions/{execution_id}/terminate`; MCP equivalent: `flywheel_terminate_execution`): Stop an execution for a node.
75
+
76
+ ### Compute and budgets
77
+
78
+ - `flywheel compute:options` (read; scopes: `compute`; HTTP: `GET /compute/catalog`; MCP equivalent: `flywheel_compute_list_options`): List allowed compute catalog options for a node. Pass the same `--compute_grant_id` you will use for acquire when using grant-backed compute.
79
+ - `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.
80
+ - `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.
81
+ - `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).
82
+ - `flywheel approval-sessions:heartbeat` (read; scopes: `compute`; HTTP: `POST /approval-sessions/heartbeat`; MCP equivalents: `flywheel_approval_session_open`, `flywheel_approval_session_heartbeat`): Create or refresh a compute approval session for the current host context.
83
+ - `flywheel approval-sessions:list` (read; scopes: `compute`; HTTP: `GET /approval-sessions`; MCP equivalent: `flywheel_list_approval_sessions`): List approval sessions visible to the current user.
84
+ - `flywheel approval-sessions:expire` (mutating; scopes: `compute`; HTTP: `POST /approval-sessions/expire`; MCP equivalent: `flywheel_expire_approval_session`): Expire the current compute-grant approval session context without releasing active leases.
85
+ - `flywheel compute-grants:request-approval` (mutating; scopes: `compute`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_request_compute_grant_approval`): Request compute-grant approval; branch on response status (`already_approved`, `approval_required`, `insufficient_credits`).
86
+ - `flywheel compute-grants:list` (read; scopes: `compute`; HTTP: `GET /compute/grants`; MCP equivalent: `flywheel_list_compute_grants`): List active/exhausted compute grants available to the user. Restrict by `--approval_session_id` to inspect session-bound grants.
87
+ - `flywheel campaign-budgets:list` (read; scopes: `compute`; HTTP: `GET /nodes/{root_node_id}/campaign-budgets`; MCP equivalent: `flywheel_list_campaign_budgets`): List campaign compute budgets for a root. Organizer-only management view.
88
+ - `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.
89
+ - `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 a campaign budget (partial; any `--key=value` becomes a field).
90
+ - `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.
91
+ - `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.
92
+ - `flywheel compute:release` (mutating; scopes: `compute`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_compute_release`): Release one active compute lease (async; use `--wait` to block).
93
+ - `flywheel compute:release-all` (mutating; scopes: `compute`; HTTP: `tool-mediated`; MCP equivalent: `flywheel_compute_release_all`): Release all active leases in current `lease_control_token` scope; pass `--force` for explicit account-wide cleanup.
94
+
95
+ ### Contract, audit, and export
96
+
97
+ - (no CLI equivalent; MCP equivalent: `flywheel_get_contract`): MCP contract introspection is MCP-only. In `--mode cli` install, treat each command's `flywheel help <command>` output as the canonical per-command contract reference.
98
+ - (no CLI equivalent; MCP equivalent: `flywheel_get_contract_section`): Same as above.
99
+ - `flywheel export:subgraph` (read; scopes: `read`; HTTP: `POST /export`; MCP equivalent: `flywheel_export_subgraph`): Export a subgraph snapshot.
100
+ - `flywheel import:subgraph` (mutating; scopes: `write`; HTTP: `POST /import`; MCP equivalent: `flywheel_import_subgraph`): Import graph JSON into new node records. Pass `--normalize_cycles=true` to drop cycle/self-loop edges; default rejects cyclic payloads.
101
+ - `flywheel nodes:render:summary` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/summary`; MCP equivalent: `flywheel_summarize_node_tree`): Render a compact summary of a node subtree.
102
+ - `flywheel export:summary` (read; scopes: `read`; HTTP: `POST /export-summary`; MCP equivalent: `flywheel_export_summary`): Generate a markdown summary export.
103
+ - `flywheel export:summary:stream` (read; scopes: `read`; HTTP: `POST /export-summary-stream`; MCP equivalent: `flywheel_export_summary_stream`): Stream summary generation as NDJSON events.
104
+ - `flywheel export:summary:pdf` (read; scopes: `read`; HTTP: `POST /export-summary-pdf`; MCP equivalent: `flywheel_export_summary_pdf`): Render summary as PDF; requires `--out`.
105
+ - `flywheel export:summary:render-pdf` (read; scopes: `read`; HTTP: `POST /export-summary-render-pdf`; MCP equivalent: `flywheel_export_summary_render_pdf`): Render caller-provided markdown as PDF; requires `--out`.
106
+
107
+ ## CLI-Only Tool Families
108
+
109
+ These commands have no MCP counterpart. They cover auth/profile management, account administration, billing flows, integrations, and bulk file operations that the CLI exposes directly through the canonical HTTP API.
110
+
111
+ ### Auth and profiles
112
+
113
+ - `flywheel auth:login` (mutating; scopes: `write`): Bootstrap API key auth via RFC 8628 device flow (FLY-416: replaces legacy /setup-exchange redeem).
114
+ - `flywheel auth:keychain:set` (local): Store an API key in the OS keychain for a profile. Reads the key from stdin.
115
+ - `flywheel auth:keychain:clear` (local): Remove an API key from the OS keychain for a profile.
116
+ - `flywheel profile:list` (local): List configured CLI profiles.
117
+ - `flywheel profile:show` (local): Show a profile definition.
118
+ - `flywheel profile:set` (local): Create or update a CLI profile (never stores plaintext keys).
119
+ - `flywheel profile:unset` (local): Delete a CLI profile.
120
+
121
+ ### Node helpers (CLI-only)
122
+
123
+ - `flywheel nodes:create` (mutating; scopes: `write`): Create a minimal node (title only) and emit graph-change event.
124
+ - `flywheel nodes:files` (read; scopes: `read`): List files attached to a node.
125
+ - `flywheel nodes:sharing:summaries` (read; scopes: `read`): Read access summaries for multiple nodes in one batch.
126
+ - `flywheel nodes:stage:backfill:hypothesis` (mutating; scopes: `write`): Derive hypothesis from staged node content.
127
+ - `flywheel nodes:stage:backfill:insights` (mutating; scopes: `write`): Extract structured insights from staged node content.
128
+
129
+ ### Artifact helpers (CLI-only)
130
+
131
+ - `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.
132
+
133
+ ### Compute policy and budgets (CLI-only)
134
+
135
+ - `flywheel compute:policy:get` (read; scopes: `compute`): Read compute budget policy for a node.
136
+ - `flywheel compute:policy:set` (mutating; scopes: `compute`): Update compute budget policy for a node (partial).
137
+ - `flywheel compute:budgets` (read; scopes: `compute`): List budget grants visible for a node context.
138
+ - `flywheel machines:list` (read; scopes: `compute`): List your managed compute leases.
139
+
140
+ ### Files, blobs, graph, history (CLI-only)
141
+
142
+ - `flywheel blobs:get` (read; scopes: `read`): Download a raw blob by storage key.
143
+ - `flywheel files:list` (read; scopes: `read`): List all your files across nodes.
144
+ - `flywheel graph:get` (read; scopes: `read`): Read the graph projection for navigation and topology workflows.
145
+ - `flywheel export:history` (read; scopes: `read`): Export node history as JSONL.
146
+
147
+ ### Account
148
+
149
+ - `flywheel account:get` (read; scopes: `read`): View account snapshot and linked identities.
150
+ - `flywheel account:merge:proof` (mutating; scopes: `write`): Mint a merge proof token from a source session token.
151
+ - `flywheel account:merge:preview` (read; scopes: `read`): Preview what an account merge will do.
152
+ - `flywheel account:merge` (mutating; scopes: `write`): Execute an account merge. Requires `--confirm=MERGE`.
153
+ - `flywheel account:detach` (mutating; scopes: `write`): Detach a linked alias account. Requires `--confirm=DETACH`.
154
+ - `flywheel account:emails:add` (mutating; scopes: `write`): Add an email alias to your account.
155
+ - `flywheel account:emails:remove` (mutating; scopes: `write`): Remove an email alias from your account.
156
+ - `flywheel account:emails:set-primary` (mutating; scopes: `write`): Set your primary email address.
157
+
158
+ ### Credits and billing
159
+
160
+ - `flywheel credits:transactions` (read; scopes: `read`): View paginated credit transactions.
161
+ - `flywheel credits:usage` (read; scopes: `read`): Feature-based usage breakdown over a window.
162
+ - `flywheel credits:purchase` (mutating; scopes: `write`): Create a Stripe checkout session for a one-time purchase.
163
+ - `flywheel credits:subscribe` (mutating; scopes: `write`): Create a Stripe checkout session for a subscription.
164
+ - `flywheel credits:billing-portal` (mutating; scopes: `write`): Open the Stripe billing portal for the current user.
165
+ - `flywheel credits:subscription` (read; scopes: `read`): View your subscription status.
166
+ - `flywheel credits:referral` (read; scopes: `read`): View your referral code and status.
167
+ - `flywheel credits:referral:claim` (mutating; scopes: `write`): Claim referral rewards using a code.
168
+
169
+ ### Integrations
170
+
171
+ - `flywheel github:status` (read; scopes: `read`): Check GitHub connection status.
172
+ - `flywheel github:link` (mutating; scopes: `write`): Link a GitHub installation ID to your account.
173
+ - `flywheel github:refresh-repos` (mutating; scopes: `write`): Refresh the list of accessible repositories.
174
+ - `flywheel github:disconnect` (mutating; scopes: `write`): Disconnect GitHub from your account.
175
+ - `flywheel integrations:status` (read; scopes: `read`): Check integration connection status (W&B, Hugging Face).
176
+ - `flywheel integrations:wandb:set` (mutating; scopes: `write`): Store a Weights & Biases API key.
177
+ - `flywheel integrations:wandb:remove` (mutating; scopes: `write`): Remove your W&B credential.
178
+ - `flywheel integrations:huggingface:set` (mutating; scopes: `write`): Store a Hugging Face access token.
179
+ - `flywheel integrations:huggingface:remove` (mutating; scopes: `write`): Remove your Hugging Face credential.
180
+
181
+ ### API keys
182
+
183
+ - `flywheel api-keys:list` (read; scopes: `read`): List your API keys.
184
+ - `flywheel api-keys:create` (mutating; scopes: `write`): Create a new API key and return the raw material once.
185
+ - `flywheel api-keys:delete` (mutating; scopes: `write`): Delete an API key (refuses to delete the active one unless `--allow-self`).
186
+ - `flywheel api-keys:rotate` (mutating; scopes: `write`): Rotate an API key (refuses to rotate the active one unless `--allow-self`).
187
+ <!-- FLY-416: removed — device flow replaces legacy /setup-exchange. -->
188
+ <!-- - `flywheel api-keys:setup-exchange:create` (mutating; scopes: `write`): Start browser-assisted setup exchange. -->
189
+ <!-- - `flywheel api-keys:setup-exchange:redeem` (mutating; scopes: `write`): Redeem a setup exchange token into a raw API key. -->
190
+
191
+ ## Practical Command Sequences
192
+
193
+ ### List Owned Nodes
194
+
195
+ 1. `flywheel nodes:list --owners=me --projection=core`.
196
+
197
+ ### Safe Node Update
198
+
199
+ 1. `flywheel nodes:get --node_id=<id>`: Read latest node state and capture `revision`.
200
+ 2. `flywheel nodes:stage:lease:acquire --node_id=<id> --expected_revision=<rev>`: Acquire a session-scoped stage lease.
201
+ 3. `flywheel nodes:commit --node_id=<id> --stage_session_id=<sid> --base_committed_revision=<rev> --staged_payload=@payload.json`: Commit once terminal and contract-complete.
202
+
203
+ ### Empirical Workflow
204
+
205
+ 1. `flywheel nodes:commit-new --payload_json=@new-node.json`: Commit a local staged new node to canonical storage as the first persistence boundary.
206
+ 2. `flywheel compute-grants:request-approval --acquire_node_id=<id> --budget_source=user`: Request budget approval. Branch on response `status` (`already_approved` | `approval_required` | `insufficient_credits`).
207
+ 3. 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.
208
+ 4. `flywheel compute:options --node_id=<id> --compute_grant_id=<gid>`: List allowed offers; pick the exact `offer_id`.
209
+ 5. `flywheel compute:acquire --node_id=<id> --compute_grant_id=<gid> --requested_sku=<offer_id> --approval_session_id=<sid>`: Acquire lease.
210
+ 6. `flywheel compute:status --lease_control_token=<tok>`: Poll until the lease is ready.
211
+ 7. `flywheel executions:launch --node_id=<id>`: Launch execution.
212
+ 8. `flywheel executions:list --node_id=<id>`: Poll until execution reaches terminal status.
213
+ 9. `flywheel artifacts:upload --node_id=<id> --file=results.json`: One-shot upload (or use the prepare/finalize split for streaming).
214
+ 10. `flywheel nodes:commit --node_id=<id> ...`: Commit terminal empirical node.
215
+
216
+ ## Runtime Guidance
217
+
218
+ - `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.
219
+ - `flywheel nodes:get` reads the current node state before writes; capture `revision` for optimistic-locking writes.
220
+ - `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.
221
+ - `flywheel campaign:snapshot` reads the current derived campaign state for a node's root campaign instead of inferring standings from freeform text.
222
+ - `flywheel nodes:sharing:get` verifies sharing state after sharing writes before reporting private/shared/public state.
223
+ - `flywheel tags:assign` accepts `--tag_ids` as a JSON array of strings; omitting `--tag_ids` clears all assignments.
224
+ - `flywheel nodes:list` accepts canonical filters as repeated flags or comma-separated lists for `--owners`, `--writers`, `--visibility`.
225
+ - `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).
226
+ - `flywheel compute-grants:list` lists active compute grants and selects one `--compute_grant_id` for acquisition.
227
+ - `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`).
228
+ - `flywheel compute:connection` reads SSH connection material for the active user lease once status indicates the lease is usable, scoped by `--lease_control_token`.
229
+ - `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.
230
+ - `flywheel compute:funding` reads grant-scoped funding context (`grant_cents`, `remaining_cents`, backing budget fields) for the selected `--compute_grant_id` before acquire.
231
+ - `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.
232
+ - `flywheel compute:release` releases compute when no longer needed, scoped by `--lease_control_token`. Use `--wait` to block until release completes.
233
+ - `flywheel executions:launch`, `flywheel executions:list`, `flywheel executions:terminate` manage execution status transitions.
234
+ - `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.
235
+ - `flywheel artifacts:upload:finalize` finalizes a staged artifact batch and appends all uploaded artifacts in one revision bump.
236
+ - `flywheel artifacts:delete` removes an accidental/obsolete node artifact.
237
+ - `flywheel artifacts:list`, `flywheel artifacts:get` inspect node artifact metadata (`title` is the display label) and consume `storage_url` for raw artifact bytes only.
238
+ - `flywheel nodes:commit-new`, `flywheel nodes:commit` publish the caller's full staged payload for an existing node once terminal and contract-complete; commit on an existing node requires an active stage lease and explicit `--base_committed_revision`.
239
+
240
+ ## See Also
241
+
242
+ - `flywheel-mcp-tool-map.md` — the matching MCP routing reference.
243
+ - `flywheel help <command>` — canonical per-command flags, types, defaults, examples, and related commands.
244
+ - `flywheel --format json|tsv|csv|table` — output format selector for scripting workflows.
@@ -12,6 +12,16 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
12
12
  - Node references include immutable `node_id` and optional immutable `slug_name`; prefer communicating both together for human clarity and disambiguation.
13
13
  - Insight nodes should represent conceptual observations (theoretical insights, intuitions, motivations, decision-relevant framing); empirical nodes should represent experiments with explicit hypotheses and measured outcomes.
14
14
  - Graph topology should encode logical/causal relations between concepts and experiments. Avoid defaulting to shallow root-only branching unless work items are truly independent.
15
+ - Node staging is local (non-canonical) and commit is the only canonical persistence boundary (`commit_new_node`, `commit_node`).
16
+ - 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.
17
+ - Mutating operations are idempotent; MCP tool transport auto-manages `Idempotency-Key` on mutating tool calls.
18
+ - 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.
19
+ - 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.
20
+ - Stage/backfill helpers (`stage_backfill_hypothesis`, `stage_backfill_insights`) return non-canonical staged payload patches and explicit status fields (`staged_changes_pending`, `commit_required`, `next_action_hint`).
21
+ - Committed node state must still satisfy strict contract (`summary` required; `empirical` requires hypothesis plus artifacts or `no_artifacts_reason`; `insight` requires non-empty insights).
22
+ - 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).
23
+ - Summaries, hypotheses, and artifacts should be reproduction-grade: enough setup, method, evidence, and interpretation for another reader to reproduce or audit results.
24
+ - Empirical workflow is hypothesis-driven: launch execution, inspect outcomes, publish evidence artifacts, and commit only after terminal status.
15
25
  - For empirical work, publish evidence with `flywheel_prepare_artifact_uploads`, upload raw file bytes, then `flywheel_finalize_artifact_uploads` before commit.
16
26
  - Artifact metadata records expose a non-empty `title` suitable for display labels; title normalization must never derive from `storage_url`.
17
27
 
@@ -21,84 +31,85 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
21
31
 
22
32
  - `flywheel_auth_status` (read; scopes: `read`; HTTP: `GET /auth/status`; core surface): Return Flywheel auth status for the current access token.
23
33
  - `flywheel_get_credits_balance` (read; scopes: `read`; HTTP: `GET /credits`; core surface): Return current user credits balance and lifetime counters.
24
- - `flywheel_updates_list` (read; scopes: `read`; HTTP: `GET /mcp/updates`; core surface): List in-app updates/announcements for the signed-in user.
25
- - `flywheel_updates_hide` (mutating; scopes: `write`; HTTP: `POST /mcp/updates/{announcement_id}/hide`; core surface): Mark one update as hidden for the current user (Don't show again).
26
- - `flywheel_updates_hide_all_active` (mutating; scopes: `write`; HTTP: `POST /mcp/updates/hide-all-active`; core surface): Hide all active updates for the current user (Don't show all active again).
27
- - `flywheel_updates_unhide` (mutating; scopes: `write`; HTTP: `DELETE /mcp/updates/{announcement_id}/hide`; core surface): Restore one hidden update for the current user.
28
- - `flywheel_list_nodes` (read; scopes: `read`; HTTP: `GET /mcp/nodes`; full-surface only): List nodes with optional owners/writers/visibility filters and projection control (`core`, `topology`, `full`).
29
- - `flywheel_resolve_node_slug` (read; scopes: `read`; HTTP: `GET /mcp/nodes/resolve-by-slug`; core surface): Resolve a node by slug_name with explicit conflict handling (`unique`, `context_resolved`, `ambiguous`, `not_found`).
30
- - `flywheel_get_node_sharing` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/sharing`; full-surface only): Get node sharing for one node (owner/collaborators/visibility).
31
- - `flywheel_set_sharing_for_node` (mutating; scopes: `write`; HTTP: `PUT /mcp/nodes/{node_id}/sharing`; full-surface only): Set sharing for one owned node (collaborators/private-unlisted-public visibility).
32
- - `flywheel_set_sharing_for_nodes` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/sharing/bulk`; full-surface only): Apply one sharing configuration across multiple owned nodes in bulk.
33
- - `flywheel_get_node` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}`; core surface): Get one node by node_id.
34
- - `flywheel_create_node_tag` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{root_node_id}/tags`; full-surface only): Create one graph tag from a root node.
35
- - `flywheel_update_node_tag` (mutating; scopes: `write`; HTTP: `PATCH /mcp/nodes/{root_node_id}/tags/{tag_id}`; full-surface only): Update one graph tag from a root node.
36
- - `flywheel_delete_node_tag` (mutating; scopes: `write`; HTTP: `DELETE /mcp/nodes/{root_node_id}/tags/{tag_id}`; full-surface only): Delete one graph tag from a root node.
37
- - `flywheel_set_node_tag_assignments` (mutating; scopes: `write`; HTTP: `PUT /mcp/nodes/{node_id}/tags`; full-surface only): Set graph tag assignments for one node.
38
- - `flywheel_get_node_tree` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/tree`; full-surface only): Get a root-aware bounded tree/DAG projection for an anchor node.
39
- - `flywheel_get_node_ancestry` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/ancestry`; full-surface only): Get ordered ancestry metadata from an anchor node to root boundaries.
40
- - `flywheel_get_campaign_snapshot` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/campaign/snapshot`; core surface): Read the current campaign snapshot for a node's root campaign, including configured views and derived records.
41
- - `flywheel_list_audit` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/audit`; full-surface only): List node MCP audit events.
34
+ - `flywheel_updates_list` (read; scopes: `read`; HTTP: `tool-mediated`; core surface): List in-app updates/announcements for the signed-in user.
35
+ - `flywheel_updates_hide` (mutating; scopes: `write`; HTTP: `POST /updates/{announcement_id}/hide`; core surface): Mark one update as hidden for the current user (Don't show again).
36
+ - `flywheel_updates_hide_all_active` (mutating; scopes: `write`; HTTP: `POST /updates/hide-all-active`; core surface): Hide all active updates for the current user (Don't show all active again).
37
+ - `flywheel_updates_unhide` (mutating; scopes: `write`; HTTP: `DELETE /updates/{announcement_id}/hide`; core surface): Restore one hidden update for the current user.
38
+ - `flywheel_list_nodes` (read; scopes: `read`; HTTP: `GET /nodes`; full-surface only): List nodes with optional owners/writers/visibility filters and projection control (`core`, `topology`, `full`).
39
+ - `flywheel_resolve_node_slug` (read; scopes: `read`; HTTP: `GET /nodes/resolve-by-slug`; core surface): Resolve a node by slug_name with explicit conflict handling (`unique`, `context_resolved`, `ambiguous`, `not_found`).
40
+ - `flywheel_get_node_sharing` (read; scopes: `read`; HTTP: `tool-mediated`; full-surface only): Get node sharing for one node (owner/collaborators/visibility).
41
+ - `flywheel_set_sharing_for_node` (mutating; scopes: `write`; HTTP: `tool-mediated`; full-surface only): Set sharing for one owned node (collaborators/private-unlisted-public visibility).
42
+ - `flywheel_set_sharing_for_nodes` (mutating; scopes: `write`; HTTP: `POST /nodes/access-policy/bulk`; full-surface only): Apply one sharing configuration across multiple owned nodes in bulk.
43
+ - `flywheel_get_node` (read; scopes: `read`; HTTP: `tool-mediated`; core surface): Get one node by node_id.
44
+ - `flywheel_create_node_tag` (mutating; scopes: `write`; HTTP: `POST /nodes/{root_node_id}/tags`; full-surface only): Create one graph tag from a root node. `track_history` is effective only when `one_only=true`; when `one_only=false`, the effective track_history=false.
45
+ - `flywheel_update_node_tag` (mutating; scopes: `write`; HTTP: `PATCH /nodes/{root_node_id}/tags/{tag_id}`; full-surface only): Update one graph tag from a root node.
46
+ - `flywheel_delete_node_tag` (mutating; scopes: `write`; HTTP: `DELETE /nodes/{root_node_id}/tags/{tag_id}`; full-surface only): Delete one graph tag from a root node.
47
+ - `flywheel_set_node_tag_assignments` (mutating; scopes: `write`; HTTP: `PUT /nodes/{node_id}/tags`; full-surface only): Set graph tag assignments for one node (`tag_ids` must be a JSON array of strings; omit `tag_ids` to clear all assignments to `[]`).
48
+ - `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.
49
+ - `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.
50
+ - `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.
51
+ - `flywheel_list_audit` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/audit`; full-surface only): List node MCP audit events.
42
52
 
43
53
  ### Node stage and commit
44
54
 
45
- - `flywheel_commit_new_node` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/commit-new`; full-surface only): Commit a locally staged new node into canonical storage and return the persisted node.
46
- - `flywheel_acquire_stage_lease` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/stage/lease/acquire`; full-surface only): Acquire a session-scoped stage lease for an existing node before local staged edits.
47
- - `flywheel_heartbeat_stage_lease` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/stage/lease/heartbeat`; full-surface only): Refresh the active stage lease for the current editing session.
48
- - `flywheel_release_stage_lease` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/stage/lease/release`; full-surface only): Release the active stage lease for the current editing session.
49
- - `flywheel_commit_node` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/commit`; core surface): Commit an existing node by publishing the caller's staged payload under an active stage lease.
50
- - `flywheel_branch_node` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/branch`; full-surface only): Create a child branch node.
51
- - `flywheel_merge_nodes` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/merge`; full-surface only): Merge nodes with caller-resolved node payload.
52
- - `flywheel_add_parent` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/parents/add`; full-surface only): Attach an additional parent edge to an existing node (keeps node identity, validates against cycles).
53
- - `flywheel_remove_parent` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/parents/remove`; full-surface only): Detach one parent edge from a node without deleting the node.
54
- - `flywheel_delete_node` (mutating; scopes: `write`; HTTP: `DELETE /mcp/nodes/{node_id}`; full-surface only): Delete a node subtree.
55
- - `flywheel_bulk_delete_nodes` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/bulk-delete`; full-surface only): Delete multiple node subtrees in one operation.
55
+ - `flywheel_commit_new_node` (mutating; scopes: `write`; HTTP: `POST /nodes/commit-new`; full-surface only): Commit a locally staged new node into canonical storage and return the persisted node.
56
+ - `flywheel_acquire_stage_lease` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/stage/lease/acquire`; full-surface only): Acquire a session-scoped stage lease for an existing node before local staged edits.
57
+ - `flywheel_heartbeat_stage_lease` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/stage/lease/heartbeat`; full-surface only): Refresh the active stage lease for the current editing session.
58
+ - `flywheel_release_stage_lease` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/stage/lease/release`; full-surface only): Release the active stage lease for the current editing session.
59
+ - `flywheel_commit_node` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/commit`; core surface): Commit an existing node by publishing the caller's staged payload under an active stage lease.
60
+ - `flywheel_branch_node` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/branch`; full-surface only): Create a child branch node with optimistic locking (`expected_revision` required).
61
+ - `flywheel_merge_nodes` (mutating; scopes: `write`; HTTP: `POST /nodes/merge`; full-surface only): Merge nodes with caller-resolved node payload.
62
+ - `flywheel_add_parent` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/parents/add`; full-surface only): Attach an additional parent edge to an existing node (keeps node identity, validates against cycles).
63
+ - `flywheel_remove_parent` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/parents/remove`; full-surface only): Detach one parent edge from a node without deleting the node.
64
+ - `flywheel_delete_node` (mutating; scopes: `write`; HTTP: `DELETE /nodes/{node_id}`; full-surface only): Delete a node and its descendants. Modes: `cascade` (delete full subtree), `detach_shared` (preserve descendants with surviving parents).
65
+ - `flywheel_bulk_delete_nodes` (mutating; scopes: `write`; HTTP: `POST /nodes/bulk-delete`; full-surface only): Delete multiple node subtrees in one operation.
56
66
 
57
67
  ### Artifacts
58
68
 
59
- - `flywheel_prepare_artifact_uploads` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/artifacts/uploads/prepare`; core surface): Prepare one or more raw-file artifact uploads (returns batch token + signed upload URLs). Upload must send raw file bytes to the returned URLs (do not upload JSON metadata wrappers).
60
- - `flywheel_finalize_artifact_uploads` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/artifacts/uploads/finalize`; core surface): Finalize a prepared artifact upload batch and append all staged artifacts to the node in one revision bump.
61
- - `flywheel_list_artifacts` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/artifacts`; core surface): List node artifacts.
62
- - `flywheel_get_artifact` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/artifacts/{artifact_id}`; core surface): Get one artifact by id.
63
- - `flywheel_delete_artifact` (mutating; scopes: `write`; HTTP: `DELETE /mcp/nodes/{node_id}/artifacts/{artifact_id}`; core surface): Delete one artifact by id with optimistic locking.
64
- - `flywheel_set_artifact_note` (mutating; scopes: `write`; HTTP: `PATCH /mcp/nodes/{node_id}/artifacts/{artifact_id}/note`; core surface): Set or clear one artifact note with optimistic locking.
69
+ - `flywheel_prepare_artifact_uploads` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/artifacts/uploads/prepare`; core surface): Prepare one or more raw-file artifact uploads (returns batch token + signed upload URLs). Upload must send raw file bytes to the returned URLs (do not upload JSON metadata wrappers).
70
+ - `flywheel_finalize_artifact_uploads` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/artifacts/uploads/finalize`; core surface): Finalize a prepared artifact upload batch and append all staged artifacts to the node in one revision bump.
71
+ - `flywheel_list_artifacts` (read; scopes: `read`; HTTP: `tool-mediated`; core surface): List node artifacts.
72
+ - `flywheel_get_artifact` (read; scopes: `read`; HTTP: `tool-mediated`; core surface): Get one artifact by id.
73
+ - `flywheel_delete_artifact` (mutating; scopes: `write`; HTTP: `DELETE /nodes/{node_id}/artifacts/{artifact_id}`; core surface): Delete one artifact by id with optimistic locking.
74
+ - `flywheel_set_artifact_note` (mutating; scopes: `write`; HTTP: `PATCH /nodes/{node_id}/artifacts/{artifact_id}/note`; core surface): Set or clear one artifact note with optimistic locking.
65
75
 
66
76
  ### Executions
67
77
 
68
- - `flywheel_launch_execution` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/executions`; core surface): Launch node execution.
69
- - `flywheel_list_executions` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/executions`; core surface): List node executions.
70
- - `flywheel_terminate_execution` (mutating; scopes: `write`; HTTP: `POST /mcp/nodes/{node_id}/executions/{execution_id}/terminate`; core surface): Terminate a node execution.
78
+ - `flywheel_launch_execution` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/executions`; core surface): Launch node execution.
79
+ - `flywheel_list_executions` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/executions`; core surface): List node executions.
80
+ - `flywheel_terminate_execution` (mutating; scopes: `write`; HTTP: `POST /nodes/{node_id}/executions/{execution_id}/terminate`; core surface): Terminate a node execution.
71
81
 
72
82
  ### Compute and budgets
73
83
 
74
- - `flywheel_compute_list_options` (read; scopes: `compute`; HTTP: `GET /mcp/compute/catalog`; core surface): List managed compute catalog options. This endpoint is catalog-only and excludes grant/budget funding fields.
75
- - `flywheel_compute_funding` (read; scopes: `compute`; HTTP: `GET /mcp/compute/funding`; core surface): Read grant-scoped compute funding context for a specific compute_grant_id.
76
- - `flywheel_compute_status` (read; scopes: `compute`; HTTP: `GET /mcp/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.
77
- - `flywheel_compute_connection` (read; scopes: `compute`; HTTP: `GET /mcp/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.
78
- - `flywheel_approval_session_heartbeat` (read; scopes: `compute`; HTTP: `POST /mcp/approval-sessions/heartbeat`; core surface): Create or refresh a compute-grant approval session for the current MCP host session.
79
- - `flywheel_list_approval_sessions` (read; scopes: `compute`; HTTP: `GET /mcp/approval-sessions`; core surface): List approval sessions visible to the current user.
80
- - `flywheel_expire_approval_session` (mutating; scopes: `compute`; HTTP: `POST /mcp/approval-sessions/expire`; core surface): Expire the current compute-grant approval session context without releasing active leases.
84
+ - `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.
85
+ - `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.
86
+ - `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.
87
+ - `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.
88
+ - `flywheel_approval_session_open` (read; scopes: `compute`; HTTP: `tool-mediated`; core surface): Create a new approval session with a server-minted session_id for compute-grant approval flows.
89
+ - `flywheel_approval_session_heartbeat` (read; scopes: `compute`; HTTP: `POST /approval-sessions/heartbeat`; core surface): Refresh an existing compute-grant approval session for the current MCP host session.
90
+ - `flywheel_list_approval_sessions` (read; scopes: `compute`; HTTP: `GET /approval-sessions`; core surface): List approval sessions visible to the current user.
91
+ - `flywheel_expire_approval_session` (mutating; scopes: `compute`; HTTP: `POST /approval-sessions/expire`; core surface): Expire the current compute-grant approval session context without releasing active leases.
81
92
  - `flywheel_request_compute_grant_approval` (mutating; scopes: `compute`; HTTP: `tool-mediated`; core surface): Request budget approval context before managed compute acquisition; branch on response status.
82
- - `flywheel_list_compute_grants` (read; scopes: `compute`; HTTP: `GET /mcp/compute/grants`; core surface): List active/exhausted compute grants available to the current user.
83
- - `flywheel_list_campaign_budgets` (read; scopes: `compute`; HTTP: `GET /mcp/nodes/{root_node_id}/campaign-budgets`; full-surface only): List campaign compute budgets for a campaign root. Organizer-only management view.
84
- - `flywheel_create_campaign_budget` (mutating; scopes: `compute`; HTTP: `POST /mcp/nodes/{root_node_id}/campaign-budgets`; full-surface only): Create an organizer-funded campaign compute budget shared with participants.
85
- - `flywheel_update_campaign_budget` (mutating; scopes: `compute`; HTTP: `PATCH /mcp/nodes/{root_node_id}/campaign-budgets/{compute_budget_id}`; full-surface only): Update hard caps or metadata for an organizer-funded campaign compute budget.
86
- - `flywheel_revoke_campaign_budget` (mutating; scopes: `compute`; HTTP: `DELETE /mcp/nodes/{root_node_id}/campaign-budgets/{compute_budget_id}`; full-surface only): Revoke an organizer-funded campaign compute budget.
87
- - `flywheel_compute_acquire` (mutating; scopes: `compute`; HTTP: `tool-mediated`; core surface): Acquire managed compute 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 and optional context_node_id.
88
- - `flywheel_compute_release` (mutating; scopes: `compute`; HTTP: `POST /mcp/compute/release`; core surface): Asynchronously release one managed compute lease by lease_id within the current lease_control_token scope.
89
- - `flywheel_compute_release_all` (mutating; scopes: `compute`; HTTP: `POST /mcp/compute/release-all`; core surface): Asynchronously release active managed compute leases in the current lease_control_token scope; set force=true for explicit account-wide cleanup for the current user.
93
+ - `flywheel_list_compute_grants` (read; scopes: `compute`; HTTP: `GET /compute/grants`; core surface): List active/exhausted compute grants available to the current user.
94
+ - `flywheel_list_campaign_budgets` (read; scopes: `compute`; HTTP: `GET /nodes/{root_node_id}/campaign-budgets`; full-surface only): List campaign compute budgets for a campaign root. Organizer-only management view.
95
+ - `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.
96
+ - `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.
97
+ - `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.
98
+ - `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.
99
+ - `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.
100
+ - `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 for explicit account-wide cleanup for the current user.
90
101
 
91
102
  ### Contract, audit, and export
92
103
 
93
104
  - `flywheel_get_contract` (read; scopes: `read`; HTTP: `GET /mcp/contract`; core surface): Return Flywheel MCP contract overview (scopes, write safety, operation catalog, and section index).
94
105
  - `flywheel_get_contract_section` (read; scopes: `read`; HTTP: `GET /mcp/contract/sections/{section_id}`; core surface): Return one contract section by section_id (for example `graph` or `campaign/template_v1`).
95
- - `flywheel_export_subgraph` (read; scopes: `read`; HTTP: `POST /mcp/export`; full-surface only): Export selected graph/subgraph nodes as JSON.
96
- - `flywheel_import_subgraph` (mutating; scopes: `write`; HTTP: `POST /mcp/import`; full-surface only): Import graph/subgraph JSON payload into new node IDs. Set normalize_cycles=true to drop cycle/self-loop edges; default rejects cyclic payloads.
97
- - `flywheel_summarize_node_tree` (read; scopes: `read`; HTTP: `GET /mcp/nodes/{node_id}/summary`; full-surface only): Summarize a node tree using node fields only.
98
- - `flywheel_export_summary` (read; scopes: `read`; HTTP: `POST /mcp/export-summary`; full-surface only): Generate markdown summary for selected nodes.
99
- - `flywheel_export_summary_stream` (read; scopes: `read`; HTTP: `POST /mcp/export-summary-stream`; full-surface only): Generate summary stream events for selected nodes.
100
- - `flywheel_export_summary_pdf` (read; scopes: `read`; HTTP: `POST /mcp/export-summary-pdf`; full-surface only): Generate PDF summary for selected nodes.
101
- - `flywheel_export_summary_render_pdf` (read; scopes: `read`; HTTP: `POST /mcp/export-summary-render-pdf`; full-surface only): Render provided markdown to PDF and embed export metadata.
106
+ - `flywheel_export_subgraph` (read; scopes: `read`; HTTP: `POST /export`; full-surface only): Export selected graph/subgraph nodes as JSON.
107
+ - `flywheel_import_subgraph` (mutating; scopes: `write`; HTTP: `POST /import`; full-surface only): Import graph/subgraph JSON payload into new node IDs. Set normalize_cycles=true to drop cycle/self-loop edges; default rejects cyclic payloads.
108
+ - `flywheel_summarize_node_tree` (read; scopes: `read`; HTTP: `GET /nodes/{node_id}/summary`; full-surface only): Summarize a node tree using node fields only.
109
+ - `flywheel_export_summary` (read; scopes: `read`; HTTP: `POST /export-summary`; full-surface only): Generate markdown summary for selected nodes.
110
+ - `flywheel_export_summary_stream` (read; scopes: `read`; HTTP: `POST /export-summary-stream`; full-surface only): Generate summary stream events for selected nodes.
111
+ - `flywheel_export_summary_pdf` (read; scopes: `read`; HTTP: `POST /export-summary-pdf`; full-surface only): Generate PDF summary for selected nodes.
112
+ - `flywheel_export_summary_render_pdf` (read; scopes: `read`; HTTP: `POST /export-summary-render-pdf`; full-surface only): Render provided markdown to PDF and embed export metadata.
102
113
 
103
114
  ## Practical Tool Sequences
104
115
 
@@ -118,7 +129,7 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
118
129
  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.
119
130
  3. `flywheel_request_compute_grant_approval`: If compute is needed, request budget approval context first. Branch on response status.
120
131
  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.
121
- 5. `flywheel_compute_acquire`: Acquire lease with `compute_grant_id`; include `approval_session_id` from approval response.
132
+ 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`.
122
133
  6. `flywheel_compute_status`: Poll until the active lease is ready; follow `recommended_next_action`.
123
134
  7. `flywheel_launch_execution`: Launch execution once compute and inputs are ready.
124
135
  8. `flywheel_list_executions`: Poll until execution reaches terminal status.
@@ -134,13 +145,15 @@ Flywheel is a graph-based system for tracking research work, decisions, and evid
134
145
  - `flywheel_acquire_stage_lease`, `flywheel_heartbeat_stage_lease`, `flywheel_release_stage_lease`: coordinate session-scoped local staged edits for an existing node before commit.
135
146
  - `flywheel_get_campaign_snapshot`: read the current derived campaign state for this node's root campaign instead of inferring standings from freeform text.
136
147
  - `flywheel_get_node_sharing`: after sharing writes, verify with flywheel_get_node_sharing before reporting private/shared/public state.
148
+ - `flywheel_set_node_tag_assignments`: pass `tag_ids` as a JSON array of strings; omitting `tag_ids` clears all assignments (`[]`).
149
+ - `flywheel_list_nodes`: canonical filter inputs for `owners`, `writers`, and `visibility` are arrays; scalar `owners`/`writers` may be normalized by transport compatibility layers, but array form is preferred.
137
150
  - `flywheel_compute_status`: check first when work may need managed compute (GPU), using the active lease_control_token from host context (or pass it explicitly).
138
151
  - `flywheel_list_compute_grants`: list active compute grants (funded by user/root budgets) and select one `compute_grant_id` for acquisition.
139
152
  - `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`).
140
153
  - `flywheel_compute_connection`: read SSH connection material for the active user lease once status indicates the lease is usable, scoped by lease_control_token.
141
- - `flywheel_compute_list_options`: use when a lease is needed and no suitable active lease exists, then select explicit provider-qualified `offer_id` (`provider::offer_id`) and `region`. This is a catalog-only read and excludes grant/budget money fields.
154
+ - `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.
142
155
  - `flywheel_compute_funding`: read grant-scoped funding context (`grant_cents`, `remaining_cents`, backing budget fields) for the selected `compute_grant_id` before acquire.
143
- - `flywheel_compute_acquire`: provision compute once requirements are clear. This requires a valid `compute_grant_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.
156
+ - `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.
144
157
  - `flywheel_compute_release`: release compute when no longer needed, scoped by lease_control_token.
145
158
  - `flywheel_launch_execution`, `flywheel_list_executions`, `flywheel_terminate_execution`: manage execution status transitions.
146
159
  - `flywheel_prepare_artifact_uploads`: prepare one or more signed raw-file upload requests for concrete deliverables/evidence produced by the work.
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: flywheel-tree
3
+ description: Render Flywheel DAGs as terminal tree views.
4
+ ---
5
+
6
+ # Flywheel Tree
7
+
8
+ ## When To Use
9
+
10
+ Use this skill when the user wants a Flywheel graph shown in classical CLI tree format from a node id or slug.
11
+ Use it to inspect structure, compare branch topology, or audit parent-child relationships in read-only mode.
12
+ Always print the descendant subgraph rooted at the user-provided node; print the full DAG only when that provided node is the actual DAG root.
13
+ This skill uses one local wrapper command (selector -> MCP resolve/get_node_tree -> in-process render) to keep output deterministic and latency low.
14
+
15
+ ## Modes
16
+
17
+ This skill supports both Flywheel install modes, with an MCP-first execution path:
18
+
19
+ - **`--mode mcp` install**: preferred for this skill because `scripts/render_tree_via_mcp.py` resolves and calls MCP directly.
20
+ - **`--mode cli` install**: `setup --mode cli` configures runtime credentials for CLI routing; prerequisite for bare-binary routing is `npm install -g @paradigma-inc/flywheel`. This skill's wrapper still reads through MCP, so keep MCP wiring available for the host that runs the script.
21
+
22
+ When switching an already-configured host between modes, rerun setup with `--force` (or uninstall first) so prior-mode artifacts are reconciled explicitly.
23
+
24
+ ## Input Contract
25
+
26
+ Accept any of these as the root selector:
27
+
28
+ - Node id (UUID-like string)
29
+ - Slug name (for example `quiet-snow-3839`)
30
+ - Natural-language root reference in the user message (for example "DAG whose root is quiet-snow-3839")
31
+
32
+ If no node id or slug is explicitly provided:
33
+
34
+ - Infer the root from user wording.
35
+ - If inference is not possible, ask one concise question requesting the root id or slug.
36
+
37
+ ## Workflow
38
+
39
+ 1. Follow [workflow.md](references/workflow.md) end-to-end.
40
+ 2. Use `scripts/render_tree_via_mcp.py` as the only execution path:
41
+ - The script resolves slug selectors via `flywheel_resolve_node_slug` when needed.
42
+ - The script fetches topology via `flywheel_get_node_tree`.
43
+ - The script renders in-process with `render_tree.py`.
44
+ - Run it via `uv run --quiet --with mcp python ...` so the skill does not depend on any repository layout and keeps stdout clean.
45
+ - The script auto-discovers MCP config from `--codex-config`/`--mcp-config`, `CODEX_CONFIG`, `CODEX_HOME/config.toml`, nearest project `.codex/config.toml`, `~/.codex/config.toml`, nearest project `.mcp.json`, then `~/.claude.json`, and tries candidates until one resolves the requested alias.
46
+ - Default MCP alias is `flywheel`; when missing, the script auto-resolves a compatible `flywheel*` alias.
47
+ - Do not pipe full tree JSON through shell here-strings.
48
+ - Do not write temporary JSON files.
49
+ 3. Preserve renderer output formatting exactly:
50
+ - In chat responses, wrap renderer stdout in a fenced `text` code block.
51
+ - Do not alter indentation or rewrite line prefixes.
52
+ 4. Keep visual conventions produced by the renderer:
53
+ - Node label: `name [kind] | slugname` when slug exists.
54
+ - Omit `| slugname` entirely when slug is missing.
55
+ - `[insight]` is pastel red, `[empirical]` is pastel yellow, `[untyped]` is gray.
56
+ - `slugname` is always gray.
57
+
58
+ ## Result Contract
59
+
60
+ - Do not edit the graph.
61
+ - Use read-only analysis only.
62
+ - Do not mutate nodes, tags, artifacts, parents, sharing, or executions.
63
+ - If data retrieval or script execution fails, report the failure reason and stop.
64
+
65
+ ## Resources
66
+
67
+ - `scripts/render_tree.py`: deterministic tree renderer for raw `flywheel_get_node_tree` JSON.
68
+ - `scripts/render_tree_via_mcp.py`: one-command MCP wrapper (resolve selector -> get tree -> render).
69
+ - `references/workflow.md`: full operational workflow and invocation commands.
70
+ - `assets/ansi_palette.json`: color palette used by the renderer.
@@ -0,0 +1,4 @@
1
+ interface:
2
+ display_name: "Flywheel Tree"
3
+ short_description: "Render Flywheel DAGs as terminal tree views with low-latency MCP wrapper"
4
+ default_prompt: "Resolve a Flywheel node id or slug, then run scripts/render_tree_via_mcp.py once using auto-discovered MCP config/alias (Codex or Claude) (selector -> MCP resolve/get_node_tree -> in-process render) and return stdout exactly."
@@ -0,0 +1,29 @@
1
+ {
2
+ "colors": [
3
+ "\u001b[38;5;224m",
4
+ "\u001b[38;5;217m",
5
+ "\u001b[38;5;210m",
6
+ "\u001b[38;5;223m",
7
+ "\u001b[38;5;216m",
8
+ "\u001b[38;5;209m",
9
+ "\u001b[38;5;230m",
10
+ "\u001b[38;5;229m",
11
+ "\u001b[38;5;228m",
12
+ "\u001b[38;5;157m",
13
+ "\u001b[38;5;150m",
14
+ "\u001b[38;5;114m",
15
+ "\u001b[38;5;159m",
16
+ "\u001b[38;5;116m",
17
+ "\u001b[38;5;73m",
18
+ "\u001b[38;5;153m",
19
+ "\u001b[38;5;111m",
20
+ "\u001b[38;5;75m",
21
+ "\u001b[38;5;183m",
22
+ "\u001b[38;5;147m",
23
+ "\u001b[38;5;141m",
24
+ "\u001b[38;5;225m",
25
+ "\u001b[38;5;218m",
26
+ "\u001b[38;5;211m"
27
+ ],
28
+ "reset": "\u001b[0m"
29
+ }