@thinkingai/ae-cli 6.1.5 → 6.1.7

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 (203) hide show
  1. package/README.md +3 -2
  2. package/README.zh.md +3 -2
  3. package/dist/index.js +28 -20
  4. package/dist/{metadata-W2MEOI4Z.js → metadata-ELUAR3EJ.js} +0 -53
  5. package/dist/{metadata-3M5F2AED.js → metadata-P5GIVMZ6.js} +0 -53
  6. package/dist/{te-agent-K2OWMZXT.js → te-agent-BOQ7ZY56.js} +194 -1
  7. package/dist/{te-analysis-Q7AZCDU4.js → te-analysis-HZIP6SYW.js} +446 -562
  8. package/dist/{te-analysis-I73ZS4NK.js → te-analysis-ZT2MYAHL.js} +446 -562
  9. package/dist/{te-dataops-MJV54MNY.js → te-dataops-VYN3IOKO.js} +6 -6
  10. package/dist/{te-dataops-OA7I6HBG.js → te-dataops-Y5QAPPPF.js} +6 -6
  11. package/dist/{te-engage-GJRVQMK3.js → te-engage-2FSDUOIZ.js} +965 -1578
  12. package/dist/{te-engage-JIXX3WBI.js → te-engage-BMJ6UOUU.js} +965 -1578
  13. package/dist/te-experiment-4JC7WUKW.js +590 -0
  14. package/dist/te-experiment-KYRWAUZY.js +590 -0
  15. package/dist/{te-kb-CIZXRWMO.js → te-kb-E7NSCBRB.js} +25 -6
  16. package/dist/te-meta-GBDTMPEL.js +95 -0
  17. package/dist/te-meta-ZTLTSHXC.js +95 -0
  18. package/package.json +6 -5
  19. package/skills/ae-agent/SKILL.md +5 -1
  20. package/skills/ae-agent/references/list-sandbox-tools.md +79 -0
  21. package/skills/ae-analysis/SKILL.md +8 -9
  22. package/skills/ae-analysis/references/adhoc_export.md +8 -0
  23. package/skills/ae-analysis/references/adhoc_run.md +9 -0
  24. package/skills/ae-analysis/references/ai_models.md +3 -1
  25. package/skills/ae-analysis/references/analysis_data_retrieval.md +2 -0
  26. package/skills/ae-analysis/references/analysis_drilldown_contract.md +2 -0
  27. package/skills/ae-analysis/references/analysis_gateway_assets.md +9 -7
  28. package/skills/ae-analysis/references/command_index.md +18 -40
  29. package/skills/ae-analysis/references/dashboard_report_data_export.md +4 -2
  30. package/skills/ae-analysis/references/dashboard_report_data_run.md +5 -3
  31. package/skills/ae-analysis/references/drilldown_entities_export.md +3 -0
  32. package/skills/ae-analysis/references/drilldown_entities_run.md +2 -1
  33. package/skills/ae-analysis/references/drilldown_events_export.md +3 -0
  34. package/skills/ae-analysis/references/drilldown_events_run.md +2 -1
  35. package/skills/ae-analysis/references/drilldown_user_events_export.md +3 -0
  36. package/skills/ae-analysis/references/drilldown_user_events_run.md +2 -0
  37. package/skills/ae-analysis/references/entity_id_import_options.md +1 -1
  38. package/skills/ae-analysis/references/filter_value_list.md +47 -0
  39. package/skills/ae-analysis/references/project_space_get.md +3 -3
  40. package/skills/ae-analysis/references/project_space_list.md +6 -2
  41. package/skills/ae-analysis/references/query_cancel.md +3 -1
  42. package/skills/ae-analysis/references/query_cluster_list.md +34 -0
  43. package/skills/ae-analysis/references/query_create_result_cluster.md +2 -0
  44. package/skills/ae-analysis/references/report_create.md +5 -1
  45. package/skills/ae-analysis/references/report_data_export.md +9 -2
  46. package/skills/ae-analysis/references/report_data_run.md +8 -3
  47. package/skills/ae-analysis/references/report_get.md +3 -1
  48. package/skills/ae-analysis/references/report_update.md +4 -0
  49. package/skills/ae-analysis/references/virtual_event_create.md +7 -6
  50. package/skills/ae-analysis-global/SKILL.md +15 -32
  51. package/skills/ae-community/SKILL.md +1 -1
  52. package/skills/ae-data-integration-helper/SKILL.md +3 -2
  53. package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +1 -1
  54. package/skills/ae-dataops/SKILL.md +2 -1
  55. package/skills/ae-dataops/references/dataops-integration.md +75 -6
  56. package/skills/ae-engage/SKILL.md +127 -104
  57. package/skills/ae-engage/references/activity-activity-type.md +1 -1
  58. package/skills/ae-engage/references/activity-activity.md +1 -1
  59. package/skills/ae-engage/references/activity-approval.md +5 -7
  60. package/skills/ae-engage/references/activity-task.md +12 -18
  61. package/skills/ae-engage/references/activity-topic.md +39 -22
  62. package/skills/ae-engage/references/add-approver.md +4 -4
  63. package/skills/ae-engage/references/add-channel.md +10 -5
  64. package/skills/ae-engage/references/approval-approver-delete.md +1 -1
  65. package/skills/ae-engage/references/approver-list.md +4 -4
  66. package/skills/ae-engage/references/build-task-save-guide.md +13 -13
  67. package/skills/ae-engage/references/cancel-query-by-request-id.md +7 -6
  68. package/skills/ae-engage/references/channel-detail.md +14 -9
  69. package/skills/ae-engage/references/channel-list.md +15 -10
  70. package/skills/ae-engage/references/channel-mgmt.md +109 -0
  71. package/skills/ae-engage/references/channel-test-send.md +1 -1
  72. package/skills/ae-engage/references/channel-update-config.md +1 -1
  73. package/skills/ae-engage/references/channel_touch_limits_list.md +1 -1
  74. package/skills/ae-engage/references/client-param.md +34 -16
  75. package/skills/ae-engage/references/common-metric.md +85 -18
  76. package/skills/ae-engage/references/config-item-analysis-report.md +8 -27
  77. package/skills/ae-engage/references/config-item-strategy-comparison.md +7 -18
  78. package/skills/ae-engage/references/config-item-trigger-report.md +8 -35
  79. package/skills/ae-engage/references/delete-channel.md +5 -5
  80. package/skills/ae-engage/references/delete-flow.md +5 -5
  81. package/skills/ae-engage/references/flow-ab-split-node-report.md +11 -45
  82. package/skills/ae-engage/references/flow-detail.md +15 -10
  83. package/skills/ae-engage/references/flow-list.md +9 -4
  84. package/skills/ae-engage/references/flow-node-config-schema.md +9 -8
  85. package/skills/ae-engage/references/flow-node-detail-report.md +11 -46
  86. package/skills/ae-engage/references/flow-node-overview-report.md +11 -43
  87. package/skills/ae-engage/references/flow-process-report.md +12 -50
  88. package/skills/ae-engage/references/flow-update-remark.md +19 -0
  89. package/skills/ae-engage/references/manage-flow.md +19 -19
  90. package/skills/ae-engage/references/manage-task.md +5 -5
  91. package/skills/ae-engage/references/modify-flow-base-info.md +8 -8
  92. package/skills/ae-engage/references/preset-event.md +1 -1
  93. package/skills/ae-engage/references/push-language.md +1 -1
  94. package/skills/ae-engage/references/save-flow.md +54 -52
  95. package/skills/ae-engage/references/save-task.md +23 -17
  96. package/skills/ae-engage/references/scene-config-channel.md +90 -10
  97. package/skills/ae-engage/references/scene-config-group.md +1 -1
  98. package/skills/ae-engage/references/scene-config-item.md +27 -4
  99. package/skills/ae-engage/references/scene-config-metric.md +1 -1
  100. package/skills/ae-engage/references/scene-config-param.md +2 -2
  101. package/skills/ae-engage/references/scene-preset-metric.md +1 -1
  102. package/skills/ae-engage/references/scene-strategy.md +19 -3
  103. package/skills/ae-engage/references/scene-template.md +10 -4
  104. package/skills/ae-engage/references/task-data-detail.md +5 -67
  105. package/skills/ae-engage/references/task-data-overview.md +5 -35
  106. package/skills/ae-engage/references/task-detail.md +5 -5
  107. package/skills/ae-engage/references/task-experiment-report.md +5 -38
  108. package/skills/ae-engage/references/task-list.md +4 -4
  109. package/skills/ae-engage/references/task-metric-detail.md +5 -43
  110. package/skills/ae-engage/references/task-stats.md +5 -5
  111. package/skills/ae-engage/references/update-channel-status.md +6 -6
  112. package/skills/ae-engage/references/validate-flow-node-config.md +12 -11
  113. package/skills/ae-engage/references/whitelist-list.md +4 -4
  114. package/skills/ae-engage/references/whitelist.md +1 -1
  115. package/skills/ae-engage/references/workbench-workbench.md +1 -1
  116. package/skills/ae-experiment/SKILL.md +30 -20
  117. package/skills/ae-experiment/references/batch_delete_experiment.md +4 -4
  118. package/skills/ae-experiment/references/batch_delete_feature.md +3 -3
  119. package/skills/ae-experiment/references/batch_delete_traffic_layer.md +4 -4
  120. package/skills/ae-experiment/references/cancel_experiment_query_by_request_id.md +5 -4
  121. package/skills/ae-experiment/references/check_experiment_ready.md +7 -5
  122. package/skills/ae-experiment/references/check_experiment_traffic_layer_conflict.md +37 -0
  123. package/skills/ae-experiment/references/delete_metric.md +4 -4
  124. package/skills/ae-experiment/references/manage_experiment.md +8 -6
  125. package/skills/ae-experiment/references/manage_feature_status.md +3 -3
  126. package/skills/ae-experiment/references/query_bucket_list.md +5 -3
  127. package/skills/ae-experiment/references/query_experiment_detail.md +6 -4
  128. package/skills/ae-experiment/references/query_experiment_list.md +12 -4
  129. package/skills/ae-experiment/references/query_experiment_list_archived.md +15 -0
  130. package/skills/ae-experiment/references/query_experiment_metric_trend.md +6 -10
  131. package/skills/ae-experiment/references/query_experiment_operation_log.md +17 -0
  132. package/skills/ae-experiment/references/query_experiment_report_summary.md +5 -6
  133. package/skills/ae-experiment/references/query_experiment_sample_size_report.md +6 -10
  134. package/skills/ae-experiment/references/query_feature_detail.md +6 -4
  135. package/skills/ae-experiment/references/query_feature_list.md +5 -3
  136. package/skills/ae-experiment/references/query_feature_operation_log.md +19 -0
  137. package/skills/ae-experiment/references/query_feature_version_list.md +20 -0
  138. package/skills/ae-experiment/references/query_metric_detail.md +6 -4
  139. package/skills/ae-experiment/references/query_metric_list.md +5 -3
  140. package/skills/ae-experiment/references/query_traffic_layer_detail.md +6 -4
  141. package/skills/ae-experiment/references/query_traffic_layer_list.md +5 -3
  142. package/skills/ae-experiment/references/save_experiment.md +148 -9
  143. package/skills/ae-experiment/references/save_feature.md +3 -3
  144. package/skills/ae-experiment/references/save_metric.md +3 -3
  145. package/skills/ae-experiment/references/save_submit_experiment.md +6 -6
  146. package/skills/ae-experiment/references/save_traffic_layer.md +3 -3
  147. package/skills/ae-experiment/references/update_experiment_group.md +20 -0
  148. package/skills/ae-generate-tracking-code/SKILL.md +4 -3
  149. package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +1 -1
  150. package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +1 -1
  151. package/skills/ae-generate-tracking-code/references/snippet-delivery.md +1 -1
  152. package/skills/ae-generate-tracking-plan/SKILL.md +6 -2
  153. package/skills/ae-kb/SKILL.md +9 -5
  154. package/skills/ae-metadata/SKILL.md +8 -15
  155. package/skills/ae-metadata/references/metadata_property_dimension_table_bind_existing.md +1 -1
  156. package/dist/te-common-ST3QPSXJ.js +0 -61
  157. package/dist/te-common-WSLIKKPC.js +0 -61
  158. package/dist/te-experiment-JKX4FH6D.js +0 -607
  159. package/dist/te-experiment-UMSHBBKI.js +0 -607
  160. package/dist/te-meta-Q4L6EE3Q.js +0 -363
  161. package/dist/te-meta-VHCN4Q62.js +0 -363
  162. package/skills/ae-analysis/references/batch_create_metadata.md +0 -41
  163. package/skills/ae-analysis/references/batch_edit_metadata.md +0 -39
  164. package/skills/ae-analysis/references/cancel_query.md +0 -38
  165. package/skills/ae-analysis/references/create_alert.md +0 -47
  166. package/skills/ae-analysis/references/create_entity.md +0 -39
  167. package/skills/ae-analysis/references/create_project_mark_time.md +0 -39
  168. package/skills/ae-analysis/references/delete_alert.md +0 -32
  169. package/skills/ae-analysis/references/delete_project_mark_times.md +0 -36
  170. package/skills/ae-analysis/references/delete_track_items.md +0 -36
  171. package/skills/ae-analysis/references/generate_track_program.md +0 -52
  172. package/skills/ae-analysis/references/generate_track_sdk_sample.md +0 -44
  173. package/skills/ae-analysis/references/get_alert.md +0 -35
  174. package/skills/ae-analysis/references/get_alert_definition_schema.md +0 -33
  175. package/skills/ae-analysis/references/get_project_config.md +0 -33
  176. package/skills/ae-analysis/references/get_track_program.md +0 -34
  177. package/skills/ae-analysis/references/list_alerts.md +0 -41
  178. package/skills/ae-analysis/references/list_entities.md +0 -42
  179. package/skills/ae-analysis/references/list_project_mark_times.md +0 -43
  180. package/skills/ae-analysis/references/list_project_users.md +0 -33
  181. package/skills/ae-analysis/references/list_projects.md +0 -39
  182. package/skills/ae-analysis/references/load_filters.md +0 -47
  183. package/skills/ae-analysis/references/save_track_items.md +0 -37
  184. package/skills/ae-analysis/references/update_alert.md +0 -49
  185. package/skills/ae-analysis/references/update_project_mark_time.md +0 -40
  186. package/skills/ae-analysis-global/references/list_query_clusters.md +0 -68
  187. package/skills/ae-engage/references/config-channel-detail.md +0 -31
  188. package/skills/ae-engage/references/config-channel-list.md +0 -26
  189. package/skills/ae-engage/references/config-item-detail.md +0 -29
  190. package/skills/ae-engage/references/config-item-list.md +0 -18
  191. package/skills/ae-engage/references/copy-config-template.md +0 -28
  192. package/skills/ae-engage/references/delete-config-channel.md +0 -23
  193. package/skills/ae-engage/references/delete-config-item.md +0 -24
  194. package/skills/ae-engage/references/engage-scene-config-item.md +0 -69
  195. package/skills/ae-engage/references/manage-strategy.md +0 -73
  196. package/skills/ae-engage/references/strategy-detail.md +0 -72
  197. package/skills/ae-engage/references/strategy-list.md +0 -20
  198. package/skills/ae-engage/references/update-config-channel-status.md +0 -31
  199. package/skills/ae-metadata/references/metadata_event_get.md +0 -52
  200. package/skills/ae-metadata/references/metadata_property_get.md +0 -54
  201. package/dist/{config-RCCGHHYA.js → config-PMPISN5Y.js} +4 -4
  202. package/dist/{te-community-WXGB6IOX.js → te-community-QOYIYEJI.js} +3 -3
  203. package/dist/{te-community-X2AHXGCA.js → te-community-UFKI6ONP.js} +3 -3
@@ -0,0 +1,15 @@
1
+ # experiment experiment list-archived
2
+
3
+ Query archived experiments in a project.
4
+
5
+ This command reuses the existing experiment list API and hardcodes `status=archive`.
6
+ It only accepts `--project-id`; it does not expose additional filters.
7
+
8
+ ```bash
9
+ ae-cli experiment experiment list-archived --project-id <id>
10
+ ```
11
+
12
+ Flags:
13
+ - `--project-id`, `-p`: Project ID.
14
+
15
+ Response shape: `data.items` contains the archived experiments, `data.total` contains the count, and item keys are recursively snake_case.
@@ -1,16 +1,12 @@
1
- # +query_experiment_metric_trend
1
+ # capability run experiment.report.metric-trend
2
2
 
3
3
  Query experiment metric trend report.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_experiment_metric_trend --project_id <id> --exp_id <expId> --metric_id <metricId> --start_time 2026-07-01 --end_time 2026-07-07 [--request_id <id>] [--force_refresh true]
6
+ ae-cli capability run experiment.report.metric-trend --input '{"project_id":1,"exp_id":"exp_123","metric_id":"metric_1","start_time":"2026-07-01","end_time":"2026-07-07"}'
7
7
  ```
8
8
 
9
- Flags:
10
- - `--project_id`, `-p`: Project ID.
11
- - `--exp_id`: Experiment ID.
12
- - `--metric_id`: Metric ID.
13
- - `--start_time`: Start date, `yyyy-MM-dd`.
14
- - `--end_time`: End date, `yyyy-MM-dd`.
15
- - `--request_id`: Optional request ID for query tracking.
16
- - `--force_refresh`: Optional boolean for report refresh.
9
+ Required input: `project_id`, `exp_id`, `metric_id`, `start_time`, `end_time`.
10
+ Optional input: `request_id`, `force_refresh`.
11
+
12
+ Response shape: `data.report`, with recursively snake_case keys. Preserve `request_id` for cancellation.
@@ -0,0 +1,17 @@
1
+ # experiment operation-log query
2
+
3
+ Query full operation logs for one experiment.
4
+
5
+ Returns the complete Atlas experiment operation-log payload, including `remark`,
6
+ `operation_content`, and structured `changes` when present. No field projection.
7
+
8
+ ```bash
9
+ ae-cli experiment operation-log query --project-id <id> --exp-id <exp-id>
10
+ ```
11
+
12
+ Flags:
13
+ - `--project-id`, `-p`: Project ID.
14
+ - `--exp-id`: Experiment ID.
15
+
16
+ Response shape: `data.items` contains the full log records, `data.total` contains
17
+ the count, and item keys are recursively snake_case.
@@ -1,12 +1,11 @@
1
- # +query_experiment_report_summary
1
+ # capability run experiment.report.summary
2
2
 
3
3
  Query experiment report summary.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_experiment_report_summary --project_id <id> --exp_id <expId> [--force_refresh true]
6
+ ae-cli capability run experiment.report.summary --input '{"project_id":1,"exp_id":"exp_123","force_refresh":false}'
7
7
  ```
8
8
 
9
- Flags:
10
- - `--project_id`, `-p`: Project ID.
11
- - `--exp_id`: Experiment ID.
12
- - `--force_refresh`: Optional boolean for report refresh.
9
+ Required input: `project_id`, `exp_id`. Optional input: `force_refresh`.
10
+
11
+ Response shape: `data.report`, with recursively snake_case keys.
@@ -1,16 +1,12 @@
1
- # +query_experiment_sample_size_report
1
+ # capability run experiment.report.sample-size
2
2
 
3
3
  Query experiment sample-size report.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_experiment_sample_size_report --project_id <id> --exp_id <expId> --start_time 2026-07-01 --end_time 2026-07-07 [--request_id <id>] [--force_refresh true] [--by_hour true]
6
+ ae-cli capability run experiment.report.sample-size --input '{"project_id":1,"exp_id":"exp_123","start_time":"2026-07-01","end_time":"2026-07-07","by_hour":false}'
7
7
  ```
8
8
 
9
- Flags:
10
- - `--project_id`, `-p`: Project ID.
11
- - `--exp_id`: Experiment ID.
12
- - `--start_time`: Start date, `yyyy-MM-dd`.
13
- - `--end_time`: End date, `yyyy-MM-dd`.
14
- - `--request_id`: Optional request ID for query tracking.
15
- - `--force_refresh`: Optional boolean for report refresh.
16
- - `--by_hour`: Optional boolean to show results by hour.
9
+ Required input: `project_id`, `exp_id`, `start_time`, `end_time`.
10
+ Optional input: `request_id`, `force_refresh`, `by_hour`.
11
+
12
+ Response shape: `data.report`, with recursively snake_case keys. Preserve `request_id` for cancellation.
@@ -1,12 +1,14 @@
1
- # +query_feature_detail
1
+ # experiment feature get
2
2
 
3
3
  Query Feature detail by key and optional version.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_feature_detail --project_id <id> --feature_key <key> [--version <versionId>]
6
+ ae-cli experiment feature get --project-id <id> --feature-key <key> [--version <versionId>]
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
11
- - `--feature_key`: Feature key.
10
+ - `--project-id`, `-p`: Project ID.
11
+ - `--feature-key`: Feature key.
12
12
  - `--version`: Optional Feature version ID.
13
+
14
+ Response shape: the Feature is in `data.item`, with recursively snake_case keys such as `feature_key` and `target_platform`.
@@ -1,10 +1,12 @@
1
- # +query_feature_list
1
+ # experiment feature list
2
2
 
3
3
  Query Features in a project.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_feature_list --project_id <id>
6
+ ae-cli experiment feature list --project-id <id>
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
10
+ - `--project-id`, `-p`: Project ID.
11
+
12
+ Response shape: `data.items` contains Features, `data.total` contains the count, and item keys are recursively snake_case.
@@ -0,0 +1,19 @@
1
+ # experiment feature operation-log query
2
+
3
+ Query Feature operation logs for one Feature key.
4
+
5
+ Reuses Hermes `GET /v1/atlas/feature/operationLogs` and returns the generic Atlas
6
+ operation-log payload (`operation_type`, `operation_type_name`, `operator_name`,
7
+ `operation_content`, `operate_time`). This is separate from
8
+ `experiment operation-log query` and does not include experiment-side `changes`.
9
+
10
+ ```bash
11
+ ae-cli experiment feature operation-log query --project-id <id> --feature-key <feature-key>
12
+ ```
13
+
14
+ Flags:
15
+ - `--project-id`, `-p`: Project ID.
16
+ - `--feature-key`: Feature key.
17
+
18
+ Response shape: `data.items` contains the full log records, `data.total` contains
19
+ the count, and item keys are recursively snake_case.
@@ -0,0 +1,20 @@
1
+ # experiment feature version-list
2
+
3
+ List Feature version history for one Feature key.
4
+
5
+ Reuse the existing Hermes `GET /v1/atlas/feature/versions` API and return the full
6
+ version records, including `version_snapshot`.
7
+
8
+ Use with `experiment feature get --version <featureVersionId>` to inspect one version.
9
+
10
+ ```bash
11
+ ae-cli experiment feature version-list --project-id <id> --feature-key <feature-key>
12
+ ae-cli experiment feature get --project-id <id> --feature-key <feature-key> --version <featureVersionId>
13
+ ```
14
+
15
+ Flags:
16
+ - `--project-id`, `-p`: Project ID.
17
+ - `--feature-key`: Feature key.
18
+
19
+ Response shape: `data.items` contains version history records, `data.total` contains
20
+ the count, and item keys are recursively snake_case.
@@ -1,11 +1,13 @@
1
- # +query_metric_detail
1
+ # experiment metric get
2
2
 
3
3
  Query metric detail.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_metric_detail --project_id <id> --metric_id <metricId>
6
+ ae-cli experiment metric get --project-id <id> --metric-id <metricId>
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
11
- - `--metric_id`: Metric ID.
10
+ - `--project-id`, `-p`: Project ID.
11
+ - `--metric-id`: Metric ID.
12
+
13
+ Response shape: the metric is in `data.item`, with recursively snake_case keys.
@@ -1,10 +1,12 @@
1
- # +query_metric_list
1
+ # experiment metric list
2
2
 
3
3
  Query metrics in a project.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_metric_list --project_id <id>
6
+ ae-cli experiment metric list --project-id <id>
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
10
+ - `--project-id`, `-p`: Project ID.
11
+
12
+ Response shape: `data.items` contains metrics, `data.total` contains the count, and item keys are recursively snake_case.
@@ -1,11 +1,13 @@
1
- # +query_traffic_layer_detail
1
+ # experiment traffic-layer get
2
2
 
3
3
  Query traffic layer detail.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_traffic_layer_detail --project_id <id> --layer_id <layerId>
6
+ ae-cli experiment traffic-layer get --project-id <id> --layer-id <layerId>
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
11
- - `--layer_id`: Traffic layer ID.
10
+ - `--project-id`, `-p`: Project ID.
11
+ - `--layer-id`: Traffic layer ID.
12
+
13
+ Response shape: the traffic layer is in `data.item`, with recursively snake_case keys.
@@ -1,10 +1,12 @@
1
- # +query_traffic_layer_list
1
+ # experiment traffic-layer list
2
2
 
3
3
  Query traffic layers in a project.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +query_traffic_layer_list --project_id <id>
6
+ ae-cli experiment traffic-layer list --project-id <id>
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
10
+ - `--project-id`, `-p`: Project ID.
11
+
12
+ Response shape: `data.items` contains traffic layers, `data.total` contains the count, and item keys are recursively snake_case.
@@ -1,17 +1,156 @@
1
- # +save_experiment
1
+ # experiment experiment save
2
2
 
3
- Create or update an experiment draft.
3
+ Progressively create or patch an experiment draft.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +save_experiment --project_id <id> --req '<json>'
6
+ ae-cli experiment experiment save --project-id <id> --req '<json>'
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
10
+ - `--project-id`, `-p`: Project ID.
11
11
  - `--req`: Experiment save request JSON object.
12
12
 
13
- Notes:
14
- - Blank `req.expId` creates a draft and returns an experiment ID.
15
- - Non-blank `req.expId` patches the existing draft.
16
- - `req.projectId` is overwritten from `--project_id`.
17
- - Use `+check_experiment_ready` before moving to `pending`, `testing`, or `running`.
13
+ ## Contract
14
+
15
+ - Call shape is top-level `projectId` plus a non-empty `req` object. In CLI form, `--project-id` supplies the top-level project ID.
16
+ - Capability input uses outer `project_id`; nested `req` fields remain native camelCase. Hermes overwrites `req.projectId` with the outer project ID.
17
+ - Never call this with `req=null`, `req={}`, or a modify payload containing only `expId`; those are terminal validation failures.
18
+ - On `valid=false`, do not retry the same payload. Fix the reported field(s) or ask the user for missing input.
19
+
20
+ Response shape is `data.result`. Object keys inside the result are recursively snake_case. A create commonly returns the new experiment ID as `data.result`; a patch commonly returns `true`.
21
+
22
+ ## Payload Type Contract
23
+
24
+ Nested payload fields must match the server DTO types, not just the visible CLI dry-run body shape.
25
+
26
+ | Field | Correct shape | Incorrect shape |
27
+ | --- | --- | --- |
28
+ | `featureKeyList` | `["payment_color"]` | `[{"featureKey":"payment_color"}]` |
29
+ | `groups[].expGroupValue` | `"[\"green\"]"` | `["green"]` |
30
+ | `metrics` | `[{"metricId":"payment","metricRole":"primary"}]` | `["payment"]` |
31
+
32
+ - `featureKeyList` is an array of Feature key strings, not Feature objects. For feature experiments, pass one Feature key string.
33
+ - `groups[].expGroupValue` is a JSON-encoded string of a string array. Pass a string whose content is a JSON array, not a native JSON array.
34
+ - `metrics` is an array of metric binding objects. Each object contains `metricId` and `metricRole`.
35
+
36
+ ## Modes
37
+
38
+ ### Create Draft
39
+
40
+ Blank or missing `req.expId` creates a draft.
41
+
42
+ Required:
43
+ - `expName`
44
+
45
+ Optional while drafting:
46
+ - `expType` (blank defaults to `feature`)
47
+ - `groupId`
48
+ - `trafficLayerId`
49
+ - `allocation`
50
+ - `expSalt`
51
+ - `expSupposition`
52
+ - `expDesc`
53
+ - `isExpSharing`
54
+ - `bucketId`
55
+ - `expCycle`
56
+ - `groups`
57
+ - `featureKeyList`
58
+ - `metrics`
59
+ - `targeting`
60
+
61
+ Success returns the created `expId`.
62
+
63
+ ```bash
64
+ ae-cli experiment experiment save --project-id 1 --req '{"expName":"Homepage CTA draft"}'
65
+ ```
66
+
67
+ ### Patch Draft
68
+
69
+ Non-blank `req.expId` patches an existing draft by merging the request with current experiment detail.
70
+
71
+ Required:
72
+ - `expId`
73
+ - At least one changed field besides `expId`
74
+
75
+ Merge behavior:
76
+ - Omitted fields keep their current values.
77
+ - Non-null scalar/object fields replace current values.
78
+ - Non-empty `groups`, `featureKeyList`, `metrics`, and non-null `targeting` replace saved values.
79
+ - Empty lists are not a reliable clear operation. Do not use empty arrays to clear bindings unless the backend contract is confirmed separately.
80
+
81
+ Success returns `true`; continue using the input `expId`.
82
+
83
+ ```bash
84
+ ae-cli experiment experiment save --project-id 1 --req '{"expId":"exp_123","allocation":20}'
85
+ ```
86
+
87
+ ## Field Notes
88
+
89
+ - `isExpSharing=1` uses a shared traffic layer from `experiment traffic-layer list`; pick a `trafficLayerId` whose available idle traffic can cover `allocation`.
90
+ - `isExpSharing=0` uses exclusive traffic with `bucketId`; select the bucket with `experiment bucket list`.
91
+ - `allocation` is optional during draft construction, but before readiness it must be greater than `0` and no more than `100`.
92
+ - `expCycle.cycleType` can be `day` or `sample`; when `cycleType=day`, `dayNum` is `1..90`. Blank cycle defaults to day + 30.
93
+ - Before readiness, `groups` must be non-empty, contain exactly one control group, total allocation must equal `100`, and each `expGroupValue` must be a non-empty JSON string array.
94
+ - Feature experiments must bind `featureKeyList` before readiness. `featureKeyList` contains Feature key strings, not Feature objects. The MCP currently supports one `featureKey` for feature experiments.
95
+ - Metrics use `metricRole=primary|secondary|guardrail|observation`; before readiness at least one primary metric is required.
96
+ - `targeting` replaces the saved targeting object when provided.
97
+
98
+ ## Payload Examples
99
+
100
+ Patch a Feature binding. `featureKeyList` is a string array:
101
+
102
+ ```bash
103
+ ae-cli experiment experiment save --project-id 2 --req '{"expId":"e024","featureKeyList":["payment_color"]}'
104
+ ```
105
+
106
+ Patch groups. `expGroupValue` is a JSON-encoded string, not a native array:
107
+
108
+ ```bash
109
+ ae-cli experiment experiment save --project-id 2 --req '{"expId":"e024","groups":[{"expGroupName":"control","isControl":1,"allocation":50,"expGroupValue":"[\"green\"]"},{"expGroupName":"variant","isControl":0,"allocation":50,"expGroupValue":"[\"red\"]"}]}'
110
+ ```
111
+
112
+ Patch metrics. `metrics` is an object array:
113
+
114
+ ```bash
115
+ ae-cli experiment experiment save --project-id 2 --req '{"expId":"e024","metrics":[{"metricId":"payment","metricRole":"primary"}]}'
116
+ ```
117
+
118
+ ## Dry-run Limitation
119
+
120
+ `--dry-run` calls the Capability Gateway preview endpoint. It validates the outer input contract but does not guarantee that every nested DTO business rule will pass execution.
121
+
122
+ If execution reports a DTO type mismatch after a clean dry-run, inspect nested field types first:
123
+
124
+ - `featureKeyList` must be a string array.
125
+ - `groups[].expGroupValue` must be a JSON-encoded string.
126
+ - `metrics` must be an object array with `metricId` and `metricRole`.
127
+
128
+ ## Verified Related CLI Commands
129
+
130
+ Use only these confirmed ae-cli commands when composing or checking a save payload:
131
+
132
+ - `experiment experiment get`: optional; use only when patching an existing `expId` and you need to inspect saved fields.
133
+ - `experiment bucket list`: find `bucketId`.
134
+ - `experiment traffic-layer list`: find shared `trafficLayerId`.
135
+ - `experiment feature list`: find `featureKey`.
136
+ - `experiment metric list`: find `metricId`.
137
+ - `experiment traffic-layer save`: create a missing traffic layer.
138
+ - `experiment feature save`: create a missing Feature.
139
+ - `experiment metric save`: create a missing metric.
140
+ - `experiment experiment ready-check`: verify completeness before moving to `pending`, `testing`, or `running`.
141
+
142
+ ## Completion
143
+
144
+ After a successful save, output the experiment detail link in this form, substituting the returned or input `expId` and actual project ID:
145
+
146
+ ```markdown
147
+ [View experiment](/#/atlas/experiment/detail?expId=<expId>&currentProjectId=<projectId>)
148
+ ```
149
+
150
+ After every successful save, call:
151
+
152
+ ```bash
153
+ ae-cli experiment experiment ready-check --project-id <id> --exp-id <expId>
154
+ ```
155
+
156
+ Use readiness failures to decide the next patch. Do not report the experiment save work as complete until readiness has been checked.
@@ -1,13 +1,13 @@
1
- # +save_feature
1
+ # experiment feature save
2
2
 
3
3
  Create or update a Feature.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +save_feature --project_id <id> --req '<json>'
6
+ ae-cli experiment feature save --project-id <id> --req '<json>'
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
10
+ - `--project-id`, `-p`: Project ID.
11
11
  - `--req`: Feature save request JSON object.
12
12
 
13
13
  Create mode requires `featureKey`, `type`, and `targetPlatform`. Modify mode uses `id` or `update=true`.
@@ -1,13 +1,13 @@
1
- # +save_metric
1
+ # experiment metric save
2
2
 
3
3
  Create or update a metric.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +save_metric --project_id <id> --req '<json>'
6
+ ae-cli experiment metric save --project-id <id> --req '<json>'
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
10
+ - `--project-id`, `-p`: Project ID.
11
11
  - `--req`: Metric save request JSON object.
12
12
 
13
13
  Create mode requires metric identifiers and metric configuration. Modify mode uses `update=true`.
@@ -1,13 +1,13 @@
1
- # +save_submit_experiment
1
+ # capability run experiment.experiment.save-submit
2
2
 
3
3
  Create or update a complete experiment and submit it in one call.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +save_submit_experiment --project_id <id> --req '<json>'
6
+ ae-cli capability run experiment.experiment.save-submit --input '{"project_id":1,"req":{...}}'
7
7
  ```
8
8
 
9
- Flags:
10
- - `--project_id`, `-p`: Project ID.
11
- - `--req`: Save-and-submit request JSON object.
9
+ Input fields: `project_id` and `req`. The outer input is snake_case; fields inside `req` keep the native camelCase DTO shape.
12
10
 
13
- Prefer `+save_experiment` for progressive draft construction.
11
+ Response shape: `data.result`, with object keys recursively converted to snake_case.
12
+
13
+ Prefer `experiment experiment save` for progressive draft construction.
@@ -1,13 +1,13 @@
1
- # +save_traffic_layer
1
+ # experiment traffic-layer save
2
2
 
3
3
  Create or update a traffic layer.
4
4
 
5
5
  ```bash
6
- ae-cli experiment +save_traffic_layer --project_id <id> --req '<json>'
6
+ ae-cli experiment traffic-layer save --project-id <id> --req '<json>'
7
7
  ```
8
8
 
9
9
  Flags:
10
- - `--project_id`, `-p`: Project ID.
10
+ - `--project-id`, `-p`: Project ID.
11
11
  - `--req`: Traffic layer save request JSON object.
12
12
 
13
13
  Create mode requires `bucketId`, `layerName`, and `layerType` in the request. Modify mode requires `layerId`.
@@ -0,0 +1,20 @@
1
+ # experiment experiment update-group
2
+
3
+ Update only the business group of one experiment.
4
+
5
+ Reuses Hermes `POST /v1/atlas/experiment/updateGroup`. This dedicated endpoint
6
+ updates `group_id` only and does not go through full experiment `modify`, so it
7
+ will not rewrite traffic, variants, metrics, or other fields.
8
+
9
+ ```bash
10
+ ae-cli experiment experiment update-group --project-id <id> --exp-id <exp-id> --group-id <group-id>
11
+ ae-cli experiment experiment update-group --project-id <id> --exp-id <exp-id> --group-id 0 --dry-run
12
+ ```
13
+
14
+ Flags:
15
+ - `--project-id`, `-p`: Project ID.
16
+ - `--exp-id`: Experiment ID.
17
+ - `--group-id`: Target business group ID. Use `0` for ungrouped.
18
+
19
+ Response shape: `data.result` is `true` when the update succeeds. Blank
20
+ `--group-id` is normalized to `0` on the server.
@@ -34,7 +34,7 @@ description: "Interactive generation of AE tracking code, LogBus2 configuration,
34
34
  | LogBus2 配置 | LogBus2 Configuration | `daemon.json` for LogBus2 log sync tool |
35
35
  | LoggerConsumer | LoggerConsumer | Server SDK consumer that writes events to local log files |
36
36
  | BatchConsumer | BatchConsumer | Server SDK consumer that uploads events in batches |
37
- | 公共属性 | Super Property | Properties attached to all events automatically |
37
+ | 公共属性 | Super Property | Properties attached to all events automatically. ⚠️ The correct Chinese AE term is "公共属性" or "公共事件属性". Never translate "Super Property" as "超级属性" — that is NOT a valid AE term. |
38
38
  | 预置属性 | Preset Property | System properties prefixed with `#` (e.g. `#device_id`, `#time`) |
39
39
  | 事件属性 | Event Property | Custom properties on specific events |
40
40
  | 用户属性 | User Property | Properties set on the user profile |
@@ -91,12 +91,12 @@ First, check if `.ae-cli/draft.json` exists and read existing configuration:
91
91
  **⚠️ Key: SERVER_URL and APP_ID are independent config items. Even if draft.json has project_id and host, you MUST resolve and confirm them. `project_id` ≠ `APP_ID`, `host` ≠ `SERVER_URL`.**
92
92
 
93
93
  1. **APP_ID** — Prefer automatic lookup before asking:
94
- - If `meta.project_id` is known, run `ae-cli analysis_common +list_projects` once for the current host.
94
+ - If `meta.project_id` is known, run `ae-cli analysis project info list` once for the current host.
95
95
  - Find the project whose `projectId` matches `meta.project_id`.
96
96
  - If the matched project has `appId`, ask: **"I found APP_ID `<appId>` for project `<projectId>`. Use it? yes / enter new value"**
97
97
  - If the project is missing, ambiguous, or has no `appId`, ask the user to copy APP_ID from AE Admin → "Project Settings" → "Integration Config".
98
98
  2. **SERVER_URL** — Data ingestion endpoint (**different from web URL**; go to AE Admin → "Project Settings" → "Integration Config" → fill in "Public URL")
99
- - If `meta.project_id` is known, you may try `ae-cli analysis_meta +get_project_config --project_id <project_id>` once.
99
+ - If `meta.project_id` is known, you may try `ae-cli analysis project info get --project-id <project_id>` once.
100
100
  - Use the returned value only if the response explicitly contains a receiver URL field such as `serverUrl`, `pushUrl`, `push_url`, `receiverUrl`, `publicUrl`, `publicReceiverAddress`, `privateReceiverAddress`, or equivalent ingestion endpoint field.
101
101
  - If both `publicReceiverAddress` and `privateReceiverAddress` are present, prefer `publicReceiverAddress` as `SERVER_URL` for generated snippets unless the user explicitly needs an internal/private-network receiver.
102
102
  - If a value is found, ask: **"I found SERVER_URL `<url>` for project `<projectId>`. Use it? yes / enter new value"**
@@ -646,6 +646,7 @@ Validation steps:
646
646
  - Including `platform === "server"` exclusive events in client code
647
647
  - Including `platform === "client"` exclusive events in server code (unless `platform === "both"`)
648
648
  - **Skipping SDK main doc read and guessing integration method** — each SDK has different integration approaches; must read wiki main doc's "Integrate SDK" section first, and choose the correct method based on project characteristics (with/without build tools)
649
+ - **Translating "Super Property" as "超级属性" in any user-facing output (code comments, interaction prompts, markdown) — the correct AE Chinese term is "公共事件属性" or "公共属性"**
649
650
  - **Entering Phase 1 before Phase 0.5 is complete** — SDK integration must be confirmed before inserting code, otherwise generated track() calls won't work
650
651
 
651
652
  ---
@@ -1,6 +1,6 @@
1
1
  # Mode A — Client SDK Code Insertion
2
2
 
3
- > **Terminology**: 客户端 SDK = client SDK | 代码插入 = code insertion/injection | 前置检查 = pre-check | 集成方式 = integration method | 埋点 = tracking/event tracking | 业务触发点 = business trigger point | 公共属性 = super property | 用户属性 = user property | 自动采集事件 = auto-track event | 插入位置预览 = insertion site preview | 语言风格校验 = language style check
3
+ > **Terminology**: 客户端 SDK = client SDK | 代码插入 = code insertion/injection | 前置检查 = pre-check | 集成方式 = integration method | 埋点 = tracking/event tracking | 业务触发点 = business trigger point | 公共属性 = super property (公共事件属性; never "超级属性") | 用户属性 = user property | 自动采集事件 = auto-track event | 插入位置预览 = insertion site preview | 语言风格校验 = language style check
4
4
 
5
5
  ## ⚠️ Mandatory Pre-checks (do not skip)
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Server-side Code Insertion (LoggerConsumer + LogBus2)
2
2
 
3
- > **Terminology**: 服务端 SDK = server-side SDK | 代码插入 = code insertion/injection | LoggerConsumer = writes events to local log files (recommended for production) | LogBus2 = log sync tool that reads local logs and uploads to TE | 架构 = architecture | 异步上报 = async upload | 批量上传 = batch upload | 重试策略 = retry strategy | 公共属性 = super property | 用户属性 = user property | 依赖管理 = dependency management
3
+ > **Terminology**: 服务端 SDK = server-side SDK | 代码插入 = code insertion/injection | LoggerConsumer = writes events to local log files (recommended for production) | LogBus2 = log sync tool that reads local logs and uploads to TE | 架构 = architecture | 异步上报 = async upload | 批量上传 = batch upload | 重试策略 = retry strategy | 公共属性 = super property (公共事件属性; never "超级属性") | 用户属性 = user property | 依赖管理 = dependency management
4
4
 
5
5
  ## Architecture
6
6
 
@@ -1,6 +1,6 @@
1
1
  # Snippet Output Mode
2
2
 
3
- > **Terminology**: 片段/代码片段 = snippet/code snippet | 产物 = deliverable/output | markdown 响应 = markdown response | 初始化 = initialization | 公共属性 = super property | 用户属性 = user property | 事件组 = event group | 触发时机 = trigger timing | 验证步骤 = verification steps | 设备绑定 = device binding | 自动采集事件 = auto-track event | 占位值 = placeholder value | 属性类型 = property type
3
+ > **Terminology**: 片段/代码片段 = snippet/code snippet | 产物 = deliverable/output | markdown 响应 = markdown response | 初始化 = initialization | 公共属性 = super property (公共事件属性; never "超级属性") | 用户属性 = user property | 事件组 = event group | 触发时机 = trigger timing | 验证步骤 = verification steps | 设备绑定 = device binding | 自动采集事件 = auto-track event | 占位值 = placeholder value | 属性类型 = property type
4
4
 
5
5
  ## Deliverables
6
6
 
@@ -29,7 +29,7 @@ description: "Interactive generation of an AE tracking plan and upload. Trigger
29
29
  | 货币体系 | Currency System | Hard currency (diamonds), soft currency (gold), etc. |
30
30
  | 事件 | Event | Named user action or system occurrence (`event_name`) |
31
31
  | 事件属性 | Event Property | Data attached to an event (`prop_names`) |
32
- | 公共事件属性 | Common/Super Property | Property attached to every event automatically |
32
+ | 公共事件属性 | Common/Super Property | Property attached to every event automatically. ⚠️ The correct Chinese AE term is "公共事件属性" or "公共属性". Never translate "Super Property" as "超级属性" — that is NOT a valid AE term. |
33
33
  | 用户属性 | User Property | Property on the user profile (persistent state) |
34
34
  | 预置属性 | Preset Property | System property prefixed with `#` (`#device_id`, `#time`, etc.) |
35
35
  | 自动采集事件 | Auto-track Event | SDK auto-collected events (`ta_app_start`, `ta_page_show`, etc.) |
@@ -700,7 +700,10 @@ Based on SDK integration mode collected in Phase 0, decide whether to inject aut
700
700
  3. Auto-track event `event_tag` set to `"System Event"`
701
701
  4. Auto-track events only carry preset properties (`prop_names` is empty or contains only preset property names)
702
702
  5. Preset properties prefixed with `#` are not added to `event_properties` pool (auto-collected by SDK)
703
- 6. **Deduplication**: Templates may already contain same-name auto-track events (e.g. `ta_app_start` marked `source: "template"`); CLI deduplicates by event name globally and will not inject duplicates
703
+ 6. **Cleanup + Deduplication**: The CLI will:
704
+ - **Remove** auto-track events inherited from templates or existing plans that don't match the user's selected SDKs. For example: if a template built for Android/iOS contains `ta_app_install`, `ta_app_start`, `ta_app_end` but the user selects JavaScript SDK, those `ta_app_*` events will be automatically removed since JavaScript SDK does not support them.
705
+ - **Inject** the correct auto-track events for the user's selected SDKs.
706
+ - **Deduplicate** by event name globally — won't inject events that already exist in the draft (correct auto-track events inherited from templates are kept).
704
707
 
705
708
  **SDK type → Recommended events** (see `references/autotrack-events.md` for details):
706
709
 
@@ -1300,6 +1303,7 @@ The tracking plan has been uploaded successfully. Would you like to generate tra
1300
1303
  - Asking all anchor questions at once
1301
1304
  - Skipping Phase 3 and uploading directly
1302
1305
  - Manually assembling xlsx bypassing `.ae-cli/draft.json`
1306
+ - Translating "Super Property" as "超级属性" in any user-facing output (interaction prompts, plan summaries, event/property descriptions) — the correct AE Chinese term is "公共事件属性" or "公共属性"
1303
1307
  - Calling `fetch` AE API directly within the skill — all AE communication must go through project scripts / CLI
1304
1308
 
1305
1309
  ---