@thangnm.nip/arouter 0.1.15 → 0.1.17
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/.next/standalone/.next/BUILD_ID +1 -1
- package/.next/standalone/.next/app-path-routes-manifest.json +4 -4
- package/.next/standalone/.next/build-manifest.json +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/mitm/page.js +2 -2
- package/.next/standalone/.next/server/app/(dashboard)/mitm/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/mitm/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/page.js +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/(dashboard)/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js +1 -1
- package/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/.next/standalone/.next/server/app/_not-found.rsc +13 -12
- package/.next/standalone/.next/server/app/_not-found.segments/_full.segment.rsc +13 -12
- package/.next/standalone/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_index.segment.rsc +4 -3
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/alias/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/console-logs/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/logs/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/antigravity-mitm/settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/claude-settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/codex-settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/copilot-settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/droid-settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/openclaw-settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/cli-tools/opencode-settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/keys/[id]/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/keys/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/locale/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/models/alias/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/models/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/providers/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/settings/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/api/version/route_client-reference-manifest.js +1 -1
- package/.next/standalone/.next/server/app/index.html +1 -1
- package/.next/standalone/.next/server/app/index.rsc +15 -14
- package/.next/standalone/.next/server/app/index.segments/!KGRhc2hib2FyZCk/__PAGE__.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/index.segments/_full.segment.rsc +15 -14
- package/.next/standalone/.next/server/app/index.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/index.segments/_index.segment.rsc +4 -3
- package/.next/standalone/.next/server/app/index.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/mitm.html +1 -1
- package/.next/standalone/.next/server/app/mitm.rsc +15 -14
- package/.next/standalone/.next/server/app/mitm.segments/!KGRhc2hib2FyZCk/mitm/__PAGE__.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/mitm.segments/!KGRhc2hib2FyZCk/mitm.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/mitm.segments/!KGRhc2hib2FyZCk.segment.rsc +2 -2
- package/.next/standalone/.next/server/app/mitm.segments/_full.segment.rsc +15 -14
- package/.next/standalone/.next/server/app/mitm.segments/_head.segment.rsc +1 -1
- package/.next/standalone/.next/server/app/mitm.segments/_index.segment.rsc +4 -3
- package/.next/standalone/.next/server/app/mitm.segments/_tree.segment.rsc +1 -1
- package/.next/standalone/.next/server/app-paths-manifest.json +4 -4
- package/.next/standalone/.next/server/chunks/17.js +1 -0
- package/.next/standalone/.next/server/pages/404.html +1 -1
- package/.next/standalone/.next/server/pages/500.html +2 -2
- package/.next/standalone/.next/static/chunks/{702-ca3603b46f42ea02.js → 702-9dbc28a91a2f16f3.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/(dashboard)/mitm/{page-7b00b393f7d9f26e.js → page-1417cc974d63eae8.js} +1 -1
- package/.next/standalone/.next/static/chunks/app/layout-7070335bf833b346.js +1 -0
- package/.next/standalone/package.json +1 -1
- package/.next/standalone/public/icons/icon-192.svg +11 -3
- package/.next/standalone/public/icons/icon-512.svg +11 -3
- package/.next/standalone/public/manifest.json +30 -0
- package/.next/standalone/public/offline.html +113 -0
- package/.next/standalone/public/sw.js +56 -8
- package/package.json +1 -1
- package/scripts/postinstall.mjs +23 -164
- package/.next/standalone/.next/server/chunks/219.js +0 -1
- package/.next/standalone/.next/static/chunks/app/layout-6e491caa4df42293.js +0 -1
- /package/.next/standalone/.next/static/{DFyeN1MsDYfUoydIoiNI_ → Mfb2OO3NnXixFl6KrlsSM}/_buildManifest.js +0 -0
- /package/.next/standalone/.next/static/{DFyeN1MsDYfUoydIoiNI_ → Mfb2OO3NnXixFl6KrlsSM}/_ssgManifest.js +0 -0
package/scripts/postinstall.mjs
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* postinstall.mjs
|
|
4
|
-
* Automatically sets up arouter
|
|
4
|
+
* Automatically sets up arouter server to start on system login/boot.
|
|
5
5
|
* Runs after: npm install -g @thangnm.nip/arouter
|
|
6
|
+
*
|
|
7
|
+
* Note: MITM server is NOT auto-started. Use the dashboard UI to start it manually.
|
|
6
8
|
*/
|
|
7
9
|
|
|
8
10
|
import fs from 'fs';
|
|
@@ -17,8 +19,6 @@ const __dirname = path.dirname(__filename);
|
|
|
17
19
|
// Paths
|
|
18
20
|
const packageRoot = path.join(__dirname, '..');
|
|
19
21
|
const arouterBin = path.join(packageRoot, 'bin', 'arouter.mjs');
|
|
20
|
-
// Path to standalone MITM server
|
|
21
|
-
const mitmServerPath = path.join(packageRoot, '.next', 'standalone', 'src', 'mitm', 'server.js');
|
|
22
22
|
|
|
23
23
|
const nodeBin = process.execPath;
|
|
24
24
|
const platform = os.platform();
|
|
@@ -40,37 +40,11 @@ function runCmd(cmd, options = {}) {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
// ─── Elevated Execution Helpers ──────────────────────────────────────────────
|
|
44
|
-
|
|
45
|
-
function execElevatedMac(cmd) {
|
|
46
|
-
// Use osascript to prompt for password via GUI
|
|
47
|
-
const script = `do shell script "${cmd.replace(/"/g, '\\"')}" with administrator privileges`;
|
|
48
|
-
return runCmd(`osascript -e '${script}'`, { stdio: 'inherit' });
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
function execElevatedLinux(cmd) {
|
|
52
|
-
// Try pkexec first (GUI), fallback to sudo (CLI)
|
|
53
|
-
if (runCmd('command -v pkexec')) {
|
|
54
|
-
return runCmd(`pkexec sh -c "${cmd.replace(/"/g, '\\"')}"`, { stdio: 'inherit' });
|
|
55
|
-
} else {
|
|
56
|
-
// Note: npm postinstall runs in non-interactive mode. sudo might fail if it requires a password.
|
|
57
|
-
// Try sudo with -A (askpass) or standard.
|
|
58
|
-
return runCmd(`sudo sh -c "${cmd.replace(/"/g, '\\"')}"`, { stdio: 'inherit' });
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
function execElevatedWindows(psCmd) {
|
|
63
|
-
// Use Start-Process with Admin privileges
|
|
64
|
-
const b64 = Buffer.from(psCmd, 'utf16le').toString('base64');
|
|
65
|
-
return runCmd(`powershell -NoProfile -ExecutionPolicy Bypass -EncodedCommand ${b64}`);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
43
|
// ─── macOS Setup ─────────────────────────────────────────────────────────────
|
|
69
44
|
|
|
70
45
|
function setupMacOS() {
|
|
71
|
-
log('Configuring macOS LaunchAgent
|
|
46
|
+
log('Configuring macOS LaunchAgent for arouter...');
|
|
72
47
|
|
|
73
|
-
// 1. LaunchAgent for `arouter start` (User space)
|
|
74
48
|
const launchAgentsDir = path.join(os.homedir(), 'Library', 'LaunchAgents');
|
|
75
49
|
const arouterPlistPath = path.join(launchAgentsDir, 'com.arouter.plist');
|
|
76
50
|
const logDir = path.join(os.homedir(), '.arouter');
|
|
@@ -114,74 +88,24 @@ function setupMacOS() {
|
|
|
114
88
|
fs.writeFileSync(arouterPlistPath, arouterPlist, 'utf8');
|
|
115
89
|
runCmd(`launchctl unload ${arouterPlistPath}`);
|
|
116
90
|
runCmd(`launchctl load ${arouterPlistPath}`);
|
|
117
|
-
log(`✅
|
|
118
|
-
|
|
119
|
-
// 2. LaunchDaemon for MITM Server (System space - needs root)
|
|
120
|
-
if (!fs.existsSync(mitmServerPath)) {
|
|
121
|
-
warn(`MITM server not found at: ${mitmServerPath}. Skipping MITM LaunchDaemon setup.`);
|
|
122
|
-
return;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
const mitmPlistName = 'com.arouter.mitm.plist';
|
|
126
|
-
const mitmTmpPath = path.join(os.tmpdir(), mitmPlistName);
|
|
127
|
-
const mitmSystemPath = `/Library/LaunchDaemons/${mitmPlistName}`;
|
|
128
|
-
|
|
129
|
-
const mitmPlist = `<?xml version="1.0" encoding="UTF-8"?>
|
|
130
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
131
|
-
<plist version="1.0">
|
|
132
|
-
<dict>
|
|
133
|
-
<key>Label</key>
|
|
134
|
-
<string>com.arouter.mitm</string>
|
|
135
|
-
<key>ProgramArguments</key>
|
|
136
|
-
<array>
|
|
137
|
-
<string>${nodeBin}</string>
|
|
138
|
-
<string>${mitmServerPath}</string>
|
|
139
|
-
</array>
|
|
140
|
-
<key>EnvironmentVariables</key>
|
|
141
|
-
<dict>
|
|
142
|
-
<key>HOME</key>
|
|
143
|
-
<string>${os.homedir()}</string>
|
|
144
|
-
<key>DATA_DIR</key>
|
|
145
|
-
<string>${path.join(os.homedir(), '.arouter')}</string>
|
|
146
|
-
<key>NODE_ENV</key>
|
|
147
|
-
<string>production</string>
|
|
148
|
-
</dict>
|
|
149
|
-
<key>RunAtLoad</key>
|
|
150
|
-
<true/>
|
|
151
|
-
<key>StandardOutPath</key>
|
|
152
|
-
<string>${path.join(logDir, 'mitm.startup.log')}</string>
|
|
153
|
-
<key>StandardErrorPath</key>
|
|
154
|
-
<string>${path.join(logDir, 'mitm.startup.error.log')}</string>
|
|
155
|
-
</dict>
|
|
156
|
-
</plist>`;
|
|
157
|
-
|
|
158
|
-
fs.writeFileSync(mitmTmpPath, mitmPlist, 'utf8');
|
|
91
|
+
log(`✅ Arouter service started`);
|
|
159
92
|
|
|
160
|
-
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
`
|
|
165
|
-
`launchctl unload '${mitmSystemPath}' 2>/dev/null || true`,
|
|
166
|
-
`launchctl load '${mitmSystemPath}'`
|
|
167
|
-
].join(' && ');
|
|
168
|
-
|
|
169
|
-
if (execElevatedMac(cmds)) {
|
|
170
|
-
log(`✅ MITM LaunchDaemon installed and started`);
|
|
171
|
-
} else {
|
|
172
|
-
warn('Failed to install MITM LaunchDaemon. You can start the MITM server manually from the UI.');
|
|
93
|
+
// Clean up old MITM LaunchDaemon if it exists
|
|
94
|
+
const mitmSystemPath = '/Library/LaunchDaemons/com.arouter.mitm.plist';
|
|
95
|
+
if (fs.existsSync(mitmSystemPath)) {
|
|
96
|
+
log('Cleaning up old MITM LaunchDaemon...');
|
|
97
|
+
runCmd(`launchctl unload '${mitmSystemPath}' 2>/dev/null || true`);
|
|
173
98
|
}
|
|
174
99
|
}
|
|
175
100
|
|
|
176
101
|
// ─── Linux Setup ─────────────────────────────────────────────────────────────
|
|
177
102
|
|
|
178
103
|
function setupLinux() {
|
|
179
|
-
log('Configuring Linux systemd
|
|
104
|
+
log('Configuring Linux systemd user service for arouter...');
|
|
180
105
|
|
|
181
106
|
const logDir = path.join(os.homedir(), '.arouter');
|
|
182
107
|
fs.mkdirSync(logDir, { recursive: true });
|
|
183
108
|
|
|
184
|
-
// 1. User systemd service (arouter)
|
|
185
109
|
const systemdUserDir = path.join(os.homedir(), '.config', 'systemd', 'user');
|
|
186
110
|
const arouterSvcPath = path.join(systemdUserDir, 'arouter.service');
|
|
187
111
|
fs.mkdirSync(systemdUserDir, { recursive: true });
|
|
@@ -203,60 +127,23 @@ WantedBy=default.target
|
|
|
203
127
|
runCmd('systemctl --user daemon-reload');
|
|
204
128
|
runCmd('systemctl --user enable arouter');
|
|
205
129
|
runCmd('systemctl --user restart arouter');
|
|
206
|
-
log(`✅
|
|
207
|
-
|
|
208
|
-
// 2. System systemd service (MITM)
|
|
209
|
-
if (!fs.existsSync(mitmServerPath)) {
|
|
210
|
-
warn(`MITM server not found at: ${mitmServerPath}. Skipping MITM startup.`);
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
|
-
const mitmTmpSvc = path.join(os.tmpdir(), 'arouter-mitm.service');
|
|
215
|
-
const mitmSystemPath = `/etc/systemd/system/arouter-mitm.service`;
|
|
216
|
-
|
|
217
|
-
const mitmSvc = `[Unit]
|
|
218
|
-
Description=arouter - MITM Server
|
|
219
|
-
After=network.target
|
|
220
|
-
|
|
221
|
-
[Service]
|
|
222
|
-
Type=simple
|
|
223
|
-
Environment="HOME=${os.homedir()}"
|
|
224
|
-
Environment="DATA_DIR=${path.join(os.homedir(), '.arouter')}"
|
|
225
|
-
ExecStart=${nodeBin} ${mitmServerPath}
|
|
226
|
-
StandardOutput=append:${path.join(logDir, 'mitm.startup.log')}
|
|
227
|
-
StandardError=append:${path.join(logDir, 'mitm.startup.error.log')}
|
|
228
|
-
|
|
229
|
-
[Install]
|
|
230
|
-
WantedBy=multi-user.target
|
|
231
|
-
`;
|
|
232
|
-
|
|
233
|
-
fs.writeFileSync(mitmTmpSvc, mitmSvc, 'utf8');
|
|
130
|
+
log(`✅ Arouter service started`);
|
|
234
131
|
|
|
235
|
-
|
|
236
|
-
const
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
`systemctl daemon-reload`,
|
|
240
|
-
`systemctl enable arouter-mitm`,
|
|
241
|
-
`systemctl restart arouter-mitm`
|
|
242
|
-
].join(' && ');
|
|
243
|
-
|
|
244
|
-
if (execElevatedLinux(commands)) {
|
|
245
|
-
log(`✅ System systemd service started: arouter-mitm`);
|
|
246
|
-
} else {
|
|
247
|
-
warn('Failed to install MITM systemd service. Run explicitly with sudo if needed.');
|
|
132
|
+
// Clean up old MITM systemd service if it exists
|
|
133
|
+
const mitmSystemPath = '/etc/systemd/system/arouter-mitm.service';
|
|
134
|
+
if (fs.existsSync(mitmSystemPath)) {
|
|
135
|
+
log('Old MITM systemd service found. You may remove it manually with: sudo systemctl disable arouter-mitm && sudo rm /etc/systemd/system/arouter-mitm.service');
|
|
248
136
|
}
|
|
249
137
|
}
|
|
250
138
|
|
|
251
139
|
// ─── Windows Setup ───────────────────────────────────────────────────────────
|
|
252
140
|
|
|
253
141
|
function setupWindows() {
|
|
254
|
-
log('Configuring Windows Task Scheduler...');
|
|
142
|
+
log('Configuring Windows Task Scheduler for arouter...');
|
|
255
143
|
|
|
256
144
|
const logDir = path.join(os.homedir(), '.arouter');
|
|
257
145
|
fs.mkdirSync(logDir, { recursive: true });
|
|
258
146
|
|
|
259
|
-
// 1. Task for arouter (User)
|
|
260
147
|
const arouterTask = 'arouter';
|
|
261
148
|
const arouterXmlPath = path.join(os.tmpdir(), 'arouter-task.xml');
|
|
262
149
|
|
|
@@ -269,41 +156,13 @@ function setupWindows() {
|
|
|
269
156
|
fs.writeFileSync(arouterXmlPath, arouterXml, 'utf16le');
|
|
270
157
|
|
|
271
158
|
if (runCmd(`schtasks /Create /TN "${arouterTask}" /XML "${arouterXmlPath}" /F`)) {
|
|
272
|
-
log(`✅
|
|
159
|
+
log(`✅ Arouter scheduled task created`);
|
|
273
160
|
} else {
|
|
274
|
-
warn('Failed to create
|
|
161
|
+
warn('Failed to create scheduled task.');
|
|
275
162
|
}
|
|
276
163
|
|
|
277
|
-
//
|
|
278
|
-
|
|
279
|
-
warn(`MITM server not found at: ${mitmServerPath}. Skipping MITM startup.`);
|
|
280
|
-
return;
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
const mitmTask = 'arouter-mitm';
|
|
284
|
-
const mitmXmlPath = path.join(os.tmpdir(), 'arouter-mitm-task.xml');
|
|
285
|
-
|
|
286
|
-
const mitmXml = `<?xml version="1.0" encoding="UTF-16"?>
|
|
287
|
-
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
|
|
288
|
-
<Principals>
|
|
289
|
-
<Principal id="Author">
|
|
290
|
-
<RunLevel>HighestAvailable</RunLevel>
|
|
291
|
-
</Principal>
|
|
292
|
-
</Principals>
|
|
293
|
-
<Triggers><LogonTrigger><Enabled>true</Enabled></LogonTrigger></Triggers>
|
|
294
|
-
<Actions Context="Author"><Exec><Command>${nodeBin}</Command><Arguments>"${mitmServerPath}"</Arguments></Exec></Actions>
|
|
295
|
-
<Settings><MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy><DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries><StopIfGoingOnBatteries>false</StopIfGoingOnBatteries><ExecutionTimeLimit>PT0S</ExecutionTimeLimit><Priority>7</Priority></Settings>
|
|
296
|
-
</Task>`;
|
|
297
|
-
fs.writeFileSync(mitmXmlPath, mitmXml, 'utf16le');
|
|
298
|
-
|
|
299
|
-
log('Requesting Administrator privileges to install MITM scheduled task...');
|
|
300
|
-
const psCmd = `Start-Process schtasks -ArgumentList '/Create /TN "${mitmTask}" /XML "${mitmXmlPath}" /F' -Verb RunAs -WindowStyle Hidden -Wait`;
|
|
301
|
-
|
|
302
|
-
if (execElevatedWindows(psCmd)) {
|
|
303
|
-
log(`✅ Windows Task Scheduler: Admin task (MITM) created`);
|
|
304
|
-
} else {
|
|
305
|
-
warn('Failed to create Admin scheduled task. Run PowerShell as Admin to fix.');
|
|
306
|
-
}
|
|
164
|
+
// Clean up old MITM task if it exists
|
|
165
|
+
runCmd(`schtasks /Delete /TN "arouter-mitm" /F 2>nul`);
|
|
307
166
|
}
|
|
308
167
|
|
|
309
168
|
// ─── Main ────────────────────────────────────────────────────────────────────
|
|
@@ -318,7 +177,7 @@ function main() {
|
|
|
318
177
|
return;
|
|
319
178
|
}
|
|
320
179
|
|
|
321
|
-
log('Setting up auto-startup
|
|
180
|
+
log('Setting up auto-startup for arouter server only (MITM not auto-started)...');
|
|
322
181
|
|
|
323
182
|
try {
|
|
324
183
|
if (platform === 'darwin') {
|
|
@@ -331,7 +190,7 @@ function main() {
|
|
|
331
190
|
warn(`Platform "${platform}" not supported for auto-startup.`);
|
|
332
191
|
}
|
|
333
192
|
|
|
334
|
-
log('🎉 Auto-startup configuration finished!');
|
|
193
|
+
log('🎉 Auto-startup configuration finished! (arouter only, MITM must be started from dashboard)');
|
|
335
194
|
} catch (err) {
|
|
336
195
|
warn(`Auto-startup setup failed: ${err.message}`);
|
|
337
196
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
exports.id=219,exports.ids=[219],exports.modules={5211:(a,b,c)=>{"use strict";c.d(b,{RuntimeI18nProvider:()=>f});var d=c(48249);c(67484);var e=c(19099);function f({children:a}){return(0,e.usePathname)(),(0,d.jsx)(d.Fragment,{children:a})}c(99258)},12020:(a,b,c)=>{"use strict";c.d(b,{fg:()=>d.fg,vQ:()=>e,zN:()=>d.zN,B2:()=>f});var d=c(96919);c(69974);let e={name:"aRouter",description:"AI Infrastructure Management",version:"0.1.15"},f={storageKey:"theme",defaultTheme:"system"}},13033:(a,b,c)=>{"use strict";c.d(b,{A:()=>g});var d=c(31417),e=c(300),f=c(12020);let g=(0,d.v)((0,e.Zr)((a,b)=>({theme:f.B2.defaultTheme,setTheme:b=>{a({theme:b})},toggleTheme:()=>{let c="dark"===b().theme?"light":"dark";a({theme:c})},initTheme:()=>{b().theme}}),{name:f.B2.storageKey}))},17556:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23))},19308:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>f});var d=c(48249);c(67484);var e=c(13033);function f({children:a}){let{initTheme:b}=(0,e.A)();return(0,d.jsx)(d.Fragment,{children:a})}},26892:(a,b,c)=>{"use strict";c.d(b,{fO:()=>k,up:()=>l,wJ:()=>j});var d=c(94735);let e=["log","info","warn","error","debug"];global._consoleLogBufferState||(global._consoleLogBufferState={logs:[],patched:!1,originals:{},emitter:new d.EventEmitter},global._consoleLogBufferState.emitter.setMaxListeners(50));let f=global._consoleLogBufferState;f.emitter||(f.emitter=new d.EventEmitter,f.emitter.setMaxListeners(50));let g=/\x1b\[[0-9;]*m/g;function h(a){return a.replace(g,"")}function i(a){if("string"==typeof a)return h(a);if(a instanceof Error)return h(a.stack||a.message||String(a));try{return h(JSON.stringify(a))}catch{return h(String(a))}}function j(){if(!f.patched){for(let a of e)f.originals[a]=console[a],console[a]=(...b)=>{var c;c=b.map(i).join(" "),f.logs.push(c),f.logs.length>200&&(f.logs=f.logs.slice(-200)),f.emitter.emit("line",c),f.originals[a](...b)};f.patched=!0}}function k(){return f.logs}function l(){return f.emitter}},32702:(a,b,c)=>{Promise.resolve().then(c.bind(c,5211)),Promise.resolve().then(c.bind(c,19308))},41524:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23))},43976:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,81921,23)),Promise.resolve().then(c.t.bind(c,60440,23)),Promise.resolve().then(c.t.bind(c,84342,23)),Promise.resolve().then(c.t.bind(c,82265,23)),Promise.resolve().then(c.t.bind(c,35421,23)),Promise.resolve().then(c.t.bind(c,61335,23)),Promise.resolve().then(c.t.bind(c,70664,23)),Promise.resolve().then(c.bind(c,74661))},51126:(a,b,c)=>{"use strict";c.d(b,{CL:()=>f,QC:()=>g,Xn:()=>e,YZ:()=>d});let d=["en","vi","zh-CN"],e="en",f="locale";function g(a){return"zh"===a||"zh-CN"===a?"zh-CN":"en"===a?"en":"vi"===a?"vi":e}},60317:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>ae,metadata:()=>ac,viewport:()=>ad});var d=c(5735),e=c(75329),f=c.n(e);c(61135);var g=c(89886),h=c(89718),i=c(55511),j=c.n(i),k=c(29021),l=c.n(k),m=c(33873),n=c.n(m),o=c(21820),p=c.n(o);let q=n().join(p().homedir(),".arouter","tunnel"),r=n().join(q,"state.json"),s=n().join(q,"cloudflared.pid");function t(){l().existsSync(q)||l().mkdirSync(q,{recursive:!0})}function u(){try{if(l().existsSync(s))return parseInt(l().readFileSync(s,"utf8"))}catch(a){}return null}function v(){try{l().existsSync(s)&&l().unlinkSync(s)}catch(a){}}var w=c(55591),x=c.n(w),y=c(79646);let z=n().join(p().homedir(),".arouter","bin"),A="cloudflared",B="win32"===p().platform(),C=B?`${A}.exe`:A,D=n().join(z,C),E={darwin:{x64:"cloudflared-darwin-amd64.tgz",arm64:"cloudflared-darwin-amd64.tgz"},win32:{x64:"cloudflared-windows-amd64.exe"},linux:{x64:"cloudflared-linux-amd64",arm64:"cloudflared-linux-arm64"}};async function F(){if(l().existsSync(z)||l().mkdirSync(z,{recursive:!0}),l().existsSync(D))return B||l().chmodSync(D,"755"),D;let a=function(){let a=p().platform(),b=p().arch(),c=E[a];if(!c)throw Error(`Unsupported platform: ${a}`);let d=c[b];if(!d)throw Error(`Unsupported architecture: ${b} for platform ${a}`);return`https://github.com/cloudflare/cloudflared/releases/latest/download/${d}`}(),b=a.endsWith(".tgz"),c=b?n().join(z,"cloudflared.tgz"):D;return await function a(b,c){return new Promise((d,e)=>{let f=l().createWriteStream(c);x().get(b,b=>{if([301,302].includes(b.statusCode)){f.close(),l().unlinkSync(c),a(b.headers.location,c).then(d).catch(e);return}if(200!==b.statusCode){f.close(),l().unlinkSync(c),e(Error(`Download failed with status ${b.statusCode}`));return}b.pipe(f),f.on("finish",()=>{f.close(()=>d(c))}),f.on("error",a=>{f.close(),l().unlinkSync(c),e(a)})}).on("error",a=>{f.close(),l().existsSync(c)&&l().unlinkSync(c),e(a)})})}(a,c),b&&((0,y.execSync)(`tar -xzf "${c}" -C "${z}"`,{stdio:"pipe"}),l().unlinkSync(c)),B||l().chmodSync(D,"755"),D}let G=null,H=null;async function I(a){var b;let c=await F(),d=(0,y.spawn)(c,["tunnel","run","--dns-resolver-addrs","1.1.1.1:53","--token",a],{detached:!1,windowsHide:!0,stdio:["ignore","pipe","pipe"]});return G=d,b=d.pid,t(),l().writeFileSync(s,b.toString()),new Promise((a,b)=>{let c=0,e=!1,f=setTimeout(()=>{e=!0,a(d)},9e4),g=b=>{let g=b.toString().match(/Registered tunnel connection/g);g&&(c+=g.length)>=4&&!e&&(e=!0,clearTimeout(f),a(d))};d.stdout.on("data",g),d.stderr.on("data",g),d.on("error",a=>{e||(e=!0,clearTimeout(f),b(a))}),d.on("exit",a=>{G=null,v();let d=e;e||(e=!0,clearTimeout(f),0!==c)?d&&H&&H():b(Error(`cloudflared exited with code ${a}`))})})}function J(){if(G){try{G.kill()}catch(a){}G=null}let a=u();if(a){try{process.kill(a)}catch(a){}v()}try{(0,y.execSync)("pkill -f cloudflared 2>/dev/null || true",{stdio:"ignore"})}catch(a){}}function K(){let a=u();if(!a)return!1;try{return process.kill(a,0),!0}catch(a){return!1}}let L=process.env.TUNNEL_WORKER_URL||"https://tunnel.9router.com",M="abcdefghijklmnpqrstuvwxyz23456789",N=[5e3,1e4,2e4,3e4,6e4],O=N.length,P=!1;async function Q(a,b={}){let c=`${L}${a}`;return(await fetch(c,{...b,headers:{"Content-Type":"application/json",...b.headers}})).json()}async function R(){var a;let b=function(){try{if(l().existsSync(r))return JSON.parse(l().readFileSync(r,"utf8"))}catch(a){}return null}();if(b&&b.tunnelUrl&&K())return{success:!0,tunnelUrl:b.tunnelUrl,shortId:b.shortId,alreadyRunning:!0};J();let d=function(){try{let{machineIdSync:a}=c(19713),b=a();return j().createHash("sha256").update(b+"9router-tunnel-salt").digest("hex").substring(0,16)}catch(a){return j().randomUUID().replace(/-/g,"").substring(0,16)}}(),e=b?.shortId||function(){let a="";for(let b=0;b<6;b++)a+=M.charAt(Math.floor(Math.random()*M.length));return a}(),f=b?.apiKey||function(a){let b="abcdefghijklmnopqrstuvwxyz0123456789",c="";for(let a=0;a<6;a++)c+=b.charAt(Math.floor(Math.random()*b.length));let d=j().createHmac("sha256","9router-tunnel-api-key-secret").update(a+c).digest("hex").slice(0,8);return`sk-${a}-${c}-${d}`}(d);await Q("/api/session/create",{method:"POST",body:JSON.stringify({apiKey:f,shortId:e})});let g=await Q("/api/tunnel/create",{method:"POST",body:JSON.stringify({apiKey:f})});if(g.error)throw Error(g.error);let{token:i,hostname:k}=g;return await I(i),a={shortId:e,apiKey:f,tunnelUrl:k,machineId:d},t(),l().writeFileSync(r,JSON.stringify(a,null,2)),await (0,h.Xx)({tunnelEnabled:!0,tunnelUrl:k}),H=()=>{P||S(0)},{success:!0,tunnelUrl:k,shortId:e}}async function S(a){if(P)return;P=!0;let b=N[Math.min(a,N.length-1)];console.log(`[Tunnel] Unexpected exit detected, reconnecting in ${b/1e3}s (attempt ${a+1})...`),await new Promise(a=>setTimeout(a,b));try{if(!(await (0,h.mt)()).tunnelEnabled){console.log("[Tunnel] Tunnel disabled, skipping reconnect"),P=!1;return}await R(),console.log("[Tunnel] Reconnected successfully"),P=!1}catch(c){console.log(`[Tunnel] Reconnect attempt ${a+1} failed:`,c.message),P=!1;let b=a+1;b<O?S(b):console.log("[Tunnel] All reconnect attempts exhausted")}}var T=c(96182),U=c(1932);if(!process.env.MITM_SERVER_PATH)try{let a=(0,U.fileURLToPath)("file:///Users/nip/Desktop/WORKSPACE/iCheck/iCheck.AI.Workflows/arouter/src/shared/services/initializeApp.js"),b=(0,m.dirname)((0,m.dirname)(a)),c=(0,m.join)(b,"mitm","server.js");(0,k.existsSync)(c)&&(process.env.MITM_SERVER_PATH=c)}catch{}try{(0,T.initDbHooks)(h.mt,h.Xx)}catch{}process.setMaxListeners(20);let V=global.__appSingleton??={signalHandlersRegistered:!1,watchdogInterval:null,networkMonitorInterval:null,lastNetworkFingerprint:null,lastWatchdogTick:Date.now(),lastTunnelRestartAt:0,tunnelRestartInProgress:!1};async function W(){try{if(await (0,h.bI)(),(await (0,h.mt)()).tunnelEnabled&&!K()){console.log("[InitApp] Tunnel was enabled, auto-reconnecting...");try{await R(),console.log("[InitApp] Tunnel reconnected")}catch(a){console.log("[InitApp] Tunnel reconnect failed:",a.message)}}if(!V.signalHandlersRegistered){let a=()=>{J(),process.exit()};process.on("SIGINT",a),process.on("SIGTERM",a),V.signalHandlersRegistered=!0}F().catch(()=>{}),!V.watchdogInterval&&(V.watchdogInterval=setInterval(async()=>{try{if(!(await (0,h.mt)()).tunnelEnabled||K())return;console.log("[Watchdog] Tunnel process is down, attempting recovery..."),await R(),console.log("[Watchdog] Tunnel recovered")}catch(a){console.log("[Watchdog] Recovery failed:",a.message)}},6e4),V.watchdogInterval.unref&&V.watchdogInterval.unref()),!V.networkMonitorInterval&&(V.lastNetworkFingerprint=Y(),V.lastWatchdogTick=Date.now(),V.networkMonitorInterval=setInterval(async()=>{try{if(!(await (0,h.mt)()).tunnelEnabled)return;let a=Date.now(),b=a-V.lastWatchdogTick;V.lastWatchdogTick=a;let c=Y(),d=c!==V.lastNetworkFingerprint,e=b>15e3;if(d&&(V.lastNetworkFingerprint=c),!d&&!e||V.tunnelRestartInProgress||a-V.lastTunnelRestartAt<3e4)return;console.log(`[NetworkMonitor] ${e&&d?"sleep/wake + network change":e?"sleep/wake":"network change"} detected, restarting tunnel...`),V.tunnelRestartInProgress=!0,V.lastTunnelRestartAt=a;try{J(),await new Promise(a=>setTimeout(a,2e3)),await R(),console.log("[NetworkMonitor] Tunnel restarted"),V.lastNetworkFingerprint=Y()}finally{V.tunnelRestartInProgress=!1}}catch(a){console.log("[NetworkMonitor] Tunnel restart failed:",a.message)}},5e3),V.networkMonitorInterval.unref&&V.networkMonitorInterval.unref()),X()}catch(a){console.error("[InitApp] Error:",a)}}async function X(){try{if(!(await (0,h.mt)()).mitmEnabled||(await (0,T.getMitmStatus)()).running)return;let a=await (0,T.loadEncryptedPassword)();if(!a&&"win32"!==process.platform)return void console.log("[InitApp] MITM was enabled but no saved password found, skipping auto-start");let b=(await (0,h.PX)()).find(a=>!1!==a.isActive);if(!b)return void console.log("[InitApp] MITM auto-start skipped: no active API key");console.log("[InitApp] MITM was enabled, auto-starting..."),await (0,T.startMitm)(b.key,a||""),console.log("[InitApp] MITM auto-started")}catch(a){console.log("[InitApp] MITM auto-start failed:",a.message)}}function Y(){let a=p().networkInterfaces(),b=[];for(let[c,d]of Object.entries(a))if(d)for(let a of d)a.internal||"IPv4"!==a.family||b.push(`${c}:${a.address}`);return b.sort().join("|")}let Z=!1;function $(a){return null==a?"":String(a).trim()}(async function(){if(!Z)try{await W(),Z=!0}catch(a){console.error("[ServerInit] Error initializing app:",a)}return Z})().catch(console.log);let _=!1;(async function(){if(_)return!0;try{let a=await (0,h.mt)();!function({outboundProxyEnabled:a,outboundProxyUrl:b,outboundNoProxy:c}={}){if("u"<typeof process||!process.env)return;let d=$(b),e=$(c);if(!a){"1"===process.env.NINE_ROUTER_PROXY_MANAGED&&(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_PROXY_MANAGED,delete process.env.NINE_ROUTER_PROXY_URL,delete process.env.NINE_ROUTER_NO_PROXY);return}let f="1"===process.env.NINE_ROUTER_PROXY_MANAGED,g=!1;f&&(d||(delete process.env.HTTP_PROXY,delete process.env.HTTPS_PROXY,delete process.env.ALL_PROXY,delete process.env.NINE_ROUTER_PROXY_URL),e||(delete process.env.NO_PROXY,delete process.env.NINE_ROUTER_NO_PROXY)),d&&(process.env.HTTP_PROXY=d,process.env.HTTPS_PROXY=d,process.env.ALL_PROXY=d,process.env.NINE_ROUTER_PROXY_URL=d,g=!0),e&&(process.env.NO_PROXY=e,process.env.NINE_ROUTER_NO_PROXY=e,g=!0),g?process.env.NINE_ROUTER_PROXY_MANAGED="1":f&&delete process.env.NINE_ROUTER_PROXY_MANAGED}(a),_=!0}catch(a){console.error("[ServerInit] Error initializing outbound proxy:",a)}return _})().catch(console.log);var aa=c(26892),ab=c(85117);(0,aa.wJ)();let ac={title:"aRouter - Power by C' Jay Nguyen",description:"One endpoint for all your AI providers. Manage keys, monitor usage, and scale effortlessly.",icons:{icon:"/favicon.svg"}},ad={themeColor:"#0a0a0a"};function ae({children:a}){return(0,d.jsxs)("html",{lang:"en",suppressHydrationWarning:!0,children:[(0,d.jsxs)("head",{children:[(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.googleapis.com"}),(0,d.jsx)("link",{rel:"preconnect",href:"https://fonts.gstatic.com",crossOrigin:"anonymous"}),(0,d.jsx)("link",{href:"https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200&display=swap",rel:"stylesheet"})]}),(0,d.jsx)("body",{className:`${f().variable} font-sans antialiased`,children:(0,d.jsx)(g.ThemeProvider,{children:(0,d.jsx)(ab.RuntimeI18nProvider,{children:a})})})]})}},61135:()=>{},69974:(a,b,c)=>{"use strict";c.d(b,{Xg:()=>j,KC:()=>k});var d=c(21820);let e={"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,interleaved-thinking-2025-05-14"},f="https://api.kimi.com/coding/v1/messages",g={claude:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{"Anthropic-Version":"2023-06-01","Anthropic-Beta":"claude-code-20250219,oauth-2025-04-20,interleaved-thinking-2025-05-14,fine-grained-tool-streaming-2025-05-14,context-management-2025-06-27,prompt-caching-scope-2026-01-05","Anthropic-Dangerous-Direct-Browser-Access":"true","User-Agent":"claude-cli/2.1.63 (external, cli)","X-App":"cli","X-Stainless-Helper-Method":"stream","X-Stainless-Retry-Count":"0","X-Stainless-Runtime-Version":"v24.3.0","X-Stainless-Package-Version":"0.74.0","X-Stainless-Runtime":"node","X-Stainless-Lang":"js","X-Stainless-Arch":function(){switch((0,d.arch)()){case"x64":return"x64";case"arm64":return"arm64";case"ia32":return"x86";default:return`other::${(0,d.arch)()}`}}(),"X-Stainless-Os":function(){switch((0,d.platform)()){case"darwin":return"MacOS";case"win32":return"Windows";case"linux":return"Linux";case"freebsd":return"FreeBSD";default:return`Other::${(0,d.platform)()}`}}(),"X-Stainless-Timeout":"600"},clientId:"9d1c250a-e61b-44d9-88ed-5944d1962f5e",tokenUrl:"https://api.anthropic.com/v1/oauth/token"},gemini:{baseUrl:"https://generativelanguage.googleapis.com/v1beta/models",format:"gemini",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},"gemini-cli":{baseUrl:"https://cloudcode-pa.googleapis.com/v1internal",format:"gemini-cli",clientId:"681255809395-oo8ft2oprdrnp9e3aqf6av3hmdib135j.apps.googleusercontent.com",clientSecret:"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"},codex:{baseUrl:"https://chatgpt.com/backend-api/codex/responses",format:"openai-responses",headers:{originator:"codex-cli","User-Agent":"codex-cli/1.0.18 (macOS; arm64)"},clientId:"app_EMoamEEZ73f0CkXaXp7hrann",clientSecret:"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",tokenUrl:"https://auth.openai.com/oauth/token"},qwen:{baseUrl:"https://portal.qwen.ai/v1/chat/completions",format:"openai",headers:{"User-Agent":"google-api-nodejs-client/9.15.1","X-Goog-Api-Client":"gl-node/22.17.0"},clientId:"f0304373b74a44d2b584a3fb70ca9e56",tokenUrl:"https://chat.qwen.ai/api/v1/oauth2/token",authUrl:"https://chat.qwen.ai/api/v1/oauth2/device/code"},iflow:{baseUrl:"https://apis.iflow.cn/v1/chat/completions",format:"openai",headers:{"User-Agent":"iFlow-Cli"},clientId:"10009311001",clientSecret:"4Z3YjXycVsQvyGF1etiNlIBB4RsqSDtW",tokenUrl:"https://iflow.cn/oauth/token",authUrl:"https://iflow.cn/oauth"},antigravity:{baseUrls:["https://daily-cloudcode-pa.googleapis.com","https://daily-cloudcode-pa.sandbox.googleapis.com"],format:"antigravity",headers:{"User-Agent":`antigravity/1.107.0 ${(0,d.platform)()}/${(0,d.arch)()}`},clientId:"1071006060591-tmhssin2h21lcre235vtolojh4g403ep.apps.googleusercontent.com",clientSecret:"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"},openrouter:{baseUrl:"https://openrouter.ai/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://endpoint-proxy.local","X-Title":"Endpoint Proxy"}},openai:{baseUrl:"https://api.openai.com/v1/chat/completions",format:"openai"},glm:{baseUrl:"https://api.z.ai/api/anthropic/v1/messages",format:"claude",headers:{...e}},"glm-cn":{baseUrl:"https://open.bigmodel.cn/api/coding/paas/v4/chat/completions",format:"openai",headers:{}},kimi:{baseUrl:f,format:"claude",headers:{...e}},minimax:{baseUrl:"https://api.minimax.io/anthropic/v1/messages",format:"claude",headers:{...e}},"minimax-cn":{baseUrl:"https://api.minimaxi.com/anthropic/v1/messages",format:"claude",headers:{...e}},alicode:{baseUrl:"https://coding.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},"alicode-intl":{baseUrl:"https://coding-intl.dashscope.aliyuncs.com/v1/chat/completions",format:"openai",headers:{}},github:{baseUrl:"https://api.githubcopilot.com/chat/completions",responsesUrl:"https://api.githubcopilot.com/responses",format:"openai",headers:{"copilot-integration-id":"vscode-chat","editor-version":"vscode/1.110.0","editor-plugin-version":"copilot-chat/0.38.0","user-agent":"GitHubCopilotChat/0.38.0","openai-intent":"conversation-panel","x-github-api-version":"2025-04-01","x-vscode-user-agent-library-version":"electron-fetch","X-Initiator":"user",Accept:"application/json","Content-Type":"application/json"}},kiro:{baseUrl:"https://codewhisperer.us-east-1.amazonaws.com/generateAssistantResponse",format:"kiro",headers:{"Content-Type":"application/json",Accept:"application/vnd.amazon.eventstream","X-Amz-Target":"AmazonCodeWhispererStreamingService.GenerateAssistantResponse","User-Agent":"AWS-SDK-JS/3.0.0 kiro-ide/1.0.0","X-Amz-User-Agent":"aws-sdk-js/3.0.0 kiro-ide/1.0.0"},tokenUrl:"https://prod.us-east-1.auth.desktop.kiro.dev/refreshToken",authUrl:"https://prod.us-east-1.auth.desktop.kiro.dev"},cursor:{baseUrl:"https://api2.cursor.sh",chatPath:"/aiserver.v1.ChatService/StreamUnifiedChatWithTools",format:"cursor",headers:{"connect-accept-encoding":"gzip","connect-protocol-version":"1","Content-Type":"application/connect+proto","User-Agent":"connect-es/1.6.1"},clientVersion:"1.1.3"},"kimi-coding":{baseUrl:f,format:"claude",headers:{...e},clientId:"17e5f671-d194-4dfb-9706-5516cb48c098",tokenUrl:"https://auth.kimi.com/api/oauth/token",refreshUrl:"https://auth.kimi.com/api/oauth/token"},kilocode:{baseUrl:"https://api.kilo.ai/api/openrouter/chat/completions",format:"openai",headers:{}},cline:{baseUrl:"https://api.cline.bot/api/v1/chat/completions",format:"openai",headers:{"HTTP-Referer":"https://cline.bot","X-Title":"Cline"},tokenUrl:"https://api.cline.bot/api/v1/auth/token",refreshUrl:"https://api.cline.bot/api/v1/auth/refresh"},nvidia:{baseUrl:"https://integrate.api.nvidia.com/v1/chat/completions",format:"openai"},anthropic:{baseUrl:"https://api.anthropic.com/v1/messages",format:"claude",headers:{...e}},deepseek:{baseUrl:"https://api.deepseek.com/chat/completions",format:"openai"},groq:{baseUrl:"https://api.groq.com/openai/v1/chat/completions",format:"openai"},xai:{baseUrl:"https://api.x.ai/v1/chat/completions",format:"openai"},mistral:{baseUrl:"https://api.mistral.ai/v1/chat/completions",format:"openai"},perplexity:{baseUrl:"https://api.perplexity.ai/chat/completions",format:"openai"},together:{baseUrl:"https://api.together.xyz/v1/chat/completions",format:"openai"},fireworks:{baseUrl:"https://api.fireworks.ai/inference/v1/chat/completions",format:"openai"},cerebras:{baseUrl:"https://api.cerebras.ai/v1/chat/completions",format:"openai"},cohere:{baseUrl:"https://api.cohere.ai/v1/chat/completions",format:"openai"},nebius:{baseUrl:"https://api.studio.nebius.ai/v1/chat/completions",format:"openai"},siliconflow:{baseUrl:"https://api.siliconflow.cn/v1/chat/completions",format:"openai"},hyperbolic:{baseUrl:"https://api.hyperbolic.xyz/v1/chat/completions",format:"openai"},deepgram:{baseUrl:"https://api.deepgram.com/v1/listen",format:"openai"},assemblyai:{baseUrl:"https://api.assemblyai.com/v1/audio/transcriptions",format:"openai"},nanobanana:{baseUrl:"https://api.nanobananaapi.ai/v1/chat/completions",format:"openai"},chutes:{baseUrl:"https://llm.chutes.ai/v1/chat/completions",format:"openai"},ollama:{baseUrl:"https://ollama.com/api/chat",format:"ollama"},"ollama-local":{baseUrl:"http://localhost:11434/api/chat",format:"ollama"},vertex:{baseUrl:"https://aiplatform.googleapis.com",format:"gemini"},"vertex-partner":{baseUrl:"https://aiplatform.googleapis.com",format:"openai"}},h={cc:[{id:"claude-opus-4-6",name:"Claude Opus 4.6"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-5-20251101",name:"Claude 4.5 Opus"},{id:"claude-sonnet-4-5-20250929",name:"Claude 4.5 Sonnet"},{id:"claude-haiku-4-5-20251001",name:"Claude 4.5 Haiku"}],cx:[{id:"gpt-5.4",name:"GPT 5.4"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"},{id:"gpt-5.3-codex-xhigh",name:"GPT 5.3 Codex (xHigh)"},{id:"gpt-5.3-codex-high",name:"GPT 5.3 Codex (High)"},{id:"gpt-5.3-codex-low",name:"GPT 5.3 Codex (Low)"},{id:"gpt-5.3-codex-none",name:"GPT 5.3 Codex (None)"},{id:"gpt-5.3-codex-spark",name:"GPT 5.3 Codex Spark"},{id:"gpt-5.1-codex-mini",name:"GPT 5.1 Codex Mini"},{id:"gpt-5.1-codex-mini-high",name:"GPT 5.1 Codex Mini (High)"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.1-codex-max",name:"GPT 5.1 Codex Max"},{id:"gpt-5.1-codex",name:"GPT 5.1 Codex"},{id:"gpt-5.1",name:"GPT 5.1"},{id:"gpt-5-codex",name:"GPT 5 Codex"},{id:"gpt-5-codex-mini",name:"GPT 5 Codex Mini"}],gc:[{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"}],qw:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-coder-flash",name:"Qwen3 Coder Flash"},{id:"vision-model",name:"Qwen3 Vision Model"},{id:"coder-model",name:"Qwen3.5 Coder Model"}],if:[{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"qwen3-max",name:"Qwen3 Max"},{id:"qwen3-vl-plus",name:"Qwen3 VL Plus"},{id:"qwen3-max-preview",name:"Qwen3 Max Preview"},{id:"qwen3-235b",name:"Qwen3 235B A22B"},{id:"qwen3-235b-a22b-instruct",name:"Qwen3 235B A22B Instruct"},{id:"qwen3-235b-a22b-thinking-2507",name:"Qwen3 235B A22B Thinking"},{id:"qwen3-32b",name:"Qwen3 32B"},{id:"kimi-k2",name:"Kimi K2"},{id:"deepseek-v3.2",name:"DeepSeek V3.2 Exp"},{id:"deepseek-v3.1",name:"DeepSeek V3.1 Terminus"},{id:"deepseek-v3",name:"DeepSeek V3 671B"},{id:"deepseek-r1",name:"DeepSeek R1"},{id:"glm-4.7",name:"GLM 4.7"},{id:"iflow-rome-30ba3b",name:"iFlow ROME"}],ag:[{id:"gemini-3.1-pro-high",name:"Gemini 3 Pro High"},{id:"gemini-3.1-pro-low",name:"Gemini 3 Pro Low"},{id:"gemini-3-flash",name:"Gemini 3 Flash"},{id:"claude-sonnet-4-6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4-6-thinking",name:"Claude Opus 4.6 Thinking"},{id:"gpt-oss-120b-medium",name:"GPT OSS 120B Medium"}],gh:[{id:"gpt-3.5-turbo",name:"GPT-3.5 Turbo"},{id:"gpt-4",name:"GPT-4"},{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-4o-mini",name:"GPT-4o mini"},{id:"gpt-4.1",name:"GPT-4.1"},{id:"gpt-5",name:"GPT-5"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-5-codex",name:"GPT-5 Codex"},{id:"gpt-5.1",name:"GPT-5.1"},{id:"gpt-5.1-codex",name:"GPT-5.1 Codex"},{id:"gpt-5.1-codex-mini",name:"GPT-5.1 Codex Mini"},{id:"gpt-5.1-codex-max",name:"GPT-5.1 Codex Max"},{id:"gpt-5.2",name:"GPT-5.2"},{id:"gpt-5.2-codex",name:"GPT-5.2 Codex"},{id:"gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"gpt-5.4",name:"GPT-5.4"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"claude-opus-4.1",name:"Claude Opus 4.1"},{id:"claude-opus-4.5",name:"Claude Opus 4.5"},{id:"claude-sonnet-4",name:"Claude Sonnet 4"},{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"claude-opus-4.6",name:"Claude Opus 4.6"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro"},{id:"grok-code-fast-1",name:"Grok Code Fast 1"},{id:"oswe-vscode-prime",name:"Raptor Mini"}],kr:[{id:"claude-sonnet-4.5",name:"Claude Sonnet 4.5"},{id:"claude-haiku-4.5",name:"Claude Haiku 4.5"},{id:"deepseek-3.2",name:"DeepSeek 3.2"},{id:"deepseek-3.1",name:"DeepSeek 3.1"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"}],cu:[{id:"default",name:"Auto (Server Picks)"},{id:"claude-4.5-opus-high-thinking",name:"Claude 4.5 Opus High Thinking"},{id:"claude-4.5-opus-high",name:"Claude 4.5 Opus High"},{id:"claude-4.5-sonnet-thinking",name:"Claude 4.5 Sonnet Thinking"},{id:"claude-4.5-sonnet",name:"Claude 4.5 Sonnet"},{id:"claude-4.5-haiku",name:"Claude 4.5 Haiku"},{id:"claude-4.5-opus",name:"Claude 4.5 Opus"},{id:"gpt-5.2-codex",name:"GPT 5.2 Codex"},{id:"claude-4.6-opus-max",name:"Claude 4.6 Opus Max"},{id:"claude-4.6-sonnet-medium-thinking",name:"Claude 4.6 Sonnet Medium Thinking"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gpt-5.2",name:"GPT 5.2"},{id:"gpt-5.3-codex",name:"GPT 5.3 Codex"}],kmc:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],kc:[{id:"anthropic/claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"anthropic/claude-opus-4-20250514",name:"Claude Opus 4"},{id:"google/gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"google/gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"openai/gpt-4.1",name:"GPT-4.1"},{id:"openai/o3",name:"o3"},{id:"deepseek/deepseek-chat",name:"DeepSeek Chat"},{id:"deepseek/deepseek-reasoner",name:"DeepSeek Reasoner"}],cl:[{id:"anthropic/claude-sonnet-4.6",name:"Claude Sonnet 4.6"},{id:"anthropic/claude-opus-4.6",name:"Claude Opus 4.6"},{id:"openai/gpt-5.3-codex",name:"GPT-5.3 Codex"},{id:"openai/gpt-5.4",name:"GPT-5.4"},{id:"google/gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"google/gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"kwaipilot/kat-coder-pro",name:"KAT Coder Pro"}],openai:[{id:"gpt-4o",name:"GPT-4o"},{id:"gpt-5-mini",name:"GPT-5 Mini"},{id:"gpt-4-turbo",name:"GPT-4 Turbo"},{id:"o1",name:"O1"},{id:"o1-mini",name:"O1 Mini"}],anthropic:[{id:"claude-sonnet-4-20250514",name:"Claude Sonnet 4"},{id:"claude-opus-4-20250514",name:"Claude Opus 4"},{id:"claude-3-5-sonnet-20241022",name:"Claude 3.5 Sonnet"}],gemini:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-pro-preview",name:"Gemini 3 Pro Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-pro",name:"Gemini 2.5 Pro"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"},{id:"gemini-2.5-flash-lite",name:"Gemini 2.5 Flash Lite"},{id:"gemini-embedding-001",name:"Gemini Embedding 001",type:"embedding"},{id:"text-embedding-005",name:"Text Embedding 005",type:"embedding"},{id:"text-embedding-004",name:"Text Embedding 004 (Legacy)",type:"embedding"}],openrouter:[{id:"auto",name:"Auto (Best Available)"}],glm:[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM 4.7"},{id:"glm-4.6v",name:"GLM 4.6V (Vision)"}],"glm-cn":[{id:"glm-5",name:"GLM 5"},{id:"glm-4.7",name:"GLM-4.7"},{id:"glm-4.6",name:"GLM-4.6"},{id:"glm-4.5-air",name:"GLM-4.5-Air"}],kimi:[{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"kimi-k2.5-thinking",name:"Kimi K2.5 Thinking"},{id:"kimi-latest",name:"Kimi Latest"}],minimax:[{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],"minimax-cn":[{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"MiniMax-M2.1",name:"MiniMax M2.1"}],alicode:[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-max-2026-01-23",name:"Qwen3 Max"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],"alicode-intl":[{id:"qwen3.5-plus",name:"Qwen3.5 Plus"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"MiniMax-M2.5",name:"MiniMax M2.5"},{id:"qwen3-coder-next",name:"Qwen3 Coder Next"},{id:"qwen3-coder-plus",name:"Qwen3 Coder Plus"},{id:"glm-4.7",name:"GLM 4.7"}],deepseek:[{id:"deepseek-chat",name:"DeepSeek V3.2 Chat"},{id:"deepseek-reasoner",name:"DeepSeek V3.2 Reasoner"}],groq:[{id:"llama-3.3-70b-versatile",name:"Llama 3.3 70B"},{id:"meta-llama/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"qwen/qwen3-32b",name:"Qwen3 32B"},{id:"openai/gpt-oss-120b",name:"GPT-OSS 120B"}],xai:[{id:"grok-4",name:"Grok 4"},{id:"grok-4-fast-reasoning",name:"Grok 4 Fast Reasoning"},{id:"grok-code-fast-1",name:"Grok Code Fast"},{id:"grok-3",name:"Grok 3"}],mistral:[{id:"mistral-large-latest",name:"Mistral Large 3"},{id:"codestral-latest",name:"Codestral"},{id:"mistral-medium-latest",name:"Mistral Medium 3"}],perplexity:[{id:"sonar-pro",name:"Sonar Pro"},{id:"sonar",name:"Sonar"}],together:[{id:"meta-llama/Llama-3.3-70B-Instruct-Turbo",name:"Llama 3.3 70B Turbo"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B",name:"Qwen3 235B"},{id:"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8",name:"Llama 4 Maverick"}],fireworks:[{id:"accounts/fireworks/models/deepseek-v3p1",name:"DeepSeek V3.1"},{id:"accounts/fireworks/models/llama-v3p3-70b-instruct",name:"Llama 3.3 70B"},{id:"accounts/fireworks/models/qwen3-235b-a22b",name:"Qwen3 235B"}],cerebras:[{id:"gpt-oss-120b",name:"GPT OSS 120B"},{id:"zai-glm-4.7",name:"ZAI GLM 4.7"},{id:"llama-3.3-70b",name:"Llama 3.3 70B"},{id:"llama-4-scout-17b-16e-instruct",name:"Llama 4 Scout"},{id:"qwen-3-235b-a22b-instruct-2507",name:"Qwen3 235B A22B"},{id:"qwen-3-32b",name:"Qwen3 32B"}],cohere:[{id:"command-r-plus-08-2024",name:"Command R+ (Aug 2024)"},{id:"command-r-08-2024",name:"Command R (Aug 2024)"},{id:"command-a-03-2025",name:"Command A (Mar 2025)"}],nvidia:[{id:"moonshotai/kimi-k2.5",name:"Kimi K2.5"},{id:"z-ai/glm4.7",name:"GLM 4.7"},{id:"deepseek-ai/deepseek-v3.2",name:"DeepSeek V3.2"},{id:"nvidia/llama-3.3-70b-instruct",name:"Llama 3.3 70B"},{id:"meta/llama-4-maverick-17b-128e-instruct",name:"Llama 4 Maverick"},{id:"deepseek/deepseek-r1",name:"DeepSeek R1"}],nebius:[{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B Instruct"}],siliconflow:[{id:"deepseek-ai/DeepSeek-V3.2",name:"DeepSeek V3.2"},{id:"deepseek-ai/DeepSeek-V3.1",name:"DeepSeek V3.1"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"Qwen/Qwen3-235B-A22B-Instruct-2507",name:"Qwen3 235B"},{id:"Qwen/Qwen3-Coder-480B-A35B-Instruct",name:"Qwen3 Coder 480B"},{id:"Qwen/Qwen3-32B",name:"Qwen3 32B"},{id:"moonshotai/Kimi-K2.5",name:"Kimi K2.5"},{id:"zai-org/GLM-4.7",name:"GLM 4.7"},{id:"openai/gpt-oss-120b",name:"GPT OSS 120B"},{id:"baidu/ERNIE-4.5-300B-A47B",name:"ERNIE 4.5 300B"}],hyperbolic:[{id:"Qwen/QwQ-32B",name:"QwQ 32B"},{id:"deepseek-ai/DeepSeek-R1",name:"DeepSeek R1"},{id:"deepseek-ai/DeepSeek-V3",name:"DeepSeek V3"},{id:"meta-llama/Llama-3.3-70B-Instruct",name:"Llama 3.3 70B"},{id:"meta-llama/Llama-3.2-3B-Instruct",name:"Llama 3.2 3B"},{id:"Qwen/Qwen2.5-72B-Instruct",name:"Qwen 2.5 72B"},{id:"Qwen/Qwen2.5-Coder-32B-Instruct",name:"Qwen 2.5 Coder 32B"},{id:"NousResearch/Hermes-3-Llama-3.1-70B",name:"Hermes 3 70B"}],ollama:[{id:"gpt-oss:120b",name:"GPT OSS 120B"},{id:"kimi-k2.5",name:"Kimi K2.5"},{id:"glm-5",name:"GLM 5"},{id:"minimax-m2.5",name:"MiniMax M2.5"},{id:"glm-4.7-flash",name:"GLM 4.7 Flash"},{id:"qwen3.5",name:"Qwen3.5"}],vertex:[{id:"gemini-3.1-pro-preview",name:"Gemini 3.1 Pro Preview"},{id:"gemini-3.1-flash-lite-preview",name:"Gemini 3.1 Flash Lite Preview"},{id:"gemini-3-flash-preview",name:"Gemini 3 Flash Preview"},{id:"gemini-2.5-flash",name:"Gemini 2.5 Flash"}],"vertex-partner":[{id:"deepseek-ai/deepseek-v3.2-maas",name:"DeepSeek V3.2 (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-thinking-maas",name:"Qwen3 Next 80B Thinking (Vertex)"},{id:"qwen/qwen3-next-80b-a3b-instruct-maas",name:"Qwen3 Next 80B Instruct (Vertex)"},{id:"zai-org/glm-5-maas",name:"GLM-5 (Vertex)"}]},i={claude:"cc",codex:"cx","gemini-cli":"gc",qwen:"qw",iflow:"if",antigravity:"ag",github:"gh",kiro:"kr",cursor:"cu","kimi-coding":"kmc",kilocode:"kc",cline:"cl",vertex:"vertex","vertex-partner":"vertex-partner"},j=Object.fromEntries(Object.keys(g).map(a=>[a,i[a]||a]));function k(a){return h[j[a]||a]||[]}Object.entries(c(96919).Q2).filter(([,a])=>a.passthroughModels).map(([a])=>a),Object.entries(h).flatMap(([a,b])=>b.map(b=>({provider:a,model:b.id,name:b.name})))},80424:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,95547,23)),Promise.resolve().then(c.t.bind(c,15098,23)),Promise.resolve().then(c.t.bind(c,47644,23)),Promise.resolve().then(c.t.bind(c,33859,23)),Promise.resolve().then(c.t.bind(c,98099,23)),Promise.resolve().then(c.t.bind(c,16237,23)),Promise.resolve().then(c.t.bind(c,98562,23)),Promise.resolve().then(c.t.bind(c,36675,23))},85117:(a,b,c)=>{"use strict";c.d(b,{RuntimeI18nProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call RuntimeI18nProvider() from the server but RuntimeI18nProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/nip/Desktop/WORKSPACE/iCheck/iCheck.AI.Workflows/arouter/src/i18n/RuntimeI18nProvider.js","RuntimeI18nProvider")},85846:(a,b,c)=>{Promise.resolve().then(c.bind(c,85117)),Promise.resolve().then(c.bind(c,89886))},89886:(a,b,c)=>{"use strict";c.d(b,{ThemeProvider:()=>d});let d=(0,c(77943).registerClientReference)(function(){throw Error("Attempted to call ThemeProvider() from the server but ThemeProvider is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/Users/nip/Desktop/WORKSPACE/iCheck/iCheck.AI.Workflows/arouter/src/shared/components/ThemeProvider.js","ThemeProvider")},96919:(a,b,c)=>{"use strict";c.d(b,{Q2:()=>h,fg:()=>e,gb:()=>g,mq:()=>f,zN:()=>d});let d={claude:{id:"claude",alias:"cc",name:"Claude Code",icon:"smart_toy",color:"#D97757"},antigravity:{id:"antigravity",alias:"ag",name:"Antigravity",icon:"rocket_launch",color:"#F59E0B"},codex:{id:"codex",alias:"cx",name:"OpenAI Codex",icon:"code",color:"#3B82F6"},github:{id:"github",alias:"gh",name:"GitHub Copilot",icon:"code",color:"#333333"},cursor:{id:"cursor",alias:"cu",name:"Cursor IDE",icon:"edit_note",color:"#00D4AA"},kilocode:{id:"kilocode",alias:"kc",name:"Kilo Code",icon:"code",color:"#FF6B35",textIcon:"KC"},cline:{id:"cline",alias:"cl",name:"Cline",icon:"smart_toy",color:"#5B9BD5",textIcon:"CL"}},e={openrouter:{id:"openrouter",alias:"openrouter",name:"OpenRouter",icon:"router",color:"#F97316",textIcon:"OR",passthroughModels:!0,website:"https://openrouter.ai"},glm:{id:"glm",alias:"glm",name:"GLM Coding",icon:"code",color:"#2563EB",textIcon:"GL",website:"https://open.bigmodel.cn"},"glm-cn":{id:"glm-cn",alias:"glm-cn",name:"GLM (China)",icon:"code",color:"#DC2626",textIcon:"GC",website:"https://open.bigmodel.cn"},kimi:{id:"kimi",alias:"kimi",name:"Kimi",icon:"psychology",color:"#1E3A8A",textIcon:"KM",website:"https://kimi.moonshot.cn"},minimax:{id:"minimax",alias:"minimax",name:"Minimax Coding",icon:"memory",color:"#7C3AED",textIcon:"MM",website:"https://www.minimaxi.com"},"minimax-cn":{id:"minimax-cn",alias:"minimax-cn",name:"Minimax (China)",icon:"memory",color:"#DC2626",textIcon:"MC",website:"https://www.minimaxi.com"},alicode:{id:"alicode",alias:"alicode",name:"Alibaba",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},"alicode-intl":{id:"alicode-intl",alias:"alicode-intl",name:"Alibaba Intl",icon:"cloud",color:"#FF6A00",textIcon:"ALi"},openai:{id:"openai",alias:"openai",name:"OpenAI",icon:"auto_awesome",color:"#10A37F",textIcon:"OA",website:"https://platform.openai.com"},anthropic:{id:"anthropic",alias:"anthropic",name:"Anthropic",icon:"smart_toy",color:"#D97757",textIcon:"AN",website:"https://console.anthropic.com"},gemini:{id:"gemini",alias:"gemini",name:"Gemini",icon:"diamond",color:"#4285F4",textIcon:"GE",website:"https://ai.google.dev"},deepseek:{id:"deepseek",alias:"ds",name:"DeepSeek",icon:"bolt",color:"#4D6BFE",textIcon:"DS",website:"https://deepseek.com"},groq:{id:"groq",alias:"groq",name:"Groq",icon:"speed",color:"#F55036",textIcon:"GQ",website:"https://groq.com"},xai:{id:"xai",alias:"xai",name:"xAI (Grok)",icon:"auto_awesome",color:"#1DA1F2",textIcon:"XA",website:"https://x.ai"},mistral:{id:"mistral",alias:"mistral",name:"Mistral",icon:"air",color:"#FF7000",textIcon:"MI",website:"https://mistral.ai"},perplexity:{id:"perplexity",alias:"pplx",name:"Perplexity",icon:"search",color:"#20808D",textIcon:"PP",website:"https://www.perplexity.ai"},together:{id:"together",alias:"together",name:"Together AI",icon:"group_work",color:"#0F6FFF",textIcon:"TG",website:"https://www.together.ai"},fireworks:{id:"fireworks",alias:"fireworks",name:"Fireworks AI",icon:"local_fire_department",color:"#7B2EF2",textIcon:"FW",website:"https://fireworks.ai"},cerebras:{id:"cerebras",alias:"cerebras",name:"Cerebras",icon:"memory",color:"#FF4F00",textIcon:"CB",website:"https://www.cerebras.ai"},cohere:{id:"cohere",alias:"cohere",name:"Cohere",icon:"hub",color:"#39594D",textIcon:"CO",website:"https://cohere.com"},nvidia:{id:"nvidia",alias:"nvidia",name:"NVIDIA NIM",icon:"developer_board",color:"#76B900",textIcon:"NV",website:"https://developer.nvidia.com/nim"},nebius:{id:"nebius",alias:"nebius",name:"Nebius AI",icon:"cloud",color:"#6C5CE7",textIcon:"NB",website:"https://nebius.com"},siliconflow:{id:"siliconflow",alias:"siliconflow",name:"SiliconFlow",icon:"cloud_queue",color:"#5B6EF5",textIcon:"SF",website:"https://cloud.siliconflow.com"},hyperbolic:{id:"hyperbolic",alias:"hyp",name:"Hyperbolic",icon:"bolt",color:"#00D4FF",textIcon:"HY",website:"https://hyperbolic.xyz"},deepgram:{id:"deepgram",alias:"dg",name:"Deepgram",icon:"mic",color:"#13EF93",textIcon:"DG",website:"https://deepgram.com"},assemblyai:{id:"assemblyai",alias:"aai",name:"AssemblyAI",icon:"record_voice_over",color:"#0062FF",textIcon:"AA",website:"https://assemblyai.com"},nanobanana:{id:"nanobanana",alias:"nb",name:"NanoBanana",icon:"image",color:"#FFD700",textIcon:"NB",website:"https://nanobananaapi.ai"},chutes:{id:"chutes",alias:"ch",name:"Chutes AI",icon:"water_drop",color:"#ffffffff",textIcon:"CH",website:"https://chutes.ai"},ollama:{id:"ollama",alias:"ollama",name:"Ollama Cloud",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},"ollama-local":{id:"ollama-local",alias:"ollama-local",name:"Ollama Local",icon:"cloud",color:"#ffffffff",textIcon:"OL",website:"https://ollama.com"},vertex:{id:"vertex",alias:"vx",name:"Vertex AI",icon:"cloud",color:"#4285F4",textIcon:"VX",website:"https://cloud.google.com/vertex-ai"},"vertex-partner":{id:"vertex-partner",alias:"vxp",name:"Vertex Partner",icon:"cloud",color:"#34A853",textIcon:"VP",website:"https://cloud.google.com/vertex-ai/generative-ai/docs/partner-models/use-partner-models"}};function f(a){return"string"==typeof a&&a.startsWith("openai-compatible-")}function g(a){return"string"==typeof a&&a.startsWith("anthropic-compatible-")}let h={iflow:{id:"iflow",alias:"if",name:"iFlow AI",icon:"water_drop",color:"#6366F1"},qwen:{id:"qwen",alias:"qw",name:"Qwen Code",icon:"psychology",color:"#10B981"},"gemini-cli":{id:"gemini-cli",alias:"gc",name:"Gemini CLI",icon:"terminal",color:"#4285F4"},kiro:{id:"kiro",alias:"kr",name:"Kiro AI",icon:"psychology_alt",color:"#FF6B35"},...d,...e};Object.values(h).reduce((a,b)=>(a[b.alias]=b.id,a),{}),Object.values(h).reduce((a,b)=>(a[b.id]=b.alias,a),{})},99258:(a,b,c)=>{"use strict";c.d(b,{FE:()=>k,Tl:()=>i,wn:()=>l});var d=c(51126);let e={},f=d.Xn,g=[];async function h(a){if("en"===a){e={};return}try{let b=await fetch(`/i18n/literals/${a}.json`);e=await b.json()}catch(a){console.error("Failed to load translations:",a),e={}}}function i(a){if(!a||"string"!=typeof a)return a;let b=a.trim();return b&&"en"!==f&&e[b]||a}function j(a){if(!a.nodeValue||!a.nodeValue.trim())return;let b=a.parentElement;if(!b)return;let c=b;for(;c;){if(c.hasAttribute&&c.hasAttribute("data-i18n-skip"))return;c=c.parentElement}if(["script","style","code","pre","colgroup","table","thead","tbody","tfoot","tr","select","datalist","optgroup"].includes(b.tagName?.toLowerCase()))return;a._originalText||(a._originalText=a.nodeValue);let d=i(a._originalText);d!==a.nodeValue&&(a.nodeValue=d)}async function k(){}async function l(){f=function(){if("u"<typeof document)return d.Xn;let a=document.cookie.split(";").find(a=>a.trim().startsWith(`${d.CL}=`)),b=a?decodeURIComponent(a.split("=")[1]):d.Xn;return(0,d.QC)(b)}(),await h(f),g.forEach(a=>a()),function(a){let b;if(!a)return;let c=document.createTreeWalker(a,NodeFilter.SHOW_TEXT,null,!1),d=[];for(;b=c.nextNode();)d.push(b);d.forEach(j)}(document.body)}}};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[558],{1743:()=>{},1934:(e,t,r)=>{"use strict";r.d(t,{v:()=>o});var n=r(2115);let a=e=>{let t,r=new Set,n=(e,n)=>{let a="function"==typeof e?e(t):e;if(!Object.is(a,t)){let e=t;t=(null!=n?n:"object"!=typeof a||null===a)?a:Object.assign({},t,a),r.forEach(r=>r(t,e))}},a=()=>t,i={setState:n,getState:a,getInitialState:()=>o,subscribe:e=>(r.add(e),()=>r.delete(e))},o=t=e(n,a,i);return i},i=e=>{let t=e?a(e):a,r=e=>(function(e,t=e=>e){let r=n.useSyncExternalStore(e.subscribe,n.useCallback(()=>t(e.getState()),[e,t]),n.useCallback(()=>t(e.getInitialState()),[e,t]));return n.useDebugValue(r),r})(t,e);return Object.assign(r,t),r},o=e=>e?i(e):i},3321:(e,t,r)=>{"use strict";var n=r(4645);r.o(n,"usePathname")&&r.d(t,{usePathname:function(){return n.usePathname}}),r.o(n,"useRouter")&&r.d(t,{useRouter:function(){return n.useRouter}})},3706:(e,t,r)=>{Promise.resolve().then(r.t.bind(r,5154,23)),Promise.resolve().then(r.t.bind(r,1743,23)),Promise.resolve().then(r.bind(r,4635)),Promise.resolve().then(r.bind(r,1110))},4635:(e,t,r)=>{"use strict";r.d(t,{RuntimeI18nProvider:()=>u});var n=r(5155),a=r(2115),i=r(3321),o=r(3006);function u({children:e}){let t=(0,i.usePathname)();return(0,a.useEffect)(()=>{(0,o.FE)()},[]),(0,a.useEffect)(()=>{t&&requestAnimationFrame(()=>{requestAnimationFrame(()=>{(0,o.wn)()})})},[t]),(0,n.jsx)(n.Fragment,{children:e})}},4642:e=>{var t;"u">typeof __nccwpck_require__&&(__nccwpck_require__.ab="//"),(t={}).endianness=function(){return"LE"},t.hostname=function(){return"u">typeof location?location.hostname:""},t.loadavg=function(){return[]},t.uptime=function(){return 0},t.freemem=function(){return Number.MAX_VALUE},t.totalmem=function(){return Number.MAX_VALUE},t.cpus=function(){return[]},t.type=function(){return"Browser"},t.release=function(){return"u">typeof navigator?navigator.appVersion:""},t.networkInterfaces=t.getNetworkInterfaces=function(){return{}},t.arch=function(){return"javascript"},t.platform=function(){return"browser"},t.tmpdir=t.tmpDir=function(){return"/tmp"},t.EOL="\n",t.homedir=function(){return"/"},e.exports=t},5154:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_f367f3",variable:"__variable_f367f3"}},9311:(e,t,r)=>{"use strict";r.d(t,{Zr:()=>a});let n=e=>t=>{try{let r=e(t);if(r instanceof Promise)return r;return{then:e=>n(e)(r),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>n(t)(e)}}},a=(e,t)=>(r,a,i)=>{let o,u={storage:function(e,t){let r;try{r=e()}catch(e){return}return{getItem:e=>{var t;let n=e=>null===e?null:JSON.parse(e,void 0),a=null!=(t=r.getItem(e))?t:null;return a instanceof Promise?a.then(n):n(a)},setItem:(e,t)=>r.setItem(e,JSON.stringify(t,void 0)),removeItem:e=>r.removeItem(e)}}(()=>window.localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},s=!1,l=0,c=new Set,m=new Set,f=u.storage;if(!f)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${u.name}', the given storage is currently unavailable.`),r(...e)},a,i);let d=()=>{let e=u.partialize({...a()});return f.setItem(u.name,{state:e,version:u.version})},v=i.setState;i.setState=(e,t)=>(v(e,t),d());let h=e((...e)=>(r(...e),d()),a,i);i.getInitialState=()=>h;let g=()=>{var e,t;if(!f)return;let i=++l;s=!1,c.forEach(e=>{var t;return e(null!=(t=a())?t:h)});let v=(null==(t=u.onRehydrateStorage)?void 0:t.call(u,null!=(e=a())?e:h))||void 0;return n(f.getItem.bind(f))(u.name).then(e=>{if(e)if("number"!=typeof e.version||e.version===u.version)return[!1,e.state];else{if(u.migrate){let t=u.migrate(e.state,e.version);return t instanceof Promise?t.then(e=>[!0,e]):[!0,t]}console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}return[!1,void 0]}).then(e=>{var t;if(i!==l)return;let[n,s]=e;if(r(o=u.merge(s,null!=(t=a())?t:h),!0),n)return d()}).then(()=>{i===l&&(null==v||v(a(),void 0),o=a(),s=!0,m.forEach(e=>e(o)))}).catch(e=>{i===l&&(null==v||v(void 0,e))})};return i.persist={setOptions:e=>{u={...u,...e},e.storage&&(f=e.storage)},clearStorage:()=>{null==f||f.removeItem(u.name)},getOptions:()=>u,rehydrate:()=>g(),hasHydrated:()=>s,onHydrate:e=>(c.add(e),()=>{c.delete(e)}),onFinishHydration:e=>(m.add(e),()=>{m.delete(e)})},u.skipHydration||g(),o||h}}},e=>{e.O(0,[930,702,441,794,358],()=>e(e.s=3706)),_N_E=e.O()}]);
|
|
File without changes
|
|
File without changes
|