@thinkingai/ae-cli 6.1.11 → 6.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +0 -2
  2. package/README.zh.md +0 -2
  3. package/dist/{auth-NN55553T.js → auth-GBMV6TEJ.js} +2 -2
  4. package/dist/{auth-GDV3H5I4.js → auth-NDSXE54J.js} +4 -4
  5. package/dist/{capability-TPORIKRQ.js → capability-TAMDRZYV.js} +23 -10
  6. package/dist/{capability-VQNC5CF7.js → capability-U7TDEEEG.js} +23 -10
  7. package/dist/{chunk-GJJA4CQZ.js → chunk-3FY3RJ26.js} +0 -4
  8. package/dist/{chunk-GS2P7LFD.js → chunk-5XUSIK27.js} +2 -2
  9. package/dist/{chunk-7KQWSBSL.js → chunk-753BUTNZ.js} +3 -3
  10. package/dist/{chunk-VTXHDCBW.js → chunk-AFXA7BRK.js} +2 -2
  11. package/dist/chunk-IBH3LDAH.js +556 -0
  12. package/dist/{chunk-RBNKI5ZW.js → chunk-JUW4AJXN.js} +2 -2
  13. package/dist/{chunk-TS6BUGUY.js → chunk-QATA32VR.js} +3 -3
  14. package/dist/{chunk-Z3OXWCIA.js → chunk-S5NTSDBS.js} +2 -2
  15. package/dist/chunk-UIHQJK5E.js +556 -0
  16. package/dist/{chunk-VKD5WQKN.js → chunk-VLWOLBGZ.js} +142 -24
  17. package/dist/{chunk-YTG6Q75E.js → chunk-WZRX4KOH.js} +25 -3
  18. package/dist/{chunk-YV52FB5G.js → chunk-ZQKDZXDO.js} +1 -1
  19. package/dist/{cli-token-GL5MS5FK.js → cli-token-4UPER74P.js} +3 -3
  20. package/dist/{chunk-6A2FUCIS.js → client-L2YDMHQ6.js} +5 -6
  21. package/dist/{config-4VZNLBKF.js → config-OL2LWGBV.js} +4 -33
  22. package/dist/index.js +25 -38
  23. package/dist/{memory-RWJW4XFO.js → memory-MUP7PPL7.js} +4 -4
  24. package/dist/{memory-VO2ZJCRT.js → memory-U4O5PMXH.js} +4 -4
  25. package/dist/{metadata-YGTHR2XJ.js → metadata-UORZTW3T.js} +21 -11
  26. package/dist/{metadata-ZRN2GHPN.js → metadata-VVQ3AQT5.js} +21 -11
  27. package/dist/{model-CLUIK3K5.js → model-JTUEO5M4.js} +2 -2
  28. package/dist/{sync-3REDHGY6.js → sync-MOSFNBVR.js} +5 -5
  29. package/dist/{te-agent-XNPELAKX.js → te-agent-IFKZDHZI.js} +25 -18
  30. package/dist/{te-analysis-GJI5FZUL.js → te-analysis-KOKHJJPE.js} +1225 -450
  31. package/dist/{te-analysis-N2BRDJZ5.js → te-analysis-LLOCCBJ4.js} +1225 -450
  32. package/dist/{te-community-SQXKE5OO.js → te-community-HNKVTERD.js} +207 -12
  33. package/dist/{te-community-TYSNU3NQ.js → te-community-IWE5B7W6.js} +208 -12
  34. package/dist/{te-dataops-OWIADNSM.js → te-dataops-KQPYNAE3.js} +262 -145
  35. package/dist/{te-dataops-5TM7WZDI.js → te-dataops-KXCEB4CS.js} +262 -145
  36. package/dist/{te-engage-F7V55KVW.js → te-engage-BRLSRVQT.js} +960 -41
  37. package/dist/{te-engage-FMYAYCNV.js → te-engage-HE4OPZIT.js} +960 -41
  38. package/dist/{te-experiment-JWXOYJ3W.js → te-experiment-K5US7RMG.js} +115 -9
  39. package/dist/{te-experiment-UPDMHCAJ.js → te-experiment-WA7TFMEL.js} +115 -9
  40. package/dist/{te-kb-VRMEY3D4.js → te-kb-OIH3T6CS.js} +4 -4
  41. package/dist/{te-system-XGS5EQIQ.js → te-system-AZ3URMUO.js} +515 -11
  42. package/dist/{te-team-BZRDV2CM.js → te-team-GZPU6UWA.js} +5 -5
  43. package/dist/{update-HEDXGOJH.js → update-TOBFXF2V.js} +4 -4
  44. package/package.json +6 -6
  45. package/skills/ae-agent/SKILL.md +3 -3
  46. package/skills/ae-agent/references/list-skill-references.md +4 -4
  47. package/skills/ae-agent/references/read-skill-reference.md +10 -7
  48. package/skills/ae-agent/references/upload-skill-reference.md +11 -9
  49. package/skills/ae-analysis/SKILL.md +15 -12
  50. package/skills/ae-analysis/metadata_resolution.md +150 -0
  51. package/skills/ae-analysis/references/adhoc_export.md +17 -2
  52. package/skills/ae-analysis/references/adhoc_run.md +12 -8
  53. package/skills/ae-analysis/references/ai_models.md +31 -5
  54. package/skills/ae-analysis/references/analysis_data_retrieval.md +104 -16
  55. package/skills/ae-analysis/references/analysis_drilldown_contract.md +4 -4
  56. package/skills/ae-analysis/references/analysis_gateway_assets.md +12 -10
  57. package/skills/ae-analysis/references/artifact_download.md +4 -3
  58. package/skills/ae-analysis/references/asset_abnormal_list.md +5 -3
  59. package/skills/ae-analysis/references/asset_authentication_list.md +5 -3
  60. package/skills/ae-analysis/references/asset_search.md +5 -3
  61. package/skills/ae-analysis/references/bi_panel_page_data_export.md +1 -1
  62. package/skills/ae-analysis/references/bi_panel_page_data_run.md +4 -4
  63. package/skills/ae-analysis/references/catalog_export.md +28 -0
  64. package/skills/ae-analysis/references/catalog_list.md +44 -0
  65. package/skills/ae-analysis/references/command_index.md +72 -63
  66. package/skills/ae-analysis/references/dashboard_report_data_run.md +11 -4
  67. package/skills/ae-analysis/references/datatable_version_list.md +5 -3
  68. package/skills/ae-analysis/references/drilldown_entities_run.md +4 -4
  69. package/skills/ae-analysis/references/drilldown_events_run.md +2 -2
  70. package/skills/ae-analysis/references/drilldown_user_events_export.md +1 -1
  71. package/skills/ae-analysis/references/drilldown_user_events_run.md +2 -2
  72. package/skills/ae-analysis/references/entity_detail_run.md +4 -4
  73. package/skills/ae-analysis/references/entity_id_import_options.md +1 -1
  74. package/skills/ae-analysis/references/event_detail_run.md +4 -4
  75. package/skills/ae-analysis/references/event_export.md +21 -0
  76. package/skills/ae-analysis/references/event_list.md +7 -6
  77. package/skills/ae-analysis/references/exchange_rule_list.md +5 -3
  78. package/skills/ae-analysis/references/history_tag_data_drilldown_export.md +4 -2
  79. package/skills/ae-analysis/references/history_tag_data_drilldown_run.md +2 -2
  80. package/skills/ae-analysis/references/history_tag_data_run.md +2 -2
  81. package/skills/ae-analysis/references/metric_export.md +21 -0
  82. package/skills/ae-analysis/references/metric_list.md +8 -7
  83. package/skills/ae-analysis/references/property_export.md +21 -0
  84. package/skills/ae-analysis/references/property_list.md +9 -8
  85. package/skills/ae-analysis/references/query_context_get.md +20 -0
  86. package/skills/ae-analysis/references/query_create_result_cluster.md +1 -1
  87. package/skills/ae-analysis/references/report_change_log_list.md +1 -1
  88. package/skills/ae-analysis/references/report_create.md +3 -3
  89. package/skills/ae-analysis/references/report_data_run.md +8 -8
  90. package/skills/ae-analysis/references/report_update.md +3 -3
  91. package/skills/ae-analysis/references/report_version_rollback.md +1 -1
  92. package/skills/ae-analysis/references/rule_list.md +6 -4
  93. package/skills/ae-analysis/references/run_inspect.md +8 -5
  94. package/skills/ae-analysis/references/run_wait.md +37 -0
  95. package/skills/ae-analysis/references/user_cluster_export.md +13 -0
  96. package/skills/ae-analysis/references/user_cluster_list.md +6 -2
  97. package/skills/ae-analysis/references/user_cluster_member_export.md +5 -3
  98. package/skills/ae-analysis/references/user_cluster_member_list.md +4 -4
  99. package/skills/ae-analysis/references/user_tag_export.md +13 -0
  100. package/skills/ae-analysis/references/user_tag_list.md +6 -2
  101. package/skills/ae-analysis/references/user_tag_member_export.md +5 -3
  102. package/skills/ae-analysis/references/user_tag_member_list.md +4 -4
  103. package/skills/ae-analysis/references/virtual_property_create.md +2 -2
  104. package/skills/ae-community/SKILL.md +2 -2
  105. package/skills/ae-dataops/SKILL.md +4 -3
  106. package/skills/ae-dataops/references/dataops-flow-create.md +47 -3
  107. package/skills/ae-engage/SKILL.md +57 -7
  108. package/skills/ae-engage/references/activity-data-detail.md +61 -0
  109. package/skills/ae-engage/references/build-task-save-guide.md +37 -1
  110. package/skills/ae-engage/references/cancel-query-run.md +31 -0
  111. package/skills/ae-engage/references/common-metric.md +45 -0
  112. package/skills/ae-engage/references/config-item-analysis-report.md +14 -1
  113. package/skills/ae-engage/references/config-item-strategy-comparison.md +11 -1
  114. package/skills/ae-engage/references/config-item-trigger-report.md +15 -1
  115. package/skills/ae-engage/references/flow-metric-detail-report.md +134 -0
  116. package/skills/ae-engage/references/flow-metric-update.md +77 -0
  117. package/skills/ae-engage/references/flow-metric-user.md +118 -0
  118. package/skills/ae-engage/references/flow-node-metric-user.md +122 -0
  119. package/skills/ae-engage/references/flow-node-user.md +122 -0
  120. package/skills/ae-engage/references/preset-event.md +2 -0
  121. package/skills/ae-engage/references/push-record-query.md +32 -1
  122. package/skills/ae-engage/references/save-flow.md +14 -0
  123. package/skills/ae-engage/references/save-task.md +44 -0
  124. package/skills/ae-engage/references/scene-strategy-audience.md +12 -7
  125. package/skills/ae-engage/references/task-data-detail.md +9 -2
  126. package/skills/ae-engage/references/task-metric-detail.md +9 -2
  127. package/skills/ae-engage/references/task-submit-approval.md +3 -0
  128. package/skills/ae-experiment/SKILL.md +17 -4
  129. package/skills/ae-experiment/references/delete_metric.md +2 -0
  130. package/skills/ae-experiment/references/query_experiment_metric_trend.md +5 -5
  131. package/skills/ae-experiment/references/query_experiment_report_summary.md +4 -3
  132. package/skills/ae-experiment/references/query_experiment_sample_size_report.md +6 -5
  133. package/skills/ae-experiment/references/save_build_guide.md +39 -0
  134. package/skills/ae-experiment/references/save_experiment.md +11 -0
  135. package/skills/ae-experiment/references/save_metric.md +5 -1
  136. package/skills/ae-experiment/references/save_validate.md +33 -0
  137. package/skills/ae-experiment-design/SKILL.md +1 -1
  138. package/skills/ae-experiment-design/references/platform-operations.md +10 -4
  139. package/skills/ae-experiment-insight/references/platform-operations.md +10 -4
  140. package/skills/ae-metadata/SKILL.md +2 -1
  141. package/skills/ae-metadata/references/metadata_data_table_download.md +10 -2
  142. package/skills/ae-metadata/references/metadata_data_table_list.md +5 -2
  143. package/skills/ae-system/SKILL.md +66 -3
  144. package/dist/chunk-DT6Y3TD7.js +0 -232
  145. package/dist/chunk-MVDZ7DBQ.js +0 -231
  146. package/dist/chunk-NBPKWKRA.js +0 -51
  147. package/dist/client-DAIPF7XN.js +0 -23
  148. package/dist/raw-52B4UKO4.js +0 -71
  149. package/dist/te-meta-53BVXPFI.js +0 -95
  150. package/dist/te-meta-TOCBPBXI.js +0 -95
@@ -0,0 +1,77 @@
1
+ # Flow metric update
2
+
3
+ Use this reference when the user asks to configure, replace, or save effect metric settings for a flow canvas.
4
+
5
+ Mapped CLI command:
6
+
7
+ - `ae-cli engage-flow metric update`
8
+
9
+ Mapped capability:
10
+
11
+ - `engage-flow.metric.update`
12
+
13
+ ## Safety
14
+
15
+ This is a write command. Only run it when the user explicitly asks to change a flow's metric configuration. Use `--dry-run` first when the final `metric_map` was assembled by an agent.
16
+
17
+ The backend uses a clean-and-insert update model: omitted existing metric settings may be deleted. Treat `metric_map` as the complete desired metric configuration for the flow, not a partial patch.
18
+
19
+ ## Required input
20
+
21
+ - `--project-id`
22
+ - `--flow-id`
23
+ - `--metric-map '<metric_map_json>'`
24
+
25
+ ## Parameter guidance
26
+
27
+ - `flow_id` is the logical flow ID used by the flow canvas APIs.
28
+ - `metric_map` is a JSON object keyed by metric target-user group. Valid first-level keys are exactly:
29
+ - `trigger`
30
+ - `view`
31
+ - `click`
32
+ - `ab_test`
33
+ - Preserve first-level group keys exactly. Do not convert `ab_test` to `abTest`.
34
+ - Each group value is an array of Hermes metric DTO objects.
35
+ - Use DTO field names from `HermesMetricReqDTO`: `metricSettingId`, `metricType`, `metricName`, `metricQp`, `metricWindowNum`, `metricWindowTimeUnit`, `displayName`, `orderId`, `note`, and `metricParams`.
36
+ - The CLI boundary accepts snake_case nested DTO fields too, but prefer the native camelCase names above in examples and generated payloads.
37
+ - For existing bindings, include `metricSettingId` so Hermes updates that binding instead of treating it as a new binding.
38
+ - For preset metrics, use `metricType: 1` and a real `metricName` discovered from `engage-setting common-metric list/get`.
39
+ - For custom metrics, use `metricType: 2` plus a complete `metricQp`, `metricWindowNum`, `metricWindowTimeUnit`, and `displayName`; Hermes creates the custom metric name.
40
+ - Do not invent metric names, event names, property names, QP structures, or metric-setting IDs. Read the existing flow detail and available metric definitions first, then update the complete desired metric map.
41
+
42
+ ## Examples
43
+
44
+ Dry-run updating an existing binding:
45
+
46
+ ```bash
47
+ ae-cli --dry-run engage-flow metric update \
48
+ --project-id 1 \
49
+ --flow-id flow_id_123 \
50
+ --metric-map '{"trigger":[{"metricSettingId":"setting_1","metricType":1,"metricName":"purchase_count","displayName":"Purchase count","orderId":1}]}'
51
+ ```
52
+
53
+ Apply the same update:
54
+
55
+ ```bash
56
+ ae-cli engage-flow metric update \
57
+ --project-id 1 \
58
+ --flow-id flow_id_123 \
59
+ --metric-map '{"trigger":[{"metricSettingId":"setting_1","metricType":1,"metricName":"purchase_count","displayName":"Purchase count","orderId":1}]}'
60
+ ```
61
+
62
+ Add a custom metric to the `view` group:
63
+
64
+ ```bash
65
+ ae-cli engage-flow metric update \
66
+ --project-id 1 \
67
+ --flow-id flow_id_123 \
68
+ --metric-map '{"view":[{"metricType":2,"metricQp":"{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}","metricWindowNum":1,"metricWindowTimeUnit":"day","displayName":"Purchase after view","orderId":1}]}'
69
+ ```
70
+
71
+ ## Common mistakes
72
+
73
+ - Do not pass `flow_uuid`; this command requires `flow_id`.
74
+ - Do not pass `metricId`; `HermesMetricReqDTO` has no `metricId` field. Use `metricSettingId` for an existing binding or `metricName` for a preset metric.
75
+ - Do not use arbitrary first-level keys such as `custom`, `ACTION`, or `channel`; use only `trigger`, `view`, `click`, or `ab_test`.
76
+ - Do not submit only the group you want to change unless deleting omitted groups is intended.
77
+ - Do not use this command to query report data. For report metric details, use `references/flow-metric-detail-report.md`.
@@ -0,0 +1,118 @@
1
+ # Flow metric-user
2
+
3
+ Use this reference when the user asks for users behind a process-level flow metric segment, such as a cell in the flow process report.
4
+
5
+ Mapped CLI commands:
6
+
7
+ - `ae-cli engage-flow metric-user run`
8
+ - `ae-cli engage-flow metric-user export`
9
+
10
+ Mapped capabilities:
11
+
12
+ - `engage-flow.metric-user.run`
13
+ - `engage-flow.metric-user.export`
14
+
15
+ Hermes SQL source: `FlowReportDataService#buildClusterUserSql`.
16
+
17
+ ## Choose the command
18
+
19
+ - Use `run` for a bounded inline preview of matched users.
20
+ - Use `export` for the full user-detail artifact.
21
+ - This command does not require `--node-uuid`; use `node-user` or `node-metric-user` for node-level cells.
22
+
23
+ ## Required input
24
+
25
+ - `--project-id`
26
+ - one of `--flow-id` or `--flow-uuid`
27
+ - either `--cluster-def '<cluster_def_json>'` or all of `--indicator-name`, `--start-time`, and `--end-time`
28
+
29
+ ## Optional input
30
+
31
+ - `--branch-id`
32
+ - `--request-id`
33
+ - `--data-view-type` (default: `2`)
34
+ - `--is-summary`
35
+ - `--push-language-code`
36
+ - `--user-time-zone`
37
+ - `--show-time-zone`
38
+ - `run` only: `--limit`
39
+ - `export` only: `--artifact-format csv|jsonl` (default: `jsonl`)
40
+ - `--timeout-seconds`
41
+
42
+ Only pass fields listed above. Hermes rejects extra top-level fields for this capability.
43
+
44
+ ## Segment selector contract
45
+
46
+ Prefer the explicit report fields. Set `--indicator-name` to the metric key returned by the process report and reuse the report date range. Hermes builds the internal cluster definition.
47
+
48
+ `--cluster-def` remains available for compatibility. When used, it must come from the selected report segment; do not invent or hand-minify partial JSON.
49
+
50
+ Required keys:
51
+
52
+ - `indicatorName`
53
+ - `dataViewType`
54
+ - `isSummary`
55
+
56
+ Date keys depend on `isSummary`:
57
+
58
+ - `isSummary=true`: require `filterStartDate` and `filterEndDate`
59
+ - `isSummary=false`: require `startDate` and `endDate`
60
+
61
+ Dates must use `yyyy-MM-dd`, and start must be earlier than or equal to end.
62
+
63
+ ## Examples
64
+
65
+ Inline preview:
66
+
67
+ ```bash
68
+ ae-cli engage-flow metric-user run \
69
+ --project-id 1 \
70
+ --flow-id flow_id_123 \
71
+ --indicator-name entry \
72
+ --start-time 2026-04-01 \
73
+ --end-time 2026-04-07 \
74
+ --limit 100 \
75
+ --timeout-seconds 120
76
+ ```
77
+
78
+ Export all matched users:
79
+
80
+ ```bash
81
+ ae-cli engage-flow metric-user export \
82
+ --project-id 1 \
83
+ --flow-id flow_id_123 \
84
+ --indicator-name entry \
85
+ --start-time 2026-04-01 \
86
+ --end-time 2026-04-07 \
87
+ --artifact-format csv \
88
+ --timeout-seconds 21600
89
+ ```
90
+
91
+ ## Export lifecycle
92
+
93
+ `export` returns `run_id` and `artifact_id`. Poll and download with:
94
+
95
+ ```bash
96
+ ae-cli engage-query run inspect --run-id <run_id>
97
+ ae-cli engage-query artifact download \
98
+ --run-id <run_id> \
99
+ --artifact-id <artifact_id> \
100
+ --output ./flow-metric-users.csv.gz
101
+ ```
102
+
103
+ Downloaded artifacts are gzip-compressed; keep the `.gz` suffix. Cancel running async work with:
104
+
105
+ ```bash
106
+ ae-cli engage-query query cancel --run-id <run_id>
107
+ ```
108
+
109
+ ## Output shape
110
+
111
+ - `run` returns `rows`, `total`, and `column_meta`.
112
+ - `export` writes one row per matched user. The primary column is usually `#user_id`.
113
+
114
+ ## Common mistakes
115
+
116
+ - Do not pass `--node-uuid` unless the process-level report segment actually needs branch/node context; for normal node cells use `node-user`.
117
+ - Use `--data-view-type`, not the report-only `--data-dim-type`, when selecting users without `--cluster-def`.
118
+ - If `cluster_def` is missing the date pair implied by `isSummary`, Hermes rejects it before SQL execution.
@@ -0,0 +1,122 @@
1
+ # Flow node-metric-user
2
+
3
+ Use this reference when the user asks for users behind a node-level metric segment on the flow canvas.
4
+
5
+ Mapped CLI commands:
6
+
7
+ - `ae-cli engage-flow node-metric-user run`
8
+ - `ae-cli engage-flow node-metric-user export`
9
+
10
+ Mapped capabilities:
11
+
12
+ - `engage-flow.node-metric-user.run`
13
+ - `engage-flow.node-metric-user.export`
14
+
15
+ Hermes SQL source: `FlowNodeReportDataService#buildMetricClusterUserSql`.
16
+
17
+ ## Choose the command
18
+
19
+ - Use `run` for a bounded inline preview of users behind the selected node metric segment.
20
+ - Use `export` for the full user-detail artifact.
21
+ - Use `node-user` for node data segments that are not metric-detail segments.
22
+ - Use `metric-user` for process-level flow metric cells.
23
+
24
+ ## Required input
25
+
26
+ - `--project-id`
27
+ - one of `--flow-id` or `--flow-uuid`
28
+ - `--node-uuid`
29
+ - either `--cluster-def '<cluster_def_json>'` or all of `--indicator-name`, `--start-time`, and `--end-time`
30
+
31
+ ## Optional input
32
+
33
+ - `--branch-id`
34
+ - `--request-id`
35
+ - `--data-view-type` (default: `2`)
36
+ - `--is-summary`
37
+ - `--push-language-code`
38
+ - `--user-time-zone`
39
+ - `--show-time-zone`
40
+ - `run` only: `--limit`
41
+ - `export` only: `--artifact-format csv|jsonl` (default: `jsonl`)
42
+ - `--timeout-seconds`
43
+
44
+ Only pass fields listed above. Hermes rejects extra top-level fields for this capability.
45
+
46
+ ## Segment selector contract
47
+
48
+ Prefer the explicit report fields. Set `--indicator-name` to the metric key returned by the node metric report and reuse the report date range. Hermes builds the internal cluster definition.
49
+
50
+ `--cluster-def` remains available for compatibility. When used, it must come from the selected node metric report segment; do not invent it.
51
+
52
+ Required keys:
53
+
54
+ - `indicatorName`
55
+ - `dataViewType`
56
+ - `isSummary`
57
+
58
+ Date keys depend on `isSummary`:
59
+
60
+ - `isSummary=true`: require `filterStartDate` and `filterEndDate`
61
+ - `isSummary=false`: require `startDate` and `endDate`
62
+
63
+ Dates must use `yyyy-MM-dd`, and start must be earlier than or equal to end.
64
+
65
+ ## Examples
66
+
67
+ Inline preview:
68
+
69
+ ```bash
70
+ ae-cli engage-flow node-metric-user run \
71
+ --project-id 1 \
72
+ --flow-id flow_id_123 \
73
+ --node-uuid node_uuid_123 \
74
+ --indicator-name metric_setting_id_123 \
75
+ --start-time 2026-04-01 \
76
+ --end-time 2026-04-07 \
77
+ --limit 100 \
78
+ --timeout-seconds 120
79
+ ```
80
+
81
+ Export all matched users:
82
+
83
+ ```bash
84
+ ae-cli engage-flow node-metric-user export \
85
+ --project-id 1 \
86
+ --flow-id flow_id_123 \
87
+ --node-uuid node_uuid_123 \
88
+ --indicator-name metric_setting_id_123 \
89
+ --start-time 2026-04-01 \
90
+ --end-time 2026-04-07 \
91
+ --artifact-format csv \
92
+ --timeout-seconds 21600
93
+ ```
94
+
95
+ ## Export lifecycle
96
+
97
+ `export` returns `run_id` and `artifact_id`. Poll and download with:
98
+
99
+ ```bash
100
+ ae-cli engage-query run inspect --run-id <run_id>
101
+ ae-cli engage-query artifact download \
102
+ --run-id <run_id> \
103
+ --artifact-id <artifact_id> \
104
+ --output ./flow-node-metric-users.csv.gz
105
+ ```
106
+
107
+ Downloaded artifacts are gzip-compressed; keep the `.gz` suffix. Cancel running async work with:
108
+
109
+ ```bash
110
+ ae-cli engage-query query cancel --run-id <run_id>
111
+ ```
112
+
113
+ ## Output shape
114
+
115
+ - `run` returns `rows`, `total`, and `column_meta`.
116
+ - `export` writes one row per matched user. The primary column is usually `#user_id`.
117
+
118
+ ## Common mistakes
119
+
120
+ - `--node-uuid` is required and must be the canvas node UUID.
121
+ - Do not use this for node data cells; use `node-user` so Hermes routes to the non-metric SQL builder.
122
+ - Use `--data-view-type`, not the report-only `--data-dim-type`, when selecting users without `--cluster-def`.
@@ -0,0 +1,122 @@
1
+ # Flow node-user
2
+
3
+ Use this reference when the user asks for users behind a node-level data segment on the flow canvas.
4
+
5
+ Mapped CLI commands:
6
+
7
+ - `ae-cli engage-flow node-user run`
8
+ - `ae-cli engage-flow node-user export`
9
+
10
+ Mapped capabilities:
11
+
12
+ - `engage-flow.node-user.run`
13
+ - `engage-flow.node-user.export`
14
+
15
+ Hermes SQL source: `FlowNodeReportDataService#buildClusterUserSql`.
16
+
17
+ ## Choose the command
18
+
19
+ - Use `run` for a bounded inline preview of users in the selected node data segment.
20
+ - Use `export` for the full user-detail artifact.
21
+ - Use `metric-user` for process-level flow metric cells.
22
+ - Use `node-metric-user` for node metric cells.
23
+
24
+ ## Required input
25
+
26
+ - `--project-id`
27
+ - one of `--flow-id` or `--flow-uuid`
28
+ - `--node-uuid`
29
+ - either `--cluster-def '<cluster_def_json>'` or all of `--indicator-name`, `--start-time`, and `--end-time`
30
+
31
+ ## Optional input
32
+
33
+ - `--branch-id`
34
+ - `--request-id`
35
+ - `--data-view-type` (default: `2`)
36
+ - `--is-summary`
37
+ - `--push-language-code`
38
+ - `--user-time-zone`
39
+ - `--show-time-zone`
40
+ - `run` only: `--limit`
41
+ - `export` only: `--artifact-format csv|jsonl` (default: `jsonl`)
42
+ - `--timeout-seconds`
43
+
44
+ Only pass fields listed above. Hermes rejects extra top-level fields for this capability.
45
+
46
+ ## Segment selector contract
47
+
48
+ Prefer the explicit report fields. Set `--indicator-name` to the metric key returned by the node report and reuse the report date range. Hermes builds the internal cluster definition.
49
+
50
+ `--cluster-def` remains available for compatibility. When used, it must come from the selected node report segment; do not invent it.
51
+
52
+ Required keys:
53
+
54
+ - `indicatorName`
55
+ - `dataViewType`
56
+ - `isSummary`
57
+
58
+ Date keys depend on `isSummary`:
59
+
60
+ - `isSummary=true`: require `filterStartDate` and `filterEndDate`
61
+ - `isSummary=false`: require `startDate` and `endDate`
62
+
63
+ Dates must use `yyyy-MM-dd`, and start must be earlier than or equal to end.
64
+
65
+ ## Examples
66
+
67
+ Inline preview:
68
+
69
+ ```bash
70
+ ae-cli engage-flow node-user run \
71
+ --project-id 1 \
72
+ --flow-id flow_id_123 \
73
+ --node-uuid node_uuid_123 \
74
+ --indicator-name entry \
75
+ --start-time 2026-04-01 \
76
+ --end-time 2026-04-07 \
77
+ --limit 100 \
78
+ --timeout-seconds 120
79
+ ```
80
+
81
+ Export all matched users:
82
+
83
+ ```bash
84
+ ae-cli engage-flow node-user export \
85
+ --project-id 1 \
86
+ --flow-id flow_id_123 \
87
+ --node-uuid node_uuid_123 \
88
+ --indicator-name entry \
89
+ --start-time 2026-04-01 \
90
+ --end-time 2026-04-07 \
91
+ --artifact-format csv \
92
+ --timeout-seconds 21600
93
+ ```
94
+
95
+ ## Export lifecycle
96
+
97
+ `export` returns `run_id` and `artifact_id`. Poll and download with:
98
+
99
+ ```bash
100
+ ae-cli engage-query run inspect --run-id <run_id>
101
+ ae-cli engage-query artifact download \
102
+ --run-id <run_id> \
103
+ --artifact-id <artifact_id> \
104
+ --output ./flow-node-users.csv.gz
105
+ ```
106
+
107
+ Downloaded artifacts are gzip-compressed; keep the `.gz` suffix. Cancel running async work with:
108
+
109
+ ```bash
110
+ ae-cli engage-query query cancel --run-id <run_id>
111
+ ```
112
+
113
+ ## Output shape
114
+
115
+ - `run` returns `rows`, `total`, and `column_meta`.
116
+ - `export` writes one row per matched user. The primary column is usually `#user_id`.
117
+
118
+ ## Common mistakes
119
+
120
+ - `--node-uuid` is required and must be the canvas node UUID.
121
+ - Do not use this for node metric cells; use `node-metric-user` so Hermes routes to the metric SQL builder.
122
+ - Use `--data-view-type`, not the report-only `--data-dim-type`, when selecting users without `--cluster-def`.
@@ -12,6 +12,8 @@ ae-cli engage-setting preset-event update --project-id <project_id> \
12
12
  ```
13
13
 
14
14
  At least one definition is required for update. Event filters use semantic `field`, `operator`, `values`, and `and`/`or`; Hermes resolves project metadata and compiles the stored event object.
15
+ `field` accepts a technical-name string or `{"name":"...","type":"event_property"}`. Unknown
16
+ semantic fields, unsupported relations/operators, and invalid time ranges are rejected.
15
17
 
16
18
  List hides the stored event QP and returns each semantic field plus its conversion status:
17
19
 
@@ -23,4 +23,35 @@ ae-cli engage-task push-record query \
23
23
 
24
24
  ## Output
25
25
 
26
- Returns `record_type`, `items`, `total`, and pagination metadata when the selected backend record type is paginated. Records include available trigger, planned-send, actual-send, success, channel-exception, status, and failure-reason fields.
26
+ Returns `record_type`, `items`, `total`, and pagination metadata when the selected backend record type is paginated.
27
+
28
+ The count fields depend on `record_type`:
29
+
30
+ | `record_type` | Actual push field | Successful push field |
31
+ | --- | --- | --- |
32
+ | `scheduled` | `actual_trigger_num` | `trigger_num` |
33
+ | `user_time_zone` | `actual_trigger_num` | `trigger_num` |
34
+ | `triggered` | `actual_push_num` | `push_success_num` |
35
+
36
+ Scheduled records and nested user-time-zone execution records use stable English `status_name`
37
+ values:
38
+
39
+ | `status` | `status_name` |
40
+ | --- | --- |
41
+ | `0` | `Waiting` |
42
+ | `1` | `Ready` |
43
+ | `2` | `Pushing` |
44
+ | `3` | `Sent` |
45
+ | `4` | `Retrying` |
46
+ | `5` | `Failed` |
47
+
48
+ Top-level user-time-zone task instances use a separate status enum:
49
+
50
+ | `status` | `status_name` |
51
+ | --- | --- |
52
+ | `0` | `Sending` |
53
+ | `1` | `Sent` |
54
+ | `2` | `Finished` |
55
+
56
+ Use `status` and the count fields for automated assertions. `status_name` never returns an internal
57
+ `hermes.*` localization key.
@@ -177,6 +177,14 @@ ae-cli analysis user-cluster get --project-id <projectId> --cluster-names '["<co
177
177
  ```
178
178
 
179
179
  Prefer the created cluster reference for an existing-cluster audience. For a custom audience, pass the semantic definition as `targetDefinitionRequest`; do not copy or construct stored execution QP.
180
+ Use only the documented semantic fields. Unknown fields are rejected, and property `field` values
181
+ may be technical-name strings or `{name,type}` references.
182
+
183
+ Custom flow audiences support `behavior_sequence`. When `flow get` returns relation-preserving
184
+ top-level `compound` nodes, retain them unchanged in subsequent saves; they preserve distinct
185
+ member-group, event-group, and outer relations.
186
+ For the second sequence step, omit `relative_to_first` or set it to `false`; use `true` only
187
+ from the third step onward when its window must be measured from step 1.
180
188
 
181
189
  ### 5.2 Project Channels
182
190
 
@@ -239,6 +247,12 @@ Inside action nodes: `channel_name` → real `channelId`; `content` → `content
239
247
  3. Every path must eventually end at `exit_flow`.
240
248
  4. `config` may be a JSON object or a JSON string. `targetDefinitionRequest` itself is a JSON object.
241
249
  5. Hermes compiles `targetDefinitionRequest` and Flow-specific `triggerDefinition` fields (including branch definitions) on `nodes[]`, `nodeConfigs[]`, and `slotAnswer.nodeConfig.config` before legacy node validation. `node-config validate` uses the same compile path. Other compatible input normalization remains unchanged.
250
+ 6. Never send `targetClusterQp`; it is a server-authored execution field. Every `event` and
251
+ `behavior_sequence` inside `targetDefinitionRequest` must include its own `time_range`.
252
+ Entry-node `startDate` / `endDate` values do not provide an audience-event time range.
253
+ 7. Audience fields must resolve through the current Flow editor metadata scope. If Hermes
254
+ rejects a field, choose another property returned for the same project, timezone, and user
255
+ entity instead of constructing persisted metadata manually.
242
256
 
243
257
  ### 7.2 Common Node Types
244
258
 
@@ -120,6 +120,39 @@ Task aggregate and completion event definitions support:
120
120
  - `aggregation`: `count`, `sum`, or `distinct_count`
121
121
  - `operator`: `gt`, `gte`, or `eq`
122
122
 
123
+ Completion target and experiment main-goal event filters must not use properties whose metadata
124
+ `select_type` is `datetime`. The supported filter-property select types are `string`, `number`,
125
+ `bool`, `bool-s`, `date`, `array`, `array_string`, `row`, and `array_row`. This restriction applies
126
+ to `completionIndicatorDef.completionIndicators[].eventDefinition.filters`; it does not apply to
127
+ trigger-event filters.
128
+
129
+ For an event property whose metadata `select_type` is `array_row`, never submit it as a flat
130
+ property filter. Use an object-group filter and place only that parent's child properties inside
131
+ `conditions`:
132
+
133
+ ```json
134
+ {
135
+ "type": "object_group",
136
+ "field": "equipment_list",
137
+ "operator": "any_satisfy",
138
+ "conditions": {
139
+ "relation": "and",
140
+ "items": [
141
+ {
142
+ "field": "equipment_list.item_level",
143
+ "operator": "gte",
144
+ "values": [10]
145
+ }
146
+ ]
147
+ }
148
+ }
149
+ ```
150
+
151
+ Object-group operators are `any_satisfy`, `none_satisfy`, and `all_satisfy`. Resolve the parent
152
+ and child fields from current metadata. Hermes validates the metadata type, child-parent
153
+ relationship, and supported operators before saving, so do not flatten `array_row` or invent child
154
+ field names.
155
+
123
156
  Trigger events have an additional envelope contract selected by `eventTriggerType`. Do not apply
124
157
  one aggregate event shape to every trigger type. Use the matrix and examples in section 4.4.
125
158
 
@@ -188,6 +221,13 @@ Rules:
188
221
  - do not guess template IDs
189
222
  - `groupContentList` maximum size is `5`
190
223
  - `occasionKeys` are parsed from content automatically and are not accepted as input
224
+ - when `expConfig.enableExp=true`, each `groupContentList` item must include
225
+ `expGroupName`, `expGroupType`, `percentageInExperiment`, and `order`, and the list must
226
+ mirror `expConfig.expGroupList` one-to-one by `expGroupName`
227
+ - capability `engage-task.task.save` rejects misaligned experiment `groupContentList`
228
+ (`TASK_EXPERIMENT_GROUP_CONTENT_INVALID`) before the inner save service runs
229
+ - do not submit experiment content as content-only objects such as
230
+ `{"contentList":[...]}` without the group association fields
191
231
 
192
232
  Content guidance:
193
233
 
@@ -224,6 +264,8 @@ Rules:
224
264
  - if `triggerDefinition` is needed, build it from semantic event definitions and resolve real
225
265
  event/property names through Analysis metadata
226
266
  - always set the A rule's `eventTriggerType` explicitly
267
+ - always set the A rule's `periodTimeSymbol` to `TS01`, `TS02`, `TS03`, or `TS04`; it is
268
+ required even when `periodStart` and `periodEnd` are present
227
269
  - Hermes compiles the semantic event and then validates the final persisted trigger-rule envelope
228
270
  - for semantic event-trigger tasks, Hermes backfills missing task-level `startDate` / `endDate`
229
271
  from the A rule's `periodStart` / `periodEnd`; explicit task-level dates remain authoritative
@@ -381,6 +423,8 @@ Minimum required field:
381
423
 
382
424
  When the guide points to event-based completion or experiment-driven main-goal rules, build
383
425
  `completionIndicatorDef.completionIndicators[].eventDefinition` from the semantic event contract.
426
+ Read `fieldRules.blocks.controlConfig.completionIndicatorDef.filterPropertySelectTypes` and exclude
427
+ every property type listed under `excluded` before constructing its `filters`.
384
428
 
385
429
  Important constraints that still apply:
386
430
 
@@ -25,19 +25,19 @@ Use the same condition definition accepted by Analysis user-cluster commands:
25
25
  "relation": "and",
26
26
  "items": [
27
27
  {
28
- "type": "user_property",
29
- "property": "vip_level",
28
+ "type": "user",
29
+ "field": "vip_level",
30
30
  "operator": "eq",
31
- "value": "gold"
31
+ "values": ["gold"]
32
32
  },
33
33
  {
34
- "type": "event_behavior",
34
+ "type": "event",
35
35
  "event": "purchase",
36
36
  "aggregation": "count",
37
37
  "operator": "gte",
38
38
  "value": 2,
39
- "time": {
40
- "type": "relative",
39
+ "time_range": {
40
+ "mode": "recent",
41
41
  "unit": "day",
42
42
  "value": 7
43
43
  }
@@ -48,8 +48,13 @@ Use the same condition definition accepted by Analysis user-cluster commands:
48
48
  ```
49
49
 
50
50
  Before writing, resolve real event and property names through Analysis metadata commands. Never invent names or copy internal calculation codes from historical output.
51
+ Use only the documented semantic fields. Unknown fields are rejected; property `field` accepts a
52
+ technical-name string or a `{name,type}` reference.
51
53
 
52
- Nested `and`/`or`, user properties, event behavior, include/exclude existing clusters, relative time, and custom time use the Analysis semantic shape documented by `ae-analysis`.
54
+ Nested `and`/`or`, user properties, event behavior, `behavior_sequence`, include/exclude existing
55
+ clusters, relative time, and custom time use the Analysis semantic shape documented by
56
+ `ae-analysis`. A `get` response may contain top-level `compound` nodes when stored member,
57
+ event, and outer relations differ. Preserve those compounds when updating the strategy.
53
58
 
54
59
  ## Create or update
55
60
 
@@ -2,10 +2,17 @@
2
2
 
3
3
  Query a task detail report through the L3 Capability Gateway.
4
4
 
5
- Mapped command: `ae-cli capability run engage-task.task-data.detail --input '<json>'`
5
+ Mapped command: `ae-cli engage-task data-detail query`
6
+
7
+ Capability ID: `engage-task.task-data.detail`
6
8
 
7
9
  Required input: `project_id`, `task_id`, `detail_type`, `start_time`, `end_time`. `detail_type` is `time`, `instance`, or `instance_daily`; the last form also requires `task_instance_id`.
8
10
 
9
11
  ```bash
10
- ae-cli capability run engage-task.task-data.detail --input '{"project_id":1,"task_id":"task_123","detail_type":"time","start_time":"2026-04-01","end_time":"2026-04-07"}'
12
+ ae-cli engage-task data-detail query \
13
+ --project-id 1 \
14
+ --task-id task_123 \
15
+ --detail-type time \
16
+ --start-time 2026-04-01 \
17
+ --end-time 2026-04-07
11
18
  ```
@@ -2,10 +2,17 @@
2
2
 
3
3
  Query a task metric detail report through the L3 Capability Gateway.
4
4
 
5
- Mapped command: `ae-cli capability run engage-task.task-data.metric-detail --input '<json>'`
5
+ Mapped command: `ae-cli engage-task effect query`
6
+
7
+ Capability ID: `engage-task.task-data.metric-detail`
6
8
 
7
9
  Required input: `project_id`, `task_id`, `start_time`, `end_time`. Optional input includes `request_id`, `push_language_code`, `metric_id_list`, `group_type`, and `show_time_zone`.
8
10
 
9
11
  ```bash
10
- ae-cli capability run engage-task.task-data.metric-detail --input '{"project_id":1,"task_id":"task_123","start_time":"2026-04-01","end_time":"2026-04-07"}'
12
+ ae-cli engage-task effect query \
13
+ --project-id 1 \
14
+ --task-id task_123 \
15
+ --start-time 2026-04-01 \
16
+ --end-time 2026-04-07 \
17
+ --metric-id-list '["metric_1"]'
11
18
  ```