@amaster.ai/pi-lark 0.1.2-beta.75 → 0.1.2-beta.77

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@amaster.ai/pi-lark",
3
- "version": "0.1.2-beta.75",
3
+ "version": "0.1.2-beta.77",
4
4
  "description": "Pi extension for Lark/Feishu workspace — calendar, docs, drive, sheets, tasks, mail and more via lark-cli.",
5
5
  "keywords": [
6
6
  "pi-package",
@@ -61,7 +61,7 @@
61
61
  "vitest": "^4.0.0"
62
62
  },
63
63
  "dependencies": {
64
- "@amaster.ai/pi-shared": "0.1.2-beta.75"
64
+ "@amaster.ai/pi-shared": "0.1.2-beta.77"
65
65
  },
66
66
  "scripts": {
67
67
  "fetch-skills": "node scripts/fetch-skills.mjs",
@@ -75,6 +75,8 @@ lark-cli apps +db-env-create --app-id app_xxx --environment dev --sync-data --ye
75
75
 
76
76
  > 预览与发布同一端点,故 `+db-env-diff` 也需 `spark:app:write` scope(不是纯只读权限)。
77
77
 
78
+ **发布审批拦截**:若应用的发布配置了审批,`+db-env-migrate` 会被服务端拒绝(`feature_not_available`,exit 1)。这**不是**参数问题:换 flag、重试都不会成功,也不要去跑 `+db-env-create`。改走应用发布:`lark-cli apps +release-create --app-id <app_id>`,或让用户在页面上发布。只有真发布被拦,`+db-env-diff` 预览照常可用。
79
+
78
80
  ```bash
79
81
  lark-cli apps +db-env-diff --app-id app_xxx
80
82
  lark-cli apps +db-env-migrate --app-id app_xxx --yes
@@ -58,7 +58,7 @@ lark-cli im +chat-members-list --chat-id <chat_id> --member-types bot
58
58
 
59
59
  机器人的 open_id 同样是 `ou_` 开头;不要传 `cli_` 开头的 app_id,那是应用 ID,不是日程参与人身份。
60
60
 
61
- 无论哪个方向,转让都要求转出方和接收方**同租户**,且接收方能通过高管模式的协作校验。
61
+ 无论哪个方向,转让都要求转出方和接收方**同租户**。
62
62
 
63
63
  ## 重复性日程
64
64
 
@@ -48,7 +48,7 @@ lark-cli drive +move \
48
48
  --type docx \
49
49
  --folder-token <TARGET_FOLDER_TOKEN>
50
50
 
51
- # 移动文件夹(异步操作,会自动有限轮询任务状态)
51
+ # 移动文件夹
52
52
  lark-cli drive +move \
53
53
  --file-token <FOLDER_TOKEN> \
54
54
  --type folder \
@@ -79,12 +79,12 @@ lark-cli drive +move \
79
79
  | `bitable` | 多维表格 |
80
80
  | `mindnote` | 思维笔记 |
81
81
  | `slides` | 幻灯片 |
82
- | `folder` | 文件夹(移动文件夹是异步操作) |
82
+ | `folder` | 文件夹 |
83
83
 
84
84
  ## 行为说明
85
85
 
86
86
  - **普通文件移动**:同步操作,立即完成
87
- - **文件夹移动**:异步操作,接口返回 `task_id`,shortcut 会先做有限轮询;如果在轮询窗口内完成,则直接返回成功结果
87
+ - **文件夹移动**:可能异步完成,shortcut 内置有限次数的轮询。同步完成或在轮询期间完成时,返回 `ready=true`;若轮询结束仍未完成,则返回 `ready=false`,可按返回的 `next_command` 继续查询
88
88
  - **轮询超时不是失败**:文件夹移动内置最多轮询 30 次、每次间隔 2 秒;如果轮询结束任务仍未完成,会返回 `task_id`、`status`、`ready=false`、`timed_out=true` 和 `next_command`
89
89
  - **继续查询**:当看到 `next_command` 时,改用 `lark-cli drive +task_result --scenario task_check --task-id <TASK_ID>` 继续查询
90
90
  - **目标文件夹**:如果不指定 `--folder-token`,文件将被移动到用户的根文件夹("我的空间")
@@ -263,12 +263,12 @@ lark-cli drive +task_result --scenario import --ticket <IMPORT_TICKET>
263
263
  ### 配合 +move 使用
264
264
 
265
265
  ```bash
266
- # 1. 移动文件夹(异步操作)
266
+ # 1. 移动文件夹
267
267
  lark-cli drive +move --file-token <FOLDER_TOKEN> --type folder --folder-token <TARGET_FOLDER_TOKEN>
268
- # 若轮询窗口内完成:直接返回 ready=true
268
+ # 已完成时返回 ready=true,无需继续查询
269
269
  # 若内置轮询结束仍未完成:返回 ready=false、task_id 和 next_command
270
270
 
271
- # 2. 轮询移动结果
271
+ # 2. 仅在 ready=false 时继续查询
272
272
  lark-cli drive +task_result --scenario task_check --task-id <TASK_ID>
273
273
  ```
274
274
 
@@ -107,7 +107,7 @@
107
107
 
108
108
  1. 如有 `create_target` 项,先执行。
109
109
  2. 按确认计划顺序执行 `move_resource` 项。
110
- 3. 如果命令返回 task ID,执行异步任务轮询。
110
+ 3. 若命令返回 `ready=false`,按 `next_command` 继续查询;`ready=true` 时无需继续轮询,即使仍返回 task ID。
111
111
  4. 输出写操作执行摘要。
112
112
 
113
113
  ### 进度 UI
@@ -1,7 +1,7 @@
1
1
 
2
2
  # vc +meeting-events
3
3
 
4
- 查询一场正在进行的视频会议中的会中事件列表。该命令是**读操作**,必须沿用 `meeting_id` 的来源身份:用户身份发现的会议继续用用户身份读,应用身份发现或应用机器人入会得到的会议继续用应用身份读。对已结束会议,存在一个**结束后 5 分钟内的宽限窗口**;应用身份读取时,要求应用机器人曾经在这场会里出现过。
4
+ 查询一场正在进行的视频会议中的会中事件列表。该命令是**读操作**,必须沿用 `meeting_id` 的来源身份:用户身份发现的会议继续用用户身份读,应用身份发现或应用机器人入会得到的会议继续用应用身份读。会议结束后不要再用此命令拉取事件,应改为查询会议产物。
5
5
 
6
6
  本 skill 对应 shortcut:`lark-cli vc +meeting-events`(调用 `GET /open-apis/vc/v1/bots/events`)。
7
7
 
@@ -9,7 +9,7 @@
9
9
 
10
10
  - `meeting_id` 来自 `+meeting-list-active --as user`:后续读取事件继续 `--as user`。
11
11
  - `meeting_id` 来自 `+meeting-list-active --as bot --user-id <user_open_id>` 或 `+meeting-join --as bot`:后续读取事件继续 `--as bot`。
12
- - 应用身份下,应用机器人必须在该会中或参会过;应用身份 active meeting 返回的是“目标用户在会中且应用机器人也在会中”的会议,不表示可以读取任意 `meeting_id`。
12
+ - 应用身份下,应用机器人必须当前在该会中;应用身份 active meeting 返回的是“目标用户在会中且应用机器人也在会中”的会议,不表示可以读取任意 `meeting_id`。
13
13
 
14
14
  ## 命令
15
15
 
@@ -53,20 +53,19 @@ lark-cli vc +meeting-events --as <same_identity> --meeting-id <id> --page-token
53
53
 
54
54
  - `+meeting-events` 支持 `--as user` 和 `--as bot`。
55
55
  - 用户身份路径:用户身份发现的会议继续用用户身份读取。
56
- - 应用身份路径:应用机器人必须在会中或参会过;不要拿任意 `meeting_id` 直接查。
56
+ - 应用身份路径:应用机器人必须当前在会中;不要拿任意 `meeting_id` 直接查。
57
57
  - 不要在拿到 `meeting_id` 后随意切换身份。身份不一致时,常见结果是空列表、`no permission` 或 `bot is not in meeting`。
58
58
 
59
- ### 3. 应用身份的可见性窗口
59
+ ### 3. 应用身份的可见性条件
60
60
 
61
- 若应用机器人已离会、未入会、或会议已经无法再判断身份,后端通常会报:
61
+ 若应用机器人已离会或未入会,后端通常会报:
62
62
  - `bot is not in meeting, no permission`
63
63
 
64
- 更精确地说,后端当前的判断规则是:
64
+ 执行准则:
65
65
 
66
- - **会议进行中**:要求应用机器人**当前仍在会中**
67
- - **会议已结束后的 5 分钟内**:只要应用机器人**曾经在这场会中出现过**,仍可拉取事件
68
- - **会议结束超过 5 分钟**:按会议结束处理,通常不再返回事件流
69
- - **应用机器人从未真实入会过**:即使会议仍在进行或刚结束,也会返回 `10005 bot is not in meeting`
66
+ - **会议进行中**:要求应用机器人**当前仍在会中**。
67
+ - **应用机器人从未真实入会过**:会中读取会返回 `10005 bot is not in meeting`。
68
+ - **会议已经结束**:会返回会议结束错误;不要尝试继续拉取事件,改用会议详情、纪要、逐字稿或录制等会后产物。
70
69
 
71
70
  ### 4. 自动分页规则
72
71
 
@@ -307,9 +306,9 @@ lark-cli vc +meeting-events \
307
306
  | 错误现象 | 根本原因 | 解决方案 |
308
307
  |---------|---------|---------|
309
308
  | `--meeting-id is required` | 未传入 `--meeting-id` | 传入长数字 `meeting.id` |
310
- | `10005 bot is not in meeting` | 使用应用身份读取,但应用机器人从未真实入会该会议;或会议已结束但应用机器人从未在会中出现过 | 如果 `meeting_id` 来自用户身份发现,改回 `--as user`;如果确实要应用身份读取,先让应用机器人入会或确认它曾参会后再用 `--as bot`。**如果只是想看参会人快照,改用 `lark-cli vc meeting get --params '{"meeting_id":"<meeting.id>","with_participants":true}'`** |
309
+ | `10005 bot is not in meeting` | 使用应用身份读取,但应用机器人当前不在会中 | 如果 `meeting_id` 来自用户身份发现,改回 `--as user`;如果确实要应用身份读取,先让应用机器人入会,再用 `--as bot`。**如果只是想看参会人快照,改用 `lark-cli vc meeting get --params '{"meeting_id":"<meeting.id>","with_participants":true}'`** |
311
310
  | 用户身份无权限 / 不可见 | 当前用户不是该会议的可见参与者,或 `meeting_id` 不是从用户身份路径获得 | 不要反复执行 `auth login`。先确认 `meeting_id` 是否来自 `+meeting-list-active --as user`;如果用户明确要切到应用身份,再通过 `+meeting-list-active --as bot --user-id <user_open_id>` 获取应用身份可读的 `meeting_id`,或在用户明确同意后让应用机器人入会,再用 `+meeting-events --as bot` 读取 |
312
- | `20001 meeting_status_MEETING_END` | 会议已结束且已超出后端允许的 5 分钟宽限窗口 | 本接口不再适合继续拉取事件。先用 `lark-cli vc +detail --meeting-ids <meeting.id>` 获取会议产物信息,再根据 `note_display_type` / `note_id` / `minute_token` 和用户意图选择纪要正文、逐字稿或妙记;参会人请用 `lark-cli vc meeting get --params '{"meeting_id":"<meeting.id>"}' --with-participants` |
311
+ | `20001 meeting_status_MEETING_END` | 会议已经结束 | 本接口不再适合继续拉取事件。先用 `lark-cli vc +detail --meeting-ids <meeting.id>` 获取会议产物信息,再根据 `note_display_type` / `note_id` / `minute_token` 和用户意图选择纪要正文、逐字稿或妙记;参会人请用 `lark-cli vc meeting get --params '{"meeting_id":"<meeting.id>"}' --with-participants` |
313
312
  | `20002 meeting not exist` | `meeting_id` 错误,或会议实例当前已不可获取(常见于把 9 位会议号当 meeting_id 传) | 确认传入的是长数字 `meeting_id`,不是 9 位会议号 |
314
313
  | 应用身份权限不足 | 应用权限、租户安装或权限可访问的数据范围未配置完整 | 不要执行 `auth login`。请应用开发者开通 `vc:meeting.bot.join:write`;再检查应用发布/安装和权限可访问的数据范围;配置正确仍失败时,保留错误码和 `log_id`,按服务端权限异常排查 |
315
314
  | `HTTP 404` / `HTTP 500` | 服务端当前无法找到或处理该会议实例 | 换一个正在进行且 bot 可见的 meeting_id,或排查后端问题 |
@@ -320,7 +319,7 @@ lark-cli vc +meeting-events \
320
319
  - 如果会议已经结束,不要卡在 `+meeting-events`:
321
320
  - 先用 `lark-cli vc +detail --meeting-ids <meeting.id>` 获取会议产物信息。
322
321
  - 再根据 `note_display_type`、`note_id`、`minute_token` 和用户意图,按 `lark-meeting` 的产物决策读取纪要正文、逐字稿或妙记。
323
- - 事件列表是否完整,取决于应用机器人何时入会、何时离会,以及后端当前可见的会中事件范围。对于已结束会议,通常只在**结束后 5 分钟内**、且应用机器人**曾经在会中**时还能继续拉到事件。
322
+ - 事件列表是否完整,取决于应用机器人何时入会、何时离会,以及后端当前可见的会中事件范围。会议结束后改用会议产物,不要继续拉取事件。
324
323
  - 查询"谁参加过某会议"请用 `vc meeting get --params '{"meeting_id":"<id>","with_participants":true}'`——这是参会人**快照** API,不依赖 bot 是否参会,对已结束会议也可查;**不要** 用 `+meeting-events` 做参会人查询。
325
324
 
326
325
  ## 相关场景
@@ -77,10 +77,10 @@ lark-cli vc +meeting-events --as bot --meeting-id <meeting_id> --page-all --form
77
77
 
78
78
  - 默认使用 `--page-all` 拉取当前完整事件流,并保留返回的 `page_token` 供后续增量查询。
79
79
  - 回答“现在、刚刚、最新”或总结当前会议前,重新拉取最新事件;不直接复用旧快照。
80
- - 应用机器人必须在会中,或在会议结束后的可见宽限窗口内曾经参会;不要用任意 `meeting_id` 尝试读取。
80
+ - 应用机器人必须当前在会中;不要用任意 `meeting_id` 尝试读取。
81
81
  - 会中事件不能替代已结束会议的参会人快照、纪要、逐字稿或录制。
82
82
 
83
- 事件类型、分页、结束后五分钟窗口和文档上下文处理见 [`lark-vc-meeting-events`](../references/lark-vc-meeting-events.md)。
83
+ 事件类型、分页、会后产物替代路径和文档上下文处理见 [`lark-vc-meeting-events`](../references/lark-vc-meeting-events.md)。
84
84
 
85
85
  ## 发送会中文本或表情
86
86
 
@@ -35,7 +35,7 @@ lark-cli vc +meeting-events --as <same_identity> --meeting-id <meeting_id> --pag
35
35
  - 默认用 pretty 理解时间线;需要精确结构化字段、文档上下文或转发到 IM 时使用 JSON。
36
36
  - 不要用会中事件代替已结束会议的参会人快照或会后复盘。
37
37
 
38
- 事件类型、分页、五分钟窗口和错误码见 [`lark-vc-meeting-events`](../references/lark-vc-meeting-events.md)。
38
+ 事件类型、分页、会后产物替代路径和错误码见 [`lark-vc-meeting-events`](../references/lark-vc-meeting-events.md)。
39
39
 
40
40
  ## 读取共享内容和文档上下文
41
41