feishu-docs-cli 0.1.0-beta.8 → 1.0.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 (86) hide show
  1. package/README.md +70 -13
  2. package/README.zh.md +53 -13
  3. package/dist/auth.js +31 -17
  4. package/dist/auth.js.map +1 -1
  5. package/dist/cli.js +16 -4
  6. package/dist/cli.js.map +1 -1
  7. package/dist/client.d.ts +4 -2
  8. package/dist/client.js +177 -61
  9. package/dist/client.js.map +1 -1
  10. package/dist/commands/authorize.d.ts +3 -0
  11. package/dist/commands/authorize.js +16 -34
  12. package/dist/commands/authorize.js.map +1 -1
  13. package/dist/commands/cp.d.ts +9 -0
  14. package/dist/commands/cp.js +70 -0
  15. package/dist/commands/cp.js.map +1 -0
  16. package/dist/commands/create.js +21 -7
  17. package/dist/commands/create.js.map +1 -1
  18. package/dist/commands/delete.js +53 -54
  19. package/dist/commands/delete.js.map +1 -1
  20. package/dist/commands/login.js +6 -2
  21. package/dist/commands/login.js.map +1 -1
  22. package/dist/commands/ls.js +38 -38
  23. package/dist/commands/ls.js.map +1 -1
  24. package/dist/commands/mkdir.d.ts +6 -0
  25. package/dist/commands/mkdir.js +49 -0
  26. package/dist/commands/mkdir.js.map +1 -0
  27. package/dist/commands/mv.d.ts +9 -0
  28. package/dist/commands/mv.js +72 -0
  29. package/dist/commands/mv.js.map +1 -0
  30. package/dist/commands/read.d.ts +1 -1
  31. package/dist/commands/read.js +17 -354
  32. package/dist/commands/read.js.map +1 -1
  33. package/dist/commands/search.js +57 -55
  34. package/dist/commands/search.js.map +1 -1
  35. package/dist/commands/share.d.ts +1 -1
  36. package/dist/commands/share.js +164 -91
  37. package/dist/commands/share.js.map +1 -1
  38. package/dist/commands/update.js +43 -60
  39. package/dist/commands/update.js.map +1 -1
  40. package/dist/commands/wiki.js +8 -20
  41. package/dist/commands/wiki.js.map +1 -1
  42. package/dist/parser/block-types.d.ts +0 -1
  43. package/dist/parser/block-types.js +0 -22
  44. package/dist/parser/block-types.js.map +1 -1
  45. package/dist/parser/blocks-to-md.d.ts +10 -18
  46. package/dist/parser/blocks-to-md.js +341 -450
  47. package/dist/parser/blocks-to-md.js.map +1 -1
  48. package/dist/scopes.d.ts +5 -47
  49. package/dist/scopes.js +9 -54
  50. package/dist/scopes.js.map +1 -1
  51. package/dist/services/block-writer.d.ts +3 -2
  52. package/dist/services/block-writer.js +29 -13
  53. package/dist/services/block-writer.js.map +1 -1
  54. package/dist/services/doc-blocks.d.ts +1 -1
  55. package/dist/services/doc-blocks.js +1 -1
  56. package/dist/services/doc-blocks.js.map +1 -1
  57. package/dist/services/doc-enrichment.d.ts +64 -0
  58. package/dist/services/doc-enrichment.js +397 -0
  59. package/dist/services/doc-enrichment.js.map +1 -0
  60. package/dist/services/image-download.d.ts +31 -0
  61. package/dist/services/image-download.js +127 -0
  62. package/dist/services/image-download.js.map +1 -0
  63. package/dist/services/markdown-convert.d.ts +20 -0
  64. package/dist/services/markdown-convert.js +55 -1
  65. package/dist/services/markdown-convert.js.map +1 -1
  66. package/dist/services/wiki-nodes.d.ts +1 -1
  67. package/dist/services/wiki-nodes.js +2 -3
  68. package/dist/services/wiki-nodes.js.map +1 -1
  69. package/dist/types/api-responses.d.ts +34 -0
  70. package/dist/types/api-responses.js +8 -0
  71. package/dist/types/api-responses.js.map +1 -0
  72. package/dist/types/index.d.ts +9 -17
  73. package/dist/utils/concurrency.d.ts +12 -0
  74. package/dist/utils/concurrency.js +37 -0
  75. package/dist/utils/concurrency.js.map +1 -0
  76. package/dist/utils/errors.d.ts +3 -1
  77. package/dist/utils/errors.js +11 -7
  78. package/dist/utils/errors.js.map +1 -1
  79. package/dist/utils/retry.d.ts +49 -0
  80. package/dist/utils/retry.js +70 -0
  81. package/dist/utils/retry.js.map +1 -0
  82. package/dist/utils/scope-prompt.d.ts +23 -18
  83. package/dist/utils/scope-prompt.js +62 -51
  84. package/dist/utils/scope-prompt.js.map +1 -1
  85. package/package.json +3 -1
  86. package/skills/feishu-docs/SKILL.md +37 -2
@@ -1,18 +1,13 @@
1
1
  /**
2
2
  * read command: Read a Feishu document and output as Markdown.
3
3
  */
4
- import { createClient, fetchWithAuth, fetchBinaryWithAuth, getTenantToken, } from "../client.js";
5
- import { writeFile, mkdir } from "node:fs/promises";
6
- import { tmpdir } from "node:os";
7
- import { join } from "node:path";
4
+ import { createClient, fetchWithAuth } from "../client.js";
8
5
  import { blocksToMarkdown } from "../parser/blocks-to-md.js";
9
- import { BlockType } from "../parser/block-types.js";
10
6
  import { CliError } from "../utils/errors.js";
11
- import { isPermissionError, promptScopeAuth } from "../utils/scope-prompt.js";
12
- import { FEATURE_SCOPE_GROUPS } from "../scopes.js";
13
7
  import { fetchAllBlocks } from "../services/doc-blocks.js";
14
8
  import { getDocumentInfo } from "../services/block-writer.js";
15
9
  import { resolveDocument } from "../utils/document-resolver.js";
10
+ import { enrichBlocks } from "../services/doc-enrichment.js";
16
11
  /**
17
12
  * Fetch raw text content of a document.
18
13
  */
@@ -20,242 +15,6 @@ async function fetchRawContent(authInfo, documentId) {
20
15
  const res = await fetchWithAuth(authInfo, `/open-apis/docx/v1/documents/${encodeURIComponent(documentId)}/raw_content`);
21
16
  return res?.data?.content || "";
22
17
  }
23
- /**
24
- * Batch get temporary download URLs for file tokens (images, files).
25
- */
26
- async function batchGetTmpUrls(authInfo, fileTokens) {
27
- if (fileTokens.length === 0)
28
- return new Map();
29
- const res = await fetchWithAuth(authInfo, "/open-apis/drive/v1/medias/batch_get_tmp_download_url", { params: { file_tokens: fileTokens } });
30
- const urlMap = new Map();
31
- const data = res?.data;
32
- const items = (data?.tmp_download_urls || []);
33
- for (const item of items) {
34
- urlMap.set(item.file_token, item.tmp_download_url);
35
- }
36
- return urlMap;
37
- }
38
- /**
39
- * Extract file tokens from blocks (images, files).
40
- */
41
- function extractFileTokens(blocks) {
42
- const tokens = [];
43
- for (const block of blocks) {
44
- if (block.block_type === BlockType.IMAGE && block.image?.token) {
45
- tokens.push(block.image.token);
46
- }
47
- if (block.block_type === BlockType.FILE && block.file?.token) {
48
- tokens.push(block.file.token);
49
- }
50
- }
51
- return tokens;
52
- }
53
- /**
54
- * Extract bitable tokens from blocks.
55
- */
56
- function extractBitableTokens(blocks) {
57
- const tokens = [];
58
- for (const block of blocks) {
59
- if (block.block_type === BlockType.BITABLE && block.bitable?.token) {
60
- tokens.push(block.bitable.token);
61
- }
62
- }
63
- return tokens;
64
- }
65
- /**
66
- * Extract sheet tokens from blocks.
67
- */
68
- function extractSheetTokens(blocks) {
69
- const tokens = [];
70
- for (const block of blocks) {
71
- if (block.block_type === BlockType.SHEET && block.sheet?.token) {
72
- tokens.push(block.sheet.token);
73
- }
74
- }
75
- return tokens;
76
- }
77
- /**
78
- * Extract board tokens from blocks.
79
- */
80
- function extractBoardTokens(blocks) {
81
- const tokens = [];
82
- for (const block of blocks) {
83
- if (block.block_type === BlockType.BOARD &&
84
- block.board?.token) {
85
- tokens.push(block.board.token);
86
- }
87
- }
88
- return tokens;
89
- }
90
- /**
91
- * Fetch bitable fields and records, return as renderable data.
92
- */
93
- async function fetchBitableData(authInfo, fullToken) {
94
- const idx = fullToken.lastIndexOf("_tbl");
95
- if (idx === -1) {
96
- process.stderr.write(`feishu-docs: warning: 多维表格 token 格式无法解析: ${fullToken}\n`);
97
- return null;
98
- }
99
- const appToken = fullToken.slice(0, idx);
100
- const tableId = fullToken.slice(idx + 1);
101
- const [fieldsRes, recordsRes] = await Promise.all([
102
- fetchWithAuth(authInfo, `/open-apis/bitable/v1/apps/${encodeURIComponent(appToken)}/tables/${encodeURIComponent(tableId)}/fields`, {}),
103
- fetchWithAuth(authInfo, `/open-apis/bitable/v1/apps/${encodeURIComponent(appToken)}/tables/${encodeURIComponent(tableId)}/records`, { params: { page_size: 100 } }),
104
- ]);
105
- const fieldsData = fieldsRes.data;
106
- const recordsData = recordsRes.data;
107
- const fields = (fieldsData?.items || []).map((f) => f.field_name);
108
- const records = (recordsData?.items || []).map((r) => {
109
- return fields.map((name) => {
110
- const val = r.fields?.[name];
111
- if (val === undefined || val === null)
112
- return "";
113
- if (typeof val === "object")
114
- return JSON.stringify(val);
115
- return String(val);
116
- });
117
- });
118
- return { fields, records };
119
- }
120
- /**
121
- * Fetch sheet metadata and cell values, return as renderable data.
122
- */
123
- async function fetchSheetData(authInfo, sheetToken) {
124
- // Sheet tokens embedded in docs have format: {spreadsheetToken}_{sheetId}
125
- // The sheets API needs just the spreadsheet token; sheetId selects the tab.
126
- const underscoreIdx = sheetToken.lastIndexOf("_");
127
- const spreadsheetToken = underscoreIdx > 0 ? sheetToken.slice(0, underscoreIdx) : sheetToken;
128
- const embeddedSheetId = underscoreIdx > 0 ? sheetToken.slice(underscoreIdx + 1) : undefined;
129
- const metaRes = await fetchWithAuth(authInfo, `/open-apis/sheets/v2/spreadsheets/${encodeURIComponent(spreadsheetToken)}/metainfo`, {});
130
- const metaData = metaRes.data;
131
- const sheets = (metaData?.sheets || []);
132
- if (sheets.length === 0)
133
- return null;
134
- // Prefer the embedded sheet id; fall back to first sheet
135
- // Note: metainfo API returns camelCase field names (sheetId, not sheet_id)
136
- const targetSheet = embeddedSheetId
137
- ? sheets.find((s) => s.sheetId === embeddedSheetId) || sheets[0]
138
- : sheets[0];
139
- const sheetId = targetSheet.sheetId;
140
- // Suppress title when it equals sheetId (default meaningless title)
141
- const rawTitle = targetSheet.title || "";
142
- const title = rawTitle === sheetId ? "" : rawTitle;
143
- const valuesRes = await fetchWithAuth(authInfo, `/open-apis/sheets/v2/spreadsheets/${encodeURIComponent(spreadsheetToken)}/values/${encodeURIComponent(sheetId)}`, { params: { valueRenderOption: "ToString" } });
144
- const valuesData = valuesRes.data;
145
- const rows = (valuesData?.valueRange?.values ||
146
- []);
147
- if (rows.length === 0)
148
- return null;
149
- const maxRows = 101; // first row = header + 100 data rows
150
- const limitedRows = rows.length > maxRows ? rows.slice(0, maxRows) : rows;
151
- const fields = limitedRows[0].map((cell) => String(cell ?? ""));
152
- const records = limitedRows
153
- .slice(1)
154
- .map((row) => fields.map((_, i) => String(row[i] ?? "")));
155
- return { fields, records, title, truncated: rows.length > maxRows };
156
- }
157
- /**
158
- * Download board/whiteboard as image and save to temp file.
159
- * Returns the local file path, or null on failure.
160
- */
161
- async function fetchBoardImage(authInfo, boardToken) {
162
- const buf = await fetchBinaryWithAuth(authInfo, `/open-apis/board/v1/whiteboards/${encodeURIComponent(boardToken)}/download_as_image`);
163
- if (buf.byteLength === 0)
164
- return null;
165
- const dir = join(tmpdir(), "feishu-docs");
166
- await mkdir(dir, { recursive: true });
167
- const filePath = join(dir, `board-${boardToken}.png`);
168
- await writeFile(filePath, Buffer.from(buf));
169
- return filePath;
170
- }
171
- /**
172
- * Extract unique mention_user user_ids from blocks.
173
- */
174
- function extractMentionUserIds(blocks) {
175
- const ids = new Set();
176
- for (const block of blocks) {
177
- const elementSources = [
178
- block.text?.elements,
179
- block.heading1?.elements,
180
- block.heading2?.elements,
181
- block.heading3?.elements,
182
- block.heading4?.elements,
183
- block.heading5?.elements,
184
- block.heading6?.elements,
185
- block.heading7?.elements,
186
- block.heading8?.elements,
187
- block.heading9?.elements,
188
- block.bullet?.elements,
189
- block.ordered?.elements,
190
- block.todo?.elements,
191
- block.quote?.elements,
192
- ];
193
- for (const elements of elementSources) {
194
- if (!elements)
195
- continue;
196
- for (const el of elements) {
197
- if (el.mention_user?.user_id) {
198
- ids.add(el.mention_user.user_id);
199
- }
200
- }
201
- }
202
- }
203
- return [...ids];
204
- }
205
- /**
206
- * Batch resolve user IDs to display names.
207
- * Uses tenant_access_token + contact:user.base:readonly to get name fields.
208
- */
209
- async function resolveUserNames(authInfo, userIds) {
210
- const nameMap = new Map();
211
- // Use tenant token for contact API (contact:user.base:readonly is app-identity permission)
212
- let tenantToken;
213
- try {
214
- tenantToken = await getTenantToken(authInfo);
215
- }
216
- catch {
217
- // Fallback: try authen API with user token for current user
218
- try {
219
- const self = await fetchWithAuth(authInfo, "/open-apis/authen/v1/user_info", {});
220
- const selfData = self?.data;
221
- if (selfData?.open_id && selfData?.name) {
222
- nameMap.set(selfData.open_id, selfData.name);
223
- }
224
- }
225
- catch {
226
- // no way to resolve
227
- }
228
- return nameMap;
229
- }
230
- // Batch query users (up to 50 per request)
231
- const BATCH = 50;
232
- for (let i = 0; i < userIds.length; i += BATCH) {
233
- const batch = userIds.slice(i, i + BATCH);
234
- try {
235
- const params = {
236
- user_id_type: "open_id",
237
- user_ids: batch,
238
- };
239
- const tenantAuthInfo = {
240
- ...authInfo,
241
- mode: "tenant",
242
- tenantToken,
243
- };
244
- const res = await fetchWithAuth(tenantAuthInfo, "/open-apis/contact/v3/users/batch", { params });
245
- const items = (res?.data?.user_list ||
246
- []);
247
- for (const user of items) {
248
- if (user.open_id && user.name) {
249
- nameMap.set(user.open_id, user.name);
250
- }
251
- }
252
- }
253
- catch {
254
- // skip batch errors
255
- }
256
- }
257
- return nameMap;
258
- }
259
18
  export const meta = {
260
19
  options: {
261
20
  raw: { type: "boolean", default: false },
@@ -272,9 +31,9 @@ export async function read(args, globalOpts) {
272
31
  }
273
32
  const { authInfo } = await createClient(globalOpts);
274
33
  const doc = await resolveDocument(authInfo, input);
275
- let documentId = doc.objToken;
276
- let docType = doc.objType;
277
- let docTitle = doc.title;
34
+ const documentId = doc.objToken;
35
+ const docType = doc.objType;
36
+ const docTitle = doc.title;
278
37
  if ((doc.parsed.type === "wiki" || doc.parsed.type === "unknown") &&
279
38
  docType !== "docx" &&
280
39
  doc.title !== undefined) {
@@ -287,7 +46,7 @@ export async function read(args, globalOpts) {
287
46
  if (docType === "doc") {
288
47
  throw new CliError("INVALID_ARGS", "不支持旧版 doc 格式,请在飞书中升级为 docx");
289
48
  }
290
- // Non-docx types (sheet, bitable, board, etc.) output placeholder
49
+ // Non-docx types (sheet, bitable, board, etc.) -- output placeholder
291
50
  if (docType !== "docx") {
292
51
  process.stdout.write(`[${docType}: ${documentId}]\n`);
293
52
  return;
@@ -304,7 +63,9 @@ export async function read(args, globalOpts) {
304
63
  blocks = await fetchAllBlocks(authInfo, documentId);
305
64
  }
306
65
  catch (err) {
307
- if (isPermissionError(err)) {
66
+ if (err instanceof CliError &&
67
+ (err.errorType === "PERMISSION_DENIED" ||
68
+ err.errorType === "SCOPE_MISSING")) {
308
69
  throw new CliError("PERMISSION_DENIED", "读取文档内容权限不足。可能原因:\n" +
309
70
  " 1. 应用未在飞书开发者后台开通 docx:document 权限 → 请前往 https://open.feishu.cn/app 开通\n" +
310
71
  " 2. 文档未对当前用户/应用开放访问 → 请联系文档拥有者授权\n" +
@@ -317,112 +78,14 @@ export async function read(args, globalOpts) {
317
78
  process.stdout.write(JSON.stringify(blocks, null, 2) + "\n");
318
79
  return;
319
80
  }
320
- // Default: convert to Markdown
321
- // Batch resolve image/file URLs (needs drive:drive scope)
322
- const fileTokens = extractFileTokens(blocks);
323
- let imageUrlMap = new Map();
324
- let currentAuth = authInfo;
325
- if (fileTokens.length > 0) {
326
- try {
327
- imageUrlMap = await batchGetTmpUrls(currentAuth, fileTokens);
328
- }
329
- catch (err) {
330
- if (isPermissionError(err)) {
331
- const authorized = await promptScopeAuth([...FEATURE_SCOPE_GROUPS.drive.scopes], globalOpts);
332
- if (authorized) {
333
- const { authInfo: refreshed } = await createClient(globalOpts);
334
- currentAuth = refreshed;
335
- try {
336
- imageUrlMap = await batchGetTmpUrls(currentAuth, fileTokens);
337
- }
338
- catch {
339
- process.stderr.write("feishu-docs: warning: 获取图片/文件链接失败,链接将为空\n");
340
- }
341
- }
342
- else {
343
- process.stderr.write("feishu-docs: warning: 跳过图片/文件链接获取(权限不足),将使用占位符\n");
344
- }
345
- }
346
- else {
347
- process.stderr.write("feishu-docs: warning: 获取图片/文件链接失败,链接将为空\n");
348
- }
349
- }
350
- }
351
- // Batch resolve @mention user names
352
- let userNameMap = new Map();
353
- const mentionUserIds = extractMentionUserIds(blocks);
354
- if (mentionUserIds.length > 0) {
355
- try {
356
- userNameMap = await resolveUserNames(currentAuth, mentionUserIds);
357
- }
358
- catch {
359
- process.stderr.write("feishu-docs: warning: 解析 @用户 名称失败\n");
360
- }
361
- }
362
- // Batch resolve bitable data
363
- const bitableTokens = extractBitableTokens(blocks);
364
- const bitableDataMap = new Map();
365
- for (const token of bitableTokens) {
366
- try {
367
- const data = await fetchBitableData(currentAuth, token);
368
- if (data)
369
- bitableDataMap.set(token, data);
370
- }
371
- catch (err) {
372
- if (isPermissionError(err)) {
373
- process.stderr.write(`feishu-docs: warning: 获取多维表格数据权限不足: ${token}\n` +
374
- ' 请在飞书开发者后台开通权限后运行 feishu-docs authorize --scope "bitable:app:readonly"\n');
375
- }
376
- else {
377
- process.stderr.write(`feishu-docs: warning: 获取多维表格数据失败: ${token}\n`);
378
- }
379
- }
380
- }
381
- // Batch resolve board images
382
- const boardTokens = extractBoardTokens(blocks);
383
- const boardImageMap = new Map();
384
- for (const token of boardTokens) {
385
- try {
386
- const filePath = await fetchBoardImage(currentAuth, token);
387
- if (filePath)
388
- boardImageMap.set(token, filePath);
389
- }
390
- catch (err) {
391
- if (isPermissionError(err)) {
392
- process.stderr.write(`feishu-docs: warning: 获取画板图片权限不足: ${token}\n` +
393
- ' 请在飞书开发者后台开通权限后运行 feishu-docs authorize --scope "board:whiteboard:node:read"\n');
394
- }
395
- else {
396
- process.stderr.write(`feishu-docs: warning: 获取画板图片失败: ${token}\n`);
397
- }
398
- }
399
- }
400
- // Batch resolve sheet data
401
- const sheetTokens = extractSheetTokens(blocks);
402
- const sheetDataMap = new Map();
403
- for (const token of sheetTokens) {
404
- try {
405
- const data = await fetchSheetData(currentAuth, token);
406
- if (data)
407
- sheetDataMap.set(token, data);
408
- }
409
- catch (err) {
410
- if (isPermissionError(err)) {
411
- process.stderr.write(`feishu-docs: warning: 获取电子表格数据权限不足: ${token}\n` +
412
- ' 请在飞书开发者后台开通权限后运行 feishu-docs authorize --scope "sheets:spreadsheet:readonly"\n');
413
- }
414
- else {
415
- const msg = err instanceof Error ? err.message : String(err);
416
- process.stderr.write(`feishu-docs: warning: 获取电子表格数据失败: ${token} (${msg})\n`);
417
- }
418
- }
419
- }
81
+ // Default: convert to Markdown with enrichment
82
+ const enrichment = await enrichBlocks(authInfo, blocks, globalOpts);
420
83
  // Add metadata header if requested
421
84
  let output = "";
422
85
  if (args.withMeta) {
423
86
  let meta = {};
424
87
  try {
425
- meta = await getDocumentInfo(currentAuth, documentId);
88
+ meta = await getDocumentInfo(authInfo, documentId);
426
89
  }
427
90
  catch {
428
91
  // ignore metadata fetch errors
@@ -436,11 +99,11 @@ export async function read(args, globalOpts) {
436
99
  output += "---\n\n";
437
100
  }
438
101
  output += blocksToMarkdown(blocks, {
439
- imageUrlMap,
440
- userNameMap,
441
- bitableDataMap,
442
- boardImageMap,
443
- sheetDataMap,
102
+ imageUrlMap: enrichment.imageUrlMap,
103
+ userNameMap: enrichment.userNameMap,
104
+ bitableDataMap: enrichment.bitableDataMap,
105
+ boardImageMap: enrichment.boardImageMap,
106
+ sheetDataMap: enrichment.sheetDataMap,
444
107
  });
445
108
  process.stdout.write(output);
446
109
  }
@@ -1 +1 @@
1
- {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAShE;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,QAAkB,EAClB,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,aAAa,CAC7B,QAAQ,EACR,gCAAgC,kBAAkB,CAAC,UAAU,CAAC,cAAc,CAC7E,CAAC;IACF,OAAS,GAAG,EAAE,IAAgC,EAAE,OAAkB,IAAI,EAAE,CAAC;AAC3E,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,eAAe,CAC5B,QAAkB,EAClB,UAAoB;IAEpB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,GAAG,EAAE,CAAC;IAE9C,MAAM,GAAG,GAAG,MAAM,aAAa,CAC7B,QAAQ,EACR,uDAAuD,EACvD,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,CACxC,CAAC;IAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,IAAI,GAAG,GAAG,EAAE,IAA2C,CAAC;IAC9D,MAAM,KAAK,GAAG,CAAC,IAAI,EAAE,iBAAiB,IAAI,EAAE,CAE3C,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,MAAe;IACxC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;QACD,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC;YAC7D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,oBAAoB,CAAC,MAAe;IAC3C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,EAAE,KAAK,EAAE,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC;YAC/D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,MAAe;IACzC,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IACE,KAAK,CAAC,UAAU,KAAK,SAAS,CAAC,KAAK;YACnC,KAAK,CAAC,KAAiC,EAAE,KAAK,EAC/C,CAAC;YACD,MAAM,CAAC,IAAI,CAAE,KAAK,CAAC,KAAgC,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAcD;;GAEG;AACH,KAAK,UAAU,gBAAgB,CAC7B,QAAkB,EAClB,SAAiB;IAEjB,MAAM,GAAG,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,4CAA4C,SAAS,IAAI,CAC1D,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IAEzC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAChD,aAAa,CACX,QAAQ,EACR,8BAA8B,kBAAkB,CAAC,QAAQ,CAAC,WAAW,kBAAkB,CAAC,OAAO,CAAC,SAAS,EACzG,EAAE,CACH;QACD,aAAa,CACX,QAAQ,EACR,8BAA8B,kBAAkB,CAAC,QAAQ,CAAC,WAAW,kBAAkB,CAAC,OAAO,CAAC,UAAU,EAC1G,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE,CAC/B;KACF,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,SAAS,CAAC,IAA2C,CAAC;IACzE,MAAM,WAAW,GAAG,UAAU,CAAC,IAA2C,CAAC;IAC3E,MAAM,MAAM,GACV,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CACzB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;IAC3B,MAAM,OAAO,GACX,CAAC,WAAW,EAAE,KAAK,IAAI,EAAE,CAC1B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACV,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACzB,MAAM,GAAG,GAAI,CAAC,CAAC,MAAkC,EAAE,CAAC,IAAI,CAAC,CAAC;YAC1D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;gBAAE,OAAO,EAAE,CAAC;YACjD,IAAI,OAAO,GAAG,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACxD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,cAAc,CAC3B,QAAkB,EAClB,UAAkB;IAElB,0EAA0E;IAC1E,4EAA4E;IAC5E,MAAM,aAAa,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAClD,MAAM,gBAAgB,GACpB,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACtE,MAAM,eAAe,GACnB,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtE,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,QAAQ,EACR,qCAAqC,kBAAkB,CAAC,gBAAgB,CAAC,WAAW,EACpF,EAAE,CACH,CAAC;IACF,MAAM,QAAQ,GAAG,OAAO,CAAC,IAA2C,CAAC;IACrE,MAAM,MAAM,GAAG,CAAC,QAAQ,EAAE,MAAM,IAAI,EAAE,CAAkC,CAAC;IACzE,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,yDAAyD;IACzD,2EAA2E;IAC3E,MAAM,WAAW,GAAG,eAAe;QACjC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,eAAe,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC;QAChE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IACpC,oEAAoE;IACpE,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEnD,MAAM,SAAS,GAAG,MAAM,aAAa,CACnC,QAAQ,EACR,qCAAqC,kBAAkB,CAAC,gBAAgB,CAAC,WAAW,kBAAkB,CAAC,OAAO,CAAC,EAAE,EACjH,EAAE,MAAM,EAAE,EAAE,iBAAiB,EAAE,UAAU,EAAE,EAAE,CAC9C,CAAC;IACF,MAAM,UAAU,GAAG,SAAS,CAAC,IAA2C,CAAC;IACzE,MAAM,IAAI,GAAG,CAAE,UAAU,EAAE,UAAsC,EAAE,MAAM;QACvE,EAAE,CAAgB,CAAC;IACrB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEnC,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,qCAAqC;IAC1D,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1E,MAAM,MAAM,GAAI,WAAW,CAAC,CAAC,CAAe,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACxD,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CACnB,CAAC;IACF,MAAM,OAAO,GAAG,WAAW;SACxB,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,MAAM,CAAE,GAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;AACtE,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,eAAe,CAC5B,QAAkB,EAClB,UAAkB;IAElB,MAAM,GAAG,GAAG,MAAM,mBAAmB,CACnC,QAAQ,EACR,mCAAmC,kBAAkB,CAAC,UAAU,CAAC,oBAAoB,CACtF,CAAC;IACF,IAAI,GAAG,CAAC,UAAU,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEtC,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC;IAC1C,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,UAAU,MAAM,CAAC,CAAC;IACtD,MAAM,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,qBAAqB,CAAC,MAAe;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,cAAc,GAAG;YACrB,KAAK,CAAC,IAAI,EAAE,QAAQ;YACpB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,QAAQ,EAAE,QAAQ;YACxB,KAAK,CAAC,MAAM,EAAE,QAAQ;YACtB,KAAK,CAAC,OAAO,EAAE,QAAQ;YACvB,KAAK,CAAC,IAAI,EAAE,QAAQ;YACpB,KAAK,CAAC,KAAK,EAAE,QAAQ;SACtB,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,QAAQ;gBAAE,SAAS;YACxB,KAAK,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC;gBAC1B,IAAI,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC;oBAC7B,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAC7B,QAAkB,EAClB,OAAiB;IAEjB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAE1C,2FAA2F;IAC3F,IAAI,WAAmB,CAAC;IACxB,IAAI,CAAC;QACH,WAAW,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,4DAA4D;QAC5D,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,aAAa,CAC9B,QAAQ,EACR,gCAAgC,EAChC,EAAE,CACH,CAAC;YACF,MAAM,QAAQ,GAAG,IAAI,EAAE,IAA2C,CAAC;YACnE,IAAI,QAAQ,EAAE,OAAO,IAAI,QAAQ,EAAE,IAAI,EAAE,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAiB,EAAE,QAAQ,CAAC,IAAc,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2CAA2C;IAC3C,MAAM,KAAK,GAAG,EAAE,CAAC;IACjB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,MAAM,GAAsC;gBAChD,YAAY,EAAE,SAAS;gBACvB,QAAQ,EAAE,KAAK;aAChB,CAAC;YACF,MAAM,cAAc,GAAa;gBAC/B,GAAG,QAAQ;gBACX,IAAI,EAAE,QAAiB;gBACvB,WAAW;aACZ,CAAC;YACF,MAAM,GAAG,GAAG,MAAM,aAAa,CAC7B,cAAc,EACd,mCAAmC,EACnC,EAAE,MAAM,EAAE,CACX,CAAC;YACF,MAAM,KAAK,GAAG,CAAE,GAAG,EAAE,IAAgC,EAAE,SAAS;gBAC9D,EAAE,CAAkC,CAAC;YACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oBAAoB;QACtB,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,IAAI,GAAgB;IAC/B,OAAO,EAAE;QACP,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;QACxC,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;QAC3C,WAAW,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE;KACjD;IACD,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,IAAiB,EACjB,UAAsB;IAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,mDAAmD,CACpD,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnD,IAAI,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC9B,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;IAC1B,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC;IAEzB,IACE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC;QAC7D,OAAO,KAAK,MAAM;QAClB,GAAG,CAAC,KAAK,KAAK,SAAS,EACvB,CAAC;QACD,MAAM,GAAG,GAAG,QAAQ;YAClB,CAAC,CAAC,IAAI,OAAO,KAAK,QAAQ,KAAK,UAAU,IAAI;YAC7C,CAAC,CAAC,IAAI,OAAO,KAAK,UAAU,GAAG,CAAC;QAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,4BAA4B,CAC7B,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,UAAU,KAAK,CAAC,CAAC;QACtD,OAAO;IACT,CAAC;IAED,kCAAkC;IAClC,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC;QACrC,OAAO;IACT,CAAC;IAED,mBAAmB;IACnB,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,QAAQ,CAChB,mBAAmB,EACnB,oBAAoB;gBAClB,2EAA2E;gBAC3E,qCAAqC;gBACrC,6DAA6D,CAChE,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;IAED,iCAAiC;IACjC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7D,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,0DAA0D;IAC1D,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,IAAI,WAAW,GAAG,QAAQ,CAAC;IAC3B,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,MAAM,UAAU,GAAG,MAAM,eAAe,CACtC,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,MAAM,CAAC,EACtC,UAAU,CACX,CAAC;gBACF,IAAI,UAAU,EAAE,CAAC;oBACf,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;oBAC/D,WAAW,GAAG,SAAS,CAAC;oBACxB,IAAI,CAAC;wBACH,WAAW,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;oBAC/D,CAAC;oBAAC,MAAM,CAAC;wBACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2CAA2C,CAC5C,CAAC;oBACJ,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kDAAkD,CACnD,CAAC;gBACJ,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,2CAA2C,CAC5C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,IAAI,WAAW,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC;YACH,WAAW,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QACpE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IACtD,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACxD,IAAI,IAAI;gBAAE,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uCAAuC,KAAK,IAAI;oBAC9C,2EAA2E,CAC9E,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qCAAqC,KAAK,IAAI,CAC/C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAChD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC3D,IAAI,QAAQ;gBAAE,aAAa,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qCAAqC,KAAK,IAAI;oBAC5C,iFAAiF,CACpF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,mCAAmC,KAAK,IAAI,CAC7C,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,2BAA2B;IAC3B,MAAM,WAAW,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,IAAI,GAAG,EAAqB,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,cAAc,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YACtD,IAAI,IAAI;gBAAE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uCAAuC,KAAK,IAAI;oBAC9C,kFAAkF,CACrF,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qCAAqC,KAAK,KAAK,GAAG,KAAK,CACxD,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,IAAI,GAA4B,EAAE,CAAC;QACvC,IAAI,CAAC;YACH,IAAI,GAAG,MAAM,eAAe,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;QACD,MAAM,IAAI,OAAO,CAAC;QAClB,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,UAAU,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC;QAC3E,IAAI,IAAI,CAAC,UAAU;YAAE,MAAM,IAAI,aAAa,IAAI,CAAC,UAAU,IAAI,CAAC;QAChE,MAAM,IAAI,UAAU,UAAU,IAAI,CAAC;QACnC,MAAM,IAAI,SAAS,CAAC;IACtB,CAAC;IAED,MAAM,IAAI,gBAAgB,CAAC,MAAM,EAAE;QACjC,WAAW;QACX,WAAW;QACX,cAAc;QACd,aAAa;QACb,YAAY;KACb,CAAC,CAAC;IACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/commands/read.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,7 @@
4
4
  */
5
5
  import { createClient, fetchWithAuth } from "../client.js";
6
6
  import { CliError } from "../utils/errors.js";
7
- import { FEATURE_SCOPE_GROUPS } from "../scopes.js";
8
- import { ensureScopes } from "../utils/scope-prompt.js";
7
+ import { withScopeRecovery } from "../utils/scope-prompt.js";
9
8
  const DOC_TYPE_MAP = {
10
9
  doc: "文档",
11
10
  docx: "新文档",
@@ -29,62 +28,65 @@ export async function search(args, globalOpts) {
29
28
  if (!query) {
30
29
  throw new CliError("INVALID_ARGS", "缺少搜索关键词。用法: feishu-docs search <query> [--type <type>] [--limit <n>]");
31
30
  }
32
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
33
- if (rawAuthInfo.mode === "tenant") {
34
- throw new CliError("AUTH_REQUIRED", "search 命令需要 user 身份。tenant 模式下无搜索能力", {
35
- recovery: "运行 feishu-docs login 切换到 user 身份,或设置 FEISHU_USER_TOKEN 环境变量",
36
- });
37
- }
38
- const authInfo = await ensureScopes(rawAuthInfo, FEATURE_SCOPE_GROUPS.search.scopes, globalOpts);
39
31
  const limit = args.limit ? Number(args.limit) : 20;
40
32
  if (!Number.isInteger(limit) || limit < 1 || limit > 200) {
41
33
  throw new CliError("INVALID_ARGS", "--limit 必须是 1-200 之间的整数");
42
34
  }
43
- const docType = args.type || undefined;
44
- const results = [];
45
- let offset = 0;
46
- const pageSize = Math.min(limit, 50);
47
- while (results.length < limit) {
48
- const body = {
49
- search_key: query,
50
- count: pageSize,
51
- offset,
52
- };
53
- if (docType)
54
- body.docs_types = [docType];
55
- const res = await fetchWithAuth(authInfo, "/open-apis/suite/docs-api/search/object", { method: "POST", body });
56
- const resData = res?.data;
57
- const items = (resData?.docs_entities || []);
58
- results.push(...items);
59
- if (!resData?.has_more || items.length === 0)
60
- break;
61
- offset += items.length;
62
- }
63
- const trimmed = results.slice(0, limit);
64
- if (globalOpts.json) {
65
- process.stdout.write(JSON.stringify({
66
- success: true,
67
- query,
68
- count: trimmed.length,
69
- items: trimmed.map((item) => ({
70
- title: item.title,
71
- token: item.docs_token,
72
- obj_type: item.docs_type,
73
- owner_id: item.owner_id,
74
- })),
75
- }, null, 2) + "\n");
76
- return;
77
- }
78
- if (trimmed.length === 0) {
79
- process.stdout.write(`没有找到与 "${query}" 相关的文档\n`);
80
- return;
81
- }
82
- process.stdout.write(`搜索 "${query}" — 找到 ${trimmed.length} 条结果\n\n`);
83
- for (const item of trimmed) {
84
- const title = item.title || "(无标题)";
85
- const type = DOC_TYPE_MAP[item.docs_type] || item.docs_type || "unknown";
86
- const token = item.docs_token || "";
87
- process.stdout.write(` ${title} [${type}] ${token}\n`);
88
- }
35
+ // Search API (legacy) may return 99991679 without permission_violations.
36
+ // Provide fallback scope for interactive recovery.
37
+ return withScopeRecovery(async () => {
38
+ const { authInfo } = await createClient(globalOpts);
39
+ if (authInfo.mode === "tenant") {
40
+ throw new CliError("AUTH_REQUIRED", "search 命令需要 user 身份。tenant 模式下无搜索能力", {
41
+ recovery: "运行 feishu-docs login 切换到 user 身份,或设置 FEISHU_USER_TOKEN 环境变量",
42
+ });
43
+ }
44
+ const docType = args.type || undefined;
45
+ const results = [];
46
+ let offset = 0;
47
+ const pageSize = Math.min(limit, 50);
48
+ while (results.length < limit) {
49
+ const body = {
50
+ search_key: query,
51
+ count: pageSize,
52
+ offset,
53
+ };
54
+ if (docType)
55
+ body.docs_types = [docType];
56
+ const res = await fetchWithAuth(authInfo, "/open-apis/suite/docs-api/search/object", { method: "POST", body });
57
+ const resData = res?.data;
58
+ const items = (resData?.docs_entities || []);
59
+ results.push(...items);
60
+ if (!resData?.has_more || items.length === 0)
61
+ break;
62
+ offset += items.length;
63
+ }
64
+ const trimmed = results.slice(0, limit);
65
+ if (globalOpts.json) {
66
+ process.stdout.write(JSON.stringify({
67
+ success: true,
68
+ query,
69
+ count: trimmed.length,
70
+ items: trimmed.map((item) => ({
71
+ title: item.title,
72
+ token: item.docs_token,
73
+ obj_type: item.docs_type,
74
+ owner_id: item.owner_id,
75
+ })),
76
+ }, null, 2) + "\n");
77
+ return;
78
+ }
79
+ if (trimmed.length === 0) {
80
+ process.stdout.write(`没有找到与 "${query}" 相关的文档\n`);
81
+ return;
82
+ }
83
+ process.stdout.write(`搜索 "${query}" — 找到 ${trimmed.length} 条结果\n\n`);
84
+ for (const item of trimmed) {
85
+ const title = item.title || "(无标题)";
86
+ const type = DOC_TYPE_MAP[item.docs_type] || item.docs_type || "unknown";
87
+ const token = item.docs_token || "";
88
+ process.stdout.write(` ${title} [${type}] ${token}\n`);
89
+ }
90
+ }, globalOpts, ["drive:drive.search:readonly"]);
89
91
  }
90
92
  //# sourceMappingURL=search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
- * share command: Manage document permissions (list/add/set).
2
+ * share command: Manage document permissions (list/add/remove/update/set).
3
3
  */
4
4
  import { SubcommandMeta } from "../types/index.js";
5
5
  export declare const meta: SubcommandMeta;