@claudexor/daemon 3.3.16 → 3.4.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.
Files changed (91) hide show
  1. package/dist/command-store.d.ts +3 -0
  2. package/dist/command-store.d.ts.map +1 -1
  3. package/dist/command-store.js +4 -0
  4. package/dist/command-store.js.map +1 -1
  5. package/dist/daemon-listen.d.ts +10 -0
  6. package/dist/daemon-listen.d.ts.map +1 -0
  7. package/dist/daemon-listen.js +36 -0
  8. package/dist/daemon-listen.js.map +1 -0
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/interactions.d.ts +3 -0
  14. package/dist/interactions.d.ts.map +1 -1
  15. package/dist/interactions.js +4 -0
  16. package/dist/interactions.js.map +1 -1
  17. package/dist/journal-manager-lifecycle.d.ts +8 -0
  18. package/dist/journal-manager-lifecycle.d.ts.map +1 -0
  19. package/dist/journal-manager-lifecycle.js +2 -0
  20. package/dist/journal-manager-lifecycle.js.map +1 -0
  21. package/dist/journal-manager.d.ts +21 -11
  22. package/dist/journal-manager.d.ts.map +1 -1
  23. package/dist/journal-manager.js +234 -198
  24. package/dist/journal-manager.js.map +1 -1
  25. package/dist/journal-prepared-operation.d.ts +53 -0
  26. package/dist/journal-prepared-operation.d.ts.map +1 -0
  27. package/dist/journal-prepared-operation.js +158 -0
  28. package/dist/journal-prepared-operation.js.map +1 -0
  29. package/dist/journal-projection-slot.d.ts +28 -0
  30. package/dist/journal-projection-slot.d.ts.map +1 -0
  31. package/dist/journal-projection-slot.js +71 -0
  32. package/dist/journal-projection-slot.js.map +1 -0
  33. package/dist/journal-projection.d.ts +2 -0
  34. package/dist/journal-projection.d.ts.map +1 -1
  35. package/dist/journal-recovery-files.d.ts +19 -1
  36. package/dist/journal-recovery-files.d.ts.map +1 -1
  37. package/dist/journal-recovery-files.js +271 -26
  38. package/dist/journal-recovery-files.js.map +1 -1
  39. package/dist/journal-recovery-operation.d.ts +27 -0
  40. package/dist/journal-recovery-operation.d.ts.map +1 -0
  41. package/dist/journal-recovery-operation.js +68 -0
  42. package/dist/journal-recovery-operation.js.map +1 -0
  43. package/dist/project-partition-preparation.d.ts +75 -0
  44. package/dist/project-partition-preparation.d.ts.map +1 -0
  45. package/dist/project-partition-preparation.js +233 -0
  46. package/dist/project-partition-preparation.js.map +1 -0
  47. package/dist/project-partitions.d.ts +18 -16
  48. package/dist/project-partitions.d.ts.map +1 -1
  49. package/dist/project-partitions.js +98 -99
  50. package/dist/project-partitions.js.map +1 -1
  51. package/dist/project-thread-listing.d.ts +14 -0
  52. package/dist/project-thread-listing.d.ts.map +1 -0
  53. package/dist/project-thread-listing.js +37 -0
  54. package/dist/project-thread-listing.js.map +1 -0
  55. package/dist/quota-projection.d.ts +9 -0
  56. package/dist/quota-projection.d.ts.map +1 -0
  57. package/dist/quota-projection.js +10 -0
  58. package/dist/quota-projection.js.map +1 -0
  59. package/dist/quota-registry.d.ts +3 -5
  60. package/dist/quota-registry.d.ts.map +1 -1
  61. package/dist/quota-registry.js +9 -10
  62. package/dist/quota-registry.js.map +1 -1
  63. package/dist/root-authority.d.ts +68 -0
  64. package/dist/root-authority.d.ts.map +1 -0
  65. package/dist/root-authority.js +380 -0
  66. package/dist/root-authority.js.map +1 -0
  67. package/dist/rpc-followers.d.ts +17 -0
  68. package/dist/rpc-followers.d.ts.map +1 -0
  69. package/dist/rpc-followers.js +46 -0
  70. package/dist/rpc-followers.js.map +1 -0
  71. package/dist/server.d.ts +4 -1
  72. package/dist/server.d.ts.map +1 -1
  73. package/dist/server.js +42 -62
  74. package/dist/server.js.map +1 -1
  75. package/dist/serving-admission.d.ts +21 -0
  76. package/dist/serving-admission.d.ts.map +1 -0
  77. package/dist/serving-admission.js +17 -0
  78. package/dist/serving-admission.js.map +1 -0
  79. package/dist/terminate.d.ts +18 -7
  80. package/dist/terminate.d.ts.map +1 -1
  81. package/dist/terminate.js +213 -69
  82. package/dist/terminate.js.map +1 -1
  83. package/dist/token.d.ts +6 -0
  84. package/dist/token.d.ts.map +1 -1
  85. package/dist/token.js +8 -0
  86. package/dist/token.js.map +1 -1
  87. package/dist/writer-lease.d.ts +76 -4
  88. package/dist/writer-lease.d.ts.map +1 -1
  89. package/dist/writer-lease.js +346 -56
  90. package/dist/writer-lease.js.map +1 -1
  91. package/package.json +5 -5
@@ -1,61 +1,372 @@
1
- import { randomUUID } from "node:crypto";
2
- import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "node:fs";
1
+ import { createHash, randomUUID } from "node:crypto";
2
+ import { lstatSync, mkdirSync, readFileSync, renameSync, rmSync, writeFileSync, } from "node:fs";
3
3
  import { join } from "node:path";
4
- import { defaultProcessIdentityService, isKnownProcessIdentity, } from "@claudexor/core";
4
+ import { compareProcessIdentity, defaultProcessIdentityService, defaultProcessObservationReader, isKnownProcessIdentity, observeProcess, } from "@claudexor/core";
5
5
  import { daemonDir, isWindowsPipePath } from "./token.js";
6
+ /** Marker file whose presence turns a lease directory into the permanent
7
+ * root-authority barrier (issue #165 D1). The barrier directory deliberately
8
+ * carries NO top-level owner.json: a pre-fix claimant's lease parse fails
9
+ * closed on it forever, so it can never quarantine the barrier and take over
10
+ * a data root last served by a fixed runtime. */
11
+ export const ROOT_AUTHORITY_MARKER_FILE = "root-authority-v2.json";
12
+ /** Nested slot the fixed daemon's ACTIVE writer claim occupies under a barrier. */
13
+ const ROOT_AUTHORITY_ACTIVE_SLOT = "active";
6
14
  /**
7
- * Filesystem home of the single-writer lease for a control endpoint. A Unix
15
+ * Filesystem anchor of the single-writer lease for a control endpoint. A Unix
8
16
  * socket FILE anchors its lease right next to itself; a named pipe is not a
9
17
  * filesystem entry (nothing can be created in `\\.\pipe\`), so its lease lives
10
18
  * in the daemon dir under the pipe's own final segment — which already carries
11
19
  * the config-dir digest, keeping concurrent daemons' leases distinct.
12
20
  */
13
- export function writerLeasePath(socketPath) {
21
+ export function writerLeaseAnchorPath(socketPath) {
14
22
  if (isWindowsPipePath(socketPath)) {
15
23
  const pipeName = socketPath.split(/[\\/]/).pop() || "claudexord-pipe";
16
24
  return join(daemonDir(), `${pipeName}.writer`);
17
25
  }
18
26
  return `${socketPath}.writer`;
19
27
  }
28
+ /**
29
+ * Effective single-writer lease address. Once the anchor directory carries the
30
+ * permanent root-authority barrier marker (issue #165 D1/D4), the live claim
31
+ * for every FIXED runtime moves to the nested `active.writer` slot inside the
32
+ * barrier, so inspection, acquisition, termination and operator stop all keep
33
+ * following one canonical address. Pre-fix runtimes never resolve the nested
34
+ * slot — they contend on the anchor itself, where the opaque barrier refuses
35
+ * them. Without a marker the anchor stays the (legacy-compatible) address.
36
+ */
37
+ export function writerLeasePath(socketPath) {
38
+ const anchor = writerLeaseAnchorPath(socketPath);
39
+ try {
40
+ if (lstatSync(join(anchor, ROOT_AUTHORITY_MARKER_FILE)).isFile()) {
41
+ return join(anchor, `${ROOT_AUTHORITY_ACTIVE_SLOT}.writer`);
42
+ }
43
+ }
44
+ catch {
45
+ /* no readable barrier marker -> the anchor is the lease address */
46
+ }
47
+ return anchor;
48
+ }
49
+ const DEFAULT_FILESYSTEM = {
50
+ lstat: (path) => lstatSync(path),
51
+ readText: (path) => readFileSync(path, "utf8"),
52
+ createLeaseDirectory: (path) => mkdirSync(path, { mode: 0o700 }),
53
+ writeOwner: (path, data) => writeFileSync(path, data, {
54
+ mode: 0o600,
55
+ flag: "wx",
56
+ }),
57
+ rename: (from, to) => renameSync(from, to),
58
+ remove: (path) => rmSync(path, { recursive: true, force: true }),
59
+ };
60
+ function filesystem(deps) {
61
+ return { ...DEFAULT_FILESYSTEM, ...deps.filesystem };
62
+ }
63
+ /** Resolved filesystem seam. The root-authority in-place migration (C4)
64
+ * shares it so its atomic steps stay deterministically observable in tests. */
65
+ export function resolveWriterLeaseFilesystem(deps) {
66
+ return filesystem(deps);
67
+ }
68
+ function errorCode(error) {
69
+ return error?.code;
70
+ }
71
+ function validPositiveInteger(value) {
72
+ return typeof value === "number" && Number.isSafeInteger(value) && value > 0;
73
+ }
74
+ function sameOwner(left, right) {
75
+ return left.pid === right.pid && left.token === right.token;
76
+ }
77
+ function isLinuxZombieObservation(observation, pid) {
78
+ return (observation.linuxState === "Z" &&
79
+ observation.identity.status === "known" &&
80
+ observation.identity.pid === pid &&
81
+ observation.identity.platform === "linux" &&
82
+ observation.identity.source === "procfs_stat");
83
+ }
84
+ function parseLeaseOwner(raw) {
85
+ let value;
86
+ try {
87
+ value = JSON.parse(raw);
88
+ }
89
+ catch {
90
+ return null;
91
+ }
92
+ if (!value || typeof value !== "object" || Array.isArray(value))
93
+ return null;
94
+ const record = value;
95
+ if (!validPositiveInteger(record.pid) || typeof record.token !== "string" || !record.token) {
96
+ return null;
97
+ }
98
+ if (!Object.prototype.hasOwnProperty.call(record, "identity")) {
99
+ return { pid: record.pid, token: record.token };
100
+ }
101
+ if (!isKnownProcessIdentity(record.identity) || record.identity.pid !== record.pid)
102
+ return null;
103
+ return { pid: record.pid, token: record.token, identity: record.identity };
104
+ }
105
+ /** Preserve the pre-strict public projection exactly; never use for authority. */
106
+ function parseLegacyLeaseOwner(raw) {
107
+ let value;
108
+ try {
109
+ value = JSON.parse(raw);
110
+ }
111
+ catch {
112
+ return null;
113
+ }
114
+ if (!value || typeof value !== "object" || Array.isArray(value))
115
+ return null;
116
+ const record = value;
117
+ if (!validPositiveInteger(record.pid) || typeof record.token !== "string")
118
+ return null;
119
+ return {
120
+ pid: record.pid,
121
+ token: record.token,
122
+ ...(isKnownProcessIdentity(record.identity) ? { identity: record.identity } : {}),
123
+ };
124
+ }
125
+ function readLegacyLeaseOwner(path) {
126
+ try {
127
+ return parseLegacyLeaseOwner(readFileSync(path, "utf8"));
128
+ }
129
+ catch {
130
+ return null;
131
+ }
132
+ }
133
+ function inspectLeaseAfterOwnerMissing(path, fs) {
134
+ try {
135
+ const lease = fs.lstat(path);
136
+ if (lease.isSymbolicLink() || !lease.isDirectory()) {
137
+ return { status: "unknown", path, reason: "invalid_lease_path" };
138
+ }
139
+ return { status: "unknown", path, reason: "owner_missing" };
140
+ }
141
+ catch (error) {
142
+ if (errorCode(error) === "ENOENT")
143
+ return { status: "absent", path };
144
+ return { status: "unknown", path, reason: "lease_unreadable" };
145
+ }
146
+ }
147
+ function inspectWriterLeasePath(path, fs) {
148
+ let lease;
149
+ try {
150
+ lease = fs.lstat(path);
151
+ }
152
+ catch (error) {
153
+ if (errorCode(error) === "ENOENT")
154
+ return { status: "absent", path };
155
+ return { status: "unknown", path, reason: "lease_unreadable" };
156
+ }
157
+ if (lease.isSymbolicLink() || !lease.isDirectory()) {
158
+ return { status: "unknown", path, reason: "invalid_lease_path" };
159
+ }
160
+ const ownerPath = join(path, "owner.json");
161
+ let ownerStat;
162
+ try {
163
+ ownerStat = fs.lstat(ownerPath);
164
+ }
165
+ catch (error) {
166
+ if (errorCode(error) === "ENOENT")
167
+ return inspectLeaseAfterOwnerMissing(path, fs);
168
+ return { status: "unknown", path, reason: "owner_unreadable" };
169
+ }
170
+ if (ownerStat.isSymbolicLink() || !ownerStat.isFile()) {
171
+ return { status: "unknown", path, reason: "owner_malformed" };
172
+ }
173
+ let raw;
174
+ try {
175
+ raw = fs.readText(ownerPath);
176
+ }
177
+ catch (error) {
178
+ if (errorCode(error) === "ENOENT")
179
+ return inspectLeaseAfterOwnerMissing(path, fs);
180
+ return { status: "unknown", path, reason: "owner_unreadable" };
181
+ }
182
+ const owner = parseLeaseOwner(raw);
183
+ return owner
184
+ ? { status: "owned", path, owner }
185
+ : { status: "unknown", path, reason: "owner_malformed" };
186
+ }
187
+ function probeProcessPresence(pid, probe) {
188
+ try {
189
+ probe(pid);
190
+ return "present";
191
+ }
192
+ catch (error) {
193
+ const code = errorCode(error);
194
+ if (code === "ESRCH")
195
+ return "missing";
196
+ if (code === "EPERM")
197
+ return "permission_denied";
198
+ return "unknown";
199
+ }
200
+ }
201
+ export function classifyDaemonLeaseOwner(owner, deps = {}) {
202
+ const identity = deps.identity ?? defaultProcessIdentityService;
203
+ const observationReader = deps.observation ??
204
+ (identity === defaultProcessIdentityService ? defaultProcessObservationReader : undefined);
205
+ const observation = observeProcess(identity, owner.pid, observationReader);
206
+ const probe = deps.probeProcess ?? ((pid) => process.kill(pid, 0));
207
+ if (observation.identity.status === "missing") {
208
+ return { status: "proven_stale", reason: "process_missing", observation };
209
+ }
210
+ if (owner.identity && observation.identity.status === "known") {
211
+ if (compareProcessIdentity(owner.identity, observation.identity) !== "same") {
212
+ return { status: "proven_stale", reason: "identity_mismatch", observation };
213
+ }
214
+ if (isLinuxZombieObservation(observation, owner.pid)) {
215
+ return { status: "proven_stale", reason: "linux_zombie", observation };
216
+ }
217
+ return { status: "capable", reason: "identity_match", observation };
218
+ }
219
+ if (!owner.identity && observation.identity.status === "known") {
220
+ if (isLinuxZombieObservation(observation, owner.pid)) {
221
+ return { status: "proven_stale", reason: "linux_zombie", observation };
222
+ }
223
+ return { status: "capable", reason: "legacy_process_present", observation };
224
+ }
225
+ const presence = probeProcessPresence(owner.pid, probe);
226
+ if (presence === "missing") {
227
+ return { status: "proven_stale", reason: "process_missing", observation };
228
+ }
229
+ if (!owner.identity && (presence === "present" || presence === "permission_denied")) {
230
+ return { status: "capable", reason: "legacy_process_present", observation };
231
+ }
232
+ if (presence === "present" || presence === "permission_denied") {
233
+ return { status: "unknown", reason: "identity_unavailable", observation };
234
+ }
235
+ return { status: "unknown", reason: "presence_unknown", observation };
236
+ }
237
+ /** Strict authority read: only a physically missing lease path is `absent`. */
238
+ export function inspectDaemonWriterLease(socketPath, deps = {}) {
239
+ const path = writerLeasePath(socketPath);
240
+ const fs = filesystem(deps);
241
+ for (let attempt = 0; attempt < 2; attempt += 1) {
242
+ const raw = inspectWriterLeasePath(path, fs);
243
+ if (raw.status !== "owned")
244
+ return raw;
245
+ const capability = classifyDaemonLeaseOwner(raw.owner, deps);
246
+ const confirmed = inspectWriterLeasePath(path, fs);
247
+ if (confirmed.status === "owned" && sameOwner(confirmed.owner, raw.owner)) {
248
+ return { ...confirmed, capability };
249
+ }
250
+ if (attempt === 1) {
251
+ return confirmed.status === "owned"
252
+ ? { status: "unknown", path, reason: "lease_unstable" }
253
+ : confirmed;
254
+ }
255
+ }
256
+ return { status: "unknown", path, reason: "lease_unstable" };
257
+ }
258
+ export function writerLeaseTombstonePath(leasePath, owner) {
259
+ const digest = createHash("sha256")
260
+ .update(String(owner.pid))
261
+ .update("\0")
262
+ .update(owner.token)
263
+ .digest("hex");
264
+ return `${leasePath}.stale-${owner.pid}-${digest}`;
265
+ }
266
+ /** Move exactly one observed generation; the nonempty tombstone is preserved. */
267
+ function quarantineDaemonWriterLeaseGeneration(lease, deps = {}) {
268
+ const fs = filesystem(deps);
269
+ const tombstone = writerLeaseTombstonePath(lease.path, lease.owner);
270
+ try {
271
+ fs.rename(lease.path, tombstone);
272
+ return { status: "quarantined", path: tombstone };
273
+ }
274
+ catch (error) {
275
+ const code = errorCode(error);
276
+ if (code === "ENOENT" || code === "EEXIST" || code === "ENOTEMPTY") {
277
+ return { status: "contended", path: tombstone };
278
+ }
279
+ if (code === "EPERM") {
280
+ const occupied = inspectWriterLeasePath(tombstone, fs);
281
+ if (occupied.status === "owned" && sameOwner(occupied.owner, lease.owner)) {
282
+ return { status: "contended", path: tombstone };
283
+ }
284
+ }
285
+ throw error;
286
+ }
287
+ }
288
+ function writerBusy(path) {
289
+ return Object.assign(new Error(`another claudexor daemon owns ${path}`), {
290
+ code: "daemon_writer_busy",
291
+ status: 409,
292
+ });
293
+ }
294
+ function staleReplacementFailed(path) {
295
+ return new Error(`could not replace stale daemon writer lease ${path}`);
296
+ }
20
297
  /** Claim single-writer authority before any daemon journal is opened. */
21
- export function acquireDaemonWriterLease(socketPath, deps = {}) {
298
+ export function acquireDaemonWriterLease(socketPath, deps = {}, acquisitionDeps = {}) {
299
+ // The second argument is a published compatibility boundary. Read only its
300
+ // original `identity` field: downstream objects may already use any newer
301
+ // dependency name for unrelated private/runtime state.
302
+ const identity = deps.identity;
303
+ const effectiveDeps = {
304
+ identity,
305
+ observation: acquisitionDeps.observation,
306
+ probeProcess: acquisitionDeps.probeProcess,
307
+ filesystem: acquisitionDeps.filesystem,
308
+ };
22
309
  const path = writerLeasePath(socketPath);
23
310
  const token = randomUUID();
24
- const ownerPath = `${path}/owner.json`;
25
- const self = (deps.identity ?? defaultProcessIdentityService).self();
311
+ const ownerPath = join(path, "owner.json");
312
+ const fs = filesystem(effectiveDeps);
313
+ const self = (identity ?? defaultProcessIdentityService).self();
26
314
  const owner = {
27
315
  pid: process.pid,
28
316
  token,
29
317
  ...(self.status === "known" ? { identity: self } : {}),
30
318
  };
319
+ let acquired = false;
31
320
  for (let attempt = 0; attempt < 2; attempt += 1) {
32
321
  try {
33
- mkdirSync(path, { mode: 0o700 });
34
- writeFileSync(ownerPath, `${JSON.stringify(owner)}\n`, {
35
- mode: 0o600,
36
- flag: "wx",
37
- });
322
+ fs.createLeaseDirectory(path);
323
+ fs.writeOwner(ownerPath, `${JSON.stringify(owner)}\n`);
324
+ acquired = true;
38
325
  break;
39
326
  }
40
327
  catch (error) {
41
- if (error.code !== "EEXIST")
328
+ if (errorCode(error) !== "EEXIST")
42
329
  throw error;
43
- const existing = readLeaseOwner(ownerPath);
44
- if (!existing || processIsAlive(existing.pid))
330
+ const existing = inspectWriterLeasePath(path, fs);
331
+ if (existing.status === "absent")
332
+ continue;
333
+ if (existing.status === "unknown")
45
334
  throw writerBusy(path);
46
- const stale = `${path}.stale-${process.pid}-${randomUUID()}`;
47
- try {
48
- renameSync(path, stale);
49
- rmSync(stale, { recursive: true, force: true });
50
- }
51
- catch (cleanupError) {
52
- if (cleanupError.code !== "ENOENT")
53
- throw cleanupError;
335
+ const capability = classifyDaemonLeaseOwner(existing.owner, effectiveDeps);
336
+ if (capability.status !== "proven_stale")
337
+ throw writerBusy(path);
338
+ // Classification may have spanned an orderly release. Re-read the main
339
+ // generation before mutation: once the observed owner is positively
340
+ // missing/recycled/Z it cannot itself release after this point, while a
341
+ // concurrent stale takeover leaves the occupied tombstone below as the
342
+ // generation fence.
343
+ const confirmed = inspectWriterLeasePath(path, fs);
344
+ if (confirmed.status === "absent")
345
+ continue;
346
+ if (confirmed.status === "unknown")
347
+ throw writerBusy(path);
348
+ if (!sameOwner(confirmed.owner, existing.owner)) {
349
+ if (attempt === 1)
350
+ throw writerBusy(path);
351
+ continue;
54
352
  }
55
353
  if (attempt === 1)
56
- throw new Error(`could not replace stale daemon writer lease ${path}`);
354
+ throw staleReplacementFailed(path);
355
+ const quarantine = quarantineDaemonWriterLeaseGeneration(confirmed, effectiveDeps);
356
+ if (quarantine.status === "quarantined")
357
+ continue;
358
+ const current = inspectWriterLeasePath(path, fs);
359
+ if (current.status === "unknown")
360
+ throw writerBusy(path);
361
+ if (current.status === "owned" && sameOwner(current.owner, existing.owner)) {
362
+ throw staleReplacementFailed(path);
363
+ }
364
+ // Another contender changed or removed the main generation. The single
365
+ // remaining creation attempt re-observes it without another quarantine.
57
366
  }
58
367
  }
368
+ if (!acquired)
369
+ throw staleReplacementFailed(path);
59
370
  let released = false;
60
371
  return {
61
372
  path,
@@ -64,48 +375,27 @@ export function acquireDaemonWriterLease(socketPath, deps = {}) {
64
375
  if (released)
65
376
  return;
66
377
  released = true;
67
- const current = readLeaseOwner(ownerPath);
68
- if (current?.token === token && current.pid === process.pid) {
69
- rmSync(path, { recursive: true, force: true });
70
- }
378
+ const current = inspectWriterLeasePath(path, fs);
379
+ if (current.status === "owned" && sameOwner(current.owner, owner))
380
+ fs.remove(path);
71
381
  },
72
382
  };
73
383
  }
74
- /** Read the current writer-lease owner for a socket path (null when free). */
384
+ /**
385
+ * Lossy patch-compatible projection. `null` does not prove the lease path is
386
+ * physically absent; authority-sensitive callers must use strict inspection.
387
+ */
75
388
  export function daemonLeaseOwner(socketPath) {
76
- return readLeaseOwner(join(writerLeasePath(socketPath), "owner.json"));
77
- }
78
- function writerBusy(path) {
79
- return Object.assign(new Error(`another claudexor daemon owns ${path}`), {
80
- code: "daemon_writer_busy",
81
- status: 409,
82
- });
83
- }
84
- function readLeaseOwner(path) {
85
- try {
86
- const value = JSON.parse(readFileSync(path, "utf8"));
87
- if (!Number.isSafeInteger(value.pid) ||
88
- Number(value.pid) <= 0 ||
89
- typeof value.token !== "string") {
90
- return null;
91
- }
92
- return {
93
- pid: Number(value.pid),
94
- token: value.token,
95
- ...(isKnownProcessIdentity(value.identity) ? { identity: value.identity } : {}),
96
- };
97
- }
98
- catch {
99
- return null;
100
- }
389
+ return readLegacyLeaseOwner(join(writerLeasePath(socketPath), "owner.json"));
101
390
  }
391
+ /** Raw signal-zero presence helper; daemon serviceability uses the classifier. */
102
392
  export function processIsAlive(pid) {
103
393
  try {
104
394
  process.kill(pid, 0);
105
395
  return true;
106
396
  }
107
397
  catch (error) {
108
- return error.code === "EPERM";
398
+ return errorCode(error) === "EPERM";
109
399
  }
110
400
  }
111
401
  //# sourceMappingURL=writer-lease.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"writer-lease.js","sourceRoot":"","sources":["../src/writer-lease.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"writer-lease.js","sourceRoot":"","sources":["../src/writer-lease.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EACL,SAAS,EACT,SAAS,EACT,YAAY,EACZ,UAAU,EACV,MAAM,EACN,aAAa,GAEd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,+BAA+B,EAC/B,sBAAsB,EACtB,cAAc,GAKf,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE1D;;;;iDAIiD;AACjD,MAAM,CAAC,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AACnE,mFAAmF;AACnF,MAAM,0BAA0B,GAAG,QAAQ,CAAC;AAE5C;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,IAAI,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;QAClC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,IAAI,iBAAiB,CAAC;QACtE,OAAO,IAAI,CAAC,SAAS,EAAE,EAAE,GAAG,QAAQ,SAAS,CAAC,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,UAAU,SAAS,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAAC,UAAkB;IAChD,MAAM,MAAM,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YACjE,OAAO,IAAI,CAAC,MAAM,EAAE,GAAG,0BAA0B,SAAS,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AA+ED,MAAM,kBAAkB,GAAgC;IACtD,KAAK,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC;IAChC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC;IAC9C,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAChE,UAAU,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CACzB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE;QACxB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;KACX,CAAC;IACJ,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,CAAC;IAC1C,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;CACjE,CAAC;AAEF,SAAS,UAAU,CAAC,IAAmC;IACrD,OAAO,EAAE,GAAG,kBAAkB,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;AACvD,CAAC;AAED;+EAC+E;AAC/E,MAAM,UAAU,4BAA4B,CAC1C,IAAmC;IAEnC,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAQ,KAA+B,EAAE,IAAI,CAAC;AAChD,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,SAAS,CAAC,IAAsB,EAAE,KAAuB;IAChE,OAAO,IAAI,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK,CAAC;AAC9D,CAAC;AAED,SAAS,wBAAwB,CAAC,WAA+B,EAAE,GAAW;IAC5E,OAAO,CACL,WAAW,CAAC,UAAU,KAAK,GAAG;QAC9B,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO;QACvC,WAAW,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG;QAChC,WAAW,CAAC,QAAQ,CAAC,QAAQ,KAAK,OAAO;QACzC,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,aAAa,CAC9C,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3F,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC;QAC9D,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IACD,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAChG,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC7E,CAAC;AAED,kFAAkF;AAClF,SAAS,qBAAqB,CAAC,GAAW;IACxC,IAAI,KAAc,CAAC;IACnB,IAAI,CAAC;QACH,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7E,MAAM,MAAM,GAAG,KAAgC,CAAC;IAChD,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACvF,OAAO;QACL,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,CAAC,sBAAsB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClF,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAY;IACxC,IAAI,CAAC;QACH,OAAO,qBAAqB,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CACpC,IAAY,EACZ,EAA+B;IAE/B,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACnD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACjE,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,IAAY,EACZ,EAA+B;IAE/B,IAAI,KAAY,CAAC;IACjB,IAAI,CAAC;QACH,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QACrE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;QACnD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC3C,IAAI,SAAgB,CAAC;IACrB,IAAI,CAAC;QACH,SAAS,GAAG,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,6BAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACjE,CAAC;IACD,IAAI,SAAS,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,CAAC;QACtD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAChE,CAAC;IAED,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;YAAE,OAAO,6BAA6B,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAClF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;IACjE,CAAC;IACD,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,KAAK;QACV,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE;QAClC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;AAC7D,CAAC;AAID,SAAS,oBAAoB,CAAC,GAAW,EAAE,KAA4B;IACrE,IAAI,CAAC;QACH,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,SAAS,CAAC;QACvC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,mBAAmB,CAAC;QACjD,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAAuB,EACvB,IAAI,GAAkC,EAAE;IAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,6BAA6B,CAAC;IAChE,MAAM,iBAAiB,GACrB,IAAI,CAAC,WAAW;QAChB,CAAC,QAAQ,KAAK,6BAA6B,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,EAAE,iBAAiB,CAAC,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3E,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9C,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;IAC5E,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC9D,IAAI,sBAAsB,CAAC,KAAK,CAAC,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,KAAK,MAAM,EAAE,CAAC;YAC5E,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,CAAC;QAC9E,CAAC;QACD,IAAI,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;QACzE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,EAAE,CAAC;IACtE,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;QAC/D,IAAI,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACrD,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;QACzE,CAAC;QACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,wBAAwB,EAAE,WAAW,EAAE,CAAC;IAC9E,CAAC;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACxD,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,mBAAmB,CAAC,EAAE,CAAC;QACpF,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,wBAAwB,EAAE,WAAW,EAAE,CAAC;IAC9E,CAAC;IACD,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,KAAK,mBAAmB,EAAE,CAAC;QAC/D,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sBAAsB,EAAE,WAAW,EAAE,CAAC;IAC5E,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,kBAAkB,EAAE,WAAW,EAAE,CAAC;AACxE,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,IAAI,GAAkC,EAAE;IAExC,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAChD,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7C,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,GAAG,CAAC;QACvC,MAAM,UAAU,GAAG,wBAAwB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACnD,IAAI,SAAS,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1E,OAAO,EAAE,GAAG,SAAS,EAAE,UAAU,EAAE,CAAC;QACtC,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC,MAAM,KAAK,OAAO;gBACjC,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE;gBACvD,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,SAAiB,EAAE,KAAuB;IACjF,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC;SAChC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SACzB,MAAM,CAAC,IAAI,CAAC;SACZ,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;SACnB,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,OAAO,GAAG,SAAS,UAAU,KAAK,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;AACrD,CAAC;AAKD,iFAAiF;AACjF,SAAS,qCAAqC,CAC5C,KAAgD,EAChD,IAAI,GAAkC,EAAE;IAExC,MAAM,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,SAAS,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjC,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,WAAW,EAAE,CAAC;YACnE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QAClD,CAAC;QACD,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;YACvD,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC1E,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY;IAC9B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,EAAE;QACvE,IAAI,EAAE,oBAAoB;QAC1B,MAAM,EAAE,GAAG;KACZ,CAAC,CAAC;AACL,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY;IAC1C,OAAO,IAAI,KAAK,CAAC,+CAA+C,IAAI,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,wBAAwB,CACtC,UAAkB,EAClB,IAAI,GAAyC,EAAE,EAC/C,eAAe,GAAoD,EAAE;IAErE,2EAA2E;IAC3E,0EAA0E;IAC1E,uDAAuD;IACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC/B,MAAM,aAAa,GAAkC;QACnD,QAAQ;QACR,WAAW,EAAE,eAAe,CAAC,WAAW;QACxC,YAAY,EAAE,eAAe,CAAC,YAAY;QAC1C,UAAU,EAAE,eAAe,CAAC,UAAU;KACvC,CAAC;IACF,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC3C,MAAM,EAAE,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,6BAA6B,CAAC,CAAC,IAAI,EAAE,CAAC;IAChE,MAAM,KAAK,GAAqB;QAC9B,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK;QACL,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACvD,CAAC;IACF,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC;YACH,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;YAC9B,EAAE,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACvD,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM;QACR,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,SAAS,CAAC,KAAK,CAAC,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;YAC/C,MAAM,QAAQ,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YAClD,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ;gBAAE,SAAS;YAC3C,IAAI,QAAQ,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAE1D,MAAM,UAAU,GAAG,wBAAwB,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,CAAC;YAC3E,IAAI,UAAU,CAAC,MAAM,KAAK,cAAc;gBAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAEjE,uEAAuE;YACvE,oEAAoE;YACpE,wEAAwE;YACxE,uEAAuE;YACvE,oBAAoB;YACpB,MAAM,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACnD,IAAI,SAAS,CAAC,MAAM,KAAK,QAAQ;gBAAE,SAAS;YAC5C,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAC3D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChD,IAAI,OAAO,KAAK,CAAC;oBAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;gBAC1C,SAAS;YACX,CAAC;YACD,IAAI,OAAO,KAAK,CAAC;gBAAE,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;YAEtD,MAAM,UAAU,GAAG,qCAAqC,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACnF,IAAI,UAAU,CAAC,MAAM,KAAK,aAAa;gBAAE,SAAS;YAElD,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YACzD,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3E,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;YACrC,CAAC;YACD,uEAAuE;YACvE,wEAAwE;QAC1E,CAAC;IACH,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,MAAM,sBAAsB,CAAC,IAAI,CAAC,CAAC;IAElD,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,OAAO;QACL,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,QAAQ;gBAAE,OAAO;YACrB,QAAQ,GAAG,IAAI,CAAC;YAChB,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,OAAO,CAAC,MAAM,KAAK,OAAO,IAAI,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC;gBAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACrF,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,OAAO,oBAAoB,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;AAC/E,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,SAAS,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC;IACtC,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@claudexor/daemon",
3
- "version": "3.3.16",
3
+ "version": "3.4.1",
4
4
  "license": "MIT",
5
5
  "description": "Managed local daemon: Unix-socket JSON-RPC, token auth, task queue. Runner injected (no second scheduler).",
6
6
  "type": "module",
@@ -17,10 +17,10 @@
17
17
  ],
18
18
  "dependencies": {
19
19
  "yaml": "^2.8.2",
20
- "@claudexor/schema": "3.3.16",
21
- "@claudexor/core": "3.3.16",
22
- "@claudexor/util": "3.3.16",
23
- "@claudexor/journal": "3.3.16"
20
+ "@claudexor/util": "3.4.1",
21
+ "@claudexor/core": "3.4.1",
22
+ "@claudexor/schema": "3.4.1",
23
+ "@claudexor/journal": "3.4.1"
24
24
  },
25
25
  "repository": {
26
26
  "type": "git",