zilmate 1.0.1 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.env.example +15 -0
- package/README.md +100 -1
- package/dist/agents/manager.d.ts +133 -0
- package/dist/agents/manager.d.ts.map +1 -1
- package/dist/agents/manager.js +23 -0
- package/dist/agents/manager.js.map +1 -1
- package/dist/cli/camera.d.ts +6 -0
- package/dist/cli/camera.d.ts.map +1 -0
- package/dist/cli/camera.js +27 -0
- package/dist/cli/camera.js.map +1 -0
- package/dist/cli/doctor.d.ts +4 -0
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +12 -1
- package/dist/cli/doctor.js.map +1 -1
- package/dist/cli/health.js +2 -0
- package/dist/cli/health.js.map +1 -1
- package/dist/cli/interactive.d.ts.map +1 -1
- package/dist/cli/interactive.js +42 -5
- package/dist/cli/interactive.js.map +1 -1
- package/dist/cli/menu.d.ts +1 -0
- package/dist/cli/menu.d.ts.map +1 -1
- package/dist/cli/menu.js +68 -0
- package/dist/cli/menu.js.map +1 -1
- package/dist/cli/setup.d.ts +12 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +316 -15
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/update.d.ts +8 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +94 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/voice.d.ts +8 -0
- package/dist/cli/voice.d.ts.map +1 -0
- package/dist/cli/voice.js +189 -0
- package/dist/cli/voice.js.map +1 -0
- package/dist/cli/welcome.d.ts.map +1 -1
- package/dist/cli/welcome.js +19 -0
- package/dist/cli/welcome.js.map +1 -1
- package/dist/config/env.d.ts +13 -0
- package/dist/config/env.d.ts.map +1 -1
- package/dist/config/env.js +20 -0
- package/dist/config/env.js.map +1 -1
- package/dist/config/models.d.ts +1 -0
- package/dist/config/models.d.ts.map +1 -1
- package/dist/config/models.js +1 -0
- package/dist/config/models.js.map +1 -1
- package/dist/index.js +259 -4
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +4 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +12 -0
- package/dist/server.js.map +1 -1
- package/dist/tools/desktop.tool.d.ts +58 -0
- package/dist/tools/desktop.tool.d.ts.map +1 -0
- package/dist/tools/desktop.tool.js +433 -0
- package/dist/tools/desktop.tool.js.map +1 -0
- package/dist/tools/filesystem.tool.d.ts +93 -0
- package/dist/tools/filesystem.tool.d.ts.map +1 -0
- package/dist/tools/filesystem.tool.js +303 -0
- package/dist/tools/filesystem.tool.js.map +1 -0
- package/dist/voice/cascade.d.ts +15 -0
- package/dist/voice/cascade.d.ts.map +1 -0
- package/dist/voice/cascade.js +306 -0
- package/dist/voice/cascade.js.map +1 -0
- package/dist/voice/deepgram.d.ts +22 -0
- package/dist/voice/deepgram.d.ts.map +1 -0
- package/dist/voice/deepgram.js +257 -0
- package/dist/voice/deepgram.js.map +1 -0
- package/dist/voice/terminal.d.ts +27 -0
- package/dist/voice/terminal.d.ts.map +1 -0
- package/dist/voice/terminal.js +448 -0
- package/dist/voice/terminal.js.map +1 -0
- package/dist/voice/types.d.ts +45 -0
- package/dist/voice/types.d.ts.map +1 -0
- package/dist/voice/types.js +2 -0
- package/dist/voice/types.js.map +1 -0
- package/package.json +4 -1
package/dist/cli/setup.js
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { readFile, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { randomBytes, randomUUID } from 'node:crypto';
|
|
4
|
+
import { execFile, spawn } from 'node:child_process';
|
|
5
|
+
import { promisify } from 'node:util';
|
|
4
6
|
import readline from 'node:readline/promises';
|
|
5
7
|
import { stdin as input, stdout as output } from 'node:process';
|
|
6
8
|
import chalk from 'chalk';
|
|
7
9
|
import { printPanel, printZilMateBanner } from './format.js';
|
|
10
|
+
import { runCameraDoctor } from '../tools/desktop.tool.js';
|
|
11
|
+
const execFileAsync = promisify(execFile);
|
|
8
12
|
const defaults = {
|
|
9
13
|
ZILO_MANAGER_MODEL: 'minimax/minimax-m3',
|
|
10
14
|
ZILO_HELP_MODEL: 'alibaba/qwen3.7-plus',
|
|
@@ -13,6 +17,10 @@ const defaults = {
|
|
|
13
17
|
ZILO_IMAGE_OPENAI_MODEL: 'openai/gpt-image-2',
|
|
14
18
|
ZILO_IMAGE_GEMINI_MODEL: 'google/gemini-3-pro-image',
|
|
15
19
|
ZILO_IMAGE_MODEL: '',
|
|
20
|
+
ZILMATE_VOICE_INPUT_DEVICE: '',
|
|
21
|
+
ZILMATE_SCREENSHOT_MODEL: 'google/gemini-3.1-flash-lite',
|
|
22
|
+
ZILMATE_CAMERA_DEVICE: '',
|
|
23
|
+
ZILMATE_FILE_ROOTS: '',
|
|
16
24
|
};
|
|
17
25
|
function normalizeBooleanOption(value, fallback = false) {
|
|
18
26
|
if (value === undefined)
|
|
@@ -65,6 +73,66 @@ async function askYesNo(rl, prompt, defaultValue = false) {
|
|
|
65
73
|
return defaultValue;
|
|
66
74
|
return answer === 'y' || answer === 'yes';
|
|
67
75
|
}
|
|
76
|
+
async function askSection(rl, title, description, prompt, defaultValue = false) {
|
|
77
|
+
console.log(chalk.cyan(`\n${title}`));
|
|
78
|
+
console.log(chalk.gray(description));
|
|
79
|
+
return askYesNo(rl, prompt, defaultValue);
|
|
80
|
+
}
|
|
81
|
+
async function commandExists(command) {
|
|
82
|
+
const probe = process.platform === 'win32' ? 'where.exe' : 'which';
|
|
83
|
+
try {
|
|
84
|
+
await execFileAsync(probe, [command], { windowsHide: true, timeout: 5000 });
|
|
85
|
+
return true;
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return false;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
function cameraInstallCommand() {
|
|
92
|
+
if (process.platform === 'win32') {
|
|
93
|
+
return {
|
|
94
|
+
command: 'winget',
|
|
95
|
+
args: ['install', '--id', 'Gyan.FFmpeg', '-e', '--accept-package-agreements', '--accept-source-agreements'],
|
|
96
|
+
label: 'winget install --id Gyan.FFmpeg -e',
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
if (process.platform === 'darwin')
|
|
100
|
+
return { command: 'brew', args: ['install', 'ffmpeg'], label: 'brew install ffmpeg' };
|
|
101
|
+
if (process.platform === 'linux')
|
|
102
|
+
return { command: 'sudo', args: ['apt-get', 'install', '-y', 'ffmpeg'], label: 'sudo apt-get install -y ffmpeg' };
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
async function installCameraDependency() {
|
|
106
|
+
const install = cameraInstallCommand();
|
|
107
|
+
if (!install) {
|
|
108
|
+
console.log(chalk.yellow('No automatic ffmpeg installer is known for this OS. Install ffmpeg manually, then run `zilmate camera doctor`.'));
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
if (process.platform === 'win32' && !(await commandExists('winget'))) {
|
|
112
|
+
console.log(chalk.yellow('winget is not available. Install ffmpeg manually or with another package manager, then run `zilmate camera doctor`.'));
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
if (process.platform === 'darwin' && !(await commandExists('brew'))) {
|
|
116
|
+
console.log(chalk.yellow('Homebrew is not available. Install Homebrew or install ffmpeg manually, then run `zilmate camera doctor`.'));
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
if (process.platform === 'linux' && !(await commandExists('sudo'))) {
|
|
120
|
+
console.log(chalk.yellow(`Automatic install needs sudo. Run manually: ${install.label}`));
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
console.log(chalk.gray(`Running: ${install.label}`));
|
|
124
|
+
await new Promise((resolve, reject) => {
|
|
125
|
+
const child = spawn(install.command, install.args, { stdio: 'inherit', windowsHide: false });
|
|
126
|
+
child.on('error', reject);
|
|
127
|
+
child.on('close', (code) => {
|
|
128
|
+
if (code === 0)
|
|
129
|
+
resolve();
|
|
130
|
+
else
|
|
131
|
+
reject(new Error(`${install.label} exited with code ${code}`));
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
return commandExists('ffmpeg');
|
|
135
|
+
}
|
|
68
136
|
function buildEnv(values) {
|
|
69
137
|
const lines = [
|
|
70
138
|
['AI_GATEWAY_API_KEY', values.get('AI_GATEWAY_API_KEY') || ''],
|
|
@@ -78,6 +146,19 @@ function buildEnv(values) {
|
|
|
78
146
|
['ZILMATE_PUBLIC_JOB_WEBHOOK_URL', values.get('ZILMATE_PUBLIC_JOB_WEBHOOK_URL') || ''],
|
|
79
147
|
['ZILMATE_JOB_WEBHOOK_SECRET', values.get('ZILMATE_JOB_WEBHOOK_SECRET') || ''],
|
|
80
148
|
['ZILMATE_TRIGGER_WORKFLOWS_ENABLED', values.get('ZILMATE_TRIGGER_WORKFLOWS_ENABLED') || 'false'],
|
|
149
|
+
['DEEPGRAM_API_KEY', values.get('DEEPGRAM_API_KEY') || ''],
|
|
150
|
+
['ZILMATE_VOICE_ENABLED', values.get('ZILMATE_VOICE_ENABLED') || 'false'],
|
|
151
|
+
['ZILMATE_VOICE_MODE', values.get('ZILMATE_VOICE_MODE') || 'agent'],
|
|
152
|
+
['ZILMATE_VOICE_LISTEN_MODEL', values.get('ZILMATE_VOICE_LISTEN_MODEL') || 'flux-general-en'],
|
|
153
|
+
['ZILMATE_VOICE_LISTEN_VERSION', values.get('ZILMATE_VOICE_LISTEN_VERSION') || 'v2'],
|
|
154
|
+
['ZILMATE_VOICE_TTS_MODEL', values.get('ZILMATE_VOICE_TTS_MODEL') || 'aura-2-thalia-en'],
|
|
155
|
+
['ZILMATE_VOICE_LANGUAGE', values.get('ZILMATE_VOICE_LANGUAGE') || 'en'],
|
|
156
|
+
['ZILMATE_VOICE_LANGUAGE_HINTS', values.get('ZILMATE_VOICE_LANGUAGE_HINTS') || ''],
|
|
157
|
+
['ZILMATE_VOICE_BARGE_IN', values.get('ZILMATE_VOICE_BARGE_IN') || 'true'],
|
|
158
|
+
['ZILMATE_VOICE_INPUT_DEVICE', values.get('ZILMATE_VOICE_INPUT_DEVICE') || defaults.ZILMATE_VOICE_INPUT_DEVICE],
|
|
159
|
+
['ZILMATE_SCREENSHOT_MODEL', values.get('ZILMATE_SCREENSHOT_MODEL') || defaults.ZILMATE_SCREENSHOT_MODEL],
|
|
160
|
+
['ZILMATE_CAMERA_DEVICE', values.get('ZILMATE_CAMERA_DEVICE') || defaults.ZILMATE_CAMERA_DEVICE],
|
|
161
|
+
['ZILMATE_FILE_ROOTS', values.get('ZILMATE_FILE_ROOTS') || defaults.ZILMATE_FILE_ROOTS],
|
|
81
162
|
['ZILO_MANAGER_MODEL', values.get('ZILO_MANAGER_MODEL') || defaults.ZILO_MANAGER_MODEL],
|
|
82
163
|
['ZILO_HELP_MODEL', values.get('ZILO_HELP_MODEL') || defaults.ZILO_HELP_MODEL],
|
|
83
164
|
['ZILO_POST_MODEL', values.get('ZILO_POST_MODEL') || defaults.ZILO_POST_MODEL],
|
|
@@ -88,14 +169,38 @@ function buildEnv(values) {
|
|
|
88
169
|
];
|
|
89
170
|
return `${lines.map(([key, value]) => `${key}=${formatEnvValue(value)}`).join('\n')}\n`;
|
|
90
171
|
}
|
|
172
|
+
function printSetupPrep() {
|
|
173
|
+
printPanel('Before setup starts', [
|
|
174
|
+
['Required', 'AI Gateway key'],
|
|
175
|
+
['Apps/tools', 'Composio key if you want Gmail, Slack, GitHub, Notion, etc.'],
|
|
176
|
+
['Web research', 'Tavily key if you want live web research'],
|
|
177
|
+
['Memory/jobs', 'Upstash Redis keys if you want cloud-backed storage'],
|
|
178
|
+
['Hosted schedules', 'QStash token and public webhook URL if needed'],
|
|
179
|
+
['Voice', 'Deepgram key if you want realtime voice'],
|
|
180
|
+
['Camera', 'ffmpeg if you want laptop camera capture'],
|
|
181
|
+
]);
|
|
182
|
+
console.log(chalk.gray('You can skip any optional section and run setup again later.'));
|
|
183
|
+
}
|
|
184
|
+
async function readEnvValues(envPath) {
|
|
185
|
+
return existsSync(envPath) ? parseEnvFile(await readFile(envPath, 'utf8')) : new Map();
|
|
186
|
+
}
|
|
187
|
+
async function writeEnvValues(envPath, values) {
|
|
188
|
+
for (const [key, value] of Object.entries(defaults)) {
|
|
189
|
+
if (!values.has(key))
|
|
190
|
+
values.set(key, value);
|
|
191
|
+
}
|
|
192
|
+
await writeFile(envPath, buildEnv(values), 'utf8');
|
|
193
|
+
}
|
|
91
194
|
export async function runSetup(options = {}) {
|
|
92
195
|
const envPath = options.path || '.env';
|
|
93
|
-
const existing =
|
|
196
|
+
const existing = await readEnvValues(envPath);
|
|
94
197
|
const rl = readline.createInterface({ input, output });
|
|
95
198
|
try {
|
|
96
199
|
printZilMateBanner('Setup');
|
|
97
200
|
console.log(chalk.gray(`Writing local environment config to ${envPath}`));
|
|
98
|
-
console.log(chalk.gray('Only AI Gateway is required.
|
|
201
|
+
console.log(chalk.gray('Only AI Gateway is required. Everything else can be skipped, enabled, disabled, or changed later.'));
|
|
202
|
+
if (!options.yes)
|
|
203
|
+
printSetupPrep();
|
|
99
204
|
if (existing.size > 0 && !options.force && !options.yes) {
|
|
100
205
|
const overwrite = await askYesNo(rl, `${envPath} already exists. Update it?`, false);
|
|
101
206
|
if (!overwrite) {
|
|
@@ -126,6 +231,26 @@ export async function runSetup(options = {}) {
|
|
|
126
231
|
values.set('ZILMATE_JOB_WEBHOOK_SECRET', options.jobWebhookSecret);
|
|
127
232
|
if (options.triggerWorkflowsEnabled !== undefined)
|
|
128
233
|
values.set('ZILMATE_TRIGGER_WORKFLOWS_ENABLED', normalizeBooleanOption(options.triggerWorkflowsEnabled) ? 'true' : 'false');
|
|
234
|
+
if (options.deepgramApiKey !== undefined)
|
|
235
|
+
values.set('DEEPGRAM_API_KEY', options.deepgramApiKey);
|
|
236
|
+
if (options.voiceEnabled !== undefined)
|
|
237
|
+
values.set('ZILMATE_VOICE_ENABLED', normalizeBooleanOption(options.voiceEnabled) ? 'true' : 'false');
|
|
238
|
+
if (options.voiceListenModel !== undefined) {
|
|
239
|
+
values.set('ZILMATE_VOICE_LISTEN_MODEL', options.voiceListenModel);
|
|
240
|
+
values.set('ZILMATE_VOICE_LISTEN_VERSION', options.voiceListenModel.startsWith('flux-') ? 'v2' : 'v1');
|
|
241
|
+
}
|
|
242
|
+
if (options.voiceTtsModel !== undefined)
|
|
243
|
+
values.set('ZILMATE_VOICE_TTS_MODEL', options.voiceTtsModel);
|
|
244
|
+
if (options.voiceLanguage !== undefined)
|
|
245
|
+
values.set('ZILMATE_VOICE_LANGUAGE', options.voiceLanguage);
|
|
246
|
+
if (options.voiceInputDevice !== undefined)
|
|
247
|
+
values.set('ZILMATE_VOICE_INPUT_DEVICE', options.voiceInputDevice);
|
|
248
|
+
if (options.cameraDevice !== undefined)
|
|
249
|
+
values.set('ZILMATE_CAMERA_DEVICE', options.cameraDevice);
|
|
250
|
+
if (options.screenshotModel !== undefined)
|
|
251
|
+
values.set('ZILMATE_SCREENSHOT_MODEL', options.screenshotModel);
|
|
252
|
+
if (options.fileRoots !== undefined)
|
|
253
|
+
values.set('ZILMATE_FILE_ROOTS', options.fileRoots);
|
|
129
254
|
const currentGatewayKey = values.get('AI_GATEWAY_API_KEY');
|
|
130
255
|
if (options.aiGatewayKey) {
|
|
131
256
|
values.set('AI_GATEWAY_API_KEY', options.aiGatewayKey);
|
|
@@ -144,37 +269,47 @@ export async function runSetup(options = {}) {
|
|
|
144
269
|
if (!values.get('ZILMATE_USER_ID')) {
|
|
145
270
|
values.set('ZILMATE_USER_ID', `zilmate-${randomUUID()}`);
|
|
146
271
|
}
|
|
147
|
-
if (!options.yes && options.composioKey === undefined && await
|
|
272
|
+
if (!options.yes && options.composioKey === undefined && await askSection(rl, 'Composio app tools', 'Connectors let ZilMate use apps like Gmail, Slack, GitHub, Notion, Supabase, Stripe, Linear, Discord, and more through Composio.', 'Enable Composio app tools?', Boolean(values.get('COMPOSIO_API_KEY')))) {
|
|
148
273
|
const composioKey = await askOptionalSecret(rl, 'COMPOSIO_API_KEY (blank to skip): ');
|
|
149
274
|
values.set('COMPOSIO_API_KEY', composioKey);
|
|
150
275
|
}
|
|
151
|
-
if (!options.yes && options.
|
|
276
|
+
else if (!options.yes && options.composioKey === undefined) {
|
|
277
|
+
values.set('COMPOSIO_API_KEY', '');
|
|
278
|
+
}
|
|
279
|
+
if (!options.yes && options.tavilyKey === undefined && await askSection(rl, 'Web research', 'Tavily enables live web search, extraction, crawling, mapping, and deeper research when local knowledge is not enough.', 'Enable Tavily web research?', Boolean(values.get('TAVILY_API_KEY')))) {
|
|
152
280
|
const tavilyKey = await askOptionalSecret(rl, 'TAVILY_API_KEY (blank to skip): ');
|
|
153
281
|
values.set('TAVILY_API_KEY', tavilyKey);
|
|
154
282
|
}
|
|
155
|
-
if (!options.yes && options.
|
|
283
|
+
else if (!options.yes && options.tavilyKey === undefined) {
|
|
284
|
+
values.set('TAVILY_API_KEY', '');
|
|
285
|
+
}
|
|
286
|
+
if (!options.yes && options.redisUrl === undefined && options.redisToken === undefined && await askSection(rl, 'Cloud memory and job storage', 'Upstash Redis makes memory, chat history, Composio sessions, and job records portable across hosted/server environments. Without it, ZilMate uses local files.', 'Enable Upstash Redis memory/job storage?', Boolean(values.get('UPSTASH_REDIS_REST_URL') && values.get('UPSTASH_REDIS_REST_TOKEN')))) {
|
|
156
287
|
values.set('UPSTASH_REDIS_REST_URL', (await rl.question('UPSTASH_REDIS_REST_URL: ')).trim());
|
|
157
288
|
values.set('UPSTASH_REDIS_REST_TOKEN', await askOptionalSecret(rl, 'UPSTASH_REDIS_REST_TOKEN: '));
|
|
158
289
|
}
|
|
290
|
+
else if (!options.yes && options.redisUrl === undefined && options.redisToken === undefined) {
|
|
291
|
+
values.set('UPSTASH_REDIS_REST_URL', '');
|
|
292
|
+
values.set('UPSTASH_REDIS_REST_TOKEN', '');
|
|
293
|
+
}
|
|
159
294
|
if (!options.yes && options.jobsEnabled === undefined) {
|
|
160
|
-
|
|
161
|
-
console.log(chalk.gray('Local jobs keep running after chat closes while `zilmate jobs worker` is open. They stop if the laptop sleeps or shuts down.'));
|
|
162
|
-
const enableJobs = await askYesNo(rl, 'Enable local background jobs and schedules?', values.get('ZILMATE_JOBS_ENABLED') === 'true');
|
|
295
|
+
const enableJobs = await askSection(rl, 'Background jobs', 'Local jobs keep running after chat closes while `zilmate jobs worker` is open. They stop if the laptop sleeps or shuts down.', 'Enable local background jobs and schedules?', values.get('ZILMATE_JOBS_ENABLED') === 'true');
|
|
163
296
|
values.set('ZILMATE_JOBS_ENABLED', enableJobs ? 'true' : 'false');
|
|
164
297
|
}
|
|
165
298
|
else if (!values.has('ZILMATE_JOBS_ENABLED')) {
|
|
166
299
|
values.set('ZILMATE_JOBS_ENABLED', 'false');
|
|
167
300
|
}
|
|
168
301
|
if (!options.yes && options.qstashToken === undefined) {
|
|
169
|
-
|
|
170
|
-
console.log(chalk.gray('Use QStash only when you have a hosted public webhook. This is what allows schedules to fire while your laptop is closed.'));
|
|
171
|
-
if (await askYesNo(rl, 'Configure Upstash QStash hosted schedules?', Boolean(values.get('UPSTASH_QSTASH_TOKEN')))) {
|
|
302
|
+
if (await askSection(rl, 'Hosted schedules', 'Use QStash only when you have a hosted public webhook. This is what allows schedules to fire while your laptop is closed.', 'Enable Upstash QStash hosted schedules?', Boolean(values.get('UPSTASH_QSTASH_TOKEN')))) {
|
|
172
303
|
values.set('UPSTASH_QSTASH_TOKEN', await askOptionalSecret(rl, 'UPSTASH_QSTASH_TOKEN (blank to skip): '));
|
|
173
304
|
values.set('ZILMATE_PUBLIC_JOB_WEBHOOK_URL', (await rl.question('ZILMATE_PUBLIC_JOB_WEBHOOK_URL (blank for local only): ')).trim());
|
|
174
305
|
const existingSecret = values.get('ZILMATE_JOB_WEBHOOK_SECRET');
|
|
175
306
|
const secret = await askOptionalSecret(rl, `ZILMATE_JOB_WEBHOOK_SECRET (blank to ${existingSecret ? 'keep existing' : 'auto-generate'}): `);
|
|
176
307
|
values.set('ZILMATE_JOB_WEBHOOK_SECRET', secret || existingSecret || newWebhookSecret());
|
|
177
308
|
}
|
|
309
|
+
else {
|
|
310
|
+
values.set('UPSTASH_QSTASH_TOKEN', '');
|
|
311
|
+
values.set('ZILMATE_PUBLIC_JOB_WEBHOOK_URL', '');
|
|
312
|
+
}
|
|
178
313
|
}
|
|
179
314
|
if (!options.yes && options.triggerWorkflowsEnabled === undefined) {
|
|
180
315
|
console.log(chalk.cyan('\nComposio trigger workflows'));
|
|
@@ -198,11 +333,96 @@ export async function runSetup(options = {}) {
|
|
|
198
333
|
else if (!values.has('ZILMATE_TRIGGER_WORKFLOWS_ENABLED')) {
|
|
199
334
|
values.set('ZILMATE_TRIGGER_WORKFLOWS_ENABLED', 'false');
|
|
200
335
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
336
|
+
if (!options.yes && options.voiceEnabled === undefined) {
|
|
337
|
+
const enableVoice = await askSection(rl, 'Realtime voice', 'Voice mode uses Deepgram Flux V2 for listening/end-of-turn, ZilMate manager/tools for thinking, and Aura-2 for spoken replies. It can be skipped.', 'Enable realtime voice mode?', values.get('ZILMATE_VOICE_ENABLED') === 'true');
|
|
338
|
+
values.set('ZILMATE_VOICE_ENABLED', enableVoice ? 'true' : 'false');
|
|
339
|
+
if (enableVoice) {
|
|
340
|
+
const deepgramKey = options.deepgramApiKey ?? await askOptionalSecret(rl, 'DEEPGRAM_API_KEY (blank to configure later): ');
|
|
341
|
+
if (deepgramKey)
|
|
342
|
+
values.set('DEEPGRAM_API_KEY', deepgramKey);
|
|
343
|
+
const listenModel = (await rl.question(`Listen model (${values.get('ZILMATE_VOICE_LISTEN_MODEL') || 'flux-general-en'}): `)).trim();
|
|
344
|
+
if (listenModel) {
|
|
345
|
+
values.set('ZILMATE_VOICE_LISTEN_MODEL', listenModel);
|
|
346
|
+
values.set('ZILMATE_VOICE_LISTEN_VERSION', listenModel.startsWith('flux-') ? 'v2' : 'v1');
|
|
347
|
+
}
|
|
348
|
+
else if (!values.get('ZILMATE_VOICE_LISTEN_MODEL')) {
|
|
349
|
+
values.set('ZILMATE_VOICE_LISTEN_MODEL', 'flux-general-en');
|
|
350
|
+
values.set('ZILMATE_VOICE_LISTEN_VERSION', 'v2');
|
|
351
|
+
}
|
|
352
|
+
const ttsModel = (await rl.question(`TTS voice (${values.get('ZILMATE_VOICE_TTS_MODEL') || 'aura-2-thalia-en'}): `)).trim();
|
|
353
|
+
if (ttsModel)
|
|
354
|
+
values.set('ZILMATE_VOICE_TTS_MODEL', ttsModel);
|
|
355
|
+
const language = (await rl.question(`Language (${values.get('ZILMATE_VOICE_LANGUAGE') || 'en'}): `)).trim();
|
|
356
|
+
if (language)
|
|
357
|
+
values.set('ZILMATE_VOICE_LANGUAGE', language);
|
|
358
|
+
values.set('ZILMATE_VOICE_MODE', 'agent');
|
|
359
|
+
values.set('ZILMATE_VOICE_BARGE_IN', 'true');
|
|
360
|
+
const currentInputDevice = values.get('ZILMATE_VOICE_INPUT_DEVICE') || '';
|
|
361
|
+
if (await askYesNo(rl, 'Set a terminal microphone input device?', Boolean(currentInputDevice))) {
|
|
362
|
+
const voiceInputDevice = (await rl.question(`ZILMATE_VOICE_INPUT_DEVICE${currentInputDevice ? ` (${currentInputDevice})` : ' (blank for default mic)'}: `)).trim();
|
|
363
|
+
values.set('ZILMATE_VOICE_INPUT_DEVICE', voiceInputDevice || currentInputDevice);
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
console.log(chalk.gray('Voice disabled. Run `zilmate voice setup` or `zilmate voice enable` when you want it.'));
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
else if (!values.has('ZILMATE_VOICE_ENABLED')) {
|
|
371
|
+
values.set('ZILMATE_VOICE_ENABLED', 'false');
|
|
372
|
+
}
|
|
373
|
+
if (!values.get('ZILMATE_SCREENSHOT_MODEL'))
|
|
374
|
+
values.set('ZILMATE_SCREENSHOT_MODEL', defaults.ZILMATE_SCREENSHOT_MODEL);
|
|
375
|
+
if (!values.has('ZILMATE_CAMERA_DEVICE'))
|
|
376
|
+
values.set('ZILMATE_CAMERA_DEVICE', '');
|
|
377
|
+
if (!values.has('ZILMATE_FILE_ROOTS'))
|
|
378
|
+
values.set('ZILMATE_FILE_ROOTS', '');
|
|
379
|
+
if (!options.yes && options.fileRoots === undefined) {
|
|
380
|
+
if (await askSection(rl, 'Local file tools', 'File tools let ZilMate search, read, summarize, create, move, copy, and rename files inside approved roots. Writes still ask for approval.', 'Configure extra file access roots?', Boolean(values.get('ZILMATE_FILE_ROOTS')))) {
|
|
381
|
+
const currentRoots = values.get('ZILMATE_FILE_ROOTS') || '';
|
|
382
|
+
const roots = (await rl.question(`ZILMATE_FILE_ROOTS comma-separated${currentRoots ? ` (${currentRoots})` : ' (blank for current folder only)'}: `)).trim();
|
|
383
|
+
values.set('ZILMATE_FILE_ROOTS', roots || currentRoots);
|
|
384
|
+
}
|
|
204
385
|
}
|
|
205
|
-
|
|
386
|
+
if (!options.yes && options.screenshotModel === undefined) {
|
|
387
|
+
if (await askSection(rl, 'Screen and photo understanding', 'ZilMate uses a vision model to describe screenshots and camera photos. The default is Gemini 3.1 Flash Lite through the AI Gateway.', 'Use the default screenshot/photo vision model?', true)) {
|
|
388
|
+
values.set('ZILMATE_SCREENSHOT_MODEL', values.get('ZILMATE_SCREENSHOT_MODEL') || defaults.ZILMATE_SCREENSHOT_MODEL);
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
const model = (await rl.question(`ZILMATE_SCREENSHOT_MODEL (${values.get('ZILMATE_SCREENSHOT_MODEL') || defaults.ZILMATE_SCREENSHOT_MODEL}): `)).trim();
|
|
392
|
+
values.set('ZILMATE_SCREENSHOT_MODEL', model || values.get('ZILMATE_SCREENSHOT_MODEL') || defaults.ZILMATE_SCREENSHOT_MODEL);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
const installCameraDeps = options.installCameraDeps === undefined ? undefined : normalizeBooleanOption(options.installCameraDeps);
|
|
396
|
+
if (!options.yes && installCameraDeps === undefined) {
|
|
397
|
+
console.log(chalk.cyan('\nDesktop camera'));
|
|
398
|
+
console.log(chalk.gray('Screenshots and clipboard use built-in OS tools. Camera capture needs ffmpeg so ZilMate can grab a still photo reliably.'));
|
|
399
|
+
const hasFfmpeg = await commandExists('ffmpeg');
|
|
400
|
+
if (hasFfmpeg) {
|
|
401
|
+
console.log(chalk.green('ffmpeg is already available.'));
|
|
402
|
+
}
|
|
403
|
+
else if (await askYesNo(rl, 'ffmpeg is missing. Install camera dependency now?', false)) {
|
|
404
|
+
try {
|
|
405
|
+
const installed = await installCameraDependency();
|
|
406
|
+
console.log(installed ? chalk.green('ffmpeg is ready.') : chalk.yellow('ffmpeg was not detected after install. Run `zilmate camera doctor` after checking PATH.'));
|
|
407
|
+
}
|
|
408
|
+
catch (error) {
|
|
409
|
+
console.log(chalk.yellow(error instanceof Error ? error.message : String(error)));
|
|
410
|
+
console.log(chalk.gray('Setup will continue. You can install ffmpeg later and run `zilmate camera doctor`.'));
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
const currentDevice = values.get('ZILMATE_CAMERA_DEVICE') || '';
|
|
414
|
+
if (await askYesNo(rl, 'Set a specific camera device now?', Boolean(currentDevice))) {
|
|
415
|
+
const cameraDevice = (await rl.question(`Camera device${currentDevice ? ` (${currentDevice})` : ' (blank for auto-detect)'}: `)).trim();
|
|
416
|
+
values.set('ZILMATE_CAMERA_DEVICE', cameraDevice || currentDevice);
|
|
417
|
+
}
|
|
418
|
+
const checks = await runCameraDoctor();
|
|
419
|
+
console.log(chalk.gray(`Camera check: ${checks.map((check) => `${check.name} ${check.status}`).join(', ')}`));
|
|
420
|
+
}
|
|
421
|
+
else if (installCameraDeps) {
|
|
422
|
+
if (!(await commandExists('ffmpeg')))
|
|
423
|
+
await installCameraDependency();
|
|
424
|
+
}
|
|
425
|
+
await writeEnvValues(envPath, values);
|
|
206
426
|
console.log(chalk.green(`Saved ${envPath}.`));
|
|
207
427
|
printPanel('Setup summary', [
|
|
208
428
|
['Gateway', values.get('AI_GATEWAY_API_KEY') ? 'configured' : 'missing'],
|
|
@@ -212,6 +432,8 @@ export async function runSetup(options = {}) {
|
|
|
212
432
|
['Jobs', values.get('ZILMATE_JOBS_ENABLED') === 'true' ? 'enabled' : 'disabled'],
|
|
213
433
|
['QStash', values.get('UPSTASH_QSTASH_TOKEN') && values.get('ZILMATE_PUBLIC_JOB_WEBHOOK_URL') ? 'configured' : 'local schedules only'],
|
|
214
434
|
['Trigger workflows', values.get('ZILMATE_TRIGGER_WORKFLOWS_ENABLED') === 'true' ? 'enabled' : 'disabled'],
|
|
435
|
+
['Voice', values.get('ZILMATE_VOICE_ENABLED') === 'true' ? values.get('DEEPGRAM_API_KEY') ? 'enabled' : 'enabled, missing Deepgram key' : 'disabled'],
|
|
436
|
+
['Camera', await commandExists('ffmpeg') ? 'ready' : 'needs ffmpeg'],
|
|
215
437
|
]);
|
|
216
438
|
console.log(chalk.gray('\nNext steps:'));
|
|
217
439
|
console.log(chalk.gray(' zilmate ping'));
|
|
@@ -222,9 +444,88 @@ export async function runSetup(options = {}) {
|
|
|
222
444
|
if (values.get('COMPOSIO_API_KEY')) {
|
|
223
445
|
console.log(chalk.gray(' zilmate apps status'));
|
|
224
446
|
}
|
|
447
|
+
console.log(chalk.gray(' zilmate voice doctor'));
|
|
448
|
+
console.log(chalk.gray(' zilmate camera doctor'));
|
|
225
449
|
}
|
|
226
450
|
finally {
|
|
227
451
|
rl.close();
|
|
228
452
|
}
|
|
229
453
|
}
|
|
454
|
+
export async function runVoiceSetup(options = {}) {
|
|
455
|
+
const envPath = options.path || '.env';
|
|
456
|
+
const existing = await readEnvValues(envPath);
|
|
457
|
+
const rl = readline.createInterface({ input, output });
|
|
458
|
+
try {
|
|
459
|
+
printZilMateBanner('Voice setup');
|
|
460
|
+
console.log(chalk.gray('This turns on realtime voice without walking through every other ZilMate setup step.'));
|
|
461
|
+
console.log(chalk.gray('Defaults use Deepgram Flux V2 for fast listening and Aura-2 for spoken replies.'));
|
|
462
|
+
if (existing.size > 0 && !options.force) {
|
|
463
|
+
const update = await askYesNo(rl, `${envPath} already exists. Update voice settings?`, true);
|
|
464
|
+
if (!update) {
|
|
465
|
+
console.log(chalk.yellow('Voice setup cancelled. Existing .env was left unchanged.'));
|
|
466
|
+
return;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
const values = new Map(existing);
|
|
470
|
+
values.set('ZILMATE_VOICE_ENABLED', 'true');
|
|
471
|
+
values.set('ZILMATE_VOICE_MODE', 'agent');
|
|
472
|
+
values.set('ZILMATE_VOICE_BARGE_IN', 'true');
|
|
473
|
+
const currentKey = options.deepgramApiKey ?? values.get('DEEPGRAM_API_KEY') ?? '';
|
|
474
|
+
if (options.deepgramApiKey) {
|
|
475
|
+
values.set('DEEPGRAM_API_KEY', options.deepgramApiKey);
|
|
476
|
+
}
|
|
477
|
+
else if (currentKey) {
|
|
478
|
+
const replace = await askYesNo(rl, 'DEEPGRAM_API_KEY already exists. Replace it?', false);
|
|
479
|
+
if (replace)
|
|
480
|
+
values.set('DEEPGRAM_API_KEY', await askRequiredSecret(rl, 'DEEPGRAM_API_KEY: '));
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
values.set('DEEPGRAM_API_KEY', await askRequiredSecret(rl, 'DEEPGRAM_API_KEY: '));
|
|
484
|
+
}
|
|
485
|
+
const currentListenModel = options.voiceListenModel ?? values.get('ZILMATE_VOICE_LISTEN_MODEL') ?? 'flux-general-en';
|
|
486
|
+
const listenModel = options.voiceListenModel ?? ((await rl.question(`Listen model (${currentListenModel}): `)).trim() || currentListenModel);
|
|
487
|
+
values.set('ZILMATE_VOICE_LISTEN_MODEL', listenModel);
|
|
488
|
+
values.set('ZILMATE_VOICE_LISTEN_VERSION', listenModel.startsWith('flux-') ? 'v2' : 'v1');
|
|
489
|
+
const currentTtsModel = options.voiceTtsModel ?? values.get('ZILMATE_VOICE_TTS_MODEL') ?? 'aura-2-thalia-en';
|
|
490
|
+
values.set('ZILMATE_VOICE_TTS_MODEL', options.voiceTtsModel ?? ((await rl.question(`TTS voice (${currentTtsModel}): `)).trim() || currentTtsModel));
|
|
491
|
+
const currentLanguage = options.voiceLanguage ?? values.get('ZILMATE_VOICE_LANGUAGE') ?? 'en';
|
|
492
|
+
values.set('ZILMATE_VOICE_LANGUAGE', options.voiceLanguage ?? ((await rl.question(`Language (${currentLanguage}): `)).trim() || currentLanguage));
|
|
493
|
+
if (!values.has('ZILMATE_VOICE_LANGUAGE_HINTS'))
|
|
494
|
+
values.set('ZILMATE_VOICE_LANGUAGE_HINTS', '');
|
|
495
|
+
await writeEnvValues(envPath, values);
|
|
496
|
+
console.log(chalk.green(`Saved voice settings to ${envPath}.`));
|
|
497
|
+
printPanel('Voice summary', [
|
|
498
|
+
['Voice', 'enabled'],
|
|
499
|
+
['Deepgram', values.get('DEEPGRAM_API_KEY') ? 'configured' : 'missing'],
|
|
500
|
+
['Listen model', `${values.get('ZILMATE_VOICE_LISTEN_MODEL')} (${values.get('ZILMATE_VOICE_LISTEN_VERSION')})`],
|
|
501
|
+
['TTS voice', values.get('ZILMATE_VOICE_TTS_MODEL') || 'aura-2-thalia-en'],
|
|
502
|
+
['Language', values.get('ZILMATE_VOICE_LANGUAGE') || 'en'],
|
|
503
|
+
]);
|
|
504
|
+
console.log(chalk.gray('\nNext steps:'));
|
|
505
|
+
console.log(chalk.gray(' zilmate voice doctor'));
|
|
506
|
+
console.log(chalk.gray(' zilmate voice config'));
|
|
507
|
+
}
|
|
508
|
+
finally {
|
|
509
|
+
rl.close();
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
export async function setVoiceEnabled(enabled, options = {}) {
|
|
513
|
+
const envPath = options.path || '.env';
|
|
514
|
+
const values = await readEnvValues(envPath);
|
|
515
|
+
values.set('ZILMATE_VOICE_ENABLED', enabled ? 'true' : 'false');
|
|
516
|
+
if (enabled) {
|
|
517
|
+
values.set('ZILMATE_VOICE_MODE', values.get('ZILMATE_VOICE_MODE') || 'agent');
|
|
518
|
+
values.set('ZILMATE_VOICE_LISTEN_MODEL', values.get('ZILMATE_VOICE_LISTEN_MODEL') || 'flux-general-en');
|
|
519
|
+
values.set('ZILMATE_VOICE_LISTEN_VERSION', values.get('ZILMATE_VOICE_LISTEN_VERSION') || 'v2');
|
|
520
|
+
values.set('ZILMATE_VOICE_TTS_MODEL', values.get('ZILMATE_VOICE_TTS_MODEL') || 'aura-2-thalia-en');
|
|
521
|
+
values.set('ZILMATE_VOICE_LANGUAGE', values.get('ZILMATE_VOICE_LANGUAGE') || 'en');
|
|
522
|
+
values.set('ZILMATE_VOICE_BARGE_IN', values.get('ZILMATE_VOICE_BARGE_IN') || 'true');
|
|
523
|
+
}
|
|
524
|
+
await writeEnvValues(envPath, values);
|
|
525
|
+
printPanel('Voice', [
|
|
526
|
+
['Status', enabled ? 'enabled' : 'disabled'],
|
|
527
|
+
['Deepgram', values.get('DEEPGRAM_API_KEY') ? 'configured' : 'missing'],
|
|
528
|
+
['Next', enabled ? values.get('DEEPGRAM_API_KEY') ? 'zilmate voice doctor' : 'zilmate voice setup' : 'zilmate voice enable'],
|
|
529
|
+
]);
|
|
530
|
+
}
|
|
230
531
|
//# sourceMappingURL=setup.js.map
|
package/dist/cli/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function compareVersions(left: string, right: string): number;
|
|
2
|
+
export declare function latestNpmVersion(): Promise<string>;
|
|
3
|
+
export declare function printVersionStatus(currentVersion: string): Promise<void>;
|
|
4
|
+
export declare function runSelfUpdate(options?: {
|
|
5
|
+
tag?: string;
|
|
6
|
+
dryRun?: boolean;
|
|
7
|
+
}): Promise<void>;
|
|
8
|
+
//# sourceMappingURL=update.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/cli/update.ts"],"names":[],"mappings":"AAoBA,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,UAQ1D;AAED,wBAAsB,gBAAgB,oBAKrC;AAED,wBAAsB,kBAAkB,CAAC,cAAc,EAAE,MAAM,iBAkB9D;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,iBAuCnF"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { exec, execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { printPanel } from './format.js';
|
|
4
|
+
const execFileAsync = promisify(execFile);
|
|
5
|
+
const execAsync = promisify(exec);
|
|
6
|
+
const packageName = 'zilmate';
|
|
7
|
+
function npmCommand() {
|
|
8
|
+
return process.platform === 'win32' ? 'npm.cmd' : 'npm';
|
|
9
|
+
}
|
|
10
|
+
function parseVersion(version) {
|
|
11
|
+
return version
|
|
12
|
+
.trim()
|
|
13
|
+
.replace(/^v/, '')
|
|
14
|
+
.split('.')
|
|
15
|
+
.map((part) => Number.parseInt(part, 10) || 0);
|
|
16
|
+
}
|
|
17
|
+
export function compareVersions(left, right) {
|
|
18
|
+
const a = parseVersion(left);
|
|
19
|
+
const b = parseVersion(right);
|
|
20
|
+
for (let index = 0; index < Math.max(a.length, b.length); index += 1) {
|
|
21
|
+
const diff = (a[index] ?? 0) - (b[index] ?? 0);
|
|
22
|
+
if (diff !== 0)
|
|
23
|
+
return diff;
|
|
24
|
+
}
|
|
25
|
+
return 0;
|
|
26
|
+
}
|
|
27
|
+
export async function latestNpmVersion() {
|
|
28
|
+
const { stdout } = process.platform === 'win32'
|
|
29
|
+
? await execAsync(`${npmCommand()} view ${packageName} version`, { windowsHide: true, timeout: 30_000 })
|
|
30
|
+
: await execFileAsync(npmCommand(), ['view', packageName, 'version'], { windowsHide: true, timeout: 30_000 });
|
|
31
|
+
return stdout.trim();
|
|
32
|
+
}
|
|
33
|
+
export async function printVersionStatus(currentVersion) {
|
|
34
|
+
try {
|
|
35
|
+
const latest = await latestNpmVersion();
|
|
36
|
+
const comparison = compareVersions(currentVersion, latest);
|
|
37
|
+
printPanel('ZilMate version', [
|
|
38
|
+
['Current', currentVersion],
|
|
39
|
+
['Latest', latest],
|
|
40
|
+
['Status', comparison < 0 ? 'update available' : 'up to date'],
|
|
41
|
+
['Update', comparison < 0 ? 'zilmate update' : '-'],
|
|
42
|
+
]);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
printPanel('ZilMate version', [
|
|
46
|
+
['Current', currentVersion],
|
|
47
|
+
['Latest', 'could not check npm'],
|
|
48
|
+
['Status', error instanceof Error ? error.message : String(error)],
|
|
49
|
+
['Manual', 'npm install -g zilmate@latest'],
|
|
50
|
+
]);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
export async function runSelfUpdate(options = {}) {
|
|
54
|
+
const tag = options.tag || 'latest';
|
|
55
|
+
if (!/^[A-Za-z0-9._-]+$/.test(tag)) {
|
|
56
|
+
throw new Error('Update tag can only contain letters, numbers, dot, underscore, or dash.');
|
|
57
|
+
}
|
|
58
|
+
const spec = `${packageName}@${tag}`;
|
|
59
|
+
const args = ['install', '-g', spec];
|
|
60
|
+
if (options.dryRun) {
|
|
61
|
+
printPanel('Update dry run', [
|
|
62
|
+
['Command', `${npmCommand()} ${args.join(' ')}`],
|
|
63
|
+
['Run', 'zilmate update'],
|
|
64
|
+
]);
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
printPanel('Updating ZilMate', [
|
|
68
|
+
['Package', spec],
|
|
69
|
+
['Command', `${npmCommand()} ${args.join(' ')}`],
|
|
70
|
+
]);
|
|
71
|
+
try {
|
|
72
|
+
const result = process.platform === 'win32'
|
|
73
|
+
? await execAsync(`${npmCommand()} ${args.join(' ')}`, { windowsHide: true, timeout: 120_000 })
|
|
74
|
+
: await execFileAsync(npmCommand(), args, { windowsHide: true, timeout: 120_000 });
|
|
75
|
+
const { stdout, stderr } = result;
|
|
76
|
+
if (stdout.trim())
|
|
77
|
+
console.log(stdout.trim());
|
|
78
|
+
if (stderr.trim())
|
|
79
|
+
console.error(stderr.trim());
|
|
80
|
+
printPanel('Update complete', [
|
|
81
|
+
['Verify', 'zilmate --version'],
|
|
82
|
+
['Health', 'zilmate doctor'],
|
|
83
|
+
]);
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
87
|
+
printPanel('Update failed', [
|
|
88
|
+
['Reason', detail],
|
|
89
|
+
['Try', `${npmCommand()} install -g ${spec}`],
|
|
90
|
+
]);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=update.js.map
|