@farazirfan/costar-server-executor 1.7.8 → 1.7.10

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,CAiBzE"}
@@ -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";
@@ -252,6 +254,10 @@ async function runEmbeddedAttempt(params, model, authStorage, modelRegistry) {
252
254
  .then(() => true)
253
255
  .catch(() => false);
254
256
  console.log(`[PI_ATTEMPT] Session file: ${params.sessionFile} (exists: ${hadSessionFile})`);
257
+ // Acquire session write lock to prevent concurrent writes (cron + chat safety)
258
+ const sessionLock = await acquireSessionWriteLock({
259
+ sessionFile: params.sessionFile,
260
+ });
255
261
  // Repair session file if corrupted (e.g., from old resetSessionFile bug writing "{}")
256
262
  if (hadSessionFile) {
257
263
  const repairResult = await repairSessionFileIfNeeded({
@@ -262,11 +268,32 @@ async function runEmbeddedAttempt(params, model, authStorage, modelRegistry) {
262
268
  console.log(`[PI_ATTEMPT] Session file repaired: dropped ${repairResult.droppedLines} malformed lines`);
263
269
  }
264
270
  }
265
- // Open or create session manager
266
- const sessionManager = SessionManager.open(params.sessionFile);
271
+ // Open or create session manager, wrapped with tool result guard
272
+ let sessionManager = guardSessionManager(SessionManager.open(params.sessionFile));
267
273
  // Log session diagnostics BEFORE preparation
268
- const diagBefore = getSessionDiagnostics(sessionManager);
274
+ let diagBefore = getSessionDiagnostics(sessionManager);
269
275
  console.log(`[PI_ATTEMPT] Session loaded — messages: ${diagBefore.messageCount} (user: ${diagBefore.userMessages}, assistant: ${diagBefore.assistantMessages}), flushed: ${diagBefore.flushed}, hasHeader: ${diagBefore.hasHeader}`);
276
+ // CRITICAL FIX: If session file exists but loaded with no header and 0 messages,
277
+ // the file content is in a format SessionManager can't read (e.g., corrupted
278
+ // from a previous run or incompatible format). Reset it so sessions can start fresh.
279
+ if (hadSessionFile && diagBefore.messageCount === 0 && !diagBefore.hasHeader) {
280
+ console.warn(`[PI_ATTEMPT] Session file exists but has no valid header and 0 messages — resetting to start fresh`);
281
+ // Back up the unreadable file
282
+ const backupPath = `${params.sessionFile}.unreadable-${Date.now()}.bak`;
283
+ try {
284
+ await fs.copyFile(params.sessionFile, backupPath);
285
+ console.log(`[PI_ATTEMPT] Backed up unreadable session to ${backupPath}`);
286
+ }
287
+ catch {
288
+ // backup failure is not critical
289
+ }
290
+ // Reset to empty so SessionManager creates a fresh session
291
+ await fs.writeFile(params.sessionFile, "", "utf-8");
292
+ // Re-open with fresh state (with guard)
293
+ sessionManager = guardSessionManager(SessionManager.open(params.sessionFile));
294
+ diagBefore = getSessionDiagnostics(sessionManager);
295
+ console.log(`[PI_ATTEMPT] Session after reset — messages: ${diagBefore.messageCount}, flushed: ${diagBefore.flushed}, hasHeader: ${diagBefore.hasHeader}`);
296
+ }
270
297
  // Prepare session manager for run (fixes pi-coding-agent persistence quirk)
271
298
  // Without this, if session file exists but has no assistant, SessionManager
272
299
  // marks flushed=true and will NEVER persist new messages.
@@ -387,10 +414,30 @@ async function runEmbeddedAttempt(params, model, authStorage, modelRegistry) {
387
414
  // Log post-dispose diagnostics to verify persistence
388
415
  const diagPost = getSessionDiagnostics(sessionManager);
389
416
  console.log(`[PI_ATTEMPT] Session after dispose — messages: ${diagPost.messageCount} (user: ${diagPost.userMessages}, assistant: ${diagPost.assistantMessages}), flushed: ${diagPost.flushed}`);
390
- // Verify session file was actually written
417
+ // Verify session file was actually written and inspect format
391
418
  try {
392
419
  const stat = await fs.stat(params.sessionFile);
393
420
  console.log(`[PI_ATTEMPT] Session file size after dispose: ${stat.size} bytes`);
421
+ // Read first few lines to verify JSONL format (diagnostic for debugging)
422
+ if (stat.size > 0) {
423
+ const content = await fs.readFile(params.sessionFile, "utf-8");
424
+ const lines = content.split("\n").filter((l) => l.trim());
425
+ const firstLine = lines[0] || "(empty)";
426
+ const firstLinePreview = firstLine.length > 200 ? firstLine.slice(0, 200) + "..." : firstLine;
427
+ // Check if the file has a valid JSONL session header
428
+ let hasValidHeader = false;
429
+ try {
430
+ const firstEntry = JSON.parse(firstLine);
431
+ hasValidHeader = firstEntry?.type === "session" && typeof firstEntry?.id === "string";
432
+ }
433
+ catch {
434
+ // not valid JSON
435
+ }
436
+ console.log(`[PI_ATTEMPT] Session file format check — lines: ${lines.length}, hasValidHeader: ${hasValidHeader}, firstLine: ${firstLinePreview}`);
437
+ if (!hasValidHeader && lines.length > 0) {
438
+ console.warn(`[PI_ATTEMPT] ⚠ Session file has NO valid JSONL header! File will be unreadable on next load.`);
439
+ }
440
+ }
394
441
  }
395
442
  catch {
396
443
  console.warn(`[PI_ATTEMPT] Session file does not exist after dispose!`);
@@ -399,6 +446,8 @@ async function runEmbeddedAttempt(params, model, authStorage, modelRegistry) {
399
446
  catch (disposeErr) {
400
447
  console.error(`[PI_ATTEMPT] Session dispose error:`, disposeErr);
401
448
  }
449
+ // Release session write lock (always, even on error)
450
+ await sessionLock.release();
402
451
  }
403
452
  }
404
453
  /**
@@ -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.8",
3
+ "version": "1.7.10",
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",