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.
- package/client/dist/api-docs.html +879 -0
- package/client/dist/assets/AppContent-CTSHQdyq.js +513 -0
- package/client/dist/assets/CanvasPanel-Cig0Mo9s.js +6 -0
- package/client/dist/assets/CanvasPanel-q4HEqNtV.css +1 -0
- 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-silya-zP.js +11 -0
- package/client/dist/assets/MarkdownPreview-B3c7OEj6.js +1 -0
- package/client/dist/assets/Onboarding-Coxo6mFA.js +1 -0
- package/client/dist/assets/SetupForm-BzYOsbji.js +1 -0
- package/client/dist/assets/Tableau10-B-NsZVaP.js +1 -0
- package/client/dist/assets/_commonjs-dynamic-modules-TDtrdbi3.js +1 -0
- package/client/dist/assets/ar-SA-G6X2FPQ2-Bmw2-hDt.js +10 -0
- package/client/dist/assets/arc-BMqY7_Ci.js +1 -0
- package/client/dist/assets/array-BKyUJesY.js +1 -0
- package/client/dist/assets/az-AZ-76LH7QW2-Dh1le_qs.js +1 -0
- package/client/dist/assets/bg-BG-XCXSNQG7-Cbav8Z9z.js +5 -0
- package/client/dist/assets/blockDiagram-38ab4fdb-ChHJxsXw.js +118 -0
- package/client/dist/assets/bn-BD-2XOGV67Q-DCNjOaWz.js +5 -0
- package/client/dist/assets/c4Diagram-3d4e48cf-b8Xue4Z6.js +10 -0
- package/client/dist/assets/ca-ES-6MX7JW3Y-Dl_vM7NS.js +8 -0
- package/client/dist/assets/channel-CSnvHe_M.js +1 -0
- package/client/dist/assets/classDiagram-70f12bd4-BheP7Ggo.js +2 -0
- package/client/dist/assets/classDiagram-v2-f2320105-xtym7GEZ.js +2 -0
- package/client/dist/assets/clone-B75abXxS.js +1 -0
- package/client/dist/assets/createText-2e5e7dd3-_n4jI_fO.js +5 -0
- package/client/dist/assets/cs-CZ-2BRQDIVT-ftsKDdz4.js +11 -0
- package/client/dist/assets/da-DK-5WZEPLOC-DAjdwGRO.js +5 -0
- package/client/dist/assets/de-DE-XR44H4JA-BJXczHGT.js +8 -0
- package/client/dist/assets/directory-open-01563666-DWU9wJ6I.js +1 -0
- package/client/dist/assets/directory-open-4ed118d0-CunoC1EB.js +1 -0
- package/client/dist/assets/edges-e0da2a9e-CfPZr4YM.js +4 -0
- package/client/dist/assets/el-GR-BZB4AONW-DW2p_uy7.js +10 -0
- package/client/dist/assets/erDiagram-9861fffd-CF33V-Of.js +51 -0
- package/client/dist/assets/es-ES-U4NZUMDT-DLOIGnrl.js +9 -0
- package/client/dist/assets/eu-ES-A7QVB2H4-LJXbf89m.js +11 -0
- package/client/dist/assets/fa-IR-HGAKTJCU-Dvx65fgW.js +8 -0
- package/client/dist/assets/fi-FI-Z5N7JZ37-EoL65BQh.js +6 -0
- package/client/dist/assets/file-open-002ab408-DIuFHtCF.js +1 -0
- package/client/dist/assets/file-open-7c801643-684qeFg4.js +1 -0
- package/client/dist/assets/file-save-3189631c-C1wFhQhH.js +1 -0
- package/client/dist/assets/file-save-745eba88-Bb9F9Kg7.js +1 -0
- package/client/dist/assets/flowDb-956e92f1-HgoXVy2H.js +10 -0
- package/client/dist/assets/flowDiagram-66a62f08-tffoET0H.js +4 -0
- package/client/dist/assets/flowDiagram-v2-96b9c2cf-Byc3JCHh.js +1 -0
- package/client/dist/assets/flowchart-elk-definition-4a651766-DJbI2dpv.js +139 -0
- package/client/dist/assets/fr-FR-RHASNOE6-DNk_jdDs.js +9 -0
- package/client/dist/assets/ganttDiagram-c361ad54-2XX670FU.js +257 -0
- package/client/dist/assets/gitGraphDiagram-72cf32ee-CcUfruAo.js +70 -0
- package/client/dist/assets/gl-ES-HMX3MZ6V-dxzFjZlG.js +10 -0
- package/client/dist/assets/graph-BSbiMSBC.js +1 -0
- package/client/dist/assets/he-IL-6SHJWFNN-Cogsfdt1.js +10 -0
- package/client/dist/assets/hi-IN-IWLTKZ5I-L6wbgi4F.js +4 -0
- package/client/dist/assets/hu-HU-A5ZG7DT2-DSA6ZDsH.js +7 -0
- package/client/dist/assets/id-ID-SAP4L64H-BK_vGGS6.js +10 -0
- package/client/dist/assets/image-blob-reduce.esm-BLtmMM_J.js +2 -0
- package/client/dist/assets/index-3862675e-Bv32HUgT.js +1 -0
- package/client/dist/assets/index-B8wwD_Xo.css +1 -0
- package/client/dist/assets/index-BPwf8Fw3.js +27 -0
- package/client/dist/assets/index-D1urGMYu.js +95 -0
- package/client/dist/assets/infoDiagram-f8f76790-w4mR4pxn.js +7 -0
- package/client/dist/assets/init-Gi6I4Gst.js +1 -0
- package/client/dist/assets/it-IT-JPQ66NNP-BLdHYMhn.js +11 -0
- package/client/dist/assets/ja-JP-DBVTYXUO-B_vmexl_.js +8 -0
- package/client/dist/assets/journeyDiagram-49397b02-D9nmO17e.js +139 -0
- package/client/dist/assets/kaa-6HZHGXH3-5s-3jl6F.js +1 -0
- package/client/dist/assets/kab-KAB-ZGHBKWFO-2QaVDuSf.js +8 -0
- package/client/dist/assets/kk-KZ-P5N5QNE5-CTC52Vbi.js +1 -0
- package/client/dist/assets/km-KH-HSX4SM5Z-DxawH8UZ.js +11 -0
- package/client/dist/assets/ko-KR-MTYHY66A-CmosEM8_.js +9 -0
- package/client/dist/assets/ku-TR-6OUDTVRD-DbiLen4y.js +9 -0
- package/client/dist/assets/layout-jmt3H9tA.js +1 -0
- package/client/dist/assets/line-JTlRayUJ.js +1 -0
- package/client/dist/assets/linear-DJeB5p7x.js +1 -0
- package/client/dist/assets/lt-LT-XHIRWOB4-CH15wrjA.js +3 -0
- package/client/dist/assets/lv-LV-5QDEKY6T-dhgfPuCQ.js +7 -0
- package/client/dist/assets/mindmap-definition-fc14e90a-BOOrexmz.js +415 -0
- package/client/dist/assets/mr-IN-CRQNXWMA-3Gi6iq7A.js +13 -0
- package/client/dist/assets/my-MM-5M5IBNSE-CpH4rdJj.js +1 -0
- package/client/dist/assets/nb-NO-T6EIAALU-Du6iiGql.js +10 -0
- package/client/dist/assets/nl-NL-IS3SIHDZ-BGvsd1MT.js +8 -0
- package/client/dist/assets/nn-NO-6E72VCQL-B-odvJZW.js +8 -0
- package/client/dist/assets/oc-FR-POXYY2M6-COC8xNjo.js +8 -0
- package/client/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/client/dist/assets/pa-IN-N4M65BXN-CE21PUQH.js +4 -0
- package/client/dist/assets/path-CbwjOpE9.js +1 -0
- package/client/dist/assets/pdf-TYrZqVzP.js +12 -0
- package/client/dist/assets/pdf.worker-BA9kU3Pw.mjs +61080 -0
- package/client/dist/assets/percentages-BXMCSKIN-C9GT0OD3.js +199 -0
- package/client/dist/assets/pica-VkdyTzi8.js +2 -0
- package/client/dist/assets/pieDiagram-8a3498a8-Cvfh7Qr5.js +35 -0
- package/client/dist/assets/pl-PL-T2D74RX3-D4xFVSoT.js +9 -0
- package/client/dist/assets/pt-BR-5N22H2LF-CCq257gA.js +9 -0
- package/client/dist/assets/pt-PT-UZXXM6DQ-1l8gt5vA.js +9 -0
- package/client/dist/assets/quadrantDiagram-120e2f19-BA0js1aD.js +7 -0
- package/client/dist/assets/requirementDiagram-deff3bca-B0QNFfIn.js +52 -0
- package/client/dist/assets/ro-RO-JPDTUUEW-yosBW01E.js +11 -0
- package/client/dist/assets/roundRect-mAH3dD0p.js +1 -0
- package/client/dist/assets/ru-RU-B4JR7IUQ-8LkEJUix.js +9 -0
- package/client/dist/assets/sankeyDiagram-04a897e0-D4T9eCXn.js +8 -0
- package/client/dist/assets/sequenceDiagram-704730f1-CfBUTCrO.js +122 -0
- package/client/dist/assets/si-LK-N5RQ5JYF-D8rjbqtd.js +1 -0
- package/client/dist/assets/sk-SK-C5VTKIMK-Bg14sAzN.js +6 -0
- package/client/dist/assets/sl-SI-NN7IZMDC-CMTib6Zs.js +6 -0
- package/client/dist/assets/stateDiagram-587899a1-BGgvmVSZ.js +1 -0
- package/client/dist/assets/stateDiagram-v2-d93cdb3a-Qn3DpYuO.js +1 -0
- package/client/dist/assets/styles-6aaf32cf-IdVZLPrD.js +207 -0
- package/client/dist/assets/styles-9a916d00-BAC3L45X.js +160 -0
- package/client/dist/assets/styles-c10674c1-COhXxX8c.js +116 -0
- package/client/dist/assets/subset-shared.chunk-BWHnFai4.js +22 -0
- package/client/dist/assets/subset-worker.chunk-C8QUSruZ.js +1 -0
- package/client/dist/assets/sv-SE-XGPEYMSR-C1425rOF.js +10 -0
- package/client/dist/assets/svgDrawCommon-08f97a94-Cfk-fgnN.js +1 -0
- package/client/dist/assets/ta-IN-2NMHFXQM-BHHo1zpF.js +9 -0
- package/client/dist/assets/th-TH-HPSO5L25-CZVzm_WT.js +2 -0
- package/client/dist/assets/timeline-definition-85554ec2-VAvuJith.js +61 -0
- package/client/dist/assets/tr-TR-DEFEU3FU-DE1lclCq.js +7 -0
- package/client/dist/assets/uk-UA-QMV73CPH-D4lJZ85O.js +6 -0
- package/client/dist/assets/vendor-codemirror-BARtJV1V.js +16 -0
- package/client/dist/assets/vendor-codemirror-langs-52_y1wip.js +20 -0
- package/client/dist/assets/vendor-i18n-ByAl-gdx.js +1 -0
- package/client/dist/assets/vendor-icons-D33IkSIf.js +1 -0
- package/client/dist/assets/vendor-markdown-CIVH08vJ.js +298 -0
- package/client/dist/assets/vendor-react-CHoMc7ka.js +8 -0
- package/client/dist/assets/vendor-syntax-Djb62v3a.js +9 -0
- package/client/dist/assets/vendor-xterm-DBb3RXlu.js +66 -0
- package/client/dist/assets/vendor-xterm-DrlLKa8f.css +1 -0
- package/client/dist/assets/vi-VN-M7AON7JQ-Dgc_SShk.js +5 -0
- package/client/dist/assets/xychartDiagram-e933f94c-BeyVBJhb.js +7 -0
- package/client/dist/assets/zh-CN-LNUGB5OW-MH4Yh8in.js +10 -0
- package/client/dist/assets/zh-HK-E62DVLB3-D4XHehjx.js +1 -0
- package/client/dist/assets/zh-TW-RAJ6MFWO--efj3evj.js +9 -0
- package/client/dist/clear-cache.html +85 -0
- package/client/dist/convert-icons.md +53 -0
- package/client/dist/favicon.png +0 -0
- package/client/dist/favicon.svg +9 -0
- package/client/dist/generate-icons.js +49 -0
- package/client/dist/icons/claude-ai-icon.svg +1 -0
- package/client/dist/icons/codex-white.svg +3 -0
- package/client/dist/icons/codex.svg +3 -0
- package/client/dist/icons/cursor-white.svg +12 -0
- package/client/dist/icons/cursor.svg +1 -0
- package/client/dist/icons/icon-128x128.png +0 -0
- package/client/dist/icons/icon-128x128.svg +12 -0
- package/client/dist/icons/icon-144x144.png +0 -0
- package/client/dist/icons/icon-144x144.svg +12 -0
- package/client/dist/icons/icon-152x152.png +0 -0
- package/client/dist/icons/icon-152x152.svg +12 -0
- package/client/dist/icons/icon-192x192.png +0 -0
- package/client/dist/icons/icon-192x192.svg +12 -0
- package/client/dist/icons/icon-384x384.png +0 -0
- package/client/dist/icons/icon-384x384.svg +12 -0
- package/client/dist/icons/icon-512x512.png +0 -0
- package/client/dist/icons/icon-512x512.svg +12 -0
- package/client/dist/icons/icon-72x72.png +0 -0
- package/client/dist/icons/icon-72x72.svg +12 -0
- package/client/dist/icons/icon-96x96.png +0 -0
- package/client/dist/icons/icon-96x96.svg +12 -0
- package/client/dist/icons/icon-template.svg +12 -0
- package/client/dist/index.html +128 -0
- 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 +17 -0
- package/client/dist/manifest.json +61 -0
- package/client/dist/mcp-docs.html +119 -0
- 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 +19 -0
- package/commands/upfynai-connect.md +46 -0
- package/commands/upfynai-disconnect.md +31 -0
- package/commands/upfynai-doctor.md +99 -0
- package/commands/upfynai-export.md +49 -0
- package/commands/upfynai-local.md +82 -0
- package/commands/upfynai-status.md +75 -0
- package/commands/upfynai-stop.md +49 -0
- package/commands/upfynai-uninstall.md +58 -0
- package/commands/upfynai.md +50 -0
- package/package.json +106 -47
- package/scripts/build-client.js +17 -0
- package/scripts/fix-node-pty.js +67 -0
- package/scripts/install-commands.js +78 -0
- package/server/claude-sdk.js +714 -0
- package/server/cli.js +419 -0
- package/server/constants/config.js +5 -0
- package/server/cursor-cli.js +270 -0
- package/server/database/auth.db +0 -0
- package/server/database/db.js +606 -0
- package/server/database/init.sql +70 -0
- package/server/index.js +2269 -0
- package/server/load-env.js +26 -0
- package/server/mcp-server.js +620 -0
- package/server/middleware/auth.js +158 -0
- package/server/openai-codex.js +403 -0
- package/server/projects.js +1849 -0
- package/server/relay-client.js +314 -0
- package/server/routes/agent.js +1231 -0
- package/server/routes/auth.js +220 -0
- package/server/routes/cli-auth.js +263 -0
- package/server/routes/codex.js +344 -0
- package/server/routes/commands.js +601 -0
- package/server/routes/cursor.js +808 -0
- package/server/routes/git.js +1165 -0
- package/server/routes/mcp-utils.js +48 -0
- package/server/routes/mcp.js +552 -0
- package/server/routes/payments.js +172 -0
- package/server/routes/projects.js +549 -0
- package/server/routes/settings.js +178 -0
- package/server/routes/taskmaster.js +1964 -0
- package/server/routes/user.js +106 -0
- package/server/utils/commandParser.js +303 -0
- package/server/utils/gitConfig.js +24 -0
- package/server/utils/mcp-detector.js +198 -0
- package/server/utils/taskmaster-websocket.js +129 -0
- package/shared/modelConstants.js +67 -0
- package/LICENSE +0 -22
- package/bin/cli.js +0 -86
- package/dist/assets/CanvasPanel-B48gAKVY.js +0 -538
- package/dist/assets/CanvasPanel-B48gAKVY.js.map +0 -1
- package/dist/assets/CanvasPanel-BsOG3EVs.css +0 -1
- package/dist/assets/index-CEhTwG68.css +0 -1
- package/dist/assets/index-GqAGWpJI.js +0 -70
- package/dist/assets/index-GqAGWpJI.js.map +0 -1
- package/dist/index.html +0 -18
- package/index.html +0 -17
- package/src/App.tsx +0 -226
- package/src/components/canvas/CanvasPanel.tsx +0 -62
- package/src/components/canvas/layout/graph-builder.ts +0 -136
- package/src/components/canvas/shapes/CompactionNodeShape.tsx +0 -76
- package/src/components/canvas/shapes/SessionNodeShape.tsx +0 -93
- package/src/components/canvas/shapes/StatuslineWidgetShape.tsx +0 -125
- package/src/components/canvas/shapes/TextResponseNodeShape.tsx +0 -86
- package/src/components/canvas/shapes/ToolCallNodeShape.tsx +0 -107
- package/src/components/canvas/shapes/ToolResultNodeShape.tsx +0 -87
- package/src/components/canvas/shapes/shared-styles.ts +0 -35
- package/src/components/chat/ChatPanel.tsx +0 -96
- package/src/components/chat/InputBar.tsx +0 -81
- package/src/components/chat/MessageList.tsx +0 -130
- package/src/components/chat/PermissionDialog.tsx +0 -70
- package/src/components/layout/FolderSelector.tsx +0 -152
- package/src/components/layout/ModelSelector.tsx +0 -65
- package/src/components/layout/SessionManager.tsx +0 -115
- package/src/components/statusline/StatuslineBar.tsx +0 -114
- package/src/main.tsx +0 -10
- package/src/server/claude-session.ts +0 -156
- package/src/server/index.ts +0 -149
- package/src/services/stream-consumer.ts +0 -330
- package/src/statusline-core/bin/statusline.sh +0 -121
- package/src/statusline-core/commands/sls-config.md +0 -42
- package/src/statusline-core/commands/sls-doctor.md +0 -35
- package/src/statusline-core/commands/sls-help.md +0 -48
- package/src/statusline-core/commands/sls-layout.md +0 -38
- package/src/statusline-core/commands/sls-preview.md +0 -34
- package/src/statusline-core/commands/sls-theme.md +0 -40
- package/src/statusline-core/installer.js +0 -228
- package/src/statusline-core/layouts/compact.sh +0 -21
- package/src/statusline-core/layouts/full.sh +0 -62
- package/src/statusline-core/layouts/standard.sh +0 -39
- package/src/statusline-core/lib/core.sh +0 -389
- package/src/statusline-core/lib/helpers.sh +0 -81
- package/src/statusline-core/lib/json-parser.sh +0 -71
- package/src/statusline-core/themes/catppuccin.sh +0 -32
- package/src/statusline-core/themes/default.sh +0 -37
- package/src/statusline-core/themes/gruvbox.sh +0 -32
- package/src/statusline-core/themes/nord.sh +0 -32
- package/src/statusline-core/themes/tokyo-night.sh +0 -32
- package/src/store/canvas-store.ts +0 -50
- package/src/store/chat-store.ts +0 -60
- package/src/store/permission-store.ts +0 -29
- package/src/store/session-store.ts +0 -52
- package/src/store/statusline-store.ts +0 -160
- package/src/styles/global.css +0 -117
- package/src/themes/index.ts +0 -149
- package/src/types/canvas-graph.ts +0 -24
- package/src/types/sdk-messages.ts +0 -156
- package/src/types/statusline-fields.ts +0 -67
- package/src/vite-env.d.ts +0 -1
- package/tsconfig.json +0 -26
- 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>
|
|
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>
|
|
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>
|
|
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>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|