Releases: ddpie/lark-mcp-on-agentcore
Release list
v1.3.0 — lark-cli 1.0.69 + MCP 参数契约层
中文
lark-cli 1.0.68 → 1.0.69,并修掉一个潜伏的 flag 类型 bug、新增一层 MCP 参数契约。
上游变更亮点(v1.0.69)
- 电子表格 — 新增 changeset-get、formula-verify、history-list / revert / revert-status、revision-get(变更集查询、公式校验、版本历史)。
- 云文档 / 云空间 — drive list-comments;doc xml-extended-blocks。
- 应用 — apps get;application slash-command 增删查改。
- 画板 — 导出路由表按身份重排。
修复
- 复合 flag 被误判为 boolean,参数被静默丢弃 — affordance 把 JSON 参数的类型 token 换成了示例,旧推断 fallback 成 boolean,server 只推开关名、丢掉 JSON 值。改为按 cobra 列对齐判定。影响 sheets/docs/mail/apps 共 39+ flag。
新功能 — MCP 参数契约层
- 构建期从
--print-schema提取复合 flag 的 JSON Schema 存入 catalog;flag description 去 CLI 化。 - 运行时 object/array 自动 stringify;spawn 前按 schema 浅校验并返回可自纠提示(
isError:false);validation 错误把--flag译回参数名后穿透;剥掉_notice.update;lark_get_skill支持docs→doc别名;lark_discover精确按名查询回传完整 schema。
升级
git pull && ./scripts/deploy.sh终端用户无需额外操作。
English
Bumps lark-cli 1.0.68 → 1.0.69, with a latent flag-type fix and a new MCP parameter-contract layer.
Upstream highlights (v1.0.69)
- Sheets — changeset-get, formula-verify, history-list / revert / revert-status, revision-get.
- Doc / Drive — drive list-comments; doc xml-extended-blocks.
- Apps — apps get; application slash-command CRUD.
- Whiteboard — export routing reshuffled by identity.
Fix
- Composite flags misread as boolean, payload silently dropped — affordance renders composite flags' type token as an example; the old inference fell back to boolean, so server pushed a bare switch and dropped the JSON. Now classified by cobra's column alignment. Affected 39+ flags across sheets/docs/mail/apps.
New — MCP parameter-contract layer
- Build time: extract composite-flag JSON Schemas via
--print-schemainto the catalog; strip CLI-speak from flag descriptions. - Runtime: auto-stringify object/array; pre-spawn shape validation returning a self-correctable hint (
isError:false); translate--flagrefs in validation errors and pass them through; strip_notice.update;lark_get_skillaccepts thedocs→docalias;lark_discoverreturns the full schema on an exact-name query.
Upgrading
git pull && ./scripts/deploy.shNo action required from end users.
v1.2.0 — lark-cli 1.0.68 + 邮件批量改标签 / 软删除工具
中文
将 lark-cli 从 1.0.66 升级到 1.0.68,随之带来两个新的邮件工具,并同步重适配了上游有变更的 skill。
新增邮件工具:批量改标签、软删除
lark_mail_message_modify 支持批量为邮件增删标签、切换已读/未读、移动文件夹;lark_mail_message_trash 将邮件软删除到垃圾箱。后者是高风险写操作,需要显式 _confirm=true 才执行。两者的 OAuth scope 都是用户身份(mail:user_mailbox.message:modify、mail:user_mailbox.folder:read),未引入任何 bot-only 权限。
同步 lark-cli 版本锁定与 skill 适配
按 bump runbook 重抽 scope 映射,并按上游 diff 增量重适配了 7 个有变更的 domain(apps、doc、drive、mail、slides、vc-agent、wiki)。scope allowlist、默认 OAuth scopes、CDK 快照均无需变更。
English
Upgrades lark-cli from 1.0.66 to 1.0.68, which brings two new mail tools and a re-adaptation of the upstream skills that changed.
New mail tools: batch relabel and soft-delete
lark_mail_message_modify batch-adds/removes labels, toggles read/unread, and moves messages between folders; lark_mail_message_trash soft-deletes messages to trash. The latter is a high-risk write and requires an explicit _confirm=true to run. Both use user-identity OAuth scopes (mail:user_mailbox.message:modify, mail:user_mailbox.folder:read) — no bot-only scope is introduced.
lark-cli pin and skill adaptation kept in sync
Following the bump runbook, scope mappings were re-extracted and the 7 changed domains (apps, doc, drive, mail, slides, vc-agent, wiki) were incrementally re-adapted from the upstream diff. The scope allowlist, default OAuth scopes, and CDK snapshot needed no changes.
v1.1.1 — ARM64 架构预检 + 默认 verbose 日志
中文
两处部署健壮性 / 可观测性增强。
部署前检测非 ARM64 架构并提前报错
项目仅支持 ARM64(容器为 linux/arm64 构建)。在 x86_64 机器上部署,原本会在 docker build 中途抛出晦涩的 exec /bin/sh: exec format error。现在 deploy.sh 在最开头就用 uname -m 探测架构,非 ARM64 直接明确报错,并指向 ARM64 机器(Apple Silicon Mac 或 AWS Graviton 实例如 t4g / c7g)。
默认打开 cdk verbose 日志
部署常在 cdk bootstrap / cdk deploy 处无声停顿,详细日志是定位这类卡顿的关键。两处 cdk 调用默认加 -v;--quiet / -q 可恢复精简输出。
English
Two deploy robustness / observability enhancements.
Detect non-ARM64 architecture before deploying
The project is ARM64-only (container built for linux/arm64). Deploying on x86_64 used to fail mid-docker build with a cryptic exec /bin/sh: exec format error. deploy.sh now checks uname -m up front and, on non-ARM64, fails early with a clear message pointing at an ARM64 machine (Apple Silicon Mac or an AWS Graviton instance such as t4g / c7g).
Verbose cdk logs on by default
Deploys often stall silently at cdk bootstrap / cdk deploy; detailed logs make that diagnosable. Both cdk calls pass -v by default; --quiet / -q restores terse output.
v1.1.0 — AWS 连通性预检 + AWS profile 选择
中文
部署脚本两处增强,均向后兼容。
cdk bootstrap 前加连通性预检
- bootstrap 之前先用带超时的
sts get-caller-identity探一下目标区域。连不上就在几秒内明确报错,而不是像原来那样卡满 CLI 默认的 60 秒、屏幕上又没有任何输出。 - connect 超时设 20 秒,不比它守护的后续操作更严格,免得把慢一点但其实能用的代理链路挡在门外;同时把真实的 stderr 首行透出来——连不上未必是网络问题,也可能是凭证过期或该区域没在账户里开通(opt-in)。
- 不去动 IMDS 超时。EC2 instance role 的凭证正是从 IMDS 取的,压低它会在健康实例上误报“连不上”。本地 credential 和 EC2 instance role 两种凭证来源都兼容。
AWS profile 选择
- 部署前解析
~/.aws/config和credentials。配了多个 profile 时,让用户选这次部署到哪个账号;只有 default 或单一 profile 时静默沿用原来的行为。 - 选定的 profile 存进 per-app deploy-config,重跑和
--yes会自动沿用;显式设的AWS_PROFILE环境变量优先级最高。
English
Two backward-compatible enhancements to the deploy script.
Connectivity preflight before cdk bootstrap
- A bounded
sts get-caller-identityprobes the region first; unreachable → a clear error in seconds instead of a silent 60s hang with no output. - connect timeout 20s (never stricter than the operations it guards); surfaces the real stderr first line — the cause may be expired credentials or an opt-in region, not the network.
- IMDS timeout untouched — both local credentials and EC2 instance role work.
AWS profile selection
- Parses
~/.aws/config+credentials; multi-profile users pick the target account, single/default setups stay silent (byte-identical to before). - Persisted to the per-app deploy-config and reused on redeploy /
--yes; an explicitAWS_PROFILEenv var wins.
v1.0.1 — cdk bootstrap 步骤可见性修复
中文
修复 cdk bootstrap 步骤可观测性差的问题:此前用 npm install --silent + 无输出的 npx cdk bootstrap,在 npm 源慢、网络到不了 AWS、或仅仅在等 CloudFormation 建 CDKToolkit 栈时,屏幕上什么都看不到,看着像卡死。
- 去掉
npm install的--silent,装依赖进度可见 - bootstrap 加
CDK_DISABLE_NOTICES=1,跳过 cdk 联网公告检查,避免在访问不了 notices endpoint 的网络(国内常见)上干等 - 开跑前打印「正在 Bootstrap……通常需 1–2 分钟」,区分正常等待与真卡死
- 失败时给可操作报错,指向网络 /
aws sts get-caller-identity/ CloudFormation 里的CDKToolkit栈
对已 bootstrap 的区域无影响(脚本仍先探测栈状态,已存在则跳过)。
English
Fixes poor visibility in the cdk bootstrap step. It previously ran npm install --silent plus a silent npx cdk bootstrap, so a slow npm registry, no network path to AWS, or simply waiting on CloudFormation to create the CDKToolkit stack all looked like a hang.
- Drop
--silentfromnpm installso install progress is visible - Add
CDK_DISABLE_NOTICES=1to skip cdk's networked notices check, which hangs on restricted networks (common in mainland China) - Print a "Bootstrapping… usually 1–2 min" line to distinguish a normal wait from a real hang
- On failure, emit an actionable error pointing at network /
aws sts get-caller-identity/ theCDKToolkitstack in CloudFormation
No-op for already-bootstrapped regions (the script still probes the stack first and skips if present).
v1.0.0+larkcli.1.0.66 — 版本号统一,确立发版规范
中文
自 1.0.0 起,对外接口进入稳定阶段并遵循向后兼容:MCP 工具面(lark_* 名称与参数)、部署脚本 flag(deploy.sh / ops.sh / upgrade.sh)、OAuth 流程。不兼容变更将升至 2.0.0。
本次相对 v0.38.0 仅为版本号与文档整理,无功能变化;内置 lark-cli 保持 1.0.66。
- 版本号收敛:此前 git tag、serverInfo、两个 package.json 四处各不相同,现统一以 git tag 为准。serverInfo.version →
1.0.0,并新增larkCliVersion字段(运行时读取,供客户端发现内置 lark-cli 版本);两个 package.json →1.0.0。 - 发版规范:新增
docs/releasing_{en,zh}.md,明确版本号格式v<主>.<次>.<修订>+larkcli.<lark-cli 版本>——主号是项目自身版本,与 lark-cli 解耦;+larkcli后缀仅标注内置版本,不参与版本比较。
功能明细见 v0.38.0。
English
As of 1.0.0, the public interface is stable and backward-compatible: the MCP tool surface (lark_* names and parameters), the deploy-script flags (deploy.sh / ops.sh / upgrade.sh), and the OAuth flow. Incompatible changes will bump 2.0.0.
Relative to v0.38.0 this is a versioning and documentation cleanup with no functional change; the bundled lark-cli stays at 1.0.66.
- Version reconciliation: the git tag, serverInfo, and the two package.json files had drifted apart; they now all track the git tag. serverInfo.version →
1.0.0, plus a newlarkCliVersionfield (read at runtime, letting clients discover the bundled lark-cli version); both package.json →1.0.0. - Release policy: new
docs/releasing_{en,zh}.mddefining the formatv<MAJOR>.<MINOR>.<PATCH>+larkcli.<lark-cli version>— MAJOR is the project's own version, decoupled from lark-cli; the+larkclisuffix only records the bundled version and doesn't affect precedence.
For the feature-level changelog see v0.38.0.
v0.38.0 — lark-cli 1.0.66 + calendar +get、多域错误处理增强
中文
lark-cli 1.0.65 → 1.0.66。上游这次改动比一般 patch 大:新增一个 shortcut、calendar 参考文件重构,外加多个域的错误处理与参数增强。
核心变化
- calendar 新增
lark_calendar_get:按event_id拉取单条日程完整详情(新 scopecalendar:calendar.event:read)。参考文档重构:agenda/freebusy/search-event内联进主文档,新增recurring/schedule-clear-time/schedule-fuzzy-time。 - drive:同位置并发导入的串行规则;
+push结构化错误字段(error_class/phase/code/retryable)与already_deleted/summary.aborted语义。 - markdown:
+create的folder_token/wiki_token可直接传 URL;新增失败处理小节。 - minutes:
minutes +detail新增wait_ready(上传后立即读取须带上);上传响应直接返回minute_token。 - task:以
ok == true判定成功(成功信封无code字段),任务 ID 取data.guid。 - wiki:node-list 明确
space_id为数值、parent_node_token可传/wiki/<token>URL,补充错误处理。 - doc:明确字数要求时字数校验为强制门禁;新增重复标题检查。
验证:5 视角评审面板全 PASS;npm test 563 通过;docker smoke 6/6;新工具 lark_calendar_get 已用真实飞书用户身份端到端验证。
PR #102。
English
lark-cli 1.0.65 → 1.0.66. Bigger than a typical patch: one new shortcut, a calendar reference restructure, plus error-handling and param enhancements across several domains.
Highlights
- New
lark_calendar_get: fetch a single event's full detail byevent_id(new scopecalendar:calendar.event:read). Calendar references restructured:agenda/freebusy/search-eventinlined into the main doc,recurring/schedule-clear-time/schedule-fuzzy-timeadded. - drive: serial-import rule for same-location concurrency;
+pushstructured error fields (error_class/phase/code/retryable) andalready_deleted/summary.abortedsemantics. - markdown:
+createaccepts a URL directly forfolder_token/wiki_token; new failure-handling section. - minutes:
minutes +detailgainswait_ready(required when reading right after upload); the upload response now returnsminute_tokendirectly. - task: judge success by
ok == true(the success envelope has nocodefield); task ID fromdata.guid. - wiki: node-list clarifies numeric
space_idand/wiki/<token>URL forparent_node_token; adds error handling. - doc: word-count check becomes a hard gate when an explicit requirement is stated; adds a duplicate-title check.
Verification: 5-perspective review panel all PASS; npm test 563 pass; docker smoke 6/6; the new lark_calendar_get verified end-to-end with a real Feishu user identity.
PR #102.
v0.37.0 — lark-cli 1.0.65 + approval 全流程、卡片 2.0、文档历史版本
中文
升级 lark-cli 1.0.63 → 1.0.65,按 docs/skills/bump-lark-cli.md 重新提取 scope、生成白名单、增量 re-adapt 技能;另附一次存量适配泄漏的全库清理。
上游变更亮点(v1.0.64 · v1.0.65)
- lark-approval — 改动最大:SKILL.md 重写(路由优先级、1395001 决策树、错误码驱动原则),新增 13 篇命令级参考(任务同意/拒绝/转交/加签/回退/催办、实例查询/撤销/抄送、我发起的实例等)。approval 无 shortcut,全部经
lark_invoke调原生 API,14 个 tool_name 逐一对照注册表核实。 - lark-im — 卡片能力升级:新增
references/card/子树(卡片 2.0 schema、27 个组件、颜色/图标资源,约 33 个文件),发交互卡片前必须先读卡片构建指南;新增im +chat-members-list群成员列表 shortcut。 - lark-okr — 新增
okr +patch快捷更新;progress/contentblock 全面引入 simple/richtext 双风格(style参数,semi-plain 文本保留 @ 提及位置);新增 alignments(对齐关系)、indicators(量化指标)两篇原生 API 指南。 - lark-doc — 新增
docs +history-list/+history-revert/+history-revert-status文档历史版本三件套;新增 mindnote(思维笔记)参考;写作原则与创建/更新工作流改为单 Agent 串行模型;doc_word_stat.py复合词统计对齐。 - lark-slides — 上游移除整个模板系统:42 个模板 XML、template-catalog、template-index、template_tool.py 一并删除;规划层改为纯 plan 驱动。
- lark-drive / lark-minutes — 文档澄清:
+search的query上限 30 字符(超限报错不截断);+speaker-replace必须先查 speakerlist 拿speaker_id。 - scope:新增依赖的 4 个 scope(
docx:document:readonly/write_only、im:chat.members:read、okr:okr.content:writeonly)均为 user scope 且此前已在白名单,scope-allowlist.ts与config/oauth-scopes.json零改动。
存量清理(随本版一并发布)
- 历史适配遗留的裸
+cmd记号(slides/drive/task/minutes/markdown 等 15 个文件)改为真实注册工具名;skill 内部](xxx.md)文件系统链接改为lark_get_skill(domain, section)。均逐一验证工具存在、section 可解析。
身份安全
- 全程用户身份不变。im 卡片回调监听为 bot-only,以
⚠️ 「MCP server 不可用」标注;无 bot-only scope 进入白名单。
变更清单
docker/Dockerfile— 版本 pin 1.0.63 → 1.0.65docker/shortcut-scopes.json— 重新提取(433 → 438 shortcuts)docker/rawapi-scopes.json— 重新生成(221 raw APIs)docker/skills/lark-approval|doc|drive|im|minutes|okr|slides/— 增量 re-adapt(+51 新文件,-46 删除)docker/skills/(15 文件)— 存量泄漏清理
升级
git pull && ./scripts/deploy.sh终端用户无需操作。文档历史版本、群成员列表、OKR patch、卡片 2.0 组件指南等新能力随镜像重建自动可用。
English
Bump lark-cli 1.0.63 → 1.0.65 — re-extract scopes, regenerate the allowlist, and do a diff-guided skill re-adapt per docs/skills/bump-lark-cli.md; ships with a repo-wide cleanup of legacy adaptation leaks.
Upstream highlights (v1.0.64 · v1.0.65)
- lark-approval — the biggest change: SKILL.md rewritten (routing priorities, the 1395001 decision tree, error-code-driven principles) plus 13 new command-level references (task approve/reject/transfer/add-sign/rollback/remind, instance get/cancel/cc, my-initiated instances, …). Approval has no shortcuts — everything goes through
lark_invoke, all 14 tool_names verified against the registry. - lark-im — card upgrade: new
references/card/subtree (card 2.0 schema, 27 components, color/icon resources, ~33 files); building an interactive card now requires reading the card guide first. Newim +chat-members-listshortcut. - lark-okr — new
okr +patchquick-update; the progress/contentblock family gains simple/richtext dual style (styleparam; semi-plain text preserves @-mention positions); new alignments and indicators raw-API guides. - lark-doc — new
docs +history-list/+history-revert/+history-revert-statusdocument-history trio; new mindnote reference; writing principles and create/update workflows moved to a single-agent serial model;doc_word_stat.pycompound-token alignment. - lark-slides — upstream removed the whole template system: 42 template XMLs, template-catalog, template-index, and template_tool.py deleted; the planning layer is now purely plan-driven.
- lark-drive / lark-minutes — doc clarifications:
+search'squerycaps at 30 characters (server rejects, no truncation);+speaker-replacerequires fetching the speakerlist first forspeaker_id. - scope: the 4 newly required scopes (
docx:document:readonly/write_only,im:chat.members:read,okr:okr.content:writeonly) are all user scopes already present in the allowlist — zero changes toscope-allowlist.tsandconfig/oauth-scopes.json.
Legacy cleanup (shipped alongside)
- Pre-existing bare
+cmdnotation (15 files across slides/drive/task/minutes/markdown, …) rewritten to real registered tool names; intra-skill](xxx.md)filesystem links converted tolark_get_skill(domain, section). Every tool name and section value verified.
Identity safety
- User identity throughout, unchanged. im card-callback listening is bot-only and flagged
⚠️ "not available via the MCP server"; no bot-only scope entered the allowlist.
Changes
docker/Dockerfile— pin 1.0.63 → 1.0.65docker/shortcut-scopes.json— re-extracted (433 → 438 shortcuts)docker/rawapi-scopes.json— regenerated (221 raw APIs)docker/skills/lark-approval|doc|drive|im|minutes|okr|slides/— incremental re-adapt (+51 new files, −46 deleted)docker/skills/(15 files) — legacy leak cleanup
Upgrade
git pull && ./scripts/deploy.shNo end-user action needed. Document history, chat member listing, OKR patch, and the card 2.0 component guides become available automatically with the image rebuild.
v0.36.0 — lark-cli 1.0.63 + in-meeting messaging, app file storage & observability
中文
升级 lark-cli 1.0.60 → 1.0.63,按 docs/skills/bump-lark-cli.md 重新提取 scope、生成白名单、增量 re-adapt 技能,并刷新 CDK 快照。
上游变更亮点(v1.0.61 · v1.0.62 · v1.0.63)
- lark-apps — 改动最大:新增 env(变量增删查)、file(应用文件存储)、observability(日志/Trace/指标/PV·UV)、openapi-key(对外 API Key 管理)、plugin(插件装/卸/列)五组共 39 个 shortcut;db 参考重构,
db-table-get/db-table-list/db-env-create三篇合并进统一的db.md。 - lark-vc-agent — 新增
vc +meeting-message-send:向进行中的会议发送会中文本或表情(会中 reaction)。 - lark-doc — 新增
docs +word-stat文档字数统计(含随附脚本doc_word_stat.py,通过lark_exec_script调用);media 下载/预览的标签重命名、update 的reference_map参数。 - lark-drive — drive search 上游新增 bot 身份支持;本服务为用户身份,仅保留用户路径,不暴露 bot 选项。
- lark-base — field-json 参考补充 datetime
style.format显示精度说明(1 行)。 - scope:唯一新引入
vc:meeting.message:write(user scope,非 bot-only),已入scope-allowlist.ts;不在 tier1,config/oauth-scopes.json无需改动。
身份安全
- 全程用户身份不变。
vc-agent里应用(bot)身份专属路径(应用机器人入会、应用身份发现 meeting_id)均以⚠️ 「MCP server 不可用」标注,不作为用户可调操作呈现。drive search 的 bot 身份能力未暴露;无 bot-only scope 进入白名单。
变更清单
docker/Dockerfile— 版本 pin 1.0.60 → 1.0.63docker/shortcut-scopes.json— 重新提取(393 → 433 shortcuts)docker/rawapi-scopes.json、lambda/token-refresh-shim/scope-allowlist.ts— 重新生成(新增vc:meeting.message:write)docker/skills/lark-apps/— SKILL.md + 4 篇改写;新增db.md、env.md、file.md、observability.md、openapi-key.md、plugin-install.md、plugin-list.md、plugin-uninstall.md;删除db-env-create.md、db-table-get.md、db-table-list.mddocker/skills/lark-doc/— SKILL.md + media/update 改写;新增references/lark-doc-word-stat.md、scripts/doc_word_stat.py(逐字节复制自上游)docker/skills/lark-vc-agent/— SKILL.md;新增references/lark-vc-agent-meeting-message-send.mddocker/skills/lark-drive/、docker/skills/lark-base/— 小幅 re-adaptinfra/test/__snapshots__/snapshot.test.ts.snap— CDK 快照更新
升级
git pull && ./scripts/deploy.sh终端用户无需操作。会中发消息、应用文件存储、observability 等新能力会随镜像重建自动可用。
English
Bump lark-cli 1.0.60 → 1.0.63 — re-extract scopes, regenerate the allowlist, do a diff-guided skill re-adapt per docs/skills/bump-lark-cli.md, and refresh the CDK snapshot.
Upstream highlights (v1.0.61 · v1.0.62 · v1.0.63)
- lark-apps — the biggest change: 39 new shortcuts across env (var CRUD), file (app file storage), observability (logs/traces/metrics/PV·UV), openapi-key (outbound API key management), and plugin (install/uninstall/list); the db reference was restructured, folding
db-table-get/db-table-list/db-env-createinto a singledb.md. - lark-vc-agent — new
vc +meeting-message-send: send an in-meeting text message or reaction to a live meeting. - lark-doc — new
docs +word-statword-count helper (with bundleddoc_word_stat.py, invoked vialark_exec_script); media download/preview tag renames and anupdatereference_mapparam. - lark-drive — upstream added bot-identity support to drive search; this service is user-identity only, so only the user path is kept, no bot option exposed.
- lark-base — field-json reference gained a datetime
style.formatdisplay-precision note (1 line). - scope: the only newly introduced scope is
vc:meeting.message:write(a user scope, not bot-only), now inscope-allowlist.ts; it is not tier1, soconfig/oauth-scopes.jsonneeds no change.
Identity safety
- User identity throughout, unchanged. In
vc-agent, bot-identity-only paths (app bot joining a meeting, discovering a meeting_id as the app) are flagged⚠️ "not available via the MCP server" rather than presented as user-callable. drive search's bot-identity capability is not exposed; no bot-only scope entered the allowlist.
Changes
docker/Dockerfile— pin 1.0.60 → 1.0.63docker/shortcut-scopes.json— re-extracted (393 → 433 shortcuts)docker/rawapi-scopes.json,lambda/token-refresh-shim/scope-allowlist.ts— regenerated (addsvc:meeting.message:write)docker/skills/lark-apps/— SKILL.md + 4 rewrites; newdb.md,env.md,file.md,observability.md,openapi-key.md,plugin-install.md,plugin-list.md,plugin-uninstall.md; deleteddb-env-create.md,db-table-get.md,db-table-list.mddocker/skills/lark-doc/— SKILL.md + media/update rewrites; newreferences/lark-doc-word-stat.md,scripts/doc_word_stat.py(copied verbatim from upstream)docker/skills/lark-vc-agent/— SKILL.md; newreferences/lark-vc-agent-meeting-message-send.mddocker/skills/lark-drive/,docker/skills/lark-base/— minor re-adaptinfra/test/__snapshots__/snapshot.test.ts.snap— CDK snapshot updated
Upgrading
git pull && ./scripts/deploy.shNo action required from end users. The new capabilities (in-meeting messaging, app file storage, observability, etc.) become available automatically once the image is rebuilt.
v0.35.0 — lark-cli 1.0.60 + 引导类响应不再被当作错误
中文
升级 lark-cli 1.0.59 → 1.0.60,按 docs/skills/bump-lark-cli.md 重新提取 scope、生成白名单、增量 re-adapt 技能。顺带捎上了几个升级后冒烟测试时发现的服务端可用性修复。
上游变更亮点(v1.0.60)
- lark-contact —
+search-user文案简化,去掉一处指向 bot 路径的交叉引用;user-only 部署下该能力仍由lark_contact_search_user(user_ids=…)覆盖。 - 上游新增 per-command affordance 指引(渲染进
--help)。本服务的工具目录由解析--help生成,已确认当前 catalog 不受影响。 - scope 无新增、无 bot-only scope;白名单重建后字节不变。
顺带修复
服务端有几种响应其实是在引导调用方做下一步——比如删除操作要求先确认、缺少权限时附上授权链接、工具名写错了给出正确的查找方式、参数不是合法 JSON 时说明正确格式。这些之前都标成了错误(isError: true)。有些 MCP 客户端(比如 Quick Suite)遇到错误响应会丢掉正文,只显示一句 "unknown error",于是这些本可以照着操作的提示就全丢了,调用方反复重试也找不到原因。
这次把这几种"引导类"响应改成正常响应,正文得以保留;真正的失败(超时、上游 API 报错等)仍然是错误。另外加固了风险等级识别(detectRisk):新版 --help 里多了使用说明,旧的匹配方式可能把说明里的字眼误判成高危,改成按行精确匹配后规避了这个问题。具体见各 commit。
变更清单
docker/Dockerfile— 版本 pin 1.0.59 → 1.0.60docker/shortcut-scopes.json— 重新提取(393 shortcuts,内容不变)docker/rawapi-scopes.json、lambda/token-refresh-shim/scope-allowlist.ts— 重新生成(白名单不变)docker/skills/lark-contact/references/lark-contact-search-user.md— 增量 re-adaptdocker/server.js、docker/generate-tools-lib.js— 上述可用性修复 +detectRisk加固- 配套测试:
docker/__tests__/下 generate-tools / server-runtime / mcp-contract
升级
git pull && ./scripts/deploy.sh终端用户无需操作。可用性修复需部署新镜像、并在 client 重连会话后生效。
English
Bump lark-cli 1.0.59 → 1.0.60 — re-extract scopes, regenerate the allowlist, and do a diff-guided skill re-adapt per docs/skills/bump-lark-cli.md. Also folds in a few server-side usability fixes found while smoke-testing the upgrade.
Upstream highlights (v1.0.60)
- lark-contact —
+search-userwording trimmed, dropping a cross-reference to the bot path; under this user-only deployment the capability is still covered bylark_contact_search_user(user_ids=…). - Upstream adds per-command affordance guidance (rendered into
--help). This service builds its tool catalog by parsing--help; the current catalog is unaffected. - No new scopes, no bot-only scopes; the allowlist is byte-identical after the rebuild.
Fixes along the way
Several server responses exist to guide the caller's next step — a delete asks for confirmation first, a missing permission comes with an authorization link, a wrong tool name points to how to find the right one, and a non-JSON argument explains the correct format. All of these were flagged as errors (isError: true). Some MCP clients (Quick Suite among them) drop the body of an error response and show only "unknown error", so these actionable hints were lost and the caller would retry blindly with no idea why.
These guidance responses are now returned as normal results, so the body survives; genuine failures (timeouts, upstream API errors, etc.) remain errors. Separately, risk-level detection (detectRisk) was hardened: the new --help embeds usage notes, and the old matching could mistake words in those notes for a high-risk signal — switching to line-anchored matching avoids that. See the individual commits for detail.
Changes
docker/Dockerfile— pin 1.0.59 → 1.0.60docker/shortcut-scopes.json— re-extracted (393 shortcuts, content unchanged)docker/rawapi-scopes.json,lambda/token-refresh-shim/scope-allowlist.ts— regenerated (allowlist unchanged)docker/skills/lark-contact/references/lark-contact-search-user.md— incremental re-adaptdocker/server.js,docker/generate-tools-lib.js— the usability fixes above +detectRiskhardening- tests under
docker/__tests__/: generate-tools / server-runtime / mcp-contract
Upgrading
git pull && ./scripts/deploy.shNo end-user action required. The usability fixes take effect once the new image is deployed and the session is reconnected in the client.