@amaster.ai/pi-lark 0.1.6 → 0.1.7
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 +5 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -2
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
- package/skills/lark-apps/SKILL.md +24 -12
- package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
- package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
- package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
- package/skills/lark-apps/creative-design/assets/index.html +27 -0
- package/skills/lark-apps/creative-design/creative-design.md +239 -0
- package/skills/lark-apps/creative-design/references/aily.md +39 -0
- package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
- package/skills/lark-apps/creative-design/references/charts.md +165 -0
- package/skills/lark-apps/creative-design/references/claude.md +36 -0
- package/skills/lark-apps/creative-design/references/codex.md +32 -0
- package/skills/lark-apps/creative-design/references/data-report.md +108 -0
- package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
- package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
- package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
- package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
- package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
- package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
- package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
- package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
- package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
- package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
- package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
- package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
- package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
- package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
- package/skills/lark-apps/references/lark-apps-automation.md +80 -2
- package/skills/lark-apps/references/lark-apps-cache.md +61 -0
- package/skills/lark-apps/references/lark-apps-cloud-dev.md +0 -1
- package/skills/lark-apps/references/lark-apps-create.md +1 -2
- package/skills/lark-apps/references/lark-apps-db.md +1 -1
- package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
- package/skills/lark-apps/references/lark-apps-file.md +2 -2
- package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
- package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
- package/skills/lark-apps/references/lark-apps-init.md +1 -1
- package/skills/lark-apps/references/lark-apps-list.md +1 -1
- package/skills/lark-apps/references/lark-apps-local-dev.md +54 -11
- package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
- package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
- package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
- package/skills/lark-base/SKILL.md +20 -13
- package/skills/lark-base/references/lark-base-cell-value.md +3 -3
- package/skills/lark-base/references/lark-base-data-query.md +11 -4
- package/skills/lark-base/references/lark-base-field-create.md +4 -0
- package/skills/lark-base/references/lark-base-field-json.md +4 -4
- package/skills/lark-base/references/lark-base-field-update.md +17 -1
- package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
- package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
- package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
- package/skills/lark-base/references/lark-base-form-submit.md +16 -7
- package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
- package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
- package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
- package/skills/lark-base/references/lark-base-role-guide.md +11 -0
- package/skills/lark-base/references/lark-base-view-set-filter.md +11 -137
- package/skills/lark-base/references/role-config.md +31 -5
- package/skills/lark-calendar/SKILL.md +14 -8
- package/skills/lark-calendar/references/lark-calendar-create.md +6 -5
- package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-room-find.md +2 -1
- package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +1 -0
- package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -1
- package/skills/lark-calendar/references/lark-calendar-update.md +10 -4
- package/skills/lark-contact/SKILL.md +19 -3
- package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
- package/skills/lark-doc/references/lark-doc-fetch.md +10 -2
- package/skills/lark-doc/references/lark-doc-whiteboard.md +9 -8
- package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +41 -0
- package/skills/lark-doc/references/lark-doc-xml.md +4 -3
- package/skills/lark-drive/SKILL.md +25 -45
- package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
- package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
- package/skills/lark-drive/references/lark-drive-apply-permission.md +2 -2
- package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
- package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
- package/skills/lark-drive/references/lark-drive-comment-location.md +9 -15
- package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
- package/skills/lark-drive/references/lark-drive-download.md +5 -1
- package/skills/lark-drive/references/lark-drive-list-comments.md +25 -68
- package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
- package/skills/lark-drive/references/lark-drive-member-add.md +2 -2
- package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
- package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
- package/skills/lark-drive/references/lark-drive-preview.md +11 -1
- package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
- package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
- package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
- package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
- package/skills/lark-drive/references/lark-drive-search.md +7 -1
- package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
- package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
- package/skills/lark-drive/references/lark-drive-upload.md +1 -0
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
- package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
- package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
- package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
- package/skills/lark-event/SKILL.md +1 -0
- package/skills/lark-event/references/lark-event-application.md +38 -0
- package/skills/lark-im/SKILL.md +1 -1
- package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
- package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
- package/skills/lark-im/references/card/resource/icons.md +14 -0
- package/skills/lark-im/references/lark-im-flag-list.md +8 -7
- package/skills/lark-okr/SKILL.md +71 -26
- package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
- package/skills/lark-okr/references/lark-okr-create.md +173 -0
- package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
- package/skills/lark-okr/references/lark-okr-entities.md +1 -0
- package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
- package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
- package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
- package/skills/lark-slides/SKILL.md +115 -68
- package/skills/lark-slides/references/asset-planning.md +6 -4
- package/skills/lark-slides/references/iconpark.md +2 -2
- package/skills/lark-slides/references/lark-slides-create.md +16 -8
- package/skills/lark-slides/references/lark-slides-history.md +132 -0
- package/skills/lark-slides/references/lark-slides-media-upload.md +2 -3
- package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
- package/skills/lark-slides/references/lark-slides-replace-slide.md +0 -3
- package/skills/lark-slides/references/lark-slides-screenshot.md +4 -4
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-create.md +219 -0
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +6 -5
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
- package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
- package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +65 -30
- package/skills/lark-slides/references/planning-layer.md +11 -10
- package/skills/lark-slides/references/slides_chart_demo.xml +1416 -1
- package/skills/lark-slides/references/slides_xml_schema_definition.xml +492 -76
- package/skills/lark-slides/references/troubleshooting.md +25 -7
- package/skills/lark-slides/references/validation-checklist.md +53 -16
- package/skills/lark-slides/references/visual-planning.md +25 -22
- package/skills/lark-slides/references/xml-schema-quick-ref.md +281 -45
- package/skills/lark-slides/scripts/sxsd_validator.py +908 -0
- package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1650 -165
- package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +3139 -513
- package/skills/lark-task/SKILL.md +7 -0
- package/skills/lark-task/references/lark-task-complete.md +6 -2
- package/skills/lark-task/references/lark-task-create.md +9 -0
- package/skills/lark-task/references/lark-task-update.md +6 -2
- package/skills/lark-whiteboard/SKILL.md +13 -12
- package/skills/lark-whiteboard/elements/layout.md +1 -1
- package/skills/lark-whiteboard/elements/schema.md +2 -2
- package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +15 -15
- package/skills/lark-whiteboard/references/lark-whiteboard-update.md +3 -3
- package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +7 -17
- package/skills/lark-whiteboard/routes/dsl.md +3 -3
- package/skills/lark-whiteboard/routes/mermaid.md +2 -2
- package/skills/lark-whiteboard/routes/svg-edit.md +4 -4
- package/skills/lark-whiteboard/routes/svg.md +11 -6
- package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
- package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
- package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
- package/skills/lark-whiteboard/scenes/treemap.md +1 -1
- package/skills/lark-wiki/SKILL.md +1 -0
- package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -80
- package/skills/lark-slides/references/examples.md +0 -91
- package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
- package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
- package/skills/lark-slides/references/slide-templates.md +0 -201
- package/skills/lark-slides/references/slides_demo.xml +0 -226
- package/skills/lark-slides/references/xml-format-guide.md +0 -433
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# drive +resolve-comment
|
|
2
|
+
|
|
3
|
+
> **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和权限处理。
|
|
4
|
+
|
|
5
|
+
把一条评论标记为已解决。反向操作——重新打开已解决评论——是独立命令 [`lark-drive-restore-comment.md`](lark-drive-restore-comment.md)。
|
|
6
|
+
|
|
7
|
+
用户说“把这条评论标记为已处理 / 已完成 / 关闭”对应本命令。
|
|
8
|
+
|
|
9
|
+
## 命令
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# 推荐:完整 URL + 评论 ID
|
|
13
|
+
lark-cli drive +resolve-comment --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" --comment-id '<id>'
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 参数
|
|
17
|
+
|
|
18
|
+
| 参数 | 必填 | 说明 |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| `--url` | 与 `--token` 二选一 | 推荐入口。支持 doc/docx/sheet/file/slides/base/bitable/apps/wiki URL;apps 妙搭 URL 使用 `/page/<token>`;wiki URL 会自动解析到真实文档。 |
|
|
21
|
+
| `--token` | 与 `--url` 二选一 | 裸 token 或 URL。裸 token 必须搭配 `--type`;wiki token 使用 `--type wiki`。 |
|
|
22
|
+
| `--type` | 裸 token 时必填 | 传 token 对应类型:`doc`、`docx`、`sheet`、`file`、`slides`、`bitable`、`base`、`apps`、`wiki`。wiki token 使用 `wiki`;传 `base` 时,CLI 会按 `bitable` 类型处理。 |
|
|
23
|
+
| `--comment-id` | 是 | 要解决的评论 ID;来自 `drive +list-comments` 的 `items[].comment_id` |
|
|
24
|
+
|
|
25
|
+
## 行为说明
|
|
26
|
+
|
|
27
|
+
- 这是写操作。
|
|
28
|
+
- 对同一条评论连续翻转解决状态可能触发服务端限流(HTTP 429);连续调用之间留间隔或短暂延迟后重试。
|
|
29
|
+
|
|
30
|
+
## 输出
|
|
31
|
+
|
|
32
|
+
```json
|
|
33
|
+
{
|
|
34
|
+
"file_token": "docx_token",
|
|
35
|
+
"file_type": "docx",
|
|
36
|
+
"comment_id": "<comment_id>",
|
|
37
|
+
"action": "resolve",
|
|
38
|
+
"is_solved": true,
|
|
39
|
+
"updated": true
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 参考
|
|
44
|
+
|
|
45
|
+
- [lark-drive-restore-comment](lark-drive-restore-comment.md) -- 恢复(重新打开)评论
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# drive +restore-comment
|
|
2
|
+
|
|
3
|
+
> **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和权限处理。
|
|
4
|
+
|
|
5
|
+
恢复 / 重新打开一条已解决的评论。反向操作——把评论标记为已解决——是独立命令 [`lark-drive-resolve-comment.md`](lark-drive-resolve-comment.md)。
|
|
6
|
+
|
|
7
|
+
用户说“重新打开 / 取消解决 / 恢复这条评论”对应本命令。
|
|
8
|
+
|
|
9
|
+
## 命令
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
# 推荐:完整 URL + 评论 ID
|
|
13
|
+
lark-cli drive +restore-comment --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" --comment-id '<id>'
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 参数
|
|
17
|
+
|
|
18
|
+
| 参数 | 必填 | 说明 |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| `--url` | 与 `--token` 二选一 | 推荐入口。支持 doc/docx/sheet/file/slides/base/bitable/apps/wiki URL;apps 妙搭 URL 使用 `/page/<token>`;wiki URL 会自动解析到真实文档。 |
|
|
21
|
+
| `--token` | 与 `--url` 二选一 | 裸 token 或 URL。裸 token 必须搭配 `--type`;wiki token 使用 `--type wiki`。 |
|
|
22
|
+
| `--type` | 裸 token 时必填 | 传 token 对应类型:`doc`、`docx`、`sheet`、`file`、`slides`、`bitable`、`base`、`apps`、`wiki`。wiki token 使用 `wiki`;传 `base` 时,CLI 会按 `bitable` 类型处理。 |
|
|
23
|
+
| `--comment-id` | 是 | 要恢复的评论 ID;来自 `drive +list-comments` 的 `items[].comment_id` |
|
|
24
|
+
|
|
25
|
+
## 行为说明
|
|
26
|
+
|
|
27
|
+
- 这是写操作。
|
|
28
|
+
- **找目标评论必须带 `--solved-status`**:`drive +list-comments` 默认只返回未解决评论,本命令的目标恰好是已解决评论,直接用默认口径查会一条都找不到。先用 `drive +list-comments --solved-status true`(只看已解决)或 `--solved-status all`(全部)取 `items[].comment_id`。
|
|
29
|
+
- 对同一条评论连续翻转解决状态可能触发服务端限流(HTTP 429);连续调用之间留间隔或短暂延迟后重试。
|
|
30
|
+
|
|
31
|
+
## 输出
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"file_token": "docx_token",
|
|
36
|
+
"file_type": "docx",
|
|
37
|
+
"comment_id": "<comment_id>",
|
|
38
|
+
"action": "restore",
|
|
39
|
+
"is_solved": false,
|
|
40
|
+
"updated": true
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## 参考
|
|
45
|
+
|
|
46
|
+
- [lark-drive-resolve-comment](lark-drive-resolve-comment.md) -- 解决(标记已解决)评论
|
|
@@ -26,11 +26,16 @@
|
|
|
26
26
|
> **`--query` 最长 30 个字符**:按字符数(Unicode 码点)算,中文每字算 1 个,与 ASCII 同口径;超过 30 会被服务端拒绝(`99992402 field validation failed`,**是报错不是截断**)。长关键词必须先压缩成核心实体 + 主题词(如把整句问题压成「项目名 + 主题」再搜),不要把整句原问塞进 `--query`。
|
|
27
27
|
>
|
|
28
28
|
> **列表型请求不要硬塞关键词**:如果用户只是要求"我这月创建的所有文档"、"最近半年我编辑过的文档"、"按类型分类统计"这类范围浏览 / 汇总请求,且没有给出标题片段或业务关键词,应使用 `--query ""` 搭配 `--created-by-me`、`--mine`、`--created-*`、`--edited-*`、`--doc-types` 等过滤条件。不要把"查找"、"所有文档"、"最近更新过"、"按类型分类统计"这类动作词或统计意图放进 `--query`,否则会把本来应靠 filter 命中的结果过度收窄。
|
|
29
|
+
>
|
|
30
|
+
> **标题词 + 正文词联合搜索**:如果用户同时给出标题关键词和正文关键词,并要求同一资源同时满足两项条件,优先执行一条普通联合搜索:`lark-cli drive +search --query "标题词 正文词"`,并在同一条命令中叠加用户指定的 `--folder-tokens`、`--doc-types` 等过滤条件。不要把这种联合搜索拆成“标题搜索 + 正文搜索”后自行拼交集;也不要把 `--only-title` 或 `intitle:` 用作主候选路径。只有用户明确只查标题时,才使用 `--only-title` 或 `intitle:`。
|
|
31
|
+
>
|
|
32
|
+
> 用户要求最终返回 N 条时,N 是输出上限,不等于 `--page-size N`。逐页根据 `title` 和 `summary_highlighted` 保留同时满足两项条件的候选;有效候选不足 N 且 `has_more=true` 时,保持同一 query 和过滤条件,使用 `--page-token` 继续,最多检查 3 页。摘要不足以判断正文条件时,只对标题已匹配的候选串行读取正文,确认一个再处理下一个,找到 N 条后停止;不要并发拉取正文。检查 3 页后仍不足时,返回已确认结果并建议用户调整标题词、正文词或搜索范围,不要无界扫描。
|
|
29
33
|
|
|
30
34
|
### 自然语言 → 命令映射速查
|
|
31
35
|
|
|
32
36
|
| 用户说 | 命令 |
|
|
33
37
|
|---|---|
|
|
38
|
+
| 标题含某词且正文含某词,限定文件夹内最多 N 个结果(N 为最终输出上限;按上文规则分页筛选,勿作为 `--page-size`) | `lark-cli drive +search --query "标题词 正文词" --folder-tokens <FOLDER_TOKEN>` |
|
|
34
39
|
| 我这月创建的所有文档,按类型分类统计 | `lark-cli drive +search --query "" --created-by-me --created-since "<YYYY-MM-DD>" --created-until "<YYYY-MM-DD>"` |
|
|
35
40
|
| 最近半年我编辑过的文档,看看哪些最近更新过 | `lark-cli drive +search --query "" --edited-since 6m --sort edit_time` |
|
|
36
41
|
| 最近一个月我编辑过的文档 | `lark-cli drive +search --query "" --edited-since 1m` |
|
|
@@ -96,6 +101,7 @@ lark-cli drive +search --query 方案 --page-token '<PAGE_TOKEN>'
|
|
|
96
101
|
- "某项目发布会重点" → 先搜项目名 + "发布会" + "重点/功能/一览",再按标题和摘要判断是否需要只搜标题或扩大到正文。
|
|
97
102
|
|
|
98
103
|
每轮扩展都要保留非污染、可解释的 evidence(URL/token/标题/摘要);不能因为某个扩展词搜到高相似标题就跳过证据核验。
|
|
104
|
+
扩展 query 时,优先保留用户已经指定的空间、文件夹、群聊、人员、时间和类型等 filter;确需放宽检索范围时,先向用户说明原因并征得确认。
|
|
99
105
|
|
|
100
106
|
## 参数
|
|
101
107
|
|
|
@@ -216,7 +222,7 @@ stdout 的 JSON 输出不受影响。`open_time` / `create_time` 不做 snap。
|
|
|
216
222
|
- **日历表达**("上个月"、"上周"、"本月"、"前年"、"今年 3 月"等明确日历单位)→ **必须算出绝对 `YYYY-MM-DD` 边界**(如"上个月" = 上一个日历月的 1 号 → 当月 1 号),**不要近似成 `1m`/`2m`**:CLI 里 `m` 是固定 30 天、`y` 固定 365 天,跟日历差 0-3 天,月末月初尤其容易偏出去
|
|
217
223
|
- 文档中的 `"<YYYY-MM-DD>"` 是运行时占位符:执行命令前按当前日期计算并替换。例如"本月"应替换为本月第一天和下月第一天,不要把示例生成时的月份硬编码进答案
|
|
218
224
|
- 绝对日期 → 直接 `YYYY-MM-DD` 或 RFC3339
|
|
219
|
-
- **分页策略**:默认只返回第一页,并说明 `has_more`
|
|
225
|
+
- **分页策略**:默认只返回第一页,并说明 `has_more` 和下一页命令。用户明确要"全部 / 全量 / 继续翻"时继续;标题词 + 正文词联合搜索尚未找到足够的有效 Top N 候选时,按上文规则最多检查 3 页。其他场景单轮翻页上限 5 页。
|
|
220
226
|
- **原始返回**:用户要求"原始数据"、"接口返回"时用 `--format json`,不做客户端精确过滤或摘要重写。
|
|
221
227
|
|
|
222
228
|
## 权限
|
|
@@ -28,7 +28,7 @@ lark-cli drive +secure-label-list --page-size 10 --lang zh
|
|
|
28
28
|
```bash
|
|
29
29
|
lark-cli drive +secure-label-update \
|
|
30
30
|
--token "https://example.feishu.cn/docx/doxcnxxxx" \
|
|
31
|
-
--label-id
|
|
31
|
+
--label-id '<label-id>' # replace $LABEL_ID before running
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
参数:
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# drive +update-reply
|
|
2
|
+
|
|
3
|
+
> **前置条件:** 先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) 了解认证、全局参数和权限处理;`--content` 完整格式见 [`lark-drive-comment-content.md`](lark-drive-comment-content.md)。
|
|
4
|
+
|
|
5
|
+
整体替换某条回复的内容。
|
|
6
|
+
|
|
7
|
+
## 命令
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 推荐:完整 URL + 评论 ID + 回复 ID + 新内容(整体替换,无局部编辑)
|
|
11
|
+
lark-cli drive +update-reply --url "https://example.larksuite.com/docx/<DOCX_TOKEN>" --comment-id '<id>' --reply-id '<id>' --content '[{"type":"text","text":"新内容"}]'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## 参数
|
|
15
|
+
|
|
16
|
+
| 参数 | 必填 | 说明 |
|
|
17
|
+
|---|---|---|
|
|
18
|
+
| `--url` | 与 `--token` 二选一 | 推荐入口。支持 doc/docx/sheet/file/slides/base/bitable/apps/wiki URL;apps 妙搭 URL 使用 `/page/<token>`;wiki URL 会自动解析到真实文档。 |
|
|
19
|
+
| `--token` | 与 `--url` 二选一 | 裸 token 或 URL。裸 token 必须搭配 `--type`;wiki token 使用 `--type wiki`。 |
|
|
20
|
+
| `--type` | 裸 token 时必填 | 传 token 对应类型:`doc`、`docx`、`sheet`、`file`、`slides`、`bitable`、`base`、`apps`、`wiki`。wiki token 使用 `wiki`;传 `base` 时,CLI 会按 `bitable` 类型处理。 |
|
|
21
|
+
| `--comment-id` | 是 | 回复所属的评论 ID;来自 `drive +list-comments` |
|
|
22
|
+
| `--reply-id` | 是 | 要更新的回复 ID;来自 `drive +list-replies` 的 `items[].reply_id` |
|
|
23
|
+
| `--content` | 是 | 新的 `reply_elements` JSON,`type=text` 文本自动转义;完整 schema 见 [`lark-drive-comment-content.md`](lark-drive-comment-content.md) |
|
|
24
|
+
|
|
25
|
+
## 行为说明
|
|
26
|
+
|
|
27
|
+
- 更新是整体替换:新 `content` 完全覆盖旧内容,没有局部修改语义。
|
|
28
|
+
- **只能更新当前身份自己创建的回复**;更新他人回复返回 API 错误 `1069303 forbidden`。执行前先用 `+list-replies` 核对 `items[].user_id`(open_id),并用创建该回复的同一个 `--as` 身份执行。
|
|
29
|
+
- 更新评论卡片的根回复(第一页 `items[0]`,即创建最早的一条 reply)等价于改写这条评论的正文本身;改写前先和用户确认改的是回复还是评论正文。
|
|
30
|
+
|
|
31
|
+
## 输出
|
|
32
|
+
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"file_token": "docx_token",
|
|
36
|
+
"file_type": "docx",
|
|
37
|
+
"comment_id": "<comment_id>",
|
|
38
|
+
"reply_id": "<reply_id>",
|
|
39
|
+
"updated": true
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 参考
|
|
44
|
+
|
|
45
|
+
- [lark-drive-comment-content](lark-drive-comment-content.md) -- `--content` 格式
|
|
46
|
+
- [lark-drive-list-replies](lark-drive-list-replies.md) -- 获取回复与 reply_id
|
|
@@ -15,6 +15,8 @@
|
|
|
15
15
|
lark-cli drive +inspect --url '<url>' --as user --format json
|
|
16
16
|
```
|
|
17
17
|
|
|
18
|
+
`drive +inspect` 支持 Drive folder,并且是受支持 Drive URL 的统一解析入口。对文件夹自身权限设置,先通过 `+inspect` 解析 URL,或直接使用 `drive +permission-get-setting --token '<folder_url>'`;传 bare folder token 时必须显式传 `--type folder`。
|
|
19
|
+
|
|
18
20
|
`/wiki/space/<space_id>` URL 是 Wiki space 范围,不要用 `drive +inspect` 当作单文档解析;直接提取 `space_id` 后进入 `DISCOVER_TARGETS`。
|
|
19
21
|
|
|
20
22
|
## 目标发现
|
|
@@ -25,16 +27,16 @@ lark-cli drive +inspect --url '<url>' --as user --format json
|
|
|
25
27
|
lark-cli wiki +node-list \
|
|
26
28
|
--space-id '<space_id>' --page-size 50 \
|
|
27
29
|
--page-all --page-limit 0 \
|
|
28
|
-
--as user --format json
|
|
30
|
+
--as user --format json # replace $SPACE_ID before running
|
|
29
31
|
|
|
30
32
|
lark-cli wiki +node-list \
|
|
31
33
|
--space-id '<space_id>' --parent-node-token '<node_token>' --page-size 50 \
|
|
32
34
|
--page-all --page-limit 0 \
|
|
33
|
-
--as user --format json
|
|
35
|
+
--as user --format json # replace $SPACE_ID before running
|
|
34
36
|
|
|
35
37
|
lark-cli wiki +node-list \
|
|
36
38
|
--space-id '<space_id>' --page-token '<PAGE_TOKEN>' --page-size 50 \
|
|
37
|
-
--as user --format json
|
|
39
|
+
--as user --format json # replace $SPACE_ID before running
|
|
38
40
|
```
|
|
39
41
|
|
|
40
42
|
解析返回时使用 `data.nodes`,不要读取顶层 `items`。`--page-limit 0` 表示当前层分页不设页数上限;`--page-all` 只覆盖当前 `space-id` / `parent-node-token` 范围内的分页,不会递归子节点。节点 `has_child=true` 时,必须继续以该节点的 `node_token` 作为 `--parent-node-token` 递归读取。
|
|
@@ -61,14 +63,42 @@ lark-cli drive metas batch_query \
|
|
|
61
63
|
--as user --format json
|
|
62
64
|
```
|
|
63
65
|
|
|
64
|
-
|
|
66
|
+
读取权限设置:
|
|
65
67
|
|
|
66
68
|
```bash
|
|
67
|
-
lark-cli drive permission
|
|
68
|
-
--
|
|
69
|
+
lark-cli drive +permission-get-setting \
|
|
70
|
+
--token '<url-or-token>' --type '<type>' \
|
|
69
71
|
--as user --format json
|
|
70
72
|
```
|
|
71
73
|
|
|
74
|
+
裸 folder token 必须显式传 `--type folder`:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
lark-cli drive +permission-get-setting \
|
|
78
|
+
--token '<folder_token>' --type folder \
|
|
79
|
+
--as user --format json
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
通过 URL 读取权限设置时可以省略 `--type`:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
lark-cli drive +permission-get-setting \
|
|
86
|
+
--token '<url>' \
|
|
87
|
+
--as user --format json # replace $LARK_DRIVE_URL before running
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
按需读取直接协作者/授权成员列表:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
lark-cli drive +member-list \
|
|
94
|
+
--token '<token_or_url>' \
|
|
95
|
+
--type '<type>' \
|
|
96
|
+
--fields 'name,type,external_label' \
|
|
97
|
+
--as user --format json
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
`--fields` 默认不传;只有需要名称、协作者类型、头像或外部标签时才显式传。它只声明期望返回的字段,不授予字段级权限:请求用户的 `name` / `avatar` 时还需 `contact:user.base:readonly`(“获取用户基本信息”)。字段权限或数据可见性不足时,接口仍可能成功但省略相应字段;缺字段不能解释为空值。
|
|
101
|
+
|
|
72
102
|
按需读取访问统计:
|
|
73
103
|
|
|
74
104
|
```bash
|
|
@@ -160,9 +190,9 @@ lark-cli drive +secure-label-list \
|
|
|
160
190
|
```bash
|
|
161
191
|
lark-cli drive +secure-label-update \
|
|
162
192
|
--token '<url>' \
|
|
163
|
-
--label-id '<label-id>' --as user --format json
|
|
193
|
+
--label-id '<label-id>' --as user --format json # replace $LABEL_ID before running
|
|
164
194
|
|
|
165
195
|
lark-cli drive +secure-label-update \
|
|
166
196
|
--token '<bare-token>' --type '<type>' \
|
|
167
|
-
--label-id '<label-id>' --as user --format json
|
|
197
|
+
--label-id '<label-id>' --as user --format json # replace $LABEL_ID before running
|
|
168
198
|
```
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
- 多目标明确列表默认输出逐目标诊断摘要;不要因为目标数大于 1 就套用容器递归发现报告。
|
|
28
28
|
- 用户可见结论默认跟随用户当前语言。用户用中文提问时输出中文,用户用英文提问时输出英文;混合语言时跟随主要语言。
|
|
29
29
|
- 单目标公开性判断默认输出业务表达,不直接展示 `link_share_entity`、`external_access_entity`、`external_access` 等底层字段名;只有用户要求 raw evidence、排障,或完整清单 / artifact 场景才展示底层字段。
|
|
30
|
-
- 中文用户可见输出中,`permission_public` / `public permission`
|
|
30
|
+
- 中文用户可见输出中,`permission_public` / `public permission` 默认译为“目标公共访问和协作权限设置”;可在摘要里简称“公共访问与协作设置”。优先按实际返回字段解释公开访问、分享、协作者管理、安全与评论设置;复制内容、创建副本、打印、下载等字段只有在当前 CLI schema 和实际响应返回时才可判断。只有命令名、schema 字段、raw evidence、排障信息和完整 artifact 字段名保留英文原文。
|
|
31
31
|
- 容器目标默认输出安全诊断报告摘要:一句话结论、覆盖情况、风险分级、优先处理对象、建议下一步和剩余限制。
|
|
32
32
|
- 容器目标不要把风险按数量机械排序;外部公开、允许对外分享、缺失密级标签优先于复制 / 下载 / 评论这类依赖策略的候选项。
|
|
33
33
|
- 用户没有提供明确 policy 时,使用“候选风险 / 待复核 / 待策略确认”,不要写“违规 / 已泄露 / 已外部访问”。
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
- 当摘要未展示全部风险对象时,必须明确“完整清单包含 <count> 条”,并提供生成 Markdown / CSV / 飞书文档风险清单或整改 dry-run 的下一步。
|
|
37
37
|
- 只要发现需要处理的对象,最终回复必须给出可执行下一步 CTA。不能因为默认只读,就只报告风险后结束。
|
|
38
38
|
- 完整风险清单是后续治理选择的输入;Markdown / CSV / 飞书文档报告必须使用同一套字段和稳定 `risk_id`。
|
|
39
|
-
-
|
|
39
|
+
- 写入前必须使用确认模板;权限申请、目标公共访问和协作权限设置修改、owner 转移、密级标签更新分别确认。
|
|
40
40
|
- 最终回复必须包含已完成事项、验证结果和剩余限制;异步权限申请审批不能表述为已完成授权。
|
|
41
41
|
|
|
42
42
|
## Semantic Rendering
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
| `lock_switch=true` | `lock_state=locked_not_inheriting` | 已限制权限,不再继承父级页面权限 | The node is locked and no longer inherits parent-page permissions |
|
|
76
76
|
| `lock_switch=false` | `lock_state=not_locked_or_inheriting` | 未限制权限,可能继承父级页面权限 | The node is not locked and may inherit parent-page permissions |
|
|
77
77
|
| field absent / unsupported | `<state>=unknown` | 当前 schema 未返回,无法判断 | The current schema did not return this field, so it is unknown |
|
|
78
|
-
| `check_scope=current_public_permission_only` | `check_scope=current_public_permission_only` |
|
|
78
|
+
| `check_scope=current_public_permission_only` | `check_scope=current_public_permission_only` | 本次判断的是当前目标公共访问和协作权限设置,不是协作者名单或历史权限变更审计 | This check covers the target's current public access and collaboration settings, not collaborator-list or historical permission-change auditing |
|
|
79
79
|
| `sec_label_name` missing | `sec_label=missing` | 缺少密级标签 | Security label is missing |
|
|
80
80
|
|
|
81
81
|
## 定位与治理动作
|
|
@@ -165,7 +165,7 @@ Evidence fields:
|
|
|
165
165
|
|
|
166
166
|
覆盖情况:
|
|
167
167
|
- 用户提供目标:<input_target_count>;成功解析:<resolved_count>
|
|
168
|
-
-
|
|
168
|
+
- 成功读取目标公共访问和协作权限设置:<permission_checked_count>;读取失败 / 不支持 / 无权限:<failed_or_unsupported_count>
|
|
169
169
|
|
|
170
170
|
逐目标结果(1-10 个目标默认全部展示;超过 10 个时按 `摘要清单展开规则` 展示,并提示生成完整风险清单):
|
|
171
171
|
|
|
@@ -233,7 +233,7 @@ URL:<url-or-token-if-url-unavailable>
|
|
|
233
233
|
|
|
234
234
|
覆盖情况:
|
|
235
235
|
- 当前身份可见目标:<visible_count>
|
|
236
|
-
-
|
|
236
|
+
- 已成功检查目标公共访问和协作权限设置:<permission_checked_count>
|
|
237
237
|
- 读取失败 / 已删除 / 无权限:<failed_count>
|
|
238
238
|
- 未覆盖能力:<collaborator_list / inheritance / audit_log / view_records / none>
|
|
239
239
|
|
|
@@ -355,8 +355,8 @@ Agent 必须回复:
|
|
|
355
355
|
- 字段变更:
|
|
356
356
|
- <risk_id> <path> (<url-or-token>): <field> <old> -> <new>
|
|
357
357
|
- 跳过项:<unsupported / no manage_public / unsupported type / missing policy>
|
|
358
|
-
- 验证方式:执行后重新读取 <元数据 /
|
|
359
|
-
-
|
|
358
|
+
- 验证方式:执行后重新读取 <元数据 / 目标公共访问和协作权限设置>
|
|
359
|
+
- 有限回滚范围:<目标公共访问和协作权限设置快照字段 / 不适用>
|
|
360
360
|
|
|
361
361
|
请确认是否进入写入确认。
|
|
362
362
|
```
|
|
@@ -407,8 +407,8 @@ Agent 必须回复:
|
|
|
407
407
|
- 风险:<risk_level>
|
|
408
408
|
- 字段变更:
|
|
409
409
|
- <field>: <old> -> <new>
|
|
410
|
-
- 验证方式:执行后重新读取 <元数据 /
|
|
411
|
-
-
|
|
410
|
+
- 验证方式:执行后重新读取 <元数据 / 目标公共访问和协作权限设置>
|
|
411
|
+
- 有限回滚材料:<目标公共访问和协作权限设置快照 / 不适用>
|
|
412
412
|
|
|
413
413
|
请确认是否执行。
|
|
414
414
|
```
|
|
@@ -419,6 +419,6 @@ Agent 必须回复:
|
|
|
419
419
|
已完成:<read checks / writes>
|
|
420
420
|
验证:<fresh read result or async permission-request approval note>
|
|
421
421
|
清单状态:<risk_id status updates / not applicable>
|
|
422
|
-
|
|
422
|
+
回滚材料:<目标公共访问和协作权限设置快照 / 不适用>
|
|
423
423
|
剩余限制:<unsupported_checks / partial facts / approvals>
|
|
424
424
|
```
|
|
@@ -38,11 +38,11 @@ Risk / Structure: `R2` / `S2`
|
|
|
38
38
|
- 目录组织、迁移、归档或清理;这类需求应使用知识整理 workflow。
|
|
39
39
|
- 内容审查、过期内容判断或知识质量评分。
|
|
40
40
|
- backup owner 补充、部门 / 项目负责人绑定、协作者创建 / 撤销、成员列表审计;本 workflow 只支持把 owner 转移给每个目标明确指定的新 owner,不建模 backup owner 或负责人绑定关系。
|
|
41
|
-
-
|
|
41
|
+
- 文件夹自身公开权限审计或修复。文件夹自身权限设置可以用 `drive +permission-get-setting` 读取;写入是否支持必须以运行时 schema 和明确需求为准,不能猜测执行 `patch type=folder`。
|
|
42
42
|
- 当前身份无法枚举到的不可见文档的完整发现;只能处理已发现目标,或用户显式提供的 URL / token。
|
|
43
43
|
- 未按范围确认的批量写入。
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
协作者列表读取只覆盖当前目标的直接协作者/授权成员:可使用 `drive +member-list` 。
|
|
46
46
|
|
|
47
47
|
## Progressive Load Map
|
|
48
48
|
|
|
@@ -53,7 +53,7 @@ Risk / Structure: `R2` / `S2`
|
|
|
53
53
|
| `PARSE_INTENT` | 本文件、[`lark-drive-workflow.md`](lark-drive-workflow.md)、[`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md) |
|
|
54
54
|
| `TARGET_INSPECT` | [`lark-drive-inspect.md`](lark-drive-inspect.md) |
|
|
55
55
|
| `DISCOVER_TARGETS` | 容器范围时读取 [`../../lark-wiki/references/lark-wiki-node-list.md`](../../lark-wiki/references/lark-wiki-node-list.md) 或 [`lark-drive-files-list.md`](lark-drive-files-list.md) |
|
|
56
|
-
| `FACT_READ` | `lark-cli schema drive.metas.batch_query
|
|
56
|
+
| `FACT_READ` | `lark-cli schema drive.metas.batch_query`;涉及权限设置读取时使用 `drive +permission-get-setting`;涉及活跃度、访问复核或生命周期判断时再读取 `lark-cli schema drive.file.statistics.get` 和 `lark-cli schema drive.file.view_records.list` |
|
|
57
57
|
| `RISK_ASSESS` | 本文件的 `Risk Classification` |
|
|
58
58
|
| `EXEC_CONFIRM` | 只为用户选择的动作读取 [`lark-drive-apply-permission.md`](lark-drive-apply-permission.md)、[`lark-drive-secure-label.md`](lark-drive-secure-label.md),或 `lark-cli schema drive.permission.public.patch` / `lark-cli schema drive.permission.members.transfer_owner`;需要确认模板时读取 [`lark-drive-workflow-permission-governance-outputs.md`](lark-drive-workflow-permission-governance-outputs.md) |
|
|
59
59
|
| `EXECUTE` | 复用 `EXEC_CONFIRM` 已加载且已确认的写命令上下文 |
|
|
@@ -76,9 +76,9 @@ Risk / Structure: `R2` / `S2`
|
|
|
76
76
|
| State | Protocol Step | Agent MUST Do | User-Facing Output | wait_for_user | Next State |
|
|
77
77
|
|-------|---------------|---------------|--------------------|---------------|------------|
|
|
78
78
|
| `PARSE_INTENT` | `route` / `scope` | 解析 intent、target scope、desired policy,以及只读审计、单目标公开性判断、权限申请、owner 转移还是修复模式;单目标公开性判断设置 `intent=public_exposure_check`、`target_scope=single_resource` | 范围确认;如果缺少目标、新 owner 或期望动作,只问一个澄清问题 | 缺少 target / new owner / action,或容器范围需要用户确认时为 `true` | `TARGET_INSPECT` |
|
|
79
|
-
| `TARGET_INSPECT` | `scope` | 解析单资源、明确列表、Wiki space / node、Drive folder
|
|
79
|
+
| `TARGET_INSPECT` | `scope` | 解析单资源、明确列表、Wiki space / node、Drive folder;Drive folder 直接从 URL 路径或显式 `type=folder` 解析,不调用 `drive +inspect`;保留原始 URL、scope type、canonical token/type | 目标范围表,包含 scope、title/type/token status | 除非解析失败,否则为 `false` | `DISCOVER_TARGETS` or `FACT_READ` |
|
|
80
80
|
| `DISCOVER_TARGETS` | `scope` / `read` | 对 Wiki space / node 或 Drive folder 递归只读枚举,归一化为 `discovered_targets`;记录 `discovery_blockers` | 发现进度和覆盖摘要;不展示内部 cursor/token,除非用户要求 | 除非发现范围无法确认或全部被阻断,否则为 `false` | `FACT_READ` |
|
|
81
|
-
| `FACT_READ` | `read` | 对直接目标或 `discovered_targets` 执行 `drive metas batch_query
|
|
81
|
+
| `FACT_READ` | `read` | 对直接目标或 `discovered_targets` 执行 `drive metas batch_query`;对支持的文件、文件夹或云文档目标执行 `drive +permission-get-setting` 读取自身权限设置;当 `intent=public_exposure_check` 且 `target_scope=single_resource` 时,可复用 `drive +inspect` 返回的 title / URL / type,只补读目标公共访问和协作权限设置;在用户要求活跃度 / 访问复核 / 生命周期判断时读取访问统计和访问记录 | 权限事实摘要、coverage summary、activity facts 和 unsupported checks | 除非所有目标都被 auth 阻断,否则为 `false` | `RISK_ASSESS` |
|
|
82
82
|
| `RISK_ASSESS` | `assess/plan` | 对每个可审计目标生成 `per_target_permission_assessment` 并分类证据;如用户提供 policy,则对照 policy;`public_exposure_check + single_resource` 只渲染单目标结论,不生成 `risk_id`;owner 转移路径生成 `owner_transfer_candidates` / `owner_transfer_plan`;治理路径构建可定位风险清单、访问复核清单、dry-run 整改计划或候选修复计划,完整清单必须生成稳定 `risk_id` | 带 priority、URL、risk_id、owner、sec_label 的 findings、confidence、review items、建议动作和下一步 CTA;单目标公开性判断只输出结论和关键字段 | 治理路径为 `true`,单目标公开性判断为 `false` | `EXEC_CONFIRM` or `DONE` |
|
|
83
83
|
| `EXEC_CONFIRM` | `confirm` | 展示准确写入范围、command family、target count、risk、verification method | 确认请求 | `true` | `EXECUTE` or `DONE` |
|
|
84
84
|
| `EXECUTE` | `execute` | 只执行 `Command Map` 中已确认的写入 | 进度 / 结果摘要 | 除非被阻断,否则为 `false` | `VERIFY` |
|
|
@@ -91,21 +91,23 @@ Risk / Structure: `R2` / `S2`
|
|
|
91
91
|
|
|
92
92
|
| State | Allowed Command Families | Purpose |
|
|
93
93
|
|-------|--------------------------|---------|
|
|
94
|
-
| `TARGET_INSPECT` | `drive +inspect` |
|
|
94
|
+
| `TARGET_INSPECT` | `drive +inspect` | 解析非 folder URL、type、canonical token、title 和 wiki unwrap data;Drive folder 不支持 `+inspect`,必须从 URL 路径或显式 `type=folder` 直接解析 |
|
|
95
95
|
| `DISCOVER_TARGETS` | `wiki +node-list` | 递归发现 Wiki space / node 下当前身份可见的节点 |
|
|
96
96
|
| `DISCOVER_TARGETS` | `drive files list` | 递归发现 Drive folder 下当前身份可见的文件和子文件夹 |
|
|
97
97
|
| `FACT_READ` | `drive metas batch_query` | 读取 title、URL、owner 和 secure-label metadata |
|
|
98
98
|
| `FACT_READ` | `drive permission.public get` | 读取支持类型的文档公共访问和协作权限设置,包括链接分享、对外分享、协作者管理、复制内容、创建副本、打印、下载和评论 |
|
|
99
|
+
| `FACT_READ` | `drive +member-list` | 读取用户显式要求的单目标直接协作者/授权成员列表;不代表完整继承链或历史权限审计 |
|
|
100
|
+
| `FACT_READ` | `drive +permission-get-setting` | 读取支持类型的文件、文件夹或云文档自身权限设置,包括公开访问、分享、协作者管理、安全与评论 |
|
|
99
101
|
| `FACT_READ` | `drive file.statistics get` | 在用户要求活跃度、闲置暴露、生命周期或访问复核时读取文件访问统计 |
|
|
100
102
|
| `FACT_READ` | `drive file.view_records list` | 在用户要求最近访问人、访问复核或低活跃证据时读取访问记录 |
|
|
101
103
|
| `EXEC_CONFIRM` | `drive +secure-label-list` | 提议 label update 前解析可用 secure-label IDs |
|
|
102
|
-
| `EXEC_CONFIRM` | `drive permission.members auth` |
|
|
104
|
+
| `EXEC_CONFIRM` | `drive permission.members auth` | 目标公共访问和协作权限设置修改前检查 `action=manage_public` |
|
|
103
105
|
| `EXEC_CONFIRM` | `lark-cli schema drive.permission.members.transfer_owner` | owner 转移前读取当前字段、支持类型和高风险写入门禁 |
|
|
104
106
|
| `EXECUTE` | `drive +apply-permission` | 向 owner 提交 view/edit access request;只允许单目标、小列表或已明确确认的候选列表逐个执行 |
|
|
105
107
|
| `EXECUTE` | `drive permission.public patch` | 修改已确认的 public/link settings;必须传 `--yes` |
|
|
106
108
|
| `EXECUTE` | `drive permission.members transfer_owner` | 转移已确认目标的 owner;必须传 `--yes` |
|
|
107
109
|
| `EXECUTE` | `drive +secure-label-update` | 设置已确认的 secure-label ID |
|
|
108
|
-
| `VERIFY` | `drive metas batch_query`, `drive permission
|
|
110
|
+
| `VERIFY` | `drive metas batch_query`, `drive +permission-get-setting` | 验证支持的 metadata,包括 owner、secure-label 和目标公共访问与协作权限设置变更;权限申请只能表述为已发起 |
|
|
109
111
|
|
|
110
112
|
## Command Patterns
|
|
111
113
|
|
|
@@ -119,9 +121,9 @@ Risk / Structure: `R2` / `S2`
|
|
|
119
121
|
|
|
120
122
|
1. "所有文档"只表示当前身份在确认范围内可枚举到的文档。不可见、无权限、API 不返回或工具预算不足的部分必须进入 `discovery_blockers` 或 `unsupported_checks`。
|
|
121
123
|
2. 发现阶段必须生成稳定 `path`。不要只保存 title;同名文档必须能通过 path 或 token 区分。
|
|
122
|
-
3.
|
|
124
|
+
3. 权限设置读取使用 `drive +permission-get-setting`,目标类型包括 `doc`、`sheet`、`file`、`wiki`、`bitable`、`docx`、`mindnote`、`minutes`、`slides`、`folder`、`apps`;未来新增类型以 shortcut 和 OpenAPI 元数据为准。
|
|
123
125
|
4. `minutes` 只能作为 `partial_public_permission` 目标:可读取 / 修改公开权限和 owner 转移能力以运行时 schema 为准,但 `drive metas batch_query` 当前不支持 `minutes`,URL、owner、密级等 metadata 可能进入 `unsupported_checks`。
|
|
124
|
-
5. `folder`
|
|
126
|
+
5. `folder` 作为递归容器时先枚举子资源;如用户明确要查询文件夹自身权限设置,可对该文件夹单独执行 `drive +permission-get-setting --token <folder_token> --type folder`。不要执行 raw `permission.public patch type=folder`,除非 schema 和需求都明确支持。`shortcut`、`catalog` 或缺少 stable token/type 的条目必须记录为 unsupported,除非后续 API 明确解析出支持目标。
|
|
125
127
|
6. 对大范围目标输出进度时,只展示已扫描容器数、已发现目标数、已审计目标数、剩余队列或 blocker;不要默认展示内部 page token / cursor。
|
|
126
128
|
|
|
127
129
|
Wiki space / node 发现:
|
|
@@ -133,7 +135,7 @@ Wiki space / node 发现:
|
|
|
133
135
|
|
|
134
136
|
Drive folder 发现:
|
|
135
137
|
|
|
136
|
-
1. `/drive/folder/<folder_token>` 解析为 `target_scope=drive_folder
|
|
138
|
+
1. `/drive/folder/<folder_token>` 解析为 `target_scope=drive_folder`。默认继续枚举其子文档;只有用户明确要求文件夹自身权限设置时,才额外调用 `drive +permission-get-setting --token <folder_token> --type folder` 读取该文件夹自身设置。
|
|
137
139
|
2. 按 [`lark-drive-files-list.md`](lark-drive-files-list.md) 递归处理 `data.files`、`has_more` 和 `next_page_token`。不要把第一页数量当作完整范围。
|
|
138
140
|
3. 只对返回项中的 `folder` 继续递归;对子文档按 `type + token` 归一化为 `discovered_targets`。
|
|
139
141
|
4. 如果某个目录分页失败、无 continuation token、权限不足或 API 报错,只阻断该目录分支,并在 `discovery_blockers` 中记录;继续处理其他可枚举分支。
|
|
@@ -141,11 +143,11 @@ Drive folder 发现:
|
|
|
141
143
|
## Fact Read Rules
|
|
142
144
|
|
|
143
145
|
1. `drive metas batch_query` 单次最多 200 个 `request_docs`;当 `targets` 或 `discovered_targets` 超过 200 个时,必须分批读取并合并结果。
|
|
144
|
-
2. `drive permission
|
|
146
|
+
2. `drive +permission-get-setting` 没有批量读取接口;对支持目标逐个读取。单个目标失败时记录 `unsupported_checks` 或 `partial`,不要阻断其他目标。
|
|
145
147
|
3. 对 Wiki 发现目标,公开权限读取优先使用 `type=wiki` + `node_token`;metadata 可使用 `obj_type` + `obj_token` 补充 title、owner、URL 和 `sec_label_name`。
|
|
146
148
|
4. 当 intent 是 `list_permission_settings` 时,只输出权限设置清单和覆盖限制,不主动生成修复计划。
|
|
147
149
|
5. 单目标、多目标明确列表和容器发现目标都必须复用同一套逐目标事实读取与语义归一逻辑;差异只体现在目标来源、coverage summary 和输出聚合。
|
|
148
|
-
6. `permission_public`
|
|
150
|
+
6. `permission_public` 用户可见含义是“目标公共访问和协作权限设置”,语义以官方 OpenAPI 字段说明为准,同时兼容当前 CLI schema 返回的字段:优先使用 `external_access_entity`,缺失时才用 `external_access` boolean 映射为 `open` / `closed`;`manage_collaborator_entity`、`copy_entity`、`lock_switch` 等字段缺失时标记为 unknown,不要伪造;未识别字段保留在 raw evidence / partial note 中。
|
|
149
151
|
7. `drive file.statistics get` 和 `drive file.view_records list` 只在用户要求最近访问、活跃度、闲置暴露、访问复核,或用户提供的 policy 明确依赖活跃度时执行;不要为普通权限审计默认读取访问记录。
|
|
150
152
|
8. 访问统计 / 访问记录当前只对 `doc`、`docx`、`sheet`、`bitable`、`mindnote`、`wiki`、`file` 作为支持类型处理。其他类型必须进入 `unsupported_checks`,不能推断活跃度。
|
|
151
153
|
9. `view_records` 是访问证据,不是权限列表。没有返回访问记录只能表述为“未获得最近访问证据”或“低活跃候选”,不能表述为“无人有权限”。
|
|
@@ -162,17 +164,17 @@ Drive folder 发现:
|
|
|
162
164
|
- `PolicyReview`:复制、创建副本、打印、下载、评论等依赖 policy 的设置;没有明确 policy 时不要称为高风险。
|
|
163
165
|
- `Unknown`:读取失败、已删除、无权限、API 不支持、协作者名单 / 继承链 / DLP / AI 索引 / 审计日志未覆盖。
|
|
164
166
|
|
|
165
|
-
每个可审计目标都必须先归一化为 `per_target_permission_assessment`,再按 [`lark-drive-workflow-permission-governance-outputs.md`](lark-drive-workflow-permission-governance-outputs.md) 的 `Semantic Rendering` 渲染。`public_exposure_check` 只是 `target_count=1`
|
|
167
|
+
每个可审计目标都必须先归一化为 `per_target_permission_assessment`,再按 [`lark-drive-workflow-permission-governance-outputs.md`](lark-drive-workflow-permission-governance-outputs.md) 的 `Semantic Rendering` 渲染。`public_exposure_check` 只是 `target_count=1` 的轻量渲染模式;它和多目标、容器诊断复用同一套语义字段与风险分类。该判断只覆盖当前目标公共访问和协作权限设置,不审计协作者名单、历史权限变更、完整继承链或审计日志。
|
|
166
168
|
|
|
167
169
|
`AI 检索暴露候选风险` 只是基于权限和标签的代理标签。除非另有工具明确返回索引状态,否则不要声称某个文档已经被 Agent、Copilot 或 RAG 索引。
|
|
168
170
|
|
|
169
171
|
## 写入规则
|
|
170
172
|
|
|
171
|
-
-
|
|
173
|
+
- 目标公共访问和协作权限设置修改(`drive permission.public patch`)属于高风险写入。请求确认前,必须展示 target title、token、current setting、desired setting 和准确 field changes。
|
|
172
174
|
- 如果 `manage_public_auth.auth_result=false`,禁止 patch。告诉用户需要具备 manage-public 权限的用户,或由 owner 操作。
|
|
173
|
-
- `drive permission
|
|
175
|
+
- 权限设置读取使用 `drive +permission-get-setting`;裸 token 必须传 `--type`,URL 可以自动推断。写入仍使用 `drive permission.public patch`,只 patch 已解析且 schema 明确支持的类型和字段,不要把读取支持的 `folder` 自动外推为可写入。
|
|
174
176
|
- 不要 patch 已解析类型不支持的字段。对于 wiki 目标,必须省略 schema 明确标注为 wiki 不支持的字段。
|
|
175
|
-
-
|
|
177
|
+
- 不要在同一个写入确认中合并密级标签更新和目标公共访问与协作权限设置修改;必须分别确认。
|
|
176
178
|
- `drive +apply-permission` 默认不批量执行;每次调用都会向 owner 发送通知。
|
|
177
179
|
- `permission_request_candidates` 可以来自用户直接提供的目标、明确列表或容器发现目标;只要能构造 token、type、权限类型和申请理由,就可以进入候选。不要因为目标不在 `discovered_targets` 中而拒绝单目标 / 小列表权限申请。
|
|
178
180
|
- 容器范围内的"统一申请权限"必须先产出 `permission_request_candidates`。未展示候选目标、数量、权限类型和 owner 通知影响前,禁止调用 `drive +apply-permission`。
|
|
@@ -182,8 +184,8 @@ Drive folder 发现:
|
|
|
182
184
|
- 批量 owner 转移必须逐个顺序执行;失败项进入结果清单,不要重复执行已成功目标。`remove_old_owner=true` 或 `old_owner_perm` 降权必须单独在确认中高亮。
|
|
183
185
|
- 用户要求“生成整改方案 / dry-run / 先看看会改什么”时,只生成 `remediation_plan`,不执行任何写命令。dry-run 必须包含 target count、field changes、跳过原因、验证方式和有限回滚范围。
|
|
184
186
|
- 用户基于完整风险清单选择对象时,必须先解析 `risk_id`、风险分组、URL 或 artifact 中 `selected=true` 的行,生成 `selected_risk_items`。无法匹配到当前 `risk_manifest` 的选择必须要求用户重新确认或重新读取清单。
|
|
185
|
-
- 针对 `selected_risk_items` 生成 dry-run 前,必须重新读取所选目标的 `drive permission
|
|
186
|
-
- 执行 `drive permission.public patch` 前,必须把当前 `public_permission_facts` 中会被改动的字段保存为 `public_permission_snapshots
|
|
187
|
+
- 针对 `selected_risk_items` 生成 dry-run 前,必须重新读取所选目标的 `drive +permission-get-setting`;如果当前设置和清单快照不同,标记为 `changed_since_report` 并跳过或要求用户确认更新后的计划。
|
|
188
|
+
- 执行 `drive permission.public patch` 前,必须把当前 `public_permission_facts` 中会被改动的字段保存为 `public_permission_snapshots`。该快照只用于目标公共访问和协作权限设置字段的有限回滚说明,不覆盖协作者、owner、继承权限或密级标签。
|
|
187
189
|
- 如果用户要求批量收紧权限,必须按风险分层和目标顺序逐个执行;失败项进入结果清单,不要因为单个失败而重复执行已成功目标。
|
|
188
190
|
- 遇到 secure-label downgrade error `1063013` 时,停止重试,并告诉用户需要在文档 UI 中完成审批。
|
|
189
191
|
|
|
@@ -194,7 +196,7 @@ Drive folder 发现:
|
|
|
194
196
|
- `drive permission.members create` 可创建协作者权限,但当前 workflow 不做协作者 grant / update / revoke;未来需要单独定义授权对象解析、最小权限、确认模板和验证方式。
|
|
195
197
|
- backup owner、部门 / 项目负责人绑定没有当前 workflow 可执行写入面;如用户要落地为 owner 转移,必须先给出明确目标和新 owner,并走本 workflow 的 owner-transfer 确认。
|
|
196
198
|
- `wiki +member-list` 可作为 Wiki space 成员治理的读侧事实来源;当前 workflow 只治理文档 / 节点 / 文件夹下可发现文档的权限,不做 space member governance。
|
|
197
|
-
-
|
|
199
|
+
- `drive +member-list` 可读取单目标直接协作者/授权成员;当前 CLI 仍没有完整继承链、DLP 扫描、AI 索引状态、审计日志和跨平台权限事实。遇到这些需求必须记录为 `unsupported_checks` 或建议新增独立 workflow。
|
|
198
200
|
|
|
199
201
|
## 输出策略
|
|
200
202
|
|