@true-and-useful/janee 0.12.0 → 0.13.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 (48) hide show
  1. package/README.md +2 -0
  2. package/dist/cli/commands/capability.d.ts +12 -10
  3. package/dist/cli/commands/capability.d.ts.map +1 -1
  4. package/dist/cli/commands/capability.js +77 -40
  5. package/dist/cli/commands/capability.js.map +1 -1
  6. package/dist/cli/commands/config.d.ts +7 -0
  7. package/dist/cli/commands/config.d.ts.map +1 -0
  8. package/dist/cli/commands/config.js +135 -0
  9. package/dist/cli/commands/config.js.map +1 -0
  10. package/dist/cli/commands/diagnose.d.ts +7 -0
  11. package/dist/cli/commands/diagnose.d.ts.map +1 -0
  12. package/dist/cli/commands/diagnose.js +133 -0
  13. package/dist/cli/commands/diagnose.js.map +1 -0
  14. package/dist/cli/commands/doctor-bundle.d.ts +6 -0
  15. package/dist/cli/commands/doctor-bundle.d.ts.map +1 -0
  16. package/dist/cli/commands/doctor-bundle.js +108 -0
  17. package/dist/cli/commands/doctor-bundle.js.map +1 -0
  18. package/dist/cli/commands/doctor.d.ts +6 -0
  19. package/dist/cli/commands/doctor.d.ts.map +1 -0
  20. package/dist/cli/commands/doctor.js +163 -0
  21. package/dist/cli/commands/doctor.js.map +1 -0
  22. package/dist/cli/commands/service-edit.d.ts +16 -0
  23. package/dist/cli/commands/service-edit.d.ts.map +1 -0
  24. package/dist/cli/commands/service-edit.js +187 -0
  25. package/dist/cli/commands/service-edit.js.map +1 -0
  26. package/dist/cli/commands/whoami.d.ts +5 -0
  27. package/dist/cli/commands/whoami.d.ts.map +1 -0
  28. package/dist/cli/commands/whoami.js +91 -0
  29. package/dist/cli/commands/whoami.js.map +1 -0
  30. package/dist/cli/config-yaml.d.ts +12 -14
  31. package/dist/cli/config-yaml.d.ts.map +1 -1
  32. package/dist/cli/config-yaml.js +209 -86
  33. package/dist/cli/config-yaml.js.map +1 -1
  34. package/dist/cli/index.js +81 -0
  35. package/dist/cli/index.js.map +1 -1
  36. package/dist/core/authority.d.ts +5 -3
  37. package/dist/core/authority.d.ts.map +1 -1
  38. package/dist/core/authority.js +76 -43
  39. package/dist/core/authority.js.map +1 -1
  40. package/dist/core/health.d.ts +24 -1
  41. package/dist/core/health.d.ts.map +1 -1
  42. package/dist/core/health.js +138 -26
  43. package/dist/core/health.js.map +1 -1
  44. package/dist/core/mcp-server.d.ts +31 -11
  45. package/dist/core/mcp-server.d.ts.map +1 -1
  46. package/dist/core/mcp-server.js +580 -238
  47. package/dist/core/mcp-server.js.map +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.whoamiCommand = whoamiCommand;
4
+ const agent_scope_1 = require("../../core/agent-scope");
5
+ const config_yaml_1 = require("../config-yaml");
6
+ function canAccessCapability(agentId, cap, services, defaultAccess) {
7
+ if (!agentId)
8
+ return true;
9
+ if (cap.allowedAgents && cap.allowedAgents.length > 0) {
10
+ return cap.allowedAgents.includes(agentId);
11
+ }
12
+ if (defaultAccess === 'restricted')
13
+ return false;
14
+ return (0, agent_scope_1.canAgentAccess)(agentId, services[cap.service]?.ownership);
15
+ }
16
+ async function whoamiCommand(options = {}) {
17
+ try {
18
+ if (!(0, config_yaml_1.hasYAMLConfig)()) {
19
+ if (options.json) {
20
+ console.log(JSON.stringify({ ok: false, error: 'No config found. Run `janee init` first.' }));
21
+ }
22
+ else {
23
+ console.error('❌ No config found. Run `janee init` first.');
24
+ }
25
+ process.exit(1);
26
+ }
27
+ const config = (0, config_yaml_1.loadYAMLConfig)();
28
+ const agentId = options.agent || undefined;
29
+ const defaultAccess = config.server?.defaultAccess;
30
+ const capNames = Object.keys(config.capabilities);
31
+ const accessible = [];
32
+ const denied = [];
33
+ for (const name of capNames) {
34
+ const cap = config.capabilities[name];
35
+ if (canAccessCapability(agentId, cap, config.services, defaultAccess)) {
36
+ accessible.push(name);
37
+ }
38
+ else {
39
+ denied.push(name);
40
+ }
41
+ }
42
+ if (options.json) {
43
+ console.log(JSON.stringify({
44
+ agentId: agentId ?? null,
45
+ role: agentId ? 'agent' : 'admin (CLI)',
46
+ defaultAccessPolicy: defaultAccess ?? 'open',
47
+ capabilities: { accessible, denied },
48
+ }, null, 2));
49
+ return;
50
+ }
51
+ if (!agentId) {
52
+ console.log('');
53
+ console.log(' Identity: CLI admin (no agent identity)');
54
+ console.log(' Access: all capabilities');
55
+ console.log(` Default policy: ${defaultAccess ?? 'open'}`);
56
+ console.log(` Capabilities: ${capNames.length} total`);
57
+ console.log('');
58
+ console.log(' Tip: use --agent <name> to preview what a specific agent can access.');
59
+ return;
60
+ }
61
+ console.log('');
62
+ console.log(` Agent: ${agentId}`);
63
+ console.log(` Default policy: ${defaultAccess ?? 'open'}`);
64
+ console.log('');
65
+ if (accessible.length > 0) {
66
+ console.log(` Accessible (${accessible.length}):`);
67
+ for (const c of accessible)
68
+ console.log(` ✅ ${c}`);
69
+ }
70
+ if (denied.length > 0) {
71
+ console.log(` Denied (${denied.length}):`);
72
+ for (const c of denied)
73
+ console.log(` ❌ ${c}`);
74
+ }
75
+ if (accessible.length === 0 && denied.length === 0) {
76
+ console.log(' No capabilities configured.');
77
+ }
78
+ console.log('');
79
+ }
80
+ catch (error) {
81
+ const msg = error instanceof Error ? error.message : 'Unknown error';
82
+ if (options.json) {
83
+ console.log(JSON.stringify({ ok: false, error: msg }));
84
+ }
85
+ else {
86
+ console.error('❌ Error:', msg);
87
+ }
88
+ process.exit(1);
89
+ }
90
+ }
91
+ //# sourceMappingURL=whoami.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../src/cli/commands/whoami.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,11 @@
1
1
  /**
2
- * YAML configuration for Janee (new format)
3
- * Supports capabilities + services model
2
+ * YAML configuration for Janee
3
+ *
4
+ * Config is split across two files:
5
+ * config.yaml — human-readable policy (services metadata, capabilities, server settings)
6
+ * credentials.json — encrypted secrets + master key (never hand-edited)
7
+ *
8
+ * Old v0.2.0 configs with inline masterKey + encrypted blobs are auto-migrated on first load.
4
9
  */
5
10
  import { CredentialOwnership } from '../core/agent-scope';
6
11
  export interface AuthConfig {
@@ -33,7 +38,6 @@ export interface CapabilityConfig {
33
38
  allow?: string[];
34
39
  deny?: string[];
35
40
  };
36
- /** Restrict this capability to specific agent IDs (e.g. ["myapp:worker-1"]) */
37
41
  allowedAgents?: string[];
38
42
  mode?: 'proxy' | 'exec';
39
43
  allowCommands?: string[];
@@ -51,7 +55,6 @@ export interface ServerConfig {
51
55
  host: string;
52
56
  logBodies?: boolean;
53
57
  strictDecryption?: boolean;
54
- /** Default access policy for capabilities without allowedAgents: "open" (any agent) or "restricted" (admin-only) */
55
58
  defaultAccess?: 'open' | 'restricted';
56
59
  }
57
60
  export interface JaneeYAMLConfig {
@@ -62,24 +65,19 @@ export interface JaneeYAMLConfig {
62
65
  services: Record<string, ServiceConfig>;
63
66
  capabilities: Record<string, CapabilityConfig>;
64
67
  }
65
- /**
66
- * Get config directory path (dynamically computed for testability)
67
- */
68
68
  export declare function getConfigDir(): string;
69
- /**
70
- * Get audit directory path
71
- */
72
69
  export declare function getAuditDir(): string;
73
- /**
74
- * Check if using YAML config
75
- */
76
70
  export declare function hasYAMLConfig(): boolean;
77
71
  /**
78
- * Load YAML configuration
72
+ * Load config from disk. Automatically migrates v0.2.0 legacy format on first load.
73
+ * Returns the full config with secrets decrypted in memory.
79
74
  */
80
75
  export declare function loadYAMLConfig(): JaneeYAMLConfig;
81
76
  /**
82
77
  * Save config to disk. Send SIGHUP to a running Janee process to reload.
78
+ *
79
+ * Splits the config: secrets go to credentials.json (encrypted, atomic write),
80
+ * everything else goes to config.yaml (human-readable).
83
81
  */
84
82
  export declare function saveYAMLConfig(config: JaneeYAMLConfig): void;
85
83
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config-yaml.d.ts","sourceRoot":"","sources":["../../src/cli/config-yaml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config-yaml.d.ts","sourceRoot":"","sources":["../../src/cli/config-yaml.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,12 @@
1
1
  "use strict";
2
2
  /**
3
- * YAML configuration for Janee (new format)
4
- * Supports capabilities + services model
3
+ * YAML configuration for Janee
4
+ *
5
+ * Config is split across two files:
6
+ * config.yaml — human-readable policy (services metadata, capabilities, server settings)
7
+ * credentials.json — encrypted secrets + master key (never hand-edited)
8
+ *
9
+ * Old v0.2.0 configs with inline masterKey + encrypted blobs are auto-migrated on first load.
5
10
  */
6
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
7
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
@@ -24,39 +29,112 @@ const os_1 = __importDefault(require("os"));
24
29
  const path_1 = __importDefault(require("path"));
25
30
  const agent_scope_1 = require("../core/agent-scope");
26
31
  const crypto_1 = require("../core/crypto");
27
- /**
28
- * Get config directory path (dynamically computed for testability)
29
- */
32
+ // ---------------------------------------------------------------------------
33
+ // Paths
34
+ // ---------------------------------------------------------------------------
30
35
  function getConfigDir() {
31
36
  return process.env.JANEE_HOME || path_1.default.join(os_1.default.homedir(), '.janee');
32
37
  }
33
- /**
34
- * Get YAML config file path
35
- */
36
38
  function getConfigFileYAML() {
37
39
  return path_1.default.join(getConfigDir(), 'config.yaml');
38
40
  }
39
- /**
40
- * Get JSON config file path
41
- */
41
+ function getCredentialsFile() {
42
+ return path_1.default.join(getConfigDir(), 'credentials.json');
43
+ }
42
44
  function getConfigFileJSON() {
43
45
  return path_1.default.join(getConfigDir(), 'config.json');
44
46
  }
45
- /**
46
- * Get audit directory path
47
- */
48
47
  function getAuditDir() {
49
48
  return path_1.default.join(getConfigDir(), 'logs');
50
49
  }
51
- /**
52
- * Check if using YAML config
53
- */
54
50
  function hasYAMLConfig() {
55
51
  return fs_1.default.existsSync(getConfigFileYAML());
56
52
  }
57
- /**
58
- * Helper to decrypt a secret with strict/lenient mode
59
- */
53
+ // ---------------------------------------------------------------------------
54
+ // Credentials file I/O (atomic writes)
55
+ // ---------------------------------------------------------------------------
56
+ function loadCredentials() {
57
+ const credPath = getCredentialsFile();
58
+ if (!fs_1.default.existsSync(credPath)) {
59
+ throw new Error('No credentials file found. Run `janee init` to create one.');
60
+ }
61
+ return JSON.parse(fs_1.default.readFileSync(credPath, 'utf8'));
62
+ }
63
+ function saveCredentials(creds) {
64
+ const credPath = getCredentialsFile();
65
+ const tmpPath = credPath + '.tmp.' + process.pid;
66
+ fs_1.default.writeFileSync(tmpPath, JSON.stringify(creds, null, 2), { mode: 0o600 });
67
+ fs_1.default.renameSync(tmpPath, credPath);
68
+ }
69
+ // ---------------------------------------------------------------------------
70
+ // Secret extraction / injection
71
+ //
72
+ // These functions move secret fields between ServiceConfig.auth and the
73
+ // credentials.json secrets map, so the YAML file stays human-readable.
74
+ // ---------------------------------------------------------------------------
75
+ /** Extract secret fields from a service's auth config, returning them separately. */
76
+ function extractSecrets(auth) {
77
+ const secrets = {};
78
+ if (auth.type === 'bearer' && auth.key) {
79
+ secrets.key = auth.key;
80
+ }
81
+ else if (auth.type === 'hmac-mexc' || auth.type === 'hmac-bybit' || auth.type === 'hmac-okx') {
82
+ if (auth.apiKey)
83
+ secrets.apiKey = auth.apiKey;
84
+ if (auth.apiSecret)
85
+ secrets.apiSecret = auth.apiSecret;
86
+ if (auth.passphrase)
87
+ secrets.passphrase = auth.passphrase;
88
+ }
89
+ else if (auth.type === 'headers' && auth.headers) {
90
+ secrets.headers = { ...auth.headers };
91
+ }
92
+ else if (auth.type === 'service-account' && auth.credentials) {
93
+ secrets.credentials = auth.credentials;
94
+ }
95
+ else if (auth.type === 'github-app' && auth.privateKey) {
96
+ secrets.privateKey = auth.privateKey;
97
+ }
98
+ return secrets;
99
+ }
100
+ /** Remove secret fields from an auth config (for writing clean YAML). */
101
+ function stripSecrets(auth) {
102
+ const clean = { ...auth };
103
+ delete clean.key;
104
+ delete clean.apiKey;
105
+ delete clean.apiSecret;
106
+ delete clean.passphrase;
107
+ delete clean.privateKey;
108
+ delete clean.credentials;
109
+ delete clean.headers;
110
+ return clean;
111
+ }
112
+ /** Merge secrets back into a service's auth config. */
113
+ function injectSecrets(auth, secrets) {
114
+ if (auth.type === 'bearer' && typeof secrets.key === 'string') {
115
+ auth.key = secrets.key;
116
+ }
117
+ else if (auth.type === 'hmac-mexc' || auth.type === 'hmac-bybit' || auth.type === 'hmac-okx') {
118
+ if (typeof secrets.apiKey === 'string')
119
+ auth.apiKey = secrets.apiKey;
120
+ if (typeof secrets.apiSecret === 'string')
121
+ auth.apiSecret = secrets.apiSecret;
122
+ if (typeof secrets.passphrase === 'string')
123
+ auth.passphrase = secrets.passphrase;
124
+ }
125
+ else if (auth.type === 'headers' && typeof secrets.headers === 'object') {
126
+ auth.headers = secrets.headers;
127
+ }
128
+ else if (auth.type === 'service-account' && typeof secrets.credentials === 'string') {
129
+ auth.credentials = secrets.credentials;
130
+ }
131
+ else if (auth.type === 'github-app' && typeof secrets.privateKey === 'string') {
132
+ auth.privateKey = secrets.privateKey;
133
+ }
134
+ }
135
+ // ---------------------------------------------------------------------------
136
+ // Encrypt / decrypt helpers
137
+ // ---------------------------------------------------------------------------
60
138
  function tryDecrypt(encrypted, masterKey, strictMode, fieldDescription) {
61
139
  try {
62
140
  return (0, crypto_1.decryptSecret)(encrypted, masterKey);
@@ -67,95 +145,140 @@ function tryDecrypt(encrypted, masterKey, strictMode, fieldDescription) {
67
145
  `This usually means the value is corrupted or the master key is wrong. ` +
68
146
  `To allow plaintext values (not recommended), set server.strictDecryption: false in config.yaml`);
69
147
  }
70
- // Lenient mode: assume plaintext
71
148
  return encrypted;
72
149
  }
73
150
  }
151
+ function decryptServiceSecrets(name, secrets, masterKey, strict) {
152
+ const decrypted = {};
153
+ for (const [field, value] of Object.entries(secrets)) {
154
+ if (field === 'headers' && typeof value === 'object') {
155
+ const hdrs = {};
156
+ for (const [hdr, enc] of Object.entries(value)) {
157
+ hdrs[hdr] = tryDecrypt(enc, masterKey, strict, `header "${hdr}" for service "${name}"`);
158
+ }
159
+ decrypted.headers = hdrs;
160
+ }
161
+ else if (typeof value === 'string') {
162
+ decrypted[field] = tryDecrypt(value, masterKey, strict, `${field} for service "${name}"`);
163
+ }
164
+ }
165
+ return decrypted;
166
+ }
167
+ function encryptServiceSecrets(secrets, masterKey) {
168
+ const encrypted = {};
169
+ for (const [field, value] of Object.entries(secrets)) {
170
+ if (field === 'headers' && typeof value === 'object') {
171
+ const hdrs = {};
172
+ for (const [hdr, plain] of Object.entries(value)) {
173
+ hdrs[hdr] = (0, crypto_1.encryptSecret)(plain, masterKey);
174
+ }
175
+ encrypted.headers = hdrs;
176
+ }
177
+ else if (typeof value === 'string') {
178
+ encrypted[field] = (0, crypto_1.encryptSecret)(value, masterKey);
179
+ }
180
+ }
181
+ return encrypted;
182
+ }
183
+ // ---------------------------------------------------------------------------
184
+ // Migration: v0.2.0 (inline secrets) → v0.3.0 (split credentials.json)
185
+ // ---------------------------------------------------------------------------
186
+ function isLegacyFormat(rawConfig) {
187
+ return typeof rawConfig.masterKey === 'string' && rawConfig.masterKey.length > 0;
188
+ }
189
+ function migrateLegacyConfig() {
190
+ const yamlPath = getConfigFileYAML();
191
+ const content = fs_1.default.readFileSync(yamlPath, 'utf8');
192
+ const raw = js_yaml_1.default.load(content);
193
+ if (!isLegacyFormat(raw))
194
+ return;
195
+ const masterKey = raw.masterKey;
196
+ const services = raw.services || {};
197
+ // Build credentials file from inline encrypted values
198
+ const creds = { masterKey, secrets: {} };
199
+ for (const [name, svc] of Object.entries(services)) {
200
+ const auth = svc.auth;
201
+ if (!auth)
202
+ continue;
203
+ const secrets = extractSecrets(auth);
204
+ if (Object.keys(secrets).length > 0) {
205
+ creds.secrets[name] = secrets;
206
+ }
207
+ }
208
+ // Write credentials.json atomically
209
+ saveCredentials(creds);
210
+ // Rewrite config.yaml without masterKey and without secret fields
211
+ delete raw.masterKey;
212
+ raw.version = '0.3.0';
213
+ for (const [name, svc] of Object.entries(services)) {
214
+ const auth = svc.auth;
215
+ if (!auth)
216
+ continue;
217
+ svc.auth = stripSecrets(auth);
218
+ }
219
+ const cleanYaml = js_yaml_1.default.dump(raw, { indent: 2, lineWidth: 120 });
220
+ fs_1.default.writeFileSync(yamlPath, cleanYaml, { mode: 0o600 });
221
+ }
222
+ // ---------------------------------------------------------------------------
223
+ // Public API
224
+ // ---------------------------------------------------------------------------
74
225
  /**
75
- * Load YAML configuration
226
+ * Load config from disk. Automatically migrates v0.2.0 legacy format on first load.
227
+ * Returns the full config with secrets decrypted in memory.
76
228
  */
77
229
  function loadYAMLConfig() {
78
230
  if (!fs_1.default.existsSync(getConfigFileYAML())) {
79
231
  throw new Error('No YAML config found. Run migration or init.');
80
232
  }
233
+ // Auto-migrate legacy inline-secrets format
234
+ const rawContent = fs_1.default.readFileSync(getConfigFileYAML(), 'utf8');
235
+ const rawConfig = js_yaml_1.default.load(rawContent);
236
+ if (isLegacyFormat(rawConfig)) {
237
+ migrateLegacyConfig();
238
+ }
239
+ // Read the (possibly freshly migrated) YAML
81
240
  const content = fs_1.default.readFileSync(getConfigFileYAML(), 'utf8');
82
241
  const config = js_yaml_1.default.load(content);
83
- // Ensure services and capabilities are objects (YAML parses empty sections as null)
84
242
  config.services = config.services || {};
85
243
  config.capabilities = config.capabilities || {};
86
- // Strict decryption mode (default: true)
244
+ // Load credentials
245
+ const creds = loadCredentials();
246
+ config.masterKey = creds.masterKey;
87
247
  const strictDecryption = config.server?.strictDecryption ?? true;
88
- // Decrypt service auth keys
89
- for (const [name, service] of Object.entries(config.services)) {
90
- const svc = service;
91
- if (svc.auth.type === 'bearer' && svc.auth.key) {
92
- svc.auth.key = tryDecrypt(svc.auth.key, config.masterKey, strictDecryption, `bearer token for service "${name}"`);
93
- }
94
- else if (svc.auth.type === 'hmac-mexc' || svc.auth.type === 'hmac-bybit' || svc.auth.type === 'hmac-okx') {
95
- if (svc.auth.apiKey) {
96
- svc.auth.apiKey = tryDecrypt(svc.auth.apiKey, config.masterKey, strictDecryption, `API key for service "${name}"`);
97
- }
98
- if (svc.auth.apiSecret) {
99
- svc.auth.apiSecret = tryDecrypt(svc.auth.apiSecret, config.masterKey, strictDecryption, `API secret for service "${name}"`);
100
- }
101
- if (svc.auth.passphrase) {
102
- svc.auth.passphrase = tryDecrypt(svc.auth.passphrase, config.masterKey, strictDecryption, `passphrase for service "${name}"`);
103
- }
104
- }
105
- else if (svc.auth.type === 'headers' && svc.auth.headers) {
106
- // Decrypt each header value
107
- for (const [headerName, headerValue] of Object.entries(svc.auth.headers)) {
108
- svc.auth.headers[headerName] = tryDecrypt(headerValue, config.masterKey, strictDecryption, `header "${headerName}" for service "${name}"`);
109
- }
110
- }
111
- else if (svc.auth.type === 'service-account' && svc.auth.credentials) {
112
- svc.auth.credentials = tryDecrypt(svc.auth.credentials, config.masterKey, strictDecryption, `service account credentials for service "${name}"`);
113
- }
114
- else if (svc.auth.type === 'github-app' && svc.auth.privateKey) {
115
- svc.auth.privateKey = tryDecrypt(svc.auth.privateKey, config.masterKey, strictDecryption, `GitHub App private key for service "${name}"`);
248
+ // Decrypt and inject secrets into each service
249
+ for (const [name, svc] of Object.entries(config.services)) {
250
+ const encSecrets = creds.secrets[name];
251
+ if (encSecrets) {
252
+ const decSecrets = decryptServiceSecrets(name, encSecrets, creds.masterKey, strictDecryption);
253
+ injectSecrets(svc.auth, decSecrets);
116
254
  }
117
255
  }
118
256
  return config;
119
257
  }
120
258
  /**
121
259
  * Save config to disk. Send SIGHUP to a running Janee process to reload.
260
+ *
261
+ * Splits the config: secrets go to credentials.json (encrypted, atomic write),
262
+ * everything else goes to config.yaml (human-readable).
122
263
  */
123
264
  function saveYAMLConfig(config) {
124
- // Encrypt service auth keys before saving
125
265
  const configCopy = JSON.parse(JSON.stringify(config));
266
+ // Build credentials from the decrypted in-memory config
267
+ const creds = { masterKey: config.masterKey, secrets: {} };
126
268
  for (const [name, service] of Object.entries(configCopy.services)) {
127
- const svc = service;
128
- if (svc.auth.type === 'bearer' && svc.auth.key) {
129
- svc.auth.key = (0, crypto_1.encryptSecret)(svc.auth.key, config.masterKey);
130
- }
131
- else if (svc.auth.type === 'hmac-mexc' || svc.auth.type === 'hmac-bybit' || svc.auth.type === 'hmac-okx') {
132
- if (svc.auth.apiKey) {
133
- svc.auth.apiKey = (0, crypto_1.encryptSecret)(svc.auth.apiKey, config.masterKey);
134
- }
135
- if (svc.auth.apiSecret) {
136
- svc.auth.apiSecret = (0, crypto_1.encryptSecret)(svc.auth.apiSecret, config.masterKey);
137
- }
138
- if (svc.auth.passphrase) {
139
- svc.auth.passphrase = (0, crypto_1.encryptSecret)(svc.auth.passphrase, config.masterKey);
140
- }
141
- }
142
- else if (svc.auth.type === 'headers' && svc.auth.headers) {
143
- // Encrypt each header value
144
- for (const headerName of Object.keys(svc.auth.headers)) {
145
- svc.auth.headers[headerName] = (0, crypto_1.encryptSecret)(svc.auth.headers[headerName], config.masterKey);
146
- }
147
- }
148
- else if (svc.auth.type === 'service-account' && svc.auth.credentials) {
149
- svc.auth.credentials = (0, crypto_1.encryptSecret)(svc.auth.credentials, config.masterKey);
150
- }
151
- else if (svc.auth.type === 'github-app' && svc.auth.privateKey) {
152
- svc.auth.privateKey = (0, crypto_1.encryptSecret)(svc.auth.privateKey, config.masterKey);
269
+ const plainSecrets = extractSecrets(service.auth);
270
+ if (Object.keys(plainSecrets).length > 0) {
271
+ creds.secrets[name] = encryptServiceSecrets(plainSecrets, config.masterKey);
153
272
  }
273
+ // Strip secrets from YAML copy
274
+ configCopy.services[name].auth = stripSecrets(service.auth);
154
275
  }
155
- const yamlContent = js_yaml_1.default.dump(configCopy, {
156
- indent: 2,
157
- lineWidth: 120
158
- });
276
+ // Remove masterKey from YAML (lives in credentials.json now)
277
+ delete configCopy.masterKey;
278
+ configCopy.version = '0.3.0';
279
+ // Write credentials atomically, then YAML
280
+ saveCredentials(creds);
281
+ const yamlContent = js_yaml_1.default.dump(configCopy, { indent: 2, lineWidth: 120 });
159
282
  fs_1.default.writeFileSync(getConfigFileYAML(), yamlContent, { mode: 0o600 });
160
283
  }
161
284
  /**
@@ -192,15 +315,15 @@ function initYAMLConfig() {
192
315
  throw new Error('Config already exists');
193
316
  }
194
317
  const config = {
195
- version: '0.2.0',
318
+ version: '0.3.0',
196
319
  masterKey: (0, crypto_1.generateMasterKey)(),
197
320
  server: {
198
321
  port: 9119,
199
322
  host: 'localhost',
200
- strictDecryption: true // Fail hard on decryption errors (recommended)
323
+ strictDecryption: true,
201
324
  },
202
325
  services: {},
203
- capabilities: {}
326
+ capabilities: {},
204
327
  };
205
328
  saveYAMLConfig(config);
206
329
  return config;
@@ -1 +1 @@
1
- {"version":3,"file":"config-yaml.js","sourceRoot":"","sources":["../../src/cli/config-yaml.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;AAuFH,oCAEC;AAmBD,kCAEC;AAKD,sCAEC;AA6BD,wCA+EC;AAKD,wCAoCC;AAMD,0DAOC;AAMD,gEAWC;AAKD,wCAuBC;AAKD,wCAkBC;AAKD,8CAgBC;AAKD,sCAyDC;AA5aD,4CAAoB;AACpB,sDAA2B;AAC3B,4CAAoB;AACpB,gDAAwB;AAExB,qDAI6B;AAC7B,2CAIwB;AAoExB;;GAEG;AACH,SAAgB,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AACrE,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,OAAO,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB;IACxB,OAAO,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC;AAED;;GAEG;AACH,SAAgB,WAAW;IACzB,OAAO,cAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,MAAM,CAAC,CAAC;AAC3C,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,OAAO,YAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CACjB,SAAiB,EACjB,SAAiB,EACjB,UAAmB,EACnB,gBAAwB;IAExB,IAAI,CAAC;QACH,OAAO,IAAA,sBAAa,EAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,UAAU,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,qBAAqB,gBAAgB,IAAI;gBACzC,wEAAwE;gBACxE,gGAAgG,CACjG,CAAC;QACJ,CAAC;QACD,iCAAiC;QACjC,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,OAAO,GAAG,YAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,iBAAI,CAAC,IAAI,CAAC,OAAO,CAAoB,CAAC;IAErD,oFAAoF;IACpF,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC;IACxC,MAAM,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;IAEhD,yCAAyC;IACzC,MAAM,gBAAgB,GAAG,MAAM,CAAC,MAAM,EAAE,gBAAgB,IAAI,IAAI,CAAC;IAEjE,4BAA4B;IAC5B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9D,MAAM,GAAG,GAAG,OAAwB,CAAC;QAErC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,UAAU,CACvB,GAAG,CAAC,IAAI,CAAC,GAAG,EACZ,MAAM,CAAC,SAAS,EAChB,gBAAgB,EAChB,6BAA6B,IAAI,GAAG,CACrC,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3G,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,UAAU,CAC1B,GAAG,CAAC,IAAI,CAAC,MAAM,EACf,MAAM,CAAC,SAAS,EAChB,gBAAgB,EAChB,wBAAwB,IAAI,GAAG,CAChC,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,UAAU,CAC7B,GAAG,CAAC,IAAI,CAAC,SAAS,EAClB,MAAM,CAAC,SAAS,EAChB,gBAAgB,EAChB,2BAA2B,IAAI,GAAG,CACnC,CAAC;YACJ,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAC9B,GAAG,CAAC,IAAI,CAAC,UAAU,EACnB,MAAM,CAAC,SAAS,EAChB,gBAAgB,EAChB,2BAA2B,IAAI,GAAG,CACnC,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3D,4BAA4B;YAC5B,KAAK,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACzE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,UAAU,CACvC,WAAW,EACX,MAAM,CAAC,SAAS,EAChB,gBAAgB,EAChB,WAAW,UAAU,kBAAkB,IAAI,GAAG,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAC/B,GAAG,CAAC,IAAI,CAAC,WAAW,EACpB,MAAM,CAAC,SAAS,EAChB,gBAAgB,EAChB,4CAA4C,IAAI,GAAG,CACpD,CAAC;QACJ,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,UAAU,CAC9B,GAAG,CAAC,IAAI,CAAC,UAAU,EACnB,MAAM,CAAC,SAAS,EAChB,gBAAgB,EAChB,uCAAuC,IAAI,GAAG,CAC/C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAAC,MAAuB;IACpD,0CAA0C;IAC1C,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtD,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClE,MAAM,GAAG,GAAG,OAAwB,CAAC;QACrC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC/C,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC3G,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACpB,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACrE,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3E,CAAC;YACD,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxB,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC7E,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC3D,4BAA4B;YAC5B,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACvD,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACvE,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/E,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACjE,GAAG,CAAC,IAAI,CAAC,UAAU,GAAG,IAAA,sBAAa,EAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;QAC7E,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,iBAAI,CAAC,IAAI,CAAC,UAAU,EAAE;QACxC,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,YAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,SAAgB,uBAAuB,CAAC,WAAmB,EAAE,SAA8B;IACzF,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,YAAY,WAAW,uBAAuB,CAAC,CAAC;IAClE,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,SAAS,GAAG,SAAS,CAAC;IACnD,cAAc,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAgB,0BAA0B,CACxC,MAAuB,EACvB,WAAmB,EACnB,OAAsB,EACtB,eAAwB;IAExB,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,SAAS,GAAG,IAAA,mCAAqB,EAAC,eAAe,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,OAAO,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc;IAC5B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC;QACnC,YAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,YAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAoB;QAC9B,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,IAAA,0BAAiB,GAAE;QAC9B,MAAM,EAAE;YACN,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,WAAW;YACjB,gBAAgB,EAAE,IAAI,CAAE,+CAA+C;SACxE;QACD,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;KACjB,CAAC;IAEF,cAAc,CAAC,MAAM,CAAC,CAAC;IACvB,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,IAAY,EACZ,OAAe,EACf,IAAgB;IAEhB,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,YAAY,IAAI,kBAAkB,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG;QACtB,OAAO;QACP,IAAI;QACJ,SAAS,EAAE,IAAA,iCAAmB,GAAE;KACjC,CAAC;IAEF,cAAc,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,IAAY,EACZ,SAA2B;IAE3B,MAAM,MAAM,GAAG,cAAc,EAAE,CAAC;IAEhC,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,eAAe,IAAI,kBAAkB,CAAC,CAAC;IACzD,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,YAAY,SAAS,CAAC,OAAO,aAAa,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;IACtC,cAAc,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,aAAa;IAC3B,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,YAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,uBAAuB;IACvB,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IAE3E,yBAAyB;IACzB,MAAM,SAAS,GAAoB;QACjC,OAAO,EAAE,OAAO;QAChB,SAAS,EAAE,SAAS,CAAC,SAAS;QAC9B,MAAM,EAAE;YACN,IAAI,EAAE,SAAS,CAAC,QAAQ,EAAE,IAAI,IAAI,IAAI;YACtC,IAAI,EAAE,WAAW;SAClB;QACD,QAAQ,EAAE,EAAE;QACZ,YAAY,EAAE,EAAE;KACjB,CAAC;IAEF,mBAAmB;IACnB,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACzC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;gBACjC,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,GAAG,EAAE,OAAO,CAAC,YAAY,CAAE,oBAAoB;iBAChD;aACF,CAAC;YAEF,6CAA6C;YAC7C,SAAS,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG;gBACrC,OAAO,EAAE,OAAO,CAAC,IAAI;gBACrB,GAAG,EAAE,IAAI;gBACT,WAAW,EAAE,IAAI;aAClB,CAAC;QACJ,CAAC;IACH,CAAC;IAED,0CAA0C;IAC1C,MAAM,WAAW,GAAG,iBAAI,CAAC,IAAI,CAAC,SAAS,EAAE;QACvC,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,GAAG;KACf,CAAC,CAAC;IAEH,YAAE,CAAC,aAAa,CAAC,iBAAiB,EAAE,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEpE,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,OAAO,CAAC,GAAG,CAAC,4BAA4B,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAEnE,oBAAoB;IACpB,YAAE,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,GAAG,iBAAiB,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"config-yaml.js","sourceRoot":"","sources":["../../src/cli/config-yaml.ts"],"names":[],"mappings":"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"}