nothumanallowed 13.5.63 → 13.5.65
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/services/web-ui.mjs +54 -7
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.5.
|
|
3
|
+
"version": "13.5.65",
|
|
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/services/web-ui.mjs
CHANGED
|
@@ -6621,7 +6621,7 @@ function renderWebCraft(el) {
|
|
|
6621
6621
|
'<div style="display:flex;flex-direction:column;height:100%">' +
|
|
6622
6622
|
wcExHtml +
|
|
6623
6623
|
'<div style="display:flex;gap:14px;align-items:flex-start;flex:1;min-height:0">' +
|
|
6624
|
-
'<div style="width:
|
|
6624
|
+
'<div style="width:260px;flex-shrink:0;display:flex;flex-direction:column;gap:10px;overflow-y:auto;height:100%">' +
|
|
6625
6625
|
'<div style="background:var(--bg2);border:1px solid var(--border);border-radius:10px;padding:14px">' +
|
|
6626
6626
|
'<div style="font-size:10px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px;margin-bottom:10px">'+t('wc_blocks')+'</div>' +
|
|
6627
6627
|
['auth','cookieBanner','securityMiddleware','emailVerification'].map(function(b){
|
|
@@ -6656,7 +6656,8 @@ function renderWebCraft(el) {
|
|
|
6656
6656
|
'<button onclick="wcStartSandbox()" id="wcSandboxBtn" style="width:100%;padding:10px;background:var(--bg3);border:1px solid var(--green3);border-radius:8px;color:var(--green);font-size:12px;font-weight:600;cursor:pointer">▶ '+t('wc_sandbox_start')+'</button>'
|
|
6657
6657
|
: '') +
|
|
6658
6658
|
'</div>' +
|
|
6659
|
-
'<div style="flex:1;min-width:0;background:var(--bg2);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;height:100%;overflow:hidden">' +
|
|
6659
|
+
'<div data-wc-files style="position:relative;flex:1;min-width:0;background:var(--bg2);border:1px solid var(--border);border-radius:10px;display:flex;flex-direction:column;height:100%;overflow:hidden">' +
|
|
6660
|
+
(wcState.running ? '<div id="wcGenOverlay" style="position:absolute;inset:0;background:rgba(0,0,0,0.75);backdrop-filter:blur(4px);border-radius:10px;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;animation:wcBubbleIn .3s ease"><div style="font-size:38px;animation:wcRobotBob 1s ease-in-out infinite">🤖</div><div style="font-size:13px;font-weight:700;color:var(--green);margin-top:12px">Avvio generazione...</div><div style="display:flex;gap:4px;margin-top:16px">'+[0,1,2,3,4].map(function(_,idx){ return '<div style="width:6px;height:6px;border-radius:50%;background:var(--green);animation:wcDot 1.1s ease-in-out infinite '+(idx*0.14)+'s"></div>'; }).join('')+'</div></div>' : '') +
|
|
6660
6661
|
'<div style="display:flex;border-bottom:1px solid var(--border);flex-shrink:0">' +
|
|
6661
6662
|
'<button onclick="wcTabFiles()" style="padding:8px 16px;background:'+(wcRightTab==='preview'?'transparent':'var(--bg3)')+';border:none;border-right:1px solid var(--border);color:'+(wcRightTab==='preview'?'var(--dim)':'var(--text)')+';font-size:11px;font-weight:600;cursor:pointer">📄 File</button>' +
|
|
6662
6663
|
'<button onclick="wcTabPreview()" style="padding:8px 16px;background:'+(wcRightTab==='preview'?'var(--bg3)':'transparent')+';border:none;color:'+(wcRightTab==='preview'?'var(--text)':'var(--dim)')+';font-size:11px;font-weight:600;cursor:pointer">🌐 Sandbox</button>' +
|
|
@@ -6694,6 +6695,12 @@ function wcPickExample(i) {
|
|
|
6694
6695
|
wcState.projectName = ex.name;
|
|
6695
6696
|
wcState.description = ex.desc;
|
|
6696
6697
|
renderWebCraft(document.getElementById('content'));
|
|
6698
|
+
// After re-render, populate the chat textarea and project name input with example values
|
|
6699
|
+
var chatEl = document.getElementById('wcChatInput');
|
|
6700
|
+
if (chatEl) chatEl.value = ex.desc;
|
|
6701
|
+
var nameEl = document.getElementById('wcProjectName');
|
|
6702
|
+
if (nameEl) nameEl.value = ex.name;
|
|
6703
|
+
if (chatEl) chatEl.focus();
|
|
6697
6704
|
}
|
|
6698
6705
|
function wcTabFiles() { wcRightTab = 'files'; renderWebCraft(document.getElementById('content')); }
|
|
6699
6706
|
function wcTabPreview() { wcRightTab = 'preview'; renderWebCraft(document.getElementById('content')); }
|
|
@@ -7024,7 +7031,21 @@ function wcChatPanelHtml() {
|
|
|
7024
7031
|
}
|
|
7025
7032
|
}
|
|
7026
7033
|
if (wcChatRunning) {
|
|
7027
|
-
messagesHtml +=
|
|
7034
|
+
messagesHtml +=
|
|
7035
|
+
'<div id="wcAgentLiveBubble" style="margin:6px 12px;border:1px solid rgba(255,255,255,0.12);border-radius:10px;background:var(--bg3);overflow:hidden;animation:wcBubbleIn .25s cubic-bezier(.22,1,.36,1)">' +
|
|
7036
|
+
'<div style="display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:1px solid rgba(255,255,255,0.06);background:rgba(255,255,255,0.03)">' +
|
|
7037
|
+
'<span style="font-size:13px;animation:wcRobotBob .9s ease-in-out infinite">🤖</span>' +
|
|
7038
|
+
'<span style="font-size:10px;font-weight:700;color:var(--green)">WebCraft Agent</span>' +
|
|
7039
|
+
'<span style="margin-left:auto;display:flex;gap:3px;align-items:center">' +
|
|
7040
|
+
'<span style="width:5px;height:5px;border-radius:50%;background:var(--green);opacity:.9;animation:wcDot 1.1s ease-in-out infinite 0s"></span>' +
|
|
7041
|
+
'<span style="width:5px;height:5px;border-radius:50%;background:var(--green);opacity:.9;animation:wcDot 1.1s ease-in-out infinite .18s"></span>' +
|
|
7042
|
+
'<span style="width:5px;height:5px;border-radius:50%;background:var(--green);opacity:.9;animation:wcDot 1.1s ease-in-out infinite .36s"></span>' +
|
|
7043
|
+
'</span>' +
|
|
7044
|
+
'</div>' +
|
|
7045
|
+
'<div id="wcAgentLiveText" style="padding:8px 10px;font-size:11px;color:var(--text);line-height:1.6;white-space:pre-wrap;min-height:24px">' +
|
|
7046
|
+
'<span style="display:inline-block;width:2px;height:11px;background:var(--green);vertical-align:text-bottom;animation:streamBlink .7s step-end infinite;margin-left:1px">​</span>' +
|
|
7047
|
+
'</div>' +
|
|
7048
|
+
'</div>';
|
|
7028
7049
|
}
|
|
7029
7050
|
|
|
7030
7051
|
// Attachments preview
|
|
@@ -7199,8 +7220,12 @@ async function wcExecuteAgentCall(message, isPlanExec, planOrigMsg, attachments)
|
|
|
7199
7220
|
var ev = JSON.parse(line);
|
|
7200
7221
|
if (ev.type === 'text') {
|
|
7201
7222
|
agentMsg.text += ev.token;
|
|
7202
|
-
|
|
7203
|
-
|
|
7223
|
+
// Inject token directly into live bubble (no re-render)
|
|
7224
|
+
var liveEl = document.getElementById('wcAgentLiveText');
|
|
7225
|
+
if (liveEl) {
|
|
7226
|
+
var cursor = '<span style="display:inline-block;width:2px;height:11px;background:var(--green);vertical-align:text-bottom;animation:streamBlink .7s step-end infinite;margin-left:1px">​</span>';
|
|
7227
|
+
liveEl.innerHTML = wcEsc(agentMsg.text) + cursor;
|
|
7228
|
+
}
|
|
7204
7229
|
wcScrollChatToBottom();
|
|
7205
7230
|
} else if (ev.type === 'tool') {
|
|
7206
7231
|
agentMsg.tools.push({ op: ev.op, path: ev.path, result: ev.result, oldSnippet: ev.oldSnippet || '', newSnippet: ev.newSnippet || '' });
|
|
@@ -7705,10 +7730,28 @@ async function wcGenerate() {
|
|
|
7705
7730
|
var _nl = String.fromCharCode(10);
|
|
7706
7731
|
var sysPreamble = 'You are an expert full-stack engineer generating production-quality code.' + _nl + _nl + 'SECURITY RULES (non-negotiable):' + _nl + SECURITY_RULES + _nl + _nl + 'Project: ' + projName + _nl + 'Description: ' + desc + _nl + 'Enabled blocks: ' + blocksEnabled + _nl + _nl + 'Generate ONLY the file content requested. No explanations, no markdown code fences, no comments like "here is the file". Output raw file content only.';
|
|
7707
7732
|
|
|
7733
|
+
function wcUpdateGenOverlay(fi2, total, name) {
|
|
7734
|
+
var ov = document.getElementById('wcGenOverlay');
|
|
7735
|
+
if (!ov) return;
|
|
7736
|
+
var pct = Math.round((fi2 / total) * 100);
|
|
7737
|
+
ov.innerHTML =
|
|
7738
|
+
'<div style="display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:16px;padding:24px">' +
|
|
7739
|
+
'<div style="font-size:38px;animation:wcRobotBob 1s ease-in-out infinite">🤖</div>' +
|
|
7740
|
+
'<div style="font-size:13px;font-weight:700;color:var(--green)">Generazione in corso...</div>' +
|
|
7741
|
+
'<div style="font-size:11px;color:var(--dim);font-family:var(--mono);max-width:300px;text-align:center;word-break:break-all">'+wcEsc(name)+'</div>' +
|
|
7742
|
+
'<div style="width:220px;height:4px;background:var(--bg3);border-radius:2px;overflow:hidden">' +
|
|
7743
|
+
'<div style="height:100%;width:'+pct+'%;background:var(--green);border-radius:2px;transition:width .4s ease;animation:wcBarPulse 1.5s ease-in-out infinite"></div>' +
|
|
7744
|
+
'</div>' +
|
|
7745
|
+
'<div style="font-size:10px;color:var(--dim)">'+fi2+' / '+total+' file</div>' +
|
|
7746
|
+
'<div style="display:flex;gap:4px;margin-top:4px">' +
|
|
7747
|
+
[0,1,2,3,4].map(function(_,idx){ return '<div style="width:6px;height:6px;border-radius:50%;background:var(--green);animation:wcDot 1.1s ease-in-out infinite '+(idx*0.14)+'s"></div>'; }).join('') +
|
|
7748
|
+
'</div>' +
|
|
7749
|
+
'</div>';
|
|
7750
|
+
}
|
|
7751
|
+
|
|
7708
7752
|
for (var fi = 0; fi < filePlan.length; fi++) {
|
|
7709
7753
|
var fp = filePlan[fi];
|
|
7710
|
-
|
|
7711
|
-
if (runBtn) runBtn.innerHTML = '⏳ '+t('wc_generating')+' ' + fp.name + ' (' + (fi+1) + '/' + filePlan.length + ')...';
|
|
7754
|
+
wcUpdateGenOverlay(fi, filePlan.length, fp.name);
|
|
7712
7755
|
try {
|
|
7713
7756
|
var _nl2 = String.fromCharCode(10);
|
|
7714
7757
|
var content = await wcCallLLM(sysPreamble, fp.prompt + _nl2 + _nl2 + 'File to generate: ' + fp.name);
|
|
@@ -8619,6 +8662,10 @@ input:focus,textarea:focus{border-color:var(--green3)}
|
|
|
8619
8662
|
.prl-action-bubble--active{color:#000000;font-weight:700;border-color:#374151;background:#ffffff;animation:parlBubblePop .4s ease}
|
|
8620
8663
|
@keyframes parlBubblePop{0%{transform:scale(.85);opacity:.5}100%{transform:scale(1);opacity:1}}
|
|
8621
8664
|
@keyframes streamBlink{0%,100%{opacity:1}50%{opacity:0}}
|
|
8665
|
+
@keyframes wcBubbleIn{from{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
|
|
8666
|
+
@keyframes wcRobotBob{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(-5px) rotate(-4deg)}}
|
|
8667
|
+
@keyframes wcDot{0%,80%,100%{opacity:.25;transform:scale(.7)}40%{opacity:1;transform:scale(1.2)}}
|
|
8668
|
+
@keyframes wcBarPulse{0%,100%{opacity:1}50%{opacity:.65}}
|
|
8622
8669
|
/* Character SVG animations */
|
|
8623
8670
|
@keyframes parlArmType{0%,100%{transform:rotate(-8deg) translateY(0)}50%{transform:rotate(8deg) translateY(2px)}}
|
|
8624
8671
|
@keyframes parlHeadNod{0%,100%{transform:translateY(0) rotate(0deg)}50%{transform:translateY(2px) rotate(4deg)}}
|