@thinkingai/ae-cli 6.0.38 → 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-ITKTO6JS.js → te-analysis-GJI5FZUL.js} +1152 -13
- package/dist/{te-analysis-RAC67YYD.js → te-analysis-N2BRDJZ5.js} +1152 -13
- 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 +4 -1
- 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 +104 -42
- package/skills/ae-analysis/references/entity_id_import_options.md +1 -1
- 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 +2 -2
- package/skills/ae-metadata/SKILL.md +1 -1
- package/dist/config-BSSALXEN.js +0 -128
- package/dist/sync-QFP4XFN3.js +0 -485
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createCapabilityCommand
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-TS6BUGUY.js";
|
|
4
4
|
import {
|
|
5
5
|
registerCapabilityGatewayRoute
|
|
6
6
|
} from "./chunk-PTE56QPL.js";
|
|
7
|
-
import "./chunk-RGXCNC4N.js";
|
|
8
7
|
import {
|
|
9
8
|
printError
|
|
10
|
-
} from "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import
|
|
9
|
+
} from "./chunk-YTG6Q75E.js";
|
|
10
|
+
import "./chunk-GS2P7LFD.js";
|
|
11
|
+
import "./chunk-Z3OXWCIA.js";
|
|
12
|
+
import "./chunk-YV52FB5G.js";
|
|
13
|
+
import "./chunk-GJJA4CQZ.js";
|
|
14
|
+
import {
|
|
15
|
+
CliValidationError
|
|
16
|
+
} from "./chunk-AXDXJTPC.js";
|
|
17
|
+
import "./chunk-JHENBQ5B.js";
|
|
16
18
|
|
|
17
19
|
// src/commands/te-engage/shared.ts
|
|
18
20
|
function createEngageCapabilityCommand(cliService, config) {
|
|
@@ -230,7 +232,12 @@ var flowSave = createEngageFlowCapabilityCommand({
|
|
|
230
232
|
description: "Build, preview, or commit an operation-based flow draft.",
|
|
231
233
|
flags: [
|
|
232
234
|
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
233
|
-
{
|
|
235
|
+
{
|
|
236
|
+
name: "req",
|
|
237
|
+
type: "json",
|
|
238
|
+
required: true,
|
|
239
|
+
desc: "Operation-based flow save request. Custom audience node configs and branches use targetDefinitionRequest."
|
|
240
|
+
}
|
|
234
241
|
],
|
|
235
242
|
risk: "write",
|
|
236
243
|
validate: (ctx) => {
|
|
@@ -1030,16 +1037,16 @@ var presetEventUpdate = createEngageSettingCapabilityCommand({
|
|
|
1030
1037
|
description: "Update the project's preset metric event config (add/active/recharge event definitions).",
|
|
1031
1038
|
flags: [
|
|
1032
1039
|
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
1033
|
-
{ name: "add-event-
|
|
1034
|
-
{ name: "active-event-
|
|
1035
|
-
{ name: "recharge-event-
|
|
1040
|
+
{ name: "add-event-definition", type: "json", required: false, desc: "Semantic add-event definition." },
|
|
1041
|
+
{ name: "active-event-definition", type: "json", required: false, desc: "Semantic active-event definition." },
|
|
1042
|
+
{ name: "recharge-event-definition", type: "json", required: false, desc: "Semantic recharge event definition." }
|
|
1036
1043
|
],
|
|
1037
1044
|
risk: "write",
|
|
1038
1045
|
buildInput: (ctx) => ({
|
|
1039
1046
|
project_id: ctx.num("project-id"),
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1047
|
+
add_event_definition: ctx.json("add-event-definition") || void 0,
|
|
1048
|
+
active_event_definition: ctx.json("active-event-definition") || void 0,
|
|
1049
|
+
recharge_event_definition: ctx.json("recharge-event-definition") || void 0
|
|
1043
1050
|
})
|
|
1044
1051
|
});
|
|
1045
1052
|
|
|
@@ -1077,31 +1084,21 @@ var commonMetricGet = createEngageSettingCapabilityCommand({
|
|
|
1077
1084
|
|
|
1078
1085
|
// src/commands/te-engage/engage-setting/common-metric/metric-qp-validation.ts
|
|
1079
1086
|
var VALID_WINDOW_TIME_UNITS = /* @__PURE__ */ new Set(["minute", "hour", "day"]);
|
|
1080
|
-
function
|
|
1081
|
-
|
|
1082
|
-
try {
|
|
1083
|
-
parsed = JSON.parse(metricQp);
|
|
1084
|
-
} catch {
|
|
1087
|
+
function validateMetricDefinitionFlag(definition) {
|
|
1088
|
+
if (definition === null || typeof definition !== "object" || Array.isArray(definition)) {
|
|
1085
1089
|
printError(
|
|
1086
1090
|
"validation",
|
|
1087
|
-
"--metric-
|
|
1088
|
-
"
|
|
1091
|
+
"--metric-definition must be a JSON object.",
|
|
1092
|
+
"Pass a semantic event or formula metric definition."
|
|
1089
1093
|
);
|
|
1090
1094
|
process.exit(1);
|
|
1091
1095
|
}
|
|
1092
|
-
|
|
1096
|
+
const type = definition.type;
|
|
1097
|
+
if (type !== "event" && type !== "formula") {
|
|
1093
1098
|
printError(
|
|
1094
1099
|
"validation",
|
|
1095
|
-
"--metric-
|
|
1096
|
-
|
|
1097
|
-
);
|
|
1098
|
-
process.exit(1);
|
|
1099
|
-
}
|
|
1100
|
-
if (Object.keys(parsed).length === 0) {
|
|
1101
|
-
printError(
|
|
1102
|
-
"validation",
|
|
1103
|
-
"--metric-qp cannot be an empty JSON object.",
|
|
1104
|
-
"Pass a complete metric QP expression instead of {}."
|
|
1100
|
+
"--metric-definition.type must be event or formula.",
|
|
1101
|
+
"Do not pass legacy type=0/1 metric_qp."
|
|
1105
1102
|
);
|
|
1106
1103
|
process.exit(1);
|
|
1107
1104
|
}
|
|
@@ -1135,10 +1132,10 @@ var writeFlags = [
|
|
|
1135
1132
|
{ name: "metric-type", type: "number", required: true, desc: "Metric type; create requires 1 (PRESET)." },
|
|
1136
1133
|
{ name: "metric-name", type: "string", required: true, desc: "Metric name (^[a-z][0-9a-z_]{0,79}$)." },
|
|
1137
1134
|
{
|
|
1138
|
-
name: "metric-
|
|
1139
|
-
type: "
|
|
1135
|
+
name: "metric-definition",
|
|
1136
|
+
type: "json",
|
|
1140
1137
|
required: true,
|
|
1141
|
-
desc: "
|
|
1138
|
+
desc: "Semantic event or formula metric definition."
|
|
1142
1139
|
},
|
|
1143
1140
|
{ name: "metric-window-num", type: "number", required: true, desc: "Metric window number." },
|
|
1144
1141
|
{
|
|
@@ -1157,7 +1154,7 @@ var buildWriteInput = (ctx) => ({
|
|
|
1157
1154
|
project_id: ctx.num("project-id"),
|
|
1158
1155
|
metric_type: ctx.num("metric-type"),
|
|
1159
1156
|
metric_name: ctx.str("metric-name"),
|
|
1160
|
-
|
|
1157
|
+
metric_definition: ctx.json("metric-definition"),
|
|
1161
1158
|
metric_window_num: ctx.num("metric-window-num"),
|
|
1162
1159
|
metric_window_time_unit: ctx.str("metric-window-time-unit"),
|
|
1163
1160
|
display_name: ctx.str("display-name"),
|
|
@@ -1170,12 +1167,12 @@ var commonMetricCreate = createEngageSettingCapabilityCommand({
|
|
|
1170
1167
|
resource: "common-metric",
|
|
1171
1168
|
command: "create",
|
|
1172
1169
|
capabilityId: "engage-setting.common-metric.create",
|
|
1173
|
-
description: "Create a PRESET common metric
|
|
1170
|
+
description: "Create a PRESET common metric from a semantic event/formula definition.",
|
|
1174
1171
|
flags: writeFlags,
|
|
1175
1172
|
risk: "write",
|
|
1176
1173
|
validate: (ctx) => {
|
|
1177
1174
|
validatePresetMetricTypeFlag(ctx.num("metric-type"));
|
|
1178
|
-
|
|
1175
|
+
validateMetricDefinitionFlag(ctx.json("metric-definition"));
|
|
1179
1176
|
validateMetricWindowTimeUnitFlag(ctx.str("metric-window-time-unit"));
|
|
1180
1177
|
},
|
|
1181
1178
|
buildInput: buildWriteInput
|
|
@@ -1187,10 +1184,10 @@ var writeFlags2 = [
|
|
|
1187
1184
|
{ name: "metric-type", type: "number", required: true, desc: "Metric type; use 1 (PRESET) for common metrics." },
|
|
1188
1185
|
{ name: "metric-name", type: "string", required: true, desc: "Metric name (existing PRESET metric)." },
|
|
1189
1186
|
{
|
|
1190
|
-
name: "metric-
|
|
1191
|
-
type: "
|
|
1187
|
+
name: "metric-definition",
|
|
1188
|
+
type: "json",
|
|
1192
1189
|
required: true,
|
|
1193
|
-
desc: "
|
|
1190
|
+
desc: "Semantic event or formula metric definition."
|
|
1194
1191
|
},
|
|
1195
1192
|
{ name: "metric-window-num", type: "number", required: true, desc: "Metric window number." },
|
|
1196
1193
|
{
|
|
@@ -1209,7 +1206,7 @@ var buildWriteInput2 = (ctx) => ({
|
|
|
1209
1206
|
project_id: ctx.num("project-id"),
|
|
1210
1207
|
metric_type: ctx.num("metric-type"),
|
|
1211
1208
|
metric_name: ctx.str("metric-name"),
|
|
1212
|
-
|
|
1209
|
+
metric_definition: ctx.json("metric-definition"),
|
|
1213
1210
|
metric_window_num: ctx.num("metric-window-num"),
|
|
1214
1211
|
metric_window_time_unit: ctx.str("metric-window-time-unit"),
|
|
1215
1212
|
display_name: ctx.str("display-name"),
|
|
@@ -1226,7 +1223,7 @@ var commonMetricUpdate = createEngageSettingCapabilityCommand({
|
|
|
1226
1223
|
flags: writeFlags2,
|
|
1227
1224
|
risk: "write",
|
|
1228
1225
|
validate: (ctx) => {
|
|
1229
|
-
|
|
1226
|
+
validateMetricDefinitionFlag(ctx.json("metric-definition"));
|
|
1230
1227
|
validateMetricWindowTimeUnitFlag(ctx.str("metric-window-time-unit"));
|
|
1231
1228
|
},
|
|
1232
1229
|
buildInput: buildWriteInput2
|
|
@@ -1249,44 +1246,6 @@ var commonMetricDelete = createEngageSettingCapabilityCommand({
|
|
|
1249
1246
|
})
|
|
1250
1247
|
});
|
|
1251
1248
|
|
|
1252
|
-
// src/commands/te-engage/engage-setting/query/cluster-qp-skill.ts
|
|
1253
|
-
var queryClusterQpSkill = createEngageSettingCapabilityCommand({
|
|
1254
|
-
resource: "query",
|
|
1255
|
-
command: "cluster-qp-skill",
|
|
1256
|
-
capabilityId: "engage-setting.query.cluster-qp-skill",
|
|
1257
|
-
description: "Query the mix-cluster QP skill definition for audience, trigger, and completion event objects. Returns skill text (not final QP JSON). Use it before save when build-save-guide requires targetConfig.qp, triggerConfig.triggerRule, clientConfig.clientQp, or completionIndicatorDef.event.",
|
|
1258
|
-
flags: [
|
|
1259
|
-
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
1260
|
-
{
|
|
1261
|
-
name: "response-mode",
|
|
1262
|
-
type: "string",
|
|
1263
|
-
required: false,
|
|
1264
|
-
desc: "Skill content mode: base, examples, or full. Default: full."
|
|
1265
|
-
},
|
|
1266
|
-
{
|
|
1267
|
-
name: "condition-subtype",
|
|
1268
|
-
type: "string",
|
|
1269
|
-
required: false,
|
|
1270
|
-
desc: "Condition subtype selector: core, behavior_seq, or all. Default: all."
|
|
1271
|
-
}
|
|
1272
|
-
],
|
|
1273
|
-
risk: "read",
|
|
1274
|
-
buildInput: (ctx) => {
|
|
1275
|
-
const input = {
|
|
1276
|
-
project_id: ctx.num("project-id")
|
|
1277
|
-
};
|
|
1278
|
-
const responseMode = ctx.str("response-mode");
|
|
1279
|
-
const conditionSubtype = ctx.str("condition-subtype");
|
|
1280
|
-
if (responseMode) {
|
|
1281
|
-
input.response_mode = responseMode;
|
|
1282
|
-
}
|
|
1283
|
-
if (conditionSubtype) {
|
|
1284
|
-
input.condition_subtype = conditionSubtype;
|
|
1285
|
-
}
|
|
1286
|
-
return input;
|
|
1287
|
-
}
|
|
1288
|
-
});
|
|
1289
|
-
|
|
1290
1249
|
// src/commands/te-engage/engage-setting/index.ts
|
|
1291
1250
|
var commands2 = [
|
|
1292
1251
|
channelTouchLimitsList,
|
|
@@ -1326,8 +1285,7 @@ var commands2 = [
|
|
|
1326
1285
|
commonMetricGet,
|
|
1327
1286
|
commonMetricCreate,
|
|
1328
1287
|
commonMetricUpdate,
|
|
1329
|
-
commonMetricDelete
|
|
1330
|
-
queryClusterQpSkill
|
|
1288
|
+
commonMetricDelete
|
|
1331
1289
|
];
|
|
1332
1290
|
var engage_setting_default = commands2;
|
|
1333
1291
|
|
|
@@ -1620,21 +1578,21 @@ var presetMetricSet = createEngageSceneCapabilityCommand({
|
|
|
1620
1578
|
resource: "preset-metric",
|
|
1621
1579
|
command: "set",
|
|
1622
1580
|
capabilityId: "engage-scene.preset-metric.set",
|
|
1623
|
-
description: "Set
|
|
1581
|
+
description: "Set semantic impression/click/attend event definitions of a config item.",
|
|
1624
1582
|
flags: [
|
|
1625
1583
|
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
1626
1584
|
{ name: "config-id", type: "string", required: true, desc: "Config item ID." },
|
|
1627
|
-
{ name: "impression-event-
|
|
1628
|
-
{ name: "click-event-
|
|
1629
|
-
{ name: "attend-event-
|
|
1585
|
+
{ name: "impression-event-definition", type: "json", required: false, desc: "Semantic impression event definition." },
|
|
1586
|
+
{ name: "click-event-definition", type: "json", required: false, desc: "Semantic click event definition." },
|
|
1587
|
+
{ name: "attend-event-definition", type: "json", required: false, desc: "Semantic attend event definition." }
|
|
1630
1588
|
],
|
|
1631
1589
|
risk: "write",
|
|
1632
1590
|
buildInput: (ctx) => ({
|
|
1633
1591
|
project_id: ctx.num("project-id"),
|
|
1634
1592
|
config_id: ctx.str("config-id"),
|
|
1635
|
-
|
|
1636
|
-
|
|
1637
|
-
|
|
1593
|
+
impression_event_definition: ctx.json("impression-event-definition") || void 0,
|
|
1594
|
+
click_event_definition: ctx.json("click-event-definition") || void 0,
|
|
1595
|
+
attend_event_definition: ctx.json("attend-event-definition") || void 0
|
|
1638
1596
|
})
|
|
1639
1597
|
});
|
|
1640
1598
|
|
|
@@ -1903,7 +1861,7 @@ var strategyCreate = createEngageSceneCapabilityCommand({
|
|
|
1903
1861
|
name: "payload",
|
|
1904
1862
|
type: "json",
|
|
1905
1863
|
required: true,
|
|
1906
|
-
desc: "ConfigStrategyAddDTO JSON body
|
|
1864
|
+
desc: "ConfigStrategyAddDTO JSON body. Custom audiences use definitionRequest."
|
|
1907
1865
|
}
|
|
1908
1866
|
],
|
|
1909
1867
|
risk: "write",
|
|
@@ -2002,7 +1960,7 @@ var strategyUpdate = createEngageSceneCapabilityCommand({
|
|
|
2002
1960
|
name: "payload",
|
|
2003
1961
|
type: "json",
|
|
2004
1962
|
required: true,
|
|
2005
|
-
desc: "ConfigStrategyModifyDTO JSON body
|
|
1963
|
+
desc: "ConfigStrategyModifyDTO JSON body including strategyUuid. Custom audiences use definitionRequest."
|
|
2006
1964
|
}
|
|
2007
1965
|
],
|
|
2008
1966
|
risk: "write",
|
|
@@ -2038,10 +1996,10 @@ var strategyPredict = createEngageSceneCapabilityCommand({
|
|
|
2038
1996
|
flags: [
|
|
2039
1997
|
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
2040
1998
|
{
|
|
2041
|
-
name: "
|
|
2042
|
-
type: "
|
|
1999
|
+
name: "definition-request",
|
|
2000
|
+
type: "json",
|
|
2043
2001
|
required: true,
|
|
2044
|
-
desc: "
|
|
2002
|
+
desc: "Semantic audience definition request."
|
|
2045
2003
|
},
|
|
2046
2004
|
{
|
|
2047
2005
|
name: "zone-offset",
|
|
@@ -2063,9 +2021,12 @@ var strategyPredict = createEngageSceneCapabilityCommand({
|
|
|
2063
2021
|
}
|
|
2064
2022
|
],
|
|
2065
2023
|
risk: "read",
|
|
2024
|
+
validate: (ctx) => {
|
|
2025
|
+
readRequiredJsonObject(ctx, "definition-request");
|
|
2026
|
+
},
|
|
2066
2027
|
buildInput: (ctx) => ({
|
|
2067
2028
|
project_id: ctx.num("project-id"),
|
|
2068
|
-
|
|
2029
|
+
definition_request: readRequiredJsonObject(ctx, "definition-request"),
|
|
2069
2030
|
zone_offset: ctx.num("zone-offset"),
|
|
2070
2031
|
...ctx.str("strategy-uuid") ? { strategy_uuid: ctx.str("strategy-uuid") } : {},
|
|
2071
2032
|
...ctx.str("request-id") ? { request_id: ctx.str("request-id") } : {}
|
|
@@ -2448,6 +2409,25 @@ var activityInfoList = createEngageActivityCapabilityCommand({
|
|
|
2448
2409
|
})
|
|
2449
2410
|
});
|
|
2450
2411
|
|
|
2412
|
+
// src/commands/te-engage/engage-activity/approval/submit.ts
|
|
2413
|
+
var approvalSubmit = createEngageActivityCapabilityCommand({
|
|
2414
|
+
resource: "approval",
|
|
2415
|
+
command: "submit",
|
|
2416
|
+
capabilityId: "engage-activity.approval.submit",
|
|
2417
|
+
description: "Submit an activity for approval.",
|
|
2418
|
+
flags: [
|
|
2419
|
+
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
2420
|
+
{ name: "activity-id", type: "string", required: true, desc: "Activity ID." },
|
|
2421
|
+
{ name: "reason", type: "string", required: false, desc: "Optional submit note." }
|
|
2422
|
+
],
|
|
2423
|
+
risk: "write",
|
|
2424
|
+
buildInput: (ctx) => ({
|
|
2425
|
+
project_id: ctx.num("project-id"),
|
|
2426
|
+
activity_id: ctx.str("activity-id"),
|
|
2427
|
+
reason: ctx.str("reason") || void 0
|
|
2428
|
+
})
|
|
2429
|
+
});
|
|
2430
|
+
|
|
2451
2431
|
// src/commands/te-engage/engage-activity/approval/approve.ts
|
|
2452
2432
|
var approvalApprove = createEngageActivityCapabilityCommand({
|
|
2453
2433
|
resource: "approval",
|
|
@@ -2505,6 +2485,197 @@ var approvalCancel = createEngageActivityCapabilityCommand({
|
|
|
2505
2485
|
})
|
|
2506
2486
|
});
|
|
2507
2487
|
|
|
2488
|
+
// src/commands/te-engage/engage-activity/payload-validation.ts
|
|
2489
|
+
var TOPIC_TASK_OVERRIDE_FIELDS = [
|
|
2490
|
+
"clusterKey",
|
|
2491
|
+
"triggerDefinition",
|
|
2492
|
+
"triggerRule",
|
|
2493
|
+
"triggerType",
|
|
2494
|
+
"triggerTime",
|
|
2495
|
+
"triggerCrontab",
|
|
2496
|
+
"startDate",
|
|
2497
|
+
"endDate",
|
|
2498
|
+
"triggerTimeStrategy",
|
|
2499
|
+
"tzOffset",
|
|
2500
|
+
"channelType",
|
|
2501
|
+
"channelId",
|
|
2502
|
+
"frequencyLimits",
|
|
2503
|
+
"enableChannelTouchLimits",
|
|
2504
|
+
"channelTouchLimitsRuleDef",
|
|
2505
|
+
"whitelistList",
|
|
2506
|
+
"expConfig"
|
|
2507
|
+
];
|
|
2508
|
+
var TOPIC_TASK_EXCLUSION_FIELDS = /* @__PURE__ */ new Set([
|
|
2509
|
+
"clusterOutFilters",
|
|
2510
|
+
"totalOutCFilter",
|
|
2511
|
+
"exclude",
|
|
2512
|
+
"excludes"
|
|
2513
|
+
]);
|
|
2514
|
+
function validateStandaloneActivityPayload(value) {
|
|
2515
|
+
const payload = requireObject(value);
|
|
2516
|
+
validateTriggerType(payload.triggerType, "triggerType");
|
|
2517
|
+
validateScheduleFields(payload);
|
|
2518
|
+
validateExperiment(payload.expConfig, "expConfig");
|
|
2519
|
+
validateSingleContentGroup(payload.groupContentList, "groupContentList");
|
|
2520
|
+
if (payload.triggerTimeStrategy !== "fixed_time_zone") {
|
|
2521
|
+
fail(
|
|
2522
|
+
"Activity tasks must use triggerTimeStrategy=fixed_time_zone.",
|
|
2523
|
+
"ACTIVITY_TRIGGER_TIME_STRATEGY_UNSUPPORTED",
|
|
2524
|
+
"triggerTimeStrategy",
|
|
2525
|
+
"Use the parent activity timezone. User timezone and user active time are not supported."
|
|
2526
|
+
);
|
|
2527
|
+
}
|
|
2528
|
+
if (typeof payload.tzOffset !== "number" || !Number.isFinite(payload.tzOffset)) {
|
|
2529
|
+
fail(
|
|
2530
|
+
"tzOffset is required for a standalone activity task.",
|
|
2531
|
+
"ACTIVITY_TIMEZONE_REQUIRED",
|
|
2532
|
+
"tzOffset",
|
|
2533
|
+
"Read the parent activity and copy its tzOffset exactly."
|
|
2534
|
+
);
|
|
2535
|
+
}
|
|
2536
|
+
}
|
|
2537
|
+
function validateActivityTopicPayload(value) {
|
|
2538
|
+
const payload = requireObject(value);
|
|
2539
|
+
validateTriggerType(payload.triggerType, "triggerType");
|
|
2540
|
+
validateScheduleFields(payload);
|
|
2541
|
+
validateExperiment(payload.expConfig, "expConfig");
|
|
2542
|
+
for (const listField of ["tasks", "modifyTaskList", "addTaskList"]) {
|
|
2543
|
+
const taskList2 = payload[listField];
|
|
2544
|
+
if (!Array.isArray(taskList2)) continue;
|
|
2545
|
+
taskList2.forEach((taskValue, index) => {
|
|
2546
|
+
const task = requireObject(taskValue, `${listField}[${index}]`);
|
|
2547
|
+
if (hasValue(task.targetClusterType) && task.targetClusterType !== 1) {
|
|
2548
|
+
fail(
|
|
2549
|
+
`${listField}[${index}].targetClusterType must be 1 (custom) for a topic task.`,
|
|
2550
|
+
"TOPIC_TASK_OVERRIDE_UNSUPPORTED",
|
|
2551
|
+
`${listField}[${index}].targetClusterType`,
|
|
2552
|
+
"Topic tasks always use the canonical custom audience mode and may only add an inclusion-only definitionRequest."
|
|
2553
|
+
);
|
|
2554
|
+
}
|
|
2555
|
+
for (const field of TOPIC_TASK_OVERRIDE_FIELDS) {
|
|
2556
|
+
if (hasValue(task[field])) {
|
|
2557
|
+
fail(
|
|
2558
|
+
`${listField}[${index}].${field} is not configurable for a topic task.`,
|
|
2559
|
+
"TOPIC_TASK_OVERRIDE_UNSUPPORTED",
|
|
2560
|
+
`${listField}[${index}].${field}`,
|
|
2561
|
+
"Topic tasks inherit schedule, channel, frequency, whitelist, and experiment settings from the topic."
|
|
2562
|
+
);
|
|
2563
|
+
}
|
|
2564
|
+
}
|
|
2565
|
+
if (containsAnyKey(task.definitionRequest, TOPIC_TASK_EXCLUSION_FIELDS)) {
|
|
2566
|
+
fail(
|
|
2567
|
+
`${listField}[${index}].definitionRequest must be an inclusion-only custom audience.`,
|
|
2568
|
+
"TOPIC_TASK_AUDIENCE_EXCLUSION_UNSUPPORTED",
|
|
2569
|
+
`${listField}[${index}].definitionRequest`,
|
|
2570
|
+
"Remove exclusion filters; topic tasks may only refine the shared topic audience with inclusion conditions."
|
|
2571
|
+
);
|
|
2572
|
+
}
|
|
2573
|
+
validateSingleContentGroup(
|
|
2574
|
+
task.groupContentList,
|
|
2575
|
+
`${listField}[${index}].groupContentList`
|
|
2576
|
+
);
|
|
2577
|
+
});
|
|
2578
|
+
}
|
|
2579
|
+
}
|
|
2580
|
+
function validateTriggerType(value, field) {
|
|
2581
|
+
if (value === 0 || value === 1) return;
|
|
2582
|
+
fail(
|
|
2583
|
+
`${field} only supports 0 (schedule single) or 1 (schedule repeat) for activities.`,
|
|
2584
|
+
"ACTIVITY_TRIGGER_TYPE_UNSUPPORTED",
|
|
2585
|
+
field,
|
|
2586
|
+
"Use engage-task for manual, event-triggered, or other triggered tasks."
|
|
2587
|
+
);
|
|
2588
|
+
}
|
|
2589
|
+
function validateScheduleFields(payload) {
|
|
2590
|
+
if (payload.triggerType === 0 && !hasValue(payload.triggerTime)) {
|
|
2591
|
+
fail(
|
|
2592
|
+
"triggerTime is required when triggerType=0.",
|
|
2593
|
+
"TRIGGER_TIME_REQUIRED",
|
|
2594
|
+
"triggerTime",
|
|
2595
|
+
"Use yyyy-MM-dd HH:mm in the parent activity timezone."
|
|
2596
|
+
);
|
|
2597
|
+
}
|
|
2598
|
+
if (payload.triggerType === 1) {
|
|
2599
|
+
for (const field of ["startDate", "endDate", "triggerCrontab"]) {
|
|
2600
|
+
if (!hasValue(payload[field])) {
|
|
2601
|
+
fail(
|
|
2602
|
+
`${field} is required when triggerType=1.`,
|
|
2603
|
+
"REPEAT_SCHEDULE_REQUIRED",
|
|
2604
|
+
field,
|
|
2605
|
+
"Provide the complete repeated schedule inside the parent activity period."
|
|
2606
|
+
);
|
|
2607
|
+
}
|
|
2608
|
+
}
|
|
2609
|
+
}
|
|
2610
|
+
}
|
|
2611
|
+
function validateExperiment(value, field) {
|
|
2612
|
+
if (value === void 0 || value === null) return;
|
|
2613
|
+
if (!isObject(value)) {
|
|
2614
|
+
fail(
|
|
2615
|
+
`${field} must be omitted or set to {"enableExp":false}.`,
|
|
2616
|
+
"ACTIVITY_EXPERIMENT_UNSUPPORTED",
|
|
2617
|
+
field,
|
|
2618
|
+
"A/B and horse-race experiments are not supported for activity tasks."
|
|
2619
|
+
);
|
|
2620
|
+
}
|
|
2621
|
+
for (const [key, item] of Object.entries(value)) {
|
|
2622
|
+
if (key === "enableExp" && item === false) continue;
|
|
2623
|
+
if (hasValue(item)) {
|
|
2624
|
+
fail(
|
|
2625
|
+
`${field} must not enable or configure an experiment.`,
|
|
2626
|
+
"ACTIVITY_EXPERIMENT_UNSUPPORTED",
|
|
2627
|
+
field,
|
|
2628
|
+
"Remove experiment groups and use exactly one non-experiment content group."
|
|
2629
|
+
);
|
|
2630
|
+
}
|
|
2631
|
+
}
|
|
2632
|
+
}
|
|
2633
|
+
function validateSingleContentGroup(value, field) {
|
|
2634
|
+
if (Array.isArray(value) && value.length !== 1) {
|
|
2635
|
+
fail(
|
|
2636
|
+
`${field} must contain exactly one non-experiment content group.`,
|
|
2637
|
+
"ACTIVITY_CONTENT_GROUPS_UNSUPPORTED",
|
|
2638
|
+
field,
|
|
2639
|
+
"Keep language variants inside the single group contentList."
|
|
2640
|
+
);
|
|
2641
|
+
}
|
|
2642
|
+
}
|
|
2643
|
+
function requireObject(value, field = "payload") {
|
|
2644
|
+
if (!isObject(value)) {
|
|
2645
|
+
fail(
|
|
2646
|
+
`${field} must be a JSON object.`,
|
|
2647
|
+
"ACTIVITY_PAYLOAD_INVALID",
|
|
2648
|
+
field,
|
|
2649
|
+
"Pass a native camelCase activity task or topic payload."
|
|
2650
|
+
);
|
|
2651
|
+
}
|
|
2652
|
+
return value;
|
|
2653
|
+
}
|
|
2654
|
+
function containsAnyKey(value, keys) {
|
|
2655
|
+
if (Array.isArray(value)) return value.some((item) => containsAnyKey(item, keys));
|
|
2656
|
+
if (!isObject(value)) return false;
|
|
2657
|
+
return Object.entries(value).some(
|
|
2658
|
+
([key, item]) => keys.has(key) && hasValue(item) || containsAnyKey(item, keys)
|
|
2659
|
+
);
|
|
2660
|
+
}
|
|
2661
|
+
function hasValue(value) {
|
|
2662
|
+
if (value === void 0 || value === null) return false;
|
|
2663
|
+
if (typeof value === "string") return value.trim().length > 0;
|
|
2664
|
+
if (Array.isArray(value)) return value.length > 0;
|
|
2665
|
+
if (isObject(value)) return Object.keys(value).length > 0;
|
|
2666
|
+
return true;
|
|
2667
|
+
}
|
|
2668
|
+
function isObject(value) {
|
|
2669
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
2670
|
+
}
|
|
2671
|
+
function fail(message, code, field, hint) {
|
|
2672
|
+
throw new CliValidationError(message, {
|
|
2673
|
+
code,
|
|
2674
|
+
hint,
|
|
2675
|
+
location: { field }
|
|
2676
|
+
});
|
|
2677
|
+
}
|
|
2678
|
+
|
|
2508
2679
|
// src/commands/te-engage/engage-activity/topic/create.ts
|
|
2509
2680
|
var topicCreate = createEngageActivityCapabilityCommand({
|
|
2510
2681
|
resource: "topic",
|
|
@@ -2517,10 +2688,11 @@ var topicCreate = createEngageActivityCapabilityCommand({
|
|
|
2517
2688
|
name: "payload",
|
|
2518
2689
|
type: "json",
|
|
2519
2690
|
required: true,
|
|
2520
|
-
desc: "TopicAddDTO JSON body.
|
|
2691
|
+
desc: "TopicAddDTO JSON body. Use triggerType 0/1 and no experiment. Topic tasks may only add an inclusion-only definitionRequest and inherit shared settings."
|
|
2521
2692
|
}
|
|
2522
2693
|
],
|
|
2523
2694
|
risk: "write",
|
|
2695
|
+
validate: (ctx) => validateActivityTopicPayload(ctx.json("payload")),
|
|
2524
2696
|
buildInput: (ctx) => ({
|
|
2525
2697
|
project_id: ctx.num("project-id"),
|
|
2526
2698
|
payload: ctx.json("payload")
|
|
@@ -2539,10 +2711,11 @@ var topicUpdate = createEngageActivityCapabilityCommand({
|
|
|
2539
2711
|
name: "payload",
|
|
2540
2712
|
type: "json",
|
|
2541
2713
|
required: true,
|
|
2542
|
-
desc: "TopicModifyReq JSON body
|
|
2714
|
+
desc: "TopicModifyReq JSON body. Use triggerType 0/1 and no experiment. Topic tasks may retain targetClusterType=1 from get, add an inclusion-only definitionRequest, and otherwise inherit shared settings."
|
|
2543
2715
|
}
|
|
2544
2716
|
],
|
|
2545
2717
|
risk: "write",
|
|
2718
|
+
validate: (ctx) => validateActivityTopicPayload(ctx.json("payload")),
|
|
2546
2719
|
buildInput: (ctx) => ({
|
|
2547
2720
|
project_id: ctx.num("project-id"),
|
|
2548
2721
|
payload: ctx.json("payload")
|
|
@@ -2714,10 +2887,11 @@ var taskCreate = createEngageActivityCapabilityCommand({
|
|
|
2714
2887
|
name: "payload",
|
|
2715
2888
|
type: "json",
|
|
2716
2889
|
required: true,
|
|
2717
|
-
desc: "OperationTaskOpDTO JSON body
|
|
2890
|
+
desc: "OperationTaskOpDTO JSON body. Use triggerType 0/1, fixed_time_zone, no experiment, and one content group. Custom audiences use definitionRequest. Set activityId and leave topicId empty."
|
|
2718
2891
|
}
|
|
2719
2892
|
],
|
|
2720
2893
|
risk: "write",
|
|
2894
|
+
validate: (ctx) => validateStandaloneActivityPayload(ctx.json("payload")),
|
|
2721
2895
|
buildInput: (ctx) => ({
|
|
2722
2896
|
project_id: ctx.num("project-id"),
|
|
2723
2897
|
payload: ctx.json("payload")
|
|
@@ -2732,9 +2906,15 @@ var taskUpdate = createEngageActivityCapabilityCommand({
|
|
|
2732
2906
|
description: "Edit a standalone task from an OperationTaskOpDTO payload (includes taskId).",
|
|
2733
2907
|
flags: [
|
|
2734
2908
|
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
2735
|
-
{
|
|
2909
|
+
{
|
|
2910
|
+
name: "payload",
|
|
2911
|
+
type: "json",
|
|
2912
|
+
required: true,
|
|
2913
|
+
desc: "OperationTaskOpDTO JSON body including taskId. Use triggerType 0/1, fixed_time_zone, no experiment, and one content group."
|
|
2914
|
+
}
|
|
2736
2915
|
],
|
|
2737
2916
|
risk: "write",
|
|
2917
|
+
validate: (ctx) => validateStandaloneActivityPayload(ctx.json("payload")),
|
|
2738
2918
|
buildInput: (ctx) => ({
|
|
2739
2919
|
project_id: ctx.num("project-id"),
|
|
2740
2920
|
payload: ctx.json("payload")
|
|
@@ -2771,7 +2951,7 @@ var commands4 = [
|
|
|
2771
2951
|
activityEnd,
|
|
2772
2952
|
activityStats,
|
|
2773
2953
|
activityInfoList,
|
|
2774
|
-
|
|
2954
|
+
approvalSubmit,
|
|
2775
2955
|
approvalApprove,
|
|
2776
2956
|
approvalReject,
|
|
2777
2957
|
approvalCancel,
|
|
@@ -3213,6 +3393,49 @@ var taskModifyGroup = createEngageTaskCapabilityCommand({
|
|
|
3213
3393
|
})
|
|
3214
3394
|
});
|
|
3215
3395
|
|
|
3396
|
+
// src/commands/te-engage/engage-task/task/submit-approval.ts
|
|
3397
|
+
function buildSubmitApprovalInput(ctx) {
|
|
3398
|
+
const taskId = ctx.str("task-id").trim();
|
|
3399
|
+
const request = ctx.json("request");
|
|
3400
|
+
if (taskId === "" === (request === void 0)) {
|
|
3401
|
+
throw new Error("Exactly one of --task-id or --request is required");
|
|
3402
|
+
}
|
|
3403
|
+
if (request !== void 0 && (request === null || typeof request !== "object" || Array.isArray(request))) {
|
|
3404
|
+
throw new Error("Flag --request must be a JSON object");
|
|
3405
|
+
}
|
|
3406
|
+
return {
|
|
3407
|
+
project_id: ctx.num("project-id"),
|
|
3408
|
+
...taskId !== "" && { task_id: taskId },
|
|
3409
|
+
...request !== void 0 && { request }
|
|
3410
|
+
};
|
|
3411
|
+
}
|
|
3412
|
+
var taskSubmitApproval = createEngageTaskCapabilityCommand({
|
|
3413
|
+
resource: "task",
|
|
3414
|
+
command: "submit-approval",
|
|
3415
|
+
capabilityId: "engage-task.task.submit-approval",
|
|
3416
|
+
description: "Save a draft task and submit it for approval.",
|
|
3417
|
+
flags: [
|
|
3418
|
+
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
3419
|
+
{
|
|
3420
|
+
name: "task-id",
|
|
3421
|
+
type: "string",
|
|
3422
|
+
required: false,
|
|
3423
|
+
desc: "Existing draft task ID. Exactly one of --task-id or --request is required."
|
|
3424
|
+
},
|
|
3425
|
+
{
|
|
3426
|
+
name: "request",
|
|
3427
|
+
type: "json",
|
|
3428
|
+
required: false,
|
|
3429
|
+
desc: "Legacy ApprovalSaveAndSubmitDTO JSON. Exactly one of --task-id or --request is required."
|
|
3430
|
+
}
|
|
3431
|
+
],
|
|
3432
|
+
risk: "write",
|
|
3433
|
+
validate: (ctx) => {
|
|
3434
|
+
buildSubmitApprovalInput(ctx);
|
|
3435
|
+
},
|
|
3436
|
+
buildInput: buildSubmitApprovalInput
|
|
3437
|
+
});
|
|
3438
|
+
|
|
3216
3439
|
// src/commands/te-engage/engage-task/task/build-save-guide.ts
|
|
3217
3440
|
var taskBuildSaveGuide = createEngageTaskCapabilityCommand({
|
|
3218
3441
|
resource: "task",
|
|
@@ -3290,7 +3513,12 @@ var taskSave = createEngageTaskCapabilityCommand({
|
|
|
3290
3513
|
description: "Create a task draft, or update an existing draft/paused task.",
|
|
3291
3514
|
flags: [
|
|
3292
3515
|
{ name: "project-id", type: "number", required: true, alias: "p", desc: "Numeric project ID." },
|
|
3293
|
-
{
|
|
3516
|
+
{
|
|
3517
|
+
name: "req",
|
|
3518
|
+
type: "json",
|
|
3519
|
+
required: true,
|
|
3520
|
+
desc: "Task save JSON; custom audiences use targetConfig.definitionRequest."
|
|
3521
|
+
}
|
|
3294
3522
|
],
|
|
3295
3523
|
risk: "write",
|
|
3296
3524
|
validate: (ctx) => {
|
|
@@ -3339,8 +3567,8 @@ var commands6 = [
|
|
|
3339
3567
|
segmentListRename,
|
|
3340
3568
|
segmentListSetVisibility,
|
|
3341
3569
|
taskDelete,
|
|
3342
|
-
taskModifyGroup
|
|
3343
|
-
|
|
3570
|
+
taskModifyGroup,
|
|
3571
|
+
taskSubmitApproval
|
|
3344
3572
|
];
|
|
3345
3573
|
var engage_task_default = commands6;
|
|
3346
3574
|
|