nothumanallowed 13.5.58 → 13.5.59

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/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # NotHumanAllowed
2
2
 
3
- **38 specialized AI agents, 81 tools, Studio visual workflows — all local, all free.** Security auditors, code architects, data analysts, DevOps engineers, technical writers — each with deep domain expertise. Use them individually, run complex multi-agent workflows in Studio, or let them deliberate together with Parliament mode.
3
+ **38 specialized AI agents, 80 tools, Studio visual workflows, WebCraft full-stack builder — all local, all free.** Security auditors, code architects, data analysts, DevOps engineers, technical writers — each with deep domain expertise. Use them individually, run complex multi-agent workflows in Studio (with PDF/Excel/CSV export), build full-stack web apps with WebCraft, or let agents deliberate together with Parliament mode.
4
4
 
5
5
  ## Quick Start
6
6
 
@@ -40,6 +40,83 @@ EmailAgent → WebSearchAgent → WriterAgent
40
40
  - **Parliament mode** — enable for 2+ specialist agents to cross-read and deliberate: R1 (independent), R2 (agents read each other), R3 (HERALD mediation), convergence score
41
41
  - Open `nha ui` → click **Studio** in the sidebar
42
42
 
43
+ ### Studio Export
44
+
45
+ When a workflow completes, Studio provides three export formats:
46
+
47
+ - **PDF** — full structured report with all agent outputs, typography, token counters
48
+ - **Excel (XLSX)** — professional multi-sheet workbook via SheetJS: one sheet per agent, auto-detected numeric columns with formatting, alternating row colors, freeze panes, auto-column widths, index sheet with token summary. Data tables are extracted from Markdown output automatically.
49
+ - **CSV** — all Markdown tables from the report merged into a single file
50
+
51
+ Export buttons appear in the result panel and in the toolbar after each run.
52
+
53
+ ---
54
+
55
+ ## WebCraft — Full-Stack Web Apps from a Chat
56
+
57
+ WebCraft is a full-stack web app builder embedded in `nha ui`. Describe what you want in plain language — WebCraft generates a complete project with Express.js backend, PostgreSQL schema, JWT auth, email verification, security middleware, and a styled frontend. Everything runs locally with a live sandbox.
58
+
59
+ ```
60
+ Open nha ui → click WebCraft in the sidebar
61
+ ```
62
+
63
+ ### How it works
64
+
65
+ 1. **Describe your project** in the chat (or pick an example: MySaaS, MyShop, MyBlog, MyPortfolio...)
66
+ 2. **WebCraft generates** all files: `server/`, `public/`, `db/migrations/`, `.env.example`, `package.json`, nginx config
67
+ 3. **Click ▶ Sandbox** — runs `npm install && node server/index.js` in an isolated process, live on a local port
68
+ 4. **Chat with the agent** to modify, fix, or extend anything — the agent edits files directly on disk, you see diffs in real time
69
+
70
+ ### WebCraft Agent
71
+
72
+ An AI assistant permanently available in the chat panel. Powered by Liara (Qwen3 32B, free) or your own API key.
73
+
74
+ **What it can do:**
75
+ - Edit files surgically (old → new string replace) or rewrite them completely
76
+ - Read any project file for context
77
+ - Auto-fix `MODULE_NOT_FOUND` and common require() path errors
78
+ - Restart the sandbox after fixes
79
+ - Process attached screenshots or PDFs (vision) to debug visual issues
80
+
81
+ **Context files** (created automatically for every project, editable via sidebar):
82
+ | File | Type | Purpose |
83
+ |---|---|---|
84
+ | `skills/memory.md` | memory | Architecture decisions, stack choices, developer preferences |
85
+ | `skills/liara.md` | provider | Calibrate AI tone, code style, constraints |
86
+ | `skills/skills.md` | skill | Reusable patterns, snippets, API integrations |
87
+
88
+ Add more skill files (unlimited) for specific integrations (Stripe, email templates, etc.).
89
+
90
+ ### Developer Tools (sidebar toolbar)
91
+
92
+ | Tool | Description |
93
+ |---|---|
94
+ | **Diff viewer** | After every agent edit, see before/after for each changed file — color-coded, collapsible |
95
+ | **Syntax check** ✅ | Runs `node --check` on all JS files, reports errors instantly |
96
+ | **Search** 🔍 | Grep across all project files — click a result to jump to that file |
97
+ | **Snapshot** 💾 | Save a full point-in-time backup of all files. Restore any snapshot with one click |
98
+ | **Plan mode** | Type `/plan your request` — agent proposes a plan first, you approve before any file is touched |
99
+ | **Auto-fix** | Sandbox errors (MODULE_NOT_FOUND etc.) trigger automatic Liara fix attempts (3 free, unlimited with own key) |
100
+
101
+ ### Example session
102
+
103
+ ```
104
+ You: "Add a contact form with SMTP email and honeypot spam protection"
105
+ Agent: → edits server/routes/api.js (add /contact POST route)
106
+ → edits server/services/email.js (add sendContactEmail)
107
+ → edits public/index.html (add form HTML)
108
+ → edits public/js/main.js (add form JS with honeypot)
109
+ [Diff viewer shows 4 files changed]
110
+ [Syntax check: ✅ all files valid]
111
+ [Sandbox restarted automatically]
112
+ ```
113
+
114
+ ```
115
+ You: "/plan refactor auth to use refresh token rotation"
116
+ Agent: → proposes plan (3 files, 6 changes) — no edits yet
117
+ → you click Approve → agent executes
118
+ ```
119
+
43
120
  ## Daily Operations (PAO)
44
121
 
45
122
  Connect Gmail + Calendar. 5 specialist agents analyze your day.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nothumanallowed",
3
- "version": "13.5.58",
3
+ "version": "13.5.59",
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/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.5.58';
8
+ export const VERSION = '13.5.59';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -7024,9 +7024,9 @@ function wcChatPanelHtml() {
7024
7024
  '</div>'
7025
7025
  : '<div style="padding:4px 12px 0;font-size:10px;color:var(--dim)">&#128196; <strong style="color:var(--green)">'+wcEsc(wcState.projectName)+'</strong> &mdash; scrivi per modificare o migliorare il progetto</div>';
7026
7026
 
7027
- return '<div style="border-top:1px solid var(--border);background:var(--bg2);flex-shrink:0;display:flex;flex-direction:column">' +
7027
+ return '<div style="border-top:1px solid var(--border);background:var(--bg2);flex-shrink:0;display:flex;flex-direction:column;min-height:220px">' +
7028
7028
  // Messages
7029
- '<div id="wcChatMessages" style="max-height:160px;overflow-y:auto;padding:6px 0">' +
7029
+ '<div id="wcChatMessages" style="max-height:240px;overflow-y:auto;padding:6px 0">' +
7030
7030
  messagesHtml +
7031
7031
  '</div>' +
7032
7032
  // Attachments
@@ -7039,7 +7039,7 @@ function wcChatPanelHtml() {
7039
7039
  '&#128206;' +
7040
7040
  '<input type="file" id="wcFileInput" multiple accept="image/*,.pdf" style="display:none" onchange="wcHandleFileAttach(this)">' +
7041
7041
  '</label>' +
7042
- '<textarea id="wcChatInput" rows="2" placeholder="'+placeholder+'" '+(inputDisabled?'disabled':'')+' style="flex:1;padding:8px 10px;font-size:12px;border-radius:8px;border:1px solid var(--border2);background:var(--bg3);color:var(--text);resize:none;line-height:1.5;font-family:inherit" onkeydown="wcChatKeydown(event)"></textarea>' +
7042
+ '<textarea id="wcChatInput" rows="4" placeholder="'+placeholder+'" '+(inputDisabled?'disabled':'')+' style="flex:1;padding:8px 10px;font-size:12px;border-radius:8px;border:1px solid var(--border2);background:var(--bg3);color:var(--text);resize:vertical;min-height:80px;line-height:1.5;font-family:inherit" onkeydown="wcChatKeydown(event)"></textarea>' +
7043
7043
  '<button onclick="wcChatSend()" '+(inputDisabled?'disabled':'')+' style="padding:8px 14px;background:var(--green3);border:none;border-radius:8px;color:var(--bg);font-size:13px;font-weight:700;cursor:pointer;flex-shrink:0;height:38px">'+sendBtnLabel+'</button>' +
7044
7044
  '</div>' +
7045
7045
  '</div>';
@@ -7909,6 +7909,20 @@ async function wcStartSandbox() {
7909
7909
  wcState.sandbox.running = false;
7910
7910
  wcState.sandbox.error = evt.msg;
7911
7911
  renderWebCraft(document.getElementById('content'));
7912
+ // Auto-fix: try to detect MODULE_NOT_FOUND in crash message and fix it
7913
+ var errMsg = evt.msg || '';
7914
+ var modMatch = errMsg.match(new RegExp("Cannot find module '([^']+)'")) ||
7915
+ errMsg.match(new RegExp('Cannot find module "([^"]+)"'));
7916
+ if (modMatch && _wcAutoFixAttempts < 3) {
7917
+ _wcAutoFixAttempts++;
7918
+ wcTriggerAutoFix(modMatch[1]);
7919
+ } else if (errMsg && !modMatch && _wcAutoFixAttempts < 3) {
7920
+ // Generic crash: post error to chat so agent can see it
7921
+ _wcAutoFixAttempts++;
7922
+ wcChat.push({ role: 'system', text: '&#10060; Errore sandbox: ' + errMsg });
7923
+ renderWebCraft(document.getElementById('content'));
7924
+ wcScrollChatToBottom();
7925
+ }
7912
7926
  }
7913
7927
  } catch(_) {}
7914
7928
  }