@bridge4dev/runner 0.70.0 → 0.70.1

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.
@@ -1915,6 +1915,16 @@ export class Supervisor {
1915
1915
  existing.stopRequested = true;
1916
1916
  existing.session?.stop('session_stopped');
1917
1917
  }
1918
+ // The descriptor also knows the feed better than this life does (#472).
1919
+ // The API writes lines of its own into a feed this runner numbers: the
1920
+ // refusal service puts «Continuing the session by itself» at the next
1921
+ // free seq and resumes a moment later, while this life is still going
1922
+ // down. The words that come with the resume are echoed by THIS life, and
1923
+ // its counter knew nothing of that line – the echo reused its number and
1924
+ // the API dropped it as a duplicate. Before the `await` below: the words
1925
+ // arrive right behind this frame. A no-op whenever this runner wrote the
1926
+ // last row itself.
1927
+ existing.journal.ensureSeqAbove(descriptor.lastSeq);
1918
1928
  // The descriptor is newer than what this session was built from, so its
1919
1929
  // clock is too (QA-149 MAJOR-1). Applied on the way out of every early
1920
1930
  // return, not just the reconnect one — a descriptor re-sent for any
@@ -2936,9 +2946,18 @@ export class Supervisor {
2936
2946
  }
2937
2947
  // Keep the journal while offline: the recorded terminal status is what
2938
2948
  // reconcile replays after the next reconnect (QA-96 F1).
2949
+ //
2950
+ // …and while a resume is queued behind this life (#472). The next life
2951
+ // opens this same journal, and two things it needs live only here: the
2952
+ // words parked for it (`acceptUserMessage` holds a message that reached a
2953
+ // life already on its way out) and the seq counter. Deleted, the resume
2954
+ // started from an empty file – the platform's «continue» after a refusal
2955
+ // was gone, and «Session resumed» reused a seq the old life had already
2956
+ // sent, so the API dropped it. The session sat idle with nothing on screen.
2939
2957
  if (this.ws.connected &&
2940
2958
  running.journal.unacked().length === 0 &&
2941
- isTerminal(running.lastReported)) {
2959
+ isTerminal(running.lastReported) &&
2960
+ !running.pendingRestart) {
2942
2961
  this.journals.closeAndDelete(descriptor.id);
2943
2962
  }
2944
2963
  // The map just lost an entry, and this is the one place where that happens
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const RUNNER_VERSION = "0.70.0";
1
+ export declare const RUNNER_VERSION = "0.70.1";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Kept in sync with package.json by the release script (manual for now).
2
- export const RUNNER_VERSION = '0.70.0';
2
+ export const RUNNER_VERSION = '0.70.1';
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bridge4dev/runner",
3
- "version": "0.70.0",
3
+ "version": "0.70.1",
4
4
  "description": "DevBridge dev runner — connects a dev server to DevBridge and runs agent sessions (Claude Code / Codex)",
5
5
  "homepage": "https://bridge4.dev",
6
6
  "license": "MIT",