pando-ai 0.2.4 → 0.2.5

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/README.md CHANGED
@@ -26,8 +26,11 @@ npx -y pando-ai
26
26
 
27
27
  On a terminal this opens the **firewall console**: it detects whether `codex`
28
28
  and `claude` are protected, offers to install supervised launchers for any that
29
- aren't, and shows current status and policy. After installation you keep running
30
- `codex` and `claude` normally Pando supervises each launch.
29
+ aren't, and shows current status and policy. It also installs a persistent
30
+ `~/.pando/bin/pando-ai` command shim, so future commands such as
31
+ `pando-ai uninstall` work even when the first run came from `npx`. After
32
+ installation you keep running `codex` and `claude` normally — Pando supervises
33
+ each launch.
31
34
 
32
35
  ## How it works
33
36
 
@@ -179,9 +182,9 @@ provider-bound gateway enforcement is disabled.
179
182
  ## Surfaces
180
183
 
181
184
  ```bash
182
- pando-ai # firewall console (TTY): status + proactive install
185
+ pando-ai # firewall console (TTY): status, install, uninstall
183
186
  pando-ai install # force a (re)install pass
184
- pando-ai uninstall # remove Pando shims, managed PATH block, and install state
187
+ pando-ai uninstall # remove Pando shims, managed PATH block, install state, and global npm install when detected
185
188
  pando-ai serve [path] # stdio MCP server for MCP clients
186
189
  pando-ai serve-http # HTTP MCP server
187
190
  pando-ai gateway # run the firewall gateway in the foreground (debug)
@@ -202,15 +205,13 @@ pando-ai uninstall
202
205
  ```
203
206
 
204
207
  This removes Pando-owned `codex`/`claude` shims from `~/.pando/bin`, removes
205
- the managed PATH block from your shell startup file when present, and deletes
206
- `~/.pando/state.json` so declined/install state does not suppress future setup
207
- prompts. It does not delete policy files, logs, or other user data.
208
-
209
- If you installed the npm package globally, remove it separately:
210
-
211
- ```bash
212
- npm uninstall -g pando-ai
213
- ```
208
+ the Pando-owned `pando-ai` command shim, removes the managed PATH block from
209
+ your shell startup file when present, and deletes `~/.pando/state.json` so
210
+ declined/install state does not suppress future setup prompts. It does not
211
+ delete policy files, logs, or other user data. If the command is running from a
212
+ global npm install, it also removes that global `pando-ai` package
213
+ automatically. `npx` runs are temporary, so there is no persistent npm package
214
+ to remove in that case.
214
215
 
215
216
  ## MCP serve mode
216
217
 
package/bin/pando-ai.js CHANGED
@@ -29,10 +29,30 @@ const current = parseNodeVersion(process.version);
29
29
  if (!isSupportedNode(current)) {
30
30
  const detected = current ? `${current.major}.${current.minor}.${current.patch}` : process.version;
31
31
  console.error(
32
- `[pando] pando-ai requires Node.js 22.5.0 or newer. Detected ${detected}.\n` +
33
- "[pando] Upgrade Node, then re-run `npx -y pando-ai`.",
32
+ "\n" +
33
+ `[pando] pando-ai requires Node.js 22.5.0 or newer. Detected ${detected}.\n` +
34
+ "[pando] Please update Node.js, then re-run: npx -y pando-ai\n",
34
35
  );
35
36
  process.exit(1);
36
37
  }
37
38
 
39
+ const originalEmitWarning = process.emitWarning;
40
+ process.emitWarning = function pandoEmitWarning(warning, ...args) {
41
+ const text =
42
+ typeof warning === "string"
43
+ ? warning
44
+ : warning && typeof warning === "object" && "message" in warning
45
+ ? String(warning.message)
46
+ : "";
47
+ const type = typeof args[0] === "string" ? args[0] : undefined;
48
+ if (
49
+ type === "ExperimentalWarning" ||
50
+ text.includes("SQLite is an experimental feature") ||
51
+ text.includes("localStorage is not available")
52
+ ) {
53
+ return;
54
+ }
55
+ return originalEmitWarning.call(process, warning, ...args);
56
+ };
57
+
38
58
  require("../dist/cli.js");