patchwork-os 1.2.0-beta.2.canary.611 → 1.2.0-beta.2.canary.613

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/dist/lockfile.js CHANGED
@@ -2,6 +2,20 @@ import crypto from "node:crypto";
2
2
  import fs from "node:fs";
3
3
  import os from "node:os";
4
4
  import path from "node:path";
5
+ /** Parse a lock file, or null when it is missing, a symlink, or not JSON. */
6
+ function readLockContent(lockPath) {
7
+ try {
8
+ // lstat, not stat: a symlink here is not a lock we should reason about —
9
+ // it is something to remove, which the existing O_EXCL/O_NOFOLLOW path
10
+ // already handles.
11
+ if (fs.lstatSync(lockPath).isSymbolicLink())
12
+ return null;
13
+ return JSON.parse(fs.readFileSync(lockPath, "utf-8"));
14
+ }
15
+ catch {
16
+ return null;
17
+ }
18
+ }
5
19
  export class LockFileManager {
6
20
  logger;
7
21
  lockFilePath = null;
@@ -51,6 +65,19 @@ export class LockFileManager {
51
65
  }
52
66
  catch (err) {
53
67
  if (err.code === "EEXIST") {
68
+ // RECLAIMING HERE IS CORRECT, and a liveness check would be a
69
+ // regression. `write()` runs only AFTER `findAndListen()` has bound the
70
+ // port (bridge.ts step 5 precedes step 7), so we demonstrably own the
71
+ // port this lock names — whatever wrote it is not serving it, whether
72
+ // or not its pid is still alive.
73
+ //
74
+ // An earlier version of this fix refused when the recorded pid was
75
+ // alive. That protects nothing (binding already proved ownership) and
76
+ // breaks a real case: pids are recycled, so a stale lock naming a pid
77
+ // some unrelated process now holds would stop the bridge starting
78
+ // altogether. The ownership problem this file had is in `delete()`,
79
+ // where a departing process could remove its SUCCESSOR's lock — and
80
+ // that is guarded by nonce, not by liveness.
54
81
  // Force-remove whatever is at lockPath (regular file or stale symlink).
55
82
  // We do NOT lstat+check first — that introduces a TOCTOU race.
56
83
  // After rmSync, O_EXCL ensures we fail if a new file/symlink appears in the
@@ -85,14 +112,26 @@ export class LockFileManager {
85
112
  if (this.cleanedUp)
86
113
  return;
87
114
  this.cleanedUp = true;
88
- if (this.lockFilePath) {
89
- try {
90
- fs.unlinkSync(this.lockFilePath);
91
- this.logger.debug(`Lock file removed: ${this.lockFilePath}`);
92
- }
93
- catch {
94
- // best-effort
115
+ if (!this.lockFilePath)
116
+ return;
117
+ try {
118
+ // Only remove the lock if it is STILL OURS. A process shutting down
119
+ // after a successor has claimed the same path would otherwise delete the
120
+ // successor's lock, leaving a healthy bridge that no client can find.
121
+ // The nonce exists for exactly this check and `cleanStale()` already
122
+ // uses it; this path did not.
123
+ const content = readLockContent(this.lockFilePath);
124
+ if (content &&
125
+ this.ownNonce !== null &&
126
+ content.nonce !== this.ownNonce) {
127
+ this.logger.debug(`Lock file ${this.lockFilePath} now belongs to another process — leaving it`);
128
+ return;
95
129
  }
130
+ fs.unlinkSync(this.lockFilePath);
131
+ this.logger.debug(`Lock file removed: ${this.lockFilePath}`);
132
+ }
133
+ catch {
134
+ // best-effort
96
135
  }
97
136
  }
98
137
  /** Remove stale lock files from dead processes */
@@ -1 +1 @@
1
- {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../src/lockfile.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,MAAM,OAAO,eAAe;IAMN;IALZ,YAAY,GAAkB,IAAI,CAAC;IACnC,SAAS,GAAG,KAAK,CAAC;IAC1B,6FAA6F;IACrF,QAAQ,GAAkB,IAAI,CAAC;IAEvC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE9B,UAAU;QAChB,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,wEAAwE;QACxE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CACH,IAAY,EACZ,SAAiB,EACjB,gBAA0B,EAC1B,OAAe,EACf,IAAiC;QAEjC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK;YACL,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI;YACtC,gBAAgB;YAChB,OAAO;YACP,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,KAAK;YACzC,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC9C,SAAS;SACV,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAErC,gFAAgF;QAChF,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CACpB,QAAQ,EACR,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAClE,KAAK,CACN,CAAC;YACF,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACzB,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YACD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,wEAAwE;gBACxE,+DAA+D;gBAC/D,4EAA4E;gBAC5E,wEAAwE;gBACxE,qEAAqE;gBACrE,4EAA4E;gBAC5E,uEAAuE;gBACvE,sEAAsE;gBACtE,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;gBAChD,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CACpB,QAAQ,EACR,EAAE,CAAC,SAAS,CAAC,QAAQ;oBACnB,EAAE,CAAC,SAAS,CAAC,OAAO;oBACpB,EAAE,CAAC,SAAS,CAAC,MAAM;oBACnB,UAAU,EACZ,KAAK,CACN,CAAC;gBACF,IAAI,CAAC;oBACH,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACzB,CAAC;wBAAS,CAAC;oBACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;gBACD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;YAC/D,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc;YAChB,CAAC;QACH,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,UAAU;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC;oBACH,qEAAqE;oBACrE,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACpC,qEAAqE;oBACrE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;wBAC1D,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACxB,SAAS;oBACX,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;wBACrB,wDAAwD;wBACxD,8DAA8D;wBAC9D,gEAAgE;wBAChE,iEAAiE;wBACjE,mEAAmE;wBACnE,IAAI,IAAI,GAAG,KAAK,CAAC;wBACjB,IAAI,CAAC;4BACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;4BAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BAChC,IACE,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;gCAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;gCAC7B,OAAO,CAAC,GAAG,GAAG,CAAC,EACf,CAAC;gCACD,IAAI,CAAC;oCACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oCAC7B,IAAI,GAAG,IAAI,CAAC;gCACd,CAAC;gCAAC,OAAO,OAAO,EAAE,CAAC;oCACjB,4DAA4D;oCAC5D,4DAA4D;oCAC5D,wDAAwD;oCACxD,IAAI,GAAI,OAAiC,CAAC,IAAI,KAAK,OAAO,CAAC;gCAC7D,CAAC;4BACH,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC;4BACP,4DAA4D;wBAC9D,CAAC;wBACD,IAAI,IAAI,EAAE,CAAC;4BACT,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,2CAA2C,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,CACvE,CAAC;4BACF,SAAS;wBACX,CAAC;wBACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,iCAAiC,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,CAC7D,CAAC;wBACF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACxB,SAAS;oBACX,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC/D,IACE,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;wBAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;wBAC7B,OAAO,CAAC,GAAG,GAAG,CAAC,EACf,CAAC;wBACD,IAAI,CAAC;4BACH,+DAA+D;4BAC/D,8DAA8D;4BAC9D,yDAAyD;4BACzD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BAC7B,qBAAqB;4BACrB,qEAAqE;4BACrE,kEAAkE;4BAClE,iEAAiE;4BACjE,4DAA4D;4BAC5D,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;gCAChC,8DAA8D;gCAC9D,IACE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;oCACjC,IAAI,CAAC,QAAQ,KAAK,IAAI;oCACtB,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAC/B,CAAC;oCACD,6DAA6D;oCAC7D,oCAAoC;oCACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,IAAI,aAAa,OAAO,CAAC,GAAG,2DAA2D,CACrH,CAAC;oCACF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gCAC1B,CAAC;qCAAM,IACL,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;oCACjC,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EACrC,CAAC;oCACD,4DAA4D;oCAC5D,mDAAmD;oCACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;oCACjD,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;wCACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,IAAI,aAAa,OAAO,CAAC,GAAG,sBAAsB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,sCAAsC,CACvJ,CAAC;wCACF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oCAC1B,CAAC;gCACH,CAAC;gCACD,wDAAwD;4BAC1D,CAAC;4BACD,2DAA2D;4BAC3D,4CAA4C;wBAC9C,CAAC;wBAAC,OAAO,OAAO,EAAE,CAAC;4BACjB,2DAA2D;4BAC3D,yDAAyD;4BACzD,yDAAyD;4BACzD,0DAA0D;4BAC1D,qDAAqD;4BACrD,uCAAuC;4BACvC,+CAA+C;4BAC/C,wDAAwD;4BACxD,uDAAuD;4BACvD,yDAAyD;4BACzD,wDAAwD;4BACxD,gDAAgD;4BAChD,MAAM,IAAI,GAAI,OAAiC,CAAC,IAAI,CAAC;4BACrD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gCACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,IAAI,SAAS,OAAO,CAAC,GAAG,eAAe,CACrE,CAAC;gCACF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;4BAC1B,CAAC;iCAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gCAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qBAAqB,IAAI,UAAU,OAAO,CAAC,GAAG,0EAA0E,CACzH,CAAC;4BACJ,CAAC;iCAAM,CAAC;gCACN,wDAAwD;gCACxD,yDAAyD;gCACzD,sCAAsC;gCACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qBAAqB,IAAI,mBAAmB,OAAO,CAAC,GAAG,oBAAoB,IAAI,IAAI,SAAS,KAAK,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAChK,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,gCAAgC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrF,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
1
+ {"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../src/lockfile.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,6EAA6E;AAC7E,SAAS,eAAe,CACtB,QAAgB;IAEhB,IAAI,CAAC;QACH,yEAAyE;QACzE,uEAAuE;QACvE,mBAAmB;QACnB,IAAI,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,cAAc,EAAE;YAAE,OAAO,IAAI,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,OAAO,eAAe;IAMN;IALZ,YAAY,GAAkB,IAAI,CAAC;IACnC,SAAS,GAAG,KAAK,CAAC;IAC1B,6FAA6F;IACrF,QAAQ,GAAkB,IAAI,CAAC;IAEvC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE9B,UAAU;QAChB,MAAM,SAAS,GACb,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;QACtE,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,wEAAwE;QACxE,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,KAAK,CACH,IAAY,EACZ,SAAiB,EACjB,gBAA0B,EAC1B,OAAe,EACf,IAAiC;QAEjC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,MAAM,OAAO,GAAG;YACd,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,KAAK;YACL,SAAS,EAAE,gBAAgB,CAAC,CAAC,CAAC,IAAI,IAAI;YACtC,gBAAgB;YAChB,OAAO;YACP,QAAQ,EAAE,IAAI;YACd,YAAY,EAAE,IAAI,EAAE,YAAY,IAAI,KAAK;YACzC,SAAS,EAAE,IAAI;YACf,gBAAgB,EAAE,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC9C,SAAS;SACV,CAAC;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAErC,gFAAgF;QAChF,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CACpB,QAAQ,EACR,EAAE,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,EAClE,KAAK,CACN,CAAC;YACF,IAAI,CAAC;gBACH,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;YACzB,CAAC;oBAAS,CAAC;gBACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC;YACD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAK,GAA6B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACrD,8DAA8D;gBAC9D,wEAAwE;gBACxE,sEAAsE;gBACtE,sEAAsE;gBACtE,iCAAiC;gBACjC,EAAE;gBACF,mEAAmE;gBACnE,sEAAsE;gBACtE,sEAAsE;gBACtE,kEAAkE;gBAClE,oEAAoE;gBACpE,oEAAoE;gBACpE,6CAA6C;gBAC7C,wEAAwE;gBACxE,+DAA+D;gBAC/D,4EAA4E;gBAC5E,wEAAwE;gBACxE,qEAAqE;gBACrE,4EAA4E;gBAC5E,uEAAuE;gBACvE,sEAAsE;gBACtE,MAAM,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,IAAI,CAAC,CAAC;gBAChD,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACrC,MAAM,EAAE,GAAG,EAAE,CAAC,QAAQ,CACpB,QAAQ,EACR,EAAE,CAAC,SAAS,CAAC,QAAQ;oBACnB,EAAE,CAAC,SAAS,CAAC,OAAO;oBACpB,EAAE,CAAC,SAAS,CAAC,MAAM;oBACnB,UAAU,EACZ,KAAK,CACN,CAAC;gBACF,IAAI,CAAC;oBACH,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACzB,CAAC;wBAAS,CAAC;oBACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;gBACnB,CAAC;gBACD,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,CAAC;YACZ,CAAC;QACH,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;QACpD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,SAAS;YAAE,OAAO;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO;QAC/B,IAAI,CAAC;YACH,oEAAoE;YACpE,yEAAyE;YACzE,sEAAsE;YACtE,qEAAqE;YACrE,8BAA8B;YAC9B,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnD,IACE,OAAO;gBACP,IAAI,CAAC,QAAQ,KAAK,IAAI;gBACtB,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAC/B,CAAC;gBACD,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,aAAa,IAAI,CAAC,YAAY,8CAA8C,CAC7E,CAAC;gBACF,OAAO;YACT,CAAC;YACD,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC/D,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,UAAU;QACR,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;oBAAE,SAAS;gBACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBACtC,IAAI,CAAC;oBACH,qEAAqE;oBACrE,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACpC,qEAAqE;oBACrE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC;wBAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;wBAC1D,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACxB,SAAS;oBACX,CAAC;oBACD,IAAI,IAAI,CAAC,IAAI,GAAG,IAAI,EAAE,CAAC;wBACrB,wDAAwD;wBACxD,8DAA8D;wBAC9D,gEAAgE;wBAChE,iEAAiE;wBACjE,mEAAmE;wBACnE,IAAI,IAAI,GAAG,KAAK,CAAC;wBACjB,IAAI,CAAC;4BACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;4BAC/C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;4BAChC,IACE,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;gCAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;gCAC7B,OAAO,CAAC,GAAG,GAAG,CAAC,EACf,CAAC;gCACD,IAAI,CAAC;oCACH,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oCAC7B,IAAI,GAAG,IAAI,CAAC;gCACd,CAAC;gCAAC,OAAO,OAAO,EAAE,CAAC;oCACjB,4DAA4D;oCAC5D,4DAA4D;oCAC5D,wDAAwD;oCACxD,IAAI,GAAI,OAAiC,CAAC,IAAI,KAAK,OAAO,CAAC;gCAC7D,CAAC;4BACH,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC;4BACP,4DAA4D;wBAC9D,CAAC;wBACD,IAAI,IAAI,EAAE,CAAC;4BACT,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,2CAA2C,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,CACvE,CAAC;4BACF,SAAS;wBACX,CAAC;wBACD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,iCAAiC,IAAI,KAAK,IAAI,CAAC,IAAI,SAAS,CAC7D,CAAC;wBACF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;wBACxB,SAAS;oBACX,CAAC;oBACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC/D,IACE,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;wBAC/B,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC;wBAC7B,OAAO,CAAC,GAAG,GAAG,CAAC,EACf,CAAC;wBACD,IAAI,CAAC;4BACH,+DAA+D;4BAC/D,8DAA8D;4BAC9D,yDAAyD;4BACzD,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BAC7B,qBAAqB;4BACrB,qEAAqE;4BACrE,kEAAkE;4BAClE,iEAAiE;4BACjE,4DAA4D;4BAC5D,IAAI,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;gCAChC,8DAA8D;gCAC9D,IACE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;oCACjC,IAAI,CAAC,QAAQ,KAAK,IAAI;oCACtB,OAAO,CAAC,KAAK,KAAK,IAAI,CAAC,QAAQ,EAC/B,CAAC;oCACD,6DAA6D;oCAC7D,oCAAoC;oCACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,IAAI,aAAa,OAAO,CAAC,GAAG,2DAA2D,CACrH,CAAC;oCACF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;gCAC1B,CAAC;qCAAM,IACL,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;oCACjC,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,EACrC,CAAC;oCACD,4DAA4D;oCAC5D,mDAAmD;oCACnD,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC;oCACjD,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC;wCACpC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,IAAI,aAAa,OAAO,CAAC,GAAG,sBAAsB,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC,sCAAsC,CACvJ,CAAC;wCACF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oCAC1B,CAAC;gCACH,CAAC;gCACD,wDAAwD;4BAC1D,CAAC;4BACD,2DAA2D;4BAC3D,4CAA4C;wBAC9C,CAAC;wBAAC,OAAO,OAAO,EAAE,CAAC;4BACjB,2DAA2D;4BAC3D,yDAAyD;4BACzD,yDAAyD;4BACzD,0DAA0D;4BAC1D,qDAAqD;4BACrD,uCAAuC;4BACvC,+CAA+C;4BAC/C,wDAAwD;4BACxD,uDAAuD;4BACvD,yDAAyD;4BACzD,wDAAwD;4BACxD,gDAAgD;4BAChD,MAAM,IAAI,GAAI,OAAiC,CAAC,IAAI,CAAC;4BACrD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gCACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,6BAA6B,IAAI,SAAS,OAAO,CAAC,GAAG,eAAe,CACrE,CAAC;gCACF,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;4BAC1B,CAAC;iCAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gCAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qBAAqB,IAAI,UAAU,OAAO,CAAC,GAAG,0EAA0E,CACzH,CAAC;4BACJ,CAAC;iCAAM,CAAC;gCACN,wDAAwD;gCACxD,yDAAyD;gCACzD,sCAAsC;gCACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qBAAqB,IAAI,mBAAmB,OAAO,CAAC,GAAG,oBAAoB,IAAI,IAAI,SAAS,KAAK,OAAO,YAAY,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAChK,CAAC;4BACJ,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,gCAAgC,IAAI,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,kCAAkC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACrF,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
@@ -1,4 +1,4 @@
1
- import { existsSync, mkdirSync, readFileSync } from "node:fs";
1
+ import { existsSync, mkdirSync, readFileSync, statSync } from "node:fs";
2
2
  import { dirname } from "node:path";
3
3
  import { deleteSecretJsonSync, getSecretJsonSync, storeSecretJsonSync, } from "./connectors/tokenStorage.js";
4
4
  import { patchworkPath, warnIfLegacyConfigStranded } from "./patchworkHome.js";
@@ -94,6 +94,28 @@ export function getApiKeysPresent() {
94
94
  // cuts the per-webhook 9+ kernel-call burst to ~1 per 30 s at steady state.
95
95
  const _configCache = new Map();
96
96
  const _CONFIG_TTL_MS = 30_000;
97
+ /**
98
+ * Identity of the file backing a cache entry.
99
+ *
100
+ * The TTL alone was not enough: a cached entry stayed authoritative for 30s
101
+ * regardless of what happened to the file, so an operator's hand edit was
102
+ * invisible to the next read — and every runtime write is a read-modify-write
103
+ * built on that read, so the edit was then written straight over. Silently
104
+ * (#1361).
105
+ *
106
+ * `-1` for a missing file is a real value, not a sentinel for "unknown": it
107
+ * distinguishes "no config on disk" from any real stat, so creating or
108
+ * deleting the file both count as a change.
109
+ */
110
+ function fileStamp(path) {
111
+ try {
112
+ const st = statSync(path);
113
+ return { mtimeMs: st.mtimeMs, size: st.size };
114
+ }
115
+ catch {
116
+ return { mtimeMs: -1, size: -1 };
117
+ }
118
+ }
97
119
  /** Clear the loadConfig cache. Exposed for tests and after saveConfig. */
98
120
  export function clearConfigCache() {
99
121
  _configCache.clear();
@@ -113,15 +135,27 @@ export function loadConfig(path = defaultConfigPath()) {
113
135
  // Say so when an override is active but the real config was left behind.
114
136
  warnIfLegacyConfigStranded("config.json");
115
137
  const now = Date.now();
138
+ const stamp = fileStamp(path);
116
139
  const cached = _configCache.get(path);
117
- if (cached && now < cached.expires)
140
+ // Serve from cache only when the file is BOTH un-expired and unchanged.
141
+ // Size as well as mtime, because a filesystem whose timestamps are coarse
142
+ // can give an edit the same mtime as the write before it.
143
+ if (cached &&
144
+ now < cached.expires &&
145
+ cached.mtimeMs === stamp.mtimeMs &&
146
+ cached.size === stamp.size) {
118
147
  return cached.result;
148
+ }
119
149
  if (!existsSync(path)) {
120
150
  const fromStore = loadApiKeysFromSecureStore();
121
151
  const result = withHomeDefaults(Object.keys(fromStore).length > 0
122
152
  ? { ...DEFAULTS, apiKeys: fromStore }
123
153
  : { ...DEFAULTS });
124
- _configCache.set(path, { result, expires: now + _CONFIG_TTL_MS });
154
+ _configCache.set(path, {
155
+ result,
156
+ expires: now + _CONFIG_TTL_MS,
157
+ ...stamp,
158
+ });
125
159
  return result;
126
160
  }
127
161
  const raw = readFileSync(path, "utf8");
@@ -174,7 +208,11 @@ export function loadConfig(path = defaultConfigPath()) {
174
208
  // Don't cache migrated configs — the file has just been rewritten; next load
175
209
  // should see the stripped version. This path is once-per-key, not hot.
176
210
  if (!migrated)
177
- _configCache.set(path, { result, expires: now + _CONFIG_TTL_MS });
211
+ _configCache.set(path, {
212
+ result,
213
+ expires: now + _CONFIG_TTL_MS,
214
+ ...stamp,
215
+ });
178
216
  return result;
179
217
  }
180
218
  export function saveConfig(config, path = defaultConfigPath()) {
@@ -1 +1 @@
1
- {"version":3,"file":"patchworkConfig.js","sourceRoot":"","sources":["../src/patchworkConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"patchworkConfig.js","sourceRoot":"","sources":["../src/patchworkConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAC/E,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAE3D;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG;IACrB,YAAY;IACZ,KAAK;IACL,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,YAAY;IACZ,OAAO;IACP,MAAM;CACE,CAAC;AAiGX,MAAM,QAAQ,GAAoB;IAChC,KAAK,EAAE,QAAQ;IACf,SAAS,EAAE;QACT,IAAI,EAAE,IAAI;QACV,eAAe,EAAE,CAAC,MAAM,CAAC;QACzB,iBAAiB,EAAE,KAAK;KACzB;IACD,0EAA0E;IAC1E,2EAA2E;IAC3E,yEAAyE;IACzE,+BAA+B;IAC/B,4EAA4E;IAC5E,4EAA4E;IAC5E,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,EAAE,YAAY;CACrB,CAAC;AAEF,MAAM,UAAU,iBAAiB;IAC/B,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;AACtC,CAAC;AAGD,MAAM,iBAAiB,GAAqB;IAC1C,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,KAAK;CACN,CAAC;AAEF,SAAS,YAAY,CAAC,QAAwB;IAC5C,OAAO,UAAU,QAAQ,EAAE,CAAC;AAC9B,CAAC;AAMD;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAwB,EACxB,GAAW;IAEX,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,oBAAoB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,mBAAmB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAyB,CAAC,CAAC;IAC9E,CAAC;IACD,2EAA2E;IAC3E,sBAAsB;IACtB,gBAAgB,EAAE,CAAC;AACrB,CAAC;AAED,SAAS,0BAA0B;IACjC,MAAM,GAAG,GAA4C,EAAE,CAAC;IACxD,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,iBAAiB,CAAe,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,IAAI,MAAM,EAAE,GAAG;YAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;IAC9C,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB;IAC/B,MAAM,GAAG,GAAoC;QAC3C,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,GAAG,EAAE,KAAK;KACX,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,iBAAiB,CAAe,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC;QACvE,GAAG,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,+EAA+E;AAC/E,gFAAgF;AAChF,4EAA4E;AAC5E,MAAM,YAAY,GAAG,IAAI,GAAG,EAGzB,CAAC;AACJ,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B;;;;;;;;;;;;GAYG;AACH,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1B,OAAO,EAAE,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB;IAC9B,YAAY,CAAC,KAAK,EAAE,CAAC;AACvB,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,GAAoB;IAC5C,OAAO,GAAG,CAAC,UAAU;QACnB,CAAC,CAAC,GAAG;QACL,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,aAAa,CAAC,SAAS,CAAC,EAAE,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAI,GAAG,iBAAiB,EAAE;IACnD,yEAAyE;IACzE,0BAA0B,CAAC,aAAa,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACtC,wEAAwE;IACxE,0EAA0E;IAC1E,0DAA0D;IAC1D,IACE,MAAM;QACN,GAAG,GAAG,MAAM,CAAC,OAAO;QACpB,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAChC,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAC1B,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;IACvB,CAAC;IACD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACtB,MAAM,SAAS,GAAG,0BAA0B,EAAE,CAAC;QAC/C,MAAM,MAAM,GAAoB,gBAAgB,CAC9C,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC;YAC/B,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE;YACrC,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,CACpB,CAAC;QACF,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;YACrB,MAAM;YACN,OAAO,EAAE,GAAG,GAAG,cAAc;YAC7B,GAAG,KAAK;SACT,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA6B,CAAC;IAE3D,uEAAuE;IACvE,yEAAyE;IACzE,qEAAqE;IACrE,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;YACzC,MAAM,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACnC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,mBAAmB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE;wBAC1C,GAAG,EAAE,CAAC;qBACgB,CAAC,CAAC;oBAC1B,QAAQ,GAAG,IAAI,CAAC;gBAClB,CAAC;gBAAC,MAAM,CAAC;oBACP,kEAAkE;oBAClE,gEAAgE;gBAClE,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,QAAQ,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;YAC/B,OAAQ,QAAqC,CAAC,OAAO,CAAC;YACtD,IAAI,CAAC;gBACH,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;oBAC3D,IAAI,EAAE,KAAK;iBACZ,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,gEAAgE;gBAChE,mEAAmE;YACrE,CAAC;QACH,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,oEAAoE;IACpE,MAAM,SAAS,GAAG,0BAA0B,EAAE,CAAC;IAC/C,MAAM,OAAO,GACX,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO;QACjD,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,SAAS,EAAE;QACrC,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,MAAM,GAAoB,gBAAgB,CAAC;QAC/C,GAAG,QAAQ;QACX,GAAG,MAAM;QACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChC,CAAC,CAAC;IACH,6EAA6E;IAC7E,uEAAuE;IACvE,IAAI,CAAC,QAAQ;QACX,YAAY,CAAC,GAAG,CAAC,IAAI,EAAE;YACrB,MAAM;YACN,OAAO,EAAE,GAAG,GAAG,cAAc;YAC7B,GAAG,KAAK;SACT,CAAC,CAAC;IACL,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,MAAuB,EACvB,IAAI,GAAG,iBAAiB,EAAE;IAE1B,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,wDAAwD;IACnF,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9C,2EAA2E;IAC3E,4EAA4E;IAC5E,iDAAiD;IACjD,MAAM,QAAQ,GAAoB,EAAE,GAAG,MAAM,EAAE,CAAC;IAChD,OAAO,QAAQ,CAAC,OAAO,CAAC;IACxB,mBAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE;QAC3D,IAAI,EAAE,KAAK;KACZ,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACzE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "patchwork-os",
3
- "version": "1.2.0-beta.2.canary.611",
3
+ "version": "1.2.0-beta.2.canary.613",
4
4
  "description": "Your personal AI runtime, local-first. Patchwork OS gives any AI model a consistent set of tools, YAML recipes, a delegation policy with approval queue, and a durable trace memory — all on your machine, all under your policy.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",