synartesis 0.3.0 → 0.3.2

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,56 @@
2
2
 
3
3
  What changed, and why it mattered. Dates are release dates.
4
4
 
5
+ ## 0.3.2 — 2026-08-30
6
+
7
+ ### Fixed
8
+
9
+ - **A drift halt shows what changed, not both documents.** Halting on drift
10
+ printed the expected and actual contents of the resource in full. On a
11
+ 200-line file that is two screens of escaped JSON with the one line that
12
+ matters buried inside, which is the same as not saying. It now trims the head
13
+ and tail the two sides agree on and prints only the region that differs,
14
+ capped at eight lines a side:
15
+
16
+ ```
17
+ drift at sequence 4: the resource is not in the state this run left it in.
18
+ at line 123:
19
+ + // A HUMAN FIXED THIS BY HAND.
20
+ 0 removed, 1 added.
21
+ ```
22
+
23
+ Both values are still on the row, and `synartesis show` prints them.
24
+ - **And it no longer crashes on a snapshot it cannot walk.** Finding the text
25
+ to diff, and the fallback for when there is none, both recursed — so a
26
+ snapshot nested a few thousand levels deep turned a drift halt into a stack
27
+ trace, at exactly the moment a person needs to be told their work is at risk.
28
+ Walked with an explicit stack now, with a node cap, and the fallback catches.
29
+
30
+ ## 0.3.1 — 2026-08-30
31
+
32
+ ### Fixed
33
+
34
+ - **`--older-than` no longer crashes on a number too large to be a date.**
35
+ `Number.isFinite` is true for 1e9, but a cutoff that many days back sits
36
+ before the earliest date a `Date` can hold, so `toISOString` threw and
37
+ `synartesis prune --older-than 999999999` answered `Invalid time value` and
38
+ exited 1. That names neither the flag nor the problem, and exit 1 means
39
+ "halted or refused" — so it read as a prune that had failed partway through
40
+ rather than a mistyped argument. Bounded to 0–36500 days, with the range in
41
+ the message and exit 2 where it belongs.
42
+ - **A journal that cannot be read is reported as unknown, not as `1 kB`.**
43
+ `sizeOf` could never throw, because the function it called already swallowed
44
+ the error and returned zero, so the "unknown" branch was unreachable and a
45
+ missing file was reported at a confident wrong size.
46
+
47
+ ### Documentation
48
+
49
+ - `synartesis prune` is on the landing page, which listed eleven commands and
50
+ not the twelfth.
51
+ - The doc comment promising that a failed journal write is never swallowed sits
52
+ on the method that does that again, rather than on `prunableRuns`, which is a
53
+ read and promises no such thing.
54
+
5
55
  ## 0.3.0 — 2026-08-29
6
56
 
7
57
  ### Security
package/README.md CHANGED
@@ -282,10 +282,6 @@ than reporting an opaque failure.
282
282
 
283
283
  ## Real servers
284
284
 
285
- If you would rather follow steps than read about it, there is a
286
- [guide to running this against your own files](TESTING-ON-A-REAL-SYSTEM.md),
287
- with the gate and the drift check as the two things worth testing on purpose.
288
-
289
285
  Synartesis has nothing to do with email in particular. It sits on the MCP
290
286
  protocol, so its subject is whatever the servers you have connected can do:
291
287
  your files, your repositories, your database, your tickets, your agent's own
@@ -4,7 +4,7 @@ import {
4
4
  SnapshotError,
5
5
  UpstreamError,
6
6
  describe
7
- } from "./chunk-K3QIPVBY.js";
7
+ } from "./chunk-WNLRMSDB.js";
8
8
 
9
9
  // src/invocation.ts
10
10
  import { accessSync, constants } from "fs";
@@ -615,10 +615,6 @@ var SqliteJournal = class {
615
615
  close() {
616
616
  this.#db.close();
617
617
  }
618
- /**
619
- * A failed journal write means the record of what the agent did is
620
- * incomplete. It is never swallowed and never merely logged.
621
- */
622
618
  prunableRuns(before) {
623
619
  return this.#run(
624
620
  "prunableRuns",
@@ -674,6 +670,10 @@ var SqliteJournal = class {
674
670
  this.#db.pragma("wal_checkpoint(TRUNCATE)");
675
671
  });
676
672
  }
673
+ /**
674
+ * A failed journal write means the record of what the agent did is
675
+ * incomplete. It is never swallowed and never merely logged.
676
+ */
677
677
  #run(operation, body) {
678
678
  try {
679
679
  return body();
@@ -1479,4 +1479,4 @@ export {
1479
1479
  observeState,
1480
1480
  connectStdioUpstream
1481
1481
  };
1482
- //# sourceMappingURL=chunk-FIIKQECN.js.map
1482
+ //# sourceMappingURL=chunk-LNR5GXPG.js.map