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.
Files changed (77) hide show
  1. package/.env.example +15 -0
  2. package/README.md +100 -1
  3. package/dist/agents/manager.d.ts +133 -0
  4. package/dist/agents/manager.d.ts.map +1 -1
  5. package/dist/agents/manager.js +23 -0
  6. package/dist/agents/manager.js.map +1 -1
  7. package/dist/cli/camera.d.ts +6 -0
  8. package/dist/cli/camera.d.ts.map +1 -0
  9. package/dist/cli/camera.js +27 -0
  10. package/dist/cli/camera.js.map +1 -0
  11. package/dist/cli/doctor.d.ts +4 -0
  12. package/dist/cli/doctor.d.ts.map +1 -1
  13. package/dist/cli/doctor.js +12 -1
  14. package/dist/cli/doctor.js.map +1 -1
  15. package/dist/cli/health.js +2 -0
  16. package/dist/cli/health.js.map +1 -1
  17. package/dist/cli/interactive.d.ts.map +1 -1
  18. package/dist/cli/interactive.js +42 -5
  19. package/dist/cli/interactive.js.map +1 -1
  20. package/dist/cli/menu.d.ts +1 -0
  21. package/dist/cli/menu.d.ts.map +1 -1
  22. package/dist/cli/menu.js +68 -0
  23. package/dist/cli/menu.js.map +1 -1
  24. package/dist/cli/setup.d.ts +12 -0
  25. package/dist/cli/setup.d.ts.map +1 -1
  26. package/dist/cli/setup.js +316 -15
  27. package/dist/cli/setup.js.map +1 -1
  28. package/dist/cli/update.d.ts +8 -0
  29. package/dist/cli/update.d.ts.map +1 -0
  30. package/dist/cli/update.js +94 -0
  31. package/dist/cli/update.js.map +1 -0
  32. package/dist/cli/voice.d.ts +8 -0
  33. package/dist/cli/voice.d.ts.map +1 -0
  34. package/dist/cli/voice.js +189 -0
  35. package/dist/cli/voice.js.map +1 -0
  36. package/dist/cli/welcome.d.ts.map +1 -1
  37. package/dist/cli/welcome.js +19 -0
  38. package/dist/cli/welcome.js.map +1 -1
  39. package/dist/config/env.d.ts +13 -0
  40. package/dist/config/env.d.ts.map +1 -1
  41. package/dist/config/env.js +20 -0
  42. package/dist/config/env.js.map +1 -1
  43. package/dist/config/models.d.ts +1 -0
  44. package/dist/config/models.d.ts.map +1 -1
  45. package/dist/config/models.js +1 -0
  46. package/dist/config/models.js.map +1 -1
  47. package/dist/index.js +259 -4
  48. package/dist/index.js.map +1 -1
  49. package/dist/server.d.ts +4 -0
  50. package/dist/server.d.ts.map +1 -1
  51. package/dist/server.js +12 -0
  52. package/dist/server.js.map +1 -1
  53. package/dist/tools/desktop.tool.d.ts +58 -0
  54. package/dist/tools/desktop.tool.d.ts.map +1 -0
  55. package/dist/tools/desktop.tool.js +433 -0
  56. package/dist/tools/desktop.tool.js.map +1 -0
  57. package/dist/tools/filesystem.tool.d.ts +93 -0
  58. package/dist/tools/filesystem.tool.d.ts.map +1 -0
  59. package/dist/tools/filesystem.tool.js +303 -0
  60. package/dist/tools/filesystem.tool.js.map +1 -0
  61. package/dist/voice/cascade.d.ts +15 -0
  62. package/dist/voice/cascade.d.ts.map +1 -0
  63. package/dist/voice/cascade.js +306 -0
  64. package/dist/voice/cascade.js.map +1 -0
  65. package/dist/voice/deepgram.d.ts +22 -0
  66. package/dist/voice/deepgram.d.ts.map +1 -0
  67. package/dist/voice/deepgram.js +257 -0
  68. package/dist/voice/deepgram.js.map +1 -0
  69. package/dist/voice/terminal.d.ts +27 -0
  70. package/dist/voice/terminal.d.ts.map +1 -0
  71. package/dist/voice/terminal.js +448 -0
  72. package/dist/voice/terminal.js.map +1 -0
  73. package/dist/voice/types.d.ts +45 -0
  74. package/dist/voice/types.d.ts.map +1 -0
  75. package/dist/voice/types.js +2 -0
  76. package/dist/voice/types.js.map +1 -0
  77. 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 = existsSync(envPath) ? parseEnvFile(await readFile(envPath, 'utf8')) : new Map();
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. Composio, Tavily, Redis, jobs, QStash, and trigger workflows can all be skipped.'));
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 askYesNo(rl, 'Add Composio API key for external app tools?', Boolean(values.get('COMPOSIO_API_KEY')))) {
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.tavilyKey === undefined && await askYesNo(rl, 'Add Tavily web search key?', Boolean(values.get('TAVILY_API_KEY')))) {
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.redisUrl === undefined && options.redisToken === undefined && await askYesNo(rl, 'Configure Upstash Redis memory?', Boolean(values.get('UPSTASH_REDIS_REST_URL') && values.get('UPSTASH_REDIS_REST_TOKEN')))) {
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
- console.log(chalk.cyan('\nBackground jobs'));
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
- console.log(chalk.cyan('\nHosted schedules'));
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
- for (const [key, value] of Object.entries(defaults)) {
202
- if (!values.has(key))
203
- values.set(key, value);
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
- await writeFile(envPath, buildEnv(values), 'utf8');
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
@@ -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