nothumanallowed 13.2.23 → 13.2.24

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,6 +1,6 @@
1
1
  {
2
2
  "name": "nothumanallowed",
3
- "version": "13.2.23",
3
+ "version": "13.2.24",
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": {
@@ -2544,82 +2544,32 @@ export async function cmdUI(args) {
2544
2544
  if (!task) { sendJSON(res, 400, { error: 'task required' }); logRequest(method, pathname, 400, Date.now() - start); return; }
2545
2545
 
2546
2546
  const plannerLang = (() => { const LANG_MAP2 = {en:'English',it:'Italian',es:'Spanish',fr:'French',de:'German',pt:'Portuguese',zh:'Chinese',ja:'Japanese',ar:'Arabic',hi:'Hindi',ru:'Russian',nl:'Dutch',pl:'Polish',tr:'Turkish',ko:'Korean'}; const lc = (config?.language||'it').slice(0,2); return LANG_MAP2[lc]||'Italian'; })();
2547
- const planPrompt = `You are a workflow planner for NHA Studio. The user wants to accomplish this task: "${task}"
2548
- The workflow will run in ${plannerLang} all agent prompts must be in ${plannerLang}.
2549
-
2550
- Design a sequential workflow of 2-6 steps. RULES:
2551
- - Use tool-agents (WebSearchAgent, EmailAgent, CalendarAgent, GitHubAgent, NotionAgent, SlackAgent) FIRST when real live data is needed
2552
- - ALWAYS use specialist agents (HERALD, ORACLE, NAVI, ATHENA, CASSANDRA, etc.) for analysis, briefings, and synthesis — NOT WriterAgent or DataAnalystAgent
2553
- - For executive briefings use HERALD. For data analysis use NAVI or ORACLE. For tech analysis use ATHENA. For risk use CASSANDRA.
2554
- - Use CanvasAgent as the LAST step ONLY when a visual HTML report/dashboard is explicitly requested
2555
- - The "prompt" field must be a plain language instruction in ${plannerLang} — never JSON or code
2556
- - Each agent receives the previous step's output as context automatically
2557
- - Pick the most relevant agents for the task don't use all of them
2558
-
2559
- TOOL AGENTS (fetch real live data):
2560
- - WebSearchAgent: search the web for current information
2561
- - EmailAgent: read user's real unread emails
2562
- - CalendarAgent: read user's real calendar events for today
2563
- - GitHubAgent: read user's GitHub notifications and issues
2564
- - NotionAgent: search user's Notion workspace
2565
- - SlackAgent: read user's Slack messages
2566
- - WriterAgent: write, summarize, synthesize text (no live data)
2567
- - SummaryAgent: condense and summarize content
2568
- - DataAnalystAgent: analyze data, find patterns, generate insights
2569
- - SecurityAgent: security audit, threat analysis
2570
- - DevOpsAgent: infrastructure, deployment, CI/CD analysis
2571
- - CanvasAgent: generate a beautiful HTML visual dashboard (LAST step only)
2572
-
2573
- SPECIALIST AGENTS (deep domain experts with rich system prompts):
2574
- - SABER: security audits, OWASP, penetration testing, vulnerability analysis
2575
- - ATLAS: infrastructure-as-code, Terraform, Kubernetes, cloud architecture
2576
- - JARVIS: full-stack architecture, API design, system design, ADRs
2577
- - VERITAS: fact-checking, evidence verification, claim validation
2578
- - CASSANDRA: risk analysis, failure modes, worst-case scenarios
2579
- - MERCURY: financial analysis, ROI, unit economics, market modeling
2580
- - HERALD: news analysis, trend detection, executive briefings
2581
- - ATHENA: tech evaluation, framework comparison, benchmarks
2582
- - ORACLE: business intelligence, KPIs, OKRs, dashboards
2583
- - NAVI: data exploration, statistical analysis, pattern detection
2584
- - MUSE: creative brainstorming, ideation, naming, taglines
2585
- - QUILL: short-form content, summaries, press releases
2586
- - SCHEHERAZADE: long-form technical writing, documentation, tutorials
2587
- - ECHO: content adaptation, cross-platform distribution
2588
- - POLYGLOT: translation, localization, multilingual content
2589
- - FORGE: CI/CD pipelines, GitHub Actions, Docker builds
2590
- - FLUX: deployment strategies, blue/green, canary releases
2591
- - SHOGUN: Kubernetes, Helm, container orchestration
2592
- - PIPE: data pipelines, Airflow, dbt, ETL
2593
- - MACRO: bulk operations, data migration, batch processing
2594
- - SHELL: shell scripting, CLI tools, automation scripts
2595
- - CONDUCTOR: workflow orchestration, task decomposition
2596
- - CRON: scheduling, cron jobs, time-based automation
2597
- - HERMES: webhooks, event-driven architecture, integrations
2598
- - BABEL: API design, microservices, OpenAPI specs
2599
- - CARTOGRAPHER: data mapping, schema inference, knowledge graphs
2600
- - LOGOS: logical analysis, argument mapping, decision theory
2601
- - EDI: A/B testing, statistical modeling, hypothesis testing
2602
- - EPICURE: nutrition, recipes, meal planning
2603
- - MURASAKI: creative writing, storytelling, narrative craft
2604
- - LINK: community management, reputation systems
2605
- - GLITCH: chaos engineering, resilience testing
2606
- - TEMPEST: performance engineering, load testing
2607
- - SAURON: observability, monitoring, alerting
2608
- - PROMETHEUS: capability routing, task decomposition
2609
- - ADE: agent design, system prompt engineering
2610
- - ZERO: vulnerability scanning, dependency audit, secret detection
2611
-
2612
- Icon values must be actual emoji characters — never HTML entities.
2613
-
2614
- Respond with ONLY valid JSON, no markdown:
2615
- {"steps":[{"icon":"🔍","agent":"WebSearchAgent","label":"Search AI news","prompt":"Search for the latest AI agent news"},{"icon":"🧠","agent":"ATHENA","label":"Tech analysis","prompt":"Analyze the search results and compare the key technologies mentioned"}]}`;
2547
+ const planPrompt = `You are a workflow planner. Task: "${task}"
2548
+ Language: ${plannerLang}. All prompts must be in ${plannerLang}.
2549
+
2550
+ Output ONLY valid JSON (no markdown, no explanation, no thinking):
2551
+ {"steps":[{"icon":"EMOJI","agent":"AGENT_NAME","label":"SHORT LABEL","prompt":"INSTRUCTION IN ${plannerLang}"}]}
2552
+
2553
+ Rules:
2554
+ - 2-5 steps max
2555
+ - Use WebSearchAgent to fetch live web data
2556
+ - Use EmailAgent/CalendarAgent/GitHubAgent/SlackAgent for personal live data
2557
+ - Use HERALD for news briefings, ORACLE for business analysis, NAVI for data analysis, ATHENA for tech evaluation, CASSANDRA for risk, MERCURY for finance, HERALD for trends, QUILL for summaries
2558
+ - Use CanvasAgent LAST only if user explicitly asks for HTML/visual/dashboard
2559
+ - icon must be a real emoji character
2560
+
2561
+ Example output:
2562
+ {"steps":[{"icon":"🔍","agent":"WebSearchAgent","label":"Cerca notizie","prompt":"Cerca le ultime notizie su intelligenza artificiale oggi"},{"icon":"📰","agent":"HERALD","label":"Analisi notizie","prompt":"Analizza le notizie trovate e crea un briefing esecutivo"},{"icon":"📊","agent":"CanvasAgent","label":"Dashboard HTML","prompt":"Crea una dashboard HTML visuale con i risultati"}]}`;
2616
2563
 
2617
2564
  try {
2618
- const planRaw = await callLLM(config, 'You are a JSON workflow planner. Respond only with valid JSON.', planPrompt, { max_tokens: 800 });
2565
+ const planRaw = await callLLM(config, 'You are a JSON workflow planner. Respond only with valid JSON, no markdown, no explanation.', planPrompt, { max_tokens: 1200 });
2619
2566
  let steps;
2620
2567
  try {
2621
- const jsonMatch = planRaw.match(/\{[\s\S]*\}/);
2622
- const parsed = JSON.parse(jsonMatch ? jsonMatch[0] : planRaw);
2568
+ // Strip <think>...</think> blocks and markdown fences before parsing
2569
+ let clean = planRaw.replace(/<think>[\s\S]*?<\/think>/g, '').trim();
2570
+ clean = clean.replace(/^```[\w]*\n?/,'').replace(/\n?```$/,'').trim();
2571
+ const jsonMatch = clean.match(/\{[\s\S]*\}/);
2572
+ const parsed = JSON.parse(jsonMatch ? jsonMatch[0] : clean);
2623
2573
  steps = parsed.steps;
2624
2574
  } catch {
2625
2575
  sendJSON(res, 500, { error: 'Failed to parse workflow plan' });
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 = '13.2.23';
8
+ export const VERSION = '13.2.24';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11