nothumanallowed 13.2.36 → 13.2.38

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.36",
3
+ "version": "13.2.38",
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.2.36';
8
+ export const VERSION = '13.2.38';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -662,7 +662,9 @@ function parseSSEText(text, format, onToken) {
662
662
  }
663
663
  if (out) {
664
664
  // Qwen3 emits tokens without spaces between words — insert space when needed
665
- if (fullText && out && !/[\s\n]$/.test(fullText) && !/^[\s\n.,;:!?)\]}'"]/.test(out)) {
665
+ // But NOT inside HTML tags (e.g. < div class = "foo" > would get broken)
666
+ const insideTag = fullText.lastIndexOf('<') > fullText.lastIndexOf('>');
667
+ if (fullText && out && !insideTag && !/[\s\n]$/.test(fullText) && !/^[\s\n.,;:!?)\]}'">]/.test(out)) {
666
668
  out = ' ' + out;
667
669
  }
668
670
  fullText += out;
@@ -729,7 +731,9 @@ async function streamSSEWithCallback(res, format, onToken) {
729
731
  }
730
732
  if (out) {
731
733
  // Qwen3 emits tokens without spaces between words — insert space when needed
732
- if (fullText && out && !/[\s\n]$/.test(fullText) && !/^[\s\n.,;:!?)\]}'"]/.test(out)) {
734
+ // But NOT inside HTML tags
735
+ const insideTag2 = fullText.lastIndexOf('<') > fullText.lastIndexOf('>');
736
+ if (fullText && out && !insideTag2 && !/[\s\n]$/.test(fullText) && !/^[\s\n.,;:!?)\]}'">]/.test(out)) {
733
737
  out = ' ' + out;
734
738
  }
735
739
  fullText += out;
@@ -3216,24 +3216,18 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
3216
3216
  try {
3217
3217
  var ev = JSON.parse(d);
3218
3218
  if (ev.token) {
3219
- // Tool status tokens (start with '[') shown in dim color, LLM output streamed normally
3220
- var isStatus = ev.token.charAt(0) === '[' && ev.token.indexOf(']') > 0 && ev.token.length < 80;
3221
- if (!isStatus) {
3222
- output += ev.token;
3223
- }
3224
- // Update live log entry
3225
- var entries = document.querySelectorAll('.studio-log-entry');
3219
+ var isStatus = ev.token.charAt(0) === \x27[\x27 && ev.token.indexOf(\x27]\x27) > 0 && ev.token.length < 80;
3220
+ if (!isStatus) { output += ev.token; }
3221
+ // Update live log: show status tokens as text, LLM output as animated dots
3222
+ var entries = document.querySelectorAll(\x27.studio-log-entry\x27);
3226
3223
  var last = entries[entries.length - 1];
3227
3224
  if (last) {
3228
- var tb = last.querySelector('.studio-log-entry__text');
3225
+ var tb = last.querySelector(\x27.studio-log-entry__text\x27);
3229
3226
  if (tb) {
3230
3227
  if (isStatus) {
3231
- tb.textContent = ev.token.split('\\r').join('').split('\\n').join(' ');
3232
- } else {
3233
- // Show last 300 chars of output, strip markdown symbols for clean log display
3234
- var preview = output.slice(-300).replace(/#{1,6}[\\s]*/g,\x27\x27).replace(/\\*\\*/g,\x27\x27).replace(/\\*/g,\x27\x27).replace(/---+/g,\x27\x27).replace(/[\\n]{2,}/g,\x27 \x27).trim();
3235
- tb.textContent = preview;
3228
+ tb.textContent = ev.token.replace(/[\x0d\x0a]+/g, \x27 \x27);
3236
3229
  }
3230
+ // LLM output: don\x27t show raw tokens — just keep the animated dots from CSS
3237
3231
  }
3238
3232
  }
3239
3233
  }