nothumanallowed 13.5.37 → 13.5.39
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/web-ui.mjs +66 -22
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.5.
|
|
3
|
+
"version": "13.5.39",
|
|
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.
|
|
8
|
+
export const VERSION = '13.5.39';
|
|
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/web-ui.mjs
CHANGED
|
@@ -248,7 +248,10 @@ function switchView(v) {
|
|
|
248
248
|
if(spt)spt.textContent=t('nav_'+v)||v;
|
|
249
249
|
// Toggle content--chat class for proper chat layout (no overflow, flex column)
|
|
250
250
|
var ct=document.getElementById('content');
|
|
251
|
-
if(ct){
|
|
251
|
+
if(ct){
|
|
252
|
+
if(v==='chat'){ct.classList.add('content--chat')}else{ct.classList.remove('content--chat')}
|
|
253
|
+
if(v==='webcraft'){ct.classList.add('content--webcraft')}else{ct.classList.remove('content--webcraft')}
|
|
254
|
+
}
|
|
252
255
|
closeSidebar();
|
|
253
256
|
// Auto-close floating panels when leaving chat/studio
|
|
254
257
|
if(v!=='chat'&&v!=='studio'){closeBrowserViewer();closeCanvas();}
|
|
@@ -3136,6 +3139,14 @@ var I18N = {
|
|
|
3136
3139
|
nav_slack:'Slack', nav_birthdays:'Birthdays', nav_agents:'Agents',
|
|
3137
3140
|
nav_studio:'Studio', nav_collab:'AgentMessenger', nav_settings:'Settings',
|
|
3138
3141
|
nav_docs:'Documentation', nav_agents_guide:'Agents Guide', nav_mobile:'Mobile App',
|
|
3142
|
+
nav_webcraft:'WebCraft',
|
|
3143
|
+
wc_title:'WebCraft', wc_subtitle:'Generate enterprise-grade web projects — security headers A+, BEM CSS, PostgreSQL pool, Auth, GDPR cookie banner.',
|
|
3144
|
+
wc_project:'Project', wc_project_name:'Project name (e.g. MySaaS)', wc_desc:'Describe your project...',
|
|
3145
|
+
wc_blocks:'Included Blocks', wc_auth_fields:'Auth Fields', wc_add_field:'+ Add field',
|
|
3146
|
+
wc_required_hint:'Checked = Required | Edit label & type inline',
|
|
3147
|
+
wc_generate:'Generate Project', wc_generating:'Generating',
|
|
3148
|
+
wc_download:'Download Archive', wc_describe_first:'Please describe your project first.',
|
|
3149
|
+
wc_no_files:'Describe your project and click Generate',
|
|
3139
3150
|
},
|
|
3140
3151
|
it: {
|
|
3141
3152
|
chat:'Chat', studio:'Studio', settings:'Impostazioni', agents:'Agenti',
|
|
@@ -3163,6 +3174,14 @@ var I18N = {
|
|
|
3163
3174
|
nav_slack:'Slack', nav_birthdays:'Compleanni', nav_agents:'Agenti',
|
|
3164
3175
|
nav_studio:'Studio', nav_collab:'AgentMessenger', nav_settings:'Impostazioni',
|
|
3165
3176
|
nav_docs:'Documentazione', nav_agents_guide:'Guida Agenti', nav_mobile:'App Mobile',
|
|
3177
|
+
nav_webcraft:'WebCraft',
|
|
3178
|
+
wc_title:'WebCraft', wc_subtitle:'Genera progetti web enterprise — security headers A+, CSS BEM, PostgreSQL pool, Auth, cookie banner GDPR.',
|
|
3179
|
+
wc_project:'Progetto', wc_project_name:'Nome progetto (es. MioSaaS)', wc_desc:'Descrivi il tuo progetto...',
|
|
3180
|
+
wc_blocks:'Blocchi inclusi', wc_auth_fields:'Campi registrazione', wc_add_field:'+ Aggiungi campo',
|
|
3181
|
+
wc_required_hint:'Spuntato = Obbligatorio | Modifica etichetta e tipo inline',
|
|
3182
|
+
wc_generate:'Genera progetto', wc_generating:'Generazione in corso',
|
|
3183
|
+
wc_download:'Scarica archivio', wc_describe_first:'Descrivi prima il tuo progetto.',
|
|
3184
|
+
wc_no_files:'Descrivi il progetto e clicca Genera',
|
|
3166
3185
|
},
|
|
3167
3186
|
es: {
|
|
3168
3187
|
chat:'Chat', studio:'Studio', settings:'Configuración', agents:'Agentes',
|
|
@@ -3189,6 +3208,14 @@ var I18N = {
|
|
|
3189
3208
|
nav_slack:'Slack', nav_birthdays:'Cumplea\u00f1os', nav_agents:'Agentes',
|
|
3190
3209
|
nav_studio:'Studio', nav_collab:'AgentMessenger', nav_settings:'Configuraci\u00f3n',
|
|
3191
3210
|
nav_docs:'Documentaci\u00f3n', nav_agents_guide:'Gu\u00eda Agentes', nav_mobile:'App M\u00f3vil',
|
|
3211
|
+
nav_webcraft:'WebCraft',
|
|
3212
|
+
wc_title:'WebCraft', wc_subtitle:'Genera proyectos web empresariales — headers A+, CSS BEM, PostgreSQL pool, Auth, banner de cookies GDPR.',
|
|
3213
|
+
wc_project:'Proyecto', wc_project_name:'Nombre del proyecto (ej. MiSaaS)', wc_desc:'Describe tu proyecto...',
|
|
3214
|
+
wc_blocks:'Bloques incluidos', wc_auth_fields:'Campos de registro', wc_add_field:'+ A\u00f1adir campo',
|
|
3215
|
+
wc_required_hint:'Marcado = Obligatorio | Edita etiqueta y tipo inline',
|
|
3216
|
+
wc_generate:'Generar proyecto', wc_generating:'Generando',
|
|
3217
|
+
wc_download:'Descargar archivo', wc_describe_first:'Por favor describe tu proyecto primero.',
|
|
3218
|
+
wc_no_files:'Describe el proyecto y haz clic en Generar',
|
|
3192
3219
|
},
|
|
3193
3220
|
fr: {
|
|
3194
3221
|
chat:'Chat', studio:'Studio', settings:'Paramètres', agents:'Agents',
|
|
@@ -3215,6 +3242,14 @@ var I18N = {
|
|
|
3215
3242
|
nav_slack:'Slack', nav_birthdays:'Anniversaires', nav_agents:'Agents',
|
|
3216
3243
|
nav_studio:'Studio', nav_collab:'AgentMessenger', nav_settings:'Param\u00e8tres',
|
|
3217
3244
|
nav_docs:'Documentation', nav_agents_guide:'Guide Agents', nav_mobile:'App Mobile',
|
|
3245
|
+
nav_webcraft:'WebCraft',
|
|
3246
|
+
wc_title:'WebCraft', wc_subtitle:'G\u00e9n\u00e9rez des projets web entreprise — headers A+, CSS BEM, pool PostgreSQL, Auth, bandeau cookies RGPD.',
|
|
3247
|
+
wc_project:'Projet', wc_project_name:'Nom du projet (ex. MonSaaS)', wc_desc:'D\u00e9crivez votre projet...',
|
|
3248
|
+
wc_blocks:'Blocs inclus', wc_auth_fields:'Champs inscription', wc_add_field:'+ Ajouter un champ',
|
|
3249
|
+
wc_required_hint:'Coch\u00e9 = Obligatoire | Modifier \u00e9tiquette et type inline',
|
|
3250
|
+
wc_generate:'G\u00e9n\u00e9rer le projet', wc_generating:'G\u00e9n\u00e9ration en cours',
|
|
3251
|
+
wc_download:'T\u00e9l\u00e9charger archive', wc_describe_first:'Veuillez d\u00e9crire votre projet.',
|
|
3252
|
+
wc_no_files:'D\u00e9crivez le projet et cliquez sur G\u00e9n\u00e9rer',
|
|
3218
3253
|
},
|
|
3219
3254
|
de: {
|
|
3220
3255
|
chat:'Chat', studio:'Studio', settings:'Einstellungen', agents:'Agenten',
|
|
@@ -3241,6 +3276,14 @@ var I18N = {
|
|
|
3241
3276
|
nav_slack:'Slack', nav_birthdays:'Geburtstage', nav_agents:'Agenten',
|
|
3242
3277
|
nav_studio:'Studio', nav_collab:'AgentMessenger', nav_settings:'Einstellungen',
|
|
3243
3278
|
nav_docs:'Dokumentation', nav_agents_guide:'Agenten-Leitfaden', nav_mobile:'Mobile App',
|
|
3279
|
+
nav_webcraft:'WebCraft',
|
|
3280
|
+
wc_title:'WebCraft', wc_subtitle:'Enterprise-Web-Projekte generieren — Security-Headers A+, BEM CSS, PostgreSQL Pool, Auth, DSGVO Cookie-Banner.',
|
|
3281
|
+
wc_project:'Projekt', wc_project_name:'Projektname (z.B. MeinSaaS)', wc_desc:'Beschreibe dein Projekt...',
|
|
3282
|
+
wc_blocks:'Enthaltene Bl\u00f6cke', wc_auth_fields:'Registrierungsfelder', wc_add_field:'+ Feld hinzuf\u00fcgen',
|
|
3283
|
+
wc_required_hint:'Aktiviert = Pflichtfeld | Beschriftung und Typ inline bearbeiten',
|
|
3284
|
+
wc_generate:'Projekt generieren', wc_generating:'Generierung',
|
|
3285
|
+
wc_download:'Archiv herunterladen', wc_describe_first:'Bitte beschreibe zuerst dein Projekt.',
|
|
3286
|
+
wc_no_files:'Beschreibe das Projekt und klicke auf Generieren',
|
|
3244
3287
|
},
|
|
3245
3288
|
};
|
|
3246
3289
|
// Fallback to 'en' for unmapped languages
|
|
@@ -3309,7 +3352,7 @@ function renderSidebar() {
|
|
|
3309
3352
|
\x27<span style="font-size:8px;padding:1px 5px;border-radius:4px;background:rgba(99,102,241,.25);color:var(--green);margin-left:4px;font-weight:700">NEW</span>\x27+
|
|
3310
3353
|
\x27</div>\x27+
|
|
3311
3354
|
\x27<div class="nav-item\x27+(activeView===\x27webcraft\x27?\x27 nav-item--active\x27:\x27\x27)+\x27" data-view="webcraft" onclick="switchView(\\\x27webcraft\\\x27)">\x27+
|
|
3312
|
-
\x27<span class="nav-item__icon">🛠</span>
|
|
3355
|
+
\x27<span class="nav-item__icon">🛠</span> \x27+t(\x27nav_webcraft\x27)+
|
|
3313
3356
|
\x27<span style="font-size:8px;padding:1px 5px;border-radius:4px;background:rgba(99,102,241,.25);color:var(--green);margin-left:4px;font-weight:700">NEW</span>\x27+
|
|
3314
3357
|
\x27</div>\x27+
|
|
3315
3358
|
\x27<div class="nav-item\x27+(activeView===\x27collab\x27?\x27 nav-item--active\x27:\x27\x27)+\x27" data-view="collab" onclick="switchView(\\\x27collab\\\x27)">\x27+
|
|
@@ -3345,7 +3388,7 @@ var studioAbortController = null;
|
|
|
3345
3388
|
var parlActiveAgent = null; // active agent label during parliament streaming
|
|
3346
3389
|
var parlDoneAgents = {}; // set of completed agent labels during parliament
|
|
3347
3390
|
var _parlPersistHtml = null; // persists parliament block HTML across tab navigations
|
|
3348
|
-
var _PARL_STAMP = '<!--nha-parl-v13.5.
|
|
3391
|
+
var _PARL_STAMP = '<!--nha-parl-v13.5.39-->';
|
|
3349
3392
|
|
|
3350
3393
|
function stopStudio() {
|
|
3351
3394
|
if (!studioState.running) return;
|
|
@@ -6185,7 +6228,7 @@ function renderWebCraft(el) {
|
|
|
6185
6228
|
'</div>'
|
|
6186
6229
|
: '<div style="flex:1;display:flex;align-items:center;justify-content:center;color:var(--dim);font-size:12px;flex-direction:column;gap:8px">' +
|
|
6187
6230
|
'<span style="font-size:36px;opacity:.25">🛠</span>' +
|
|
6188
|
-
'<span>
|
|
6231
|
+
'<span>'+t('wc_no_files')+'</span>' +
|
|
6189
6232
|
'</div>';
|
|
6190
6233
|
|
|
6191
6234
|
var authFieldsHtml = wcState.authFields.map(function(f,i){
|
|
@@ -6200,27 +6243,27 @@ function renderWebCraft(el) {
|
|
|
6200
6243
|
}).join('');
|
|
6201
6244
|
|
|
6202
6245
|
el.innerHTML =
|
|
6203
|
-
'<div style="
|
|
6204
|
-
'<div style="margin-bottom:
|
|
6205
|
-
'<h2 style="font-size:15px;color:var(--green);margin-bottom:4px">🛠
|
|
6206
|
-
'<p style="font-size:11px;color:var(--dim);line-height:1.5">
|
|
6246
|
+
'<div style="display:flex;flex-direction:column;height:100%;min-height:0;padding:0 4px">' +
|
|
6247
|
+
'<div style="margin-bottom:14px;flex-shrink:0">' +
|
|
6248
|
+
'<h2 style="font-size:15px;color:var(--green);margin-bottom:4px">🛠 '+t('wc_title')+'</h2>' +
|
|
6249
|
+
'<p style="font-size:11px;color:var(--dim);line-height:1.5">'+t('wc_subtitle')+'</p>' +
|
|
6207
6250
|
'</div>' +
|
|
6208
6251
|
|
|
6209
|
-
'<div style="display:flex;gap:
|
|
6252
|
+
'<div style="display:flex;gap:14px;align-items:flex-start;flex:1;min-height:0">' +
|
|
6210
6253
|
|
|
6211
6254
|
// LEFT: config panel
|
|
6212
|
-
'<div style="width:
|
|
6255
|
+
'<div style="width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:10px;overflow-y:auto;max-height:calc(100vh - 120px)">' +
|
|
6213
6256
|
|
|
6214
6257
|
// Project name + description
|
|
6215
6258
|
'<div style="background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:14px">' +
|
|
6216
|
-
'<div style="font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px;margin-bottom:8px">
|
|
6217
|
-
'<input id="wcProjectName" placeholder="
|
|
6218
|
-
'<textarea id="wcDesc" placeholder="
|
|
6259
|
+
'<div style="font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px;margin-bottom:8px">'+t('wc_project')+'</div>' +
|
|
6260
|
+
'<input id="wcProjectName" placeholder="'+t('wc_project_name')+'" value="'+wcEsc(wcState.projectName)+'" oninput="wcState.projectName=this.value" style="width:100%;padding:8px 10px;font-size:12px;border-radius:6px;border:1px solid var(--border2);background:var(--bg3);color:var(--text);margin-bottom:8px;box-sizing:border-box">' +
|
|
6261
|
+
'<textarea id="wcDesc" placeholder="'+t('wc_desc')+' e.g. SaaS landing page with user registration, dashboard, Stripe-ready pricing section" rows="4" oninput="wcState.description=this.value" style="width:100%;padding:8px 10px;font-size:12px;border-radius:6px;border:1px solid var(--border2);background:var(--bg3);color:var(--text);resize:vertical;box-sizing:border-box;line-height:1.5">'+wcEsc(wcState.description)+'</textarea>' +
|
|
6219
6262
|
'</div>' +
|
|
6220
6263
|
|
|
6221
6264
|
// Blocks
|
|
6222
6265
|
'<div style="background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:14px">' +
|
|
6223
|
-
'<div style="font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px">
|
|
6266
|
+
'<div style="font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px">'+t('wc_blocks')+'</div>' +
|
|
6224
6267
|
['auth','cookieBanner','securityMiddleware','emailVerification'].map(function(b){
|
|
6225
6268
|
var labels = {auth:'Auth (register/login/JWT)',cookieBanner:'GDPR Cookie Banner',securityMiddleware:'Security Middleware',emailVerification:'Email Verification'};
|
|
6226
6269
|
var icons = {auth:'🔒',cookieBanner:'🍪',securityMiddleware:'🛡',emailVerification:'✉'};
|
|
@@ -6234,25 +6277,25 @@ function renderWebCraft(el) {
|
|
|
6234
6277
|
// Auth fields configurator
|
|
6235
6278
|
'<div id="wcAuthFieldsPanel" style="background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:14px;'+(wcState.blocks.auth?'':'display:none')+'">' +
|
|
6236
6279
|
'<div style="display:flex;align-items:center;justify-content:space-between;margin-bottom:8px">' +
|
|
6237
|
-
'<div style="font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px">
|
|
6238
|
-
'<button onclick="wcAddField()" style="font-size:10px;padding:3px 8px;background:var(--bg3);border:1px solid var(--border2);border-radius:5px;color:var(--green);cursor:pointer"
|
|
6280
|
+
'<div style="font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px">'+t('wc_auth_fields')+'</div>' +
|
|
6281
|
+
'<button onclick="wcAddField()" style="font-size:10px;padding:3px 8px;background:var(--bg3);border:1px solid var(--border2);border-radius:5px;color:var(--green);cursor:pointer">'+t('wc_add_field')+'</button>' +
|
|
6239
6282
|
'</div>' +
|
|
6240
6283
|
'<div id="wcFieldsList">'+authFieldsHtml+'</div>' +
|
|
6241
|
-
'<div style="font-size:9px;color:var(--dim);margin-top:4px"
|
|
6284
|
+
'<div style="font-size:9px;color:var(--dim);margin-top:4px">'+t('wc_required_hint')+'</div>' +
|
|
6242
6285
|
'</div>' +
|
|
6243
6286
|
|
|
6244
6287
|
// Generate button
|
|
6245
6288
|
'<button id="wcRunBtn" onclick="wcGenerate()" style="width:100%;padding:12px;background:var(--green3);border:none;border-radius:8px;color:var(--bg);font-size:13px;font-weight:700;cursor:pointer;letter-spacing:.2px"'+(wcState.running?' disabled':'')+'>'+
|
|
6246
|
-
(wcState.running ? '⏳
|
|
6289
|
+
(wcState.running ? '⏳ '+t('wc_generating')+'...' : '▶ '+t('wc_generate')) +
|
|
6247
6290
|
'</button>' +
|
|
6248
6291
|
|
|
6249
6292
|
(wcState.generatedFiles.length > 0 ?
|
|
6250
|
-
'<button onclick="wcDownloadZip()" style="width:100%;padding:10px;background:var(--bg3);border:1px solid var(--border2);border-radius:8px;color:var(--text);font-size:12px;font-weight:600;cursor:pointer">⇩
|
|
6293
|
+
'<button onclick="wcDownloadZip()" style="width:100%;padding:10px;background:var(--bg3);border:1px solid var(--border2);border-radius:8px;color:var(--text);font-size:12px;font-weight:600;cursor:pointer">⇩ '+t('wc_download')+'</button>' : '') +
|
|
6251
6294
|
|
|
6252
6295
|
'</div>' +
|
|
6253
6296
|
|
|
6254
6297
|
// RIGHT: file viewer
|
|
6255
|
-
'<div style="flex:1;min-width:0;background:var(--bg2);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;
|
|
6298
|
+
'<div style="flex:1;min-width:0;background:var(--bg2);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;height:calc(100vh - 120px);overflow:hidden">' +
|
|
6256
6299
|
fileTabsHtml +
|
|
6257
6300
|
codeHtml +
|
|
6258
6301
|
'</div>' +
|
|
@@ -6275,7 +6318,7 @@ async function wcGenerate() {
|
|
|
6275
6318
|
if (wcState.running) return;
|
|
6276
6319
|
var desc = (document.getElementById('wcDesc')||{}).value || wcState.description;
|
|
6277
6320
|
var projName = (document.getElementById('wcProjectName')||{}).value || wcState.projectName || 'myproject';
|
|
6278
|
-
if (!desc || desc.length < 10) { alert('
|
|
6321
|
+
if (!desc || desc.length < 10) { alert(t('wc_describe_first')); return; }
|
|
6279
6322
|
wcState.description = desc;
|
|
6280
6323
|
wcState.projectName = projName;
|
|
6281
6324
|
wcState.running = true;
|
|
@@ -6342,7 +6385,7 @@ async function wcGenerate() {
|
|
|
6342
6385
|
for (var fi = 0; fi < filePlan.length; fi++) {
|
|
6343
6386
|
var fp = filePlan[fi];
|
|
6344
6387
|
var runBtn = document.getElementById('wcRunBtn');
|
|
6345
|
-
if (runBtn) runBtn.textContent = '⏳
|
|
6388
|
+
if (runBtn) runBtn.textContent = '⏳ '+t('wc_generating')+' ' + fp.name + ' (' + (fi+1) + '/' + filePlan.length + ')...';
|
|
6346
6389
|
try {
|
|
6347
6390
|
var _nl2 = String.fromCharCode(10);
|
|
6348
6391
|
var content = await wcCallLLM(sysPreamble, fp.prompt + _nl2 + _nl2 + 'File to generate: ' + fp.name);
|
|
@@ -6458,6 +6501,7 @@ input:focus,textarea:focus{border-color:var(--green3)}
|
|
|
6458
6501
|
.nav-item__badge{background:var(--red);color:var(--bright);font-size:9px;padding:1px 5px;border-radius:8px;margin-left:auto}
|
|
6459
6502
|
|
|
6460
6503
|
.content{flex:1;overflow-y:auto;padding:16px;-webkit-overflow-scrolling:touch}
|
|
6504
|
+
.content--webcraft{overflow:hidden;display:flex;flex-direction:column}
|
|
6461
6505
|
|
|
6462
6506
|
/* Mobile burger button */
|
|
6463
6507
|
#mobileBurger{display:block}
|