nothumanallowed 11.5.4 → 11.6.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "nothumanallowed",
3
- "version": "11.5.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.",
3
+ "version": "11.6.1",
4
+ "description": "NotHumanAllowed — 38 AI agents, 70 tools. 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": {
7
7
  "nha": "./bin/nha.mjs",
package/src/cli.mjs CHANGED
@@ -32,6 +32,16 @@ export async function main(argv) {
32
32
  if (cmd === 'setup') return; // setup was the goal
33
33
  }
34
34
 
35
+ // ── Telemetry ping (anonymous, fire-and-forget, non-blocking) ────────────
36
+ if (cmd !== 'help' && cmd !== 'version' && cmd !== '--help' && cmd !== '-h') {
37
+ fetch('https://nothumanallowed.com/api/v1/telemetry/ping', {
38
+ method: 'POST',
39
+ headers: { 'Content-Type': 'application/json' },
40
+ body: JSON.stringify({ platform: 'cli', version: VERSION }),
41
+ signal: AbortSignal.timeout(5000),
42
+ }).catch(() => {});
43
+ }
44
+
35
45
  // ── Background update check (non-blocking) ──────────────────────────────
36
46
  if (cmd !== 'update' && cmd !== 'help' && cmd !== 'version') {
37
47
  checkForUpdates().then(updates => {
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.5.4';
8
+ export const VERSION = '11.6.1';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -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
- const res = await fetch('https://liara.nothumanallowed.com/v1/chat/completions', {
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://liara.nothumanallowed.com/v1/chat/completions',
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',