pi-smart-compact 10.1.3 → 10.1.4

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
@@ -2,6 +2,28 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [10.1.4] - 2026-10-02
6
+
7
+ ### Release approval
8
+
9
+ - Patch release approved by the release owner after the deterministic gates
10
+ on the exact candidate. No version-specific applied-canary cohort or live
11
+ provider run exists for `10.1.4`; the fix is evidenced by unit tests and
12
+ offline replay of recorded sessions only.
13
+
14
+ ### Fixed
15
+
16
+ - **Evidence lines no longer manufacture a file by cutting through a path.**
17
+ `summaryEvidenceLine` cut at the character limit wherever it fell; the
18
+ cross-compaction delta cuts loop summaries at 60 characters, and in a
19
+ recorded session that landed inside `.json`, so the summary carried
20
+ `OPENCLAW_HOME/.openclaw/openclaw.js`, a file that never existed. The
21
+ verifier flagged it as fabricated (repairable, so not blocking), but a
22
+ reader of the summary would have looked for it. The cut now backs off to
23
+ the last separator inside the split token (a true directory prefix) or to
24
+ the token start; shorter cuts remain prefixes of longer renderings, so
25
+ needle checks keep matching.
26
+
5
27
  ## [10.1.3] - 2026-10-02
6
28
 
7
29
  ### Release approval
@@ -8,7 +8,7 @@ import type { CompressionProfile, ProfileConfig } from "./types.ts";
8
8
  * `package.json#version`. Do not hand-edit this line for releases; bump
9
9
  * package.json and run `bun run sync-version`.
10
10
  */
11
- export declare const VERSION = "10.1.3";
11
+ export declare const VERSION = "10.1.4";
12
12
  /**
13
13
  * Opt-in components that are not installed with the extension: optional peer
14
14
  * dependencies in package.json, pinned to the versions the release audit
@@ -1 +1 @@
1
- {"version":3,"file":"summary-parse.d.ts","sourceRoot":"","sources":["../../src/domain/summary-parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EACX,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,MAAM,qBAAqB,CAAC;AAK7B,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ5E;AAiCD;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,YAAY,GAAE,MAA8C,GAC1D,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAuCrB;AAYD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA8D/D;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAC1B,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAClC,IAAI,EAAE,WAAW,GACf,OAAO,GAAG,SAAS,CAGrB;AAED,wBAAgB,UAAU,CACzB,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAClC,IAAI,EAAE,WAAW,GACf,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,OAAO,EAAE,gBAAgB,EACzB,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,MAAM,CAcR;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,WAAW,GAAG,gBAAgB,GACxC,gBAAgB,CAwClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,YAAY,SAAK,GACf,gBAAgB,CAoBlB"}
1
+ {"version":3,"file":"summary-parse.d.ts","sourceRoot":"","sources":["../../src/domain/summary-parse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EACX,gBAAgB,EAChB,OAAO,EACP,WAAW,EACX,MAAM,qBAAqB,CAAC;AAK7B,uEAAuE;AACvE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAQ5E;AA2DD;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,YAAY,GAAE,MAA8C,GAC1D,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAuCrB;AAYD,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB,CA8D/D;AAED,0DAA0D;AAC1D,wBAAgB,WAAW,CAC1B,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAClC,IAAI,EAAE,WAAW,GACf,OAAO,GAAG,SAAS,CAGrB;AAED,wBAAgB,UAAU,CACzB,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAClC,IAAI,EAAE,WAAW,GACf,OAAO,CAET;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAC5B,OAAO,EAAE,gBAAgB,EACzB,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,MAAM,CAcR;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAChC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,WAAW,CAAC;CACpB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC5B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,SAAS,CAAC,EAAE,WAAW,GAAG,gBAAgB,GACxC,gBAAgB,CAwClB;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAC9B,OAAO,EAAE,gBAAgB,EACzB,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,EACZ,YAAY,SAAK,GACf,gBAAgB,CAoBlB"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ import {
5
5
  } from "@earendil-works/pi-coding-agent";
6
6
 
7
7
  // src/constants.ts
8
- var VERSION = "10.1.3";
8
+ var VERSION = "10.1.4";
9
9
  var OPTIONAL_COMPONENTS = {
10
10
  mnemopi: { name: "@oh-my-pi/pi-mnemopi", version: "18.3.1", enables: "Mnemopi memory store" },
11
11
  bun: { name: "bun", version: "1.4.2", enables: "Mnemopi worker runtime when no Bun 1.3.14+ is on PATH" },
@@ -2916,7 +2916,24 @@ function canonicalHeading(kind) {
2916
2916
  // src/domain/summary-parse.ts
2917
2917
  var HEADING_RE = /^(#{1,3})\s+(.+?)\s*$/;
2918
2918
  function summaryEvidenceLine(value, maxLength) {
2919
- return value.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g, " ").replace(/\s+/g, " ").trim().replace(/^(?:(?:#{1,6}|[-*+]|>)\s+)+/, "").slice(0, maxLength).trim();
2919
+ const line = value.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F]/g, " ").replace(/\s+/g, " ").trim().replace(/^(?:(?:#{1,6}|[-*+]|>)\s+)+/, "");
2920
+ if (line.length <= maxLength)
2921
+ return line;
2922
+ return cutBeforeSplitPath(line, maxLength).trim();
2923
+ }
2924
+ var PATH_TOKEN_CHAR_RE = /[\w./-]/;
2925
+ function cutBeforeSplitPath(line, max) {
2926
+ const kept = line.slice(0, max);
2927
+ if (!PATH_TOKEN_CHAR_RE.test(line[max] ?? "") || !PATH_TOKEN_CHAR_RE.test(kept.slice(-1))) {
2928
+ return kept;
2929
+ }
2930
+ const tokenStart = kept.search(/[\w./-]+$/);
2931
+ const token = kept.slice(tokenStart) + (line.slice(max).match(/^[\w./-]*/)?.[0] ?? "");
2932
+ if (!/[./]/.test(token))
2933
+ return kept;
2934
+ const lastSlash = kept.lastIndexOf("/");
2935
+ const cut = lastSlash >= tokenStart ? lastSlash + 1 : tokenStart;
2936
+ return cut > 0 ? kept.slice(0, cut) : kept;
2920
2937
  }
2921
2938
  function summaryPathLine(value) {
2922
2939
  return JSON.stringify(value);
package/dist/rtk.js CHANGED
@@ -198,7 +198,7 @@ class SecretScrubber {
198
198
  }
199
199
 
200
200
  // src/constants.ts
201
- var VERSION = "10.1.3";
201
+ var VERSION = "10.1.4";
202
202
  var OPTIONAL_COMPONENTS = {
203
203
  mnemopi: { name: "@oh-my-pi/pi-mnemopi", version: "18.3.1", enables: "Mnemopi memory store" },
204
204
  bun: { name: "bun", version: "1.4.2", enables: "Mnemopi worker runtime when no Bun 1.3.14+ is on PATH" },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-smart-compact",
3
- "version": "10.1.3",
3
+ "version": "10.1.4",
4
4
  "description": "Pi Continuity — context hygiene and session continuity for Pi Coding Agent: recoverable cleanup, checkpoints, memory and verified compaction.",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.4.2",