nothumanallowed 15.0.16 → 15.0.18
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": "15.0.
|
|
3
|
+
"version": "15.0.18",
|
|
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": {
|
|
@@ -645,6 +645,8 @@ WORKFLOW:
|
|
|
645
645
|
⚠ CRITICAL RULES:
|
|
646
646
|
- To modify an existing file: ALWAYS use edit. NEVER use write on existing files — it will be REJECTED.
|
|
647
647
|
- edit workflow: read the file first → copy EXACT lines from the read output → use edit with old/new
|
|
648
|
+
- To APPEND content to a truncated file: use edit where "old" is the last few lines of the file, and "new" is those same lines PLUS the new content after them.
|
|
649
|
+
- Keep each edit SMALL — max 30-40 lines of old/new. If you need to add more, do MULTIPLE edits.
|
|
648
650
|
- If edit returns "old_not_found": your old text didn't match. Read the file again and retry with the EXACT text.
|
|
649
651
|
- NEVER say you fixed something without verifying — use check or read after edit to confirm.
|
|
650
652
|
- write is ONLY for creating brand new files
|
|
@@ -887,9 +889,8 @@ WORKFLOW:
|
|
|
887
889
|
emit({ type: 'tool', op: 'write', path: relPath, result: 'missing_content' });
|
|
888
890
|
} else {
|
|
889
891
|
const prevContent = ProjectStore.readFile(projectName, relPath);
|
|
890
|
-
// BLOCK write on existing files —
|
|
891
|
-
|
|
892
|
-
if (prevContent !== null && !fileIsTruncated) {
|
|
892
|
+
// BLOCK write on existing files — always. Use edit to modify, even truncated files.
|
|
893
|
+
if (prevContent !== null) {
|
|
893
894
|
toolResults.push({ op: 'write', path: relPath, result: 'error: file already exists — use edit tool to make surgical changes, do NOT rewrite the entire file. Read the file first, then use edit with exact old/new strings.' });
|
|
894
895
|
emit({ type: 'tool', op: 'write', path: relPath, result: 'blocked_use_edit' });
|
|
895
896
|
} else {
|
|
@@ -2429,7 +2430,7 @@ export function register(router) {
|
|
|
2429
2430
|
}
|
|
2430
2431
|
// Report unclosed tags (max 5)
|
|
2431
2432
|
for (const unclosed of tagStack.slice(-5)) {
|
|
2432
|
-
diagnostics.push({ from: { line: unclosed.line, col: 0 }, severity: '
|
|
2433
|
+
diagnostics.push({ from: { line: unclosed.line, col: 0 }, severity: 'error', message: `Unclosed tag <${unclosed.name}>` });
|
|
2433
2434
|
}
|
|
2434
2435
|
|
|
2435
2436
|
// Check src/href references to local files
|
|
@@ -2689,7 +2690,7 @@ export function register(router) {
|
|
|
2689
2690
|
|
|
2690
2691
|
// Truncation check
|
|
2691
2692
|
if (isFileTruncated(content, relPath)) {
|
|
2692
|
-
issues.push({ file: relPath, severity: '
|
|
2693
|
+
issues.push({ file: relPath, severity: 'error', message: 'File appears truncated — incomplete generation' });
|
|
2693
2694
|
}
|
|
2694
2695
|
}
|
|
2695
2696
|
|