@wjarka/cezarion 0.14.9-dev.959 → 0.14.9-dev.996

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 (59) hide show
  1. package/dist/automations/scheduler.d.ts +6 -0
  2. package/dist/automations/scheduler.js +45 -17
  3. package/dist/automations/scheduler.js.map +1 -1
  4. package/dist/automations/store.d.ts +12 -4
  5. package/dist/automations/store.js +199 -22
  6. package/dist/automations/store.js.map +1 -1
  7. package/dist/automations/types.d.ts +2 -0
  8. package/dist/automations/types.js +1 -0
  9. package/dist/automations/types.js.map +1 -1
  10. package/dist/contract/automations.d.ts +6 -0
  11. package/dist/contract/index.js +2 -1
  12. package/dist/delegation/routes.d.ts +50 -50
  13. package/dist/index.js +3 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/server/server.d.ts +1205 -1205
  16. package/dist/server/server.js +2 -2
  17. package/dist/server/server.js.map +1 -1
  18. package/dist/server-install/platforms/ubuntu-vps.d.ts +5 -1
  19. package/dist/server-install/platforms/ubuntu-vps.js +160 -18
  20. package/dist/server-install/platforms/ubuntu-vps.js.map +1 -1
  21. package/dist/server-install/steps.d.ts +4 -2
  22. package/dist/server-install/steps.js +5 -4
  23. package/dist/server-install/steps.js.map +1 -1
  24. package/package.json +3 -3
  25. package/web/dist/assets/{agent-accounts-Bh1l3ZSb.js → agent-accounts-xNBY6ogh.js} +1 -1
  26. package/web/dist/assets/{centered-state-kOb8j_BL.js → centered-state-B5dpq65a.js} +1 -1
  27. package/web/dist/assets/{collapsible-KSKVv9J9.js → collapsible-Be7f34CZ.js} +1 -1
  28. package/web/dist/assets/{commit-list-D_WtLlWH.js → commit-list-CrVF6aJO.js} +1 -1
  29. package/web/dist/assets/{compare-variants-DJIej8bU.js → compare-variants-BhsIhofd.js} +1 -1
  30. package/web/dist/assets/{diff-Jd8igxRb2.js → diff-DkLLHPBL2.js} +2 -2
  31. package/web/dist/assets/{diff-controls-D_kgpdoa.js → diff-controls-BBH2il5I.js} +1 -1
  32. package/web/dist/assets/{diff-stat-C3Id3W_C.js → diff-stat-CRv7eHDb.js} +1 -1
  33. package/web/dist/assets/{diff-view-BK1wJX0D.js → diff-view-C_c7WhMC.js} +1 -1
  34. package/web/dist/assets/{dropdown-menu-78Ug-7x2.js → dropdown-menu-CHjcbAg2.js} +1 -1
  35. package/web/dist/assets/{git-toolbar-DFC6bS8a.js → git-toolbar-2NRZ0XRF.js} +1 -1
  36. package/web/dist/assets/{github-DDkmhvRx.js → github-MN8sYsUk.js} +1 -1
  37. package/web/dist/assets/{image-preview-BEOsw8qX.js → image-preview-CVNzfVE6.js} +1 -1
  38. package/web/dist/assets/{index-BZB0C-In.js → index-B3mt1xBA.js} +3 -3
  39. package/web/dist/assets/{markdown-DlvW2wEx.js → markdown-DMJKzyRf.js} +1 -1
  40. package/web/dist/assets/{pill-0JHCf1v8.js → pill-DzKHyuy3.js} +1 -1
  41. package/web/dist/assets/{project-router-CS_oeLqi.js → project-router-JF2eAjIT.js} +1 -1
  42. package/web/dist/assets/{prompt-templates-BgXzCOlY.js → prompt-templates-xPSqYS6C.js} +1 -1
  43. package/web/dist/assets/{repo-git-CTY51Xpo.js → repo-git-Cmq5MEXj.js} +1 -1
  44. package/web/dist/assets/{run-diff-xym-7QHm.js → run-diff-CrcC1Yup.js} +1 -1
  45. package/web/dist/assets/{run-header-BBQOWhJ7.js → run-header-CJzRxOq_.js} +1 -1
  46. package/web/dist/assets/{skills-fRAJjWDi.js → skills-Dhc5aF4q.js} +1 -1
  47. package/web/dist/assets/{tab-link-D6eAdJez.js → tab-link-h-NqfUyU.js} +1 -1
  48. package/web/dist/assets/{task-changes-IX116bgy.js → task-changes-BV15m5L7.js} +1 -1
  49. package/web/dist/assets/{task-commits-BaE7naEC.js → task-commits-DFt3HGFV.js} +1 -1
  50. package/web/dist/assets/{task-files-B17PDPqY.js → task-files-Bdx9Y_Ds.js} +1 -1
  51. package/web/dist/assets/task-thread-BU9PHrPG.js +9 -0
  52. package/web/dist/assets/{textarea-D2Gx4GDI.js → textarea-bn5bn1st.js} +1 -1
  53. package/web/dist/assets/{thread-loading-hVlcCLdm.js → thread-loading-C06KXeIB.js} +1 -1
  54. package/web/dist/assets/{token-metrics-BQvw6Yoj.js → token-metrics-D6kVakap.js} +1 -1
  55. package/web/dist/assets/{utils-BW1-Ibnd.js → utils-Cv6VpwoW.js} +1 -1
  56. package/web/dist/assets/{workflows-CV_4lCHh.js → workflows-DIsCUQX9.js} +1 -1
  57. package/web/dist/assets/{zoomable-image-DVvXID3t.js → zoomable-image-DUpvct4v.js} +1 -1
  58. package/web/dist/index.html +13 -13
  59. package/web/dist/assets/task-thread-D1dWARw-.js +0 -9
@@ -15,11 +15,16 @@ export interface ProjectAutomationHandle {
15
15
  launch?: AutomationLauncher;
16
16
  onChange?: (automationId: string, revision: number) => void;
17
17
  }
18
+ /** A different process currently owns this project's poll lock. */
19
+ export declare class LeaseHeldError extends Error {
20
+ constructor();
21
+ }
18
22
  export declare class ProjectAutomationScheduler {
19
23
  private readonly handle;
20
24
  constructor(handle: ProjectAutomationHandle);
21
25
  check(definition: AutomationDefinition, mode?: 'preview' | 'execute'): Promise<GithubPollResult>;
22
26
  private launch;
27
+ private recordSkip;
23
28
  private recordFailure;
24
29
  }
25
30
  export interface WorkspaceAutomationSchedulerOptions {
@@ -33,6 +38,7 @@ export declare class WorkspaceAutomationScheduler {
33
38
  private timer?;
34
39
  private stopped;
35
40
  private scheduleGeneration;
41
+ private readonly retryAfter;
36
42
  constructor(options: WorkspaceAutomationSchedulerOptions);
37
43
  start(): Promise<void>;
38
44
  reschedule(): Promise<void>;
@@ -9,6 +9,10 @@ class GithubRequestArbiter {
9
9
  }
10
10
  }
11
11
  const githubRequests = new GithubRequestArbiter();
12
+ /** A different process currently owns this project's poll lock. */
13
+ export class LeaseHeldError extends Error {
14
+ constructor() { super('automation polling lease is held by another process'); }
15
+ }
12
16
  export class ProjectAutomationScheduler {
13
17
  handle;
14
18
  constructor(handle) {
@@ -19,12 +23,13 @@ export class ProjectAutomationScheduler {
19
23
  if (detectionOnly)
20
24
  mode = 'preview';
21
25
  const { store } = this.handle;
22
- const lease = store.acquireLease();
23
- if (!lease)
24
- throw new Error('automation polling lease is held by another process');
25
26
  const started = Date.now();
26
27
  let completion;
28
+ let lease;
27
29
  try {
30
+ lease = store.acquireLease();
31
+ if (!lease)
32
+ throw new LeaseHeldError();
28
33
  const state = store.state(definition.id) ?? {};
29
34
  if (state.backoffUntil && Date.parse(state.backoffUntil) > Date.now()) {
30
35
  throw new Error(`automation is backed off until ${state.backoffUntil}`);
@@ -76,39 +81,53 @@ export class ProjectAutomationScheduler {
76
81
  return { ...result, candidates: eligible };
77
82
  }
78
83
  catch (error) {
79
- if (mode === 'execute')
80
- this.recordFailure(definition, error);
84
+ if (error instanceof LeaseHeldError)
85
+ await this.recordSkip(definition, error);
86
+ else if (mode === 'execute')
87
+ await this.recordFailure(definition, error);
81
88
  else
82
- store.appendLog({ automationId: definition.id, revision: definition.revision, result: 'error', reason: error instanceof Error ? error.message : String(error) });
89
+ await store.appendLog({ automationId: definition.id, revision: definition.revision, result: 'error', reason: error instanceof Error ? error.message : String(error) });
83
90
  throw error;
84
91
  }
85
92
  finally {
86
- if (completion)
87
- store.appendLog({ automationId: definition.id, revision: definition.revision, ...completion, durationMs: Date.now() - started });
88
93
  try {
89
- store.maybeCompact();
94
+ if (completion)
95
+ await store.appendLog({ automationId: definition.id, revision: definition.revision, ...completion, durationMs: Date.now() - started });
96
+ if (lease) {
97
+ try {
98
+ await store.maybeCompact();
99
+ }
100
+ catch { /* append-only state remains readable; next check retries */ }
101
+ }
102
+ }
103
+ finally {
104
+ lease?.release();
90
105
  }
91
- catch { /* append-only state remains readable; next check retries */ }
92
- lease.release();
93
106
  }
94
107
  }
95
108
  async launch(definition, candidate) {
96
109
  const receipt = this.handle.store.reserveReceipt({ automationId: definition.id, revision: definition.revision, eventId: candidate.eventId, candidate });
97
110
  if (!receipt) {
98
- this.handle.store.appendLog({ automationId: definition.id, revision: definition.revision, event: candidate.event, result: 'duplicate', reason: 'A durable receipt already exists for this automation and event.', githubNumber: candidate.number, githubTitle: candidate.title, githubUrl: candidate.url });
111
+ await this.handle.store.appendLog({ automationId: definition.id, revision: definition.revision, event: candidate.event, result: 'duplicate', reason: 'A durable receipt already exists for this automation and event.', githubNumber: candidate.number, githubTitle: candidate.title, githubUrl: candidate.url });
99
112
  return;
100
113
  }
101
114
  try {
102
115
  const launched = await this.handle.launch(definition, candidate, receipt.receiptId);
103
116
  this.handle.store.appendReceipt({ ...receipt, status: 'launched', runId: launched.runId, updatedAt: new Date().toISOString() });
104
- this.handle.store.appendLog({ automationId: definition.id, revision: definition.revision, event: candidate.event, result: 'launched', receiptId: receipt.receiptId, runId: launched.runId, githubNumber: candidate.number, githubTitle: candidate.title, githubUrl: candidate.url });
117
+ await this.handle.store.appendLog({ automationId: definition.id, revision: definition.revision, event: candidate.event, result: 'launched', receiptId: receipt.receiptId, runId: launched.runId, githubNumber: candidate.number, githubTitle: candidate.title, githubUrl: candidate.url });
105
118
  }
106
119
  catch (error) {
107
120
  this.handle.store.appendReceipt({ ...receipt, status: 'launch-error', error: error instanceof Error ? error.message : String(error), updatedAt: new Date().toISOString() });
108
121
  throw error;
109
122
  }
110
123
  }
111
- recordFailure(definition, error) {
124
+ async recordSkip(definition, error) {
125
+ const { store } = this.handle;
126
+ await store.appendLog({ automationId: definition.id, revision: definition.revision, result: 'skipped', reason: error.message });
127
+ // The lease owner may be writing state. The workspace retry floor handles our next attempt.
128
+ this.handle.onChange?.(definition.id, definition.revision);
129
+ }
130
+ async recordFailure(definition, error) {
112
131
  const state = this.handle.store.state(definition.id) ?? {};
113
132
  const failures = (state.consecutiveFailures ?? 0) + 1;
114
133
  const delay = Math.min(6 * 60 * 60_000, 60_000 * 2 ** (failures - 1));
@@ -118,7 +137,7 @@ export class ProjectAutomationScheduler {
118
137
  backoffUntil: new Date(Date.now() + delay).toISOString(),
119
138
  nextCheckAt: new Date(Date.now() + delay).toISOString(),
120
139
  });
121
- this.handle.store.appendLog({ automationId: definition.id, revision: definition.revision, result: 'error', reason: error instanceof Error ? error.message : String(error) });
140
+ await this.handle.store.appendLog({ automationId: definition.id, revision: definition.revision, result: 'error', reason: error instanceof Error ? error.message : String(error) });
122
141
  this.handle.onChange?.(definition.id, definition.revision);
123
142
  }
124
143
  }
@@ -131,12 +150,14 @@ function laterCursor(current, observed) {
131
150
  || observed.tieBreaker.localeCompare(current.tieBreaker ?? '');
132
151
  return order > 0 ? observed : current;
133
152
  }
153
+ const MIN_RETRY_MS = 60_000;
134
154
  /** One workspace timer, created only while at least one enabled definition exists. */
135
155
  export class WorkspaceAutomationScheduler {
136
156
  options;
137
157
  timer;
138
158
  stopped = true;
139
159
  scheduleGeneration = 0;
160
+ retryAfter = new Map();
140
161
  constructor(options) {
141
162
  this.options = options;
142
163
  }
@@ -168,6 +189,7 @@ export class WorkspaceAutomationScheduler {
168
189
  if (this.stopped)
169
190
  return;
170
191
  const due = [];
192
+ const live = new Set();
171
193
  for (const projectId of this.options.coordinator.enabledProjectIds()) {
172
194
  const store = this.options.coordinator.store(projectId);
173
195
  if (!store)
@@ -176,16 +198,22 @@ export class WorkspaceAutomationScheduler {
176
198
  if (!handle)
177
199
  continue;
178
200
  for (const definition of store.list().filter((item) => item.enabled)) {
179
- due.push({ at: Date.parse(store.state(definition.id)?.nextCheckAt ?? new Date().toISOString()), definition, scheduler: new ProjectAutomationScheduler(handle) });
201
+ const key = `${projectId}:${definition.id}`;
202
+ live.add(key);
203
+ const at = Date.parse(store.state(definition.id)?.nextCheckAt ?? new Date().toISOString());
204
+ due.push({ key, at: Math.max(at, this.retryAfter.get(key) ?? 0), retryAfterMs: Math.max(definition.intervalSeconds * 1_000, MIN_RETRY_MS), definition, scheduler: new ProjectAutomationScheduler(handle) });
180
205
  }
181
206
  }
207
+ for (const key of this.retryAfter.keys())
208
+ if (!live.has(key))
209
+ this.retryAfter.delete(key);
182
210
  if (!due.length)
183
211
  return;
184
212
  due.sort((a, b) => a.at - b.at);
185
213
  const next = due[0];
186
214
  this.timer = setTimeout(() => {
187
215
  this.timer = undefined;
188
- void next.scheduler.check(next.definition).catch(() => undefined).finally(() => this.schedule());
216
+ void next.scheduler.check(next.definition).then(() => { this.retryAfter.delete(next.key); }, () => { this.retryAfter.set(next.key, (this.options.now?.() ?? Date.now()) + next.retryAfterMs); }).finally(() => this.schedule());
189
217
  }, Math.max(0, next.at - (this.options.now?.() ?? Date.now())));
190
218
  }
191
219
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/automations/scheduler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/automations/scheduler.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { GithubCandidate } from './github-poller.ts';
3
3
  export interface AutomationStoreOptions {
4
4
  warn?: (message: string) => void;
5
5
  now?: () => Date;
6
+ processAlive?: (pid: number) => boolean;
6
7
  }
7
8
  export declare class AutomationStore {
8
9
  readonly dataDir: string;
@@ -11,7 +12,6 @@ export declare class AutomationStore {
11
12
  private stateFile;
12
13
  private definitions;
13
14
  private warned;
14
- private logSeq;
15
15
  private readonly now;
16
16
  private readonly secrets;
17
17
  static open(dataDir: string, options?: AutomationStoreOptions): AutomationStore;
@@ -32,7 +32,7 @@ export declare class AutomationStore {
32
32
  eventId: string;
33
33
  candidate?: GithubCandidate;
34
34
  }): AutomationReceipt | undefined;
35
- appendLog(record: Omit<AutomationLogRecord, 'seq' | 'ts'> & Partial<Pick<AutomationLogRecord, 'ts'>>): AutomationLogRecord;
35
+ appendLog(record: Omit<AutomationLogRecord, 'seq' | 'ts'> & Partial<Pick<AutomationLogRecord, 'ts'>>): Promise<AutomationLogRecord>;
36
36
  logs(options?: {
37
37
  automationId?: string;
38
38
  result?: AutomationLogRecord['result'];
@@ -41,9 +41,16 @@ export declare class AutomationStore {
41
41
  cursor?: number;
42
42
  limit?: number;
43
43
  }): AutomationLogRecord[];
44
- compact(): void;
45
- maybeCompact(): void;
44
+ compact(): Promise<void>;
45
+ maybeCompact(): Promise<void>;
46
46
  acquireLease(staleAfterMs?: number): AutomationLease | undefined;
47
+ private withLogLease;
48
+ private tryAcquireLease;
49
+ /** Only one process may inspect and remove an abandoned poll lock at a time. */
50
+ private acquireReclaimGuard;
51
+ /** Fresh live guards are respected; abandoned or aged-out guards are recoverable. */
52
+ private retireAbandonedReclaimGuard;
53
+ private isLeaseAbandoned;
47
54
  private load;
48
55
  private loadDefinitions;
49
56
  private persistDefinitions;
@@ -61,5 +68,6 @@ export declare class AutomationLease {
61
68
  private readonly fd;
62
69
  private released;
63
70
  constructor(path: string, fd: number);
71
+ isCurrent(): boolean;
64
72
  release(): void;
65
73
  }
@@ -1,4 +1,4 @@
1
- import { closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
1
+ import { closeSync, existsSync, fstatSync, mkdirSync, openSync, readFileSync, renameSync, rmSync, rmdirSync, statSync, unlinkSync, writeFileSync, } from 'node:fs';
2
2
  import { randomUUID } from 'node:crypto';
3
3
  import { collectSecretValues, redactDeep } from '../core/secret-redaction.js';
4
4
  import { join } from 'node:path';
@@ -7,8 +7,12 @@ const DEFINITIONS = 'automations.json';
7
7
  const STATE = 'automation-state.json';
8
8
  const RECEIPTS = 'automation-receipts.ndjson';
9
9
  const LOG = 'automation-log.ndjson';
10
+ const LOG_LOCK = 'automation-log.lock';
11
+ const LOG_RECLAIM = 'automation-log.reclaim';
10
12
  const POLL_LOCK = 'automation-poll.lock';
13
+ const POLL_RECLAIM = 'automation-poll.reclaim';
11
14
  const RETENTION_MS = 90 * 24 * 60 * 60 * 1_000;
15
+ const LEASE_RECLAIM_ATTEMPTS = 1;
12
16
  export class AutomationStore {
13
17
  dataDir;
14
18
  options;
@@ -16,7 +20,6 @@ export class AutomationStore {
16
20
  stateFile = { version: 1, states: {} };
17
21
  definitions = new Map();
18
22
  warned = new Set();
19
- logSeq = 0;
20
23
  now;
21
24
  secrets = collectSecretValues();
22
25
  static open(dataDir, options = {}) {
@@ -117,13 +120,17 @@ export class AutomationStore {
117
120
  return receipt;
118
121
  }
119
122
  appendLog(record) {
120
- const parsed = automationLogRecordSchema.parse({
121
- ...record,
122
- seq: ++this.logSeq,
123
- ts: record.ts ?? this.now().toISOString(),
123
+ return this.withLogLease(() => {
124
+ const seq = this.readNdjson(LOG, automationLogRecordSchema)
125
+ .reduce((highest, row) => Math.max(highest, row.seq), 0) + 1;
126
+ const parsed = automationLogRecordSchema.parse({
127
+ ...record,
128
+ seq,
129
+ ts: record.ts ?? this.now().toISOString(),
130
+ });
131
+ this.appendNdjson(LOG, redactDeep(parsed, this.secrets));
132
+ return parsed;
124
133
  });
125
- this.appendNdjson(LOG, redactDeep(parsed, this.secrets));
126
- return parsed;
127
134
  }
128
135
  logs(options = {}) {
129
136
  const limit = Math.min(Math.max(options.limit ?? 100, 1), 100);
@@ -136,39 +143,177 @@ export class AutomationStore {
136
143
  .slice(-limit)
137
144
  .reverse();
138
145
  }
139
- compact() {
146
+ async compact() {
140
147
  const cutoff = this.now().getTime() - RETENTION_MS;
141
148
  const latest = [...this.latestReceipts().values()].filter((row) => Date.parse(row.updatedAt) >= cutoff);
142
149
  this.rewriteNdjson(RECEIPTS, latest);
143
- const logs = this.readNdjson(LOG, automationLogRecordSchema);
144
- this.rewriteNdjson(LOG, logs.slice(-10_000));
150
+ await this.withLogLease(() => {
151
+ const logs = this.readNdjson(LOG, automationLogRecordSchema);
152
+ this.rewriteNdjson(LOG, logs.slice(-10_000));
153
+ });
145
154
  }
146
- maybeCompact() {
155
+ async maybeCompact() {
147
156
  if (this.receipts().length > 20_000 || this.readNdjson(LOG, automationLogRecordSchema).length > 10_500) {
148
- this.compact();
157
+ await this.compact();
149
158
  }
150
159
  }
151
160
  acquireLease(staleAfterMs = 10 * 60_000) {
152
161
  mkdirSync(this.dataDir, { recursive: true });
153
- const path = join(this.dataDir, POLL_LOCK);
162
+ return this.tryAcquireLease(join(this.dataDir, POLL_LOCK), join(this.dataDir, POLL_RECLAIM), staleAfterMs, 0, false);
163
+ }
164
+ async withLogLease(operation) {
165
+ mkdirSync(this.dataDir, { recursive: true });
166
+ const path = join(this.dataDir, LOG_LOCK);
167
+ const guardPath = join(this.dataDir, LOG_RECLAIM);
168
+ const deadline = Date.now() + 15_000;
169
+ let lease;
170
+ while (!lease && Date.now() < deadline) {
171
+ lease = this.tryAcquireLease(path, guardPath, 10 * 60_000, 0, false);
172
+ if (!lease)
173
+ await new Promise((resolve) => setTimeout(resolve, 10));
174
+ }
175
+ if (!lease)
176
+ throw new Error('automation log lock is busy; retry shortly');
177
+ try {
178
+ return operation();
179
+ }
180
+ finally {
181
+ lease.release();
182
+ }
183
+ }
184
+ tryAcquireLease(path, guardPath, staleAfterMs, attempt, reclaiming) {
185
+ if (!reclaiming && existsSync(guardPath)) {
186
+ const releaseGuard = this.acquireReclaimGuard(guardPath, staleAfterMs);
187
+ if (!releaseGuard)
188
+ return undefined;
189
+ releaseGuard();
190
+ }
154
191
  try {
155
192
  const fd = openSync(path, 'wx', 0o600);
156
193
  writeFileSync(fd, JSON.stringify({ pid: process.pid, startedAt: this.now().toISOString() }));
157
- return new AutomationLease(path, fd);
194
+ const lease = new AutomationLease(path, fd);
195
+ if (!reclaiming && (existsSync(guardPath) || !lease.isCurrent())) {
196
+ lease.release();
197
+ return undefined;
198
+ }
199
+ return lease;
158
200
  }
159
201
  catch {
202
+ if (attempt >= LEASE_RECLAIM_ATTEMPTS)
203
+ return undefined;
204
+ const releaseGuard = this.acquireReclaimGuard(guardPath, staleAfterMs);
205
+ if (!releaseGuard)
206
+ return undefined;
160
207
  try {
161
- if (this.now().getTime() - statSync(path).mtimeMs > staleAfterMs) {
162
- unlinkSync(path);
163
- return this.acquireLease(staleAfterMs);
208
+ // Keep the observed inode open: some filesystems immediately reuse an unlinked inode.
209
+ const observedFd = openSync(path, 'r');
210
+ try {
211
+ const observed = fstatSync(observedFd);
212
+ if (this.isLeaseAbandoned(path, staleAfterMs) && sameFile(observed, statSync(path))) {
213
+ unlinkSync(path);
214
+ return this.tryAcquireLease(path, guardPath, staleAfterMs, attempt + 1, true);
215
+ }
216
+ }
217
+ finally {
218
+ closeSync(observedFd);
164
219
  }
165
220
  }
166
221
  catch {
167
222
  // A contender removed the lock or the directory is read-only.
168
223
  }
224
+ finally {
225
+ releaseGuard();
226
+ }
169
227
  return undefined;
170
228
  }
171
229
  }
230
+ /** Only one process may inspect and remove an abandoned poll lock at a time. */
231
+ acquireReclaimGuard(path, staleAfterMs) {
232
+ for (let attempt = 0; attempt <= 1; attempt++) {
233
+ try {
234
+ mkdirSync(path, { mode: 0o700 });
235
+ }
236
+ catch (error) {
237
+ if (error.code !== 'EEXIST' || attempt > 0)
238
+ return undefined;
239
+ if (!this.retireAbandonedReclaimGuard(path, staleAfterMs))
240
+ return undefined;
241
+ continue;
242
+ }
243
+ const ownerPath = join(path, 'owner.json');
244
+ try {
245
+ writeFileSync(ownerPath, JSON.stringify({ pid: process.pid }), { flag: 'wx', mode: 0o600 });
246
+ }
247
+ catch {
248
+ try {
249
+ rmdirSync(path);
250
+ }
251
+ catch { /* a crashed writer's guard ages out */ }
252
+ return undefined;
253
+ }
254
+ const identity = statSync(path);
255
+ return () => {
256
+ try {
257
+ if (!sameFile(identity, statSync(path)) || readLeasePid(ownerPath) !== process.pid)
258
+ return;
259
+ unlinkSync(ownerPath);
260
+ rmdirSync(path);
261
+ }
262
+ catch { /* another process may already have retired it */ }
263
+ };
264
+ }
265
+ return undefined;
266
+ }
267
+ /** Fresh live guards are respected; abandoned or aged-out guards are recoverable. */
268
+ retireAbandonedReclaimGuard(path, staleAfterMs) {
269
+ const marker = join(path, '.reaping');
270
+ let claimedToken;
271
+ try {
272
+ const identity = statSync(path);
273
+ const pid = readLeasePid(join(path, 'owner.json'));
274
+ const agedOut = this.now().getTime() - identity.mtimeMs > staleAfterMs;
275
+ if (!agedOut && (pid === undefined || pid === process.pid || (this.options.processAlive ?? isProcessAlive)(pid)))
276
+ return false;
277
+ const token = randomUUID();
278
+ try {
279
+ writeFileSync(marker, JSON.stringify({ pid: process.pid, token }), { flag: 'wx', mode: 0o600 });
280
+ claimedToken = token;
281
+ }
282
+ catch {
283
+ // A reaper that crashed after claiming the guard leaves a bounded age fallback.
284
+ if (this.now().getTime() - statSync(marker).mtimeMs > staleAfterMs) {
285
+ unlinkSync(marker);
286
+ }
287
+ return false;
288
+ }
289
+ if (!sameFile(identity, statSync(path)))
290
+ return false;
291
+ const retired = `${path}.retired-${randomUUID()}`;
292
+ renameSync(path, retired);
293
+ rmSync(retired, { recursive: true, force: true });
294
+ return true;
295
+ }
296
+ catch {
297
+ return false;
298
+ }
299
+ finally {
300
+ if (claimedToken) {
301
+ try {
302
+ if (JSON.parse(readFileSync(marker, 'utf8')).token === claimedToken)
303
+ unlinkSync(marker);
304
+ }
305
+ catch { /* the guard moved or was retired */ }
306
+ }
307
+ }
308
+ }
309
+ isLeaseAbandoned(path, staleAfterMs) {
310
+ if (this.now().getTime() - statSync(path).mtimeMs > staleAfterMs)
311
+ return true;
312
+ const pid = readLeasePid(path);
313
+ if (pid === undefined || pid === process.pid)
314
+ return false;
315
+ return !(this.options.processAlive ?? isProcessAlive)(pid);
316
+ }
172
317
  load() {
173
318
  mkdirSync(this.dataDir, { recursive: true });
174
319
  this.loadDefinitions();
@@ -176,8 +321,6 @@ export class AutomationStore {
176
321
  version: 1,
177
322
  states: {},
178
323
  });
179
- const logs = this.readNdjson(LOG, automationLogRecordSchema);
180
- this.logSeq = logs.at(-1)?.seq ?? 0;
181
324
  }
182
325
  loadDefinitions() {
183
326
  this.definitionsFile = this.readJson(DEFINITIONS, automationDefinitionsFileSchema, {
@@ -274,6 +417,29 @@ export class AutomationStore {
274
417
  this.options.warn?.(message);
275
418
  }
276
419
  }
420
+ function readLeasePid(path) {
421
+ try {
422
+ const parsed = JSON.parse(readFileSync(path, 'utf8'));
423
+ const pid = parsed?.pid;
424
+ return typeof pid === 'number' && Number.isInteger(pid) && pid > 0 ? pid : undefined;
425
+ }
426
+ catch {
427
+ return undefined;
428
+ }
429
+ }
430
+ /** An unknown probe error is treated like a live process; only ESRCH proves absence. */
431
+ function isProcessAlive(pid) {
432
+ try {
433
+ process.kill(pid, 0);
434
+ return true;
435
+ }
436
+ catch (error) {
437
+ return error.code !== 'ESRCH';
438
+ }
439
+ }
440
+ function sameFile(left, right) {
441
+ return left.dev === right.dev && left.ino === right.ino;
442
+ }
277
443
  export class AutomationLease {
278
444
  path;
279
445
  fd;
@@ -282,17 +448,28 @@ export class AutomationLease {
282
448
  this.path = path;
283
449
  this.fd = fd;
284
450
  }
451
+ isCurrent() {
452
+ try {
453
+ return sameFile(fstatSync(this.fd), statSync(this.path));
454
+ }
455
+ catch {
456
+ return false;
457
+ }
458
+ }
285
459
  release() {
286
460
  if (this.released)
287
461
  return;
288
462
  this.released = true;
289
- closeSync(this.fd);
290
463
  try {
291
- unlinkSync(this.path);
464
+ if (this.isCurrent())
465
+ unlinkSync(this.path);
292
466
  }
293
467
  catch {
294
468
  // Already removed during shutdown cleanup.
295
469
  }
470
+ finally {
471
+ closeSync(this.fd);
472
+ }
296
473
  }
297
474
  }
298
475
  //# sourceMappingURL=store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/automations/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/automations/store.ts"],"names":[],"mappings":"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"}