nothumanallowed 13.2.76 → 13.2.77

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.76",
3
+ "version": "13.2.77",
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": {
@@ -2852,24 +2852,24 @@ export async function cmdUI(args) {
2852
2852
 
2853
2853
  // ── Fetch REAL data for each agent type ──────────────────────
2854
2854
  if (agent === 'DocumentReaderAgent') {
2855
- // Extract text from attached PDF, then ask the LLM to structure it cleanly.
2856
- // The structured output becomes context for all subsequent steps.
2857
- sendToken('[Reading attached document...] ');
2855
+ // Always use vision for PDF reading text extraction loses table structure,
2856
+ // column alignment, and layout-dependent data for the vast majority of
2857
+ // technical PDFs (datasheets, catalogs, forms, scanned docs).
2858
+ // Vision reads exactly what a human sees on the page.
2859
+ sendToken('[Reading document with vision...] ');
2858
2860
  let rawText = '';
2859
2861
  if (stepPdfBase64) {
2860
2862
  try {
2861
- const b64 = stepPdfBase64.includes(',') ? stepPdfBase64.split(',')[1] : stepPdfBase64;
2862
- const pdfBuffer = Buffer.from(b64, 'base64');
2863
- rawText = extractTextFromPdf(pdfBuffer) || '';
2864
- if (!rawText || rawText.length < 20) {
2865
- // Scanned PDF use vision OCR
2866
- sendToken('[No text layer — using vision OCR...] ');
2867
- try {
2868
- rawText = await callLLMVision(config, stepPdfBase64, 'application/pdf',
2869
- 'Extract ALL text from this document exactly as printed, preserving all numbers, codes, and values.');
2870
- } catch (ve) { rawText = ''; }
2871
- }
2872
- } catch (e) { rawText = ''; }
2863
+ rawText = await callLLMVision(config, stepPdfBase64, 'application/pdf',
2864
+ 'Extract ALL content from this document exactly as it appears: all text, tables (preserve rows and columns), codes, numbers, units, notes, headers, and any other information visible on the page. Do not summarize — transcribe everything.');
2865
+ } catch (ve) {
2866
+ // Vision failed fall back to text extraction
2867
+ sendToken('[Vision unavailablefalling back to text extraction...] ');
2868
+ try {
2869
+ const b64 = stepPdfBase64.includes(',') ? stepPdfBase64.split(',')[1] : stepPdfBase64;
2870
+ rawText = extractTextFromPdf(Buffer.from(b64, 'base64')) || '';
2871
+ } catch (e) { rawText = ''; }
2872
+ }
2873
2873
  }
2874
2874
  if (!rawText) {
2875
2875
  sendToken('Could not extract text from the attached document.');
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.76';
8
+ export const VERSION = '13.2.77';
9
9
  export const BASE_URL = 'https://nothumanallowed.com/cli';
10
10
  export const API_BASE = 'https://nothumanallowed.com/api/v1';
11
11