@larksuite/openclaw-lark-tools 1.0.19-alpha.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 (45) hide show
  1. package/dist/commands/doctor.d.ts +5 -0
  2. package/dist/commands/doctor.d.ts.map +1 -0
  3. package/dist/commands/doctor.js +169 -0
  4. package/dist/commands/doctor.js.map +1 -0
  5. package/dist/commands/info.d.ts +5 -0
  6. package/dist/commands/info.d.ts.map +1 -0
  7. package/dist/commands/info.js +120 -0
  8. package/dist/commands/info.js.map +1 -0
  9. package/dist/commands/install.d.ts +10 -0
  10. package/dist/commands/install.d.ts.map +1 -0
  11. package/dist/commands/install.js +292 -0
  12. package/dist/commands/install.js.map +1 -0
  13. package/dist/commands/self-update.d.ts +4 -0
  14. package/dist/commands/self-update.d.ts.map +1 -0
  15. package/dist/commands/self-update.js +79 -0
  16. package/dist/commands/self-update.js.map +1 -0
  17. package/dist/commands/update.d.ts +4 -0
  18. package/dist/commands/update.d.ts.map +1 -0
  19. package/dist/commands/update.js +140 -0
  20. package/dist/commands/update.js.map +1 -0
  21. package/dist/index.d.ts +3 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js +45 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/utils/config.d.ts +38 -0
  26. package/dist/utils/config.d.ts.map +1 -0
  27. package/dist/utils/config.js +71 -0
  28. package/dist/utils/config.js.map +1 -0
  29. package/dist/utils/feishu-auth.d.ts +47 -0
  30. package/dist/utils/feishu-auth.d.ts.map +1 -0
  31. package/dist/utils/feishu-auth.js +149 -0
  32. package/dist/utils/feishu-auth.js.map +1 -0
  33. package/dist/utils/install-prompts.d.ts +19 -0
  34. package/dist/utils/install-prompts.d.ts.map +1 -0
  35. package/dist/utils/install-prompts.js +210 -0
  36. package/dist/utils/install-prompts.js.map +1 -0
  37. package/dist/utils/prompts.d.ts +8 -0
  38. package/dist/utils/prompts.d.ts.map +1 -0
  39. package/dist/utils/prompts.js +60 -0
  40. package/dist/utils/prompts.js.map +1 -0
  41. package/dist/utils/system.d.ts +14 -0
  42. package/dist/utils/system.d.ts.map +1 -0
  43. package/dist/utils/system.js +123 -0
  44. package/dist/utils/system.js.map +1 -0
  45. package/package.json +39 -0
@@ -0,0 +1,5 @@
1
+ export interface DoctorOptions {
2
+ fix?: boolean;
3
+ }
4
+ export declare function doctorCommand(options?: DoctorOptions): Promise<void>;
5
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,aAAa;IAC5B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,aAAa,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmH9E"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.doctorCommand = doctorCommand;
40
+ const fs = __importStar(require("fs-extra"));
41
+ const path = __importStar(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const config_1 = require("../utils/config");
44
+ const prompts_1 = require("../utils/prompts");
45
+ const system_1 = require("../utils/system");
46
+ const EXTENSIONS_DIR = (0, config_1.getExtensionsDir)();
47
+ const PLUGIN_NAME = 'feishu-openclaw-plugin';
48
+ const PLUGIN_PATH = path.join(EXTENSIONS_DIR, PLUGIN_NAME);
49
+ async function doctorCommand(options = {}) {
50
+ console.log(chalk_1.default.blue('Running diagnostic checks...'));
51
+ let checksPassed = true;
52
+ // 1. Check plugin directory
53
+ if (!(await fs.pathExists(PLUGIN_PATH))) {
54
+ console.error(chalk_1.default.red(`[FAIL] Plugin directory missing at ${PLUGIN_PATH}`));
55
+ console.warn(chalk_1.default.yellow('Suggestion: Plugin is not installed. Use "feishu-plugin-onboard install" command to install it.'));
56
+ process.exit(1);
57
+ }
58
+ // 2. Check node_modules
59
+ if (await fs.pathExists(PLUGIN_PATH)) {
60
+ if (!(await fs.pathExists(path.join(PLUGIN_PATH, 'node_modules')))) {
61
+ console.error(chalk_1.default.red(`[FAIL] node_modules missing in plugin directory`));
62
+ if (options.fix) {
63
+ console.log(chalk_1.default.blue('Attempting to fix: Running npm install...'));
64
+ try {
65
+ // Change directory and run npm install
66
+ // We use cwd option in execSync via runCommand to avoid shell-specific cd command issues on Windows
67
+ const npmCmd = (0, system_1.getPlatformCommand)('npm');
68
+ (0, system_1.runCommand)(npmCmd, ['install'], { cwd: PLUGIN_PATH });
69
+ console.log(chalk_1.default.green('[FIXED] npm install completed.'));
70
+ }
71
+ catch (e) {
72
+ console.error(chalk_1.default.red('[FIX FAIL] Failed to run npm install. Please try manually.'));
73
+ }
74
+ }
75
+ else {
76
+ console.warn(chalk_1.default.yellow(`Suggestion: Plugin dependencies not installed. Run "npm install" in ${PLUGIN_PATH} or run "feishu-plugin-onboard doctor --fix".`));
77
+ }
78
+ checksPassed = false;
79
+ }
80
+ }
81
+ // 3. Check configuration (plugins.allow)
82
+ const config = await (0, config_1.readConfig)();
83
+ if (!config.plugins?.allow?.includes(PLUGIN_NAME)) {
84
+ console.error(chalk_1.default.red(`[FAIL] Plugin not found in plugins.allow`));
85
+ if (options.fix) {
86
+ console.log(chalk_1.default.blue('Attempting to fix: Adding plugin to allow list...'));
87
+ try {
88
+ if (!config.plugins)
89
+ config.plugins = {};
90
+ if (!config.plugins.allow)
91
+ config.plugins.allow = [];
92
+ config.plugins.allow.push(PLUGIN_NAME);
93
+ await (0, config_1.writeConfig)(config);
94
+ console.log(chalk_1.default.green('[FIXED] Plugin added to allow list.'));
95
+ }
96
+ catch (e) {
97
+ console.error(chalk_1.default.red('[FIX FAIL] Failed to update configuration.'));
98
+ }
99
+ }
100
+ else {
101
+ console.warn(chalk_1.default.yellow('Suggestion: Plugin is not allowed in configuration. Run "feishu-plugin-onboard doctor --fix" to automatically add it.'));
102
+ }
103
+ checksPassed = false;
104
+ }
105
+ // 4. Check channel configuration
106
+ const feishuChannel = config.channels?.feishu;
107
+ let channelConfigValid = false;
108
+ if (feishuChannel && feishuChannel.appId && feishuChannel.appSecret) {
109
+ if (typeof feishuChannel.appId === 'string' && typeof feishuChannel.appSecret === 'string') {
110
+ channelConfigValid = true;
111
+ }
112
+ }
113
+ if (!channelConfigValid) {
114
+ console.error(chalk_1.default.red(`[FAIL] Feishu channel configuration missing or incomplete`));
115
+ if (options.fix) {
116
+ console.log(chalk_1.default.blue('Attempting to fix: Configuring App ID and Secret...'));
117
+ try {
118
+ if (!config.channels)
119
+ config.channels = {};
120
+ if (!config.channels.feishu) {
121
+ // Init defaults if missing, similar to install logic
122
+ config.channels.feishu = {
123
+ enabled: true,
124
+ appId: "",
125
+ appSecret: "",
126
+ domain: "feishu",
127
+ connectionMode: "websocket",
128
+ requireMention: true,
129
+ dmPolicy: "pairing",
130
+ groupPolicy: "allowlist",
131
+ allowFrom: [],
132
+ groupAllowFrom: []
133
+ };
134
+ }
135
+ const { appId, appSecret } = await (0, prompts_1.promptAppIdSecret)();
136
+ config.channels.feishu.appId = appId;
137
+ config.channels.feishu.appSecret = appSecret;
138
+ await (0, config_1.writeConfig)(config);
139
+ console.log(chalk_1.default.green('[FIXED] Channel configuration updated.'));
140
+ }
141
+ catch (e) {
142
+ console.error(chalk_1.default.red('[FIX FAIL] Failed to update channel configuration.'));
143
+ }
144
+ }
145
+ else {
146
+ console.warn(chalk_1.default.yellow('Suggestion: App ID or Secret missing. Run "feishu-plugin-onboard doctor --fix" to configure them.'));
147
+ }
148
+ checksPassed = false;
149
+ }
150
+ if (checksPassed) {
151
+ console.log(chalk_1.default.green('All checks passed!'));
152
+ }
153
+ else {
154
+ // If we tried to fix things, maybe checks are passed now?
155
+ // The previous logic marked checksPassed = false immediately upon finding an error.
156
+ // If fix was successful, strictly speaking the "check" passed *after* fix.
157
+ // But for simplicity, let's keep it as "some checks failed initially".
158
+ // Or we could re-run checks? That might be recursive.
159
+ // Let's just say "Done".
160
+ if (options.fix) {
161
+ console.log(chalk_1.default.blue('Fix attempts finished. Please run doctor again to verify.'));
162
+ }
163
+ else {
164
+ console.log(chalk_1.default.yellow('Some checks failed. Use "feishu-plugin-onboard doctor --fix" to attempt automatic repair.'));
165
+ process.exit(1);
166
+ }
167
+ }
168
+ }
169
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export interface InfoOptions {
2
+ all?: boolean;
3
+ }
4
+ export declare function infoCommand(options?: InfoOptions): Promise<void>;
5
+ //# sourceMappingURL=info.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4E1E"}
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.infoCommand = infoCommand;
40
+ const config_1 = require("../utils/config");
41
+ const system_1 = require("../utils/system");
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const path = __importStar(require("path"));
44
+ const fs = __importStar(require("fs-extra"));
45
+ const child_process_1 = require("child_process");
46
+ async function infoCommand(options = {}) {
47
+ try {
48
+ // 0. Get CLI Version
49
+ let cliVersion = 'Unknown';
50
+ let cliName = '';
51
+ try {
52
+ const cliPackagePath = path.join(__dirname, '../../package.json');
53
+ if (await fs.pathExists(cliPackagePath)) {
54
+ const pkg = await fs.readJSON(cliPackagePath);
55
+ cliVersion = pkg.version;
56
+ cliName = pkg.name;
57
+ }
58
+ }
59
+ catch (e) {
60
+ // ignore
61
+ }
62
+ let updateMsg = '';
63
+ if (cliName) {
64
+ try {
65
+ const registry = cliName.startsWith('@lark-open') ? 'https://bnpm.byted.org' : 'https://registry.npmjs.org';
66
+ const latestVer = (0, child_process_1.execSync)(`npm view ${cliName} dist-tags.latest --registry=${registry}`, {
67
+ encoding: 'utf8',
68
+ timeout: 2000,
69
+ stdio: ['ignore', 'pipe', 'ignore']
70
+ }).trim();
71
+ if (latestVer && latestVer !== cliVersion) {
72
+ updateMsg = ` (Latest: ${latestVer})`;
73
+ }
74
+ }
75
+ catch (e) {
76
+ // ignore
77
+ }
78
+ }
79
+ console.log(chalk_1.default.bold('feishu-plugin-onboard: ') + chalk_1.default.green(cliVersion) + chalk_1.default.yellow(updateMsg));
80
+ // 1. Get OpenClaw Version
81
+ let openClawVersion = 'Not Installed';
82
+ try {
83
+ const openclawCmd = (0, system_1.getPlatformCommand)('openclaw');
84
+ openClawVersion = (0, system_1.runCommandQuiet)(openclawCmd, ['--version']);
85
+ }
86
+ catch (e) {
87
+ // openclaw not installed or error
88
+ }
89
+ console.log(chalk_1.default.bold('openclaw: ') + (openClawVersion !== 'Not Installed' ? chalk_1.default.green(openClawVersion) : chalk_1.default.red(openClawVersion)));
90
+ // 2. Get Plugin Version
91
+ const EXTENSIONS_DIR = (0, config_1.getExtensionsDir)();
92
+ const PLUGIN_NAME = 'feishu-openclaw-plugin';
93
+ const PLUGIN_PATH = path.join(EXTENSIONS_DIR, PLUGIN_NAME);
94
+ const PACKAGE_JSON_PATH = path.join(PLUGIN_PATH, 'package.json');
95
+ let pluginVersion = 'Not Installed';
96
+ if (await fs.pathExists(PACKAGE_JSON_PATH)) {
97
+ try {
98
+ const pkg = await fs.readJSON(PACKAGE_JSON_PATH);
99
+ if (pkg.version) {
100
+ pluginVersion = pkg.version;
101
+ }
102
+ }
103
+ catch (e) {
104
+ // Failed to read package.json
105
+ }
106
+ }
107
+ console.log(chalk_1.default.bold('feishu-openclaw-plugin: ') + (pluginVersion !== 'Not Installed' ? chalk_1.default.green(pluginVersion) : chalk_1.default.red(pluginVersion)));
108
+ // 3. Print Config if --all
109
+ if (options.all) {
110
+ console.log(''); // Empty line
111
+ const config = await (0, config_1.readConfig)();
112
+ console.log(chalk_1.default.bold('Configuration Info:'));
113
+ console.log(JSON.stringify(config, null, 2));
114
+ }
115
+ }
116
+ catch (error) {
117
+ console.error(chalk_1.default.red('Failed to retrieve information.'));
118
+ }
119
+ }
120
+ //# sourceMappingURL=info.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { FeishuEnv } from '../utils/config';
2
+ export interface InstallOptions {
3
+ version?: string;
4
+ env?: FeishuEnv;
5
+ lane?: string;
6
+ debug?: boolean;
7
+ verbose?: boolean;
8
+ }
9
+ export declare function installCommand(options: InstallOptions): Promise<void>;
10
+ //# sourceMappingURL=install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":"AAIA,OAAO,EAA6C,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAUvF,MAAM,WAAW,cAAc;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAyJD,wBAAsB,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CA8F3E"}
@@ -0,0 +1,292 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.installCommand = installCommand;
40
+ const fs = __importStar(require("fs-extra"));
41
+ const path = __importStar(require("path"));
42
+ const chalk_1 = __importDefault(require("chalk"));
43
+ const system_1 = require("../utils/system");
44
+ const config_1 = require("../utils/config");
45
+ const install_prompts_1 = require("../utils/install-prompts");
46
+ const update_1 = require("./update");
47
+ const EXTENSIONS_DIR = (0, config_1.getExtensionsDir)();
48
+ const PLUGIN_NAME = 'feishu-openclaw-plugin';
49
+ const PLUGIN_PATH = path.join(EXTENSIONS_DIR, PLUGIN_NAME);
50
+ const CONFLICT_PLUGIN_PATH = path.join(EXTENSIONS_DIR, 'feishu');
51
+ const PACKAGE_NAME = '@larksuite/openclaw-lark';
52
+ function compareVersions(v1, v2) {
53
+ const parts1 = v1.split('.').map(Number);
54
+ const parts2 = v2.split('.').map(Number);
55
+ for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) {
56
+ const p1 = parts1[i] || 0;
57
+ const p2 = parts2[i] || 0;
58
+ if (p1 > p2)
59
+ return 1;
60
+ if (p1 < p2)
61
+ return -1;
62
+ }
63
+ return 0;
64
+ }
65
+ async function ensureChannelConfig(options = {}) {
66
+ let config = await (0, config_1.readConfig)();
67
+ if (!config)
68
+ config = {};
69
+ // Ensure basic structure
70
+ if (!config.channels)
71
+ config.channels = {};
72
+ if (!config.channels.feishu) {
73
+ config.channels.feishu = {
74
+ enabled: true,
75
+ appId: "",
76
+ appSecret: "",
77
+ domain: "feishu",
78
+ connectionMode: "websocket",
79
+ requireMention: true,
80
+ dmPolicy: "pairing",
81
+ groupPolicy: "open",
82
+ allowFrom: [],
83
+ groupAllowFrom: []
84
+ };
85
+ }
86
+ // Get current credentials - safely handle null/undefined
87
+ const feishuConfig = config.channels.feishu || {};
88
+ const currentAppId = feishuConfig.appId || "";
89
+ // Ensure appSecret is undefined if it's null or empty string, to trigger prompt if needed?
90
+ // Wait, if it's empty string but appId exists, we want to prompt.
91
+ // runInstallAuthFlow handles empty string correctly (validatedSecret="").
92
+ // But let's ensure it's not null.
93
+ const currentAppSecret = feishuConfig.appSecret || undefined;
94
+ // Run interactive auth flow
95
+ const { appId, appSecret, userInfo } = await (0, install_prompts_1.runInstallAuthFlow)(currentAppId, currentAppSecret, options);
96
+ // Update config with validated credentials
97
+ // Re-verify structure in case something weird happened, though unlikely
98
+ if (!config.channels)
99
+ config.channels = {};
100
+ if (!config.channels.feishu)
101
+ config.channels.feishu = feishuConfig; // Should be reference assignment
102
+ config.channels.feishu.appId = appId;
103
+ config.channels.feishu.appSecret = appSecret;
104
+ // Update dmPolicy and allowFrom based on userInfo
105
+ if (userInfo && userInfo.openId) {
106
+ config.channels.feishu.dmPolicy = "allowlist";
107
+ if (!config.channels.feishu.allowFrom)
108
+ config.channels.feishu.allowFrom = [];
109
+ if (!config.channels.feishu.allowFrom.includes(userInfo.openId)) {
110
+ config.channels.feishu.allowFrom.push(userInfo.openId);
111
+ }
112
+ }
113
+ else if (userInfo) {
114
+ // userInfo exists but openId is missing, meaning we tried to fetch it but failed or it wasn't there
115
+ // In this case, set to open as per requirement
116
+ config.channels.feishu.dmPolicy = "open";
117
+ }
118
+ else {
119
+ // userInfo is undefined (e.g. use existing bot), preserve existing behavior or set default
120
+ if (!config.channels.feishu.dmPolicy) {
121
+ config.channels.feishu.dmPolicy = "pairing";
122
+ }
123
+ }
124
+ // Ensure groupPolicy defaults
125
+ if (!config.channels.feishu.groupPolicy) {
126
+ config.channels.feishu.groupPolicy = "open";
127
+ }
128
+ // Update plugins.allow
129
+ if (!config.plugins)
130
+ config.plugins = {};
131
+ if (!config.plugins.allow)
132
+ config.plugins.allow = [];
133
+ if (!config.plugins.allow.includes(PLUGIN_NAME)) {
134
+ config.plugins.allow.push(PLUGIN_NAME);
135
+ }
136
+ // Explicitly enable the plugin in entries as per requirement 9.2
137
+ if (!config.plugins.entries)
138
+ config.plugins.entries = {};
139
+ if (!config.plugins.entries[PLUGIN_NAME]) {
140
+ config.plugins.entries[PLUGIN_NAME] = { enabled: true };
141
+ }
142
+ else {
143
+ config.plugins.entries[PLUGIN_NAME].enabled = true;
144
+ }
145
+ await (0, config_1.writeConfig)(config);
146
+ }
147
+ /**
148
+ * Helper to verify installation and start OpenClaw gateway and logs.
149
+ */
150
+ async function verifyAndStart(options) {
151
+ const finalConfig = await (0, config_1.readConfig)();
152
+ const checks = [
153
+ !finalConfig.plugins?.entries?.feishu?.enabled,
154
+ finalConfig.plugins?.entries?.[PLUGIN_NAME]?.enabled,
155
+ await fs.pathExists(path.join(PLUGIN_PATH, 'node_modules'))
156
+ ];
157
+ if (checks.every(Boolean)) {
158
+ const openclawCmd = (0, system_1.getPlatformCommand)('openclaw');
159
+ try {
160
+ (0, system_1.runCommand)(openclawCmd, ['gateway', 'restart']);
161
+ }
162
+ catch (error) {
163
+ console.warn(chalk_1.default.yellow('Warning: Failed to restart OpenClaw gateway.'));
164
+ }
165
+ // Wait a bit for gateway to initialize and produce logs
166
+ await new Promise(resolve => setTimeout(resolve, 1000));
167
+ // Health check with retry
168
+ let healthOk = false;
169
+ for (let i = 0; i < 5; i++) {
170
+ try {
171
+ const healthOutput = (0, system_1.runCommandQuiet)(openclawCmd, ['health', '--json']);
172
+ if (healthOutput) {
173
+ // Extract JSON part from output (ignoring log prefixes)
174
+ const jsonMatch = healthOutput.match(/\{[\s\S]*\}/);
175
+ if (jsonMatch) {
176
+ const health = JSON.parse(jsonMatch[0]);
177
+ if (health && health.ok === true) {
178
+ healthOk = true;
179
+ break;
180
+ }
181
+ }
182
+ }
183
+ }
184
+ catch (e) {
185
+ // Ignore errors and retry
186
+ }
187
+ // Wait 2 seconds before next retry
188
+ await new Promise(resolve => setTimeout(resolve, 2000));
189
+ }
190
+ if (!healthOk) {
191
+ console.warn(chalk_1.default.yellow('Warning: Health check failed after installation. The service might not be running correctly.'));
192
+ }
193
+ else {
194
+ console.log(chalk_1.default.green('OpenClaw is all set. (OpenClaw 已就绪)'));
195
+ }
196
+ }
197
+ else {
198
+ console.warn(chalk_1.default.yellow('Installation finished but some checks failed. Please run "doctor" command to diagnose.'));
199
+ }
200
+ }
201
+ async function installCommand(options) {
202
+ const openclawCmd = (0, system_1.getPlatformCommand)('openclaw');
203
+ if (options.version && !/^[0-9a-zA-Z.\-+]+$/.test(options.version)) {
204
+ console.error(chalk_1.default.red('Error: Invalid version format.'));
205
+ process.exit(1);
206
+ }
207
+ // 1. Check openclaw version
208
+ try {
209
+ const output = (0, system_1.runCommandQuiet)(openclawCmd, ['--version']);
210
+ // Parse version from output: supports "2026.2.26" and "OpenClaw 2026.3.9 (commit)"
211
+ const versionMatch = output ? output.match(/(?:OpenClaw\s+)?(\d+\.\d+\.\d+)/) : null;
212
+ const version = versionMatch ? versionMatch[1] : null;
213
+ if (version && compareVersions(version, '2026.2.26') < 0) {
214
+ console.error(chalk_1.default.red(`Error: OpenClaw version mismatch. Expected >= 2026.2.26, found ${version} (raw: ${output}). Please upgrade.`));
215
+ process.exit(1);
216
+ }
217
+ else if (!version) {
218
+ console.warn(chalk_1.default.yellow(`Warning: Could not parse OpenClaw version from "${output}". Proceeding with installation but compatibility is not guaranteed.`));
219
+ }
220
+ }
221
+ catch (error) {
222
+ console.error(chalk_1.default.red('Error: OpenClaw is not installed or not in PATH.'));
223
+ process.exit(1);
224
+ }
225
+ // 2. Check existing installation
226
+ if (await fs.pathExists(PLUGIN_PATH)) {
227
+ console.log(chalk_1.default.yellow('Plugin is already installed. Starting update process...'));
228
+ const newVersion = await (0, update_1.updateCommand)(options, true, true);
229
+ // Validate config after update
230
+ try {
231
+ await ensureChannelConfig(options);
232
+ }
233
+ catch (error) {
234
+ console.error(chalk_1.default.red('Failed to configure channels (配置渠道失败):'));
235
+ console.error(error);
236
+ process.exit(1);
237
+ }
238
+ if (newVersion) {
239
+ // console.log(chalk.green(`Update complete! New version: ${newVersion}`));
240
+ }
241
+ else {
242
+ // console.log(chalk.green('Update complete!'));
243
+ }
244
+ // Execute verification and start logic even for updates
245
+ await verifyAndStart(options);
246
+ return;
247
+ }
248
+ // 3. Set npm registry
249
+ try {
250
+ const npmCmd = (0, system_1.getPlatformCommand)('npm');
251
+ (0, system_1.runCommand)(npmCmd, ['config', 'set', 'registry', 'https://registry.npmjs.org/']);
252
+ }
253
+ catch (e) {
254
+ console.error(chalk_1.default.red('Failed to set npm registry.'));
255
+ }
256
+ // 4. Disable built-in plugin
257
+ const config = await (0, config_1.readConfig)();
258
+ if (!config.plugins)
259
+ config.plugins = {};
260
+ if (!config.plugins.entries)
261
+ config.plugins.entries = {};
262
+ if (!config.plugins.entries.feishu)
263
+ config.plugins.entries.feishu = { enabled: false };
264
+ config.plugins.entries.feishu.enabled = false;
265
+ await (0, config_1.writeConfig)(config);
266
+ // 5. Remove conflicting directory
267
+ if (await fs.pathExists(CONFLICT_PLUGIN_PATH)) {
268
+ await fs.remove(CONFLICT_PLUGIN_PATH);
269
+ }
270
+ try {
271
+ const packageIdentifier = options.version ? `${PACKAGE_NAME}@${options.version}` : PACKAGE_NAME;
272
+ (0, system_1.runCommand)(openclawCmd, ['plugins', 'install', packageIdentifier]);
273
+ }
274
+ catch (error) {
275
+ console.error(chalk_1.default.red('Failed to install plugin from npm.'));
276
+ console.error(error);
277
+ process.exit(1);
278
+ }
279
+ // 6. Configure channels
280
+ try {
281
+ await ensureChannelConfig(options);
282
+ }
283
+ catch (error) {
284
+ console.error(chalk_1.default.red('Failed to configure channels (配置渠道失败):'));
285
+ console.error(error);
286
+ // Optionally exit or continue? If config fails, we probably shouldn't start.
287
+ process.exit(1);
288
+ }
289
+ // 9. Final Verification and Start
290
+ await verifyAndStart(options);
291
+ }
292
+ //# sourceMappingURL=install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../../src/commands/install.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6KA,wCA8FC;AA3QD,6CAA+B;AAC/B,2CAA6B;AAC7B,kDAA0B;AAC1B,4CAAgG;AAChG,4CAAuF;AACvF,8DAA8D;AAC9D,qCAAyC;AAEzC,MAAM,cAAc,GAAG,IAAA,yBAAgB,GAAE,CAAC;AAC1C,MAAM,WAAW,GAAG,wBAAwB,CAAC;AAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAC3D,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;AACjE,MAAM,YAAY,GAAG,0BAA0B,CAAC;AAUhD,SAAS,eAAe,CAAC,EAAU,EAAE,EAAU;IAC7C,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAEzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAChE,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC;QACtB,IAAI,EAAE,GAAG,EAAE;YAAE,OAAO,CAAC,CAAC,CAAC;IACzB,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,UAA0B,EAAE;IAC7D,IAAI,MAAM,GAAG,MAAM,IAAA,mBAAU,GAAE,CAAC;IAChC,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,EAAE,CAAC;IAEzB,yBAAyB;IACzB,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG;YACxB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,EAAE;YACT,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,QAAQ;YAChB,cAAc,EAAE,WAAW;YAC3B,cAAc,EAAE,IAAI;YACpB,QAAQ,EAAE,SAAS;YACnB,WAAW,EAAE,MAAM;YACnB,SAAS,EAAE,EAAE;YACb,cAAc,EAAE,EAAE;SACnB,CAAC;IACJ,CAAC;IAED,yDAAyD;IACzD,MAAM,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;IAClD,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,IAAI,EAAE,CAAC;IAC9C,2FAA2F;IAC3F,kEAAkE;IAClE,0EAA0E;IAC1E,kCAAkC;IAClC,MAAM,gBAAgB,GAAG,YAAY,CAAC,SAAS,IAAI,SAAS,CAAC;IAE7D,4BAA4B;IAC5B,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,oCAAkB,EAAC,YAAY,EAAE,gBAAgB,EAAE,OAAO,CAAC,CAAC;IAEzG,2CAA2C;IAC3C,wEAAwE;IACxE,IAAI,CAAC,MAAM,CAAC,QAAQ;QAAE,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;QAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,YAAY,CAAC,CAAC,iCAAiC;IAErG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;IACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;IAE7C,kDAAkD;IAClD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS;YAAE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;SAAM,IAAI,QAAQ,EAAE,CAAC;QACpB,oGAAoG;QACpG,+CAA+C;QAC/C,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,2FAA2F;QAC3F,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACrC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC;IAC9C,CAAC;IAED,uBAAuB;IACvB,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,EAAE,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAChD,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACzC,CAAC;IAED,iEAAiE;IACjE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;IACzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QACzC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC1D,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;IACrD,CAAC;IAED,MAAM,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;AAC5B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAAC,OAAuB;IACnD,MAAM,WAAW,GAAG,MAAM,IAAA,mBAAU,GAAE,CAAC;IACvC,MAAM,MAAM,GAAG;QACb,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;QAC9C,WAAW,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,WAAW,CAAC,EAAE,OAAO;QACpD,MAAM,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;KAC5D,CAAC;IAEF,IAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1B,MAAM,WAAW,GAAG,IAAA,2BAAkB,EAAC,UAAU,CAAC,CAAC;QAEnD,IAAI,CAAC;YACH,IAAA,mBAAU,EAAC,WAAW,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,wDAAwD;QACxD,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAExD,0BAA0B;QAC1B,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,IAAA,wBAAe,EAAC,WAAW,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACxE,IAAI,YAAY,EAAE,CAAC;oBACjB,wDAAwD;oBACxD,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;oBACpD,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;wBACxC,IAAI,MAAM,IAAI,MAAM,CAAC,EAAE,KAAK,IAAI,EAAE,CAAC;4BACjC,QAAQ,GAAG,IAAI,CAAC;4BAChB,MAAM;wBACR,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,0BAA0B;YAC5B,CAAC;YACD,mCAAmC;YACnC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,8FAA8F,CAAC,CAAC,CAAC;QAC7H,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,wFAAwF,CAAC,CAAC,CAAC;IACvH,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,OAAuB;IAC1D,MAAM,WAAW,GAAG,IAAA,2BAAkB,EAAC,UAAU,CAAC,CAAC;IAEnD,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,4BAA4B;IAC5B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,wBAAe,EAAC,WAAW,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3D,mFAAmF;QACnF,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrF,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAEtD,IAAI,OAAO,IAAI,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACzD,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kEAAkE,OAAO,UAAU,MAAM,oBAAoB,CAAC,CAAC,CAAC;YACxI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;aAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,eAAK,CAAC,MAAM,CAAC,mDAAmD,MAAM,sEAAsE,CAAC,CAAC,CAAC;QAC/J,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,iCAAiC;IACjC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,yDAAyD,CAAC,CAAC,CAAC;QACrF,MAAM,UAAU,GAAG,MAAM,IAAA,sBAAa,EAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAE5D,+BAA+B;QAC/B,IAAI,CAAC;YACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;YACnE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,UAAU,EAAE,CAAC;YACf,2EAA2E;QAC7E,CAAC;aAAM,CAAC;YACN,gDAAgD;QAClD,CAAC;QAED,wDAAwD;QACxD,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,2BAAkB,EAAC,KAAK,CAAC,CAAC;QACzC,IAAA,mBAAU,EAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,6BAA6B,CAAC,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,MAAM,IAAA,mBAAU,GAAE,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;IACzC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO;QAAE,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;IACzD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM;QAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;IACvF,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;IAC9C,MAAM,IAAA,oBAAW,EAAC,MAAM,CAAC,CAAC;IAE1B,kCAAkC;IAClC,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;QAC9C,MAAM,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC;QACH,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,YAAY,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;QAChG,IAAA,mBAAU,EAAC,WAAW,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,wBAAwB;IACxB,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrB,6EAA6E;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kCAAkC;IAClC,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const selfUpdateCommand: (options: {
2
+ version?: string;
3
+ }) => Promise<void>;
4
+ //# sourceMappingURL=self-update.d.ts.map