xuan and shangguanxuan.sgx
252c61aff6
fix(pat): pass agent code to chmod batch tools ( #414 )
...
Co-authored-by: shangguanxuan.sgx <shangguanxuan.sgx@alibaba-inc.com >
2026-06-08 17:53:16 +08:00
修雨
ffefc53861
fix(cli): JSON errors to stdout; no interactive confirm on piped stdin ( #413 )
...
- printExecutionError: in JSON mode emit the structured error to stdout
(not stderr) so machine consumers parsing stdout get a parseable result;
update the 3 root_execute tests to assert the new contract.
- requireYesForDelete prompt: when stdin is not a TTY (piped/scripted/JSON
pipelines), do not show an interactive confirm that emits non-JSON and
blocks on stdin; return a structured validation error requiring --yes.
2026-06-08 17:53:16 +08:00
InternZzp
8cbc56edd2
feat: add devapp helper commands
2026-06-08 17:24:59 +08:00
shangguanxuan.sgx
fc0873b0c6
docs,test(pat): carry chmod batch auth updates
2026-06-08 15:36:57 +08:00
修雨
8c2093a41a
fix(skill): align chat single-chat docs/script with list-direct ( #424 )
...
* fix(skill): align chat single-chat docs/script with list-direct
钉钉 MCP 服务已将单聊从 `chat message list` 拆出独立的 `list-direct` /
`send-direct`(list 现仅支持群聊,--user / --open-dingtalk-id 已移除),
但 skill 侧文档与脚本仍在教 `chat message list --user`,照做会因 unknown
flag 报错;推荐为单聊"优先"方法的 chat_history_with_user.py 也随之失效。
- chat.md (mono+multi): `message list` 改为仅群聊;新增 `list-direct` /
`send-direct` 两段命令文档;意图路由 / 关键区分 / 上下文传递表 / 注意事项
全部对齐单聊新命令
- best_practices/01-messaging.md (mono): query-private-chat 由 `list --user`
改 `list-direct`(multi 版此前已改,未动)
- chat_history_with_user.py (mono+multi): 调用 `list-direct`;并修复返回体
解析——解包 `result.messages` + 对齐 `createTime/content/sender` 字段,
此前会崩在 `'str' object has no attribute 'get'`
* docs(changelog): add entry for chat single-chat list-direct alignment (#424 )
* fix(skill): drop send-direct from chat docs (not a v1.0.34 command)
复核 v1.0.34 CLI 发现:单聊发送 rpc `send_direct_message_as_user` 在
v1.0.34 已并入 `chat message send`(cli_name=send,用 --user),不再暴露
独立的 `send-direct` 命令(仅 v1.0.29 有)。上一提交按 v1.0.29 误加的
send-direct 文档段/路由/关键区分/上下文表引用对 v1.0.34 是错的,全部移除。
list-direct 部分保留不变——v1.0.34 确认 `list` 仅群聊、`list-direct`
存在,`list --user` 仍报 unknown flag。单聊发送回归 `send --user`。
2026-06-07 16:17:31 +08:00
玉澜
eea85bd989
test: add ambiguous app routing cases
2026-06-05 17:08:55 +08:00
玉澜
43560afa78
test: cover devapp intent disambiguation
2026-06-05 16:30:12 +08:00
玉澜
7ef46c1288
docs: clarify devapp branch status
2026-06-05 16:20:38 +08:00
玉澜
08413a6903
feat: add devapp command routing design
2026-06-05 16:12:17 +08:00
玉澜
c488421423
Merge remote-tracking branch 'upstream/main' into feat/dws-devapp
2026-06-05 15:46:45 +08:00
修雨
5fbf12fe50
Revert "fix(cli): JSON errors to stdout; no interactive confirm on piped stdin ( #413 )" ( #415 )
...
This reverts commit f826375556 .
2026-06-05 12:10:17 +08:00
xuan and shangguanxuan.sgx
dd419ca498
fix(pat): pass agent code to chmod batch tools ( #414 )
...
Co-authored-by: shangguanxuan.sgx <shangguanxuan.sgx@alibaba-inc.com >
2026-06-05 11:23:48 +08:00
修雨
f826375556
fix(cli): JSON errors to stdout; no interactive confirm on piped stdin ( #413 )
...
- printExecutionError: in JSON mode emit the structured error to stdout
(not stderr) so machine consumers parsing stdout get a parseable result;
update the 3 root_execute tests to assert the new contract.
- requireYesForDelete prompt: when stdin is not a TTY (piped/scripted/JSON
pipelines), do not show an interactive confirm that emits non-JSON and
blocks on stdin; return a structured validation error requiring --yes.
2026-06-05 11:22:22 +08:00
wxianfeng
b3e8783c4f
Merge remote-tracking branch 'upstream/main'
2026-06-04 18:01:41 +08:00
xuan and shangguanxuan.sgx
cb95207d5a
fix(pat): keep auth URLs readable in JSON output ( #401 )
...
* fix(pat): keep auth URLs readable in JSON output
* fix(pat): narrow URL escaping fix to PAT JSON
---------
Co-authored-by: shangguanxuan.sgx <shangguanxuan.sgx@alibaba-inc.com >
2026-06-04 15:57:06 +08:00
wxianfeng
1c2c96617a
Merge remote-tracking branch 'upstream/main'
2026-06-03 20:21:59 +08:00
wxianfeng
5fe366eddd
fix conflict
2026-06-03 20:21:54 +08:00
Ari
1e95d03606
Merge pull request #405 from audanye-sudo/feat/switch-discovery-url
...
fix: version-code discovery path and take aiapp product offline
v1.0.34
2026-06-03 19:45:39 +08:00
修雨
6e3f3cbd24
chore: take aiapp product offline
...
Remove the entire code surface of the aiapp (AI application: create/query/modify) product:
- Delete internal/helpers/aiapp.go and its test (the init() static command registration)
- Drop aiapp from generator coverage targets and knownRegistryProducts
- Remove aiapp from the operations-analyst persona services in personas.yaml
- Delete skills (mono references/products/aiapp.md + dingtalk-aiapp multi skill + script)
- Update README/README_zh product tables and counts (19->18 products, 20->19 multi skills) and run_skill_tests mapping
- Add a Removed entry to CHANGELOG
The service-discovery side (envelope/discovery.pre.json, Portal-synced and gitignored) removes the aiapp server block separately.
2026-06-03 19:41:05 +08:00
audanye-sudo
ce5e919c52
fix(market): version-code discovery path as /cli/discovery/apis/bamboo
...
Extract the server-list endpoint path into a single discoveryAPIPath constant and move it from /cli/discovery/apis to /cli/discovery/apis/bamboo so future version bumps touch one place.
Only the path changes: the MCP base host stays on production https://mcp.dingtalk.com and the auth / skill / doctor endpoints are untouched. The edition DiscoveryURL hook (full-URL FetchServersFromURL) is unaffected. All mock/test fixtures are updated to the new path and a CHANGELOG 1.0.34 entry is added.
2026-06-03 19:41:04 +08:00
wxianfeng
a7d109384b
merge upstream
2026-06-03 19:14:19 +08:00
修雨
c75ed45c70
fix(keychain): add StorageDir for Windows to unblock v1.0.33 release ( #394 )
...
* docs(chat): 资源下载分流改为按 host 判定,补 media 直链可裸 curl(整合 #376)
main 现状的「资源链接形态分流」段补三类增量,supersede #376:
- 判定依据从「链接形态」改为「链接 host,不由扩展名」
- media(down.dingtalk.com/media)点明为公开 CDN,download-media 命令之外裸 curl 也可直下
- 补 .unknown 用 file 判真实类型、图片 AI 描述说明
- 保留 download-media 官方命令路径,删去 #376 误判「无 mediaId 下载命令」一句
* docs(chat): 修正 media 下载分流——host 非唯一、首选 download-media、签名链勿裸 curl
修复 PR 原版对 media 链接的过头断言(评审发现):
- 点明图片 mediaId 链接 host 不唯一:down.dingtalk.com/media(公开)或 *.trans.dingtalk.com 签名+过期链
- 下载主路改为首选 download-media(取最新 URL,不受过期影响);裸 curl 仅限公开直链
- 删去「无需鉴权 / curl 均 HTTP 200」的普适断言(签名链过期后 curl 403)
- 保留 .unknown 用 file 判类型、AI 图片描述、钉盘/alidocs 分流
* fix(keychain): add StorageDir for Windows to unblock cross-platform release
portable_store.go (#357 ) references keychain.StorageDir on all platforms,
but only keychain_darwin.go / keychain_linux.go defined it — the Windows
backend (DPAPI + registry) lacked StorageDir, so GoReleaser's
windows/amd64 + windows/arm64 cross-compile failed with
'undefined: keychain.StorageDir' and broke the v1.0.33 release.
Add StorageDir to keychain_windows.go: DWS_KEYCHAIN_DIR override →
%LocalAppData%\<service> default, mirroring the linux/darwin logic.
Verified: go build passes for windows/darwin/linux x amd64/arm64.
v1.0.33
2026-06-02 23:37:06 +08:00
修雨
a8b1670ad9
docs: 同步 CHANGELOG 1.0.33 与 README 命令清单(打 tag 前) ( #393 )
...
CHANGELOG:新增 [1.0.33] 版本块,归并 #391 整批能力(doc 文档族 / wiki 知识库 /
aiapp / aitable 表单与导入导出 / mail / todo / report 可读日志)、可迁移认证包
auth export/import (#357 )、PAT 批量授权与精简摘要输出 (#389 )。
README(中英双版):按当前命令树实测校准各产品命令数(contact 6→15、todo 6→16、
report 7→20、mail 4→18、wiki 7→21、oa 9→15、aitable 42→52、doc 21→28;sheet 34→23
并删除已移除的 copy_sheet/submit_export_job 等命令),总数 213→334,补全新增命令组。
2026-06-02 22:46:28 +08:00
john and 玉澜
8c4bd71964
fix(doc): align export progress output ( #392 )
...
Co-authored-by: 玉澜 <yulan.wqy@alibaba-inc.com >
2026-06-02 22:26:03 +08:00
shangguanxuan.sgx
9e7e7dbc7f
Merge remote-tracking branch 'upstream/main'
...
# Conflicts:
# .github/badges/coverage.svg
2026-06-02 21:30:14 +08:00
539d10f80f
feat: 合并 pre-mcp-discovery 分支能力到 main(服务发现保持生产) ( #391 )
...
将 test/pre-mcp-discovery 分支上多位同学的能力改动整体合入 main,
服务发现端点保持生产 https://mcp.dingtalk.com,未携带分支上的预发改动 。
主要内容:
- 修雨域(chat / report / todo / contact / mail)对齐 wukong 基线 (#355 )
- DWS 内容生产能力增强 (#387 )、文档导出与 OA 对齐 (#362 #388 #390 )
- envelope 注册 cli.Aliases 为 cobra aliases、命令结构与 JSON 解析优化
- skills 多包同步 wukong 对齐内容(attendance/calendar/minutes/oa/sheet 等)
- product/oa 进一步对齐 wukong
排除项:未携带 566b4e1(test: point service discovery to pre-mcp.dingtalk.com);
以下 4 个常量保持生产:skill_command.go / auth/endpoints.go / cli/loader.go / market/registry.go。
Co-authored-by: john <32427341+wqyenjoy@users.noreply.github.com >
Co-authored-by: wxianfeng <wang.fl1429@gmail.com >
2026-06-02 21:04:12 +08:00
56a5edecef
feat(pat): support batch chmod authorization flows ( #389 )
...
* feat(pat): support batch chmod flows
* feat: use server default agentCode for chmod
* feat: surface tool auth metadata
* feat: infer product grant auth metadata
* chore: update coverage badge [skip ci]
* feat(pat): summarize chmod output by default
* chore: update coverage badge [skip ci]
* fix(pat): preserve batch session metadata
* fix(pat): align dry-run session and schema docs
* chore(config): use public example MCP override URL
* fix(pat): align chmod session env handling
---------
Co-authored-by: shangguanxuan.sgx <shangguanxuan.sgx@alibaba-inc.com >
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-02 20:54:55 +08:00
shangguanxuan.sgx
7652bda320
fix(pat): align chmod session env handling
2026-06-02 20:38:38 +08:00
shangguanxuan.sgx
dd1c4e34fd
chore(config): use public example MCP override URL
2026-06-02 16:01:38 +08:00
shangguanxuan.sgx
e653616aa3
fix(pat): align dry-run session and schema docs
2026-06-02 14:56:23 +08:00
shangguanxuan.sgx
3ce64db2fc
fix(pat): preserve batch session metadata
2026-06-02 14:36:59 +08:00
github-actions[bot]
4bbd52fc58
chore: update coverage badge [skip ci]
2026-06-02 01:38:39 +00:00
shangguanxuan.sgx
9eb3099881
feat(pat): summarize chmod output by default
2026-06-02 09:36:24 +08:00
github-actions[bot]
73e2de7fe8
chore: update coverage badge [skip ci]
2026-06-01 14:18:49 +00:00
shangguanxuan.sgx
8b4f05e44e
Merge release/v1.0.29 into main
2026-06-01 22:09:55 +08:00
shangguanxuan.sgx
a7879edca1
feat: infer product grant auth metadata
2026-06-01 21:02:15 +08:00
shangguanxuan.sgx
3f09eb5c0f
feat: surface tool auth metadata
2026-06-01 20:50:15 +08:00
修雨
4ebc8d0d38
fix(plugin): silence stdio discovery handshake failures (Warn → Debug) ( #380 )
...
The conference-local stdio plugin runs an Initialize/ListTools handshake
during command-tree construction. When the DingTalk desktop client isn't
running it returns "本地服务未就绪", which was logged at Warn and printed
to stderr on every invocation.
Because discovery happens in NewRootCommandWithEngine — before
PersistentPreRunE applies --debug/--verbose via configureLogLevel — this
Warn showed regardless of flags, polluting output and misleading callers
(and LLMs) into treating it as the cause of an unrelated command error
(e.g. an auth error or PARAM_ERROR from a different server).
This is an expected, benign outcome for an optional local plugin:
commands that ship toolOverrides still register up-front via
registerStdioServerFromOverlay, so availability is unaffected. Downgrade
both discovery handshake failures to Debug so normal output stays clean.
2026-06-01 17:11:52 +08:00
shangguanxuan.sgx
202cb509a0
feat: use server default agentCode for chmod
2026-05-29 16:48:09 +08:00
shangguanxuan.sgx
dd42fd833b
feat(pat): support batch chmod flows
2026-05-29 15:22:00 +08:00
4e58e45d30
feat(auth): add export/import for portable sandbox credentials ( #357 )
...
* feat(auth): add export/import for portable sandbox credentials
Enable migrating encrypted keychain and config between Linux sandboxes so refresh tokens survive beyond the 2-hour access token window.
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(auth): harden portable export/import per PR review
按 PR 审查意见加固可迁移认证包流程:macOS 默认 Keychain
场景拒绝导出;导入需 --force 覆盖已有登录态;解析 manifest
并在 OS 不匹配时告警;export 参数校验前置;flag 描述中文化;
移除已弃用的 tar.TypeRegA;导出文件后提示删除敏感包。
Co-authored-by: Cursor <cursoragent@cursor.com >
* fix(auth): require auth-token.enc before portable export
修复 staticcheck S1030(测试改用 exported.Bytes())。
导出前校验 auth-token.enc 存在,避免无登录态时生成
仅含 dek 的无效 bundle;CLI 提示先运行 dws auth login。
Co-authored-by: Cursor <cursoragent@cursor.com >
---------
Co-authored-by: 洛丘 <wangketing.wkt@antgroup.com >
Co-authored-by: Cursor <cursoragent@cursor.com >
2026-05-29 09:19:11 +08:00
github-actions[bot]
b5f241c719
chore: update coverage badge [skip ci]
2026-05-28 04:16:11 +00:00
wxianfeng
4cdc3e7320
Merge remote-tracking branch 'refs/remotes/origin/main'
2026-05-28 12:13:45 +08:00
wxianfeng
b558bda6df
Merge remote-tracking branch 'upstream/main'
2026-05-28 12:11:15 +08:00
修雨
5ce7cb61b0
feat(skill): dws skill setup with mono/multi modes ( #332 )
...
新增 `dws skill setup` 交互式安装命令,支持单产品(mono)和多产品(multi,标记为试验版)两种 skill 布局,并与开源 dws v1.0.30 命令对齐。
主要变更:
- 骨架:skills/ 拆为 skills/mono/ 和 skills/multi/(29 个产品 skill),git rename 保留历史
- 命令:新增 `skill setup` cobra 子命令,支持 --mode、--target、--source、--yes,huh 交互
- multi 模式支持 -s/--skill、-x/--exclude 按产品选择
- 覆盖全部 14 个 agent home 目录(与 install.sh 一致)
- 发布:install.sh / install.ps1 / post-goreleaser.sh 改读 skills/mono;dws-skills.zip 同时包含 mono 和 multi 内容;~/.dws 本地缓存
- 内容对齐:删除 8 个仅内部使用的产品 skill、dingtalk-a2a;修正 mono/multi 共 15+ 处命令引用以匹配 OSS dws v1.0.30;chat skill 从 dws-wukong 回移更新
- 漂移清理:物理删除 skill 文档中 OSS 未暴露的命令,true-fail 命令转为 caveat;--help diff 100% 覆盖审计
- 测试:新增 Layer A 静态命令调度验证 + Layer B 端到端 mock 调度验证
- 同步 main:drive 9 个命令同步到 mono/multi skill
2026-05-26 09:17:37 +08:00
修雨
86ff7e2f50
docs(changelog): add 1.0.32 release notes ( #354 )
v1.0.32
2026-05-25 19:54:47 +08:00
github-actions[bot]
1063a6425d
chore: update coverage badge [skip ci]
2026-05-25 06:15:24 +00:00
wxianfeng
0a8517432f
Merge remote-tracking branch 'origin/main'
2026-05-25 14:12:18 +08:00
wxianfeng
83bfca8d35
Merge remote-tracking branch 'upstream/main'
2026-05-25 14:09:29 +08:00
github-actions[bot]
9e58a062f8
chore: update coverage badge [skip ci]
2026-05-25 06:06:21 +00:00