upfynai-code 3.0.2 → 3.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/package.json +136 -136
  2. package/server/database/db.js +6 -4
package/package.json CHANGED
@@ -1,136 +1,136 @@
1
- {
2
- "name": "upfynai-code",
3
- "version": "3.0.2",
4
- "description": "Visual AI coding interface for Claude Code, Cursor & Codex. Canvas whiteboard, multi-agent chat, terminal, git, voice assistant. Self-host locally or connect to cli.upfyn.com for remote access.",
5
- "type": "module",
6
- "main": "server/index.js",
7
- "bin": {
8
- "upfynai-code": "server/cli.js",
9
- "uc": "server/cli.js"
10
- },
11
- "files": [
12
- "server/",
13
- "shared/",
14
- "client/dist/",
15
- "scripts/",
16
- "commands/",
17
- "README.md"
18
- ],
19
- "scripts": {
20
- "start": "node server/index.js",
21
- "build": "node scripts/build-client.js",
22
- "test": "node --test --test-force-exit server/tests/sessions.test.js server/tests/relay-flow.test.js",
23
- "typecheck": "npx tsc --noEmit -p client/tsconfig.json",
24
- "postinstall": "node scripts/fix-node-pty.js || true && node scripts/install-commands.js"
25
- },
26
- "keywords": [
27
- "ai",
28
- "ai-coding",
29
- "claude-code",
30
- "cursor",
31
- "codex",
32
- "coding-assistant",
33
- "canvas",
34
- "whiteboard",
35
- "visual-coding",
36
- "terminal",
37
- "git",
38
- "mcp",
39
- "relay",
40
- "byok",
41
- "voice-assistant",
42
- "upfynai",
43
- "thinqmesh"
44
- ],
45
- "author": "Thinqmesh Technologies <hello@thinqmesh.com>",
46
- "license": "GPL-3.0",
47
- "homepage": "https://thinqmesh.com",
48
- "repository": {
49
- "type": "git",
50
- "url": "git+https://github.com/AnitChaudhry/UpfynAI-Code.git"
51
- },
52
- "bugs": {
53
- "url": "https://github.com/AnitChaudhry/UpfynAI-Code/issues"
54
- },
55
- "dependencies": {
56
- "@anthropic-ai/claude-agent-sdk": "^0.1.71",
57
- "@anthropic-ai/sdk": "^0.78.0",
58
- "@iarna/toml": "^2.2.5",
59
- "@modelcontextprotocol/sdk": "^1.26.0",
60
- "@openai/codex-sdk": "^0.101.0",
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",
70
- "js-yaml": "^4.1.0",
71
- "jsonwebtoken": "^9.0.2",
72
- "mime-types": "^3.0.1",
73
- "multer": "^2.0.2",
74
- "ws": "^8.14.2",
75
- "zod": "^3.25.76"
76
- },
77
- "optionalDependencies": {
78
- "libsql": "^0.5.22",
79
- "node-pty": "^1.1.0-beta34"
80
- },
81
- "devDependencies": {
82
- "@codemirror/lang-css": "^6.3.1",
83
- "@codemirror/lang-html": "^6.4.9",
84
- "@codemirror/lang-javascript": "^6.2.4",
85
- "@codemirror/lang-json": "^6.0.1",
86
- "@codemirror/lang-markdown": "^6.3.3",
87
- "@codemirror/lang-python": "^6.2.1",
88
- "@codemirror/merge": "^6.11.1",
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
- }
136
- }
1
+ {
2
+ "name": "upfynai-code",
3
+ "version": "3.0.3",
4
+ "description": "Visual AI coding interface for Claude Code, Cursor & Codex. Canvas whiteboard, multi-agent chat, terminal, git, voice assistant. Self-host locally or connect to cli.upfyn.com for remote access.",
5
+ "type": "module",
6
+ "main": "server/index.js",
7
+ "bin": {
8
+ "upfynai-code": "server/cli.js",
9
+ "uc": "server/cli.js"
10
+ },
11
+ "files": [
12
+ "server/",
13
+ "shared/",
14
+ "client/dist/",
15
+ "scripts/",
16
+ "commands/",
17
+ "README.md"
18
+ ],
19
+ "scripts": {
20
+ "start": "node server/index.js",
21
+ "build": "node scripts/build-client.js",
22
+ "test": "node --test --test-force-exit server/tests/sessions.test.js server/tests/relay-flow.test.js",
23
+ "typecheck": "npx tsc --noEmit -p client/tsconfig.json",
24
+ "postinstall": "node scripts/fix-node-pty.js || true && node scripts/install-commands.js"
25
+ },
26
+ "keywords": [
27
+ "ai",
28
+ "ai-coding",
29
+ "claude-code",
30
+ "cursor",
31
+ "codex",
32
+ "coding-assistant",
33
+ "canvas",
34
+ "whiteboard",
35
+ "visual-coding",
36
+ "terminal",
37
+ "git",
38
+ "mcp",
39
+ "relay",
40
+ "byok",
41
+ "voice-assistant",
42
+ "upfynai",
43
+ "thinqmesh"
44
+ ],
45
+ "author": "Thinqmesh Technologies <hello@thinqmesh.com>",
46
+ "license": "GPL-3.0",
47
+ "homepage": "https://thinqmesh.com",
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "git+https://github.com/AnitChaudhry/UpfynAI-Code.git"
51
+ },
52
+ "bugs": {
53
+ "url": "https://github.com/AnitChaudhry/UpfynAI-Code/issues"
54
+ },
55
+ "dependencies": {
56
+ "@anthropic-ai/claude-agent-sdk": "^0.1.71",
57
+ "@anthropic-ai/sdk": "^0.78.0",
58
+ "@iarna/toml": "^2.2.5",
59
+ "@modelcontextprotocol/sdk": "^1.26.0",
60
+ "@openai/codex-sdk": "^0.101.0",
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",
70
+ "js-yaml": "^4.1.0",
71
+ "jsonwebtoken": "^9.0.2",
72
+ "mime-types": "^3.0.1",
73
+ "multer": "^2.0.2",
74
+ "ws": "^8.14.2",
75
+ "zod": "^3.25.76"
76
+ },
77
+ "optionalDependencies": {
78
+ "libsql": "^0.5.22",
79
+ "node-pty": "^1.1.0-beta34"
80
+ },
81
+ "devDependencies": {
82
+ "@codemirror/lang-css": "^6.3.1",
83
+ "@codemirror/lang-html": "^6.4.9",
84
+ "@codemirror/lang-javascript": "^6.2.4",
85
+ "@codemirror/lang-json": "^6.0.1",
86
+ "@codemirror/lang-markdown": "^6.3.3",
87
+ "@codemirror/lang-python": "^6.2.1",
88
+ "@codemirror/merge": "^6.11.1",
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
+ }
136
+ }
@@ -13,10 +13,12 @@ try {
13
13
  try {
14
14
  const DatabaseMod = await import('libsql');
15
15
  const Database = DatabaseMod.default || DatabaseMod;
16
- createClient = function createLocalClient({ url }) {
17
- const dbPath = url.replace(/^file:/, '');
18
- const sqliteDb = new Database(dbPath);
19
- sqliteDb.pragma('journal_mode = WAL');
16
+ createClient = function createLocalClient({ url, authToken }) {
17
+ const isRemote = url.startsWith('libsql://') || url.startsWith('https://');
18
+ const dbPath = isRemote ? url : url.replace(/^file:/, '');
19
+ const sqliteDb = authToken ? new Database(dbPath, { authToken }) : new Database(dbPath);
20
+ // WAL mode only for local files, not remote Turso
21
+ if (!isRemote) sqliteDb.pragma('journal_mode = WAL');
20
22
  return {
21
23
  execute: async (query) => {
22
24
  const sql = typeof query === 'string' ? query : query.sql;