nothumanallowed 11.5.3 → 11.6.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/package.json +1 -1
- package/src/constants.mjs +1 -1
- package/src/services/llm.mjs +3 -2
- package/src/services/web-ui.mjs +33 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "11.
|
|
3
|
+
"version": "11.6.0",
|
|
4
4
|
"description": "NotHumanAllowed — 38 AI agents, 53 tools. Email, calendar, browser automation, screen capture, canvas, cron/heartbeat, GitHub, Notion, Slack, voice chat, 28 languages. Zero-dependency CLI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
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 = '11.
|
|
8
|
+
export const VERSION = '11.6.0';
|
|
9
9
|
export const BASE_URL = 'https://nothumanallowed.com/cli';
|
|
10
10
|
export const API_BASE = 'https://nothumanallowed.com/api/v1';
|
|
11
11
|
|
package/src/services/llm.mjs
CHANGED
|
@@ -262,7 +262,8 @@ export async function callNHA(apiKey, model, systemPrompt, userMessage, stream =
|
|
|
262
262
|
stream,
|
|
263
263
|
chat_template_kwargs: { enable_thinking: thinkingEnabled },
|
|
264
264
|
};
|
|
265
|
-
|
|
265
|
+
// Route through NHA server proxy (SENTINEL protection) instead of direct to Hetzner
|
|
266
|
+
const res = await fetch('https://nothumanallowed.com/api/v1/liara/chat', {
|
|
266
267
|
method: 'POST',
|
|
267
268
|
headers: {
|
|
268
269
|
'Content-Type': 'application/json',
|
|
@@ -511,7 +512,7 @@ function buildRequestBody(provider, model, systemPrompt, userMessage, stream) {
|
|
|
511
512
|
/** Get provider API URL */
|
|
512
513
|
function getProviderUrl(provider, model, apiKey) {
|
|
513
514
|
const urls = {
|
|
514
|
-
nha: 'https://
|
|
515
|
+
nha: 'https://nothumanallowed.com/api/v1/liara/chat',
|
|
515
516
|
anthropic: 'https://api.anthropic.com/v1/messages',
|
|
516
517
|
openai: 'https://api.openai.com/v1/chat/completions',
|
|
517
518
|
deepseek: 'https://api.deepseek.com/v1/chat/completions',
|
package/src/services/web-ui.mjs
CHANGED
|
@@ -2054,14 +2054,42 @@ function settingsSection(id, title, desc, fields) {
|
|
|
2054
2054
|
try { var cfg = JSON.parse(localStorage.getItem('nha_config_cache') || '{}'); currentVal = cfg[key] || ''; } catch(e) {}
|
|
2055
2055
|
|
|
2056
2056
|
h += '<div style="margin-bottom:10px">' +
|
|
2057
|
-
'<label style="display:block;font-size:11px;color:var(--dim);margin-bottom:3px">' + esc(label) + '</label>'
|
|
2058
|
-
|
|
2057
|
+
'<label style="display:block;font-size:11px;color:var(--dim);margin-bottom:3px">' + esc(label) + '</label>';
|
|
2058
|
+
|
|
2059
|
+
if (key === 'provider') {
|
|
2060
|
+
// Dropdown for provider selection
|
|
2061
|
+
var providers = [
|
|
2062
|
+
{value:'nha',label:'NHA Free (Liara) — no API key needed'},
|
|
2063
|
+
{value:'anthropic',label:'Anthropic (Claude)'},
|
|
2064
|
+
{value:'openai',label:'OpenAI (GPT-4)'},
|
|
2065
|
+
{value:'gemini',label:'Google (Gemini)'},
|
|
2066
|
+
{value:'deepseek',label:'DeepSeek'},
|
|
2067
|
+
{value:'grok',label:'xAI (Grok)'},
|
|
2068
|
+
{value:'mistral',label:'Mistral'},
|
|
2069
|
+
{value:'cohere',label:'Cohere'},
|
|
2070
|
+
];
|
|
2071
|
+
h += '<select style="width:100%;padding:8px 12px;font-size:13px;background:var(--bg);color:var(--fg);border:1px solid var(--border2);border-radius:var(--r)" data-config-key="provider" data-section="' + esc(id) + '">';
|
|
2072
|
+
for (var pi=0;pi<providers.length;pi++) {
|
|
2073
|
+
var sel = currentVal === providers[pi].value ? ' selected' : '';
|
|
2074
|
+
h += '<option value="' + providers[pi].value + '"' + sel + '>' + providers[pi].label + '</option>';
|
|
2075
|
+
}
|
|
2076
|
+
h += '</select>';
|
|
2077
|
+
} else if (key === 'thinking') {
|
|
2078
|
+
// Dropdown for thinking toggle
|
|
2079
|
+
h += '<select style="width:100%;padding:8px 12px;font-size:13px;background:var(--bg);color:var(--fg);border:1px solid var(--border2);border-radius:var(--r)" data-config-key="thinking" data-section="' + esc(id) + '">' +
|
|
2080
|
+
'<option value="off"' + (currentVal !== 'on' ? ' selected' : '') + '>Off — faster responses</option>' +
|
|
2081
|
+
'<option value="on"' + (currentVal === 'on' ? ' selected' : '') + '>On — extended reasoning (NHA Free only)</option>' +
|
|
2082
|
+
'</select>';
|
|
2083
|
+
} else {
|
|
2084
|
+
h += '<input type="' + (isSecret ? 'password' : 'text') + '" ' +
|
|
2059
2085
|
'value="' + esc(currentVal) + '" ' +
|
|
2060
2086
|
'placeholder="' + esc(placeholder) + '" ' +
|
|
2061
2087
|
'style="width:100%;padding:8px 12px;font-size:13px" ' +
|
|
2062
2088
|
'data-config-key="' + esc(key) + '" ' +
|
|
2063
|
-
'data-section="' + esc(id) + '">'
|
|
2064
|
-
|
|
2089
|
+
'data-section="' + esc(id) + '">';
|
|
2090
|
+
}
|
|
2091
|
+
|
|
2092
|
+
h += '</div>';
|
|
2065
2093
|
}
|
|
2066
2094
|
|
|
2067
2095
|
h += '<div style="display:flex;align-items:center;gap:12px;margin-top:14px">' +
|
|
@@ -2077,7 +2105,7 @@ function settingsSection(id, title, desc, fields) {
|
|
|
2077
2105
|
}
|
|
2078
2106
|
|
|
2079
2107
|
function saveSettingsSection(sectionId) {
|
|
2080
|
-
var inputs = document.querySelectorAll('input[data-section="' + sectionId + '"]');
|
|
2108
|
+
var inputs = document.querySelectorAll('input[data-section="' + sectionId + '"], select[data-section="' + sectionId + '"]');
|
|
2081
2109
|
var statusEl = document.getElementById('settings-status-' + sectionId);
|
|
2082
2110
|
if (statusEl) { statusEl.textContent = 'Saving...'; statusEl.style.color = 'var(--amber)'; }
|
|
2083
2111
|
|