aegis-desktop 0.8.19 → 0.8.20

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,7 +1,7 @@
1
1
  {
2
2
  "name": "aegis-desktop",
3
3
  "productName": "AEGIS Desktop",
4
- "version": "0.8.19",
4
+ "version": "0.8.20",
5
5
  "description": "Thin Electron host for AEGIS — a local chat UI over the shared client/aegis.js transport. Ships transport + UI only; engine logic stays server-side.",
6
6
  "author": {
7
7
  "name": "AEGIS Code",
@@ -259,10 +259,27 @@ const WRITEISH_BASH = [
259
259
  /(^|[^<])>>?\s*\S/, // > file, >> file
260
260
  /\btee\b/, /\bsed\s+-i/, /\btruncate\b/, /\bdd\b/,
261
261
  /\b(rm|mv|cp|install|touch|mkdir|rmdir|chmod|chown|ln)\b/,
262
- /\b(patch|applypatch)\b/, /\bpython[0-9.]*\s+-c\b.*\bopen\s*\(/, /\bperl\s+-i\b/,
262
+ /\b(patch|applypatch)\b/, /\bperl\s+-i\b/,
263
263
  /\bgit\s+(checkout|restore|reset|clean|stash|apply|revert|cherry-pick|merge|rebase)\b/,
264
264
  /\bnpm\s+(install|ci|uninstall|update)\b/, /\byarn\s+(add|remove)\b/, /\bpip[0-9.]*\s+install\b/,
265
265
  /\bAEGIS_GATE_SKIP\b/,
266
+
267
+ // `find` is a writer the moment it mutates: -delete, -exec/-execdir, and the
268
+ // -fprint/-fls family all write without ever containing `rm` or a redirect.
269
+ // Found by probing this gate keylessly on 2026-10-02 (`find <gated-tree>
270
+ // -name guard.json -delete` was reported as a read). Kept in step with
271
+ // aegiscodex-dev/src/repoguard.js, which carries the same list.
272
+ /\bfind\b[^|;]*\s-(delete|exec|execdir|fprint|fprint0|fls)\b/,
273
+ /\bxargs\b/,
274
+
275
+ // An inline-eval interpreter is an opaque program: `node -e`, `python -c`,
276
+ // `perl -e`, `sh -c` can write anywhere without naming a path in the command
277
+ // text. The old python rule looked for a literal `open(` and so missed
278
+ // `open(String.fromCharCode(...))`; the interpreter itself is the honest
279
+ // marker, and path-less write-ish commands fall back to cwd (fail-closed).
280
+ // `node --test` is deliberately NOT a hit.
281
+ /\b(python[0-9.]*|perl)\s+-c\b/, /\b(python[0-9.]*|perl)\s+-e\b/,
282
+ /\bnode\b[^|;]*\s(?:-e|--eval)\b/, /\b(sh|bash|zsh|dash)\s+-c\b/,
266
283
  ];
267
284
 
268
285
  /** Path-shaped tokens in a command line. Deliberately over-eager: see bashTargets. */