feishu-docs-cli 0.1.0-beta.8 → 0.1.0-beta.9
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/README.md +45 -4
- package/README.zh.md +45 -4
- package/dist/cli.js +11 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/cp.d.ts +9 -0
- package/dist/commands/cp.js +56 -0
- package/dist/commands/cp.js.map +1 -0
- package/dist/commands/mkdir.d.ts +6 -0
- package/dist/commands/mkdir.js +49 -0
- package/dist/commands/mkdir.js.map +1 -0
- package/dist/commands/mv.d.ts +9 -0
- package/dist/commands/mv.js +67 -0
- package/dist/commands/mv.js.map +1 -0
- package/dist/commands/share.d.ts +1 -1
- package/dist/commands/share.js +72 -1
- package/dist/commands/share.js.map +1 -1
- package/package.json +1 -1
- package/skills/feishu-docs/SKILL.md +15 -0
package/README.md
CHANGED
|
@@ -4,11 +4,30 @@
|
|
|
4
4
|
|
|
5
5
|
CLI tool for AI Agents to read/write Feishu (Lark) docs via shell commands.
|
|
6
6
|
|
|
7
|
+
## Why feishu-docs-cli?
|
|
8
|
+
|
|
9
|
+
Feishu/Lark already offers the official [lark-mcp](https://github.com/larksuite/lark-openapi-mcp) MCP server. Here's what this project does differently:
|
|
10
|
+
|
|
11
|
+
| Capability | feishu-docs-cli | lark-mcp |
|
|
12
|
+
|------------|:-:|:-:|
|
|
13
|
+
| Read docs as Markdown | **Yes** — 30+ block types rendered | No — returns raw Block JSON |
|
|
14
|
+
| Write docs from Markdown | **Yes** — auto-convert, auto-batch (>1000 blocks) | No |
|
|
15
|
+
| Knowledge base tree browsing | **Yes** — `spaces` → `tree` → `cat` workflow | Search/get single node only |
|
|
16
|
+
| Batch read entire wiki subtree | **Yes** — `cat` recursively exports Markdown | No |
|
|
17
|
+
| Write safety (backup/restore) | **Yes** — auto-backup before overwrite, auto-recover on failure | No |
|
|
18
|
+
| OAuth user login | **Yes** — full OAuth v2 with auto-refresh, tiered scope management, interactive recovery | Yes — basic OAuth login |
|
|
19
|
+
| Works with any AI agent | **Yes** — standard CLI, pipes, scripts | MCP protocol only |
|
|
20
|
+
| IM / messaging | No | Yes |
|
|
21
|
+
| Bitable CRUD | Read-only (rendered as table) | Yes |
|
|
22
|
+
| Contact lookup | Via `share add` only | Yes |
|
|
23
|
+
|
|
24
|
+
**In short**: lark-mcp is a thin wrapper over Feishu APIs with broad coverage. feishu-docs-cli is purpose-built for **document workflows** — it lets AI agents truly read, understand, and write Feishu documents as Markdown, with safety guardrails that the raw API doesn't provide.
|
|
25
|
+
|
|
7
26
|
## Features
|
|
8
27
|
|
|
9
28
|
- **Read** documents as Markdown, raw text, or original Block JSON
|
|
10
29
|
- **Create** documents in knowledge bases or cloud folders
|
|
11
|
-
- **Update** documents with overwrite or append mode
|
|
30
|
+
- **Update** documents with overwrite or append mode (auto-batch for large content)
|
|
12
31
|
- **Delete** documents (move to recycle bin)
|
|
13
32
|
- **Info** — view document metadata (title, type, URL, revision)
|
|
14
33
|
- **Browse** knowledge base structure (spaces, tree, cat)
|
|
@@ -71,7 +90,7 @@ Requires Node.js >= 18.3.
|
|
|
71
90
|
| `wiki:wiki.space.member` | Manage knowledge base members | wiki add-member, remove-member |
|
|
72
91
|
|
|
73
92
|
5. Go to **Security Settings**, add the OAuth callback URL to the **Redirect URLs** allowlist:
|
|
74
|
-
- Default: `http://
|
|
93
|
+
- Default: `http://127.0.0.1:3456/callback`
|
|
75
94
|
- This must match exactly what you use during `feishu-docs login`
|
|
76
95
|
|
|
77
96
|
6. **Publish the app version**: Go to **App Release** → **Create Version** → Submit for review → Approve (self-built apps in your org are usually auto-approved)
|
|
@@ -95,7 +114,7 @@ feishu-docs login
|
|
|
95
114
|
|
|
96
115
|
This opens a browser for OAuth authorization and saves the encrypted token to `~/.feishu-docs/auth.json`.
|
|
97
116
|
|
|
98
|
-
If your app's registered redirect URL differs from the default (`http://
|
|
117
|
+
If your app's registered redirect URL differs from the default (`http://127.0.0.1:3456/callback`), pass the exact same value:
|
|
99
118
|
|
|
100
119
|
```bash
|
|
101
120
|
# Match the exact redirect URI registered in Feishu Open Platform
|
|
@@ -209,6 +228,22 @@ feishu-docs ls <folder_token>
|
|
|
209
228
|
feishu-docs ls --type docx --limit 20
|
|
210
229
|
```
|
|
211
230
|
|
|
231
|
+
### File Operations
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
# Move file to a folder
|
|
235
|
+
feishu-docs mv <url|token> <target_folder_token>
|
|
236
|
+
|
|
237
|
+
# Copy file (auto-names as "Title - 副本")
|
|
238
|
+
feishu-docs cp <url|token> <target_folder_token>
|
|
239
|
+
|
|
240
|
+
# Copy with custom name
|
|
241
|
+
feishu-docs cp <url|token> <target_folder_token> --name "My Copy"
|
|
242
|
+
|
|
243
|
+
# Create a folder
|
|
244
|
+
feishu-docs mkdir "New Folder" --parent <parent_folder_token>
|
|
245
|
+
```
|
|
246
|
+
|
|
212
247
|
### Share
|
|
213
248
|
|
|
214
249
|
```bash
|
|
@@ -219,6 +254,12 @@ feishu-docs share list <url>
|
|
|
219
254
|
feishu-docs share add <url> user@example.com --role view
|
|
220
255
|
feishu-docs share add <url> ou_xxx --role edit
|
|
221
256
|
|
|
257
|
+
# Remove collaborator
|
|
258
|
+
feishu-docs share remove <url> user@example.com
|
|
259
|
+
|
|
260
|
+
# Update collaborator role
|
|
261
|
+
feishu-docs share update <url> ou_xxx --role manage
|
|
262
|
+
|
|
222
263
|
# Set public sharing mode
|
|
223
264
|
feishu-docs share set <url> --public tenant # org-wide readable
|
|
224
265
|
feishu-docs share set <url> --public tenant:edit # org-wide editable
|
|
@@ -231,7 +272,7 @@ Roles: `view`, `edit`, `manage`. Member types are auto-detected (email, openid,
|
|
|
231
272
|
### Auth
|
|
232
273
|
|
|
233
274
|
```bash
|
|
234
|
-
feishu-docs login # OAuth login (default callback: http://
|
|
275
|
+
feishu-docs login # OAuth login (default callback: http://127.0.0.1:3456/callback)
|
|
235
276
|
feishu-docs logout # Clear saved credentials
|
|
236
277
|
feishu-docs whoami # Show current auth status
|
|
237
278
|
```
|
package/README.zh.md
CHANGED
|
@@ -4,11 +4,30 @@
|
|
|
4
4
|
|
|
5
5
|
让 AI Agent(Claude Code、Codex、Trae 等)通过 shell 命令读写飞书云文档和知识库。
|
|
6
6
|
|
|
7
|
+
## 为什么选 feishu-docs-cli?
|
|
8
|
+
|
|
9
|
+
飞书官方已有 [lark-mcp](https://github.com/larksuite/lark-openapi-mcp) MCP 服务。以下是本项目的差异化能力:
|
|
10
|
+
|
|
11
|
+
| 能力 | feishu-docs-cli | lark-mcp |
|
|
12
|
+
|------|:-:|:-:|
|
|
13
|
+
| 读取文档输出 Markdown | **支持** — 30+ 种 block 类型渲染 | 不支持 — 返回原始 Block JSON |
|
|
14
|
+
| 从 Markdown 写入文档 | **支持** — 自动转换、大文档自动分批(>1000 blocks) | 不支持 |
|
|
15
|
+
| 知识库目录树浏览 | **支持** — `spaces` → `tree` → `cat` 完整工作流 | 仅搜索/获取单个节点 |
|
|
16
|
+
| 批量读取知识库子树 | **支持** — `cat` 递归导出为 Markdown | 不支持 |
|
|
17
|
+
| 写入安全(备份/恢复) | **支持** — 覆盖前自动备份,失败自动恢复 | 不支持 |
|
|
18
|
+
| OAuth 用户登录 | **支持** — 完整 OAuth v2 + token 自动刷新 + 分级权限管理 + 交互式权限恢复 | 支持 — 基础 OAuth 登录 |
|
|
19
|
+
| 兼容任意 AI Agent | **支持** — 标准 CLI,支持管道和脚本 | 仅 MCP 协议 |
|
|
20
|
+
| 即时消息 | 不支持 | 支持 |
|
|
21
|
+
| 多维表格 CRUD | 只读(渲染为表格) | 支持 |
|
|
22
|
+
| 通讯录查询 | 仅 `share add` 时使用 | 支持 |
|
|
23
|
+
|
|
24
|
+
**一句话总结**:lark-mcp 是飞书 API 的薄封装,覆盖面广但每个功能都是原始 API 级别。feishu-docs-cli 专注于**文档工作流**,让 AI Agent 能以 Markdown 为媒介真正读懂和编写飞书文档,并提供原始 API 没有的安全保障。
|
|
25
|
+
|
|
7
26
|
## 功能
|
|
8
27
|
|
|
9
28
|
- **读取** 文档,输出 Markdown、纯文本或原始 Block JSON
|
|
10
29
|
- **创建** 文档到知识库或云空间文件夹
|
|
11
|
-
- **更新**
|
|
30
|
+
- **更新** 文档,支持覆盖写入或追加模式(大文档自动分批)
|
|
12
31
|
- **删除** 文档(移至回收站)
|
|
13
32
|
- **详情** — 查看文档元信息(标题、类型、URL、版本号)
|
|
14
33
|
- **浏览** 知识库结构(空间列表、目录树、批量读取)
|
|
@@ -70,7 +89,7 @@ npm install -g github:cliff-byte/feishu-docs-cli
|
|
|
70
89
|
| `wiki:wiki.space.member` | 管理知识库成员 | wiki add-member、remove-member |
|
|
71
90
|
|
|
72
91
|
4. 进入 **安全设置**,在 **重定向 URL** 白名单中添加 OAuth 回调地址:
|
|
73
|
-
- 默认值:`http://
|
|
92
|
+
- 默认值:`http://127.0.0.1:3456/callback`
|
|
74
93
|
- 该地址必须与 `feishu-docs login` 使用的值完全一致
|
|
75
94
|
|
|
76
95
|
5. **发布应用版本**:进入 **应用发布** → **创建版本** → 提交审核 → 审核通过(企业自建应用通常自动通过)
|
|
@@ -94,7 +113,7 @@ feishu-docs login
|
|
|
94
113
|
|
|
95
114
|
执行后会打开浏览器进行 OAuth 授权,token 加密保存到 `~/.feishu-docs/auth.json`。
|
|
96
115
|
|
|
97
|
-
如果应用注册的重定向 URL 与默认值(`http://
|
|
116
|
+
如果应用注册的重定向 URL 与默认值(`http://127.0.0.1:3456/callback`)不同,需要传入完全一致的值:
|
|
98
117
|
|
|
99
118
|
```bash
|
|
100
119
|
# 使用与飞书开放平台注册的完全一致的重定向 URI
|
|
@@ -208,6 +227,22 @@ feishu-docs ls <folder_token>
|
|
|
208
227
|
feishu-docs ls --type docx --limit 20
|
|
209
228
|
```
|
|
210
229
|
|
|
230
|
+
### 文件操作
|
|
231
|
+
|
|
232
|
+
```bash
|
|
233
|
+
# 移动文件到指定文件夹
|
|
234
|
+
feishu-docs mv <url|token> <target_folder_token>
|
|
235
|
+
|
|
236
|
+
# 复制文件(自动命名为"标题 - 副本")
|
|
237
|
+
feishu-docs cp <url|token> <target_folder_token>
|
|
238
|
+
|
|
239
|
+
# 指定副本名称
|
|
240
|
+
feishu-docs cp <url|token> <target_folder_token> --name "我的副本"
|
|
241
|
+
|
|
242
|
+
# 创建文件夹
|
|
243
|
+
feishu-docs mkdir "新文件夹" --parent <parent_folder_token>
|
|
244
|
+
```
|
|
245
|
+
|
|
211
246
|
### 分享
|
|
212
247
|
|
|
213
248
|
```bash
|
|
@@ -218,6 +253,12 @@ feishu-docs share list <url>
|
|
|
218
253
|
feishu-docs share add <url> user@example.com --role view
|
|
219
254
|
feishu-docs share add <url> ou_xxx --role edit
|
|
220
255
|
|
|
256
|
+
# 移除协作者
|
|
257
|
+
feishu-docs share remove <url> user@example.com
|
|
258
|
+
|
|
259
|
+
# 修改协作者权限
|
|
260
|
+
feishu-docs share update <url> ou_xxx --role manage
|
|
261
|
+
|
|
221
262
|
# 设置公开分享模式
|
|
222
263
|
feishu-docs share set <url> --public tenant # 组织内可读
|
|
223
264
|
feishu-docs share set <url> --public tenant:edit # 组织内可编辑
|
|
@@ -230,7 +271,7 @@ feishu-docs share set <url> --public closed # 关闭链接分享
|
|
|
230
271
|
### 认证
|
|
231
272
|
|
|
232
273
|
```bash
|
|
233
|
-
feishu-docs login # OAuth 登录(默认回调:http://
|
|
274
|
+
feishu-docs login # OAuth 登录(默认回调:http://127.0.0.1:3456/callback)
|
|
234
275
|
feishu-docs logout # 清除保存的凭证
|
|
235
276
|
feishu-docs whoami # 查看当前认证状态
|
|
236
277
|
```
|
package/dist/cli.js
CHANGED
|
@@ -16,6 +16,9 @@ import { meta as deleteMeta } from "./commands/delete.js";
|
|
|
16
16
|
import { meta as shareMeta } from "./commands/share.js";
|
|
17
17
|
import { meta as infoMeta } from "./commands/info.js";
|
|
18
18
|
import { meta as lsMeta } from "./commands/ls.js";
|
|
19
|
+
import { meta as mvMeta } from "./commands/mv.js";
|
|
20
|
+
import { meta as cpMeta } from "./commands/cp.js";
|
|
21
|
+
import { meta as mkdirMeta } from "./commands/mkdir.js";
|
|
19
22
|
import { meta as wikiMeta } from "./commands/wiki.js";
|
|
20
23
|
import { meta as installSkillMeta } from "./commands/install-skill.js";
|
|
21
24
|
import { handleError, CliError } from "./utils/errors.js";
|
|
@@ -55,10 +58,15 @@ const HELP_TEXT = `feishu-docs - AI Agent 飞书云文档 CLI 工具
|
|
|
55
58
|
|
|
56
59
|
云空间:
|
|
57
60
|
ls [folder_token] 列出文件夹内容
|
|
61
|
+
mv <url|token> <target_folder> 移动文件
|
|
62
|
+
cp <url|token> <target_folder> 复制文件
|
|
63
|
+
mkdir <name> [--parent <folder_token>] 创建文件夹
|
|
58
64
|
|
|
59
65
|
权限:
|
|
60
66
|
share list <url> 查看协作者
|
|
61
67
|
share add <url> <member> --role <role> 添加协作者
|
|
68
|
+
share remove <url> <member> 移除协作者
|
|
69
|
+
share update <url> <member> --role <role> 修改协作者权限
|
|
62
70
|
share set <url> --public <mode> 修改分享设置
|
|
63
71
|
|
|
64
72
|
Agent:
|
|
@@ -97,6 +105,9 @@ const COMMANDS = {
|
|
|
97
105
|
share: shareMeta,
|
|
98
106
|
info: infoMeta,
|
|
99
107
|
ls: lsMeta,
|
|
108
|
+
mv: mvMeta,
|
|
109
|
+
cp: cpMeta,
|
|
110
|
+
mkdir: mkdirMeta,
|
|
100
111
|
wiki: wikiMeta,
|
|
101
112
|
"install-skill": installSkillMeta,
|
|
102
113
|
};
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,IAAI,IAAI,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,IAAI,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,IAAI,IAAI,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAQtE,MAAM,SAAS,GAAG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cp command: Copy a file to a different folder in cloud drive.
|
|
3
|
+
*
|
|
4
|
+
* The copy API requires a name. If --name is not provided,
|
|
5
|
+
* the original document title is fetched and " - 副本" is appended.
|
|
6
|
+
*/
|
|
7
|
+
import { CommandMeta, CommandArgs, GlobalOpts } from "../types/index.js";
|
|
8
|
+
export declare const meta: CommandMeta;
|
|
9
|
+
export declare function cp(args: CommandArgs, globalOpts: GlobalOpts): Promise<void>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* cp command: Copy a file to a different folder in cloud drive.
|
|
3
|
+
*
|
|
4
|
+
* The copy API requires a name. If --name is not provided,
|
|
5
|
+
* the original document title is fetched and " - 副本" is appended.
|
|
6
|
+
*/
|
|
7
|
+
import { createClient, fetchWithAuth } from "../client.js";
|
|
8
|
+
import { CliError } from "../utils/errors.js";
|
|
9
|
+
import { FEATURE_SCOPE_GROUPS } from "../scopes.js";
|
|
10
|
+
import { ensureScopes } from "../utils/scope-prompt.js";
|
|
11
|
+
import { resolveDocument } from "../utils/document-resolver.js";
|
|
12
|
+
import { validateToken } from "../utils/validate.js";
|
|
13
|
+
export const meta = {
|
|
14
|
+
options: {
|
|
15
|
+
name: { type: "string" },
|
|
16
|
+
},
|
|
17
|
+
positionals: true,
|
|
18
|
+
handler: cp,
|
|
19
|
+
};
|
|
20
|
+
export async function cp(args, globalOpts) {
|
|
21
|
+
const input = args.positionals[0];
|
|
22
|
+
const targetFolder = args.positionals[1];
|
|
23
|
+
if (!input || !targetFolder) {
|
|
24
|
+
throw new CliError("INVALID_ARGS", '用法: feishu-docs cp <url|token> <target_folder_token> [--name "副本名称"]');
|
|
25
|
+
}
|
|
26
|
+
validateToken(targetFolder, "target_folder_token");
|
|
27
|
+
const { authInfo: rawAuthInfo } = await createClient(globalOpts);
|
|
28
|
+
const authInfo = await ensureScopes(rawAuthInfo, FEATURE_SCOPE_GROUPS.drive.scopes, globalOpts);
|
|
29
|
+
const doc = await resolveDocument(authInfo, input);
|
|
30
|
+
const fileToken = doc.objToken;
|
|
31
|
+
const type = doc.objType;
|
|
32
|
+
// Determine copy name: use --name if provided, otherwise fetch original title
|
|
33
|
+
let copyName = args.name;
|
|
34
|
+
if (!copyName) {
|
|
35
|
+
copyName = doc.title ? `${doc.title} - 副本` : `${fileToken} - 副本`;
|
|
36
|
+
}
|
|
37
|
+
const res = await fetchWithAuth(authInfo, `/open-apis/drive/v1/files/${encodeURIComponent(fileToken)}/copy`, {
|
|
38
|
+
method: "POST",
|
|
39
|
+
body: { type, name: copyName, folder_token: targetFolder },
|
|
40
|
+
});
|
|
41
|
+
const resData = res?.data;
|
|
42
|
+
const newFile = resData?.file;
|
|
43
|
+
const newToken = newFile?.token || "";
|
|
44
|
+
if (globalOpts.json) {
|
|
45
|
+
process.stdout.write(JSON.stringify({
|
|
46
|
+
success: true,
|
|
47
|
+
file_token: newToken,
|
|
48
|
+
name: copyName,
|
|
49
|
+
folder_token: targetFolder,
|
|
50
|
+
}) + "\n");
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
process.stdout.write(`已复制为 "${copyName}" (${newToken}) 到文件夹 ${targetFolder}\n`);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=cp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cp.js","sourceRoot":"","sources":["../../src/commands/cp.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,CAAC,MAAM,IAAI,GAAgB;IAC/B,OAAO,EAAE;QACP,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KACzB;IACD,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,EAAE;CACZ,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,EAAE,CACtB,IAAiB,EACjB,UAAsB;IAEtB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,YAAY,GAAG,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,sEAAsE,CACvE,CAAC;IACJ,CAAC;IAED,aAAa,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;IAEnD,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,WAAW,EACX,oBAAoB,CAAC,KAAK,CAAC,MAAM,EACjC,UAAU,CACX,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,CAAC;IAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;IAEzB,8EAA8E;IAC9E,IAAI,QAAQ,GAAG,IAAI,CAAC,IAA0B,CAAC;IAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,OAAO,CAAC;IACnE,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,aAAa,CAC7B,QAAQ,EACR,6BAA6B,kBAAkB,CAAC,SAAS,CAAC,OAAO,EACjE;QACE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,EAAE;KAC3D,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE,IAA2C,CAAC;IACjE,MAAM,OAAO,GAAG,OAAO,EAAE,IAA0C,CAAC;IACpE,MAAM,QAAQ,GAAG,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC;IAEtC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,YAAY;SAC3B,CAAC,GAAG,IAAI,CACV,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,QAAQ,MAAM,QAAQ,UAAU,YAAY,IAAI,CAC1D,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mkdir command: Create a folder in cloud drive.
|
|
3
|
+
*/
|
|
4
|
+
import { createClient, fetchWithAuth } from "../client.js";
|
|
5
|
+
import { CliError } from "../utils/errors.js";
|
|
6
|
+
import { FEATURE_SCOPE_GROUPS } from "../scopes.js";
|
|
7
|
+
import { ensureScopes } from "../utils/scope-prompt.js";
|
|
8
|
+
import { validateToken } from "../utils/validate.js";
|
|
9
|
+
export const meta = {
|
|
10
|
+
options: {
|
|
11
|
+
parent: { type: "string" },
|
|
12
|
+
},
|
|
13
|
+
positionals: true,
|
|
14
|
+
handler: mkdir,
|
|
15
|
+
};
|
|
16
|
+
export async function mkdir(args, globalOpts) {
|
|
17
|
+
const name = args.positionals[0];
|
|
18
|
+
if (!name) {
|
|
19
|
+
throw new CliError("INVALID_ARGS", "用法: feishu-docs mkdir <name> [--parent <folder_token>]");
|
|
20
|
+
}
|
|
21
|
+
const parentToken = args.parent;
|
|
22
|
+
if (parentToken) {
|
|
23
|
+
validateToken(parentToken, "parent_folder_token");
|
|
24
|
+
}
|
|
25
|
+
const { authInfo: rawAuthInfo } = await createClient(globalOpts);
|
|
26
|
+
const authInfo = await ensureScopes(rawAuthInfo, FEATURE_SCOPE_GROUPS.drive.scopes, globalOpts);
|
|
27
|
+
const res = await fetchWithAuth(authInfo, "/open-apis/drive/v1/files/create_folder", {
|
|
28
|
+
method: "POST",
|
|
29
|
+
body: {
|
|
30
|
+
name,
|
|
31
|
+
folder_token: parentToken || "",
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
const resData = res?.data;
|
|
35
|
+
const token = resData?.token || "";
|
|
36
|
+
const url = resData?.url || "";
|
|
37
|
+
if (globalOpts.json) {
|
|
38
|
+
process.stdout.write(JSON.stringify({
|
|
39
|
+
success: true,
|
|
40
|
+
token,
|
|
41
|
+
name,
|
|
42
|
+
url,
|
|
43
|
+
}) + "\n");
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
process.stdout.write(`已创建文件夹 "${name}" (${token})\n`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=mkdir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mkdir.js","sourceRoot":"","sources":["../../src/commands/mkdir.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAGrD,MAAM,CAAC,MAAM,IAAI,GAAgB;IAC/B,OAAO,EAAE;QACP,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;KAC3B;IACD,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,KAAK;CACf,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,IAAiB,EACjB,UAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAY,CAAC,CAAC,CAAC,CAAC;IAClC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,IAAI,QAAQ,CAChB,cAAc,EACd,wDAAwD,CACzD,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAA4B,CAAC;IACtD,IAAI,WAAW,EAAE,CAAC;QAChB,aAAa,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,YAAY,CACjC,WAAW,EACX,oBAAoB,CAAC,KAAK,CAAC,MAAM,EACjC,UAAU,CACX,CAAC;IAEF,MAAM,GAAG,GAAG,MAAM,aAAa,CAC7B,QAAQ,EACR,yCAAyC,EACzC;QACE,MAAM,EAAE,MAAM;QACd,IAAI,EAAE;YACJ,IAAI;YACJ,YAAY,EAAE,WAAW,IAAI,EAAE;SAChC;KACF,CACF,CAAC;IAEF,MAAM,OAAO,GAAG,GAAG,EAAE,IAA2C,CAAC;IACjE,MAAM,KAAK,GAAG,OAAO,EAAE,KAAe,IAAI,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,OAAO,EAAE,GAAa,IAAI,EAAE,CAAC;IAEzC,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC;YACb,OAAO,EAAE,IAAI;YACb,KAAK;YACL,IAAI;YACJ,GAAG;SACJ,CAAC,GAAG,IAAI,CACV,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,IAAI,MAAM,KAAK,KAAK,CAAC,CAAC;IACxD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mv command: Move a file to a different folder in cloud drive.
|
|
3
|
+
*
|
|
4
|
+
* The Feishu move API is asynchronous — it returns a task_id which
|
|
5
|
+
* must be polled via taskCheck until completion.
|
|
6
|
+
*/
|
|
7
|
+
import { CommandMeta, CommandArgs, GlobalOpts } from "../types/index.js";
|
|
8
|
+
export declare const meta: CommandMeta;
|
|
9
|
+
export declare function mv(args: CommandArgs, globalOpts: GlobalOpts): Promise<void>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mv command: Move a file to a different folder in cloud drive.
|
|
3
|
+
*
|
|
4
|
+
* The Feishu move API is asynchronous — it returns a task_id which
|
|
5
|
+
* must be polled via taskCheck until completion.
|
|
6
|
+
*/
|
|
7
|
+
import { createClient, fetchWithAuth } from "../client.js";
|
|
8
|
+
import { CliError } from "../utils/errors.js";
|
|
9
|
+
import { FEATURE_SCOPE_GROUPS } from "../scopes.js";
|
|
10
|
+
import { ensureScopes } from "../utils/scope-prompt.js";
|
|
11
|
+
import { resolveDocument } from "../utils/document-resolver.js";
|
|
12
|
+
import { validateToken } from "../utils/validate.js";
|
|
13
|
+
const POLL_INTERVAL_MS = 1000;
|
|
14
|
+
const POLL_TIMEOUT_MS = 30_000;
|
|
15
|
+
export const meta = {
|
|
16
|
+
options: {},
|
|
17
|
+
positionals: true,
|
|
18
|
+
handler: mv,
|
|
19
|
+
};
|
|
20
|
+
export async function mv(args, globalOpts) {
|
|
21
|
+
const input = args.positionals[0];
|
|
22
|
+
const targetFolder = args.positionals[1];
|
|
23
|
+
if (!input || !targetFolder) {
|
|
24
|
+
throw new CliError("INVALID_ARGS", "用法: feishu-docs mv <url|token> <target_folder_token>");
|
|
25
|
+
}
|
|
26
|
+
validateToken(targetFolder, "target_folder_token");
|
|
27
|
+
const { authInfo: rawAuthInfo } = await createClient(globalOpts);
|
|
28
|
+
const authInfo = await ensureScopes(rawAuthInfo, FEATURE_SCOPE_GROUPS.drive.scopes, globalOpts);
|
|
29
|
+
const doc = await resolveDocument(authInfo, input);
|
|
30
|
+
const fileToken = doc.objToken;
|
|
31
|
+
const type = doc.objType;
|
|
32
|
+
const moveRes = await fetchWithAuth(authInfo, `/open-apis/drive/v1/files/${encodeURIComponent(fileToken)}/move`, {
|
|
33
|
+
method: "POST",
|
|
34
|
+
body: { type, folder_token: targetFolder },
|
|
35
|
+
});
|
|
36
|
+
const taskId = moveRes?.data
|
|
37
|
+
?.task_id;
|
|
38
|
+
if (!taskId) {
|
|
39
|
+
throw new CliError("API_ERROR", "移动操作未返回 task_id");
|
|
40
|
+
}
|
|
41
|
+
// Poll until complete
|
|
42
|
+
const deadline = Date.now() + POLL_TIMEOUT_MS;
|
|
43
|
+
while (Date.now() < deadline) {
|
|
44
|
+
await new Promise((r) => setTimeout(r, POLL_INTERVAL_MS));
|
|
45
|
+
const checkRes = await fetchWithAuth(authInfo, `/open-apis/drive/v1/files/task_check`, { params: { task_id: taskId } });
|
|
46
|
+
const status = checkRes?.data
|
|
47
|
+
?.status;
|
|
48
|
+
if (status === "success") {
|
|
49
|
+
if (globalOpts.json) {
|
|
50
|
+
process.stdout.write(JSON.stringify({
|
|
51
|
+
success: true,
|
|
52
|
+
file_token: fileToken,
|
|
53
|
+
folder_token: targetFolder,
|
|
54
|
+
}) + "\n");
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
process.stdout.write(`已移动 ${fileToken} 到文件夹 ${targetFolder}\n`);
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
if (status === "fail") {
|
|
62
|
+
throw new CliError("API_ERROR", "移动操作失败");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
throw new CliError("API_ERROR", `移动操作超时(${POLL_TIMEOUT_MS / 1000}秒),task_id: ${taskId}`, { retryable: true });
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=mv.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mv.js","sourceRoot":"","sources":["../../src/commands/mv.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/share.d.ts
CHANGED
package/dist/commands/share.js
CHANGED
|
@@ -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 { createClient, fetchWithAuth } from "../client.js";
|
|
5
5
|
import { CliError } from "../utils/errors.js";
|
|
@@ -22,6 +22,18 @@ export const meta = {
|
|
|
22
22
|
positionals: true,
|
|
23
23
|
handler: add,
|
|
24
24
|
},
|
|
25
|
+
remove: {
|
|
26
|
+
options: {},
|
|
27
|
+
positionals: true,
|
|
28
|
+
handler: remove,
|
|
29
|
+
},
|
|
30
|
+
update: {
|
|
31
|
+
options: {
|
|
32
|
+
role: { type: "string" },
|
|
33
|
+
},
|
|
34
|
+
positionals: true,
|
|
35
|
+
handler: update,
|
|
36
|
+
},
|
|
25
37
|
set: {
|
|
26
38
|
options: {
|
|
27
39
|
public: { type: "string" },
|
|
@@ -152,6 +164,65 @@ async function add(args, globalOpts) {
|
|
|
152
164
|
process.stdout.write(`已添加协作者 ${memberId} (${perm})\n`);
|
|
153
165
|
}
|
|
154
166
|
}
|
|
167
|
+
async function remove(args, globalOpts) {
|
|
168
|
+
const input = args.positionals[0];
|
|
169
|
+
const memberId = args.positionals[1];
|
|
170
|
+
if (!input || !memberId) {
|
|
171
|
+
throw new CliError("INVALID_ARGS", "用法: feishu-docs share remove <url> <member>");
|
|
172
|
+
}
|
|
173
|
+
validateMemberId(memberId);
|
|
174
|
+
const { authInfo: rawAuthInfo } = await createClient(globalOpts);
|
|
175
|
+
const authInfo = await ensureDriveScope(rawAuthInfo, globalOpts);
|
|
176
|
+
const { token, type } = await resolveDocForShare(authInfo, input);
|
|
177
|
+
const memberType = detectMemberType(memberId);
|
|
178
|
+
await fetchWithAuth(authInfo, `/open-apis/drive/v1/permissions/${encodeURIComponent(token)}/members/${encodeURIComponent(memberId)}`, {
|
|
179
|
+
method: "DELETE",
|
|
180
|
+
params: { type, member_type: memberType },
|
|
181
|
+
});
|
|
182
|
+
if (globalOpts.json) {
|
|
183
|
+
process.stdout.write(JSON.stringify({
|
|
184
|
+
success: true,
|
|
185
|
+
member_id: memberId,
|
|
186
|
+
member_type: memberType,
|
|
187
|
+
action: "removed",
|
|
188
|
+
}) + "\n");
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
process.stdout.write(`已移除协作者 ${memberId}\n`);
|
|
192
|
+
}
|
|
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>");
|
|
199
|
+
}
|
|
200
|
+
if (!args.role) {
|
|
201
|
+
throw new CliError("INVALID_ARGS", "缺少 --role 参数。可选值: view, edit, manage");
|
|
202
|
+
}
|
|
203
|
+
validateMemberId(memberId);
|
|
204
|
+
const { authInfo: rawAuthInfo } = await createClient(globalOpts);
|
|
205
|
+
const authInfo = await ensureDriveScope(rawAuthInfo, globalOpts);
|
|
206
|
+
const { token, type } = await resolveDocForShare(authInfo, 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
|
+
}
|
|
155
226
|
async function set(args, globalOpts) {
|
|
156
227
|
const input = args.positionals[0];
|
|
157
228
|
if (!input) {
|
|
@@ -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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"}
|
package/package.json
CHANGED
|
@@ -122,12 +122,25 @@ feishu-docs ls <folder_token> # Specific folder
|
|
|
122
122
|
feishu-docs ls --type docx --limit 20 # Filter by type
|
|
123
123
|
```
|
|
124
124
|
|
|
125
|
+
## File Operations
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
feishu-docs mv <url|token> <target_folder_token> # Move file
|
|
129
|
+
feishu-docs cp <url|token> <target_folder_token> # Copy file (auto-named)
|
|
130
|
+
feishu-docs cp <url|token> <target_folder> --name "My Copy"
|
|
131
|
+
feishu-docs mkdir "Folder Name" --parent <folder_token> # Create folder
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
`mv` is asynchronous — it polls the task until complete (max 30s). `cp` without `--name` automatically appends " - 副本" to the original title.
|
|
135
|
+
|
|
125
136
|
## Sharing & Permissions
|
|
126
137
|
|
|
127
138
|
```bash
|
|
128
139
|
feishu-docs share list <url> # View collaborators
|
|
129
140
|
feishu-docs share add <url> user@example.com --role view
|
|
130
141
|
feishu-docs share add <url> ou_xxx --role edit
|
|
142
|
+
feishu-docs share remove <url> user@example.com # Remove collaborator
|
|
143
|
+
feishu-docs share update <url> ou_xxx --role manage # Change role
|
|
131
144
|
feishu-docs share set <url> --public tenant # Org-wide readable
|
|
132
145
|
feishu-docs share set <url> --public tenant:edit # Org-wide editable
|
|
133
146
|
feishu-docs share set <url> --public open # Internet-accessible
|
|
@@ -170,6 +183,8 @@ Default auth mode is `auto` — tries user token first, falls back to tenant.
|
|
|
170
183
|
|
|
171
184
|
**Batch extract**: `cat <space_id> --max-docs 50` to dump all docs as markdown for analysis
|
|
172
185
|
|
|
186
|
+
**Organize files**: `mkdir "Reports" --parent <folder>` → `mv <doc> <new_folder>` to organize documents into folders
|
|
187
|
+
|
|
173
188
|
## Limitations
|
|
174
189
|
|
|
175
190
|
- Only `docx` (new document format) is fully supported for read/write
|