nothumanallowed 13.2.67 → 13.2.69

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.67",
3
+ "version": "13.2.69",
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.67';
8
+ export const VERSION = '13.2.69';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11
 
@@ -3268,14 +3268,14 @@ function studioHandleAttach(file) {
3268
3268
  if (!file) return;
3269
3269
  var name = file.name;
3270
3270
  var isPdf = name.toLowerCase().endsWith('.pdf');
3271
- var isImg = /\.(png|jpe?g|gif|webp)$/i.test(name);
3271
+ var isImg = new RegExp('[.](png|jpe?g|gif|webp)$', 'i').test(name);
3272
3272
  if (!isPdf && !isImg) { alert('Supported: PDF, PNG, JPG, GIF, WEBP'); return; }
3273
3273
 
3274
3274
  var reader = new FileReader();
3275
3275
  reader.onload = function(ev) {
3276
3276
  var dataUrl = ev.target.result;
3277
3277
  studioState.attachmentName = name;
3278
- studioState.attachmentContext = (isPdf ? '[ATTACHED PDF: ' : '[ATTACHED IMAGE: ') + name + ']\nBase64: ' + dataUrl;
3278
+ studioState.attachmentContext = (isPdf ? '[ATTACHED PDF: ' : '[ATTACHED IMAGE: ') + name + ']' + String.fromCharCode(10) + 'Base64: ' + dataUrl;
3279
3279
  // Show badge inline without full re-render
3280
3280
  var inputRow = document.querySelector('.studio-input-row');
3281
3281
  if (inputRow) {
@@ -3516,8 +3516,9 @@ async function runStudio() {
3516
3516
 
3517
3517
  try {
3518
3518
  // Step 1: plan the workflow
3519
+ var nl = String.fromCharCode(10);
3519
3520
  var taskForPlan = studioState.attachmentContext
3520
- ? task + '\n\n[User has attached a file: ' + studioState.attachmentName + '. Agents will receive the full content.]'
3521
+ ? task + nl + nl + '[User has attached a file: ' + studioState.attachmentName + '. Agents will receive the full content.]'
3521
3522
  : task;
3522
3523
  var planRes = await apiPost('/api/studio/plan', {task: taskForPlan});
3523
3524
  if (!planRes || !planRes.steps || !planRes.steps.length) {
@@ -3781,7 +3782,7 @@ function runStudioStep(idx, node, task, context, stepDef, signal) {
3781
3782
  var canvasHtml = null;
3782
3783
  // Inject attachment context into first step (idx===0) if present
3783
3784
  var effectiveContext = (idx === 0 && studioState.attachmentContext)
3784
- ? (studioState.attachmentContext + (context ? '\n\n' + context : ''))
3785
+ ? (studioState.attachmentContext + (context ? String.fromCharCode(10) + String.fromCharCode(10) + context : ''))
3785
3786
  : context;
3786
3787
  var body = JSON.stringify({stepIdx: idx, agent: node.agent, task: task, context: effectiveContext, stepDef: stepDef});
3787
3788
  var fetchOpts = {method: 'POST', headers: {'Content-Type': 'application/json'}, body: body};