upfynai-code 0.1.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/client/dist/api-docs.html +879 -0
  2. package/client/dist/assets/AppContent-CTSHQdyq.js +513 -0
  3. package/client/dist/assets/CanvasPanel-Cig0Mo9s.js +6 -0
  4. package/client/dist/assets/CanvasPanel-q4HEqNtV.css +1 -0
  5. package/client/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
  6. package/client/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
  7. package/client/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
  8. package/client/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
  9. package/client/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
  10. package/client/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
  11. package/client/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
  12. package/client/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
  13. package/client/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
  14. package/client/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
  15. package/client/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
  16. package/client/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
  17. package/client/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
  18. package/client/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
  19. package/client/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
  20. package/client/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
  21. package/client/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
  22. package/client/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
  23. package/client/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
  24. package/client/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
  25. package/client/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
  26. package/client/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
  27. package/client/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
  28. package/client/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
  29. package/client/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
  30. package/client/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
  31. package/client/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
  32. package/client/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
  33. package/client/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
  34. package/client/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
  35. package/client/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
  36. package/client/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
  37. package/client/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
  38. package/client/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
  39. package/client/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
  40. package/client/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
  41. package/client/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
  42. package/client/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
  43. package/client/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
  44. package/client/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
  45. package/client/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
  46. package/client/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
  47. package/client/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
  48. package/client/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
  49. package/client/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
  50. package/client/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
  51. package/client/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
  52. package/client/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
  53. package/client/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
  54. package/client/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
  55. package/client/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
  56. package/client/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
  57. package/client/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
  58. package/client/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
  59. package/client/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
  60. package/client/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
  61. package/client/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
  62. package/client/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
  63. package/client/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
  64. package/client/dist/assets/LoginModal-silya-zP.js +11 -0
  65. package/client/dist/assets/MarkdownPreview-B3c7OEj6.js +1 -0
  66. package/client/dist/assets/Onboarding-Coxo6mFA.js +1 -0
  67. package/client/dist/assets/SetupForm-BzYOsbji.js +1 -0
  68. package/client/dist/assets/Tableau10-B-NsZVaP.js +1 -0
  69. package/client/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
  70. package/client/dist/assets/ar-SA-G6X2FPQ2-Bmw2-hDt.js +10 -0
  71. package/client/dist/assets/arc-BMqY7_Ci.js +1 -0
  72. package/client/dist/assets/array-BKyUJesY.js +1 -0
  73. package/client/dist/assets/az-AZ-76LH7QW2-Dh1le_qs.js +1 -0
  74. package/client/dist/assets/bg-BG-XCXSNQG7-Cbav8Z9z.js +5 -0
  75. package/client/dist/assets/blockDiagram-38ab4fdb-ChHJxsXw.js +118 -0
  76. package/client/dist/assets/bn-BD-2XOGV67Q-DCNjOaWz.js +5 -0
  77. package/client/dist/assets/c4Diagram-3d4e48cf-b8Xue4Z6.js +10 -0
  78. package/client/dist/assets/ca-ES-6MX7JW3Y-Dl_vM7NS.js +8 -0
  79. package/client/dist/assets/channel-CSnvHe_M.js +1 -0
  80. package/client/dist/assets/classDiagram-70f12bd4-BheP7Ggo.js +2 -0
  81. package/client/dist/assets/classDiagram-v2-f2320105-xtym7GEZ.js +2 -0
  82. package/client/dist/assets/clone-B75abXxS.js +1 -0
  83. package/client/dist/assets/createText-2e5e7dd3-_n4jI_fO.js +5 -0
  84. package/client/dist/assets/cs-CZ-2BRQDIVT-ftsKDdz4.js +11 -0
  85. package/client/dist/assets/da-DK-5WZEPLOC-DAjdwGRO.js +5 -0
  86. package/client/dist/assets/de-DE-XR44H4JA-BJXczHGT.js +8 -0
  87. package/client/dist/assets/directory-open-01563666-DWU9wJ6I.js +1 -0
  88. package/client/dist/assets/directory-open-4ed118d0-CunoC1EB.js +1 -0
  89. package/client/dist/assets/edges-e0da2a9e-CfPZr4YM.js +4 -0
  90. package/client/dist/assets/el-GR-BZB4AONW-DW2p_uy7.js +10 -0
  91. package/client/dist/assets/erDiagram-9861fffd-CF33V-Of.js +51 -0
  92. package/client/dist/assets/es-ES-U4NZUMDT-DLOIGnrl.js +9 -0
  93. package/client/dist/assets/eu-ES-A7QVB2H4-LJXbf89m.js +11 -0
  94. package/client/dist/assets/fa-IR-HGAKTJCU-Dvx65fgW.js +8 -0
  95. package/client/dist/assets/fi-FI-Z5N7JZ37-EoL65BQh.js +6 -0
  96. package/client/dist/assets/file-open-002ab408-DIuFHtCF.js +1 -0
  97. package/client/dist/assets/file-open-7c801643-684qeFg4.js +1 -0
  98. package/client/dist/assets/file-save-3189631c-C1wFhQhH.js +1 -0
  99. package/client/dist/assets/file-save-745eba88-Bb9F9Kg7.js +1 -0
  100. package/client/dist/assets/flowDb-956e92f1-HgoXVy2H.js +10 -0
  101. package/client/dist/assets/flowDiagram-66a62f08-tffoET0H.js +4 -0
  102. package/client/dist/assets/flowDiagram-v2-96b9c2cf-Byc3JCHh.js +1 -0
  103. package/client/dist/assets/flowchart-elk-definition-4a651766-DJbI2dpv.js +139 -0
  104. package/client/dist/assets/fr-FR-RHASNOE6-DNk_jdDs.js +9 -0
  105. package/client/dist/assets/ganttDiagram-c361ad54-2XX670FU.js +257 -0
  106. package/client/dist/assets/gitGraphDiagram-72cf32ee-CcUfruAo.js +70 -0
  107. package/client/dist/assets/gl-ES-HMX3MZ6V-dxzFjZlG.js +10 -0
  108. package/client/dist/assets/graph-BSbiMSBC.js +1 -0
  109. package/client/dist/assets/he-IL-6SHJWFNN-Cogsfdt1.js +10 -0
  110. package/client/dist/assets/hi-IN-IWLTKZ5I-L6wbgi4F.js +4 -0
  111. package/client/dist/assets/hu-HU-A5ZG7DT2-DSA6ZDsH.js +7 -0
  112. package/client/dist/assets/id-ID-SAP4L64H-BK_vGGS6.js +10 -0
  113. package/client/dist/assets/image-blob-reduce.esm-BLtmMM_J.js +2 -0
  114. package/client/dist/assets/index-3862675e-Bv32HUgT.js +1 -0
  115. package/client/dist/assets/index-B8wwD_Xo.css +1 -0
  116. package/client/dist/assets/index-BPwf8Fw3.js +27 -0
  117. package/client/dist/assets/index-D1urGMYu.js +95 -0
  118. package/client/dist/assets/infoDiagram-f8f76790-w4mR4pxn.js +7 -0
  119. package/client/dist/assets/init-Gi6I4Gst.js +1 -0
  120. package/client/dist/assets/it-IT-JPQ66NNP-BLdHYMhn.js +11 -0
  121. package/client/dist/assets/ja-JP-DBVTYXUO-B_vmexl_.js +8 -0
  122. package/client/dist/assets/journeyDiagram-49397b02-D9nmO17e.js +139 -0
  123. package/client/dist/assets/kaa-6HZHGXH3-5s-3jl6F.js +1 -0
  124. package/client/dist/assets/kab-KAB-ZGHBKWFO-2QaVDuSf.js +8 -0
  125. package/client/dist/assets/kk-KZ-P5N5QNE5-CTC52Vbi.js +1 -0
  126. package/client/dist/assets/km-KH-HSX4SM5Z-DxawH8UZ.js +11 -0
  127. package/client/dist/assets/ko-KR-MTYHY66A-CmosEM8_.js +9 -0
  128. package/client/dist/assets/ku-TR-6OUDTVRD-DbiLen4y.js +9 -0
  129. package/client/dist/assets/layout-jmt3H9tA.js +1 -0
  130. package/client/dist/assets/line-JTlRayUJ.js +1 -0
  131. package/client/dist/assets/linear-DJeB5p7x.js +1 -0
  132. package/client/dist/assets/lt-LT-XHIRWOB4-CH15wrjA.js +3 -0
  133. package/client/dist/assets/lv-LV-5QDEKY6T-dhgfPuCQ.js +7 -0
  134. package/client/dist/assets/mindmap-definition-fc14e90a-BOOrexmz.js +415 -0
  135. package/client/dist/assets/mr-IN-CRQNXWMA-3Gi6iq7A.js +13 -0
  136. package/client/dist/assets/my-MM-5M5IBNSE-CpH4rdJj.js +1 -0
  137. package/client/dist/assets/nb-NO-T6EIAALU-Du6iiGql.js +10 -0
  138. package/client/dist/assets/nl-NL-IS3SIHDZ-BGvsd1MT.js +8 -0
  139. package/client/dist/assets/nn-NO-6E72VCQL-B-odvJZW.js +8 -0
  140. package/client/dist/assets/oc-FR-POXYY2M6-COC8xNjo.js +8 -0
  141. package/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
  142. package/client/dist/assets/pa-IN-N4M65BXN-CE21PUQH.js +4 -0
  143. package/client/dist/assets/path-CbwjOpE9.js +1 -0
  144. package/client/dist/assets/pdf-TYrZqVzP.js +12 -0
  145. package/client/dist/assets/pdf.worker-BA9kU3Pw.mjs +61080 -0
  146. package/client/dist/assets/percentages-BXMCSKIN-C9GT0OD3.js +199 -0
  147. package/client/dist/assets/pica-VkdyTzi8.js +2 -0
  148. package/client/dist/assets/pieDiagram-8a3498a8-Cvfh7Qr5.js +35 -0
  149. package/client/dist/assets/pl-PL-T2D74RX3-D4xFVSoT.js +9 -0
  150. package/client/dist/assets/pt-BR-5N22H2LF-CCq257gA.js +9 -0
  151. package/client/dist/assets/pt-PT-UZXXM6DQ-1l8gt5vA.js +9 -0
  152. package/client/dist/assets/quadrantDiagram-120e2f19-BA0js1aD.js +7 -0
  153. package/client/dist/assets/requirementDiagram-deff3bca-B0QNFfIn.js +52 -0
  154. package/client/dist/assets/ro-RO-JPDTUUEW-yosBW01E.js +11 -0
  155. package/client/dist/assets/roundRect-mAH3dD0p.js +1 -0
  156. package/client/dist/assets/ru-RU-B4JR7IUQ-8LkEJUix.js +9 -0
  157. package/client/dist/assets/sankeyDiagram-04a897e0-D4T9eCXn.js +8 -0
  158. package/client/dist/assets/sequenceDiagram-704730f1-CfBUTCrO.js +122 -0
  159. package/client/dist/assets/si-LK-N5RQ5JYF-D8rjbqtd.js +1 -0
  160. package/client/dist/assets/sk-SK-C5VTKIMK-Bg14sAzN.js +6 -0
  161. package/client/dist/assets/sl-SI-NN7IZMDC-CMTib6Zs.js +6 -0
  162. package/client/dist/assets/stateDiagram-587899a1-BGgvmVSZ.js +1 -0
  163. package/client/dist/assets/stateDiagram-v2-d93cdb3a-Qn3DpYuO.js +1 -0
  164. package/client/dist/assets/styles-6aaf32cf-IdVZLPrD.js +207 -0
  165. package/client/dist/assets/styles-9a916d00-BAC3L45X.js +160 -0
  166. package/client/dist/assets/styles-c10674c1-COhXxX8c.js +116 -0
  167. package/client/dist/assets/subset-shared.chunk-BWHnFai4.js +22 -0
  168. package/client/dist/assets/subset-worker.chunk-C8QUSruZ.js +1 -0
  169. package/client/dist/assets/sv-SE-XGPEYMSR-C1425rOF.js +10 -0
  170. package/client/dist/assets/svgDrawCommon-08f97a94-Cfk-fgnN.js +1 -0
  171. package/client/dist/assets/ta-IN-2NMHFXQM-BHHo1zpF.js +9 -0
  172. package/client/dist/assets/th-TH-HPSO5L25-CZVzm_WT.js +2 -0
  173. package/client/dist/assets/timeline-definition-85554ec2-VAvuJith.js +61 -0
  174. package/client/dist/assets/tr-TR-DEFEU3FU-DE1lclCq.js +7 -0
  175. package/client/dist/assets/uk-UA-QMV73CPH-D4lJZ85O.js +6 -0
  176. package/client/dist/assets/vendor-codemirror-BARtJV1V.js +16 -0
  177. package/client/dist/assets/vendor-codemirror-langs-52_y1wip.js +20 -0
  178. package/client/dist/assets/vendor-i18n-ByAl-gdx.js +1 -0
  179. package/client/dist/assets/vendor-icons-D33IkSIf.js +1 -0
  180. package/client/dist/assets/vendor-markdown-CIVH08vJ.js +298 -0
  181. package/client/dist/assets/vendor-react-CHoMc7ka.js +8 -0
  182. package/client/dist/assets/vendor-syntax-Djb62v3a.js +9 -0
  183. package/client/dist/assets/vendor-xterm-DBb3RXlu.js +66 -0
  184. package/client/dist/assets/vendor-xterm-DrlLKa8f.css +1 -0
  185. package/client/dist/assets/vi-VN-M7AON7JQ-Dgc_SShk.js +5 -0
  186. package/client/dist/assets/xychartDiagram-e933f94c-BeyVBJhb.js +7 -0
  187. package/client/dist/assets/zh-CN-LNUGB5OW-MH4Yh8in.js +10 -0
  188. package/client/dist/assets/zh-HK-E62DVLB3-D4XHehjx.js +1 -0
  189. package/client/dist/assets/zh-TW-RAJ6MFWO--efj3evj.js +9 -0
  190. package/client/dist/clear-cache.html +85 -0
  191. package/client/dist/convert-icons.md +53 -0
  192. package/client/dist/favicon.png +0 -0
  193. package/client/dist/favicon.svg +9 -0
  194. package/client/dist/generate-icons.js +49 -0
  195. package/client/dist/icons/claude-ai-icon.svg +1 -0
  196. package/client/dist/icons/codex-white.svg +3 -0
  197. package/client/dist/icons/codex.svg +3 -0
  198. package/client/dist/icons/cursor-white.svg +12 -0
  199. package/client/dist/icons/cursor.svg +1 -0
  200. package/client/dist/icons/icon-128x128.png +0 -0
  201. package/client/dist/icons/icon-128x128.svg +12 -0
  202. package/client/dist/icons/icon-144x144.png +0 -0
  203. package/client/dist/icons/icon-144x144.svg +12 -0
  204. package/client/dist/icons/icon-152x152.png +0 -0
  205. package/client/dist/icons/icon-152x152.svg +12 -0
  206. package/client/dist/icons/icon-192x192.png +0 -0
  207. package/client/dist/icons/icon-192x192.svg +12 -0
  208. package/client/dist/icons/icon-384x384.png +0 -0
  209. package/client/dist/icons/icon-384x384.svg +12 -0
  210. package/client/dist/icons/icon-512x512.png +0 -0
  211. package/client/dist/icons/icon-512x512.svg +12 -0
  212. package/client/dist/icons/icon-72x72.png +0 -0
  213. package/client/dist/icons/icon-72x72.svg +12 -0
  214. package/client/dist/icons/icon-96x96.png +0 -0
  215. package/client/dist/icons/icon-96x96.svg +12 -0
  216. package/client/dist/icons/icon-template.svg +12 -0
  217. package/client/dist/index.html +128 -0
  218. package/client/dist/logo-128.png +0 -0
  219. package/client/dist/logo-256.png +0 -0
  220. package/client/dist/logo-32.png +0 -0
  221. package/client/dist/logo-512.png +0 -0
  222. package/client/dist/logo-64.png +0 -0
  223. package/client/dist/logo.svg +17 -0
  224. package/client/dist/manifest.json +61 -0
  225. package/client/dist/mcp-docs.html +119 -0
  226. package/client/dist/screenshots/cli-selection.png +0 -0
  227. package/client/dist/screenshots/desktop-main.png +0 -0
  228. package/client/dist/screenshots/mobile-chat.png +0 -0
  229. package/client/dist/screenshots/tools-modal.png +0 -0
  230. package/client/dist/sw.js +19 -0
  231. package/commands/upfynai-connect.md +46 -0
  232. package/commands/upfynai-disconnect.md +31 -0
  233. package/commands/upfynai-doctor.md +99 -0
  234. package/commands/upfynai-export.md +49 -0
  235. package/commands/upfynai-local.md +82 -0
  236. package/commands/upfynai-status.md +75 -0
  237. package/commands/upfynai-stop.md +49 -0
  238. package/commands/upfynai-uninstall.md +58 -0
  239. package/commands/upfynai.md +50 -0
  240. package/package.json +106 -47
  241. package/scripts/build-client.js +17 -0
  242. package/scripts/fix-node-pty.js +67 -0
  243. package/scripts/install-commands.js +78 -0
  244. package/server/claude-sdk.js +714 -0
  245. package/server/cli.js +419 -0
  246. package/server/constants/config.js +5 -0
  247. package/server/cursor-cli.js +270 -0
  248. package/server/database/auth.db +0 -0
  249. package/server/database/db.js +606 -0
  250. package/server/database/init.sql +70 -0
  251. package/server/index.js +2269 -0
  252. package/server/load-env.js +26 -0
  253. package/server/mcp-server.js +620 -0
  254. package/server/middleware/auth.js +158 -0
  255. package/server/openai-codex.js +403 -0
  256. package/server/projects.js +1849 -0
  257. package/server/relay-client.js +314 -0
  258. package/server/routes/agent.js +1231 -0
  259. package/server/routes/auth.js +220 -0
  260. package/server/routes/cli-auth.js +263 -0
  261. package/server/routes/codex.js +344 -0
  262. package/server/routes/commands.js +601 -0
  263. package/server/routes/cursor.js +808 -0
  264. package/server/routes/git.js +1165 -0
  265. package/server/routes/mcp-utils.js +48 -0
  266. package/server/routes/mcp.js +552 -0
  267. package/server/routes/payments.js +172 -0
  268. package/server/routes/projects.js +549 -0
  269. package/server/routes/settings.js +178 -0
  270. package/server/routes/taskmaster.js +1964 -0
  271. package/server/routes/user.js +106 -0
  272. package/server/utils/commandParser.js +303 -0
  273. package/server/utils/gitConfig.js +24 -0
  274. package/server/utils/mcp-detector.js +198 -0
  275. package/server/utils/taskmaster-websocket.js +129 -0
  276. package/shared/modelConstants.js +67 -0
  277. package/LICENSE +0 -22
  278. package/bin/cli.js +0 -86
  279. package/dist/assets/CanvasPanel-B48gAKVY.js +0 -538
  280. package/dist/assets/CanvasPanel-B48gAKVY.js.map +0 -1
  281. package/dist/assets/CanvasPanel-BsOG3EVs.css +0 -1
  282. package/dist/assets/index-CEhTwG68.css +0 -1
  283. package/dist/assets/index-GqAGWpJI.js +0 -70
  284. package/dist/assets/index-GqAGWpJI.js.map +0 -1
  285. package/dist/index.html +0 -18
  286. package/index.html +0 -17
  287. package/src/App.tsx +0 -226
  288. package/src/components/canvas/CanvasPanel.tsx +0 -62
  289. package/src/components/canvas/layout/graph-builder.ts +0 -136
  290. package/src/components/canvas/shapes/CompactionNodeShape.tsx +0 -76
  291. package/src/components/canvas/shapes/SessionNodeShape.tsx +0 -93
  292. package/src/components/canvas/shapes/StatuslineWidgetShape.tsx +0 -125
  293. package/src/components/canvas/shapes/TextResponseNodeShape.tsx +0 -86
  294. package/src/components/canvas/shapes/ToolCallNodeShape.tsx +0 -107
  295. package/src/components/canvas/shapes/ToolResultNodeShape.tsx +0 -87
  296. package/src/components/canvas/shapes/shared-styles.ts +0 -35
  297. package/src/components/chat/ChatPanel.tsx +0 -96
  298. package/src/components/chat/InputBar.tsx +0 -81
  299. package/src/components/chat/MessageList.tsx +0 -130
  300. package/src/components/chat/PermissionDialog.tsx +0 -70
  301. package/src/components/layout/FolderSelector.tsx +0 -152
  302. package/src/components/layout/ModelSelector.tsx +0 -65
  303. package/src/components/layout/SessionManager.tsx +0 -115
  304. package/src/components/statusline/StatuslineBar.tsx +0 -114
  305. package/src/main.tsx +0 -10
  306. package/src/server/claude-session.ts +0 -156
  307. package/src/server/index.ts +0 -149
  308. package/src/services/stream-consumer.ts +0 -330
  309. package/src/statusline-core/bin/statusline.sh +0 -121
  310. package/src/statusline-core/commands/sls-config.md +0 -42
  311. package/src/statusline-core/commands/sls-doctor.md +0 -35
  312. package/src/statusline-core/commands/sls-help.md +0 -48
  313. package/src/statusline-core/commands/sls-layout.md +0 -38
  314. package/src/statusline-core/commands/sls-preview.md +0 -34
  315. package/src/statusline-core/commands/sls-theme.md +0 -40
  316. package/src/statusline-core/installer.js +0 -228
  317. package/src/statusline-core/layouts/compact.sh +0 -21
  318. package/src/statusline-core/layouts/full.sh +0 -62
  319. package/src/statusline-core/layouts/standard.sh +0 -39
  320. package/src/statusline-core/lib/core.sh +0 -389
  321. package/src/statusline-core/lib/helpers.sh +0 -81
  322. package/src/statusline-core/lib/json-parser.sh +0 -71
  323. package/src/statusline-core/themes/catppuccin.sh +0 -32
  324. package/src/statusline-core/themes/default.sh +0 -37
  325. package/src/statusline-core/themes/gruvbox.sh +0 -32
  326. package/src/statusline-core/themes/nord.sh +0 -32
  327. package/src/statusline-core/themes/tokyo-night.sh +0 -32
  328. package/src/store/canvas-store.ts +0 -50
  329. package/src/store/chat-store.ts +0 -60
  330. package/src/store/permission-store.ts +0 -29
  331. package/src/store/session-store.ts +0 -52
  332. package/src/store/statusline-store.ts +0 -160
  333. package/src/styles/global.css +0 -117
  334. package/src/themes/index.ts +0 -149
  335. package/src/types/canvas-graph.ts +0 -24
  336. package/src/types/sdk-messages.ts +0 -156
  337. package/src/types/statusline-fields.ts +0 -67
  338. package/src/vite-env.d.ts +0 -1
  339. package/tsconfig.json +0 -26
  340. package/vite.config.ts +0 -24
@@ -0,0 +1,12 @@
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>
@@ -0,0 +1,12 @@
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>
@@ -0,0 +1,12 @@
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>
@@ -0,0 +1,12 @@
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
@@ -0,0 +1,12 @@
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
@@ -0,0 +1,12 @@
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>
@@ -0,0 +1,12 @@
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>
@@ -0,0 +1,128 @@
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-BPwf8Fw3.js"></script>
65
+ <link rel="modulepreload" crossorigin href="/assets/vendor-react-CHoMc7ka.js">
66
+ <link rel="modulepreload" crossorigin href="/assets/vendor-markdown-CIVH08vJ.js">
67
+ <link rel="modulepreload" crossorigin href="/assets/vendor-syntax-Djb62v3a.js">
68
+ <link rel="modulepreload" crossorigin href="/assets/vendor-icons-D33IkSIf.js">
69
+ <link rel="modulepreload" crossorigin href="/assets/vendor-i18n-ByAl-gdx.js">
70
+ <link rel="stylesheet" crossorigin href="/assets/index-B8wwD_Xo.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
@@ -0,0 +1,17 @@
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>
@@ -0,0 +1,61 @@
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
+ }
@@ -0,0 +1,119 @@
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>
@@ -0,0 +1,19 @@
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
+ });
@@ -0,0 +1,46 @@
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 verify the server is running:
12
+ ```
13
+ curl -s http://localhost:3001/health 2>/dev/null || echo "NOT_RUNNING"
14
+ ```
15
+ If not running, tell the user to run `/upfynai` first.
16
+
17
+ 2. Get the current project path and session info:
18
+ - Current working directory is the project
19
+ - The Claude Code session ID is available from the environment
20
+
21
+ 3. Register this project with the UI server by calling the API:
22
+ ```
23
+ curl -s -X POST http://localhost:3001/api/projects \
24
+ -H "Content-Type: application/json" \
25
+ -d '{"path": "'$(pwd)'"}'
26
+ ```
27
+
28
+ 4. Display connection confirmation:
29
+ ```
30
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
31
+ ✅ Connected to Upfyn-Code!
32
+
33
+ 📁 Project: [current directory]
34
+ 🌐 UI: http://localhost:3001
35
+ 🔗 Session synced — canvas will show your conversation
36
+
37
+ Your Claude Code session is now visible in the web UI.
38
+ Tool calls, responses, and permissions appear as canvas nodes.
39
+
40
+ Use /upfynai-disconnect to unlink this session
41
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
42
+ ```
43
+
44
+ If the user provided a custom URL (like `http://192.168.1.5:3001`), use that instead of localhost.
45
+
46
+ $ARGUMENTS
@@ -0,0 +1,31 @@
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
@@ -0,0 +1,99 @@
1
+ ---
2
+ description: Run Upfyn-Code diagnostics — check installation, server, connection, and project config
3
+ ---
4
+
5
+ # Upfyn-Code — Doctor (Diagnostics)
6
+
7
+ You are the Upfyn-Code assistant. Run a full diagnostic check and report the results.
8
+
9
+ ## Checks to perform
10
+
11
+ Run each check and report with ✅ (pass), ⚠️ (warning), or ❌ (fail):
12
+
13
+ 1. **Package installed**: Check if `upfynai-code` is installed globally
14
+ ```
15
+ npm list -g upfynai-code --depth=0 2>/dev/null
16
+ ```
17
+
18
+ 2. **Server running**: Check health endpoint
19
+ ```
20
+ curl -s http://localhost:3001/health 2>/dev/null
21
+ ```
22
+
23
+ 3. **Claude Code CLI**: Verify `claude` CLI is available
24
+ ```
25
+ which claude 2>/dev/null || where claude 2>/dev/null
26
+ ```
27
+
28
+ 4. **Node.js version**: Check node version (needs 18+)
29
+ ```
30
+ node --version
31
+ ```
32
+
33
+ 5. **Project .claude directory**: Check if current project has `.claude/` folder
34
+ ```
35
+ ls -la .claude/ 2>/dev/null || echo "NO_CLAUDE_DIR"
36
+ ```
37
+
38
+ 6. **Project CLAUDE.md**: Check if project has CLAUDE.md instructions
39
+ ```
40
+ ls CLAUDE.md 2>/dev/null || echo "NO_CLAUDE_MD"
41
+ ```
42
+
43
+ 7. **User commands directory**: Check `~/.claude/commands/` exists
44
+ ```
45
+ ls ~/.claude/commands/ 2>/dev/null || echo "NO_COMMANDS_DIR"
46
+ ```
47
+
48
+ 8. **Upfyn-Code commands installed**: Check if upfynai slash commands are in `~/.claude/commands/`
49
+ ```
50
+ ls ~/.claude/commands/upfynai*.md 2>/dev/null || echo "NOT_INSTALLED"
51
+ ```
52
+
53
+ 9. **Database**: Check if auth.db exists
54
+ ```
55
+ ls ~/.claude/upfynai-code/auth.db 2>/dev/null || echo "NO_DB"
56
+ ```
57
+
58
+ 10. **Port availability**: Check if port 3001 is in use
59
+ ```
60
+ lsof -i :3001 2>/dev/null || netstat -an | grep 3001 2>/dev/null || echo "PORT_FREE"
61
+ ```
62
+
63
+ 11. **MCP servers**: Check if any MCP servers are configured in `.claude/`
64
+ ```
65
+ cat .claude/mcp.json 2>/dev/null || echo "NO_MCP"
66
+ ```
67
+
68
+ 12. **Settings**: Check Claude settings
69
+ ```
70
+ cat ~/.claude/settings.json 2>/dev/null || echo "NO_SETTINGS"
71
+ ```
72
+
73
+ ## Output format
74
+
75
+ ```
76
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
77
+ Upfyn-Code Doctor — Diagnostics Report
78
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
79
+
80
+ [✅/❌] Package installed: [version or NOT FOUND]
81
+ [✅/❌] Server running: [status]
82
+ [✅/❌] Claude CLI: [path]
83
+ [✅/❌] Node.js: [version]
84
+ [✅/⚠️] Project .claude/: [found/missing]
85
+ [✅/⚠️] CLAUDE.md: [found/missing]
86
+ [✅/❌] Commands directory: [path]
87
+ [✅/⚠️] Upfyn-Code commands: [installed/missing]
88
+ [✅/⚠️] Database: [path/missing]
89
+ [✅/⚠️] Port 3001: [in use/free]
90
+ [✅/⚠️] MCP servers: [count or none]
91
+ [✅/⚠️] Settings: [found/missing]
92
+
93
+ Summary: X passed, Y warnings, Z failed
94
+
95
+ [If any failures, suggest fixes]
96
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
97
+ ```
98
+
99
+ $ARGUMENTS