teamshare-bridge 0.22.14 → 0.22.15

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.
@@ -127,6 +127,25 @@ export declare function isOurDaemonProcess(pid: number): boolean | null;
127
127
  export declare function listOurDaemonPids(options?: {
128
128
  exclude?: readonly number[];
129
129
  }): number[];
130
+ /**
131
+ * Every pid that is VERIFIABLY a bridge watchdog supervisor (`node
132
+ * …/index.js supervisor`), ascending.
133
+ *
134
+ * The supervisor is excluded from `listOurDaemonPids` on purpose (an upgrade
135
+ * must never kill the watchdog that restarts it) — but a FULL `stop` must
136
+ * take it down too, or its 30 s tick revives the daemon the human just
137
+ * stopped. Same identity discipline as daemons: argv match required, never
138
+ * kill on a guess.
139
+ */
140
+ export declare function listOurSupervisorPids(options?: {
141
+ exclude?: readonly number[];
142
+ }): number[];
143
+ /**
144
+ * true = verifiably one of OUR watchdog supervisors (`node … supervisor`).
145
+ * false = a foreign process (PID reuse) — NEVER kill it.
146
+ * null = unqueryable — callers treat it as "not ours", which fails safe.
147
+ */
148
+ export declare function isOurSupervisorProcess(pid: number): boolean | null;
130
149
  /**
131
150
  * Every pid whose command line references this bridge install - daemons,
132
151
  * supervisor, upgrade helper, launcher stubs, orphaned sessions.
@@ -15,6 +15,8 @@ exports.resolveDaemonInstanceSync = resolveDaemonInstanceSync;
15
15
  exports.pidInfo = pidInfo;
16
16
  exports.isOurDaemonProcess = isOurDaemonProcess;
17
17
  exports.listOurDaemonPids = listOurDaemonPids;
18
+ exports.listOurSupervisorPids = listOurSupervisorPids;
19
+ exports.isOurSupervisorProcess = isOurSupervisorProcess;
18
20
  exports.listBridgeProcessPids = listBridgeProcessPids;
19
21
  exports.killDaemonPid = killDaemonPid;
20
22
  exports.probePortAnswering = probePortAnswering;
@@ -481,7 +483,41 @@ function isOurDaemonProcess(pid) {
481
483
  * "cannot enumerate" as "cannot confirm", which is the safe direction.
482
484
  */
483
485
  function listOurDaemonPids(options = {}) {
484
- const exclude = new Set(options.exclude ?? []);
486
+ return enumNodePids((pid) => isOurDaemonProcess(pid) === true, options.exclude);
487
+ }
488
+ /**
489
+ * Every pid that is VERIFIABLY a bridge watchdog supervisor (`node
490
+ * …/index.js supervisor`), ascending.
491
+ *
492
+ * The supervisor is excluded from `listOurDaemonPids` on purpose (an upgrade
493
+ * must never kill the watchdog that restarts it) — but a FULL `stop` must
494
+ * take it down too, or its 30 s tick revives the daemon the human just
495
+ * stopped. Same identity discipline as daemons: argv match required, never
496
+ * kill on a guess.
497
+ */
498
+ function listOurSupervisorPids(options = {}) {
499
+ return enumNodePids((pid) => isOurSupervisorProcess(pid) === true, options.exclude);
500
+ }
501
+ /**
502
+ * true = verifiably one of OUR watchdog supervisors (`node … supervisor`).
503
+ * false = a foreign process (PID reuse) — NEVER kill it.
504
+ * null = unqueryable — callers treat it as "not ours", which fails safe.
505
+ */
506
+ function isOurSupervisorProcess(pid) {
507
+ const info = pidInfo(pid);
508
+ if (!info)
509
+ return null;
510
+ if (info.name && !/^node(?:\.exe)?$/i.test(info.name))
511
+ return false;
512
+ if (info.cmdline) {
513
+ return (/(index\.js|teamshare)/i.test(info.cmdline) &&
514
+ /\bsupervisor\b/i.test(info.cmdline));
515
+ }
516
+ return null;
517
+ }
518
+ /** Shared node-process enumeration for the verified-pid listers above. */
519
+ function enumNodePids(accept, exclude) {
520
+ const excluded = new Set(exclude ?? []);
485
521
  const out = (() => {
486
522
  if (process.platform === 'win32') {
487
523
  const res = (0, node_child_process_1.spawnSync)('powershell.exe', [
@@ -504,11 +540,11 @@ function listOurDaemonPids(options = {}) {
504
540
  for (const line of out.split(/\r?\n/)) {
505
541
  const tab = line.indexOf('\t');
506
542
  const pid = Number(tab >= 0 ? line.slice(0, tab) : line.slice(0, line.indexOf(' ')).trim());
507
- if (!Number.isInteger(pid) || pid <= 0 || exclude.has(pid))
543
+ if (!Number.isInteger(pid) || pid <= 0 || excluded.has(pid))
508
544
  continue;
509
545
  // Re-use the single identity test so "verified" means the same thing here as
510
546
  // everywhere else a pid is about to be killed.
511
- if (isOurDaemonProcess(pid) === true)
547
+ if (accept(pid))
512
548
  pids.push(pid);
513
549
  }
514
550
  return [...new Set(pids)].sort((a, b) => a - b);
@@ -1 +1 @@
1
- {"version":3,"file":"daemon-instance.js","sourceRoot":"","sources":["../../src/bridge/daemon-instance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"daemon-instance.js","sourceRoot":"","sources":["../../src/bridge/daemon-instance.ts"],"names":[],"mappings":";;AA2FA,4BAQC;AAuED,gDAQC;AASD,8CAuBC;AAMD,4CAqBC;AAMD,0CAgBC;AASD,gDAEC;AAcD,0CAQC;AAGD,0CASC;AASD,0CAUC;AAOD,sCAMC;AAYD,sDAYC;AAGD,8DAEC;AA0DD,0BAqCC;AAWD,gDAQC;AAaD,8CAKC;AAYD,sDAKC;AAOD,wDAWC;AAyDD,sDA8CC;AAGD,sCA8BC;AAGD,gDAYC;AAUD,0DAaC;AAyCD,gDAiDC;AA5xBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiEG;AACH,2DAA+C;AAC/C,qCAAqF;AACrF,qCAAkC;AAClC,yCAAiC;AACjC,0CAAuD;AACvD,yDAA6E;AAE7E,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,IAAA,iBAAO,GAAE,EAAE,YAAY,CAAC,CAAC;AAChD,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACjD,MAAM,QAAQ,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AAE/C,2EAA2E;AAC3E,MAAM,aAAa,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAY1C,4EAA4E;AAC5E,SAAgB,QAAQ,CAAC,GAAW;IAClC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACrD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAQ,GAA6B,CAAC,IAAI,KAAK,OAAO,CAAC;IACzD,CAAC;AACH,CAAC;AAED,gFAAgF;AAChF,SAAS,SAAS,CAAC,SAA6B;IAC9C,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,aAAa,CAAC;AACtD,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,SAAS,EAAE,MAAM,CAAC,CAA4B,CAAC;QACnF,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACrF,OAAO;YACL,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,OAAO,EAAE,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAClE,SAAS,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;YACjE,MAAM,EAAE,MAAM;SACf,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,4EAA4E;AAC5E,SAAS,gBAAgB,CAAC,IAA2B;IACnD,OAAO,IAAI,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;AAC3E,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,SAAS,kBAAkB;IACzB,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC,CAAC,mBAAmB;IACtD,IAAI,gBAAgB,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAC,CAAC,wBAAwB;IACrE,IAAI,CAAC;QACH,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB;IAChC,MAAM,IAAI,GAAG,YAAY,EAAE,CAAC;IAC5B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,kBAAkB,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,iBAAiB;IAC/B,IAAI,CAAC;QACH,IAAA,mBAAS,EAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,qDAAqD;QACrD,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;QAChC,IAAI,gBAAgB,CAAC,QAAQ,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7C,6EAA6E;QAC7E,2EAA2E;QAC3E,2EAA2E;QAC3E,kDAAkD;QAClD,kBAAkB,EAAE,CAAC;QACrB,IAAA,uBAAa,EACX,SAAS,EACT,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EACxG,EAAE,IAAI,EAAE,IAAI,EAAE,CACf,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,wEAAwE;QACxE,0EAA0E;QAC1E,8CAA8C;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,IAAY,EAAE,OAAe;IAC5D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,2EAA2E;QAC3E,yEAAyE;QACzE,0EAA0E;QAC1E,wEAAwE;QACxE,0DAA0D;QAC1D,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC;YAAE,OAAO;QAChF,MAAM,OAAO,GAAmB;YAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,IAAI;YACJ,OAAO;YACP,SAAS,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACzD,MAAM,EAAE,MAAM;SACf,CAAC;QACF,WAAW,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAAC,KAAqB;IACnD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1E,WAAW,CACT,SAAS,EACT,IAAI,CAAC,SAAS,CACZ,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EACxG,IAAI,EACJ,CAAC,CACF,CACF,CAAC;QACF,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,kBAAkB;IAChC,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,eAAe;IAC7B,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;QAC/B,IAAI,OAAO,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG;YAAE,OAAO;QACnD,IAAA,gBAAM,EAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED,sDAAsD;AACtD,SAAgB,eAAe;IAC7B,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAA,sBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QACxB,IAAI,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,OAAO,CAAC,GAAG;YAAE,OAAO;QACzD,IAAA,gBAAM,EAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,iBAAiB;IACnB,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACI,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,SAAS,GAAG,GAAG;IACjE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,OAAO,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACrG,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAuC,CAAC;QACtE,IAAI,IAAI,EAAE,EAAE,KAAK,IAAI;YAAE,OAAO,EAAE,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;QACvG,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,aAAa;IACjC,KAAK,MAAM,IAAI,IAAI,+BAAsB,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,GAAG;YAAE,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IAC7F,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,qBAAqB;IACzC,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,KAAK,GAAG,MAAM,aAAa,EAAE,CAAC;IACpC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,QAAQ,GAAmB;QAC/B,GAAG,KAAK;QACR,GAAG,EAAE,MAAM,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG;KACrD,CAAC;IACF,IAAI,QAAQ,CAAC,GAAG,GAAG,CAAC;QAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAChD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,iFAAiF;AACjF,SAAgB,yBAAyB;IACvC,OAAO,kBAAkB,EAAE,CAAC;AAC9B,CAAC;AAED,wEAAwE;AACxE,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,IAAA,sBAAY,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,QAAgB;IACnD,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC3C,IAAA,uBAAa,EAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC;QACH,IAAA,oBAAU,EAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC;YACH,IAAA,gBAAM,EAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAoBD;;;;;;;GAOG;AACH,SAAgB,OAAO,CAAC,GAAW;IACjC,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAA,8BAAS,EACnB,gBAAgB,EAChB;gBACE,YAAY;gBACZ,iBAAiB;gBACjB,UAAU;gBACV,sBAAsB;oBACpB,GAAG;oBACH,+CAA+C;oBAC/C,uDAAuD;oBACvD,GAAG;oBACH,gDAAgD;oBAChD,UAAU;aACb,EACD,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,CACvE,CAAC;YACF,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACtC,IAAI,CAAC,GAAG;gBAAE,OAAO,IAAI,CAAC;YACtB,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC9B,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;YACzD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,OAAO,EAAE,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,CAAC;QAC1D,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,8BAAS,EAAC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE;YAC9D,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,KAAK;SACf,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC;QACzC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAAC,GAAW;IAC5C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAAC,UAA2C,EAAE;IAC7E,OAAO,YAAY,CACjB,CAAC,GAAG,EAAE,EAAE,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,IAAI,EACzC,OAAO,CAAC,OAAO,CAChB,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,qBAAqB,CAAC,UAA2C,EAAE;IACjF,OAAO,YAAY,CACjB,CAAC,GAAG,EAAE,EAAE,CAAC,sBAAsB,CAAC,GAAG,CAAC,KAAK,IAAI,EAC7C,OAAO,CAAC,OAAO,CAChB,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,sBAAsB,CAAC,GAAW;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAC;IACvB,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpE,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CACL,wBAAwB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAC3C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CACrC,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,0EAA0E;AAC1E,SAAS,YAAY,CACnB,MAAgC,EAChC,OAA2B;IAE3B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE;QACxB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAA,8BAAS,EACnB,gBAAgB,EAChB;gBACE,YAAY;gBACZ,iBAAiB;gBACjB,UAAU;gBACV,8DAA8D;oBAC5D,yDAAyD;aAC5D,EACD,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CACxE,CAAC;YACF,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,8BAAS,EAAC,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;YACjD,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACtE,6EAA6E;QAC7E,+CAA+C;QAC/C,IAAI,MAAM,CAAC,GAAG,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAgB,qBAAqB,CACnC,UAAmB,EACnB,UAA2C,EAAE;IAE7C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACnF,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE;QACxB,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAA,8BAAS,EACnB,gBAAgB,EAChB;gBACE,YAAY;gBACZ,iBAAiB;gBACjB,UAAU;gBACV,8DAA8D;oBAC5D,yDAAyD;aAC5D,EACD,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CACxE,CAAC;YACF,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;QAC1B,CAAC;QACD,MAAM,GAAG,GAAG,IAAA,8BAAS,EAAC,IAAI,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE;YACjD,KAAK,EAAE,MAAM;YACb,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,IAAI,EAAE,CAAC;IAC1B,CAAC,CAAC,EAAE,CAAC;IAEL,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACrE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,EAAE,OAAO;YAAE,SAAS;QAC7B,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,SAAS;QAChE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACvC,0EAA0E;QAC1E,6BAA6B;QAC7B,MAAM,IAAI,GAAG,MAAM;YACjB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;QACxE,IAAI,IAAI;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,yEAAyE;AACzE,SAAgB,aAAa,CAAC,GAAW,EAAE,SAAS,GAAG,IAAI;IACzD,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IAAC,MAAM,CAAC;QACP,kBAAkB;IACpB,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IACxC,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC9C,iCAAiC;IACnC,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAChC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,2EAA2E;QAC3E,oDAAoD;QACpD,IAAA,8BAAS,EAAC,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE;YACjD,KAAK,EAAE,QAAQ;YACf,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,IAAI,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;QACnB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAC/B,OAAO,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;QAC1C,+BAA+B;IACjC,CAAC;IACD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,uEAAuE;AACvE,SAAgB,kBAAkB,CAAC,IAAY,EAAE,SAAS,GAAG,IAAI;IAC/D,MAAM,GAAG,GAAG,IAAA,8BAAS,EACnB,OAAO,CAAC,QAAQ,EAChB;QACE,IAAI;QACJ,2BAA2B,IAAI,sCAAsC,SAAS,KAAK;YACjF,sGAAsG;YACtG,6BAA6B;KAChC,EACD,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAClE,CAAC;IACF,OAAO,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,uBAAuB;IACrC,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAClC,MAAM,QAAQ,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,IAAI,QAAQ,KAAK,IAAI,IAAI,kBAAkB,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IACvE,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC;IACxC,IAAI,WAAW,KAAK,IAAI,IAAI,WAAW,KAAK,QAAQ,IAAI,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC;QACxF,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,KAAK,MAAM,IAAI,IAAI,+BAAsB,EAAE,CAAC;QAC1C,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW;YAAE,SAAS;QACxD,IAAI,kBAAkB,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB;IACxB,MAAM,IAAI,GAAG,eAAe,EAAE,EAAE,IAAI,CAAC;IACrC,OAAO,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,CAGtE,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAYD;;;;;;;;;;;;GAYG;AACH,SAAgB,kBAAkB,CAChC,UAA+D,EAAE;IAEjE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;IACtC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC;IAC5C,MAAM,IAAI,GAAG,iBAAiB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAC;IAClC,MAAM,aAAa,GAAG,uBAAuB,EAAE,CAAC;IAEhD,MAAM,QAAQ,GAAG,IAAA,kCAAe,EAAC;QAC/B,IAAI;QACJ,OAAO,EAAE,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QAC1D,UAAU,EACR,OAAO,OAAO,EAAE,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QACrF,YAAY,EAAE,aAAa,KAAK,IAAI;KACrC,CAAC,CAAC;IAEH,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChC,IAAI,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;;YAChD,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,8EAA8E;IAC9E,+EAA+E;IAC/E,IAAI,QAAQ,CAAC,MAAM,KAAK,MAAM,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/F,eAAe,CAAC;YACd,GAAG,EAAE,QAAQ,CAAC,IAAI;YAClB,IAAI,EAAE,aAAa,IAAI,CAAC;YACxB,OAAO,EAAE,IAAI,EAAE,OAAO,IAAI,SAAS;YACnC,SAAS,EAAE,IAAI,EAAE,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACtD,MAAM,EAAE,MAAM;SACf,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GACf,OAAO,CAAC,MAAM,GAAG,CAAC;QAChB,CAAC,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;QACnC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC;YACpB,CAAC,CAAC,mBAAmB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,wCAAwC;YACjF,CAAC,CAAC,EAAE,CAAC;IACX,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,QAAQ,CAAC,MAAM,GAAG,WAAW;QACtC,OAAO;QACP,SAAS;KACV,CAAC;AACJ,CAAC"}
@@ -491,6 +491,61 @@ async function runDaemon(portOverride) {
491
491
  (0, lock_1.clearLock)(agentId);
492
492
  handle.api.heartbeat(agentId, 'online', undefined, undefined, true).catch(() => { });
493
493
  handle.pushState();
494
+ }, async () => {
495
+ // Full-stop rescue (2026-10): `teamshare-bridge stop` ends EVERY
496
+ // agent's session with the same rescue the per-agent `session.stop`
497
+ // wake runs (kill + commit + comment), instead of orphaning live
498
+ // harness processes that keep writing with no parent watching them.
499
+ // Sequential per agent — git rescue must not overlap on one machine.
500
+ const stopped = [];
501
+ const seen = new Set();
502
+ for (const agent of (0, config_1.loadConfig)().agents) {
503
+ seen.add(agent.agentId);
504
+ const handle = handles.get(agent.agentId);
505
+ const api = handle?.api ?? api_1.TeamshareApi.forAgent(apiBase, agent);
506
+ const pushState = handle?.pushState ?? (() => { });
507
+ const lock = (0, lock_1.readLock)(agent.agentId);
508
+ await stopAgentSession({ agentId: agent.agentId }, api, {
509
+ sessionRelay,
510
+ settingsByAgent,
511
+ pushState,
512
+ taskId: lock?.taskId ?? null,
513
+ projectId: lock?.projectId ?? null,
514
+ reason: 'full bridge stop',
515
+ });
516
+ stopped.push({ agentId: agent.agentId, hadLock: !!lock });
517
+ }
518
+ // Locks for agents no longer in config: no api key, so no rescue
519
+ // comment is possible — kill the holder and clear the file so no
520
+ // phantom busy survives the stop.
521
+ try {
522
+ for (const entry of (0, node_fs_1.readdirSync)(lock_1.LOCK_DIR)) {
523
+ if (!entry.endsWith('.lock'))
524
+ continue;
525
+ const agentId = entry.slice(0, -'.lock'.length);
526
+ if (seen.has(agentId) || !agentId)
527
+ continue;
528
+ const lock = (0, lock_1.readLock)(agentId);
529
+ if (lock?.pid && lock.pid !== process.pid) {
530
+ try {
531
+ (0, process_tree_1.killTreeExcept)(lock.pid, {
532
+ graceMs: 2_000,
533
+ log: (m) => (0, daemon_support_1.log)(`stop-all ${agentId}: ${m}`),
534
+ });
535
+ }
536
+ catch (err) {
537
+ (0, daemon_support_1.log)(`stop-all ${agentId}: kill failed: ${(0, config_1.msg)(err)}`);
538
+ }
539
+ }
540
+ (0, lock_1.clearLock)(agentId);
541
+ stopped.push({ agentId, hadLock: !!lock });
542
+ }
543
+ }
544
+ catch (err) {
545
+ (0, daemon_support_1.log)(`stop-all-sessions lock sweep failed: ${(0, config_1.msg)(err)}`);
546
+ }
547
+ pushAllStates();
548
+ return { ok: true, stopped };
494
549
  });
495
550
  (0, daemon_support_1.log)(`probe server listening on http://localhost:${boundPort}/ping`);
496
551
  // Publish the BOUND port (not config.port) into daemon.lock + runtime.json.
@@ -805,6 +860,185 @@ async function runDaemon(portOverride) {
805
860
  ensureOrchestratorClient();
806
861
  }, ORCH_HEALTH_INTERVAL_MS);
807
862
  orchHealthTimer.unref?.();
863
+ /**
864
+ * Stop ONE agent's session with rescue (2026-10): the exact routine the
865
+ * `session.stop` wake runs — drop work lanes (keep messages), write the
866
+ * stop file, clear build state, kill the live session tree (browsers
867
+ * excluded, daemon-pid guarded), clear the lock, force-end the relay
868
+ * session, save the stopped run's progress (commit + comment), restore a
869
+ * linked-folder stash, then heartbeat online + push state.
870
+ *
871
+ * Shared by the per-agent `session.stop` wake and the full-stop
872
+ * `/internal/stop-all-sessions` endpoint so "stop everything" rescues
873
+ * work-in-progress instead of orphaning it. Never throws — every step is
874
+ * guarded; a stop must not fail on cleanup.
875
+ */
876
+ async function stopAgentSession(agent, api, deps) {
877
+ const tag = `session-stop(${deps.reason})`;
878
+ try {
879
+ const beforeLanes = (0, wake_outbox_1.readOutbox)(agent.agentId);
880
+ const keptLanes = beforeLanes.filter((l) => !WORK_LANE_EVENTS.has(String(l.event.type)));
881
+ const droppedLanes = beforeLanes.length - keptLanes.length;
882
+ const droppedTriggers = beforeLanes
883
+ .filter((l) => WORK_LANE_EVENTS.has(String(l.event.type)))
884
+ .reduce((n, l) => n + l.triggers.length, 0);
885
+ const keptTriggers = keptLanes.reduce((n, l) => n + l.triggers.length, 0);
886
+ for (const lane of beforeLanes) {
887
+ if (WORK_LANE_EVENTS.has(String(lane.event.type))) {
888
+ (0, wake_outbox_1.removeLane)(agent.agentId, lane.lane);
889
+ }
890
+ }
891
+ if (droppedLanes > 0 || keptLanes.length > 0) {
892
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} - dropped ${droppedTriggers} queued work trigger(s) ` +
893
+ `on ${droppedLanes} lane(s), kept ${keptTriggers} message trigger(s) on ${keptLanes.length} lane(s) for later`);
894
+ }
895
+ (0, daemon_support_1.writeAgentStopFile)(agent.agentId);
896
+ (0, daemon_support_1.clearAgentBuildState)(agent.agentId, api);
897
+ const lock = (0, lock_1.readLock)(agent.agentId);
898
+ // Daemon-identity guard (2026-09): never tree-kill a pid that could
899
+ // be THIS daemon (PID reuse on a stale lock would kill the daemon
900
+ // and its whole session subtree). Clear the lock only.
901
+ if (lock?.pid && lock.pid === process.pid) {
902
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} - lock pid is the daemon itself (PID reuse); clearing lock without kill`);
903
+ }
904
+ else if (lock?.pid) {
905
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} - killing live session pid ${lock.pid}`);
906
+ try {
907
+ (0, process_tree_1.killTreeExcept)(lock.pid, {
908
+ graceMs: 2_000,
909
+ log: (m) => (0, daemon_support_1.log)(`agent ${agent.agentId}: ${m}`),
910
+ });
911
+ }
912
+ catch (err) {
913
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} kill failed: ${(0, config_1.msg)(err)}`);
914
+ }
915
+ }
916
+ else {
917
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} - no live session lock`);
918
+ }
919
+ (0, lock_1.clearLock)(agent.agentId);
920
+ // FORCED SESSION END (2026-10): the kill above is a real force-kill, so
921
+ // the CLI's reporter never runs and the hub's AgentSession row stayed
922
+ // open forever (a leaked "live" build row for this agent). End it here,
923
+ // on the same relay the normal path uses, so the console/run history
924
+ // close the session instead of showing a phantom agent that is busy.
925
+ {
926
+ const liveSessionId = deps.sessionRelay.current(agent.agentId);
927
+ if (liveSessionId) {
928
+ deps.sessionRelay.sessionEnd({ sessionId: liveSessionId, exitCode: null });
929
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} - ended session ${liveSessionId} (forced)`);
930
+ }
931
+ }
932
+ // SAVE THE STOPPED RUN'S PROGRESS (2026-09). The kill above is a real
933
+ // force-kill on Windows, so the CLI's `finally` — and with it the mirror
934
+ // detach, which lives in the `try` — never runs. The tree was left on
935
+ // disk holding the only copy of the work-in-progress as uncommitted
936
+ // files, and the lease sweep's later rescue landed on `tasks/<id8>`,
937
+ // a ref no re-run checks out. So do it now, onto the branch the run was
938
+ // delivering on. Never throws; a stop must not fail on cleanup.
939
+ try {
940
+ const saved = await (0, stop_save_1.saveStoppedRun)(lock?.kind === 'task' ? lock.taskId : (deps.taskId ?? undefined), agent.agentId, api, (m) => (0, daemon_support_1.log)(`agent ${agent.agentId}: ${m}`),
941
+ // Our own kill can leave the pid briefly alive; we are the ones who
942
+ // stopped it, so do not treat it as another owner.
943
+ { skipPids: [lock?.pid ?? -1] });
944
+ const body = (0, stop_save_1.stopSaveComment)(String(lock?.taskId ?? deps.taskId ?? ''), saved);
945
+ if (body && api && (lock?.kind === 'task' || deps.taskId)) {
946
+ // NO MORE `.catch(() => undefined)` (2026-10).
947
+ //
948
+ // The old line silenced the failure, which is why eight identical
949
+ // `[work stopped]` comments went unnoticed: every post timed out
950
+ // (ETIMEDOUT), nothing recorded that it had tried, and each replayed
951
+ // `session.stop` wake posted again. A notification that fails to
952
+ // reach the human is a real fault, so it is now reported through
953
+ // `postBridgeNotice` (server-side `clientRequestId` dedupe) and, if
954
+ // it still fails, escalated to a diagnostic instead of vanishing.
955
+ const outcome = await (0, bridge_notice_1.postBridgeNotice)({
956
+ api,
957
+ noticeKey: saved.noticeKey ?? (0, bridge_notice_1.oneShotKey)('work-stopped', agent.agentId, String(lock?.taskId ?? deps.taskId ?? '')),
958
+ scope: { taskId: String(lock?.taskId ?? deps.taskId) },
959
+ body,
960
+ log: (m) => (0, daemon_support_1.log)(`agent ${agent.agentId}: ${m}`),
961
+ });
962
+ if (outcome === 'failed') {
963
+ (0, diagnostics_1.reportDiagnosticSafe)({
964
+ kind: 'wake_failure',
965
+ severity: 'warning',
966
+ agentId: agent.agentId,
967
+ errorCode: 'STOP_NOTICE_UNDELIVERED',
968
+ message: `the [work stopped] notice for task ${lock?.taskId ?? deps.taskId ?? '(none)'} ` +
969
+ `could not be delivered - the human does not know where their work went`,
970
+ includeDoctor: false,
971
+ });
972
+ }
973
+ }
974
+ }
975
+ catch (err) {
976
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: stop save failed: ${(0, config_1.msg)(err)}`);
977
+ }
978
+ // Stash restore on stop (IMP-9xx): the CLI's finally block may not
979
+ // run when the process is force-killed. Pop the task's
980
+ // `teamshare:<taskId>` stash from the daemon so the user's changes
981
+ // are restored. Best-effort — logged warnings, never throws.
982
+ if (deps.taskId) {
983
+ const taskIdForStop = deps.taskId;
984
+ try {
985
+ const stopProjectId = deps.projectId;
986
+ let stopCwd;
987
+ if (stopProjectId) {
988
+ stopCwd = (0, config_1.resolveRepoPath)(stopProjectId) ?? (0, config_1.projectCwd)(stopProjectId) ?? undefined;
989
+ if (!stopCwd) {
990
+ const s0 = deps.settingsByAgent.get(agent.agentId);
991
+ try {
992
+ const proj = await api.getProject(stopProjectId);
993
+ const folderLinks = await api.getLinkedFolders(stopProjectId);
994
+ const uid = s0?.userId;
995
+ const match = uid && folderLinks.items?.length ? folderLinks.items.find((fl) => fl.userId === uid) : null;
996
+ stopCwd = match?.path
997
+ ?? (0, config_1.serverFolderCwd)(proj.folderPath ?? null, s0?.folderPath ?? null)
998
+ ?? undefined;
999
+ }
1000
+ catch { /* fall through */ }
1001
+ }
1002
+ }
1003
+ if (stopCwd) {
1004
+ // Only the LINKED FOLDER holds a stash this run created: an
1005
+ // isolated run (mirror/worktree) never stashes, because
1006
+ // `refs/stash` is shared with the main repo — so its "restore"
1007
+ // here could only ever find some OTHER run's entry (the list is
1008
+ // tag-matched to this task, but the tree it would pop into is not
1009
+ // the one the session was working in). Skip it, and say so,
1010
+ // rather than log a restore that never happened.
1011
+ if ((0, mirror_1.isIsolatedTree)(stopCwd)) {
1012
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} - ${stopCwd} is an isolated tree, ` +
1013
+ `so there is no linked-folder stash to restore`);
1014
+ }
1015
+ else {
1016
+ const gitRoots = (0, git_pipeline_1.resolveRunRepos)(stopCwd);
1017
+ for (const root of gitRoots) {
1018
+ const stashes = (0, git_runner_1.listStashes)(root, stopCwd, taskIdForStop);
1019
+ const target = stashes.find((s) => s.taskId === taskIdForStop);
1020
+ if (target) {
1021
+ (0, git_runner_1.popStashByRef)(root, target.stashIndex, (m) => (0, daemon_support_1.log)(`agent ${agent.agentId}: ${m}`));
1022
+ }
1023
+ }
1024
+ }
1025
+ }
1026
+ }
1027
+ catch (err) {
1028
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} stash restore failed: ${(0, config_1.msg)(err)}`);
1029
+ }
1030
+ }
1031
+ // Immediately update agent status to online — don't wait for the
1032
+ // next heartbeat interval. The killed session's finally block may
1033
+ // not run (force-kill), so we do it here. Use force=true to bypass
1034
+ // the status race guard (prevStatus=working blocks online downgrades).
1035
+ api.heartbeat(agent.agentId, 'online', undefined, undefined, true).catch(() => { });
1036
+ deps.pushState();
1037
+ }
1038
+ catch (err) {
1039
+ (0, daemon_support_1.log)(`agent ${agent.agentId}: ${tag} failed: ${(0, config_1.msg)(err)}`);
1040
+ }
1041
+ }
808
1042
  function startAgentLoop(agent) {
809
1043
  if (handles.has(agent.agentId))
810
1044
  return handles.get(agent.agentId);
@@ -1070,181 +1304,14 @@ async function runDaemon(portOverride) {
1070
1304
  // run releaseLock(), escalating to /F after 2s if still alive.
1071
1305
  // clearLock() at the end is the safety net.
1072
1306
  if (event.type === 'session.stop') {
1073
- // A stop must leave nothing that can respawn: write the stop file
1074
- // (build/worker loops honor it) and clear any local build state so a
1075
- // later question.answered cannot restart the run. Then kill the live
1076
- // session.
1077
- //
1078
- // 2026-09: the queued wakes are NOT all discarded. Work wakes are, but
1079
- // a chat mention or a task comment is a MESSAGE a person addressed to
1080
- // this agent - wiping it made people lose whatever they had written
1081
- // whenever someone pressed "Stop work". Messages are kept and replayed
1082
- // when the agent is next free.
1083
- //
1084
- // LANE-KEYED (2026-10). `withoutWorkEvents` filtered a FIFO array; the
1085
- // outbox is a lane map, so a lane is dropped whole - and because a lane
1086
- // coalesces several triggers, "how many messages survived" is now the
1087
- // TRIGGER count, not the lane count. Reporting the lane count would tell
1088
- // a human "kept 1" when three messages were waiting.
1089
- const beforeLanes = (0, wake_outbox_1.readOutbox)(agent.agentId);
1090
- const keptLanes = beforeLanes.filter((l) => !WORK_LANE_EVENTS.has(String(l.event.type)));
1091
- const droppedLanes = beforeLanes.length - keptLanes.length;
1092
- const droppedTriggers = beforeLanes
1093
- .filter((l) => WORK_LANE_EVENTS.has(String(l.event.type)))
1094
- .reduce((n, l) => n + l.triggers.length, 0);
1095
- const keptTriggers = keptLanes.reduce((n, l) => n + l.triggers.length, 0);
1096
- for (const lane of beforeLanes) {
1097
- if (WORK_LANE_EVENTS.has(String(lane.event.type))) {
1098
- (0, wake_outbox_1.removeLane)(agent.agentId, lane.lane);
1099
- }
1100
- }
1101
- if (droppedLanes > 0 || keptLanes.length > 0) {
1102
- (0, daemon_support_1.log)(`agent ${agent.agentId}: session.stop - dropped ${droppedTriggers} queued work trigger(s) ` +
1103
- `on ${droppedLanes} lane(s), kept ${keptTriggers} message trigger(s) on ${keptLanes.length} lane(s) for later`);
1104
- }
1105
- (0, daemon_support_1.writeAgentStopFile)(agent.agentId);
1106
- (0, daemon_support_1.clearAgentBuildState)(agent.agentId, api);
1107
- const lock = (0, lock_1.readLock)(agent.agentId);
1108
- // Daemon-identity guard (2026-09): never tree-kill a pid that could
1109
- // be THIS daemon (PID reuse on a stale lock would kill the daemon
1110
- // and its whole session subtree). Clear the lock only.
1111
- if (lock?.pid && lock.pid === process.pid) {
1112
- (0, daemon_support_1.log)(`agent ${agent.agentId}: session.stop - lock pid is the daemon itself (PID reuse); clearing lock without kill`);
1113
- }
1114
- else if (lock?.pid) {
1115
- (0, daemon_support_1.log)(`agent ${agent.agentId}: session.stop - killing live session pid ${lock.pid}`);
1116
- try {
1117
- (0, process_tree_1.killTreeExcept)(lock.pid, {
1118
- graceMs: 2_000,
1119
- log: (m) => (0, daemon_support_1.log)(`agent ${agent.agentId}: ${m}`),
1120
- });
1121
- }
1122
- catch (err) {
1123
- (0, daemon_support_1.log)(`agent ${agent.agentId}: session.stop kill failed: ${(0, config_1.msg)(err)}`);
1124
- }
1125
- }
1126
- else {
1127
- (0, daemon_support_1.log)(`agent ${agent.agentId}: session.stop - no live session lock`);
1128
- }
1129
- (0, lock_1.clearLock)(agent.agentId);
1130
- // FORCED SESSION END (2026-10): the kill above is a real force-kill, so
1131
- // the CLI's reporter never runs and the hub's AgentSession row stayed
1132
- // open forever (a leaked "live" build row for this agent). End it here,
1133
- // on the same relay the normal path uses, so the console/run history
1134
- // close the session instead of showing a phantom agent that is busy.
1135
- {
1136
- const liveSessionId = sessionRelay.current(agent.agentId);
1137
- if (liveSessionId) {
1138
- sessionRelay.sessionEnd({ sessionId: liveSessionId, exitCode: null });
1139
- (0, daemon_support_1.log)(`agent ${agent.agentId}: session.stop - ended session ${liveSessionId} (forced)`);
1140
- }
1141
- }
1142
- // SAVE THE STOPPED RUN'S PROGRESS (2026-09). The kill above is a real
1143
- // force-kill on Windows, so the CLI's `finally` — and with it the mirror
1144
- // detach, which lives in the `try` — never runs. The tree was left on
1145
- // disk holding the only copy of the work-in-progress as uncommitted
1146
- // files, and the lease sweep's later rescue landed on `tasks/<id8>`,
1147
- // a ref no re-run checks out. So do it now, onto the branch the run was
1148
- // delivering on. Never throws; a stop must not fail on cleanup.
1149
- void (async () => {
1150
- try {
1151
- const saved = await (0, stop_save_1.saveStoppedRun)(lock?.kind === 'task' ? lock.taskId : event.taskId, agent.agentId, api, (m) => (0, daemon_support_1.log)(`agent ${agent.agentId}: ${m}`),
1152
- // Our own kill can leave the pid briefly alive; we are the ones who
1153
- // stopped it, so do not treat it as another owner.
1154
- { skipPids: [lock?.pid ?? -1] });
1155
- const body = (0, stop_save_1.stopSaveComment)(String(lock?.taskId ?? event.taskId ?? ''), saved);
1156
- if (body && api && (lock?.kind === 'task' || event.taskId)) {
1157
- // NO MORE `.catch(() => undefined)` (2026-10).
1158
- //
1159
- // The old line silenced the failure, which is why eight identical
1160
- // `[work stopped]` comments went unnoticed: every post timed out
1161
- // (ETIMEDOUT), nothing recorded that it had tried, and each replayed
1162
- // `session.stop` wake posted again. A notification that fails to
1163
- // reach the human is a real fault, so it is now reported through
1164
- // `postBridgeNotice` (server-side `clientRequestId` dedupe) and, if
1165
- // it still fails, escalated to a diagnostic instead of vanishing.
1166
- const outcome = await (0, bridge_notice_1.postBridgeNotice)({
1167
- api,
1168
- noticeKey: saved.noticeKey ?? (0, bridge_notice_1.oneShotKey)('work-stopped', agent.agentId, String(lock?.taskId ?? event.taskId ?? '')),
1169
- scope: { taskId: String(lock?.taskId ?? event.taskId) },
1170
- body,
1171
- log: (m) => (0, daemon_support_1.log)(`agent ${agent.agentId}: ${m}`),
1172
- });
1173
- if (outcome === 'failed') {
1174
- (0, diagnostics_1.reportDiagnosticSafe)({
1175
- kind: 'wake_failure',
1176
- severity: 'warning',
1177
- agentId: agent.agentId,
1178
- errorCode: 'STOP_NOTICE_UNDELIVERED',
1179
- message: `the [work stopped] notice for task ${lock?.taskId ?? event.taskId ?? '(none)'} ` +
1180
- `could not be delivered - the human does not know where their work went`,
1181
- includeDoctor: false,
1182
- });
1183
- }
1184
- }
1185
- }
1186
- catch (err) {
1187
- (0, daemon_support_1.log)(`agent ${agent.agentId}: stop save failed: ${(0, config_1.msg)(err)}`);
1188
- }
1189
- })();
1190
- // Stash restore on stop (IMP-9xx): the CLI's finally block may not
1191
- // run when the process is force-killed. Pop the task's
1192
- // `teamshare:<taskId>` stash from the daemon so the user's changes
1193
- // are restored. Best-effort — logged warnings, never throws.
1194
- if (event.taskId) {
1195
- const taskIdForStop = event.taskId;
1196
- void (async () => {
1197
- const stopProjectId = event.projectId;
1198
- let stopCwd;
1199
- if (stopProjectId) {
1200
- stopCwd = (0, config_1.resolveRepoPath)(stopProjectId) ?? (0, config_1.projectCwd)(stopProjectId) ?? undefined;
1201
- if (!stopCwd) {
1202
- const s0 = settingsByAgent.get(agent.agentId);
1203
- try {
1204
- const proj = await api.getProject(stopProjectId);
1205
- const folderLinks = await api.getLinkedFolders(stopProjectId);
1206
- const uid = s0?.userId;
1207
- const match = uid && folderLinks.items?.length ? folderLinks.items.find((fl) => fl.userId === uid) : null;
1208
- stopCwd = match?.path
1209
- ?? (0, config_1.serverFolderCwd)(proj.folderPath ?? null, s0?.folderPath ?? null)
1210
- ?? undefined;
1211
- }
1212
- catch { /* fall through */ }
1213
- }
1214
- }
1215
- if (stopCwd) {
1216
- // Only the LINKED FOLDER holds a stash this run created: an
1217
- // isolated run (mirror/worktree) never stashes, because
1218
- // `refs/stash` is shared with the main repo — so its "restore"
1219
- // here could only ever find some OTHER run's entry (the list is
1220
- // tag-matched to this task, but the tree it would pop into is not
1221
- // the one the session was working in). Skip it, and say so,
1222
- // rather than log a restore that never happened.
1223
- if ((0, mirror_1.isIsolatedTree)(stopCwd)) {
1224
- (0, daemon_support_1.log)(`agent ${agent.agentId}: session.stop - ${stopCwd} is an isolated tree, ` +
1225
- `so there is no linked-folder stash to restore`);
1226
- }
1227
- else {
1228
- const gitRoots = (0, git_pipeline_1.resolveRunRepos)(stopCwd);
1229
- for (const root of gitRoots) {
1230
- const stashes = (0, git_runner_1.listStashes)(root, stopCwd, taskIdForStop);
1231
- const target = stashes.find((s) => s.taskId === taskIdForStop);
1232
- if (target) {
1233
- (0, git_runner_1.popStashByRef)(root, target.stashIndex, (m) => (0, daemon_support_1.log)(`agent ${agent.agentId}: ${m}`));
1234
- }
1235
- }
1236
- }
1237
- }
1238
- })().catch((err) => {
1239
- (0, daemon_support_1.log)(`agent ${agent.agentId}: session.stop stash restore failed: ${(0, config_1.msg)(err)}`);
1240
- });
1241
- }
1242
- // Immediately update agent status to online — don't wait for the
1243
- // next heartbeat interval. The killed session's finally block may
1244
- // not run (force-kill), so we do it here. Use force=true to bypass
1245
- // the status race guard (prevStatus=working blocks online downgrades).
1246
- api.heartbeat(agent.agentId, 'online', undefined, undefined, true).catch(() => { });
1247
- pushState();
1307
+ void stopAgentSession(agent, api, {
1308
+ sessionRelay,
1309
+ settingsByAgent,
1310
+ pushState,
1311
+ taskId: event.taskId,
1312
+ projectId: event.projectId,
1313
+ reason: 'session.stop wake',
1314
+ });
1248
1315
  return;
1249
1316
  }
1250
1317
  void (async () => {