sessionpipe 0.6.1 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/run.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,UAAU,EAMf,MAAM,EAIN,KAAK,IAAI,EACT,KAAK,UAAU,EAOhB,MAAM,mBAAmB,CAAC;AAsB3B,QAAA,MAAM,OAAO,QAAkF,CAAC;AAEhG,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAM1D;AAED;;;2BAG2B;AAC3B,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,SAAO,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB9F;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CASrD;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAkBpD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,GAAE;IAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAAG,IAAI,EAAE,CAkBnG;AAED,mFAAmF;AACnF,wBAAsB,MAAM,CAC1B,GAAG,EAAE,GAAG,EACR,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CA6GjE;AAKD;;;;;4DAK4D;AAC5D,wBAAsB,KAAK,CACzB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,UAAU,EAAE,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqEjC;AAaD,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,eAAO,MAAM,WAAW,QAAO,MAAkC,CAAC;AAClE,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,MAAkC,CAAC;AAC3E,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,OAAqC,CAAC"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../src/run.ts"],"names":[],"mappings":"AAeA,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,UAAU,EAMf,MAAM,EAIN,KAAK,IAAI,EACT,KAAK,UAAU,EAOhB,MAAM,mBAAmB,CAAC;AA6B3B,QAAA,MAAM,OAAO,QAAkF,CAAC;AAEhG,MAAM,WAAW,GAAG;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,8EAA8E;AAC9E,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,CAM1D;AAED;;;2BAG2B;AAC3B,wBAAsB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,SAAO,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAuB9F;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CASrD;AAED,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAkBpD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,GAAE;IAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAO,GAAG,IAAI,EAAE,CAkBnG;AAED,mFAAmF;AACnF,wBAAsB,MAAM,CAC1B,GAAG,EAAE,GAAG,EACR,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1C,OAAO,CAAC;IAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC,CAoHjE;AAKD;;;;;4DAK4D;AAC5D,wBAAsB,KAAK,CACzB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,UAAU,EAAE,EACzB,MAAM,EAAE,MAAM,EACd,KAAK,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC3C,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAqEjC;AAaD,OAAO,EAAE,OAAO,EAAE,CAAC;AACnB,eAAO,MAAM,WAAW,QAAO,MAAkC,CAAC;AAClE,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,MAAkC,CAAC;AAC3E,eAAO,MAAM,OAAO,GAAI,OAAO,MAAM,KAAG,OAAqC,CAAC"}
package/dist/worker.js CHANGED
@@ -1,8 +1,8 @@
1
1
  #!/usr/bin/env node
2
- // sessionpipe 0.6.1 · Apache-2.0 · https://sessionpipe.org
2
+ // sessionpipe 0.7.0 · Apache-2.0 · https://sessionpipe.org
3
3
 
4
4
  // src/worker.ts
5
- import { readFileSync as readFileSync9, unlinkSync as unlinkSync5 } from "node:fs";
5
+ import { readFileSync as readFileSync10, unlinkSync as unlinkSync5 } from "node:fs";
6
6
 
7
7
  // ../core/src/adapters/antigravity.ts
8
8
  import {
@@ -190,6 +190,9 @@ function readClaude(lines, from) {
190
190
  }
191
191
  return pairTurns(msgs, endOf(lines));
192
192
  }
193
+ function codexInjected(text) {
194
+ return /^<[a-z_-]+>/i.test(text) || /^# AGENTS\.md instructions\b/i.test(text);
195
+ }
193
196
  function readCodex(lines, from) {
194
197
  const msgs = [];
195
198
  for (let i = from; i < lines.length; i++) {
@@ -201,7 +204,7 @@ function readCodex(lines, from) {
201
204
  const text = textParts(p.content, ["input_text", "output_text"]).trim();
202
205
  if (!text) continue;
203
206
  if (p.role === "user") {
204
- if (/^<[a-z_-]+>/i.test(text)) continue;
207
+ if (codexInjected(text)) continue;
205
208
  msgs.push({ role: "user", text, at, line: i });
206
209
  } else if (p.role === "assistant") msgs.push({ role: "assistant", text, at, line: i });
207
210
  }
@@ -1439,7 +1442,8 @@ function uninstallNotify(env) {
1439
1442
  }
1440
1443
  return { file, changed: false };
1441
1444
  }
1442
- function findRollout(threadId, env) {
1445
+ function findRollout(threadId, env = process.env) {
1446
+ if (!/^[A-Za-z0-9-]{8,128}$/.test(threadId)) return null;
1443
1447
  let best = null;
1444
1448
  const walk = (dir, depth) => {
1445
1449
  let names = [];
@@ -1450,7 +1454,7 @@ function findRollout(threadId, env) {
1450
1454
  }
1451
1455
  for (const n of names.sort().reverse()) {
1452
1456
  const p = path6.join(dir, n);
1453
- if (n.endsWith(".jsonl") && n.includes(threadId)) {
1457
+ if (n.endsWith(`-${threadId}.jsonl`)) {
1454
1458
  best = p;
1455
1459
  return;
1456
1460
  }
@@ -1655,7 +1659,7 @@ function codexFacts(file) {
1655
1659
  const p = j.payload;
1656
1660
  if (j.type !== "response_item" || !p || p.type !== "message" || p.role !== "user") continue;
1657
1661
  const text = (p.content ?? []).filter((b) => b && b.type === "input_text" && typeof b.text === "string").map((b) => b.text).join("\n").trim();
1658
- if (!text || /^<[a-z_-]+>/i.test(text)) continue;
1662
+ if (!text || codexInjected(text)) continue;
1659
1663
  const line = text.split("\n").find((l) => l.trim()) ?? "";
1660
1664
  out.title = line.length > 80 ? `${line.slice(0, 80).replace(/\s+\S*$/, "")}\u2026` : line;
1661
1665
  out.title_source = "first-ask";
@@ -2481,25 +2485,50 @@ var StdoutSink = class {
2481
2485
  import {
2482
2486
  appendFileSync as appendFileSync3,
2483
2487
  existsSync as existsSync8,
2484
- mkdirSync as mkdirSync7,
2488
+ mkdirSync as mkdirSync8,
2485
2489
  readdirSync as readdirSync6,
2486
- readFileSync as readFileSync8,
2487
- renameSync as renameSync2,
2490
+ readFileSync as readFileSync9,
2491
+ renameSync as renameSync3,
2488
2492
  statSync as statSync5,
2489
2493
  unlinkSync as unlinkSync4,
2490
- writeFileSync as writeFileSync6
2494
+ writeFileSync as writeFileSync7
2491
2495
  } from "node:fs";
2492
2496
  import os3 from "node:os";
2493
- import path12 from "node:path";
2497
+ import path13 from "node:path";
2498
+
2499
+ // src/control/aliases.ts
2500
+ import { chmodSync as chmodSync2, mkdirSync as mkdirSync7, readFileSync as readFileSync8, renameSync as renameSync2, writeFileSync as writeFileSync6 } from "node:fs";
2501
+ import path11 from "node:path";
2502
+ var aliasFile = (controlDir) => path11.join(controlDir, "aliases.json");
2503
+ function readAliases(file) {
2504
+ try {
2505
+ const j = JSON.parse(readFileSync8(file, "utf8"));
2506
+ if (!j || typeof j !== "object" || Array.isArray(j)) return {};
2507
+ const out = {};
2508
+ for (const [k, v] of Object.entries(j)) {
2509
+ const a = v;
2510
+ if (a && typeof a.id === "string" && a.id && typeof a.cwd === "string")
2511
+ out[k] = { id: a.id, cwd: a.cwd, at: typeof a.at === "string" ? a.at : "" };
2512
+ }
2513
+ return out;
2514
+ } catch {
2515
+ return {};
2516
+ }
2517
+ }
2518
+ function receiverIdOf(all, harness, id) {
2519
+ const prefix = `${harness}:`;
2520
+ for (const [k, a] of Object.entries(all)) if (a.id === id && k.startsWith(prefix)) return k.slice(prefix.length);
2521
+ return null;
2522
+ }
2494
2523
 
2495
2524
  // src/control/local.ts
2496
2525
  import net from "node:net";
2497
2526
  import os2 from "node:os";
2498
- import path11 from "node:path";
2527
+ import path12 from "node:path";
2499
2528
  function socketPath(state, env = process.env) {
2500
2529
  if (env.SESSIONPIPE_SOCKET) return env.SESSIONPIPE_SOCKET;
2501
2530
  if (process.platform === "win32") return `\\\\.\\pipe\\sessionpipe-control-${os2.userInfo().username}`;
2502
- return path11.join(state, "control.sock");
2531
+ return path12.join(state, "control.sock");
2503
2532
  }
2504
2533
  function ask(sock, req, timeoutMs) {
2505
2534
  return new Promise((resolve) => {
@@ -2651,16 +2680,16 @@ function sinkWithSecrets(s, run = defaultRunner) {
2651
2680
  }
2652
2681
 
2653
2682
  // src/run.ts
2654
- async function tellDaemon(state, job2, session, transcript) {
2683
+ async function tellDaemon(state, job2, session, cwd, transcript) {
2655
2684
  const sock = socketPath(state);
2656
2685
  if (process.platform !== "win32" && !existsSync8(sock)) return;
2657
2686
  await ask(
2658
2687
  sock,
2659
2688
  {
2660
2689
  op: "event",
2661
- session: `claude-code:${session}`,
2690
+ session: `${job2.harness}:${session}`,
2662
2691
  event: job2.event,
2663
- cwd: job2.cwd,
2692
+ ...cwd ? { cwd } : {},
2664
2693
  ...transcript ? { transcript } : {}
2665
2694
  },
2666
2695
  300
@@ -2668,9 +2697,9 @@ async function tellDaemon(state, job2, session, transcript) {
2668
2697
  }
2669
2698
  function enqueueJob(state, job2) {
2670
2699
  const jobs = jobsDir(state);
2671
- mkdirSync7(jobs, { recursive: true, mode: 448 });
2672
- const f = path12.join(jobs, `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}.json`);
2673
- writeFileSync6(f, JSON.stringify(job2), { mode: 384 });
2700
+ mkdirSync8(jobs, { recursive: true, mode: 448 });
2701
+ const f = path13.join(jobs, `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 8)}.json`);
2702
+ writeFileSync7(f, JSON.stringify(job2), { mode: 384 });
2674
2703
  return f;
2675
2704
  }
2676
2705
  async function sweepJobs(state, olderThanMs = 3e3, limit = 20) {
@@ -2683,11 +2712,11 @@ async function sweepJobs(state, olderThanMs = 3e3, limit = 20) {
2683
2712
  }
2684
2713
  let ran = 0;
2685
2714
  for (const n of names.sort().slice(0, limit)) {
2686
- const f = path12.join(jobs, n);
2715
+ const f = path13.join(jobs, n);
2687
2716
  let job2 = null;
2688
2717
  try {
2689
2718
  if (Date.now() - statSync5(f).mtimeMs < olderThanMs) continue;
2690
- job2 = JSON.parse(readFileSync8(f, "utf8"));
2719
+ job2 = JSON.parse(readFileSync9(f, "utf8"));
2691
2720
  unlinkSync4(f);
2692
2721
  } catch {
2693
2722
  continue;
@@ -2700,10 +2729,10 @@ async function sweepJobs(state, olderThanMs = 3e3, limit = 20) {
2700
2729
  }
2701
2730
  function log(state, line) {
2702
2731
  try {
2703
- mkdirSync7(state, { recursive: true, mode: 448 });
2704
- const f = path12.join(state, "log");
2732
+ mkdirSync8(state, { recursive: true, mode: 448 });
2733
+ const f = path13.join(state, "log");
2705
2734
  try {
2706
- if (statSync5(f).size > 1024 * 1024) renameSync2(f, `${f}.1`);
2735
+ if (statSync5(f).size > 1024 * 1024) renameSync3(f, `${f}.1`);
2707
2736
  } catch {
2708
2737
  }
2709
2738
  appendFileSync3(f, `${(/* @__PURE__ */ new Date()).toISOString()} ${line}
@@ -2712,11 +2741,11 @@ function log(state, line) {
2712
2741
  }
2713
2742
  }
2714
2743
  function factsState(state) {
2715
- const file = (h, s) => path12.join(state, "facts", safeId(h), `${safeId(s)}.json`);
2744
+ const file = (h, s) => path13.join(state, "facts", safeId(h), `${safeId(s)}.json`);
2716
2745
  return {
2717
2746
  get(h, s) {
2718
2747
  try {
2719
- return JSON.parse(readFileSync8(file(h, s), "utf8"));
2748
+ return JSON.parse(readFileSync9(file(h, s), "utf8"));
2720
2749
  } catch {
2721
2750
  return {};
2722
2751
  }
@@ -2725,8 +2754,8 @@ function factsState(state) {
2725
2754
  const cur = this.get(h, s);
2726
2755
  const next = { ...cur, ...patch };
2727
2756
  if (JSON.stringify(next) === JSON.stringify(cur)) return;
2728
- mkdirSync7(path12.dirname(file(h, s)), { recursive: true, mode: 448 });
2729
- writeFileSync6(file(h, s), JSON.stringify(next), { mode: 384 });
2757
+ mkdirSync8(path13.dirname(file(h, s)), { recursive: true, mode: 448 });
2758
+ writeFileSync7(file(h, s), JSON.stringify(next), { mode: 384 });
2730
2759
  }
2731
2760
  };
2732
2761
  }
@@ -2754,30 +2783,33 @@ async function runJob(job2, opts = {}) {
2754
2783
  if (!adapter) return { events: [], delivered: {} };
2755
2784
  const r = adapter.fromHook({ argv: job2.argv, stdin: job2.stdin, env: { ...process.env, ...job2.env }, cwd: job2.cwd });
2756
2785
  if (!r || !r.session.id) return { events: [], delivered: {} };
2757
- if (job2.harness === "claude-code") await tellDaemon(state, job2, r.session.id, r.transcript);
2786
+ const id = receiverIdOf(readAliases(aliasFile(path13.join(state, "control"))), job2.harness, r.session.id) ?? r.session.id;
2787
+ await tellDaemon(state, job2, id, r.session.cwd, r.transcript);
2758
2788
  const outbox = new Outbox(state);
2759
- const ref = { harness: job2.harness, session: r.session.id };
2789
+ const ref = { harness: job2.harness, session: id };
2760
2790
  let release = takeLock(state, ref);
2761
2791
  for (let wait = 50; !release && wait <= 3200; wait *= 2) {
2762
2792
  await new Promise((res) => setTimeout(res, wait));
2763
2793
  release = takeLock(state, ref);
2764
2794
  }
2765
2795
  if (!release) {
2766
- log(state, `${job2.harness} ${job2.event}: session ${r.session.id} locked for 6 s, re-queued`);
2796
+ log(state, `${job2.harness} ${job2.event}: session ${id} locked for 6 s, re-queued`);
2767
2797
  enqueueJob(state, job2);
2768
2798
  return { events: [], delivered: {} };
2769
2799
  }
2770
2800
  try {
2771
2801
  const facts = factsState(state);
2772
- const mem = facts.get(job2.harness, r.session.id);
2802
+ const mem = facts.get(job2.harness, id);
2773
2803
  const heavy = !/^(PreToolUse|PostToolUse|PostToolUseFailure|BeforeTool|AfterTool|PostInvocation)$/.test(job2.event);
2774
2804
  let learned = {};
2775
2805
  if (heavy) {
2776
2806
  const f = adapter.facts(r.session, r.transcript, r.hints ?? {}, facts);
2777
2807
  const { started_at: _s, last_at: _l, first_ask: _fa, harness_version, ...rest } = f;
2778
2808
  learned = rest;
2779
- if (harness_version) facts.save(job2.harness, r.session.id, { harness_version });
2780
- facts.save(job2.harness, r.session.id, { session: { ...mem.session, ...learned } });
2809
+ if (harness_version) facts.save(job2.harness, id, { harness_version });
2810
+ facts.save(job2.harness, id, { session: { ...mem.session, ...learned } });
2811
+ if (job2.harness === "antigravity" && r.session.cwd && path13.isAbsolute(r.session.cwd))
2812
+ facts.save(job2.harness, id, { cwd: r.session.cwd });
2781
2813
  }
2782
2814
  const known = mem.session ?? {};
2783
2815
  const cwdRaw = learned.cwd ?? r.session.cwd ?? known.cwd;
@@ -2787,13 +2819,13 @@ async function runJob(job2, opts = {}) {
2787
2819
  ...learned,
2788
2820
  ...git,
2789
2821
  ...learned.branch ? { branch: learned.branch } : {},
2790
- id: r.session.id,
2822
+ id,
2791
2823
  seq: 0,
2792
2824
  machine: machineName(cfg, os3.hostname()),
2793
2825
  ...cwdRaw ? { cwd: tilde(cwdRaw) } : {},
2794
2826
  ...r.session.model ? { model: r.session.model } : {}
2795
2827
  };
2796
- const version = facts.get(job2.harness, r.session.id).harness_version ?? void 0;
2828
+ const version = facts.get(job2.harness, id).harness_version ?? void 0;
2797
2829
  const events = [];
2798
2830
  for (const a of r.events) {
2799
2831
  const e = makeEvent(a, {
@@ -2805,7 +2837,7 @@ async function runJob(job2, opts = {}) {
2805
2837
  }
2806
2838
  const wantsTranscript = cfg.sinks.some((s) => !s.paused && Math.min(s.tier, s.max_tier ?? 3) >= 2);
2807
2839
  if (wantsTranscript && r.transcript && r.events.some((e) => e.type === "turn.ended" || e.type === "session.ended")) {
2808
- const cur = facts.get(job2.harness, r.session.id);
2840
+ const cur = facts.get(job2.harness, id);
2809
2841
  const fromLine = Number(cur.transcript_line) || 0;
2810
2842
  let turnNo = Number(cur.transcript_turns) || 0;
2811
2843
  const read = adapter.readTranscript(r.transcript, fromLine);
@@ -2825,17 +2857,13 @@ async function runJob(job2, opts = {}) {
2825
2857
  )
2826
2858
  );
2827
2859
  }
2828
- if (read.turns.length)
2829
- facts.save(job2.harness, r.session.id, { transcript_line: read.line, transcript_turns: turnNo });
2860
+ if (read.turns.length) facts.save(job2.harness, id, { transcript_line: read.line, transcript_turns: turnNo });
2830
2861
  }
2831
2862
  outbox.append(
2832
2863
  ref,
2833
2864
  events.map((e) => ({ ...e, session: redactDeep(e.session), data: redactDeep(e.data) }))
2834
2865
  );
2835
- log(
2836
- state,
2837
- `${job2.harness} ${job2.event}: ${events.map((e) => e.type).join(",") || "nothing"} (${r.session.id.slice(0, 8)})`
2838
- );
2866
+ log(state, `${job2.harness} ${job2.event}: ${events.map((e) => e.type).join(",") || "nothing"} (${id.slice(0, 8)})`);
2839
2867
  const delivered = await flush(state, cfg.sinks, outbox, ref);
2840
2868
  if (Math.random() < 0.02) outbox.prune(cfg.keep_days ?? 30);
2841
2869
  return { events, delivered };
@@ -2926,14 +2954,14 @@ function applySinkVerdict(name, res) {
2926
2954
  } catch {
2927
2955
  }
2928
2956
  }
2929
- var jobsDir = (state) => path12.join(state, "jobs");
2957
+ var jobsDir = (state) => path13.join(state, "jobs");
2930
2958
 
2931
2959
  // src/worker.ts
2932
2960
  var jobFile = process.argv[2];
2933
2961
  if (!jobFile) process.exit(0);
2934
2962
  var job = null;
2935
2963
  try {
2936
- job = JSON.parse(readFileSync9(jobFile, "utf8"));
2964
+ job = JSON.parse(readFileSync10(jobFile, "utf8"));
2937
2965
  } catch {
2938
2966
  }
2939
2967
  try {