synartesis 0.6.15 → 0.6.16

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,19 @@
2
2
 
3
3
  What changed, and why it mattered. Dates are release dates.
4
4
 
5
+ ## 0.6.16 — 2026-09-15
6
+
7
+ ### Fixed
8
+
9
+ - **A run stopped by drift said it had already been undone.** Undo halts on a
10
+ conflict and prints three ways on, one of them `undo <id> --force`. Running
11
+ that answered "Nothing in it is still applied; it has already been undone"
12
+ -- about a change still sitting in the file -- and refused the very command
13
+ it had just recommended. A halted action is `unrecoverable`, keeps its
14
+ inverse, and is exactly what `--force` and `--replan` exist for; the check
15
+ counted only `applied` and read that as nothing left to do. Found by walking
16
+ the drift case end to end rather than by reading the code.
17
+
5
18
  ## 0.6.15 — 2026-09-15
6
19
 
7
20
  One gap, named by a stranger on Reddit and real.
package/dist/cli.js CHANGED
@@ -3852,7 +3852,9 @@ async function runUndo(argv, journal) {
3852
3852
  const runId = chosen.id;
3853
3853
  if (given === void 0) {
3854
3854
  const actions = journal.getActions(runId);
3855
- const left = actions.filter((action) => action.status === "applied").length;
3855
+ const left = actions.filter(
3856
+ (action) => action.status === "applied" || action.status === "rolling_back" || action.status === "unrecoverable"
3857
+ ).length;
3856
3858
  out("");
3857
3859
  out(
3858
3860
  ` ${style.quiet("no session named, so the most recent:")} ${style.strong(runId.slice(0, 8))} ` + style.quiet(`${chosen.label ?? "an agent"}, ${shortTime(chosen.startedAt).trim()}`)
@@ -3865,7 +3867,9 @@ async function runUndo(argv, journal) {
3865
3867
  )}`
3866
3868
  );
3867
3869
  const other = [...journal.listRuns()].reverse().find(
3868
- (run) => run.id !== runId && journal.getActions(run.id).some((action) => action.status === "applied" && action.inverse !== void 0)
3870
+ (run) => run.id !== runId && journal.getActions(run.id).some(
3871
+ (action) => action.inverse !== void 0 && (action.status === "applied" || action.status === "unrecoverable")
3872
+ )
3869
3873
  );
3870
3874
  if (other !== void 0) {
3871
3875
  out("");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "synartesis",
3
- "version": "0.6.15",
3
+ "version": "0.6.16",
4
4
  "description": "An undo layer for AI agents.",
5
5
  "type": "module",
6
6
  "private": false,