@neomei/opencode-feishu 0.1.2 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +29 -4
- package/README.md +86 -6
- package/dist/cli.js +141 -4
- package/dist/cli.js.map +1 -1
- package/dist/core/config.d.ts +4 -0
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +21 -1
- package/dist/core/config.js.map +1 -1
- package/dist/core/daemon.d.ts.map +1 -1
- package/dist/core/daemon.js +2 -1
- package/dist/core/daemon.js.map +1 -1
- package/dist/core/dedup.d.ts +29 -0
- package/dist/core/dedup.d.ts.map +1 -0
- package/dist/core/dedup.js +69 -0
- package/dist/core/dedup.js.map +1 -0
- package/dist/core/file-downloader.d.ts +24 -0
- package/dist/core/file-downloader.d.ts.map +1 -0
- package/dist/core/file-downloader.js +79 -0
- package/dist/core/file-downloader.js.map +1 -0
- package/dist/core/message-handler.d.ts +6 -0
- package/dist/core/message-handler.d.ts.map +1 -1
- package/dist/core/message-handler.js +66 -7
- package/dist/core/message-handler.js.map +1 -1
- package/dist/core/profile-manager.d.ts +27 -0
- package/dist/core/profile-manager.d.ts.map +1 -0
- package/dist/core/profile-manager.js +149 -0
- package/dist/core/profile-manager.js.map +1 -0
- package/dist/core/types.d.ts +2 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/feishu/api.d.ts +12 -0
- package/dist/feishu/api.d.ts.map +1 -1
- package/dist/feishu/api.js +89 -0
- package/dist/feishu/api.js.map +1 -1
- package/dist/feishu/card.d.ts +1 -1
- package/dist/feishu/card.d.ts.map +1 -1
- package/dist/feishu/card.js +3 -1
- package/dist/feishu/card.js.map +1 -1
- package/dist/feishu/event-source.d.ts.map +1 -1
- package/dist/feishu/event-source.js +3 -0
- package/dist/feishu/event-source.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/opencode/client.d.ts +5 -1
- package/dist/opencode/client.d.ts.map +1 -1
- package/dist/opencode/client.js +15 -2
- package/dist/opencode/client.js.map +1 -1
- package/dist/opencode/event-handler.d.ts.map +1 -1
- package/dist/opencode/event-handler.js +3 -0
- package/dist/opencode/event-handler.js.map +1 -1
- package/dist/services/approval-service.d.ts +20 -0
- package/dist/services/approval-service.d.ts.map +1 -0
- package/dist/services/approval-service.js +123 -0
- package/dist/services/approval-service.js.map +1 -0
- package/dist/services/base-service.d.ts +22 -0
- package/dist/services/base-service.d.ts.map +1 -0
- package/dist/services/base-service.js +47 -0
- package/dist/services/base-service.js.map +1 -0
- package/dist/services/calendar-service.d.ts +25 -0
- package/dist/services/calendar-service.d.ts.map +1 -0
- package/dist/services/calendar-service.js +220 -0
- package/dist/services/calendar-service.js.map +1 -0
- package/dist/services/chat-service.d.ts +52 -0
- package/dist/services/chat-service.d.ts.map +1 -0
- package/dist/services/chat-service.js +170 -0
- package/dist/services/chat-service.js.map +1 -0
- package/dist/services/contact-service.d.ts +40 -0
- package/dist/services/contact-service.d.ts.map +1 -0
- package/dist/services/contact-service.js +137 -0
- package/dist/services/contact-service.js.map +1 -0
- package/dist/services/doc-service.d.ts +135 -0
- package/dist/services/doc-service.d.ts.map +1 -0
- package/dist/services/doc-service.js +509 -0
- package/dist/services/doc-service.js.map +1 -0
- package/dist/services/im-service.d.ts +64 -0
- package/dist/services/im-service.d.ts.map +1 -0
- package/dist/services/im-service.js +215 -0
- package/dist/services/im-service.js.map +1 -0
- package/dist/services/index.d.ts +9 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +10 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/task-service.d.ts +19 -0
- package/dist/services/task-service.d.ts.map +1 -0
- package/dist/services/task-service.js +126 -0
- package/dist/services/task-service.js.map +1 -0
- package/dist/setup/device-flow.d.ts +31 -0
- package/dist/setup/device-flow.d.ts.map +1 -0
- package/dist/setup/device-flow.js +133 -0
- package/dist/setup/device-flow.js.map +1 -0
- package/dist/setup/preflight.d.ts +1 -0
- package/dist/setup/preflight.d.ts.map +1 -1
- package/dist/setup/preflight.js +167 -1
- package/dist/setup/preflight.js.map +1 -1
- package/dist/setup/wizard.d.ts +1 -1
- package/dist/setup/wizard.d.ts.map +1 -1
- package/dist/setup/wizard.js +95 -125
- package/dist/setup/wizard.js.map +1 -1
- package/dist/standalone.d.ts.map +1 -1
- package/dist/standalone.js +17 -2
- package/dist/standalone.js.map +1 -1
- package/dist/types/extended.d.ts +196 -0
- package/dist/types/extended.d.ts.map +1 -0
- package/dist/types/extended.js +6 -0
- package/dist/types/extended.js.map +1 -0
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"device-flow.js","sourceRoot":"","sources":["../../src/setup/device-flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,7 @@ export declare function checkConfigWritable(configPath?: string): Promise<CheckR
|
|
|
18
18
|
export declare function checkFeishuCredentials(appId: string | undefined, appSecret: string | undefined, domain?: 'feishu' | 'lark'): Promise<CheckResult>;
|
|
19
19
|
export declare function checkOpenCodeServer(url: string): Promise<CheckResult>;
|
|
20
20
|
export declare function checkAllowlist(config: FeishuConfig | null): Promise<CheckResult>;
|
|
21
|
+
export declare function checkPermissions(appId: string | undefined, appSecret: string | undefined, domain?: 'feishu' | 'lark'): Promise<CheckResult[]>;
|
|
21
22
|
/**
|
|
22
23
|
* Run all applicable checks given a (possibly partial) config.
|
|
23
24
|
* Order: cheapest/most foundational first so short-circuit decisions
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/setup/preflight.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID,wBAAsB,eAAe,CAAC,UAAU,SAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAU5F;AAED,wBAAsB,mBAAmB,CAAC,UAAU,SAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAchG;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,GAAE,QAAQ,GAAG,MAAiB,GACnC,OAAO,CAAC,WAAW,CAAC,CAgDtB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiC3E;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BtF;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,YAAY,GAAG,IAAI,EAC3B,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,OAAO,CAAC,WAAW,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"preflight.d.ts","sourceRoot":"","sources":["../../src/setup/preflight.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD;;;;GAIG;AAEH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,OAAO,CAAC;IACZ,iCAAiC;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID,wBAAsB,eAAe,CAAC,UAAU,SAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAU5F;AAED,wBAAsB,mBAAmB,CAAC,UAAU,SAAsB,GAAG,OAAO,CAAC,WAAW,CAAC,CAchG;AAED,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,GAAE,QAAQ,GAAG,MAAiB,GACnC,OAAO,CAAC,WAAW,CAAC,CAgDtB;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAiC3E;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,CA+BtF;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,MAAM,GAAE,QAAQ,GAAG,MAAiB,GACnC,OAAO,CAAC,WAAW,EAAE,CAAC,CAkKxB;AAED;;;;GAIG;AACH,wBAAsB,MAAM,CAC1B,MAAM,EAAE,YAAY,GAAG,IAAI,EAC3B,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GACrD,OAAO,CAAC,WAAW,EAAE,CAAC,CA4BxB"}
|
package/dist/setup/preflight.js
CHANGED
|
@@ -144,6 +144,166 @@ export async function checkAllowlist(config) {
|
|
|
144
144
|
detail: `groupPolicy is "${config.groupPolicy}"`,
|
|
145
145
|
};
|
|
146
146
|
}
|
|
147
|
+
export async function checkPermissions(appId, appSecret, domain = 'feishu') {
|
|
148
|
+
const results = [];
|
|
149
|
+
if (!appId || !appSecret) {
|
|
150
|
+
return [{
|
|
151
|
+
ok: false,
|
|
152
|
+
label: 'Permission check',
|
|
153
|
+
detail: 'Cannot check permissions without valid credentials',
|
|
154
|
+
fix: 'Configure appId and appSecret first',
|
|
155
|
+
}];
|
|
156
|
+
}
|
|
157
|
+
try {
|
|
158
|
+
const client = new Lark.Client({
|
|
159
|
+
appId,
|
|
160
|
+
appSecret,
|
|
161
|
+
domain: domain === 'lark' ? Lark.Domain.Lark : Lark.Domain.Feishu,
|
|
162
|
+
logger: silentLogger,
|
|
163
|
+
});
|
|
164
|
+
// Check IM permissions
|
|
165
|
+
try {
|
|
166
|
+
const imRes = await client.request({
|
|
167
|
+
method: 'GET',
|
|
168
|
+
url: '/open-apis/im/v1/messages',
|
|
169
|
+
params: { container_id_type: 'chat', container_id: 'test', page_size: 1 },
|
|
170
|
+
});
|
|
171
|
+
results.push({
|
|
172
|
+
ok: imRes.code === 0 || imRes.code === 10002, // 10002 = invalid chat_id, which means permission is OK
|
|
173
|
+
label: 'IM permission (im:message)',
|
|
174
|
+
detail: imRes.code === 0 || imRes.code === 10002 ? 'Granted' : `Denied: ${imRes.msg}`,
|
|
175
|
+
fix: imRes.code !== 0 && imRes.code !== 10002 ? 'Enable "im:message" scope in Feishu console' : undefined,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
catch (err) {
|
|
179
|
+
results.push({
|
|
180
|
+
ok: false,
|
|
181
|
+
label: 'IM permission (im:message)',
|
|
182
|
+
detail: `Check failed: ${err.message}`,
|
|
183
|
+
fix: 'Enable "im:message" scope in Feishu console',
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
// Check contact permissions
|
|
187
|
+
try {
|
|
188
|
+
const contactRes = await client.request({
|
|
189
|
+
method: 'GET',
|
|
190
|
+
url: '/open-apis/contact/v3/users',
|
|
191
|
+
params: { user_id_type: 'open_id', page_size: 1 },
|
|
192
|
+
});
|
|
193
|
+
results.push({
|
|
194
|
+
ok: contactRes.code === 0 || contactRes.code === 10002,
|
|
195
|
+
label: 'Contact permission (contact:user)',
|
|
196
|
+
detail: contactRes.code === 0 || contactRes.code === 10002 ? 'Granted' : `Denied: ${contactRes.msg}`,
|
|
197
|
+
fix: contactRes.code !== 0 && contactRes.code !== 10002 ? 'Enable "contact:user" scope in Feishu console' : undefined,
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
catch (err) {
|
|
201
|
+
results.push({
|
|
202
|
+
ok: false,
|
|
203
|
+
label: 'Contact permission (contact:user)',
|
|
204
|
+
detail: `Check failed: ${err.message}`,
|
|
205
|
+
fix: 'Enable "contact:user" scope in Feishu console',
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
// Check calendar permissions
|
|
209
|
+
try {
|
|
210
|
+
const calRes = await client.request({
|
|
211
|
+
method: 'GET',
|
|
212
|
+
url: '/open-apis/calendar/v4/calendars',
|
|
213
|
+
params: { page_size: 1 },
|
|
214
|
+
});
|
|
215
|
+
results.push({
|
|
216
|
+
ok: calRes.code === 0 || calRes.code === 10002,
|
|
217
|
+
label: 'Calendar permission (calendar:calendar)',
|
|
218
|
+
detail: calRes.code === 0 || calRes.code === 10002 ? 'Granted' : `Denied: ${calRes.msg}`,
|
|
219
|
+
fix: calRes.code !== 0 && calRes.code !== 10002 ? 'Enable "calendar:calendar" scope in Feishu console' : undefined,
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
catch (err) {
|
|
223
|
+
results.push({
|
|
224
|
+
ok: false,
|
|
225
|
+
label: 'Calendar permission (calendar:calendar)',
|
|
226
|
+
detail: `Check failed: ${err.message}`,
|
|
227
|
+
fix: 'Enable "calendar:calendar" scope in Feishu console',
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
// Check task permissions
|
|
231
|
+
try {
|
|
232
|
+
const taskRes = await client.request({
|
|
233
|
+
method: 'GET',
|
|
234
|
+
url: '/open-apis/task/v2/tasks',
|
|
235
|
+
params: { page_size: 1 },
|
|
236
|
+
});
|
|
237
|
+
results.push({
|
|
238
|
+
ok: taskRes.code === 0 || taskRes.code === 10002,
|
|
239
|
+
label: 'Task permission (task:task)',
|
|
240
|
+
detail: taskRes.code === 0 || taskRes.code === 10002 ? 'Granted' : `Denied: ${taskRes.msg}`,
|
|
241
|
+
fix: taskRes.code !== 0 && taskRes.code !== 10002 ? 'Enable "task:task" scope in Feishu console' : undefined,
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
catch (err) {
|
|
245
|
+
results.push({
|
|
246
|
+
ok: false,
|
|
247
|
+
label: 'Task permission (task:task)',
|
|
248
|
+
detail: `Check failed: ${err.message}`,
|
|
249
|
+
fix: 'Enable "task:task" scope in Feishu console',
|
|
250
|
+
});
|
|
251
|
+
}
|
|
252
|
+
// Check approval permissions
|
|
253
|
+
try {
|
|
254
|
+
const approvalRes = await client.request({
|
|
255
|
+
method: 'GET',
|
|
256
|
+
url: '/open-apis/approval/v4/instances',
|
|
257
|
+
params: { page_size: 1 },
|
|
258
|
+
});
|
|
259
|
+
results.push({
|
|
260
|
+
ok: approvalRes.code === 0 || approvalRes.code === 10002,
|
|
261
|
+
label: 'Approval permission (approval:instance)',
|
|
262
|
+
detail: approvalRes.code === 0 || approvalRes.code === 10002 ? 'Granted' : `Denied: ${approvalRes.msg}`,
|
|
263
|
+
fix: approvalRes.code !== 0 && approvalRes.code !== 10002 ? 'Enable "approval:instance" scope in Feishu console' : undefined,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
catch (err) {
|
|
267
|
+
results.push({
|
|
268
|
+
ok: false,
|
|
269
|
+
label: 'Approval permission (approval:instance)',
|
|
270
|
+
detail: `Check failed: ${err.message}`,
|
|
271
|
+
fix: 'Enable "approval:instance" scope in Feishu console',
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
// Check doc permissions
|
|
275
|
+
try {
|
|
276
|
+
const docRes = await client.request({
|
|
277
|
+
method: 'GET',
|
|
278
|
+
url: '/open-apis/doc/v2/meta',
|
|
279
|
+
params: { doc_token: 'test' },
|
|
280
|
+
});
|
|
281
|
+
results.push({
|
|
282
|
+
ok: docRes.code === 0 || docRes.code === 10002 || docRes.code === 10003,
|
|
283
|
+
label: 'Doc permission (docx:document)',
|
|
284
|
+
detail: docRes.code === 0 || docRes.code === 10002 || docRes.code === 10003 ? 'Granted' : `Denied: ${docRes.msg}`,
|
|
285
|
+
fix: docRes.code !== 0 && docRes.code !== 10002 && docRes.code !== 10003 ? 'Enable "docx:document" scope in Feishu console' : undefined,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
catch (err) {
|
|
289
|
+
results.push({
|
|
290
|
+
ok: false,
|
|
291
|
+
label: 'Doc permission (docx:document)',
|
|
292
|
+
detail: `Check failed: ${err.message}`,
|
|
293
|
+
fix: 'Enable "docx:document" scope in Feishu console',
|
|
294
|
+
});
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
catch (err) {
|
|
298
|
+
results.push({
|
|
299
|
+
ok: false,
|
|
300
|
+
label: 'Permission check',
|
|
301
|
+
detail: `Failed to check permissions: ${err.message}`,
|
|
302
|
+
fix: 'Verify credentials and try again',
|
|
303
|
+
});
|
|
304
|
+
}
|
|
305
|
+
return results;
|
|
306
|
+
}
|
|
147
307
|
/**
|
|
148
308
|
* Run all applicable checks given a (possibly partial) config.
|
|
149
309
|
* Order: cheapest/most foundational first so short-circuit decisions
|
|
@@ -155,8 +315,14 @@ export async function runAll(config, opts = {}) {
|
|
|
155
315
|
results.push(await checkConfigWritable(opts.configPath));
|
|
156
316
|
if (config) {
|
|
157
317
|
results.push(await checkOpenCodeServer(config.opencodeUrl));
|
|
158
|
-
|
|
318
|
+
const credResult = await checkFeishuCredentials(config.appId, opts.appSecret ?? config.appSecret ?? process.env.FEISHU_APP_SECRET, config.domain);
|
|
319
|
+
results.push(credResult);
|
|
159
320
|
results.push(await checkAllowlist(config));
|
|
321
|
+
// Check permissions if credentials are valid
|
|
322
|
+
if (credResult.ok) {
|
|
323
|
+
const permissionResults = await checkPermissions(config.appId, opts.appSecret ?? config.appSecret ?? process.env.FEISHU_APP_SECRET, config.domain);
|
|
324
|
+
results.push(...permissionResults);
|
|
325
|
+
}
|
|
160
326
|
}
|
|
161
327
|
return results;
|
|
162
328
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/setup/preflight.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"preflight.js","sourceRoot":"","sources":["../../src/setup/preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,KAAK,IAAI,MAAM,yBAAyB,CAAC;AAEhD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAkB1D,MAAM,mBAAmB,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAElF,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,UAAU,GAAG,mBAAmB;IACpE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,qBAAqB;YAC5B,MAAM,EAAE,gBAAgB,UAAU,EAAE;YACpC,GAAG,EAAE,4BAA4B;SAClC,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACxE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,UAAU,GAAG,mBAAmB;IACxE,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,8DAA8D;QAC9D,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACvE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,2BAA2B;YAClC,MAAM,EAAE,mBAAmB,GAAG,EAAE;YAChC,GAAG,EAAE,sCAAsC,GAAG,iBAAiB,GAAG,EAAE;SACrE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,KAAyB,EACzB,SAA6B,EAC7B,SAA4B,QAAQ;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,yCAAyC;YACjD,GAAG,EAAE,gDAAgD;SACtD,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,oBAAoB;YAC5B,GAAG,EAAE,uDAAuD;SAC7D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;YAC7B,KAAK;YACL,SAAS;YACT,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YACjE,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QACH,MAAM,GAAG,GAAQ,MAAM,MAAM,CAAC,OAAO,CAAC;YACpC,MAAM,EAAE,KAAK;YACb,GAAG,EAAE,wBAAwB;SAC9B,CAAC,CAAC;QACH,MAAM,MAAM,GAAuB,GAAG,EAAE,GAAG,EAAE,OAAO,IAAI,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC;QAChF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,oBAAoB;gBAC3B,MAAM,EAAE,oGAAoG;gBAC5G,GAAG,EAAE,8DAA8D;aACpE,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,eAAe,MAAM,EAAE,EAAE,CAAC;IACpF,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,oBAAoB;YAC3B,MAAM,EAAE,oBAAoB,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YACnD,GAAG,EAAE,+EAA+E;SACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAW;IACnD,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAEvB,2CAA2C;QAC3C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,CAAC;QAE3D,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,UAAU,EAAE;gBAC7C,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,OAAO;oBACL,EAAE,EAAE,KAAK;oBACT,KAAK,EAAE,2BAA2B;oBAClC,MAAM,EAAE,QAAQ,GAAG,CAAC,MAAM,OAAO,GAAG,EAAE;oBACtC,GAAG,EAAE,wCAAwC,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE;iBACjE,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACvE,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACxC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,2BAA2B;YAClC,MAAM,EAAE,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,GAAG,EAAE;YAC5C,GAAG,EAAE,wCAAwC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,OAAO,EAAE;SAC5E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAA2B;IAC9D,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO;YACL,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,4CAA4C;SACrD,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,yBAAyB;gBAChC,MAAM,EAAE,0DAA0D;gBAClE,GAAG,EAAE,yFAAyF;aAC/F,CAAC;QACJ,CAAC;QACD,OAAO;YACL,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,yBAAyB;YAChC,MAAM,EAAE,sBAAsB,MAAM,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,UAAU;SACtE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,yBAAyB;QAChC,MAAM,EAAE,mBAAmB,MAAM,CAAC,WAAW,GAAG;KACjD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAyB,EACzB,SAA6B,EAC7B,SAA4B,QAAQ;IAEpC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC;gBACN,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,kBAAkB;gBACzB,MAAM,EAAE,oDAAoD;gBAC5D,GAAG,EAAE,qCAAqC;aAC3C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC;YAC7B,KAAK;YACL,SAAS;YACT,MAAM,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM;YACjE,MAAM,EAAE,YAAY;SACrB,CAAC,CAAC;QAEH,uBAAuB;QACvB,IAAI,CAAC;YACH,MAAM,KAAK,GAAQ,MAAM,MAAM,CAAC,OAAO,CAAC;gBACtC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,2BAA2B;gBAChC,MAAM,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;aAC1E,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,wDAAwD;gBACtG,KAAK,EAAE,4BAA4B;gBACnC,MAAM,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,KAAK,CAAC,GAAG,EAAE;gBACrF,GAAG,EAAE,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,6CAA6C,CAAC,CAAC,CAAC,SAAS;aAC1G,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,4BAA4B;gBACnC,MAAM,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;gBACtC,GAAG,EAAE,6CAA6C;aACnD,CAAC,CAAC;QACL,CAAC;QAED,4BAA4B;QAC5B,IAAI,CAAC;YACH,MAAM,UAAU,GAAQ,MAAM,MAAM,CAAC,OAAO,CAAC;gBAC3C,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,6BAA6B;gBAClC,MAAM,EAAE,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE;aAClD,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK;gBACtD,KAAK,EAAE,mCAAmC;gBAC1C,MAAM,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,UAAU,CAAC,GAAG,EAAE;gBACpG,GAAG,EAAE,UAAU,CAAC,IAAI,KAAK,CAAC,IAAI,UAAU,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,SAAS;aACtH,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,mCAAmC;gBAC1C,MAAM,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;gBACtC,GAAG,EAAE,+CAA+C;aACrD,CAAC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAQ,MAAM,MAAM,CAAC,OAAO,CAAC;gBACvC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,kCAAkC;gBACvC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;aACzB,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;gBAC9C,KAAK,EAAE,yCAAyC;gBAChD,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE;gBACxF,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,SAAS;aACnH,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,yCAAyC;gBAChD,MAAM,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;gBACtC,GAAG,EAAE,oDAAoD;aAC1D,CAAC,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,OAAO,GAAQ,MAAM,MAAM,CAAC,OAAO,CAAC;gBACxC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,0BAA0B;gBAC/B,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;aACzB,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK;gBAChD,KAAK,EAAE,6BAA6B;gBACpC,MAAM,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,OAAO,CAAC,GAAG,EAAE;gBAC3F,GAAG,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,4CAA4C,CAAC,CAAC,CAAC,SAAS;aAC7G,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,6BAA6B;gBACpC,MAAM,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;gBACtC,GAAG,EAAE,4CAA4C;aAClD,CAAC,CAAC;QACL,CAAC;QAED,6BAA6B;QAC7B,IAAI,CAAC;YACH,MAAM,WAAW,GAAQ,MAAM,MAAM,CAAC,OAAO,CAAC;gBAC5C,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,kCAAkC;gBACvC,MAAM,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE;aACzB,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK;gBACxD,KAAK,EAAE,yCAAyC;gBAChD,MAAM,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,WAAW,CAAC,GAAG,EAAE;gBACvG,GAAG,EAAE,WAAW,CAAC,IAAI,KAAK,CAAC,IAAI,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,oDAAoD,CAAC,CAAC,CAAC,SAAS;aAC7H,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,yCAAyC;gBAChD,MAAM,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;gBACtC,GAAG,EAAE,oDAAoD;aAC1D,CAAC,CAAC;QACL,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC;YACH,MAAM,MAAM,GAAQ,MAAM,MAAM,CAAC,OAAO,CAAC;gBACvC,MAAM,EAAE,KAAK;gBACb,GAAG,EAAE,wBAAwB;gBAC7B,MAAM,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE;aAC9B,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK;gBACvE,KAAK,EAAE,gCAAgC;gBACvC,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,GAAG,EAAE;gBACjH,GAAG,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,gDAAgD,CAAC,CAAC,CAAC,SAAS;aACxI,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE,gCAAgC;gBACvC,MAAM,EAAE,iBAAiB,GAAG,CAAC,OAAO,EAAE;gBACtC,GAAG,EAAE,gDAAgD;aACtD,CAAC,CAAC;QACL,CAAC;IAEH,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,kBAAkB;YACzB,MAAM,EAAE,gCAAgC,GAAG,CAAC,OAAO,EAAE;YACrD,GAAG,EAAE,kCAAkC;SACxC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,MAA2B,EAC3B,OAAoD,EAAE;IAEtD,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,OAAO,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;IAEzD,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5D,MAAM,UAAU,GAAG,MAAM,sBAAsB,CAC7C,MAAM,CAAC,KAAK,EACZ,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EACnE,MAAM,CAAC,MAAM,CACd,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3C,6CAA6C;QAC7C,IAAI,UAAU,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,iBAAiB,GAAG,MAAM,gBAAgB,CAC9C,MAAM,CAAC,KAAK,EACZ,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EACnE,MAAM,CAAC,MAAM,CACd,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/dist/setup/wizard.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ export declare class SetupWizard {
|
|
|
3
3
|
private configManager;
|
|
4
4
|
constructor(configPath?: string);
|
|
5
5
|
run(): Promise<FeishuConfig>;
|
|
6
|
-
private
|
|
6
|
+
private runScanSetup;
|
|
7
7
|
private runManualSetup;
|
|
8
8
|
/** Shared preflight check — confirms the app is published, secret is right, bot ability is on. */
|
|
9
9
|
private verifyFeishuCredentials;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/setup/wizard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/setup/wizard.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,qBAAa,WAAW;IACtB,OAAO,CAAC,aAAa,CAAgB;gBAEzB,UAAU,CAAC,EAAE,MAAM;IAIzB,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC;YA+DpB,YAAY;YA4FZ,cAAc;IAsF5B,kGAAkG;YACpF,uBAAuB;CAWtC"}
|
package/dist/setup/wizard.js
CHANGED
|
@@ -2,6 +2,7 @@ import inquirer from 'inquirer';
|
|
|
2
2
|
import { ConfigManager } from '../core/config.js';
|
|
3
3
|
import { createLogger } from '../core/logger.js';
|
|
4
4
|
import * as preflight from './preflight.js';
|
|
5
|
+
import { requestAppRegistration, displayQRCode, pollAppRegistration } from './device-flow.js';
|
|
5
6
|
const log = createLogger('SetupWizard');
|
|
6
7
|
export class SetupWizard {
|
|
7
8
|
configManager;
|
|
@@ -10,6 +11,16 @@ export class SetupWizard {
|
|
|
10
11
|
}
|
|
11
12
|
async run() {
|
|
12
13
|
console.log('🎯 OpenCode 飞书插件配置向导\n');
|
|
14
|
+
console.log('💡 本插件功能:');
|
|
15
|
+
console.log(' • 支持私聊和群聊(需@机器人)');
|
|
16
|
+
console.log(' • 支持文本、图片、文件、语音、视频消息');
|
|
17
|
+
console.log(' • AI 回复实时流式显示');
|
|
18
|
+
console.log(' • 消息去重和用户名显示');
|
|
19
|
+
console.log(' • 飞书文档:创建、读取、编辑、搜索、分享');
|
|
20
|
+
console.log(' • 日历日程:查看、创建、管理日程');
|
|
21
|
+
console.log(' • 任务管理:创建、分配、跟踪任务');
|
|
22
|
+
console.log(' • 审批流程:查询、批准、拒绝审批');
|
|
23
|
+
console.log(' • 多配置管理:支持多个飞书应用配置\n');
|
|
13
24
|
// If a config already exists, run preflight and let the user skip reconfiguring
|
|
14
25
|
// when everything is already green.
|
|
15
26
|
if (this.configManager.exists()) {
|
|
@@ -39,30 +50,13 @@ export class SetupWizard {
|
|
|
39
50
|
}
|
|
40
51
|
}
|
|
41
52
|
}
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
type: 'list',
|
|
45
|
-
name: 'setupMode',
|
|
46
|
-
message: '请选择配置方式:',
|
|
47
|
-
choices: [
|
|
48
|
-
{
|
|
49
|
-
name: '🔥 快速配置(推荐)',
|
|
50
|
-
value: 'quick',
|
|
51
|
-
description: '使用飞书扫码快速配置',
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
name: '📝 手动配置',
|
|
55
|
-
value: 'manual',
|
|
56
|
-
description: '输入已有的 App ID 和 App Secret',
|
|
57
|
-
},
|
|
58
|
-
],
|
|
59
|
-
},
|
|
60
|
-
]);
|
|
53
|
+
// Default to scan mode for easiest setup
|
|
61
54
|
let config;
|
|
62
|
-
|
|
63
|
-
config = await this.
|
|
55
|
+
try {
|
|
56
|
+
config = await this.runScanSetup();
|
|
64
57
|
}
|
|
65
|
-
|
|
58
|
+
catch (err) {
|
|
59
|
+
console.log('\n⚠️ 扫码创建应用失败或取消,切换到手动配置模式...\n');
|
|
66
60
|
config = await this.runManualSetup();
|
|
67
61
|
}
|
|
68
62
|
// Save configuration
|
|
@@ -73,108 +67,84 @@ export class SetupWizard {
|
|
|
73
67
|
console.log(' opencode-feishu start\n');
|
|
74
68
|
return config;
|
|
75
69
|
}
|
|
76
|
-
async
|
|
77
|
-
console.log('\n
|
|
78
|
-
console.log('
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
70
|
+
async runScanSetup() {
|
|
71
|
+
console.log('\n📱 扫码创建应用模式\n');
|
|
72
|
+
console.log('这将通过飞书扫码自动创建应用并获取凭证。\n');
|
|
73
|
+
try {
|
|
74
|
+
console.log('🔄 正在请求设备授权...');
|
|
75
|
+
const authResp = await requestAppRegistration();
|
|
76
|
+
await displayQRCode(authResp.verificationUriComplete);
|
|
77
|
+
console.log('⏳ 等待扫码确认(有效期 ' + authResp.expiresIn + ' 秒)...');
|
|
78
|
+
const result = await pollAppRegistration(authResp.deviceCode, authResp.interval, authResp.expiresIn);
|
|
79
|
+
console.log('\n✅ 应用创建成功!');
|
|
80
|
+
console.log(` App ID: ${result.clientID}`);
|
|
81
|
+
console.log(` App Secret: ${result.clientSecret.substring(0, 10)}...`);
|
|
82
|
+
if (result.userInfo) {
|
|
83
|
+
console.log(` 租户: ${result.userInfo.tenantBrand}`);
|
|
84
|
+
}
|
|
85
|
+
// Configure remaining options
|
|
86
|
+
const { opencodeUrl, streaming, requireMention } = await inquirer.prompt([
|
|
87
|
+
{
|
|
88
|
+
type: 'input',
|
|
89
|
+
name: 'opencodeUrl',
|
|
90
|
+
message: 'OpenCode 服务器地址 (默认本地,需先运行 opencode serve --port 19876):',
|
|
91
|
+
default: 'http://localhost:19876',
|
|
92
|
+
validate: (input) => {
|
|
93
|
+
try {
|
|
94
|
+
new URL(input);
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return '请输入有效的 URL';
|
|
99
|
+
}
|
|
100
|
+
},
|
|
97
101
|
},
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
mask: '*',
|
|
104
|
-
validate: (input) => input.length >= 10 || 'App Secret 格式不正确',
|
|
105
|
-
},
|
|
106
|
-
]);
|
|
107
|
-
console.log('\n📋 步骤 2: 配置应用能力');
|
|
108
|
-
console.log(' 1. 进入"应用能力" → "机器人"');
|
|
109
|
-
console.log(' 2. 开启机器人能力');
|
|
110
|
-
console.log(' 3. 进入"权限管理",添加以下权限:');
|
|
111
|
-
console.log(' • im:message');
|
|
112
|
-
console.log(' • im:message.p2p_msg:readonly');
|
|
113
|
-
console.log(' • im:message.group_at_msg:readonly');
|
|
114
|
-
console.log(' • im:message:send_as_bot');
|
|
115
|
-
console.log(' • im:resource');
|
|
116
|
-
console.log(' • contact:user.base:readonly');
|
|
117
|
-
console.log(' 4. 进入"事件与回调" → "添加事件"');
|
|
118
|
-
console.log(' • 选择"使用长连接接收事件"');
|
|
119
|
-
console.log(' • 添加事件: im.message.receive_v1');
|
|
120
|
-
console.log(' 5. 进入"版本管理与发布",创建版本并发布\n');
|
|
121
|
-
await inquirer.prompt([
|
|
122
|
-
{
|
|
123
|
-
type: 'input',
|
|
124
|
-
name: 'confirm',
|
|
125
|
-
message: '完成上述步骤后按 Enter 继续...',
|
|
126
|
-
},
|
|
127
|
-
]);
|
|
128
|
-
console.log('\n🧪 验证凭证...');
|
|
129
|
-
const isValid = await this.verifyFeishuCredentials(appId, appSecret, 'feishu');
|
|
130
|
-
if (!isValid) {
|
|
131
|
-
console.log('\n❌ 验证失败:请检查 App ID / App Secret 是否正确、应用是否已发布、权限是否开通。');
|
|
132
|
-
throw new Error('Feishu credentials check failed');
|
|
133
|
-
}
|
|
134
|
-
console.log('✅ 验证通过!\n');
|
|
135
|
-
// Configure OpenCode URL
|
|
136
|
-
const { opencodeUrl } = await inquirer.prompt([
|
|
137
|
-
{
|
|
138
|
-
type: 'input',
|
|
139
|
-
name: 'opencodeUrl',
|
|
140
|
-
message: 'OpenCode 服务器地址:',
|
|
141
|
-
default: 'http://localhost:19876',
|
|
142
|
-
validate: (input) => {
|
|
143
|
-
try {
|
|
144
|
-
new URL(input);
|
|
145
|
-
return true;
|
|
146
|
-
}
|
|
147
|
-
catch {
|
|
148
|
-
return '请输入有效的 URL';
|
|
149
|
-
}
|
|
102
|
+
{
|
|
103
|
+
type: 'confirm',
|
|
104
|
+
name: 'streaming',
|
|
105
|
+
message: '启用流式输出?',
|
|
106
|
+
default: true,
|
|
150
107
|
},
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
108
|
+
{
|
|
109
|
+
type: 'confirm',
|
|
110
|
+
name: 'requireMention',
|
|
111
|
+
message: '群聊中需要 @机器人才回复?',
|
|
112
|
+
default: true,
|
|
113
|
+
},
|
|
114
|
+
]);
|
|
115
|
+
console.log('\n📋 应用已创建,请前往飞书开放平台完成后续配置:');
|
|
116
|
+
console.log(' 1. 开启「机器人」能力');
|
|
117
|
+
console.log(' 2. 添加权限:im:message, im:message:send_as_bot 等');
|
|
118
|
+
console.log(' 3. 配置事件订阅:使用长连接,添加 im.message.receive_v1');
|
|
119
|
+
console.log(' 4. 发布应用\n');
|
|
120
|
+
await inquirer.prompt([
|
|
121
|
+
{
|
|
122
|
+
type: 'input',
|
|
123
|
+
name: 'confirm',
|
|
124
|
+
message: '完成上述步骤后按 Enter 继续...',
|
|
125
|
+
},
|
|
126
|
+
]);
|
|
127
|
+
return {
|
|
128
|
+
appId: result.clientID,
|
|
129
|
+
appSecret: result.clientSecret,
|
|
130
|
+
domain: result.userInfo?.tenantBrand === 'lark' ? 'lark' : 'feishu',
|
|
131
|
+
opencodeUrl,
|
|
132
|
+
streaming,
|
|
133
|
+
requireMention,
|
|
134
|
+
groupPolicy: 'allowlist',
|
|
135
|
+
allowlist: [],
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
catch (err) {
|
|
139
|
+
log.error({ err }, 'Scan setup failed');
|
|
140
|
+
console.error('\n❌ 扫码创建应用失败:', err instanceof Error ? err.message : String(err));
|
|
141
|
+
console.log('\n💡 你可以尝试手动配置:');
|
|
142
|
+
console.log(' 1. 访问 https://open.feishu.cn/app');
|
|
143
|
+
console.log(' 2. 创建企业自建应用');
|
|
144
|
+
console.log(' 3. 获取 App ID 和 App Secret\n');
|
|
145
|
+
// Throw to let caller handle fallback
|
|
146
|
+
throw err;
|
|
147
|
+
}
|
|
178
148
|
}
|
|
179
149
|
async runManualSetup() {
|
|
180
150
|
console.log('\n📝 手动配置模式\n');
|
|
@@ -182,7 +152,7 @@ export class SetupWizard {
|
|
|
182
152
|
{
|
|
183
153
|
type: 'input',
|
|
184
154
|
name: 'appId',
|
|
185
|
-
message: '请输入飞书 App ID (cli_xxx):',
|
|
155
|
+
message: '请输入飞书 App ID (格式: cli_xxx,在「凭证与基础信息」页面获取):',
|
|
186
156
|
validate: (input) => {
|
|
187
157
|
if (!input.startsWith('cli_')) {
|
|
188
158
|
return 'App ID 应以 cli_ 开头';
|
|
@@ -193,7 +163,7 @@ export class SetupWizard {
|
|
|
193
163
|
{
|
|
194
164
|
type: 'password',
|
|
195
165
|
name: 'appSecret',
|
|
196
|
-
message: '请输入飞书 App Secret:',
|
|
166
|
+
message: '请输入飞书 App Secret (在同一页面的「App Secret」字段,点击「查看」获取):',
|
|
197
167
|
mask: '*',
|
|
198
168
|
validate: (input) => input.length >= 10 || 'App Secret 格式不正确',
|
|
199
169
|
},
|
|
@@ -210,7 +180,7 @@ export class SetupWizard {
|
|
|
210
180
|
{
|
|
211
181
|
type: 'input',
|
|
212
182
|
name: 'opencodeUrl',
|
|
213
|
-
message: 'OpenCode
|
|
183
|
+
message: 'OpenCode 服务器地址 (默认本地,需先运行 opencode serve --port 19876):',
|
|
214
184
|
default: 'http://localhost:19876',
|
|
215
185
|
validate: (input) => {
|
|
216
186
|
try {
|
package/dist/setup/wizard.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/setup/wizard.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/setup/wizard.ts"],"names":[],"mappings":"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"}
|
package/dist/standalone.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":"AAaA,wBAAsB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"standalone.d.ts","sourceRoot":"","sources":["../src/standalone.ts"],"names":[],"mappings":"AAaA,wBAAsB,eAAe,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA+IxE"}
|
package/dist/standalone.js
CHANGED
|
@@ -10,6 +10,16 @@ import { startStatusWriter } from './core/daemon.js';
|
|
|
10
10
|
const log = createLogger('standalone');
|
|
11
11
|
export async function startStandalone(configPath) {
|
|
12
12
|
console.log('🚀 Starting OpenCode Feishu Plugin (Standalone Mode)\n');
|
|
13
|
+
console.log('💡 功能特性:');
|
|
14
|
+
console.log(' • 支持私聊和群聊(需@机器人)');
|
|
15
|
+
console.log(' • 支持文本、图片、文件、语音、视频消息');
|
|
16
|
+
console.log(' • AI 回复实时流式显示');
|
|
17
|
+
console.log(' • 消息去重和用户名显示');
|
|
18
|
+
console.log(' • 飞书文档:创建、读取、编辑、搜索、分享');
|
|
19
|
+
console.log(' • 日历日程:查看、创建、管理日程');
|
|
20
|
+
console.log(' • 任务管理:创建、分配、跟踪任务');
|
|
21
|
+
console.log(' • 审批流程:查询、批准、拒绝审批');
|
|
22
|
+
console.log(' • 多配置管理:支持多个飞书应用配置\n');
|
|
13
23
|
// 1. Load configuration
|
|
14
24
|
const configManager = new ConfigManager(configPath);
|
|
15
25
|
const config = configManager.load();
|
|
@@ -34,8 +44,13 @@ export async function startStandalone(configPath) {
|
|
|
34
44
|
}
|
|
35
45
|
catch (err) {
|
|
36
46
|
log.error({ err, opencodeUrl: config.opencodeUrl }, 'Failed to connect to OpenCode');
|
|
37
|
-
|
|
38
|
-
console.error(
|
|
47
|
+
const port = new URL(config.opencodeUrl).port || '19876';
|
|
48
|
+
console.error('\n❌ Failed to connect to OpenCode server');
|
|
49
|
+
console.error(` URL: ${config.opencodeUrl}`);
|
|
50
|
+
console.error('\n💡 Please start OpenCode server first:');
|
|
51
|
+
console.error(` opencode serve --port ${port}`);
|
|
52
|
+
console.error('\nOr if you are using a different port, update the config:');
|
|
53
|
+
console.error(` opencode-feishu setup\n`);
|
|
39
54
|
process.exit(1);
|
|
40
55
|
}
|
|
41
56
|
// 3. Initialize Feishu API
|