@pixelbyte-software/pixcode 1.35.2 → 1.35.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 (173) hide show
  1. package/LICENSE +718 -718
  2. package/README.de.md +248 -248
  3. package/README.ja.md +240 -240
  4. package/README.ko.md +240 -240
  5. package/README.md +303 -303
  6. package/README.ru.md +248 -248
  7. package/README.tr.md +250 -250
  8. package/README.zh-CN.md +240 -240
  9. package/dist/api-docs.html +548 -548
  10. package/dist/assets/{index-D1-AIL_5.js → index-D8z78r_D.js} +57 -57
  11. package/dist/assets/{index-B8w57E1r.css → index-DmchzORZ.css} +1 -1
  12. package/dist/clear-cache.html +85 -85
  13. package/dist/convert-icons.md +52 -52
  14. package/dist/favicon.svg +8 -8
  15. package/dist/generate-icons.js +48 -48
  16. package/dist/icons/codex-white.svg +3 -3
  17. package/dist/icons/codex.svg +3 -3
  18. package/dist/icons/cursor-white.svg +11 -11
  19. package/dist/icons/icon-128x128.svg +9 -9
  20. package/dist/icons/icon-144x144.svg +9 -9
  21. package/dist/icons/icon-152x152.svg +9 -9
  22. package/dist/icons/icon-192x192.svg +9 -9
  23. package/dist/icons/icon-384x384.svg +9 -9
  24. package/dist/icons/icon-512x512.svg +9 -9
  25. package/dist/icons/icon-72x72.svg +9 -9
  26. package/dist/icons/icon-96x96.svg +9 -9
  27. package/dist/icons/icon-template.svg +9 -9
  28. package/dist/icons/qwen-logo.svg +14 -14
  29. package/dist/index.html +59 -59
  30. package/dist/logo.svg +12 -12
  31. package/dist/manifest.json +60 -60
  32. package/dist/openapi.yaml +1693 -1693
  33. package/dist/sw.js +124 -124
  34. package/dist-server/server/cli.js +96 -96
  35. package/dist-server/server/daemon/manager.js +33 -33
  36. package/dist-server/server/daemon-manager.js +64 -64
  37. package/dist-server/server/routes/commands.js +25 -25
  38. package/dist-server/server/routes/git.js +17 -17
  39. package/dist-server/server/routes/taskmaster.js +419 -419
  40. package/package.json +180 -180
  41. package/scripts/fix-node-pty.js +67 -67
  42. package/scripts/smoke/a2a-roundtrip.mjs +167 -167
  43. package/scripts/smoke/orchestration-api.mjs +172 -172
  44. package/scripts/smoke/orchestration-live-run.mjs +176 -176
  45. package/server/claude-sdk.js +898 -898
  46. package/server/cli.js +935 -935
  47. package/server/constants/config.js +4 -4
  48. package/server/cursor-cli.js +342 -342
  49. package/server/daemon/manager.js +564 -564
  50. package/server/daemon-manager.js +959 -959
  51. package/server/database/db.js +794 -794
  52. package/server/database/json-store.js +197 -197
  53. package/server/gemini-cli.js +535 -535
  54. package/server/gemini-response-handler.js +79 -79
  55. package/server/index.js +3135 -3135
  56. package/server/load-env.js +34 -34
  57. package/server/middleware/auth.js +173 -173
  58. package/server/modules/orchestration/a2a/adapter-registry.ts +108 -108
  59. package/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.ts +55 -55
  60. package/server/modules/orchestration/a2a/adapters/claude-code.adapter.ts +284 -284
  61. package/server/modules/orchestration/a2a/adapters/codex.adapter.ts +244 -244
  62. package/server/modules/orchestration/a2a/adapters/cursor.adapter.ts +249 -249
  63. package/server/modules/orchestration/a2a/adapters/gemini.adapter.ts +248 -248
  64. package/server/modules/orchestration/a2a/adapters/opencode.adapter.ts +248 -248
  65. package/server/modules/orchestration/a2a/adapters/qwen.adapter.ts +248 -248
  66. package/server/modules/orchestration/a2a/routes.ts +577 -577
  67. package/server/modules/orchestration/a2a/task-store.ts +178 -178
  68. package/server/modules/orchestration/a2a/types.ts +125 -125
  69. package/server/modules/orchestration/a2a/validator.ts +113 -113
  70. package/server/modules/orchestration/index.ts +66 -66
  71. package/server/modules/orchestration/preview/port-watcher.ts +112 -112
  72. package/server/modules/orchestration/preview/preview-proxy.ts +60 -60
  73. package/server/modules/orchestration/preview/types.ts +19 -19
  74. package/server/modules/orchestration/tasks/orchestration-task-store.ts +45 -45
  75. package/server/modules/orchestration/tasks/orchestration-task.routes.ts +73 -73
  76. package/server/modules/orchestration/tasks/orchestration-task.service.ts +145 -145
  77. package/server/modules/orchestration/tasks/orchestration-task.types.ts +29 -29
  78. package/server/modules/orchestration/workflows/built-in-workflows.ts +127 -127
  79. package/server/modules/orchestration/workflows/workflow-runner.ts +1206 -1206
  80. package/server/modules/orchestration/workflows/workflow-store.ts +97 -97
  81. package/server/modules/orchestration/workflows/workflow.routes.ts +169 -169
  82. package/server/modules/orchestration/workflows/workflow.types.ts +70 -70
  83. package/server/modules/orchestration/workflows/workspace-target.ts +120 -120
  84. package/server/modules/orchestration/workspace/docker-workspace.ts +135 -135
  85. package/server/modules/orchestration/workspace/path-safety.ts +55 -55
  86. package/server/modules/orchestration/workspace/types.ts +52 -52
  87. package/server/modules/orchestration/workspace/workspace-manager.ts +97 -97
  88. package/server/modules/orchestration/workspace/worktree-workspace.ts +125 -125
  89. package/server/modules/providers/index.ts +2 -2
  90. package/server/modules/providers/list/claude/claude-auth.provider.ts +145 -145
  91. package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -135
  92. package/server/modules/providers/list/claude/claude-sessions.provider.ts +306 -306
  93. package/server/modules/providers/list/claude/claude.provider.ts +15 -15
  94. package/server/modules/providers/list/codex/codex-auth.provider.ts +115 -115
  95. package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -135
  96. package/server/modules/providers/list/codex/codex-sessions.provider.ts +319 -319
  97. package/server/modules/providers/list/codex/codex.provider.ts +15 -15
  98. package/server/modules/providers/list/cursor/cursor-auth.provider.ts +143 -143
  99. package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -108
  100. package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +421 -421
  101. package/server/modules/providers/list/cursor/cursor.provider.ts +15 -15
  102. package/server/modules/providers/list/gemini/gemini-auth.provider.ts +163 -163
  103. package/server/modules/providers/list/gemini/gemini-mcp.provider.ts +110 -110
  104. package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +227 -227
  105. package/server/modules/providers/list/gemini/gemini.provider.ts +15 -15
  106. package/server/modules/providers/list/opencode/opencode-auth.provider.ts +130 -130
  107. package/server/modules/providers/list/opencode/opencode-mcp.provider.ts +126 -126
  108. package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +232 -232
  109. package/server/modules/providers/list/opencode/opencode.provider.ts +29 -29
  110. package/server/modules/providers/list/qwen/qwen-auth.provider.ts +145 -145
  111. package/server/modules/providers/list/qwen/qwen-mcp.provider.ts +114 -114
  112. package/server/modules/providers/list/qwen/qwen-sessions.provider.ts +265 -265
  113. package/server/modules/providers/list/qwen/qwen.provider.ts +21 -21
  114. package/server/modules/providers/provider.registry.ts +40 -40
  115. package/server/modules/providers/provider.routes.ts +819 -819
  116. package/server/modules/providers/services/mcp.service.ts +86 -86
  117. package/server/modules/providers/services/provider-auth.service.ts +26 -26
  118. package/server/modules/providers/services/sessions.service.ts +45 -45
  119. package/server/modules/providers/shared/base/abstract.provider.ts +20 -20
  120. package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -151
  121. package/server/modules/providers/shared/provider-configs.ts +142 -142
  122. package/server/modules/providers/tests/mcp.test.ts +293 -293
  123. package/server/openai-codex.js +462 -462
  124. package/server/opencode-cli.js +459 -459
  125. package/server/opencode-response-handler.js +107 -107
  126. package/server/projects.js +3105 -3105
  127. package/server/qwen-code-cli.js +395 -395
  128. package/server/qwen-response-handler.js +73 -73
  129. package/server/routes/agent.js +1365 -1365
  130. package/server/routes/auth.js +138 -138
  131. package/server/routes/codex.js +19 -19
  132. package/server/routes/commands.js +554 -554
  133. package/server/routes/cursor.js +52 -52
  134. package/server/routes/gemini.js +24 -24
  135. package/server/routes/git.js +1488 -1488
  136. package/server/routes/mcp-utils.js +31 -31
  137. package/server/routes/messages.js +61 -61
  138. package/server/routes/network.js +120 -120
  139. package/server/routes/plugins.js +318 -318
  140. package/server/routes/projects.js +915 -915
  141. package/server/routes/qwen.js +27 -27
  142. package/server/routes/settings.js +286 -286
  143. package/server/routes/taskmaster.js +1496 -1496
  144. package/server/routes/telegram.js +125 -125
  145. package/server/routes/user.js +123 -123
  146. package/server/services/external-access.js +171 -171
  147. package/server/services/install-jobs.js +571 -571
  148. package/server/services/notification-orchestrator.js +242 -242
  149. package/server/services/provider-credentials.js +189 -189
  150. package/server/services/provider-models.js +381 -381
  151. package/server/services/telegram/bot.js +279 -279
  152. package/server/services/telegram/telegram-http-client.js +130 -130
  153. package/server/services/telegram/translations.js +170 -170
  154. package/server/services/vapid-keys.js +36 -36
  155. package/server/sessionManager.js +225 -225
  156. package/server/shared/interfaces.ts +54 -54
  157. package/server/shared/types.ts +172 -172
  158. package/server/shared/utils.ts +193 -193
  159. package/server/tsconfig.json +36 -36
  160. package/server/utils/colors.js +21 -21
  161. package/server/utils/commandParser.js +303 -303
  162. package/server/utils/frontmatter.js +18 -18
  163. package/server/utils/gitConfig.js +34 -34
  164. package/server/utils/mcp-detector.js +147 -147
  165. package/server/utils/plugin-loader.js +457 -457
  166. package/server/utils/plugin-process-manager.js +184 -184
  167. package/server/utils/port-access.js +209 -209
  168. package/server/utils/runtime-paths.js +37 -37
  169. package/server/utils/taskmaster-websocket.js +128 -128
  170. package/server/utils/url-detection.js +71 -71
  171. package/server/vite-daemon.js +78 -78
  172. package/shared/modelConstants.js +162 -162
  173. package/shared/networkHosts.js +22 -22
@@ -1,162 +1,162 @@
1
- /**
2
- * Centralized Model Definitions
3
- * Single source of truth for all supported AI models
4
- */
5
-
6
- /**
7
- * Claude (Anthropic) Models
8
- *
9
- * Note: Claude uses two different formats:
10
- * - SDK format ('sonnet', 'opus') - used by the UI and claude-sdk.js
11
- * - API format ('claude-sonnet-4.5') - used by slash commands for display
12
- */
13
- export const CLAUDE_MODELS = {
14
- // Models in SDK format (what the actual SDK accepts)
15
- OPTIONS: [
16
- { value: "sonnet", label: "Sonnet" },
17
- { value: "opus", label: "Opus" },
18
- { value: "haiku", label: "Haiku" },
19
- // Explicit model-id option for Opus 4.6 (separate from the "opus" alias which
20
- // tracks whatever Anthropic currently aliases to the latest Opus).
21
- { value: "claude-opus-4-6", label: "Opus 4.6" },
22
- { value: "opusplan", label: "Opus Plan" },
23
- { value: "sonnet[1m]", label: "Sonnet [1M]" },
24
- { value: "opus[1m]", label: "Opus [1M]" },
25
- ],
26
-
27
- DEFAULT: "opus",
28
- };
29
-
30
- /**
31
- * Cursor Models
32
- */
33
- export const CURSOR_MODELS = {
34
- OPTIONS: [
35
- { value: "opus-4.6-thinking", label: "Claude 4.6 Opus (Thinking)" },
36
- { value: "gpt-5.3-codex", label: "GPT-5.3" },
37
- { value: "gpt-5.2-high", label: "GPT-5.2 High" },
38
- { value: "gemini-3-pro", label: "Gemini 3 Pro" },
39
- { value: "opus-4.5-thinking", label: "Claude 4.5 Opus (Thinking)" },
40
- { value: "gpt-5.2", label: "GPT-5.2" },
41
- { value: "gpt-5.1", label: "GPT-5.1" },
42
- { value: "gpt-5.1-high", label: "GPT-5.1 High" },
43
- { value: "composer-1", label: "Composer 1" },
44
- { value: "auto", label: "Auto" },
45
- { value: "sonnet-4.5", label: "Claude 4.5 Sonnet" },
46
- { value: "sonnet-4.5-thinking", label: "Claude 4.5 Sonnet (Thinking)" },
47
- { value: "opus-4.5", label: "Claude 4.5 Opus" },
48
- { value: "gpt-5.1-codex", label: "GPT-5.1 Codex" },
49
- { value: "gpt-5.1-codex-high", label: "GPT-5.1 Codex High" },
50
- { value: "gpt-5.1-codex-max", label: "GPT-5.1 Codex Max" },
51
- { value: "gpt-5.1-codex-max-high", label: "GPT-5.1 Codex Max High" },
52
- { value: "opus-4.1", label: "Claude 4.1 Opus" },
53
- { value: "grok", label: "Grok" },
54
- ],
55
-
56
- DEFAULT: "gpt-5-3-codex",
57
- };
58
-
59
- /**
60
- * Codex (OpenAI) Models
61
- */
62
- export const CODEX_MODELS = {
63
- OPTIONS: [
64
- { value: "gpt-5.4", label: "GPT-5.4" },
65
- { value: "gpt-5.4-mini", label: "GPT-5.4 mini" },
66
- { value: "gpt-5.3-codex", label: "GPT-5.3 Codex" },
67
- { value: "gpt-5.2-codex", label: "GPT-5.2 Codex" },
68
- { value: "gpt-5.2", label: "GPT-5.2" },
69
- { value: "gpt-5.1-codex-max", label: "GPT-5.1 Codex Max" },
70
- { value: "o3", label: "O3" },
71
- { value: "o4-mini", label: "O4-mini" },
72
- ],
73
-
74
- DEFAULT: "gpt-5.4",
75
- };
76
-
77
- /**
78
- * Qwen Code Models
79
- * Covers free tier (Qwen OAuth), Alibaba Coding Plan paid tier, and OpenAI-compat BYOK.
80
- * Defaults to the coder-focused variant users actually want for Pixcode.
81
- */
82
- export const QWEN_MODELS = {
83
- OPTIONS: [
84
- { value: "qwen3-coder-plus", label: "Qwen3 Coder Plus" },
85
- { value: "qwen3-coder-next", label: "Qwen3 Coder Next" },
86
- { value: "qwen3-coder-480B-A35B-instruct", label: "Qwen3 Coder 480B (Instruct)" },
87
- { value: "qwen3-coder-30B-A3B", label: "Qwen3 Coder 30B" },
88
- { value: "qwen3.5-plus", label: "Qwen3.5 Plus" },
89
- { value: "qwen3-max", label: "Qwen3 Max" },
90
- { value: "glm-4.7", label: "GLM-4.7 (Alibaba Coding Plan)" },
91
- { value: "kimi-k2.5", label: "Kimi K2.5 (Alibaba Coding Plan)" },
92
- ],
93
-
94
- DEFAULT: "qwen3-coder-plus",
95
- };
96
-
97
- /**
98
- * OpenCode Models — STATIC FALLBACK ONLY.
99
- *
100
- * OpenCode is multi-provider and the live model catalog rotates often
101
- * (Zen free models come and go; new Anthropic/OpenAI/Google models ship
102
- * every few weeks). The runtime fetches the live catalog from
103
- * `https://models.dev/api.json` via server/services/provider-models.js
104
- * and merges it on top of this list — these entries only show when the
105
- * fetch fails (offline install, firewalled host).
106
- *
107
- * Curated current free Zen tier + canonical paid picks. Update when the
108
- * fallback feels stale, but the live fetch is the source of truth.
109
- */
110
- export const OPENCODE_MODELS = {
111
- OPTIONS: [
112
- // OpenCode Zen — free tier (no charge, may rate-limit). The "limited
113
- // time" Zen freebies rotate, so this is the safest small set.
114
- { value: "opencode/big-pickle", label: "OpenCode Zen · Big Pickle (Free)", free: true },
115
- { value: "opencode/minimax-m2.5-free", label: "OpenCode Zen · MiniMax M2.5 (Free)", free: true },
116
- { value: "opencode/hy3-preview-free", label: "OpenCode Zen · Hy3 Preview (Free)", free: true },
117
- { value: "opencode/ling-2.6-flash-free", label: "OpenCode Zen · Ling 2.6 Flash (Free)", free: true },
118
- { value: "opencode/nemotron-3-super-free", label: "OpenCode Zen · Nemotron 3 Super (Free)", free: true },
119
- { value: "opencode/gpt-5-nano", label: "OpenCode Zen · GPT-5 Nano (Free)", free: true },
120
-
121
- // Anthropic — current flagship + cheap.
122
- { value: "anthropic/claude-opus-4-7", label: "Claude Opus 4.7 (Anthropic)" },
123
- { value: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Anthropic)" },
124
- { value: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5 (Anthropic)" },
125
-
126
- // OpenAI — current GPT-5 family.
127
- { value: "openai/gpt-5.4", label: "GPT-5.4 (OpenAI)" },
128
- { value: "openai/gpt-5.1-codex", label: "GPT-5.1 Codex (OpenAI)" },
129
-
130
- // Google — current Gemini 3 family.
131
- { value: "google/gemini-3.1-pro-preview", label: "Gemini 3.1 Pro (Google)" },
132
- { value: "google/gemini-3-flash-preview", label: "Gemini 3 Flash (Google)" },
133
-
134
- // xAI — fast & cheap coding model.
135
- { value: "xai/grok-code-fast-1", label: "Grok Code Fast 1 (xAI)" },
136
- ],
137
-
138
- // Free Zen freebie that historically works for unauthed installs.
139
- DEFAULT: "opencode/big-pickle",
140
- };
141
-
142
- /**
143
- * Gemini Models
144
- */
145
- export const GEMINI_MODELS = {
146
- OPTIONS: [
147
- { value: "gemini-3.1-pro-preview", label: "Gemini 3.1 Pro Preview" },
148
- { value: "gemini-3-pro-preview", label: "Gemini 3 Pro Preview" },
149
- { value: "gemini-3-flash-preview", label: "Gemini 3 Flash Preview" },
150
- { value: "gemini-2.5-flash", label: "Gemini 2.5 Flash" },
151
- { value: "gemini-2.5-pro", label: "Gemini 2.5 Pro" },
152
- { value: "gemini-2.0-flash-lite", label: "Gemini 2.0 Flash Lite" },
153
- { value: "gemini-2.0-flash", label: "Gemini 2.0 Flash" },
154
- { value: "gemini-2.0-pro-exp", label: "Gemini 2.0 Pro Experimental" },
155
- {
156
- value: "gemini-2.0-flash-thinking-exp",
157
- label: "Gemini 2.0 Flash Thinking",
158
- },
159
- ],
160
-
161
- DEFAULT: "gemini-3.1-pro-preview",
162
- };
1
+ /**
2
+ * Centralized Model Definitions
3
+ * Single source of truth for all supported AI models
4
+ */
5
+
6
+ /**
7
+ * Claude (Anthropic) Models
8
+ *
9
+ * Note: Claude uses two different formats:
10
+ * - SDK format ('sonnet', 'opus') - used by the UI and claude-sdk.js
11
+ * - API format ('claude-sonnet-4.5') - used by slash commands for display
12
+ */
13
+ export const CLAUDE_MODELS = {
14
+ // Models in SDK format (what the actual SDK accepts)
15
+ OPTIONS: [
16
+ { value: "sonnet", label: "Sonnet" },
17
+ { value: "opus", label: "Opus" },
18
+ { value: "haiku", label: "Haiku" },
19
+ // Explicit model-id option for Opus 4.6 (separate from the "opus" alias which
20
+ // tracks whatever Anthropic currently aliases to the latest Opus).
21
+ { value: "claude-opus-4-6", label: "Opus 4.6" },
22
+ { value: "opusplan", label: "Opus Plan" },
23
+ { value: "sonnet[1m]", label: "Sonnet [1M]" },
24
+ { value: "opus[1m]", label: "Opus [1M]" },
25
+ ],
26
+
27
+ DEFAULT: "opus",
28
+ };
29
+
30
+ /**
31
+ * Cursor Models
32
+ */
33
+ export const CURSOR_MODELS = {
34
+ OPTIONS: [
35
+ { value: "opus-4.6-thinking", label: "Claude 4.6 Opus (Thinking)" },
36
+ { value: "gpt-5.3-codex", label: "GPT-5.3" },
37
+ { value: "gpt-5.2-high", label: "GPT-5.2 High" },
38
+ { value: "gemini-3-pro", label: "Gemini 3 Pro" },
39
+ { value: "opus-4.5-thinking", label: "Claude 4.5 Opus (Thinking)" },
40
+ { value: "gpt-5.2", label: "GPT-5.2" },
41
+ { value: "gpt-5.1", label: "GPT-5.1" },
42
+ { value: "gpt-5.1-high", label: "GPT-5.1 High" },
43
+ { value: "composer-1", label: "Composer 1" },
44
+ { value: "auto", label: "Auto" },
45
+ { value: "sonnet-4.5", label: "Claude 4.5 Sonnet" },
46
+ { value: "sonnet-4.5-thinking", label: "Claude 4.5 Sonnet (Thinking)" },
47
+ { value: "opus-4.5", label: "Claude 4.5 Opus" },
48
+ { value: "gpt-5.1-codex", label: "GPT-5.1 Codex" },
49
+ { value: "gpt-5.1-codex-high", label: "GPT-5.1 Codex High" },
50
+ { value: "gpt-5.1-codex-max", label: "GPT-5.1 Codex Max" },
51
+ { value: "gpt-5.1-codex-max-high", label: "GPT-5.1 Codex Max High" },
52
+ { value: "opus-4.1", label: "Claude 4.1 Opus" },
53
+ { value: "grok", label: "Grok" },
54
+ ],
55
+
56
+ DEFAULT: "gpt-5-3-codex",
57
+ };
58
+
59
+ /**
60
+ * Codex (OpenAI) Models
61
+ */
62
+ export const CODEX_MODELS = {
63
+ OPTIONS: [
64
+ { value: "gpt-5.4", label: "GPT-5.4" },
65
+ { value: "gpt-5.4-mini", label: "GPT-5.4 mini" },
66
+ { value: "gpt-5.3-codex", label: "GPT-5.3 Codex" },
67
+ { value: "gpt-5.2-codex", label: "GPT-5.2 Codex" },
68
+ { value: "gpt-5.2", label: "GPT-5.2" },
69
+ { value: "gpt-5.1-codex-max", label: "GPT-5.1 Codex Max" },
70
+ { value: "o3", label: "O3" },
71
+ { value: "o4-mini", label: "O4-mini" },
72
+ ],
73
+
74
+ DEFAULT: "gpt-5.4",
75
+ };
76
+
77
+ /**
78
+ * Qwen Code Models
79
+ * Covers free tier (Qwen OAuth), Alibaba Coding Plan paid tier, and OpenAI-compat BYOK.
80
+ * Defaults to the coder-focused variant users actually want for Pixcode.
81
+ */
82
+ export const QWEN_MODELS = {
83
+ OPTIONS: [
84
+ { value: "qwen3-coder-plus", label: "Qwen3 Coder Plus" },
85
+ { value: "qwen3-coder-next", label: "Qwen3 Coder Next" },
86
+ { value: "qwen3-coder-480B-A35B-instruct", label: "Qwen3 Coder 480B (Instruct)" },
87
+ { value: "qwen3-coder-30B-A3B", label: "Qwen3 Coder 30B" },
88
+ { value: "qwen3.5-plus", label: "Qwen3.5 Plus" },
89
+ { value: "qwen3-max", label: "Qwen3 Max" },
90
+ { value: "glm-4.7", label: "GLM-4.7 (Alibaba Coding Plan)" },
91
+ { value: "kimi-k2.5", label: "Kimi K2.5 (Alibaba Coding Plan)" },
92
+ ],
93
+
94
+ DEFAULT: "qwen3-coder-plus",
95
+ };
96
+
97
+ /**
98
+ * OpenCode Models — STATIC FALLBACK ONLY.
99
+ *
100
+ * OpenCode is multi-provider and the live model catalog rotates often
101
+ * (Zen free models come and go; new Anthropic/OpenAI/Google models ship
102
+ * every few weeks). The runtime fetches the live catalog from
103
+ * `https://models.dev/api.json` via server/services/provider-models.js
104
+ * and merges it on top of this list — these entries only show when the
105
+ * fetch fails (offline install, firewalled host).
106
+ *
107
+ * Curated current free Zen tier + canonical paid picks. Update when the
108
+ * fallback feels stale, but the live fetch is the source of truth.
109
+ */
110
+ export const OPENCODE_MODELS = {
111
+ OPTIONS: [
112
+ // OpenCode Zen — free tier (no charge, may rate-limit). The "limited
113
+ // time" Zen freebies rotate, so this is the safest small set.
114
+ { value: "opencode/big-pickle", label: "OpenCode Zen · Big Pickle (Free)", free: true },
115
+ { value: "opencode/minimax-m2.5-free", label: "OpenCode Zen · MiniMax M2.5 (Free)", free: true },
116
+ { value: "opencode/hy3-preview-free", label: "OpenCode Zen · Hy3 Preview (Free)", free: true },
117
+ { value: "opencode/ling-2.6-flash-free", label: "OpenCode Zen · Ling 2.6 Flash (Free)", free: true },
118
+ { value: "opencode/nemotron-3-super-free", label: "OpenCode Zen · Nemotron 3 Super (Free)", free: true },
119
+ { value: "opencode/gpt-5-nano", label: "OpenCode Zen · GPT-5 Nano (Free)", free: true },
120
+
121
+ // Anthropic — current flagship + cheap.
122
+ { value: "anthropic/claude-opus-4-7", label: "Claude Opus 4.7 (Anthropic)" },
123
+ { value: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Anthropic)" },
124
+ { value: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5 (Anthropic)" },
125
+
126
+ // OpenAI — current GPT-5 family.
127
+ { value: "openai/gpt-5.4", label: "GPT-5.4 (OpenAI)" },
128
+ { value: "openai/gpt-5.1-codex", label: "GPT-5.1 Codex (OpenAI)" },
129
+
130
+ // Google — current Gemini 3 family.
131
+ { value: "google/gemini-3.1-pro-preview", label: "Gemini 3.1 Pro (Google)" },
132
+ { value: "google/gemini-3-flash-preview", label: "Gemini 3 Flash (Google)" },
133
+
134
+ // xAI — fast & cheap coding model.
135
+ { value: "xai/grok-code-fast-1", label: "Grok Code Fast 1 (xAI)" },
136
+ ],
137
+
138
+ // Free Zen freebie that historically works for unauthed installs.
139
+ DEFAULT: "opencode/big-pickle",
140
+ };
141
+
142
+ /**
143
+ * Gemini Models
144
+ */
145
+ export const GEMINI_MODELS = {
146
+ OPTIONS: [
147
+ { value: "gemini-3.1-pro-preview", label: "Gemini 3.1 Pro Preview" },
148
+ { value: "gemini-3-pro-preview", label: "Gemini 3 Pro Preview" },
149
+ { value: "gemini-3-flash-preview", label: "Gemini 3 Flash Preview" },
150
+ { value: "gemini-2.5-flash", label: "Gemini 2.5 Flash" },
151
+ { value: "gemini-2.5-pro", label: "Gemini 2.5 Pro" },
152
+ { value: "gemini-2.0-flash-lite", label: "Gemini 2.0 Flash Lite" },
153
+ { value: "gemini-2.0-flash", label: "Gemini 2.0 Flash" },
154
+ { value: "gemini-2.0-pro-exp", label: "Gemini 2.0 Pro Experimental" },
155
+ {
156
+ value: "gemini-2.0-flash-thinking-exp",
157
+ label: "Gemini 2.0 Flash Thinking",
158
+ },
159
+ ],
160
+
161
+ DEFAULT: "gemini-3.1-pro-preview",
162
+ };
@@ -1,22 +1,22 @@
1
- export function isWildcardHost(host) {
2
- return host === '0.0.0.0' || host === '::';
3
- }
4
-
5
- export function isLoopbackHost(host) {
6
- return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '[::1]';
7
- }
8
-
9
- export function normalizeLoopbackHost(host) {
10
- if (!host) {
11
- return host;
12
- }
13
- return isLoopbackHost(host) ? 'localhost' : host;
14
- }
15
-
16
- // Use localhost for connectable loopback and wildcard addresses in browser-facing URLs.
17
- export function getConnectableHost(host) {
18
- if (!host) {
19
- return 'localhost';
20
- }
21
- return isWildcardHost(host) || isLoopbackHost(host) ? 'localhost' : host;
22
- }
1
+ export function isWildcardHost(host) {
2
+ return host === '0.0.0.0' || host === '::';
3
+ }
4
+
5
+ export function isLoopbackHost(host) {
6
+ return host === 'localhost' || host === '127.0.0.1' || host === '::1' || host === '[::1]';
7
+ }
8
+
9
+ export function normalizeLoopbackHost(host) {
10
+ if (!host) {
11
+ return host;
12
+ }
13
+ return isLoopbackHost(host) ? 'localhost' : host;
14
+ }
15
+
16
+ // Use localhost for connectable loopback and wildcard addresses in browser-facing URLs.
17
+ export function getConnectableHost(host) {
18
+ if (!host) {
19
+ return 'localhost';
20
+ }
21
+ return isWildcardHost(host) || isLoopbackHost(host) ? 'localhost' : host;
22
+ }