hotsheet 0.17.0-beta.14 → 0.17.0-beta.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.js +64 -17
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -19233,12 +19233,12 @@ __export(gitignore_exports, {
19233
19233
  isGitRepo: () => isGitRepo,
19234
19234
  isHotsheetGitignored: () => isHotsheetGitignored
19235
19235
  });
19236
- import { execFileSync } from "child_process";
19236
+ import { execFileSync as execFileSync2 } from "child_process";
19237
19237
  import { appendFileSync, existsSync as existsSync9, readFileSync as readFileSync8 } from "fs";
19238
19238
  import { join as join12 } from "path";
19239
19239
  function isHotsheetGitignored(repoRoot) {
19240
19240
  try {
19241
- execFileSync("git", ["check-ignore", "-q", ".hotsheet"], { cwd: repoRoot, stdio: "ignore" });
19241
+ execFileSync2("git", ["check-ignore", "-q", ".hotsheet"], { cwd: repoRoot, stdio: "ignore" });
19242
19242
  return true;
19243
19243
  } catch {
19244
19244
  return false;
@@ -19246,7 +19246,7 @@ function isHotsheetGitignored(repoRoot) {
19246
19246
  }
19247
19247
  function isGitRepo(dir) {
19248
19248
  try {
19249
- execFileSync("git", ["rev-parse", "--is-inside-work-tree"], { cwd: dir, stdio: "ignore" });
19249
+ execFileSync2("git", ["rev-parse", "--is-inside-work-tree"], { cwd: dir, stdio: "ignore" });
19250
19250
  return true;
19251
19251
  } catch {
19252
19252
  return false;
@@ -19254,7 +19254,7 @@ function isGitRepo(dir) {
19254
19254
  }
19255
19255
  function getGitRoot(dir) {
19256
19256
  try {
19257
- return execFileSync("git", ["rev-parse", "--show-toplevel"], { cwd: dir, encoding: "utf-8" }).trim();
19257
+ return execFileSync2("git", ["rev-parse", "--show-toplevel"], { cwd: dir, encoding: "utf-8" }).trim();
19258
19258
  } catch {
19259
19259
  return null;
19260
19260
  }
@@ -20249,7 +20249,7 @@ __export(processInspect_exports, {
20249
20249
  parsePsOutput: () => parsePsOutput,
20250
20250
  pickForegroundProcess: () => pickForegroundProcess
20251
20251
  });
20252
- import { execFile as execFile2, execFileSync as execFileSync2 } from "child_process";
20252
+ import { execFile as execFile2, execFileSync as execFileSync3 } from "child_process";
20253
20253
  import { promisify } from "util";
20254
20254
  function normalizeComm(raw) {
20255
20255
  let s = raw.trim();
@@ -20412,7 +20412,7 @@ function killProcessTreeBestEffort(rootPid, signal = "SIGTERM", psRowsProvider)
20412
20412
  } else {
20413
20413
  let stdout = "";
20414
20414
  try {
20415
- stdout = execFileSync2("ps", ["-o", "pid,ppid,comm", "-A"], { encoding: "utf8", timeout: 2e3 });
20415
+ stdout = execFileSync3("ps", ["-o", "pid,ppid,comm", "-A"], { encoding: "utf8", timeout: 2e3 });
20416
20416
  } catch (err) {
20417
20417
  return { ...empty, error: `ps execution failed: ${err instanceof Error ? err.message : String(err)}` };
20418
20418
  }
@@ -24269,6 +24269,7 @@ import { execFile as execFile6 } from "child_process";
24269
24269
  import { existsSync as existsSync27, mkdirSync as mkdirSync16 } from "fs";
24270
24270
  import { tmpdir as tmpdir3 } from "os";
24271
24271
  import { join as join31, resolve as resolve10 } from "path";
24272
+ import { pathToFileURL as pathToFileURL2 } from "url";
24272
24273
 
24273
24274
  // src/cleanup.ts
24274
24275
  init_queries();
@@ -24555,6 +24556,51 @@ init_connection();
24555
24556
  init_queries();
24556
24557
  init_demo();
24557
24558
 
24559
+ // src/enrich-path.ts
24560
+ import { execFileSync } from "child_process";
24561
+ var SHELL_PATH_TIMEOUT_MS = 2e3;
24562
+ function mergePaths(currentPath, shellPath) {
24563
+ const sep = ":";
24564
+ const existing = currentPath.split(sep).filter((s) => s !== "");
24565
+ const existingSet = new Set(existing);
24566
+ const additions = [];
24567
+ for (const dir of shellPath.split(sep)) {
24568
+ const trimmed = dir.trim();
24569
+ if (trimmed === "" || existingSet.has(trimmed)) continue;
24570
+ existingSet.add(trimmed);
24571
+ additions.push(trimmed);
24572
+ }
24573
+ if (additions.length === 0) return currentPath;
24574
+ return [...additions, ...existing].join(sep);
24575
+ }
24576
+ function readLoginShellPath(execOverride) {
24577
+ const shell = process.env.SHELL;
24578
+ if (typeof shell !== "string" || shell === "") return null;
24579
+ const exec2 = execOverride ?? execFileSync;
24580
+ try {
24581
+ const out = exec2(shell, ["-ilc", 'printf %s "$PATH"'], {
24582
+ encoding: "utf8",
24583
+ timeout: SHELL_PATH_TIMEOUT_MS,
24584
+ stdio: ["ignore", "pipe", "ignore"],
24585
+ windowsHide: true
24586
+ });
24587
+ const trimmed = out.trim();
24588
+ return trimmed === "" ? null : trimmed;
24589
+ } catch {
24590
+ return null;
24591
+ }
24592
+ }
24593
+ function enrichProcessPath(opts) {
24594
+ if (process.platform === "win32") return;
24595
+ const shellPath = readLoginShellPath(opts?.exec);
24596
+ if (shellPath === null) return;
24597
+ const current = process.env.PATH ?? "";
24598
+ const merged = mergePaths(current, shellPath);
24599
+ if (merged !== current) {
24600
+ process.env.PATH = merged;
24601
+ }
24602
+ }
24603
+
24558
24604
  // src/feature-flags.ts
24559
24605
  function resolvePluginsEnabled() {
24560
24606
  if (true) return true;
@@ -24748,9 +24794,9 @@ var channelRoutes = new Hono3();
24748
24794
  var channelDoneFlags = /* @__PURE__ */ new Map();
24749
24795
  var loggedPermissionRequests = /* @__PURE__ */ new Map();
24750
24796
  channelRoutes.get("/channel/claude-check", async (c) => {
24751
- const { execFileSync: execFileSync3 } = await import("child_process");
24797
+ const { execFileSync: execFileSync4 } = await import("child_process");
24752
24798
  try {
24753
- const version2 = execFileSync3("claude", ["--version"], { timeout: 5e3, encoding: "utf-8" }).trim();
24799
+ const version2 = execFileSync4("claude", ["--version"], { timeout: 5e3, encoding: "utf-8" }).trim();
24754
24800
  const match = version2.match(/(\d+\.\d+\.\d+)/);
24755
24801
  const versionNum = match !== null ? match[1] : null;
24756
24802
  const parts = versionNum !== null ? versionNum.split(".").map(Number) : [];
@@ -25128,9 +25174,9 @@ dashboardRoutes.post("/ensure-skills", (c) => {
25128
25174
  var glassboxAvailable = null;
25129
25175
  dashboardRoutes.get("/glassbox/status", async (c) => {
25130
25176
  if (glassboxAvailable === null) {
25131
- const { execFileSync: execFileSync3 } = await import("child_process");
25177
+ const { execFileSync: execFileSync4 } = await import("child_process");
25132
25178
  try {
25133
- execFileSync3("which", ["glassbox"], { stdio: "ignore" });
25179
+ execFileSync4("which", ["glassbox"], { stdio: "ignore" });
25134
25180
  glassboxAvailable = true;
25135
25181
  } catch {
25136
25182
  glassboxAvailable = false;
@@ -27774,6 +27820,7 @@ init_errorMessage();
27774
27820
  if (process.env.UV_THREADPOOL_SIZE === void 0 || process.env.UV_THREADPOOL_SIZE === "") {
27775
27821
  process.env.UV_THREADPOOL_SIZE = "16";
27776
27822
  }
27823
+ enrichProcessPath();
27777
27824
  async function handleEarlyFlags(args) {
27778
27825
  if (args.close) {
27779
27826
  await handleClose(args.dataDir, args.force);
@@ -28097,17 +28144,16 @@ async function main() {
28097
28144
  await seedDemoExtraProjects2(demo, dataDir, actualPort);
28098
28145
  }
28099
28146
  }
28100
- var isEntryPoint = (() => {
28147
+ function computeIsEntryPoint(argv1, importMetaUrl) {
28101
28148
  try {
28102
- const entry = process.argv[1];
28103
- if (typeof entry !== "string" || entry === "") return false;
28104
- const url2 = import.meta.url;
28105
- if (url2 === `file://${entry}`) return true;
28106
- return url2.endsWith("/cli.ts") && entry.endsWith("/cli.ts");
28149
+ if (typeof argv1 !== "string" || argv1 === "") return false;
28150
+ if (importMetaUrl === pathToFileURL2(argv1).href) return true;
28151
+ return importMetaUrl.endsWith("/cli.ts") && argv1.endsWith("/cli.ts");
28107
28152
  } catch {
28108
28153
  return false;
28109
28154
  }
28110
- })();
28155
+ }
28156
+ var isEntryPoint = computeIsEntryPoint(process.argv[1], import.meta.url);
28111
28157
  if (isEntryPoint) {
28112
28158
  main().catch((err) => {
28113
28159
  console.error(err);
@@ -28115,6 +28161,7 @@ if (isEntryPoint) {
28115
28161
  });
28116
28162
  }
28117
28163
  export {
28164
+ computeIsEntryPoint,
28118
28165
  createSignalHandler
28119
28166
  };
28120
28167
  //# sourceMappingURL=cli.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hotsheet",
3
- "version": "0.17.0-beta.14",
3
+ "version": "0.17.0-beta.16",
4
4
  "description": "A lightweight local project management tool. Create, categorize, and prioritize tickets with a fast bullet-list interface, then export an Up Next worklist for AI tools.",
5
5
  "type": "module",
6
6
  "license": "MIT",