heyspex 0.2.0 → 0.2.2

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 (146) hide show
  1. package/.claude-plugin/marketplace.json +14 -0
  2. package/bin/hs.mjs +181 -15
  3. package/dist/cli/hs-check.mjs +88 -46
  4. package/dist/cli/hs-claim.mjs +84 -39
  5. package/dist/cli/hs-connect.mjs +583 -129
  6. package/dist/cli/hs-defer.mjs +251 -30
  7. package/dist/cli/hs-dev.mjs +20 -8
  8. package/dist/cli/hs-env.mjs +62 -34
  9. package/dist/cli/hs-index-rebuild.mjs +288 -83
  10. package/dist/cli/hs-index-reconcile.mjs +397 -111
  11. package/dist/cli/hs-init.mjs +2143 -91
  12. package/dist/cli/hs-install.mjs +628 -106
  13. package/dist/cli/hs-join.mjs +686 -236
  14. package/dist/cli/hs-vault-pull.mjs +3189 -179
  15. package/dist/cli/hs-vault-push.mjs +6433 -0
  16. package/dist/cli/hs-vault.mjs +396 -178
  17. package/dist/cli/hs-workspace.mjs +289 -151
  18. package/dist/cli-templates/harness-commands/claude/hs-backfill.md +28 -28
  19. package/dist/cli-templates/harness-commands/claude/hs-capture.md +62 -62
  20. package/dist/cli-templates/harness-commands/claude/hs-defer.md +29 -29
  21. package/dist/cli-templates/harness-commands/claude/hs-ground.md +30 -28
  22. package/dist/cli-templates/harness-commands/claude/hs-next.md +29 -29
  23. package/dist/cli-templates/harness-commands/claude/hs-promote.md +70 -70
  24. package/dist/cli-templates/harness-commands/claude/hs-push.md +35 -35
  25. package/dist/cli-templates/harness-commands/claude/hs-qc.md +27 -27
  26. package/dist/cli-templates/harness-commands/claude/hs-resolve.md +23 -23
  27. package/dist/cli-templates/harness-commands/claude/hs-review.md +23 -23
  28. package/dist/cli-templates/harness-commands/claude/hs-view.md +28 -26
  29. package/dist/cli-templates/harness-commands/claude/kill-ports.md +32 -32
  30. package/dist/cli-templates/harness-commands/claude/prototype.md +91 -91
  31. package/dist/cli-templates/harness-commands/cursor/hs-backfill.md +22 -22
  32. package/dist/cli-templates/harness-commands/cursor/hs-capture.md +56 -56
  33. package/dist/cli-templates/harness-commands/cursor/hs-defer.md +23 -23
  34. package/dist/cli-templates/harness-commands/cursor/hs-ground.md +24 -22
  35. package/dist/cli-templates/harness-commands/cursor/hs-next.md +23 -23
  36. package/dist/cli-templates/harness-commands/cursor/hs-promote.md +64 -64
  37. package/dist/cli-templates/harness-commands/cursor/hs-push.md +29 -29
  38. package/dist/cli-templates/harness-commands/cursor/hs-qc.md +21 -21
  39. package/dist/cli-templates/harness-commands/cursor/hs-resolve.md +17 -17
  40. package/dist/cli-templates/harness-commands/cursor/hs-review.md +17 -17
  41. package/dist/cli-templates/harness-commands/cursor/hs-view.md +24 -22
  42. package/dist/cli-templates/harness-commands/cursor/kill-ports.md +26 -26
  43. package/dist/cli-templates/harness-commands/cursor/prototype.md +86 -86
  44. package/docs/copilot-plugin-install.md +177 -0
  45. package/docs/driving-heyspex-from-copilot.md +165 -0
  46. package/package.json +21 -2
  47. package/plugins/heyspex/.claude-plugin/plugin.json +12 -12
  48. package/plugins/heyspex/.cursor-plugin/plugin.json +15 -15
  49. package/plugins/heyspex/README.md +312 -0
  50. package/plugins/heyspex/bin/run-hook.mjs +20 -2
  51. package/plugins/heyspex/hooks/cursor-hooks.json +81 -0
  52. package/plugins/heyspex/hooks/hooks.json +94 -37
  53. package/scripts/claude-hooks/_intent-classifier-router.mjs +456 -410
  54. package/scripts/claude-hooks/_intent-classifier-semantic.mjs +5 -0
  55. package/scripts/claude-hooks/_run.mjs +316 -23
  56. package/scripts/claude-hooks/capture-execution-gate.mjs +51 -0
  57. package/scripts/claude-hooks/claim-liveness-shared.mjs +2 -0
  58. package/scripts/claude-hooks/diagnose-capture-reminder.mjs +11 -0
  59. package/scripts/claude-hooks/directive-obligation-gate.mjs +11 -0
  60. package/scripts/claude-hooks/inject-communication-style.mjs +20 -0
  61. package/scripts/claude-hooks/intent-classifier-trigger.mjs +279 -247
  62. package/scripts/claude-hooks/session-end.mjs +2 -0
  63. package/scripts/claude-hooks/vault-mirror-catchup.mjs +11 -0
  64. package/scripts/claude-hooks/vault-write-tier-guard.mjs +11 -0
  65. package/scripts/claude-hooks/wip-checkpoint.mjs +5 -1
  66. package/scripts/cursor-hooks/manifest.mjs +46 -0
  67. package/scripts/heyspex-mode.mjs +20 -0
  68. package/scripts/hs-mode.mjs +1 -1
  69. package/scripts/hs-view.mjs +180 -17
  70. package/scripts/install-claude-code-hooks.mjs +3 -1
  71. package/scripts/install-copilot-hooks.mjs +288 -0
  72. package/scripts/lib/console-url-resolver.mjs +3 -2
  73. package/scripts/lib/customer-kit.mjs +327 -10
  74. package/scripts/lib/dev-mode.mjs +7 -6
  75. package/scripts/lib/directive-obligations.mjs +349 -0
  76. package/scripts/lib/hook-dispositions.mjs +210 -0
  77. package/scripts/lib/hook-vault-header.mjs +30 -0
  78. package/scripts/lib/hs-source-branch.mjs +196 -0
  79. package/scripts/lib/hs-source-log.mjs +2 -1
  80. package/scripts/lib/hs-source-preflight.mjs +18 -4
  81. package/scripts/lib/hs-source-push.mjs +386 -356
  82. package/scripts/lib/window-placement.mjs +109 -0
  83. package/spexharness/src/adapters/claude-code.mjs +11 -3
  84. package/spexharness/src/adapters/copilot.mjs +236 -0
  85. package/spexharness/src/adapters/detect-harness.mjs +34 -0
  86. package/spexharness/src/gates/_shell-write-targets.mjs +77 -0
  87. package/spexharness/src/gates/deep-research-cost-gate.mjs +4 -3
  88. package/spexharness/src/gates/diagnose-capture-reminder.mjs +112 -0
  89. package/spexharness/src/gates/directive-obligation-gate.decide.mjs +132 -0
  90. package/spexharness/src/gates/directive-obligation-gate.mjs +183 -0
  91. package/spexharness/src/gates/vault-mirror-catchup.mjs +124 -0
  92. package/spexharness/src/gates/vault-write-tier-guard.decide.mjs +125 -0
  93. package/spexharness/src/gates/vault-write-tier-guard.mjs +42 -0
  94. package/spexharness/src/intent-classifier.mjs +4 -2
  95. package/spexharness/src/intent-directive.mjs +626 -541
  96. package/spexharness/src/rule-table.mjs +31 -1
  97. package/vendor/heyspex-mcp/account-switch.mjs +6 -5
  98. package/vendor/heyspex-mcp/capture-buffer-patches.mjs +31 -3
  99. package/vendor/heyspex-mcp/capture-console-client.mjs +37 -2
  100. package/vendor/heyspex-mcp/capture-focus.mjs +26 -2
  101. package/vendor/heyspex-mcp/capture-outbox.mjs +10 -4
  102. package/vendor/heyspex-mcp/capture-sources.mjs +195 -0
  103. package/vendor/heyspex-mcp/capture-tools.mjs +56 -11
  104. package/vendor/heyspex-mcp/claim-tools.mjs +25 -2
  105. package/vendor/heyspex-mcp/cli-verbs.mjs +19 -21
  106. package/vendor/heyspex-mcp/cli.mjs +7 -1
  107. package/vendor/heyspex-mcp/close-branch-report.mjs +102 -0
  108. package/vendor/heyspex-mcp/cloud-vault-writes.mjs +197 -7
  109. package/vendor/heyspex-mcp/console-fetch.mjs +192 -28
  110. package/vendor/heyspex-mcp/console-transport.mjs +7 -1
  111. package/vendor/heyspex-mcp/credentials.mjs +9 -8
  112. package/vendor/heyspex-mcp/dev-tools.mjs +7 -0
  113. package/vendor/heyspex-mcp/filing-tools.mjs +35 -0
  114. package/vendor/heyspex-mcp/fleet-queue-tools.mjs +2 -1
  115. package/vendor/heyspex-mcp/folder-trust-store.mjs +2 -1
  116. package/vendor/heyspex-mcp/http-transport.mjs +2 -0
  117. package/vendor/heyspex-mcp/list-tools.mjs +1 -1
  118. package/vendor/heyspex-mcp/mcp-config.mjs +14 -1
  119. package/vendor/heyspex-mcp/memory-tools.mjs +523 -523
  120. package/vendor/heyspex-mcp/obligation-backstop.mjs +103 -0
  121. package/vendor/heyspex-mcp/occupied-keys.mjs +1 -0
  122. package/vendor/heyspex-mcp/on-deck-brief.mjs +19 -2
  123. package/vendor/heyspex-mcp/on-deck-scheduler.mjs +1708 -1708
  124. package/vendor/heyspex-mcp/plan-push.mjs +3 -2
  125. package/vendor/heyspex-mcp/preflight-gate.mjs +1 -0
  126. package/vendor/heyspex-mcp/procedure-handlers.mjs +327 -325
  127. package/vendor/heyspex-mcp/procedure-tools.mjs +1181 -1159
  128. package/vendor/heyspex-mcp/promote-capture.mjs +2 -0
  129. package/vendor/heyspex-mcp/promote-research.mjs +6 -0
  130. package/vendor/heyspex-mcp/read-path.mjs +162 -6
  131. package/vendor/heyspex-mcp/request-context.mjs +25 -1
  132. package/vendor/heyspex-mcp/research-handlers.mjs +6 -4
  133. package/vendor/heyspex-mcp/roadmap-default.mjs +70 -0
  134. package/vendor/heyspex-mcp/session-owner.mjs +3 -2
  135. package/vendor/heyspex-mcp/session-tools.mjs +10 -0
  136. package/vendor/heyspex-mcp/spec-edit-tools.mjs +8 -1
  137. package/vendor/heyspex-mcp/split-research.mjs +3 -0
  138. package/vendor/heyspex-mcp/submit-for-review.mjs +18 -1
  139. package/vendor/heyspex-mcp/summary-write-tools.mjs +5 -1
  140. package/vendor/heyspex-mcp/test-helpers.mjs +18 -3
  141. package/vendor/heyspex-mcp/tool-catalog.mjs +7 -1
  142. package/vendor/heyspex-mcp/tool-dispatch.mjs +18 -0
  143. package/vendor/heyspex-mcp/vault-io.mjs +720 -724
  144. package/vendor/heyspex-mcp/vault-resolve.mjs +197 -9
  145. package/vendor/heyspex-mcp/whoami.mjs +2 -1
  146. package/vendor/heyspex-mcp/write-outbox.mjs +512 -0
@@ -21777,30 +21777,40 @@ var require_lib2 = __commonJS({
21777
21777
  }
21778
21778
  });
21779
21779
 
21780
+ // scripts/lib/heyspex-home.mjs
21781
+ import { homedir as homedir3 } from "node:os";
21782
+ var init_heyspex_home = __esm({
21783
+ "scripts/lib/heyspex-home.mjs"() {
21784
+ "use strict";
21785
+ }
21786
+ });
21787
+
21780
21788
  // vendor/heyspex-mcp/credentials.mjs
21781
21789
  import { mkdirSync as mkdirSync4, readFileSync as readFileSync4, renameSync as renameSync4, writeFileSync as writeFileSync4 } from "node:fs";
21782
- import os, { homedir as homedir3 } from "node:os";
21790
+ import os, { homedir as homedir4 } from "node:os";
21783
21791
  import { dirname, join as join5, resolve as resolve2 } from "node:path";
21784
21792
  var init_credentials = __esm({
21785
21793
  "vendor/heyspex-mcp/credentials.mjs"() {
21786
21794
  "use strict";
21795
+ init_heyspex_home();
21787
21796
  }
21788
21797
  });
21789
21798
 
21790
21799
  // scripts/lib/dev-mode.mjs
21791
21800
  import { mkdirSync as mkdirSync5, readFileSync as readFileSync5, writeFileSync as writeFileSync5 } from "node:fs";
21792
- import { homedir as homedir4 } from "node:os";
21801
+ import { homedir as homedir5 } from "node:os";
21793
21802
  import { join as join6 } from "node:path";
21794
21803
  var init_dev_mode = __esm({
21795
21804
  "scripts/lib/dev-mode.mjs"() {
21796
21805
  "use strict";
21806
+ init_heyspex_home();
21797
21807
  init_credentials();
21798
21808
  }
21799
21809
  });
21800
21810
 
21801
21811
  // spex-console/bin/hs-env.ts
21802
21812
  import { spawn } from "node:child_process";
21803
- import { existsSync as existsSync9 } from "node:fs";
21813
+ import { existsSync as existsSync10 } from "node:fs";
21804
21814
  import { networkInterfaces } from "node:os";
21805
21815
  import path6 from "node:path";
21806
21816
  import process3 from "node:process";
@@ -26289,16 +26299,16 @@ import { spawnSync as spawnSync2 } from "node:child_process";
26289
26299
  import { randomBytes as randomBytes5 } from "node:crypto";
26290
26300
  import {
26291
26301
  chmodSync,
26292
- existsSync as existsSync8,
26293
- mkdirSync as mkdirSync7,
26294
- readdirSync,
26295
- readFileSync as readFileSync11,
26296
- renameSync as renameSync6,
26302
+ existsSync as existsSync9,
26303
+ mkdirSync as mkdirSync8,
26304
+ readdirSync as readdirSync2,
26305
+ readFileSync as readFileSync12,
26306
+ renameSync as renameSync7,
26297
26307
  statSync as statSync3,
26298
26308
  unlinkSync as unlinkSync3,
26299
- writeFileSync as writeFileSync7
26309
+ writeFileSync as writeFileSync8
26300
26310
  } from "node:fs";
26301
- import { homedir as homedir10 } from "node:os";
26311
+ import { homedir as homedir11 } from "node:os";
26302
26312
  import path5 from "node:path";
26303
26313
 
26304
26314
  // node_modules/sops-age/dist/index.js
@@ -35620,9 +35630,10 @@ async function decryptSops(inputOrOptions, options) {
35620
35630
  import { randomUUID } from "node:crypto";
35621
35631
 
35622
35632
  // scripts/lib/console-url-resolver.mjs
35633
+ init_heyspex_home();
35623
35634
  init_dev_mode();
35624
35635
  import { readFileSync as readFileSync6 } from "node:fs";
35625
- import { homedir as homedir5 } from "node:os";
35636
+ import { homedir as homedir6 } from "node:os";
35626
35637
  import { join as join7 } from "node:path";
35627
35638
 
35628
35639
  // spex-console/src/lib/cli/control-shared.ts
@@ -35647,15 +35658,17 @@ function shellQuote(p) {
35647
35658
  var HS_DISPATCHER_PREFIX = HS_DISPATCHER_PATH ? `node ${shellQuote(HS_DISPATCHER_PATH)}` : HS_BIN_NAME;
35648
35659
 
35649
35660
  // vendor/heyspex-mcp/console-fetch.mjs
35661
+ init_heyspex_home();
35650
35662
  init_credentials();
35651
- import { readFileSync as readFileSync9 } from "node:fs";
35652
- import { homedir as homedir8 } from "node:os";
35653
- import { join as join11 } from "node:path";
35663
+ import { readFileSync as readFileSync10 } from "node:fs";
35664
+ import { homedir as homedir9 } from "node:os";
35665
+ import { join as join12 } from "node:path";
35654
35666
 
35655
35667
  // vendor/heyspex-mcp/session-owner.mjs
35668
+ init_heyspex_home();
35656
35669
  init_credentials();
35657
35670
  import { readFileSync as readFileSync7 } from "node:fs";
35658
- import { homedir as homedir6 } from "node:os";
35671
+ import { homedir as homedir7 } from "node:os";
35659
35672
  import { join as join9 } from "node:path";
35660
35673
 
35661
35674
  // vendor/heyspex-mcp/vault-less-endpoints.mjs
@@ -35669,10 +35682,23 @@ var VAULT_LESS_ENDPOINTS = Object.freeze([
35669
35682
  "* /api/admin/dev-mode"
35670
35683
  ]);
35671
35684
 
35685
+ // vendor/heyspex-mcp/write-outbox.mjs
35686
+ import {
35687
+ readdirSync,
35688
+ readFileSync as readFileSync8,
35689
+ writeFileSync as writeFileSync6,
35690
+ mkdirSync as mkdirSync6,
35691
+ existsSync as existsSync6,
35692
+ renameSync as renameSync5,
35693
+ rmSync
35694
+ } from "node:fs";
35695
+ import { basename, join as join10, isAbsolute as isAbsolute2 } from "node:path";
35696
+
35672
35697
  // vendor/heyspex-mcp/vault-resolve.mjs
35673
- import { existsSync as existsSync6, readFileSync as readFileSync8 } from "node:fs";
35674
- import { homedir as homedir7, tmpdir } from "node:os";
35675
- import { dirname as dirname3, join as join10, resolve as resolve3 } from "node:path";
35698
+ init_heyspex_home();
35699
+ import { existsSync as existsSync7, readFileSync as readFileSync9 } from "node:fs";
35700
+ import { homedir as homedir8, tmpdir } from "node:os";
35701
+ import { dirname as dirname3, join as join11, resolve as resolve3 } from "node:path";
35676
35702
 
35677
35703
  // vendor/heyspex-mcp/console-fetch.mjs
35678
35704
  var SCOPE_REFUSAL_CODES = Object.freeze(["VAULT_SCOPE_MISMATCH", "ACCOUNT_MISMATCH", "VAULT_NOT_REGISTERED"]);
@@ -35681,9 +35707,11 @@ var SCOPE_REFUSAL_CODES = Object.freeze(["VAULT_SCOPE_MISMATCH", "ACCOUNT_MISMAT
35681
35707
  init_credentials();
35682
35708
 
35683
35709
  // spex-console/src/lib/vault-registry/registry-file.ts
35684
- import { existsSync as existsSync7, mkdirSync as mkdirSync6, readFileSync as readFileSync10, renameSync as renameSync5, writeFileSync as writeFileSync6 } from "node:fs";
35685
- import { homedir as homedir9 } from "node:os";
35686
- import { dirname as dirname4, join as join12, resolve as resolve4 } from "node:path";
35710
+ import { existsSync as existsSync8, mkdirSync as mkdirSync7, readFileSync as readFileSync11, renameSync as renameSync6, writeFileSync as writeFileSync7 } from "node:fs";
35711
+ import { dirname as dirname4, join as join13, resolve as resolve4 } from "node:path";
35712
+
35713
+ // spex-console/src/lib/heyspex-home.ts
35714
+ import { homedir as homedir10 } from "node:os";
35687
35715
 
35688
35716
  // spex-console/src/lib/cli/init.ts
35689
35717
  function parseVaultId(content) {
@@ -36038,14 +36066,14 @@ function keysPath(vaultRoot) {
36038
36066
  return path5.join(vaultRoot, ".heyspex", "env.keys");
36039
36067
  }
36040
36068
  function homeKeysPath() {
36041
- return path5.join(process.env.HEYSPEX_ENV_KEYS_HOME || homedir10(), ".heyspex", "env.keys");
36069
+ return path5.join(process.env.HEYSPEX_ENV_KEYS_HOME || homedir11(), ".heyspex", "env.keys");
36042
36070
  }
36043
36071
  function dotenvPath(vaultRoot) {
36044
36072
  return path5.join(vaultRoot, ".env");
36045
36073
  }
36046
36074
  function readOrNull(file) {
36047
36075
  try {
36048
- return readFileSync11(file, "utf-8");
36076
+ return readFileSync12(file, "utf-8");
36049
36077
  } catch {
36050
36078
  return null;
36051
36079
  }
@@ -36059,7 +36087,7 @@ function renameWithRetry(tmp, file) {
36059
36087
  const retryable = /* @__PURE__ */ new Set(["EPERM", "EBUSY", "EACCES"]);
36060
36088
  for (let attempt = 0; ; attempt++) {
36061
36089
  try {
36062
- renameSync6(tmp, file);
36090
+ renameSync7(tmp, file);
36063
36091
  return;
36064
36092
  } catch (err) {
36065
36093
  const code = err.code ?? "";
@@ -36077,14 +36105,14 @@ function unlinkQuiet(file) {
36077
36105
  function atomicWrite(file, content, mode = 420) {
36078
36106
  const secret = mode === SECRET_MODE;
36079
36107
  const dir = path5.dirname(file);
36080
- mkdirSync7(dir, { recursive: true, ...secret ? { mode: SECRET_DIR_MODE } : {} });
36108
+ mkdirSync8(dir, { recursive: true, ...secret ? { mode: SECRET_DIR_MODE } : {} });
36081
36109
  const tmp = path5.join(
36082
36110
  dir,
36083
36111
  `.${path5.basename(file)}.${process.pid}.${randomBytes5(4).toString("hex")}.tmp`
36084
36112
  );
36085
36113
  let renamed = false;
36086
36114
  try {
36087
- writeFileSync7(tmp, content, { encoding: "utf-8", mode });
36115
+ writeFileSync8(tmp, content, { encoding: "utf-8", mode });
36088
36116
  if (secret) chmodOwnerOnly(tmp);
36089
36117
  renameWithRetry(tmp, file);
36090
36118
  renamed = true;
@@ -36098,11 +36126,11 @@ var LOCK_RETRY_MS3 = 50;
36098
36126
  var LOCK_STALE_MS3 = 5e3;
36099
36127
  function withFileLock(file, fn) {
36100
36128
  const lock = `${file}.lock`;
36101
- mkdirSync7(path5.dirname(file), { recursive: true, mode: SECRET_DIR_MODE });
36129
+ mkdirSync8(path5.dirname(file), { recursive: true, mode: SECRET_DIR_MODE });
36102
36130
  let held = false;
36103
36131
  for (let attempt = 0; attempt < LOCK_RETRIES && !held; attempt++) {
36104
36132
  try {
36105
- writeFileSync7(lock, `${process.pid}
36133
+ writeFileSync8(lock, `${process.pid}
36106
36134
  `, { flag: "wx" });
36107
36135
  held = true;
36108
36136
  } catch (err) {
@@ -36294,7 +36322,7 @@ function legacyDecryptAllSync(vaultRoot, name) {
36294
36322
  }
36295
36323
  function initProfile(vaultRoot, name = DEFAULT_PROFILE2, opts = {}) {
36296
36324
  const pFile = profilePath(vaultRoot, name);
36297
- if (existsSync8(pFile) && !opts.force) {
36325
+ if (existsSync9(pFile) && !opts.force) {
36298
36326
  throw new EnvVaultConfigError(
36299
36327
  `Env profile "${name}" already exists at ${pFile}. Pass --force to re-key it (this discards existing values and mints a new keypair).`
36300
36328
  );
@@ -36340,7 +36368,7 @@ function listProfiles(vaultRoot) {
36340
36368
  } catch {
36341
36369
  return [];
36342
36370
  }
36343
- return readdirSync(dir).filter((f) => f.endsWith(".env")).map((f) => f.slice(0, -".env".length)).sort();
36371
+ return readdirSync2(dir).filter((f) => f.endsWith(".env")).map((f) => f.slice(0, -".env".length)).sort();
36344
36372
  }
36345
36373
  function listProfilesStatus(vaultRoot) {
36346
36374
  return listProfiles(vaultRoot).map((name) => {
@@ -36680,7 +36708,7 @@ function removeGrant(vaultRoot, profileName, name, opts = {}) {
36680
36708
  }
36681
36709
  async function exportProfile(vaultRoot, name = DEFAULT_PROFILE2, opts = {}) {
36682
36710
  const target = dotenvPath(vaultRoot);
36683
- if (existsSync8(target) && !opts.force) {
36711
+ if (existsSync9(target) && !opts.force) {
36684
36712
  throw new EnvVaultConfigError(
36685
36713
  `${target} already exists. Pass --force to overwrite it (it is disposable \u2014 the encrypted profile is the system of record).`
36686
36714
  );
@@ -36709,7 +36737,7 @@ function writeTextFile(vaultRoot, filePath, content) {
36709
36737
  atomicWrite(resolveVaultPath(vaultRoot, filePath), content, SECRET_MODE);
36710
36738
  }
36711
36739
  function pathExists(vaultRoot, filePath) {
36712
- return existsSync8(resolveVaultPath(vaultRoot, filePath));
36740
+ return existsSync9(resolveVaultPath(vaultRoot, filePath));
36713
36741
  }
36714
36742
  function fileMtime(vaultRoot, filePath) {
36715
36743
  const resolved = resolveVaultPath(vaultRoot, filePath);
@@ -36736,7 +36764,7 @@ function listRepoSourceFiles(vaultRoot) {
36736
36764
  const walk = (dir, rel) => {
36737
36765
  let entries;
36738
36766
  try {
36739
- entries = readdirSync(dir, { withFileTypes: true });
36767
+ entries = readdirSync2(dir, { withFileTypes: true });
36740
36768
  } catch {
36741
36769
  return;
36742
36770
  }
@@ -36835,7 +36863,7 @@ function hsSelfCommand() {
36835
36863
  ...pkgRoot ? [path6.join(pkgRoot, "bin", "hs.mjs")] : [],
36836
36864
  path6.resolve(here, "..", "..", "bin", "hs.mjs")
36837
36865
  ];
36838
- const launcher = candidates.find((c) => existsSync9(c));
36866
+ const launcher = candidates.find((c) => existsSync10(c));
36839
36867
  return launcher ? [process3.execPath, launcher] : null;
36840
36868
  }
36841
36869
  var VIRTUAL_ADAPTER = /nordlynx|tailscale|zerotier|hamachi|wireguard|openvpn|proton|tap-|tun\d|vethernet|\bwsl\b|hyper-v|docker|vmware|virtualbox|vbox|utun|bridge/i;