aura-code 0.3.0 → 0.3.2

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 (46) hide show
  1. package/README.md +2 -2
  2. package/dist/agent/loop.js +6 -0
  3. package/dist/agent/loop.js.map +1 -1
  4. package/dist/agent/system-prompt.js +9 -0
  5. package/dist/agent/system-prompt.js.map +1 -1
  6. package/dist/cli/index.js +161 -28
  7. package/dist/cli/index.js.map +1 -1
  8. package/dist/config/defaults.js +1 -1
  9. package/dist/providers/factory.d.ts +17 -0
  10. package/dist/providers/factory.js +130 -1
  11. package/dist/providers/factory.js.map +1 -1
  12. package/dist/providers/google.js +21 -8
  13. package/dist/providers/google.js.map +1 -1
  14. package/dist/providers/openai-compatible.js +4 -0
  15. package/dist/providers/openai-compatible.js.map +1 -1
  16. package/dist/ruby/model-selector.d.ts +20 -0
  17. package/dist/ruby/model-selector.js +114 -0
  18. package/dist/ruby/model-selector.js.map +1 -0
  19. package/dist/ruby/stats.d.ts +6 -0
  20. package/dist/ruby/stats.js +103 -0
  21. package/dist/ruby/stats.js.map +1 -0
  22. package/dist/setup/provider-registry.d.ts +32 -0
  23. package/dist/setup/provider-registry.js +159 -0
  24. package/dist/setup/provider-registry.js.map +1 -0
  25. package/dist/setup/provider-test.d.ts +15 -0
  26. package/dist/setup/provider-test.js +195 -0
  27. package/dist/setup/provider-test.js.map +1 -0
  28. package/dist/setup/provider-wizard.d.ts +29 -0
  29. package/dist/setup/provider-wizard.js +376 -0
  30. package/dist/setup/provider-wizard.js.map +1 -0
  31. package/dist/setup/xiaomi.d.ts +23 -0
  32. package/dist/setup/xiaomi.js +67 -0
  33. package/dist/setup/xiaomi.js.map +1 -0
  34. package/dist/tools/index.js +3 -0
  35. package/dist/tools/index.js.map +1 -1
  36. package/dist/tools/shadow-shield.d.ts +11 -0
  37. package/dist/tools/shadow-shield.js +538 -0
  38. package/dist/tools/shadow-shield.js.map +1 -0
  39. package/dist/tools/telegram-bot.js +32 -8
  40. package/dist/tools/telegram-bot.js.map +1 -1
  41. package/dist/util/errors.js +9 -1
  42. package/dist/util/errors.js.map +1 -1
  43. package/dist/util/load-env.d.ts +10 -0
  44. package/dist/util/load-env.js +93 -0
  45. package/dist/util/load-env.js.map +1 -0
  46. package/package.json +1 -1
@@ -0,0 +1,376 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.runProviderWizard = runProviderWizard;
40
+ exports.loadProviderConfig = loadProviderConfig;
41
+ /**
42
+ * Provider Wizard — interactive 4-step flow to configure LLM provider,
43
+ * model, API key, and test the connection.
44
+ *
45
+ * Steps:
46
+ * 1. Select provider
47
+ * 2. Select model (or auto-detect for Ollama)
48
+ * 3. API key (detect existing, keep/replace, or enter new)
49
+ * 4. Test connection and save to config
50
+ *
51
+ * Saves config to ~/.config/aura-code/config.json (via global-config).
52
+ */
53
+ const readline = __importStar(require("readline"));
54
+ const fs = __importStar(require("fs"));
55
+ const path = __importStar(require("path"));
56
+ const os = __importStar(require("os"));
57
+ const http = __importStar(require("http"));
58
+ const chalk_1 = __importDefault(require("chalk"));
59
+ const provider_registry_js_1 = require("./provider-registry.js");
60
+ const provider_test_js_1 = require("./provider-test.js");
61
+ const global_config_js_1 = require("./global-config.js");
62
+ const xiaomi_js_1 = require("./xiaomi.js");
63
+ /**
64
+ * Run the full 4-step provider wizard.
65
+ *
66
+ * Returns the chosen config on success, or null if the user cancelled.
67
+ */
68
+ async function runProviderWizard(existingRl) {
69
+ const rl = existingRl || readline.createInterface({
70
+ input: process.stdin,
71
+ output: process.stdout,
72
+ });
73
+ try {
74
+ console.log(chalk_1.default.hex('#cc785c')('\n ✦ Provider Setup Wizard'));
75
+ console.log(chalk_1.default.hex('#8a7768')(' Configure your AI provider in 3 easy steps.\n'));
76
+ // ── Step 1: Select Provider ─────────────────────────────────────────────
77
+ const provider = await selectProvider(rl);
78
+ if (!provider)
79
+ return null;
80
+ // ── Step 2: Select Model ────────────────────────────────────────────────
81
+ const model = await selectModel(rl, provider);
82
+ if (!model)
83
+ return null;
84
+ // ── Step 3: API Key ─────────────────────────────────────────────────────
85
+ const apiKey = await configureApiKey(rl, provider);
86
+ if (apiKey === null && provider.envKey !== null)
87
+ return null; // Cancelled (needed key but got null)
88
+ let effectiveModel = model;
89
+ // Build baseUrl
90
+ let baseUrlPrompt = ' ▸ Enter base URL: ';
91
+ const defaultBase = provider.name === 'Xiaomi MiMo'
92
+ ? (0, xiaomi_js_1.defaultXiaomiBaseUrl)(apiKey ?? undefined)
93
+ : (provider.baseUrl || '');
94
+ if (defaultBase) {
95
+ baseUrlPrompt = ` ▸ Enter base URL [press Enter to use default ${chalk_1.default.hex('#ede0cc')(defaultBase)}]: `;
96
+ }
97
+ const enteredUrl = await askInput(rl, baseUrlPrompt);
98
+ let baseUrl = enteredUrl.trim() || defaultBase || provider.baseUrl || '';
99
+ if (provider.name === 'Xiaomi MiMo') {
100
+ const norm = (0, xiaomi_js_1.normalizeXiaomiWizardConfig)(effectiveModel, apiKey ?? undefined, baseUrl);
101
+ effectiveModel = norm.model;
102
+ baseUrl = norm.baseUrl;
103
+ if (norm.note) {
104
+ console.log(chalk_1.default.hex('#8a7768')(` ↪ ${norm.note}\n`));
105
+ }
106
+ }
107
+ if (!baseUrl && provider.name === 'Custom endpoint') {
108
+ console.log(chalk_1.default.hex('#b15439')(' ✗ Base URL is required for custom endpoints.'));
109
+ return null;
110
+ }
111
+ const config = {
112
+ provider: provider.name,
113
+ model: effectiveModel,
114
+ baseUrl: baseUrl || provider.baseUrl,
115
+ apiKey: apiKey ?? undefined,
116
+ };
117
+ // ── Step 4: Test Connection ─────────────────────────────────────────────
118
+ const saved = await testAndSave(rl, config);
119
+ return saved;
120
+ }
121
+ finally {
122
+ if (!existingRl) {
123
+ rl.close();
124
+ }
125
+ }
126
+ }
127
+ // ─────────────────────────────────────────────────────────────────────────────
128
+ // Step 1: Provider Selection
129
+ // ─────────────────────────────────────────────────────────────────────────────
130
+ async function selectProvider(rl) {
131
+ console.log(chalk_1.default.hex('#cc785c')(' Step 1: Select your AI provider\n'));
132
+ const items = provider_registry_js_1.PROVIDER_REGISTRY.map((p, i) => {
133
+ const num = chalk_1.default.hex('#8a7768')(String(i + 1).padStart(2) + '.');
134
+ const name = chalk_1.default.hex('#e8d5b7')(p.name);
135
+ return ` ${num} ${name}`;
136
+ });
137
+ for (const item of items) {
138
+ console.log(item);
139
+ }
140
+ console.log();
141
+ const choice = await askInput(rl, ' ▸ Choose a number: ');
142
+ const idx = parseInt(choice, 10) - 1;
143
+ if (idx < 0 || idx >= provider_registry_js_1.PROVIDER_REGISTRY.length || !Number.isFinite(idx)) {
144
+ console.log(chalk_1.default.hex('#b15439')(' ✗ Invalid choice.'));
145
+ return null;
146
+ }
147
+ return provider_registry_js_1.PROVIDER_REGISTRY[idx];
148
+ }
149
+ // ─────────────────────────────────────────────────────────────────────────────
150
+ // Step 2: Model Selection
151
+ // ─────────────────────────────────────────────────────────────────────────────
152
+ async function selectModel(rl, provider) {
153
+ // Custom endpoint — user types model ID
154
+ if (provider.name === 'Custom endpoint') {
155
+ console.log(chalk_1.default.hex('#cc785c')('\n Step 2: Enter model ID\n'));
156
+ const modelId = await askInput(rl, ' ▸ Model ID: ');
157
+ if (!modelId) {
158
+ console.log(chalk_1.default.hex('#b15439')(' ✗ Model ID is required.'));
159
+ return null;
160
+ }
161
+ return modelId;
162
+ }
163
+ // Ollama — auto-detect from running instance
164
+ if (provider.name === 'Ollama (local, free)') {
165
+ console.log(chalk_1.default.hex('#cc785c')('\n Step 2: Select model'));
166
+ console.log(chalk_1.default.hex('#8a7768')(' Detecting models from Ollama...\n'));
167
+ const ollamaModels = await detectOllamaModels();
168
+ if (ollamaModels.length === 0) {
169
+ console.log(chalk_1.default.hex('#b15439')(' Ollama doesn\'t seem to be running, or has no models.'));
170
+ console.log(chalk_1.default.hex('#8a7768')(' Start it first: ollama serve'));
171
+ console.log(chalk_1.default.hex('#8a7768')(' Pull a model: ollama pull llama3.2\n'));
172
+ const manual = await askInput(rl, ' ▸ Enter model name manually (or press Enter to cancel): ');
173
+ return manual || null;
174
+ }
175
+ for (let i = 0; i < ollamaModels.length; i++) {
176
+ const num = chalk_1.default.hex('#8a7768')(String(i + 1).padStart(2) + '.');
177
+ const name = chalk_1.default.hex('#e8d5b7')(ollamaModels[i]);
178
+ console.log(` ${num} ${name}`);
179
+ }
180
+ console.log();
181
+ const choice = await askInput(rl, ' ▸ Choose a number: ');
182
+ const idx = parseInt(choice, 10) - 1;
183
+ if (idx < 0 || idx >= ollamaModels.length || !Number.isFinite(idx)) {
184
+ console.log(chalk_1.default.hex('#b15439')(' ✗ Invalid choice.'));
185
+ return null;
186
+ }
187
+ return ollamaModels[idx];
188
+ }
189
+ // Standard provider — show preset model list
190
+ console.log(chalk_1.default.hex('#cc785c')(`\n Step 2: Select model for ${provider.name}\n`));
191
+ for (let i = 0; i < provider.models.length; i++) {
192
+ const m = provider.models[i];
193
+ const num = chalk_1.default.hex('#8a7768')(String(i + 1).padStart(2) + '.');
194
+ const label = chalk_1.default.hex('#e8d5b7')(m.label);
195
+ const speed = chalk_1.default.hex('#5a4a3a')(` (${m.speed})`);
196
+ console.log(` ${num} ${label}${speed}`);
197
+ }
198
+ console.log();
199
+ const choice = await askInput(rl, ' ▸ Choose a number: ');
200
+ const idx = parseInt(choice, 10) - 1;
201
+ if (idx < 0 || idx >= provider.models.length || !Number.isFinite(idx)) {
202
+ console.log(chalk_1.default.hex('#b15439')(' ✗ Invalid choice.'));
203
+ return null;
204
+ }
205
+ return provider.models[idx].id;
206
+ }
207
+ // ─────────────────────────────────────────────────────────────────────────────
208
+ // Step 3: API Key
209
+ // ─────────────────────────────────────────────────────────────────────────────
210
+ /**
211
+ * Returns the API key string, empty string for local providers, or null if cancelled.
212
+ */
213
+ async function configureApiKey(rl, provider) {
214
+ // No key needed for Ollama / local
215
+ if (!provider.envKey) {
216
+ return '';
217
+ }
218
+ console.log(chalk_1.default.hex('#cc785c')('\n Step 3: API Key\n'));
219
+ const existingKey = (0, provider_registry_js_1.detectExistingKey)(provider);
220
+ if (existingKey) {
221
+ // Key found — offer keep/replace
222
+ console.log(chalk_1.default.hex('#8a7768')(` API key found: ${chalk_1.default.hex('#5a9e6e')((0, provider_registry_js_1.maskApiKey)(existingKey))}`));
223
+ console.log(chalk_1.default.hex('#8a7768')(` Source: environment (${provider.envKey})\n`));
224
+ console.log(chalk_1.default.hex('#8a7768')(' 1. Keep this key'));
225
+ console.log(chalk_1.default.hex('#8a7768')(' 2. Replace with new key\n'));
226
+ const choice = await askInput(rl, ' ▸ Choose (1 or 2): ');
227
+ if (choice === '2') {
228
+ const newKey = await askInput(rl, ' ▸ Enter new API key: ');
229
+ if (!newKey) {
230
+ console.log(chalk_1.default.hex('#b15439')(' ✗ No key provided.'));
231
+ return null;
232
+ }
233
+ return newKey;
234
+ }
235
+ return existingKey;
236
+ }
237
+ // No key found — prompt for one
238
+ console.log(chalk_1.default.hex('#8a7768')(` No API key found for ${provider.name}.`));
239
+ if (provider.signupUrl) {
240
+ console.log(chalk_1.default.hex('#8a7768')(` Get one at: ${chalk_1.default.hex('#cc785c')(provider.signupUrl)}\n`));
241
+ }
242
+ const newKey = await askInput(rl, ' ▸ Enter API key: ');
243
+ if (!newKey) {
244
+ console.log(chalk_1.default.hex('#b15439')(' ✗ No key provided.'));
245
+ return null;
246
+ }
247
+ return newKey;
248
+ }
249
+ // ─────────────────────────────────────────────────────────────────────────────
250
+ // Step 4: Test Connection & Save
251
+ // ─────────────────────────────────────────────────────────────────────────────
252
+ async function testAndSave(rl, config) {
253
+ console.log(chalk_1.default.hex('#cc785c')(`\n Testing connection to ${config.provider}...`));
254
+ const result = await (0, provider_test_js_1.testProviderConnection)({
255
+ provider: config.provider,
256
+ model: config.model,
257
+ baseUrl: config.baseUrl,
258
+ apiKey: config.apiKey,
259
+ });
260
+ if (result.ok) {
261
+ console.log(chalk_1.default.hex('#5a9e6e')(' ✓ Connected! Model responds.'));
262
+ saveProviderConfig(config);
263
+ console.log(chalk_1.default.hex('#8a7768')(`\n Saved to ${(0, global_config_js_1.globalConfigPath)()}\n`));
264
+ return config;
265
+ }
266
+ // Connection failed — offer retry/skip/cancel
267
+ console.log(chalk_1.default.hex('#b15439')(` ✗ Connection failed: ${result.error}\n`));
268
+ console.log(chalk_1.default.hex('#8a7768')(' 1. Re-enter API key'));
269
+ console.log(chalk_1.default.hex('#8a7768')(' 2. Skip test and save anyway'));
270
+ console.log(chalk_1.default.hex('#8a7768')(' 3. Cancel\n'));
271
+ const choice = await askInput(rl, ' ▸ Choose (1, 2, or 3): ');
272
+ if (choice === '1') {
273
+ const newKey = await askInput(rl, ' ▸ Enter new API key: ');
274
+ if (!newKey)
275
+ return null;
276
+ config.apiKey = newKey;
277
+ return testAndSave(rl, config); // Recursive retry
278
+ }
279
+ if (choice === '2') {
280
+ saveProviderConfig(config);
281
+ console.log(chalk_1.default.hex('#8a7768')(`\n Saved to ${(0, global_config_js_1.globalConfigPath)()} (connection not verified)\n`));
282
+ return config;
283
+ }
284
+ return null; // Cancel
285
+ }
286
+ // ─────────────────────────────────────────────────────────────────────────────
287
+ // Helpers
288
+ // ─────────────────────────────────────────────────────────────────────────────
289
+ function askInput(rl, prompt) {
290
+ return new Promise(resolve => {
291
+ rl.question(chalk_1.default.hex('#cc785c')(prompt), answer => {
292
+ resolve((answer ?? '').trim());
293
+ });
294
+ });
295
+ }
296
+ /**
297
+ * Save the provider config to ~/.config/aura-code/config.json and export
298
+ * the API key env var for the current process.
299
+ */
300
+ function saveProviderConfig(config) {
301
+ // Find the matching provider entry to get apiKeyEnv
302
+ const entry = provider_registry_js_1.PROVIDER_REGISTRY.find(p => p.name === config.provider);
303
+ const apiKeyEnv = entry?.envKey ?? '';
304
+ // Export API key as env var for the current process
305
+ if (config.apiKey && apiKeyEnv) {
306
+ process.env[apiKeyEnv] = config.apiKey;
307
+ process.env[apiKeyEnv.toLowerCase()] = config.apiKey;
308
+ }
309
+ // Save to global config
310
+ (0, global_config_js_1.saveGlobalConfig)({
311
+ provider: config.provider,
312
+ apiKeyEnv,
313
+ defaultModel: config.model,
314
+ baseUrl: config.baseUrl || undefined,
315
+ });
316
+ // Also save the full provider config (including apiKey) to a separate
317
+ // section in the config directory so the factory can read it.
318
+ const configDir = process.env.XDG_CONFIG_HOME
319
+ ? path.join(process.env.XDG_CONFIG_HOME, 'aura-code')
320
+ : path.join(os.homedir(), '.config', 'aura-code');
321
+ fs.mkdirSync(configDir, { recursive: true });
322
+ const providerCfg = {
323
+ provider: config.provider,
324
+ model: config.model,
325
+ baseUrl: config.baseUrl,
326
+ ...(config.apiKey ? { apiKey: config.apiKey } : {}),
327
+ };
328
+ fs.writeFileSync(path.join(configDir, 'provider.json'), JSON.stringify(providerCfg, null, 2) + '\n', { mode: 0o600 });
329
+ }
330
+ /**
331
+ * Load saved provider config from the config directory.
332
+ */
333
+ function loadProviderConfig() {
334
+ try {
335
+ const configDir = process.env.XDG_CONFIG_HOME
336
+ ? path.join(process.env.XDG_CONFIG_HOME, 'aura-code')
337
+ : path.join(os.homedir(), '.config', 'aura-code');
338
+ const raw = fs.readFileSync(path.join(configDir, 'provider.json'), 'utf8');
339
+ const parsed = JSON.parse(raw);
340
+ if (!parsed.provider || !parsed.model)
341
+ return null;
342
+ return parsed;
343
+ }
344
+ catch {
345
+ return null;
346
+ }
347
+ }
348
+ /**
349
+ * Auto-detect models from a running Ollama instance.
350
+ */
351
+ async function detectOllamaModels() {
352
+ return new Promise(resolve => {
353
+ const req = http.get('http://localhost:11434/api/tags', { timeout: 5_000 }, res => {
354
+ if (res.statusCode !== 200) {
355
+ resolve([]);
356
+ res.resume();
357
+ return;
358
+ }
359
+ let data = '';
360
+ res.on('data', chunk => { data += chunk; });
361
+ res.on('end', () => {
362
+ try {
363
+ const parsed = JSON.parse(data);
364
+ const models = (parsed.models ?? []).map((m) => m.name);
365
+ resolve(models);
366
+ }
367
+ catch {
368
+ resolve([]);
369
+ }
370
+ });
371
+ });
372
+ req.on('error', () => resolve([]));
373
+ req.on('timeout', () => { req.destroy(); resolve([]); });
374
+ });
375
+ }
376
+ //# sourceMappingURL=provider-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-wizard.js","sourceRoot":"","sources":["../../src/setup/provider-wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Xiaomi MiMo has two auth products:
3
+ * - Pay-as-you-go: sk-… keys → https://api.xiaomimimo.com/v1
4
+ * - Token Plan: tp-… keys → https://token-plan-{region}.xiaomimimo.com/v1
5
+ *
6
+ * Token Plan does not accept legacy chat ids like mimo-v2-flash (400 Not supported model).
7
+ */
8
+ export type XiaomiKeyKind = 'token-plan' | 'paygo' | 'unknown';
9
+ export declare function xiaomiKeyKind(apiKey?: string): XiaomiKeyKind;
10
+ export declare function defaultXiaomiBaseUrl(apiKey?: string, region?: 'sgp' | 'cn' | 'ams'): string;
11
+ /** Models that work on Token Plan (tp- keys). */
12
+ export declare const XIAOMI_TOKEN_PLAN_MODELS: readonly ["mimo-v2.5-pro", "mimo-v2.5"];
13
+ /** Extra models for pay-as-you-go (sk- keys). */
14
+ export declare const XIAOMI_PAYGO_EXTRA_MODELS: readonly ["mimo-v2-flash", "mimo-v2-pro", "mimo-v1"];
15
+ export declare function isTokenPlanBaseUrl(baseUrl: string): boolean;
16
+ /**
17
+ * Adjust model + base URL for the key type. Returns a message when auto-correcting.
18
+ */
19
+ export declare function normalizeXiaomiWizardConfig(model: string, apiKey: string | undefined, baseUrl: string): {
20
+ model: string;
21
+ baseUrl: string;
22
+ note?: string;
23
+ };
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ /**
3
+ * Xiaomi MiMo has two auth products:
4
+ * - Pay-as-you-go: sk-… keys → https://api.xiaomimimo.com/v1
5
+ * - Token Plan: tp-… keys → https://token-plan-{region}.xiaomimimo.com/v1
6
+ *
7
+ * Token Plan does not accept legacy chat ids like mimo-v2-flash (400 Not supported model).
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.XIAOMI_PAYGO_EXTRA_MODELS = exports.XIAOMI_TOKEN_PLAN_MODELS = void 0;
11
+ exports.xiaomiKeyKind = xiaomiKeyKind;
12
+ exports.defaultXiaomiBaseUrl = defaultXiaomiBaseUrl;
13
+ exports.isTokenPlanBaseUrl = isTokenPlanBaseUrl;
14
+ exports.normalizeXiaomiWizardConfig = normalizeXiaomiWizardConfig;
15
+ function xiaomiKeyKind(apiKey) {
16
+ const k = apiKey?.trim() ?? '';
17
+ if (k.startsWith('tp-'))
18
+ return 'token-plan';
19
+ if (k.startsWith('sk-'))
20
+ return 'paygo';
21
+ return 'unknown';
22
+ }
23
+ function defaultXiaomiBaseUrl(apiKey, region = 'sgp') {
24
+ const kind = xiaomiKeyKind(apiKey);
25
+ if (kind === 'paygo')
26
+ return 'https://api.xiaomimimo.com/v1';
27
+ if (kind === 'token-plan') {
28
+ return `https://token-plan-${region}.xiaomimimo.com/v1`;
29
+ }
30
+ return 'https://token-plan-sgp.xiaomimimo.com/v1';
31
+ }
32
+ /** Models that work on Token Plan (tp- keys). */
33
+ exports.XIAOMI_TOKEN_PLAN_MODELS = ['mimo-v2.5-pro', 'mimo-v2.5'];
34
+ /** Extra models for pay-as-you-go (sk- keys). */
35
+ exports.XIAOMI_PAYGO_EXTRA_MODELS = ['mimo-v2-flash', 'mimo-v2-pro', 'mimo-v1'];
36
+ function isTokenPlanBaseUrl(baseUrl) {
37
+ return baseUrl.includes('token-plan');
38
+ }
39
+ /**
40
+ * Adjust model + base URL for the key type. Returns a message when auto-correcting.
41
+ */
42
+ function normalizeXiaomiWizardConfig(model, apiKey, baseUrl) {
43
+ const kind = xiaomiKeyKind(apiKey);
44
+ let outModel = model;
45
+ let outBase = baseUrl.trim() || defaultXiaomiBaseUrl(apiKey);
46
+ let note;
47
+ if (kind === 'token-plan' || isTokenPlanBaseUrl(outBase)) {
48
+ if (!outBase.includes('token-plan')) {
49
+ outBase = defaultXiaomiBaseUrl(apiKey);
50
+ note = 'Token Plan key detected — using Token Plan base URL.';
51
+ }
52
+ if (!exports.XIAOMI_TOKEN_PLAN_MODELS.includes(outModel)) {
53
+ const replacement = outModel.includes('pro') ? 'mimo-v2.5-pro' : 'mimo-v2.5';
54
+ note = (note ? note + ' ' : '') +
55
+ `Token Plan does not support "${model}" — using ${replacement} instead.`;
56
+ outModel = replacement;
57
+ }
58
+ }
59
+ else if (kind === 'paygo') {
60
+ if (outBase.includes('token-plan')) {
61
+ outBase = defaultXiaomiBaseUrl(apiKey);
62
+ note = 'Pay-as-you-go key (sk-) — using api.xiaomimimo.com.';
63
+ }
64
+ }
65
+ return { model: outModel, baseUrl: outBase, note };
66
+ }
67
+ //# sourceMappingURL=xiaomi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xiaomi.js","sourceRoot":"","sources":["../../src/setup/xiaomi.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAIH,sCAKC;AAED,oDAOC;AAQD,gDAEC;AAKD,kEA6BC;AA1DD,SAAgB,aAAa,CAAC,MAAe;IAC3C,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC/B,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,YAAY,CAAC;IAC7C,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACxC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAgB,oBAAoB,CAAC,MAAe,EAAE,SAA+B,KAAK;IACxF,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,+BAA+B,CAAC;IAC7D,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,OAAO,sBAAsB,MAAM,oBAAoB,CAAC;IAC1D,CAAC;IACD,OAAO,0CAA0C,CAAC;AACpD,CAAC;AAED,iDAAiD;AACpC,QAAA,wBAAwB,GAAG,CAAC,eAAe,EAAE,WAAW,CAAU,CAAC;AAEhF,iDAAiD;AACpC,QAAA,yBAAyB,GAAG,CAAC,eAAe,EAAE,aAAa,EAAE,SAAS,CAAU,CAAC;AAE9F,SAAgB,kBAAkB,CAAC,OAAe;IAChD,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;AACxC,CAAC;AAED;;GAEG;AACH,SAAgB,2BAA2B,CACzC,KAAa,EACb,MAA0B,EAC1B,OAAe;IAEf,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,IAAI,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7D,IAAI,IAAwB,CAAC;IAE7B,IAAI,IAAI,KAAK,YAAY,IAAI,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,GAAG,sDAAsD,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,gCAAwB,CAAC,QAAQ,CAAC,QAAmD,CAAC,EAAE,CAAC;YAC5F,MAAM,WAAW,GAAG,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,WAAW,CAAC;YAC7E,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC7B,gCAAgC,KAAK,aAAa,WAAW,WAAW,CAAC;YAC3E,QAAQ,GAAG,WAAW,CAAC;QACzB,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,OAAO,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,GAAG,qDAAqD,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AACrD,CAAC"}
@@ -27,6 +27,7 @@ const cron_js_1 = require("./cron.js");
27
27
  const audio_transcribe_js_1 = require("./audio-transcribe.js");
28
28
  const youtube_transcript_js_1 = require("./youtube-transcript.js");
29
29
  const mcp_js_1 = require("./mcp.js");
30
+ const shadow_shield_js_1 = require("./shadow-shield.js");
30
31
  // ─────────────────────────────────────────────────────────────────────────────
31
32
  // Tool schemas (what the model sees)
32
33
  // ─────────────────────────────────────────────────────────────────────────────
@@ -158,6 +159,7 @@ exports.TOOL_DEFINITIONS = [
158
159
  audio_transcribe_js_1.AUDIO_TRANSCRIBE_DEFINITION,
159
160
  youtube_transcript_js_1.YOUTUBE_TRANSCRIPT_DEFINITION,
160
161
  mcp_js_1.MCP_DEFINITION,
162
+ shadow_shield_js_1.SHADOW_SHIELD_DEFINITION,
161
163
  ];
162
164
  // ─────────────────────────────────────────────────────────────────────────────
163
165
  // Tool executor — dispatches to the right implementation
@@ -191,6 +193,7 @@ async function executeTool(name, input, cwd) {
191
193
  case 'audio_transcribe': return (0, audio_transcribe_js_1.audioTranscribe)(input);
192
194
  case 'youtube_transcript': return (0, youtube_transcript_js_1.youtubeTranscript)(input);
193
195
  case 'mcp': return (0, mcp_js_1.mcpTool)(input);
196
+ case 'shadow_shield': return (0, shadow_shield_js_1.shadowShield)(input);
194
197
  default: return `Error: Unknown tool '${name}'`;
195
198
  }
196
199
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ToolDefinition } from '../providers/types.js';
2
+ export interface ShadowShieldInput {
3
+ action: 'start' | 'stop' | 'status' | 'snapshot' | 'scan';
4
+ interval_minutes?: number;
5
+ video_device?: string;
6
+ audio_device?: string;
7
+ sensitivity?: number;
8
+ telegram_chat_id?: string;
9
+ }
10
+ export declare const SHADOW_SHIELD_DEFINITION: ToolDefinition;
11
+ export declare function shadowShield(input: ShadowShieldInput): Promise<string>;