@pixelbyte-software/pixcode 1.51.1 → 1.51.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.
- package/CODE_OF_CONDUCT.md +41 -41
- package/CONTRIBUTING.md +155 -155
- package/LICENSE +718 -718
- package/README.de.md +169 -169
- package/README.ja.md +167 -167
- package/README.ko.md +167 -167
- package/README.md +419 -419
- package/README.ru.md +169 -169
- package/README.tr.md +298 -298
- package/README.zh-CN.md +167 -167
- package/SECURITY.md +46 -46
- package/dist/api-automation.html +110 -110
- package/dist/api-docs.html +548 -548
- package/dist/assets/{index-DARIZgoD.js → index-17CwxHSZ.js} +185 -185
- package/dist/assets/index-B9N-gfOQ.css +32 -0
- package/dist/clear-cache.html +85 -85
- package/dist/convert-icons.md +52 -52
- package/dist/docs.html +308 -308
- package/dist/favicon.svg +8 -8
- package/dist/features.html +133 -133
- package/dist/generate-icons.js +48 -48
- package/dist/humans.txt +15 -15
- package/dist/icons/codex-white.svg +3 -3
- package/dist/icons/codex.svg +3 -3
- package/dist/icons/cursor-white.svg +11 -11
- package/dist/icons/icon-128x128.svg +9 -9
- package/dist/icons/icon-144x144.svg +9 -9
- package/dist/icons/icon-152x152.svg +9 -9
- package/dist/icons/icon-192x192.svg +9 -9
- package/dist/icons/icon-384x384.svg +9 -9
- package/dist/icons/icon-512x512.svg +9 -9
- package/dist/icons/icon-72x72.svg +9 -9
- package/dist/icons/icon-96x96.svg +9 -9
- package/dist/icons/icon-template.svg +9 -9
- package/dist/icons/qwen-logo.svg +14 -14
- package/dist/index.html +59 -59
- package/dist/landing.html +268 -268
- package/dist/llms-full.txt +119 -119
- package/dist/llms.txt +53 -53
- package/dist/logo.svg +12 -12
- package/dist/manifest.json +60 -60
- package/dist/openapi.yaml +1696 -1696
- package/dist/orchestration.html +125 -125
- package/dist/robots.txt +4 -4
- package/dist/site.css +692 -692
- package/dist/sitemap.xml +51 -51
- package/dist/sw.js +132 -132
- package/dist-server/server/cli.js +96 -96
- package/dist-server/server/daemon/manager.js +33 -33
- package/dist-server/server/daemon-manager.js +64 -64
- package/dist-server/server/index.js +125 -4
- package/dist-server/server/index.js.map +1 -1
- package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js +84 -0
- package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.js.map +1 -0
- package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js +43 -0
- package/dist-server/server/modules/orchestration/a2a/adapters/json-event.adapter.test.js.map +1 -0
- package/dist-server/server/modules/orchestration/hermes/hermes.routes.js +55 -1
- package/dist-server/server/modules/orchestration/hermes/hermes.routes.js.map +1 -1
- package/dist-server/server/modules/orchestration/index.js +1 -0
- package/dist-server/server/modules/orchestration/index.js.map +1 -1
- package/dist-server/server/routes/commands.js +25 -25
- package/dist-server/server/routes/git.js +17 -17
- package/dist-server/server/routes/live-view.js +46 -46
- package/dist-server/server/services/hermes-gateway.js +310 -0
- package/dist-server/server/services/hermes-gateway.js.map +1 -1
- package/dist-server/server/services/public-api-manifest.js +59 -51
- package/dist-server/server/services/public-api-manifest.js.map +1 -1
- package/package.json +222 -222
- package/scripts/fix-node-pty.js +67 -67
- package/scripts/github/create-v1.38-issues.mjs +351 -351
- package/scripts/github/create-vscode-workbench-issues.mjs +121 -121
- package/scripts/hermes/configure-pixcode-mcp.mjs +165 -163
- package/scripts/hermes/pixcode-mcp-server.mjs +1009 -958
- package/scripts/smoke/changes-panel-layout.mjs +48 -48
- package/scripts/smoke/chat-composer-fixed-layout.mjs +55 -55
- package/scripts/smoke/chat-message-timeline-order.mjs +41 -41
- package/scripts/smoke/chat-realtime-hydration.mjs +44 -44
- package/scripts/smoke/chat-session-provider-pools.mjs +35 -35
- package/scripts/smoke/chat-session-state.mjs +19 -19
- package/scripts/smoke/code-editor-theme.mjs +55 -55
- package/scripts/smoke/code-editor-vscode-engine.mjs +91 -91
- package/scripts/smoke/command-center-agent-writes.mjs +79 -79
- package/scripts/smoke/command-center-non-git.mjs +46 -46
- package/scripts/smoke/context-packet.mjs +43 -43
- package/scripts/smoke/control-room-ux-redesign.mjs +91 -91
- package/scripts/smoke/daemon-entrypoint.mjs +20 -20
- package/scripts/smoke/default-landing-routing.mjs +33 -33
- package/scripts/smoke/desktop-native-notifications.mjs +30 -30
- package/scripts/smoke/desktop-tray-icon.mjs +33 -33
- package/scripts/smoke/discord-release-workflow.mjs +24 -24
- package/scripts/smoke/git-install-update.mjs +255 -255
- package/scripts/smoke/handoff-artifact-protocol.mjs +50 -50
- package/scripts/smoke/hermes-api-install.mjs +56 -56
- package/scripts/smoke/hermes-gateway-persistence.mjs +104 -104
- package/scripts/smoke/hermes-mcp-pixcode-roundtrip.mjs +426 -367
- package/scripts/smoke/hermes-rest-chat-api.mjs +162 -162
- package/scripts/smoke/hermes-rest-chat-live.mjs +45 -45
- package/scripts/smoke/hermes-rest-codex-launch.mjs +209 -209
- package/scripts/smoke/hermes-rest-gateway.mjs +79 -70
- package/scripts/smoke/hermes-rest-live.mjs +42 -42
- package/scripts/smoke/hermes-roundtrip.mjs +167 -167
- package/scripts/smoke/hermes-settings-commands.mjs +349 -346
- package/scripts/smoke/hermes-smoke-launcher-guard.mjs +34 -34
- package/scripts/smoke/live-view-diagnostics.mjs +53 -53
- package/scripts/smoke/live-view-environment.mjs +92 -92
- package/scripts/smoke/live-view-integration.mjs +450 -450
- package/scripts/smoke/mac-desktop-runtime.mjs +37 -37
- package/scripts/smoke/mobile-tunnel-guidance.mjs +29 -29
- package/scripts/smoke/model-registry.mjs +36 -36
- package/scripts/smoke/multi-project-ui.mjs +45 -45
- package/scripts/smoke/multi-worker-slots.mjs +42 -42
- package/scripts/smoke/notification-center.mjs +87 -87
- package/scripts/smoke/notification-inapp-preference.mjs +23 -23
- package/scripts/smoke/notification-taxonomy.mjs +58 -58
- package/scripts/smoke/orchestration-api.mjs +172 -172
- package/scripts/smoke/orchestration-execution-dashboard.mjs +33 -33
- package/scripts/smoke/orchestration-live-run.mjs +176 -176
- package/scripts/smoke/orchestration-mobile-scroll.mjs +29 -29
- package/scripts/smoke/orchestration-model-sync.mjs +30 -30
- package/scripts/smoke/orchestration-permission-fallback.mjs +34 -34
- package/scripts/smoke/orchestration-runtime-guards.mjs +48 -48
- package/scripts/smoke/orchestration-user-facing-output.mjs +25 -25
- package/scripts/smoke/permission-policy.mjs +50 -50
- package/scripts/smoke/pixcode-workbench-1-48.mjs +167 -164
- package/scripts/smoke/provider-models-opencode-live.mjs +66 -66
- package/scripts/smoke/provider-rest-api.mjs +124 -124
- package/scripts/smoke/provider-selection-status.mjs +52 -52
- package/scripts/smoke/run-state-refresh.mjs +52 -52
- package/scripts/smoke/runtime-manager.mjs +99 -99
- package/scripts/smoke/shell-manual-disconnect.mjs +30 -30
- package/scripts/smoke/side-panel-editor-layout.mjs +34 -34
- package/scripts/smoke/static-root-routing.mjs +21 -21
- package/scripts/smoke/strict-handoff-compact.mjs +60 -60
- package/scripts/smoke/taskmaster-config.mjs +24 -24
- package/scripts/smoke/taskmaster-execution-telegram.mjs +3 -3
- package/scripts/smoke/taskmaster-onboarding.mjs +3 -3
- package/scripts/smoke/taskmaster-run-graph.mjs +3 -3
- package/scripts/smoke/telegram-control.mjs +242 -242
- package/scripts/smoke/tunnel-persistence.mjs +56 -56
- package/scripts/smoke/update-issue-progress.mjs +69 -69
- package/scripts/smoke/update-ux.mjs +55 -55
- package/scripts/smoke/v138-completion.mjs +132 -132
- package/scripts/smoke/v138-desktop-release-hardening.mjs +69 -69
- package/scripts/smoke/v138-diagnostics.mjs +63 -63
- package/scripts/smoke/v138-issue-planner.mjs +33 -33
- package/scripts/smoke/v143-remote-control.mjs +76 -76
- package/scripts/smoke/v144-production-loop.mjs +47 -47
- package/scripts/smoke/v145-platformization.mjs +46 -46
- package/scripts/smoke/v146-control-room-ui.mjs +150 -150
- package/scripts/smoke/version-modal-autoshow.mjs +29 -29
- package/scripts/smoke/vscode-workbench-layout.mjs +63 -63
- package/scripts/smoke/vscode-workbench-polish.mjs +461 -436
- package/scripts/smoke/workflow-fallback-replay.mjs +56 -56
- package/scripts/smoke/workflow-templates.mjs +43 -43
- package/scripts/smoke/workflow-trace-timeline.mjs +46 -46
- package/scripts/update-git-install.mjs +293 -293
- package/server/claude-sdk.js +920 -920
- package/server/cli.js +1039 -1039
- package/server/constants/config.js +4 -4
- package/server/cursor-cli.js +344 -344
- package/server/daemon/manager.js +563 -563
- package/server/daemon-manager.js +964 -964
- package/server/database/db.js +921 -921
- package/server/database/json-store.js +197 -197
- package/server/gemini-cli.js +550 -550
- package/server/gemini-response-handler.js +79 -79
- package/server/index.js +131 -3
- package/server/load-env.js +35 -35
- package/server/middleware/auth.js +175 -175
- package/server/modules/orchestration/a2a/adapter-registry.ts +108 -108
- package/server/modules/orchestration/a2a/adapters/abstract-a2a.adapter.ts +63 -63
- package/server/modules/orchestration/a2a/adapters/claude-code.adapter.ts +286 -286
- package/server/modules/orchestration/a2a/adapters/codex.adapter.ts +244 -244
- package/server/modules/orchestration/a2a/adapters/cursor.adapter.ts +249 -249
- package/server/modules/orchestration/a2a/adapters/gemini.adapter.ts +248 -248
- package/server/modules/orchestration/a2a/adapters/json-event.adapter.test.ts +60 -0
- package/server/modules/orchestration/a2a/adapters/json-event.adapter.ts +101 -0
- package/server/modules/orchestration/a2a/adapters/opencode.adapter.ts +248 -248
- package/server/modules/orchestration/a2a/adapters/qwen.adapter.ts +248 -248
- package/server/modules/orchestration/a2a/agent-card.ts +55 -55
- package/server/modules/orchestration/a2a/routes.ts +590 -590
- package/server/modules/orchestration/a2a/task-store.ts +178 -178
- package/server/modules/orchestration/a2a/types.ts +126 -126
- package/server/modules/orchestration/a2a/validator.ts +113 -113
- package/server/modules/orchestration/hermes/hermes.routes.ts +642 -583
- package/server/modules/orchestration/index.ts +101 -100
- package/server/modules/orchestration/preview/port-watcher.ts +112 -112
- package/server/modules/orchestration/preview/preview-proxy.ts +60 -60
- package/server/modules/orchestration/preview/types.ts +19 -19
- package/server/modules/orchestration/security/permission-policy.ts +401 -401
- package/server/modules/orchestration/tasks/orchestration-task-store.ts +41 -41
- package/server/modules/orchestration/tasks/orchestration-task.routes.ts +64 -64
- package/server/modules/orchestration/tasks/orchestration-task.service.ts +209 -209
- package/server/modules/orchestration/tasks/orchestration-task.types.ts +40 -40
- package/server/modules/orchestration/tasks/task-run-graph.ts +155 -155
- package/server/modules/orchestration/workflows/approval-queue.ts +106 -106
- package/server/modules/orchestration/workflows/built-in-workflows.ts +127 -127
- package/server/modules/orchestration/workflows/context-packet.ts +186 -186
- package/server/modules/orchestration/workflows/handoff-artifact.ts +175 -175
- package/server/modules/orchestration/workflows/workflow-fallback-policy.ts +161 -161
- package/server/modules/orchestration/workflows/workflow-replay.ts +254 -254
- package/server/modules/orchestration/workflows/workflow-runner.ts +2070 -2070
- package/server/modules/orchestration/workflows/workflow-store.ts +97 -97
- package/server/modules/orchestration/workflows/workflow-templates.ts +272 -272
- package/server/modules/orchestration/workflows/workflow-trace.ts +424 -424
- package/server/modules/orchestration/workflows/workflow.routes.ts +586 -586
- package/server/modules/orchestration/workflows/workflow.types.ts +111 -111
- package/server/modules/orchestration/workflows/workspace-target.ts +122 -122
- package/server/modules/orchestration/workspace/docker-workspace.ts +136 -136
- package/server/modules/orchestration/workspace/path-safety.ts +55 -55
- package/server/modules/orchestration/workspace/types.ts +52 -52
- package/server/modules/orchestration/workspace/workspace-manager.ts +102 -102
- package/server/modules/orchestration/workspace/worktree-workspace.ts +126 -126
- package/server/modules/providers/index.ts +2 -2
- package/server/modules/providers/list/claude/claude-auth.provider.ts +146 -146
- package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -135
- package/server/modules/providers/list/claude/claude-sessions.provider.ts +306 -306
- package/server/modules/providers/list/claude/claude.provider.ts +15 -15
- package/server/modules/providers/list/codex/codex-auth.provider.ts +117 -117
- package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -135
- package/server/modules/providers/list/codex/codex-sessions.provider.ts +319 -319
- package/server/modules/providers/list/codex/codex.provider.ts +15 -15
- package/server/modules/providers/list/cursor/cursor-auth.provider.ts +147 -147
- package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -108
- package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +421 -421
- package/server/modules/providers/list/cursor/cursor.provider.ts +15 -15
- package/server/modules/providers/list/gemini/gemini-auth.provider.ts +173 -173
- package/server/modules/providers/list/gemini/gemini-mcp.provider.ts +110 -110
- package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +227 -227
- package/server/modules/providers/list/gemini/gemini.provider.ts +15 -15
- package/server/modules/providers/list/opencode/opencode-auth.provider.ts +131 -131
- package/server/modules/providers/list/opencode/opencode-mcp.provider.ts +126 -126
- package/server/modules/providers/list/opencode/opencode-sessions.provider.ts +286 -286
- package/server/modules/providers/list/opencode/opencode.provider.ts +29 -29
- package/server/modules/providers/list/qwen/qwen-auth.provider.ts +146 -146
- package/server/modules/providers/list/qwen/qwen-mcp.provider.ts +114 -114
- package/server/modules/providers/list/qwen/qwen-sessions.provider.ts +265 -265
- package/server/modules/providers/list/qwen/qwen.provider.ts +21 -21
- package/server/modules/providers/provider.registry.ts +40 -40
- package/server/modules/providers/provider.routes.ts +944 -944
- package/server/modules/providers/services/mcp.service.ts +86 -86
- package/server/modules/providers/services/provider-auth.service.ts +26 -26
- package/server/modules/providers/services/sessions.service.ts +45 -45
- package/server/modules/providers/shared/base/abstract.provider.ts +20 -20
- package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -151
- package/server/modules/providers/shared/provider-configs.ts +142 -142
- package/server/modules/providers/tests/mcp.test.ts +293 -293
- package/server/openai-codex.js +462 -462
- package/server/opencode-cli.js +491 -491
- package/server/opencode-response-handler.js +111 -111
- package/server/projects.js +3008 -3008
- package/server/qwen-code-cli.js +410 -410
- package/server/qwen-response-handler.js +73 -73
- package/server/routes/agent.js +1435 -1435
- package/server/routes/auth.js +159 -159
- package/server/routes/codex.js +20 -20
- package/server/routes/commands.js +570 -570
- package/server/routes/cursor.js +61 -61
- package/server/routes/diagnostics.js +41 -41
- package/server/routes/gemini.js +25 -25
- package/server/routes/git.js +1650 -1650
- package/server/routes/live-view.js +411 -411
- package/server/routes/mcp-utils.js +13 -13
- package/server/routes/messages.js +62 -62
- package/server/routes/network.js +125 -125
- package/server/routes/platformization.js +212 -212
- package/server/routes/plugins.js +320 -320
- package/server/routes/production-agent-loop.js +90 -90
- package/server/routes/projects.js +917 -917
- package/server/routes/public-api.js +34 -34
- package/server/routes/qwen.js +27 -27
- package/server/routes/remote.js +55 -55
- package/server/routes/settings.js +321 -321
- package/server/routes/telegram.js +140 -140
- package/server/routes/user.js +125 -125
- package/server/routes/webhooks.js +63 -63
- package/server/services/control-room.js +102 -102
- package/server/services/diagnostics.js +165 -165
- package/server/services/external-access.js +375 -375
- package/server/services/hermes-gateway.js +1562 -1247
- package/server/services/hermes-install-jobs.js +729 -729
- package/server/services/install-jobs.js +715 -715
- package/server/services/live-view.js +956 -956
- package/server/services/managed-runtimes.js +493 -493
- package/server/services/model-registry.js +144 -144
- package/server/services/notification-orchestrator.js +365 -365
- package/server/services/notification-taxonomy.js +204 -204
- package/server/services/platformization.js +815 -815
- package/server/services/production-agent-loop.js +248 -248
- package/server/services/provider-cli-versions.js +149 -149
- package/server/services/provider-credentials.js +189 -189
- package/server/services/provider-models.js +396 -396
- package/server/services/public-api-manifest.js +190 -182
- package/server/services/remote-connection.js +127 -127
- package/server/services/runtime-manager.js +323 -323
- package/server/services/startup-update.js +234 -234
- package/server/services/telegram/bot.js +331 -331
- package/server/services/telegram/control-center.js +979 -979
- package/server/services/telegram/telegram-http-client.js +151 -151
- package/server/services/telegram/translations.js +340 -340
- package/server/services/vapid-keys.js +36 -36
- package/server/services/webhooks.js +216 -216
- package/server/sessionManager.js +225 -225
- package/server/shared/interfaces.ts +54 -54
- package/server/shared/types.ts +172 -172
- package/server/shared/utils.ts +193 -193
- package/server/tsconfig.json +36 -36
- package/server/utils/colors.js +21 -21
- package/server/utils/commandParser.js +305 -305
- package/server/utils/frontmatter.js +18 -18
- package/server/utils/gitConfig.js +34 -34
- package/server/utils/plugin-loader.js +457 -457
- package/server/utils/plugin-process-manager.js +185 -185
- package/server/utils/port-access.js +209 -209
- package/server/utils/runtime-paths.js +37 -37
- package/server/utils/url-detection.js +71 -71
- package/server/vite-daemon.js +79 -79
- package/shared/modelConstants.js +161 -161
- package/shared/networkHosts.js +22 -22
- package/dist/assets/index-DMz0zv6T.css +0 -32
package/server/vite-daemon.js
CHANGED
|
@@ -1,79 +1,79 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
import process from 'node:process';
|
|
4
|
-
|
|
5
|
-
import { createServer } from 'vite';
|
|
6
|
-
|
|
7
|
-
const DEFAULT_PORT = 5173;
|
|
8
|
-
const DEFAULT_HOST = '0.0.0.0';
|
|
9
|
-
|
|
10
|
-
function parseArgs(argv) {
|
|
11
|
-
const parsed = {
|
|
12
|
-
host: process.env.VITE_HOST || process.env.HOST || DEFAULT_HOST,
|
|
13
|
-
port: Number(process.env.VITE_PORT || DEFAULT_PORT),
|
|
14
|
-
strictPort: true,
|
|
15
|
-
};
|
|
16
|
-
|
|
17
|
-
for (let i = 0; i < argv.length; i++) {
|
|
18
|
-
const arg = argv[i];
|
|
19
|
-
if (arg === '--host') {
|
|
20
|
-
parsed.host = argv[++i];
|
|
21
|
-
} else if (arg.startsWith('--host=')) {
|
|
22
|
-
parsed.host = arg.split('=')[1];
|
|
23
|
-
} else if (arg === '--port' || arg === '-p') {
|
|
24
|
-
parsed.port = Number(argv[++i]);
|
|
25
|
-
} else if (arg.startsWith('--port=')) {
|
|
26
|
-
parsed.port = Number(arg.split('=')[1]);
|
|
27
|
-
} else if (arg === '--strictPort') {
|
|
28
|
-
parsed.strictPort = true;
|
|
29
|
-
} else if (arg === '--no-strictPort') {
|
|
30
|
-
parsed.strictPort = false;
|
|
31
|
-
} else if (arg === '--help' || arg === '-h') {
|
|
32
|
-
console.log('Usage: node server/vite-daemon.js [--host 0.0.0.0] [--port 5173] [--strictPort]');
|
|
33
|
-
process.exit(0);
|
|
34
|
-
} else {
|
|
35
|
-
throw new Error(`Unknown argument: ${arg}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
if (!Number.isInteger(parsed.port) || parsed.port < 1 || parsed.port > 65535) {
|
|
40
|
-
throw new Error(`Invalid port "${parsed.port}". Expected an integer between 1 and 65535.`);
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return parsed;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
async function main() {
|
|
47
|
-
const options = parseArgs(process.argv.slice(2));
|
|
48
|
-
const server = await createServer({
|
|
49
|
-
root: process.cwd(),
|
|
50
|
-
server: {
|
|
51
|
-
host: options.host,
|
|
52
|
-
port: options.port,
|
|
53
|
-
strictPort: options.strictPort,
|
|
54
|
-
},
|
|
55
|
-
clearScreen: false,
|
|
56
|
-
});
|
|
57
|
-
|
|
58
|
-
await server.listen();
|
|
59
|
-
server.printUrls();
|
|
60
|
-
|
|
61
|
-
const shutdown = async (signal) => {
|
|
62
|
-
console.log(`[INFO] Frontend daemon received ${signal}, shutting down...`);
|
|
63
|
-
await server.close();
|
|
64
|
-
process.exit(0);
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
process.once('SIGTERM', () => {
|
|
68
|
-
void shutdown('SIGTERM');
|
|
69
|
-
});
|
|
70
|
-
process.once('SIGINT', () => {
|
|
71
|
-
void shutdown('SIGINT');
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
main().catch((error) => {
|
|
76
|
-
const message = error?.stack || error?.message || String(error);
|
|
77
|
-
console.error(`[ERROR] Frontend daemon failed to start: ${message}`);
|
|
78
|
-
process.exit(1);
|
|
79
|
-
});
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import process from 'node:process';
|
|
4
|
+
|
|
5
|
+
import { createServer } from 'vite';
|
|
6
|
+
|
|
7
|
+
const DEFAULT_PORT = 5173;
|
|
8
|
+
const DEFAULT_HOST = '0.0.0.0';
|
|
9
|
+
|
|
10
|
+
function parseArgs(argv) {
|
|
11
|
+
const parsed = {
|
|
12
|
+
host: process.env.VITE_HOST || process.env.HOST || DEFAULT_HOST,
|
|
13
|
+
port: Number(process.env.VITE_PORT || DEFAULT_PORT),
|
|
14
|
+
strictPort: true,
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
for (let i = 0; i < argv.length; i++) {
|
|
18
|
+
const arg = argv[i];
|
|
19
|
+
if (arg === '--host') {
|
|
20
|
+
parsed.host = argv[++i];
|
|
21
|
+
} else if (arg.startsWith('--host=')) {
|
|
22
|
+
parsed.host = arg.split('=')[1];
|
|
23
|
+
} else if (arg === '--port' || arg === '-p') {
|
|
24
|
+
parsed.port = Number(argv[++i]);
|
|
25
|
+
} else if (arg.startsWith('--port=')) {
|
|
26
|
+
parsed.port = Number(arg.split('=')[1]);
|
|
27
|
+
} else if (arg === '--strictPort') {
|
|
28
|
+
parsed.strictPort = true;
|
|
29
|
+
} else if (arg === '--no-strictPort') {
|
|
30
|
+
parsed.strictPort = false;
|
|
31
|
+
} else if (arg === '--help' || arg === '-h') {
|
|
32
|
+
console.log('Usage: node server/vite-daemon.js [--host 0.0.0.0] [--port 5173] [--strictPort]');
|
|
33
|
+
process.exit(0);
|
|
34
|
+
} else {
|
|
35
|
+
throw new Error(`Unknown argument: ${arg}`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
if (!Number.isInteger(parsed.port) || parsed.port < 1 || parsed.port > 65535) {
|
|
40
|
+
throw new Error(`Invalid port "${parsed.port}". Expected an integer between 1 and 65535.`);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
return parsed;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
async function main() {
|
|
47
|
+
const options = parseArgs(process.argv.slice(2));
|
|
48
|
+
const server = await createServer({
|
|
49
|
+
root: process.cwd(),
|
|
50
|
+
server: {
|
|
51
|
+
host: options.host,
|
|
52
|
+
port: options.port,
|
|
53
|
+
strictPort: options.strictPort,
|
|
54
|
+
},
|
|
55
|
+
clearScreen: false,
|
|
56
|
+
});
|
|
57
|
+
|
|
58
|
+
await server.listen();
|
|
59
|
+
server.printUrls();
|
|
60
|
+
|
|
61
|
+
const shutdown = async (signal) => {
|
|
62
|
+
console.log(`[INFO] Frontend daemon received ${signal}, shutting down...`);
|
|
63
|
+
await server.close();
|
|
64
|
+
process.exit(0);
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
process.once('SIGTERM', () => {
|
|
68
|
+
void shutdown('SIGTERM');
|
|
69
|
+
});
|
|
70
|
+
process.once('SIGINT', () => {
|
|
71
|
+
void shutdown('SIGINT');
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
main().catch((error) => {
|
|
76
|
+
const message = error?.stack || error?.message || String(error);
|
|
77
|
+
console.error(`[ERROR] Frontend daemon failed to start: ${message}`);
|
|
78
|
+
process.exit(1);
|
|
79
|
+
});
|
package/shared/modelConstants.js
CHANGED
|
@@ -1,161 +1,161 @@
|
|
|
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 keep this fallback conservative and let
|
|
114
|
-
// the live models.dev catalog populate the full current list.
|
|
115
|
-
{ value: "opencode/big-pickle", label: "OpenCode Zen · Big Pickle (Free)", free: true },
|
|
116
|
-
{ value: "opencode/minimax-m2.5-free", label: "OpenCode Zen · MiniMax M2.5 (Free)", free: true },
|
|
117
|
-
{ value: "opencode/nemotron-3-super-free", label: "OpenCode Zen · Nemotron 3 Super (Free)", free: true },
|
|
118
|
-
{ value: "opencode/gpt-5-nano", label: "OpenCode Zen · GPT-5 Nano (Free)", free: true },
|
|
119
|
-
|
|
120
|
-
// Anthropic — current flagship + cheap.
|
|
121
|
-
{ value: "anthropic/claude-opus-4-7", label: "Claude Opus 4.7 (Anthropic)" },
|
|
122
|
-
{ value: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Anthropic)" },
|
|
123
|
-
{ value: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5 (Anthropic)" },
|
|
124
|
-
|
|
125
|
-
// OpenAI — current GPT-5 family.
|
|
126
|
-
{ value: "openai/gpt-5.4", label: "GPT-5.4 (OpenAI)" },
|
|
127
|
-
{ value: "openai/gpt-5.1-codex", label: "GPT-5.1 Codex (OpenAI)" },
|
|
128
|
-
|
|
129
|
-
// Google — current Gemini 3 family.
|
|
130
|
-
{ value: "google/gemini-3.1-pro-preview", label: "Gemini 3.1 Pro (Google)" },
|
|
131
|
-
{ value: "google/gemini-3-flash-preview", label: "Gemini 3 Flash (Google)" },
|
|
132
|
-
|
|
133
|
-
// xAI — fast & cheap coding model.
|
|
134
|
-
{ value: "xai/grok-code-fast-1", label: "Grok Code Fast 1 (xAI)" },
|
|
135
|
-
],
|
|
136
|
-
|
|
137
|
-
// Free Zen freebie that historically works for unauthed installs.
|
|
138
|
-
DEFAULT: "opencode/big-pickle",
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* Gemini Models
|
|
143
|
-
*/
|
|
144
|
-
export const GEMINI_MODELS = {
|
|
145
|
-
OPTIONS: [
|
|
146
|
-
{ value: "gemini-3.1-pro-preview", label: "Gemini 3.1 Pro Preview" },
|
|
147
|
-
{ value: "gemini-3-pro-preview", label: "Gemini 3 Pro Preview" },
|
|
148
|
-
{ value: "gemini-3-flash-preview", label: "Gemini 3 Flash Preview" },
|
|
149
|
-
{ value: "gemini-2.5-flash", label: "Gemini 2.5 Flash" },
|
|
150
|
-
{ value: "gemini-2.5-pro", label: "Gemini 2.5 Pro" },
|
|
151
|
-
{ value: "gemini-2.0-flash-lite", label: "Gemini 2.0 Flash Lite" },
|
|
152
|
-
{ value: "gemini-2.0-flash", label: "Gemini 2.0 Flash" },
|
|
153
|
-
{ value: "gemini-2.0-pro-exp", label: "Gemini 2.0 Pro Experimental" },
|
|
154
|
-
{
|
|
155
|
-
value: "gemini-2.0-flash-thinking-exp",
|
|
156
|
-
label: "Gemini 2.0 Flash Thinking",
|
|
157
|
-
},
|
|
158
|
-
],
|
|
159
|
-
|
|
160
|
-
DEFAULT: "gemini-3.1-pro-preview",
|
|
161
|
-
};
|
|
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 keep this fallback conservative and let
|
|
114
|
+
// the live models.dev catalog populate the full current list.
|
|
115
|
+
{ value: "opencode/big-pickle", label: "OpenCode Zen · Big Pickle (Free)", free: true },
|
|
116
|
+
{ value: "opencode/minimax-m2.5-free", label: "OpenCode Zen · MiniMax M2.5 (Free)", free: true },
|
|
117
|
+
{ value: "opencode/nemotron-3-super-free", label: "OpenCode Zen · Nemotron 3 Super (Free)", free: true },
|
|
118
|
+
{ value: "opencode/gpt-5-nano", label: "OpenCode Zen · GPT-5 Nano (Free)", free: true },
|
|
119
|
+
|
|
120
|
+
// Anthropic — current flagship + cheap.
|
|
121
|
+
{ value: "anthropic/claude-opus-4-7", label: "Claude Opus 4.7 (Anthropic)" },
|
|
122
|
+
{ value: "anthropic/claude-sonnet-4-6", label: "Claude Sonnet 4.6 (Anthropic)" },
|
|
123
|
+
{ value: "anthropic/claude-haiku-4-5", label: "Claude Haiku 4.5 (Anthropic)" },
|
|
124
|
+
|
|
125
|
+
// OpenAI — current GPT-5 family.
|
|
126
|
+
{ value: "openai/gpt-5.4", label: "GPT-5.4 (OpenAI)" },
|
|
127
|
+
{ value: "openai/gpt-5.1-codex", label: "GPT-5.1 Codex (OpenAI)" },
|
|
128
|
+
|
|
129
|
+
// Google — current Gemini 3 family.
|
|
130
|
+
{ value: "google/gemini-3.1-pro-preview", label: "Gemini 3.1 Pro (Google)" },
|
|
131
|
+
{ value: "google/gemini-3-flash-preview", label: "Gemini 3 Flash (Google)" },
|
|
132
|
+
|
|
133
|
+
// xAI — fast & cheap coding model.
|
|
134
|
+
{ value: "xai/grok-code-fast-1", label: "Grok Code Fast 1 (xAI)" },
|
|
135
|
+
],
|
|
136
|
+
|
|
137
|
+
// Free Zen freebie that historically works for unauthed installs.
|
|
138
|
+
DEFAULT: "opencode/big-pickle",
|
|
139
|
+
};
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Gemini Models
|
|
143
|
+
*/
|
|
144
|
+
export const GEMINI_MODELS = {
|
|
145
|
+
OPTIONS: [
|
|
146
|
+
{ value: "gemini-3.1-pro-preview", label: "Gemini 3.1 Pro Preview" },
|
|
147
|
+
{ value: "gemini-3-pro-preview", label: "Gemini 3 Pro Preview" },
|
|
148
|
+
{ value: "gemini-3-flash-preview", label: "Gemini 3 Flash Preview" },
|
|
149
|
+
{ value: "gemini-2.5-flash", label: "Gemini 2.5 Flash" },
|
|
150
|
+
{ value: "gemini-2.5-pro", label: "Gemini 2.5 Pro" },
|
|
151
|
+
{ value: "gemini-2.0-flash-lite", label: "Gemini 2.0 Flash Lite" },
|
|
152
|
+
{ value: "gemini-2.0-flash", label: "Gemini 2.0 Flash" },
|
|
153
|
+
{ value: "gemini-2.0-pro-exp", label: "Gemini 2.0 Pro Experimental" },
|
|
154
|
+
{
|
|
155
|
+
value: "gemini-2.0-flash-thinking-exp",
|
|
156
|
+
label: "Gemini 2.0 Flash Thinking",
|
|
157
|
+
},
|
|
158
|
+
],
|
|
159
|
+
|
|
160
|
+
DEFAULT: "gemini-3.1-pro-preview",
|
|
161
|
+
};
|
package/shared/networkHosts.js
CHANGED
|
@@ -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
|
+
}
|