pi-mono-all 1.2.6 → 1.2.8

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # pi-mono-all
2
2
 
3
+ ## 1.2.8
4
+
5
+ ### Patch Changes
6
+
7
+ - Bundle `pi-mono-context-guard@1.7.4` with compaction-safe read dedup cache invalidation.
8
+
9
+ ## 1.2.7
10
+
11
+ ### Patch Changes
12
+
13
+ - Bundle `pi-mono-auto-fix@0.3.2` with Windows command quoting, local npm shim resolution, and OS temp-directory fallback fixes.
14
+
3
15
  ## 1.2.6
4
16
 
5
17
  ### Patch Changes
@@ -1,5 +1,13 @@
1
1
  # pi-mono-auto-fix
2
2
 
3
+ ## 0.3.2
4
+
5
+ ### Patch Changes
6
+
7
+ ### Fixed
8
+
9
+ - Fix Windows auto-fix execution for paths containing spaces by using `cmd.exe`-compatible quoting, resolving local `.cmd`/`.exe`/`.bat` npm shims, and using the OS temp directory instead of hardcoded `/tmp` for npx fallbacks.
10
+
3
11
  ## 0.3.1
4
12
 
5
13
  ### Patch Changes
@@ -19,7 +19,7 @@ import type {
19
19
  } from "@earendil-works/pi-coding-agent";
20
20
  import { spawn } from "node:child_process";
21
21
  import { existsSync, readFileSync, statSync } from "node:fs";
22
- import { homedir } from "node:os";
22
+ import { homedir, tmpdir } from "node:os";
23
23
  import { dirname, extname, isAbsolute, relative, resolve } from "node:path";
24
24
 
25
25
  // ---------------------------------------------------------------------------
@@ -101,6 +101,9 @@ function loadConfig(): Config {
101
101
  // ---------------------------------------------------------------------------
102
102
 
103
103
  function shellQuote(s: string): string {
104
+ if (process.platform === "win32") {
105
+ return `"${s.replace(/"/g, '\\"')}"`;
106
+ }
104
107
  return `'${s.replace(/'/g, "'\\''")}'`;
105
108
  }
106
109
 
@@ -135,8 +138,17 @@ function findLocalBin(
135
138
  ): { binPath: string; projectRoot: string } | undefined {
136
139
  let dir = startDir;
137
140
  while (true) {
138
- const binPath = `${dir}/node_modules/.bin/${tool}`;
139
- if (existsSync(binPath)) return { binPath, projectRoot: dir };
141
+ const candidates =
142
+ process.platform === "win32"
143
+ ? [
144
+ `${dir}/node_modules/.bin/${tool}.cmd`,
145
+ `${dir}/node_modules/.bin/${tool}.exe`,
146
+ `${dir}/node_modules/.bin/${tool}.bat`,
147
+ `${dir}/node_modules/.bin/${tool}`,
148
+ ]
149
+ : [`${dir}/node_modules/.bin/${tool}`];
150
+ const binPath = candidates.find((candidate) => existsSync(candidate));
151
+ if (binPath) return { binPath, projectRoot: dir };
140
152
  const parent = dirname(dir);
141
153
  if (parent === dir) return undefined;
142
154
  dir = parent;
@@ -285,8 +297,8 @@ function resolveEslintCommand(
285
297
  * If `command` starts with `npx <tool>`, attempt to resolve a project-local
286
298
  * binary by walking up from the first file. On hit, rewrite the command to
287
299
  * exec the local bin directly and return the project root as cwd. On miss,
288
- * fall back to `/tmp` so npx can fetch the latest from the registry without
289
- * being delegated through pnpm.
300
+ * fall back to the OS temp directory so npx can fetch the latest from the
301
+ * registry without being delegated through pnpm.
290
302
  */
291
303
  function resolveSpawnTarget(
292
304
  command: string,
@@ -308,7 +320,7 @@ function resolveSpawnTarget(
308
320
  }
309
321
  }
310
322
  // No local install — neutral cwd avoids pnpm delegating npx.
311
- return { command, spawnCwd: "/tmp" };
323
+ return { command, spawnCwd: tmpdir() };
312
324
  }
313
325
 
314
326
  async function runFixer(
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-mono-auto-fix",
3
- "version": "0.3.1",
3
+ "version": "0.3.2",
4
4
  "description": "Pi extension that runs language-appropriate fixers (eslint, black, prettier, ...) on files touched during a turn",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -1,5 +1,14 @@
1
1
  # pi-mono-context-guard
2
2
 
3
+ ## 1.7.4
4
+
5
+ ### Patch Changes
6
+
7
+ ### Fixed
8
+
9
+ - Clear the read deduplication cache before session compaction so files can be re-read after their earlier contents leave the model context.
10
+ - Add a `context-guard:clear-cache` event for external cache invalidation.
11
+
3
12
  ## 1.7.3
4
13
 
5
14
  ### Patch Changes
@@ -93,6 +93,22 @@ export default function (pi: ExtensionAPI): void {
93
93
  }
94
94
  });
95
95
 
96
+ // -------------------------------------------------------------------------
97
+ // Clear cache before compaction � file contents are lost but cache
98
+ // entries would still block re-reads with "File unchanged since last read".
99
+ // -------------------------------------------------------------------------
100
+ pi.on("session_before_compact", async () => {
101
+ readCache.clear();
102
+ });
103
+
104
+ // -------------------------------------------------------------------------
105
+ // Cache clear � allows external extensions to invalidate the dedup cache.
106
+ // Emitted via pi.events.emit("context-guard:clear-cache").
107
+ // -------------------------------------------------------------------------
108
+ pi.events.on("context-guard:clear-cache", () => {
109
+ readCache.clear();
110
+ });
111
+
96
112
  // -------------------------------------------------------------------------
97
113
  // Reset cache on new session
98
114
  // -------------------------------------------------------------------------
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-mono-context-guard",
3
- "version": "1.7.3",
3
+ "version": "1.7.4",
4
4
  "description": "Pi extension that guards context window growth by auto-limiting read and rg output",
5
5
  "keywords": [
6
6
  "pi-package",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-mono-all",
3
- "version": "1.2.6",
3
+ "version": "1.2.8",
4
4
  "description": "All pi-mono extensions and bundled skills",
5
5
  "type": "module",
6
6
  "keywords": [
@@ -10,23 +10,23 @@
10
10
  ],
11
11
  "dependencies": {
12
12
  "pi-mono-ask-user-question": "1.7.4",
13
- "pi-mono-auto-fix": "0.3.1",
13
+ "pi-mono-auto-fix": "0.3.2",
14
14
  "pi-mono-btw": "1.7.4",
15
- "pi-mono-clear": "1.7.3",
16
15
  "pi-mono-context": "0.1.1",
16
+ "pi-mono-clear": "1.7.3",
17
+ "pi-mono-context-guard": "1.7.4",
18
+ "pi-mono-linear": "0.2.4",
19
+ "pi-mono-multi-edit": "1.7.3",
17
20
  "pi-mono-figma": "0.2.2",
18
- "pi-mono-context-guard": "1.7.3",
21
+ "pi-mono-review": "1.8.2",
22
+ "pi-mono-sentinel": "1.13.0",
19
23
  "pi-mono-loop": "1.7.3",
20
- "pi-mono-multi-edit": "1.7.3",
21
- "pi-mono-linear": "0.2.4",
22
24
  "pi-mono-simplify": "1.7.3",
23
- "pi-mono-sentinel": "1.13.0",
25
+ "pi-mono-status-line": "1.7.3",
24
26
  "pi-mono-team-mode": "2.3.2",
25
27
  "pi-mono-usage": "0.1.1",
26
28
  "pi-mono-web-search": "0.1.0",
27
- "pi-mono-review": "1.8.2",
28
- "pi-common": "0.1.1",
29
- "pi-mono-status-line": "1.7.3"
29
+ "pi-common": "0.1.1"
30
30
  },
31
31
  "bundledDependencies": [
32
32
  "pi-mono-ask-user-question",