@thinkingai/ae-cli 6.0.31 → 6.0.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/README.md +3 -2
  2. package/README.zh.md +3 -2
  3. package/dist/{capability-SQ2IWKP3.js → capability-QW4AVJHI.js} +1 -1
  4. package/dist/{capability-SEH3JWLN.js → capability-SCRFGODD.js} +1 -1
  5. package/dist/{chunk-N2QORU5D.js → chunk-7OLGDQQ2.js} +5 -2
  6. package/dist/{chunk-TKQJQXWT.js → chunk-TBHBYKXZ.js} +5 -2
  7. package/dist/index.js +46 -24
  8. package/dist/{metadata-X62TKIVK.js → metadata-BFDL6RUK.js} +2 -2
  9. package/dist/{metadata-W6JFFMBA.js → metadata-FCLDBXX2.js} +2 -2
  10. package/dist/{te-analysis-NJGNWZFC.js → te-analysis-PUVF5IF4.js} +1297 -91
  11. package/dist/{te-analysis-YGV5V5EX.js → te-analysis-UJDOKPAN.js} +1297 -91
  12. package/dist/te-common-VUX3VOXZ.js +60 -0
  13. package/dist/te-common-XLAGWNIV.js +60 -0
  14. package/dist/te-engage-K4AEUPK5.js +3894 -0
  15. package/dist/te-engage-QBCCME22.js +3894 -0
  16. package/dist/{te-kb-NT33UHAE.js → te-kb-AYCODNU6.js} +56 -17
  17. package/dist/{te-meta-VKWNAWO4.js → te-meta-ARDIW3YI.js} +1 -234
  18. package/dist/{te-meta-MAAUHFQO.js → te-meta-UUROEODR.js} +1 -234
  19. package/package.json +1 -1
  20. package/skills/ae-analysis/SKILL.md +10 -7
  21. package/skills/ae-analysis/references/adhoc_export.md +3 -6
  22. package/skills/ae-analysis/references/adhoc_run.md +5 -9
  23. package/skills/ae-analysis/references/ai_models.md +17 -1
  24. package/skills/ae-analysis/references/analysis_data_retrieval.md +11 -11
  25. package/skills/ae-analysis/references/analysis_drilldown_contract.md +93 -0
  26. package/skills/ae-analysis/references/analysis_gateway_assets.md +9 -8
  27. package/skills/ae-analysis/references/asset_url_get.md +4 -3
  28. package/skills/ae-analysis/references/bi_panel_page_data_export.md +2 -2
  29. package/skills/ae-analysis/references/bi_panel_page_data_run.md +1 -1
  30. package/skills/ae-analysis/references/command_index.md +62 -28
  31. package/skills/ae-analysis/references/create_entity.md +2 -2
  32. package/skills/ae-analysis/references/dashboard_report_data_export.md +2 -2
  33. package/skills/ae-analysis/references/dashboard_report_data_run.md +2 -2
  34. package/skills/ae-analysis/references/drilldown_entities_export.md +26 -0
  35. package/skills/ae-analysis/references/drilldown_entities_run.md +33 -0
  36. package/skills/ae-analysis/references/drilldown_events_export.md +21 -0
  37. package/skills/ae-analysis/references/drilldown_events_run.md +23 -0
  38. package/skills/ae-analysis/references/drilldown_user_events_export.md +6 -3
  39. package/skills/ae-analysis/references/drilldown_user_events_run.md +6 -6
  40. package/skills/ae-analysis/references/entity_detail_export.md +2 -0
  41. package/skills/ae-analysis/references/entity_detail_run.md +8 -1
  42. package/skills/ae-analysis/references/event_detail_export.md +2 -0
  43. package/skills/ae-analysis/references/event_detail_run.md +2 -0
  44. package/skills/ae-analysis/references/event_list.md +10 -2
  45. package/skills/ae-analysis/references/list_entities.md +1 -1
  46. package/skills/ae-analysis/references/metric_create.md +13 -4
  47. package/skills/ae-analysis/references/metric_delete.md +7 -0
  48. package/skills/ae-analysis/references/metric_get.md +6 -0
  49. package/skills/ae-analysis/references/metric_list.md +16 -3
  50. package/skills/ae-analysis/references/metric_update.md +12 -1
  51. package/skills/ae-analysis/references/project_access_detail_get.md +23 -0
  52. package/skills/ae-analysis/references/project_data_power_delete.md +26 -0
  53. package/skills/ae-analysis/references/project_data_power_get.md +24 -0
  54. package/skills/ae-analysis/references/project_data_power_list.md +23 -0
  55. package/skills/ae-analysis/references/project_data_power_upsert.md +24 -0
  56. package/skills/ae-analysis/references/project_entity_create.md +27 -0
  57. package/skills/ae-analysis/references/project_entity_delete.md +25 -0
  58. package/skills/ae-analysis/references/project_entity_event_list.md +24 -0
  59. package/skills/ae-analysis/references/project_entity_get.md +24 -0
  60. package/skills/ae-analysis/references/project_entity_list.md +28 -0
  61. package/skills/ae-analysis/references/project_entity_update.md +28 -0
  62. package/skills/ae-analysis/references/project_function_list.md +24 -0
  63. package/skills/ae-analysis/references/project_info_get.md +23 -0
  64. package/skills/ae-analysis/references/project_info_list.md +26 -0
  65. package/skills/ae-analysis/references/project_info_update.md +25 -0
  66. package/skills/ae-analysis/references/project_mark_time_create.md +27 -0
  67. package/skills/ae-analysis/references/project_mark_time_delete.md +25 -0
  68. package/skills/ae-analysis/references/project_mark_time_list.md +28 -0
  69. package/skills/ae-analysis/references/project_mark_time_update.md +28 -0
  70. package/skills/ae-analysis/references/project_member_add.md +25 -0
  71. package/skills/ae-analysis/references/project_member_batch_update.md +24 -0
  72. package/skills/ae-analysis/references/project_member_candidate_list.md +25 -0
  73. package/skills/ae-analysis/references/project_member_handover_export.md +27 -0
  74. package/skills/ae-analysis/references/project_member_handover_run.md +24 -0
  75. package/skills/ae-analysis/references/project_member_import.md +25 -0
  76. package/skills/ae-analysis/references/project_member_list.md +23 -0
  77. package/skills/ae-analysis/references/project_member_receiver_list.md +23 -0
  78. package/skills/ae-analysis/references/project_member_remove.md +26 -0
  79. package/skills/ae-analysis/references/project_member_update.md +25 -0
  80. package/skills/ae-analysis/references/project_owner_update.md +27 -0
  81. package/skills/ae-analysis/references/project_permission_binding_list.md +24 -0
  82. package/skills/ae-analysis/references/project_receive_status_update.md +25 -0
  83. package/skills/ae-analysis/references/project_role_delete.md +25 -0
  84. package/skills/ae-analysis/references/project_role_function_list.md +27 -0
  85. package/skills/ae-analysis/references/project_role_get.md +23 -0
  86. package/skills/ae-analysis/references/project_role_list.md +25 -0
  87. package/skills/ae-analysis/references/project_role_upsert.md +24 -0
  88. package/skills/ae-analysis/references/project_role_user_list.md +23 -0
  89. package/skills/ae-analysis/references/project_timezone_get.md +23 -0
  90. package/skills/ae-analysis/references/project_timezone_overview.md +23 -0
  91. package/skills/ae-analysis/references/project_timezone_update.md +25 -0
  92. package/skills/ae-analysis/references/project_user_id_items_update.md +24 -0
  93. package/skills/ae-analysis/references/property_list.md +21 -6
  94. package/skills/ae-analysis/references/public_link_create.md +1 -1
  95. package/skills/ae-analysis/references/query_create_result_cluster.md +14 -32
  96. package/skills/ae-analysis/references/report_create.md +1 -1
  97. package/skills/ae-analysis/references/report_data_export.md +2 -2
  98. package/skills/ae-analysis/references/report_data_run.md +2 -2
  99. package/skills/ae-analysis/references/report_get.md +2 -0
  100. package/skills/ae-analysis/references/report_update.md +1 -1
  101. package/skills/ae-analysis/references/user_cluster_create.md +3 -1
  102. package/skills/ae-analysis/references/user_cluster_get.md +4 -0
  103. package/skills/ae-analysis/references/user_cluster_refresh.md +4 -2
  104. package/skills/ae-analysis/references/user_cluster_update.md +3 -1
  105. package/skills/ae-analysis/references/user_tag_create.md +3 -1
  106. package/skills/ae-analysis/references/user_tag_get.md +4 -0
  107. package/skills/ae-analysis/references/user_tag_refresh.md +4 -2
  108. package/skills/ae-analysis/references/user_tag_update.md +3 -1
  109. package/skills/ae-analysis/references/virtual_event_create.md +22 -3
  110. package/skills/ae-analysis/references/virtual_property_create.md +23 -2
  111. package/skills/ae-engage/SKILL.md +202 -7
  112. package/skills/ae-engage/references/activity-activity-type.md +42 -0
  113. package/skills/ae-engage/references/activity-activity.md +70 -0
  114. package/skills/ae-engage/references/activity-approval.md +53 -0
  115. package/skills/ae-engage/references/activity-task.md +87 -0
  116. package/skills/ae-engage/references/activity-topic.md +98 -0
  117. package/skills/ae-engage/references/approval-approver-delete.md +26 -0
  118. package/skills/ae-engage/references/channel-test-send.md +37 -0
  119. package/skills/ae-engage/references/channel-touch-limits-batch-update.md +28 -0
  120. package/skills/ae-engage/references/channel-touch-limits-save.md +37 -0
  121. package/skills/ae-engage/references/channel-touch-limits-toggle.md +28 -0
  122. package/skills/ae-engage/references/channel-update-config.md +36 -0
  123. package/skills/ae-engage/references/client-param.md +58 -0
  124. package/skills/ae-engage/references/common-metric.md +75 -0
  125. package/skills/ae-engage/references/config-table.md +92 -0
  126. package/skills/ae-engage/references/engage-scene-config-item.md +69 -0
  127. package/skills/ae-engage/references/operation-log-query.md +1 -1
  128. package/skills/ae-engage/references/preset-event.md +42 -0
  129. package/skills/ae-engage/references/push-language.md +39 -0
  130. package/skills/ae-engage/references/scene-config-channel.md +58 -0
  131. package/skills/ae-engage/references/scene-config-group.md +62 -0
  132. package/skills/ae-engage/references/scene-config-item.md +68 -0
  133. package/skills/ae-engage/references/scene-config-metric.md +79 -0
  134. package/skills/ae-engage/references/scene-config-param.md +72 -0
  135. package/skills/ae-engage/references/scene-preset-metric.md +45 -0
  136. package/skills/ae-engage/references/scene-strategy.md +47 -0
  137. package/skills/ae-engage/references/scene-template.md +71 -0
  138. package/skills/ae-engage/references/{ops-delete.md → task-delete.md} +3 -3
  139. package/skills/ae-engage/references/whitelist.md +72 -0
  140. package/skills/ae-engage/references/workbench-workbench.md +48 -0
  141. package/skills/ae-generate-tracking-plan/SKILL.md +8 -5
  142. package/skills/ae-generate-tracking-plan/references/te-api.md +1 -1
  143. package/skills/ae-kb/SKILL.md +34 -8
  144. package/skills/ae-metadata/SKILL.md +1 -1
  145. package/skills/ae-metadata/references/metadata_event_get.md +4 -4
  146. package/skills/ae-metadata/references/metadata_property_dimension_table_bind_existing.md +1 -1
  147. package/skills/ae-metadata/references/metadata_property_get.md +4 -4
  148. package/dist/te-common-5NJLF3XG.js +0 -130
  149. package/dist/te-common-7VTJZPII.js +0 -130
  150. package/dist/te-engage-BUWVSSSK.js +0 -1912
  151. package/dist/te-engage-EPE3QKDE.js +0 -1912
  152. package/skills/ae-analysis/references/create_metric.md +0 -58
  153. package/skills/ae-analysis/references/create_virtual_event.md +0 -60
  154. package/skills/ae-analysis/references/create_virtual_property.md +0 -69
  155. package/skills/ae-analysis/references/delete_metric.md +0 -32
  156. package/skills/ae-analysis/references/drilldown_users_export.md +0 -17
  157. package/skills/ae-analysis/references/drilldown_users_run.md +0 -61
  158. package/skills/ae-analysis/references/get_metric.md +0 -38
  159. package/skills/ae-analysis/references/get_resource_url.md +0 -33
  160. package/skills/ae-analysis/references/list_events.md +0 -46
  161. package/skills/ae-analysis/references/list_metrics.md +0 -52
  162. package/skills/ae-analysis/references/list_properties.md +0 -47
  163. package/skills/ae-analysis/references/update_metric.md +0 -58
  164. package/dist/{chunk-HL2AJQ4Q.js → chunk-PTE56QPL.js} +3 -3
@@ -76,6 +76,53 @@ ae-cli engage +config_channel_list --project_id 1
76
76
 
77
77
  # Query project channel touch-limit rules
78
78
  ae-cli engage-setting channel-touch-limits list --project-id <project_id>
79
+
80
+ # Update a channel's config / reach-funnel settings
81
+ ae-cli engage-setting channel update-config --project-id <project_id> --channel-id <channel_id> --enable-touch-event 1
82
+
83
+ # Send a test message to a channel
84
+ ae-cli engage-setting channel test-send --project-id <project_id> --channel-id <channel_id> --push-id <send_id> --content-list '[{"key":"title","value":"hello"}]'
85
+
86
+ # Batch update / toggle / save channel touch-limit (fatigue-control) rules
87
+ ae-cli engage-setting channel-touch-limits batch-update --project-id <project_id> --items '[{"rule_id":"r1","enable":true,"rule_def":"[]"}]'
88
+ ae-cli engage-setting channel-touch-limits toggle --project-id <project_id> --rule-id <rule_id> --enable false
89
+ ae-cli engage-setting channel-touch-limits save --project-id <project_id> --channel-biz-type <biz_type> --rule-def '[]' --enable true
90
+
91
+ # Remove an approver from a project
92
+ ae-cli engage-setting approval-approver delete --project-id <project_id> --approver <open_id> --yes
93
+
94
+ # Whitelist add / update / delete / verify
95
+ ae-cli engage-setting whitelist add --project-id <project_id> --prop-code <prop_code> --column-name <column_name> --column-type string --whitelist-list '[{"entity_id":"u1","source_value":"v1"}]'
96
+ ae-cli engage-setting whitelist update --project-id <project_id> --whitelist-id <id> --note-name <name>
97
+ ae-cli engage-setting whitelist delete --project-id <project_id> --whitelist-ids '["wl-1"]' --yes
98
+ ae-cli engage-setting whitelist verify --project-id <project_id> --prop-code <prop_code> --column-type string --whitelist-prop-list '["v1"]'
99
+
100
+ # Push-language (本地化) get / set
101
+ ae-cli engage-setting push-language get --project-id <project_id>
102
+ ae-cli engage-setting push-language set --project-id <project_id> --push-language-column <prop_code>
103
+
104
+ # Client param (客户端参数) update / delete / list
105
+ ae-cli engage-setting client-param update --project-id <project_id> --column-name level --column-type string --select-type single --column-desc Level
106
+ ae-cli engage-setting client-param delete --project-id <project_id> --column-name level --yes
107
+ ae-cli engage-setting client-param list --project-id <project_id>
108
+
109
+ # Config table (配置表) upload / save / list / query-data / update-data / delete
110
+ ae-cli engage-setting config-table upload --project-id <project_id> --request-id <rid> --file-name data.csv --file-content "$(base64 -i data.csv)"
111
+ ae-cli engage-setting config-table save --project-id <project_id> --request-id <rid> --info-name <table_name>
112
+ ae-cli engage-setting config-table list --project-id <project_id>
113
+ ae-cli engage-setting config-table query-data --project-id <project_id> --info-id <info_id>
114
+ ae-cli engage-setting config-table update-data --project-id <project_id> --request-id <rid> --info-name <table_name> --info-id <info_id>
115
+ ae-cli engage-setting config-table delete --project-id <project_id> --info-id <info_id> --yes
116
+
117
+ # Preset event (预置事件) list / update
118
+ ae-cli engage-setting preset-event list --project-id <project_id>
119
+ ae-cli engage-setting preset-event update --project-id <project_id> --add-event-desc <qp>
120
+
121
+ # Common metric (常用指标) list / get / update / delete
122
+ ae-cli engage-setting common-metric list --project-id <project_id>
123
+ ae-cli engage-setting common-metric get --project-id <project_id> --metric-name <name>
124
+ ae-cli engage-setting common-metric update --project-id <project_id> --metric-type <type> --metric-name <name> --metric-qp <qp> --metric-window-num 1 --metric-window-time-unit DAY --display-name <display>
125
+ ae-cli engage-setting common-metric delete --project-id <project_id> --metric-name <name> --yes
79
126
  ```
80
127
 
81
128
  ### 2. task
@@ -122,7 +169,7 @@ ae-cli engage +flow_list --project_id 1
122
169
  ae-cli engage +flow_detail --project_id 1 --flow_uuid flow_uuid_123
123
170
 
124
171
  # Query flow operation records and application logs
125
- ae-cli engage-flow operation-log query --project-id 1 --flow-uuid flow_uuid_123
172
+ ae-cli engage-flow operation-log query --project-id 1 --flow-id flow_id_123
126
173
 
127
174
  # Query flow versions and task push records
128
175
  ae-cli engage-flow version list --project-id 1 --flow-id flow_id_123
@@ -132,12 +179,123 @@ ae-cli engage-task segment-list query --project-id 1 --task-id task_id_123
132
179
  ae-cli engage-task group list --project-id 1
133
180
  ae-cli engage-task metric list --project-id 1 --task-id task_id_123
134
181
  ae-cli engage-task channel-ref stats --project-id 1 --channel-id channel_123
135
- ae-cli engage-task ops delete --project-id 1 --task-id task_id_123 --yes
182
+ ae-cli engage-task task delete --project-id 1 --task-id task_id_123 --yes
136
183
 
137
184
  # Query the node schema
138
185
  ae-cli engage +flow_node_config_schema --node_type message_push
139
186
  ```
140
187
 
188
+ ### 5. scene (场景管理 / 配置中心)
189
+
190
+ New capability-gateway command group `engage-scene` covers 配置中心 (config center): config items, params, groups, preset/related metrics, config channels, strategies, and templates. Complex DTOs are passed with `--payload` (native camelCase JSON).
191
+
192
+ ```bash
193
+ # Config item (配置项) list / create / update
194
+ ae-cli engage-scene config-item list --project-id <project_id>
195
+ ae-cli engage-scene config-item create --project-id <project_id> --config-id <config_id> --config-name <name> --business-type params
196
+ ae-cli engage-scene config-item update --project-id <project_id> --config-id <config_id> --config-name <name>
197
+
198
+ # Config param (配置项参数) list / batch-add / update / batch-delete
199
+ ae-cli engage-scene config-param list --project-id <project_id> --config-id <config_id>
200
+ ae-cli engage-scene config-param batch-add --project-id <project_id> --config-id <config_id> --params '[{"param_name":"a","param_type":"string"}]'
201
+ ae-cli engage-scene config-param update --project-id <project_id> --config-id <config_id> --param-id <param_id> --param-name a
202
+ ae-cli engage-scene config-param batch-delete --project-id <project_id> --param-ids '[1,2]' --yes
203
+
204
+ # Config group (配置项分组) list / batch-add / update / batch-delete
205
+ ae-cli engage-scene config-group list --project-id <project_id>
206
+ ae-cli engage-scene config-group batch-add --project-id <project_id> --group-names '["g1"]'
207
+ ae-cli engage-scene config-group update --project-id <project_id> --group-id <group_id> --group-name g2
208
+ ae-cli engage-scene config-group batch-delete --project-id <project_id> --group-ids '[1,2]' --yes
209
+
210
+ # Preset metric (预置指标) get / set
211
+ ae-cli engage-scene preset-metric get --project-id <project_id> --config-id <config_id>
212
+ ae-cli engage-scene preset-metric set --project-id <project_id> --config-id <config_id> --impression-event-qp '<qp>'
213
+
214
+ # Config metric (关联指标) list / get / batch-add / update-rule / batch-delete
215
+ ae-cli engage-scene config-metric list --project-id <project_id> --config-id <config_id>
216
+ ae-cli engage-scene config-metric get --project-id <project_id> --metric-id <metric_id>
217
+ ae-cli engage-scene config-metric batch-add --project-id <project_id> --config-id <config_id> --ta-metric-ids '[1,2]'
218
+ ae-cli engage-scene config-metric update-rule --project-id <project_id> --metric-id <metric_id> --event-list '[{"event_name":"e1","filter":"true"}]'
219
+ ae-cli engage-scene config-metric batch-delete --project-id <project_id> --config-id <config_id> --metric-ids '[1,2]' --yes
220
+
221
+ # Config channel (配置通道) create / update / query-log
222
+ ae-cli engage-scene config-channel create --project-id <project_id> --channel-name <name> --channel-type 0 --config '<json>'
223
+ ae-cli engage-scene config-channel update --project-id <project_id> --channel-id <channel_id> --channel-name <name> [--config '<json>']
224
+ ae-cli engage-scene config-channel query-log --project-id <project_id> --channel-id <channel_id>
225
+
226
+ # Strategy (策略) create / update / log / batch-copy
227
+ ae-cli engage-scene strategy create --project-id <project_id> --payload '{"configId":"cfg-1","templateId":"tpl-1","strategyName":"s1"}'
228
+ ae-cli engage-scene strategy update --project-id <project_id> --payload '{"strategyUuid":"uuid-1"}'
229
+ ae-cli engage-scene strategy log --project-id <project_id> --strategy-uuid <uuid>
230
+ ae-cli engage-scene strategy batch-copy --project-id <project_id> --config-id <config_id> --strategy-ids '["s1"]'
231
+
232
+ # Template (模板) list / get / create / update / update-status / delete
233
+ ae-cli engage-scene template list --project-id <project_id> --config-id <config_id>
234
+ ae-cli engage-scene template get --project-id <project_id> --config-id <config_id> --template-id <template_id>
235
+ ae-cli engage-scene template create --project-id <project_id> --payload '{"configId":"cfg-1","templateId":"tpl-1","templateName":"t1"}'
236
+ ae-cli engage-scene template update --project-id <project_id> --payload '{"configId":"cfg-1","templateId":"tpl-1","config":[]}'
237
+ ae-cli engage-scene template update-status --project-id <project_id> --config-id <config_id> --template-id <template_id> --status 1
238
+ ae-cli engage-scene template delete --project-id <project_id> --config-id <config_id> --template-id <template_id> --yes
239
+ ```
240
+
241
+ ### 6. activity (运营活动)
242
+
243
+ New capability-gateway command group `engage-activity` covers 运营活动: activities, approval workflow, topics, activity types, and standalone tasks. Complex DTOs are passed with `--payload` (native camelCase JSON).
244
+
245
+ ```bash
246
+ # Activity (运营活动) create / update / delete / list / get / pause / end / stats / info-list
247
+ ae-cli engage-activity activity create --project-id <project_id> --payload '{"activityName":"a1","activityType":"other_type","tzOffset":8,"periodType":0}'
248
+ ae-cli engage-activity activity update --project-id <project_id> --payload '{"activityId":"act-1","activityName":"a1","activityType":"other_type","tzOffset":8,"periodType":0}'
249
+ ae-cli engage-activity activity delete --project-id <project_id> --activity-id <activity_id> --yes
250
+ ae-cli engage-activity activity list --project-id <project_id> --page 1 --page-size 20
251
+ ae-cli engage-activity activity get --project-id <project_id> --activity-id <activity_id>
252
+ ae-cli engage-activity activity pause --project-id <project_id> --activity-id <activity_id>
253
+ ae-cli engage-activity activity end --project-id <project_id> --activity-id <activity_id>
254
+ ae-cli engage-activity activity stats --project-id <project_id>
255
+ ae-cli engage-activity activity info-list --project-id <project_id> --activity-id <activity_id>
256
+
257
+ # Approval (活动审批) submit / approve / reject / cancel
258
+ ae-cli engage-activity approval submit --project-id <project_id> --activity-id <activity_id>
259
+ ae-cli engage-activity approval approve --project-id <project_id> --activity-id <activity_id>
260
+ ae-cli engage-activity approval reject --project-id <project_id> --activity-id <activity_id> --reason <reason>
261
+ ae-cli engage-activity approval cancel --project-id <project_id> --activity-id <activity_id>
262
+
263
+ # Topic (活动主题) remove-task / delete / get / copy
264
+ # Temporarily disabled: topic create / topic update
265
+ # See references/activity-topic.md for topicClusterKey vs task clusterKey and remaining commands.
266
+ # ae-cli engage-activity topic create --project-id <project_id> --payload '{"activityId":"act-1","topicName":"t1","targetClusterType":2,"topicClusterKey":"<cluster>","channelType":1,"channelId":"c1","triggerType":0,"enableChannelTouchLimits":false,"frequencyLimits":"{}","tasks":[...]}'
267
+ # ae-cli engage-activity topic update --project-id <project_id> --payload '{"topicId":"topic-1", ...}'
268
+ ae-cli engage-activity topic remove-task --project-id <project_id> --task-id <task_id> --yes
269
+ ae-cli engage-activity topic delete --project-id <project_id> --topic-id <topic_id> --yes
270
+ ae-cli engage-activity topic get --project-id <project_id> --topic-id <topic_id>
271
+ ae-cli engage-activity topic copy --project-id <project_id> --topic-id <topic_id> [--new-name <name>]
272
+
273
+ # Activity type (活动类型) list / batch-add / update / batch-delete
274
+ ae-cli engage-activity activity-type list --project-id <project_id>
275
+ ae-cli engage-activity activity-type batch-add --project-id <project_id> --type-names '["t1","t2"]'
276
+ ae-cli engage-activity activity-type update --project-id <project_id> --id <type_id> --type-name t3
277
+ ae-cli engage-activity activity-type batch-delete --project-id <project_id> --ids '["id1","id2"]' --yes
278
+
279
+ # Standalone task (独立任务) get / copy
280
+ # Temporarily disabled: task create / task update
281
+ ae-cli engage-activity task get --project-id <project_id> --task-id <task_id>
282
+ # ae-cli engage-activity task create --project-id <project_id> --payload '{"taskName":"t1","activityId":"act-1", ...}'
283
+ # ae-cli engage-activity task update --project-id <project_id> --payload '{"taskId":"task-1", ...}'
284
+ ae-cli engage-activity task copy --project-id <project_id> --task-id <task_id> [--new-name <name>]
285
+ ```
286
+
287
+ ### 7. workbench (工作台)
288
+
289
+ New capability-gateway command group `engage-workbench` covers 工作台 metric slots (指标卡槽): each user configures up to 4 metric cards per project. Slots are per-user; `update`/`delete` only affect the caller's own slots. The first `list` auto-initialises 4 default slots.
290
+
291
+ ```bash
292
+ # Workbench slot (工作台卡槽) list / add / update / delete
293
+ ae-cli engage-workbench workbench list --project-id <project_id>
294
+ ae-cli engage-workbench workbench add --project-id <project_id> --metric-type <metric_type> --date-type <date_type> --order-id 1
295
+ ae-cli engage-workbench workbench update --project-id <project_id> --slot-id <slot_id> --metric-type <metric_type> --date-type <date_type> --order-id 1
296
+ ae-cli engage-workbench workbench delete --project-id <project_id> --slot-id <slot_id> --yes
297
+ ```
298
+
141
299
  ## `+save_flow` Critical Constraints
142
300
 
143
301
  When the user wants to "create a flow / generate a flow canvas / save a flow", do not treat `+save_flow` as a normal single command. You must follow the workflow below.
@@ -215,6 +373,32 @@ More detailed single-command guidance is available in the business-oriented `ref
215
373
 
216
374
  - `references/channel-list.md`
217
375
  - `references/channel_touch_limits_list.md` (`engage-setting.channel-touch-limits.list`)
376
+ - `references/channel-touch-limits-batch-update.md` (`engage-setting.channel-touch-limits.batch-update`)
377
+ - `references/channel-touch-limits-toggle.md` (`engage-setting.channel-touch-limits.toggle`)
378
+ - `references/channel-touch-limits-save.md` (`engage-setting.channel-touch-limits.save`)
379
+ - `references/channel-update-config.md` (`engage-setting.channel.update-config`)
380
+ - `references/channel-test-send.md` (`engage-setting.channel.test-send`)
381
+ - `references/approval-approver-delete.md` (`engage-setting.approval-approver.delete`)
382
+ - `references/whitelist.md` (`engage-setting.whitelist.{add,update,delete,verify}`)
383
+ - `references/push-language.md` (`engage-setting.push-language.{get,set}`)
384
+ - `references/client-param.md` (`engage-setting.client-param.{update,delete,list}`; create temporarily disabled)
385
+ - `references/config-table.md` (`engage-setting.config-table.{upload,save,list,query-data,update-data,delete}`)
386
+ - `references/preset-event.md` (`engage-setting.preset-event.{list,update}`)
387
+ - `references/common-metric.md` (`engage-setting.common-metric.{list,get,update,delete}`; create temporarily disabled)
388
+ - `references/scene-config-item.md` (`engage-scene.config-item.{list,create,update}`)
389
+ - `references/scene-config-param.md` (`engage-scene.config-param.{list,batch-add,update,batch-delete}`)
390
+ - `references/scene-config-group.md` (`engage-scene.config-group.{list,batch-add,update,batch-delete}`)
391
+ - `references/scene-preset-metric.md` (`engage-scene.preset-metric.{get,set}`)
392
+ - `references/scene-config-metric.md` (`engage-scene.config-metric.{list,get,batch-add,update-rule,batch-delete}`)
393
+ - `references/scene-config-channel.md` (`engage-scene.config-channel.{create,update,query-log}`)
394
+ - `references/scene-strategy.md` (`engage-scene.strategy.{create,update,log,batch-copy}`)
395
+ - `references/scene-template.md` (`engage-scene.template.{list,get,create,update,update-status,delete}`)
396
+ - `references/activity-activity.md` (`engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}`)
397
+ - `references/activity-approval.md` (`engage-activity.approval.{submit,approve,reject,cancel}`)
398
+ - `references/activity-topic.md` (`engage-activity.topic.{remove-task,delete,get,copy}`; create/update temporarily disabled)
399
+ - `references/activity-activity-type.md` (`engage-activity.activity-type.{list,batch-add,update,batch-delete}`)
400
+ - `references/activity-task.md` (`engage-activity.task.{get,copy}`; create/update temporarily disabled)
401
+ - `references/workbench-workbench.md` (`engage-workbench.workbench.{list,add,update,delete}`)
218
402
  - `references/build-task-save-guide.md`
219
403
  - `references/save-task.md`
220
404
  - `references/task-list.md`
@@ -226,7 +410,7 @@ More detailed single-command guidance is available in the business-oriented `ref
226
410
  - `references/push-record-query.md` (`engage-task.push-record.query`)
227
411
  - `references/segment-list-query.md` (`engage-task.segment-list.query`)
228
412
  - `references/group-list.md` (`engage-task.group.list`)
229
- - `references/ops-delete.md` (`engage-task.ops.delete`)
413
+ - `references/task-delete.md` (`engage-task.task.delete`)
230
414
 
231
415
  This split documentation structure is easier to extend later, because commands with more complex object inputs can stay centralized in the `references/` root directory.
232
416
 
@@ -234,18 +418,29 @@ This split documentation structure is easier to extend later, because commands w
234
418
 
235
419
  ### setting
236
420
 
237
- `channel-touch-limits list` (via `engage-setting`), `+channel_list`, `+channel_detail`, `+update_channel_status`, `+delete_channel`, `+add_channel`, `+whitelist_list`, `+add_approver`, `+approver_list`, `+cancel_query_by_request_id`, `+config_channel_detail`, `+config_channel_list`, `+delete_config_channel`, `+update_config_channel_status`
421
+ `channel-touch-limits list` / `channel-touch-limits batch-update` / `channel-touch-limits toggle` / `channel-touch-limits save` / `channel update-config` / `channel test-send` / `approval-approver delete` / `whitelist add` / `whitelist update` / `whitelist delete` / `whitelist verify` / `push-language get` / `push-language set` / `client-param update` / `client-param delete` / `client-param list` / `config-table upload` / `config-table save` / `config-table list` / `config-table query-data` / `config-table update-data` / `config-table delete` / `preset-event list` / `preset-event update` / `common-metric list` / `common-metric get` / `common-metric update` / `common-metric delete` (via `engage-setting`), `+channel_list`, `+channel_detail`, `+update_channel_status`, `+delete_channel`, `+add_channel`, `+whitelist_list`, `+add_approver`, `+approver_list`, `+cancel_query_by_request_id`, `+config_channel_detail`, `+config_channel_list`, `+delete_config_channel`, `+update_config_channel_status`
238
422
 
239
423
  ### task
240
424
 
241
- `operation-log query` / `push-record query` / `segment-list query|get|rename` / `ops delete|modify-group` / `metric list|update` / `channel-ref stats` / `group list|create|update` (via `engage-task`), `+task_data_overview`, `+task_data_detail`, `+task_metric_detail`, `+task_experiment_report`, `+task_detail`, `+task_list`, `+task_stats`, `+build_task_save_guide`, `+save_task`, `+manage_task`
242
-
243
- > Temporarily disabled engage-task commands (do not use): `group delete`, `segment-list set-visibility`, `ops submit-approval`, `race release`.
425
+ `operation-log query` / `push-record query` / `segment-list *` / `ops *` / `metric *` / `race release` / `channel-ref stats` / `group *` (via `engage-task`), `+task_data_overview`, `+task_data_detail`, `+task_metric_detail`, `+task_experiment_report`, `+task_detail`, `+task_list`, `+task_stats`, `+build_task_save_guide`, `+save_task`, `+manage_task`
244
426
 
245
427
  ### config
246
428
 
247
429
  `+config_item_trigger_report`, `+config_item_analysis_report`, `+config_item_strategy_comparison`, `+config_item_list`, `+config_item_detail`, `+delete_config_item`, `+copy_config_template`, `+strategy_list`, `+strategy_detail`, `+manage_strategy`
248
430
 
431
+ ### scene
432
+
433
+ `config-item list` / `config-item create` / `config-item update` / `config-param list` / `config-param batch-add` / `config-param update` / `config-param batch-delete` / `config-group list` / `config-group batch-add` / `config-group update` / `config-group batch-delete` / `preset-metric get` / `preset-metric set` / `config-metric list` / `config-metric get` / `config-metric batch-add` / `config-metric update-rule` / `config-metric batch-delete` / `config-channel create` / `config-channel update` / `config-channel query-log` / `strategy create` / `strategy update` / `strategy log` / `strategy batch-copy` / `template list` / `template get` / `template create` / `template update` / `template update-status` / `template delete` (via `engage-scene`), capability ids `engage-scene.config-item.{list,create,update}`, `engage-scene.config-param.{list,batch-add,update,batch-delete}`, `engage-scene.config-group.{list,batch-add,update,batch-delete}`, `engage-scene.preset-metric.{get,set}`, `engage-scene.config-metric.{list,get,batch-add,update-rule,batch-delete}`, `engage-scene.config-channel.{create,update,query-log}`, `engage-scene.strategy.{create,update,log,batch-copy}`, `engage-scene.template.{list,get,create,update,update-status,delete}`
434
+
435
+ ### activity
436
+
437
+ `activity create` / `activity update` / `activity delete` / `activity list` / `activity get` / `activity pause` / `activity end` / `activity stats` / `activity info-list` / `approval submit` / `approval approve` / `approval reject` / `approval cancel` / `topic remove-task` / `topic delete` / `topic get` / `topic copy` / `activity-type list` / `activity-type batch-add` / `activity-type update` / `activity-type batch-delete` / `task get` / `task copy` (via `engage-activity`), capability ids `engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}`, `engage-activity.approval.{submit,approve,reject,cancel}`, `engage-activity.topic.{remove-task,delete,get,copy}`, `engage-activity.activity-type.{list,batch-add,update,batch-delete}`, `engage-activity.task.{get,copy}`
438
+ <!-- Temporarily disabled: topic create / topic update / task create / task update -->
439
+
440
+ ### workbench
441
+
442
+ `workbench list` / `workbench add` / `workbench update` / `workbench delete` (via `engage-workbench`), capability ids `engage-workbench.workbench.{list,add,update,delete}`
443
+
249
444
  ### flow
250
445
 
251
446
  `operation-log query` / `version list` (via `engage-flow`), `+save_flow`, `+flow_node_config_schema`, `+flow_detail`, `+flow_list`, `+flow_node_overview_report`, `+manage_flow`, `+flow_ab_split_node_report`, `+flow_process_report`, `+validate_flow_node_config`, `+flow_node_detail_report`, `+delete_flow`, `+modify_flow_base_info`
@@ -0,0 +1,42 @@
1
+ # engage-activity activity-type
2
+
3
+ > Capability ids: `engage-activity.activity-type.{list,batch-add,update,batch-delete}` · Domain: `engage`.
4
+
5
+ 运营活动 - 活动类型(系统 + 自定义)。批量增删在 capability service 内循环调用现有单条后端方法(无批量后端 API)。
6
+
7
+ ## Commands
8
+
9
+ ```bash
10
+ # List activity types
11
+ ae-cli engage-activity activity-type list --project-id <project_id>
12
+
13
+ # Batch-add custom activity types
14
+ ae-cli engage-activity activity-type batch-add --project-id <project_id> --type-names '["t1","t2"]'
15
+
16
+ # Update a custom activity type name
17
+ ae-cli engage-activity activity-type update --project-id <project_id> --id <type_id> --type-name t3
18
+
19
+ # Batch-delete custom activity types (high-risk)
20
+ ae-cli engage-activity activity-type batch-delete --project-id <project_id> --ids '["id1","id2"]' --yes
21
+ ```
22
+
23
+ ## Parameters
24
+
25
+ | Command | Required flags | Notes |
26
+ |---|---|---|
27
+ | list | `--project-id` | read. |
28
+ | batch-add | `--project-id`, `--type-names` | `--type-names` = JSON array of names. |
29
+ | update | `--project-id`, `--id`, `--type-name` | write. |
30
+ | batch-delete | `--project-id`, `--ids` | high-risk; `--ids` = JSON array; requires `--yes`; no dry-run. |
31
+
32
+ ## Output
33
+
34
+ - `list`: `data.total`, `data.items`.
35
+ - `batch-add`: `data.total`, `data.ids`.
36
+ - `update`: `data.success`.
37
+ - `batch-delete`: `data.total`, `data.deleted`.
38
+
39
+ ## Decision Rules
40
+
41
+ - `batch-delete` is `high-risk-write` — requires `--yes`, no dry-run; loops single delete (non-atomic).
42
+ - Only custom types are editable; system types are read-only.
@@ -0,0 +1,70 @@
1
+ # engage-activity activity
2
+
3
+ > Capability ids: `engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}` · Domain: `engage`.
4
+
5
+ 运营活动 - 活动主体管理。`create`/`update` 使用 `--payload` 直传后端 DTO(原生 camelCase 结构,`project_id` 单独作为参数)。
6
+
7
+ ## Commands
8
+
9
+ ```bash
10
+ # Create an activity (draft)
11
+ ae-cli engage-activity activity create --project-id <project_id> \
12
+ --payload '{"activityName":"a1","activityType":"other_type","tzOffset":99,"periodType":0}'
13
+
14
+ # Update an activity
15
+ ae-cli engage-activity activity update --project-id <project_id> \
16
+ --payload '{"activityId":"act-1","activityName":"a1","activityType":"other_type","tzOffset":99,"periodType":0}'
17
+
18
+ # Delete an activity (draft/denied/ended only, high-risk)
19
+ ae-cli engage-activity activity delete --project-id <project_id> --activity-id <activity_id> --yes
20
+
21
+ # List activities
22
+ ae-cli engage-activity activity list --project-id <project_id> [--fuzzy-field <text>] [--page 1] [--page-size 20]
23
+
24
+ # Get an activity detail
25
+ ae-cli engage-activity activity get --project-id <project_id> --activity-id <activity_id>
26
+
27
+ # Pause / End an activity (write, no dry-run)
28
+ ae-cli engage-activity activity pause --project-id <project_id> --activity-id <activity_id>
29
+ ae-cli engage-activity activity end --project-id <project_id> --activity-id <activity_id>
30
+
31
+ # Activity status distribution statistics
32
+ ae-cli engage-activity activity stats --project-id <project_id> [--fuzzy-field <text>]
33
+
34
+ # Query an activity's topics + standalone tasks
35
+ ae-cli engage-activity activity info-list --project-id <project_id> --activity-id <activity_id>
36
+ ```
37
+
38
+ ## Parameters
39
+
40
+ | Command | Required flags | Notes |
41
+ |---|---|---|
42
+ | create | `--project-id`, `--payload` | payload = `ActivityAddDTO`. |
43
+ | update | `--project-id`, `--payload` | payload = `ActivityDTO` (`activityId` + base fields). |
44
+ | delete | `--project-id`, `--activity-id` | high-risk; requires `--yes`; no dry-run. |
45
+ | list | `--project-id` | `--fuzzy-field` / `--page` / `--page-size` optional. |
46
+ | get | `--project-id`, `--activity-id` | read. |
47
+ | pause | `--project-id`, `--activity-id` | write; no dry-run. |
48
+ | end | `--project-id`, `--activity-id` | write; no dry-run. |
49
+ | stats | `--project-id` | read; `--fuzzy-field` optional. |
50
+ | info-list | `--project-id`, `--activity-id` | read. |
51
+
52
+ ## Output
53
+
54
+ - `create` / `update`: `data.activity_id`.
55
+ - `list`: `data.status_count`, `data.activity_list`, `data.pager_result`.
56
+ - `get`: `data.activity`.
57
+ - `stats`: `data.status_count`.
58
+ - `info-list`: `data.info` with `taskList` (standalone tasks) and `topicList` (topics under the activity).
59
+ - `delete` / `pause` / `end`: `data.success`.
60
+
61
+ ## Timezone (`tzOffset`)
62
+
63
+ When the project has **timezone disabled**, use `tzOffset: 99` (server default sentinel) on create/update. Using `8` or other offsets returns `PROJECT_TIME_ZONE_NONE` when creating topics/tasks under the activity.
64
+
65
+ When timezone is enabled, `tzOffset` must match one of the project's configured offsets. Keep activity `tzOffset` aligned with tasks/topics created under it.
66
+
67
+ ## Decision Rules
68
+
69
+ - `delete` is `high-risk-write` and requires `--yes`; `pause`/`end` are state-changing `write` (no `--yes`) and do not support dry-run.
70
+ - Discover real activity IDs via `list` first; never invent IDs.
@@ -0,0 +1,53 @@
1
+ # engage-activity approval
2
+
3
+ > Capability ids: `engage-activity.approval.{submit,approve,reject,cancel}` · Domain: `engage`.
4
+
5
+ 运营活动 - 活动审批流。所有操作均针对活动(`ApprovalActivityIdDealDTO`:`projectId` + `activityId` + `reason`),均为状态变更 `write`,不支持 dry-run。`reject` 的 `reason` 必填;其余操作 `reason` 可选。
6
+
7
+ ## Commands
8
+
9
+ ```bash
10
+ # Submit an activity for approval
11
+ ae-cli engage-activity approval submit --project-id <project_id> --activity-id <activity_id>
12
+
13
+ # Approve an activity
14
+ ae-cli engage-activity approval approve --project-id <project_id> --activity-id <activity_id>
15
+
16
+ # Reject an activity (reason required)
17
+ ae-cli engage-activity approval reject --project-id <project_id> --activity-id <activity_id> --reason <reason>
18
+
19
+ # Cancel/withdraw a submitted approval
20
+ ae-cli engage-activity approval cancel --project-id <project_id> --activity-id <activity_id>
21
+ ```
22
+
23
+ ## Parameters
24
+
25
+ | Command | Required flags | Notes |
26
+ |---|---|---|
27
+ | submit | `--project-id`, `--activity-id` | `--reason` optional. |
28
+ | approve | `--project-id`, `--activity-id` | `--reason` optional. |
29
+ | reject | `--project-id`, `--activity-id`, `--reason` | `--reason` required, max 72 characters. |
30
+ | cancel | `--project-id`, `--activity-id` | `--reason` optional. |
31
+
32
+ ## Output
33
+
34
+ - All actions: `data.success`.
35
+
36
+ ## Decision Rules
37
+
38
+ - All approval actions are `write` (real state changes) and do not support dry-run; they do not require `--yes` (only `high-risk-write` does).
39
+ - Approve/reject require the caller to be a valid approver of the activity (enforced server-side).
40
+
41
+ ## Common Errors
42
+
43
+ | code | when |
44
+ |---|---|
45
+ | `ACTIVITY_NOT_FOUND` | activity id missing in project |
46
+ | `ACTIVITY_NO_APPROVAL_TASK` | submit with no standalone/topic tasks |
47
+ | `ACTIVITY_STATUS_INVALID` | activity not in draft/pending |
48
+ | `APPROVAL_NOT_PENDING` | no under-approval record |
49
+ | `NOT_APPROVER` | caller is not a project approver |
50
+ | `REASON_REQUIRED` | reject without `--reason` |
51
+ | `REASON_TOO_LONG` | reject reason longer than 72 characters |
52
+ | `CAPABILITY_PERMISSION_DENIED` | cancel caller is neither owner nor ops-manage-other-assets |
53
+ | `TOO_FREQUENT` | concurrent approve/submit lock conflict |
@@ -0,0 +1,87 @@
1
+ # engage-activity task
2
+
3
+ > Capability ids: `engage-activity.task.{get,copy}` · Domain: `engage`.
4
+ >
5
+ > Temporarily disabled: `task create` / `task update` (command registration + skill guidance).
6
+
7
+ 运营活动 - 独立任务(活动下不属于主题的任务)。`copy` 读取源任务详情、改名后重新创建(无后端复制 API)。
8
+
9
+ ## Commands
10
+
11
+ ```bash
12
+ # Get a standalone task detail
13
+ ae-cli engage-activity task get --project-id <project_id> --task-id <task_id>
14
+
15
+ # Copy a standalone task (loads detail, renames, re-creates)
16
+ ae-cli engage-activity task copy --project-id <project_id> --task-id <task_id> [--new-name <name>]
17
+ ```
18
+
19
+ <!-- Temporarily disabled: task create / task update
20
+ ```bash
21
+ # Create a standalone task under an activity (webhook + existing cluster)
22
+ ae-cli engage-activity task create --project-id <project_id> \
23
+ --payload '{ ... }'
24
+
25
+ # Update a standalone task
26
+ ae-cli engage-activity task update --project-id <project_id> \
27
+ --payload '{"taskId":"task-1","taskName":"t1", ...}'
28
+ ```
29
+ -->
30
+
31
+ ## Parameters
32
+
33
+ | Command | Required flags | Notes |
34
+ |---|---|---|
35
+ | get | `--project-id`, `--task-id` | read. |
36
+ | copy | `--project-id`, `--task-id` | `--new-name` optional (default source name + `_copy`). |
37
+
38
+ <!-- Temporarily disabled
39
+ | create | `--project-id`, `--payload` | payload = `OperationTaskOpDTO`; set `activityId`, leave `topicId` empty. |
40
+ | update | `--project-id`, `--payload` | payload = `OperationTaskOpDTO` including `taskId`. |
41
+ -->
42
+
43
+ ## Output
44
+
45
+ - `get`: `data.task`.
46
+ - `copy`: `data.task_id`, optional `data.trigger_time_stale` (true when source schedule-single time is already past).
47
+
48
+ ## Payload notes (for copy / detail shape)
49
+
50
+ ### Channel content
51
+
52
+ - `channelType` `1` = webhook, `2` = app_push, `3` = client_push, `4` = wechat, `5` = dou_yin`.
53
+ - `groupContentList[].contentList[].content` must be a JSON **array string**.
54
+ - **TEXT (rich text) params** must include both `value` and `config` (Slate.js JSON **string**). If `config` is missing, Hermes copy auto-fills
55
+ `config = [{"type":"paragraph","children":[{"text":"<value>"}]}]` as a JSON string.
56
+
57
+ ### Audience (`targetClusterType`)
58
+
59
+ | Value | Required | Notes |
60
+ |---|---|---|
61
+ | `2` (existed) | `clusterKey` | From `analysis user-cluster list/get`. |
62
+ | `1` (custom) | `qp` | JSON object string. |
63
+ | `3` (all) | — | Do not pass `clusterKey` or `qp`. |
64
+
65
+ ## Decision Rules
66
+
67
+ - Discover a real `task_id` via `get`/activity `info-list` first; never invent IDs.
68
+ - `copy` duplicates the editable task config (not runtime/trigger state).
69
+ - `copy` saves via **draft** add (`draft=true`), so a past schedule-single `triggerTime` is allowed; output may include `trigger_time_stale=true`. Update the time before `approval submit`.
70
+ - Standalone tasks must **not** include `topicId`; topic tasks use `engage-activity topic copy` (topic create/update are temporarily disabled).
71
+
72
+ ## Copy errors
73
+
74
+ `copy` = get detail → rename → draft `add` (no dedicated copy API). Prefer actionable codes over `INVALID_CAPABILITY_REQUEST`:
75
+
76
+ | code | when |
77
+ |---|---|
78
+ | `TASK_NOT_FOUND` | source `task_id` missing |
79
+ | `TASK_PROJECT_MISMATCH` | task exists but not in `--project-id` |
80
+ | `TOPIC_TASK_FORBIDDEN` | source has `topicId` (use `topic copy`) |
81
+ | `ACTIVITY_ID_REQUIRED` | source has no `activityId` (not a standalone activity task) |
82
+ | `TRIGGER_TIME_REQUIRED` | schedule-single missing `triggerTime` |
83
+ | `CHANNEL_NOT_FOUND` | source channel missing / type mismatch |
84
+ | `TASK_COUNT_LIMIT` | project task count limit exceeded |
85
+ | `RCC_SERVER_REQUIRED` | client push (`channelType=3`) but RCC server is not installed |
86
+
87
+ Past `triggerTime` no longer fails copy; check `data.trigger_time_stale` and fix before approval. Unmapped domain `PARAMETER_ERROR` may still return `INVALID_CAPABILITY_REQUEST` with a readable fallback message.
@@ -0,0 +1,98 @@
1
+ # engage-activity topic
2
+
3
+ > Capability ids: `engage-activity.topic.{remove-task,delete,get,copy}` · Domain: `engage`.
4
+ >
5
+ > Temporarily disabled: `topic create` / `topic update` (command registration + skill guidance).
6
+
7
+ Activity topics and tasks under a topic. `copy` loads the source topic, renames it, and re-creates (no dedicated backend copy API).
8
+
9
+ ## Commands
10
+
11
+ ```bash
12
+ # Remove a task from its topic (high-risk)
13
+ ae-cli engage-activity topic remove-task --project-id <project_id> --task-id <task_id> --yes
14
+
15
+ # Delete a topic (high-risk)
16
+ ae-cli engage-activity topic delete --project-id <project_id> --topic-id <topic_id> --yes
17
+
18
+ # Get a topic detail
19
+ ae-cli engage-activity topic get --project-id <project_id> --topic-id <topic_id>
20
+
21
+ # Copy a topic (loads detail, renames, re-creates)
22
+ ae-cli engage-activity topic copy --project-id <project_id> --topic-id <topic_id> [--new-name <name>]
23
+ ```
24
+
25
+ <!-- Temporarily disabled: topic create / topic update
26
+ ```bash
27
+ # Create a topic and its tasks under an activity
28
+ ae-cli engage-activity topic create --project-id <project_id> --payload '{ ... }'
29
+
30
+ # Update a topic and its task relations
31
+ ae-cli engage-activity topic update --project-id <project_id> --payload '{"topicId":"topic-1", ...}'
32
+ ```
33
+ -->
34
+
35
+ ## Parameters
36
+
37
+ | Command | Required flags | Notes |
38
+ |---|---|---|
39
+ | remove-task | `--project-id`, `--task-id` | high-risk; requires `--yes`; no dry-run. Only tasks with a non-empty `topicId`. |
40
+ | delete | `--project-id`, `--topic-id` | high-risk; requires `--yes`; no dry-run. |
41
+ | get | `--project-id`, `--topic-id` | read. |
42
+ | copy | `--project-id`, `--topic-id` | `--new-name` optional (default source name + `_copy`). |
43
+
44
+ <!-- Temporarily disabled
45
+ | create | `--project-id`, `--payload` | payload = `TopicAddDTO` (camelCase). |
46
+ | update | `--project-id`, `--payload` | payload = `TopicModifyReq` (`topicId` + fields + task lists). |
47
+ -->
48
+
49
+ ## Notes for get / copy
50
+
51
+ TEXT (rich text) params inside `groupContentList[].contentList[].content` need both `value` and Slate `config` (JSON string). If `config` is omitted, Hermes copy auto-fills
52
+ `[{"type":"paragraph","children":[{"text":"<value>"}]}]`. See `activity-task.md` Channel content.
53
+
54
+ Topic-level audience uses `topicClusterKey` / `topicQp`; do **not** pass task-level `clusterKey` at topic root.
55
+
56
+ ## Output
57
+
58
+ - `get`: `data.topic` (includes `topicClusterKey` for topic audience).
59
+ - `remove-task` / `delete` / `copy`: `data.success`.
60
+ - `copy` may include `data.trigger_time_stale=true` when source schedule-single time is already past.
61
+
62
+ ## Decision Rules
63
+
64
+ - `remove-task` and `delete` are `high-risk-write` — require `--yes`, no dry-run.
65
+ - `remove-task` only deletes **topic tasks** (`topicId` present). Standalone tasks → use `engage-task task delete`.
66
+ - `copy` duplicates the editable topic config and its tasks (not runtime/approval state).
67
+ - `copy` saves via **draft** add (`isDraft=true`), so a past schedule-single `triggerTime` is allowed; output may include `trigger_time_stale=true`. Update the time before `approval submit`.
68
+ - Prefer `topic get` as a template when inspecting channel/content fields.
69
+
70
+ ## Copy errors
71
+
72
+ `copy` = get topic detail → rename → draft `addTopicAndTask` (no dedicated copy API). Prefer actionable codes over `INVALID_CAPABILITY_REQUEST` / mismatched i18n text like "Campaign does not exist.":
73
+
74
+ | code | when |
75
+ |---|---|
76
+ | `TOPIC_NOT_FOUND` | source `topic_id` missing |
77
+ | `TOPIC_PROJECT_MISMATCH` | topic exists but not in `--project-id` |
78
+ | `ACTIVITY_ID_REQUIRED` | source topic detail has no `activityId` |
79
+ | `ACTIVITY_NOT_FOUND` | parent activity missing / deleted / wrong project |
80
+ | `TOPIC_TASKS_REQUIRED` | source topic has no tasks |
81
+ | `ACTIVITY_STATUS_INVALID` | parent activity is approving/working/complete |
82
+ | `TOPIC_COUNT_LIMIT` | activity topic count limit exceeded |
83
+ | `CHANNEL_NOT_FOUND` | source channel missing / type mismatch |
84
+ | `TASK_COUNT_LIMIT` | project task count limit exceeded |
85
+ | `RCC_SERVER_REQUIRED` | client push (`channelType=3`) but RCC server is not installed |
86
+ | `TRIGGER_TIME_REQUIRED` | schedule-single missing `triggerTime` |
87
+
88
+ Past `triggerTime` no longer fails copy; check `data.trigger_time_stale` and fix before approval.
89
+
90
+ ## remove-task errors
91
+
92
+ | code | when |
93
+ |---|---|
94
+ | `TASK_NOT_FOUND` | `--task-id` missing |
95
+ | `TASK_PROJECT_MISMATCH` | task exists but not in `--project-id` |
96
+ | `NOT_TOPIC_TASK` | task has no `topicId` (standalone); use `engage-task task delete` |
97
+ | `TASK_WORKING` | topic task `mappingStatus=working`; pause/end first |
98
+ | `TASK_APPROVING` | topic task pending approval; withdraw first |
@@ -0,0 +1,26 @@
1
+ # engage-setting approval-approver delete
2
+
3
+ > Capability id: `engage-setting.approval-approver.delete` · Domain: `engage`.
4
+
5
+ ## Command
6
+
7
+ ```bash
8
+ ae-cli engage-setting approval-approver delete --project-id <project_id> --approver <open_id> --yes
9
+ ```
10
+
11
+ ## Parameters
12
+
13
+ | Parameter | Required | Description |
14
+ |---|---|---|
15
+ | `--project-id` / `-p` | Yes | Numeric project ID. |
16
+ | `--approver` | Yes | OpenID of the approver to remove. |
17
+
18
+ ## Output
19
+
20
+ - `data.success`: whether the approver was removed.
21
+
22
+ ## Decision Rules
23
+
24
+ - Use this command when the user asks to remove/delete an approver from a project.
25
+ - Discover the real approver OpenID with `ae-cli engage +approver_list --project_id <project_id>` first; never invent an OpenID.
26
+ - Risk is `high-risk-write`; the CLI confirmation gate requires `--yes` (or interactive confirmation) before executing.