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.
- package/.claude-plugin/marketplace.json +14 -0
- package/bin/hs.mjs +181 -15
- package/dist/cli/hs-check.mjs +88 -46
- package/dist/cli/hs-claim.mjs +84 -39
- package/dist/cli/hs-connect.mjs +583 -129
- package/dist/cli/hs-defer.mjs +251 -30
- package/dist/cli/hs-dev.mjs +20 -8
- package/dist/cli/hs-env.mjs +62 -34
- package/dist/cli/hs-index-rebuild.mjs +288 -83
- package/dist/cli/hs-index-reconcile.mjs +397 -111
- package/dist/cli/hs-init.mjs +2143 -91
- package/dist/cli/hs-install.mjs +628 -106
- package/dist/cli/hs-join.mjs +686 -236
- package/dist/cli/hs-vault-pull.mjs +3189 -179
- package/dist/cli/hs-vault-push.mjs +6433 -0
- package/dist/cli/hs-vault.mjs +396 -178
- package/dist/cli/hs-workspace.mjs +289 -151
- package/dist/cli-templates/harness-commands/claude/hs-backfill.md +28 -28
- package/dist/cli-templates/harness-commands/claude/hs-capture.md +62 -62
- package/dist/cli-templates/harness-commands/claude/hs-defer.md +29 -29
- package/dist/cli-templates/harness-commands/claude/hs-ground.md +30 -28
- package/dist/cli-templates/harness-commands/claude/hs-next.md +29 -29
- package/dist/cli-templates/harness-commands/claude/hs-promote.md +70 -70
- package/dist/cli-templates/harness-commands/claude/hs-push.md +35 -35
- package/dist/cli-templates/harness-commands/claude/hs-qc.md +27 -27
- package/dist/cli-templates/harness-commands/claude/hs-resolve.md +23 -23
- package/dist/cli-templates/harness-commands/claude/hs-review.md +23 -23
- package/dist/cli-templates/harness-commands/claude/hs-view.md +28 -26
- package/dist/cli-templates/harness-commands/claude/kill-ports.md +32 -32
- package/dist/cli-templates/harness-commands/claude/prototype.md +91 -91
- package/dist/cli-templates/harness-commands/cursor/hs-backfill.md +22 -22
- package/dist/cli-templates/harness-commands/cursor/hs-capture.md +56 -56
- package/dist/cli-templates/harness-commands/cursor/hs-defer.md +23 -23
- package/dist/cli-templates/harness-commands/cursor/hs-ground.md +24 -22
- package/dist/cli-templates/harness-commands/cursor/hs-next.md +23 -23
- package/dist/cli-templates/harness-commands/cursor/hs-promote.md +64 -64
- package/dist/cli-templates/harness-commands/cursor/hs-push.md +29 -29
- package/dist/cli-templates/harness-commands/cursor/hs-qc.md +21 -21
- package/dist/cli-templates/harness-commands/cursor/hs-resolve.md +17 -17
- package/dist/cli-templates/harness-commands/cursor/hs-review.md +17 -17
- package/dist/cli-templates/harness-commands/cursor/hs-view.md +24 -22
- package/dist/cli-templates/harness-commands/cursor/kill-ports.md +26 -26
- package/dist/cli-templates/harness-commands/cursor/prototype.md +86 -86
- package/docs/copilot-plugin-install.md +177 -0
- package/docs/driving-heyspex-from-copilot.md +165 -0
- package/package.json +21 -2
- package/plugins/heyspex/.claude-plugin/plugin.json +12 -12
- package/plugins/heyspex/.cursor-plugin/plugin.json +15 -15
- package/plugins/heyspex/README.md +312 -0
- package/plugins/heyspex/bin/run-hook.mjs +20 -2
- package/plugins/heyspex/hooks/cursor-hooks.json +81 -0
- package/plugins/heyspex/hooks/hooks.json +94 -37
- package/scripts/claude-hooks/_intent-classifier-router.mjs +456 -410
- package/scripts/claude-hooks/_intent-classifier-semantic.mjs +5 -0
- package/scripts/claude-hooks/_run.mjs +316 -23
- package/scripts/claude-hooks/capture-execution-gate.mjs +51 -0
- package/scripts/claude-hooks/claim-liveness-shared.mjs +2 -0
- package/scripts/claude-hooks/diagnose-capture-reminder.mjs +11 -0
- package/scripts/claude-hooks/directive-obligation-gate.mjs +11 -0
- package/scripts/claude-hooks/inject-communication-style.mjs +20 -0
- package/scripts/claude-hooks/intent-classifier-trigger.mjs +279 -247
- package/scripts/claude-hooks/session-end.mjs +2 -0
- package/scripts/claude-hooks/vault-mirror-catchup.mjs +11 -0
- package/scripts/claude-hooks/vault-write-tier-guard.mjs +11 -0
- package/scripts/claude-hooks/wip-checkpoint.mjs +5 -1
- package/scripts/cursor-hooks/manifest.mjs +46 -0
- package/scripts/heyspex-mode.mjs +20 -0
- package/scripts/hs-mode.mjs +1 -1
- package/scripts/hs-view.mjs +180 -17
- package/scripts/install-claude-code-hooks.mjs +3 -1
- package/scripts/install-copilot-hooks.mjs +288 -0
- package/scripts/lib/console-url-resolver.mjs +3 -2
- package/scripts/lib/customer-kit.mjs +327 -10
- package/scripts/lib/dev-mode.mjs +7 -6
- package/scripts/lib/directive-obligations.mjs +349 -0
- package/scripts/lib/hook-dispositions.mjs +210 -0
- package/scripts/lib/hook-vault-header.mjs +30 -0
- package/scripts/lib/hs-source-branch.mjs +196 -0
- package/scripts/lib/hs-source-log.mjs +2 -1
- package/scripts/lib/hs-source-preflight.mjs +18 -4
- package/scripts/lib/hs-source-push.mjs +386 -356
- package/scripts/lib/window-placement.mjs +109 -0
- package/spexharness/src/adapters/claude-code.mjs +11 -3
- package/spexharness/src/adapters/copilot.mjs +236 -0
- package/spexharness/src/adapters/detect-harness.mjs +34 -0
- package/spexharness/src/gates/_shell-write-targets.mjs +77 -0
- package/spexharness/src/gates/deep-research-cost-gate.mjs +4 -3
- package/spexharness/src/gates/diagnose-capture-reminder.mjs +112 -0
- package/spexharness/src/gates/directive-obligation-gate.decide.mjs +132 -0
- package/spexharness/src/gates/directive-obligation-gate.mjs +183 -0
- package/spexharness/src/gates/vault-mirror-catchup.mjs +124 -0
- package/spexharness/src/gates/vault-write-tier-guard.decide.mjs +125 -0
- package/spexharness/src/gates/vault-write-tier-guard.mjs +42 -0
- package/spexharness/src/intent-classifier.mjs +4 -2
- package/spexharness/src/intent-directive.mjs +626 -541
- package/spexharness/src/rule-table.mjs +31 -1
- package/vendor/heyspex-mcp/account-switch.mjs +6 -5
- package/vendor/heyspex-mcp/capture-buffer-patches.mjs +31 -3
- package/vendor/heyspex-mcp/capture-console-client.mjs +37 -2
- package/vendor/heyspex-mcp/capture-focus.mjs +26 -2
- package/vendor/heyspex-mcp/capture-outbox.mjs +10 -4
- package/vendor/heyspex-mcp/capture-sources.mjs +195 -0
- package/vendor/heyspex-mcp/capture-tools.mjs +56 -11
- package/vendor/heyspex-mcp/claim-tools.mjs +25 -2
- package/vendor/heyspex-mcp/cli-verbs.mjs +19 -21
- package/vendor/heyspex-mcp/cli.mjs +7 -1
- package/vendor/heyspex-mcp/close-branch-report.mjs +102 -0
- package/vendor/heyspex-mcp/cloud-vault-writes.mjs +197 -7
- package/vendor/heyspex-mcp/console-fetch.mjs +192 -28
- package/vendor/heyspex-mcp/console-transport.mjs +7 -1
- package/vendor/heyspex-mcp/credentials.mjs +9 -8
- package/vendor/heyspex-mcp/dev-tools.mjs +7 -0
- package/vendor/heyspex-mcp/filing-tools.mjs +35 -0
- package/vendor/heyspex-mcp/fleet-queue-tools.mjs +2 -1
- package/vendor/heyspex-mcp/folder-trust-store.mjs +2 -1
- package/vendor/heyspex-mcp/http-transport.mjs +2 -0
- package/vendor/heyspex-mcp/list-tools.mjs +1 -1
- package/vendor/heyspex-mcp/mcp-config.mjs +14 -1
- package/vendor/heyspex-mcp/memory-tools.mjs +523 -523
- package/vendor/heyspex-mcp/obligation-backstop.mjs +103 -0
- package/vendor/heyspex-mcp/occupied-keys.mjs +1 -0
- package/vendor/heyspex-mcp/on-deck-brief.mjs +19 -2
- package/vendor/heyspex-mcp/on-deck-scheduler.mjs +1708 -1708
- package/vendor/heyspex-mcp/plan-push.mjs +3 -2
- package/vendor/heyspex-mcp/preflight-gate.mjs +1 -0
- package/vendor/heyspex-mcp/procedure-handlers.mjs +327 -325
- package/vendor/heyspex-mcp/procedure-tools.mjs +1181 -1159
- package/vendor/heyspex-mcp/promote-capture.mjs +2 -0
- package/vendor/heyspex-mcp/promote-research.mjs +6 -0
- package/vendor/heyspex-mcp/read-path.mjs +162 -6
- package/vendor/heyspex-mcp/request-context.mjs +25 -1
- package/vendor/heyspex-mcp/research-handlers.mjs +6 -4
- package/vendor/heyspex-mcp/roadmap-default.mjs +70 -0
- package/vendor/heyspex-mcp/session-owner.mjs +3 -2
- package/vendor/heyspex-mcp/session-tools.mjs +10 -0
- package/vendor/heyspex-mcp/spec-edit-tools.mjs +8 -1
- package/vendor/heyspex-mcp/split-research.mjs +3 -0
- package/vendor/heyspex-mcp/submit-for-review.mjs +18 -1
- package/vendor/heyspex-mcp/summary-write-tools.mjs +5 -1
- package/vendor/heyspex-mcp/test-helpers.mjs +18 -3
- package/vendor/heyspex-mcp/tool-catalog.mjs +7 -1
- package/vendor/heyspex-mcp/tool-dispatch.mjs +18 -0
- package/vendor/heyspex-mcp/vault-io.mjs +720 -724
- package/vendor/heyspex-mcp/vault-resolve.mjs +197 -9
- package/vendor/heyspex-mcp/whoami.mjs +2 -1
- package/vendor/heyspex-mcp/write-outbox.mjs +512 -0
package/dist/cli/hs-env.mjs
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
26293
|
-
mkdirSync as
|
|
26294
|
-
readdirSync,
|
|
26295
|
-
readFileSync as
|
|
26296
|
-
renameSync as
|
|
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
|
|
26309
|
+
writeFileSync as writeFileSync8
|
|
26300
26310
|
} from "node:fs";
|
|
26301
|
-
import { homedir as
|
|
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
|
|
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
|
|
35652
|
-
import { homedir as
|
|
35653
|
-
import { join as
|
|
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
|
|
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
|
-
|
|
35674
|
-
import {
|
|
35675
|
-
import {
|
|
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
|
|
35685
|
-
import {
|
|
35686
|
-
|
|
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 ||
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 (
|
|
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
|
|
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 (
|
|
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
|
|
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 =
|
|
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) =>
|
|
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;
|