@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,108 @@
1
+ # Flywheel Tree Workflow
2
+
3
+ Follow this workflow exactly.
4
+
5
+ ## 1. Resolve Selector In Agent
6
+
7
+ Infer the best selector string from the user request (node id or slug).
8
+
9
+ - If selector is explicit in user text, use it directly.
10
+ - If selector is implicit but inferable, extract it.
11
+ - If no selector is provided, infer from user wording.
12
+ - If inference is not possible, ask one concise question for the root id or slug.
13
+
14
+ ## 2. Run One Wrapper Command (No JSON Marshalling)
15
+
16
+ Do not call `flywheel_get_node_tree` in the agent and then re-emit large JSON.
17
+ Run `scripts/render_tree_via_mcp.py`, which calls MCP tools and renders in-process.
18
+
19
+ ```bash
20
+ # Ubuntu/macOS (bash/zsh)
21
+ SKILL_ROOT=""
22
+ for CANDIDATE in \
23
+ "$(pwd)/.agents/skills/flywheel-tree" \
24
+ "$HOME/.agents/skills/flywheel-tree" \
25
+ "$HOME/.codex/skills/flywheel-tree" \
26
+ "${CODEX_HOME:+$CODEX_HOME/skills/flywheel-tree}"; do
27
+ if [ -n "$CANDIDATE" ] && [ -f "$CANDIDATE/scripts/render_tree_via_mcp.py" ]; then
28
+ SKILL_ROOT="$CANDIDATE"
29
+ break
30
+ fi
31
+ done
32
+ if [ -z "$SKILL_ROOT" ]; then
33
+ echo "flywheel-tree skill not found" >&2
34
+ exit 2
35
+ fi
36
+ # No repository checkout is required.
37
+ uv run --quiet --with mcp python \
38
+ "$SKILL_ROOT/scripts/render_tree_via_mcp.py" \
39
+ --selector "<node-id-or-slug>" \
40
+ --projection topology \
41
+ --max-nodes 1000
42
+ ```
43
+
44
+ ```powershell
45
+ # Windows (PowerShell)
46
+ $candidates = @(
47
+ (Join-Path (Get-Location).Path ".agents/skills/flywheel-tree"),
48
+ (Join-Path $HOME ".agents/skills/flywheel-tree"),
49
+ (Join-Path $HOME ".codex/skills/flywheel-tree")
50
+ )
51
+ if ($env:CODEX_HOME) {
52
+ $candidates += (Join-Path $env:CODEX_HOME "skills/flywheel-tree")
53
+ }
54
+ $skillRoot = $null
55
+ foreach ($candidate in $candidates) {
56
+ if (Test-Path (Join-Path $candidate "scripts/render_tree_via_mcp.py")) {
57
+ $skillRoot = $candidate
58
+ break
59
+ }
60
+ }
61
+ if (-not $skillRoot) {
62
+ throw "flywheel-tree skill not found"
63
+ }
64
+ # No repository checkout is required.
65
+ uv run --quiet --with mcp python `
66
+ "$skillRoot/scripts/render_tree_via_mcp.py" `
67
+ --selector "<node-id-or-slug>" `
68
+ --projection topology `
69
+ --max-nodes 1000
70
+ ```
71
+
72
+ MCP endpoint and credentials source:
73
+
74
+ - Config is auto-discovered in this order:
75
+ - `--codex-config <path>` or `--mcp-config <path>` when provided
76
+ - `CODEX_CONFIG` env var
77
+ - `CODEX_HOME/config.toml`
78
+ - nearest `./.codex/config.toml` (walking parent directories)
79
+ - `~/.codex/config.toml`
80
+ - nearest `./.mcp.json` (walking parent directories)
81
+ - `~/.claude.json`
82
+ - MCP alias default is `flywheel`. If that alias is missing, the wrapper auto-selects a compatible `flywheel*` alias.
83
+ - Use `--codex-mcp-server` to force a specific alias.
84
+ - Use `--mcp-url` / `--access-token` only for explicit overrides.
85
+
86
+ Do not edit the graph.
87
+
88
+ ## 3. Print Renderer Output As-Is
89
+
90
+ Preserve renderer stdout exactly. Do not rewrite formatting.
91
+
92
+ - In chat responses, present the tree inside a fenced `text` code block.
93
+ - Preserve all leading indentation spaces and box-drawing characters.
94
+
95
+ Expected output format:
96
+
97
+ - Terminal tree with box-drawing characters
98
+ - Node label format: `name [kind] | slugname` when slug exists, otherwise `name [kind]`
99
+ - Duplicate views for multi-parent nodes
100
+ - One unique color per multi-parent set
101
+ - Kind colors are fixed:
102
+ - `[insight]` pastel red
103
+ - `[empirical]` pastel yellow
104
+ - `[untyped]` gray
105
+ - `slugname` segment is always gray
106
+ - Summary with exactly:
107
+ - `root: <title>`
108
+ - `node_count: <count>`
@@ -0,0 +1,407 @@
1
+ #!/usr/bin/env python3
2
+ """Render a Flywheel get_node_tree response into terminal-ready tree text.
3
+
4
+ Input:
5
+ - Raw JSON from flywheel_get_node_tree (stdin or file).
6
+
7
+ Output:
8
+ - Text suitable for direct terminal printing, including ANSI colors and summary:
9
+ - root: <anchor title>
10
+ - node_count: <anchor-rooted descendant node count>
11
+ """
12
+
13
+ from __future__ import annotations
14
+
15
+ import argparse
16
+ import json
17
+ import sys
18
+ from pathlib import Path
19
+ from typing import Any, Dict, Iterable, Iterator, List, NamedTuple, Set, Tuple
20
+
21
+ DEFAULT_COLORS = [
22
+ "\u001b[94m",
23
+ "\u001b[96m",
24
+ "\u001b[95m",
25
+ "\u001b[92m",
26
+ "\u001b[38;5;45m",
27
+ "\u001b[38;5;39m",
28
+ "\u001b[38;5;51m",
29
+ "\u001b[38;5;75m",
30
+ "\u001b[38;5;81m",
31
+ "\u001b[38;5;87m",
32
+ "\u001b[38;5;69m",
33
+ "\u001b[38;5;63m",
34
+ "\u001b[38;5;57m",
35
+ "\u001b[38;5;99m",
36
+ "\u001b[38;5;105m",
37
+ "\u001b[38;5;111m",
38
+ "\u001b[38;5;117m",
39
+ "\u001b[38;5;123m",
40
+ "\u001b[38;5;159m",
41
+ "\u001b[38;5;195m",
42
+ ]
43
+ DEFAULT_RESET = "\u001b[0m"
44
+ GRAY = "\u001b[38;5;245m"
45
+ PASTEL_RED = "\u001b[38;5;217m"
46
+ PASTEL_YELLOW = "\u001b[38;5;229m"
47
+
48
+ BOX_MID = "├── "
49
+ BOX_LAST = "└── "
50
+ BOX_PIPE = "│ "
51
+ BOX_SPACE = " "
52
+
53
+
54
+ class Node(NamedTuple):
55
+ title: str
56
+ kind: str
57
+ slug_name: str
58
+ parent_ids: Tuple[str, ...]
59
+ child_ids: Tuple[str, ...]
60
+
61
+
62
+ def _normalize_ansi(value: str) -> str:
63
+ if "\\u001b" in value or "\\x1b" in value:
64
+ try:
65
+ return value.encode("utf-8").decode("unicode_escape")
66
+ except Exception: # noqa: BLE001
67
+ return value
68
+ return value
69
+
70
+
71
+ def _extract_tree_payload(payload: Any) -> dict:
72
+ if isinstance(payload, dict) and "nodes" in payload and "anchor_node_id" in payload:
73
+ return payload
74
+ if isinstance(payload, dict):
75
+ for key in ("result", "data", "response"):
76
+ nested = payload.get(key)
77
+ if (
78
+ isinstance(nested, dict)
79
+ and "nodes" in nested
80
+ and "anchor_node_id" in nested
81
+ ):
82
+ return nested
83
+ raise ValueError(
84
+ "Input JSON is not a flywheel_get_node_tree response (missing nodes/anchor_node_id)."
85
+ )
86
+
87
+
88
+ def _read_json_from_path(path: str) -> dict:
89
+ if path == "-":
90
+ raw = sys.stdin.buffer.read().decode("utf-8-sig")
91
+ payload = json.loads(raw)
92
+ else:
93
+ with Path(path).open("r", encoding="utf-8-sig") as handle:
94
+ payload = json.load(handle)
95
+ return _extract_tree_payload(payload)
96
+
97
+
98
+ def _load_palette(asset_path: Path) -> tuple[List[str], str]:
99
+ if not asset_path.exists():
100
+ return DEFAULT_COLORS, DEFAULT_RESET
101
+
102
+ with asset_path.open("r", encoding="utf-8-sig") as handle:
103
+ data = json.load(handle)
104
+
105
+ colors = data.get("colors") if isinstance(data, dict) else None
106
+ reset = (
107
+ data.get("reset", DEFAULT_RESET) if isinstance(data, dict) else DEFAULT_RESET
108
+ )
109
+
110
+ if not isinstance(colors, list) or not colors:
111
+ return DEFAULT_COLORS, DEFAULT_RESET
112
+
113
+ safe_colors = [
114
+ _normalize_ansi(color) for color in colors if isinstance(color, str) and color
115
+ ]
116
+ if not safe_colors:
117
+ return DEFAULT_COLORS, DEFAULT_RESET
118
+
119
+ if not isinstance(reset, str) or not reset:
120
+ reset = DEFAULT_RESET
121
+
122
+ return safe_colors, _normalize_ansi(reset)
123
+
124
+
125
+ def _clean_text(value: Any) -> str:
126
+ return value.strip() if isinstance(value, str) else ""
127
+
128
+
129
+ def _build_node_map(nodes_payload: Iterable[dict]) -> Dict[str, Node]:
130
+ node_map: Dict[str, Node] = {}
131
+
132
+ for raw in nodes_payload:
133
+ if not isinstance(raw, dict):
134
+ continue
135
+
136
+ node_id = _clean_text(raw.get("node_id"))
137
+ if not node_id:
138
+ continue
139
+
140
+ title = _clean_text(raw.get("title")) or node_id
141
+ kind_raw = raw.get("kind", raw.get("node_type", ""))
142
+ kind = _clean_text(kind_raw) or "untyped"
143
+ slug_name_raw = raw.get("slug_name", raw.get("slug"))
144
+ slug_name = _clean_text(slug_name_raw)
145
+
146
+ parent_raw = raw.get("parent_ids")
147
+ if not isinstance(parent_raw, list):
148
+ parent_raw = raw.get("incoming_ids", [])
149
+ child_raw = raw.get("child_ids")
150
+ if not isinstance(child_raw, list):
151
+ child_raw = raw.get("outgoing_ids", [])
152
+
153
+ parent_ids = tuple(str(p) for p in parent_raw if isinstance(p, str))
154
+ child_ids = tuple(str(c) for c in child_raw if isinstance(c, str))
155
+
156
+ node_map[node_id] = Node(
157
+ title=title,
158
+ kind=kind,
159
+ slug_name=slug_name,
160
+ parent_ids=parent_ids,
161
+ child_ids=child_ids,
162
+ )
163
+
164
+ return node_map
165
+
166
+
167
+ def _collect_descendants(
168
+ anchor_node_id: str, node_map: Dict[str, Node]
169
+ ) -> tuple[Set[str], List[str]]:
170
+ descendants: Set[str] = set()
171
+ order: List[str] = []
172
+ stack: List[str] = [anchor_node_id]
173
+
174
+ while stack:
175
+ current = stack.pop()
176
+ if current in descendants:
177
+ continue
178
+
179
+ node = node_map.get(current)
180
+ if node is None:
181
+ continue
182
+
183
+ descendants.add(current)
184
+ order.append(current)
185
+ for child_id in reversed(node.child_ids):
186
+ stack.append(child_id)
187
+
188
+ return descendants, order
189
+
190
+
191
+ def render_tree_text(
192
+ tree_payload: dict,
193
+ anchor_override: str | None = None,
194
+ use_color: bool = True,
195
+ palette_path: Path | None = None,
196
+ ) -> str:
197
+ return "\n".join(
198
+ _iter_render_lines(
199
+ tree_payload=tree_payload,
200
+ anchor_override=anchor_override,
201
+ use_color=use_color,
202
+ palette_path=palette_path,
203
+ )
204
+ )
205
+
206
+
207
+ def _iter_render_lines(
208
+ tree_payload: dict,
209
+ anchor_override: str | None = None,
210
+ use_color: bool = True,
211
+ palette_path: Path | None = None,
212
+ ) -> Iterator[str]:
213
+ node_map = _build_node_map(tree_payload.get("nodes", []))
214
+
215
+ anchor = _clean_text(anchor_override) or _clean_text(
216
+ tree_payload.get("anchor_node_id")
217
+ )
218
+ if not anchor:
219
+ raise ValueError("Missing anchor node id.")
220
+ if anchor not in node_map:
221
+ raise ValueError(f"Anchor node '{anchor}' is not present in nodes payload.")
222
+
223
+ descendants, ordered_descendants = _collect_descendants(anchor, node_map)
224
+ if anchor not in descendants:
225
+ raise ValueError(f"Could not build descendant subgraph for anchor '{anchor}'.")
226
+
227
+ retained_children: Dict[str, Tuple[str, ...]] = {}
228
+ multi_parent_nodes: List[str] = []
229
+
230
+ for node_id in ordered_descendants:
231
+ node = node_map[node_id]
232
+
233
+ retained = tuple(child for child in node.child_ids if child in descendants)
234
+ retained_children[node_id] = retained
235
+
236
+ parent_count = 0
237
+ for parent_id in node.parent_ids:
238
+ if parent_id in descendants:
239
+ parent_count += 1
240
+ if parent_count > 1:
241
+ multi_parent_nodes.append(node_id)
242
+ break
243
+
244
+ colors, reset = (
245
+ _load_palette(palette_path) if palette_path else (DEFAULT_COLORS, DEFAULT_RESET)
246
+ )
247
+
248
+ multi_parent_color: Dict[str, str] = {}
249
+ for idx, node_id in enumerate(multi_parent_nodes):
250
+ multi_parent_color[node_id] = colors[idx % len(colors)]
251
+
252
+ seen_multi_parent: Dict[str, int] = {node_id: 0 for node_id in multi_parent_nodes}
253
+ ancestry: Set[str] = set()
254
+ expanded_nodes: Set[str] = set()
255
+
256
+ def line_for(node_id: str) -> str:
257
+ node = node_map[node_id]
258
+ kind_token = f"[{node.kind}]"
259
+ seen_count = seen_multi_parent.get(node_id)
260
+ has_multi_parent = seen_count is not None
261
+ mp_color = multi_parent_color[node_id] if has_multi_parent else ""
262
+
263
+ if has_multi_parent:
264
+ suffix = " (multi-parent)" if seen_count == 0 else " (duplicate view)"
265
+ seen_multi_parent[node_id] = seen_count + 1
266
+ else:
267
+ suffix = ""
268
+
269
+ if not use_color:
270
+ rendered = f"{node.title} {kind_token}"
271
+ if node.slug_name:
272
+ rendered += f" | {node.slug_name}"
273
+ rendered += suffix
274
+ return rendered
275
+
276
+ if node.kind == "insight":
277
+ kind_color = PASTEL_RED
278
+ elif node.kind == "empirical":
279
+ kind_color = PASTEL_YELLOW
280
+ elif node.kind == "untyped":
281
+ kind_color = GRAY
282
+ else:
283
+ kind_color = ""
284
+
285
+ title_part = (
286
+ f"{mp_color}{node.title}{reset}" if has_multi_parent else node.title
287
+ )
288
+ kind_part = f"{kind_color}{kind_token}{reset}" if kind_color else kind_token
289
+
290
+ rendered = f"{title_part} {kind_part}"
291
+ if node.slug_name:
292
+ rendered += f" {GRAY}| {node.slug_name}{reset}"
293
+ if suffix:
294
+ rendered += f" {mp_color}{suffix}{reset}" if has_multi_parent else suffix
295
+ return rendered
296
+
297
+ # Iterative DFS avoids RecursionError on very deep trees.
298
+ stack: List[Tuple[Any, ...]] = [("enter", anchor, "", True, True)]
299
+
300
+ while stack:
301
+ frame = stack.pop()
302
+ tag = frame[0]
303
+
304
+ if tag == "exit":
305
+ _, node_id = frame
306
+ ancestry.remove(node_id)
307
+ continue
308
+
309
+ _, node_id, prefix, is_last, is_root = frame
310
+ if node_id in ancestry:
311
+ connector = "" if is_root else (BOX_LAST if is_last else BOX_MID)
312
+ yield f"{prefix}{connector}[cycle] {node_id}"
313
+ continue
314
+
315
+ if is_root:
316
+ yield line_for(node_id)
317
+ child_prefix = ""
318
+ else:
319
+ connector = BOX_LAST if is_last else BOX_MID
320
+ yield f"{prefix}{connector}{line_for(node_id)}"
321
+ child_prefix = prefix + (BOX_SPACE if is_last else BOX_PIPE)
322
+
323
+ # Dense DAGs can have many parent-paths to the same node.
324
+ # Expand each node subtree once, then show duplicate views without
325
+ # re-expanding descendants to prevent combinatorial memory/runtime blowups.
326
+ if node_id in expanded_nodes:
327
+ continue
328
+ expanded_nodes.add(node_id)
329
+
330
+ ancestry.add(node_id)
331
+ children = retained_children.get(node_id, ())
332
+ stack.append(("exit", node_id))
333
+
334
+ # Reverse push order to preserve original left-to-right DFS output.
335
+ for idx in range(len(children) - 1, -1, -1):
336
+ child_id = children[idx]
337
+ child_is_last = idx == (len(children) - 1)
338
+ stack.append(("enter", child_id, child_prefix, child_is_last, False))
339
+
340
+ yield ""
341
+ yield f"root: {node_map[anchor].title}"
342
+ yield f"node_count: {len(descendants)}"
343
+
344
+
345
+ def _build_arg_parser() -> argparse.ArgumentParser:
346
+ parser = argparse.ArgumentParser(
347
+ description="Render Flywheel get_node_tree JSON into terminal-ready tree text."
348
+ )
349
+ parser.add_argument(
350
+ "--input",
351
+ required=True,
352
+ help="Path to JSON input file, or '-' to read from stdin.",
353
+ )
354
+ parser.add_argument(
355
+ "--root-node",
356
+ default=None,
357
+ help="Optional anchor node id override. Defaults to anchor_node_id from input.",
358
+ )
359
+ parser.add_argument(
360
+ "--no-color",
361
+ action="store_true",
362
+ help="Disable ANSI color output.",
363
+ )
364
+ parser.add_argument(
365
+ "--palette",
366
+ default=None,
367
+ help="Optional path to palette JSON file with fields: colors (list), reset (string).",
368
+ )
369
+ return parser
370
+
371
+
372
+ def main() -> int:
373
+ parser = _build_arg_parser()
374
+ args = parser.parse_args()
375
+
376
+ try:
377
+ payload = _read_json_from_path(args.input)
378
+ palette = Path(args.palette) if args.palette else None
379
+ rendered_lines = _iter_render_lines(
380
+ tree_payload=payload,
381
+ anchor_override=args.root_node,
382
+ use_color=not args.no_color,
383
+ palette_path=palette,
384
+ )
385
+ except Exception as exc: # noqa: BLE001
386
+ print(f"render_tree.py error: {exc}", file=sys.stderr)
387
+ return 1
388
+
389
+ try:
390
+ sys.stdout.reconfigure(encoding="utf-8") # type: ignore[attr-defined]
391
+ except Exception: # noqa: BLE001
392
+ pass
393
+
394
+ wrote_any = False
395
+ for line in rendered_lines:
396
+ if wrote_any:
397
+ sys.stdout.write("\n")
398
+ sys.stdout.write(line)
399
+ wrote_any = True
400
+ if wrote_any:
401
+ sys.stdout.write("\n")
402
+
403
+ return 0
404
+
405
+
406
+ if __name__ == "__main__":
407
+ raise SystemExit(main())