@larksuite/openclaw-lark-tools 1.0.26 → 1.0.27

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.
@@ -47,6 +47,7 @@ const update_1 = require("./update");
47
47
  const constants_1 = require("../utils/constants");
48
48
  const migration_1 = require("../utils/migration");
49
49
  const feishu_auth_1 = require("../utils/feishu-auth");
50
+ const secret_ref_1 = require("../utils/secret-ref");
50
51
  const EXTENSIONS_DIR = (0, config_1.getExtensionsDir)();
51
52
  const PLUGIN_NAME = constants_1.NEW_PLUGIN_ID;
52
53
  const PLUGIN_PATH = path.join(EXTENSIONS_DIR, PLUGIN_NAME);
@@ -65,10 +66,156 @@ function compareVersions(v1, v2) {
65
66
  }
66
67
  return 0;
67
68
  }
69
+ /**
70
+ * Validates CLI parameter combinations and returns errors/warnings.
71
+ */
72
+ function validateSecretParams(options) {
73
+ const warnings = [];
74
+ // Mutual exclusion: --secret-env-var and --secret-file-path
75
+ if (options.secretEnvVar && options.secretFilePath) {
76
+ return { error: '--secret-env-var and --secret-file-path are mutually exclusive (互斥参数)', warnings };
77
+ }
78
+ // JSON Pointer format check
79
+ if (options.secretFileId && !options.secretFileId.startsWith('/')) {
80
+ return { error: '--secret-file-id must start with / (JSON Pointer format)', warnings };
81
+ }
82
+ // Mode mismatch warnings
83
+ if (options.secretInputMode === 'plaintext') {
84
+ if (options.secretFilePath)
85
+ warnings.push('--secret-file-path is ignored in plaintext mode');
86
+ if (options.secretFileId)
87
+ warnings.push('--secret-file-id is ignored in plaintext mode');
88
+ if (options.secretEnvVar)
89
+ warnings.push('--secret-env-var is ignored in plaintext mode');
90
+ }
91
+ if (options.secretInputMode === 'env') {
92
+ if (options.secretFilePath)
93
+ warnings.push('--secret-file-path is ignored in env mode');
94
+ if (options.secretFileId)
95
+ warnings.push('--secret-file-id is ignored in env mode');
96
+ }
97
+ if (options.secretInputMode === 'file') {
98
+ if (options.secretEnvVar)
99
+ warnings.push('--secret-env-var is ignored in file mode');
100
+ }
101
+ return { warnings };
102
+ }
103
+ const SECRETREF_MIN_VERSION = '2026.3.2';
104
+ const SECRETREF_MAX_VERSION = '2026.3.11';
105
+ /**
106
+ * Detects the installed openclaw version. Returns null if unavailable.
107
+ */
108
+ function getOpenClawVersion() {
109
+ try {
110
+ const openclawCmd = (0, system_1.getPlatformCommand)('openclaw');
111
+ const output = (0, system_1.runCommandQuiet)(openclawCmd, ['--version']);
112
+ const match = output ? output.match(/(?:OpenClaw\s+)?(\d+\.\d+\.\d+)/) : null;
113
+ return match ? match[1] : null;
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
119
+ /**
120
+ * Determines the secret storage mode based on options and existing config.
121
+ * Falls back to plaintext if openclaw version is outside 2026.3.2 ~ 2026.3.11 (no SecretRef support).
122
+ */
123
+ function resolveSecretMode(options, existingAppSecret) {
124
+ // 0. Check openclaw version — SecretRef requires 2026.3.2 ~ 2026.3.11
125
+ const version = getOpenClawVersion();
126
+ const supportsSecretRef = version
127
+ ? compareVersions(version, SECRETREF_MIN_VERSION) >= 0 && compareVersions(version, SECRETREF_MAX_VERSION) <= 0
128
+ : false;
129
+ if (!supportsSecretRef) {
130
+ if (options.secretInputMode && options.secretInputMode !== 'plaintext') {
131
+ console.warn(chalk_1.default.yellow(`Warning: --secret-input-mode ${options.secretInputMode} requires OpenClaw ${SECRETREF_MIN_VERSION} ~ ${SECRETREF_MAX_VERSION}, falling back to plaintext`));
132
+ }
133
+ return 'plaintext';
134
+ }
135
+ const isWindows = process.platform === 'win32';
136
+ // 1. User explicitly specified mode
137
+ if (options.secretInputMode) {
138
+ // Windows only supports env and plaintext for writing
139
+ if (isWindows && options.secretInputMode === 'file') {
140
+ console.warn(chalk_1.default.yellow('Warning: file mode is not supported on Windows, falling back to plaintext (Windows 不支持 file 模式,回退为明文)'));
141
+ return 'plaintext';
142
+ }
143
+ return options.secretInputMode;
144
+ }
145
+ // 2. Infer from companion params
146
+ if (options.secretFilePath || options.secretFileId) {
147
+ if (isWindows) {
148
+ console.warn(chalk_1.default.yellow('Warning: file mode is not supported on Windows, falling back to plaintext (Windows 不支持 file 模式,回退为明文)'));
149
+ return 'plaintext';
150
+ }
151
+ return 'file';
152
+ }
153
+ if (options.secretEnvVar)
154
+ return 'env';
155
+ // 3. Existing config — preserve current mode
156
+ if (existingAppSecret !== undefined && existingAppSecret !== '') {
157
+ if (typeof existingAppSecret === 'string')
158
+ return 'plaintext';
159
+ if ((0, secret_ref_1.isSecretRef)(existingAppSecret)) {
160
+ if (existingAppSecret.source === 'env')
161
+ return 'env';
162
+ if (existingAppSecret.source === 'file') {
163
+ // Windows cannot use file mode, fall back to plaintext
164
+ if (isWindows)
165
+ return 'plaintext';
166
+ return 'file';
167
+ }
168
+ }
169
+ }
170
+ // 4. Default: Windows → plaintext, others → file
171
+ return isWindows ? 'plaintext' : 'file';
172
+ }
173
+ /**
174
+ * Writes the appSecret into config according to the chosen mode.
175
+ * Returns the SecretInput to store in feishuConfig.appSecret.
176
+ */
177
+ async function storeSecret(secretValue, mode, options, config) {
178
+ switch (mode) {
179
+ case 'file': {
180
+ const filePath = options.secretFilePath ?? secret_ref_1.DEFAULT_SECRETS_FILE;
181
+ const writeParams = {
182
+ secretValue,
183
+ filePath,
184
+ };
185
+ if (options.secretFileId)
186
+ writeParams.jsonPointer = options.secretFileId;
187
+ const ref = await (0, secret_ref_1.writeSecretToFile)(writeParams);
188
+ (0, secret_ref_1.ensureFileProviderInConfig)(config, filePath);
189
+ return ref;
190
+ }
191
+ case 'env': {
192
+ const envParams = {
193
+ secretValue,
194
+ openclawDir: (0, config_1.getOpenClawDir)(),
195
+ };
196
+ if (options.secretEnvVar)
197
+ envParams.envVar = options.secretEnvVar;
198
+ const ref = await (0, secret_ref_1.writeSecretToEnv)(envParams);
199
+ return ref;
200
+ }
201
+ case 'plaintext': {
202
+ return secretValue;
203
+ }
204
+ }
205
+ }
68
206
  async function ensureChannelConfig(options = {}) {
69
207
  let config = await (0, config_1.readConfig)();
70
208
  if (!config)
71
209
  config = {};
210
+ // Validate secret params
211
+ const { error, warnings } = validateSecretParams(options);
212
+ if (error) {
213
+ console.error(chalk_1.default.red(`Error(错误): ${error}`));
214
+ process.exit(1);
215
+ }
216
+ for (const w of warnings) {
217
+ console.warn(chalk_1.default.yellow(`Warning: ${w}`));
218
+ }
72
219
  // Ensure basic structure
73
220
  if (!config.channels)
74
221
  config.channels = {};
@@ -81,12 +228,10 @@ async function ensureChannelConfig(options = {}) {
81
228
  connectionMode: "websocket",
82
229
  requireMention: true,
83
230
  dmPolicy: "pairing",
84
- // groupPolicy: "open", // Removed to allow proper detection of missing policy
85
231
  allowFrom: [],
86
232
  groupAllowFrom: []
87
233
  };
88
234
  }
89
- // Get current config reference
90
235
  const feishuConfig = config.channels.feishu;
91
236
  // HANDLE --app FLAG
92
237
  if (options.app) {
@@ -104,63 +249,86 @@ async function ensureChannelConfig(options = {}) {
104
249
  process.exit(1);
105
250
  }
106
251
  feishuConfig.appId = appId;
107
- feishuConfig.appSecret = appSecret;
108
- // Default policies are already set by initialization above
252
+ const mode = resolveSecretMode(options, feishuConfig.appSecret);
253
+ feishuConfig.appSecret = await storeSecret(appSecret, mode, options, config);
109
254
  }
110
255
  // HANDLE --use-existing FLAG
111
256
  else if (options.useExisting) {
112
257
  const appId = feishuConfig.appId;
113
- const appSecret = feishuConfig.appSecret;
114
- if (!appId || !appSecret) {
258
+ const appSecretRaw = feishuConfig.appSecret;
259
+ if (!appId || !appSecretRaw) {
115
260
  console.error(chalk_1.default.red('Error(错误): --use-existing specified but no valid configuration found (指定了 --use-existing 但未找到有效配置)'));
116
261
  process.exit(1);
117
262
  }
263
+ // Resolve secret (supports string, file, env, exec)
264
+ const appSecret = await (0, secret_ref_1.resolveSecretValue)(appSecretRaw, config);
265
+ if (!appSecret) {
266
+ if ((0, secret_ref_1.isSecretRef)(appSecretRaw)) {
267
+ console.error(chalk_1.default.red(`Error(错误): Could not resolve SecretRef (${(0, secret_ref_1.describeSecretRef)(appSecretRaw)}). Check your configuration.`));
268
+ }
269
+ else {
270
+ console.error(chalk_1.default.red('Error(错误): App Secret is empty'));
271
+ }
272
+ process.exit(1);
273
+ }
118
274
  console.log(chalk_1.default.yellow(`Validating existing credentials for App ID: ${appId} (正在验证现有 App ID ${appId} 的凭证)...`));
119
275
  const isValid = await (0, feishu_auth_1.validateAppCredentials)(appId, appSecret);
120
276
  if (!isValid) {
121
277
  console.error(chalk_1.default.red('Error(错误): Existing credentials are invalid (现有凭证无效)'));
122
278
  process.exit(1);
123
279
  }
124
- // Config is already there, nothing to update for credentials
280
+ console.log(chalk_1.default.green('✓ Credentials verified (✓ 凭证校验成功)'));
281
+ // Keep appSecretRaw unchanged — don't alter existing storage mode
125
282
  }
126
283
  // HANDLE INTERACTIVE FLOW
127
284
  else {
128
285
  const currentAppId = feishuConfig.appId || "";
129
- const currentAppSecret = feishuConfig.appSecret || undefined;
130
- // Run interactive auth flow
131
- const { appId, appSecret, userInfo, domain } = await (0, install_prompts_1.runInstallAuthFlow)(currentAppId, currentAppSecret, options);
132
- feishuConfig.appId = appId;
133
- feishuConfig.appSecret = appSecret;
134
- if (domain) {
135
- feishuConfig.domain = domain;
286
+ // Resolve existing secret (plaintext or SecretRef) so interactive flow can validate without re-prompting
287
+ let currentAppSecret;
288
+ const hasSecretRef = (0, secret_ref_1.isSecretRef)(feishuConfig.appSecret);
289
+ if (feishuConfig.appSecret) {
290
+ currentAppSecret = await (0, secret_ref_1.resolveSecretValue)(feishuConfig.appSecret, config) ?? undefined;
136
291
  }
137
- // Update dmPolicy and allowFrom based on userInfo
138
- if (userInfo && userInfo.openId) {
139
- feishuConfig.dmPolicy = "allowlist";
140
- if (!feishuConfig.allowFrom)
141
- feishuConfig.allowFrom = [];
142
- if (!feishuConfig.allowFrom.includes(userInfo.openId)) {
143
- feishuConfig.allowFrom.push(userInfo.openId);
292
+ const { appId, appSecret, userInfo, domain, isExisting } = await (0, install_prompts_1.runInstallAuthFlow)(currentAppId, currentAppSecret, options, hasSecretRef);
293
+ if (isExisting) {
294
+ // User chose to reuse existing bot — don't modify existing config, just read/validate
295
+ console.log(chalk_1.default.green('✓ Using existing configuration (✓ 使用现有配置)'));
296
+ }
297
+ else {
298
+ feishuConfig.appId = appId;
299
+ // Determine storage mode — ignore existing config, treat as fresh install (defaults to file)
300
+ const mode = resolveSecretMode(options, undefined);
301
+ feishuConfig.appSecret = await storeSecret(appSecret, mode, options, config);
302
+ if (domain) {
303
+ feishuConfig.domain = domain;
144
304
  }
145
- // Initialize groupPolicy if missing
146
- if (!feishuConfig.groupPolicy) {
147
- feishuConfig.groupPolicy = "allowlist";
148
- if (!feishuConfig.groupAllowFrom)
149
- feishuConfig.groupAllowFrom = [];
150
- if (!feishuConfig.groupAllowFrom.includes(userInfo.openId)) {
151
- feishuConfig.groupAllowFrom.push(userInfo.openId);
305
+ // Update dmPolicy and allowFrom based on userInfo
306
+ if (userInfo && userInfo.openId) {
307
+ feishuConfig.dmPolicy = "allowlist";
308
+ if (!feishuConfig.allowFrom)
309
+ feishuConfig.allowFrom = [];
310
+ if (!feishuConfig.allowFrom.includes(userInfo.openId)) {
311
+ feishuConfig.allowFrom.push(userInfo.openId);
152
312
  }
153
- if (!feishuConfig.groups) {
154
- feishuConfig.groups = { "*": { enabled: true } };
313
+ if (!feishuConfig.groupPolicy) {
314
+ feishuConfig.groupPolicy = "allowlist";
315
+ if (!feishuConfig.groupAllowFrom)
316
+ feishuConfig.groupAllowFrom = [];
317
+ if (!feishuConfig.groupAllowFrom.includes(userInfo.openId)) {
318
+ feishuConfig.groupAllowFrom.push(userInfo.openId);
319
+ }
320
+ if (!feishuConfig.groups) {
321
+ feishuConfig.groups = { "*": { enabled: true } };
322
+ }
155
323
  }
156
324
  }
157
- }
158
- else if (userInfo) {
159
- feishuConfig.dmPolicy = "open";
160
- }
161
- else {
162
- if (!feishuConfig.dmPolicy) {
163
- feishuConfig.dmPolicy = "pairing";
325
+ else if (userInfo) {
326
+ feishuConfig.dmPolicy = "open";
327
+ }
328
+ else {
329
+ if (!feishuConfig.dmPolicy) {
330
+ feishuConfig.dmPolicy = "pairing";
331
+ }
164
332
  }
165
333
  }
166
334
  }
@@ -176,7 +344,7 @@ async function ensureChannelConfig(options = {}) {
176
344
  if (!config.plugins.allow.includes(PLUGIN_NAME)) {
177
345
  config.plugins.allow.push(PLUGIN_NAME);
178
346
  }
179
- // Explicitly enable the plugin in entries as per requirement 9.2
347
+ // Explicitly enable the plugin
180
348
  if (!config.plugins.entries)
181
349
  config.plugins.entries = {};
182
350
  if (!config.plugins.entries[PLUGIN_NAME]) {
@@ -187,9 +355,6 @@ async function ensureChannelConfig(options = {}) {
187
355
  }
188
356
  await (0, config_1.writeConfig)(config);
189
357
  }
190
- /**
191
- * Helper to verify installation and start OpenClaw gateway and logs.
192
- */
193
358
  async function verifyAndStart(options) {
194
359
  const finalConfig = await (0, config_1.readConfig)();
195
360
  const checks = [
@@ -199,21 +364,26 @@ async function verifyAndStart(options) {
199
364
  ];
200
365
  if (checks.every(Boolean)) {
201
366
  const openclawCmd = (0, system_1.getPlatformCommand)('openclaw');
367
+ try {
368
+ // gateway install is required on OpenClaw >= 2026.3.7 to register the service
369
+ // before restart, otherwise the service ends up in a "disabled" state
370
+ (0, system_1.runCommand)(openclawCmd, ['gateway', 'install']);
371
+ }
372
+ catch (error) {
373
+ // Older versions may not support 'gateway install', ignore
374
+ }
202
375
  try {
203
376
  (0, system_1.runCommand)(openclawCmd, ['gateway', 'restart']);
204
377
  }
205
378
  catch (error) {
206
379
  console.warn(chalk_1.default.yellow('Warning: Failed to restart OpenClaw gateway.'));
207
380
  }
208
- // Wait a bit for gateway to initialize and produce logs
209
381
  await new Promise(resolve => setTimeout(resolve, 1000));
210
- // Health check with retry
211
382
  let healthOk = false;
212
383
  for (let i = 0; i < 5; i++) {
213
384
  try {
214
385
  const healthOutput = (0, system_1.runCommandQuiet)(openclawCmd, ['health', '--json']);
215
386
  if (healthOutput) {
216
- // Extract JSON part from output (ignoring log prefixes)
217
387
  const jsonMatch = healthOutput.match(/\{[\s\S]*\}/);
218
388
  if (jsonMatch) {
219
389
  const health = JSON.parse(jsonMatch[0]);
@@ -227,7 +397,6 @@ async function verifyAndStart(options) {
227
397
  catch (e) {
228
398
  // Ignore errors and retry
229
399
  }
230
- // Wait 2 seconds before next retry
231
400
  await new Promise(resolve => setTimeout(resolve, 2000));
232
401
  }
233
402
  if (!healthOk) {
@@ -254,7 +423,6 @@ async function installCommand(options) {
254
423
  else {
255
424
  try {
256
425
  const output = (0, system_1.runCommandQuiet)(openclawCmd, ['--version']);
257
- // Parse version from output: supports "2026.2.26" and "OpenClaw 2026.3.9 (commit)"
258
426
  const versionMatch = output ? output.match(/(?:OpenClaw\s+)?(\d+\.\d+\.\d+)/) : null;
259
427
  const version = versionMatch ? versionMatch[1] : null;
260
428
  if (version && compareVersions(version, '2026.2.26') < 0) {
@@ -270,13 +438,12 @@ async function installCommand(options) {
270
438
  process.exit(1);
271
439
  }
272
440
  }
273
- // NEW: Run migration
441
+ // Run migration
274
442
  await (0, migration_1.migrateFromFeishuOpenClawPlugin)();
275
443
  // 2. Check existing installation
276
444
  if (await fs.pathExists(PLUGIN_PATH)) {
277
445
  console.log(chalk_1.default.yellow('Plugin is already installed. Starting update process...'));
278
446
  const newVersion = await (0, update_1.updateCommand)(options, true, true);
279
- // Validate config after update
280
447
  try {
281
448
  await ensureChannelConfig(options);
282
449
  }
@@ -285,13 +452,6 @@ async function installCommand(options) {
285
452
  console.error(error);
286
453
  process.exit(1);
287
454
  }
288
- if (newVersion) {
289
- // console.log(chalk.green(`Update complete! New version: ${newVersion}`));
290
- }
291
- else {
292
- // console.log(chalk.green('Update complete!'));
293
- }
294
- // Execute verification and start logic even for updates
295
455
  await verifyAndStart(options);
296
456
  return;
297
457
  }
@@ -333,10 +493,9 @@ async function installCommand(options) {
333
493
  catch (error) {
334
494
  console.error(chalk_1.default.red('Failed to configure channels (配置渠道失败):'));
335
495
  console.error(error);
336
- // Optionally exit or continue? If config fails, we probably shouldn't start.
337
496
  process.exit(1);
338
497
  }
339
- // 9. Final Verification and Start
498
+ // 7. Final Verification and Start
340
499
  await verifyAndStart(options);
341
500
  }
342
501
  //# sourceMappingURL=install.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -23,6 +23,10 @@ program
23
23
  .option('--skip-version-check', 'Skip OpenClaw version validation')
24
24
  .option('--app <credentials>', 'Use provided app credentials in format appId:appSecret')
25
25
  .option('--use-existing', 'Use existing app configuration without prompting')
26
+ .option('--secret-input-mode <mode>', 'Secret storage mode: file (default), env, or plaintext')
27
+ .option('--secret-file-path <path>', 'File path for secrets file (file mode only)')
28
+ .option('--secret-file-id <pointer>', 'JSON Pointer for secret location in file (file mode only)')
29
+ .option('--secret-env-var <name>', 'Environment variable name (env mode only)')
26
30
  .action((options) => (0, install_1.installCommand)(options));
27
31
  program
28
32
  .command('info')
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,gDAAoD;AACpD,0CAA8C;AAC9C,8CAAkD;AAClD,8CAAkD;AAClD,wDAA2D;AAE3D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,uBAAuB,CAAC;KAC7B,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAEzC,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;KACzE,MAAM,CAAC,aAAa,EAAE,qCAAqC,EAAE,MAAM,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;KAC1D,MAAM,CAAC,sBAAsB,EAAE,kCAAkC,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;KACvF,MAAM,CAAC,gBAAgB,EAAE,kDAAkD,CAAC;KAC5E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC,CAAC;AAEhD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,OAAO,EAAE,sDAAsD,CAAC;KACvE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC,CAAC;AAE7C,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,OAAO,EAAE,qCAAqC,CAAC;KACtD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC,CAAC;AAE/C,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,gDAAoD;AACpD,0CAA8C;AAC9C,8CAAkD;AAClD,8CAAkD;AAClD,wDAA2D;AAE3D,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,uBAAuB,CAAC;KAC7B,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,EAAE,mBAAmB,CAAC,CAAC;AAEzC,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,qBAAqB,EAAE,0CAA0C,CAAC;KACzE,MAAM,CAAC,aAAa,EAAE,qCAAqC,EAAE,MAAM,CAAC;KACpE,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,SAAS,EAAE,sBAAsB,CAAC;KACzC,MAAM,CAAC,WAAW,EAAE,qCAAqC,CAAC;KAC1D,MAAM,CAAC,sBAAsB,EAAE,kCAAkC,CAAC;KAClE,MAAM,CAAC,qBAAqB,EAAE,wDAAwD,CAAC;KACvF,MAAM,CAAC,gBAAgB,EAAE,kDAAkD,CAAC;KAC5E,MAAM,CAAC,4BAA4B,EAAE,wDAAwD,CAAC;KAC9F,MAAM,CAAC,2BAA2B,EAAE,6CAA6C,CAAC;KAClF,MAAM,CAAC,4BAA4B,EAAE,2DAA2D,CAAC;KACjG,MAAM,CAAC,yBAAyB,EAAE,2CAA2C,CAAC;KAC9E,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,wBAAc,EAAC,OAAO,CAAC,CAAC,CAAC;AAEhD,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,OAAO,EAAE,sDAAsD,CAAC;KACvE,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,kBAAW,EAAC,OAAO,CAAC,CAAC,CAAC;AAE7C,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,OAAO,EAAE,qCAAqC,CAAC;KACtD,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC,CAAC;AAE/C,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,qBAAqB,EAAE,4CAA4C,CAAC;KAC3E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,IAAA,sBAAa,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEhE,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,iBAAiB,EAAE,gCAAgC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM,IAAA,+BAAiB,EAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEpE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
@@ -1,3 +1,4 @@
1
+ import { SecretRef } from './secret-ref';
1
2
  export declare const FEISHU_ENV_URLS: {
2
3
  prod: string;
3
4
  boe: string;
@@ -9,6 +10,8 @@ export declare const LARK_ENV_URLS: {
9
10
  pre: string;
10
11
  };
11
12
  export type FeishuEnv = keyof typeof FEISHU_ENV_URLS;
13
+ export type SecretInput = string | SecretRef;
14
+ export type SecretInputMode = 'file' | 'env' | 'plaintext';
12
15
  export interface OpenClawConfig {
13
16
  plugins?: {
14
17
  allow?: string[];
@@ -23,7 +26,7 @@ export interface OpenClawConfig {
23
26
  feishu?: {
24
27
  enabled: boolean;
25
28
  appId: string;
26
- appSecret?: string;
29
+ appSecret?: SecretInput;
27
30
  domain: string;
28
31
  connectionMode: string;
29
32
  requireMention: boolean;
@@ -40,10 +43,23 @@ export interface OpenClawConfig {
40
43
  };
41
44
  [key: string]: any;
42
45
  };
46
+ secrets?: {
47
+ providers?: Record<string, any>;
48
+ defaults?: {
49
+ env?: string;
50
+ file?: string;
51
+ };
52
+ };
43
53
  }
44
54
  export declare function getOpenClawDir(): string;
45
55
  export declare function getConfigPath(): string;
46
56
  export declare function getExtensionsDir(): string;
47
57
  export declare function readConfig(): Promise<OpenClawConfig>;
58
+ export declare function ensureDirSecure(dirPath: string): Promise<void>;
59
+ /**
60
+ * Checks whether file/directory permissions are too open (group/world accessible).
61
+ * Returns true if permissions are secure (no group/world bits set).
62
+ */
63
+ export declare function isPermissionSecure(mode: number): boolean;
48
64
  export declare function writeConfig(config: OpenClawConfig): Promise<void>;
49
65
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,eAAe,CAAC;AAErD,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,EAAE;YACR,CAAC,GAAG,EAAE,MAAM,GAAG;gBACb,OAAO,EAAE,OAAO,CAAC;gBACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;aACpB,CAAC;SACH,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE;YACP,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,EAAE,MAAM,CAAC;YACf,cAAc,EAAE,MAAM,CAAC;YACvB,cAAc,EAAE,OAAO,CAAC;YACxB,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,MAAM,CAAC,EAAE;gBACP,CAAC,GAAG,EAAE,MAAM,GAAG;oBACb,OAAO,EAAE,OAAO,CAAC;oBACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;iBACpB,CAAC;aACH,CAAC;YACF,SAAS,EAAE,GAAG,EAAE,CAAC;YACjB,cAAc,EAAE,GAAG,EAAE,CAAC;SACvB,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;CACH;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAM1D;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAIvE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,eAAO,MAAM,eAAe;;;;CAI3B,CAAC;AAEF,eAAO,MAAM,aAAa;;;;CAIzB,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,eAAe,CAAC;AAErD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAC7C,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,CAAC;AAE3D,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,OAAO,CAAC,EAAE;YACR,CAAC,GAAG,EAAE,MAAM,GAAG;gBACb,OAAO,EAAE,OAAO,CAAC;gBACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;aACpB,CAAC;SACH,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE;YACP,OAAO,EAAE,OAAO,CAAC;YACjB,KAAK,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,WAAW,CAAC;YACxB,MAAM,EAAE,MAAM,CAAC;YACf,cAAc,EAAE,MAAM,CAAC;YACvB,cAAc,EAAE,OAAO,CAAC;YACxB,QAAQ,EAAE,MAAM,CAAC;YACjB,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,MAAM,CAAC,EAAE;gBACP,CAAC,GAAG,EAAE,MAAM,GAAG;oBACb,OAAO,EAAE,OAAO,CAAC;oBACjB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;iBACpB,CAAC;aACH,CAAC;YACF,SAAS,EAAE,GAAG,EAAE,CAAC;YACjB,cAAc,EAAE,GAAG,EAAE,CAAC;SACvB,CAAC;QACF,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;KAC5C,CAAC;CACH;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAsB,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC,CAM1D;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAKpE;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAsB,WAAW,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAOvE"}
@@ -38,6 +38,8 @@ exports.getOpenClawDir = getOpenClawDir;
38
38
  exports.getConfigPath = getConfigPath;
39
39
  exports.getExtensionsDir = getExtensionsDir;
40
40
  exports.readConfig = readConfig;
41
+ exports.ensureDirSecure = ensureDirSecure;
42
+ exports.isPermissionSecure = isPermissionSecure;
41
43
  exports.writeConfig = writeConfig;
42
44
  const path = __importStar(require("path"));
43
45
  const fs = __importStar(require("fs-extra"));
@@ -68,9 +70,25 @@ async function readConfig() {
68
70
  }
69
71
  return {};
70
72
  }
73
+ async function ensureDirSecure(dirPath) {
74
+ await fs.ensureDir(dirPath);
75
+ if (process.platform !== 'win32') {
76
+ await fs.chmod(dirPath, 0o700);
77
+ }
78
+ }
79
+ /**
80
+ * Checks whether file/directory permissions are too open (group/world accessible).
81
+ * Returns true if permissions are secure (no group/world bits set).
82
+ */
83
+ function isPermissionSecure(mode) {
84
+ return (mode & 0o077) === 0;
85
+ }
71
86
  async function writeConfig(config) {
72
87
  const configPath = getConfigPath();
73
- await fs.ensureDir(path.dirname(configPath));
74
- await fs.writeJSON(configPath, config, { spaces: 2 });
88
+ await ensureDirSecure(path.dirname(configPath));
89
+ await fs.writeJSON(configPath, config, { spaces: 2, mode: 0o600 });
90
+ if (process.platform !== 'win32') {
91
+ await fs.chmod(configPath, 0o600);
92
+ }
75
93
  }
76
94
  //# sourceMappingURL=config.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmDA,wCAEC;AAED,sCAEC;AAED,4CAEC;AAED,gCAMC;AAED,kCAIC;AA3ED,2CAA6B;AAC7B,6CAA+B;AAC/B,uCAAyB;AAEZ,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,4BAA4B;IAClC,GAAG,EAAE,gCAAgC;IACrC,GAAG,EAAE,gCAAgC;CACtC,CAAC;AAEW,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,gCAAgC;IACtC,GAAG,EAAE,oCAAoC;IACzC,GAAG,EAAE,oCAAoC;CAC1C,CAAC;AAqCF,SAAgB,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAChF,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC;AAEM,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,MAAsB;IACtD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAC7C,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA2DA,wCAEC;AAED,sCAEC;AAED,4CAEC;AAED,gCAMC;AAED,0CAKC;AAMD,gDAEC;AAED,kCAOC;AArGD,2CAA6B;AAC7B,6CAA+B;AAC/B,uCAAyB;AAGZ,QAAA,eAAe,GAAG;IAC7B,IAAI,EAAE,4BAA4B;IAClC,GAAG,EAAE,gCAAgC;IACrC,GAAG,EAAE,gCAAgC;CACtC,CAAC;AAEW,QAAA,aAAa,GAAG;IAC3B,IAAI,EAAE,gCAAgC;IACtC,GAAG,EAAE,oCAAoC;IACzC,GAAG,EAAE,oCAAoC;CAC1C,CAAC;AA4CF,SAAgB,cAAc;IAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAChF,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,eAAe,CAAC,CAAC;AACtD,CAAC;AAED,SAAgB,gBAAgB;IAC9B,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC;AAEM,KAAK,UAAU,UAAU;IAC9B,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACpC,OAAO,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,OAAe;IACnD,MAAM,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5B,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAgB,kBAAkB,CAAC,IAAY;IAC7C,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,MAAsB;IACtD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;IAChD,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACnE,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACjC,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;AACH,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import { FeishuAuthOptions } from './feishu-auth';
2
+ import type { SecretInputMode } from './config';
2
3
  interface AuthConfig {
3
4
  appId: string;
4
5
  appSecret: string;
@@ -6,6 +7,8 @@ interface AuthConfig {
6
7
  openId?: string | undefined;
7
8
  };
8
9
  domain?: string;
10
+ /** True when the user chose to reuse an existing bot — caller should skip re-storing the secret. */
11
+ isExisting?: boolean;
9
12
  }
10
13
  /**
11
14
  * Handles the interactive installation flow for Feishu configuration.
@@ -15,6 +18,10 @@ interface AuthConfig {
15
18
  * @param options Auth options (env, lane, debug)
16
19
  * @returns Promise<AuthConfig> The validated App ID and App Secret
17
20
  */
18
- export declare function runInstallAuthFlow(currentAppId?: string, currentAppSecret?: string, options?: FeishuAuthOptions): Promise<AuthConfig>;
21
+ export declare function runInstallAuthFlow(currentAppId?: string, currentAppSecret?: string, options?: FeishuAuthOptions, hasSecretRef?: boolean): Promise<AuthConfig>;
22
+ /**
23
+ * Prompts the user to choose a secret storage mode during interactive install.
24
+ */
25
+ export declare function promptStorageMode(defaultMode: SecretInputMode): Promise<SecretInputMode>;
19
26
  export {};
20
27
  //# sourceMappingURL=install-prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"install-prompts.d.ts","sourceRoot":"","sources":["../../src/utils/install-prompts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsC,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEtF,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,MAAM,EACzB,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,UAAU,CAAC,CA2BrB"}
1
+ {"version":3,"file":"install-prompts.d.ts","sourceRoot":"","sources":["../../src/utils/install-prompts.ts"],"names":[],"mappings":"AAIA,OAAO,EAAsC,iBAAiB,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,UAAU,UAAU;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;KAC7B,CAAC;IACF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oGAAoG;IACpG,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CACtC,YAAY,CAAC,EAAE,MAAM,EACrB,gBAAgB,CAAC,EAAE,MAAM,EACzB,OAAO,GAAE,iBAAsB,EAC/B,YAAY,GAAE,OAAe,GAC5B,OAAO,CAAC,UAAU,CAAC,CA2BrB;AA2MD;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,WAAW,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAkB9F"}