upfynai-code 3.0.4 → 3.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/README.md +69 -92
- package/bin/cli.js +191 -0
- package/dist/client/assets/AppContent-M14Au3SB.js +542 -0
- package/{client/dist/assets/BrowserPanel-0TLEl-IC.js → dist/client/assets/BrowserPanel-TFKm2NDJ.js} +2 -2
- package/dist/client/assets/DashboardPanel-C88HjsCh.js +1 -0
- package/dist/client/assets/FileTree-DvO1xnDE.js +1 -0
- package/{client/dist/assets/GitPanel-C_xFM-N2.js → dist/client/assets/GitPanel-D-slVlyy.js} +2 -2
- package/dist/client/assets/LoginModal-Chi4SYcr.js +21 -0
- package/{client/dist/assets/MarkdownPreview-CESjI261.js → dist/client/assets/MarkdownPreview-CuIix2u9.js} +1 -1
- package/dist/client/assets/MermaidBlock-Dq9uFv82.js +2 -0
- package/dist/client/assets/Onboarding-QYXx24dX.js +1 -0
- package/{client/dist/assets/PreviewPanel-CqCa92Tf.js → dist/client/assets/PreviewPanel-Dd8q-jo0.js} +1 -1
- package/dist/client/assets/SetupForm-CrspaUva.js +1 -0
- package/dist/client/assets/WorkflowsPanel-DIlYAdhB.js +1 -0
- package/dist/client/assets/index-CnNNzw9A.css +1 -0
- package/{client/dist/assets/index-HaY-3pK1.js → dist/client/assets/index-rUkK9FDP.js} +26 -26
- package/{client/dist/assets/vendor-codemirror-D2ALgpaX.js → dist/client/assets/vendor-codemirror-jc6nyJQg.js} +1 -1
- package/{client/dist/assets/vendor-diff-DNQpbhrT.js → dist/client/assets/vendor-diff-THJmAcEI.js} +1 -1
- package/{client/dist/assets/vendor-icons-GyYE35HP.js → dist/client/assets/vendor-icons-CfjIpdrD.js} +145 -155
- package/{client/dist/assets/vendor-markdown-CimbIo6Y.js → dist/client/assets/vendor-markdown-Cdm6NEGf.js} +1 -1
- package/dist/client/assets/vendor-mermaid-DTPaBx-U.js +2559 -0
- package/{client/dist/assets/vendor-react-96lCPsRK.js → dist/client/assets/vendor-react-wFkb6mSf.js} +1 -1
- package/{client/dist/assets/vendor-syntax-LS_Nt30I.js → dist/client/assets/vendor-syntax-C_UZR7tc.js} +1 -1
- package/dist/client/favicon.png +0 -0
- package/dist/client/icons/icon-128x128.png +0 -0
- package/dist/client/icons/icon-144x144.png +0 -0
- package/dist/client/icons/icon-152x152.png +0 -0
- package/dist/client/icons/icon-192x192.png +0 -0
- package/dist/client/icons/icon-384x384.png +0 -0
- package/dist/client/icons/icon-512x512.png +0 -0
- package/dist/client/icons/icon-72x72.png +0 -0
- package/dist/client/icons/icon-96x96.png +0 -0
- package/{client/dist → dist/client}/index.html +37 -36
- package/dist/client/logo-128.png +0 -0
- package/dist/client/logo-256.png +0 -0
- package/dist/client/logo-32.png +0 -0
- package/dist/client/logo-512.png +0 -0
- package/dist/client/logo-64.png +0 -0
- package/dist/client/logo.png +0 -0
- package/{client/dist → dist/client}/manifest.json +12 -12
- package/{client/dist → dist/client}/mcp-docs.html +1 -1
- package/{client/dist → dist/client}/sw.js +2 -2
- package/package.json +56 -105
- package/scripts/postinstall.js +9 -0
- package/scripts/prepublish.js +77 -0
- package/src/animation.js +228 -0
- package/src/auth.js +142 -0
- package/src/config.js +40 -0
- package/src/connect.js +416 -0
- package/src/launch.js +81 -0
- package/src/mcp.js +57 -0
- package/src/permissions.js +140 -0
- package/src/persistent-shell.js +261 -0
- package/src/server.js +54 -0
- package/client/dist/assets/AppContent-CwrTP6TW.js +0 -545
- package/client/dist/assets/CanvasFullScreen-D1GWQsGL.js +0 -1
- package/client/dist/assets/CanvasWorkspace-D7ORj358.js +0 -163
- package/client/dist/assets/DashboardPanel-BV7ybUDe.js +0 -1
- package/client/dist/assets/FileTree-5qfhBqdE.js +0 -1
- package/client/dist/assets/LoginModal-CImJHRjX.js +0 -13
- package/client/dist/assets/MermaidBlock-BFM21cwe.js +0 -2
- package/client/dist/assets/Onboarding-B3cteLu2.js +0 -1
- package/client/dist/assets/SetupForm-P6dsYgHO.js +0 -1
- package/client/dist/assets/WorkflowsPanel-CBoN80kc.js +0 -1
- package/client/dist/assets/index-46kkVu2i.css +0 -1
- package/client/dist/assets/pdf-CE_K4jFx.js +0 -12
- package/client/dist/assets/vendor-canvas-BZV40eAE.css +0 -1
- package/client/dist/assets/vendor-canvas-DvHJ_Pn2.js +0 -49
- package/client/dist/assets/vendor-mermaid-DucWyDEe.js +0 -2556
- package/client/dist/favicon.png +0 -0
- package/client/dist/icons/icon-128x128.png +0 -0
- package/client/dist/icons/icon-144x144.png +0 -0
- package/client/dist/icons/icon-152x152.png +0 -0
- package/client/dist/icons/icon-192x192.png +0 -0
- package/client/dist/icons/icon-384x384.png +0 -0
- package/client/dist/icons/icon-512x512.png +0 -0
- package/client/dist/icons/icon-72x72.png +0 -0
- package/client/dist/icons/icon-96x96.png +0 -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/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/agent-loop.js +0 -242
- package/server/auto-compact.js +0 -99
- package/server/browser.js +0 -131
- package/server/claude-sdk.js +0 -797
- package/server/cli-ui.js +0 -798
- package/server/cli.js +0 -751
- 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 -1547
- package/server/database/init.sql +0 -70
- package/server/index.js +0 -3813
- package/server/load-env.js +0 -26
- package/server/mcp-server.js +0 -621
- package/server/middleware/auth.js +0 -184
- package/server/middleware/relayHelpers.js +0 -44
- package/server/middleware/sandboxRouter.js +0 -174
- package/server/openai-codex.js +0 -403
- package/server/openrouter.js +0 -137
- package/server/projects.js +0 -1807
- package/server/provider-factory.js +0 -174
- package/server/relay-client.js +0 -390
- package/server/routes/agent.js +0 -1234
- package/server/routes/auth.js +0 -559
- package/server/routes/browser.js +0 -419
- package/server/routes/canvas.js +0 -53
- package/server/routes/cli-auth.js +0 -263
- package/server/routes/codex.js +0 -396
- package/server/routes/commands.js +0 -707
- package/server/routes/composio.js +0 -176
- package/server/routes/cursor.js +0 -770
- package/server/routes/dashboard.js +0 -295
- package/server/routes/git.js +0 -1208
- package/server/routes/keys.js +0 -34
- package/server/routes/mcp-utils.js +0 -48
- package/server/routes/mcp.js +0 -661
- package/server/routes/payments.js +0 -227
- package/server/routes/projects.js +0 -754
- package/server/routes/sessions.js +0 -146
- 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 -624
- package/server/routes/voice.js +0 -235
- package/server/routes/webhooks.js +0 -166
- package/server/routes/workflows.js +0 -312
- package/server/sandbox.js +0 -120
- package/server/services/browser-ai.js +0 -154
- package/server/services/composio.js +0 -204
- package/server/services/sessionRegistry.js +0 -139
- package/server/services/whisperService.js +0 -84
- package/server/services/workflowScheduler.js +0 -211
- package/server/tests/relay-flow.test.js +0 -570
- package/server/tests/sessions.test.js +0 -259
- package/server/utils/commandParser.js +0 -303
- package/server/utils/email.js +0 -66
- 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/integrationCatalog.d.ts +0 -12
- package/shared/integrationCatalog.js +0 -172
- package/shared/modelConstants.js +0 -96
- /package/{shared → dist}/agents/claude.js +0 -0
- /package/{shared → dist}/agents/codex.js +0 -0
- /package/{shared → dist}/agents/cursor.js +0 -0
- /package/{shared → dist}/agents/detect.js +0 -0
- /package/{shared → dist}/agents/exec.js +0 -0
- /package/{shared → dist}/agents/files.js +0 -0
- /package/{shared → dist}/agents/git.js +0 -0
- /package/{shared → dist}/agents/gitagent.js +0 -0
- /package/{shared → dist}/agents/index.js +0 -0
- /package/{shared → dist}/agents/shell.js +0 -0
- /package/{shared → dist}/agents/utils.js +0 -0
- /package/{client/dist → dist/client}/api-docs.html +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_AMS-Regular-BQhdFMY1.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_AMS-Regular-DMm9YOAa.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_AMS-Regular-DRggAlZN.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Fraktur-Bold-BsDP51OF.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Fraktur-Regular-CB_wures.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Bold-Cx986IdX.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Bold-Jm3AIy58.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Bold-waoOVXN0.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-BoldItalic-SpSLRI95.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Italic-3WenGoN9.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Italic-BMLOBm91.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Italic-NWA7e6Wa.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Regular-B22Nviop.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Regular-Dr94JaBh.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Main-Regular-ypZvNtVU.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Math-Italic-DA0__PXp.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Math-Italic-flOr_0UB.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Math-Italic-t53AETM-.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Italic-DN2j7dab.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Script-Regular-C5JkGWo-.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Script-Regular-D3wIWfF6.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Script-Regular-D5yQViql.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size1-Regular-C195tn64.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size1-Regular-Dbsnue_I.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size1-Regular-mCD8mA8B.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size2-Regular-B7gKUWhC.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size2-Regular-Dy4dx90m.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size2-Regular-oD1tc_U0.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size3-Regular-CTq5MqoE.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size3-Regular-DgpXs0kz.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size4-Regular-BF-4gkZK.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size4-Regular-DWFBv043.ttf +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2 +0 -0
- /package/{client/dist → dist/client}/assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf +0 -0
- /package/{client/dist → dist/client}/assets/vendor-i18n-DCFGyhQR.js +0 -0
- /package/{client/dist → dist/client}/assets/vendor-xterm-CZq1hqo1.js +0 -0
- /package/{client/dist → dist/client}/assets/vendor-xterm-qxJ8_QYu.css +0 -0
- /package/{client/dist → dist/client}/clear-cache.html +0 -0
- /package/{client/dist → dist/client}/convert-icons.md +0 -0
- /package/{client/dist → dist/client}/favicon.svg +0 -0
- /package/{client/dist → dist/client}/generate-icons.js +0 -0
- /package/{client/dist → dist/client}/icons/claude-ai-icon.svg +0 -0
- /package/{client/dist → dist/client}/icons/codex-white.svg +0 -0
- /package/{client/dist → dist/client}/icons/codex.svg +0 -0
- /package/{client/dist → dist/client}/icons/cursor-white.svg +0 -0
- /package/{client/dist → dist/client}/icons/cursor.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-128x128.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-144x144.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-152x152.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-192x192.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-384x384.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-512x512.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-72x72.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-96x96.svg +0 -0
- /package/{client/dist → dist/client}/icons/icon-template.svg +0 -0
- /package/{client/dist → dist/client}/logo.svg +0 -0
- /package/{client/dist → dist/client}/offline.html +0 -0
- /package/{client/dist → dist/client}/screenshots/cli-selection.png +0 -0
- /package/{client/dist → dist/client}/screenshots/desktop-main.png +0 -0
- /package/{client/dist → dist/client}/screenshots/mobile-chat.png +0 -0
- /package/{client/dist → dist/client}/screenshots/tools-modal.png +0 -0
- /package/{shared → dist}/gitagent/index.js +0 -0
- /package/{shared → dist}/gitagent/parser.js +0 -0
- /package/{shared → dist}/gitagent/prompt-builder.js +0 -0
package/{client/dist/assets/vendor-react-96lCPsRK.js → dist/client/assets/vendor-react-wFkb6mSf.js}
RENAMED
|
@@ -64,4 +64,4 @@ Error generating stack: `+u.message+`
|
|
|
64
64
|
* LICENSE.md file in the root directory of this source tree.
|
|
65
65
|
*
|
|
66
66
|
* @license MIT
|
|
67
|
-
*/const yp="6";try{window.__reactRouterVersion=yp}catch{}const gp="startTransition",ec=yd[gp];function Np(o){let{basename:f,children:s,future:v,window:g}=o,E=B.useRef();E.current==null&&(E.current=xd({window:g,v5Compat:!0}));let x=E.current,[R,_]=B.useState({action:x.action,location:x.location}),{v7_startTransition:U}=v||{},j=B.useCallback(N=>{U&&ec?ec(()=>_(N)):_(N)},[_,U]);return B.useLayoutEffect(()=>x.listen(j),[x,j]),B.useEffect(()=>hp(v),[v]),B.createElement(vp,{basename:f,children:s,location:R.location,navigationType:R.action,navigator:x,future:v})}var tc;(function(o){o.UseScrollRestoration="useScrollRestoration",o.UseSubmit="useSubmit",o.UseSubmitFetcher="useSubmitFetcher",o.UseFetcher="useFetcher",o.useViewTransitionState="useViewTransitionState"})(tc||(tc={}));var nc;(function(o){o.UseFetcher="useFetcher",o.UseFetchers="useFetchers",o.UseScrollRestoration="useScrollRestoration"})(nc||(nc={}));export{Np as B,vd as R,
|
|
67
|
+
*/const yp="6";try{window.__reactRouterVersion=yp}catch{}const gp="startTransition",ec=yd[gp];function Np(o){let{basename:f,children:s,future:v,window:g}=o,E=B.useRef();E.current==null&&(E.current=xd({window:g,v5Compat:!0}));let x=E.current,[R,_]=B.useState({action:x.action,location:x.location}),{v7_startTransition:U}=v||{},j=B.useCallback(N=>{U&&ec?ec(()=>_(N)):_(N)},[_,U]);return B.useLayoutEffect(()=>x.listen(j),[x,j]),B.useEffect(()=>hp(v),[v]),B.createElement(vp,{basename:f,children:s,location:R.location,navigationType:R.action,navigator:x,future:v})}var tc;(function(o){o.UseScrollRestoration="useScrollRestoration",o.UseSubmit="useSubmit",o.UseSubmitFetcher="useSubmitFetcher",o.UseFetcher="useFetcher",o.useViewTransitionState="useViewTransitionState"})(tc||(tc={}));var nc;(function(o){o.UseFetcher="useFetcher",o.UseFetchers="useFetchers",o.UseScrollRestoration="useScrollRestoration"})(nc||(nc={}));export{Np as B,vd as R,Sp as a,Pp as b,wp as c,mp as d,Ep as e,Cp as f,Vi as g,_p as h,Ai as i,kp as j,B as r,xp as u};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{R as re,c as Te,g as Xd}from"./vendor-react-
|
|
1
|
+
import{R as re,c as Te,g as Xd}from"./vendor-react-wFkb6mSf.js";import{r as Qd}from"./vendor-markdown-Cdm6NEGf.js";const Jd="modulepreload",ep=function(e){return"/app/"+e},mo={},IS=function(t,r,a){let n=Promise.resolve();if(r&&r.length>0){let s=function(c){return Promise.all(c.map(u=>Promise.resolve(u).then(p=>({status:"fulfilled",value:p}),p=>({status:"rejected",reason:p}))))};document.getElementsByTagName("link");const o=document.querySelector("meta[property=csp-nonce]"),l=(o==null?void 0:o.nonce)||(o==null?void 0:o.getAttribute("nonce"));n=s(r.map(c=>{if(c=ep(c),c in mo)return;mo[c]=!0;const u=c.endsWith(".css"),p=u?'[rel="stylesheet"]':"";if(document.querySelector(`link[href="${c}"]${p}`))return;const m=document.createElement("link");if(m.rel=u?"stylesheet":Jd,u||(m.as="script"),m.crossOrigin="",m.href=c,l&&m.setAttribute("nonce",l),document.head.appendChild(m),u)return new Promise((h,T)=>{m.addEventListener("load",h),m.addEventListener("error",()=>T(new Error(`Unable to preload CSS for ${c}`)))})}))}function i(s){const o=new Event("vite:preloadError",{cancelable:!0});if(o.payload=s,window.dispatchEvent(o),!o.defaultPrevented)throw s}return n.then(s=>{for(const o of s||[])o.status==="rejected"&&i(o.reason);return t().catch(i)})};function tp(e,t){if(e==null)return{};var r={};for(var a in e)if({}.hasOwnProperty.call(e,a)){if(t.indexOf(a)!==-1)continue;r[a]=e[a]}return r}function rp(e,t){if(e==null)return{};var r,a,n=tp(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(a=0;a<i.length;a++)r=i[a],t.indexOf(r)===-1&&{}.propertyIsEnumerable.call(e,r)&&(n[r]=e[r])}return n}function Xi(e,t){(t==null||t>e.length)&&(t=e.length);for(var r=0,a=Array(t);r<t;r++)a[r]=e[r];return a}function ap(e){if(Array.isArray(e))return Xi(e)}function np(e){if(typeof Symbol<"u"&&e[Symbol.iterator]!=null||e["@@iterator"]!=null)return Array.from(e)}function ip(e,t){if(e){if(typeof e=="string")return Xi(e,t);var r={}.toString.call(e).slice(8,-1);return r==="Object"&&e.constructor&&(r=e.constructor.name),r==="Map"||r==="Set"?Array.from(e):r==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(r)?Xi(e,t):void 0}}function op(){throw new TypeError(`Invalid attempt to spread non-iterable instance.
|
|
2
2
|
In order to be iterable, non-array objects must have a [Symbol.iterator]() method.`)}function Qi(e){return ap(e)||np(e)||ip(e)||op()}function he(e){"@babel/helpers - typeof";return he=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(t){return typeof t}:function(t){return t&&typeof Symbol=="function"&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},he(e)}function sp(e,t){if(he(e)!="object"||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var a=r.call(e,t);if(he(a)!="object")return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function lp(e){var t=sp(e,"string");return he(t)=="symbol"?t:t+""}function Md(e,t,r){return(t=lp(t))in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function Ji(){return Ji=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var a in r)({}).hasOwnProperty.call(r,a)&&(e[a]=r[a])}return e},Ji.apply(null,arguments)}function fo(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),r.push.apply(r,a)}return r}function be(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?fo(Object(r),!0).forEach(function(a){Md(e,a,r[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):fo(Object(r)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))})}return e}function up(e){var t=e.length;if(t===0||t===1)return e;if(t===2)return[e[0],e[1],"".concat(e[0],".").concat(e[1]),"".concat(e[1],".").concat(e[0])];if(t===3)return[e[0],e[1],e[2],"".concat(e[0],".").concat(e[1]),"".concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[0]),"".concat(e[1],".").concat(e[2]),"".concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[1]),"".concat(e[0],".").concat(e[1],".").concat(e[2]),"".concat(e[0],".").concat(e[2],".").concat(e[1]),"".concat(e[1],".").concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[0],".").concat(e[1]),"".concat(e[2],".").concat(e[1],".").concat(e[0])];if(t>=4)return[e[0],e[1],e[2],e[3],"".concat(e[0],".").concat(e[1]),"".concat(e[0],".").concat(e[2]),"".concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[0]),"".concat(e[1],".").concat(e[2]),"".concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[1]),"".concat(e[2],".").concat(e[3]),"".concat(e[3],".").concat(e[0]),"".concat(e[3],".").concat(e[1]),"".concat(e[3],".").concat(e[2]),"".concat(e[0],".").concat(e[1],".").concat(e[2]),"".concat(e[0],".").concat(e[1],".").concat(e[3]),"".concat(e[0],".").concat(e[2],".").concat(e[1]),"".concat(e[0],".").concat(e[2],".").concat(e[3]),"".concat(e[0],".").concat(e[3],".").concat(e[1]),"".concat(e[0],".").concat(e[3],".").concat(e[2]),"".concat(e[1],".").concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[2],".").concat(e[0]),"".concat(e[1],".").concat(e[2],".").concat(e[3]),"".concat(e[1],".").concat(e[3],".").concat(e[0]),"".concat(e[1],".").concat(e[3],".").concat(e[2]),"".concat(e[2],".").concat(e[0],".").concat(e[1]),"".concat(e[2],".").concat(e[0],".").concat(e[3]),"".concat(e[2],".").concat(e[1],".").concat(e[0]),"".concat(e[2],".").concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[3],".").concat(e[0]),"".concat(e[2],".").concat(e[3],".").concat(e[1]),"".concat(e[3],".").concat(e[0],".").concat(e[1]),"".concat(e[3],".").concat(e[0],".").concat(e[2]),"".concat(e[3],".").concat(e[1],".").concat(e[0]),"".concat(e[3],".").concat(e[1],".").concat(e[2]),"".concat(e[3],".").concat(e[2],".").concat(e[0]),"".concat(e[3],".").concat(e[2],".").concat(e[1]),"".concat(e[0],".").concat(e[1],".").concat(e[2],".").concat(e[3]),"".concat(e[0],".").concat(e[1],".").concat(e[3],".").concat(e[2]),"".concat(e[0],".").concat(e[2],".").concat(e[1],".").concat(e[3]),"".concat(e[0],".").concat(e[2],".").concat(e[3],".").concat(e[1]),"".concat(e[0],".").concat(e[3],".").concat(e[1],".").concat(e[2]),"".concat(e[0],".").concat(e[3],".").concat(e[2],".").concat(e[1]),"".concat(e[1],".").concat(e[0],".").concat(e[2],".").concat(e[3]),"".concat(e[1],".").concat(e[0],".").concat(e[3],".").concat(e[2]),"".concat(e[1],".").concat(e[2],".").concat(e[0],".").concat(e[3]),"".concat(e[1],".").concat(e[2],".").concat(e[3],".").concat(e[0]),"".concat(e[1],".").concat(e[3],".").concat(e[0],".").concat(e[2]),"".concat(e[1],".").concat(e[3],".").concat(e[2],".").concat(e[0]),"".concat(e[2],".").concat(e[0],".").concat(e[1],".").concat(e[3]),"".concat(e[2],".").concat(e[0],".").concat(e[3],".").concat(e[1]),"".concat(e[2],".").concat(e[1],".").concat(e[0],".").concat(e[3]),"".concat(e[2],".").concat(e[1],".").concat(e[3],".").concat(e[0]),"".concat(e[2],".").concat(e[3],".").concat(e[0],".").concat(e[1]),"".concat(e[2],".").concat(e[3],".").concat(e[1],".").concat(e[0]),"".concat(e[3],".").concat(e[0],".").concat(e[1],".").concat(e[2]),"".concat(e[3],".").concat(e[0],".").concat(e[2],".").concat(e[1]),"".concat(e[3],".").concat(e[1],".").concat(e[0],".").concat(e[2]),"".concat(e[3],".").concat(e[1],".").concat(e[2],".").concat(e[0]),"".concat(e[3],".").concat(e[2],".").concat(e[0],".").concat(e[1]),"".concat(e[3],".").concat(e[2],".").concat(e[1],".").concat(e[0])]}var De={};function cp(e){if(e.length===0||e.length===1)return e;var t=e.join(".");return De[t]||(De[t]=up(e)),De[t]}function dp(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=arguments.length>2?arguments[2]:void 0,a=e.filter(function(i){return i!=="token"}),n=cp(a);return n.reduce(function(i,s){return be(be({},i),r[s])},t)}function Eo(e){return e.join(" ")}function pp(e,t){var r=0;return function(a){return r+=1,a.map(function(n,i){return Fd({node:n,stylesheet:e,useInlineStyles:t,key:"code-segment-".concat(r,"-").concat(i)})})}}function Fd(e){var t=e.node,r=e.stylesheet,a=e.style,n=a===void 0?{}:a,i=e.useInlineStyles,s=e.key,o=t.properties,l=t.type,c=t.tagName,u=t.value;if(l==="text")return u;if(c){var p=pp(r,i),m;if(!i)m=be(be({},o),{},{className:Eo(o.className)});else{var h=Object.keys(r).reduce(function(A,b){return b.split(".").forEach(function(g){A.includes(g)||A.push(g)}),A},[]),T=o.className&&o.className.includes("token")?["token"]:[],v=o.className&&T.concat(o.className.filter(function(A){return!h.includes(A)}));m=be(be({},o),{},{className:Eo(v)||void 0,style:dp(o.className,Object.assign({},o.style,n),r)})}var R=p(t.children);return re.createElement(c,Ji({key:s},m),R)}}const gp=(function(e,t){var r=e.listLanguages();return r.indexOf(t)!==-1});var bp=["language","children","style","customStyle","codeTagProps","useInlineStyles","showLineNumbers","showInlineLineNumbers","startingLineNumber","lineNumberContainerStyle","lineNumberStyle","wrapLines","wrapLongLines","lineProps","renderer","PreTag","CodeTag","code","astGenerator"];function ho(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter(function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable})),r.push.apply(r,a)}return r}function ae(e){for(var t=1;t<arguments.length;t++){var r=arguments[t]!=null?arguments[t]:{};t%2?ho(Object(r),!0).forEach(function(a){Md(e,a,r[a])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ho(Object(r)).forEach(function(a){Object.defineProperty(e,a,Object.getOwnPropertyDescriptor(r,a))})}return e}var mp=/\n/g;function fp(e){return e.match(mp)}function Ep(e){var t=e.lines,r=e.startingLineNumber,a=e.style;return t.map(function(n,i){var s=i+r;return re.createElement("span",{key:"line-".concat(i),className:"react-syntax-highlighter-line-number",style:typeof a=="function"?a(s):a},"".concat(s,`
|
|
3
3
|
`))})}function hp(e){var t=e.codeString,r=e.codeStyle,a=e.containerStyle,n=a===void 0?{float:"left",paddingRight:"10px"}:a,i=e.numberStyle,s=i===void 0?{}:i,o=e.startingLineNumber;return re.createElement("code",{style:Object.assign({},r,n)},Ep({lines:t.replace(/\n$/,"").split(`
|
|
4
4
|
`),style:s,startingLineNumber:o}))}function Sp(e){return"".concat(e.toString().length,".25em")}function Ud(e,t){return{type:"element",tagName:"span",properties:{key:"line-number--".concat(e),className:["comment","linenumber","react-syntax-highlighter-line-number"],style:t},children:[{type:"text",value:e}]}}function Pd(e,t,r){var a={display:"inline-block",minWidth:Sp(r),paddingRight:"1em",textAlign:"right",userSelect:"none"},n=typeof e=="function"?e(t):e,i=ae(ae({},a),n);return i}function ve(e){var t=e.children,r=e.lineNumber,a=e.lineNumberStyle,n=e.largestLineNumber,i=e.showInlineLineNumbers,s=e.lineProps,o=s===void 0?{}:s,l=e.className,c=l===void 0?[]:l,u=e.showLineNumbers,p=e.wrapLongLines,m=e.wrapLines,h=m===void 0?!1:m,T=h?ae({},typeof o=="function"?o(r):o):{};if(T.className=T.className?[].concat(Qi(T.className.trim().split(/\s+/)),Qi(c)):c,r&&i){var v=Pd(a,r,n);t.unshift(Ud(r,v))}return p&u&&(T.style=ae({display:"flex"},T.style)),{type:"element",tagName:"span",properties:T,children:t}}function Bd(e){for(var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[],a=0;a<e.length;a++){var n=e[a];if(n.type==="text")r.push(ve({children:[n],className:Qi(new Set(t))}));else if(n.children){var i=t.concat(n.properties.className);Bd(n.children,i).forEach(function(s){return r.push(s)})}}return r}function yp(e,t,r,a,n,i,s,o,l){var c,u=Bd(e.value),p=[],m=-1,h=0;function T(E,d){var S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return ve({children:E,lineNumber:d,lineNumberStyle:o,largestLineNumber:s,showInlineLineNumbers:n,lineProps:r,className:S,showLineNumbers:a,wrapLongLines:l,wrapLines:t})}function v(E,d){if(a&&d&&n){var S=Pd(o,d,s);E.unshift(Ud(d,S))}return E}function R(E,d){var S=arguments.length>2&&arguments[2]!==void 0?arguments[2]:[];return t||S.length>0?T(E,d,S):v(E,d)}for(var A=function(){var d=u[h],S=d.children[0].value,_=fp(S);if(_){var y=S.split(`
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -35,53 +35,54 @@
|
|
|
35
35
|
align-items: center;
|
|
36
36
|
justify-content: center;
|
|
37
37
|
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
|
|
38
|
-
color: #e2e8f0;
|
|
39
|
-
flex-direction: column;
|
|
40
|
-
gap: 16px;
|
|
41
38
|
}
|
|
42
|
-
#splash .
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
39
|
+
#splash .app-loading-title {
|
|
40
|
+
font-size: clamp(4rem, 12vw, 10rem);
|
|
41
|
+
font-weight: 900;
|
|
42
|
+
letter-spacing: -0.03em;
|
|
43
|
+
line-height: 1.15;
|
|
44
|
+
padding-bottom: 0.1em;
|
|
45
|
+
color: rgba(255, 255, 255, 0.08);
|
|
46
|
+
background: linear-gradient(
|
|
47
|
+
90deg,
|
|
48
|
+
rgba(255,255,255,0.08) 0%,
|
|
49
|
+
#3b82f6 15%,
|
|
50
|
+
#8b5cf6 30%,
|
|
51
|
+
#ec4899 45%,
|
|
52
|
+
#f59e0b 60%,
|
|
53
|
+
#10b981 75%,
|
|
54
|
+
rgba(255,255,255,0.08) 100%
|
|
55
|
+
);
|
|
56
|
+
background-size: 250% 100%;
|
|
57
|
+
-webkit-background-clip: text;
|
|
58
|
+
background-clip: text;
|
|
59
|
+
-webkit-text-fill-color: transparent;
|
|
60
|
+
animation: loading-gradient-flow 2s ease-in-out infinite;
|
|
61
|
+
-webkit-user-select: none;
|
|
62
|
+
-moz-user-select: none;
|
|
63
|
+
user-select: none;
|
|
64
|
+
margin: 0;
|
|
49
65
|
}
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
width: 8px; height: 8px; border-radius: 50%;
|
|
55
|
-
background: #3b82f6;
|
|
56
|
-
animation: bounce 1s infinite;
|
|
57
|
-
}
|
|
58
|
-
#splash .dots span:nth-child(2) { animation-delay: 0.1s; }
|
|
59
|
-
#splash .dots span:nth-child(3) { animation-delay: 0.2s; }
|
|
60
|
-
@keyframes bounce {
|
|
61
|
-
0%, 80%, 100% { transform: translateY(0); }
|
|
62
|
-
40% { transform: translateY(-8px); }
|
|
66
|
+
@keyframes loading-gradient-flow {
|
|
67
|
+
0% { background-position: 100% 50%; }
|
|
68
|
+
50% { background-position: 0% 50%; }
|
|
69
|
+
100% { background-position: 100% 50%; }
|
|
63
70
|
}
|
|
64
71
|
</style>
|
|
65
|
-
<script type="module" crossorigin src="/app/assets/index-
|
|
66
|
-
<link rel="modulepreload" crossorigin href="/app/assets/vendor-react-
|
|
67
|
-
<link rel="modulepreload" crossorigin href="/app/assets/vendor-markdown-
|
|
68
|
-
<link rel="modulepreload" crossorigin href="/app/assets/vendor-syntax-
|
|
69
|
-
<link rel="modulepreload" crossorigin href="/app/assets/vendor-icons-
|
|
72
|
+
<script type="module" crossorigin src="/app/assets/index-rUkK9FDP.js"></script>
|
|
73
|
+
<link rel="modulepreload" crossorigin href="/app/assets/vendor-react-wFkb6mSf.js">
|
|
74
|
+
<link rel="modulepreload" crossorigin href="/app/assets/vendor-markdown-Cdm6NEGf.js">
|
|
75
|
+
<link rel="modulepreload" crossorigin href="/app/assets/vendor-syntax-C_UZR7tc.js">
|
|
76
|
+
<link rel="modulepreload" crossorigin href="/app/assets/vendor-icons-CfjIpdrD.js">
|
|
70
77
|
<link rel="modulepreload" crossorigin href="/app/assets/vendor-i18n-DCFGyhQR.js">
|
|
71
|
-
<link rel="stylesheet" crossorigin href="/app/assets/index-
|
|
78
|
+
<link rel="stylesheet" crossorigin href="/app/assets/index-CnNNzw9A.css">
|
|
72
79
|
</head>
|
|
73
80
|
<body>
|
|
74
81
|
<!-- Static splash screen: visible INSTANTLY (pure HTML, no JS needed) -->
|
|
75
82
|
<!-- React replaces this entire div when it mounts -->
|
|
76
83
|
<div id="root">
|
|
77
84
|
<div id="splash">
|
|
78
|
-
<
|
|
79
|
-
<img src="/app/favicon.svg" alt="UpfynAI" />
|
|
80
|
-
</div>
|
|
81
|
-
<h1>UpfynAI</h1>
|
|
82
|
-
<div class="dots">
|
|
83
|
-
<span></span><span></span><span></span>
|
|
84
|
-
</div>
|
|
85
|
+
<h1 class="app-loading-title">Upfyn AI</h1>
|
|
85
86
|
</div>
|
|
86
87
|
</div>
|
|
87
88
|
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -2,57 +2,57 @@
|
|
|
2
2
|
"name": "UpfynAI",
|
|
3
3
|
"short_name": "UpfynAI",
|
|
4
4
|
"description": "UpfynAI — Visual AI Coding Interface",
|
|
5
|
-
"start_url": "/",
|
|
5
|
+
"start_url": "/app/",
|
|
6
6
|
"display": "standalone",
|
|
7
|
-
"background_color": "#
|
|
8
|
-
"theme_color": "#
|
|
7
|
+
"background_color": "#0a0f1e",
|
|
8
|
+
"theme_color": "#0a0f1e",
|
|
9
9
|
"orientation": "portrait-primary",
|
|
10
|
-
"scope": "/",
|
|
10
|
+
"scope": "/app/",
|
|
11
11
|
"icons": [
|
|
12
12
|
{
|
|
13
|
-
"src": "
|
|
13
|
+
"src": "icons/icon-72x72.png",
|
|
14
14
|
"sizes": "72x72",
|
|
15
15
|
"type": "image/png",
|
|
16
16
|
"purpose": "maskable any"
|
|
17
17
|
},
|
|
18
18
|
{
|
|
19
|
-
"src": "
|
|
19
|
+
"src": "icons/icon-96x96.png",
|
|
20
20
|
"sizes": "96x96",
|
|
21
21
|
"type": "image/png",
|
|
22
22
|
"purpose": "maskable any"
|
|
23
23
|
},
|
|
24
24
|
{
|
|
25
|
-
"src": "
|
|
25
|
+
"src": "icons/icon-128x128.png",
|
|
26
26
|
"sizes": "128x128",
|
|
27
27
|
"type": "image/png",
|
|
28
28
|
"purpose": "maskable any"
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
|
-
"src": "
|
|
31
|
+
"src": "icons/icon-144x144.png",
|
|
32
32
|
"sizes": "144x144",
|
|
33
33
|
"type": "image/png",
|
|
34
34
|
"purpose": "maskable any"
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
|
-
"src": "
|
|
37
|
+
"src": "icons/icon-152x152.png",
|
|
38
38
|
"sizes": "152x152",
|
|
39
39
|
"type": "image/png",
|
|
40
40
|
"purpose": "maskable any"
|
|
41
41
|
},
|
|
42
42
|
{
|
|
43
|
-
"src": "
|
|
43
|
+
"src": "icons/icon-192x192.png",
|
|
44
44
|
"sizes": "192x192",
|
|
45
45
|
"type": "image/png",
|
|
46
46
|
"purpose": "maskable any"
|
|
47
47
|
},
|
|
48
48
|
{
|
|
49
|
-
"src": "
|
|
49
|
+
"src": "icons/icon-384x384.png",
|
|
50
50
|
"sizes": "384x384",
|
|
51
51
|
"type": "image/png",
|
|
52
52
|
"purpose": "maskable any"
|
|
53
53
|
},
|
|
54
54
|
{
|
|
55
|
-
"src": "
|
|
55
|
+
"src": "icons/icon-512x512.png",
|
|
56
56
|
"sizes": "512x512",
|
|
57
57
|
"type": "image/png",
|
|
58
58
|
"purpose": "maskable any"
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
<h2>Client Configuration</h2>
|
|
48
48
|
|
|
49
|
-
<p>Get your personalized MCP configuration from the <strong>Dashboard</strong> at <code>
|
|
49
|
+
<p>Get your personalized MCP configuration from the <strong>Dashboard</strong> at <code>code.upfyn.com/dashboard</code>. It includes the exact URL and credentials for your account — just copy and paste into your AI tool's MCP settings.</p>
|
|
50
50
|
|
|
51
51
|
<h3>Claude Desktop</h3>
|
|
52
52
|
<p>Add to <code>~/.claude/mcp_servers.json</code>:</p>
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// Service Worker for UpfynAI
|
|
2
|
-
//
|
|
2
|
+
// v5 — cache bust for logo/splash update
|
|
3
3
|
|
|
4
|
-
const CACHE_NAME = 'upfyn-
|
|
4
|
+
const CACHE_NAME = 'upfyn-v5';
|
|
5
5
|
const PRECACHE_ASSETS = [
|
|
6
6
|
'/offline.html',
|
|
7
7
|
'/favicon.svg',
|
package/package.json
CHANGED
|
@@ -1,136 +1,87 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "upfynai-code",
|
|
3
|
-
"version": "3.0
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "3.2.0",
|
|
4
|
+
"description": "AI coding CLI — connect your machine to code.upfyn.com and control it from any browser. Part of the Upfyn Desktop + Web ecosystem.",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "server/index.js",
|
|
7
6
|
"bin": {
|
|
8
|
-
"
|
|
9
|
-
"
|
|
7
|
+
"uc": "./bin/cli.js",
|
|
8
|
+
"upfynai-code": "./bin/cli.js"
|
|
10
9
|
},
|
|
11
10
|
"files": [
|
|
12
|
-
"
|
|
13
|
-
"
|
|
14
|
-
"
|
|
11
|
+
"bin/",
|
|
12
|
+
"src/",
|
|
13
|
+
"dist/",
|
|
15
14
|
"scripts/",
|
|
16
|
-
"
|
|
17
|
-
"
|
|
15
|
+
"README.md",
|
|
16
|
+
"LICENSE"
|
|
18
17
|
],
|
|
19
18
|
"scripts": {
|
|
20
|
-
"start": "node
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"typecheck": "npx tsc --noEmit -p client/tsconfig.json",
|
|
24
|
-
"postinstall": "node scripts/fix-node-pty.js || true && node scripts/install-commands.js"
|
|
19
|
+
"start": "node bin/cli.js",
|
|
20
|
+
"postinstall": "node scripts/postinstall.js",
|
|
21
|
+
"prepublishOnly": "node scripts/prepublish.js"
|
|
25
22
|
},
|
|
26
23
|
"keywords": [
|
|
24
|
+
"upfyn",
|
|
25
|
+
"upfynai-code",
|
|
27
26
|
"ai",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"cursor",
|
|
31
|
-
"codex",
|
|
32
|
-
"coding-assistant",
|
|
33
|
-
"canvas",
|
|
34
|
-
"whiteboard",
|
|
35
|
-
"visual-coding",
|
|
27
|
+
"coding",
|
|
28
|
+
"cli",
|
|
36
29
|
"terminal",
|
|
30
|
+
"remote-development",
|
|
31
|
+
"code-editor",
|
|
32
|
+
"ai-assistant",
|
|
33
|
+
"ai-coding",
|
|
34
|
+
"developer-tools",
|
|
35
|
+
"devtools",
|
|
36
|
+
"browser-ide",
|
|
37
|
+
"remote-access",
|
|
38
|
+
"websocket",
|
|
37
39
|
"git",
|
|
40
|
+
"file-explorer",
|
|
41
|
+
"desktop-app",
|
|
42
|
+
"ecosystem",
|
|
38
43
|
"mcp",
|
|
39
|
-
"
|
|
40
|
-
"
|
|
41
|
-
"
|
|
42
|
-
"
|
|
43
|
-
"
|
|
44
|
+
"model-context-protocol",
|
|
45
|
+
"desktop",
|
|
46
|
+
"tauri",
|
|
47
|
+
"ai-modes",
|
|
48
|
+
"plan-code-analyse",
|
|
49
|
+
"remote-control"
|
|
44
50
|
],
|
|
45
|
-
"author":
|
|
51
|
+
"author": {
|
|
52
|
+
"name": "Thinqmesh Technologies",
|
|
53
|
+
"url": "https://code.upfyn.com"
|
|
54
|
+
},
|
|
46
55
|
"license": "GPL-3.0",
|
|
47
|
-
"homepage": "https://
|
|
56
|
+
"homepage": "https://code.upfyn.com",
|
|
48
57
|
"repository": {
|
|
49
58
|
"type": "git",
|
|
50
|
-
"url": "git+https://github.com/AnitChaudhry/UpfynAI-Code.git"
|
|
59
|
+
"url": "git+https://github.com/AnitChaudhry/UpfynAI-Code.git",
|
|
60
|
+
"directory": "packages/cli"
|
|
51
61
|
},
|
|
52
62
|
"bugs": {
|
|
53
63
|
"url": "https://github.com/AnitChaudhry/UpfynAI-Code/issues"
|
|
54
64
|
},
|
|
55
65
|
"dependencies": {
|
|
56
66
|
"@anthropic-ai/claude-agent-sdk": "^0.1.71",
|
|
57
|
-
"
|
|
58
|
-
"
|
|
59
|
-
"
|
|
60
|
-
"
|
|
61
|
-
"bcryptjs": "^3.0.3",
|
|
62
|
-
"chokidar": "^4.0.3",
|
|
63
|
-
"cookie-parser": "^1.4.7",
|
|
64
|
-
"cors": "^2.8.5",
|
|
65
|
-
"cross-spawn": "^7.0.3",
|
|
66
|
-
"edge-tts-universal": "^1.3.3",
|
|
67
|
-
"express": "^4.18.2",
|
|
68
|
-
"form-data": "^4.0.5",
|
|
69
|
-
"gray-matter": "^4.0.3",
|
|
67
|
+
"chalk": "^5.3.0",
|
|
68
|
+
"commander": "^12.1.0",
|
|
69
|
+
"express": "^4.21.0",
|
|
70
|
+
"http-proxy-middleware": "^3.0.0",
|
|
70
71
|
"js-yaml": "^4.1.0",
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"ws": "^8.14.2",
|
|
75
|
-
"zod": "^3.25.76"
|
|
72
|
+
"open": "^10.1.0",
|
|
73
|
+
"prompts": "^2.4.2",
|
|
74
|
+
"ws": "^8.18.0"
|
|
76
75
|
},
|
|
77
76
|
"optionalDependencies": {
|
|
78
|
-
"libsql": "^0.5.22",
|
|
79
77
|
"node-pty": "^1.1.0-beta34"
|
|
80
78
|
},
|
|
81
|
-
"
|
|
82
|
-
"
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
"
|
|
86
|
-
"
|
|
87
|
-
"
|
|
88
|
-
|
|
89
|
-
"@codemirror/theme-one-dark": "^6.1.2",
|
|
90
|
-
"@replit/codemirror-minimap": "^0.5.2",
|
|
91
|
-
"@tailwindcss/typography": "^0.5.16",
|
|
92
|
-
"@types/node": "^22.19.7",
|
|
93
|
-
"@types/react": "^18.2.43",
|
|
94
|
-
"@types/react-dom": "^18.2.17",
|
|
95
|
-
"@uiw/react-codemirror": "^4.23.13",
|
|
96
|
-
"@vapi-ai/web": "^2.5.2",
|
|
97
|
-
"@vitejs/plugin-react": "^4.5.2",
|
|
98
|
-
"@xterm/addon-clipboard": "^0.1.0",
|
|
99
|
-
"@xterm/addon-fit": "^0.10.0",
|
|
100
|
-
"@xterm/addon-web-links": "^0.11.0",
|
|
101
|
-
"@xterm/addon-webgl": "^0.18.0",
|
|
102
|
-
"@xterm/xterm": "^5.5.0",
|
|
103
|
-
"@xyflow/react": "^12.10.1",
|
|
104
|
-
"autoprefixer": "^10.4.16",
|
|
105
|
-
"class-variance-authority": "^0.7.1",
|
|
106
|
-
"clsx": "^2.1.1",
|
|
107
|
-
"dagre": "^0.8.5",
|
|
108
|
-
"elkjs": "^0.11.0",
|
|
109
|
-
"fuse.js": "^7.0.0",
|
|
110
|
-
"i18next": "^25.7.4",
|
|
111
|
-
"i18next-browser-languagedetector": "^8.2.0",
|
|
112
|
-
"katex": "^0.16.25",
|
|
113
|
-
"lightningcss": "^1.31.1",
|
|
114
|
-
"lucide-react": "^0.515.0",
|
|
115
|
-
"mermaid": "^11.12.3",
|
|
116
|
-
"pdfjs-dist": "^5.4.624",
|
|
117
|
-
"postcss": "^8.4.32",
|
|
118
|
-
"react": "^18.2.0",
|
|
119
|
-
"react-diff-viewer-continued": "^4.1.2",
|
|
120
|
-
"react-dom": "^18.2.0",
|
|
121
|
-
"react-dropzone": "^14.2.3",
|
|
122
|
-
"react-i18next": "^16.5.3",
|
|
123
|
-
"react-markdown": "^10.1.0",
|
|
124
|
-
"react-router-dom": "^6.8.1",
|
|
125
|
-
"react-syntax-highlighter": "^15.6.1",
|
|
126
|
-
"rehype-katex": "^7.0.1",
|
|
127
|
-
"rehype-raw": "^7.0.0",
|
|
128
|
-
"remark-gfm": "^4.0.0",
|
|
129
|
-
"remark-math": "^6.0.0",
|
|
130
|
-
"tailwind-merge": "^3.3.1",
|
|
131
|
-
"tailwindcss": "^3.4.0",
|
|
132
|
-
"typescript": "^5.9.3",
|
|
133
|
-
"vite": "~6.3.5",
|
|
134
|
-
"zustand": "^5.0.11"
|
|
135
|
-
}
|
|
79
|
+
"engines": {
|
|
80
|
+
"node": ">=18.0.0"
|
|
81
|
+
},
|
|
82
|
+
"os": [
|
|
83
|
+
"darwin",
|
|
84
|
+
"linux",
|
|
85
|
+
"win32"
|
|
86
|
+
]
|
|
136
87
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { playInstallAnimation } from '../src/animation.js';
|
|
3
|
+
|
|
4
|
+
try {
|
|
5
|
+
await playInstallAnimation();
|
|
6
|
+
} catch {
|
|
7
|
+
// Silently fail — animation is cosmetic, don't break installs
|
|
8
|
+
console.log('\n ✓ upfynai-code installed. Run `uc --help` to get started.\n');
|
|
9
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Prepublish script — copies shared agents into dist/ for npm distribution.
|
|
4
|
+
*
|
|
5
|
+
* In the monorepo, connect.js imports from ../../shared/agents/.
|
|
6
|
+
* For npm, we copy those files into dist/agents/ and connect.js
|
|
7
|
+
* resolves them at runtime.
|
|
8
|
+
*/
|
|
9
|
+
import { cpSync, mkdirSync, rmSync, existsSync } from 'fs';
|
|
10
|
+
import { join, dirname } from 'path';
|
|
11
|
+
import { fileURLToPath } from 'url';
|
|
12
|
+
|
|
13
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
14
|
+
const cliRoot = join(__dirname, '..');
|
|
15
|
+
const distAgents = join(cliRoot, 'dist', 'agents');
|
|
16
|
+
const sharedAgents = join(cliRoot, '..', 'shared', 'agents');
|
|
17
|
+
|
|
18
|
+
// Clean
|
|
19
|
+
if (existsSync(distAgents)) rmSync(distAgents, { recursive: true });
|
|
20
|
+
mkdirSync(distAgents, { recursive: true });
|
|
21
|
+
|
|
22
|
+
// Copy all agent files
|
|
23
|
+
const files = [
|
|
24
|
+
'index.js', 'utils.js',
|
|
25
|
+
'claude.js', 'codex.js', 'cursor.js',
|
|
26
|
+
'shell.js', 'files.js', 'git.js', 'exec.js', 'detect.js',
|
|
27
|
+
'gitagent.js',
|
|
28
|
+
];
|
|
29
|
+
|
|
30
|
+
let copied = 0;
|
|
31
|
+
for (const file of files) {
|
|
32
|
+
const src = join(sharedAgents, file);
|
|
33
|
+
const dest = join(distAgents, file);
|
|
34
|
+
if (existsSync(src)) {
|
|
35
|
+
cpSync(src, dest);
|
|
36
|
+
copied++;
|
|
37
|
+
} else {
|
|
38
|
+
console.warn(` [WARN] Missing: ${file}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// Copy gitagent module (parser + prompt-builder) — needed by gitagent agent
|
|
43
|
+
const sharedGitagent = join(cliRoot, '..', 'shared', 'gitagent');
|
|
44
|
+
const distGitagent = join(cliRoot, 'dist', 'gitagent');
|
|
45
|
+
if (existsSync(distGitagent)) rmSync(distGitagent, { recursive: true });
|
|
46
|
+
mkdirSync(distGitagent, { recursive: true });
|
|
47
|
+
|
|
48
|
+
const gitagentFiles = ['index.js', 'parser.js', 'prompt-builder.js'];
|
|
49
|
+
for (const file of gitagentFiles) {
|
|
50
|
+
const src = join(sharedGitagent, file);
|
|
51
|
+
const dest = join(distGitagent, file);
|
|
52
|
+
if (existsSync(src)) {
|
|
53
|
+
cpSync(src, dest);
|
|
54
|
+
copied++;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
console.log(` [prepublish] Copied ${copied} agent files to dist/`);
|
|
59
|
+
|
|
60
|
+
// ─── Copy built client dist for local-server static serving ──────────────
|
|
61
|
+
const clientSrc = join(cliRoot, '..', '..', 'backend', 'client', 'dist');
|
|
62
|
+
const clientDest = join(cliRoot, 'dist', 'client');
|
|
63
|
+
|
|
64
|
+
if (existsSync(clientSrc)) {
|
|
65
|
+
if (existsSync(clientDest)) rmSync(clientDest, { recursive: true });
|
|
66
|
+
cpSync(clientSrc, clientDest, { recursive: true });
|
|
67
|
+
console.log(` [prepublish] Copied client dist to dist/client/`);
|
|
68
|
+
} else {
|
|
69
|
+
console.warn(` [WARN] Client dist not found at ${clientSrc} — run 'npm run build' in backend/client first`);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// ─── Note: local-server bundling ─────────────────────────────────────────
|
|
73
|
+
// For npm global installs, local-server needs to be bundled with esbuild
|
|
74
|
+
// into dist/local-server.js (with node-pty as external).
|
|
75
|
+
// Run: npx esbuild packages/local-server/index.js --bundle --platform=node --outfile=packages/cli/dist/local-server.js --external:node-pty
|
|
76
|
+
// This is handled by the CI/CD pipeline before npm publish.
|
|
77
|
+
console.log(` [prepublish] Done.`);
|