@farazirfan/costar-server-executor 1.7.9 → 1.7.11

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.
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAmBpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAQ1E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAiN9B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBzE"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,OAAO,KAAK,EACV,wBAAwB,EACxB,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAqBpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,kCAAkC,CAAC;AAQ1E;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,wBAAwB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAiN9B;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzE"}
@@ -18,6 +18,8 @@ import { buildAgentSystemPrompt, createSystemPromptOverride } from "./system-pro
18
18
  import { subscribeEmbeddedPiSession } from "./subscribe.js";
19
19
  import { prepareSessionManagerForRun, getSessionDiagnostics } from "./session-manager-init.js";
20
20
  import { repairSessionFileIfNeeded } from "./session-file-repair.js";
21
+ import { guardSessionManager } from "./session-tool-result-guard.js";
22
+ import { acquireSessionWriteLock } from "./session-write-lock.js";
21
23
  import { isContextOverflowError, isCompactionFailureError, describeUnknownError, } from "../pi-embedded-helpers/errors.js";
22
24
  import { compactEmbeddedPiSessionDirect } from "./compact.js";
23
25
  import { truncateOversizedToolResultsInSession, sessionLikelyHasOversizedToolResults, } from "./tool-result-truncation.js";
@@ -207,9 +209,10 @@ export async function resetSessionFile(sessionFile) {
207
209
  catch {
208
210
  /* file might not exist */
209
211
  }
210
- // Write empty session (must be empty string, NOT "{}" SessionManager expects JSONL format)
211
- await fs.writeFile(sessionFile, "", "utf-8");
212
- console.log(`[PI_AGENT] Session file reset: ${sessionFile}`);
212
+ // DELETE the file so SessionManager.open() creates a fresh session with proper header.
213
+ // Writing empty still causes flushed=true → no header on dispose.
214
+ await fs.unlink(sessionFile);
215
+ console.log(`[PI_AGENT] Session file deleted: ${sessionFile}`);
213
216
  }
214
217
  catch (err) {
215
218
  console.error(`[PI_AGENT] Failed to reset session file:`, err);
@@ -246,12 +249,16 @@ async function runEmbeddedAttempt(params, model, authStorage, modelRegistry) {
246
249
  skills: params.skillEntries,
247
250
  });
248
251
  const systemPrompt = createSystemPromptOverride(systemPromptText);
249
- // Check if session file exists
250
- const hadSessionFile = await fs
252
+ // Check if session file exists (let: may be updated to false if file is deleted during reset)
253
+ let hadSessionFile = await fs
251
254
  .stat(params.sessionFile)
252
255
  .then(() => true)
253
256
  .catch(() => false);
254
257
  console.log(`[PI_ATTEMPT] Session file: ${params.sessionFile} (exists: ${hadSessionFile})`);
258
+ // Acquire session write lock to prevent concurrent writes (cron + chat safety)
259
+ const sessionLock = await acquireSessionWriteLock({
260
+ sessionFile: params.sessionFile,
261
+ });
255
262
  // Repair session file if corrupted (e.g., from old resetSessionFile bug writing "{}")
256
263
  if (hadSessionFile) {
257
264
  const repairResult = await repairSessionFileIfNeeded({
@@ -262,8 +269,8 @@ async function runEmbeddedAttempt(params, model, authStorage, modelRegistry) {
262
269
  console.log(`[PI_ATTEMPT] Session file repaired: dropped ${repairResult.droppedLines} malformed lines`);
263
270
  }
264
271
  }
265
- // Open or create session manager
266
- let sessionManager = SessionManager.open(params.sessionFile);
272
+ // Open or create session manager, wrapped with tool result guard
273
+ let sessionManager = guardSessionManager(SessionManager.open(params.sessionFile));
267
274
  // Log session diagnostics BEFORE preparation
268
275
  let diagBefore = getSessionDiagnostics(sessionManager);
269
276
  console.log(`[PI_ATTEMPT] Session loaded — messages: ${diagBefore.messageCount} (user: ${diagBefore.userMessages}, assistant: ${diagBefore.assistantMessages}), flushed: ${diagBefore.flushed}, hasHeader: ${diagBefore.hasHeader}`);
@@ -281,12 +288,16 @@ async function runEmbeddedAttempt(params, model, authStorage, modelRegistry) {
281
288
  catch {
282
289
  // backup failure is not critical
283
290
  }
284
- // Reset to empty so SessionManager creates a fresh session
285
- await fs.writeFile(params.sessionFile, "", "utf-8");
286
- // Re-open with fresh state
287
- sessionManager = SessionManager.open(params.sessionFile);
291
+ // DELETE the file (not write empty) so SessionManager.open() treats it as
292
+ // non-existent and creates a proper in-memory session WITH a header.
293
+ // Writing empty still causes flushed=true (file exists) → no header written on dispose.
294
+ await fs.unlink(params.sessionFile);
295
+ // Re-open: file doesn't exist → fresh in-memory session with header, flushed=false
296
+ sessionManager = guardSessionManager(SessionManager.open(params.sessionFile));
297
+ // Update hadSessionFile since we deleted it — prepareSessionManagerForRun needs this
298
+ hadSessionFile = false;
288
299
  diagBefore = getSessionDiagnostics(sessionManager);
289
- console.log(`[PI_ATTEMPT] Session after reset — messages: ${diagBefore.messageCount}, flushed: ${diagBefore.flushed}, hasHeader: ${diagBefore.hasHeader}`);
300
+ console.log(`[PI_ATTEMPT] Session after delete+reopen — messages: ${diagBefore.messageCount}, flushed: ${diagBefore.flushed}, hasHeader: ${diagBefore.hasHeader}`);
290
301
  }
291
302
  // Prepare session manager for run (fixes pi-coding-agent persistence quirk)
292
303
  // Without this, if session file exists but has no assistant, SessionManager
@@ -440,6 +451,8 @@ async function runEmbeddedAttempt(params, model, authStorage, modelRegistry) {
440
451
  catch (disposeErr) {
441
452
  console.error(`[PI_ATTEMPT] Session dispose error:`, disposeErr);
442
453
  }
454
+ // Release session write lock (always, even on error)
455
+ await sessionLock.release();
443
456
  }
444
457
  }
445
458
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Session Tool Result Guard
3
+ * Ported from OpenClaw's session-tool-result-guard.ts + wrapper
4
+ *
5
+ * Wraps SessionManager.appendMessage to:
6
+ * 1. Cap oversized tool results before they're persisted (prevents context overflow)
7
+ * 2. Track pending tool calls and synthesize missing results
8
+ * 3. Sanitize malformed tool call inputs
9
+ * 4. Expose flushPendingToolResults() for cleanup before dispose
10
+ *
11
+ * Without this, tool results can be lost or oversized, causing the session
12
+ * file to grow unbounded or the LLM to reject the transcript.
13
+ */
14
+ import type { SessionManager } from "@mariozechner/pi-coding-agent";
15
+ export type GuardedSessionManager = SessionManager & {
16
+ /** Flush any synthetic tool results for pending tool calls. Idempotent. */
17
+ flushPendingToolResults?: () => void;
18
+ };
19
+ /**
20
+ * Apply the tool-result guard to a SessionManager.
21
+ * Wraps appendMessage to cap sizes, track pending tool calls,
22
+ * and synthesize missing tool results before disposal.
23
+ */
24
+ export declare function guardSessionManager(sessionManager: SessionManager): GuardedSessionManager;
25
+ //# sourceMappingURL=session-tool-result-guard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-tool-result-guard.d.ts","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/session-tool-result-guard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AASpE,MAAM,MAAM,qBAAqB,GAAG,cAAc,GAAG;IACnD,2EAA2E;IAC3E,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;CACtC,CAAC;AA2GF;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,cAAc,GAAG,qBAAqB,CA2DzF"}
@@ -0,0 +1,165 @@
1
+ /**
2
+ * Session Tool Result Guard
3
+ * Ported from OpenClaw's session-tool-result-guard.ts + wrapper
4
+ *
5
+ * Wraps SessionManager.appendMessage to:
6
+ * 1. Cap oversized tool results before they're persisted (prevents context overflow)
7
+ * 2. Track pending tool calls and synthesize missing results
8
+ * 3. Sanitize malformed tool call inputs
9
+ * 4. Expose flushPendingToolResults() for cleanup before dispose
10
+ *
11
+ * Without this, tool results can be lost or oversized, causing the session
12
+ * file to grow unbounded or the LLM to reject the transcript.
13
+ */
14
+ // Same limit as OpenClaw — safety net for oversized tool results
15
+ const HARD_MAX_TOOL_RESULT_CHARS = 400_000;
16
+ const GUARD_TRUNCATION_SUFFIX = "\n\n⚠️ [Content truncated during persistence — original exceeded size limit. " +
17
+ "Use offset/limit parameters or request specific sections for large content.]";
18
+ // ─── Helper Functions ──────────────────────────────────────────
19
+ /** Cap oversized text content blocks in a tool result message. */
20
+ function capToolResultSize(msg) {
21
+ const record = msg;
22
+ if (record.role !== "toolResult" || !Array.isArray(record.content)) {
23
+ return msg;
24
+ }
25
+ let totalTextChars = 0;
26
+ for (const block of record.content) {
27
+ if (block && typeof block === "object" && block.type === "text") {
28
+ const text = block.text;
29
+ if (typeof text === "string") {
30
+ totalTextChars += text.length;
31
+ }
32
+ }
33
+ }
34
+ if (totalTextChars <= HARD_MAX_TOOL_RESULT_CHARS) {
35
+ return msg;
36
+ }
37
+ console.log(`[SESSION_GUARD] Capping oversized tool result: ${totalTextChars} chars → ${HARD_MAX_TOOL_RESULT_CHARS} chars`);
38
+ const newContent = record.content.map((block) => {
39
+ if (!block || typeof block !== "object" || block.type !== "text") {
40
+ return block;
41
+ }
42
+ const textBlock = block;
43
+ if (typeof textBlock.text !== "string") {
44
+ return block;
45
+ }
46
+ const blockShare = textBlock.text.length / totalTextChars;
47
+ const blockBudget = Math.max(2_000, Math.floor(HARD_MAX_TOOL_RESULT_CHARS * blockShare) - GUARD_TRUNCATION_SUFFIX.length);
48
+ if (textBlock.text.length <= blockBudget) {
49
+ return block;
50
+ }
51
+ // Try to cut at a newline boundary
52
+ let cutPoint = blockBudget;
53
+ const lastNewline = textBlock.text.lastIndexOf("\n", blockBudget);
54
+ if (lastNewline > blockBudget * 0.8) {
55
+ cutPoint = lastNewline;
56
+ }
57
+ return {
58
+ ...textBlock,
59
+ text: textBlock.text.slice(0, cutPoint) + GUARD_TRUNCATION_SUFFIX,
60
+ };
61
+ });
62
+ return { ...record, content: newContent };
63
+ }
64
+ /** Extract tool calls from an assistant message. */
65
+ function extractAssistantToolCalls(msg) {
66
+ const record = msg;
67
+ if (record.role !== "assistant" || !Array.isArray(record.content)) {
68
+ return [];
69
+ }
70
+ const toolCalls = [];
71
+ for (const block of record.content) {
72
+ if (!block || typeof block !== "object")
73
+ continue;
74
+ const rec = block;
75
+ if (typeof rec.id !== "string" || !rec.id)
76
+ continue;
77
+ if (rec.type === "toolCall" || rec.type === "toolUse" || rec.type === "functionCall") {
78
+ toolCalls.push({ id: rec.id, name: rec.name });
79
+ }
80
+ }
81
+ return toolCalls;
82
+ }
83
+ /** Extract tool result ID from a tool result message. */
84
+ function extractToolResultId(msg) {
85
+ const record = msg;
86
+ if (typeof record.toolCallId === "string" && record.toolCallId)
87
+ return record.toolCallId;
88
+ if (typeof record.toolUseId === "string" && record.toolUseId)
89
+ return record.toolUseId;
90
+ return null;
91
+ }
92
+ /** Create a synthetic missing tool result. */
93
+ function makeMissingToolResult(params) {
94
+ return {
95
+ role: "toolResult",
96
+ toolCallId: params.toolCallId,
97
+ toolName: params.toolName ?? "unknown",
98
+ content: [
99
+ {
100
+ type: "text",
101
+ text: "[costar] missing tool result in session history; inserted synthetic error result for transcript repair.",
102
+ },
103
+ ],
104
+ isError: true,
105
+ timestamp: Date.now(),
106
+ };
107
+ }
108
+ // ─── Main Guard ──────────────────────────────────────────
109
+ /**
110
+ * Apply the tool-result guard to a SessionManager.
111
+ * Wraps appendMessage to cap sizes, track pending tool calls,
112
+ * and synthesize missing tool results before disposal.
113
+ */
114
+ export function guardSessionManager(sessionManager) {
115
+ // Don't double-guard
116
+ if (typeof sessionManager.flushPendingToolResults === "function") {
117
+ return sessionManager;
118
+ }
119
+ const originalAppend = sessionManager.appendMessage.bind(sessionManager);
120
+ const pending = new Map();
121
+ const flushPendingToolResults = () => {
122
+ if (pending.size === 0)
123
+ return;
124
+ console.log(`[SESSION_GUARD] Flushing ${pending.size} pending synthetic tool results`);
125
+ for (const [id, name] of pending.entries()) {
126
+ const synthetic = makeMissingToolResult({ toolCallId: id, toolName: name });
127
+ originalAppend(synthetic);
128
+ }
129
+ pending.clear();
130
+ };
131
+ const guardedAppend = (message) => {
132
+ const role = message.role;
133
+ if (role === "toolResult") {
134
+ const id = extractToolResultId(message);
135
+ if (id)
136
+ pending.delete(id);
137
+ // Cap oversized tool results before persistence
138
+ const capped = capToolResultSize(message);
139
+ return originalAppend(capped);
140
+ }
141
+ const toolCalls = role === "assistant" ? extractAssistantToolCalls(message) : [];
142
+ // If previous tool calls are still pending and new non-tool-result arrives,
143
+ // flush synthetic results to keep the transcript valid
144
+ if (pending.size > 0 && toolCalls.length === 0) {
145
+ flushPendingToolResults();
146
+ }
147
+ // If new tool calls arrive while older ones are pending, flush old ones first
148
+ if (pending.size > 0 && toolCalls.length > 0) {
149
+ flushPendingToolResults();
150
+ }
151
+ const result = originalAppend(message);
152
+ // Track new tool calls as pending
153
+ if (toolCalls.length > 0) {
154
+ for (const call of toolCalls) {
155
+ pending.set(call.id, call.name);
156
+ }
157
+ }
158
+ return result;
159
+ };
160
+ // Monkey-patch appendMessage with guarded version
161
+ sessionManager.appendMessage = guardedAppend;
162
+ sessionManager.flushPendingToolResults = flushPendingToolResults;
163
+ return sessionManager;
164
+ }
165
+ //# sourceMappingURL=session-tool-result-guard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-tool-result-guard.js","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/session-tool-result-guard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Session Write Lock
3
+ * Ported from OpenClaw's session-write-lock.ts
4
+ *
5
+ * File-based lock that prevents concurrent writes to the session file.
6
+ * This is critical because cron jobs, heartbeat, and chat all share the
7
+ * same Agent and session file — without a lock, concurrent executeTurn()
8
+ * calls can corrupt the JSONL session file.
9
+ *
10
+ * Features:
11
+ * - Reentrant (reference counted) — same process can acquire multiple times
12
+ * - Stale lock detection — clears locks from dead processes
13
+ * - Cleanup on process exit/signals
14
+ */
15
+ /**
16
+ * Acquire an exclusive write lock for a session file.
17
+ * Returns a release function that MUST be called in a finally block.
18
+ *
19
+ * Reentrant: if the same process already holds the lock, increments the
20
+ * reference count. Only the last release actually removes the lock file.
21
+ */
22
+ export declare function acquireSessionWriteLock(params: {
23
+ sessionFile: string;
24
+ timeoutMs?: number;
25
+ staleMs?: number;
26
+ }): Promise<{
27
+ release: () => Promise<void>;
28
+ }>;
29
+ //# sourceMappingURL=session-write-lock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-write-lock.d.ts","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/session-write-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAmGH;;;;;;GAMG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC;IACV,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B,CAAC,CAmFD"}
@@ -0,0 +1,185 @@
1
+ /**
2
+ * Session Write Lock
3
+ * Ported from OpenClaw's session-write-lock.ts
4
+ *
5
+ * File-based lock that prevents concurrent writes to the session file.
6
+ * This is critical because cron jobs, heartbeat, and chat all share the
7
+ * same Agent and session file — without a lock, concurrent executeTurn()
8
+ * calls can corrupt the JSONL session file.
9
+ *
10
+ * Features:
11
+ * - Reentrant (reference counted) — same process can acquire multiple times
12
+ * - Stale lock detection — clears locks from dead processes
13
+ * - Cleanup on process exit/signals
14
+ */
15
+ import fsSync from "node:fs";
16
+ import fs from "node:fs/promises";
17
+ import path from "node:path";
18
+ const HELD_LOCKS = new Map();
19
+ const CLEANUP_SIGNALS = ["SIGINT", "SIGTERM", "SIGQUIT", "SIGABRT"];
20
+ const cleanupHandlers = new Map();
21
+ function isAlive(pid) {
22
+ if (!Number.isFinite(pid) || pid <= 0)
23
+ return false;
24
+ try {
25
+ process.kill(pid, 0);
26
+ return true;
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ }
32
+ /** Synchronously release all held locks on process exit. */
33
+ function releaseAllLocksSync() {
34
+ for (const [sessionFile, held] of HELD_LOCKS) {
35
+ try {
36
+ if (typeof held.handle.close === "function") {
37
+ void held.handle.close().catch(() => { });
38
+ }
39
+ }
40
+ catch {
41
+ // best effort
42
+ }
43
+ try {
44
+ fsSync.rmSync(held.lockPath, { force: true });
45
+ }
46
+ catch {
47
+ // best effort
48
+ }
49
+ HELD_LOCKS.delete(sessionFile);
50
+ }
51
+ }
52
+ let cleanupRegistered = false;
53
+ function handleTerminationSignal(signal) {
54
+ releaseAllLocksSync();
55
+ const shouldReraise = process.listenerCount(signal) === 1;
56
+ if (shouldReraise) {
57
+ const handler = cleanupHandlers.get(signal);
58
+ if (handler) {
59
+ process.off(signal, handler);
60
+ }
61
+ try {
62
+ process.kill(process.pid, signal);
63
+ }
64
+ catch {
65
+ // best effort
66
+ }
67
+ }
68
+ }
69
+ function registerCleanupHandlers() {
70
+ if (cleanupRegistered)
71
+ return;
72
+ cleanupRegistered = true;
73
+ process.on("exit", () => {
74
+ releaseAllLocksSync();
75
+ });
76
+ for (const signal of CLEANUP_SIGNALS) {
77
+ try {
78
+ const handler = () => handleTerminationSignal(signal);
79
+ cleanupHandlers.set(signal, handler);
80
+ process.on(signal, handler);
81
+ }
82
+ catch {
83
+ // unsupported signal on this platform
84
+ }
85
+ }
86
+ }
87
+ async function readLockPayload(lockPath) {
88
+ try {
89
+ const raw = await fs.readFile(lockPath, "utf8");
90
+ const parsed = JSON.parse(raw);
91
+ if (typeof parsed.pid !== "number" || typeof parsed.createdAt !== "string")
92
+ return null;
93
+ return { pid: parsed.pid, createdAt: parsed.createdAt };
94
+ }
95
+ catch {
96
+ return null;
97
+ }
98
+ }
99
+ /**
100
+ * Acquire an exclusive write lock for a session file.
101
+ * Returns a release function that MUST be called in a finally block.
102
+ *
103
+ * Reentrant: if the same process already holds the lock, increments the
104
+ * reference count. Only the last release actually removes the lock file.
105
+ */
106
+ export async function acquireSessionWriteLock(params) {
107
+ registerCleanupHandlers();
108
+ const timeoutMs = params.timeoutMs ?? 10_000;
109
+ const staleMs = params.staleMs ?? 30 * 60 * 1000; // 30 min
110
+ const sessionFile = path.resolve(params.sessionFile);
111
+ const sessionDir = path.dirname(sessionFile);
112
+ await fs.mkdir(sessionDir, { recursive: true });
113
+ let normalizedDir = sessionDir;
114
+ try {
115
+ normalizedDir = await fs.realpath(sessionDir);
116
+ }
117
+ catch {
118
+ // fall back to resolved path
119
+ }
120
+ const normalizedSessionFile = path.join(normalizedDir, path.basename(sessionFile));
121
+ const lockPath = `${normalizedSessionFile}.lock`;
122
+ // Reentrant: already held by this process
123
+ const held = HELD_LOCKS.get(normalizedSessionFile);
124
+ if (held) {
125
+ held.count += 1;
126
+ return {
127
+ release: async () => {
128
+ const current = HELD_LOCKS.get(normalizedSessionFile);
129
+ if (!current)
130
+ return;
131
+ current.count -= 1;
132
+ if (current.count > 0)
133
+ return;
134
+ HELD_LOCKS.delete(normalizedSessionFile);
135
+ await current.handle.close();
136
+ await fs.rm(current.lockPath, { force: true });
137
+ },
138
+ };
139
+ }
140
+ const startedAt = Date.now();
141
+ let attempt = 0;
142
+ while (Date.now() - startedAt < timeoutMs) {
143
+ attempt += 1;
144
+ try {
145
+ // Exclusive create — fails if file exists
146
+ const handle = await fs.open(lockPath, "wx");
147
+ await handle.writeFile(JSON.stringify({ pid: process.pid, createdAt: new Date().toISOString() }, null, 2), "utf8");
148
+ HELD_LOCKS.set(normalizedSessionFile, { count: 1, handle, lockPath });
149
+ return {
150
+ release: async () => {
151
+ const current = HELD_LOCKS.get(normalizedSessionFile);
152
+ if (!current)
153
+ return;
154
+ current.count -= 1;
155
+ if (current.count > 0)
156
+ return;
157
+ HELD_LOCKS.delete(normalizedSessionFile);
158
+ await current.handle.close();
159
+ await fs.rm(current.lockPath, { force: true });
160
+ },
161
+ };
162
+ }
163
+ catch (err) {
164
+ const code = err.code;
165
+ if (code !== "EEXIST")
166
+ throw err;
167
+ // Lock exists — check if stale or owner is dead
168
+ const payload = await readLockPayload(lockPath);
169
+ const createdAt = payload?.createdAt ? Date.parse(payload.createdAt) : NaN;
170
+ const stale = !Number.isFinite(createdAt) || Date.now() - createdAt > staleMs;
171
+ const alive = payload?.pid ? isAlive(payload.pid) : false;
172
+ if (stale || !alive) {
173
+ await fs.rm(lockPath, { force: true });
174
+ continue;
175
+ }
176
+ // Wait with exponential backoff
177
+ const delay = Math.min(1000, 50 * attempt);
178
+ await new Promise((r) => setTimeout(r, delay));
179
+ }
180
+ }
181
+ const payload = await readLockPayload(lockPath);
182
+ const owner = payload?.pid ? `pid=${payload.pid}` : "unknown";
183
+ throw new Error(`session file locked (timeout ${timeoutMs}ms): ${owner} ${lockPath}`);
184
+ }
185
+ //# sourceMappingURL=session-write-lock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-write-lock.js","sourceRoot":"","sources":["../../../src/agent/pi-embedded-runner/session-write-lock.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farazirfan/costar-server-executor",
3
- "version": "1.7.9",
3
+ "version": "1.7.11",
4
4
  "description": "CoStar Server Executor - 24/7 autonomous agent in TypeScript (cloned from OpenClaw)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",