upfynai-code 2.6.0 → 2.6.1

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 (295) hide show
  1. package/README.md +123 -88
  2. package/bin/cli.js +63 -0
  3. package/package.json +48 -106
  4. package/src/auth.js +115 -0
  5. package/src/config.js +33 -0
  6. package/src/connect.js +314 -0
  7. package/src/launch.js +54 -0
  8. package/src/mcp.js +57 -0
  9. package/src/server.js +54 -0
  10. package/client/dist/api-docs.html +0 -879
  11. package/client/dist/assets/AppContent-C0CyP3g5.js +0 -513
  12. package/client/dist/assets/CanvasPanel-0u9QR7U-.js +0 -34
  13. package/client/dist/assets/CanvasPanel-WhZulBJw.css +0 -1
  14. package/client/dist/assets/DashboardPanel-Dgqw1yZk.js +0 -1
  15. package/client/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  16. package/client/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  17. package/client/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  18. package/client/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  19. package/client/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  20. package/client/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  21. package/client/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  22. package/client/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  23. package/client/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  24. package/client/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  25. package/client/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  26. package/client/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  27. package/client/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  28. package/client/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  29. package/client/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  30. package/client/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  31. package/client/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  32. package/client/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  33. package/client/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  34. package/client/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  35. package/client/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  36. package/client/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  37. package/client/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  38. package/client/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  39. package/client/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  40. package/client/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  41. package/client/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  42. package/client/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  43. package/client/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  44. package/client/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  45. package/client/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  46. package/client/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  47. package/client/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  48. package/client/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  49. package/client/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  50. package/client/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  51. package/client/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  52. package/client/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  53. package/client/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  54. package/client/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  55. package/client/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  56. package/client/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  57. package/client/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  58. package/client/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  59. package/client/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  60. package/client/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  61. package/client/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  62. package/client/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  63. package/client/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  64. package/client/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  65. package/client/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  66. package/client/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  67. package/client/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  68. package/client/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  69. package/client/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  70. package/client/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  71. package/client/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  72. package/client/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  73. package/client/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  74. package/client/dist/assets/LoginModal-CZDEzqjK.js +0 -19
  75. package/client/dist/assets/MarkdownPreview-CYdvwJaV.js +0 -1
  76. package/client/dist/assets/Onboarding-DR6NZ4Vz.js +0 -1
  77. package/client/dist/assets/SetupForm-D49gtWY4.js +0 -1
  78. package/client/dist/assets/Tableau10-B-NsZVaP.js +0 -1
  79. package/client/dist/assets/WorkflowsPanel-CqlbEJA_.js +0 -1
  80. package/client/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js +0 -1
  81. package/client/dist/assets/ar-SA-G6X2FPQ2-BWqa1yBH.js +0 -10
  82. package/client/dist/assets/arc-BegSKqEW.js +0 -1
  83. package/client/dist/assets/array-BKyUJesY.js +0 -1
  84. package/client/dist/assets/az-AZ-76LH7QW2-DrVlbZDP.js +0 -1
  85. package/client/dist/assets/bg-BG-XCXSNQG7-DdunjBgT.js +0 -5
  86. package/client/dist/assets/blockDiagram-38ab4fdb-BKMbwGHu.js +0 -118
  87. package/client/dist/assets/bn-BD-2XOGV67Q-_7DtmvwO.js +0 -5
  88. package/client/dist/assets/c4Diagram-3d4e48cf-hJuiHhSn.js +0 -10
  89. package/client/dist/assets/ca-ES-6MX7JW3Y-BFIrmojG.js +0 -8
  90. package/client/dist/assets/channel-Bur-rRTp.js +0 -1
  91. package/client/dist/assets/classDiagram-70f12bd4-BjiAf9cM.js +0 -2
  92. package/client/dist/assets/classDiagram-v2-f2320105-pwBewejc.js +0 -2
  93. package/client/dist/assets/clone-BtqXeoBJ.js +0 -1
  94. package/client/dist/assets/createText-2e5e7dd3-Dq_acOWe.js +0 -5
  95. package/client/dist/assets/cs-CZ-2BRQDIVT-B-x4F6TJ.js +0 -11
  96. package/client/dist/assets/da-DK-5WZEPLOC-Btlc8Dgn.js +0 -5
  97. package/client/dist/assets/de-DE-XR44H4JA-BVu3ZIoD.js +0 -8
  98. package/client/dist/assets/directory-open-01563666-DWU9wJ6I.js +0 -1
  99. package/client/dist/assets/directory-open-4ed118d0-CunoC1EB.js +0 -1
  100. package/client/dist/assets/edges-e0da2a9e-DH0wVTXR.js +0 -4
  101. package/client/dist/assets/el-GR-BZB4AONW-h2ll8_ZC.js +0 -10
  102. package/client/dist/assets/erDiagram-9861fffd-BYezLIR7.js +0 -51
  103. package/client/dist/assets/es-ES-U4NZUMDT-Cveiulwt.js +0 -9
  104. package/client/dist/assets/eu-ES-A7QVB2H4-DQluL2PY.js +0 -11
  105. package/client/dist/assets/fa-IR-HGAKTJCU-BJtcMBSv.js +0 -8
  106. package/client/dist/assets/fi-FI-Z5N7JZ37-D8NfbVXV.js +0 -6
  107. package/client/dist/assets/file-open-002ab408-DIuFHtCF.js +0 -1
  108. package/client/dist/assets/file-open-7c801643-684qeFg4.js +0 -1
  109. package/client/dist/assets/file-save-3189631c-C1wFhQhH.js +0 -1
  110. package/client/dist/assets/file-save-745eba88-Bb9F9Kg7.js +0 -1
  111. package/client/dist/assets/flowDb-956e92f1-scnUykhM.js +0 -10
  112. package/client/dist/assets/flowDiagram-66a62f08-jVyWsfyU.js +0 -4
  113. package/client/dist/assets/flowDiagram-v2-96b9c2cf-N6xgi25h.js +0 -1
  114. package/client/dist/assets/flowchart-elk-definition-4a651766-gKGX3HqR.js +0 -139
  115. package/client/dist/assets/fr-FR-RHASNOE6-vdj42kC6.js +0 -9
  116. package/client/dist/assets/ganttDiagram-c361ad54-C2CiWFUP.js +0 -257
  117. package/client/dist/assets/gitGraphDiagram-72cf32ee-C59Yz2LK.js +0 -70
  118. package/client/dist/assets/gl-ES-HMX3MZ6V-DQo0TzoP.js +0 -10
  119. package/client/dist/assets/graph-Dx_H43Kv.js +0 -1
  120. package/client/dist/assets/he-IL-6SHJWFNN-DKXK5e33.js +0 -10
  121. package/client/dist/assets/hi-IN-IWLTKZ5I-C2Qgqc0R.js +0 -4
  122. package/client/dist/assets/hu-HU-A5ZG7DT2-Ss-6vX0m.js +0 -7
  123. package/client/dist/assets/id-ID-SAP4L64H-D7Wsg1S2.js +0 -10
  124. package/client/dist/assets/image-blob-reduce.esm-D6s-rqMO.js +0 -7
  125. package/client/dist/assets/index-3862675e-u8Nv7hHC.js +0 -1
  126. package/client/dist/assets/index-BVowJdZF.js +0 -97
  127. package/client/dist/assets/index-ce18TYkg.js +0 -27
  128. package/client/dist/assets/index-kQoJx-bc.css +0 -1
  129. package/client/dist/assets/infoDiagram-f8f76790-LmoJYsxo.js +0 -7
  130. package/client/dist/assets/init-Gi6I4Gst.js +0 -1
  131. package/client/dist/assets/it-IT-JPQ66NNP-CAPTVl7M.js +0 -11
  132. package/client/dist/assets/ja-JP-DBVTYXUO-eNVPawR2.js +0 -8
  133. package/client/dist/assets/journeyDiagram-49397b02-BaJqehpR.js +0 -139
  134. package/client/dist/assets/kaa-6HZHGXH3-tpuNkKhS.js +0 -1
  135. package/client/dist/assets/kab-KAB-ZGHBKWFO-Dp83kx4x.js +0 -8
  136. package/client/dist/assets/kk-KZ-P5N5QNE5-B9IlC6YN.js +0 -1
  137. package/client/dist/assets/km-KH-HSX4SM5Z-B_KMYaMj.js +0 -11
  138. package/client/dist/assets/ko-KR-MTYHY66A-yebnUNdb.js +0 -9
  139. package/client/dist/assets/ku-TR-6OUDTVRD-BR6fh6-5.js +0 -9
  140. package/client/dist/assets/layout-DLl5Jwcl.js +0 -1
  141. package/client/dist/assets/line-FpB7omSK.js +0 -1
  142. package/client/dist/assets/linear-CkXqUFJ8.js +0 -1
  143. package/client/dist/assets/lt-LT-XHIRWOB4-SutZSWtR.js +0 -3
  144. package/client/dist/assets/lv-LV-5QDEKY6T-DuAxdcZL.js +0 -7
  145. package/client/dist/assets/mindmap-definition-fc14e90a-DyxXOExh.js +0 -425
  146. package/client/dist/assets/mr-IN-CRQNXWMA-DqDUWM_8.js +0 -13
  147. package/client/dist/assets/my-MM-5M5IBNSE-C40kMFMR.js +0 -1
  148. package/client/dist/assets/nb-NO-T6EIAALU-DVij32Ju.js +0 -10
  149. package/client/dist/assets/nl-NL-IS3SIHDZ-rT84mDYq.js +0 -8
  150. package/client/dist/assets/nn-NO-6E72VCQL-BBZXBW8V.js +0 -8
  151. package/client/dist/assets/oc-FR-POXYY2M6-DzjOugOf.js +0 -8
  152. package/client/dist/assets/ordinal-Cboi1Yqb.js +0 -1
  153. package/client/dist/assets/pa-IN-N4M65BXN-DD1iU8_F.js +0 -4
  154. package/client/dist/assets/path-CbwjOpE9.js +0 -1
  155. package/client/dist/assets/pdf-CE_K4jFx.js +0 -12
  156. package/client/dist/assets/pdf.worker-BA9kU3Pw.mjs +0 -61080
  157. package/client/dist/assets/percentages-BXMCSKIN-WVlHS4wx.js +0 -207
  158. package/client/dist/assets/pica-CQIY57Tf.js +0 -7
  159. package/client/dist/assets/pieDiagram-8a3498a8-Dd_85qBH.js +0 -35
  160. package/client/dist/assets/pl-PL-T2D74RX3-ukVXa48G.js +0 -9
  161. package/client/dist/assets/pt-BR-5N22H2LF-BibawarT.js +0 -9
  162. package/client/dist/assets/pt-PT-UZXXM6DQ-So3i9l9w.js +0 -9
  163. package/client/dist/assets/quadrantDiagram-120e2f19-C4dFVDEx.js +0 -7
  164. package/client/dist/assets/requirementDiagram-deff3bca-DrTO7yFl.js +0 -52
  165. package/client/dist/assets/ro-RO-JPDTUUEW-DY0Xq_Hd.js +0 -11
  166. package/client/dist/assets/roundRect-0PYZxl1G.js +0 -1
  167. package/client/dist/assets/ru-RU-B4JR7IUQ-B7u_Zvkd.js +0 -9
  168. package/client/dist/assets/sankeyDiagram-04a897e0-D24gfzuS.js +0 -8
  169. package/client/dist/assets/sequenceDiagram-704730f1-Dgji2XLQ.js +0 -122
  170. package/client/dist/assets/si-LK-N5RQ5JYF-OejsLzQ_.js +0 -1
  171. package/client/dist/assets/sk-SK-C5VTKIMK-_vy2Bt-M.js +0 -6
  172. package/client/dist/assets/sl-SI-NN7IZMDC-DKOl_u2M.js +0 -6
  173. package/client/dist/assets/stateDiagram-587899a1-CJ8eBaiU.js +0 -1
  174. package/client/dist/assets/stateDiagram-v2-d93cdb3a-C5K3l-Nt.js +0 -1
  175. package/client/dist/assets/styles-6aaf32cf-DAKE0jbx.js +0 -207
  176. package/client/dist/assets/styles-9a916d00-LFAJCgEy.js +0 -160
  177. package/client/dist/assets/styles-c10674c1-CllKO8NG.js +0 -116
  178. package/client/dist/assets/subset-shared.chunk-Uy-J87FQ.js +0 -84
  179. package/client/dist/assets/subset-worker.chunk-dvgDvqt9.js +0 -1
  180. package/client/dist/assets/sv-SE-XGPEYMSR-CDCB2ZV5.js +0 -10
  181. package/client/dist/assets/svgDrawCommon-08f97a94-CObOzbFQ.js +0 -1
  182. package/client/dist/assets/ta-IN-2NMHFXQM-DHUNdO69.js +0 -9
  183. package/client/dist/assets/th-TH-HPSO5L25-zI2hnBq3.js +0 -2
  184. package/client/dist/assets/timeline-definition-85554ec2-C2XHRmxK.js +0 -61
  185. package/client/dist/assets/tr-TR-DEFEU3FU-l-6Hu4-D.js +0 -7
  186. package/client/dist/assets/uk-UA-QMV73CPH-CqSOwrl7.js +0 -6
  187. package/client/dist/assets/vendor-codemirror-D_s0aGBu.js +0 -35
  188. package/client/dist/assets/vendor-i18n-DCFGyhQR.js +0 -1
  189. package/client/dist/assets/vendor-icons-Lb69KSFJ.js +0 -646
  190. package/client/dist/assets/vendor-markdown-BXEi_H3G.js +0 -298
  191. package/client/dist/assets/vendor-react-9mUTKBHH.js +0 -67
  192. package/client/dist/assets/vendor-syntax-DnmwQQJF.js +0 -16
  193. package/client/dist/assets/vendor-xterm-CZq1hqo1.js +0 -66
  194. package/client/dist/assets/vendor-xterm-qxJ8_QYu.css +0 -32
  195. package/client/dist/assets/vi-VN-M7AON7JQ-CUL8-mBZ.js +0 -5
  196. package/client/dist/assets/xychartDiagram-e933f94c-1fmf6slj.js +0 -7
  197. package/client/dist/assets/zh-CN-LNUGB5OW-CB5y5VVU.js +0 -10
  198. package/client/dist/assets/zh-HK-E62DVLB3-BHcrrEeJ.js +0 -1
  199. package/client/dist/assets/zh-TW-RAJ6MFWO-DoDUdkaJ.js +0 -9
  200. package/client/dist/clear-cache.html +0 -85
  201. package/client/dist/convert-icons.md +0 -53
  202. package/client/dist/favicon.png +0 -0
  203. package/client/dist/favicon.svg +0 -9
  204. package/client/dist/generate-icons.js +0 -49
  205. package/client/dist/icons/claude-ai-icon.svg +0 -1
  206. package/client/dist/icons/codex-white.svg +0 -3
  207. package/client/dist/icons/codex.svg +0 -3
  208. package/client/dist/icons/cursor-white.svg +0 -12
  209. package/client/dist/icons/cursor.svg +0 -1
  210. package/client/dist/icons/icon-128x128.png +0 -0
  211. package/client/dist/icons/icon-128x128.svg +0 -12
  212. package/client/dist/icons/icon-144x144.png +0 -0
  213. package/client/dist/icons/icon-144x144.svg +0 -12
  214. package/client/dist/icons/icon-152x152.png +0 -0
  215. package/client/dist/icons/icon-152x152.svg +0 -12
  216. package/client/dist/icons/icon-192x192.png +0 -0
  217. package/client/dist/icons/icon-192x192.svg +0 -12
  218. package/client/dist/icons/icon-384x384.png +0 -0
  219. package/client/dist/icons/icon-384x384.svg +0 -12
  220. package/client/dist/icons/icon-512x512.png +0 -0
  221. package/client/dist/icons/icon-512x512.svg +0 -12
  222. package/client/dist/icons/icon-72x72.png +0 -0
  223. package/client/dist/icons/icon-72x72.svg +0 -12
  224. package/client/dist/icons/icon-96x96.png +0 -0
  225. package/client/dist/icons/icon-96x96.svg +0 -12
  226. package/client/dist/icons/icon-template.svg +0 -12
  227. package/client/dist/index.html +0 -128
  228. package/client/dist/logo-128.png +0 -0
  229. package/client/dist/logo-256.png +0 -0
  230. package/client/dist/logo-32.png +0 -0
  231. package/client/dist/logo-512.png +0 -0
  232. package/client/dist/logo-64.png +0 -0
  233. package/client/dist/logo.svg +0 -17
  234. package/client/dist/manifest.json +0 -61
  235. package/client/dist/mcp-docs.html +0 -119
  236. package/client/dist/screenshots/cli-selection.png +0 -0
  237. package/client/dist/screenshots/desktop-main.png +0 -0
  238. package/client/dist/screenshots/mobile-chat.png +0 -0
  239. package/client/dist/screenshots/tools-modal.png +0 -0
  240. package/client/dist/sw.js +0 -19
  241. package/commands/upfynai-connect.md +0 -59
  242. package/commands/upfynai-disconnect.md +0 -31
  243. package/commands/upfynai-doctor.md +0 -99
  244. package/commands/upfynai-export.md +0 -49
  245. package/commands/upfynai-local.md +0 -82
  246. package/commands/upfynai-status.md +0 -75
  247. package/commands/upfynai-stop.md +0 -49
  248. package/commands/upfynai-uninstall.md +0 -58
  249. package/commands/upfynai.md +0 -69
  250. package/scripts/build-client.js +0 -17
  251. package/scripts/fix-node-pty.js +0 -67
  252. package/scripts/install-commands.js +0 -78
  253. package/server/claude-sdk.js +0 -714
  254. package/server/cli-ui.js +0 -785
  255. package/server/cli.js +0 -596
  256. package/server/constants/config.js +0 -31
  257. package/server/cursor-cli.js +0 -270
  258. package/server/database/auth.db +0 -0
  259. package/server/database/db.js +0 -822
  260. package/server/database/init.sql +0 -70
  261. package/server/index.js +0 -2738
  262. package/server/load-env.js +0 -26
  263. package/server/mcp-server.js +0 -621
  264. package/server/middleware/auth.js +0 -181
  265. package/server/openai-codex.js +0 -403
  266. package/server/openrouter.js +0 -137
  267. package/server/projects.js +0 -1742
  268. package/server/relay-client.js +0 -672
  269. package/server/routes/agent.js +0 -1226
  270. package/server/routes/auth.js +0 -266
  271. package/server/routes/cli-auth.js +0 -263
  272. package/server/routes/codex.js +0 -344
  273. package/server/routes/commands.js +0 -598
  274. package/server/routes/cursor.js +0 -807
  275. package/server/routes/dashboard.js +0 -205
  276. package/server/routes/git.js +0 -1151
  277. package/server/routes/mcp-utils.js +0 -48
  278. package/server/routes/mcp.js +0 -535
  279. package/server/routes/payments.js +0 -172
  280. package/server/routes/projects.js +0 -552
  281. package/server/routes/settings.js +0 -261
  282. package/server/routes/taskmaster.js +0 -1928
  283. package/server/routes/user.js +0 -106
  284. package/server/routes/vapi-chat.js +0 -94
  285. package/server/routes/voice.js +0 -194
  286. package/server/routes/webhooks.js +0 -166
  287. package/server/routes/workflows.js +0 -118
  288. package/server/sandbox.js +0 -120
  289. package/server/services/whisperService.js +0 -84
  290. package/server/services/workflowScheduler.js +0 -186
  291. package/server/utils/commandParser.js +0 -303
  292. package/server/utils/gitConfig.js +0 -24
  293. package/server/utils/mcp-detector.js +0 -198
  294. package/server/utils/taskmaster-websocket.js +0 -129
  295. package/shared/modelConstants.js +0 -96
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
Binary file
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
Binary file
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
Binary file
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
Binary file
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
Binary file
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
Binary file
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
Binary file
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
@@ -1,12 +0,0 @@
1
- <svg width="512" height="512" viewBox="0 0 512 512" fill="none" xmlns="http://www.w3.org/2000/svg">
2
- <!-- Background fills entire canvas - iOS will handle corner rounding -->
3
- <rect width="512" height="512" fill="hsl(240 5.9% 10%)"/>
4
-
5
- <!-- MessageSquare icon - scaled and centered -->
6
- <path d="M128 144C128 126.327 142.327 112 160 112H352C369.673 112 384 126.327 384 144V272C384 289.673 369.673 304 352 304H224L128 400V144Z"
7
- stroke="white"
8
- stroke-width="32"
9
- stroke-linecap="round"
10
- stroke-linejoin="round"
11
- fill="none"/>
12
- </svg>
@@ -1,128 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
- <link rel="icon" type="image/png" href="/favicon.png" />
7
- <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, viewport-fit=cover" />
8
- <title>Upfyn-Code</title>
9
-
10
- <!-- PWA Manifest -->
11
- <link rel="manifest" href="/manifest.json" />
12
-
13
- <!-- iOS Safari PWA Meta Tags -->
14
- <meta name="mobile-web-app-capable" content="yes" />
15
- <meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
16
- <meta name="apple-mobile-web-app-title" content="Upfyn-Code" />
17
-
18
- <!-- iOS Safari Icons -->
19
- <link rel="apple-touch-icon" sizes="152x152" href="/icons/icon-152x152.png" />
20
- <link rel="apple-touch-icon" sizes="180x180" href="/icons/icon-192x192.png" />
21
-
22
- <!-- Theme Color -->
23
- <meta name="theme-color" content="#0a0f1e" />
24
- <meta name="msapplication-TileColor" content="#0a0f1e" />
25
-
26
- <!-- Prevent zoom on iOS -->
27
- <meta name="format-detection" content="telephone=no" />
28
-
29
- <!-- Inline critical styles for instant splash screen (before any JS loads) -->
30
- <style>
31
- body { margin: 0; background: #0a0f1e; }
32
- #splash {
33
- min-height: 100vh;
34
- display: flex;
35
- align-items: center;
36
- justify-content: center;
37
- font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
38
- color: #e2e8f0;
39
- flex-direction: column;
40
- gap: 16px;
41
- }
42
- #splash .logo-box {
43
- width: 64px; height: 64px;
44
- background: linear-gradient(135deg, #3b82f6, #6366f1);
45
- border-radius: 16px;
46
- display: flex; align-items: center; justify-content: center;
47
- box-shadow: 0 4px 24px rgba(99,102,241,0.3);
48
- }
49
- #splash .logo-box svg { width: 32px; height: 32px; color: #fff; }
50
- #splash h1 { font-size: 1.5rem; font-weight: 700; margin: 0; }
51
- #splash .dots { display: flex; gap: 6px; }
52
- #splash .dots span {
53
- width: 8px; height: 8px; border-radius: 50%;
54
- background: #3b82f6;
55
- animation: bounce 1s infinite;
56
- }
57
- #splash .dots span:nth-child(2) { animation-delay: 0.1s; }
58
- #splash .dots span:nth-child(3) { animation-delay: 0.2s; }
59
- @keyframes bounce {
60
- 0%, 80%, 100% { transform: translateY(0); }
61
- 40% { transform: translateY(-8px); }
62
- }
63
- </style>
64
- <script type="module" crossorigin src="/assets/index-ce18TYkg.js"></script>
65
- <link rel="modulepreload" crossorigin href="/assets/vendor-react-9mUTKBHH.js">
66
- <link rel="modulepreload" crossorigin href="/assets/vendor-markdown-BXEi_H3G.js">
67
- <link rel="modulepreload" crossorigin href="/assets/vendor-syntax-DnmwQQJF.js">
68
- <link rel="modulepreload" crossorigin href="/assets/vendor-icons-Lb69KSFJ.js">
69
- <link rel="modulepreload" crossorigin href="/assets/vendor-i18n-DCFGyhQR.js">
70
- <link rel="stylesheet" crossorigin href="/assets/index-kQoJx-bc.css">
71
- </head>
72
- <body>
73
- <!-- Static splash screen: visible INSTANTLY (pure HTML, no JS needed) -->
74
- <!-- React replaces this entire div when it mounts -->
75
- <div id="root">
76
- <div id="splash">
77
- <div class="logo-box">
78
- <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
79
- <path d="M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z"></path>
80
- </svg>
81
- </div>
82
- <h1>Upfyn-Code</h1>
83
- <div class="dots">
84
- <span></span><span></span><span></span>
85
- </div>
86
- </div>
87
- </div>
88
-
89
-
90
- <!-- Error detection: catch JS errors and show them instead of infinite loading -->
91
- <script>
92
- window.__REACT_MOUNTED = false;
93
- window.addEventListener('error', function(e) {
94
- if (window.__REACT_MOUNTED) return;
95
- var s = document.getElementById('splash');
96
- if (s) s.innerHTML = '<h1 style="margin:0">Upfyn-Code</h1><p style="color:#f87171">Failed to load: ' + (e.message || 'Unknown error') + '</p><button onclick="location.reload()" style="padding:10px 24px;border-radius:8px;border:none;background:#3b82f6;color:#fff;cursor:pointer;font-size:14px">Refresh</button>';
97
- });
98
- // Timeout: if React hasn't mounted in 20 seconds, show retry
99
- setTimeout(function() {
100
- if (window.__REACT_MOUNTED) return;
101
- var s = document.getElementById('splash');
102
- if (s && !s.querySelector('button')) {
103
- var p = document.createElement('p');
104
- p.style.cssText = 'color:#94a3b8;font-size:13px;margin:0';
105
- p.innerHTML = 'Taking longer than expected. <a href="javascript:location.reload()" style="color:#3b82f6;text-decoration:underline">Refresh</a>';
106
- s.appendChild(p);
107
- }
108
- }, 20000);
109
- </script>
110
-
111
- <!-- Service Worker cleanup -->
112
- <script>
113
- if ('serviceWorker' in navigator) {
114
- navigator.serviceWorker.getRegistrations().then(function(regs) {
115
- regs.forEach(function(r) { r.unregister(); });
116
- });
117
- if (window.caches) {
118
- caches.keys().then(function(names) {
119
- names.forEach(function(n) { caches.delete(n); });
120
- });
121
- }
122
- window.addEventListener('load', function() {
123
- navigator.serviceWorker.register('/sw.js').catch(function() {});
124
- });
125
- }
126
- </script>
127
- </body>
128
- </html>
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -1,17 +0,0 @@
1
- <svg
2
- xmlns="http://www.w3.org/2000/svg"
3
- width="32"
4
- height="32"
5
- viewBox="0 0 32 32"
6
- fill="none"
7
- >
8
- <rect width="32" height="32" rx="8" fill="hsl(221.2 83.2% 53.3%)"/>
9
- <path
10
- d="M8 9C8 8.44772 8.44772 8 9 8H23C23.5523 8 24 8.44772 24 9V18C24 18.5523 23.5523 19 23 19H12L8 23V9Z"
11
- stroke="white"
12
- strokeWidth="2"
13
- strokeLinecap="round"
14
- strokeLinejoin="round"
15
- fill="none"
16
- />
17
- </svg>
@@ -1,61 +0,0 @@
1
- {
2
- "name": "Upfyn-Code",
3
- "short_name": "Upfyn-Code",
4
- "description": "Upfyn-Code — Visual AI Coding Interface",
5
- "start_url": "/",
6
- "display": "standalone",
7
- "background_color": "#ffffff",
8
- "theme_color": "#ffffff",
9
- "orientation": "portrait-primary",
10
- "scope": "/",
11
- "icons": [
12
- {
13
- "src": "/icons/icon-72x72.png",
14
- "sizes": "72x72",
15
- "type": "image/png",
16
- "purpose": "maskable any"
17
- },
18
- {
19
- "src": "/icons/icon-96x96.png",
20
- "sizes": "96x96",
21
- "type": "image/png",
22
- "purpose": "maskable any"
23
- },
24
- {
25
- "src": "/icons/icon-128x128.png",
26
- "sizes": "128x128",
27
- "type": "image/png",
28
- "purpose": "maskable any"
29
- },
30
- {
31
- "src": "/icons/icon-144x144.png",
32
- "sizes": "144x144",
33
- "type": "image/png",
34
- "purpose": "maskable any"
35
- },
36
- {
37
- "src": "/icons/icon-152x152.png",
38
- "sizes": "152x152",
39
- "type": "image/png",
40
- "purpose": "maskable any"
41
- },
42
- {
43
- "src": "/icons/icon-192x192.png",
44
- "sizes": "192x192",
45
- "type": "image/png",
46
- "purpose": "maskable any"
47
- },
48
- {
49
- "src": "/icons/icon-384x384.png",
50
- "sizes": "384x384",
51
- "type": "image/png",
52
- "purpose": "maskable any"
53
- },
54
- {
55
- "src": "/icons/icon-512x512.png",
56
- "sizes": "512x512",
57
- "type": "image/png",
58
- "purpose": "maskable any"
59
- }
60
- ]
61
- }
@@ -1,119 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Upfyn-Code MCP Integration</title>
7
- <style>
8
- :root { --bg: #0d1117; --fg: #c9d1d9; --accent: #58a6ff; --card: #161b22; --border: #30363d; --code-bg: #1c2128; }
9
- * { box-sizing: border-box; margin: 0; padding: 0; }
10
- body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; background: var(--bg); color: var(--fg); line-height: 1.6; padding: 2rem; max-width: 800px; margin: 0 auto; }
11
- h1 { color: #fff; margin-bottom: 0.5rem; font-size: 2rem; }
12
- h2 { color: var(--accent); margin: 2rem 0 1rem; font-size: 1.4rem; border-bottom: 1px solid var(--border); padding-bottom: 0.5rem; }
13
- h3 { color: #fff; margin: 1.5rem 0 0.5rem; }
14
- p { margin-bottom: 1rem; }
15
- a { color: var(--accent); }
16
- .subtitle { color: #8b949e; margin-bottom: 2rem; }
17
- pre { background: var(--code-bg); border: 1px solid var(--border); border-radius: 6px; padding: 1rem; overflow-x: auto; margin: 1rem 0; font-size: 0.9rem; }
18
- code { font-family: 'SF Mono', 'Fira Code', monospace; color: #e6edf3; }
19
- .card { background: var(--card); border: 1px solid var(--border); border-radius: 8px; padding: 1.5rem; margin: 1rem 0; }
20
- .tool { margin: 0.75rem 0; }
21
- .tool-name { color: var(--accent); font-weight: 600; font-family: monospace; }
22
- .tool-desc { color: #8b949e; margin-left: 1rem; }
23
- .step { display: flex; gap: 1rem; margin: 1rem 0; }
24
- .step-num { background: var(--accent); color: var(--bg); width: 28px; height: 28px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; flex-shrink: 0; }
25
- .warn { background: #3d1f00; border: 1px solid #6e3a00; border-radius: 6px; padding: 1rem; margin: 1rem 0; color: #f0883e; }
26
- </style>
27
- </head>
28
- <body>
29
- <h1>Upfyn-Code MCP Server</h1>
30
- <p class="subtitle">Connect any MCP client to control your Upfyn-Code instance</p>
31
-
32
- <h2>Quick Start</h2>
33
-
34
- <div class="step">
35
- <div class="step-num">1</div>
36
- <div><strong>Get your API key</strong> — Log into Upfyn-Code, go to Settings, then API Keys. Click "Generate New Key".</div>
37
- </div>
38
- <div class="step">
39
- <div class="step-num">2</div>
40
- <div><strong>Add MCP config</strong> to your client (see examples below).</div>
41
- </div>
42
- <div class="step">
43
- <div class="step-num">3</div>
44
- <div><strong>Start using tools</strong> — Your client can now send prompts, manage canvas, and control sessions.</div>
45
- </div>
46
-
47
- <h2>Client Configuration</h2>
48
-
49
- <h3>Claude Desktop</h3>
50
- <p>Add to <code>~/.claude/mcp_servers.json</code>:</p>
51
- <pre><code>{
52
- "upfynai": {
53
- "type": "streamable-http",
54
- "url": "https://upfynai.thinqmesh.com/mcp",
55
- "headers": {
56
- "x-api-key": "YOUR_API_KEY_HERE"
57
- }
58
- }
59
- }</code></pre>
60
-
61
- <h3>Claude Code CLI</h3>
62
- <pre><code>claude mcp add upfynai \
63
- --transport streamable-http \
64
- https://upfynai.thinqmesh.com/mcp \
65
- --header "x-api-key: YOUR_API_KEY_HERE"</code></pre>
66
-
67
- <h3>Cursor</h3>
68
- <p>Add to <code>.cursor/mcp.json</code> in your project:</p>
69
- <pre><code>{
70
- "mcpServers": {
71
- "upfynai": {
72
- "url": "https://upfynai.thinqmesh.com/mcp",
73
- "headers": { "x-api-key": "YOUR_API_KEY_HERE" }
74
- }
75
- }
76
- }</code></pre>
77
-
78
- <h3>Any HTTP MCP Client</h3>
79
- <pre><code>POST https://upfynai.thinqmesh.com/mcp
80
- Headers:
81
- Content-Type: application/json
82
- x-api-key: YOUR_API_KEY_HERE</code></pre>
83
-
84
- <h2>Available Tools</h2>
85
- <div class="card">
86
- <div class="tool"><span class="tool-name">send-prompt</span><span class="tool-desc">Send a message to Claude and get a streaming response</span></div>
87
- <div class="tool"><span class="tool-name">list-projects</span><span class="tool-desc">List all available projects</span></div>
88
- <div class="tool"><span class="tool-name">list-sessions</span><span class="tool-desc">List sessions for a specific project</span></div>
89
- <div class="tool"><span class="tool-name">get-session-messages</span><span class="tool-desc">Retrieve messages from a session</span></div>
90
- <div class="tool"><span class="tool-name">get-canvas-state</span><span class="tool-desc">Get current tldraw canvas nodes</span></div>
91
- <div class="tool"><span class="tool-name">add-canvas-node</span><span class="tool-desc">Add a visual node to the canvas</span></div>
92
- <div class="tool"><span class="tool-name">clear-canvas</span><span class="tool-desc">Clear all canvas nodes</span></div>
93
- <div class="tool"><span class="tool-name">get-active-sessions</span><span class="tool-desc">Get currently running Claude sessions</span></div>
94
- <div class="tool"><span class="tool-name">abort-session</span><span class="tool-desc">Stop an active Claude session</span></div>
95
- </div>
96
-
97
- <h2>Resources</h2>
98
- <div class="card">
99
- <div class="tool"><span class="tool-name">upfynai://canvas/state</span><span class="tool-desc">Current canvas state (JSON)</span></div>
100
- <div class="tool"><span class="tool-name">upfynai://sessions/active</span><span class="tool-desc">Active sessions list (JSON)</span></div>
101
- </div>
102
-
103
- <h2>Authentication</h2>
104
- <p>All MCP requests require authentication via one of:</p>
105
- <div class="card">
106
- <p><strong>API Key</strong> (recommended for external clients):<br><code>x-api-key: ck_your_key_here</code></p>
107
- <p><strong>JWT Bearer Token</strong> (for browser-based access):<br><code>Authorization: Bearer eyJhbG...</code></p>
108
- </div>
109
-
110
- <div class="warn">
111
- <strong>Security:</strong> Keep your API key secret. Each key is tied to your user account. You can revoke keys at any time from Settings.
112
- </div>
113
-
114
- <h2>Local Relay Connection</h2>
115
- <p>To power Upfyn-Code with your local Claude Code CLI:</p>
116
- <pre><code>npx upfynai-code connect --server https://upfynai.thinqmesh.com --key YOUR_API_KEY</code></pre>
117
- <p>This connects your local machine's Claude CLI, terminal, filesystem, and git to the hosted UI. All computation runs locally — the server only relays messages.</p>
118
- </body>
119
- </html>
package/client/dist/sw.js DELETED
@@ -1,19 +0,0 @@
1
- // Service Worker for Upfyn-Code
2
- // v3 — self-cleaning: clears all caches and claims clients immediately
3
- // This ensures old cache-first SWs are replaced cleanly after deploys
4
-
5
- self.addEventListener('install', () => {
6
- self.skipWaiting();
7
- });
8
-
9
- self.addEventListener('activate', event => {
10
- event.waitUntil(
11
- caches.keys().then(names => Promise.all(names.map(n => caches.delete(n))))
12
- );
13
- self.clients.claim();
14
- });
15
-
16
- // Pass everything through to the network — no caching
17
- self.addEventListener('fetch', event => {
18
- event.respondWith(fetch(event.request));
19
- });
@@ -1,59 +0,0 @@
1
- ---
2
- description: Connect this Claude Code CLI session to Upfyn-Code web UI
3
- ---
4
-
5
- # Upfyn-Code — Connect CLI to Web UI
6
-
7
- You are the Upfyn-Code assistant. The user wants to connect their current Claude Code CLI session to the Upfyn-Code web UI.
8
-
9
- ## What to do
10
-
11
- 1. First check if there's a saved config with relay credentials:
12
- ```
13
- cat ~/.upfynai/config.json 2>/dev/null || echo "NO_CONFIG"
14
- ```
15
-
16
- 2. **If config exists with `server` and `relayKey`** — connect to hosted server:
17
- - Read the server URL and relay key from the config
18
- - Run the relay connection:
19
- ```
20
- npx upfynai-code connect --server <server_from_config> --key <relayKey_from_config>
21
- ```
22
- - This bridges the local machine to the hosted web UI at https://cli.upfyn.com
23
-
24
- 3. **If no config** — try connecting to local server:
25
- - Check if the local server is running:
26
- ```
27
- curl -s http://localhost:3001/health 2>/dev/null || echo "NOT_RUNNING"
28
- ```
29
- - If not running, tell the user:
30
- ```
31
- Local server is not running and no hosted config found.
32
-
33
- Option A: Connect to hosted server:
34
- uc connect --server https://upfynai-code-production.up.railway.app --key upfyn_your_token
35
-
36
- Option B: Start local server first:
37
- uc start
38
- Then run /upfynai-connect again
39
- ```
40
-
41
- 4. Display connection confirmation:
42
- ```
43
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
44
- OK Connected to Upfyn-Code!
45
-
46
- Project: [current directory]
47
- Server: [server URL]
48
- Session: synced -- canvas will show your conversation
49
-
50
- Your Claude Code session is now visible in the web UI.
51
- Tool calls, responses, and permissions appear as canvas nodes.
52
-
53
- Use /upfynai-disconnect to unlink this session
54
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
55
- ```
56
-
57
- If the user provided a custom URL or token as arguments, use those instead of the config values.
58
-
59
- $ARGUMENTS
@@ -1,31 +0,0 @@
1
- ---
2
- description: Disconnect this CLI session from Upfyn-Code web UI
3
- ---
4
-
5
- # Upfyn-Code — Disconnect from Web UI
6
-
7
- You are the Upfyn-Code assistant. The user wants to disconnect their Claude Code CLI session from the Upfyn-Code web UI.
8
-
9
- ## What to do
10
-
11
- 1. Check if the server is running:
12
- ```
13
- curl -s http://localhost:3001/health 2>/dev/null || echo "NOT_RUNNING"
14
- ```
15
-
16
- 2. If running, notify the UI that this session is disconnecting. The server will handle cleanup.
17
-
18
- 3. Display confirmation:
19
- ```
20
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
21
- 🔌 Disconnected from Upfyn-Code
22
-
23
- Your CLI session is no longer synced to the web UI.
24
- The server is still running at http://localhost:3001
25
-
26
- Use /upfynai-connect to reconnect
27
- Use /upfynai-stop to shut down the server
28
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
29
- ```
30
-
31
- $ARGUMENTS