@amaster.ai/pi-lark 0.1.6 → 0.1.8

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 (266) hide show
  1. package/README.md +5 -1
  2. package/dist/config.d.ts +1 -1
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +2 -2
  5. package/dist/config.js.map +1 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +2 -1
  8. package/dist/index.js.map +1 -1
  9. package/package.json +3 -3
  10. package/skills/lark-apps/SKILL.md +59 -14
  11. package/skills/lark-apps/creative-design/agents/assets/vision-probe.png +0 -0
  12. package/skills/lark-apps/creative-design/agents/fork-verifier-agent.md +71 -0
  13. package/skills/lark-apps/creative-design/agents/vision-probe-agent.md +41 -0
  14. package/skills/lark-apps/creative-design/assets/index.html +27 -0
  15. package/skills/lark-apps/creative-design/creative-design.md +239 -0
  16. package/skills/lark-apps/creative-design/references/aily.md +39 -0
  17. package/skills/lark-apps/creative-design/references/animated-video.md +34 -0
  18. package/skills/lark-apps/creative-design/references/charts.md +165 -0
  19. package/skills/lark-apps/creative-design/references/claude.md +36 -0
  20. package/skills/lark-apps/creative-design/references/codex.md +32 -0
  21. package/skills/lark-apps/creative-design/references/data-report.md +108 -0
  22. package/skills/lark-apps/creative-design/references/frontend-design.md +71 -0
  23. package/skills/lark-apps/creative-design/references/hi-fi-design.md +32 -0
  24. package/skills/lark-apps/creative-design/references/interactive-prototype.md +24 -0
  25. package/skills/lark-apps/creative-design/references/make-a-deck.md +133 -0
  26. package/skills/lark-apps/creative-design/references/visual-exposure.md +82 -0
  27. package/skills/lark-apps/creative-design/references/wireframe.md +14 -0
  28. package/skills/lark-apps/creative-design/starter-components/android-frame.jsx +188 -0
  29. package/skills/lark-apps/creative-design/starter-components/animations.jsx +773 -0
  30. package/skills/lark-apps/creative-design/starter-components/browser-window.jsx +122 -0
  31. package/skills/lark-apps/creative-design/starter-components/deck-stage.js +2483 -0
  32. package/skills/lark-apps/creative-design/starter-components/design-canvas.jsx +1432 -0
  33. package/skills/lark-apps/creative-design/starter-components/ios-frame.jsx +270 -0
  34. package/skills/lark-apps/creative-design/starter-components/macos-window.jsx +197 -0
  35. package/skills/lark-apps/creative-design/starter-components/tweaks-panel.jsx +752 -0
  36. package/skills/lark-apps/references/lark-apps-automation.md +80 -2
  37. package/skills/lark-apps/references/lark-apps-cache.md +61 -0
  38. package/skills/lark-apps/references/lark-apps-cloud-dev.md +5 -5
  39. package/skills/lark-apps/references/lark-apps-create.md +6 -4
  40. package/skills/lark-apps/references/lark-apps-db.md +1 -1
  41. package/skills/lark-apps/references/lark-apps-env-pull.md +1 -1
  42. package/skills/lark-apps/references/lark-apps-file.md +2 -2
  43. package/skills/lark-apps/references/lark-apps-get.md +1 -1
  44. package/skills/lark-apps/references/lark-apps-git-credential.md +1 -1
  45. package/skills/lark-apps/references/lark-apps-html-publish.md +4 -8
  46. package/skills/lark-apps/references/lark-apps-init.md +1 -1
  47. package/skills/lark-apps/references/lark-apps-list.md +2 -2
  48. package/skills/lark-apps/references/lark-apps-local-dev.md +80 -11
  49. package/skills/lark-apps/references/lark-apps-openapi-key.md +1 -1
  50. package/skills/lark-apps/references/lark-apps-release-create.md +2 -2
  51. package/skills/lark-apps/references/lark-apps-release-get.md +3 -3
  52. package/skills/lark-base/SKILL.md +34 -19
  53. package/skills/lark-base/references/lark-base-cell-value.md +3 -3
  54. package/skills/lark-base/references/lark-base-dashboard-block-get-data.md +17 -1
  55. package/skills/lark-base/references/lark-base-dashboard.md +17 -4
  56. package/skills/lark-base/references/lark-base-data-query-guide.md +8 -0
  57. package/skills/lark-base/references/lark-base-data-query.md +11 -4
  58. package/skills/lark-base/references/lark-base-field-create.md +21 -6
  59. package/skills/lark-base/references/lark-base-field-json.md +9 -6
  60. package/skills/lark-base/references/lark-base-field-update.md +17 -1
  61. package/skills/lark-base/references/lark-base-filter-condition.md +179 -0
  62. package/skills/lark-base/references/lark-base-form-questions-create.md +40 -7
  63. package/skills/lark-base/references/lark-base-form-questions-update.md +73 -20
  64. package/skills/lark-base/references/lark-base-form-submit.md +16 -7
  65. package/skills/lark-base/references/lark-base-record-batch-create.md +12 -10
  66. package/skills/lark-base/references/lark-base-record-batch-update.md +11 -9
  67. package/skills/lark-base/references/lark-base-record-upsert.md +1 -1
  68. package/skills/lark-base/references/lark-base-role-guide.md +11 -0
  69. package/skills/lark-base/references/lark-base-view-set-filter.md +11 -137
  70. package/skills/lark-base/references/role-config.md +31 -5
  71. package/skills/lark-calendar/SKILL.md +14 -8
  72. package/skills/lark-calendar/references/lark-calendar-create.md +6 -5
  73. package/skills/lark-calendar/references/lark-calendar-recurring.md +1 -0
  74. package/skills/lark-calendar/references/lark-calendar-room-find.md +2 -1
  75. package/skills/lark-calendar/references/lark-calendar-schedule-clear-time.md +1 -0
  76. package/skills/lark-calendar/references/lark-calendar-suggestion.md +1 -1
  77. package/skills/lark-calendar/references/lark-calendar-update.md +10 -4
  78. package/skills/lark-contact/SKILL.md +19 -3
  79. package/skills/lark-contact/references/lark-contact-search-bot.md +60 -0
  80. package/skills/lark-doc/SKILL.md +26 -61
  81. package/skills/lark-doc/references/genres/business-analysis.md +30 -0
  82. package/skills/lark-doc/references/genres/data-report.md +32 -0
  83. package/skills/lark-doc/references/genres/email.md +38 -0
  84. package/skills/lark-doc/references/genres/execution-plan.md +27 -0
  85. package/skills/lark-doc/references/genres/formal-doc.md +37 -0
  86. package/skills/lark-doc/references/genres/meeting-minutes.md +24 -0
  87. package/skills/lark-doc/references/genres/memo-brief.md +25 -0
  88. package/skills/lark-doc/references/genres/official-redhead.md +73 -0
  89. package/skills/lark-doc/references/genres/prd.md +26 -0
  90. package/skills/lark-doc/references/genres/proposal.md +24 -0
  91. package/skills/lark-doc/references/genres/research-report.md +32 -0
  92. package/skills/lark-doc/references/genres/retrospective.md +25 -0
  93. package/skills/lark-doc/references/genres/route-consumer.md +37 -0
  94. package/skills/lark-doc/references/genres/route-creative.md +36 -0
  95. package/skills/lark-doc/references/genres/route-knowledge.md +39 -0
  96. package/skills/lark-doc/references/genres/route-marketing.md +40 -0
  97. package/skills/lark-doc/references/genres/route-media.md +36 -0
  98. package/skills/lark-doc/references/genres/route-opinion.md +38 -0
  99. package/skills/lark-doc/references/genres/route-personal-brand.md +36 -0
  100. package/skills/lark-doc/references/genres/route-platform.md +9 -0
  101. package/skills/lark-doc/references/genres/route-report.md +10 -0
  102. package/skills/lark-doc/references/genres/route-workplace.md +17 -0
  103. package/skills/lark-doc/references/genres/sop-tutorial.md +41 -0
  104. package/skills/lark-doc/references/genres/technical-doc.md +39 -0
  105. package/skills/lark-doc/references/genres/wechat.md +39 -0
  106. package/skills/lark-doc/references/genres/weekly-report.md +24 -0
  107. package/skills/lark-doc/references/genres/white-paper.md +32 -0
  108. package/skills/lark-doc/references/genres/xiaohongshu.md +38 -0
  109. package/skills/lark-doc/references/lark-doc-create-workflow.md +121 -0
  110. package/skills/lark-doc/references/lark-doc-create.md +22 -48
  111. package/skills/lark-doc/references/lark-doc-fetch.md +84 -93
  112. package/skills/lark-doc/references/lark-doc-history.md +16 -15
  113. package/skills/lark-doc/references/lark-doc-md.md +5 -1
  114. package/skills/lark-doc/references/lark-doc-media-download.md +2 -1
  115. package/skills/lark-doc/references/lark-doc-script.md +76 -0
  116. package/skills/lark-doc/references/lark-doc-update.md +70 -222
  117. package/skills/lark-doc/references/lark-doc-whiteboard.md +14 -17
  118. package/skills/lark-doc/references/lark-doc-xml-extended-blocks.md +46 -0
  119. package/skills/lark-doc/references/lark-doc-xml.md +38 -166
  120. package/skills/lark-drive/SKILL.md +32 -50
  121. package/skills/lark-drive/references/lark-drive-add-comment.md +2 -4
  122. package/skills/lark-drive/references/lark-drive-add-reply.md +47 -0
  123. package/skills/lark-drive/references/lark-drive-apply-permission.md +3 -3
  124. package/skills/lark-drive/references/lark-drive-batch-query-comments.md +46 -0
  125. package/skills/lark-drive/references/lark-drive-comment-content.md +50 -0
  126. package/skills/lark-drive/references/lark-drive-comment-location.md +9 -15
  127. package/skills/lark-drive/references/lark-drive-copy.md +87 -0
  128. package/skills/lark-drive/references/lark-drive-delete-reply.md +48 -0
  129. package/skills/lark-drive/references/lark-drive-download.md +6 -1
  130. package/skills/lark-drive/references/lark-drive-export.md +3 -0
  131. package/skills/lark-drive/references/lark-drive-list-comments.md +25 -68
  132. package/skills/lark-drive/references/lark-drive-list-replies.md +54 -0
  133. package/skills/lark-drive/references/lark-drive-member-add.md +2 -2
  134. package/skills/lark-drive/references/lark-drive-member-list.md +65 -0
  135. package/skills/lark-drive/references/lark-drive-permission-get-setting.md +48 -0
  136. package/skills/lark-drive/references/lark-drive-preview.md +11 -1
  137. package/skills/lark-drive/references/lark-drive-react-reply.md +51 -0
  138. package/skills/lark-drive/references/lark-drive-reactions.md +27 -25
  139. package/skills/lark-drive/references/lark-drive-resolve-comment.md +45 -0
  140. package/skills/lark-drive/references/lark-drive-restore-comment.md +46 -0
  141. package/skills/lark-drive/references/lark-drive-search.md +7 -1
  142. package/skills/lark-drive/references/lark-drive-secure-label.md +1 -1
  143. package/skills/lark-drive/references/lark-drive-task-result.md +3 -0
  144. package/skills/lark-drive/references/lark-drive-update-reply.md +46 -0
  145. package/skills/lark-drive/references/lark-drive-update-title.md +78 -0
  146. package/skills/lark-drive/references/lark-drive-upload.md +1 -0
  147. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-commands.md +38 -8
  148. package/skills/lark-drive/references/lark-drive-workflow-permission-governance-outputs.md +10 -10
  149. package/skills/lark-drive/references/lark-drive-workflow-permission-governance.md +22 -20
  150. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-execute.md +273 -0
  151. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-recall.md +202 -0
  152. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-resolve-verify.md +231 -0
  153. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-review-plan.md +248 -0
  154. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector-setup.md +174 -0
  155. package/skills/lark-drive/references/lark-drive-workflow-topic-move-collector.md +202 -0
  156. package/skills/lark-drive/references/lark-drive-workflow.md +5 -4
  157. package/skills/lark-event/SKILL.md +8 -4
  158. package/skills/lark-event/references/lark-event-application.md +38 -0
  159. package/skills/lark-event/references/lark-event-vc.md +8 -2
  160. package/skills/lark-im/SKILL.md +9 -9
  161. package/skills/lark-im/references/card/card-2.0-schema.md +1 -1
  162. package/skills/lark-im/references/card/lark-im-card-style.md +4 -4
  163. package/skills/lark-im/references/card/resource/icons.md +14 -0
  164. package/skills/lark-im/references/lark-im-chat-list.md +9 -2
  165. package/skills/lark-im/references/lark-im-chat-members-list.md +7 -4
  166. package/skills/lark-im/references/lark-im-chat-messages-list.md +10 -3
  167. package/skills/lark-im/references/lark-im-chat-search.md +9 -2
  168. package/skills/lark-im/references/lark-im-feed-group-list-item.md +2 -2
  169. package/skills/lark-im/references/lark-im-feed-group-list.md +2 -2
  170. package/skills/lark-im/references/lark-im-feed-shortcut-list.md +1 -1
  171. package/skills/lark-im/references/lark-im-flag-list.md +9 -8
  172. package/skills/lark-im/references/lark-im-message-enrichment.md +1 -1
  173. package/skills/lark-im/references/lark-im-messages-resources-download.md +19 -25
  174. package/skills/lark-im/references/lark-im-messages-search.md +4 -5
  175. package/skills/lark-im/references/lark-im-threads-messages-list.md +8 -4
  176. package/skills/lark-mail/references/lark-mail-triage.md +19 -4
  177. package/skills/lark-minutes/SKILL.md +1 -1
  178. package/skills/lark-minutes/references/lark-minutes-search.md +6 -7
  179. package/skills/lark-okr/SKILL.md +71 -26
  180. package/skills/lark-okr/references/lark-okr-batch-create.md +19 -18
  181. package/skills/lark-okr/references/lark-okr-create.md +173 -0
  182. package/skills/lark-okr/references/lark-okr-cycle-list.md +17 -7
  183. package/skills/lark-okr/references/lark-okr-entities.md +1 -0
  184. package/skills/lark-okr/references/lark-okr-indicator-update.md +3 -1
  185. package/skills/lark-okr/references/lark-okr-indicators.md +61 -12
  186. package/skills/lark-okr/references/lark-okr-progress-list.md +21 -9
  187. package/skills/lark-shared/SKILL.md +3 -3
  188. package/skills/lark-sheets/SKILL.md +83 -82
  189. package/skills/lark-sheets/references/lark-sheets-batch-update.md +13 -58
  190. package/skills/lark-sheets/references/lark-sheets-chart.md +2 -1
  191. package/skills/lark-sheets/references/lark-sheets-conditional-format.md +1 -1
  192. package/skills/lark-sheets/references/lark-sheets-range-operations.md +5 -5
  193. package/skills/lark-sheets/references/lark-sheets-read-data.md +80 -6
  194. package/skills/lark-sheets/references/lark-sheets-sheet-structure.md +21 -10
  195. package/skills/lark-sheets/references/lark-sheets-styles-put.md +93 -0
  196. package/skills/lark-sheets/references/lark-sheets-visual-standards.md +2 -2
  197. package/skills/lark-sheets/references/lark-sheets-workbook.md +4 -3
  198. package/skills/lark-sheets/references/lark-sheets-write-cells.md +40 -12
  199. package/skills/lark-sheets/scripts/lark_detect_subtables.py +593 -0
  200. package/skills/lark-sheets/scripts/lark_inspect_workbook.py +188 -0
  201. package/skills/lark-sheets/scripts/lark_profile_table.py +614 -0
  202. package/skills/lark-sheets/scripts/lark_sheet_range.py +176 -0
  203. package/skills/lark-sheets/scripts/lark_sheet_read_cli.py +184 -0
  204. package/skills/lark-sheets/scripts/sheets_df.py +21 -3
  205. package/skills/lark-slides/SKILL.md +134 -104
  206. package/skills/lark-slides/references/asset-planning.md +6 -4
  207. package/skills/lark-slides/references/iconpark.md +2 -2
  208. package/skills/lark-slides/references/lark-slides-add-slide.md +92 -0
  209. package/skills/lark-slides/references/lark-slides-create.md +86 -66
  210. package/skills/lark-slides/references/lark-slides-delete-slide.md +65 -0
  211. package/skills/lark-slides/references/lark-slides-edit-workflows.md +6 -7
  212. package/skills/lark-slides/references/lark-slides-history.md +132 -0
  213. package/skills/lark-slides/references/lark-slides-media-upload.md +4 -27
  214. package/skills/lark-slides/references/lark-slides-pptx-template-workflows.md +7 -11
  215. package/skills/lark-slides/references/lark-slides-replace-slide.md +22 -4
  216. package/skills/lark-slides/references/lark-slides-screenshot.md +33 -15
  217. package/skills/lark-slides/references/lark-slides-update-slide.md +146 -0
  218. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-get.md +2 -2
  219. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-replace.md +2 -3
  220. package/skills/lark-slides/references/lark-slides-xml-presentations-get.md +90 -32
  221. package/skills/lark-slides/references/planning-layer.md +11 -10
  222. package/skills/lark-slides/references/slides_chart_demo.xml +1415 -1
  223. package/skills/lark-slides/references/slides_xml_schema_definition.xml +539 -79
  224. package/skills/lark-slides/references/troubleshooting.md +26 -9
  225. package/skills/lark-slides/references/validation-checklist.md +55 -18
  226. package/skills/lark-slides/references/visual-planning.md +25 -22
  227. package/skills/lark-slides/references/xml-schema-quick-ref.md +299 -51
  228. package/skills/lark-slides/scripts/sxsd_validator.py +1052 -0
  229. package/skills/lark-slides/scripts/xml_text_overlap_lint.py +1964 -195
  230. package/skills/lark-slides/scripts/xml_text_overlap_lint_test.py +4051 -501
  231. package/skills/lark-task/SKILL.md +7 -0
  232. package/skills/lark-task/references/lark-task-complete.md +6 -2
  233. package/skills/lark-task/references/lark-task-create.md +9 -0
  234. package/skills/lark-task/references/lark-task-update.md +6 -2
  235. package/skills/lark-whiteboard/SKILL.md +21 -13
  236. package/skills/lark-whiteboard/elements/layout.md +1 -1
  237. package/skills/lark-whiteboard/elements/schema.md +2 -2
  238. package/skills/lark-whiteboard/references/{lark-whiteboard-query.md → lark-whiteboard-export.md} +17 -16
  239. package/skills/lark-whiteboard/references/lark-whiteboard-update.md +7 -7
  240. package/skills/lark-whiteboard/references/lark-whiteboard-workflow.md +23 -31
  241. package/skills/lark-whiteboard/routes/dsl.md +11 -5
  242. package/skills/lark-whiteboard/routes/mermaid.md +3 -3
  243. package/skills/lark-whiteboard/routes/svg-edit.md +9 -6
  244. package/skills/lark-whiteboard/routes/svg.md +14 -7
  245. package/skills/lark-whiteboard/scenes/bar-chart.md +1 -1
  246. package/skills/lark-whiteboard/scenes/fishbone.md +1 -1
  247. package/skills/lark-whiteboard/scenes/flywheel.md +1 -1
  248. package/skills/lark-whiteboard/scenes/line-chart.md +1 -1
  249. package/skills/lark-whiteboard/scenes/mention.md +71 -0
  250. package/skills/lark-whiteboard/scenes/treemap.md +1 -1
  251. package/skills/lark-wiki/SKILL.md +6 -3
  252. package/skills/lark-wiki/references/lark-wiki-delete-space.md +6 -3
  253. package/skills/lark-doc/references/lark-doc-word-stat.md +0 -93
  254. package/skills/lark-doc/references/style/lark-doc-create-workflow.md +0 -47
  255. package/skills/lark-doc/references/style/lark-doc-style.md +0 -68
  256. package/skills/lark-doc/references/style/lark-doc-update-workflow.md +0 -48
  257. package/skills/lark-doc/scripts/doc_word_stat.py +0 -1243
  258. package/skills/lark-drive/references/lark-drive-comments-guide.md +0 -80
  259. package/skills/lark-slides/references/examples.md +0 -91
  260. package/skills/lark-slides/references/lark-slides-replace-pages.md +0 -95
  261. package/skills/lark-slides/references/lark-slides-whiteboard.md +0 -331
  262. package/skills/lark-slides/references/lark-slides-xml-get.md +0 -100
  263. package/skills/lark-slides/references/lark-slides-xml-presentation-slide-delete.md +0 -125
  264. package/skills/lark-slides/references/slide-templates.md +0 -201
  265. package/skills/lark-slides/references/slides_demo.xml +0 -226
  266. package/skills/lark-slides/references/xml-format-guide.md +0 -433
@@ -0,0 +1,202 @@
1
+ # 主题资料收集工作流
2
+
3
+ Workflow id: `topic_move_collector`
4
+
5
+ Risk / Structure: `R2-R3` / `S3`
6
+
7
+ 本文档实现已注册的主题资料收集 workflow。执行前必须先阅读 [`lark-drive-workflow.md`](lark-drive-workflow.md) 和 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md),并遵循共享执行协议、Artifact Contract、Workflow Loading、认证和写入确认规则。
8
+
9
+ 本文档负责定义本 workflow 的全局约束、状态机和渐进加载关系。具体阶段规则放在配套文档中,只有进入对应状态时才加载。
10
+
11
+ 配套文档只是本 workflow 的引用文件,不是独立 skill。不要把用户请求直接路由到某个配套文档。
12
+
13
+ ## 必读上下文
14
+
15
+ 执行本 workflow 前,必须先阅读 [`../../lark-shared/SKILL.md`](../../lark-shared/SKILL.md),用于处理身份、认证、权限和写操作确认规则。
16
+
17
+ 按阶段渐进加载其他 skill / 引用文档:
18
+
19
+ - 目标是 Wiki 或个人文档库:[`../../lark-wiki/SKILL.md`](../../lark-wiki/SKILL.md)
20
+ - 需要读取文档内容:[`../../lark-doc/SKILL.md`](../../lark-doc/SKILL.md) 和 [`../../lark-doc/references/lark-doc-fetch.md`](../../lark-doc/references/lark-doc-fetch.md)
21
+ - 需要验证 Sheet 内容:[`../../lark-sheets/SKILL.md`](../../lark-sheets/SKILL.md)
22
+ - 需要 Drive 搜索:[`lark-drive-search.md`](lark-drive-search.md)
23
+ - 需要资源解析:[`lark-drive-inspect.md`](lark-drive-inspect.md)
24
+
25
+ ## 适用范围
26
+
27
+ 本 workflow 用于根据用户给出的主题、关键词或内容线索,在云空间 / 云盘 / Wiki / 电子表格等 Workspace 资源中查找相关资料,并在用户确认后统一移动到指定 Drive 文件夹或 Wiki 节点下。
28
+
29
+ 适用触发语包括:
30
+
31
+ - "帮我找到和某主题相关的文档并放到这个文件夹"
32
+ - "把所有关于某项目的资料收集到知识库节点下"
33
+ - "找出包含某内容的资料,确认后移动到新建目录"
34
+ - "按这个关键词搜索我负责的资料,把相关资料归档"
35
+
36
+ 默认搜索范围是当前用户 owner / 负责的 Workspace 资源,即 `owner_scope=mine`。只有用户明确要求“不限 owner”“包括共享给我的”“所有我能看到的文档”或“全量搜索”时,才使用 `owner_scope=all_visible` 进入扩展召回模式。
37
+
38
+ 不要求用户先限定文件夹或知识库范围。只有用户明确指定范围时,才使用 `--folder-tokens`、`--space-ids` 或其他显式限制。
39
+
40
+ ## 非目标
41
+
42
+ 默认不生成:
43
+
44
+ - 长篇研究报告
45
+ - 内容总结文档
46
+ - Sheet 清单或统计看板
47
+ - 自动权限治理报告
48
+
49
+ 默认禁止执行:
50
+
51
+ - 未确认前创建文件夹或 Wiki 节点
52
+ - 未确认前移动资源
53
+ - 删除资源、重命名资源或修改公开权限
54
+ - 自动批量申请权限
55
+ - 把无权限或无法验证的资源加入移动计划
56
+ - 把移动权限未知或不具备移动资格的资源加入移动计划
57
+
58
+ 如果用户明确要求把结果写入 Sheet / Doc,切到对应专项能力;本 workflow 的默认产物是移动后的资源归档结果。
59
+
60
+ ## Agent 执行约束
61
+
62
+ 触发本 workflow 后,agent 必须:
63
+
64
+ 1. 按“执行状态机”的顺序执行。
65
+ 2. 维护“运行时状态”中的字段。
66
+ 3. 执行某个状态前,先读取本文档 `## 渐进加载关系` 表格中该状态对应的文档。
67
+ 4. 用户可见说明、字段说明和 UI 文案使用中文。
68
+ 5. 状态名、字段名、枚举值、命令名保留英文稳定标识。
69
+ 6. 将 `CONFIRM_CONTEXT` 和 `CONFIRM_EXECUTION` 作为强用户确认门:前者确认主题、目标位置、身份、搜索范围、可选限制和目标解析结果后才能搜索;后者确认创建目标和移动资源后才能写入。
70
+ 7. 进入 `EXECUTE` 前,不得创建目标文件夹 / 节点,也不得移动资源。
71
+ 8. 必须展示每个相关性分组中的资源名称;低置信分组可以折叠,但必须可查看。
72
+ 9. 默认只移动 `high` 相关资源;`medium` 资源必须由用户显式选择。
73
+ 10. 即使用户可见列表分页展示,也必须维护完整内部状态。
74
+ 11. `RESOURCE_RESOLVE` 和 `CONTENT_VERIFY` 是两个独立的强制阶段,不得合并;不得用搜索结果、标题或摘要直接替代 `CONTENT_VERIFY`,也不得从 `RESOURCE_RESOLVE` 直接进入 `RELEVANCE_CLASSIFY`。
75
+ 12. 触发后锁定 `workflow_id=topic_move_collector`;执行期间不得自动切换到其他 workflow。
76
+ 13. 如果认为需要切换 workflow,必须停止并向用户说明原因,等待用户确认。
77
+ 14. `RESOURCE_RESOLVE` 是移动资格门禁;只有确认 `move_permission_state=movable` 且 `target_write_state=confirmed` 的资源才能进入默认移动链路。
78
+
79
+ ## 用户展示 UI 规则
80
+
81
+ 所有用户可见 UI 都必须包含:
82
+
83
+ 1. 已经完成的关键结果。
84
+ 2. 下一步会做什么,以及是否会产生写操作。
85
+ 3. 如果 `wait_for_user=true`,明确告诉用户可以选择的动作。
86
+ 4. 如果无需用户操作,明确说明将继续执行,避免用户误以为流程停住。
87
+
88
+ 典型动作包括:确认继续、修改主题 / 目标 / 限制、展开更多结果、调整相关性分组、选择中相关资源、确认执行、取消执行。
89
+
90
+ ## 职责边界
91
+
92
+ | 文件 | 负责 | 不负责 |
93
+ |------|------|--------------|
94
+ | `lark-drive-workflow-topic-move-collector.md` | 触发规则、全局约束、状态机、渐进加载关系、命令族白名单 | 具体阶段规则、UI 模板、执行细节 |
95
+ | `lark-drive-workflow-topic-move-collector-setup.md` | `PARSE_INPUT`、`RESOLVE_TARGET`、`CONFIRM_CONTEXT`、`TargetLocation` | 搜索执行、相关性分类、写操作 |
96
+ | `lark-drive-workflow-topic-move-collector-recall.md` | `SEARCH_RECALL`、`RECALL_ENHANCE`、搜索 query 策略、去重、`CandidateItem` | 资源 token 解析、内容验证、写操作 |
97
+ | `lark-drive-workflow-topic-move-collector-resolve-verify.md` | `RESOURCE_RESOLVE`、`CONTENT_VERIFY`、权限矩阵、`ResourceItem` | 相关性分类、移动计划、写操作 |
98
+ | `lark-drive-workflow-topic-move-collector-review-plan.md` | `RELEVANCE_CLASSIFY`、`PLAN_MOVE`、`MovePlanItem`、展示分组 | 资源解析、内容验证、写操作执行、恢复 |
99
+ | `lark-drive-workflow-topic-move-collector-execute.md` | `CONFIRM_EXECUTION`、`EXECUTE`、`VERIFY`、`RESTORE`、`RollbackSnapshotItem`、执行日志 | 搜索、分类和计划 schema |
100
+
101
+ ## 运行时状态
102
+
103
+ 本 workflow 扩展共享 Artifact Contract。agent 在一次 workflow 运行中必须维护以下专项内部字段:
104
+
105
+ | 字段 | 说明 |
106
+ |-------|------|
107
+ | `current_state` | 当前状态机节点。 |
108
+ | `topic` | 用户确认后的主题、关键词、同义词和排除词。 |
109
+ | `target_location` | 目标位置解析结果,见 setup 文件的 `TargetLocation`。 |
110
+ | `identity` | 执行身份;默认优先 `--as user`。 |
111
+ | `owner_scope` | 搜索 owner 范围;默认 `mine`,仅搜索当前用户 owner / 负责的资源;用户明确要求扩展时才为 `all_visible`。 |
112
+ | `constraints` | 用户显式确认的类型、时间、创建人、范围等限制。 |
113
+ | `allow_cross_container_move` | 是否允许跨 Drive / Wiki 容器移动;默认允许,但必须展示给用户确认。 |
114
+ | `recall_query_states` | 每个基础 / 增强 query 的分页状态、累计页数、`next_page_token`、`has_more`、完成或阻塞状态。 |
115
+ | `candidate_items` | 搜索召回结果,包含 query 证据和去重信息。 |
116
+ | `resource_items` | 解析后的标准资源列表。 |
117
+ | `content_verify_completed` | 内容验证阶段完成标记;`resource_items` 新建或变化时重置为 `false`,只有全部资源都有验证状态或跳过原因后才设为 `true`。 |
118
+ | `relevance_groups` | 高相关、中相关、低相关、无权限、无移动权限、移动权限未知、无法验证、不可移动分组。 |
119
+ | `move_plan_items` | 经用户选择后生成的完整移动计划,包含稳定资源关联、不可变命令参数、权限快照和恢复输入。 |
120
+ | `execution_journal` | 写操作日志,用于验证和恢复。 |
121
+ | `rollback_snapshot` | 写操作前位置快照,仅用于失败恢复或用户要求恢复。 |
122
+ | `display_page_state` | 用户可见列表的分页、筛选和展开状态。 |
123
+
124
+ ## 执行状态机
125
+
126
+ | 状态 | Protocol Step | 进入条件 | agent 必须执行 | 用户可见输出 | `wait_for_user` | 下一状态 |
127
+ |-------|---------------|-----------------|---------------|--------------------|---------------|------------|
128
+ | `PARSE_INPUT` | `route` / `scope` | workflow 被触发 | 加载 setup 文档;解析主题、目标、身份和限制 | 澄清问题或解析摘要 | 必填字段缺失时为 `true` | `RESOLVE_TARGET` |
129
+ | `RESOLVE_TARGET` | `scope` | 主题和目标已获得 | 解析已有目标,或解析待创建目标;按解析状态分流 | 目标解析结果或 blocker | 非 `resolved` 时为 `true` | `resolved` 时进入 `CONFIRM_CONTEXT`;否则保持本状态 |
130
+ | `CONFIRM_CONTEXT` | `scope` | `target_resolve_status=resolved` | 展示主题、目标、身份、限制和跨容器设置 | 搜索前确认 UI | `true` | `SEARCH_RECALL` |
131
+ | `SEARCH_RECALL` | `read` | 用户确认上下文 | 用原始关键词、默认 owner 范围和显式限制执行基础召回;按每批最多 5 页自动续批 | 搜索进度 / 基础统计 | 阻塞时为 `true` | 所有基础 query 完成后进入 `RECALL_ENHANCE` |
132
+ | `RECALL_ENHANCE` | `read` | 所有基础 query 已完成 | 执行覆盖增强 query,按每批最多 5 页自动续批并合并结果 | 增强召回摘要 | 阻塞时为 `true` | 所有增强 query 完成后进入 `RESOURCE_RESOLVE` |
133
+ | `RESOURCE_RESOLVE` | `read` | 候选列表已准备 | 解析 token、类型、父级位置、owner 和移动资格 | 解析进度 / 阻塞摘要 | 阻塞时为 `true` | `CONTENT_VERIFY` |
134
+ | `CONTENT_VERIFY` | `read` | 资源列表已准备 | 对支持的资源做有界内容读取,并为其余资源写入跳过原因 | 验证进度 / 验证摘要 | 阻塞时为 `true` | `RELEVANCE_CLASSIFY` |
135
+ | `RELEVANCE_CLASSIFY` | `assess` | 证据已准备 | 按相关性和可执行性分组 | 分组结果列表 | `false` | `PLAN_MOVE` |
136
+ | `PLAN_MOVE` | `assess` / `plan` | 分组完成 | 基于默认规则和用户可选项生成移动计划 | 草案计划和选择项 | `true` | `CONFIRM_EXECUTION` |
137
+ | `CONFIRM_EXECUTION` | `confirm` | 用户要求执行 | 展示创建、移动、跳过项和风险 | 写操作确认 UI | `true` | `EXECUTE` 或 `PLAN_MOVE` 或 `DONE` |
138
+ | `EXECUTE` | `execute` | 用户明确确认写操作 | 需要时先创建目标,再移动确认资源 | 执行进度 | 阻塞时为 `true` | `VERIFY` 或 `RESTORE` |
139
+ | `VERIFY` | `verify` | 执行完成 | 验证目标位置下的移动结果 | 验证结果 | 提供恢复选项时为 `true` | `DONE` 或 `RESTORE` |
140
+ | `RESTORE` | `recovery confirm` / `recovery execute` | 用户要求恢复 | 仅基于快照和日志恢复 | 恢复确认 / 结果 | 写操作前为 `true` | `VERIFY` 或 `DONE` |
141
+ | `DONE` | `done` | 无后续操作 | 停止 | 最终回复 | `false` | 结束 |
142
+
143
+ ### 状态跳转硬约束
144
+
145
+ 1. `RESOLVE_TARGET` 只有在 `target_resolve_status=resolved` 时才能进入 `CONFIRM_CONTEXT`;`ambiguous`、`unsupported` 或 `permission_denied` 必须保持在 `RESOLVE_TARGET` 并等待用户选择、更换目标或结束。
146
+ 2. `SEARCH_RECALL` 只有在全部基础 query 的 `has_more=false` 时才能进入 `RECALL_ENHANCE`;单批达到 5 页但仍有更多结果时必须自动续批,不得提前跳转。
147
+ 3. `RECALL_ENHANCE` 只有在全部增强 query 的 `has_more=false` 时才能进入 `RESOURCE_RESOLVE`;不得直接进入 `RELEVANCE_CLASSIFY` 或 `PLAN_MOVE`。
148
+ 4. `RESOURCE_RESOLVE` 必须为每个 `CandidateItem` 生成对应的 `ResourceItem`,或生成明确的解析失败 / 权限受限状态。
149
+ 5. `RESOURCE_RESOLVE` 必须为每个 `ResourceItem` 写入 `move_permission_state` 和 `move_permission_basis`;完成后将 `content_verify_completed=false`,下一状态只能是 `CONTENT_VERIFY`。
150
+ 6. 禁止从 `RESOURCE_RESOLVE` 直接进入 `RELEVANCE_CLASSIFY`。即使没有任何资源可以读取正文,也必须进入 `CONTENT_VERIFY`,为每项写入验证状态或跳过原因并输出验证摘要。
151
+ 7. `CONTENT_VERIFY` 必须为每个 `ResourceItem` 写入内容证据、搜索证据复用说明,或不可验证原因;移动权限未知或无移动权限的资源可以只写入跳过验证原因。
152
+ 8. 只有当 `resource_items` 已准备、每项都有验证状态或跳过原因,且 `content_verify_completed=true` 时,才能进入 `RELEVANCE_CLASSIFY`。
153
+ 9. 用户调整相关性分组后,必须回到 `RELEVANCE_CLASSIFY` 输出调整后的分组结果,再进入 `PLAN_MOVE` 重新生成计划。
154
+
155
+ ### Workflow 切换门禁
156
+
157
+ 只有以下情况允许考虑切换 workflow:
158
+
159
+ 1. 用户明确说不再做主题资料收集,改为整理整个目录结构或生成盘点方案。
160
+ 2. 当前 workflow 明确无法覆盖用户的新目标。
161
+ 3. 用户要求的是目录结构治理,而不是查找主题相关资料并移动。
162
+
163
+ 即使满足以上条件,也不得自动切换;必须先向用户说明原因并等待确认。
164
+
165
+ ## 渐进加载关系
166
+
167
+ | 状态 | 必读文档 |
168
+ |-------|---------------|
169
+ | `PARSE_INPUT` / `RESOLVE_TARGET` / `CONFIRM_CONTEXT` | [`lark-drive-workflow-topic-move-collector-setup.md`](lark-drive-workflow-topic-move-collector-setup.md) |
170
+ | `SEARCH_RECALL` / `RECALL_ENHANCE` | [`lark-drive-workflow-topic-move-collector-recall.md`](lark-drive-workflow-topic-move-collector-recall.md) |
171
+ | `RESOURCE_RESOLVE` / `CONTENT_VERIFY` | [`lark-drive-workflow-topic-move-collector-resolve-verify.md`](lark-drive-workflow-topic-move-collector-resolve-verify.md) |
172
+ | `RELEVANCE_CLASSIFY` / `PLAN_MOVE` | [`lark-drive-workflow-topic-move-collector-review-plan.md`](lark-drive-workflow-topic-move-collector-review-plan.md) |
173
+ | `CONFIRM_EXECUTION` / `EXECUTE` / `VERIFY` / `RESTORE` | [`lark-drive-workflow-topic-move-collector-execute.md`](lark-drive-workflow-topic-move-collector-execute.md) |
174
+
175
+ ## 命令映射
176
+
177
+ | 状态 | 允许的命令族 | 用途 |
178
+ |-------|--------------------------|---------|
179
+ | `RESOLVE_TARGET` | `drive +inspect`、`wiki +node-get`、`wiki +space-list`、仅用于查找文件夹候选的 `drive +search` | 解析目标位置 |
180
+ | `SEARCH_RECALL` / `RECALL_ENHANCE` | `drive +search` | 搜索召回和覆盖增强 |
181
+ | `RESOURCE_RESOLVE` | `drive +inspect`、`wiki +node-get`、`drive metas batch_query`、必要时 `drive permission.members auth` | 解析标准 token、owner、权限信号和移动资格 |
182
+ | `CONTENT_VERIFY` | `docs +fetch`、`sheets +read`、`sheets +find`、必要时 `drive +preview` | 验证内容证据 |
183
+ | `EXECUTE` | `drive +create-folder`、`wiki +node-create`、`drive +move`、`wiki +move`、`wiki +move-to-drive`、`drive +task_result` | 执行已确认写操作 |
184
+ | `VERIFY` | `drive files list`、`wiki +node-list`、`wiki +node-get`、`drive +inspect`、`drive +task_result` | 验证执行结果 |
185
+ | `RESTORE` | `drive +move`、`wiki +move`、`drive +delete`、`wiki +node-delete`、`drive +task_result` | 恢复已确认资源并清理本次新建目标 |
186
+
187
+ ## 引用文档
188
+
189
+ - [输入与目标确认](lark-drive-workflow-topic-move-collector-setup.md)
190
+ - [召回](lark-drive-workflow-topic-move-collector-recall.md)
191
+ - [资源解析与内容验证](lark-drive-workflow-topic-move-collector-resolve-verify.md)
192
+ - [审核与计划](lark-drive-workflow-topic-move-collector-review-plan.md)
193
+ - [执行](lark-drive-workflow-topic-move-collector-execute.md)
194
+ - [lark-drive-search](lark-drive-search.md)
195
+ - [lark-drive-inspect](lark-drive-inspect.md)
196
+ - [lark-drive-move](lark-drive-move.md)
197
+ - [lark-drive-create-folder](lark-drive-create-folder.md)
198
+ - [lark-drive-delete](lark-drive-delete.md)
199
+ - [lark-wiki-move](../../lark-wiki/references/lark-wiki-move.md)
200
+ - [lark-wiki-move-to-drive](../../lark-wiki/references/lark-wiki-move-to-drive.md)
201
+ - [lark-wiki-node-create](../../lark-wiki/references/lark-wiki-node-create.md)
202
+ - [lark-wiki-node-delete](../../lark-wiki/references/lark-wiki-node-delete.md)
@@ -97,7 +97,7 @@ Structure Level:
97
97
  2. Entry file 超过约 300 行时,优先拆 `commands`、`outputs` 或 `artifacts` reference。
98
98
  3. 只有执行、验证、恢复或 rollback 状态链复杂到影响可读性时,才升级到 `S3` phase files。
99
99
  4. 垂直业务包优先作为已有 workflow 的 recipe / policy / template,不默认新增独立 workflow。
100
- 5. 已有样板:`permission_governance` 是 `R2/S2`;`knowledge_organize` 是 `R2-R3/S3`。
100
+ 5. 已有样板:`permission_governance` 是 `R2/S2`;`knowledge_organize` 和 `topic_move_collector` 是 `R2-R3/S3`。
101
101
 
102
102
  ## 加载与拆分边界
103
103
 
@@ -108,10 +108,11 @@ Structure Level:
108
108
 
109
109
  ## Workflow Registry
110
110
 
111
- | Workflow | Status | Risk | Structure | Entry File | Trigger |
112
- |----------|--------|------|-----------|------------|---------|
111
+ | Workflow | Status | Risk | Structure | Entry File | Trigger |
112
+ |----------|--------|------|-----------|------------|-----------------------------------------------------------------|
113
113
  | `permission_governance` | Registered | `R2` | `S2` | [`lark-drive-workflow-permission-governance.md`](lark-drive-workflow-permission-governance.md) | 权限审计、公开链接/外部访问、复制/下载/评论/分享设置、权限申请、owner 转移 / 批量 owner 转移、密级标签调整 |
114
- | `knowledge_organize` | Registered | `R2-R3` | `S3` | [`lark-drive-workflow-knowledge-organize.md`](lark-drive-workflow-knowledge-organize.md) | 整理云盘 / 文件夹 / 文档库 / 知识库、盘点目录结构、归类资源、生成整理方案,并在用户确认后创建目录或移动资源 |
114
+ | `knowledge_organize` | Registered | `R2-R3` | `S3` | [`lark-drive-workflow-knowledge-organize.md`](lark-drive-workflow-knowledge-organize.md) | 整理云盘 / 文件夹 / 文档库 / 知识库、盘点目录结构、归类资源、生成整理方案,并在用户确认后创建目录或移动资源 |
115
+ | `topic_move_collector` | Registered | `R2-R3` | `S3` | [`lark-drive-workflow-topic-move-collector.md`](lark-drive-workflow-topic-move-collector.md) | 按主题、关键词或内容线索跨容器搜索资料,验证相关性和移动资格,并在用户确认后归档到 Drive 文件夹或 Wiki 节点 |
115
116
 
116
117
  ## Workflow Loading
117
118
 
@@ -32,7 +32,7 @@ metadata:
32
32
  | `--max-events N` | Exit after N events. Default 0 = unlimited |
33
33
  | `--timeout D` | Exit after duration D (e.g. `30s`, `2m`). Default 0 = no timeout. Whichever of `--max-events` / `--timeout` fires first wins |
34
34
  | `--output-dir <dir>` | Write each event as a file (relative paths only; prevents traversal) |
35
- | `--quiet` | Suppress stderr diagnostics. **AI should not use this** — it silences the ready marker |
35
+ | `--quiet` | Suppress ready/exit markers and per-event stderr diagnostics, including drop warnings. This can hide event loss. **AI should not use this** — it removes readiness and integrity signals |
36
36
  | `--as user\|bot\|auto` | Identity for the session (see lark-shared) |
37
37
 
38
38
 
@@ -42,6 +42,9 @@ metadata:
42
42
  # Default: stream every event for the key (no filter, no projection)
43
43
  lark-cli event consume im.message.receive_v1 --as bot
44
44
 
45
+ # List every EventKey of one domain (the authoritative, always-current catalog)
46
+ lark-cli event list --domain vc --json
47
+
45
48
  # Grab one sample event to inspect payload shape
46
49
  lark-cli event consume im.message.receive_v1 --max-events 1 --timeout 30s --as bot
47
50
 
@@ -57,7 +60,7 @@ wait
57
60
 
58
61
  ## Call flow
59
62
 
60
- 1. `lark-cli event list --json` → pick a legal key
63
+ 1. `lark-cli event list --json` → pick a legal key. `--domain <d>` narrows to one domain; the domains are `application`, `approval`, `board`, `card`, `im`, `minutes`, `task`, `vc`. An unknown domain fails with the valid set listed in the hint.
61
64
  2. `lark-cli event schema <key> --json` → read `resolved_output_schema` + `jq_root_path` to determine field paths
62
65
  3. `lark-cli event consume <key> [--jq '<expr>']` → consume
63
66
 
@@ -94,7 +97,7 @@ Orchestrators should treat `reason: limit/timeout/signal` (all exit 0) as "busin
94
97
 
95
98
  ### Never `kill -9`
96
99
 
97
- **Avoid `kill -9` on consume processes**: for EventKeys with a **PreConsume hook** (those that register server-side subscriptions via OAPI), `kill -9` skips the OAPI unsubscribe and leaks server-side subscriptions (symptoms: "subscription already exists" on restart, duplicate event delivery). Prefer SIGTERM or closing stdin.
100
+ **Avoid `kill -9` on consume processes** for EventKeys whose PreConsume registers a server-side subscription **and** unsubscribes on exit (minutes, vc, board keys): `kill -9` skips the OAPI unsubscribe and leaks the server-side subscription (symptoms: "subscription already exists" on restart, duplicate event delivery). Keys whose subscription is a durable relation with no cleanup (task, approval keys) do not leak this way, but SIGTERM or closing stdin remains the right shutdown for every key.
98
101
 
99
102
  ### One consume, one EventKey (multi-key = multi-shell)
100
103
 
@@ -147,9 +150,10 @@ Lark-defined semantic tags (**not** JSON Schema's standard `format`). Common val
147
150
 
148
151
  | Topic | Reference | Coverage |
149
152
  |------------|------------------------------------------------------------------------------|---|
153
+ | Application | [`references/lark-event-application.md`](references/lark-event-application.md) | Catalog of Application EventKeys, including `application.bot.menu_v6` for custom bot menu push events + flattened `event_key` / operator fields + jq recipe |
150
154
  | Approval | [`references/lark-event-approval.md`](references/lark-event-approval.md) | Catalog of 2 Approval EventKeys (`approval.instance.status_changed_v4`, `approval.task.status_changed_v4`) + optional/multi `subscription_type` pre-registration + user-auth subscription lifecycle + flat output field reference |
151
155
  | IM | [`references/lark-event-im.md`](references/lark-event-im.md) | Catalog of 12 IM EventKeys + shape notes (flat vs V2 envelope) + `im.message.receive_v1` field gotchas (`sender_id` is open_id only; `.content` is plain text except for `interactive` cards) + common jq recipes (filter by chat_type / message_type / sender); for `card.action.trigger` see also [`../lark-im/references/lark-im-card-action-reply.md`](../lark-im/references/lark-im-card-action-reply.md) |
152
156
  | Task | [`references/lark-event-task.md`](references/lark-event-task.md) | Catalog of 1 Task EventKey (`task.task.update_user_access_v2`) + Native V2 envelope shape + task commit types + user/bot subscription notes |
153
- | VC | [`references/lark-event-vc.md`](references/lark-event-vc.md) | Catalog of 4 VC EventKeys (`vc.meeting.participant_meeting_started_v1`, `vc.meeting.participant_meeting_joined_v1`, `vc.meeting.participant_meeting_ended_v1`, `vc.note.generated_v1`) + field reference + source type semantics (meeting only) |
157
+ | VC | [`references/lark-event-vc.md`](references/lark-event-vc.md) | Catalog of 7 VC EventKeys (meeting lifecycle `participant_meeting_started/joined/ended_v1`, `vc.note.generated_v1`, recording `recording_started/transcript_generated/ended_v1`) + field reference + source type semantics; the live list is always `lark-cli event list --domain vc --json` |
154
158
  | Minutes | [`references/lark-event-minutes.md`](references/lark-event-minutes.md) | Catalog of 1 Minutes EventKey (`minutes.minute.generated_v1`) + field reference + source type semantics (meeting only) |
155
159
  | Whiteboard | [`references/lark-event-whiteboard.md`](references/lark-event-whiteboard.md) | Catalog of 1 Board EventKey (`board.whiteboard.updated_v1`) + per-whiteboard subscription model (requires `-p whiteboard_id=<token>`) + payload field reference (whiteboard_id / operator_ids triple-id) |
@@ -0,0 +1,38 @@
1
+ # Lark Application Events
2
+
3
+ This page covers Application-domain EventKeys supported by `lark-cli event`.
4
+
5
+ ## `application.bot.menu_v6`
6
+
7
+ Triggered when a user clicks a custom bot menu item whose response action is configured as a push event.
8
+
9
+ Listen as the bot identity:
10
+
11
+ ```bash
12
+ lark-cli event consume application.bot.menu_v6 --as bot
13
+ ```
14
+
15
+ Filter a specific menu event key:
16
+
17
+ ```bash
18
+ lark-cli event consume application.bot.menu_v6 --as bot --jq 'select(.event_key == "start_eval")'
19
+ ```
20
+
21
+ Output is flattened at the top level:
22
+
23
+ | Field | Meaning |
24
+ |---|---|
25
+ | `type` | Event type, always `application.bot.menu_v6` |
26
+ | `event_id` | Globally unique event ID from the event header |
27
+ | `timestamp` | Event delivery time, preferring `header.create_time` |
28
+ | `app_id` | App ID from the event header |
29
+ | `tenant_key` | Tenant key from the event header |
30
+ | `event_key` | Developer-defined menu event key, for example `start_eval` |
31
+ | `menu_timestamp` | Menu click timestamp from the event body |
32
+ | `operator_id` | Operator open_id alias |
33
+ | `operator_open_id` | Operator open_id |
34
+ | `operator_union_id` | Operator union_id |
35
+ | `operator_user_id` | Operator user_id |
36
+ | `operator_name` | Operator display name |
37
+
38
+ This EventKey has no `--param`; use `--jq` to filter by `event_key` or operator fields.
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **Prerequisite:** Read [`../SKILL.md`](../SKILL.md) first for the `event consume` essentials (commands, subprocess contract, jq usage).
4
4
 
5
- ## Key catalog (4)
5
+ ## Key catalog (7)
6
6
 
7
7
  | EventKey | Purpose |
8
8
  |---|---|
@@ -10,8 +10,11 @@
10
10
  | `vc.meeting.participant_meeting_joined_v1` | The current user has joined a meeting |
11
11
  | `vc.meeting.participant_meeting_ended_v1` | A meeting the current user participates in has ended |
12
12
  | `vc.note.generated_v1` | A note has been generated (meeting, recording, upload, etc.) |
13
+ | `vc.recording.recording_started_v1` | A recording_bean recording has started (Feishu software only) |
14
+ | `vc.recording.recording_transcript_generated_v1` | Recording_bean transcript items were generated (Feishu software only) |
15
+ | `vc.recording.recording_ended_v1` | A recording_bean recording ended and uploaded successfully (Feishu software only) |
13
16
 
14
- All four keys use a **Custom schema** (flat output) and carry a **PreConsume hook** that auto-subscribes / unsubscribes via OAPI on first / last consumer. All require `--as user`.
17
+ All seven keys use a **Custom schema** (flat output) and carry a **PreConsume hook** that auto-subscribes / unsubscribes via OAPI on first / last consumer. All require `--as user`.
15
18
 
16
19
  ## Scopes & auth
17
20
 
@@ -21,6 +24,9 @@ All four keys use a **Custom schema** (flat output) and carry a **PreConsume hoo
21
24
  | `vc.meeting.participant_meeting_joined_v1` | `vc:meeting.meetingevent:read` | user |
22
25
  | `vc.meeting.participant_meeting_ended_v1` | `vc:meeting.meetingevent:read` | user |
23
26
  | `vc.note.generated_v1` | `vc:note:read` | user |
27
+ | `vc.recording.recording_started_v1` | `vc:recording:read` | user |
28
+ | `vc.recording.recording_transcript_generated_v1` | `vc:recording:read` | user |
29
+ | `vc.recording.recording_ended_v1` | `vc:recording:read` | user |
24
30
 
25
31
  ---
26
32
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: lark-im
3
3
  version: 1.0.0
4
- description: "飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件(支持大文件分片下载)、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。"
4
+ description: "飞书即时通讯:收发消息和管理群聊。发送和回复消息、搜索聊天记录、管理群聊成员、上传下载图片和文件、管理表情回复、发送应用内/短信/电话加急、发送和处理交互卡片(Interactive Card)、监听卡片按钮回调(card.action.trigger)。当用户需要发消息、查看或搜索聊天记录、下载聊天中的文件、查看群成员、搜索群、创建群聊或话题群、管理标记数据、管理 Feed 置顶(添加/移除/查询置顶会话)、管理标签数据、处理卡片回调时使用。"
5
5
  metadata:
6
6
  requires:
7
7
  bins: ["lark-cli"]
@@ -56,7 +56,7 @@ The four message-pulling shortcuts (`+messages-mget`, `+chat-messages-list`, `+m
56
56
 
57
57
  ### Opt-in resource auto-download (`--download-resources`)
58
58
 
59
- `+chat-messages-list`, `+messages-mget`, and `+threads-messages-list` accept `--download-resources` (**off by default** — no `resources` block and no extra requests when omitted). When set, eligible message resources (image/file/audio/video/media + post-embedded; **stickers excluded**) are downloaded into `./lark-im-resources/` and each message gains a `resources` array of `{message_id, key, type, local_path, size_bytes}`. Downloads are deduped by `(message_id, file_key)`, run with bounded concurrency, and isolate single-resource failures (`error: true` + stderr warning). **Scope:** requires `im:message:readonly` (already declared by the listing commands — no extra scope); works under both user and bot identity. For one-off downloads use [`+messages-resources-download`](references/lark-im-messages-resources-download.md). Full contract: [`references/lark-im-message-enrichment.md`](references/lark-im-message-enrichment.md).
59
+ `+chat-messages-list`, `+messages-mget`, and `+threads-messages-list` accept `--download-resources` to save eligible attachments into `./lark-im-resources/` and add a `resources` array to each message. It is off by default; stickers are not downloadable. A failed attachment is reported on that resource without aborting the message pull. Use [`+messages-resources-download`](references/lark-im-messages-resources-download.md) for one attachment. See [`references/lark-im-message-enrichment.md`](references/lark-im-message-enrichment.md) for the output contract.
60
60
 
61
61
  ### Card Messages (Interactive)
62
62
 
@@ -104,20 +104,20 @@ Shortcut 是对常用操作的高级封装(`lark-cli im +<verb> [flags]`)。
104
104
  | Shortcut | 说明 |
105
105
  |----------|------|
106
106
  | [`+chat-create`](references/lark-im-chat-create.md) | Create a group chat or topic chat; user/bot; --chat-mode group|topic; private/public; invites users/bots; optionally sets bot manager |
107
- | [`+chat-list`](references/lark-im-chat-list.md) | List chats the current user/bot is a member of; defaults to groups; pass --types=p2p,group to include p2p single chats (user-only); user/bot; supports sorting, pagination, --exclude-muted (user-only) |
107
+ | [`+chat-list`](references/lark-im-chat-list.md) | List chats the current user/bot is a member of; defaults to groups; pass --types=p2p,group to include p2p single chats (user-only); user/bot; supports sorting, auto-pagination, --exclude-muted (user-only) |
108
108
  | [`+chat-members-list`](references/lark-im-chat-members-list.md) | List members of a chat; returns separate users[] / bots[] buckets; callable as user or bot; --member-types filters which kinds to return; --page-all pagination; surfaces truncations[] when the server caps a bucket |
109
- | [`+chat-messages-list`](references/lark-im-chat-messages-list.md) | List messages in a chat or P2P conversation; user/bot; accepts --chat-id or --user-id, resolves P2P chat_id, supports time range/sort/pagination |
110
- | [`+chat-search`](references/lark-im-chat-search.md) | Search visible group chats by --query keyword and/or --member-ids; user/bot; e.g. look up chat_id by group name; supports type filters, sorting, pagination, and --exclude-muted (user identity only) |
109
+ | [`+chat-messages-list`](references/lark-im-chat-messages-list.md) | List messages in a chat or P2P conversation; user/bot; accepts --chat-id or --user-id, resolves P2P chat_id, supports time range, --order asc/desc sorting, auto-pagination |
110
+ | [`+chat-search`](references/lark-im-chat-search.md) | Search visible group chats by --query keyword and/or --member-ids; user/bot; e.g. look up chat_id by group name; supports type filters, sorting, auto-pagination, and --exclude-muted (user identity only) |
111
111
  | [`+chat-update`](references/lark-im-chat-update.md) | Update group chat name or description; user/bot; updates a chat's name or description |
112
112
  | [`+messages-mget`](references/lark-im-messages-mget.md) | Batch get messages by IDs; user/bot; fetches up to 50 om_ message IDs, formats sender names, expands thread replies |
113
113
  | [`+messages-reply`](references/lark-im-messages-reply.md) | Reply to a message (supports thread replies); user/bot; supports text/markdown/post/media replies, reply-in-thread, idempotency key |
114
- | [`+messages-resources-download`](references/lark-im-messages-resources-download.md) | Download images/files from a message; user/bot; supports automatic chunked download for large files (8MB chunks), auto-detects file extension from Content-Type |
115
- | [`+messages-search`](references/lark-im-messages-search.md) | Search messages across chats (supports keyword, sender, time range filters) with user identity; user-only; filters by chat/sender/attachment/time, supports auto-pagination via `--page-all` / `--page-limit`, enriches results via batched mget and chats batch_query |
114
+ | [`+messages-resources-download`](references/lark-im-messages-resources-download.md) | Download an image or file attached to a message; user/bot |
115
+ | [`+messages-search`](references/lark-im-messages-search.md) | Search messages across chats (supports keyword, sender, time range filters) with user or bot identity; filters by chat/sender/attachment/time, supports auto-pagination via `--page-all` / `--page-limit`, enriches results via batched mget and chats batch_query |
116
116
  | [`+messages-send`](references/lark-im-messages-send.md) | Send a message to a chat or direct message; user/bot; sends to chat-id or user-id with text/markdown/post/media, supports idempotency key |
117
- | [`+threads-messages-list`](references/lark-im-threads-messages-list.md) | List messages in a thread; user/bot; accepts om_/omt_ input, resolves message IDs to thread_id, supports sort/pagination |
117
+ | [`+threads-messages-list`](references/lark-im-threads-messages-list.md) | List messages in a thread; user/bot; accepts om_/omt_ input, resolves message IDs to thread_id, supports --order asc/desc sorting, auto-pagination |
118
118
  | [`+flag-create`](references/lark-im-flag-create.md) | Create a bookmark on a message; user-only; defaults to message-layer flag; use --flag-type feed for feed-layer flag (item_type auto-detected from chat mode) |
119
119
  | [`+flag-cancel`](references/lark-im-flag-cancel.md) | Cancel (remove) a bookmark. When no --flag-type is given, best-effort double-cancel: removes message layer and (when chat_type is determinable) feed layer |
120
- | [`+flag-list`](references/lark-im-flag-list.md) | List bookmarks; user-only; auto-enriches feed-type thread entries with message content; supports `--page-all` auto-pagination |
120
+ | [`+flag-list`](references/lark-im-flag-list.md) | List bookmarks; user-only; auto-enriches feed-type thread entries with message content; `--page-all` is capped by `--page-limit` (default 20, max 1000), and `has_more=true` means the result is incomplete |
121
121
  | [`+feed-shortcut-create`](references/lark-im-feed-shortcut-create.md) | Add chats to the user's feed shortcuts; user-only; oc_xxx chat IDs only; batch up to 10 per call; `--head`/`--tail` controls insertion order; partial failures return an `ok:false` ledger |
122
122
  | [`+feed-shortcut-remove`](references/lark-im-feed-shortcut-remove.md) | Remove chats from the user's feed shortcuts; user-only; batch up to 10 per call; removing an absent shortcut is idempotent success; real per-item failures return an `ok:false` ledger |
123
123
  | [`+feed-shortcut-list`](references/lark-im-feed-shortcut-list.md) | List one page of the user's feed shortcuts; user-only; omit `--page-token` for the first page; default output enriches CHAT entries under `detail`; pass `--no-detail` to skip the extra lookup and `im:chat:read` scope |
@@ -29,7 +29,7 @@ Card 2.0 组件按**容器 / 展示 / 交互**三类,均通过 `tag` 字段声
29
29
  "title": { "tag": "plain_text", "content": "卡片标题" },
30
30
  "subtitle": { "tag": "plain_text", "content": "副标题:一句上下文(时间/来源/状态)" },
31
31
  "template": "blue",
32
- "icon": { "tag": "standard_icon", "token": "notice_colorful" },
32
+ "icon": { "tag": "standard_icon", "token": "lark-logo_colorful" },
33
33
  "text_tag_list": [
34
34
  { "tag": "text_tag", "text": { "tag": "plain_text", "content": "状态标签" }, "color": "blue" }
35
35
  ]
@@ -105,12 +105,12 @@
105
105
  "header": {
106
106
  "title": { "tag": "plain_text", "content": "卡片标题" },
107
107
  "template": "blue",
108
- "icon": { "tag": "standard_icon", "token": "mail_colorful" }
108
+ "icon": { "tag": "standard_icon", "token": "calendar_colorful" }
109
109
  }
110
110
  ```
111
111
 
112
- - `token` 从 `resource/icons.md` 按场景选取;彩色图标用 `*_colorful` 后缀,单色用普通名称。
113
- - 常用速查:通知 `notice_colorful`、告警 `warning_colorful`、审批 `approve_colorful`、日历 `calendar_colorful`、数据 `chart_colorful`、任务 `todo_colorful`、AI `myai_colorful`。
112
+ - `token` 必须从 `resource/icons.md` 的精确枚举中选择;禁止根据名称规律自行拼接 token。没有合适的 token 时省略 icon。
113
+ - 场景速查:日历 `calendar_colorful`、待办 `todo_colorful`、投票 `vote_colorful`、妙记 `file-lark-minutes_colorful`、多维表格 `wiki-bitable_colorful`、表单 `file-form_colorful`、社区 `larkcommunity_colorful`、招聘 `hirelogo_colorful`、飞书品牌 `lark-logo_colorful`、Meego `meego_colorful`、AI `myai_colorful`、aPaaS `apaas_colorful`、审批 `approval_colorful`、通用 AI `ai-common_colorful`。
114
114
 
115
115
  ### 1. 配色纪律(服务 P6 语义一致)
116
116
 
@@ -212,7 +212,7 @@ header 有三层能力,**尽量用满**(至少用 `title` + `icon`;`subtit
212
212
  "title": { "tag": "plain_text", "content": "发版审批" },
213
213
  "subtitle": { "tag": "plain_text", "content": "2026-06-25 · 后端服务" },
214
214
  "template": "blue",
215
- "icon": { "tag": "standard_icon", "token": "approve_colorful" },
215
+ "icon": { "tag": "standard_icon", "token": "approval_colorful" },
216
216
  "text_tag_list": [
217
217
  { "tag": "text_tag", "text": { "tag": "plain_text", "content": "待审批" }, "color": "yellow" }
218
218
  ]
@@ -34,5 +34,19 @@
34
34
  | 通知/铃铛 | `bell_outlined` | 定位 | `pin_outlined` |
35
35
  | 附件 | `attachment_outlined` | 审批 | `approval_outlined` |
36
36
 
37
+ ## 彩色图标(精确 token)
38
+
39
+ 彩色图标必须从下表按**完整字符串**选择,禁止根据名称规律自行拼接。彩色 token 自带颜色,不要再推导其他后缀或变体。
40
+
41
+ | 含义 | token | 含义 | token |
42
+ |---|---|---|---|
43
+ | 日历 | `calendar_colorful` | 待办 | `todo_colorful` |
44
+ | 投票 | `vote_colorful` | 飞书妙记 | `file-lark-minutes_colorful` |
45
+ | 多维表格 | `wiki-bitable_colorful` | 表单 | `file-form_colorful` |
46
+ | 飞书社区 | `larkcommunity_colorful` | 招聘 | `hirelogo_colorful` |
47
+ | 飞书品牌 | `lark-logo_colorful` | Meego | `meego_colorful` |
48
+ | AI | `myai_colorful` | aPaaS | `apaas_colorful` |
49
+ | 审批 | `approval_colorful` | 通用 AI | `ai-common_colorful` |
50
+
37
51
  > token 必须与官方完全一致,否则图标不渲染。上表为常用项,全量(数百个,分系统/商务/沟通/用户/媒体/文档等类目)以官方图标库为准:
38
52
  > https://open.larkoffice.com/document/feishu-cards/enumerations-for-icons
@@ -23,6 +23,9 @@ lark-cli im +chat-list --page-size 50
23
23
  # Pagination
24
24
  lark-cli im +chat-list --page-token "xxx"
25
25
 
26
+ # Fetch multiple pages automatically, up to 10 pages by default
27
+ lark-cli im +chat-list --page-all
28
+
26
29
  # Drop muted chats (user identity only)
27
30
  lark-cli im +chat-list --exclude-muted
28
31
 
@@ -50,13 +53,17 @@ lark-cli im +chat-list --as user --types p2p
50
53
  | `--types <strings>` | No | `group`, `p2p` (comma-separated or repeated) | Chat types to include. Omitted = groups only (backward compatible). `p2p` requires user identity (`--as user`); under `--as bot`, `--types=p2p` alone is rejected and `--types=p2p,group` is silently downgraded to `group` |
51
54
  | `--sort <field>` | No | `create_time` (default, ascending), `active_time` (descending) | Result ordering |
52
55
  | `--page-size <n>` | No | 1-100, default 20 | Number of results per page |
53
- | `--page-token <token>` | No | - | Pagination token from the previous response |
56
+ | `--page-token <token>` | No | - | Starting cursor, normally returned by a previous response |
57
+ | `--page-all` | No | - | Automatically fetch and merge subsequent pages; capped by `--page-limit` |
58
+ | `--page-limit <n>` | No | 1-1000, default 10 | Maximum pages fetched by `--page-all` |
54
59
  | `--exclude-muted` | No | User identity only | Drop chats the current user has muted (do-not-disturb). Under `--as bot`, the flag is silently inactive; see "Filtering muted chats" below |
55
60
  | `--format json` | No | - | Output as JSON |
56
61
  | `--dry-run` | No | - | Preview the request without executing it |
57
62
 
58
63
  > **Note:** Supports both `--as user` (default) and `--as bot`. When using bot identity, the app must have bot capability enabled.
59
64
 
65
+ With `--page-all`, `--page-token` sets the starting cursor. If `meta.pagination.complete=false`, resume from `meta.pagination.next_token` or raise `--page-limit`.
66
+
60
67
  ## Output Fields
61
68
 
62
69
  | Field | Description |
@@ -156,7 +163,7 @@ done
156
163
 
157
164
  | Symptom | Root Cause | Solution |
158
165
  |---------|---------|---------|
159
- | `--page-size must be an integer between 1 and 100` | page-size is out of range or not an integer | Use an integer between 1 and 100 |
166
+ | `invalid --page-size 101: must be between 1 and 100` | page-size is out of range | Use an integer between 1 and 100 |
160
167
  | Permission denied (99991672) | The bot app does not have `im:chat:read` TAT permission enabled | Enable the permission for the app in the Open Platform console |
161
168
  | Permission denied (99991679) with `--as user` | UAT is not authorized for `im:chat:read` | Run `lark-cli auth login --scope "im:chat:read"` |
162
169
  | `Bot ability is not activated` (232025) | The app does not have bot capability enabled | Enable bot capability in the Open Platform console |
@@ -19,9 +19,12 @@ lark-cli im +chat-members-list --chat-id oc_xxx --member-types user,bot
19
19
  # Walk every page (capped by --page-limit; 0 = unlimited)
20
20
  lark-cli im +chat-members-list --chat-id oc_xxx --page-all --page-limit 0
21
21
 
22
- # Resume from a specific cursor (single page; --page-all is ignored)
22
+ # Fetch one page starting at a specific cursor
23
23
  lark-cli im +chat-members-list --chat-id oc_xxx --page-token "xxx"
24
24
 
25
+ # Continue automatically from a specific cursor
26
+ lark-cli im +chat-members-list --chat-id oc_xxx --page-token "xxx" --page-all
27
+
25
28
  # JSON output / preview the request
26
29
  lark-cli im +chat-members-list --chat-id oc_xxx --format json
27
30
  lark-cli im +chat-members-list --chat-id oc_xxx --dry-run
@@ -35,7 +38,7 @@ lark-cli im +chat-members-list --chat-id oc_xxx --dry-run
35
38
  | `--member-types <strings>` | No | `user`, `bot` (comma-separated or repeated) | Member types to return. Omitted = all |
36
39
  | `--member-id-type <type>` | No | `open_id` (default), `union_id`, `user_id` | ID type for `member_id` in the response |
37
40
  | `--page-size <n>` | No | 1-100, default 20 | Results per page. With `--page-all` and no explicit `--page-size`, the max (100) is used automatically to minimize round-trips |
38
- | `--page-token <token>` | No | - | Pagination cursor; **implies a single-page fetch** (disables auto-pagination) |
41
+ | `--page-token <token>` | No | - | Starting cursor, normally returned by a previous response |
39
42
  | `--page-all` | No | - | Automatically walk every page (capped by `--page-limit`) |
40
43
  | `--page-limit <n>` | No | default 10, `0` = unlimited | Max pages to fetch with `--page-all` |
41
44
  | `--page-delay <ms>` | No | default 200, `0` = no delay | Delay between pages during `--page-all` (throttle to avoid rate limits on large lists) |
@@ -70,7 +73,7 @@ A truncated result is *not* fixable by paging further — it is a server-side ca
70
73
  - With `--page-all` and no explicit `--page-size`, the shortcut uses the maximum page size (100) so a full walk takes the fewest round-trips. An explicit `--page-size` is always honored.
71
74
  - `--page-all` sleeps `--page-delay` ms (default 200) between pages to avoid hammering the API when a tenant has no server-side member cap and the list spans many pages. Set `--page-delay 0` to disable.
72
75
  - `--page-all` stops at `--page-limit` pages (default 10). When it stops early, `has_more` stays `true` so you know the result is incomplete; re-run with `--page-limit 0` for everything.
73
- - `--page-token` and `--page-all` together: `--page-token` wins (single-page fetch from the supplied cursor); a stderr warning is emitted.
76
+ - `--page-token` and `--page-all` together: automatic pagination starts at the supplied cursor and continues until exhaustion or `--page-limit`.
74
77
  - Across pages, `users[]` and `bots[]` are concatenated; `truncations` / `has_more` / `page_token` come from the last page fetched.
75
78
 
76
79
  ## Common Errors and Troubleshooting
@@ -78,6 +81,6 @@ A truncated result is *not* fixable by paging further — it is a server-side ca
78
81
  | Symptom | Root Cause | | Solution |
79
82
  |---------|---------|---|---------|
80
83
  | `--chat-id is required` | `--chat-id` omitted | | Provide the `oc_xxx` chat ID |
81
- | `--page-size must be an integer between 1 and 100` | out of range | | Use 1-100 |
84
+ | `invalid --page-size 101: must be between 1 and 100` | out of range | | Use 1-100 |
82
85
  | `--member-types contains invalid value` | value other than `user`/`bot` | | Use `user`, `bot`, or both |
83
86
  | Permission denied | missing `im:chat.members:read` | | Bot: enable the scope in the console. User: `lark-cli auth login --scope "im:chat.members:read"` |
@@ -29,6 +29,9 @@ lark-cli im +chat-messages-list --chat-id oc_xxx --order asc --page-size 20
29
29
  # Pagination
30
30
  lark-cli im +chat-messages-list --chat-id oc_xxx --page-token "xxx"
31
31
 
32
+ # Fetch multiple pages automatically, up to 10 pages by default
33
+ lark-cli im +chat-messages-list --chat-id oc_xxx --page-all
34
+
32
35
  # JSON output
33
36
  lark-cli im +chat-messages-list --chat-id oc_xxx --format json
34
37
  ```
@@ -43,7 +46,9 @@ lark-cli im +chat-messages-list --chat-id oc_xxx --format json
43
46
  | `--end <time>` | No | End time (ISO 8601 or date only) |
44
47
  | `--order <order>` | No | Sort order: `asc` / `desc` (default `desc`) |
45
48
  | `--page-size <n>` | No | Page size (default 50, max 50) |
46
- | `--page-token <token>` | No | Pagination token |
49
+ | `--page-token <token>` | No | Starting cursor, normally returned by a previous response |
50
+ | `--page-all` | No | Automatically fetch and merge subsequent pages; capped by `--page-limit` |
51
+ | `--page-limit <n>` | No | Maximum pages fetched by `--page-all` (default 10, range 1-1000) |
47
52
  | `--no-reactions` | No | Skip auto-fetching the `reactions` block |
48
53
  | `--download-resources` | No | Download message resources (image/file/audio/video/media + post-embedded, excluding stickers) into `./lark-im-resources/` and attach a `resources` block. Off by default; no extra requests when omitted |
49
54
 
@@ -106,12 +111,14 @@ Each message contains:
106
111
 
107
112
  ## Pagination (`has_more` / `page_token`)
108
113
 
109
- `im +chat-messages-list` returns `has_more` and `page_token` when more data is available. Use `--page-token` to continue:
114
+ By default, `im +chat-messages-list` fetches one page. It returns `has_more` and `page_token` when more data is available. Use `--page-token` to continue:
110
115
 
111
116
  ```bash
112
117
  lark-cli im +chat-messages-list --chat-id oc_xxx --page-token <PAGE_TOKEN>
113
118
  ```
114
119
 
120
+ With `--page-all`, `--page-token` sets the starting cursor. If `meta.pagination.complete=false`, resume from `meta.pagination.next_token` or raise `--page-limit`.
121
+
115
122
  You can also fall back to the generic API:
116
123
 
117
124
  ```bash
@@ -149,7 +156,7 @@ lark-cli api GET /open-apis/im/v1/messages \
149
156
  lark-cli im +chat-search --as bot --query "<chat name keyword>" --format json
150
157
  lark-cli im +chat-messages-list --as bot --chat-id <chat_id> --page-size 50 --format json
151
158
  ```
152
- Do not use `im +messages-search --as bot`; `+messages-search` is user-only. Continue with `--page-token` if `has_more=true`.
159
+ If the request is keyword search across message content, `im +messages-search --as bot` is also supported. Continue with `--page-token` if `has_more=true`.
153
160
 
154
161
  ## References
155
162