@thinkingai/ae-cli 6.0.34 → 6.0.36

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 (140) hide show
  1. package/dist/{auth-UPGUOKTW.js → auth-B2BRSYMS.js} +1 -1
  2. package/dist/{capability-TQ5KU5Q6.js → capability-6KPXYNO7.js} +1 -1
  3. package/dist/{capability-AJC5CBRT.js → capability-ROKYESAP.js} +1 -1
  4. package/dist/{chunk-6CHYBI64.js → chunk-EBPXT3TN.js} +1 -1
  5. package/dist/{chunk-4Q5TNP4Q.js → chunk-J7MZHDHQ.js} +48 -24
  6. package/dist/{chunk-IMMGMU54.js → chunk-JTKMDN4A.js} +64 -166
  7. package/dist/{chunk-ISY6HMHM.js → chunk-RRFK2W7I.js} +1 -1
  8. package/dist/{config-RCCGHHYA.js → config-DDYJPJX3.js} +4 -4
  9. package/dist/index.js +62 -27
  10. package/dist/{metadata-3M5F2AED.js → metadata-2ZFRMVOL.js} +2 -55
  11. package/dist/{metadata-W2MEOI4Z.js → metadata-ABQCKU5P.js} +2 -55
  12. package/dist/{model-OYQLXCQY.js → model-JASQVOFD.js} +1 -1
  13. package/dist/{raw-TPB7KSZO.js → raw-6HXFFHLV.js} +1 -1
  14. package/dist/{sync-EFJKFZK2.js → sync-BF3IWYFC.js} +2 -2
  15. package/dist/{te-agent-K2OWMZXT.js → te-agent-3GJ5H2XF.js} +195 -2
  16. package/dist/{te-analysis-I73ZS4NK.js → te-analysis-DJ6KELTU.js} +636 -668
  17. package/dist/{te-analysis-Q7AZCDU4.js → te-analysis-PCGESPLW.js} +636 -668
  18. package/dist/{te-dataops-OA7I6HBG.js → te-dataops-LXL5YULV.js} +7 -7
  19. package/dist/{te-dataops-MJV54MNY.js → te-dataops-ROHUJOX5.js} +7 -7
  20. package/dist/{te-engage-2FSDUOIZ.js → te-engage-2YDCA552.js} +87 -4
  21. package/dist/{te-engage-BMJ6UOUU.js → te-engage-VW6NJZ5V.js} +87 -4
  22. package/dist/te-meta-GBDTMPEL.js +95 -0
  23. package/dist/te-meta-ZTLTSHXC.js +95 -0
  24. package/dist/te-system-AH7DMCAQ.js +1706 -0
  25. package/dist/{te-team-PDKKW7Q5.js → te-team-RRZI4WRI.js} +1 -1
  26. package/dist/update-ER7VFU55.js +101 -0
  27. package/package.json +9 -4
  28. package/skills/ae-agent/SKILL.md +5 -1
  29. package/skills/ae-agent/references/create-automation.md +1 -0
  30. package/skills/ae-agent/references/list-sandbox-tools.md +79 -0
  31. package/skills/ae-analysis/SKILL.md +8 -9
  32. package/skills/ae-analysis/references/adhoc_export.md +8 -0
  33. package/skills/ae-analysis/references/adhoc_run.md +9 -0
  34. package/skills/ae-analysis/references/ai_models.md +3 -1
  35. package/skills/ae-analysis/references/alert_create.md +2 -3
  36. package/skills/ae-analysis/references/alert_update.md +2 -3
  37. package/skills/ae-analysis/references/analysis_data_retrieval.md +2 -0
  38. package/skills/ae-analysis/references/analysis_drilldown_contract.md +2 -0
  39. package/skills/ae-analysis/references/analysis_gateway_assets.md +15 -11
  40. package/skills/ae-analysis/references/bi_panel_create.md +12 -4
  41. package/skills/ae-analysis/references/bi_panel_update.md +11 -8
  42. package/skills/ae-analysis/references/bi_panel_version_publish.md +3 -1
  43. package/skills/ae-analysis/references/command_index.md +28 -47
  44. package/skills/ae-analysis/references/dashboard_daily_report_get.md +18 -0
  45. package/skills/ae-analysis/references/dashboard_daily_report_send.md +12 -9
  46. package/skills/ae-analysis/references/dashboard_daily_report_send_status.md +22 -0
  47. package/skills/ae-analysis/references/dashboard_daily_report_update.md +13 -6
  48. package/skills/ae-analysis/references/dashboard_report_data_export.md +4 -2
  49. package/skills/ae-analysis/references/dashboard_report_data_run.md +5 -3
  50. package/skills/ae-analysis/references/drilldown_entities_export.md +3 -0
  51. package/skills/ae-analysis/references/drilldown_entities_run.md +2 -1
  52. package/skills/ae-analysis/references/drilldown_events_export.md +3 -0
  53. package/skills/ae-analysis/references/drilldown_events_run.md +2 -1
  54. package/skills/ae-analysis/references/drilldown_user_events_export.md +8 -0
  55. package/skills/ae-analysis/references/drilldown_user_events_run.md +8 -0
  56. package/skills/ae-analysis/references/entity_id_import_options.md +1 -1
  57. package/skills/ae-analysis/references/filter_value_list.md +47 -0
  58. package/skills/ae-analysis/references/project_space_get.md +3 -3
  59. package/skills/ae-analysis/references/project_space_list.md +6 -2
  60. package/skills/ae-analysis/references/query_cancel.md +3 -1
  61. package/skills/ae-analysis/references/query_cluster_list.md +34 -0
  62. package/skills/ae-analysis/references/query_create_result_cluster.md +2 -0
  63. package/skills/ae-analysis/references/report_create.md +5 -1
  64. package/skills/ae-analysis/references/report_data_export.md +9 -2
  65. package/skills/ae-analysis/references/report_data_run.md +8 -3
  66. package/skills/ae-analysis/references/report_get.md +3 -1
  67. package/skills/ae-analysis/references/report_update.md +4 -0
  68. package/skills/ae-analysis/references/super_metadata_batch_create.md +29 -0
  69. package/skills/ae-analysis/references/super_metadata_batch_edit.md +24 -0
  70. package/skills/ae-analysis/references/virtual_event_create.md +7 -6
  71. package/skills/ae-analysis-global/SKILL.md +15 -32
  72. package/skills/ae-community/SKILL.md +1 -1
  73. package/skills/ae-data-integration-helper/SKILL.md +3 -2
  74. package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +1 -1
  75. package/skills/ae-dataops/SKILL.md +2 -1
  76. package/skills/ae-dataops/references/dataops-integration.md +75 -6
  77. package/skills/ae-engage/SKILL.md +32 -5
  78. package/skills/ae-engage/references/activity-topic.md +34 -1
  79. package/skills/ae-engage/references/add-channel.md +2 -3
  80. package/skills/ae-engage/references/build-task-save-guide.md +17 -3
  81. package/skills/ae-engage/references/channel-detail.md +2 -3
  82. package/skills/ae-engage/references/channel-list.md +2 -5
  83. package/skills/ae-engage/references/channel-mgmt.md +17 -2
  84. package/skills/ae-engage/references/channel-test-send.md +1 -1
  85. package/skills/ae-engage/references/channel-update-config.md +1 -1
  86. package/skills/ae-engage/references/delete-channel.md +2 -3
  87. package/skills/ae-engage/references/save-flow.md +6 -3
  88. package/skills/ae-engage/references/save-task.md +12 -15
  89. package/skills/ae-engage/references/scene-config-channel.md +28 -4
  90. package/skills/ae-engage/references/scene-config-group.md +1 -1
  91. package/skills/ae-engage/references/scene-config-item.md +1 -1
  92. package/skills/ae-engage/references/scene-config-metric.md +1 -1
  93. package/skills/ae-engage/references/scene-config-param.md +1 -1
  94. package/skills/ae-engage/references/scene-preset-metric.md +1 -1
  95. package/skills/ae-engage/references/scene-strategy-audience.md +680 -0
  96. package/skills/ae-engage/references/scene-strategy.md +16 -1
  97. package/skills/ae-engage/references/scene-template.md +1 -1
  98. package/skills/ae-engage/references/update-channel-status.md +2 -3
  99. package/skills/ae-generate-tracking-code/SKILL.md +4 -3
  100. package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +1 -1
  101. package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +1 -1
  102. package/skills/ae-generate-tracking-code/references/snippet-delivery.md +1 -1
  103. package/skills/ae-generate-tracking-plan/SKILL.md +6 -2
  104. package/skills/ae-metadata/SKILL.md +8 -15
  105. package/skills/ae-metadata/references/metadata_property_dimension_table_bind_existing.md +1 -1
  106. package/skills/ae-system/SKILL.md +357 -0
  107. package/dist/te-common-ST3QPSXJ.js +0 -61
  108. package/dist/te-common-WSLIKKPC.js +0 -61
  109. package/dist/te-meta-Q4L6EE3Q.js +0 -363
  110. package/dist/te-meta-VHCN4Q62.js +0 -363
  111. package/skills/ae-analysis/references/alert_definition_schema_get.md +0 -24
  112. package/skills/ae-analysis/references/batch_create_metadata.md +0 -41
  113. package/skills/ae-analysis/references/batch_edit_metadata.md +0 -39
  114. package/skills/ae-analysis/references/cancel_query.md +0 -38
  115. package/skills/ae-analysis/references/create_alert.md +0 -47
  116. package/skills/ae-analysis/references/create_entity.md +0 -39
  117. package/skills/ae-analysis/references/create_project_mark_time.md +0 -39
  118. package/skills/ae-analysis/references/delete_alert.md +0 -32
  119. package/skills/ae-analysis/references/delete_project_mark_times.md +0 -36
  120. package/skills/ae-analysis/references/delete_track_items.md +0 -36
  121. package/skills/ae-analysis/references/generate_track_program.md +0 -52
  122. package/skills/ae-analysis/references/generate_track_sdk_sample.md +0 -44
  123. package/skills/ae-analysis/references/get_alert.md +0 -35
  124. package/skills/ae-analysis/references/get_alert_definition_schema.md +0 -33
  125. package/skills/ae-analysis/references/get_project_config.md +0 -33
  126. package/skills/ae-analysis/references/get_track_program.md +0 -34
  127. package/skills/ae-analysis/references/list_alerts.md +0 -41
  128. package/skills/ae-analysis/references/list_entities.md +0 -42
  129. package/skills/ae-analysis/references/list_project_mark_times.md +0 -43
  130. package/skills/ae-analysis/references/list_project_users.md +0 -33
  131. package/skills/ae-analysis/references/list_projects.md +0 -39
  132. package/skills/ae-analysis/references/load_filters.md +0 -47
  133. package/skills/ae-analysis/references/save_track_items.md +0 -37
  134. package/skills/ae-analysis/references/update_alert.md +0 -49
  135. package/skills/ae-analysis/references/update_project_mark_time.md +0 -40
  136. package/skills/ae-analysis-global/references/list_query_clusters.md +0 -68
  137. package/skills/ae-metadata/references/metadata_event_get.md +0 -52
  138. package/skills/ae-metadata/references/metadata_property_get.md +0 -54
  139. package/dist/{te-community-WXGB6IOX.js → te-community-QOYIYEJI.js} +3 -3
  140. package/dist/{te-community-X2AHXGCA.js → te-community-UFKI6ONP.js} +3 -3
@@ -6,6 +6,7 @@ Read [`analysis_drilldown_contract.md`](analysis_drilldown_contract.md) and firs
6
6
 
7
7
  ```bash
8
8
  ae-cli analysis drilldown-entities export \
9
+ --project-id <project_id> \
9
10
  --query-context-id <sync_preview_query_context_id> \
10
11
  [--source '{"report_id":1001}'] \
11
12
  --coordinate '<same returned coordinate>' \
@@ -14,6 +15,8 @@ ae-cli analysis drilldown-entities export \
14
15
  [--timeout-seconds 21600]
15
16
  ```
16
17
 
18
+ `--project-id` must match the project stored by `query_context_id`; a mismatch is rejected before export execution.
19
+
17
20
  Property support matches the synchronous preview exactly:
18
21
 
19
22
  - For the `#user_id` user subject, `--properties` accepts `[{"columnName":"<property_name>","tableType":"user"}]`. The artifact always retains `#user_id`, `#account_id`, and `#distinct_id` plus the requested user properties.
@@ -8,6 +8,7 @@ Read [`analysis_drilldown_contract.md`](analysis_drilldown_contract.md) first. C
8
8
 
9
9
  ```bash
10
10
  ae-cli analysis drilldown-entities run \
11
+ --project-id <project_id> \
11
12
  --query-context-id <sync_preview_query_context_id> \
12
13
  [--source '{"report_id":1001}'] \
13
14
  --coordinate '<merged returned row/column/metric coordinate>' \
@@ -16,7 +17,7 @@ ae-cli analysis drilldown-entities run \
16
17
  [--timeout-seconds 120]
17
18
  ```
18
19
 
19
- The context, source, and coordinate must all come from the same synchronous preview. Select a visible row from `row_options`, a drillable column from `column_options`, and the relevant metric option; shallow-merge their coordinate fragments. Never send `row_index`, `column_index`, `values`, `label`, `target_id`, raw QP, or a coordinate derived from an export file.
20
+ `--project-id` must be the project used by the synchronous preview and must match the stored query context. The context, source, and coordinate must all come from that same preview. Select a visible row from `row_options`, a drillable column from `column_options`, and the relevant metric option; shallow-merge their coordinate fragments. Never send `row_index`, `column_index`, `values`, `label`, `target_id`, raw QP, or a coordinate derived from an export file.
20
21
 
21
22
  Property support depends on the returned subject:
22
23
 
@@ -6,6 +6,7 @@ Use this only when the selected synchronous preview metric advertises `drilldown
6
6
 
7
7
  ```bash
8
8
  ae-cli analysis drilldown-events export \
9
+ --project-id <project_id> \
9
10
  --query-context-id <sync_preview_query_context_id> \
10
11
  [--source '{"report_id":1001}'] \
11
12
  --coordinate '<same returned coordinate>' \
@@ -14,6 +15,8 @@ ae-cli analysis drilldown-events export \
14
15
  [--timeout-seconds 21600]
15
16
  ```
16
17
 
18
+ `--project-id` must match the project stored by `query_context_id`; a mismatch is rejected before export execution.
19
+
17
20
  This command does not accept `--limit`, `--offset`, `--page-num`, or `--page-size`. Common executes one full-download query and streams its result directly into the artifact; it does not repeatedly call the synchronous preview. “All” follows the platform full-download ceiling (`model_full_download_limit`), not an unbounded query.
18
21
 
19
22
  When `--properties` is present, the artifact contains required system event columns plus exactly the requested event properties. The export and synchronous preview use the same projection contract.
@@ -8,6 +8,7 @@ Read [`analysis_drilldown_contract.md`](analysis_drilldown_contract.md) first. C
8
8
 
9
9
  ```bash
10
10
  ae-cli analysis drilldown-events run \
11
+ --project-id <project_id> \
11
12
  --query-context-id <sync_preview_query_context_id> \
12
13
  [--source '{"report_id":1001}'] \
13
14
  --coordinate '{"group_values":["Beijing"],"date":"2026-07-16","metric_index":0}' \
@@ -16,7 +17,7 @@ ae-cli analysis drilldown-events run \
16
17
  [--timeout-seconds 120]
17
18
  ```
18
19
 
19
- `--query-context-id` must come from the same synchronous preview that returned the selected source and options. `--source` is required only to disambiguate multiple returned sources. Assemble `--coordinate` only by merging the selected returned option fragments. Do not pass `target_id`, raw QP, display-only dates, or values from an export/download.
20
+ `--project-id` must be the project used by that synchronous preview; Common rejects it if it does not match the stored query context. `--query-context-id` must come from the same synchronous preview that returned the selected source and options. `--source` is required only to disambiguate multiple returned sources. Assemble `--coordinate` only by merging the selected returned option fragments. Do not pass `target_id`, raw QP, display-only dates, or values from an export/download.
20
21
 
21
22
  `--properties` is an optional exact event-property projection. Omit it for default columns; string arrays such as `["#event_time"]` are invalid. Each item uses the backend field names `columnName` and `tableType`, for example `[{"columnName":"<event_property_name>","tableType":"event"}]`. `tableType` uses the documented name `event`, not a numeric enum code. Required system event columns remain present, but unrelated event properties must not be returned.
22
23
 
@@ -6,6 +6,7 @@ Export the complete event sequence for one user from a drilldown context. Do not
6
6
 
7
7
  ```bash
8
8
  ae-cli analysis drilldown-user-events export \
9
+ --project-id <project_id> \
9
10
  --drilldown-context-id <drilldown_context_id> \
10
11
  --user-id <user_id> \
11
12
  [--properties '[{"columnName":"<event_property_name>","tableType":"event"}]'] \
@@ -14,10 +15,17 @@ ae-cli analysis drilldown-user-events export \
14
15
  [--timeout-seconds 21600]
15
16
  ```
16
17
 
18
+ `--project-id` must match the project stored by `drilldown_context_id`; a mismatch is rejected before export execution.
19
+
17
20
  The nested backend keys are exactly `columnName` and `tableType`, and the table type is the named value `event`. String-name arrays, numeric enum codes, and snake_case rewrites are invalid. With an explicit projection, the artifact retains `#user_id`, account ID, visitor ID, event name, and event time and appends exactly the requested event properties. `#user_id` is internal; Agents should normally present account ID and visitor ID to customers.
18
21
 
19
22
  Use the exact `drilldown_context_id` and canonical `user_id` returned by a user-subject `analysis drilldown-entities run`. Do not use a custom entity, an entity export artifact, or a guessed identity. Export does not accept `--limit`, `--offset`, `--page-num`, or `--page-size`; Common builds the same authorized event-sequence query without the synchronous 1000-row preview cap and streams one `csv.gz` artifact. The platform full-download ceiling (`model_full_download_limit`) still applies.
20
23
 
24
+ For a `scope=total` source coordinate, there is no single selected date. Common
25
+ preserves the machine date coordinates returned by the source query together
26
+ with that query's time granularity, such as daily, weekly, or monthly. Do not
27
+ construct dates outside that context or force a daily granularity.
28
+
21
29
  Inspect the returned `run_id` with `analysis run inspect`, then download the completed artifact with `analysis artifact download`.
22
30
 
23
31
  Output is an async run/artifact descriptor. The complete event rows exist only in the downloaded artifact; they cannot be used as new analysis coordinates.
@@ -10,6 +10,7 @@ Do not pass raw QP.
10
10
 
11
11
  ```bash
12
12
  ae-cli analysis drilldown-user-events run \
13
+ --project-id <project_id> \
13
14
  --drilldown-context-id <drilldown_context_id> \
14
15
  --user-id <user_id> \
15
16
  [--sort-order desc] \
@@ -20,6 +21,7 @@ ae-cli analysis drilldown-user-events run \
20
21
  ## Input
21
22
 
22
23
  - `--drilldown-context-id`: returned by the same user-subject `analysis drilldown-entities run`.
24
+ - `--project-id`: the project used by that drilldown; it must match the project stored by `drilldown_context_id`.
23
25
  - `--user-id`: canonical `user_id` from one item in that same response. Never substitute `entity_value`, `#distinct_id`, account ID, or another identity field.
24
26
  - `--properties`: optional exact event-property projection. Omit it to use the default event columns. If present, each item uses backend keys `columnName` and `tableType`, for example `[{"columnName":"<event_property_name>","tableType":"event"}]`. `#user_id`, account ID, visitor ID, event name, and event time remain present; unrelated event properties must not be returned. `#user_id` is an internal association key, so Agents should normally display account ID and visitor ID to customers. Do not pass numeric table-type codes, string-name arrays, or snake_case nested keys.
25
27
  - `--sort-order`: `asc` or `desc`.
@@ -27,6 +29,12 @@ ae-cli analysis drilldown-user-events run \
27
29
 
28
30
  Do not use raw QP, `query_context_id`, or guessed user IDs for this command.
29
31
 
32
+ For a `scope=total` source coordinate, there is no single selected date. Common
33
+ preserves the machine date coordinates returned by the source query together
34
+ with that query's time granularity, such as daily, weekly, or monthly. Do not
35
+ invent `target_dates`, force a daily granularity, or replace the returned
36
+ `drilldown_context_id`.
37
+
30
38
  Do not call this command merely because an entity row looks like a user. The explicit subject and follow-up context are the authority.
31
39
 
32
40
  ## Output
@@ -9,7 +9,7 @@ ae-cli analysis entity id-import-options --project-id <project_id> --entity-id <
9
9
  If the entity ID is not already known, discover it first instead of guessing:
10
10
 
11
11
  ```bash
12
- ae-cli analysis_meta +list_entities --project_id <project_id> --fields '["entityId","entityName","columnName","entityType"]'
12
+ ae-cli analysis project entity list --project-id <project_id> --fields '["entityId","entityName","columnName","entityType"]'
13
13
  ```
14
14
 
15
15
  - `match_mode=user_property`: `--association-property` is required and must be copied from `association_properties`; `#user_id` is forbidden.
@@ -0,0 +1,47 @@
1
+ # analysis filter-value list
2
+
3
+ List stored candidate values for one event property, user property, user tag, or user cluster whose identifier is already known.
4
+
5
+ ## Purpose
6
+
7
+ Use this capability when an analysis filter needs an exact stored value but the caller knows only the business wording. Typical examples are checking whether a channel is stored as `iOS`, `ios`, or `Apple`, or narrowing a high-cardinality property with a prefix before constructing a report or ad-hoc filter.
8
+
9
+ Do not use it to discover property names, calculate value frequencies, enumerate all raw rows, or replace an analysis aggregation. Resolve the property through metadata or compiler clarification first. The result is a candidate-value aid, not proof of frequency or completeness.
10
+
11
+ ## Command
12
+
13
+ ```bash
14
+ ae-cli analysis filter-value list \
15
+ --project-id <project_id> \
16
+ --property-name <property_name> \
17
+ --table-type event|user \
18
+ [--event-name <event_name>] \
19
+ [--search-prefix <text>] \
20
+ [--zone-offset <offset>] \
21
+ [--cluster-date-policy LATEST|AUTO|SPECIFIED] \
22
+ [--specified-cluster-date yyyy-MM-dd] \
23
+ [--report-mode true|false]
24
+ ```
25
+
26
+ `--event-name` narrows an event-property lookup. `--specified-cluster-date` is required only with `--cluster-date-policy SPECIFIED` and is rejected otherwise. Here “cluster date” means a 用户分群/人群包 snapshot date; it is unrelated to the physical 查询集群 returned by `analysis query-cluster list`.
27
+
28
+ Output `data.items` contains permission-filtered candidate values. An empty array is successful: no visible candidate matched the selected property and prefix.
29
+
30
+ ## Tag and cluster snapshot semantics
31
+
32
+ For user tags and user clusters, `LATEST` means the latest available computed result snapshot. It is not a tag definition or configuration release, and it does not require a version list, version ID, draft state, or publish state.
33
+
34
+ Natural-language routing:
35
+
36
+ - “查询标签 X 最新版本/最新结果有哪些值” → resolve `X` with `analysis user-tag list`, then call `analysis filter-value list` with the returned exact `tag_name`, `--table-type user`, and `--cluster-date-policy LATEST`.
37
+ - “查询分群 X 最新结果的候选值” → resolve `X` with `analysis user-cluster list`, then use the same candidate-value command with `--cluster-date-policy LATEST`.
38
+
39
+ Do not route either request to a definition-version workflow. `LATEST`, `AUTO`, and `SPECIFIED` select computed data snapshots only.
40
+
41
+ ## Typical workflow
42
+
43
+ 1. Resolve the exact event/property identifier or tag/cluster machine name from the matching metadata or asset list.
44
+ 2. Call `analysis filter-value list`, using `--search-prefix` when the value space is large.
45
+ 3. Select only a returned exact value; do not normalize spelling or invent a synonym.
46
+ 4. Put that value into `report-data run`, `dashboard-report-data run`, or `adhoc run`.
47
+ 5. Verify the result scope and, when needed, follow the returned synchronous query context into drilldown.
@@ -7,12 +7,12 @@ Do not use to list all spaces. Use `project-space list`.
7
7
  Command:
8
8
 
9
9
  ```bash
10
- ae-cli analysis project-space get --project-id <project_id> --space-id <space_id> [--fields '["spaceId","spaceName"]']
10
+ ae-cli analysis project-space get --project-id <project_id> --space-id <space_id> [--fields '["space_id","space_name"]']
11
11
  ```
12
12
 
13
13
  Input sends `project_id`, `space_id`, and optional `fields`.
14
14
 
15
- Supported fields are `spaceId`, `spaceName`, `spaceDesc`, `avatarType`, `colorKey`, `avatar`,
16
- `allAuthUserAuthority`, `createTime`, `updateTime`, and `owner`.
15
+ Supported fields are `space_id`, `space_name`, `space_desc`, `avatar_type`, `color_key`, `avatar`,
16
+ `all_auth_user_authority`, `create_time`, `update_time`, and `owner`.
17
17
 
18
18
  Output is the gateway envelope. `data` contains project-space detail with snake_case field names.
@@ -2,12 +2,12 @@
2
2
 
3
3
  Use when the user needs project spaces they can access.
4
4
 
5
- Do not use for project lookup or project ID verification. Use `analysis_common +list_projects`.
5
+ Do not use for project lookup or project ID verification. Use `analysis project info list`.
6
6
 
7
7
  Command:
8
8
 
9
9
  ```bash
10
- ae-cli analysis project-space list --project-id <project_id> [--query <keyword>] [--fields '["id","name"]'] [--limit 50] [--offset 0]
10
+ ae-cli analysis project-space list --project-id <project_id> [--query <keyword>] [--fields '["space_id","name","space_desc"]'] [--limit 50] [--offset 0]
11
11
  ```
12
12
 
13
13
  Input sends `project_id` and optional `query`, `fields`, `limit`, `offset`.
@@ -15,3 +15,7 @@ Input sends `project_id` and optional `query`, `fields`, `limit`, `offset`.
15
15
  When `has_more=true`, continue only with the returned `next_offset`; do not calculate the next page locally.
16
16
 
17
17
  Output is the gateway envelope. `data` contains project-space summaries.
18
+
19
+ Supported projection fields are `space_id`, `name`, `space_desc`, `creator`, `user_id`, `origin`,
20
+ `authority_type`, `avatar_type`, `color_key`, `avatar`, `is_favorite`, and `permissions`.
21
+ Use only these snake_case names; camelCase projection names are rejected.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Use to cancel an async capability-gateway query or export by `run_id`.
4
4
 
5
- Do not use for MCP query cancellation by `request_id`; use `analysis +cancel_query`.
5
+ This is the only analysis-query cancellation command exposed by ae-cli. Cancellation is bound to the capability-gateway `run_id`; ae-cli does not expose MCP `request_id` cancellation.
6
6
 
7
7
  Command:
8
8
 
@@ -13,3 +13,5 @@ ae-cli analysis query cancel --run-id <run_id> [--reason <reason>]
13
13
  Input sends `run_id` and optional `reason`.
14
14
 
15
15
  Output is the gateway envelope. `data` contains the cancellation result.
16
+
17
+ Typical workflow: submit an async export, preserve its `run_id`, inspect that run, and call this command only when that same run no longer needs to continue. Do not substitute a lifecycle `request_id` for `run_id`.
@@ -0,0 +1,34 @@
1
+ # analysis query-cluster list
2
+
3
+ List physical query-routing clusters accessible to the current account in one project.
4
+
5
+ ## Terminology boundary
6
+
7
+ Both product concepts contain the English word `cluster`, but they are different:
8
+
9
+ - 查询集群 / 数据集群 / 部署集群: physical data-routing locations used by `GLOBAL` and `SLAVE`. This command lists these.
10
+ - 用户分群 / 人群包: saved user-membership assets. Use `analysis user-cluster list` for these.
11
+
12
+ Never use a 用户分群 ID as `--slave-cluster-id`, and never answer a user-segment inventory question with this command.
13
+
14
+ ## Purpose
15
+
16
+ Use this capability before routing a report, dashboard, or ad-hoc query when the request mentions all clusters, a country/region, a game server, shard, site, market, or deployment. Do not call it for ordinary queries with no physical routing intent; omission preserves the query surface's documented default.
17
+
18
+ ## Command
19
+
20
+ ```bash
21
+ ae-cli analysis query-cluster list --project-id <project_id>
22
+ ```
23
+
24
+ The snake_case output contains `current_cluster`, accessible `slave_clusters`, and `permissions.allowed_cluster_query_params`. `permissions.can_query_global` is authoritative for `GLOBAL`; only returned `slave_clusters[].cluster_id` values may be used for `SLAVE`.
25
+
26
+ ## Typical workflow
27
+
28
+ 1. Resolve the project and call `analysis query-cluster list`.
29
+ 2. Match an explicit region/server request only against returned cluster ID, name, and description.
30
+ 3. Use `--cluster-query-scope GLOBAL` only for explicit cross-cluster aggregation, or use `--cluster-query-scope SLAVE --slave-cluster-id <id>` for one matched physical slave cluster.
31
+ 4. Run/export through `report-data`, `dashboard-report-data`, or `adhoc`.
32
+ 5. For synchronous runs, verify `actual_cluster_query_scope`, `actual_slave_cluster_id`, and `cluster_query_scope_source` in the result. For exports, verify the submitted route and successful run before consuming the artifact; report-data artifacts contain report rows rather than route metadata. If permissions reject the route, report `allowed_cluster_query_params`; do not fall back silently.
33
+
34
+ Surface defaults differ: report-data and ad-hoc omit scope to query the current self cluster; dashboard-report-data omits scope to follow the saved dashboard configuration.
@@ -8,6 +8,7 @@ Read [`analysis_drilldown_contract.md`](analysis_drilldown_contract.md) first. T
8
8
 
9
9
  ```bash
10
10
  ae-cli analysis query create-result-cluster \
11
+ --project-id <project_id> \
11
12
  --query-context-id <sync_preview_query_context_id> \
12
13
  [--source '{"report_id":1001}'] \
13
14
  --coordinate '<merged returned row/column/metric coordinate>' \
@@ -19,6 +20,7 @@ ae-cli analysis query create-result-cluster \
19
20
 
20
21
  ## Input rules
21
22
 
23
+ - `--project-id` must be the project used by the synchronous preview and must match the project stored by `query_context_id`.
22
24
  - `--query-context-id`, `--source`, and all coordinate fragments must come from the same synchronous `adhoc run`, `report-data run`, or `dashboard-report-data run` response.
23
25
  - Match the desired visible row and column in `source.drilldown.row_options`/`column_options`, select the correct metric option, and shallow-merge only their `coordinate` fragments.
24
26
  - Never pass `target_id`, raw QP, display-only dates, option presentation fields, or data from an export/download. Exports do not create query contexts.
@@ -16,14 +16,18 @@ Input sends `project_id`, `report_name`, `model_type`, `definition`, optional `r
16
16
 
17
17
  Output is the gateway envelope. `data` contains the created `report_id`, creation status, normalized `model_type`, AI QP `definition`, and optional resolution warnings.
18
18
 
19
+ Report creation and its `--validate` / `--dry-run` paths use the same compiler contract. `AI_QP_COMPILE_FAILED` preserves `meta.compile_status`, full `meta.errors[]` (including `code`, `candidates`, and `suggestions`), `meta.resolved`, and `meta.warnings`. No report is created on this failure; select an exact returned candidate or ask the user before retrying.
20
+
19
21
  ## SQL dynamic parameter shortest path
20
22
 
21
23
  When a SQL report contains a `${...}` placeholder, define its saved default in the same AI-facing `definition`. Example:
22
24
 
23
25
  ```bash
24
- ae-cli analysis report create --project-id <project_id> --report-name "Recent SQL" --model-type sql --definition '{"sql":"select * from events where ${PartDate:ds} limit 100","params":[{"name":"ds","type":"part_date","recent_day":"1-7"}]}'
26
+ ae-cli analysis report create --project-id <project_id> --report-name "Recent SQL" --model-type sql --definition '{"sql":"select * from events where ${PartDate:ds} limit 100","params":[{"name":"ds","type":"part_date","recent_day":"1-7","use_timezone":true}]}'
25
27
  ```
26
28
 
29
+ `use_timezone` is an optional boolean definition field only for `part_date`; it defaults to `false`. `true` makes that parameter use the query's effective timezone. It is a saved definition field, so change it through report create/update `--definition`, never through report-data `--sql-params`.
30
+
27
31
  After creation, keep the `report_id` returned by this exact create response. To verify the report, query the saved default first with `analysis report-data run` and omit `--sql-params`; then make one second query with a value-only `--sql-params` override. Do not rebuild internal `sqlViewParams` or guess an ID.
28
32
 
29
33
  After any successful report create, call `analysis-meta asset url-get` with that returned `report_id` and output its `markdown_link`.
@@ -2,6 +2,8 @@
2
2
 
3
3
  Submit saved report data as a downloadable async artifact. It covers the 12 analysis report models from `ai_models.md` plus tag report data; tags are report-data only and are not ad-hoc `model_type` values.
4
4
 
5
+ Typical closed loop: verify saved report definition -> resolve exact filter values and physical query route when needed -> submit export -> preserve the returned run/artifact pair -> inspect to a successful terminal state -> download and verify artifact content.
6
+
5
7
  Before adding overrides, call `analysis report get` for every report. The model matrix is the same as `report-data run`: SQL accepts only saved `definition.params` names through `--sql-params`; non-SQL analysis models accept filters/group/time overrides; tag executes its saved definition. Never put generic overrides and `--sql-params` in one homogeneous-model request.
6
8
 
7
9
  Routing: read [`analysis_data_retrieval.md`](analysis_data_retrieval.md) before choosing this `export` command instead of `report-data run`.
@@ -16,9 +18,14 @@ ae-cli analysis report-data export --project-id <project_id> --report-ids '[1001
16
18
 
17
19
  # SQL report
18
20
  ae-cli analysis report-data export --project-id <project_id> --report-ids '[2001]' --sql-params '[{"name":"platform","value":"ios"}]' --artifact-format jsonl
21
+
22
+ # Global cross-cluster export for a supported non-SQL report
23
+ ae-cli analysis report-data export --project-id <project_id> --report-ids '[1001]' --cluster-query-scope GLOBAL --artifact-format jsonl
19
24
  ```
20
25
 
21
- Input sends `project_id`, `report_ids`, optional `request_id`, `filters`, `group_by`, `sql_params`, `start_time`, `end_time`, `time_granularity`, `zone_offset`, `use_cache`, artifact `format`, and `timeout_seconds`. Async export has no inline row limit. Runtime defaults to and is capped at 21600 seconds (6 hours); cancel earlier with `analysis query cancel --run-id <run_id>`. The routing rule lives in [`analysis_data_retrieval.md`](analysis_data_retrieval.md).
26
+ Input also accepts optional `cluster_query_scope` and conditional `slave_cluster_id`. Omit both for current-self data. Resolve allowed physical routes with `analysis query-cluster list`; SQL reports reject `GLOBAL`. Async export has no inline row limit. Runtime defaults to and is capped at 21600 seconds (6 hours); cancel earlier with `analysis query cancel --run-id <run_id>`.
27
+
28
+ The downloaded report-data artifact contains report rows and per-report markers, not `actual_cluster_query_scope` metadata. Therefore resolve an allowed route first, keep the submitted scope/ID with the run record, and do not infer route from row contents.
22
29
 
23
30
  Timezone contract is identical to `report-data run`: omit `--zone-offset` to match the current user's report UI timezone (falling back to the project default); use an enabled integer from `-12` through `14` for a fixed UTC offset; use `--zone-offset 99` for local-time mode, where rows are not converted to one fixed UTC offset. `99` is a mode identifier, not `UTC+99`, and the option is not persisted.
24
31
 
@@ -26,7 +33,7 @@ Override model:
26
33
 
27
34
  - `filters`: AI-facing intent object `{relation:"and|or", items:[{field:{name,type?}, operator, values?}]}`. `field.type` supports `event_property`, `user_property`, `cluster`, and `tag`; omit it only when the field name is unambiguous. Use field names from `analysis report get` definition output or metadata commands. Do not pass raw QP fields such as `taFilters`, `junctionKind`, `columnName`, `tableType`, or `selectType`.
28
35
  - `group-by`: AI-facing intent array `[{field:{name,type?}}]`. Use the same field model as report definitions. Do not pass raw `TaGroupByVo`. Time granularity is controlled by `--time-granularity`, not by `--group-by`.
29
- - `sql-params`: SQL report dynamic parameter value overrides. First read `analysis report get`; every name must exist in every target SQL report's `definition.params`. Time fields require a saved `part_date` or time parameter. Send only override values; do not send definition fields.
36
+ - `sql-params`: SQL report dynamic parameter value overrides. First read `analysis report get`; every name must exist in every target SQL report's `definition.params`. Time fields require a saved `part_date` or time parameter. Send only override values; do not send definition fields such as `type`, `options`, or `use_timezone`.
30
37
 
31
38
  Mixed-model export batches are best-effort rather than rejected only for being mixed. Prefer one model per overridden export because artifact formats cannot surface submission-time warnings as prominently as inline `meta.warnings`.
32
39
 
@@ -2,6 +2,8 @@
2
2
 
3
3
  Execute bounded inline data from one or more saved reports.
4
4
 
5
+ Typical closed loop: discover a saved report -> verify its definition -> resolve any unknown exact filter value with `analysis filter-value list` -> optionally resolve a physical route with `analysis query-cluster list` -> run -> inspect actual scope and warnings -> use the returned synchronous query context for drilldown.
6
+
5
7
  Routing: read [`analysis_data_retrieval.md`](analysis_data_retrieval.md) before choosing this `run` command instead of `report-data export`.
6
8
 
7
9
  Do not use this command for full, unknown-size, larger than 1000-row, or long-running report data; use `report-data export`.
@@ -27,9 +29,12 @@ ae-cli analysis report-data run --project-id <project_id> --report-ids '[2001]'
27
29
 
28
30
  # Explicit local-time mode (not UTC+99)
29
31
  ae-cli analysis report-data run --project-id <project_id> --report-ids '[1001]' --zone-offset 99 --limit 20
32
+
33
+ # One physical slave query cluster
34
+ ae-cli analysis report-data run --project-id <project_id> --report-ids '[1001]' --cluster-query-scope SLAVE --slave-cluster-id jp --limit 20
30
35
  ```
31
36
 
32
- Input sends `project_id`, `report_ids`, optional `request_id`, `filters`, `group_by`, `sql_params`, `start_time`, `end_time`, `time_granularity`, `zone_offset`, `use_cache`, `limit`, and `timeout_seconds`. Control defaults: `--limit` default 100 / max 1000, `--timeout-seconds` default 120 / max 180. The routing rule lives in [`analysis_data_retrieval.md`](analysis_data_retrieval.md).
37
+ Input also accepts optional `cluster_query_scope` and conditional `slave_cluster_id`. Omit both for current-self data. Use `GLOBAL` only for explicit cross-cluster aggregation; use `SLAVE` with exactly one ID returned by `analysis query-cluster list`. SQL reports reject `GLOBAL`. Control defaults: `--limit` default 100 / max 1000, `--timeout-seconds` default 120 / max 180.
33
38
 
34
39
  Timezone contract:
35
40
 
@@ -42,7 +47,7 @@ Override model:
42
47
 
43
48
  - `filters`: AI-facing intent object `{relation:"and|or", items:[{field:{name,type?}, operator, values?}]}`. `field.type` supports `event_property`, `user_property`, `cluster`, and `tag`; omit it only when the field name is unambiguous. Use field names from `analysis report get` definition output or metadata commands. Do not pass raw QP fields such as `taFilters`, `junctionKind`, `columnName`, `tableType`, or `selectType`.
44
49
  - `group-by`: AI-facing intent array `[{field:{name,type?}}]`. Use the same field model as report definitions. Do not pass raw `TaGroupByVo`. Time granularity is controlled by `--time-granularity`, not by `--group-by`.
45
- - `sql-params`: SQL report dynamic parameter value overrides. First read `analysis report get`; saved SQL params are exposed as AI-facing `definition.params`. Every name must exist in every target SQL report because one batch shares the override. Send only override values for existing parameter names: `[{"name":"platform","value":"ios"}]`, `[{"name":"server_id","operator":"contains","value":"s1"}]`, `[{"name":"level","operator":"eq","values":["42"]}]`, `[{"name":"amount","operator":"between","values":["10","20"]}]`, `[{"name":"part_date","start_time":"2026-07-01 00:00:00","end_time":"2026-07-09 23:59:59"}]`, or `[{"name":"part_date","recent_day":"1-7"}]`. Time fields require a saved `part_date` or time parameter. Operators `eq`/`in`, `neq`/`not_in`, and `between` use `values`; comparison/like/contains operators use single `value`. Do not send definition fields.
50
+ - `sql-params`: SQL report dynamic parameter value overrides. First read `analysis report get`; saved SQL params are exposed as AI-facing `definition.params`. Every name must exist in every target SQL report because one batch shares the override. Send only override values for existing parameter names: `[{"name":"platform","value":"ios"}]`, `[{"name":"server_id","operator":"contains","value":"s1"}]`, `[{"name":"level","operator":"eq","values":["42"]}]`, `[{"name":"amount","operator":"between","values":["10","20"]}]`, `[{"name":"part_date","start_time":"2026-07-01 00:00:00","end_time":"2026-07-09 23:59:59"}]`, or `[{"name":"part_date","recent_day":"1-7"}]`. Time fields require a saved `part_date` or time parameter. Operators `eq`/`in`, `neq`/`not_in`, and `between` use `values`; comparison/like/contains operators use single `value`. Do not send definition fields such as `type`, `options`, or `use_timezone`; change them through report update.
46
51
 
47
52
  A homogeneous SQL request that includes `filters`, `group_by`, `start_time`, `end_time`, or `time_granularity` fails with `INVALID_OVERRIDE_FOR_MODEL`. A homogeneous non-SQL request with `sql_params` also fails. Mixed-model batches are best-effort: data still returns and `meta.warnings[]` uses `OVERRIDE_IGNORED_FOR_MODEL`, `model_type`, `report_ids`, and `ignored_fields` to identify fields that did not apply. Do not discard these warnings.
48
53
 
@@ -50,6 +55,6 @@ For a newly created or updated dynamic SQL report, omit `--sql-params` to execut
50
55
 
51
56
  Output is the gateway envelope. `data` contains bounded inline report result items plus `query_context_id` and `sources[]`. Each source includes `effective_zone_offset`, the timezone value actually used for that query. When `zone_offset` is omitted, this is the resolved current-user timezone when available, otherwise the project default; when `zone_offset` is explicit, this is its resolved effective value. `sources[].drilldown` is present when the returned preview exposes follow-up actions. Each source is evaluated independently; SQL and other unsupported models have no actions.
52
57
 
53
- An empty batch or report result with no rows is a successful query: it means the requested time range has no data. The command fails only when every returned report entry contains an explicit execution error. Mixed batches keep successful items and return `meta.partial`, counts, and per-report `meta.failures` for partial-result handling.
58
+ `meta.actual_cluster_query_scope`, optional `meta.actual_slave_cluster_id`, and `meta.cluster_query_scope_source` describe the actual physical route. Verify them before comparing or drilling down. An empty batch or report result with no rows is a successful query: it means the requested time range has no data. The command fails only when every returned report entry contains an explicit execution error.
54
59
 
55
60
  Read [`analysis_drilldown_contract.md`](analysis_drilldown_contract.md). Select only returned row/column/metric options and call only the advertised event, entity, or result-cluster action. Do not pass raw QP.
@@ -12,12 +12,14 @@ ae-cli analysis report get --project-id <project_id> --report-id <report_id>
12
12
 
13
13
  Input sends `project_id` and `report_id`.
14
14
 
15
+ This command reads saved definition metadata and deliberately has no `--use-cache` option. Cache selection applies to `report-data run/export`, not to definition reads.
16
+
15
17
  Output is the gateway envelope. `data` contains `version`, `model_type`, `definition`, report metadata, and dashboard membership in snake_case. Use `data.version` as `--report-version` when updating the same report. Raw frontend `events`, `event_view`, `visual_view`, and raw QP are not returned.
16
18
 
17
19
  For a saved non-SQL report with a time granularity, `data.definition` returns the agent-facing `time_particle_size` spelling, such as `day`, `hour`, or `total`; internal `T0` through `T9` codes must never leak. If `time_particle_size` is absent, the saved definition has no readable granularity. Do not infer a granularity from the number of result rows; execute the saved report as-is or use an explicit ad-hoc definition when the user requires a specific granularity.
18
20
 
19
21
  This read is mandatory before applying report-data overrides. Branch on `data.model_type`:
20
22
 
21
- - `sql`: only `--sql-params` is valid. Every override name must already exist in `data.definition.params`; time values may be overridden only through a saved `part_date` or time parameter.
23
+ - `sql`: only `--sql-params` is valid. Every override name must already exist in `data.definition.params`; time values may be overridden only through a saved `part_date` or time parameter. A saved PartDate definition exposes boolean `use_timezone` (default `false`); it is definition metadata and cannot be overridden by report-data.
22
24
  - non-SQL analysis models: use `--filters`, `--group-by`, `--start-time`, `--end-time`, or `--time-granularity`; do not send `--sql-params`.
23
25
  - `tag`: report-data executes the saved tag definition. For a different tag view, use `analysis history-tag-data run/export`.
@@ -17,6 +17,10 @@ Input sends `project_id`, `report_id`, `version` from CLI `--report-version`, an
17
17
 
18
18
  Output is the gateway envelope. `data` contains update status, `report_id`, and the normalized AI QP definition when a definition was updated.
19
19
 
20
+ When a definition is supplied, update and its `--validate` / `--dry-run` paths use the same compiler contract. `AI_QP_COMPILE_FAILED` preserves `meta.compile_status`, full `meta.errors[]` (including `code`, `candidates`, and `suggestions`), `meta.resolved`, and `meta.warnings`. The report is not changed on this failure; resolve the ambiguity before retrying.
21
+
20
22
  For the shortest safe update, read the current `version` exactly once with `analysis report get` immediately before the write; do not reuse a version from an older list or conversation turn. If a SQL dynamic parameter definition changed, query the saved default before applying an override so default persistence and override behavior are verified separately.
21
23
 
24
+ For a SQL `part_date` parameter, `use_timezone` is a boolean saved definition field with default `false`. Change it only by submitting the complete updated `definition`; report-data `--sql-params` is value-only and must not contain `use_timezone`.
25
+
22
26
  After a successful update, call `analysis-meta asset url-get` with the updated `report_id` and output its `markdown_link`.
@@ -0,0 +1,29 @@
1
+ # analysis-meta super-metadata batch-create
2
+
3
+ Use this command to create effective system metadata in batch through the capability gateway: super events, event properties, and user properties.
4
+
5
+ Do not use it for ordinary event/property CRUD, metadata import from XLSX, or asset governance. Use the dedicated event/property commands, event-property-bundle import, or governance commands instead.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli analysis-meta super-metadata batch-create --project-id <project_id> --events '[{"event_name":"purchase","event_desc":"Purchase"}]' --event-properties '[{"prop_name":"amount","select_type":"number","super_event_names":["purchase"]}]' --dry-run
11
+ ```
12
+
13
+ Capability id: `metadata.super_metadata.batch_create`.
14
+
15
+ Input sends `project_id` plus any non-empty JSON arrays among `events`, `event_properties`, and `user_properties`. Use snake_case object fields exactly as documented by the common-service schema:
16
+
17
+ - Event items: `event_name`, optional `event_desc`, optional `remark`, optional `super_event_prop_names`.
18
+ - Event property items: `prop_name`, `select_type`, optional `prop_desc`, optional `prop_remark`, optional `common_prop`, optional `super_event_names`.
19
+ - User property items: `prop_name`, `select_type`, optional `prop_desc`, optional `prop_remark`.
20
+
21
+ Output returns `created.events`, `created.event_properties`, and `created.user_properties` with created names and IDs, plus count metadata. If common-service rejects a duplicate, bad reference, or invalid type, preserve the gateway error code and message.
22
+
23
+ ## Parameters
24
+ | Parameter | Required | Description |
25
+ |---|---|---|
26
+ | `--project-id` | Yes | Numeric project ID. |
27
+ | `--events` | No | Super event JSON array. |
28
+ | `--event-properties` | No | Event property JSON array. |
29
+ | `--user-properties` | No | User property JSON array. |
@@ -0,0 +1,24 @@
1
+ # analysis-meta super-metadata batch-edit
2
+
3
+ Use this command to batch edit descriptions and remarks for effective system metadata through the capability gateway.
4
+
5
+ Do not use it to create metadata, delete metadata, hide metadata, update event/property relations, or edit governance assets. Use batch-create or the dedicated metadata commands instead.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli analysis-meta super-metadata batch-edit --project-id <project_id> --type event_property --items '[{"prop_name":"amount","prop_desc":"Amount","prop_remark":"Revenue amount"}]' --dry-run
11
+ ```
12
+
13
+ Capability id: `metadata.super_metadata.batch_edit`.
14
+
15
+ Input sends `project_id`, `type`, and `items`. For `type=event`, each item identifies the target with `event_name` and may set `event_desc` or `remark`. For `type=event_property` or `type=user_property`, each item identifies the target with `prop_name` and may set `prop_desc` or `prop_remark`.
16
+
17
+ Output returns `type` and `updated_count`. Preserve validation errors from common-service, especially missing names, unsupported `type`, or empty `items`.
18
+
19
+ ## Parameters
20
+ | Parameter | Required | Description |
21
+ |---|---|---|
22
+ | `--project-id` | Yes | Numeric project ID. |
23
+ | `--type` | Yes | Metadata type to edit: `event`, `event_property`, or `user_property`. |
24
+ | `--items` | Yes | Batch edit item JSON array. |
@@ -9,9 +9,9 @@ Before constructing `--events` / `--filter`, validate the available events and p
9
9
  Command:
10
10
 
11
11
  ```bash
12
- ae-cli analysis-meta virtual-event create --project-id <project_id> --event-name ta@demo --event-desc demo --events '[{"eventName":"purchase"}]'
13
- ae-cli analysis-meta virtual-event create --project-id <project_id> --event-name ta@demo2 --event-desc demo --remark demo --events '[{"eventName":"add_to_cart"}]' --filter '{}' --override true
14
- ae-cli analysis-meta virtual-event create --project-id <project_id> --override false --payload '{"event_name":"qualified_purchase","event_desc":"Qualified purchase","rule":{"events":[...],"filter":{...}}}'
12
+ ae-cli analysis-meta virtual-event create --project-id <project_id> --event-name ta@demo --event-desc demo --events '[{"event_name":"purchase"}]'
13
+ ae-cli analysis-meta virtual-event create --project-id <project_id> --event-name ta@demo2 --event-desc demo --remark demo --events '[{"event_name":"add_to_cart","filter":{"relation":"and","items":[{"field":{"name":"country","type":"user_property"},"operator":"eq","values":["US"]}]}}]' --override true
14
+ ae-cli analysis-meta virtual-event create --project-id <project_id> --override false --payload '{"event_name":"ta@qualified_purchase","event_desc":"Qualified purchase","rule":{"events":[...],"filter":{...}}}'
15
15
  ae-cli analysis-meta virtual-event create --dry-run
16
16
  ```
17
17
 
@@ -19,7 +19,7 @@ Capability id: `metadata.virtual_event.create`.
19
19
 
20
20
  Input sends `project_id`, `override`, and `payload`. When typed flags are used, ae-cli builds `payload` from `event_name`, `event_desc`, `remark`, and `rule.events/filter`.
21
21
 
22
- Output is a successful gateway envelope with no business data. Read back with `virtual-event get` when the created event ID is known.
22
+ Output data contains `v_event_id` and `event_name`. Use the returned `v_event_id` for `virtual-event get` or `virtual-event delete`.
23
23
 
24
24
  ## Parameters
25
25
  | Parameter | Required | Description |
@@ -30,11 +30,12 @@ Output is a successful gateway envelope with no business data. Read back with `v
30
30
  | `--event-name` | No | Virtual event name. Must start with `ta@`. Required when `--payload` is omitted. |
31
31
  | `--event-desc` | No | Virtual event display name. Required when `--payload` is omitted. |
32
32
  | `--remark` | No | Optional virtual event remark. |
33
- | `--events` | No | JSON array of events to combine. Required when `--payload` is omitted. |
34
- | `--filter` | No | Optional global filter JSON. Referenced properties must come from `analysis-meta property list`. |
33
+ | `--events` | No | JSON array of `{event_name,event_desc?,filter?}`. Each filter uses `{relation:'and|or',items:[{field:{name,type?},operator,values?}]}`. Required when `--payload` is omitted. |
34
+ | `--filter` | No | Optional global AI-facing filter with the same `relation/items` shape. Raw `taFilters`, `junctionKind`, and `calcuSymbol` are rejected. Referenced properties must come from `analysis-meta property list`. |
35
35
 
36
36
  ## Decision Rules
37
37
  - `events` / `filter` must not be handwritten by intuition alone; they must match real metadata in the same project.
38
+ - Use snake_case `event_name`; do not pass the legacy `eventName` spelling.
38
39
  - Before calling `event list` / `property list`, read the corresponding reference documents.
39
40
  - For first validation, pass only required typed parameters: `--project-id`, `--event-name`, `--event-desc`, and `--events`.
40
41
  - Use `--payload` only when an exact virtual-event rule DTO is already available.