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,10 +1,9 @@
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 { createClient, fetchWithAuth } from "../client.js";
5
5
  import { CliError } from "../utils/errors.js";
6
- import { FEATURE_SCOPE_GROUPS } from "../scopes.js";
7
- import { ensureScopes } from "../utils/scope-prompt.js";
6
+ import { withScopeRecovery } from "../utils/scope-prompt.js";
8
7
  import { resolveDocument } from "../utils/document-resolver.js";
9
8
  import { validateMemberId, detectMemberType } from "../utils/member.js";
10
9
  import { mapToDriveType } from "../utils/drive-types.js";
@@ -22,6 +21,18 @@ export const meta = {
22
21
  positionals: true,
23
22
  handler: add,
24
23
  },
24
+ remove: {
25
+ options: {},
26
+ positionals: true,
27
+ handler: remove,
28
+ },
29
+ update: {
30
+ options: {
31
+ role: { type: "string" },
32
+ },
33
+ positionals: true,
34
+ handler: update,
35
+ },
25
36
  set: {
26
37
  options: {
27
38
  public: { type: "string" },
@@ -68,43 +79,42 @@ export function mapPublicMode(mode, role = "view") {
68
79
  throw new CliError("INVALID_ARGS", `无效的公开模式: ${mode}。可选值: closed, tenant, open`);
69
80
  }
70
81
  /**
71
- * Pre-flight scope check with interactive recovery for share commands.
82
+ * Resolve document and determine share context.
83
+ * No pre-flight scope checks — scope errors are handled reactively by withScopeRecovery.
72
84
  */
73
- async function ensureDriveScope(authInfo, globalOpts) {
74
- return ensureScopes(authInfo, FEATURE_SCOPE_GROUPS.drive.scopes, globalOpts);
75
- }
76
- async function resolveDocForShare(authInfo, input) {
85
+ async function resolveShareContext(authInfo, input) {
77
86
  const doc = await resolveDocument(authInfo, input);
78
- // For wiki nodes, use the node_token with type "wiki" for permission APIs
79
- const token = doc.spaceId ? doc.parsed.token : doc.objToken;
80
- const type = doc.spaceId ? "wiki" : mapToDriveType(doc.objType);
81
- return { token, type, doc };
87
+ const isWiki = Boolean(doc.spaceId);
88
+ const token = isWiki ? doc.parsed.token : doc.objToken;
89
+ const type = isWiki ? "wiki" : mapToDriveType(doc.objType);
90
+ return { token, type, authInfo, doc };
82
91
  }
83
92
  async function list(args, globalOpts) {
84
93
  const input = args.positionals[0];
85
94
  if (!input) {
86
95
  throw new CliError("INVALID_ARGS", "缺少文档 URL 或 token。用法: feishu-docs share list <url>");
87
96
  }
88
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
89
- const authInfo = await ensureDriveScope(rawAuthInfo, globalOpts);
90
- const { token, type } = await resolveDocForShare(authInfo, input);
91
- const res = await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members`, { params: { type } });
92
- const shareResData = res?.data;
93
- const members = (shareResData?.members || []);
94
- if (globalOpts.json) {
95
- process.stdout.write(JSON.stringify({ success: true, members }, null, 2) + "\n");
96
- return;
97
- }
98
- if (members.length === 0) {
99
- process.stdout.write("没有协作者\n");
100
- return;
101
- }
102
- for (const m of members) {
103
- const name = m.member_name || m.member_id || "(未知)";
104
- const perm = m.perm || "unknown";
105
- const memberType = m.member_type || "";
106
- process.stdout.write(` ${name} [${perm}] (${memberType}: ${m.member_id})\n`);
107
- }
97
+ return withScopeRecovery(async () => {
98
+ const { authInfo: rawAuthInfo } = await createClient(globalOpts);
99
+ const { token, type, authInfo } = await resolveShareContext(rawAuthInfo, input);
100
+ const res = await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members`, { params: { type } });
101
+ const shareResData = res?.data;
102
+ const members = (shareResData?.members || []);
103
+ if (globalOpts.json) {
104
+ process.stdout.write(JSON.stringify({ success: true, members }, null, 2) + "\n");
105
+ return;
106
+ }
107
+ if (members.length === 0) {
108
+ process.stdout.write("没有协作者\n");
109
+ return;
110
+ }
111
+ for (const m of members) {
112
+ const name = m.member_name || m.member_id || "(未知)";
113
+ const perm = m.perm || "unknown";
114
+ const memberType = m.member_type || "";
115
+ process.stdout.write(` ${name} [${perm}] (${memberType}: ${m.member_id})\n`);
116
+ }
117
+ }, globalOpts);
108
118
  }
109
119
  async function add(args, globalOpts) {
110
120
  const input = args.positionals[0];
@@ -113,44 +123,106 @@ async function add(args, globalOpts) {
113
123
  throw new CliError("INVALID_ARGS", "用法: feishu-docs share add <url> <member> --role <role>");
114
124
  }
115
125
  validateMemberId(memberId);
116
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
117
- const authInfo = await ensureDriveScope(rawAuthInfo, globalOpts);
118
- const { token, type } = await resolveDocForShare(authInfo, input);
119
- const memberType = detectMemberType(memberId);
120
- const perm = mapRole(args.role || "view");
121
- try {
122
- await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members`, {
123
- method: "POST",
124
- params: { type },
125
- body: { member_type: memberType, member_id: memberId, perm },
126
- });
127
- }
128
- catch (err) {
129
- // Error 1201003: member already exists → fallback to update
130
- const code = err?.apiCode ||
131
- err?.code;
132
- if (code === 1201003) {
133
- await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members/${encodeURIComponent(memberId)}`, {
134
- method: "PUT",
126
+ return withScopeRecovery(async () => {
127
+ const { authInfo: rawAuthInfo } = await createClient(globalOpts);
128
+ const { token, type, authInfo } = await resolveShareContext(rawAuthInfo, input);
129
+ const memberType = detectMemberType(memberId);
130
+ const perm = mapRole(args.role || "view");
131
+ try {
132
+ await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members`, {
133
+ method: "POST",
135
134
  params: { type },
136
- body: { member_type: memberType, perm },
135
+ body: { member_type: memberType, member_id: memberId, perm },
137
136
  });
138
137
  }
138
+ catch (err) {
139
+ // Error 1201003: member already exists → fallback to update
140
+ const code = err?.apiCode ||
141
+ err?.code;
142
+ if (code === 1201003) {
143
+ await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members/${encodeURIComponent(memberId)}`, {
144
+ method: "PUT",
145
+ params: { type },
146
+ body: { member_type: memberType, perm },
147
+ });
148
+ }
149
+ else {
150
+ throw err;
151
+ }
152
+ }
153
+ if (globalOpts.json) {
154
+ process.stdout.write(JSON.stringify({
155
+ success: true,
156
+ member_id: memberId,
157
+ member_type: memberType,
158
+ perm,
159
+ }) + "\n");
160
+ }
139
161
  else {
140
- throw err;
162
+ process.stdout.write(`已添加协作者 ${memberId} (${perm})\n`);
141
163
  }
164
+ }, globalOpts);
165
+ }
166
+ async function remove(args, globalOpts) {
167
+ const input = args.positionals[0];
168
+ const memberId = args.positionals[1];
169
+ if (!input || !memberId) {
170
+ throw new CliError("INVALID_ARGS", "用法: feishu-docs share remove <url> <member>");
142
171
  }
143
- if (globalOpts.json) {
144
- process.stdout.write(JSON.stringify({
145
- success: true,
146
- member_id: memberId,
147
- member_type: memberType,
148
- perm,
149
- }) + "\n");
172
+ validateMemberId(memberId);
173
+ return withScopeRecovery(async () => {
174
+ const { authInfo: rawAuthInfo } = await createClient(globalOpts);
175
+ const { token, type, authInfo } = await resolveShareContext(rawAuthInfo, input);
176
+ const memberType = detectMemberType(memberId);
177
+ await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members/${encodeURIComponent(memberId)}`, {
178
+ method: "DELETE",
179
+ params: { type, member_type: memberType },
180
+ });
181
+ if (globalOpts.json) {
182
+ process.stdout.write(JSON.stringify({
183
+ success: true,
184
+ member_id: memberId,
185
+ member_type: memberType,
186
+ action: "removed",
187
+ }) + "\n");
188
+ }
189
+ else {
190
+ process.stdout.write(`已移除协作者 ${memberId}\n`);
191
+ }
192
+ }, globalOpts);
193
+ }
194
+ async function update(args, globalOpts) {
195
+ const input = args.positionals[0];
196
+ const memberId = args.positionals[1];
197
+ if (!input || !memberId) {
198
+ throw new CliError("INVALID_ARGS", "用法: feishu-docs share update <url> <member> --role <role>");
150
199
  }
151
- else {
152
- process.stdout.write(`已添加协作者 ${memberId} (${perm})\n`);
200
+ if (!args.role) {
201
+ throw new CliError("INVALID_ARGS", "缺少 --role 参数。可选值: view, edit, manage");
153
202
  }
203
+ validateMemberId(memberId);
204
+ return withScopeRecovery(async () => {
205
+ const { authInfo: rawAuthInfo } = await createClient(globalOpts);
206
+ const { token, type, authInfo } = await resolveShareContext(rawAuthInfo, input);
207
+ const memberType = detectMemberType(memberId);
208
+ const perm = mapRole(args.role);
209
+ await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members/${encodeURIComponent(memberId)}`, {
210
+ method: "PUT",
211
+ params: { type },
212
+ body: { member_type: memberType, perm },
213
+ });
214
+ if (globalOpts.json) {
215
+ process.stdout.write(JSON.stringify({
216
+ success: true,
217
+ member_id: memberId,
218
+ member_type: memberType,
219
+ perm,
220
+ }) + "\n");
221
+ }
222
+ else {
223
+ process.stdout.write(`已更新协作者 ${memberId} 权限为 ${perm}\n`);
224
+ }
225
+ }, globalOpts);
154
226
  }
155
227
  async function set(args, globalOpts) {
156
228
  const input = args.positionals[0];
@@ -160,34 +232,35 @@ async function set(args, globalOpts) {
160
232
  if (!args.public) {
161
233
  throw new CliError("INVALID_ARGS", "缺少 --public 参数。可选值: closed, tenant, open");
162
234
  }
163
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
164
- const authInfo = await ensureDriveScope(rawAuthInfo, globalOpts);
165
- const { token, type } = await resolveDocForShare(authInfo, input);
166
- // Extract optional role from --public value like "tenant:edit"
167
- let mode = args.public;
168
- let shareRole = "view";
169
- if (mode.includes(":")) {
170
- const parts = mode.split(":");
171
- mode = parts[0];
172
- shareRole = parts[1] || "view";
173
- }
174
- if (shareRole !== "view" && shareRole !== "edit") {
175
- throw new CliError("INVALID_ARGS", `无效的分享角色: ${shareRole}。可选值: view, edit(如 tenant:edit)`);
176
- }
177
- const linkShareEntity = mapPublicMode(mode, shareRole);
178
- await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/public`, {
179
- method: "PATCH",
180
- params: { type },
181
- body: { link_share_entity: linkShareEntity },
182
- });
183
- if (globalOpts.json) {
184
- process.stdout.write(JSON.stringify({
185
- success: true,
186
- link_share_entity: linkShareEntity,
187
- }) + "\n");
188
- }
189
- else {
190
- process.stdout.write(`已修改分享设置为 ${linkShareEntity}\n`);
191
- }
235
+ return withScopeRecovery(async () => {
236
+ const { authInfo: rawAuthInfo } = await createClient(globalOpts);
237
+ const { token, type, authInfo } = await resolveShareContext(rawAuthInfo, input);
238
+ // Extract optional role from --public value like "tenant:edit"
239
+ let mode = args.public;
240
+ let shareRole = "view";
241
+ if (mode.includes(":")) {
242
+ const parts = mode.split(":");
243
+ mode = parts[0];
244
+ shareRole = parts[1] || "view";
245
+ }
246
+ if (shareRole !== "view" && shareRole !== "edit") {
247
+ throw new CliError("INVALID_ARGS", `无效的分享角色: ${shareRole}。可选值: view, edit(如 tenant:edit)`);
248
+ }
249
+ const linkShareEntity = mapPublicMode(mode, shareRole);
250
+ await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/public`, {
251
+ method: "PATCH",
252
+ params: { type },
253
+ body: { link_share_entity: linkShareEntity },
254
+ });
255
+ if (globalOpts.json) {
256
+ process.stdout.write(JSON.stringify({
257
+ success: true,
258
+ link_share_entity: linkShareEntity,
259
+ }) + "\n");
260
+ }
261
+ else {
262
+ process.stdout.write(`已修改分享设置为 ${linkShareEntity}\n`);
263
+ }
264
+ }, globalOpts);
192
265
  }
193
266
  //# sourceMappingURL=share.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"share.js","sourceRoot":"","sources":["../../src/commands/share.ts"],"names":[],"mappings":"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"}
@@ -4,15 +4,14 @@
4
4
  * Uses Convert + Descendant API for writing new content.
5
5
  * Restore uses the old children API (backup data is raw blocks, not markdown).
6
6
  */
7
- import { readFile, unlink } from "node:fs/promises";
7
+ import { readFile } from "node:fs/promises";
8
8
  import { existsSync } from "node:fs";
9
9
  import { resolve, normalize, sep } from "node:path";
10
- import { randomUUID } from "node:crypto";
11
10
  import { createClient, fetchWithAuth } from "../client.js";
12
11
  import { CliError } from "../utils/errors.js";
13
- import { convertAndWrite } from "../services/markdown-convert.js";
12
+ import { convertAndWrite, extractMarkdownTitle, sanitizeBlocks, writeDescendant, } from "../services/markdown-convert.js";
14
13
  import { resolveDocument } from "../utils/document-resolver.js";
15
- import { readBody, getDocumentInfo, clearDocument, backupDocument, sleep, BATCH_SIZE, QPS_DELAY, BACKUPS_DIR, } from "../services/block-writer.js";
14
+ import { readBody, getDocumentInfo, clearDocument, backupDocument, getBackupsDir, } from "../services/block-writer.js";
16
15
  export const meta = {
17
16
  options: {
18
17
  body: { type: "string" },
@@ -46,7 +45,7 @@ export async function update(args, globalOpts) {
46
45
  if (args.append) {
47
46
  return appendToDocument(authInfo, documentId, bodyContent, globalOpts);
48
47
  }
49
- return overwriteDocument(authInfo, documentId, bodyContent, globalOpts);
48
+ return overwriteDocument(authInfo, documentId, bodyContent, globalOpts, doc.spaceId, doc.nodeToken);
50
49
  }
51
50
  async function appendToDocument(authInfo, documentId, bodyContent, globalOpts) {
52
51
  const docInfo = await getDocumentInfo(authInfo, documentId);
@@ -62,7 +61,10 @@ async function appendToDocument(authInfo, documentId, bodyContent, globalOpts) {
62
61
  process.stdout.write(`已追加内容到文档 ${documentId}\n`);
63
62
  }
64
63
  }
65
- async function overwriteDocument(authInfo, documentId, bodyContent, globalOpts) {
64
+ async function overwriteDocument(authInfo, documentId, bodyContent, globalOpts, spaceId, nodeToken) {
65
+ // Extract first H1 heading as document title, strip from body
66
+ const { title: extractedTitle, body: strippedBody } = extractMarkdownTitle(bodyContent);
67
+ const contentToWrite = strippedBody.trim() || undefined;
66
68
  let backupPath;
67
69
  try {
68
70
  const backup = await backupDocument(authInfo, documentId);
@@ -82,7 +84,10 @@ async function overwriteDocument(authInfo, documentId, bodyContent, globalOpts)
82
84
  throw err;
83
85
  }
84
86
  try {
85
- await convertAndWrite(authInfo, documentId, bodyContent, rev);
87
+ // Write body content first (if any), then update title
88
+ if (contentToWrite) {
89
+ rev = await convertAndWrite(authInfo, documentId, contentToWrite, rev);
90
+ }
86
91
  }
87
92
  catch (err) {
88
93
  process.stderr.write(`feishu-docs: error: 写入新内容失败,尝试从备份恢复...\n`);
@@ -97,13 +102,29 @@ async function overwriteDocument(authInfo, documentId, bodyContent, globalOpts)
97
102
  }
98
103
  throw err;
99
104
  }
100
- // Write succeeded clean up backup file
101
- try {
102
- await unlink(backupPath);
103
- }
104
- catch {
105
- // Non-critical: backup file cleanup failure is silent
105
+ // Update document title after successful content write
106
+ if (extractedTitle) {
107
+ try {
108
+ if (spaceId && nodeToken) {
109
+ // Wiki documents use the wiki node rename API
110
+ await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(spaceId)}/nodes/${encodeURIComponent(nodeToken)}/update_title`, {
111
+ method: "POST",
112
+ body: { title: extractedTitle },
113
+ });
114
+ }
115
+ else {
116
+ // Drive documents use the docx PATCH API
117
+ await fetchWithAuth(authInfo, `/open-apis/docx/v1/documents/${encodeURIComponent(documentId)}`, {
118
+ method: "PATCH",
119
+ body: { title: extractedTitle },
120
+ });
121
+ }
122
+ }
123
+ catch {
124
+ process.stderr.write(`feishu-docs: warning: 更新文档标题失败,标题可能未同步\n`);
125
+ }
106
126
  }
127
+ // Backup kept for undo — rotateBackups() in backupDocument handles cleanup
107
128
  if (globalOpts.json) {
108
129
  process.stdout.write(JSON.stringify({
109
130
  success: true,
@@ -115,53 +136,9 @@ async function overwriteDocument(authInfo, documentId, bodyContent, globalOpts)
115
136
  process.stdout.write(`已覆盖更新文档 ${documentId}\n`);
116
137
  }
117
138
  }
118
- /**
119
- * Recursively restore blocks and their descendants from a backup block map.
120
- * Uses the old children API (backup data is raw blocks, not markdown).
121
- */
122
- const MAX_RESTORE_DEPTH = 20;
123
- async function restoreChildren(authInfo, documentId, parentBlockId, childIds, blockMap, revisionId, depth = 0) {
124
- let rev = revisionId;
125
- if (!childIds || childIds.length === 0)
126
- return rev;
127
- if (depth >= MAX_RESTORE_DEPTH) {
128
- process.stderr.write(`feishu-docs: warning: 恢复深度超过 ${MAX_RESTORE_DEPTH} 层,跳过更深层级\n`);
129
- return rev;
130
- }
131
- for (let i = 0; i < childIds.length; i += BATCH_SIZE) {
132
- const batchIds = childIds.slice(i, i + BATCH_SIZE);
133
- const batch = batchIds
134
- .map((id) => blockMap.get(id))
135
- .filter(Boolean)
136
- .map((b) => {
137
- const { block_id, parent_id, children, ...rest } = b;
138
- return rest;
139
- });
140
- if (batch.length === 0)
141
- continue;
142
- if (i > 0)
143
- await sleep(QPS_DELAY);
144
- const res = await fetchWithAuth(authInfo, `/open-apis/docx/v1/documents/${encodeURIComponent(documentId)}/blocks/${encodeURIComponent(parentBlockId)}/children`, {
145
- method: "POST",
146
- body: { children: batch, index: i },
147
- params: { document_revision_id: rev, client_token: randomUUID() },
148
- });
149
- const resData = res?.data;
150
- rev = resData?.document_revision_id ?? rev;
151
- const createdIds = (resData?.children ?? []).map((c) => c.block_id);
152
- for (let j = 0; j < createdIds.length && j < batchIds.length; j++) {
153
- const original = blockMap.get(batchIds[j]);
154
- if (original?.children?.length && original.children.length > 0) {
155
- await sleep(QPS_DELAY);
156
- rev = await restoreChildren(authInfo, documentId, createdIds[j], original.children, blockMap, rev, depth + 1);
157
- }
158
- }
159
- }
160
- return rev;
161
- }
162
139
  async function restoreFromBackup(authInfo, documentId, backupPath, globalOpts) {
163
140
  const resolvedPath = resolve(normalize(backupPath));
164
- const resolvedBackups = resolve(BACKUPS_DIR);
141
+ const resolvedBackups = resolve(getBackupsDir());
165
142
  if (!resolvedPath.startsWith(resolvedBackups + sep)) {
166
143
  throw new CliError("INVALID_ARGS", `备份文件必须位于 ${resolvedBackups} 目录下`, { recovery: `请使用 ${resolvedBackups} 下的备份文件路径` });
167
144
  }
@@ -191,11 +168,17 @@ async function restoreFromBackup(authInfo, documentId, backupPath, globalOpts) {
191
168
  process.stderr.write("feishu-docs: warning: 备份文件中没有可恢复的内容\n");
192
169
  return;
193
170
  }
194
- const blockMap = new Map(blocks.map((b) => [b.block_id, b]));
171
+ // Build ConvertedBlocks for Descendant API (supports all block types)
172
+ const allBlocks = sanitizeBlocks(blocks.filter((b) => b.block_type !== 1));
173
+ const converted = {
174
+ blocks: allBlocks,
175
+ firstLevelBlockIds: topLevelIds,
176
+ blockIdToImageUrls: {},
177
+ };
195
178
  const docInfo = await getDocumentInfo(authInfo, documentId);
196
179
  let rev = await clearDocument(authInfo, documentId, docInfo.revisionId);
197
180
  try {
198
- rev = await restoreChildren(authInfo, documentId, documentId, topLevelIds, blockMap, rev);
181
+ rev = await writeDescendant(authInfo, documentId, documentId, converted, rev);
199
182
  }
200
183
  catch (restoreErr) {
201
184
  process.stderr.write(`feishu-docs: error: 恢复过程中出错: ${restoreErr.message}\n` +
@@ -1 +1 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,6 @@
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";
9
7
  import { resolveDocument } from "../utils/document-resolver.js";
10
8
  import { validateMemberId, detectMemberType } from "../utils/member.js";
11
9
  import { validateToken } from "../utils/validate.js";
@@ -19,20 +17,15 @@ async function resolveWikiNode(authInfo, input) {
19
17
  }
20
18
  return doc;
21
19
  }
22
- /**
23
- * Pre-flight scope check with interactive recovery for wiki commands.
24
- */
25
- async function checkWikiScope(authInfo, feature, globalOpts) {
26
- return ensureScopes(authInfo, FEATURE_SCOPE_GROUPS[feature].scopes, globalOpts);
27
- }
20
+ // wiki:wiki is a BASE_SCOPE (免审核), granted during login.
21
+ // Scope errors are handled reactively by fetchWithAuth if they occur.
28
22
  // --- Subcommand: create-space ---
29
23
  async function createSpace(args, globalOpts) {
30
24
  const name = args.positionals[0];
31
25
  if (!name) {
32
26
  throw new CliError("INVALID_ARGS", "缺少知识库名称。用法: feishu-docs wiki create-space <name> [--desc <description>]");
33
27
  }
34
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
35
- const authInfo = await checkWikiScope(rawAuthInfo, "wiki-space", globalOpts);
28
+ const { authInfo } = await createClient(globalOpts);
36
29
  const descStr = args.desc;
37
30
  const body = {
38
31
  name,
@@ -69,8 +62,7 @@ async function addMember(args, globalOpts) {
69
62
  if (memberRole !== "admin" && memberRole !== "member") {
70
63
  throw new CliError("INVALID_ARGS", `无效的角色: ${memberRole}。可选值: admin, member`);
71
64
  }
72
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
73
- const authInfo = await checkWikiScope(rawAuthInfo, "wiki-member", globalOpts);
65
+ const { authInfo } = await createClient(globalOpts);
74
66
  let alreadyExist = false;
75
67
  try {
76
68
  await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(spaceId)}/members`, {
@@ -120,8 +112,7 @@ async function removeMember(args, globalOpts) {
120
112
  validateMemberId(memberId);
121
113
  const memberType = detectMemberType(memberId);
122
114
  const memberRole = args.role || "member";
123
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
124
- const authInfo = await checkWikiScope(rawAuthInfo, "wiki-member", globalOpts);
115
+ const { authInfo } = await createClient(globalOpts);
125
116
  await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(spaceId)}/members/${encodeURIComponent(memberId)}`, {
126
117
  method: "DELETE",
127
118
  body: {
@@ -146,8 +137,7 @@ async function rename(args, globalOpts) {
146
137
  if (!input || !args.title) {
147
138
  throw new CliError("INVALID_ARGS", "用法: feishu-docs wiki rename <url|token> --title <new_title>");
148
139
  }
149
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
150
- const authInfo = await checkWikiScope(rawAuthInfo, "wiki-node", globalOpts);
140
+ const { authInfo } = await createClient(globalOpts);
151
141
  const doc = await resolveWikiNode(authInfo, input);
152
142
  await fetchWithAuth(authInfo, `/open-apis/wiki/v2/spaces/${encodeURIComponent(doc.spaceId)}/nodes/${encodeURIComponent(doc.nodeToken)}/update_title`, {
153
143
  method: "POST",
@@ -174,8 +164,7 @@ async function move(args, globalOpts) {
174
164
  if (!args.to && !args.parent) {
175
165
  throw new CliError("INVALID_ARGS", "至少需要 --to <space_id> 或 --parent <node_token>");
176
166
  }
177
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
178
- const authInfo = await checkWikiScope(rawAuthInfo, "wiki-node", globalOpts);
167
+ const { authInfo } = await createClient(globalOpts);
179
168
  const doc = await resolveWikiNode(authInfo, input);
180
169
  const toStr = args.to;
181
170
  const parentStr = args.parent;
@@ -210,8 +199,7 @@ async function copy(args, globalOpts) {
210
199
  if (!args.to && !args.parent) {
211
200
  throw new CliError("INVALID_ARGS", "至少需要 --to <space_id> 或 --parent <node_token>");
212
201
  }
213
- const { authInfo: rawAuthInfo } = await createClient(globalOpts);
214
- const authInfo = await checkWikiScope(rawAuthInfo, "wiki-node", globalOpts);
202
+ const { authInfo } = await createClient(globalOpts);
215
203
  const doc = await resolveWikiNode(authInfo, input);
216
204
  const copyToStr = args.to;
217
205
  const copyParentStr = args.parent;