Merge remote-tracking branch 'typefield/agent/sync-wukong-multi-skill' into pr621-wukong-sync
# Conflicts: # CHANGELOG.md # internal/cli/schema_agent_metadata/index.json # internal/cli/schema_agent_metadata_audit.json # internal/cli/schema_catalog/catalog.json # internal/cli/schema_parameter_bindings.json
This commit is contained in:
commit
c5bc1fdad4
14 files changed
+1271
-740
No files matched your search
@@ -9,6 +9,7 @@ The format is inspired by [Keep a Changelog](https://keepachangelog.com/) and th
|
|||||||
### Added
|
### Added
|
||||||
|
|
||||||
- **Wukong internal command sync** (#621) — ports roughly 30 leaf commands from the internal wukong repository into the open-source CLI: Drive gains `star`, `cover`, `revert`, `download-version`, `permission transfer-owner`/`apply-info`/`apply`, and `list --depth`/`--versions`; Doc gains `style cover`/`style background`; Sheet gains the `comment`, `version`, and `formula-verify` command groups plus `info --include`; Chat gains `message update-text-emotion`, the `location`/`profile` message types, and group `user-settings`/`get-mute-config`. Every new leaf is registered in the Agent-visible Runtime Schema.
|
- **Wukong internal command sync** (#621) — ports roughly 30 leaf commands from the internal wukong repository into the open-source CLI: Drive gains `star`, `cover`, `revert`, `download-version`, `permission transfer-owner`/`apply-info`/`apply`, and `list --depth`/`--versions`; Doc gains `style cover`/`style background`; Sheet gains the `comment`, `version`, and `formula-verify` command groups plus `info --include`; Chat gains `message update-text-emotion`, the `location`/`profile` message types, and group `user-settings`/`get-mute-config`. Every new leaf is registered in the Agent-visible Runtime Schema.
|
||||||
|
- **In-place text-emotion updates** — adds `dws chat message update-text-emotion`, mapping the seven required conversation, message, old/new emotion, name, text, and background parameters to Wukong's proven `im/update_text_emotion` capability so status transitions can avoid remove-then-add flicker and duplicate network calls ([hugozhu/dingtalk-opencode-tag#85](https://github.com/hugozhu/dingtalk-opencode-tag/issues/85)).
|
||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
|||||||
@@ -30788,32 +30788,33 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"chat message update-text-emotion": {
|
"chat message update-text-emotion": {
|
||||||
"agent_summary": "更新消息上已有的文字表情回应",
|
"agent_summary": "把消息上已有的文字表情原地替换为新的文字表情",
|
||||||
"agent_summary_source": "dws-agent-selection/chat",
|
"agent_summary_source": "dws-agent-selection/chat",
|
||||||
"availability": "available",
|
"availability": "available",
|
||||||
"avoid_when": [
|
"avoid_when": [
|
||||||
"新增用 add-text-emotion;移除用 remove-text-emotion"
|
"消息上还没有文字表情时使用 chat message add-text-emotion",
|
||||||
|
"只需清除文字表情时使用 chat message remove-text-emotion"
|
||||||
],
|
],
|
||||||
"confirmation": "not_required",
|
"confirmation": "not_required",
|
||||||
"effect": "write",
|
"effect": "write",
|
||||||
"effect_source": "agent-hint",
|
"effect_source": "agent-hint",
|
||||||
"examples": [
|
"examples": [
|
||||||
"dws chat message update-text-emotion --conversation-id \u003ccid\u003e --msg-id \u003cmid\u003e --old-emotion-id \u003cold\u003e --emotion-id \u003cnew\u003e --emotion-name \"赞\" --text \"nice\" --background-id im_bg_5 --format json"
|
"dws chat message update-text-emotion --conversation-id \u003copenConversationId\u003e --msg-id \u003copenMessageId\u003e --old-emotion-id \u003coldEmotionId\u003e --emotion-id \u003cemotionId\u003e --emotion-name \"处理中\" --text \"处理中 2 分钟\" --background-id im_bg_5"
|
||||||
],
|
],
|
||||||
"field_provenance": {
|
"field_provenance": {
|
||||||
"agent_summary": {
|
"agent_summary": {
|
||||||
"value": "更新消息上已有的文字表情回应",
|
"value": "把消息上已有的文字表情原地替换为新的文字表情",
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。",
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": "更新消息上已有的文字表情回应",
|
"value": "把消息上已有的文字表情原地替换为新的文字表情",
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。"
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -30822,34 +30823,36 @@
|
|||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed",
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": "available",
|
"value": "available",
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed"
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"avoid_when": {
|
"avoid_when": {
|
||||||
"value": [
|
"value": [
|
||||||
"新增用 add-text-emotion;移除用 remove-text-emotion"
|
"消息上还没有文字表情时使用 chat message add-text-emotion",
|
||||||
|
"只需清除文字表情时使用 chat message remove-text-emotion"
|
||||||
],
|
],
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。",
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": [
|
"value": [
|
||||||
"新增用 add-text-emotion;移除用 remove-text-emotion"
|
"消息上还没有文字表情时使用 chat message add-text-emotion",
|
||||||
|
"只需清除文字表情时使用 chat message remove-text-emotion"
|
||||||
],
|
],
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。"
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -30858,14 +30861,20 @@
|
|||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed",
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": "not_required",
|
"value": "not_required",
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed"
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "not_required",
|
||||||
|
"source": "risk-default",
|
||||||
|
"precedence": "inference_or_default",
|
||||||
|
"selected": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -30874,34 +30883,40 @@
|
|||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed",
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": "write",
|
"value": "write",
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed"
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "write",
|
||||||
|
"source": "command-verb",
|
||||||
|
"precedence": "inference_or_default",
|
||||||
|
"selected": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"examples": {
|
"examples": {
|
||||||
"value": [
|
"value": [
|
||||||
"dws chat message update-text-emotion --conversation-id \u003ccid\u003e --msg-id \u003cmid\u003e --old-emotion-id \u003cold\u003e --emotion-id \u003cnew\u003e --emotion-name \"赞\" --text \"nice\" --background-id im_bg_5 --format json"
|
"dws chat message update-text-emotion --conversation-id \u003copenConversationId\u003e --msg-id \u003copenMessageId\u003e --old-emotion-id \u003coldEmotionId\u003e --emotion-id \u003cemotionId\u003e --emotion-name \"处理中\" --text \"处理中 2 分钟\" --background-id im_bg_5"
|
||||||
],
|
],
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。",
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": [
|
"value": [
|
||||||
"dws chat message update-text-emotion --conversation-id \u003ccid\u003e --msg-id \u003cmid\u003e --old-emotion-id \u003cold\u003e --emotion-id \u003cnew\u003e --emotion-name \"赞\" --text \"nice\" --background-id im_bg_5 --format json"
|
"dws chat message update-text-emotion --conversation-id \u003copenConversationId\u003e --msg-id \u003copenMessageId\u003e --old-emotion-id \u003coldEmotionId\u003e --emotion-id \u003cemotionId\u003e --emotion-name \"处理中\" --text \"处理中 2 分钟\" --background-id im_bg_5"
|
||||||
],
|
],
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。"
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -30910,14 +30925,20 @@
|
|||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed",
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": "idempotent",
|
"value": "idempotent",
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed"
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "unknown",
|
||||||
|
"source": "effect-default",
|
||||||
|
"precedence": "inference_or_default",
|
||||||
|
"selected": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -30926,30 +30947,30 @@
|
|||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed",
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": "composite",
|
"value": "composite",
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed"
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"interface_reason": {
|
"interface_reason": {
|
||||||
"value": "Reviewed unpinned remote adapter: this executable CLI wrapper calls a remote helper that is absent from the pinned MCP metadata snapshot; no single pinned semantically equivalent interface_ref can represent the command.",
|
"value": "Reviewed unpinned remote adapter: the executable CLI calls im/update_text_emotion, which is proven by dws-wukong develop@30f13f02 but absent from the pinned MCP metadata snapshot; no pinned interface_ref can represent the command yet.",
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed",
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": "Reviewed unpinned remote adapter: this executable CLI wrapper calls a remote helper that is absent from the pinned MCP metadata snapshot; no single pinned semantically equivalent interface_ref can represent the command.",
|
"value": "Reviewed unpinned remote adapter: the executable CLI calls im/update_text_emotion, which is proven by dws-wukong develop@30f13f02 but absent from the pinned MCP metadata snapshot; no pinned interface_ref can represent the command yet.",
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed"
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call."
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -30974,21 +30995,21 @@
|
|||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed",
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": true,
|
"value": true,
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed"
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call."
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"value": true,
|
"value": true,
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": false,
|
"selected": false,
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。"
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
@@ -30997,52 +31018,63 @@
|
|||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed",
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": "low",
|
"value": "low",
|
||||||
"source": "internal/cli/schema_hints/metadata/chat.json",
|
"source": "internal/cli/schema_hints/metadata/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "dws-tool-metadata/chat marks this tool as reviewed"
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call."
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"value": "medium",
|
||||||
|
"source": "effect-default",
|
||||||
|
"precedence": "inference_or_default",
|
||||||
|
"selected": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"use_when": {
|
"use_when": {
|
||||||
"value": [
|
"value": [
|
||||||
"用户说 改一下消息上的文字表情"
|
"需要更新消息的状态文字或表情,并避免先移除再添加造成闪烁和两次网络调用时"
|
||||||
],
|
],
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"resolution": "highest_precedence",
|
"resolution": "highest_precedence",
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。",
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。",
|
||||||
"candidates": [
|
"candidates": [
|
||||||
{
|
{
|
||||||
"value": [
|
"value": [
|
||||||
"用户说 改一下消息上的文字表情"
|
"需要更新消息的状态文字或表情,并避免先移除再添加造成闪烁和两次网络调用时"
|
||||||
],
|
],
|
||||||
"source": "internal/cli/schema_hints/selection/chat.json",
|
"source": "internal/cli/schema_hints/selection/chat.json",
|
||||||
"precedence": "reviewed_explicit",
|
"precedence": "reviewed_explicit",
|
||||||
"selected": true,
|
"selected": true,
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。"
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"idempotency": "idempotent",
|
"idempotency": "idempotent",
|
||||||
"interface_mode": "composite",
|
"interface_mode": "composite",
|
||||||
"interface_reason": "Reviewed unpinned remote adapter: this executable CLI wrapper calls a remote helper that is absent from the pinned MCP metadata snapshot; no single pinned semantically equivalent interface_ref can represent the command.",
|
"interface_reason": "Reviewed unpinned remote adapter: the executable CLI calls im/update_text_emotion, which is proven by dws-wukong develop@30f13f02 but absent from the pinned MCP metadata snapshot; no pinned interface_ref can represent the command yet.",
|
||||||
"reviewed": true,
|
"reviewed": true,
|
||||||
"risk": "low",
|
"risk": "low",
|
||||||
"source_refs": [
|
"source_refs": [
|
||||||
"CommandRegistry:canonical_path=chat.update_text_emotion",
|
|
||||||
"cobra-help:dws chat message update-text-emotion",
|
"cobra-help:dws chat message update-text-emotion",
|
||||||
|
"dws-wukong:30f13f02",
|
||||||
|
"dws-wukong:bcf56ccf",
|
||||||
|
"dws-wukong:d6831318",
|
||||||
|
"github:hugozhu/dingtalk-opencode-tag#85",
|
||||||
|
"internal/cli/schema_command_registry/products/chat.json#chat.update_text_emotion",
|
||||||
"internal/cli/schema_hints/metadata/chat.json",
|
"internal/cli/schema_hints/metadata/chat.json",
|
||||||
"internal/cli/schema_hints/selection/chat.json",
|
"internal/cli/schema_hints/selection/chat.json",
|
||||||
"wukong-develop:wukong/products"
|
"live-dws-schema:im.update_text_emotion#FAILED_NOT_AUTHENTICATED",
|
||||||
|
"skills/mono/references/products/chat.md"
|
||||||
],
|
],
|
||||||
"use_when": [
|
"use_when": [
|
||||||
"用户说 改一下消息上的文字表情"
|
"需要更新消息的状态文字或表情,并避免先移除再添加造成闪烁和两次网络调用时"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"chat mute": {
|
"chat mute": {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"source_hash": "sha256:31a28d1665ebb13fdb131547bda1d84ce1cc3fee0bbff821b76c2fdf6f6904ab",
|
"source_hash": "sha256:eb6e44775a6e85f92ca31c90c876f67543ab928d8a8bda04f07a33dc802f7028",
|
||||||
"surface_hash": "sha256:29d4f5f43688cc01bc2277a4528b597de4fbab89a7b2f13fe2e56df85d1c66c4",
|
"surface_hash": "sha256:29d4f5f43688cc01bc2277a4528b597de4fbab89a7b2f13fe2e56df85d1c66c4",
|
||||||
"coverage": {
|
"coverage": {
|
||||||
"surface_products": 26,
|
"surface_products": 26,
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"version": 1,
|
"version": 1,
|
||||||
"surface_hash": "sha256:29d4f5f43688cc01bc2277a4528b597de4fbab89a7b2f13fe2e56df85d1c66c4",
|
"surface_hash": "sha256:29d4f5f43688cc01bc2277a4528b597de4fbab89a7b2f13fe2e56df85d1c66c4",
|
||||||
"source_hash": "sha256:346ec3ac857b9a740baf03142296b1e4fb0814f713ceab4ed2ff9f46a85d6b4d",
|
"source_hash": "sha256:c71b9bacfe2d73f5ad45151fada6fdc18bac69b266058a8b05647b6847c99835",
|
||||||
"catalog": {
|
"catalog": {
|
||||||
"agent_metadata": {
|
"agent_metadata": {
|
||||||
"products_with_metadata": 26,
|
"products_with_metadata": 26,
|
||||||
"source": "embedded-skill-metadata",
|
"source": "embedded-skill-metadata",
|
||||||
"source_hash": "sha256:31a28d1665ebb13fdb131547bda1d84ce1cc3fee0bbff821b76c2fdf6f6904ab",
|
"source_hash": "sha256:eb6e44775a6e85f92ca31c90c876f67543ab928d8a8bda04f07a33dc802f7028",
|
||||||
"surface_hash": "sha256:29d4f5f43688cc01bc2277a4528b597de4fbab89a7b2f13fe2e56df85d1c66c4",
|
"surface_hash": "sha256:29d4f5f43688cc01bc2277a4528b597de4fbab89a7b2f13fe2e56df85d1c66c4",
|
||||||
"surface_products": 26,
|
"surface_products": 26,
|
||||||
"surface_tools": 840,
|
"surface_tools": 840,
|
||||||
@@ -11249,11 +11249,12 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"agent_metadata_source": "embedded-skill-metadata",
|
"agent_metadata_source": "embedded-skill-metadata",
|
||||||
"agent_summary": "更新消息上已有的文字表情回应",
|
"agent_summary": "把消息上已有的文字表情原地替换为新的文字表情",
|
||||||
"agent_summary_source": "dws-agent-selection/chat",
|
"agent_summary_source": "dws-agent-selection/chat",
|
||||||
"availability": "available",
|
"availability": "available",
|
||||||
"avoid_when": [
|
"avoid_when": [
|
||||||
"新增用 add-text-emotion;移除用 remove-text-emotion"
|
"消息上还没有文字表情时使用 chat message add-text-emotion",
|
||||||
|
"只需清除文字表情时使用 chat message remove-text-emotion"
|
||||||
],
|
],
|
||||||
"canonical_path": "chat.update_text_emotion",
|
"canonical_path": "chat.update_text_emotion",
|
||||||
"cli_name": "update-text-emotion",
|
"cli_name": "update-text-emotion",
|
||||||
@@ -11264,14 +11265,14 @@
|
|||||||
"group": "message",
|
"group": "message",
|
||||||
"idempotency": "idempotent",
|
"idempotency": "idempotent",
|
||||||
"interface_mode": "composite",
|
"interface_mode": "composite",
|
||||||
"interface_reason": "Reviewed unpinned remote adapter: this executable CLI wrapper calls a remote helper that is absent from the pinned MCP metadata snapshot; no single pinned semantically equivalent interface_ref can represent the command.",
|
"interface_reason": "Reviewed unpinned remote adapter: the executable CLI calls im/update_text_emotion, which is proven by dws-wukong develop@30f13f02 but absent from the pinned MCP metadata snapshot; no pinned interface_ref can represent the command yet.",
|
||||||
"name": "update_text_emotion",
|
"name": "update_text_emotion",
|
||||||
"primary_cli_path": "chat message update-text-emotion",
|
"primary_cli_path": "chat message update-text-emotion",
|
||||||
"reviewed": true,
|
"reviewed": true,
|
||||||
"risk": "low",
|
"risk": "low",
|
||||||
"title": "更新消息的文字表情回应",
|
"title": "更新消息的文字表情回应",
|
||||||
"use_when": [
|
"use_when": [
|
||||||
"用户说 改一下消息上的文字表情"
|
"需要更新消息的状态文字或表情,并避免先移除再添加造成闪烁和两次网络调用时"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
File diff suppressed because it is too large.
Load diff
@@ -40,6 +40,7 @@ func init() {
|
|||||||
registerExclusiveOneOf("chat.create_and_send_card", "group", "receiver")
|
registerExclusiveOneOf("chat.create_and_send_card", "group", "receiver")
|
||||||
registerRequireOneOf("chat.add_emoji_reaction", "conversation-id", "group", "id", "chat")
|
registerRequireOneOf("chat.add_emoji_reaction", "conversation-id", "group", "id", "chat")
|
||||||
registerRequireOneOf("chat.add_text_emotion", "conversation-id", "group", "id", "chat")
|
registerRequireOneOf("chat.add_text_emotion", "conversation-id", "group", "id", "chat")
|
||||||
|
registerRequireOneOf("chat.update_text_emotion", "conversation-id", "group", "id", "chat")
|
||||||
registerExclusiveOneOf("chat.get_conversation_info", "group", "user", "open-dingtalk-id")
|
registerExclusiveOneOf("chat.get_conversation_info", "group", "user", "open-dingtalk-id")
|
||||||
registerExclusiveOneOf("chat.list_conversation_message_v2", "group", "user", "open-dingtalk-id")
|
registerExclusiveOneOf("chat.list_conversation_message_v2", "group", "user", "open-dingtalk-id")
|
||||||
registerExclusiveOneOf("chat.list_individual_chat_message", "user", "open-dingtalk-id")
|
registerExclusiveOneOf("chat.list_individual_chat_message", "user", "open-dingtalk-id")
|
||||||
|
|||||||
@@ -1354,8 +1354,59 @@
|
|||||||
"idempotency": "idempotent",
|
"idempotency": "idempotent",
|
||||||
"interface_mode": "composite",
|
"interface_mode": "composite",
|
||||||
"availability": "available",
|
"availability": "available",
|
||||||
"interface_reason": "Reviewed unpinned remote adapter: this executable CLI wrapper calls a remote helper that is absent from the pinned MCP metadata snapshot; no single pinned semantically equivalent interface_ref can represent the command.",
|
"interface_reason": "Reviewed unpinned remote adapter: the executable CLI calls im/update_text_emotion, which is proven by dws-wukong develop@30f13f02 but absent from the pinned MCP metadata snapshot; no pinned interface_ref can represent the command yet.",
|
||||||
"reviewed": true,
|
"reviewed": true,
|
||||||
|
"parameters": {
|
||||||
|
"background-id": {
|
||||||
|
"property": "backgroundId",
|
||||||
|
"description": "新文字表情的背景 ID",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"chat": {
|
||||||
|
"property": "openConversationId",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"conversation-id": {
|
||||||
|
"property": "openConversationId",
|
||||||
|
"description": "会话 openConversationId;与 --group、--id、--chat 四选一",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"emotion-id": {
|
||||||
|
"property": "emotionId",
|
||||||
|
"description": "新的文字表情 ID,可通过 create-text-emotion 获取",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"emotion-name": {
|
||||||
|
"property": "emotionName",
|
||||||
|
"description": "新的文字表情名称",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"group": {
|
||||||
|
"property": "openConversationId",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"property": "openConversationId",
|
||||||
|
"required": false
|
||||||
|
},
|
||||||
|
"msg-id": {
|
||||||
|
"property": "openMsgId",
|
||||||
|
"description": "需要原地更新文字表情的消息 openMsgId",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"old-emotion-id": {
|
||||||
|
"property": "oldEmotionId",
|
||||||
|
"description": "消息上当前文字表情的 emotionId",
|
||||||
|
"required": true
|
||||||
|
},
|
||||||
|
"text": {
|
||||||
|
"property": "text",
|
||||||
|
"description": "新的文字表情内容",
|
||||||
|
"required": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"review_reason": "Ported from dws-wukong commits d6831318 and bcf56ccf, merged at 30f13f02. The four conversation locators alias one property; the other six business parameters are required by Cobra before the single im/update_text_emotion call.",
|
||||||
|
"cli_path": "chat message update-text-emotion",
|
||||||
"runtime_gate": "none"
|
"runtime_gate": "none"
|
||||||
},
|
},
|
||||||
"chat.get_group_mute_config": {
|
"chat.get_group_mute_config": {
|
||||||
|
|||||||
@@ -2399,22 +2399,27 @@
|
|||||||
]
|
]
|
||||||
},
|
},
|
||||||
"chat.update_text_emotion": {
|
"chat.update_text_emotion": {
|
||||||
"agent_summary": "更新消息上已有的文字表情回应",
|
"agent_summary": "把消息上已有的文字表情原地替换为新的文字表情",
|
||||||
"use_when": [
|
"use_when": [
|
||||||
"用户说 改一下消息上的文字表情"
|
"需要更新消息的状态文字或表情,并避免先移除再添加造成闪烁和两次网络调用时"
|
||||||
],
|
],
|
||||||
"avoid_when": [
|
"avoid_when": [
|
||||||
"新增用 add-text-emotion;移除用 remove-text-emotion"
|
"消息上还没有文字表情时使用 chat message add-text-emotion",
|
||||||
|
"只需清除文字表情时使用 chat message remove-text-emotion"
|
||||||
],
|
],
|
||||||
"examples": [
|
"examples": [
|
||||||
"dws chat message update-text-emotion --conversation-id <cid> --msg-id <mid> --old-emotion-id <old> --emotion-id <new> --emotion-name \"赞\" --text \"nice\" --background-id im_bg_5 --format json"
|
"dws chat message update-text-emotion --conversation-id <openConversationId> --msg-id <openMessageId> --old-emotion-id <oldEmotionId> --emotion-id <emotionId> --emotion-name \"处理中\" --text \"处理中 2 分钟\" --background-id im_bg_5"
|
||||||
],
|
],
|
||||||
"reviewed": true,
|
"reviewed": true,
|
||||||
"review_reason": "人工审阅:对照悟空 develop 同名命令实现、Cobra Long/Example 与 Runtime 确认门禁移植;不改变命令身份、参数契约或接口绑定。",
|
"review_reason": "依据 issue #85 的原地状态更新场景、Wukong 30f13f02 的真实 Cobra/MCP 映射和开源实现复核;选择语义不改变执行、安全或参数事实。",
|
||||||
"source_refs": [
|
"source_refs": [
|
||||||
"CommandRegistry:canonical_path=chat.update_text_emotion",
|
"internal/cli/schema_command_registry/products/chat.json#chat.update_text_emotion",
|
||||||
"cobra-help:dws chat message update-text-emotion",
|
"cobra-help:dws chat message update-text-emotion",
|
||||||
"wukong-develop:wukong/products"
|
"dws-wukong:d6831318",
|
||||||
|
"dws-wukong:bcf56ccf",
|
||||||
|
"dws-wukong:30f13f02",
|
||||||
|
"github:hugozhu/dingtalk-opencode-tag#85",
|
||||||
|
"live-dws-schema:im.update_text_emotion#FAILED_NOT_AUTHENTICATED"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"chat.get_group_mute_config": {
|
"chat.get_group_mute_config": {
|
||||||
|
|||||||
@@ -1628,16 +1628,6 @@
|
|||||||
"chat.set_group_member_mute_list --user": "conditional wrapper/alias of --users: userIds are remotely resolved to openDingTalkIds outside dry-run and otherwise may be sent as uids; openDingTalkId inputs are sent as openDingTalkIds, so one exact property would misdescribe execution",
|
"chat.set_group_member_mute_list --user": "conditional wrapper/alias of --users: userIds are remotely resolved to openDingTalkIds outside dry-run and otherwise may be sent as uids; openDingTalkId inputs are sent as openDingTalkIds, so one exact property would misdescribe execution",
|
||||||
"chat.transfer_group_owner --user": "conditional compatibility input: a userId is sent as newOwnerUid, while an openDingTalkId is sent as newOwnerOpenDingTalkId; the runtime ID-shape branch has no single RPC property",
|
"chat.transfer_group_owner --user": "conditional compatibility input: a userId is sent as newOwnerUid, while an openDingTalkId is sent as newOwnerOpenDingTalkId; the runtime ID-shape branch has no single RPC property",
|
||||||
"chat.update_conv_member_roles --user": "conditional wrapper/alias of --users: splitChatIDValues sends userIds as uids and openDingTalkIds as openDingTalkIds; there is no single RPC property for this flag",
|
"chat.update_conv_member_roles --user": "conditional wrapper/alias of --users: splitChatIDValues sends userIds as uids and openDingTalkIds as openDingTalkIds; there is no single RPC property for this flag",
|
||||||
"chat.update_text_emotion --background-id": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --background-id is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --chat": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --chat is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --conversation-id": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --conversation-id is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --emotion-id": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --emotion-id is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --emotion-name": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --emotion-name is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --group": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --group is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --id": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --id is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --msg-id": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --msg-id is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --old-emotion-id": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --old-emotion-id is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"chat.update_text_emotion --text": "Reviewed unpinned adapter: chat.update_text_emotion has no singular pinned interface_ref; --text is a CLI wrapper input and does not publish a direct interface property.",
|
|
||||||
"dev.add_dev_app_members --member-type": "Reviewed unpinned adapter: dev.add_dev_app_members has no singular pinned interface_ref; --member-type is a CLI wrapper input and does not publish a direct interface property.",
|
"dev.add_dev_app_members --member-type": "Reviewed unpinned adapter: dev.add_dev_app_members has no singular pinned interface_ref; --member-type is a CLI wrapper input and does not publish a direct interface property.",
|
||||||
"dev.add_dev_app_members --unified-app-id": "Reviewed unpinned adapter: dev.add_dev_app_members has no singular pinned interface_ref; --unified-app-id is a CLI wrapper input and does not publish a direct interface property.",
|
"dev.add_dev_app_members --unified-app-id": "Reviewed unpinned adapter: dev.add_dev_app_members has no singular pinned interface_ref; --unified-app-id is a CLI wrapper input and does not publish a direct interface property.",
|
||||||
"dev.add_dev_app_members --user-ids": "Reviewed unpinned adapter: dev.add_dev_app_members has no singular pinned interface_ref; --user-ids is a CLI wrapper input and does not publish a direct interface property.",
|
"dev.add_dev_app_members --user-ids": "Reviewed unpinned adapter: dev.add_dev_app_members has no singular pinned interface_ref; --user-ids is a CLI wrapper input and does not publish a direct interface property.",
|
||||||
|
|||||||
@@ -3220,9 +3220,6 @@ func newChatCommand() *cobra.Command {
|
|||||||
if err := validateRequiredFlagWithAliases(cmd, "conversation-id", "group", "id", "chat"); err != nil {
|
if err := validateRequiredFlagWithAliases(cmd, "conversation-id", "group", "id", "chat"); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := validateRequiredFlags(cmd, "msg-id", "old-emotion-id", "emotion-id", "emotion-name", "text", "background-id"); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
return callMCPToolOnServer("im", "update_text_emotion", map[string]any{
|
return callMCPToolOnServer("im", "update_text_emotion", map[string]any{
|
||||||
"openConversationId": flagOrFallback(cmd, "conversation-id", "group", "id", "chat"),
|
"openConversationId": flagOrFallback(cmd, "conversation-id", "group", "id", "chat"),
|
||||||
"openMsgId": mustGetFlag(cmd, "msg-id"),
|
"openMsgId": mustGetFlag(cmd, "msg-id"),
|
||||||
@@ -3244,6 +3241,10 @@ func newChatCommand() *cobra.Command {
|
|||||||
chatMessageUpdateTextEmotionCmd.Flags().String("emotion-name", "", "新表情名称 (必填)")
|
chatMessageUpdateTextEmotionCmd.Flags().String("emotion-name", "", "新表情名称 (必填)")
|
||||||
chatMessageUpdateTextEmotionCmd.Flags().String("text", "", "新文字内容 (必填)")
|
chatMessageUpdateTextEmotionCmd.Flags().String("text", "", "新文字内容 (必填)")
|
||||||
chatMessageUpdateTextEmotionCmd.Flags().String("background-id", "", "新背景 ID (必填)")
|
chatMessageUpdateTextEmotionCmd.Flags().String("background-id", "", "新背景 ID (必填)")
|
||||||
|
chatMessageUpdateTextEmotionCmd.MarkFlagsOneRequired("conversation-id", "group", "id", "chat")
|
||||||
|
for _, name := range []string{"msg-id", "old-emotion-id", "emotion-id", "emotion-name", "text", "background-id"} {
|
||||||
|
_ = chatMessageUpdateTextEmotionCmd.MarkFlagRequired(name)
|
||||||
|
}
|
||||||
|
|
||||||
// ── 创建文字表情(获取 emotionId)──────────────────────
|
// ── 创建文字表情(获取 emotionId)──────────────────────
|
||||||
|
|
||||||
|
|||||||
@@ -127,12 +127,12 @@ func TestCrossPlatformCoverageChatUpdateTextEmotionRequiredFlags(t *testing.T) {
|
|||||||
{
|
{
|
||||||
name: "missing conversation-id and aliases",
|
name: "missing conversation-id and aliases",
|
||||||
args: dropFlag("--conversation-id"),
|
args: dropFlag("--conversation-id"),
|
||||||
wantErr: "--conversation-id",
|
wantErr: "at least one of the flags in the group [conversation-id group id chat] is required",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "missing old-emotion-id",
|
name: "missing old-emotion-id",
|
||||||
args: dropFlag("--old-emotion-id"),
|
args: dropFlag("--old-emotion-id"),
|
||||||
wantErr: "--old-emotion-id",
|
wantErr: `required flag(s) "old-emotion-id" not set`,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "missing msg-id and background-id",
|
name: "missing msg-id and background-id",
|
||||||
@@ -144,7 +144,7 @@ func TestCrossPlatformCoverageChatUpdateTextEmotionRequiredFlags(t *testing.T) {
|
|||||||
"--emotion-name", "like",
|
"--emotion-name", "like",
|
||||||
"--text", "nice",
|
"--text", "nice",
|
||||||
},
|
},
|
||||||
wantErr: "--msg-id, --background-id",
|
wantErr: `required flag(s) "background-id", "msg-id" not set`,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
|
|||||||
@@ -0,0 +1,86 @@
|
|||||||
|
// Copyright 2026 Alibaba Group
|
||||||
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
// you may not use this file except in compliance with the License.
|
||||||
|
// You may obtain a copy of the License at
|
||||||
|
//
|
||||||
|
// http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
//
|
||||||
|
// Unless required by applicable law or agreed to in writing, software
|
||||||
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
// See the License for the specific language governing permissions and
|
||||||
|
// limitations under the License.
|
||||||
|
|
||||||
|
package helpers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestCrossPlatformCoverageChatMessageUpdateTextEmotionMapsReplacementTemplate(t *testing.T) {
|
||||||
|
for _, locator := range []string{"conversation-id", "group", "id", "chat"} {
|
||||||
|
t.Run(locator, func(t *testing.T) {
|
||||||
|
caller := &wukongWeeklySyncCaller{}
|
||||||
|
_, _, err := executeWukongWeeklySyncCommand(t, "chat", caller, newChatCommand,
|
||||||
|
"message", "update-text-emotion",
|
||||||
|
"--"+locator, "cid",
|
||||||
|
"--msg-id", "mid",
|
||||||
|
"--old-emotion-id", "old-emotion",
|
||||||
|
"--emotion-id", "new-emotion",
|
||||||
|
"--emotion-name", "赞",
|
||||||
|
"--text", "nice",
|
||||||
|
"--background-id", "im_bg_5",
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatalf("update-text-emotion returned error: %v", err)
|
||||||
|
}
|
||||||
|
requireWukongWeeklySyncCall(t, caller, wukongWeeklySyncCall{
|
||||||
|
server: "im",
|
||||||
|
tool: "update_text_emotion",
|
||||||
|
args: map[string]any{
|
||||||
|
"openConversationId": "cid",
|
||||||
|
"openMsgId": "mid",
|
||||||
|
"oldEmotionId": "old-emotion",
|
||||||
|
"emotionId": "new-emotion",
|
||||||
|
"emotionName": "赞",
|
||||||
|
"text": "nice",
|
||||||
|
"backgroundId": "im_bg_5",
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestCrossPlatformCoverageChatMessageUpdateTextEmotionRequiresEveryBusinessParameter(t *testing.T) {
|
||||||
|
required := []struct {
|
||||||
|
name string
|
||||||
|
args []string
|
||||||
|
}{
|
||||||
|
{name: "conversation-id", args: []string{"--group", "cid"}},
|
||||||
|
{name: "msg-id", args: []string{"--msg-id", "mid"}},
|
||||||
|
{name: "old-emotion-id", args: []string{"--old-emotion-id", "old-emotion"}},
|
||||||
|
{name: "emotion-id", args: []string{"--emotion-id", "new-emotion"}},
|
||||||
|
{name: "emotion-name", args: []string{"--emotion-name", "赞"}},
|
||||||
|
{name: "text", args: []string{"--text", "nice"}},
|
||||||
|
{name: "background-id", args: []string{"--background-id", "im_bg_5"}},
|
||||||
|
}
|
||||||
|
|
||||||
|
for omitted := range required {
|
||||||
|
t.Run("missing-"+required[omitted].name, func(t *testing.T) {
|
||||||
|
args := []string{"message", "update-text-emotion"}
|
||||||
|
for i, parameter := range required {
|
||||||
|
if i != omitted {
|
||||||
|
args = append(args, parameter.args...)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
caller := &wukongWeeklySyncCaller{}
|
||||||
|
_, _, err := executeWukongWeeklySyncCommand(t, "chat", caller, newChatCommand, args...)
|
||||||
|
if err == nil || !strings.Contains(err.Error(), required[omitted].name) {
|
||||||
|
t.Fatalf("missing %s error = %v", required[omitted].name, err)
|
||||||
|
}
|
||||||
|
requireWukongWeeklySyncNoCalls(t, caller)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1060,6 +1060,22 @@ Flags:
|
|||||||
--background-id string 背景 ID (必填)
|
--background-id string 背景 ID (必填)
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### 原地更新消息的文字表情回应
|
||||||
|
```
|
||||||
|
Usage:
|
||||||
|
dws chat message update-text-emotion [flags]
|
||||||
|
Example:
|
||||||
|
dws chat message update-text-emotion --conversation-id <openConversationId> --msg-id <openMsgId> --old-emotion-id <oldEmotionId> --emotion-id <emotionId> --emotion-name "处理中" --text "处理中 2 分钟" --background-id im_bg_5
|
||||||
|
Flags:
|
||||||
|
--conversation-id string 会话 openConversationId (必填,支持单聊/群聊,别名: --group / --id / --chat)
|
||||||
|
--msg-id string 消息 openMsgId (必填)
|
||||||
|
--old-emotion-id string 待替换的原表情 ID (必填)
|
||||||
|
--emotion-id string 新表情 ID (必填,通过 create-text-emotion 获取)
|
||||||
|
--emotion-name string 新表情名称 (必填)
|
||||||
|
--text string 新文字内容 (必填)
|
||||||
|
--background-id string 新背景 ID (必填)
|
||||||
|
```
|
||||||
|
|
||||||
#### 移除消息的文字表情回应
|
#### 移除消息的文字表情回应
|
||||||
```
|
```
|
||||||
Usage:
|
Usage:
|
||||||
@@ -1911,6 +1927,7 @@ Flags:
|
|||||||
用户说"emoji回应/表情回应/给消息加表情" → `chat message add-emoji`
|
用户说"emoji回应/表情回应/给消息加表情" → `chat message add-emoji`
|
||||||
用户说"取消emoji回应/移除表情回应" → `chat message remove-emoji`
|
用户说"取消emoji回应/移除表情回应" → `chat message remove-emoji`
|
||||||
用户说"文字表情回应/添加文字表情" → `chat message add-text-emotion`
|
用户说"文字表情回应/添加文字表情" → `chat message add-text-emotion`
|
||||||
|
用户说"修改文字表情回应/更新消息状态文字" → `chat message update-text-emotion`
|
||||||
用户说"取消文字表情回应/移除文字表情" → `chat message remove-text-emotion`
|
用户说"取消文字表情回应/移除文字表情" → `chat message remove-text-emotion`
|
||||||
用户说"创建文字表情/新建文字表情" → `chat message create-text-emotion`
|
用户说"创建文字表情/新建文字表情" → `chat message create-text-emotion`
|
||||||
用户说"免打扰/消息免打扰/静音/开启免打扰/关闭免打扰" → `chat mute`
|
用户说"免打扰/消息免打扰/静音/开启免打扰/关闭免打扰" → `chat mute`
|
||||||
@@ -1973,7 +1990,7 @@ Flags:
|
|||||||
- `chat message list-by-ids` — 根据消息 ID 批量查询消息(最多 50 条)
|
- `chat message list-by-ids` — 根据消息 ID 批量查询消息(最多 50 条)
|
||||||
- `chat message add-emoji` / `remove-emoji` — 对消息添加/移除 emoji 表情回应
|
- `chat message add-emoji` / `remove-emoji` — 对消息添加/移除 emoji 表情回应
|
||||||
- `chat message list-emotion-replies` — 批量拉取消息的表情回复和文字回复
|
- `chat message list-emotion-replies` — 批量拉取消息的表情回复和文字回复
|
||||||
- `chat message add-text-emotion` / `remove-text-emotion` — 对消息添加/移除文字表情回应
|
- `chat message add-text-emotion` / `update-text-emotion` / `remove-text-emotion` — 对消息添加、原地更新或移除文字表情回应
|
||||||
- `chat message create-text-emotion` — 创建文字表情模板,返回 emotionId 供 add-text-emotion 使用
|
- `chat message create-text-emotion` — 创建文字表情模板,返回 emotionId 供 add-text-emotion 使用
|
||||||
- `chat category list` — 获取用户自定义会话分组列表
|
- `chat category list` — 获取用户自定义会话分组列表
|
||||||
- `chat category list-conversations` — 拉取指定分组下的会话列表
|
- `chat category list-conversations` — 拉取指定分组下的会话列表
|
||||||
|
|||||||
Reference in new issue
Block a user