nothumanallowed 13.5.88 → 13.5.90
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 +31 -19
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nothumanallowed",
|
|
3
|
-
"version": "13.5.
|
|
3
|
+
"version": "13.5.90",
|
|
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
|
@@ -6556,6 +6556,8 @@ var _wcSyntaxResults = []; // [{file, ok, error}]
|
|
|
6556
6556
|
var _wcSnapshots = []; // [{ts, fileCount}]
|
|
6557
6557
|
var _wcLastFilePlan = []; // saved for manual repair trigger
|
|
6558
6558
|
var _wcLastSysPreamble = '';
|
|
6559
|
+
var _wcTokIn = 0; // global token counters (accumulate across generation + repair)
|
|
6560
|
+
var _wcTokOut = 0;
|
|
6559
6561
|
// Skills state
|
|
6560
6562
|
var wcSkills = []; // [{name, content, type}] type: 'skill'|'memory'|'provider'
|
|
6561
6563
|
var wcSkillModal = null; // null | {mode:'edit'|'new', idx:number|null, name, content, type, generating}
|
|
@@ -6646,12 +6648,12 @@ function renderWebCraft(el) {
|
|
|
6646
6648
|
|
|
6647
6649
|
// Example prompts — clicking fills project name + description
|
|
6648
6650
|
var wcExamples = [
|
|
6649
|
-
{name:'MySaaS',
|
|
6650
|
-
{name:'MyShop',
|
|
6651
|
-
{name:'MyBlog',
|
|
6652
|
-
{name:'MyPortfolio', desc:'
|
|
6653
|
-
{name:'MyRestaurant', desc:'Restaurant website
|
|
6654
|
-
{name:'MyJobBoard',
|
|
6651
|
+
{name:'MySaaS', desc:'SaaS product landing page. Hero: large headline, subheadline, two CTA buttons (Start free trial / Watch demo), animated gradient background. Features section: 3-column grid with icon, title, description for 6 features (real-time sync, team collaboration, analytics dashboard, API access, role-based permissions, 99.9% uptime SLA). Pricing section: 3 cards (Free: 1 user, 5 projects, community support; Pro $29/mo: 10 users, unlimited projects, priority support, API access; Enterprise: custom pricing, SSO, SLA, dedicated support) with highlighted recommended card. Testimonials: 3 customer quotes with avatar placeholder, name, company, star rating. FAQ accordion: 5 questions. Footer: links, social icons, copyright. Nav: logo, links (Features, Pricing, Docs, Blog), Login and Start Free CTA buttons. Sticky nav on scroll. Smooth scroll between sections.'},
|
|
6652
|
+
{name:'MyShop', desc:'E-commerce storefront homepage. Nav: logo, search bar (full-width on mobile), cart icon with item count badge, account icon, hamburger menu on mobile. Hero: full-width banner with promotional message, discount badge, Shop Now CTA. Category strip: 6 category cards with icon and label (Electronics, Clothing, Home, Sports, Books, Beauty). Featured products grid: 8 product cards each with product image placeholder, product name, star rating (1-5), review count, original price with strikethrough, sale price, Add to Cart button, wishlist heart icon. Promo banner: full-width colored banner with coupon code. Newsletter signup: email input with Subscribe button. Footer: 4-column layout (Company, Customer Service, Categories, Contact info). Fully responsive 2-col on tablet, 1-col on mobile.'},
|
|
6653
|
+
{name:'MyBlog', desc:'Blog and content platform homepage. Nav: logo, category links (Tech, Design, Business, Life), search icon, Subscribe CTA. Hero: large featured article card with cover image placeholder, category badge, title, excerpt (2 lines), author avatar, author name, date, read time, Read More link. Article grid: 6 cards in 3-column layout, each with cover image, category tag, title, excerpt, author, date. Sidebar (on desktop): Recent posts list (5 items with thumbnail, title, date), Popular tags cloud (10 tags as pill buttons), Newsletter signup widget (email + Subscribe). Pagination: numbered page links. Author bio section at bottom: avatar, name, bio paragraph, social links. Footer: minimal with links and copyright.'},
|
|
6654
|
+
{name:'MyPortfolio', desc:'Developer portfolio homepage. Nav: name/logo left, links right (Work, Skills, About, Contact), dark/light mode toggle button, nav hides on scroll down and shows on scroll up. Hero: centered layout, large name heading, animated typewriter role subtitle cycling through 3 roles (e.g. Full-Stack Developer / UI Engineer / Open Source Contributor), short bio paragraph, two CTA buttons (View my work / Download CV), animated floating code snippet decoration. Work section: 6 project cards in 2-column masonry-style grid, each with project screenshot placeholder, project name, tech stack tags (3-4 pills), description (2 lines), GitHub icon link and Live Demo link. Skills section: grouped by category (Frontend, Backend, Tools) with skill name and filled bar (percentage). About section: split layout, left photo placeholder, right: bio paragraph, timeline of 3 career milestones (year, title, company, description). Contact section: centered form (name, email, subject, message textarea, Send Message button), response time note. All sections with smooth scroll entrance animations using Intersection Observer.'},
|
|
6655
|
+
{name:'MyRestaurant', desc:'Restaurant website homepage. Nav: logo center, links left (Menu, Story, Reservations, Gallery, Contact), phone number right, fixed transparent becoming solid white on scroll. Hero: full-viewport background image placeholder with dark overlay, restaurant name in serif font, tagline, two buttons (Reserve a Table / View Menu). About strip: 3 horizontal icon+stat items (e.g. Est. 2010 / 50 Tables / 4.9 Stars). Menu preview section: tabbed navigation (Starters, Mains, Desserts, Drinks), each tab shows 6 menu items in 2-column grid with dish name, description (1 line), allergen icons, price. CTA reservation banner: colored background, heading, inline form (date picker, time select, party size select, name, phone, Book Now button). Gallery grid: 9 square image placeholders in 3x3 mosaic layout with hover zoom effect. Chef section: photo placeholder left, name, title, bio paragraph, signature right. Testimonials: horizontal scroll of 5 review cards (stars, quote, reviewer name, date). Footer: address, opening hours table (Mon-Sun), social links, Google Maps embed placeholder.'},
|
|
6656
|
+
{name:'MyJobBoard', desc:'Job board homepage. Nav: logo, links (Browse Jobs, Companies, Salary Guide, Blog), Post a Job CTA button (green), Sign In link. Hero: centered search widget (keyword input + location input + category select + Search Jobs button), popular searches as clickable tags below (e.g. React Developer, Data Analyst, UX Designer). Stats strip: 4 counters (Active Jobs, Companies Hiring, Candidates, Jobs Filled This Month). Featured jobs list: 8 job cards in vertical list, each with company logo placeholder, job title, company name, location (with icon), job type badge (Full-time/Remote/Contract), salary range, posted X days ago, bookmark icon, Quick Apply button. Filter sidebar (desktop): checkboxes for Job Type, Experience Level, Salary Range slider, Location radius, Remote only toggle. Top companies section: 6 company cards in 3-col grid with logo, name, industry, open positions count, View Jobs link. Category cards: 8 icons+labels for job categories. Newsletter: email input with Get Job Alerts button. Footer: 5-column layout (Job Seekers, Employers, Resources, Company, Social).'}
|
|
6655
6657
|
];
|
|
6656
6658
|
var wcExHtml = '<div style="margin-bottom:12px;flex-shrink:0"><div style="font-size:9px;color:var(--dim);text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px">'+t('wc_examples_label')+'</div><div style="display:flex;gap:6px;flex-wrap:wrap">' +
|
|
6657
6659
|
wcExamples.map(function(ex,i){
|
|
@@ -6769,12 +6771,12 @@ function renderWebCraft(el) {
|
|
|
6769
6771
|
|
|
6770
6772
|
function wcPickExample(i) {
|
|
6771
6773
|
var wcExamplesData = [
|
|
6772
|
-
{name:'MySaaS',
|
|
6773
|
-
{name:'MyShop',
|
|
6774
|
-
{name:'MyBlog',
|
|
6775
|
-
{name:'MyPortfolio', desc:'
|
|
6776
|
-
{name:'MyRestaurant', desc:'Restaurant website
|
|
6777
|
-
{name:'MyJobBoard',
|
|
6774
|
+
{name:'MySaaS', desc:'SaaS product landing page. Hero: large headline, subheadline, two CTA buttons (Start free trial / Watch demo), animated gradient background. Features section: 3-column grid with icon, title, description for 6 features (real-time sync, team collaboration, analytics dashboard, API access, role-based permissions, 99.9% uptime SLA). Pricing section: 3 cards (Free: 1 user, 5 projects, community support; Pro $29/mo: 10 users, unlimited projects, priority support, API access; Enterprise: custom pricing, SSO, SLA, dedicated support) with highlighted recommended card. Testimonials: 3 customer quotes with avatar placeholder, name, company, star rating. FAQ accordion: 5 questions. Footer: links, social icons, copyright. Nav: logo, links (Features, Pricing, Docs, Blog), Login and Start Free CTA buttons. Sticky nav on scroll. Smooth scroll between sections.'},
|
|
6775
|
+
{name:'MyShop', desc:'E-commerce storefront homepage. Nav: logo, search bar (full-width on mobile), cart icon with item count badge, account icon, hamburger menu on mobile. Hero: full-width banner with promotional message, discount badge, Shop Now CTA. Category strip: 6 category cards with icon and label (Electronics, Clothing, Home, Sports, Books, Beauty). Featured products grid: 8 product cards each with product image placeholder, product name, star rating (1-5), review count, original price with strikethrough, sale price, Add to Cart button, wishlist heart icon. Promo banner: full-width colored banner with coupon code. Newsletter signup: email input with Subscribe button. Footer: 4-column layout (Company, Customer Service, Categories, Contact info). Fully responsive 2-col on tablet, 1-col on mobile.'},
|
|
6776
|
+
{name:'MyBlog', desc:'Blog and content platform homepage. Nav: logo, category links (Tech, Design, Business, Life), search icon, Subscribe CTA. Hero: large featured article card with cover image placeholder, category badge, title, excerpt (2 lines), author avatar, author name, date, read time, Read More link. Article grid: 6 cards in 3-column layout, each with cover image, category tag, title, excerpt, author, date. Sidebar (on desktop): Recent posts list (5 items with thumbnail, title, date), Popular tags cloud (10 tags as pill buttons), Newsletter signup widget (email + Subscribe). Pagination: numbered page links. Author bio section at bottom: avatar, name, bio paragraph, social links. Footer: minimal with links and copyright.'},
|
|
6777
|
+
{name:'MyPortfolio', desc:'Developer portfolio homepage. Nav: name/logo left, links right (Work, Skills, About, Contact), dark/light mode toggle button, nav hides on scroll down and shows on scroll up. Hero: centered layout, large name heading, animated typewriter role subtitle cycling through 3 roles (e.g. Full-Stack Developer / UI Engineer / Open Source Contributor), short bio paragraph, two CTA buttons (View my work / Download CV), animated floating code snippet decoration. Work section: 6 project cards in 2-column masonry-style grid, each with project screenshot placeholder, project name, tech stack tags (3-4 pills), description (2 lines), GitHub icon link and Live Demo link. Skills section: grouped by category (Frontend, Backend, Tools) with skill name and filled bar (percentage). About section: split layout, left photo placeholder, right: bio paragraph, timeline of 3 career milestones (year, title, company, description). Contact section: centered form (name, email, subject, message textarea, Send Message button), response time note. All sections with smooth scroll entrance animations using Intersection Observer.'},
|
|
6778
|
+
{name:'MyRestaurant', desc:'Restaurant website homepage. Nav: logo center, links left (Menu, Story, Reservations, Gallery, Contact), phone number right, fixed transparent becoming solid white on scroll. Hero: full-viewport background image placeholder with dark overlay, restaurant name in serif font, tagline, two buttons (Reserve a Table / View Menu). About strip: 3 horizontal icon+stat items (e.g. Est. 2010 / 50 Tables / 4.9 Stars). Menu preview section: tabbed navigation (Starters, Mains, Desserts, Drinks), each tab shows 6 menu items in 2-column grid with dish name, description (1 line), allergen icons, price. CTA reservation banner: colored background, heading, inline form (date picker, time select, party size select, name, phone, Book Now button). Gallery grid: 9 square image placeholders in 3x3 mosaic layout with hover zoom effect. Chef section: photo placeholder left, name, title, bio paragraph, signature right. Testimonials: horizontal scroll of 5 review cards (stars, quote, reviewer name, date). Footer: address, opening hours table (Mon-Sun), social links, Google Maps embed placeholder.'},
|
|
6779
|
+
{name:'MyJobBoard', desc:'Job board homepage. Nav: logo, links (Browse Jobs, Companies, Salary Guide, Blog), Post a Job CTA button (green), Sign In link. Hero: centered search widget (keyword input + location input + category select + Search Jobs button), popular searches as clickable tags below (e.g. React Developer, Data Analyst, UX Designer). Stats strip: 4 counters (Active Jobs, Companies Hiring, Candidates, Jobs Filled This Month). Featured jobs list: 8 job cards in vertical list, each with company logo placeholder, job title, company name, location (with icon), job type badge (Full-time/Remote/Contract), salary range, posted X days ago, bookmark icon, Quick Apply button. Filter sidebar (desktop): checkboxes for Job Type, Experience Level, Salary Range slider, Location radius, Remote only toggle. Top companies section: 6 company cards in 3-col grid with logo, name, industry, open positions count, View Jobs link. Category cards: 8 icons+labels for job categories. Newsletter: email input with Get Job Alerts button. Footer: 5-column layout (Job Seekers, Employers, Resources, Company, Social).'}
|
|
6778
6780
|
];
|
|
6779
6781
|
var ex = wcExamplesData[i];
|
|
6780
6782
|
if (!ex) return;
|
|
@@ -7936,7 +7938,7 @@ async function wcGenerate() {
|
|
|
7936
7938
|
_wcLastSysPreamble = sysPreamble;
|
|
7937
7939
|
|
|
7938
7940
|
var _wcGenStartTime = Date.now();
|
|
7939
|
-
|
|
7941
|
+
_wcTokIn = 0; _wcTokOut = 0; // reset global counters for this generation run
|
|
7940
7942
|
var _wcTimerInterval = null;
|
|
7941
7943
|
|
|
7942
7944
|
function wcGenElapsed() {
|
|
@@ -8042,12 +8044,10 @@ async function wcGenerate() {
|
|
|
8042
8044
|
}
|
|
8043
8045
|
|
|
8044
8046
|
if (_wcTimerInterval) { clearInterval(_wcTimerInterval); _wcTimerInterval = null; }
|
|
8045
|
-
var _wcGenTotalTime = Math.floor((Date.now() - _wcGenStartTime) / 1000);
|
|
8046
8047
|
|
|
8047
8048
|
wcState.running = false;
|
|
8048
8049
|
_wcGenAbortCtrl = null;
|
|
8049
8050
|
_wcOverlayMinimized = false;
|
|
8050
|
-
wcState.lastGenStats = { tokIn: _wcTokIn, tokOut: _wcTokOut, seconds: _wcGenTotalTime, files: wcState.generatedFiles.length };
|
|
8051
8051
|
|
|
8052
8052
|
// Auto-save
|
|
8053
8053
|
try {
|
|
@@ -8057,10 +8057,21 @@ async function wcGenerate() {
|
|
|
8057
8057
|
});
|
|
8058
8058
|
} catch(_) {}
|
|
8059
8059
|
|
|
8060
|
+
// Post-generation syntax scan — mark truncated/broken files before repair
|
|
8061
|
+
wcState.generatedFiles.forEach(function(f) {
|
|
8062
|
+
if (f._error || f._pending || !f.content) return;
|
|
8063
|
+
var chk = wcSyntaxCheck(f.content, f.lang || '');
|
|
8064
|
+
if (!chk.ok) f._syntaxError = chk.reason;
|
|
8065
|
+
});
|
|
8066
|
+
|
|
8060
8067
|
renderWebCraft(document.getElementById('content'));
|
|
8061
8068
|
|
|
8062
8069
|
// Auto-repair: run immediately after generation completes
|
|
8063
8070
|
await wcAutoRepair(filePlan, sysPreamble);
|
|
8071
|
+
|
|
8072
|
+
// Update stats AFTER repair so token counts include repair calls
|
|
8073
|
+
wcState.lastGenStats = { tokIn: _wcTokIn, tokOut: _wcTokOut, seconds: Math.floor((Date.now() - _wcGenStartTime) / 1000), files: wcState.generatedFiles.length };
|
|
8074
|
+
renderWebCraft(document.getElementById('content'));
|
|
8064
8075
|
}
|
|
8065
8076
|
|
|
8066
8077
|
// ── Auto-repair pass — fixes _error and _syntaxError files ────────────────
|
|
@@ -8233,12 +8244,12 @@ async function wcCallLLMRaw(sys, user, signal) {
|
|
|
8233
8244
|
var d = await r.json();
|
|
8234
8245
|
// Accumulate token counts if the server returns usage data
|
|
8235
8246
|
if (d && d.usage) {
|
|
8236
|
-
|
|
8237
|
-
|
|
8247
|
+
_wcTokIn += (d.usage.prompt_tokens || d.usage.input_tokens || 0);
|
|
8248
|
+
_wcTokOut += (d.usage.completion_tokens || d.usage.output_tokens || 0);
|
|
8238
8249
|
} else if (d && d.text) {
|
|
8239
8250
|
// Estimate from char count (4 chars ≈ 1 token)
|
|
8240
|
-
|
|
8241
|
-
|
|
8251
|
+
_wcTokIn += Math.round((sys.length + user.length) / 4);
|
|
8252
|
+
_wcTokOut += Math.round((d.text || '').length / 4);
|
|
8242
8253
|
}
|
|
8243
8254
|
return (d && (d.text || d.content || d.result)) || '';
|
|
8244
8255
|
}
|
|
@@ -8407,6 +8418,7 @@ async function wcStartSandbox() {
|
|
|
8407
8418
|
wcState.sandbox = { running: true, port: null, dir: null, logs: [], error: null };
|
|
8408
8419
|
wcState.rightTab = 'preview';
|
|
8409
8420
|
wcRightTab = 'preview';
|
|
8421
|
+
_wcSkillsLoaded = false; // force skill panel reload after sandbox completes
|
|
8410
8422
|
renderWebCraft(document.getElementById('content'));
|
|
8411
8423
|
|
|
8412
8424
|
try {
|