@staff0rd/assist 0.433.5 → 0.434.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/index.js CHANGED
@@ -6,7 +6,7 @@ import { Command } from "commander";
6
6
  // package.json
7
7
  var package_default = {
8
8
  name: "@staff0rd/assist",
9
- version: "0.433.5",
9
+ version: "0.434.0",
10
10
  type: "module",
11
11
  main: "dist/index.js",
12
12
  bin: {
@@ -4198,7 +4198,7 @@ ${failed2.length} script(s) failed:`);
4198
4198
  }
4199
4199
  }
4200
4200
  function runEntry(entry) {
4201
- return new Promise((resolve19) => {
4201
+ return new Promise((resolve20) => {
4202
4202
  const startTime = Date.now();
4203
4203
  const child = spawnCommand(
4204
4204
  entry.fullCommand,
@@ -4210,7 +4210,7 @@ function runEntry(entry) {
4210
4210
  child.on("close", (code) => {
4211
4211
  const exitCode = code ?? 1;
4212
4212
  flushIfFailed(exitCode, chunks);
4213
- resolve19({
4213
+ resolve20({
4214
4214
  script: entry.name,
4215
4215
  code: exitCode,
4216
4216
  durationMs: Date.now() - startTime
@@ -5357,8 +5357,8 @@ function spawnInherit(command, args, options2 = {}) {
5357
5357
  env,
5358
5358
  cwd: options2.cwd
5359
5359
  });
5360
- const done2 = new Promise((resolve19, reject) => {
5361
- child.on("close", (code) => resolve19(code ?? 0));
5360
+ const done2 = new Promise((resolve20, reject) => {
5361
+ child.on("close", (code) => resolve20(code ?? 0));
5362
5362
  child.on("error", reject);
5363
5363
  });
5364
5364
  return { child, done: done2 };
@@ -6431,9 +6431,9 @@ Failed to launch Claude for ${context}: ${message2}`)
6431
6431
  // src/commands/sessions/daemon/connectToDaemon.ts
6432
6432
  import * as net from "net";
6433
6433
  function connectToDaemon() {
6434
- return new Promise((resolve19, reject) => {
6434
+ return new Promise((resolve20, reject) => {
6435
6435
  const socket = net.connect(daemonPaths.socket);
6436
- socket.once("connect", () => resolve19(socket));
6436
+ socket.once("connect", () => resolve20(socket));
6437
6437
  socket.once("error", reject);
6438
6438
  });
6439
6439
  }
@@ -6449,7 +6449,7 @@ async function isDaemonRunning() {
6449
6449
  // src/commands/sessions/daemon/sendToDaemon.ts
6450
6450
  var WRITE_TIMEOUT_MS = 500;
6451
6451
  function sendToDaemon(message2) {
6452
- return new Promise((resolve19, reject) => {
6452
+ return new Promise((resolve20, reject) => {
6453
6453
  connectToDaemon().then((socket) => {
6454
6454
  const timer = setTimeout(() => {
6455
6455
  socket.destroy();
@@ -6463,7 +6463,7 @@ function sendToDaemon(message2) {
6463
6463
  `, () => {
6464
6464
  clearTimeout(timer);
6465
6465
  socket.end();
6466
- resolve19();
6466
+ resolve20();
6467
6467
  });
6468
6468
  }, reject);
6469
6469
  });
@@ -6486,7 +6486,7 @@ function readSocketLines(socket, onLine) {
6486
6486
  // src/commands/sessions/daemon/sendToDaemonAwaitAck.ts
6487
6487
  var ACK_TIMEOUT_MS = 1e3;
6488
6488
  function sendToDaemonAwaitAck(message2) {
6489
- return new Promise((resolve19, reject) => {
6489
+ return new Promise((resolve20, reject) => {
6490
6490
  connectToDaemon().then((socket) => {
6491
6491
  let settled = false;
6492
6492
  const finish = (error) => {
@@ -6495,7 +6495,7 @@ function sendToDaemonAwaitAck(message2) {
6495
6495
  clearTimeout(timer);
6496
6496
  socket.destroy();
6497
6497
  if (error) reject(error);
6498
- else resolve19();
6498
+ else resolve20();
6499
6499
  };
6500
6500
  const timer = setTimeout(
6501
6501
  () => finish(new Error("timed out awaiting daemon ack")),
@@ -6569,7 +6569,7 @@ async function deliverReliably(sessionId, status3, payload) {
6569
6569
  }
6570
6570
  }
6571
6571
  function sleep(ms) {
6572
- return new Promise((resolve19) => setTimeout(resolve19, ms));
6572
+ return new Promise((resolve20) => setTimeout(resolve20, ms));
6573
6573
  }
6574
6574
  function describeError(error) {
6575
6575
  return error instanceof Error ? error.message : String(error);
@@ -8065,7 +8065,7 @@ function spawnDaemon(reason) {
8065
8065
  child.unref();
8066
8066
  }
8067
8067
  function delay(ms) {
8068
- return new Promise((resolve19) => setTimeout(resolve19, ms));
8068
+ return new Promise((resolve20) => setTimeout(resolve20, ms));
8069
8069
  }
8070
8070
 
8071
8071
  // src/shared/createBundleHandler.ts
@@ -8333,12 +8333,12 @@ async function loadVisibleItems(req) {
8333
8333
 
8334
8334
  // src/commands/backlog/web/parseStatusBody.ts
8335
8335
  function readBody(req) {
8336
- return new Promise((resolve19, reject) => {
8336
+ return new Promise((resolve20, reject) => {
8337
8337
  let body = "";
8338
8338
  req.on("data", (chunk) => {
8339
8339
  body += chunk.toString();
8340
8340
  });
8341
- req.on("end", () => resolve19(body));
8341
+ req.on("end", () => resolve20(body));
8342
8342
  req.on("error", reject);
8343
8343
  });
8344
8344
  }
@@ -8620,6 +8620,64 @@ async function diff2(req, res) {
8620
8620
  }
8621
8621
  }
8622
8622
 
8623
+ // src/commands/sessions/web/fileContent.ts
8624
+ import { readFile, stat as stat2 } from "fs/promises";
8625
+ import { isAbsolute, relative as relative2, resolve as resolve9 } from "path";
8626
+
8627
+ // src/commands/sessions/web/windowsCwdToWslPath.ts
8628
+ function windowsCwdToWslPath(cwd) {
8629
+ const match = /^([A-Za-z]):[\\/](.*)$/.exec(cwd);
8630
+ if (!match) return cwd;
8631
+ const drive = match[1].toLowerCase();
8632
+ const rest = match[2].replace(/\\/g, "/");
8633
+ return `/mnt/${drive}/${rest}`;
8634
+ }
8635
+
8636
+ // src/commands/sessions/web/toGitCwd.ts
8637
+ function toGitCwd(cwd) {
8638
+ return detectPlatform() === "wsl" ? windowsCwdToWslPath(cwd) : cwd;
8639
+ }
8640
+
8641
+ // src/commands/sessions/web/fileContent.ts
8642
+ var MAX_FILE_BYTES = 2 * 1024 * 1024;
8643
+ function resolveWithinCwd(cwd, path71) {
8644
+ const root = resolve9(toGitCwd(cwd));
8645
+ const target = resolve9(root, path71);
8646
+ const rel = relative2(root, target);
8647
+ if (rel === "" || rel.startsWith("..") || isAbsolute(rel)) return null;
8648
+ return target;
8649
+ }
8650
+ async function fileContent(req, res) {
8651
+ const cwd = getCwdParam(req, res);
8652
+ if (!cwd) return;
8653
+ const path71 = new URL(req.url ?? "/", "http://localhost").searchParams.get(
8654
+ "path"
8655
+ );
8656
+ if (!path71) {
8657
+ respondJson(res, 400, { error: "Missing path" });
8658
+ return;
8659
+ }
8660
+ const target = resolveWithinCwd(cwd, path71);
8661
+ if (!target) {
8662
+ respondJson(res, 400, { error: "Path outside cwd" });
8663
+ return;
8664
+ }
8665
+ try {
8666
+ const info = await stat2(target);
8667
+ if (!info.isFile()) {
8668
+ respondJson(res, 404, { error: "File not found" });
8669
+ return;
8670
+ }
8671
+ if (info.size > MAX_FILE_BYTES) {
8672
+ respondJson(res, 413, { error: "File too large" });
8673
+ return;
8674
+ }
8675
+ respondJson(res, 200, { content: await readFile(target, "utf8") });
8676
+ } catch {
8677
+ respondJson(res, 404, { error: "File not found" });
8678
+ }
8679
+ }
8680
+
8623
8681
  // src/shared/db/listBackups.ts
8624
8682
  import { desc } from "drizzle-orm";
8625
8683
  async function listBackups(db) {
@@ -8663,20 +8721,6 @@ function getHtml() {
8663
8721
  </html>`;
8664
8722
  }
8665
8723
 
8666
- // src/commands/sessions/web/windowsCwdToWslPath.ts
8667
- function windowsCwdToWslPath(cwd) {
8668
- const match = /^([A-Za-z]):[\\/](.*)$/.exec(cwd);
8669
- if (!match) return cwd;
8670
- const drive = match[1].toLowerCase();
8671
- const rest = match[2].replace(/\\/g, "/");
8672
- return `/mnt/${drive}/${rest}`;
8673
- }
8674
-
8675
- // src/commands/sessions/web/toGitCwd.ts
8676
- function toGitCwd(cwd) {
8677
- return detectPlatform() === "wsl" ? windowsCwdToWslPath(cwd) : cwd;
8678
- }
8679
-
8680
8724
  // src/commands/sessions/web/handleServerRuns.ts
8681
8725
  function getServerRuns(rawCwd) {
8682
8726
  try {
@@ -9242,17 +9286,17 @@ async function stopDaemon() {
9242
9286
  }
9243
9287
  }
9244
9288
  function closedBeforeTimeout(socket) {
9245
- return new Promise((resolve19) => {
9289
+ return new Promise((resolve20) => {
9246
9290
  const timer = setTimeout(() => {
9247
9291
  socket.destroy();
9248
- resolve19(false);
9292
+ resolve20(false);
9249
9293
  }, STOP_TIMEOUT_MS);
9250
9294
  socket.resume();
9251
9295
  socket.on("error", () => {
9252
9296
  });
9253
9297
  socket.once("close", () => {
9254
9298
  clearTimeout(timer);
9255
- resolve19(true);
9299
+ resolve20(true);
9256
9300
  });
9257
9301
  });
9258
9302
  }
@@ -9303,8 +9347,8 @@ async function restartWeb(req, res, deps2 = {}) {
9303
9347
  respondJson(res, 400, { error: "Invalid target" });
9304
9348
  return;
9305
9349
  }
9306
- await new Promise((resolve19) => {
9307
- res.once("finish", resolve19);
9350
+ await new Promise((resolve20) => {
9351
+ res.once("finish", resolve20);
9308
9352
  respondJson(res, 200, { ok: true });
9309
9353
  });
9310
9354
  if (target === "daemon" || target === "both") {
@@ -9488,6 +9532,7 @@ var routes2 = {
9488
9532
  "GET /api/github-url": githubUrl,
9489
9533
  "GET /api/git-status": gitStatus,
9490
9534
  "GET /api/diff": diff2,
9535
+ "GET /api/file": fileContent,
9491
9536
  "GET /api/jira-site": jiraSite,
9492
9537
  "GET /api/harness": harnessCapabilities,
9493
9538
  "GET /api/pr-status": prStatus,
@@ -10275,7 +10320,7 @@ function registerExportCommand(cmd) {
10275
10320
  }
10276
10321
 
10277
10322
  // src/commands/backlog/import/index.ts
10278
- import { readFile } from "fs/promises";
10323
+ import { readFile as readFile2 } from "fs/promises";
10279
10324
  import chalk71 from "chalk";
10280
10325
 
10281
10326
  // src/commands/backlog/dump/countCopyRows.ts
@@ -10452,7 +10497,7 @@ async function restore(client, parsed) {
10452
10497
 
10453
10498
  // src/commands/backlog/import/index.ts
10454
10499
  async function importBacklog(file, options2 = {}) {
10455
- const raw = file ? await readFile(file) : await readStdinBuffer();
10500
+ const raw = file ? await readFile2(file) : await readStdinBuffer();
10456
10501
  const parsed = parseDump(raw);
10457
10502
  validateDump(parsed);
10458
10503
  const { tables } = parsed.header;
@@ -12396,7 +12441,7 @@ function findBuiltinDenyRaw(rawCommand) {
12396
12441
  }
12397
12442
 
12398
12443
  // src/shared/isApprovedRead.ts
12399
- import { resolve as resolve10, sep } from "path";
12444
+ import { resolve as resolve11, sep } from "path";
12400
12445
 
12401
12446
  // src/shared/tokenize.ts
12402
12447
  function tokenize(command) {
@@ -12478,7 +12523,7 @@ function extractGraphqlQuery(args) {
12478
12523
 
12479
12524
  // src/shared/loadCliReads.ts
12480
12525
  import { existsSync as existsSync29, readFileSync as readFileSync23, writeFileSync as writeFileSync22 } from "fs";
12481
- import { dirname as dirname21, resolve as resolve9 } from "path";
12526
+ import { dirname as dirname21, resolve as resolve10 } from "path";
12482
12527
  import { fileURLToPath as fileURLToPath5 } from "url";
12483
12528
  var __filename3 = fileURLToPath5(import.meta.url);
12484
12529
  var __dirname4 = dirname21(__filename3);
@@ -12493,13 +12538,13 @@ var cachedReads;
12493
12538
  var cachedWrites;
12494
12539
  function getCliReadsLines() {
12495
12540
  if (!cachedReads) {
12496
- cachedReads = readLines(resolve9(packageRoot(), "allowed.cli-reads"));
12541
+ cachedReads = readLines(resolve10(packageRoot(), "allowed.cli-reads"));
12497
12542
  }
12498
12543
  return cachedReads;
12499
12544
  }
12500
12545
  function getCliWritesLines() {
12501
12546
  if (!cachedWrites) {
12502
- cachedWrites = readLines(resolve9(packageRoot(), "allowed.cli-writes"));
12547
+ cachedWrites = readLines(resolve10(packageRoot(), "allowed.cli-writes"));
12503
12548
  }
12504
12549
  return cachedWrites;
12505
12550
  }
@@ -12508,7 +12553,7 @@ function loadCliReads() {
12508
12553
  }
12509
12554
  function saveCliReads(commands) {
12510
12555
  writeFileSync22(
12511
- resolve9(packageRoot(), "allowed.cli-reads"),
12556
+ resolve10(packageRoot(), "allowed.cli-reads"),
12512
12557
  `${commands.join("\n")}
12513
12558
  `
12514
12559
  );
@@ -12630,19 +12675,19 @@ function isCdToCwd(command) {
12630
12675
  const parts = command.split(/\s+/);
12631
12676
  if (parts[0] !== "cd" || parts.length > 2) return false;
12632
12677
  if (parts.length === 1) return false;
12633
- const resolved = resolve10(normalizeMsysPath(parts[1]));
12634
- return resolved === resolve10(process.cwd());
12678
+ const resolved = resolve11(normalizeMsysPath(parts[1]));
12679
+ return resolved === resolve11(process.cwd());
12635
12680
  }
12636
12681
  function isCdToReadAllowedDir(command) {
12637
12682
  const parts = command.split(/\s+/);
12638
12683
  if (parts[0] !== "cd" || parts.length !== 2) return void 0;
12639
- const target = resolve10(normalizeMsysPath(parts[1]));
12684
+ const target = resolve11(normalizeMsysPath(parts[1]));
12640
12685
  for (const entry of readSettingsPerms("allow")) {
12641
12686
  const m = entry.match(READ_RE);
12642
12687
  if (!m) continue;
12643
12688
  const base = globBaseDir(m[1]);
12644
12689
  if (!base) continue;
12645
- const resolved = resolve10(normalizeMsysPath(base));
12690
+ const resolved = resolve11(normalizeMsysPath(base));
12646
12691
  if (target === resolved || target.startsWith(resolved + sep)) {
12647
12692
  return `cd to Read-allowed directory: ${entry}`;
12648
12693
  }
@@ -12959,12 +13004,12 @@ function hasSubcommands(helpText) {
12959
13004
  // src/commands/permitCliReads/runHelp.ts
12960
13005
  import { exec as exec2 } from "child_process";
12961
13006
  function runHelp(args) {
12962
- return new Promise((resolve19) => {
13007
+ return new Promise((resolve20) => {
12963
13008
  exec2(
12964
13009
  `${args.join(" ")} --help`,
12965
13010
  { encoding: "utf8", timeout: 3e4 },
12966
13011
  (_err, stdout, stderr) => {
12967
- resolve19(stdout || stderr || "");
13012
+ resolve20(stdout || stderr || "");
12968
13013
  }
12969
13014
  );
12970
13015
  });
@@ -15285,10 +15330,10 @@ function findSlnFiles(dir, maxDepth, depth = 0) {
15285
15330
  continue;
15286
15331
  const full = path32.join(dir, entry);
15287
15332
  try {
15288
- const stat2 = statSync5(full);
15289
- if (stat2.isFile() && entry.endsWith(".sln")) {
15333
+ const stat3 = statSync5(full);
15334
+ if (stat3.isFile() && entry.endsWith(".sln")) {
15290
15335
  results.push(full);
15291
- } else if (stat2.isDirectory()) {
15336
+ } else if (stat3.isDirectory()) {
15292
15337
  results.push(...findSlnFiles(full, maxDepth, depth + 1));
15293
15338
  }
15294
15339
  } catch {
@@ -16753,12 +16798,12 @@ function registerList(program2) {
16753
16798
 
16754
16799
  // src/commands/mermaid/index.ts
16755
16800
  import { mkdirSync as mkdirSync16, readdirSync as readdirSync9 } from "fs";
16756
- import { resolve as resolve12 } from "path";
16801
+ import { resolve as resolve13 } from "path";
16757
16802
  import chalk156 from "chalk";
16758
16803
 
16759
16804
  // src/commands/mermaid/exportFile.ts
16760
16805
  import { readFileSync as readFileSync36, writeFileSync as writeFileSync31 } from "fs";
16761
- import { basename as basename11, extname as extname2, resolve as resolve11 } from "path";
16806
+ import { basename as basename11, extname as extname2, resolve as resolve12 } from "path";
16762
16807
  import chalk155 from "chalk";
16763
16808
 
16764
16809
  // src/commands/mermaid/renderBlock.ts
@@ -16806,7 +16851,7 @@ async function exportFile(file, outDir, krokiUrl, onlyIndex) {
16806
16851
  for (const [i, source] of blocks.entries()) {
16807
16852
  const idx = i + 1;
16808
16853
  if (onlyIndex !== void 0 && idx !== onlyIndex) continue;
16809
- const outPath = resolve11(outDir, `${stem}-${idx}.svg`);
16854
+ const outPath = resolve12(outDir, `${stem}-${idx}.svg`);
16810
16855
  const svg = await renderBlock(krokiUrl, source);
16811
16856
  writeFileSync31(outPath, svg, "utf8");
16812
16857
  console.log(chalk155.green(` \u2192 ${outPath}`));
@@ -16820,7 +16865,7 @@ function extractMermaidBlocks(markdown) {
16820
16865
  // src/commands/mermaid/index.ts
16821
16866
  async function mermaidExport(file, options2 = {}) {
16822
16867
  const { mermaid } = loadConfig();
16823
- const outDir = resolve12(process.cwd(), options2.out ?? ".");
16868
+ const outDir = resolve13(process.cwd(), options2.out ?? ".");
16824
16869
  mkdirSync16(outDir, { recursive: true });
16825
16870
  if (options2.index !== void 0) {
16826
16871
  if (!Number.isInteger(options2.index) || options2.index < 1) {
@@ -16945,7 +16990,7 @@ function createNetcapHandler(options2) {
16945
16990
  }
16946
16991
 
16947
16992
  // src/commands/netcap/prepareExtensionForLoad.ts
16948
- import { cp, readFile as readFile2, writeFile as writeFile3 } from "fs/promises";
16993
+ import { cp, readFile as readFile3, writeFile as writeFile3 } from "fs/promises";
16949
16994
  import { networkInterfaces } from "os";
16950
16995
  import { join as join47 } from "path";
16951
16996
  import chalk157 from "chalk";
@@ -16971,7 +17016,7 @@ function lanIPv4() {
16971
17016
  }
16972
17017
  async function configureBackground(dir, host, port, filter) {
16973
17018
  const file = join47(dir, "background.js");
16974
- const source = await readFile2(file, "utf8");
17019
+ const source = await readFile3(file, "utf8");
16975
17020
  await writeFile3(
16976
17021
  file,
16977
17022
  source.replace(
@@ -17010,7 +17055,7 @@ async function prepareExtensionForLoad(port, filter = "") {
17010
17055
  }
17011
17056
 
17012
17057
  // src/commands/netcap/resolveNetcapOutPath.ts
17013
- import { isAbsolute, join as join49, resolve as resolve13 } from "path";
17058
+ import { isAbsolute as isAbsolute2, join as join49, resolve as resolve14 } from "path";
17014
17059
 
17015
17060
  // src/commands/netcap/defaultCapturePath.ts
17016
17061
  import { homedir as homedir19 } from "os";
@@ -17022,7 +17067,7 @@ function defaultCapturePath() {
17022
17067
  // src/commands/netcap/resolveNetcapOutPath.ts
17023
17068
  function resolveNetcapOutPath(out) {
17024
17069
  if (!out) return defaultCapturePath();
17025
- const dir = isAbsolute(out) ? out : resolve13(process.cwd(), out);
17070
+ const dir = isAbsolute2(out) ? out : resolve14(process.cwd(), out);
17026
17071
  return join49(dir, "capture.jsonl");
17027
17072
  }
17028
17073
 
@@ -17113,25 +17158,25 @@ function isVisibleText(t) {
17113
17158
  return /[a-zA-Z]{3,}/.test(t);
17114
17159
  }
17115
17160
  var isHashtag = (t) => /^#[A-Za-z0-9_]+$/.test(t);
17116
- function collectRscText(v, resolve19, sink2, seen) {
17161
+ function collectRscText(v, resolve20, sink2, seen) {
17117
17162
  if (v == null) return;
17118
17163
  if (typeof v === "string") {
17119
17164
  if (isRscRef(v)) {
17120
17165
  if (!seen.has(v)) {
17121
17166
  seen.add(v);
17122
- collectRscText(resolve19(v), resolve19, sink2, seen);
17167
+ collectRscText(resolve20(v), resolve20, sink2, seen);
17123
17168
  }
17124
17169
  } else if (isHashtag(v)) sink2.hashtags.push(v);
17125
17170
  else if (isVisibleText(v)) sink2.text.push(v);
17126
17171
  return;
17127
17172
  }
17128
17173
  if (Array.isArray(v)) {
17129
- for (const x of v) collectRscText(x, resolve19, sink2, seen);
17174
+ for (const x of v) collectRscText(x, resolve20, sink2, seen);
17130
17175
  return;
17131
17176
  }
17132
17177
  if (typeof v === "object") {
17133
17178
  for (const val of Object.values(v)) {
17134
- collectRscText(val, resolve19, sink2, seen);
17179
+ collectRscText(val, resolve20, sink2, seen);
17135
17180
  }
17136
17181
  }
17137
17182
  }
@@ -17163,7 +17208,7 @@ function visitObjects(root, fn) {
17163
17208
  }
17164
17209
  }
17165
17210
  }
17166
- function buildMentionMap(rows, resolve19) {
17211
+ function buildMentionMap(rows, resolve20) {
17167
17212
  const map = /* @__PURE__ */ new Map();
17168
17213
  visitObjects(rows, (o) => {
17169
17214
  const url = profileActionUrl(o);
@@ -17171,7 +17216,7 @@ function buildMentionMap(rows, resolve19) {
17171
17216
  const slug = slugFromProfileUrl(url);
17172
17217
  if (!slug || map.has(slug)) return;
17173
17218
  const sink2 = { text: [], hashtags: [] };
17174
- collectRscText(o.children, resolve19, sink2, /* @__PURE__ */ new Set());
17219
+ collectRscText(o.children, resolve20, sink2, /* @__PURE__ */ new Set());
17175
17220
  const name = sink2.text.join(" ").replace(/\s+/g, " ").trim();
17176
17221
  map.set(slug, name ? { slug, name, url } : { slug, url });
17177
17222
  });
@@ -17257,10 +17302,10 @@ function buildPost(raw, mentionMap, author) {
17257
17302
 
17258
17303
  // src/commands/netcap/walkPostRow.ts
17259
17304
  var isCommentary = (o) => asObject(o.viewTrackingSpecs)?.viewName === "feed-commentary";
17260
- function walkPostRow(v, resolve19, raw) {
17305
+ function walkPostRow(v, resolve20, raw) {
17261
17306
  if (v == null || typeof v !== "object") return;
17262
17307
  if (Array.isArray(v)) {
17263
- for (const x of v) walkPostRow(x, resolve19, raw);
17308
+ for (const x of v) walkPostRow(x, resolve20, raw);
17264
17309
  return;
17265
17310
  }
17266
17311
  const o = v;
@@ -17274,9 +17319,9 @@ function walkPostRow(v, resolve19, raw) {
17274
17319
  }
17275
17320
  if (isCommentary(o)) {
17276
17321
  const sink2 = { text: raw.text, hashtags: raw.hashtags };
17277
- collectRscText(o.children, resolve19, sink2, /* @__PURE__ */ new Set());
17322
+ collectRscText(o.children, resolve20, sink2, /* @__PURE__ */ new Set());
17278
17323
  }
17279
- for (const val of Object.values(o)) walkPostRow(val, resolve19, raw);
17324
+ for (const val of Object.values(o)) walkPostRow(val, resolve20, raw);
17280
17325
  }
17281
17326
 
17282
17327
  // src/commands/netcap/extractLinkedInPosts.ts
@@ -17290,8 +17335,8 @@ function findCommentaryRows(rows) {
17290
17335
  }
17291
17336
  function extractLinkedInPosts(flight, author = findAuthorSlug(flight)) {
17292
17337
  const rows = parseRscRows(flight);
17293
- const resolve19 = makeRscResolver(rows);
17294
- const mentionMap = buildMentionMap(rows, resolve19);
17338
+ const resolve20 = makeRscResolver(rows);
17339
+ const mentionMap = buildMentionMap(rows, resolve20);
17295
17340
  const posts = [];
17296
17341
  for (const id of findCommentaryRows(rows)) {
17297
17342
  const raw = {
@@ -17301,7 +17346,7 @@ function extractLinkedInPosts(flight, author = findAuthorSlug(flight)) {
17301
17346
  links: [],
17302
17347
  related: []
17303
17348
  };
17304
- walkPostRow(rows[id], resolve19, raw);
17349
+ walkPostRow(rows[id], resolve20, raw);
17305
17350
  const post = buildPost(raw, mentionMap, author);
17306
17351
  if (post) posts.push(post);
17307
17352
  }
@@ -18600,7 +18645,7 @@ function parseIncoming(line, requestId) {
18600
18645
 
18601
18646
  // src/commands/prs/requestPrDecision.ts
18602
18647
  function requestPrDecision(request) {
18603
- return new Promise((resolve19, reject) => {
18648
+ return new Promise((resolve20, reject) => {
18604
18649
  connectToDaemon().then((socket) => {
18605
18650
  let settled = false;
18606
18651
  const finish = (error, decision) => {
@@ -18608,7 +18653,7 @@ function requestPrDecision(request) {
18608
18653
  settled = true;
18609
18654
  socket.destroy();
18610
18655
  if (error) reject(error);
18611
- else resolve19(decision);
18656
+ else resolve20(decision);
18612
18657
  };
18613
18658
  readSocketLines(socket, (line) => {
18614
18659
  const incoming = parseIncoming(line, request.requestId);
@@ -19510,7 +19555,7 @@ function getViolations(pattern2, options2 = {}, maxLines = DEFAULT_MAX_LINES) {
19510
19555
 
19511
19556
  // src/commands/refactor/check/index.ts
19512
19557
  function runScript(script, cwd) {
19513
- return new Promise((resolve19) => {
19558
+ return new Promise((resolve20) => {
19514
19559
  const child = spawn5("npm", ["run", script], {
19515
19560
  stdio: "pipe",
19516
19561
  shell: true,
@@ -19524,7 +19569,7 @@ function runScript(script, cwd) {
19524
19569
  output += data.toString();
19525
19570
  });
19526
19571
  child.on("close", (code) => {
19527
- resolve19({ script, code: code ?? 1, output });
19572
+ resolve20({ script, code: code ?? 1, output });
19528
19573
  });
19529
19574
  });
19530
19575
  }
@@ -22336,12 +22381,12 @@ function onCloseResult(ctx, code) {
22336
22381
  return { ...closed, stderr: ctx.stderr.value, stdout: ctx.stdout.value };
22337
22382
  }
22338
22383
  function waitForChildExit(ctx) {
22339
- return new Promise((resolve19) => {
22384
+ return new Promise((resolve20) => {
22340
22385
  let settled = false;
22341
22386
  const settle = (result) => {
22342
22387
  if (settled) return;
22343
22388
  settled = true;
22344
- resolve19(result);
22389
+ resolve20(result);
22345
22390
  };
22346
22391
  ctx.child.on("error", (err) => settle(onErrorResult(ctx, err)));
22347
22392
  ctx.child.on("close", (code) => settle(onCloseResult(ctx, code)));
@@ -23448,9 +23493,9 @@ function createReadlineInterface() {
23448
23493
  });
23449
23494
  }
23450
23495
  function askQuestion(rl, question) {
23451
- return new Promise((resolve19) => {
23496
+ return new Promise((resolve20) => {
23452
23497
  rl.question(question, (answer) => {
23453
- resolve19(answer.trim());
23498
+ resolve20(answer.trim());
23454
23499
  });
23455
23500
  });
23456
23501
  }
@@ -24215,7 +24260,7 @@ function extractCode(url, expectedState) {
24215
24260
  return code;
24216
24261
  }
24217
24262
  function waitForCallback(port, expectedState) {
24218
- return new Promise((resolve19, reject) => {
24263
+ return new Promise((resolve20, reject) => {
24219
24264
  const timeout = setTimeout(() => {
24220
24265
  server.close();
24221
24266
  reject(new Error("Authorization timed out after 120 seconds"));
@@ -24232,7 +24277,7 @@ function waitForCallback(port, expectedState) {
24232
24277
  const code = extractCode(url, expectedState);
24233
24278
  respondHtml(res, 200, "Authorization successful!");
24234
24279
  server.close();
24235
- resolve19(code);
24280
+ resolve20(code);
24236
24281
  } catch (error) {
24237
24282
  respondHtml(res, 400, error.message);
24238
24283
  server.close();
@@ -24497,7 +24542,7 @@ var rootConfigHelp = {
24497
24542
  };
24498
24543
 
24499
24544
  // src/commands/run/index.ts
24500
- import { resolve as resolve15 } from "path";
24545
+ import { resolve as resolve16 } from "path";
24501
24546
 
24502
24547
  // src/commands/run/findRunConfig.ts
24503
24548
  function exitNoRunConfigs() {
@@ -24596,12 +24641,12 @@ function runPreCommands(pre, cwd) {
24596
24641
  // src/commands/run/spawnRunCommand.ts
24597
24642
  import { execFileSync as execFileSync10, spawn as spawn8 } from "child_process";
24598
24643
  import { existsSync as existsSync54 } from "fs";
24599
- import { dirname as dirname27, join as join64, resolve as resolve14 } from "path";
24644
+ import { dirname as dirname27, join as join64, resolve as resolve15 } from "path";
24600
24645
  function resolveCommand2(command) {
24601
24646
  if (process.platform !== "win32" || command !== "bash") return command;
24602
24647
  try {
24603
24648
  const gitPath = execFileSync10("where", ["git"], { encoding: "utf8" }).trim().split("\r\n")[0];
24604
- const gitRoot = resolve14(dirname27(gitPath), "..");
24649
+ const gitRoot = resolve15(dirname27(gitPath), "..");
24605
24650
  const gitBash = join64(gitRoot, "bin", "bash.exe");
24606
24651
  if (existsSync54(gitBash)) return gitBash;
24607
24652
  } catch {
@@ -24649,7 +24694,7 @@ function listRunConfigs(verbose) {
24649
24694
  }
24650
24695
  }
24651
24696
  function execRunConfig(config, args) {
24652
- const cwd = config.cwd ? resolve15(getConfigDir(), config.cwd) : void 0;
24697
+ const cwd = config.cwd ? resolve16(getConfigDir(), config.cwd) : void 0;
24653
24698
  if (config.pre) runPreCommands(config.pre, cwd);
24654
24699
  const resolved = resolveParams(config.params, args);
24655
24700
  spawnRunCommand(
@@ -24889,7 +24934,7 @@ function registerRun(program2) {
24889
24934
  import { execSync as execSync58 } from "child_process";
24890
24935
  import { existsSync as existsSync56, mkdirSync as mkdirSync24, unlinkSync as unlinkSync21, writeFileSync as writeFileSync42 } from "fs";
24891
24936
  import { tmpdir as tmpdir8 } from "os";
24892
- import { join as join67, resolve as resolve16 } from "path";
24937
+ import { join as join67, resolve as resolve17 } from "path";
24893
24938
  import chalk203 from "chalk";
24894
24939
 
24895
24940
  // src/commands/screenshot/captureWindowPs1.ts
@@ -25023,7 +25068,7 @@ function buildOutputPath(outputDir, processName) {
25023
25068
  mkdirSync24(outputDir, { recursive: true });
25024
25069
  }
25025
25070
  const timestamp6 = (/* @__PURE__ */ new Date()).toISOString().replace(/[:.]/g, "-");
25026
- return resolve16(outputDir, `${processName}-${timestamp6}.png`);
25071
+ return resolve17(outputDir, `${processName}-${timestamp6}.png`);
25027
25072
  }
25028
25073
  function runPowerShellScript(processName, outputPath) {
25029
25074
  const scriptPath = join67(tmpdir8(), `assist-screenshot-${Date.now()}.ps1`);
@@ -25039,7 +25084,7 @@ function runPowerShellScript(processName, outputPath) {
25039
25084
  }
25040
25085
  function screenshot(processName) {
25041
25086
  const config = loadConfig();
25042
- const outputDir = resolve16(config.screenshot.outputDir);
25087
+ const outputDir = resolve17(config.screenshot.outputDir);
25043
25088
  const outputPath = buildOutputPath(outputDir, processName);
25044
25089
  console.log(chalk203.gray(`Capturing window for process "${processName}" ...`));
25045
25090
  try {
@@ -25072,10 +25117,10 @@ var STATUS_TIMEOUT_MS = 5e3;
25072
25117
  function queryDaemon(socket) {
25073
25118
  socket.write(`${JSON.stringify({ type: "ping" })}
25074
25119
  `);
25075
- return new Promise((resolve19) => {
25120
+ return new Promise((resolve20) => {
25076
25121
  const result = { sessions: [] };
25077
25122
  const pending = /* @__PURE__ */ new Set(["sessions", "pong"]);
25078
- const timer = setTimeout(() => resolve19(result), STATUS_TIMEOUT_MS);
25123
+ const timer = setTimeout(() => resolve20(result), STATUS_TIMEOUT_MS);
25079
25124
  const lines = createInterface5({ input: socket });
25080
25125
  lines.on("error", () => {
25081
25126
  });
@@ -25083,7 +25128,7 @@ function queryDaemon(socket) {
25083
25128
  applyLine(result, pending, line);
25084
25129
  if (pending.size === 0) {
25085
25130
  clearTimeout(timer);
25086
- resolve19(result);
25131
+ resolve20(result);
25087
25132
  }
25088
25133
  });
25089
25134
  });
@@ -25277,8 +25322,8 @@ async function drainDaemon() {
25277
25322
  function requestDrain(socket) {
25278
25323
  socket.write(`${JSON.stringify({ type: "drain" })}
25279
25324
  `);
25280
- return new Promise((resolve19) => {
25281
- const timer = setTimeout(() => resolve19(0), DRAIN_TIMEOUT_MS);
25325
+ return new Promise((resolve20) => {
25326
+ const timer = setTimeout(() => resolve20(0), DRAIN_TIMEOUT_MS);
25282
25327
  const lines = createInterface6({ input: socket });
25283
25328
  lines.on("error", () => {
25284
25329
  });
@@ -25287,7 +25332,7 @@ function requestDrain(socket) {
25287
25332
  const data = JSON.parse(line);
25288
25333
  if (data.type === "drained") {
25289
25334
  clearTimeout(timer);
25290
- resolve19(data.count ?? 0);
25335
+ resolve20(data.count ?? 0);
25291
25336
  }
25292
25337
  } catch {
25293
25338
  }
@@ -25720,10 +25765,10 @@ function gitInvocation(cwd, args) {
25720
25765
  }
25721
25766
  function git3(cwd, args) {
25722
25767
  const { file, argv, options: options2 } = gitInvocation(cwd, args);
25723
- return new Promise((resolve19, reject) => {
25768
+ return new Promise((resolve20, reject) => {
25724
25769
  execFile7(file, argv, options2, (error, stdout) => {
25725
25770
  if (error) reject(error);
25726
- else resolve19(stdout.toString());
25771
+ else resolve20(stdout.toString());
25727
25772
  });
25728
25773
  });
25729
25774
  }
@@ -27632,7 +27677,7 @@ function windowsDaemonHost() {
27632
27677
  var CONNECT_TIMEOUT_MS = 2e3;
27633
27678
  var KEEPALIVE_PROBE_MS = 1e4;
27634
27679
  function connectToWindowsDaemon() {
27635
- return new Promise((resolve19, reject) => {
27680
+ return new Promise((resolve20, reject) => {
27636
27681
  const socket = net2.connect(windowsDaemonPort(), windowsDaemonHost());
27637
27682
  socket.setTimeout(CONNECT_TIMEOUT_MS);
27638
27683
  socket.once("timeout", () => {
@@ -27642,7 +27687,7 @@ function connectToWindowsDaemon() {
27642
27687
  socket.once("connect", () => {
27643
27688
  socket.setTimeout(0);
27644
27689
  socket.setKeepAlive(true, KEEPALIVE_PROBE_MS);
27645
- resolve19(socket);
27690
+ resolve20(socket);
27646
27691
  });
27647
27692
  socket.once("error", reject);
27648
27693
  });
@@ -27720,7 +27765,7 @@ async function waitForWindowsDaemon() {
27720
27765
  );
27721
27766
  }
27722
27767
  function delay2(ms) {
27723
- return new Promise((resolve19) => setTimeout(resolve19, ms));
27768
+ return new Promise((resolve20) => setTimeout(resolve20, ms));
27724
27769
  }
27725
27770
 
27726
27771
  // src/commands/sessions/daemon/defaultConnect.ts
@@ -28001,7 +28046,7 @@ async function healWindowsDaemon() {
28001
28046
  daemonLog("windows daemon: auto-heal: stale daemon stopped");
28002
28047
  }
28003
28048
  function runOnWindowsHost(command, timeoutMs) {
28004
- return new Promise((resolve19, reject) => {
28049
+ return new Promise((resolve20, reject) => {
28005
28050
  const child = spawn11("pwsh.exe", ["-Command", command], {
28006
28051
  stdio: ["ignore", "pipe", "pipe"]
28007
28052
  });
@@ -28021,7 +28066,7 @@ function runOnWindowsHost(command, timeoutMs) {
28021
28066
  });
28022
28067
  child.on("exit", (code) => {
28023
28068
  clearTimeout(timer);
28024
- if (code === 0) resolve19();
28069
+ if (code === 0) resolve20();
28025
28070
  else
28026
28071
  reject(
28027
28072
  new Error(
@@ -29355,16 +29400,16 @@ function buildLimitsSegment(rateLimits) {
29355
29400
 
29356
29401
  // src/commands/readGitBranch.ts
29357
29402
  import { readFileSync as readFileSync52, statSync as statSync12 } from "fs";
29358
- import { isAbsolute as isAbsolute2, join as join73, resolve as resolve17 } from "path";
29403
+ import { isAbsolute as isAbsolute3, join as join73, resolve as resolve18 } from "path";
29359
29404
  function resolveGitDir(cwd) {
29360
29405
  const dotGit = join73(cwd, ".git");
29361
- let stat2;
29406
+ let stat3;
29362
29407
  try {
29363
- stat2 = statSync12(dotGit);
29408
+ stat3 = statSync12(dotGit);
29364
29409
  } catch {
29365
29410
  return null;
29366
29411
  }
29367
- if (stat2.isDirectory()) {
29412
+ if (stat3.isDirectory()) {
29368
29413
  return dotGit;
29369
29414
  }
29370
29415
  let contents;
@@ -29378,7 +29423,7 @@ function resolveGitDir(cwd) {
29378
29423
  return null;
29379
29424
  }
29380
29425
  const gitDir = match[1].trim();
29381
- return isAbsolute2(gitDir) ? gitDir : resolve17(cwd, gitDir);
29426
+ return isAbsolute3(gitDir) ? gitDir : resolve18(cwd, gitDir);
29382
29427
  }
29383
29428
  function readGitBranch(cwd) {
29384
29429
  const gitDir = resolveGitDir(cwd);