vaulter 0.2.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 (145) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +490 -0
  3. package/dist/bin/minienv-mcp.cjs +17 -0
  4. package/dist/bin/minienv.cjs +146 -0
  5. package/dist/cli/commands/delete.d.ts +22 -0
  6. package/dist/cli/commands/delete.d.ts.map +1 -0
  7. package/dist/cli/commands/delete.js +85 -0
  8. package/dist/cli/commands/delete.js.map +1 -0
  9. package/dist/cli/commands/export.d.ts +21 -0
  10. package/dist/cli/commands/export.d.ts.map +1 -0
  11. package/dist/cli/commands/export.js +126 -0
  12. package/dist/cli/commands/export.js.map +1 -0
  13. package/dist/cli/commands/get.d.ts +21 -0
  14. package/dist/cli/commands/get.d.ts.map +1 -0
  15. package/dist/cli/commands/get.js +62 -0
  16. package/dist/cli/commands/get.js.map +1 -0
  17. package/dist/cli/commands/init.d.ts +20 -0
  18. package/dist/cli/commands/init.d.ts.map +1 -0
  19. package/dist/cli/commands/init.js +98 -0
  20. package/dist/cli/commands/init.js.map +1 -0
  21. package/dist/cli/commands/integrations/helm.d.ts +21 -0
  22. package/dist/cli/commands/integrations/helm.d.ts.map +1 -0
  23. package/dist/cli/commands/integrations/helm.js +113 -0
  24. package/dist/cli/commands/integrations/helm.js.map +1 -0
  25. package/dist/cli/commands/integrations/kubernetes.d.ts +25 -0
  26. package/dist/cli/commands/integrations/kubernetes.d.ts.map +1 -0
  27. package/dist/cli/commands/integrations/kubernetes.js +199 -0
  28. package/dist/cli/commands/integrations/kubernetes.js.map +1 -0
  29. package/dist/cli/commands/integrations/terraform.d.ts +25 -0
  30. package/dist/cli/commands/integrations/terraform.d.ts.map +1 -0
  31. package/dist/cli/commands/integrations/terraform.js +131 -0
  32. package/dist/cli/commands/integrations/terraform.js.map +1 -0
  33. package/dist/cli/commands/key.d.ts +19 -0
  34. package/dist/cli/commands/key.d.ts.map +1 -0
  35. package/dist/cli/commands/key.js +247 -0
  36. package/dist/cli/commands/key.js.map +1 -0
  37. package/dist/cli/commands/list.d.ts +21 -0
  38. package/dist/cli/commands/list.d.ts.map +1 -0
  39. package/dist/cli/commands/list.js +94 -0
  40. package/dist/cli/commands/list.js.map +1 -0
  41. package/dist/cli/commands/pull.d.ts +22 -0
  42. package/dist/cli/commands/pull.d.ts.map +1 -0
  43. package/dist/cli/commands/pull.js +142 -0
  44. package/dist/cli/commands/pull.js.map +1 -0
  45. package/dist/cli/commands/push.d.ts +22 -0
  46. package/dist/cli/commands/push.d.ts.map +1 -0
  47. package/dist/cli/commands/push.js +181 -0
  48. package/dist/cli/commands/push.js.map +1 -0
  49. package/dist/cli/commands/services.d.ts +18 -0
  50. package/dist/cli/commands/services.d.ts.map +1 -0
  51. package/dist/cli/commands/services.js +92 -0
  52. package/dist/cli/commands/services.js.map +1 -0
  53. package/dist/cli/commands/set.d.ts +22 -0
  54. package/dist/cli/commands/set.d.ts.map +1 -0
  55. package/dist/cli/commands/set.js +93 -0
  56. package/dist/cli/commands/set.js.map +1 -0
  57. package/dist/cli/commands/sync.d.ts +23 -0
  58. package/dist/cli/commands/sync.d.ts.map +1 -0
  59. package/dist/cli/commands/sync.js +362 -0
  60. package/dist/cli/commands/sync.js.map +1 -0
  61. package/dist/cli/index.d.ts +7 -0
  62. package/dist/cli/index.d.ts.map +1 -0
  63. package/dist/cli/index.js +266 -0
  64. package/dist/cli/index.js.map +1 -0
  65. package/dist/cli/lib/create-client.d.ts +21 -0
  66. package/dist/cli/lib/create-client.d.ts.map +1 -0
  67. package/dist/cli/lib/create-client.js +68 -0
  68. package/dist/cli/lib/create-client.js.map +1 -0
  69. package/dist/cli/lib/hooks.d.ts +5 -0
  70. package/dist/cli/lib/hooks.d.ts.map +1 -0
  71. package/dist/cli/lib/hooks.js +17 -0
  72. package/dist/cli/lib/hooks.js.map +1 -0
  73. package/dist/cli/preload.d.ts +6 -0
  74. package/dist/cli/preload.d.ts.map +1 -0
  75. package/dist/cli/preload.js +7 -0
  76. package/dist/cli/preload.js.map +1 -0
  77. package/dist/client.d.ts +89 -0
  78. package/dist/client.d.ts.map +1 -0
  79. package/dist/client.js +350 -0
  80. package/dist/client.js.map +1 -0
  81. package/dist/index.d.ts +20 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +33 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/lib/batch-runner.d.ts +39 -0
  86. package/dist/lib/batch-runner.d.ts.map +1 -0
  87. package/dist/lib/batch-runner.js +117 -0
  88. package/dist/lib/batch-runner.js.map +1 -0
  89. package/dist/lib/config-loader.d.ts +45 -0
  90. package/dist/lib/config-loader.d.ts.map +1 -0
  91. package/dist/lib/config-loader.js +357 -0
  92. package/dist/lib/config-loader.js.map +1 -0
  93. package/dist/lib/env-parser.d.ts +38 -0
  94. package/dist/lib/env-parser.d.ts.map +1 -0
  95. package/dist/lib/env-parser.js +281 -0
  96. package/dist/lib/env-parser.js.map +1 -0
  97. package/dist/lib/monorepo.d.ts +39 -0
  98. package/dist/lib/monorepo.d.ts.map +1 -0
  99. package/dist/lib/monorepo.js +181 -0
  100. package/dist/lib/monorepo.js.map +1 -0
  101. package/dist/lib/pattern-matcher.d.ts +5 -0
  102. package/dist/lib/pattern-matcher.d.ts.map +1 -0
  103. package/dist/lib/pattern-matcher.js +18 -0
  104. package/dist/lib/pattern-matcher.js.map +1 -0
  105. package/dist/lib/s3-key-loader.d.ts +33 -0
  106. package/dist/lib/s3-key-loader.d.ts.map +1 -0
  107. package/dist/lib/s3-key-loader.js +83 -0
  108. package/dist/lib/s3-key-loader.js.map +1 -0
  109. package/dist/lib/secret-patterns.d.ts +10 -0
  110. package/dist/lib/secret-patterns.d.ts.map +1 -0
  111. package/dist/lib/secret-patterns.js +27 -0
  112. package/dist/lib/secret-patterns.js.map +1 -0
  113. package/dist/load.d.ts +14 -0
  114. package/dist/load.d.ts.map +1 -0
  115. package/dist/load.js +15 -0
  116. package/dist/load.js.map +1 -0
  117. package/dist/loader.d.ts +63 -0
  118. package/dist/loader.d.ts.map +1 -0
  119. package/dist/loader.js +50 -0
  120. package/dist/loader.js.map +1 -0
  121. package/dist/mcp/index.d.ts +8 -0
  122. package/dist/mcp/index.d.ts.map +1 -0
  123. package/dist/mcp/index.js +14 -0
  124. package/dist/mcp/index.js.map +1 -0
  125. package/dist/mcp/preload.d.ts +6 -0
  126. package/dist/mcp/preload.d.ts.map +1 -0
  127. package/dist/mcp/preload.js +7 -0
  128. package/dist/mcp/preload.js.map +1 -0
  129. package/dist/mcp/resources.d.ts +23 -0
  130. package/dist/mcp/resources.d.ts.map +1 -0
  131. package/dist/mcp/resources.js +112 -0
  132. package/dist/mcp/resources.js.map +1 -0
  133. package/dist/mcp/server.d.ts +16 -0
  134. package/dist/mcp/server.d.ts.map +1 -0
  135. package/dist/mcp/server.js +81 -0
  136. package/dist/mcp/server.js.map +1 -0
  137. package/dist/mcp/tools.d.ts +20 -0
  138. package/dist/mcp/tools.d.ts.map +1 -0
  139. package/dist/mcp/tools.js +405 -0
  140. package/dist/mcp/tools.js.map +1 -0
  141. package/dist/types.d.ts +182 -0
  142. package/dist/types.d.ts.map +1 -0
  143. package/dist/types.js +37 -0
  144. package/dist/types.js.map +1 -0
  145. package/package.json +114 -0
@@ -0,0 +1,181 @@
1
+ /**
2
+ * Vaulter CLI - Push Command
3
+ *
4
+ * Push local .env file to backend (one-way sync, local wins)
5
+ */
6
+ import fs from 'node:fs';
7
+ import path from 'node:path';
8
+ import { createClientFromConfig } from '../lib/create-client.js';
9
+ import { findConfigDir, getEnvFilePath } from '../../lib/config-loader.js';
10
+ import { parseEnvFile, hasStdinData, parseEnvFromStdin } from '../../lib/env-parser.js';
11
+ /**
12
+ * Check if this is a production environment
13
+ */
14
+ function isProdEnvironment(env) {
15
+ return env === 'prd' || env === 'dr';
16
+ }
17
+ /**
18
+ * Run the push command
19
+ */
20
+ export async function runPush(context) {
21
+ const { args, config, project, service, environment, verbose, dryRun, jsonOutput } = context;
22
+ if (!project) {
23
+ console.error('Error: Project not specified and no config found');
24
+ console.error('Run "vaulter init" or specify --project');
25
+ process.exit(1);
26
+ }
27
+ // Production confirmation
28
+ if (isProdEnvironment(environment) && config?.security?.confirm_production && !args.force) {
29
+ console.error(`Warning: You are pushing to ${environment} (production) environment`);
30
+ console.error('Use --force to confirm this action');
31
+ process.exit(1);
32
+ }
33
+ // Determine source of variables
34
+ let localVars;
35
+ if (hasStdinData()) {
36
+ // Read from stdin
37
+ if (verbose) {
38
+ console.error('Reading variables from stdin...');
39
+ }
40
+ localVars = await parseEnvFromStdin();
41
+ }
42
+ else {
43
+ // Read from file
44
+ const filePath = args.file || args.f;
45
+ let envFilePath;
46
+ if (filePath) {
47
+ envFilePath = path.resolve(filePath);
48
+ }
49
+ else {
50
+ // Default to .vaulter/environments/<env>.env
51
+ const configDir = findConfigDir();
52
+ if (!configDir) {
53
+ console.error('Error: No config directory found and no file specified');
54
+ console.error('Use -f <file> to specify the .env file');
55
+ process.exit(1);
56
+ }
57
+ envFilePath = getEnvFilePath(configDir, environment);
58
+ }
59
+ if (!fs.existsSync(envFilePath)) {
60
+ console.error(`Error: File not found: ${envFilePath}`);
61
+ process.exit(1);
62
+ }
63
+ if (verbose) {
64
+ console.error(`Reading variables from ${envFilePath}`);
65
+ }
66
+ localVars = parseEnvFile(envFilePath);
67
+ }
68
+ const varCount = Object.keys(localVars).length;
69
+ if (varCount === 0) {
70
+ if (jsonOutput) {
71
+ console.log(JSON.stringify({
72
+ warning: 'no_variables',
73
+ message: 'No variables found in source'
74
+ }));
75
+ }
76
+ else {
77
+ console.error('Warning: No variables found in source');
78
+ }
79
+ return;
80
+ }
81
+ if (verbose) {
82
+ console.error(`Found ${varCount} variables to push`);
83
+ }
84
+ const client = await createClientFromConfig({ args, config, verbose });
85
+ try {
86
+ await client.connect();
87
+ if (dryRun) {
88
+ // Get remote vars for comparison
89
+ const remoteVars = await client.export(project, environment, service);
90
+ const toAdd = [];
91
+ const toUpdate = [];
92
+ const unchanged = [];
93
+ for (const [key, value] of Object.entries(localVars)) {
94
+ if (!(key in remoteVars)) {
95
+ toAdd.push(key);
96
+ }
97
+ else if (remoteVars[key] !== value) {
98
+ toUpdate.push(key);
99
+ }
100
+ else {
101
+ unchanged.push(key);
102
+ }
103
+ }
104
+ if (jsonOutput) {
105
+ console.log(JSON.stringify({
106
+ dryRun: true,
107
+ project,
108
+ service,
109
+ environment,
110
+ changes: {
111
+ add: toAdd,
112
+ update: toUpdate,
113
+ unchanged: unchanged
114
+ }
115
+ }));
116
+ }
117
+ else {
118
+ console.log('Dry run - changes that would be made:');
119
+ if (toAdd.length > 0) {
120
+ console.log(` Add (${toAdd.length}): ${toAdd.join(', ')}`);
121
+ }
122
+ if (toUpdate.length > 0) {
123
+ console.log(` Update (${toUpdate.length}): ${toUpdate.join(', ')}`);
124
+ }
125
+ if (unchanged.length > 0) {
126
+ console.log(` Unchanged: ${unchanged.length} variables`);
127
+ }
128
+ if (toAdd.length === 0 && toUpdate.length === 0) {
129
+ console.log(' No changes needed');
130
+ }
131
+ }
132
+ return;
133
+ }
134
+ // Push all variables (insert/update only, no delete)
135
+ let added = 0;
136
+ let updated = 0;
137
+ for (const [key, value] of Object.entries(localVars)) {
138
+ const existing = await client.get(key, project, environment, service);
139
+ await client.set({
140
+ key,
141
+ value,
142
+ project,
143
+ service,
144
+ environment,
145
+ metadata: {
146
+ source: 'sync'
147
+ }
148
+ });
149
+ if (existing) {
150
+ updated++;
151
+ }
152
+ else {
153
+ added++;
154
+ }
155
+ }
156
+ if (jsonOutput) {
157
+ console.log(JSON.stringify({
158
+ success: true,
159
+ project,
160
+ service,
161
+ environment,
162
+ added,
163
+ updated,
164
+ total: varCount
165
+ }));
166
+ }
167
+ else {
168
+ console.log(`✓ Pushed ${varCount} variables to ${project}/${environment}`);
169
+ if (added > 0) {
170
+ console.log(` Added: ${added}`);
171
+ }
172
+ if (updated > 0) {
173
+ console.log(` Updated: ${updated}`);
174
+ }
175
+ }
176
+ }
177
+ finally {
178
+ await client.disconnect();
179
+ }
180
+ }
181
+ //# sourceMappingURL=push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"push.js","sourceRoot":"","sources":["../../../src/cli/commands/push.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Vaulter CLI - Services Command
3
+ *
4
+ * List and manage services in a monorepo
5
+ */
6
+ import type { CLIArgs, VaulterConfig } from '../../types.js';
7
+ interface ServicesContext {
8
+ args: CLIArgs;
9
+ config: VaulterConfig | null;
10
+ verbose: boolean;
11
+ jsonOutput: boolean;
12
+ }
13
+ /**
14
+ * Run the services command
15
+ */
16
+ export declare function runServices(context: ServicesContext): Promise<void>;
17
+ export {};
18
+ //# sourceMappingURL=services.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/services.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAG5D,UAAU,eAAe;IACvB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,OAAO,CAAA;IAChB,UAAU,EAAE,OAAO,CAAA;CACpB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBzE"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Vaulter CLI - Services Command
3
+ *
4
+ * List and manage services in a monorepo
5
+ */
6
+ import path from 'node:path';
7
+ import { discoverServices, findMonorepoRoot } from '../../lib/monorepo.js';
8
+ /**
9
+ * Run the services command
10
+ */
11
+ export async function runServices(context) {
12
+ const { args, verbose, jsonOutput } = context;
13
+ const subcommand = args._[1];
14
+ switch (subcommand) {
15
+ case 'list':
16
+ case 'ls':
17
+ case undefined:
18
+ await runServicesList(context);
19
+ break;
20
+ default:
21
+ console.error(`Unknown services subcommand: ${subcommand}`);
22
+ console.error('Available subcommands: list');
23
+ console.error('');
24
+ console.error('Examples:');
25
+ console.error(' vaulter services # List all services');
26
+ console.error(' vaulter services list # Same as above');
27
+ console.error(' vaulter services list --json # JSON output');
28
+ process.exit(1);
29
+ }
30
+ }
31
+ /**
32
+ * List all services in the monorepo
33
+ */
34
+ async function runServicesList(context) {
35
+ const { verbose, jsonOutput } = context;
36
+ // Find monorepo root
37
+ const root = findMonorepoRoot();
38
+ if (!root) {
39
+ if (jsonOutput) {
40
+ console.log(JSON.stringify({
41
+ error: 'not_in_monorepo',
42
+ message: 'Not inside a vaulter project'
43
+ }));
44
+ }
45
+ else {
46
+ console.error('Not inside a vaulter project');
47
+ console.error('Run "vaulter init" first');
48
+ }
49
+ process.exit(1);
50
+ }
51
+ // Discover services
52
+ const services = discoverServices(root);
53
+ if (jsonOutput) {
54
+ console.log(JSON.stringify({
55
+ root: root,
56
+ count: services.length,
57
+ services: services.map(s => ({
58
+ name: s.name,
59
+ path: path.relative(process.cwd(), s.path) || '.',
60
+ project: s.config.project,
61
+ environments: s.config.environments || ['dev', 'stg', 'prd', 'sbx', 'dr'],
62
+ defaultEnvironment: s.config.default_environment || 'dev'
63
+ }))
64
+ }));
65
+ }
66
+ else {
67
+ if (services.length === 0) {
68
+ console.log('No services found');
69
+ console.log('');
70
+ console.log('This might be a single-project setup (no nested .vaulter directories)');
71
+ }
72
+ else {
73
+ console.log(`Found ${services.length} service(s) in monorepo:`);
74
+ console.log('');
75
+ for (const service of services) {
76
+ const relativePath = path.relative(process.cwd(), service.path) || '.';
77
+ console.log(` ${service.name}`);
78
+ console.log(` Path: ${relativePath}`);
79
+ console.log(` Project: ${service.config.project}`);
80
+ if (verbose) {
81
+ console.log(` Environments: ${(service.config.environments || ['dev', 'stg', 'prd']).join(', ')}`);
82
+ console.log(` Default: ${service.config.default_environment || 'dev'}`);
83
+ if (service.config.backend?.url) {
84
+ console.log(` Backend: ${service.config.backend.url}`);
85
+ }
86
+ }
87
+ console.log('');
88
+ }
89
+ }
90
+ }
91
+ }
92
+ //# sourceMappingURL=services.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"services.js","sourceRoot":"","sources":["../../../src/cli/commands/services.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,MAAM,uBAAuB,CAAA;AAS7F;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAwB;IACxD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAE7C,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE5B,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,MAAM,CAAC;QACZ,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,MAAM,eAAe,CAAC,OAAO,CAAC,CAAA;YAC9B,MAAK;QAEP;YACE,OAAO,CAAC,KAAK,CAAC,gCAAgC,UAAU,EAAE,CAAC,CAAA;YAC3D,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAA;YAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;YACjB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;YAC1B,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAA;YACxE,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAA;YACpE,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAA;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAAC,OAAwB;IACrD,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,OAAO,CAAA;IAEvC,qBAAqB;IACrB,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAA;IAE/B,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzB,KAAK,EAAE,iBAAiB;gBACxB,OAAO,EAAE,8BAA8B;aACxC,CAAC,CAAC,CAAA;QACL,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAA;YAC7C,OAAO,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,oBAAoB;IACpB,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAEvC,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;YACzB,IAAI,EAAE,IAAI;YACV,KAAK,EAAE,QAAQ,CAAC,MAAM;YACtB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC3B,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG;gBACjD,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;gBACzB,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;gBACzE,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,mBAAmB,IAAI,KAAK;aAC1D,CAAC,CAAC;SACJ,CAAC,CAAC,CAAA;IACL,CAAC;SAAM,CAAC;QACN,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAA;YAChC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACf,OAAO,CAAC,GAAG,CAAC,uEAAuE,CAAC,CAAA;QACtF,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,SAAS,QAAQ,CAAC,MAAM,0BAA0B,CAAC,CAAA;YAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAEf,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;gBAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAA;gBACtE,OAAO,CAAC,GAAG,CAAC,KAAK,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;gBAChC,OAAO,CAAC,GAAG,CAAC,aAAa,YAAY,EAAE,CAAC,CAAA;gBACxC,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;gBACrD,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,MAAM,CAAC,YAAY,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBACrG,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,MAAM,CAAC,mBAAmB,IAAI,KAAK,EAAE,CAAC,CAAA;oBAC1E,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC;wBAChC,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAA;oBAC3D,CAAC;gBACH,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACjB,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Vaulter CLI - Set Command
3
+ *
4
+ * Set an environment variable (create or update)
5
+ */
6
+ import type { CLIArgs, VaulterConfig, Environment } from '../../types.js';
7
+ interface SetContext {
8
+ args: CLIArgs;
9
+ config: VaulterConfig | null;
10
+ project: string;
11
+ service?: string;
12
+ environment: Environment;
13
+ verbose: boolean;
14
+ dryRun: boolean;
15
+ jsonOutput: boolean;
16
+ }
17
+ /**
18
+ * Run the set command
19
+ */
20
+ export declare function runSet(context: SetContext): Promise<void>;
21
+ export {};
22
+ //# sourceMappingURL=set.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGzE,UAAU,UAAU;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;CACpB;AASD;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoF/D"}
@@ -0,0 +1,93 @@
1
+ /**
2
+ * Vaulter CLI - Set Command
3
+ *
4
+ * Set an environment variable (create or update)
5
+ */
6
+ import { createClientFromConfig } from '../lib/create-client.js';
7
+ /**
8
+ * Check if this is a production environment and confirm if needed
9
+ */
10
+ function isProdEnvironment(env) {
11
+ return env === 'prd' || env === 'dr';
12
+ }
13
+ /**
14
+ * Run the set command
15
+ */
16
+ export async function runSet(context) {
17
+ const { args, config, project, service, environment, verbose, dryRun, jsonOutput } = context;
18
+ // Get key and value from positional args
19
+ const key = args._[1];
20
+ const value = args._[2];
21
+ if (!key) {
22
+ console.error('Error: Key name is required');
23
+ console.error('Usage: vaulter set <key> <value> [-e <env>]');
24
+ process.exit(1);
25
+ }
26
+ if (value === undefined) {
27
+ console.error('Error: Value is required');
28
+ console.error('Usage: vaulter set <key> <value> [-e <env>]');
29
+ process.exit(1);
30
+ }
31
+ if (!project) {
32
+ console.error('Error: Project not specified and no config found');
33
+ console.error('Run "vaulter init" or specify --project');
34
+ process.exit(1);
35
+ }
36
+ // Production confirmation
37
+ if (isProdEnvironment(environment) && config?.security?.confirm_production && !args.force) {
38
+ console.error(`Warning: You are modifying ${environment} (production) environment`);
39
+ console.error('Use --force to confirm this action');
40
+ process.exit(1);
41
+ }
42
+ if (verbose) {
43
+ console.error(`Setting ${key} for ${project}/${service || '(no service)'}/${environment}`);
44
+ }
45
+ if (dryRun) {
46
+ if (jsonOutput) {
47
+ console.log(JSON.stringify({
48
+ action: 'set',
49
+ key,
50
+ project,
51
+ service,
52
+ environment,
53
+ dryRun: true
54
+ }));
55
+ }
56
+ else {
57
+ console.log(`Dry run - would set ${key} in ${project}/${environment}`);
58
+ }
59
+ return;
60
+ }
61
+ const client = await createClientFromConfig({ args, config, verbose });
62
+ try {
63
+ await client.connect();
64
+ const envVar = await client.set({
65
+ key,
66
+ value,
67
+ project,
68
+ service,
69
+ environment,
70
+ metadata: {
71
+ source: 'manual'
72
+ }
73
+ });
74
+ if (jsonOutput) {
75
+ console.log(JSON.stringify({
76
+ success: true,
77
+ key: envVar.key,
78
+ project: envVar.project,
79
+ service: envVar.service,
80
+ environment: envVar.environment,
81
+ createdAt: envVar.createdAt,
82
+ updatedAt: envVar.updatedAt
83
+ }));
84
+ }
85
+ else {
86
+ console.log(`✓ Set ${key} in ${project}/${environment}`);
87
+ }
88
+ }
89
+ finally {
90
+ await client.disconnect();
91
+ }
92
+ }
93
+ //# sourceMappingURL=set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set.js","sourceRoot":"","sources":["../../../src/cli/commands/set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Vaulter CLI - Sync Command
3
+ *
4
+ * Bidirectional sync between local .env file and backend
5
+ * with conflict detection
6
+ */
7
+ import type { CLIArgs, VaulterConfig, Environment } from '../../types.js';
8
+ interface SyncContext {
9
+ args: CLIArgs;
10
+ config: VaulterConfig | null;
11
+ project: string;
12
+ service?: string;
13
+ environment: Environment;
14
+ verbose: boolean;
15
+ dryRun: boolean;
16
+ jsonOutput: boolean;
17
+ }
18
+ /**
19
+ * Run the sync command
20
+ */
21
+ export declare function runSync(context: SyncContext): Promise<void>;
22
+ export {};
23
+ //# sourceMappingURL=sync.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/sync.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAc,MAAM,gBAAgB,CAAA;AASrF,UAAU,WAAW;IACnB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAA;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,WAAW,CAAA;IACxB,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,OAAO,CAAA;CACpB;AA4MD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGjE"}