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.
- package/README.md +123 -88
- package/bin/cli.js +63 -0
- package/package.json +48 -106
- package/src/auth.js +115 -0
- package/src/config.js +33 -0
- package/src/connect.js +314 -0
- package/src/launch.js +54 -0
- package/src/mcp.js +57 -0
- package/src/server.js +54 -0
- package/client/dist/api-docs.html +0 -879
- package/client/dist/assets/AppContent-C0CyP3g5.js +0 -513
- package/client/dist/assets/CanvasPanel-0u9QR7U-.js +0 -34
- package/client/dist/assets/CanvasPanel-WhZulBJw.css +0 -1
- package/client/dist/assets/DashboardPanel-Dgqw1yZk.js +0 -1
- package/client/dist/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- package/client/dist/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- package/client/dist/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- package/client/dist/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- package/client/dist/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- package/client/dist/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- package/client/dist/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- package/client/dist/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- package/client/dist/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- package/client/dist/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- package/client/dist/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- package/client/dist/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- package/client/dist/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- package/client/dist/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- package/client/dist/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- package/client/dist/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- package/client/dist/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- package/client/dist/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- package/client/dist/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- package/client/dist/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- package/client/dist/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- package/client/dist/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- package/client/dist/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- package/client/dist/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- package/client/dist/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- package/client/dist/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- package/client/dist/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- package/client/dist/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- package/client/dist/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- package/client/dist/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- package/client/dist/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- package/client/dist/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- package/client/dist/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- package/client/dist/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- package/client/dist/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- package/client/dist/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- package/client/dist/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- package/client/dist/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- package/client/dist/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- package/client/dist/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- package/client/dist/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- package/client/dist/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- package/client/dist/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- package/client/dist/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- package/client/dist/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- package/client/dist/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- package/client/dist/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- package/client/dist/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- package/client/dist/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- package/client/dist/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- package/client/dist/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- package/client/dist/assets/LoginModal-CZDEzqjK.js +0 -19
- package/client/dist/assets/MarkdownPreview-CYdvwJaV.js +0 -1
- package/client/dist/assets/Onboarding-DR6NZ4Vz.js +0 -1
- package/client/dist/assets/SetupForm-D49gtWY4.js +0 -1
- package/client/dist/assets/Tableau10-B-NsZVaP.js +0 -1
- package/client/dist/assets/WorkflowsPanel-CqlbEJA_.js +0 -1
- package/client/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js +0 -1
- package/client/dist/assets/ar-SA-G6X2FPQ2-BWqa1yBH.js +0 -10
- package/client/dist/assets/arc-BegSKqEW.js +0 -1
- package/client/dist/assets/array-BKyUJesY.js +0 -1
- package/client/dist/assets/az-AZ-76LH7QW2-DrVlbZDP.js +0 -1
- package/client/dist/assets/bg-BG-XCXSNQG7-DdunjBgT.js +0 -5
- package/client/dist/assets/blockDiagram-38ab4fdb-BKMbwGHu.js +0 -118
- package/client/dist/assets/bn-BD-2XOGV67Q-_7DtmvwO.js +0 -5
- package/client/dist/assets/c4Diagram-3d4e48cf-hJuiHhSn.js +0 -10
- package/client/dist/assets/ca-ES-6MX7JW3Y-BFIrmojG.js +0 -8
- package/client/dist/assets/channel-Bur-rRTp.js +0 -1
- package/client/dist/assets/classDiagram-70f12bd4-BjiAf9cM.js +0 -2
- package/client/dist/assets/classDiagram-v2-f2320105-pwBewejc.js +0 -2
- package/client/dist/assets/clone-BtqXeoBJ.js +0 -1
- package/client/dist/assets/createText-2e5e7dd3-Dq_acOWe.js +0 -5
- package/client/dist/assets/cs-CZ-2BRQDIVT-B-x4F6TJ.js +0 -11
- package/client/dist/assets/da-DK-5WZEPLOC-Btlc8Dgn.js +0 -5
- package/client/dist/assets/de-DE-XR44H4JA-BVu3ZIoD.js +0 -8
- package/client/dist/assets/directory-open-01563666-DWU9wJ6I.js +0 -1
- package/client/dist/assets/directory-open-4ed118d0-CunoC1EB.js +0 -1
- package/client/dist/assets/edges-e0da2a9e-DH0wVTXR.js +0 -4
- package/client/dist/assets/el-GR-BZB4AONW-h2ll8_ZC.js +0 -10
- package/client/dist/assets/erDiagram-9861fffd-BYezLIR7.js +0 -51
- package/client/dist/assets/es-ES-U4NZUMDT-Cveiulwt.js +0 -9
- package/client/dist/assets/eu-ES-A7QVB2H4-DQluL2PY.js +0 -11
- package/client/dist/assets/fa-IR-HGAKTJCU-BJtcMBSv.js +0 -8
- package/client/dist/assets/fi-FI-Z5N7JZ37-D8NfbVXV.js +0 -6
- package/client/dist/assets/file-open-002ab408-DIuFHtCF.js +0 -1
- package/client/dist/assets/file-open-7c801643-684qeFg4.js +0 -1
- package/client/dist/assets/file-save-3189631c-C1wFhQhH.js +0 -1
- package/client/dist/assets/file-save-745eba88-Bb9F9Kg7.js +0 -1
- package/client/dist/assets/flowDb-956e92f1-scnUykhM.js +0 -10
- package/client/dist/assets/flowDiagram-66a62f08-jVyWsfyU.js +0 -4
- package/client/dist/assets/flowDiagram-v2-96b9c2cf-N6xgi25h.js +0 -1
- package/client/dist/assets/flowchart-elk-definition-4a651766-gKGX3HqR.js +0 -139
- package/client/dist/assets/fr-FR-RHASNOE6-vdj42kC6.js +0 -9
- package/client/dist/assets/ganttDiagram-c361ad54-C2CiWFUP.js +0 -257
- package/client/dist/assets/gitGraphDiagram-72cf32ee-C59Yz2LK.js +0 -70
- package/client/dist/assets/gl-ES-HMX3MZ6V-DQo0TzoP.js +0 -10
- package/client/dist/assets/graph-Dx_H43Kv.js +0 -1
- package/client/dist/assets/he-IL-6SHJWFNN-DKXK5e33.js +0 -10
- package/client/dist/assets/hi-IN-IWLTKZ5I-C2Qgqc0R.js +0 -4
- package/client/dist/assets/hu-HU-A5ZG7DT2-Ss-6vX0m.js +0 -7
- package/client/dist/assets/id-ID-SAP4L64H-D7Wsg1S2.js +0 -10
- package/client/dist/assets/image-blob-reduce.esm-D6s-rqMO.js +0 -7
- package/client/dist/assets/index-3862675e-u8Nv7hHC.js +0 -1
- package/client/dist/assets/index-BVowJdZF.js +0 -97
- package/client/dist/assets/index-ce18TYkg.js +0 -27
- package/client/dist/assets/index-kQoJx-bc.css +0 -1
- package/client/dist/assets/infoDiagram-f8f76790-LmoJYsxo.js +0 -7
- package/client/dist/assets/init-Gi6I4Gst.js +0 -1
- package/client/dist/assets/it-IT-JPQ66NNP-CAPTVl7M.js +0 -11
- package/client/dist/assets/ja-JP-DBVTYXUO-eNVPawR2.js +0 -8
- package/client/dist/assets/journeyDiagram-49397b02-BaJqehpR.js +0 -139
- package/client/dist/assets/kaa-6HZHGXH3-tpuNkKhS.js +0 -1
- package/client/dist/assets/kab-KAB-ZGHBKWFO-Dp83kx4x.js +0 -8
- package/client/dist/assets/kk-KZ-P5N5QNE5-B9IlC6YN.js +0 -1
- package/client/dist/assets/km-KH-HSX4SM5Z-B_KMYaMj.js +0 -11
- package/client/dist/assets/ko-KR-MTYHY66A-yebnUNdb.js +0 -9
- package/client/dist/assets/ku-TR-6OUDTVRD-BR6fh6-5.js +0 -9
- package/client/dist/assets/layout-DLl5Jwcl.js +0 -1
- package/client/dist/assets/line-FpB7omSK.js +0 -1
- package/client/dist/assets/linear-CkXqUFJ8.js +0 -1
- package/client/dist/assets/lt-LT-XHIRWOB4-SutZSWtR.js +0 -3
- package/client/dist/assets/lv-LV-5QDEKY6T-DuAxdcZL.js +0 -7
- package/client/dist/assets/mindmap-definition-fc14e90a-DyxXOExh.js +0 -425
- package/client/dist/assets/mr-IN-CRQNXWMA-DqDUWM_8.js +0 -13
- package/client/dist/assets/my-MM-5M5IBNSE-C40kMFMR.js +0 -1
- package/client/dist/assets/nb-NO-T6EIAALU-DVij32Ju.js +0 -10
- package/client/dist/assets/nl-NL-IS3SIHDZ-rT84mDYq.js +0 -8
- package/client/dist/assets/nn-NO-6E72VCQL-BBZXBW8V.js +0 -8
- package/client/dist/assets/oc-FR-POXYY2M6-DzjOugOf.js +0 -8
- package/client/dist/assets/ordinal-Cboi1Yqb.js +0 -1
- package/client/dist/assets/pa-IN-N4M65BXN-DD1iU8_F.js +0 -4
- package/client/dist/assets/path-CbwjOpE9.js +0 -1
- package/client/dist/assets/pdf-CE_K4jFx.js +0 -12
- package/client/dist/assets/pdf.worker-BA9kU3Pw.mjs +0 -61080
- package/client/dist/assets/percentages-BXMCSKIN-WVlHS4wx.js +0 -207
- package/client/dist/assets/pica-CQIY57Tf.js +0 -7
- package/client/dist/assets/pieDiagram-8a3498a8-Dd_85qBH.js +0 -35
- package/client/dist/assets/pl-PL-T2D74RX3-ukVXa48G.js +0 -9
- package/client/dist/assets/pt-BR-5N22H2LF-BibawarT.js +0 -9
- package/client/dist/assets/pt-PT-UZXXM6DQ-So3i9l9w.js +0 -9
- package/client/dist/assets/quadrantDiagram-120e2f19-C4dFVDEx.js +0 -7
- package/client/dist/assets/requirementDiagram-deff3bca-DrTO7yFl.js +0 -52
- package/client/dist/assets/ro-RO-JPDTUUEW-DY0Xq_Hd.js +0 -11
- package/client/dist/assets/roundRect-0PYZxl1G.js +0 -1
- package/client/dist/assets/ru-RU-B4JR7IUQ-B7u_Zvkd.js +0 -9
- package/client/dist/assets/sankeyDiagram-04a897e0-D24gfzuS.js +0 -8
- package/client/dist/assets/sequenceDiagram-704730f1-Dgji2XLQ.js +0 -122
- package/client/dist/assets/si-LK-N5RQ5JYF-OejsLzQ_.js +0 -1
- package/client/dist/assets/sk-SK-C5VTKIMK-_vy2Bt-M.js +0 -6
- package/client/dist/assets/sl-SI-NN7IZMDC-DKOl_u2M.js +0 -6
- package/client/dist/assets/stateDiagram-587899a1-CJ8eBaiU.js +0 -1
- package/client/dist/assets/stateDiagram-v2-d93cdb3a-C5K3l-Nt.js +0 -1
- package/client/dist/assets/styles-6aaf32cf-DAKE0jbx.js +0 -207
- package/client/dist/assets/styles-9a916d00-LFAJCgEy.js +0 -160
- package/client/dist/assets/styles-c10674c1-CllKO8NG.js +0 -116
- package/client/dist/assets/subset-shared.chunk-Uy-J87FQ.js +0 -84
- package/client/dist/assets/subset-worker.chunk-dvgDvqt9.js +0 -1
- package/client/dist/assets/sv-SE-XGPEYMSR-CDCB2ZV5.js +0 -10
- package/client/dist/assets/svgDrawCommon-08f97a94-CObOzbFQ.js +0 -1
- package/client/dist/assets/ta-IN-2NMHFXQM-DHUNdO69.js +0 -9
- package/client/dist/assets/th-TH-HPSO5L25-zI2hnBq3.js +0 -2
- package/client/dist/assets/timeline-definition-85554ec2-C2XHRmxK.js +0 -61
- package/client/dist/assets/tr-TR-DEFEU3FU-l-6Hu4-D.js +0 -7
- package/client/dist/assets/uk-UA-QMV73CPH-CqSOwrl7.js +0 -6
- package/client/dist/assets/vendor-codemirror-D_s0aGBu.js +0 -35
- package/client/dist/assets/vendor-i18n-DCFGyhQR.js +0 -1
- package/client/dist/assets/vendor-icons-Lb69KSFJ.js +0 -646
- package/client/dist/assets/vendor-markdown-BXEi_H3G.js +0 -298
- package/client/dist/assets/vendor-react-9mUTKBHH.js +0 -67
- package/client/dist/assets/vendor-syntax-DnmwQQJF.js +0 -16
- package/client/dist/assets/vendor-xterm-CZq1hqo1.js +0 -66
- package/client/dist/assets/vendor-xterm-qxJ8_QYu.css +0 -32
- package/client/dist/assets/vi-VN-M7AON7JQ-CUL8-mBZ.js +0 -5
- package/client/dist/assets/xychartDiagram-e933f94c-1fmf6slj.js +0 -7
- package/client/dist/assets/zh-CN-LNUGB5OW-CB5y5VVU.js +0 -10
- package/client/dist/assets/zh-HK-E62DVLB3-BHcrrEeJ.js +0 -1
- package/client/dist/assets/zh-TW-RAJ6MFWO-DoDUdkaJ.js +0 -9
- package/client/dist/clear-cache.html +0 -85
- package/client/dist/convert-icons.md +0 -53
- package/client/dist/favicon.png +0 -0
- package/client/dist/favicon.svg +0 -9
- package/client/dist/generate-icons.js +0 -49
- package/client/dist/icons/claude-ai-icon.svg +0 -1
- package/client/dist/icons/codex-white.svg +0 -3
- package/client/dist/icons/codex.svg +0 -3
- package/client/dist/icons/cursor-white.svg +0 -12
- package/client/dist/icons/cursor.svg +0 -1
- package/client/dist/icons/icon-128x128.png +0 -0
- package/client/dist/icons/icon-128x128.svg +0 -12
- package/client/dist/icons/icon-144x144.png +0 -0
- package/client/dist/icons/icon-144x144.svg +0 -12
- package/client/dist/icons/icon-152x152.png +0 -0
- package/client/dist/icons/icon-152x152.svg +0 -12
- package/client/dist/icons/icon-192x192.png +0 -0
- package/client/dist/icons/icon-192x192.svg +0 -12
- package/client/dist/icons/icon-384x384.png +0 -0
- package/client/dist/icons/icon-384x384.svg +0 -12
- package/client/dist/icons/icon-512x512.png +0 -0
- package/client/dist/icons/icon-512x512.svg +0 -12
- package/client/dist/icons/icon-72x72.png +0 -0
- package/client/dist/icons/icon-72x72.svg +0 -12
- package/client/dist/icons/icon-96x96.png +0 -0
- package/client/dist/icons/icon-96x96.svg +0 -12
- package/client/dist/icons/icon-template.svg +0 -12
- package/client/dist/index.html +0 -128
- package/client/dist/logo-128.png +0 -0
- package/client/dist/logo-256.png +0 -0
- package/client/dist/logo-32.png +0 -0
- package/client/dist/logo-512.png +0 -0
- package/client/dist/logo-64.png +0 -0
- package/client/dist/logo.svg +0 -17
- package/client/dist/manifest.json +0 -61
- package/client/dist/mcp-docs.html +0 -119
- package/client/dist/screenshots/cli-selection.png +0 -0
- package/client/dist/screenshots/desktop-main.png +0 -0
- package/client/dist/screenshots/mobile-chat.png +0 -0
- package/client/dist/screenshots/tools-modal.png +0 -0
- package/client/dist/sw.js +0 -19
- package/commands/upfynai-connect.md +0 -59
- package/commands/upfynai-disconnect.md +0 -31
- package/commands/upfynai-doctor.md +0 -99
- package/commands/upfynai-export.md +0 -49
- package/commands/upfynai-local.md +0 -82
- package/commands/upfynai-status.md +0 -75
- package/commands/upfynai-stop.md +0 -49
- package/commands/upfynai-uninstall.md +0 -58
- package/commands/upfynai.md +0 -69
- package/scripts/build-client.js +0 -17
- package/scripts/fix-node-pty.js +0 -67
- package/scripts/install-commands.js +0 -78
- package/server/claude-sdk.js +0 -714
- package/server/cli-ui.js +0 -785
- package/server/cli.js +0 -596
- package/server/constants/config.js +0 -31
- package/server/cursor-cli.js +0 -270
- package/server/database/auth.db +0 -0
- package/server/database/db.js +0 -822
- package/server/database/init.sql +0 -70
- package/server/index.js +0 -2738
- package/server/load-env.js +0 -26
- package/server/mcp-server.js +0 -621
- package/server/middleware/auth.js +0 -181
- package/server/openai-codex.js +0 -403
- package/server/openrouter.js +0 -137
- package/server/projects.js +0 -1742
- package/server/relay-client.js +0 -672
- package/server/routes/agent.js +0 -1226
- package/server/routes/auth.js +0 -266
- package/server/routes/cli-auth.js +0 -263
- package/server/routes/codex.js +0 -344
- package/server/routes/commands.js +0 -598
- package/server/routes/cursor.js +0 -807
- package/server/routes/dashboard.js +0 -205
- package/server/routes/git.js +0 -1151
- package/server/routes/mcp-utils.js +0 -48
- package/server/routes/mcp.js +0 -535
- package/server/routes/payments.js +0 -172
- package/server/routes/projects.js +0 -552
- package/server/routes/settings.js +0 -261
- package/server/routes/taskmaster.js +0 -1928
- package/server/routes/user.js +0 -106
- package/server/routes/vapi-chat.js +0 -94
- package/server/routes/voice.js +0 -194
- package/server/routes/webhooks.js +0 -166
- package/server/routes/workflows.js +0 -118
- package/server/sandbox.js +0 -120
- package/server/services/whisperService.js +0 -84
- package/server/services/workflowScheduler.js +0 -186
- package/server/utils/commandParser.js +0 -303
- package/server/utils/gitConfig.js +0 -24
- package/server/utils/mcp-detector.js +0 -198
- package/server/utils/taskmaster-websocket.js +0 -129
- 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>
|
package/client/dist/index.html
DELETED
|
@@ -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>
|
package/client/dist/logo-128.png
DELETED
|
Binary file
|
package/client/dist/logo-256.png
DELETED
|
Binary file
|
package/client/dist/logo-32.png
DELETED
|
Binary file
|
package/client/dist/logo-512.png
DELETED
|
Binary file
|
package/client/dist/logo-64.png
DELETED
|
Binary file
|
package/client/dist/logo.svg
DELETED
|
@@ -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>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
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
|