@thinkingai/ae-cli 6.0.37 → 6.0.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -3
- package/README.zh.md +25 -3
- package/dist/{auth-56Z45UVR.js → auth-GDV3H5I4.js} +18 -8
- package/dist/{auth-ENM3FE6L.js → auth-NN55553T.js} +3 -3
- package/dist/{capability-2H6PAOA3.js → capability-TPORIKRQ.js} +19 -15
- package/dist/{capability-YPOQX6PL.js → capability-VQNC5CF7.js} +19 -15
- package/dist/chunk-4NN5IWVN.js +26 -0
- package/dist/{chunk-DB4Q3ANU.js → chunk-6A2FUCIS.js} +3 -3
- package/dist/{chunk-PVBYJWC2.js → chunk-7KQWSBSL.js} +4 -4
- package/dist/{chunk-24BAVOX3.js → chunk-AXDXJTPC.js} +3 -1
- package/dist/{chunk-CPVTECJ3.js → chunk-DT6Y3TD7.js} +5 -5
- package/dist/{chunk-EGEIXA2Z.js → chunk-DWO43OIB.js} +0 -248
- package/dist/{chunk-V6FR6WTW.js → chunk-GJJA4CQZ.js} +34 -2
- package/dist/{chunk-RGXCNC4N.js → chunk-GS2P7LFD.js} +50 -17
- package/dist/{chunk-LYVNONC4.js → chunk-JHENBQ5B.js} +35 -0
- package/dist/{chunk-3P3562ZX.js → chunk-MVDZ7DBQ.js} +5 -5
- package/dist/{chunk-LCXU3AAT.js → chunk-NBPKWKRA.js} +2 -2
- package/dist/{chunk-HQ2A7ITL.js → chunk-RBNKI5ZW.js} +50 -17
- package/dist/{chunk-LHVM35J4.js → chunk-TS6BUGUY.js} +4 -4
- package/dist/chunk-TUKQZTMI.js +250 -0
- package/dist/{chunk-J7MZHDHQ.js → chunk-VKD5WQKN.js} +5 -5
- package/dist/{chunk-3KI3RRXX.js → chunk-VTXHDCBW.js} +3 -3
- package/dist/{chunk-KTYR3U6D.js → chunk-YTG6Q75E.js} +10 -6
- package/dist/{chunk-IR4ZLVPW.js → chunk-YV52FB5G.js} +25 -3
- package/dist/{chunk-E7UXXHO3.js → chunk-Z3OXWCIA.js} +3 -3
- package/dist/{cli-token-4SBMXAUK.js → cli-token-GL5MS5FK.js} +4 -4
- package/dist/{client-PP5FETMW.js → client-DAIPF7XN.js} +4 -4
- package/dist/{community-report-client-KK2QBANO.js → community-report-client-M2RW4MXD.js} +2 -2
- package/dist/config-4VZNLBKF.js +489 -0
- package/dist/index.js +96 -37
- package/dist/memory-RWJW4XFO.js +892 -0
- package/dist/memory-VO2ZJCRT.js +892 -0
- package/dist/{metadata-JIQ77HFY.js → metadata-YGTHR2XJ.js} +8 -8
- package/dist/{metadata-AN3YFZEV.js → metadata-ZRN2GHPN.js} +8 -8
- package/dist/{model-JASQVOFD.js → model-CLUIK3K5.js} +7 -5
- package/dist/{raw-XJCAT3HX.js → raw-52B4UKO4.js} +8 -7
- package/dist/sync-3REDHGY6.js +10259 -0
- package/dist/{te-agent-JHUG6DVV.js → te-agent-XNPELAKX.js} +580 -84
- package/dist/{te-analysis-IWQZO423.js → te-analysis-GJI5FZUL.js} +1611 -25
- package/dist/{te-analysis-X222IRYR.js → te-analysis-N2BRDJZ5.js} +1611 -25
- package/dist/{te-community-QOYIYEJI.js → te-community-SQXKE5OO.js} +7 -7
- package/dist/{te-community-UFKI6ONP.js → te-community-TYSNU3NQ.js} +7 -7
- package/dist/{te-dataops-PZQ5NQLY.js → te-dataops-5TM7WZDI.js} +370 -189
- package/dist/{te-dataops-XTWVTJCA.js → te-dataops-OWIADNSM.js} +370 -189
- package/dist/{te-engage-NLZUPSBK.js → te-engage-F7V55KVW.js} +333 -105
- package/dist/{te-engage-E7F4HTXU.js → te-engage-FMYAYCNV.js} +333 -105
- package/dist/{te-kb-E7NSCBRB.js → te-kb-VRMEY3D4.js} +6 -6
- package/dist/{te-meta-GBDTMPEL.js → te-meta-53BVXPFI.js} +7 -7
- package/dist/{te-meta-ZTLTSHXC.js → te-meta-TOCBPBXI.js} +7 -7
- package/dist/{te-system-AH7DMCAQ.js → te-system-XGS5EQIQ.js} +4 -4
- package/dist/{te-team-BQ3SKSZV.js → te-team-BZRDV2CM.js} +7 -7
- package/dist/{update-DKG6UXEM.js → update-HEDXGOJH.js} +8 -6
- package/package.json +5 -2
- package/skills/ae-agent/SKILL.md +178 -16
- package/skills/ae-agent/references/add-skill.md +22 -10
- package/skills/ae-agent/references/edit-skill.md +24 -14
- package/skills/ae-agent/references/find-archived-conversations.md +82 -0
- package/skills/ae-agent/references/restore-conversation.md +54 -0
- package/skills/ae-agent/references/upload-skill.md +24 -14
- package/skills/ae-analysis/SKILL.md +1 -1
- package/skills/ae-analysis/references/command_index.md +109 -42
- package/skills/ae-analysis/references/debug_data_list.md +28 -0
- package/skills/ae-analysis/references/debug_device_add.md +23 -0
- package/skills/ae-analysis/references/debug_device_list.md +19 -0
- package/skills/ae-analysis/references/debug_device_select.md +22 -0
- package/skills/ae-analysis/references/entity_id_import_options.md +1 -1
- package/skills/ae-analysis/references/plan_sync_display_names.md +28 -0
- package/skills/ae-analysis/references/project_access_detail_get.md +3 -3
- package/skills/ae-analysis/references/project_data_power_delete.md +3 -3
- package/skills/ae-analysis/references/project_data_power_get.md +3 -3
- package/skills/ae-analysis/references/project_data_power_list.md +3 -3
- package/skills/ae-analysis/references/project_data_power_upsert.md +3 -3
- package/skills/ae-analysis/references/project_entity_create.md +3 -3
- package/skills/ae-analysis/references/project_entity_delete.md +3 -3
- package/skills/ae-analysis/references/project_entity_event_list.md +3 -3
- package/skills/ae-analysis/references/project_entity_get.md +3 -3
- package/skills/ae-analysis/references/project_entity_list.md +3 -3
- package/skills/ae-analysis/references/project_entity_update.md +3 -3
- package/skills/ae-analysis/references/project_function_list.md +3 -3
- package/skills/ae-analysis/references/project_info_create.md +25 -0
- package/skills/ae-analysis/references/project_info_delete.md +24 -0
- package/skills/ae-analysis/references/project_info_get.md +3 -3
- package/skills/ae-analysis/references/project_info_list.md +3 -3
- package/skills/ae-analysis/references/project_info_update.md +3 -3
- package/skills/ae-analysis/references/project_mark_time_create.md +3 -3
- package/skills/ae-analysis/references/project_mark_time_delete.md +3 -3
- package/skills/ae-analysis/references/project_mark_time_list.md +3 -3
- package/skills/ae-analysis/references/project_mark_time_update.md +3 -3
- package/skills/ae-analysis/references/project_member_add.md +3 -3
- package/skills/ae-analysis/references/project_member_batch_update.md +3 -3
- package/skills/ae-analysis/references/project_member_candidate_list.md +3 -3
- package/skills/ae-analysis/references/project_member_handover_export.md +3 -3
- package/skills/ae-analysis/references/project_member_handover_run.md +3 -3
- package/skills/ae-analysis/references/project_member_import.md +3 -3
- package/skills/ae-analysis/references/project_member_list.md +3 -3
- package/skills/ae-analysis/references/project_member_receiver_list.md +3 -3
- package/skills/ae-analysis/references/project_member_remove.md +3 -3
- package/skills/ae-analysis/references/project_member_update.md +3 -3
- package/skills/ae-analysis/references/project_owner_update.md +3 -3
- package/skills/ae-analysis/references/project_permission_binding_list.md +3 -3
- package/skills/ae-analysis/references/project_receive_status_update.md +3 -3
- package/skills/ae-analysis/references/project_role_delete.md +3 -3
- package/skills/ae-analysis/references/project_role_function_list.md +3 -3
- package/skills/ae-analysis/references/project_role_get.md +3 -3
- package/skills/ae-analysis/references/project_role_list.md +3 -3
- package/skills/ae-analysis/references/project_role_upsert.md +3 -3
- package/skills/ae-analysis/references/project_role_user_list.md +3 -3
- package/skills/ae-analysis/references/project_space_list.md +1 -1
- package/skills/ae-analysis/references/project_timezone_get.md +3 -3
- package/skills/ae-analysis/references/project_timezone_overview.md +3 -3
- package/skills/ae-analysis/references/project_timezone_update.md +3 -3
- package/skills/ae-analysis/references/project_user_id_items_update.md +3 -3
- package/skills/ae-analysis/references/system_admin_function_list.md +22 -0
- package/skills/ae-analysis/references/system_admin_function_update.md +26 -0
- package/skills/ae-analysis/references/system_admin_list.md +21 -0
- package/skills/ae-analysis/references/system_admin_remove.md +25 -0
- package/skills/ae-analysis/references/system_admin_upsert.md +25 -0
- package/skills/ae-analysis/references/system_function_list.md +21 -0
- package/skills/ae-analysis/references/system_member_add.md +25 -0
- package/skills/ae-analysis/references/system_member_candidate_list.md +22 -0
- package/skills/ae-analysis/references/system_member_delete.md +25 -0
- package/skills/ae-analysis/references/system_member_list.md +24 -0
- package/skills/ae-analysis/references/system_member_mfa_unbind.md +25 -0
- package/skills/ae-analysis/references/system_member_password_reset.md +32 -0
- package/skills/ae-analysis/references/system_member_project_batch_update.md +27 -0
- package/skills/ae-analysis/references/system_member_status_update.md +26 -0
- package/skills/ae-analysis/references/system_member_update.md +23 -0
- package/skills/ae-analysis/references/system_mfa_get.md +21 -0
- package/skills/ae-analysis/references/system_mfa_update.md +25 -0
- package/skills/ae-analysis/references/system_node_monitor_list.md +24 -0
- package/skills/ae-analysis/references/system_oauth2_update.md +22 -0
- package/skills/ae-analysis/references/system_ops_alert_contact_delete.md +25 -0
- package/skills/ae-analysis/references/system_ops_alert_contact_list.md +23 -0
- package/skills/ae-analysis/references/system_ops_alert_contact_test.md +29 -0
- package/skills/ae-analysis/references/system_ops_alert_contact_upsert.md +39 -0
- package/skills/ae-analysis/references/system_preference_get.md +21 -0
- package/skills/ae-analysis/references/system_preference_update.md +22 -0
- package/skills/ae-analysis/references/system_project_usage_list.md +28 -0
- package/skills/ae-analysis/references/system_query_alert_rule_list.md +21 -0
- package/skills/ae-analysis/references/system_query_alert_rule_update.md +26 -0
- package/skills/ae-analysis/references/system_query_monitor_overview.md +26 -0
- package/skills/ae-analysis/references/system_query_task_cancel.md +25 -0
- package/skills/ae-analysis/references/system_query_task_export.md +49 -0
- package/skills/ae-analysis/references/system_query_task_get.md +23 -0
- package/skills/ae-analysis/references/system_query_task_list.md +35 -0
- package/skills/ae-analysis/references/system_query_task_options.md +27 -0
- package/skills/ae-analysis/references/system_receiver_address_delete.md +26 -0
- package/skills/ae-analysis/references/system_receiver_address_overview.md +21 -0
- package/skills/ae-analysis/references/system_receiver_address_project_list.md +21 -0
- package/skills/ae-analysis/references/system_receiver_address_promote.md +24 -0
- package/skills/ae-analysis/references/system_receiver_address_upsert.md +27 -0
- package/skills/ae-analysis/references/system_receiver_detection_get.md +22 -0
- package/skills/ae-analysis/references/system_receiver_detection_run.md +22 -0
- package/skills/ae-analysis/references/system_receiver_detection_update.md +25 -0
- package/skills/ae-analysis/references/system_role_delete.md +26 -0
- package/skills/ae-analysis/references/system_role_function_list.md +22 -0
- package/skills/ae-analysis/references/system_role_get.md +22 -0
- package/skills/ae-analysis/references/system_role_list.md +24 -0
- package/skills/ae-analysis/references/system_role_upsert.md +27 -0
- package/skills/ae-analysis/references/system_role_user_list.md +22 -0
- package/skills/ae-analysis/references/system_seat_list.md +25 -0
- package/skills/ae-analysis/references/system_seat_update.md +26 -0
- package/skills/ae-analysis/references/system_smtp_delete.md +24 -0
- package/skills/ae-analysis/references/system_smtp_get.md +21 -0
- package/skills/ae-analysis/references/system_smtp_test.md +22 -0
- package/skills/ae-analysis/references/system_smtp_upsert.md +31 -0
- package/skills/ae-analysis/references/system_third_party_login_disable.md +25 -0
- package/skills/ae-analysis/references/system_third_party_login_list.md +21 -0
- package/skills/ae-analysis/references/system_third_party_login_upsert.md +33 -0
- package/skills/ae-analysis/references/system_usage_overview.md +21 -0
- package/skills/ae-analysis/references/system_usage_trend_export.md +44 -0
- package/skills/ae-analysis/references/system_usage_trend_query.md +28 -0
- package/skills/ae-dataops/SKILL.md +1 -1
- package/skills/ae-dataops/references/dataops-flow-create.md +51 -16
- package/skills/ae-engage/SKILL.md +56 -26
- package/skills/ae-engage/references/activity-activity.md +3 -0
- package/skills/ae-engage/references/activity-approval.md +12 -4
- package/skills/ae-engage/references/activity-task.md +21 -6
- package/skills/ae-engage/references/activity-topic.md +31 -13
- package/skills/ae-engage/references/add-channel.md +170 -41
- package/skills/ae-engage/references/build-task-save-guide.md +40 -27
- package/skills/ae-engage/references/channel-update-config.md +3 -2
- package/skills/ae-engage/references/common-metric.md +48 -120
- package/skills/ae-engage/references/flow-detail.md +13 -0
- package/skills/ae-engage/references/preset-event.md +12 -32
- package/skills/ae-engage/references/save-flow.md +127 -64
- package/skills/ae-engage/references/save-task.md +197 -59
- package/skills/ae-engage/references/scene-config-metric.md +3 -0
- package/skills/ae-engage/references/scene-preset-metric.md +8 -37
- package/skills/ae-engage/references/scene-strategy-audience.md +51 -643
- package/skills/ae-engage/references/scene-strategy.md +6 -6
- package/skills/ae-engage/references/task-detail.md +10 -0
- package/skills/ae-engage/references/task-submit-approval.md +45 -0
- package/skills/ae-engage/references/validate-flow-node-config.md +1 -1
- package/skills/ae-generate-tracking-code/SKILL.md +24 -8
- package/skills/ae-generate-tracking-code/references/debug-script.md +46 -37
- package/skills/ae-generate-tracking-plan/SKILL.md +26 -1
- package/skills/ae-metadata/SKILL.md +1 -1
- package/dist/config-BSSALXEN.js +0 -128
- package/dist/sync-QFP4XFN3.js +0 -485
|
@@ -41,7 +41,7 @@ ae-cli dataops_flow +create_sql_task --spaceCode "${spaceCode}" \
|
|
|
41
41
|
# Create task with upstream dependency
|
|
42
42
|
ae-cli dataops_flow +create_sql_task --spaceCode "${spaceCode}" \
|
|
43
43
|
--flowCode ${flowCode} --taskName "Export Results" \
|
|
44
|
-
--
|
|
44
|
+
--preTasks "[${upstreamTaskCode},${anotherUpstreamTaskCode}]" \
|
|
45
45
|
--sql "INSERT INTO ads_user SELECT * FROM dwd_user"
|
|
46
46
|
```
|
|
47
47
|
|
|
@@ -63,23 +63,40 @@ ae-cli dataops_flow +update_integration_task --spaceCode "${spaceCode}" \
|
|
|
63
63
|
|
|
64
64
|
Use `dataops_integration +list_sync_solutions` or `+get_sync_detail` to find the `syncId` first. These commands expose workflow `OFFLINE_SYNC` tasks only; app sync tasks are not part of this flow.
|
|
65
65
|
|
|
66
|
-
### Step 4: Modify
|
|
66
|
+
### Step 4: Create or Modify Workflow Instance Check Task
|
|
67
|
+
|
|
68
|
+
`checkItems` is a flat JSON array. Every item contains only `flowCode`, `left`, `right`, and `checkTimeUnit` (`DAY`, `HOUR`, or `MINUTE`). One `AND` or `OR` relation applies to the entire array; nested groups are not supported. For the current workflow, `left` and `right` are at least `1`; for another workflow they may be `0`; `right` must not exceed `left`.
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
ae-cli dataops_flow +create_workflow_instance_check_task --spaceCode "${spaceCode}" \
|
|
72
|
+
--flowCode ${flowCode} --taskName "Wait for upstream workflows" \
|
|
73
|
+
--checkItems '[{"flowCode":10037355068544,"left":1,"right":1,"checkTimeUnit":"DAY"},{"flowCode":10037355068545,"left":2,"right":0,"checkTimeUnit":"HOUR"}]' \
|
|
74
|
+
--relation OR
|
|
75
|
+
|
|
76
|
+
ae-cli dataops_flow +update_workflow_instance_check_task --spaceCode "${spaceCode}" \
|
|
77
|
+
--flowCode ${flowCode} --taskCode ${taskCode} \
|
|
78
|
+
--checkItems '[{"flowCode":10037355068544,"left":1,"right":1,"checkTimeUnit":"DAY"}]'
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Create defaults are `relation=AND`, `checkInterval=5`, `checkTime=3`, `failRetryTimes=3`, `failRetryInterval=5`, and `failRetryUnit=MINUTE`. On update, omitted check scalars, dependencies, and retry fields keep their current values.
|
|
82
|
+
|
|
83
|
+
### Step 5: Modify SQL Task Content
|
|
67
84
|
|
|
68
85
|
```bash
|
|
69
|
-
# Update SQL task content
|
|
86
|
+
# Update SQL task content and keep dependencies and retry policy
|
|
70
87
|
ae-cli dataops_flow +update_sql_task --spaceCode "${spaceCode}" \
|
|
71
88
|
--flowCode ${flowCode} --taskCode ${taskCode} \
|
|
72
89
|
--sql "SELECT * FROM dwd_user"
|
|
73
90
|
```
|
|
74
91
|
|
|
75
|
-
### Step
|
|
92
|
+
### Step 6: Add Task Dependencies (DAG connections)
|
|
76
93
|
|
|
77
94
|
```bash
|
|
78
95
|
ae-cli dataops_flow +add_task_relation --spaceCode "${spaceCode}" \
|
|
79
96
|
--flowCode ${flowCode} --preTaskCode ${upstreamTaskCode} --taskCode ${downstreamTaskCode}
|
|
80
97
|
```
|
|
81
98
|
|
|
82
|
-
### Step
|
|
99
|
+
### Step 7: Configure Schedule
|
|
83
100
|
|
|
84
101
|
```bash
|
|
85
102
|
# CRON expression for scheduled execution
|
|
@@ -93,7 +110,7 @@ ae-cli dataops_flow +save_schedule_config --spaceCode "${spaceCode}" \
|
|
|
93
110
|
- `0 0 */4 * * ?` — Every 4 hours
|
|
94
111
|
- `0 30 8 * * 1-5` — Weekdays at 8:30
|
|
95
112
|
|
|
96
|
-
### Step
|
|
113
|
+
### Step 8: Preview Release
|
|
97
114
|
|
|
98
115
|
```bash
|
|
99
116
|
# Preview pending DEV-to-PROD release changes before publishing
|
|
@@ -101,7 +118,7 @@ ae-cli dataops_flow +preview_release_flow --spaceCode "${spaceCode}" \
|
|
|
101
118
|
--flowCode ${flowCode}
|
|
102
119
|
```
|
|
103
120
|
|
|
104
|
-
### Step
|
|
121
|
+
### Step 9: Release to Production and Verify
|
|
105
122
|
|
|
106
123
|
```bash
|
|
107
124
|
ae-cli dataops_flow +release_flow --spaceCode "${spaceCode}" \
|
|
@@ -130,10 +147,12 @@ ae-cli dataops_operations +get_task_instance_detail --spaceCode "${spaceCode}" \
|
|
|
130
147
|
| Command | Purpose | Key Flags |
|
|
131
148
|
|---------|---------|-----------|
|
|
132
149
|
| `+create_flow` | Create DEV flow | `--spaceCode` `--flowName` `[--remark]` |
|
|
133
|
-
| `+create_sql_task` | Create DEV Trino SQL task and save SQL | `--spaceCode` `--flowCode` `--taskName` `--sql` `[--preSql]` `[--postSql]` `[--
|
|
134
|
-
| `+update_sql_task` | Update DEV Trino SQL task content | `--spaceCode` `--flowCode` `--taskCode` `--sql` `[--preSql]` `[--postSql]` |
|
|
135
|
-
| `+create_integration_task` | Create DEV integration sync task from an existing sync solution | `--spaceCode` `--flowCode` `--taskName` `--syncId` `[--
|
|
136
|
-
| `+update_integration_task` | Rebind DEV integration sync task to a sync solution | `--spaceCode` `--flowCode` `--taskCode` `--syncId` |
|
|
150
|
+
| `+create_sql_task` | Create DEV Trino SQL task and save SQL | `--spaceCode` `--flowCode` `--taskName` `--sql` `[--preSql]` `[--postSql]` `[--preTasks]` `[--failRetryTimes]` `[--failRetryInterval]` `[--failRetryUnit]` `[--remark]` |
|
|
151
|
+
| `+update_sql_task` | Update DEV Trino SQL task content | `--spaceCode` `--flowCode` `--taskCode` `--sql` `[--preSql]` `[--postSql]` `[--preTasks]` `[--failRetryTimes]` `[--failRetryInterval]` `[--failRetryUnit]` |
|
|
152
|
+
| `+create_integration_task` | Create DEV integration sync task from an existing sync solution | `--spaceCode` `--flowCode` `--taskName` `--syncId` `[--preTasks]` `[--failRetryTimes]` `[--failRetryInterval]` `[--failRetryUnit]` `[--remark]` |
|
|
153
|
+
| `+update_integration_task` | Rebind DEV integration sync task to a sync solution | `--spaceCode` `--flowCode` `--taskCode` `--syncId` `[--preTasks]` `[--failRetryTimes]` `[--failRetryInterval]` `[--failRetryUnit]` |
|
|
154
|
+
| `+create_workflow_instance_check_task` | Create DEV workflow instance check task | `--spaceCode` `--flowCode` `--taskName` `--checkItems` `[--relation]` `[--checkInterval]` `[--checkTime]` `[--preTasks]` `[retry flags]` `[--remark]` |
|
|
155
|
+
| `+update_workflow_instance_check_task` | Update DEV workflow instance check task | `--spaceCode` `--flowCode` `--taskCode` `--checkItems` `[--relation]` `[--checkInterval]` `[--checkTime]` `[--preTasks]` `[retry flags]` |
|
|
137
156
|
| `+add_task_relation` | Add DEV dependency | `--spaceCode` `--flowCode` `--preTaskCode` `--taskCode` |
|
|
138
157
|
| `+save_schedule_config` | Save DEV schedule config | `--spaceCode` `--flowCode` `--enabled` `[--cron]` |
|
|
139
158
|
| `+get_task_params` | View DEV task parameter list | `--spaceCode` `--flowCode` `--taskCode` |
|
|
@@ -150,17 +169,33 @@ ae-cli dataops_operations +get_task_instance_detail --spaceCode "${spaceCode}" \
|
|
|
150
169
|
- **Schedule config**: `+save_schedule_config` requires `--spaceCode`, `--flowCode`, and `--enabled`. `--cron` is required only when `--enabled true`; omit it when disabling scheduling. It returns `action/result/status`; `result` includes `enabled`, `flow`, `message`, and `cron` only when enabled.
|
|
151
170
|
- **Release preview**: `+preview_release_flow` requires `--spaceCode` and `--flowCode`; it has no optional flags. It returns `flowCode`, `releaseStatus`, `message`, and `changes`. Each change may include `scheduleConfigChange` and `tasks`; task entries may include `changed`, `contentCompare`, and `targetTable`.
|
|
152
171
|
- **Release**: `+release_flow` requires `--spaceCode` and `--flowCode`; it has no optional flags. It returns `action/result/status`; `result` includes `flowCode`, `releaseStatus`, `message`, optional `packageCode`, and optional `changes`. Each change may include `scheduleConfigChange` and `tasks`; task entries include `changed`.
|
|
153
|
-
- **
|
|
154
|
-
- **
|
|
172
|
+
- **Task dependencies**: `--preTasks` is a JSON array of upstream task codes on SQL, integration, and workflow instance check create/update commands. Omit `--preTasks` on update to preserve existing dependencies; pass `--preTasks '[]'` to clear them; pass a non-empty array to replace them.
|
|
173
|
+
- **Retry policy**: The three task types accept `--failRetryTimes`, `--failRetryInterval`, and `--failRetryUnit`. Create defaults to `3`, `5`, and `MINUTE`. Update preserves every omitted retry field. `MINUTE` is the only supported unit.
|
|
174
|
+
- **SQL task creation**: `+create_sql_task` requires `--spaceCode`, `--flowCode`, `--taskName`, and `--sql`; SQL hooks, dependencies, retry policy, and remark are optional. It returns `action/result/status`; `result` includes `flowCode`, `taskCode`, `taskName`, `taskType=TRINO_SQL`, and `sqlSaved=true`.
|
|
175
|
+
- **SQL task update**: `+update_sql_task` requires `--spaceCode`, `--flowCode`, `--taskCode`, and `--sql`; omitted SQL hooks, dependencies, and retry fields keep existing values. It returns `action/result/status`; `result` includes `sqlSaved`, `flowCode`, `taskCode`, `taskType=TRINO_SQL`, and `task`.
|
|
155
176
|
- **Task dependency**: `+add_task_relation` requires `--spaceCode`, `--flowCode`, `--preTaskCode`, and `--taskCode`. `preTaskCode` is upstream and `taskCode` is downstream. It returns `action/result/status`; `result` includes `status`, `flowCode`, `preTaskCode`, `taskCode`, and `message`.
|
|
156
177
|
- **Task parameters**: `+get_task_params` requires `--spaceCode`, `--flowCode`, and `--taskCode`; it has no optional flags. It queries DEV and returns `data` as an array. Items include fields such as `paramKey`, `paramType`, `paramDataType`, `paramFrom`, and built-in flags like `isBd`.
|
|
157
|
-
- **Integration task creation**: `+create_integration_task` requires `--spaceCode`, `--flowCode`, `--taskName`, and `--syncId`;
|
|
158
|
-
- **
|
|
178
|
+
- **Integration task creation**: `+create_integration_task` requires `--spaceCode`, `--flowCode`, `--taskName`, and `--syncId`; dependencies, retry policy, and remark are optional. It returns `action/result/status`; `result` includes `syncTaskSaved`, `flowCode`, `taskCode`, `taskName`, `taskType=OFFLINE_SYNC`, `syncId`, and `nextAction`.
|
|
179
|
+
- **Workflow instance check tasks**: `checkItems` is required and replaces the complete check item list. Create defaults `relation/checkInterval/checkTime` to `AND/5/3`; update preserves omitted scalar values. This command creates `FLOW_CHECK`, not task-instance `TASK_CHECK`.
|
|
180
|
+
|
|
181
|
+
## Transport Status
|
|
182
|
+
|
|
183
|
+
Transition status: transitional
|
|
184
|
+
|
|
185
|
+
Owning module: gaia-mcp workflow
|
|
186
|
+
|
|
187
|
+
Current transport: DataOps CLI REST
|
|
188
|
+
|
|
189
|
+
Gateway target: TBD after DataOps workflow Gateway schema review
|
|
190
|
+
|
|
191
|
+
Review after: 2026-10-27
|
|
192
|
+
|
|
193
|
+
Exit condition: Migrate or remove these one-to-one commands after equivalent Capability Gateway actions are available.
|
|
159
194
|
|
|
160
195
|
## Important Notes
|
|
161
196
|
|
|
162
197
|
1. **Getting flowCode**: Use `+list_flows` (see `dataops-flow-monitor` Skill)
|
|
163
|
-
2. **Getting taskCode**: Returned by
|
|
198
|
+
2. **Getting taskCode**: Returned by a task create command or query via `+get_flow_overview`
|
|
164
199
|
3. **Release Impact**: Submits current DEV changes to PROD; released schedule/config applies to future PROD runs
|
|
165
200
|
4. **SQL Validation**: Recommended to validate before saving TRINO_SQL tasks
|
|
166
201
|
5. **Cannot create circular dependencies**
|
|
@@ -52,9 +52,9 @@ When the user mentions a product term below (including common Chinese UI labels)
|
|
|
52
52
|
| **Config center** | Engage scene management / config center overview | `engage-scene` | `references/scene-config-item.md` | `scene-config-param.md`, `scene-config-group.md`, `scene-preset-metric.md`, `scene-config-metric.md`, `scene-config-channel.md`, `channel-mgmt.md`, `scene-strategy.md`, `scene-template.md`; L3 reports: `config-item-trigger-report.md`, `config-item-analysis-report.md`, `config-item-strategy-comparison.md` |
|
|
53
53
|
| **Scene config** | Same as config center; params, groups, metrics, channels, strategies, and templates under a config item | `engage-scene` | `references/scene-config-item.md` | Same as above; params/groups/metrics: `scene-config-param.md`, `scene-config-group.md`, `scene-preset-metric.md`, `scene-config-metric.md` |
|
|
54
54
|
| **Config item** | A single config item in the config center | `engage-scene` | `references/scene-config-item.md` | `scene-config-param.md`, `scene-preset-metric.md`, `scene-config-metric.md`, `scene-strategy.md`, `scene-template.md` |
|
|
55
|
-
| **Push channel** | Project-level message push channels (Webhook, FCM, APNS, etc.) | `engage-setting` | `references/channel-list.md` | `channel-detail.md`, `add-channel.md
|
|
55
|
+
| **Push channel** | Project-level message push channels (Webhook, FCM, APNS, etc.) | `engage-setting` | `references/channel-list.md` | `channel-detail.md`, `add-channel.md` (**Webhook vs Client differ**: `url` = HTTP vs scene key; custom params `user:` vs `user:`/`client:`), `update-channel-status.md`, `delete-channel.md`, `channel-update-config.md`, `channel-test-send.md`, `channel_touch_limits_list.md` |
|
|
56
56
|
| **Config channel** | Config-center Webhook/client config channels (not the same as push channels) | `engage-scene` | `references/scene-config-channel.md` | `channel-mgmt.md` (create/enable-disable/copy/delete workflows). User params in `config.customsParamList` require `columnName` with `user:` prefix (e.g. `user:#account_id`); preflight names with ae-analysis `analysis-meta property list/get`. |
|
|
57
|
-
| **Operation strategy** | Ops/delivery strategies under a config item | `engage-scene` | `references/scene-strategy.md` | Custom audience
|
|
57
|
+
| **Operation strategy** | Ops/delivery strategies under a config item | `engage-scene` | `references/scene-strategy.md` | Custom audience: [`scene-strategy-audience.md`](references/scene-strategy-audience.md) — semantic `definitionRequest` (Analysis condition shape); do not pass `targetClusterQp`/`qp`; preflight props (stop + list if missing); template: `scene-template.md` |
|
|
58
58
|
| **Operation task** | Hermes push/engagement tasks (list, save, lifecycle, reports) | `engage-task` | `references/task-list.md` | `task-detail.md` (get), `save-task.md`, `build-task-save-guide.md`, `task-stats.md`, `task-delete.md`, `push-record-query.md`, `task-data-overview.md`, `task-data-detail.md`, `task-metric-detail.md`, `task-experiment-report.md` |
|
|
59
59
|
| **Template** | Strategy templates under a config item | `engage-scene` | `references/scene-template.md` | `scene-config-param.md` (template fields reference `paramId`); enable via `template update` then `template update-status` before strategy create |
|
|
60
60
|
|
|
@@ -145,13 +145,13 @@ ae-cli engage-setting config-table delete --project-id <project_id> --info-id <i
|
|
|
145
145
|
|
|
146
146
|
# Preset event list / update
|
|
147
147
|
ae-cli engage-setting preset-event list --project-id <project_id>
|
|
148
|
-
ae-cli engage-setting preset-event update --project-id <project_id> --add-event-
|
|
148
|
+
ae-cli engage-setting preset-event update --project-id <project_id> --add-event-definition '<semantic_event_json>'
|
|
149
149
|
|
|
150
150
|
# Common metric list / get / create / update / delete
|
|
151
151
|
ae-cli engage-setting common-metric list --project-id <project_id>
|
|
152
152
|
ae-cli engage-setting common-metric get --project-id <project_id> --metric-name <name>
|
|
153
|
-
ae-cli engage-setting common-metric create --project-id <project_id> --metric-type 1 --metric-name <name> --metric-
|
|
154
|
-
ae-cli engage-setting common-metric update --project-id <project_id> --metric-type 1 --metric-name <name> --metric-
|
|
153
|
+
ae-cli engage-setting common-metric create --project-id <project_id> --metric-type 1 --metric-name <name> --metric-definition '<semantic_metric_json>' --metric-window-num 1 --metric-window-time-unit day --display-name <display>
|
|
154
|
+
ae-cli engage-setting common-metric update --project-id <project_id> --metric-type 1 --metric-name <name> --metric-definition '<semantic_metric_json>' --metric-window-num 1 --metric-window-time-unit day --display-name <display>
|
|
155
155
|
ae-cli engage-setting common-metric delete --project-id <project_id> --metric-name <name> --yes
|
|
156
156
|
```
|
|
157
157
|
|
|
@@ -170,6 +170,9 @@ ae-cli engage-task task save --project-id 1 --req '{"baseInfo":{"taskName":"Demo
|
|
|
170
170
|
# Query task details
|
|
171
171
|
ae-cli engage-task task get --project-id 1 --task-id task_123
|
|
172
172
|
|
|
173
|
+
# Submit a saved draft task for approval
|
|
174
|
+
ae-cli engage-task task submit-approval --project-id 1 --task-id task_123
|
|
175
|
+
|
|
173
176
|
```
|
|
174
177
|
|
|
175
178
|
For L3 task reports, read `references/task-data-overview.md`, `references/task-data-detail.md`,
|
|
@@ -210,6 +213,7 @@ ae-cli engage-task group list --project-id 1
|
|
|
210
213
|
ae-cli engage-task metric list --project-id 1 --task-id task_id_123
|
|
211
214
|
ae-cli engage-task channel-ref stats --project-id 1 --channel-id channel_123
|
|
212
215
|
ae-cli engage-task task delete --project-id 1 --task-id task_id_123 --yes
|
|
216
|
+
ae-cli engage-task task submit-approval --project-id 1 --task-id task_id_123
|
|
213
217
|
|
|
214
218
|
# Query the node schema
|
|
215
219
|
ae-cli engage-flow node-config schema --project-id 1 --node-type message_push
|
|
@@ -241,7 +245,7 @@ ae-cli engage-scene config-group batch-delete --project-id <project_id> --group-
|
|
|
241
245
|
|
|
242
246
|
# Preset metric get / set
|
|
243
247
|
ae-cli engage-scene preset-metric get --project-id <project_id> --config-id <config_id>
|
|
244
|
-
ae-cli engage-scene preset-metric set --project-id <project_id> --config-id <config_id> --impression-event-
|
|
248
|
+
ae-cli engage-scene preset-metric set --project-id <project_id> --config-id <config_id> --impression-event-definition '<semantic_event_json>'
|
|
245
249
|
|
|
246
250
|
# Config metric list / get / batch-add / update-rule / batch-delete
|
|
247
251
|
ae-cli engage-scene config-metric list --project-id <project_id> --config-id <config_id>
|
|
@@ -252,7 +256,7 @@ ae-cli engage-scene config-metric batch-delete --project-id <project_id> --confi
|
|
|
252
256
|
|
|
253
257
|
# Config channel list / get / create / update / update-status / delete / query-log
|
|
254
258
|
# User params: verify each customsParamList columnName via ae-analysis property list/get first; then use user:<prop_name>
|
|
255
|
-
# Strategy custom audience: scene-strategy-audience.md —
|
|
259
|
+
# Strategy custom audience: scene-strategy-audience.md — semantic definitionRequest; strategy predict for 预估人数
|
|
256
260
|
# Workflows: references/channel-mgmt.md · schema: references/scene-config-channel.md
|
|
257
261
|
ae-cli engage-scene config-channel list --project-id <project_id> [--channel-type 0|1]
|
|
258
262
|
ae-cli engage-scene config-channel get --project-id <project_id> --channel-id <channel_id>
|
|
@@ -266,7 +270,7 @@ ae-cli engage-scene config-channel query-log --project-id <project_id> --channel
|
|
|
266
270
|
ae-cli engage-scene strategy create --project-id <project_id> --payload '{"configId":"cfg-1","templateId":"tpl-1","strategyName":"s1"}'
|
|
267
271
|
ae-cli engage-scene strategy update --project-id <project_id> --payload '{"strategyUuid":"uuid-1"}'
|
|
268
272
|
ae-cli engage-scene strategy log --project-id <project_id> --strategy-uuid <uuid>
|
|
269
|
-
ae-cli engage-scene strategy predict --project-id <project_id> --
|
|
273
|
+
ae-cli engage-scene strategy predict --project-id <project_id> --definition-request '{"type":"condition","conditions":{...}}' --zone-offset 8 [--strategy-uuid <uuid>]
|
|
270
274
|
ae-cli engage-scene strategy batch-copy --project-id <project_id> --config-id <config_id> --strategy-ids '["s1"]'
|
|
271
275
|
|
|
272
276
|
# Template list / get / create / update / update-status / delete
|
|
@@ -282,6 +286,18 @@ ae-cli engage-scene template delete --project-id <project_id> --config-id <confi
|
|
|
282
286
|
|
|
283
287
|
New capability-gateway command group `engage-activity` covers campaign activities: activities, approval workflow, topics, activity types, and standalone tasks. Complex DTOs are passed with `--payload` (native camelCase JSON).
|
|
284
288
|
|
|
289
|
+
### Activity payload guardrails
|
|
290
|
+
|
|
291
|
+
Before generating any activity topic or standalone-task payload, enforce the same subset exposed by the Hermes activity UI:
|
|
292
|
+
|
|
293
|
+
- `triggerType` must be `0` (schedule single) or `1` (schedule repeat). Activity tasks do not support manual (`2`) or triggered (`3`-`6`) task types.
|
|
294
|
+
- Do not configure A/B or horse-race experiments. Omit `expConfig` or use only `{"enableExp":false}`, and provide exactly one non-experiment `groupContentList` group.
|
|
295
|
+
- Standalone activity tasks must use `triggerTimeStrategy: "fixed_time_zone"` and the parent activity `tzOffset`. Schedule times must remain inside the activity period.
|
|
296
|
+
- A topic root supports audience types `1` (custom) and `2` (existing cluster), not `3` (all users). A standalone activity task may use `1`, `2`, or `3`.
|
|
297
|
+
- Topic tasks inherit schedule, timezone, channel, frequency limits, channel touch limits, whitelist, and experiment settings from the topic. They may only add an inclusion-only custom `definitionRequest`; never generate task-level `clusterKey`, trigger rules, or shared-setting overrides. `topic get` may return the canonical task marker `targetClusterType=1`; preserve it for update if present, but never use another task-level value.
|
|
298
|
+
- Resolve the parent activity first and confirm it is editable (`mappingStatus` `0`, `2`, or `5`). Limits for topics, tasks, and languages are project configuration values; do not hardcode defaults.
|
|
299
|
+
- `approval submit` and `approval approve` validate every persisted activity task. Approval does not normalize unsupported task data. On `ACTIVITY_TASK_COMPATIBILITY_VIOLATION`, cancel/withdraw approval as needed, correct or recreate each reported task, and submit again.
|
|
300
|
+
|
|
285
301
|
```bash
|
|
286
302
|
# Activity create / update / delete / list / get / pause / end / stats / info-list
|
|
287
303
|
ae-cli engage-activity activity create --project-id <project_id> --payload '{"activityName":"a1","activityType":"other_type","tzOffset":8,"periodType":0}'
|
|
@@ -294,8 +310,8 @@ ae-cli engage-activity activity end --project-id <project_id> --activity-id <act
|
|
|
294
310
|
ae-cli engage-activity activity stats --project-id <project_id>
|
|
295
311
|
ae-cli engage-activity activity info-list --project-id <project_id> --activity-id <activity_id>
|
|
296
312
|
|
|
297
|
-
# Approval approve / reject / cancel
|
|
298
|
-
|
|
313
|
+
# Approval submit / approve / reject / cancel
|
|
314
|
+
ae-cli engage-activity approval submit --project-id <project_id> --activity-id <activity_id> [--reason <reason>]
|
|
299
315
|
ae-cli engage-activity approval approve --project-id <project_id> --activity-id <activity_id>
|
|
300
316
|
ae-cli engage-activity approval reject --project-id <project_id> --activity-id <activity_id> --reason <reason>
|
|
301
317
|
ae-cli engage-activity approval cancel --project-id <project_id> --activity-id <activity_id>
|
|
@@ -346,12 +362,9 @@ When the user wants to "create a flow / generate a flow canvas / save a flow", d
|
|
|
346
362
|
- The touchpoint or delivery method
|
|
347
363
|
- Whether branching is needed, and the branching conditions
|
|
348
364
|
2. Do not jump directly from natural language to `--req`. You must first organize a stable intermediate intent structure, then map it to the final `req`.
|
|
349
|
-
3.
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
ae-cli analysis user-cluster create --project-id <projectId> --cluster-name <condition_cluster_name> --display-name <display_name> --definition-request '<semantic-definition-json>'
|
|
353
|
-
ae-cli analysis user-cluster get --project-id <projectId> --cluster-names '["<condition_cluster_name>"]'
|
|
354
|
-
```
|
|
365
|
+
3. Build condition-related nodes with semantic `targetDefinitionRequest` and
|
|
366
|
+
`triggerDefinition` objects. Resolve real event and property names through Analysis metadata;
|
|
367
|
+
do not create an intermediate cluster merely to obtain persisted QP.
|
|
355
368
|
|
|
356
369
|
4. Before building touchpoint nodes such as `message_push`, `wechat_push`, or `webhook_push`, you must call:
|
|
357
370
|
|
|
@@ -361,7 +374,7 @@ ae-cli engage-setting channel list --project-id <projectId>
|
|
|
361
374
|
|
|
362
375
|
5. `engage-flow flow save` is **operation-based** (protocol v2). The `--req` object must carry an `operation` of `build`, `preview`, or `commit`. Do **not** use the old `nodeList` / `edgeList` field names — use `nodes` / `edges` with `operation=build`. A legacy `nodeList`/`edgeList` payload (or a missing `operation`) is rejected with `Unsupported save_flow operation: null`.
|
|
363
376
|
6. Run the lifecycle: `build` (returns `data.result.status = ready_to_preview` or `need_input`) → resolve any `data.result.next_slot` → `preview` (re-issues response fields `data.result.draft_version` + `data.result.confirm_token`) → `commit` (maps those values to request fields `draftVersion` + `confirmToken`) → reads the final ID from `data.result.result.flow_uuid`.
|
|
364
|
-
7. `nodes[].config` / `edges[].config` may be a JSON object or a JSON string.
|
|
377
|
+
7. `nodes[].config` / `edges[].config` may be a JSON object or a JSON string. Custom audience nodes and branches use semantic `targetDefinitionRequest`; Hermes compiles it to the node's stored execution format.
|
|
365
378
|
8. You must self-check before previewing/committing:
|
|
366
379
|
- There is exactly one entry node
|
|
367
380
|
- There is at least one `exit_flow`
|
|
@@ -437,13 +450,13 @@ More detailed single-command guidance is available in the business-oriented `ref
|
|
|
437
450
|
- `references/scene-config-channel.md` (`engage-scene.config-channel.{list,get,create,update,update-status,delete,query-log}`)
|
|
438
451
|
- `references/channel-mgmt.md` (config channel management workflows)
|
|
439
452
|
- `references/scene-strategy.md` (`engage-scene.strategy.{list,get,create,update,log,predict,batch-copy,manage}`)
|
|
440
|
-
- `references/scene-strategy-audience.md` (custom audience
|
|
453
|
+
- `references/scene-strategy-audience.md` (custom audience semantic `definitionRequest`, preflight, predict)
|
|
441
454
|
- `references/scene-template.md` (`engage-scene.template.{list,get,copy,create,update,update-status,delete}`)
|
|
442
455
|
- `references/config-item-trigger-report.md` (`engage-scene.report.config-item-trigger`, L3)
|
|
443
456
|
- `references/config-item-analysis-report.md` (`engage-scene.report.config-item-analysis`, L3)
|
|
444
457
|
- `references/config-item-strategy-comparison.md` (`engage-scene.report.strategy-comparison`, L3)
|
|
445
458
|
- `references/activity-activity.md` (`engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}`)
|
|
446
|
-
- `references/activity-approval.md` (`engage-activity.approval.{approve,reject,cancel}
|
|
459
|
+
- `references/activity-approval.md` (`engage-activity.approval.{submit,approve,reject,cancel}`)
|
|
447
460
|
- `references/activity-topic.md` (`engage-activity.topic.{create,update,remove-task,delete,get,copy}`)
|
|
448
461
|
- `references/activity-activity-type.md` (`engage-activity.activity-type.{list,batch-add,update,batch-delete}`)
|
|
449
462
|
- `references/activity-task.md` (`engage-activity.task.{get,create,update,copy}`)
|
|
@@ -460,6 +473,7 @@ More detailed single-command guidance is available in the business-oriented `ref
|
|
|
460
473
|
- `references/segment-list-query.md` (`engage-task.segment-list.query`)
|
|
461
474
|
- `references/group-list.md` (`engage-task.group.list`)
|
|
462
475
|
- `references/task-delete.md` (`engage-task.task.delete`)
|
|
476
|
+
- `references/task-submit-approval.md` (`engage-task.task.submit-approval`)
|
|
463
477
|
|
|
464
478
|
This split documentation structure is easier to extend later, because commands with more complex object inputs can stay centralized in the `references/` root directory.
|
|
465
479
|
|
|
@@ -471,7 +485,7 @@ This split documentation structure is easier to extend later, because commands w
|
|
|
471
485
|
|
|
472
486
|
### task
|
|
473
487
|
|
|
474
|
-
`operation-log query` / `push-record query` / `segment-list *` / `ops *` / `metric *` / `race release` / `channel-ref stats` / `group *` / `task delete` / `task modify-group` / `task get` / `task list` / `task stats` / `task build-save-guide` / `task save` / `task manage` (via `engage-task`), plus L3 capabilities `engage-task.task-data.{overview,detail,metric-detail,experiment-report}`
|
|
488
|
+
`operation-log query` / `push-record query` / `segment-list *` / `ops *` / `metric *` / `race release` / `channel-ref stats` / `group *` / `task delete` / `task modify-group` / `task submit-approval` / `task get` / `task list` / `task stats` / `task build-save-guide` / `task save` / `task manage` (via `engage-task`), plus L3 capabilities `engage-task.task-data.{overview,detail,metric-detail,experiment-report}`
|
|
475
489
|
|
|
476
490
|
### config
|
|
477
491
|
|
|
@@ -483,7 +497,7 @@ Legacy config MCP commands are migrated into the `scene` L2 group and the three
|
|
|
483
497
|
|
|
484
498
|
### activity
|
|
485
499
|
|
|
486
|
-
`activity create` / `activity update` / `activity delete` / `activity list` / `activity get` / `activity pause` / `activity end` / `activity stats` / `activity info-list` / `approval approve` / `approval reject` / `approval cancel` / `topic create` / `topic update` / `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 create` / `task update` / `task copy` (via `engage-activity`), capability ids `engage-activity.activity.{create,update,delete,list,get,pause,end,stats,info-list}`, `engage-activity.approval.{approve,reject,cancel}`, `engage-activity.topic.{create,update,remove-task,delete,get,copy}`, `engage-activity.activity-type.{list,batch-add,update,batch-delete}`, `engage-activity.task.{get,create,update,copy}`
|
|
500
|
+
`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 create` / `topic update` / `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 create` / `task update` / `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.{create,update,remove-task,delete,get,copy}`, `engage-activity.activity-type.{list,batch-add,update,batch-delete}`, `engage-activity.task.{get,create,update,copy}`
|
|
487
501
|
|
|
488
502
|
### workbench
|
|
489
503
|
|
|
@@ -505,19 +519,35 @@ High-risk delete commands (`risk: high-risk-write`) require explicit user author
|
|
|
505
519
|
- Config channels (config center channel management): `engage-scene config-channel create|update|update-status` (write), `engage-scene config-channel delete` (high-risk-write)
|
|
506
520
|
- Strategies and config items: `engage-scene config-item delete` (high-risk-write), `engage-scene template copy` and `engage-scene strategy manage` (write)
|
|
507
521
|
- Flows: `engage-flow flow update-remark` (write), `engage-flow flow save` (write), `engage-flow flow modify-base-info` (write), `engage-flow flow manage` (write), `engage-flow flow delete` (high-risk-write)
|
|
508
|
-
- Tasks: `engage-task task save` (write), `engage-task task manage` (write)
|
|
522
|
+
- Tasks: `engage-task task save` (write), `engage-task task submit-approval` (write), `engage-task task manage` (write)
|
|
509
523
|
|
|
510
524
|
For task draft creation or update, use this workflow:
|
|
511
525
|
|
|
512
526
|
1. `ae-cli engage-setting channel list --project-id <projectId>`
|
|
513
527
|
2. `ae-cli engage-task task build-save-guide --project-id <projectId> --req '{...}'`
|
|
514
|
-
3.
|
|
515
|
-
`
|
|
516
|
-
|
|
528
|
+
3. For a custom audience, pass the Analysis semantic contract as
|
|
529
|
+
`targetConfig.definitionRequest`. Use semantic `triggerConfig.triggerDefinition` and
|
|
530
|
+
`completionIndicatorDef.completionIndicators[].eventDefinition`. Build shapes from
|
|
531
|
+
`ae-analysis` user-cluster / audience models. For existing-cluster audiences
|
|
532
|
+
(`targetClusterType=2`), use `analysis user-cluster get`. For event-triggered tasks, pass
|
|
533
|
+
`channelType`, `triggerType`, and `eventTriggerType` to `build-save-guide`, then use its
|
|
534
|
+
type-specific semantic event shape. Accumulated events are aggregate conditions, continuous
|
|
535
|
+
events use count/eq with a value of at least 2, ordered events use sequence-step envelopes,
|
|
536
|
+
and every-completion events use count/eq/1. Never construct persisted QP fields.
|
|
517
537
|
4. `ae-cli engage-task task save --project-id <projectId> --req '{...}'`
|
|
538
|
+
5. `ae-cli engage-task task submit-approval --project-id <projectId> --task-id <taskId>`
|
|
518
539
|
|
|
519
540
|
`engage-task task build-save-guide` is a read-only helper. It returns scenario-specific required fields, channel content schema, unsupported combinations, examples, and a handoff template for `save_task`.
|
|
520
541
|
|
|
521
542
|
`engage-task task save` creates or updates a task configuration. It does not submit approval, does not start sending, and does not trigger task execution. If `req.taskId` is omitted it creates a new draft; if `req.taskId` is present it updates an existing **draft or paused** task. Update mode rejects running/ended tasks with `invalid_status`. Omitted fields inherit from the existing task before validation (partial rename/update is supported).
|
|
522
543
|
|
|
523
|
-
|
|
544
|
+
`engage-task task submit-approval --task-id` is the recommended approval path after `task save`.
|
|
545
|
+
It submits the persisted draft without requiring the Agent to reconstruct internal `trigger_rule`.
|
|
546
|
+
The legacy `--request` mode remains available for compatibility; provide exactly one of
|
|
547
|
+
`--task-id` or `--request`.
|
|
548
|
+
|
|
549
|
+
Audience creation is not a fixed preflight step. For custom task audiences, use semantic
|
|
550
|
+
`targetConfig.definitionRequest`; `task get` returns the same contract as
|
|
551
|
+
`definition_request`. `clientConfig.clientQp` is server-authored and must be omitted from
|
|
552
|
+
Capability requests; partial updates preserve existing server state. Do not assemble raw QP
|
|
553
|
+
manually.
|
|
@@ -56,6 +56,9 @@ ae-cli engage-activity activity info-list --project-id <project_id> --activity-i
|
|
|
56
56
|
- `get`: `data.activity`.
|
|
57
57
|
- `stats`: `data.status_count`.
|
|
58
58
|
- `info-list`: `data.info` with `taskList` (standalone tasks) and `topicList` (topics under the activity).
|
|
59
|
+
This summary intentionally omits stored QP-bearing detail fields such as `qp`,
|
|
60
|
+
`triggerRule`, `completionIndicatorDef`, and `clientQp`. Use the corresponding task
|
|
61
|
+
or topic detail command to obtain the semantic definitions before editing.
|
|
59
62
|
- `delete` / `pause` / `end`: `data.success`.
|
|
60
63
|
|
|
61
64
|
## Timezone (`tzOffset`)
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
# engage-activity approval
|
|
2
2
|
|
|
3
|
-
> Capability ids: `engage-activity.approval.{approve,reject,cancel}` · Domain: `engage`.
|
|
4
|
-
>
|
|
5
|
-
> **Temporarily disabled:** `engage-activity.approval.submit` — do not call until re-enabled.
|
|
3
|
+
> Capability ids: `engage-activity.approval.{submit,approve,reject,cancel}` · Domain: `engage`.
|
|
6
4
|
|
|
7
5
|
Campaign activities — activity approval workflow. Current actions target an activity (`ApprovalActivityIdDealDTO`: `projectId` + `activityId` + `reason`); each is a state-changing `write` and does not support dry-run. `reject` requires `reason`; other actions treat `reason` as optional.
|
|
8
6
|
|
|
9
7
|
## Commands
|
|
10
8
|
|
|
11
9
|
```bash
|
|
10
|
+
# Submit an activity for approval
|
|
11
|
+
ae-cli engage-activity approval submit --project-id <project_id> --activity-id <activity_id> [--reason <reason>]
|
|
12
|
+
|
|
12
13
|
# Approve an activity
|
|
13
14
|
ae-cli engage-activity approval approve --project-id <project_id> --activity-id <activity_id>
|
|
14
15
|
|
|
@@ -23,6 +24,7 @@ ae-cli engage-activity approval cancel --project-id <project_id> --activity-id <
|
|
|
23
24
|
|
|
24
25
|
| Command | Required flags | Notes |
|
|
25
26
|
|---|---|---|
|
|
27
|
+
| submit | `--project-id`, `--activity-id` | `--reason` optional. Activity must have draft/pending standalone or topic tasks. |
|
|
26
28
|
| approve | `--project-id`, `--activity-id` | `--reason` optional. |
|
|
27
29
|
| reject | `--project-id`, `--activity-id`, `--reason` | `--reason` required, max 72 characters. |
|
|
28
30
|
| cancel | `--project-id`, `--activity-id` | `--reason` optional. |
|
|
@@ -35,13 +37,19 @@ ae-cli engage-activity approval cancel --project-id <project_id> --activity-id <
|
|
|
35
37
|
|
|
36
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).
|
|
37
39
|
- Approve/reject require the caller to be a valid approver of the activity (enforced server-side).
|
|
38
|
-
-
|
|
40
|
+
- Submit requires at least one standalone or topic task under the activity that can enter approval.
|
|
41
|
+
- Submit and approve load complete task details and scan both standalone tasks and topic tasks before invoking the product approval service.
|
|
42
|
+
- Approval does not repair or normalize unsupported activity task configurations.
|
|
43
|
+
- If preflight returns `ACTIVITY_TASK_COMPATIBILITY_VIOLATION`, inspect `error.meta.violations`, withdraw/cancel approval when necessary, and update or recreate each reported task as scheduled, fixed-timezone, and non-experiment before resubmitting.
|
|
39
44
|
|
|
40
45
|
## Common Errors
|
|
41
46
|
|
|
42
47
|
| code | when |
|
|
43
48
|
|---|---|
|
|
44
49
|
| `ACTIVITY_NOT_FOUND` | activity id missing in project |
|
|
50
|
+
| `ACTIVITY_NO_APPROVAL_TASK` | activity has no standalone/topic tasks to submit |
|
|
51
|
+
| `ACTIVITY_TASK_COMPATIBILITY_VIOLATION` | one or more persisted activity tasks use unsupported trigger, timezone, experiment, or content-group configuration; details are in `error.meta.violations` |
|
|
52
|
+
| `ACTIVITY_TRIGGER_TYPE_REQUIRED` | a persisted activity task is missing its trigger type; reported inside the compatibility violation list |
|
|
45
53
|
| `ACTIVITY_STATUS_INVALID` | activity not in draft/pending |
|
|
46
54
|
| `APPROVAL_NOT_PENDING` | no under-approval record |
|
|
47
55
|
| `NOT_APPROVER` | caller is not a project approver |
|
|
@@ -26,9 +26,9 @@ ae-cli engage-activity task copy --project-id <project_id> --task-id <task_id> [
|
|
|
26
26
|
|
|
27
27
|
| Command | Required flags | Notes |
|
|
28
28
|
|---|---|---|
|
|
29
|
-
| get | `--project-id`, `--task-id` |
|
|
30
|
-
| create | `--project-id`, `--payload` | payload = `OperationTaskOpDTO`; set `activityId`, leave `topicId` empty.
|
|
31
|
-
| update | `--project-id`, `--payload` | payload = `OperationTaskOpDTO` including `taskId`. Prefer get detail as base.
|
|
29
|
+
| get | `--project-id`, `--task-id` | Only standalone tasks with an `activityId`; ordinary tasks use `engage-task task get`. |
|
|
30
|
+
| create | `--project-id`, `--payload` | payload = `OperationTaskOpDTO`; set `activityId`, leave `topicId` empty. Only scheduled `triggerType` `0/1` is supported. |
|
|
31
|
+
| update | `--project-id`, `--payload` | payload = `OperationTaskOpDTO` including `taskId`. Prefer get detail as base. Only scheduled `triggerType` `0/1` is supported. |
|
|
32
32
|
| copy | `--project-id`, `--task-id` | `--new-name` optional (default source name + `_copy`). |
|
|
33
33
|
|
|
34
34
|
## Output
|
|
@@ -47,20 +47,28 @@ ae-cli engage-activity task copy --project-id <project_id> --task-id <task_id> [
|
|
|
47
47
|
- **TEXT (rich text) params** must include both `value` and `config` (Slate.js JSON **string**). If `config` is missing, Hermes copy auto-fills
|
|
48
48
|
`config = [{"type":"paragraph","children":[{"text":"<value>"}]}]` as a JSON string.
|
|
49
49
|
- Missing `expConfig` on create/update is auto-filled as `{"enableExp":false}` (same shape as task `get`).
|
|
50
|
+
- A/B and horse-race experiments are not supported. Do not pass experiment fields or multiple content groups.
|
|
51
|
+
- `groupContentList` must contain exactly one non-experiment group. Put language variants in that group's `contentList`.
|
|
50
52
|
|
|
51
53
|
### Audience (`targetClusterType`)
|
|
52
54
|
|
|
53
55
|
| Value | Required | Notes |
|
|
54
56
|
|---|---|---|
|
|
55
57
|
| `2` (existed) | `clusterKey` | From `analysis user-cluster list/get`. |
|
|
56
|
-
| `1` (custom) | `
|
|
57
|
-
| `3` (all) | — | Do not pass `clusterKey` or `
|
|
58
|
+
| `1` (custom) | `definitionRequest` | Analysis-compatible semantic condition object. |
|
|
59
|
+
| `3` (all) | — | Do not pass `clusterKey` or `definitionRequest`. |
|
|
60
|
+
|
|
61
|
+
`get` returns `definition_request`, `definition_status`, and optional `definition_unavailable_reason`, while hiding the stored execution QP. Reuse `definition_request` as payload `definitionRequest` for an update. `copy` converts the source internally and does not require an audience field from the caller.
|
|
58
62
|
|
|
59
63
|
## Decision Rules
|
|
60
64
|
|
|
65
|
+
- `triggerType` must be `0` (schedule single) or `1` (schedule repeat). Manual (`2`) and triggered (`3`-`6`) tasks belong under `engage-task`, not `engage-activity`.
|
|
66
|
+
- Set `triggerTimeStrategy` to `fixed_time_zone` and `tzOffset` to the parent activity timezone. User timezone and user active time are not supported.
|
|
67
|
+
- Keep `triggerTime`, or repeat `startDate`/`endDate`, inside the parent activity period.
|
|
68
|
+
- Create/update/copy is limited to editable parent activity states: draft (`0`), paused (`2`), or denied (`5`). Project-configured count and language limits remain authoritative.
|
|
61
69
|
- Discover a real `task_id` via `get`/activity `info-list` first; never invent IDs.
|
|
62
70
|
- `copy` duplicates the editable task config (not runtime/trigger state).
|
|
63
|
-
- `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 submitting for approval
|
|
71
|
+
- `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 submitting for approval.
|
|
64
72
|
- Standalone tasks must **not** include `topicId`; topic tasks use `engage-activity topic create` / `topic copy`.
|
|
65
73
|
|
|
66
74
|
## Copy errors
|
|
@@ -73,6 +81,13 @@ ae-cli engage-activity task copy --project-id <project_id> --task-id <task_id> [
|
|
|
73
81
|
| `TASK_PROJECT_MISMATCH` | task exists but not in `--project-id` |
|
|
74
82
|
| `TOPIC_TASK_FORBIDDEN` | source has `topicId` (use `topic copy`) |
|
|
75
83
|
| `ACTIVITY_ID_REQUIRED` | source has no `activityId` (not a standalone activity task) |
|
|
84
|
+
| `ACTIVITY_TRIGGER_TYPE_UNSUPPORTED` | task uses manual or a triggered task type |
|
|
85
|
+
| `ACTIVITY_TRIGGER_TIME_STRATEGY_UNSUPPORTED` | task does not use `fixed_time_zone` |
|
|
86
|
+
| `ACTIVITY_TIMEZONE_REQUIRED` | standalone task omits `tzOffset` |
|
|
87
|
+
| `ACTIVITY_EXPERIMENT_UNSUPPORTED` | task enables or configures an experiment |
|
|
88
|
+
| `ACTIVITY_CONTENT_GROUPS_UNSUPPORTED` | task has more than one experiment-style content group |
|
|
89
|
+
| `ACTIVITY_TIMEZONE_MISMATCH` | task timezone differs from the parent activity |
|
|
90
|
+
| `ACTIVITY_SCHEDULE_OUT_OF_RANGE` | task schedule is outside the activity period |
|
|
76
91
|
| `TRIGGER_TIME_REQUIRED` | schedule-single missing `triggerTime` |
|
|
77
92
|
| `CHANNEL_NOT_FOUND` | source channel missing / type mismatch |
|
|
78
93
|
| `TASK_COUNT_LIMIT` | project task count limit exceeded |
|
|
@@ -30,7 +30,7 @@ ae-cli engage-activity topic copy --project-id <project_id> --topic-id <topic_id
|
|
|
30
30
|
|
|
31
31
|
| Command | Required flags | Notes |
|
|
32
32
|
|---|---|---|
|
|
33
|
-
| create | `--project-id`, `--payload` | payload = `TopicAddDTO` (camelCase).
|
|
33
|
+
| create | `--project-id`, `--payload` | payload = `TopicAddDTO` (camelCase). `triggerType` must be `0` (schedule single) or `1` (schedule repeat). |
|
|
34
34
|
| update | `--project-id`, `--payload` | payload = `TopicModifyReq` (`topicId` + fields + task lists). |
|
|
35
35
|
| remove-task | `--project-id`, `--task-id` | high-risk; requires `--yes`; no dry-run. Only tasks with a non-empty `topicId`. |
|
|
36
36
|
| delete | `--project-id`, `--topic-id` | high-risk; requires `--yes`; no dry-run. |
|
|
@@ -42,19 +42,19 @@ ae-cli engage-activity topic copy --project-id <project_id> --topic-id <topic_id
|
|
|
42
42
|
TEXT (rich text) params inside `groupContentList[].contentList[].content` need both `value` and Slate `config` (JSON string). If `config` is omitted, Hermes copy/create auto-fills
|
|
43
43
|
`[{"type":"paragraph","children":[{"text":"<value>"}]}]`. See `activity-task.md` Channel content.
|
|
44
44
|
|
|
45
|
-
Topic-level audience uses `topicClusterKey` / `
|
|
45
|
+
Topic-level audience uses `topicClusterKey` / `topicDefinitionRequest`; do **not** pass task-level `clusterKey` at topic root.
|
|
46
46
|
|
|
47
47
|
### Audience (`targetClusterType`)
|
|
48
48
|
|
|
49
49
|
| Value | Required | Notes |
|
|
50
50
|
|---|---|---|
|
|
51
|
-
| `1` (custom) | `
|
|
51
|
+
| `1` (custom) | `topicDefinitionRequest` | Analysis-compatible semantic condition object. |
|
|
52
52
|
| `2` (existed) | `topicClusterKey` | From an existing user cluster. |
|
|
53
53
|
| `3` (all) | — | **Not supported for activity topics** → `TOPIC_TARGET_CLUSTER_TYPE_UNSUPPORTED`. Use standalone `engage-activity task create` for all-users. |
|
|
54
54
|
|
|
55
|
-
**`triggerMixQpVersion`:**
|
|
55
|
+
**`triggerMixQpVersion`:** Capability create/update/copy defaults a blank value to `"4.4"` while compiling the semantic definition.
|
|
56
56
|
|
|
57
|
-
Task-level extra conditions go in `
|
|
57
|
+
Task-level extra conditions go in each task's inclusion-only `definitionRequest`. Keep shared conditions in `topicDefinitionRequest`; Hermes performs the topic-to-task merge through the existing domain service. Topic tasks do not have an independent audience mode. `topic get` returns the canonical task marker `targetClusterType=1`; it may be retained when mapping `taskList` into `modifyTaskList`, but no other value is accepted. Do not pass task-level `clusterKey`, all-users selection, or exclusion filters.
|
|
58
58
|
|
|
59
59
|
### Trigger (`triggerType`)
|
|
60
60
|
|
|
@@ -62,7 +62,16 @@ Task-level extra conditions go in `taskQp` as mix QP under **`totalCFilter` only
|
|
|
62
62
|
|---|---|---|
|
|
63
63
|
| `0` (schedule single) | `triggerTime` (`yyyy-MM-dd HH:mm`, future) | Preferred for CLI create. |
|
|
64
64
|
| `1` (schedule repeat) | `startDate`, `endDate`, `triggerCrontab` | |
|
|
65
|
-
|
|
65
|
+
|
|
66
|
+
Manual (`2`) and every triggered type (`3`-`6`) are rejected with `ACTIVITY_TRIGGER_TYPE_UNSUPPORTED`.
|
|
67
|
+
|
|
68
|
+
### Shared topic configuration
|
|
69
|
+
|
|
70
|
+
- A/B and horse-race experiments are not supported. Omit `expConfig` and use exactly one content group per topic task.
|
|
71
|
+
- The topic owns schedule, activity timezone, channel, frequency limits, channel touch limits, and whitelist.
|
|
72
|
+
- A topic task only owns its name, optional inclusion-only custom audience refinement, one content group, completion indicators, metrics, and description.
|
|
73
|
+
- Do not put schedule, trigger rules, channel, frequency, whitelist, experiment, or `clusterKey` on a topic task. The only accepted task-level `targetClusterType` is the canonical get response value `1`.
|
|
74
|
+
- Keep the topic schedule inside the parent activity period. Create/update/copy requires parent activity `mappingStatus` `0`, `2`, or `5`.
|
|
66
75
|
|
|
67
76
|
## Create Topic Orchestration
|
|
68
77
|
|
|
@@ -72,11 +81,11 @@ Use this workflow when a topic has a shared audience plus one or more task-level
|
|
|
72
81
|
2. **Resolve the parent activity.** Use `activity list|get` to verify the exact `activityId`, editable status, activity dates, and timezone. For a repeated topic, keep `startDate` and `endDate` inside the activity period and interpret the cron in the activity timezone.
|
|
73
82
|
3. **Resolve a real channel.** Query `engage-setting channel list`, then inspect the selected channel before composing content. If several enabled channels match and the user has not specified a provider or an already-confirmed project default, ask which one to use instead of choosing an arbitrary ID.
|
|
74
83
|
4. **Read the channel content contract.** Call `engage-task task build-save-guide` with the known trigger, audience, channel type, and `channelId`. Build every `groupContentList[].contentList[].content` item from `fieldRules.channelContentSchema`; do not infer App Push keys or parameter types from memory.
|
|
75
|
-
5. **Prepare audience and completion inputs.** Resolve real event/property metadata and categorical values through the applicable Analysis workflow. Put the shared condition in `
|
|
76
|
-
6. **Build one native `TopicAddDTO`.** Keep nested payload keys in camelCase. Ensure `tasks` is non-empty,
|
|
84
|
+
5. **Prepare audience and completion inputs.** Resolve real event/property metadata and categorical values through the applicable Analysis workflow. Put the shared condition in `topicDefinitionRequest` or `topicClusterKey`, and only task-specific conditions in each task's `definitionRequest`. For a rolling condition such as "recent N days" that must be evaluated for future repeated sends, prefer a semantic custom definition; use an existing cluster only after confirming that its refresh semantics match the send cadence. Build the completion goal separately in `completionIndicatorDef`.
|
|
85
|
+
6. **Build one native `TopicAddDTO`.** Keep nested payload keys in camelCase. Ensure `tasks` is non-empty, each semantic definition is a JSON object, each task has channel content, and Android/iOS or other variants map to the correct task audience and message.
|
|
77
86
|
7. **Validate the complex payload.** Run `topic create ... --validate` while correcting the nested payload. Inspect `normalized_input` and confirm that the schedule, audience boundaries, message variants, and completion window retain the intended semantics. After `valid=true`, execute the same payload directly; do not add a redundant dry-run by default.
|
|
78
87
|
8. **Create exactly once.** Run `topic create` with the validated payload. A successful response only reports `data.success`; it does not provide enough evidence to declare the whole orchestration complete.
|
|
79
|
-
9. **Resolve IDs and verify the saved topic.** Call `activity info-list` for the parent activity, match the new topic and tasks by their names, then call `topic get` with the returned `topicId`. Verify the channel, dates, cron, topic audience, each task audience, content, completion goal, and draft status.
|
|
88
|
+
9. **Resolve IDs and verify the saved topic.** Call `activity info-list` for the parent activity, match the new topic and tasks by their names, then call `topic get` with the returned `topicId`. Verify the channel, dates, cron, semantic topic audience, each semantic task audience, content, completion goal, and draft status.
|
|
80
89
|
10. **Verify generated audiences before reporting completion.** Read the generated topic/task cluster keys with the applicable cluster query and wait for terminal computation state. Require `refresh_status=success`, `progress=100`, `real_available=1`, and `cluster_valid=1`. A zero-user result may be valid, but reconcile it with the discovered categorical values and business expectation. If computation fails, correct only the verified cause and re-check; do not retry an unchanged request or report the topic as fully ready.
|
|
81
90
|
|
|
82
91
|
Recommended command order:
|
|
@@ -95,7 +104,7 @@ activity list/get
|
|
|
95
104
|
|
|
96
105
|
## Output
|
|
97
106
|
|
|
98
|
-
- `get`: `data.topic` (includes `topicClusterKey` for
|
|
107
|
+
- `get`: `data.topic` (includes `topicClusterKey` for an existing audience or `topic_definition_request` plus conversion status for a custom audience).
|
|
99
108
|
- `create` / `update` / `remove-task` / `delete` / `copy`: `data.success`.
|
|
100
109
|
- `copy` may include `data.trigger_time_stale=true` when source schedule-single time is already past.
|
|
101
110
|
|
|
@@ -104,7 +113,7 @@ activity list/get
|
|
|
104
113
|
- `remove-task` and `delete` are `high-risk-write` — require `--yes`, no dry-run.
|
|
105
114
|
- `remove-task` only deletes **topic tasks** (`topicId` present). Standalone tasks → use `engage-task task delete`.
|
|
106
115
|
- `copy` duplicates the editable topic config and its tasks (not runtime/approval state).
|
|
107
|
-
- `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 submitting for approval
|
|
116
|
+
- `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 submitting for approval.
|
|
108
117
|
- Prefer `topic get` as a template when inspecting channel/content fields.
|
|
109
118
|
|
|
110
119
|
## Create / update audience errors
|
|
@@ -113,9 +122,16 @@ activity list/get
|
|
|
113
122
|
|---|---|
|
|
114
123
|
| `TOPIC_TARGET_CLUSTER_TYPE_UNSUPPORTED` | `targetClusterType=3` (all); topics only allow 1/2 |
|
|
115
124
|
| `TOPIC_CLUSTER_KEY_REQUIRED` | `targetClusterType=2` missing `topicClusterKey`, or topic-root `clusterKey` alias |
|
|
116
|
-
| `
|
|
117
|
-
| `
|
|
125
|
+
| `TOPIC_DEFINITION_REQUIRED` | `targetClusterType=1` missing `topicDefinitionRequest` |
|
|
126
|
+
| `TOPIC_DEFINITION_INVALID` | `topicDefinitionRequest` is not a semantic condition object |
|
|
118
127
|
| `TARGET_CLUSTER_TYPE_INVALID` | `targetClusterType` not a known enum value |
|
|
128
|
+
| `ACTIVITY_TRIGGER_TYPE_UNSUPPORTED` | topic uses manual or a triggered task type |
|
|
129
|
+
| `ACTIVITY_EXPERIMENT_UNSUPPORTED` | topic or a topic task configures an experiment |
|
|
130
|
+
| `ACTIVITY_CONTENT_GROUPS_UNSUPPORTED` | a topic task has multiple experiment-style content groups |
|
|
131
|
+
| `TOPIC_TASK_OVERRIDE_UNSUPPORTED` | a topic task overrides shared topic settings or selects an independent cluster |
|
|
132
|
+
| `TOPIC_TASK_AUDIENCE_EXCLUSION_UNSUPPORTED` | a topic task definition contains exclusion filters |
|
|
133
|
+
| `ACTIVITY_STATUS_INVALID` | parent activity is not editable |
|
|
134
|
+
| `ACTIVITY_SCHEDULE_OUT_OF_RANGE` | topic schedule is outside the parent activity period |
|
|
119
135
|
|
|
120
136
|
## Copy errors
|
|
121
137
|
|
|
@@ -129,6 +145,8 @@ activity list/get
|
|
|
129
145
|
| `ACTIVITY_NOT_FOUND` | parent activity missing / deleted / wrong project |
|
|
130
146
|
| `TOPIC_TASKS_REQUIRED` | source topic has no tasks |
|
|
131
147
|
| `ACTIVITY_STATUS_INVALID` | parent activity is approving/working/complete |
|
|
148
|
+
| `ACTIVITY_SCHEDULE_OUT_OF_RANGE` | source topic schedule is outside the parent activity period |
|
|
149
|
+
| `ACTIVITY_CONTENT_GROUPS_UNSUPPORTED` | a source topic task has multiple content groups |
|
|
132
150
|
| `TOPIC_COUNT_LIMIT` | activity topic count limit exceeded |
|
|
133
151
|
| `CHANNEL_NOT_FOUND` | source channel missing / type mismatch |
|
|
134
152
|
| `TASK_COUNT_LIMIT` | project task count limit exceeded |
|