nothumanallowed 15.1.41 → 15.1.42
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/package.json +1 -1
- package/src/config.mjs +35 -11
- package/src/constants.mjs +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "15.1.
|
|
3
|
+
"version": "15.1.42",
|
|
4
4
|
"description": "NotHumanAllowed — 38 AI agents, 80 tools, Studio (visual agentic workflows). Email, calendar, browser automation, screen capture, canvas, cron/heartbeat, Alexandria E2E messaging, GitHub, Notion, Slack, voice chat, free AI (Liara), 28 languages. Zero-dependency CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
package/src/config.mjs
CHANGED
|
@@ -306,8 +306,11 @@ export function setConfigValue(key, value) {
|
|
|
306
306
|
'microsoft-tenant': 'microsoft.tenantId',
|
|
307
307
|
'microsoft-tenant-id': 'microsoft.tenantId',
|
|
308
308
|
'plan-time': 'ops.planTime',
|
|
309
|
+
'planTime': 'ops.planTime', // camelCase variant from WebUI Settings
|
|
309
310
|
'summary-time': 'ops.summaryTime',
|
|
311
|
+
'summaryTime': 'ops.summaryTime', // camelCase variant from WebUI Settings
|
|
310
312
|
'meeting-alert': 'ops.meetingAlertMinutes',
|
|
313
|
+
'meetingAlert': 'ops.meetingAlertMinutes', // camelCase variant from WebUI Settings
|
|
311
314
|
'telegram-webhook': 'ops.webhooks.telegram',
|
|
312
315
|
'discord-webhook': 'ops.webhooks.discord',
|
|
313
316
|
'plugin-autorun': 'plugins.autoRun',
|
|
@@ -357,8 +360,24 @@ export function setConfigValue(key, value) {
|
|
|
357
360
|
'thinking': 'thinking',
|
|
358
361
|
'extended-thinking': 'thinking',
|
|
359
362
|
'language': 'language',
|
|
363
|
+
'lang': 'language', // short form used by WebUI Settings dropdown
|
|
360
364
|
};
|
|
361
365
|
|
|
366
|
+
// Top-level "object sections" — keys whose value is the entire section object,
|
|
367
|
+
// not a scalar. The WebUI saves these by sending the full bag (e.g. profile = {
|
|
368
|
+
// name, email, phone, ... }) so that one form click persists all fields. We
|
|
369
|
+
// merge (not overwrite) to avoid wiping unrelated keys a future UI may not know.
|
|
370
|
+
const OBJECT_SECTIONS = {
|
|
371
|
+
profile: 'profile',
|
|
372
|
+
};
|
|
373
|
+
if (OBJECT_SECTIONS[key] && value && typeof value === 'object' && !Array.isArray(value)) {
|
|
374
|
+
const targetPath = OBJECT_SECTIONS[key];
|
|
375
|
+
if (!config[targetPath] || typeof config[targetPath] !== 'object') config[targetPath] = {};
|
|
376
|
+
Object.assign(config[targetPath], value);
|
|
377
|
+
saveConfig(config);
|
|
378
|
+
return true;
|
|
379
|
+
}
|
|
380
|
+
|
|
362
381
|
// Reject keys we don't recognize and that aren't dotted paths into config.
|
|
363
382
|
// Previously a typo like "groqkey" (no hyphen) silently stored the value
|
|
364
383
|
// under config.groqkey at root level — invisible to the rest of the code.
|
|
@@ -396,17 +415,22 @@ export function setConfigValue(key, value) {
|
|
|
396
415
|
obj[lastKey] = value === 'true' || value === '1' || value === 'yes';
|
|
397
416
|
} else if (typeof existing === 'number') {
|
|
398
417
|
obj[lastKey] = Number(value);
|
|
399
|
-
} else if (Array.isArray(existing)) {
|
|
400
|
-
//
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
obj[lastKey] =
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
const
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
418
|
+
} else if (Array.isArray(existing) || Array.isArray(value)) {
|
|
419
|
+
// Already an array from the WebUI? Persist as-is. CLI users send strings,
|
|
420
|
+
// so fall back to comma-split / JSON parsing for backward compatibility.
|
|
421
|
+
if (Array.isArray(value)) {
|
|
422
|
+
obj[lastKey] = value;
|
|
423
|
+
} else {
|
|
424
|
+
try {
|
|
425
|
+
const parsed = JSON.parse(value);
|
|
426
|
+
obj[lastKey] = Array.isArray(parsed) ? parsed : [parsed];
|
|
427
|
+
} catch {
|
|
428
|
+
obj[lastKey] = String(value).split(',').map(v => {
|
|
429
|
+
const trimmed = v.trim();
|
|
430
|
+
const num = Number(trimmed);
|
|
431
|
+
return !isNaN(num) && trimmed !== '' ? num : trimmed;
|
|
432
|
+
}).filter(Boolean);
|
|
433
|
+
}
|
|
410
434
|
}
|
|
411
435
|
} else {
|
|
412
436
|
obj[lastKey] = value;
|
package/src/constants.mjs
CHANGED
|
@@ -5,7 +5,7 @@ import { fileURLToPath } from 'url';
|
|
|
5
5
|
const __filename = fileURLToPath(import.meta.url);
|
|
6
6
|
const __dirname = path.dirname(__filename);
|
|
7
7
|
|
|
8
|
-
export const VERSION = '15.1.
|
|
8
|
+
export const VERSION = '15.1.42';
|
|
9
9
|
export const BASE_URL = 'https://nothumanallowed.com/cli';
|
|
10
10
|
export const API_BASE = 'https://nothumanallowed.com/api/v1';
|
|
11
11
|
|