varlock 1.2.0 → 1.4.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.
Files changed (134) hide show
  1. package/dist/audit.command-PXY2ZGU2.js +16 -0
  2. package/dist/{audit.command-6TUJY57M.js.map → audit.command-PXY2ZGU2.js.map} +1 -1
  3. package/dist/auto-load.js +5 -5
  4. package/dist/{chunk-CWC3IAQM.js → chunk-2GZ4APXU.js} +29 -14
  5. package/dist/chunk-2GZ4APXU.js.map +1 -0
  6. package/dist/{chunk-2OIOYMYO.js → chunk-66VKZYD7.js} +6 -6
  7. package/dist/{chunk-2OIOYMYO.js.map → chunk-66VKZYD7.js.map} +1 -1
  8. package/dist/{chunk-BR3DT5Z5.js → chunk-7VERU3F7.js} +3 -3
  9. package/dist/{chunk-BR3DT5Z5.js.map → chunk-7VERU3F7.js.map} +1 -1
  10. package/dist/{chunk-KCUEK4TX.js → chunk-A5L3SRQS.js} +7 -7
  11. package/dist/{chunk-KCUEK4TX.js.map → chunk-A5L3SRQS.js.map} +1 -1
  12. package/dist/{chunk-5DUWGI2N.js → chunk-DIPEXEIL.js} +3 -3
  13. package/dist/{chunk-5DUWGI2N.js.map → chunk-DIPEXEIL.js.map} +1 -1
  14. package/dist/{chunk-2NQLWXPX.js → chunk-DQTUCLA7.js} +5 -5
  15. package/dist/{chunk-2NQLWXPX.js.map → chunk-DQTUCLA7.js.map} +1 -1
  16. package/dist/{chunk-VIUMRSUR.js → chunk-EGFAEO7L.js} +8 -8
  17. package/dist/{chunk-VIUMRSUR.js.map → chunk-EGFAEO7L.js.map} +1 -1
  18. package/dist/{chunk-FCSQRLIC.js → chunk-F64DA7XN.js} +6 -6
  19. package/dist/{chunk-FCSQRLIC.js.map → chunk-F64DA7XN.js.map} +1 -1
  20. package/dist/{chunk-6CCHLM3U.js → chunk-FA5SNEKN.js} +30 -12
  21. package/dist/chunk-FA5SNEKN.js.map +1 -0
  22. package/dist/{chunk-F6RTQ5QX.js → chunk-KFALDUEO.js} +3 -3
  23. package/dist/{chunk-F6RTQ5QX.js.map → chunk-KFALDUEO.js.map} +1 -1
  24. package/dist/{chunk-OA6PRICO.js → chunk-M6QE3D2O.js} +6 -6
  25. package/dist/{chunk-OA6PRICO.js.map → chunk-M6QE3D2O.js.map} +1 -1
  26. package/dist/{chunk-4A54P4EM.js → chunk-MGUGRIW2.js} +1185 -1152
  27. package/dist/chunk-MGUGRIW2.js.map +1 -0
  28. package/dist/{chunk-26E4E2MY.js → chunk-N7FJTNE5.js} +11 -5
  29. package/dist/chunk-N7FJTNE5.js.map +1 -0
  30. package/dist/chunk-NHNQJTPB.js +171 -0
  31. package/dist/chunk-NHNQJTPB.js.map +1 -0
  32. package/dist/{chunk-6PZXN47A.js → chunk-NZTQKZND.js} +4 -4
  33. package/dist/{chunk-6PZXN47A.js.map → chunk-NZTQKZND.js.map} +1 -1
  34. package/dist/{chunk-GURKQO4J.js → chunk-P4HNABAM.js} +103 -20
  35. package/dist/chunk-P4HNABAM.js.map +1 -0
  36. package/dist/{chunk-6CRDPEUT.js → chunk-PBWMMYWL.js} +685 -684
  37. package/dist/chunk-PBWMMYWL.js.map +1 -0
  38. package/dist/{chunk-H2JVYUHZ.js → chunk-Q4I7MXFB.js} +6 -6
  39. package/dist/{chunk-H2JVYUHZ.js.map → chunk-Q4I7MXFB.js.map} +1 -1
  40. package/dist/{chunk-GJ7PTJM4.js → chunk-Q7XUQDLE.js} +3 -3
  41. package/dist/{chunk-GJ7PTJM4.js.map → chunk-Q7XUQDLE.js.map} +1 -1
  42. package/dist/{chunk-R73FENLU.js → chunk-QDEAHBCB.js} +3 -3
  43. package/dist/{chunk-R73FENLU.js.map → chunk-QDEAHBCB.js.map} +1 -1
  44. package/dist/{chunk-2PBFWISH.js → chunk-ROZITJAP.js} +8 -8
  45. package/dist/chunk-ROZITJAP.js.map +1 -0
  46. package/dist/{chunk-35LTPRXV.js → chunk-RTKFINP6.js} +6 -6
  47. package/dist/{chunk-35LTPRXV.js.map → chunk-RTKFINP6.js.map} +1 -1
  48. package/dist/{chunk-QSYH5IDD.js → chunk-RWXFFQWH.js} +4 -4
  49. package/dist/{chunk-QSYH5IDD.js.map → chunk-RWXFFQWH.js.map} +1 -1
  50. package/dist/{chunk-LGEHJHB2.js → chunk-SX2NUZCL.js} +6 -5
  51. package/dist/{chunk-LGEHJHB2.js.map → chunk-SX2NUZCL.js.map} +1 -1
  52. package/dist/{chunk-A2JUQ2GK.js → chunk-T3NMDBCU.js} +6 -6
  53. package/dist/{chunk-A2JUQ2GK.js.map → chunk-T3NMDBCU.js.map} +1 -1
  54. package/dist/{chunk-MGWUDHT5.js → chunk-UUJK65RS.js} +11 -3
  55. package/dist/chunk-UUJK65RS.js.map +1 -0
  56. package/dist/{chunk-YHN6GZHR.js → chunk-YZCCCHDD.js} +6 -6
  57. package/dist/{chunk-YHN6GZHR.js.map → chunk-YZCCCHDD.js.map} +1 -1
  58. package/dist/{chunk-EE4UNY25.js → chunk-ZCYV47TZ.js} +8 -8
  59. package/dist/{chunk-EE4UNY25.js.map → chunk-ZCYV47TZ.js.map} +1 -1
  60. package/dist/cli/cli-executable.js +1547 -40
  61. package/dist/cli/cli-executable.js.map +1 -1
  62. package/dist/config-item-HMRJLPJY.js +7 -0
  63. package/dist/{config-item-7X6PUXJF.js.map → config-item-HMRJLPJY.js.map} +1 -1
  64. package/dist/dotenv-compat.js +5 -5
  65. package/dist/encrypt.command-7M34IUJY.js +14 -0
  66. package/dist/{encrypt.command-4E5SM5M6.js.map → encrypt.command-7M34IUJY.js.map} +1 -1
  67. package/dist/{env-graph-iNQyTcya.d.ts → env-graph-DImkUkjl.d.ts} +30 -19
  68. package/dist/explain.command-LZJOP4TM.js +15 -0
  69. package/dist/{explain.command-7FRFYSJJ.js.map → explain.command-LZJOP4TM.js.map} +1 -1
  70. package/dist/help.command-VIBYZWCF.js +5 -0
  71. package/dist/{help.command-7E52XAOO.js.map → help.command-VIBYZWCF.js.map} +1 -1
  72. package/dist/index.d.ts +2 -2
  73. package/dist/index.js +13 -14
  74. package/dist/index.js.map +1 -1
  75. package/dist/init.command-FFORG2JL.js +14 -0
  76. package/dist/{init.command-EMPZK5D3.js.map → init.command-FFORG2JL.js.map} +1 -1
  77. package/dist/install-plugin.command-SFNHDKVE.js +13 -0
  78. package/dist/{install-plugin.command-SYQAPBII.js.map → install-plugin.command-SFNHDKVE.js.map} +1 -1
  79. package/dist/load.command-V3C5H6CZ.js +15 -0
  80. package/dist/{load.command-R7UTXX2X.js.map → load.command-V3C5H6CZ.js.map} +1 -1
  81. package/dist/lock.command-QQV2S6NY.js +7 -0
  82. package/dist/{lock.command-4LTGMJA3.js.map → lock.command-QQV2S6NY.js.map} +1 -1
  83. package/dist/plugin-lib.d.ts +2 -2
  84. package/dist/plugin-lib.js +2 -2
  85. package/dist/printenv.command-2BIP7FCF.js +15 -0
  86. package/dist/{printenv.command-EVYMVYEZ.js.map → printenv.command-2BIP7FCF.js.map} +1 -1
  87. package/dist/reveal.command-7LHNCYS4.js +15 -0
  88. package/dist/{reveal.command-6IH7XDVT.js.map → reveal.command-7LHNCYS4.js.map} +1 -1
  89. package/dist/run.command-TRSRYDOM.js +16 -0
  90. package/dist/{run.command-WW2YKPUP.js.map → run.command-TRSRYDOM.js.map} +1 -1
  91. package/dist/runtime/env.d.ts +1 -1
  92. package/dist/runtime/env.js +1 -1
  93. package/dist/runtime/init-edge.cjs +9 -1
  94. package/dist/runtime/init-server.cjs +9 -1
  95. package/dist/runtime/patch-console.js +2 -2
  96. package/dist/runtime/patch-response.js +2 -2
  97. package/dist/runtime/patch-server-response.js +2 -2
  98. package/dist/scan.command-NMBEPFUC.js +16 -0
  99. package/dist/{scan.command-6PSWFMI5.js.map → scan.command-NMBEPFUC.js.map} +1 -1
  100. package/dist/telemetry.command-SMIT5ZZB.js +13 -0
  101. package/dist/{telemetry.command-ZD6XCRBZ.js.map → telemetry.command-SMIT5ZZB.js.map} +1 -1
  102. package/dist/typegen.command-C5KWLYPL.js +14 -0
  103. package/dist/{typegen.command-IKXM7OSU.js.map → typegen.command-C5KWLYPL.js.map} +1 -1
  104. package/native-bins/darwin/VarlockEnclave.app/Contents/CodeResources +0 -0
  105. package/native-bins/darwin/VarlockEnclave.app/Contents/MacOS/varlock-local-encrypt +0 -0
  106. package/native-bins/linux-arm64/varlock-local-encrypt +0 -0
  107. package/native-bins/linux-x64/varlock-local-encrypt +0 -0
  108. package/native-bins/win32-x64/varlock-local-encrypt.exe +0 -0
  109. package/package.json +4 -3
  110. package/dist/audit.command-6TUJY57M.js +0 -16
  111. package/dist/chunk-26E4E2MY.js.map +0 -1
  112. package/dist/chunk-2PBFWISH.js.map +0 -1
  113. package/dist/chunk-45N5EFNL.js +0 -136
  114. package/dist/chunk-45N5EFNL.js.map +0 -1
  115. package/dist/chunk-4A54P4EM.js.map +0 -1
  116. package/dist/chunk-6CCHLM3U.js.map +0 -1
  117. package/dist/chunk-6CRDPEUT.js.map +0 -1
  118. package/dist/chunk-CWC3IAQM.js.map +0 -1
  119. package/dist/chunk-GURKQO4J.js.map +0 -1
  120. package/dist/chunk-MGWUDHT5.js.map +0 -1
  121. package/dist/config-item-7X6PUXJF.js +0 -7
  122. package/dist/encrypt.command-4E5SM5M6.js +0 -14
  123. package/dist/explain.command-7FRFYSJJ.js +0 -15
  124. package/dist/help.command-7E52XAOO.js +0 -5
  125. package/dist/init.command-EMPZK5D3.js +0 -14
  126. package/dist/install-plugin.command-SYQAPBII.js +0 -13
  127. package/dist/load.command-R7UTXX2X.js +0 -15
  128. package/dist/lock.command-4LTGMJA3.js +0 -7
  129. package/dist/printenv.command-EVYMVYEZ.js +0 -15
  130. package/dist/reveal.command-6IH7XDVT.js +0 -15
  131. package/dist/run.command-WW2YKPUP.js +0 -16
  132. package/dist/scan.command-6PSWFMI5.js +0 -16
  133. package/dist/telemetry.command-ZD6XCRBZ.js +0 -13
  134. package/dist/typegen.command-IKXM7OSU.js +0 -15
@@ -0,0 +1,171 @@
1
+ import { CliExitError, getItemSummary, joinAndCompact } from './chunk-SX2NUZCL.js';
2
+ import { ansis_default, FileBasedDataSource } from './chunk-PBWMMYWL.js';
3
+ import { ParseError, LoadingError } from './chunk-FA5SNEKN.js';
4
+ import { __name } from './chunk-6PEHRAEP.js';
5
+
6
+ // src/cli/helpers/error-checks.ts
7
+ function showErrorLocationDetails(err) {
8
+ if (!err.location) return;
9
+ const errLoc = err.location;
10
+ const errPreview = [
11
+ errLoc.lineStr,
12
+ `${ansis_default.gray("-".repeat(errLoc.colNumber - 1))}${ansis_default.red("^")}`
13
+ ].join("\n");
14
+ console.error("");
15
+ console.error(`\u{1F4C2} ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);
16
+ console.error(errPreview);
17
+ }
18
+ __name(showErrorLocationDetails, "showErrorLocationDetails");
19
+ function showErrorTip(err) {
20
+ if (!err.tip) return;
21
+ for (const line of err.tip.split("\n")) {
22
+ console.error(` ${line}`);
23
+ }
24
+ }
25
+ __name(showErrorTip, "showErrorTip");
26
+ function checkForNoEnvFiles(envGraph, opts) {
27
+ if (Object.keys(envGraph.configSchema).length === 0) {
28
+ const hasParseErrors = envGraph.sortedDataSources.some((s) => s.loadingError instanceof ParseError);
29
+ if (hasParseErrors) {
30
+ if (opts?.noThrow) return;
31
+ throw new CliExitError("Parse error", { silent: true });
32
+ }
33
+ const displayPath = envGraph.basePath ?? process.cwd();
34
+ const hasLoadedFiles = envGraph.sortedDataSources.some((s) => s instanceof FileBasedDataSource);
35
+ if (!hasLoadedFiles) {
36
+ console.error(`\u{1F6A8} No .env files found in ${displayPath}
37
+ `);
38
+ console.error("Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.");
39
+ } else {
40
+ console.error(`\u{1F6A8} No config items defined in ${displayPath}
41
+ `);
42
+ console.error("Add items to your .env.schema file to get started.");
43
+ }
44
+ if (opts?.noThrow) return;
45
+ throw new CliExitError("No env files", { silent: true });
46
+ }
47
+ }
48
+ __name(checkForNoEnvFiles, "checkForNoEnvFiles");
49
+ function checkForSchemaErrors(envGraph, opts) {
50
+ let hasErrors = false;
51
+ let hasOutput = false;
52
+ for (const source of envGraph.sortedDataSources) {
53
+ const warnings = source.errors.filter((e) => e.isWarning);
54
+ const errors = source.errors.filter((e) => !e.isWarning);
55
+ if (!warnings.length && !errors.length) continue;
56
+ hasOutput = true;
57
+ const loadingErrors = errors.filter((e) => e instanceof LoadingError || e instanceof ParseError);
58
+ const otherErrors = errors.filter((e) => !(e instanceof LoadingError || e instanceof ParseError));
59
+ console.error(ansis_default.bold[errors.length ? "red" : "yellow"](`-- Problems encountered in ${source.label} --`));
60
+ if (source instanceof FileBasedDataSource) {
61
+ console.error("\u{1F4C1}", ansis_default.dim(`${source.fullPath}`));
62
+ console.log("");
63
+ }
64
+ for (const warning of warnings) {
65
+ console.error(ansis_default.yellow(`- \u26A0\uFE0F ${warning.message}`));
66
+ showErrorLocationDetails(warning);
67
+ }
68
+ for (const err of loadingErrors) {
69
+ console.error(ansis_default.red(`- \u274C ${err.message}`));
70
+ showErrorLocationDetails(err);
71
+ if (err.isUnexpected && err.originalError?.stack) {
72
+ console.error(`
73
+ ${ansis_default.dim("Stack trace:")}`);
74
+ console.error(ansis_default.dim(err.originalError.stack));
75
+ }
76
+ }
77
+ for (const err of otherErrors) {
78
+ console.error(ansis_default.red(`- \u274C ${err.message}`));
79
+ showErrorTip(err);
80
+ showErrorLocationDetails(err);
81
+ }
82
+ if (errors.length) {
83
+ hasErrors = true;
84
+ if (!opts?.noThrow) throw new CliExitError("Schema error", { silent: true });
85
+ }
86
+ }
87
+ return { hasErrors, hasOutput };
88
+ }
89
+ __name(checkForSchemaErrors, "checkForSchemaErrors");
90
+ function showPluginWarnings(envGraph) {
91
+ for (const plugin of envGraph.plugins) {
92
+ if (!plugin.warnings.length) continue;
93
+ for (const warning of plugin.warnings) {
94
+ console.error(ansis_default.yellow(`[WARNING] ${warning.message}`));
95
+ if (warning.tip) {
96
+ for (const line of warning.tip.split("\n")) {
97
+ console.error(` ${line}`);
98
+ }
99
+ }
100
+ }
101
+ }
102
+ }
103
+ __name(showPluginWarnings, "showPluginWarnings");
104
+ var InvalidEnvError = class extends Error {
105
+ static {
106
+ __name(this, "InvalidEnvError");
107
+ }
108
+ constructor() {
109
+ super("Resolved config/env did not pass validation");
110
+ }
111
+ getFormattedOutput() {
112
+ return `
113
+ \u{1F4A5} ${ansis_default.red(this.message)} \u{1F4A5}
114
+ `;
115
+ }
116
+ };
117
+ function checkForConfigErrors(envGraph, opts) {
118
+ let hasRootDecoratorErrors = false;
119
+ for (const source of envGraph.sortedDataSources) {
120
+ const resErrors = source.resolutionErrors;
121
+ if (resErrors.length) {
122
+ hasRootDecoratorErrors = true;
123
+ console.error(`\u{1F6A8} Root decorator error(s) in ${source.label}`);
124
+ if (source instanceof FileBasedDataSource) {
125
+ console.error(ansis_default.dim(` ${source.fullPath}`));
126
+ }
127
+ for (const err of resErrors) {
128
+ console.error(ansis_default.red(` - \u274C ${err.message}`));
129
+ showErrorTip(err);
130
+ showErrorLocationDetails(err);
131
+ }
132
+ }
133
+ }
134
+ if (hasRootDecoratorErrors) {
135
+ if (!opts?.noThrow) throw new CliExitError("Schema error", { silent: true });
136
+ return;
137
+ }
138
+ const failingItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((item) => item.validationState === "error");
139
+ const warningItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((item) => item.validationState === "warn");
140
+ if (failingItems.length > 0) {
141
+ console.error(`
142
+ \u{1F6A8}\u{1F6A8}\u{1F6A8} ${ansis_default.bold.red.underline("Configuration is currently invalid")} \u{1F6A8}\u{1F6A8}\u{1F6A8}
143
+ `);
144
+ for (const item of failingItems) {
145
+ console.error(getItemSummary(item));
146
+ }
147
+ for (const item of warningItems) {
148
+ console.error(getItemSummary(item));
149
+ }
150
+ if (opts?.showAll) {
151
+ console.error();
152
+ console.error(joinAndCompact([
153
+ "Valid items:",
154
+ ansis_default.italic.gray("(remove `--show-all` flag to hide)")
155
+ ]));
156
+ const validItems = envGraph.sortedConfigKeys.map((k) => envGraph.configSchema[k]).filter((i) => !!i.isValid);
157
+ for (const item of validItems) {
158
+ console.error(getItemSummary(item));
159
+ }
160
+ }
161
+ showPluginWarnings(envGraph);
162
+ if (!opts?.noThrow) {
163
+ throw new InvalidEnvError();
164
+ }
165
+ }
166
+ }
167
+ __name(checkForConfigErrors, "checkForConfigErrors");
168
+
169
+ export { InvalidEnvError, checkForConfigErrors, checkForNoEnvFiles, checkForSchemaErrors, showPluginWarnings };
170
+ //# sourceMappingURL=chunk-NHNQJTPB.js.map
171
+ //# sourceMappingURL=chunk-NHNQJTPB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/cli/helpers/error-checks.ts"],"names":[],"mappings":"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","file":"chunk-NHNQJTPB.js","sourcesContent":["import ansis from 'ansis';\nimport { EnvGraph, FileBasedDataSource } from '../../env-graph';\nimport { getItemSummary, joinAndCompact } from '../../lib/formatting';\nimport {\n LoadingError, ParseError, VarlockError,\n} from '../../env-graph/lib/errors';\nimport { CliExitError } from './exit-error';\n\nfunction showErrorLocationDetails(err: VarlockError) {\n if (!err.location) return;\n const errLoc = err.location;\n const errPreview = [\n errLoc.lineStr,\n `${ansis.gray('-'.repeat(errLoc.colNumber - 1))}${ansis.red('^')}`,\n ].join('\\n');\n\n console.error('');\n console.error(`📂 ${errLoc.id}:${errLoc.lineNumber}:${errLoc.colNumber}`);\n console.error(errPreview);\n}\n\nfunction showErrorTip(err: VarlockError) {\n if (!err.tip) return;\n for (const line of err.tip.split('\\n')) {\n console.error(` ${line}`);\n }\n}\n\nexport function checkForNoEnvFiles(envGraph: EnvGraph, opts?: { noThrow?: boolean }) {\n if (Object.keys(envGraph.configSchema).length === 0) {\n // If a source has a parse error, the schema couldn't be read at all so\n // \"no config items defined\" is misleading — the parse error (already\n // reported by checkForSchemaErrors) is the real problem.\n const hasParseErrors = envGraph.sortedDataSources.some((s) => s.loadingError instanceof ParseError);\n if (hasParseErrors) {\n if (opts?.noThrow) return;\n throw new CliExitError('Parse error', { silent: true });\n }\n\n const displayPath = envGraph.basePath ?? process.cwd();\n const hasLoadedFiles = envGraph.sortedDataSources.some((s) => s instanceof FileBasedDataSource);\n if (!hasLoadedFiles) {\n console.error(`🚨 No .env files found in ${displayPath}\\n`);\n console.error('Run `varlock init` to create a .env.schema file, or use `--path` to specify a file or directory.');\n } else {\n console.error(`🚨 No config items defined in ${displayPath}\\n`);\n console.error('Add items to your .env.schema file to get started.');\n }\n if (opts?.noThrow) return;\n throw new CliExitError('No env files', { silent: true });\n }\n}\n\nexport function checkForSchemaErrors(envGraph: EnvGraph, opts?: { noThrow?: boolean }) {\n let hasErrors = false;\n let hasOutput = false;\n for (const source of envGraph.sortedDataSources) {\n const warnings = source.errors.filter((e) => e.isWarning);\n const errors = source.errors.filter((e) => !e.isWarning);\n\n if (!warnings.length && !errors.length) continue;\n hasOutput = true;\n\n // group by error type for clearer output\n const loadingErrors = errors.filter((e) => e instanceof LoadingError || e instanceof ParseError);\n const otherErrors = errors.filter((e) => !(e instanceof LoadingError || e instanceof ParseError));\n\n // single header per file\n console.error(ansis.bold[errors.length ? 'red' : 'yellow'](`-- Problems encountered in ${source.label} --`));\n\n if (source instanceof FileBasedDataSource) {\n console.error('📁', ansis.dim(`${source.fullPath}`));\n console.log('');\n }\n\n for (const warning of warnings) {\n console.error(ansis.yellow(`- ⚠️ ${warning.message}`));\n showErrorLocationDetails(warning);\n }\n\n for (const err of loadingErrors) {\n console.error(ansis.red(`- ❌ ${err.message}`));\n showErrorLocationDetails(err);\n if (err.isUnexpected && err.originalError?.stack) {\n console.error(`\\n${ansis.dim('Stack trace:')}`);\n console.error(ansis.dim(err.originalError.stack));\n }\n }\n\n for (const err of otherErrors) {\n console.error(ansis.red(`- ❌ ${err.message}`));\n showErrorTip(err);\n showErrorLocationDetails(err);\n }\n\n if (errors.length) {\n hasErrors = true;\n if (!opts?.noThrow) throw new CliExitError('Schema error', { silent: true });\n }\n }\n return { hasErrors, hasOutput };\n}\n\n\nexport function showPluginWarnings(envGraph: EnvGraph) {\n for (const plugin of envGraph.plugins) {\n if (!plugin.warnings.length) continue;\n for (const warning of plugin.warnings) {\n console.error(ansis.yellow(`[WARNING] ${warning.message}`));\n if (warning.tip) {\n for (const line of warning.tip.split('\\n')) {\n console.error(` ${line}`);\n }\n }\n }\n }\n}\n\nexport class InvalidEnvError extends Error {\n constructor() {\n super('Resolved config/env did not pass validation');\n }\n getFormattedOutput() {\n return `\\n💥 ${ansis.red(this.message)} 💥\\n`;\n }\n}\n\nexport function checkForConfigErrors(envGraph: EnvGraph, opts?: {\n showAll?: boolean;\n /** Log errors to stderr but don't throw — used when the caller will handle errors itself (e.g. json-full output) */\n noThrow?: boolean;\n}) {\n // check for root decorator execution errors (fatal — stop before showing items)\n let hasRootDecoratorErrors = false;\n for (const source of envGraph.sortedDataSources) {\n const resErrors = source.resolutionErrors;\n if (resErrors.length) {\n hasRootDecoratorErrors = true;\n console.error(`🚨 Root decorator error(s) in ${source.label}`);\n if (source instanceof FileBasedDataSource) {\n console.error(ansis.dim(` ${source.fullPath}`));\n }\n\n for (const err of resErrors) {\n console.error(ansis.red(` - ❌ ${err.message}`));\n showErrorTip(err);\n showErrorLocationDetails(err);\n }\n }\n }\n\n if (hasRootDecoratorErrors) {\n if (!opts?.noThrow) throw new CliExitError('Schema error', { silent: true });\n return;\n }\n\n const failingItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((item) => item.validationState === 'error');\n const warningItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((item) => item.validationState === 'warn');\n\n if (failingItems.length > 0) {\n console.error(`\\n🚨🚨🚨 ${ansis.bold.red.underline('Configuration is currently invalid')} 🚨🚨🚨\\n`);\n\n for (const item of failingItems) {\n console.error(getItemSummary(item));\n }\n for (const item of warningItems) {\n console.error(getItemSummary(item));\n }\n\n if (opts?.showAll) {\n console.error();\n console.error(joinAndCompact([\n 'Valid items:',\n ansis.italic.gray('(remove `--show-all` flag to hide)'),\n ]));\n const validItems = envGraph.sortedConfigKeys\n .map((k) => envGraph.configSchema[k])\n .filter((i) => !!i.isValid);\n for (const item of validItems) {\n console.error(getItemSummary(item));\n }\n }\n\n showPluginWarnings(envGraph);\n if (!opts?.noThrow) {\n throw new InvalidEnvError();\n }\n }\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { CliExitError } from './chunk-LGEHJHB2.js';
2
- import { detectWorkspaceInfo, ansis_default } from './chunk-6CRDPEUT.js';
1
+ import { CliExitError } from './chunk-SX2NUZCL.js';
2
+ import { detectWorkspaceInfo, ansis_default } from './chunk-PBWMMYWL.js';
3
3
  import { __name } from './chunk-6PEHRAEP.js';
4
4
  import path from 'path';
5
5
  import fs, { existsSync } from 'fs';
@@ -64,5 +64,5 @@ var logLines = /* @__PURE__ */ __name((lines) => {
64
64
  }, "logLines");
65
65
 
66
66
  export { detectJsPackageManager, fmt, installJsDependency, logLines };
67
- //# sourceMappingURL=chunk-6PZXN47A.js.map
68
- //# sourceMappingURL=chunk-6PZXN47A.js.map
67
+ //# sourceMappingURL=chunk-NZTQKZND.js.map
68
+ //# sourceMappingURL=chunk-NZTQKZND.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/helpers/js-package-manager-utils.ts","../src/cli/helpers/pretty-format.ts"],"names":[],"mappings":"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","file":"chunk-6PZXN47A.js","sourcesContent":["// Re-exports for backward compatibility - prefer importing from lib/workspace-utils directly\nexport {\n JS_PACKAGE_MANAGERS,\n detectWorkspaceInfo,\n getWorkspaceInfo,\n runWithWorkspaceInfo,\n type JsPackageManager,\n type JsPackageManagerMeta,\n type WorkspaceInfo,\n type MonorepoTool,\n} from '../../lib/workspace-utils';\n\nimport path from 'node:path';\nimport fs, { existsSync } from 'node:fs';\nimport { execSync } from 'node:child_process';\nimport { CliExitError } from './exit-error';\nimport { detectWorkspaceInfo, type JsPackageManager } from '../../lib/workspace-utils';\n\nexport function detectJsPackageManager(opts?: {\n cwd?: string,\n exitIfNotFound?: boolean,\n}) {\n const info = detectWorkspaceInfo({ cwd: opts?.cwd });\n if (!info) {\n if (opts?.exitIfNotFound) {\n throw new CliExitError('Unable to detect your JavaScript package manager!', {\n suggestion: 'We look for lock files (ex: package-lock.json) so you may just need to run a dependency install (ie `npm install`)',\n forceExit: true,\n });\n }\n return undefined;\n }\n return info.packageManager;\n}\n\nexport function installJsDependency(opts: {\n packageName: string,\n packageManager: JsPackageManager,\n packagePath?: string,\n isMonoRepoRoot?: boolean,\n}) {\n const packageJsonPath = path.join(opts.packagePath || process.cwd(), 'package.json');\n\n // for now, we'll just bail if we dont see a package.json\n if (!existsSync(packageJsonPath)) return false;\n\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n // bail if already installed\n if (packageJson.dependencies?.varlock) return false;\n\n // TODO: might want to check first if it's already installed?\n execSync([\n // move to the correct directory if needed\n opts.packagePath && `cd ${opts.packagePath} &&`,\n // `add` works in all of them\n `${opts.packageManager} add ${opts.packageName}`,\n // tells pnpm to either install in the workspace root explicitly\n // or to not check if we are the in the root\n opts.packageManager === 'pnpm' && (opts.isMonoRepoRoot ? '-w' : '--ignore-workspace-root-check'),\n ].filter(Boolean).join(' '));\n\n return true;\n}\n","import ansis from 'ansis';\nimport { detectJsPackageManager, type JsPackageManagerMeta } from './js-package-manager-utils';\n\n\nexport const fmt = {\n decorator: (s: string) => ansis.magenta(s),\n filePath: (s: string) => `📂 ${ansis.cyan.italic(s)}`,\n fileName: (s: string) => `${ansis.cyan.italic(s)}`,\n command: (s: string, opts?: { jsPackageManager?: JsPackageManagerMeta | true }) => {\n let jsPackageManager: JsPackageManagerMeta | undefined;\n if (opts?.jsPackageManager === true) {\n jsPackageManager = detectJsPackageManager();\n } else if (opts?.jsPackageManager) {\n jsPackageManager = opts.jsPackageManager;\n }\n if (jsPackageManager) {\n s = `${jsPackageManager.exec} ${s}`;\n }\n return ansis.green.italic(s);\n },\n packageName: (s: string) => ansis.green.italic(s),\n};\n\nexport const logLines = (lines: Array<string | false | undefined>) => {\n for (const line of lines) {\n // skip false, null, undefined, but not empty strings\n if (!line && line !== '') continue;\n console.log(line);\n }\n};\n"]}
1
+ {"version":3,"sources":["../src/cli/helpers/js-package-manager-utils.ts","../src/cli/helpers/pretty-format.ts"],"names":[],"mappings":"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","file":"chunk-NZTQKZND.js","sourcesContent":["// Re-exports for backward compatibility - prefer importing from lib/workspace-utils directly\nexport {\n JS_PACKAGE_MANAGERS,\n detectWorkspaceInfo,\n getWorkspaceInfo,\n runWithWorkspaceInfo,\n type JsPackageManager,\n type JsPackageManagerMeta,\n type WorkspaceInfo,\n type MonorepoTool,\n} from '../../lib/workspace-utils';\n\nimport path from 'node:path';\nimport fs, { existsSync } from 'node:fs';\nimport { execSync } from 'node:child_process';\nimport { CliExitError } from './exit-error';\nimport { detectWorkspaceInfo, type JsPackageManager } from '../../lib/workspace-utils';\n\nexport function detectJsPackageManager(opts?: {\n cwd?: string,\n exitIfNotFound?: boolean,\n}) {\n const info = detectWorkspaceInfo({ cwd: opts?.cwd });\n if (!info) {\n if (opts?.exitIfNotFound) {\n throw new CliExitError('Unable to detect your JavaScript package manager!', {\n suggestion: 'We look for lock files (ex: package-lock.json) so you may just need to run a dependency install (ie `npm install`)',\n forceExit: true,\n });\n }\n return undefined;\n }\n return info.packageManager;\n}\n\nexport function installJsDependency(opts: {\n packageName: string,\n packageManager: JsPackageManager,\n packagePath?: string,\n isMonoRepoRoot?: boolean,\n}) {\n const packageJsonPath = path.join(opts.packagePath || process.cwd(), 'package.json');\n\n // for now, we'll just bail if we dont see a package.json\n if (!existsSync(packageJsonPath)) return false;\n\n const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf8'));\n // bail if already installed\n if (packageJson.dependencies?.varlock) return false;\n\n // TODO: might want to check first if it's already installed?\n execSync([\n // move to the correct directory if needed\n opts.packagePath && `cd ${opts.packagePath} &&`,\n // `add` works in all of them\n `${opts.packageManager} add ${opts.packageName}`,\n // tells pnpm to either install in the workspace root explicitly\n // or to not check if we are the in the root\n opts.packageManager === 'pnpm' && (opts.isMonoRepoRoot ? '-w' : '--ignore-workspace-root-check'),\n ].filter(Boolean).join(' '));\n\n return true;\n}\n","import ansis from 'ansis';\nimport { detectJsPackageManager, type JsPackageManagerMeta } from './js-package-manager-utils';\n\n\nexport const fmt = {\n decorator: (s: string) => ansis.magenta(s),\n filePath: (s: string) => `📂 ${ansis.cyan.italic(s)}`,\n fileName: (s: string) => `${ansis.cyan.italic(s)}`,\n command: (s: string, opts?: { jsPackageManager?: JsPackageManagerMeta | true }) => {\n let jsPackageManager: JsPackageManagerMeta | undefined;\n if (opts?.jsPackageManager === true) {\n jsPackageManager = detectJsPackageManager();\n } else if (opts?.jsPackageManager) {\n jsPackageManager = opts.jsPackageManager;\n }\n if (jsPackageManager) {\n s = `${jsPackageManager.exec} ${s}`;\n }\n return ansis.green.italic(s);\n },\n packageName: (s: string) => ansis.green.italic(s),\n};\n\nexport const logLines = (lines: Array<string | false | undefined>) => {\n for (const line of lines) {\n // skip false, null, undefined, but not empty strings\n if (!line && line !== '') continue;\n console.log(line);\n }\n};\n"]}
@@ -551,6 +551,11 @@ var DaemonClient = class {
551
551
  });
552
552
  }
553
553
  async spawnDaemon() {
554
+ if (isWSL()) {
555
+ throw new Error(
556
+ "DaemonClient is not supported on WSL2. The Windows encryption daemon uses a Windows named pipe that Linux socket APIs cannot connect to. Use the Windows binary directly instead."
557
+ );
558
+ }
554
559
  const binaryPath = resolveNativeBinary();
555
560
  if (!binaryPath) {
556
561
  throw new Error("Native encryption binary not found \u2014 cannot start daemon");
@@ -853,13 +858,88 @@ function debug3(msg) {
853
858
  }
854
859
  }
855
860
  __name(debug3, "debug");
856
- var _cachedSessionId;
857
- function getSelfSessionId() {
858
- if (_cachedSessionId) return _cachedSessionId;
861
+ var SHELL_RUNNER_NAMES = /* @__PURE__ */ new Set(["sh", "bash", "zsh", "dash", "fish", "ksh", "csh", "tcsh"]);
862
+ var VARLOCK_LAUNCHER_NAMES = /* @__PURE__ */ new Set(["varlock", "varlock.exe", "varlock.cmd"]);
863
+ var PACKAGE_MANAGER_RUNNER_NAMES = /* @__PURE__ */ new Set(["bun", "node", "npm", "npx", "pnpm", "pnpx", "yarn", "yarnpkg"]);
864
+ var NO_TTY_SESSION_ENV_KEYS = [
865
+ "CODEX_THREAD_ID",
866
+ "CLAUDE_CODE_SESSION_ID",
867
+ "CLAUDE_SESSION_ID"
868
+ ];
869
+ function getProcessName(pid) {
870
+ try {
871
+ const exePath = fs.readlinkSync(`/proc/${pid}/exe`);
872
+ return exePath.split("/").pop()?.toLowerCase();
873
+ } catch {
874
+ }
875
+ try {
876
+ return fs.readFileSync(`/proc/${pid}/comm`, "utf-8").trim().toLowerCase();
877
+ } catch {
878
+ return void 0;
879
+ }
880
+ }
881
+ __name(getProcessName, "getProcessName");
882
+ function getProcessArgs(pid) {
883
+ try {
884
+ return fs.readFileSync(`/proc/${pid}/cmdline`, "utf-8").split("\0").filter(Boolean);
885
+ } catch {
886
+ return [];
887
+ }
888
+ }
889
+ __name(getProcessArgs, "getProcessArgs");
890
+ function processCommandLineLaunchesVarlock(pid) {
891
+ return getProcessArgs(pid).some((arg) => {
892
+ const name = arg.split("/").pop()?.toLowerCase();
893
+ return Boolean(
894
+ name && VARLOCK_LAUNCHER_NAMES.has(name) || arg.includes("/node_modules/.bin/varlock") || arg.includes("/varlock/bin/cli.js") || arg.includes("/packages/varlock/bin/cli.js")
895
+ );
896
+ });
897
+ }
898
+ __name(processCommandLineLaunchesVarlock, "processCommandLineLaunchesVarlock");
899
+ function isEphemeralRunner(pid) {
900
+ const name = getProcessName(pid);
901
+ if (!name) return false;
902
+ if (SHELL_RUNNER_NAMES.has(name) || VARLOCK_LAUNCHER_NAMES.has(name)) return true;
903
+ return PACKAGE_MANAGER_RUNNER_NAMES.has(name) && processCommandLineLaunchesVarlock(pid);
904
+ }
905
+ __name(isEphemeralRunner, "isEphemeralRunner");
906
+ function selectScopePidFromChain(chain) {
907
+ if (chain.length < 2) return void 0;
908
+ if (chain.length >= 4) {
909
+ let scopePid = chain[chain.length - 3];
910
+ if (isEphemeralRunner(scopePid)) {
911
+ const fallback = chain[chain.length - 2];
912
+ scopePid = isEphemeralRunner(fallback) ? chain[chain.length - 1] : fallback;
913
+ }
914
+ return scopePid;
915
+ }
916
+ return chain[chain.length - 1];
917
+ }
918
+ __name(selectScopePidFromChain, "selectScopePidFromChain");
919
+ function getProcessStartTime(pid) {
920
+ try {
921
+ const scopeStat = fs.readFileSync(`/proc/${pid}/stat`, "utf-8");
922
+ const scopeFields = scopeStat.split(") ");
923
+ if (scopeFields.length >= 2) {
924
+ return parseInt(scopeFields[1].split(" ")[19], 10) || 0;
925
+ }
926
+ } catch {
927
+ }
928
+ return 0;
929
+ }
930
+ __name(getProcessStartTime, "getProcessStartTime");
931
+ function getNoTtySessionIdFromEnv() {
932
+ for (const key of NO_TTY_SESSION_ENV_KEYS) {
933
+ const value = process.env[key]?.trim();
934
+ if (value) return `env:${key}:${value}`;
935
+ }
936
+ return void 0;
937
+ }
938
+ __name(getNoTtySessionIdFromEnv, "getNoTtySessionIdFromEnv");
939
+ function getParentSessionId() {
859
940
  try {
860
941
  const ttyPath = fs.readlinkSync("/proc/self/fd/0");
861
942
  if (ttyPath && ttyPath.startsWith("/dev/")) {
862
- _cachedSessionId = ttyPath;
863
943
  return ttyPath;
864
944
  }
865
945
  } catch {
@@ -876,23 +956,26 @@ function getSelfSessionId() {
876
956
  chain.push(ppid);
877
957
  current = ppid;
878
958
  }
879
- if (chain.length >= 4) {
880
- const scopePid = chain[chain.length - 3];
881
- let startTime = 0;
882
- try {
883
- const scopeStat = fs.readFileSync(`/proc/${scopePid}/stat`, "utf-8");
884
- const scopeFields = scopeStat.split(") ");
885
- if (scopeFields.length >= 2) {
886
- startTime = parseInt(scopeFields[1].split(" ")[19], 10) || 0;
887
- }
888
- } catch {
889
- }
890
- _cachedSessionId = `ptree:${scopePid}:${startTime}`;
891
- return _cachedSessionId;
959
+ const scopePid = selectScopePidFromChain(chain);
960
+ if (scopePid !== void 0) {
961
+ const startTime = getProcessStartTime(scopePid);
962
+ return `ptree:${scopePid}:${startTime}`;
892
963
  }
893
964
  } catch {
894
965
  }
895
- _cachedSessionId = `pid:${process.pid}`;
966
+ return `pid:${process.pid}`;
967
+ }
968
+ __name(getParentSessionId, "getParentSessionId");
969
+ var _cachedSessionId;
970
+ function getSelfSessionId() {
971
+ if (_cachedSessionId) return _cachedSessionId;
972
+ const parentSessionId = getParentSessionId();
973
+ const envSessionId = getNoTtySessionIdFromEnv();
974
+ if (envSessionId) {
975
+ _cachedSessionId = `${envSessionId}|${parentSessionId}`;
976
+ return _cachedSessionId;
977
+ }
978
+ _cachedSessionId = parentSessionId;
896
979
  return _cachedSessionId;
897
980
  }
898
981
  __name(getSelfSessionId, "getSelfSessionId");
@@ -1198,5 +1281,5 @@ async function lockSession() {
1198
1281
  __name(lockSession, "lockSession");
1199
1282
 
1200
1283
  export { decryptValue2 as decryptValue, encryptValue2 as encryptValue, ensureKey, getBackendInfo, getDaemonClient, lockSession };
1201
- //# sourceMappingURL=chunk-GURKQO4J.js.map
1202
- //# sourceMappingURL=chunk-GURKQO4J.js.map
1284
+ //# sourceMappingURL=chunk-P4HNABAM.js.map
1285
+ //# sourceMappingURL=chunk-P4HNABAM.js.map