@thinkingai/ae-cli 6.1.12 → 6.1.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (137) hide show
  1. package/README.md +0 -2
  2. package/README.zh.md +0 -2
  3. package/dist/{auth-NN55553T.js → auth-GBMV6TEJ.js} +2 -2
  4. package/dist/{auth-GDV3H5I4.js → auth-NDSXE54J.js} +4 -4
  5. package/dist/{capability-DRLGDVS4.js → capability-TAMDRZYV.js} +18 -8
  6. package/dist/{capability-P6GK3AQH.js → capability-U7TDEEEG.js} +18 -8
  7. package/dist/{chunk-GJJA4CQZ.js → chunk-3FY3RJ26.js} +0 -4
  8. package/dist/{chunk-GS2P7LFD.js → chunk-5XUSIK27.js} +2 -2
  9. package/dist/{chunk-7KQWSBSL.js → chunk-753BUTNZ.js} +3 -3
  10. package/dist/{chunk-VTXHDCBW.js → chunk-AFXA7BRK.js} +2 -2
  11. package/dist/chunk-IBH3LDAH.js +556 -0
  12. package/dist/{chunk-RBNKI5ZW.js → chunk-JUW4AJXN.js} +2 -2
  13. package/dist/{chunk-TS6BUGUY.js → chunk-QATA32VR.js} +3 -3
  14. package/dist/{chunk-Z3OXWCIA.js → chunk-S5NTSDBS.js} +2 -2
  15. package/dist/chunk-UIHQJK5E.js +556 -0
  16. package/dist/{chunk-VKD5WQKN.js → chunk-VLWOLBGZ.js} +142 -24
  17. package/dist/{chunk-YTG6Q75E.js → chunk-WZRX4KOH.js} +25 -3
  18. package/dist/{chunk-YV52FB5G.js → chunk-ZQKDZXDO.js} +1 -1
  19. package/dist/{cli-token-GL5MS5FK.js → cli-token-4UPER74P.js} +3 -3
  20. package/dist/{chunk-6A2FUCIS.js → client-L2YDMHQ6.js} +5 -6
  21. package/dist/{config-4VZNLBKF.js → config-OL2LWGBV.js} +4 -33
  22. package/dist/index.js +25 -38
  23. package/dist/{memory-RWJW4XFO.js → memory-MUP7PPL7.js} +4 -4
  24. package/dist/{memory-VO2ZJCRT.js → memory-U4O5PMXH.js} +4 -4
  25. package/dist/{metadata-YGTHR2XJ.js → metadata-UORZTW3T.js} +21 -11
  26. package/dist/{metadata-ZRN2GHPN.js → metadata-VVQ3AQT5.js} +21 -11
  27. package/dist/{model-CLUIK3K5.js → model-JTUEO5M4.js} +2 -2
  28. package/dist/{sync-3REDHGY6.js → sync-MOSFNBVR.js} +5 -5
  29. package/dist/{te-agent-XNPELAKX.js → te-agent-IFKZDHZI.js} +25 -18
  30. package/dist/{te-analysis-GJI5FZUL.js → te-analysis-KOKHJJPE.js} +1225 -450
  31. package/dist/{te-analysis-N2BRDJZ5.js → te-analysis-LLOCCBJ4.js} +1225 -450
  32. package/dist/{te-community-SQXKE5OO.js → te-community-HNKVTERD.js} +207 -12
  33. package/dist/{te-community-TYSNU3NQ.js → te-community-IWE5B7W6.js} +208 -12
  34. package/dist/{te-dataops-OWIADNSM.js → te-dataops-KQPYNAE3.js} +262 -145
  35. package/dist/{te-dataops-5TM7WZDI.js → te-dataops-KXCEB4CS.js} +262 -145
  36. package/dist/{te-engage-L72HWRGO.js → te-engage-BRLSRVQT.js} +565 -16
  37. package/dist/{te-engage-QWM4GFS7.js → te-engage-HE4OPZIT.js} +565 -16
  38. package/dist/{te-experiment-2T2HEZML.js → te-experiment-K5US7RMG.js} +6 -6
  39. package/dist/{te-experiment-PVEY7AEZ.js → te-experiment-WA7TFMEL.js} +6 -6
  40. package/dist/{te-kb-VRMEY3D4.js → te-kb-OIH3T6CS.js} +4 -4
  41. package/dist/{te-system-XGS5EQIQ.js → te-system-AZ3URMUO.js} +515 -11
  42. package/dist/{te-team-BZRDV2CM.js → te-team-GZPU6UWA.js} +5 -5
  43. package/dist/{update-HEDXGOJH.js → update-TOBFXF2V.js} +4 -4
  44. package/package.json +5 -5
  45. package/skills/ae-agent/SKILL.md +3 -3
  46. package/skills/ae-agent/references/list-skill-references.md +4 -4
  47. package/skills/ae-agent/references/read-skill-reference.md +10 -7
  48. package/skills/ae-agent/references/upload-skill-reference.md +11 -9
  49. package/skills/ae-analysis/SKILL.md +15 -12
  50. package/skills/ae-analysis/metadata_resolution.md +150 -0
  51. package/skills/ae-analysis/references/adhoc_export.md +17 -2
  52. package/skills/ae-analysis/references/adhoc_run.md +12 -8
  53. package/skills/ae-analysis/references/ai_models.md +31 -5
  54. package/skills/ae-analysis/references/analysis_data_retrieval.md +104 -16
  55. package/skills/ae-analysis/references/analysis_drilldown_contract.md +4 -4
  56. package/skills/ae-analysis/references/analysis_gateway_assets.md +12 -10
  57. package/skills/ae-analysis/references/artifact_download.md +4 -3
  58. package/skills/ae-analysis/references/asset_abnormal_list.md +5 -3
  59. package/skills/ae-analysis/references/asset_authentication_list.md +5 -3
  60. package/skills/ae-analysis/references/asset_search.md +5 -3
  61. package/skills/ae-analysis/references/bi_panel_page_data_export.md +1 -1
  62. package/skills/ae-analysis/references/bi_panel_page_data_run.md +4 -4
  63. package/skills/ae-analysis/references/catalog_export.md +28 -0
  64. package/skills/ae-analysis/references/catalog_list.md +44 -0
  65. package/skills/ae-analysis/references/command_index.md +72 -63
  66. package/skills/ae-analysis/references/dashboard_report_data_run.md +11 -4
  67. package/skills/ae-analysis/references/datatable_version_list.md +5 -3
  68. package/skills/ae-analysis/references/drilldown_entities_run.md +4 -4
  69. package/skills/ae-analysis/references/drilldown_events_run.md +2 -2
  70. package/skills/ae-analysis/references/drilldown_user_events_export.md +1 -1
  71. package/skills/ae-analysis/references/drilldown_user_events_run.md +2 -2
  72. package/skills/ae-analysis/references/entity_detail_run.md +4 -4
  73. package/skills/ae-analysis/references/entity_id_import_options.md +1 -1
  74. package/skills/ae-analysis/references/event_detail_run.md +4 -4
  75. package/skills/ae-analysis/references/event_export.md +21 -0
  76. package/skills/ae-analysis/references/event_list.md +7 -6
  77. package/skills/ae-analysis/references/exchange_rule_list.md +5 -3
  78. package/skills/ae-analysis/references/history_tag_data_drilldown_export.md +4 -2
  79. package/skills/ae-analysis/references/history_tag_data_drilldown_run.md +2 -2
  80. package/skills/ae-analysis/references/history_tag_data_run.md +2 -2
  81. package/skills/ae-analysis/references/metric_export.md +21 -0
  82. package/skills/ae-analysis/references/metric_list.md +8 -7
  83. package/skills/ae-analysis/references/property_export.md +21 -0
  84. package/skills/ae-analysis/references/property_list.md +9 -8
  85. package/skills/ae-analysis/references/query_context_get.md +20 -0
  86. package/skills/ae-analysis/references/query_create_result_cluster.md +1 -1
  87. package/skills/ae-analysis/references/report_change_log_list.md +1 -1
  88. package/skills/ae-analysis/references/report_create.md +3 -3
  89. package/skills/ae-analysis/references/report_data_run.md +8 -8
  90. package/skills/ae-analysis/references/report_update.md +3 -3
  91. package/skills/ae-analysis/references/report_version_rollback.md +1 -1
  92. package/skills/ae-analysis/references/rule_list.md +6 -4
  93. package/skills/ae-analysis/references/run_inspect.md +8 -5
  94. package/skills/ae-analysis/references/run_wait.md +37 -0
  95. package/skills/ae-analysis/references/user_cluster_export.md +13 -0
  96. package/skills/ae-analysis/references/user_cluster_list.md +6 -2
  97. package/skills/ae-analysis/references/user_cluster_member_export.md +5 -3
  98. package/skills/ae-analysis/references/user_cluster_member_list.md +4 -4
  99. package/skills/ae-analysis/references/user_tag_export.md +13 -0
  100. package/skills/ae-analysis/references/user_tag_list.md +6 -2
  101. package/skills/ae-analysis/references/user_tag_member_export.md +5 -3
  102. package/skills/ae-analysis/references/user_tag_member_list.md +4 -4
  103. package/skills/ae-analysis/references/virtual_property_create.md +2 -2
  104. package/skills/ae-community/SKILL.md +2 -2
  105. package/skills/ae-dataops/SKILL.md +4 -3
  106. package/skills/ae-dataops/references/dataops-flow-create.md +47 -3
  107. package/skills/ae-engage/SKILL.md +46 -6
  108. package/skills/ae-engage/references/build-task-save-guide.md +12 -0
  109. package/skills/ae-engage/references/cancel-query-run.md +31 -0
  110. package/skills/ae-engage/references/config-item-analysis-report.md +14 -1
  111. package/skills/ae-engage/references/config-item-strategy-comparison.md +11 -1
  112. package/skills/ae-engage/references/config-item-trigger-report.md +15 -1
  113. package/skills/ae-engage/references/flow-metric-detail-report.md +134 -0
  114. package/skills/ae-engage/references/flow-metric-update.md +77 -0
  115. package/skills/ae-engage/references/flow-metric-user.md +118 -0
  116. package/skills/ae-engage/references/flow-node-metric-user.md +122 -0
  117. package/skills/ae-engage/references/flow-node-user.md +122 -0
  118. package/skills/ae-engage/references/push-record-query.md +32 -1
  119. package/skills/ae-engage/references/save-task.md +9 -0
  120. package/skills/ae-engage/references/task-data-detail.md +9 -2
  121. package/skills/ae-engage/references/task-metric-detail.md +9 -2
  122. package/skills/ae-engage/references/task-submit-approval.md +3 -0
  123. package/skills/ae-experiment/references/save_experiment.md +4 -0
  124. package/skills/ae-experiment-design/SKILL.md +1 -1
  125. package/skills/ae-experiment-design/references/platform-operations.md +1 -1
  126. package/skills/ae-experiment-insight/references/platform-operations.md +1 -1
  127. package/skills/ae-metadata/SKILL.md +2 -1
  128. package/skills/ae-metadata/references/metadata_data_table_download.md +10 -2
  129. package/skills/ae-metadata/references/metadata_data_table_list.md +5 -2
  130. package/skills/ae-system/SKILL.md +66 -3
  131. package/dist/chunk-DT6Y3TD7.js +0 -232
  132. package/dist/chunk-MVDZ7DBQ.js +0 -231
  133. package/dist/chunk-NBPKWKRA.js +0 -51
  134. package/dist/client-DAIPF7XN.js +0 -23
  135. package/dist/raw-52B4UKO4.js +0 -71
  136. package/dist/te-meta-53BVXPFI.js +0 -95
  137. package/dist/te-meta-TOCBPBXI.js +0 -95
@@ -0,0 +1,122 @@
1
+ # Flow node-user
2
+
3
+ Use this reference when the user asks for users behind a node-level data segment on the flow canvas.
4
+
5
+ Mapped CLI commands:
6
+
7
+ - `ae-cli engage-flow node-user run`
8
+ - `ae-cli engage-flow node-user export`
9
+
10
+ Mapped capabilities:
11
+
12
+ - `engage-flow.node-user.run`
13
+ - `engage-flow.node-user.export`
14
+
15
+ Hermes SQL source: `FlowNodeReportDataService#buildClusterUserSql`.
16
+
17
+ ## Choose the command
18
+
19
+ - Use `run` for a bounded inline preview of users in the selected node data segment.
20
+ - Use `export` for the full user-detail artifact.
21
+ - Use `metric-user` for process-level flow metric cells.
22
+ - Use `node-metric-user` for node metric cells.
23
+
24
+ ## Required input
25
+
26
+ - `--project-id`
27
+ - one of `--flow-id` or `--flow-uuid`
28
+ - `--node-uuid`
29
+ - either `--cluster-def '<cluster_def_json>'` or all of `--indicator-name`, `--start-time`, and `--end-time`
30
+
31
+ ## Optional input
32
+
33
+ - `--branch-id`
34
+ - `--request-id`
35
+ - `--data-view-type` (default: `2`)
36
+ - `--is-summary`
37
+ - `--push-language-code`
38
+ - `--user-time-zone`
39
+ - `--show-time-zone`
40
+ - `run` only: `--limit`
41
+ - `export` only: `--artifact-format csv|jsonl` (default: `jsonl`)
42
+ - `--timeout-seconds`
43
+
44
+ Only pass fields listed above. Hermes rejects extra top-level fields for this capability.
45
+
46
+ ## Segment selector contract
47
+
48
+ Prefer the explicit report fields. Set `--indicator-name` to the metric key returned by the node report and reuse the report date range. Hermes builds the internal cluster definition.
49
+
50
+ `--cluster-def` remains available for compatibility. When used, it must come from the selected node report segment; do not invent it.
51
+
52
+ Required keys:
53
+
54
+ - `indicatorName`
55
+ - `dataViewType`
56
+ - `isSummary`
57
+
58
+ Date keys depend on `isSummary`:
59
+
60
+ - `isSummary=true`: require `filterStartDate` and `filterEndDate`
61
+ - `isSummary=false`: require `startDate` and `endDate`
62
+
63
+ Dates must use `yyyy-MM-dd`, and start must be earlier than or equal to end.
64
+
65
+ ## Examples
66
+
67
+ Inline preview:
68
+
69
+ ```bash
70
+ ae-cli engage-flow node-user run \
71
+ --project-id 1 \
72
+ --flow-id flow_id_123 \
73
+ --node-uuid node_uuid_123 \
74
+ --indicator-name entry \
75
+ --start-time 2026-04-01 \
76
+ --end-time 2026-04-07 \
77
+ --limit 100 \
78
+ --timeout-seconds 120
79
+ ```
80
+
81
+ Export all matched users:
82
+
83
+ ```bash
84
+ ae-cli engage-flow node-user export \
85
+ --project-id 1 \
86
+ --flow-id flow_id_123 \
87
+ --node-uuid node_uuid_123 \
88
+ --indicator-name entry \
89
+ --start-time 2026-04-01 \
90
+ --end-time 2026-04-07 \
91
+ --artifact-format csv \
92
+ --timeout-seconds 21600
93
+ ```
94
+
95
+ ## Export lifecycle
96
+
97
+ `export` returns `run_id` and `artifact_id`. Poll and download with:
98
+
99
+ ```bash
100
+ ae-cli engage-query run inspect --run-id <run_id>
101
+ ae-cli engage-query artifact download \
102
+ --run-id <run_id> \
103
+ --artifact-id <artifact_id> \
104
+ --output ./flow-node-users.csv.gz
105
+ ```
106
+
107
+ Downloaded artifacts are gzip-compressed; keep the `.gz` suffix. Cancel running async work with:
108
+
109
+ ```bash
110
+ ae-cli engage-query query cancel --run-id <run_id>
111
+ ```
112
+
113
+ ## Output shape
114
+
115
+ - `run` returns `rows`, `total`, and `column_meta`.
116
+ - `export` writes one row per matched user. The primary column is usually `#user_id`.
117
+
118
+ ## Common mistakes
119
+
120
+ - `--node-uuid` is required and must be the canvas node UUID.
121
+ - Do not use this for node metric cells; use `node-metric-user` so Hermes routes to the metric SQL builder.
122
+ - Use `--data-view-type`, not the report-only `--data-dim-type`, when selecting users without `--cluster-def`.
@@ -23,4 +23,35 @@ ae-cli engage-task push-record query \
23
23
 
24
24
  ## Output
25
25
 
26
- Returns `record_type`, `items`, `total`, and pagination metadata when the selected backend record type is paginated. Records include available trigger, planned-send, actual-send, success, channel-exception, status, and failure-reason fields.
26
+ Returns `record_type`, `items`, `total`, and pagination metadata when the selected backend record type is paginated.
27
+
28
+ The count fields depend on `record_type`:
29
+
30
+ | `record_type` | Actual push field | Successful push field |
31
+ | --- | --- | --- |
32
+ | `scheduled` | `actual_trigger_num` | `trigger_num` |
33
+ | `user_time_zone` | `actual_trigger_num` | `trigger_num` |
34
+ | `triggered` | `actual_push_num` | `push_success_num` |
35
+
36
+ Scheduled records and nested user-time-zone execution records use stable English `status_name`
37
+ values:
38
+
39
+ | `status` | `status_name` |
40
+ | --- | --- |
41
+ | `0` | `Waiting` |
42
+ | `1` | `Ready` |
43
+ | `2` | `Pushing` |
44
+ | `3` | `Sent` |
45
+ | `4` | `Retrying` |
46
+ | `5` | `Failed` |
47
+
48
+ Top-level user-time-zone task instances use a separate status enum:
49
+
50
+ | `status` | `status_name` |
51
+ | --- | --- |
52
+ | `0` | `Sending` |
53
+ | `1` | `Sent` |
54
+ | `2` | `Finished` |
55
+
56
+ Use `status` and the count fields for automated assertions. `status_name` never returns an internal
57
+ `hermes.*` localization key.
@@ -221,6 +221,13 @@ Rules:
221
221
  - do not guess template IDs
222
222
  - `groupContentList` maximum size is `5`
223
223
  - `occasionKeys` are parsed from content automatically and are not accepted as input
224
+ - when `expConfig.enableExp=true`, each `groupContentList` item must include
225
+ `expGroupName`, `expGroupType`, `percentageInExperiment`, and `order`, and the list must
226
+ mirror `expConfig.expGroupList` one-to-one by `expGroupName`
227
+ - capability `engage-task.task.save` rejects misaligned experiment `groupContentList`
228
+ (`TASK_EXPERIMENT_GROUP_CONTENT_INVALID`) before the inner save service runs
229
+ - do not submit experiment content as content-only objects such as
230
+ `{"contentList":[...]}` without the group association fields
224
231
 
225
232
  Content guidance:
226
233
 
@@ -257,6 +264,8 @@ Rules:
257
264
  - if `triggerDefinition` is needed, build it from semantic event definitions and resolve real
258
265
  event/property names through Analysis metadata
259
266
  - always set the A rule's `eventTriggerType` explicitly
267
+ - always set the A rule's `periodTimeSymbol` to `TS01`, `TS02`, `TS03`, or `TS04`; it is
268
+ required even when `periodStart` and `periodEnd` are present
260
269
  - Hermes compiles the semantic event and then validates the final persisted trigger-rule envelope
261
270
  - for semantic event-trigger tasks, Hermes backfills missing task-level `startDate` / `endDate`
262
271
  from the A rule's `periodStart` / `periodEnd`; explicit task-level dates remain authoritative
@@ -2,10 +2,17 @@
2
2
 
3
3
  Query a task detail report through the L3 Capability Gateway.
4
4
 
5
- Mapped command: `ae-cli capability run engage-task.task-data.detail --input '<json>'`
5
+ Mapped command: `ae-cli engage-task data-detail query`
6
+
7
+ Capability ID: `engage-task.task-data.detail`
6
8
 
7
9
  Required input: `project_id`, `task_id`, `detail_type`, `start_time`, `end_time`. `detail_type` is `time`, `instance`, or `instance_daily`; the last form also requires `task_instance_id`.
8
10
 
9
11
  ```bash
10
- ae-cli capability run engage-task.task-data.detail --input '{"project_id":1,"task_id":"task_123","detail_type":"time","start_time":"2026-04-01","end_time":"2026-04-07"}'
12
+ ae-cli engage-task data-detail query \
13
+ --project-id 1 \
14
+ --task-id task_123 \
15
+ --detail-type time \
16
+ --start-time 2026-04-01 \
17
+ --end-time 2026-04-07
11
18
  ```
@@ -2,10 +2,17 @@
2
2
 
3
3
  Query a task metric detail report through the L3 Capability Gateway.
4
4
 
5
- Mapped command: `ae-cli capability run engage-task.task-data.metric-detail --input '<json>'`
5
+ Mapped command: `ae-cli engage-task effect query`
6
+
7
+ Capability ID: `engage-task.task-data.metric-detail`
6
8
 
7
9
  Required input: `project_id`, `task_id`, `start_time`, `end_time`. Optional input includes `request_id`, `push_language_code`, `metric_id_list`, `group_type`, and `show_time_zone`.
8
10
 
9
11
  ```bash
10
- ae-cli capability run engage-task.task-data.metric-detail --input '{"project_id":1,"task_id":"task_123","start_time":"2026-04-01","end_time":"2026-04-07"}'
12
+ ae-cli engage-task effect query \
13
+ --project-id 1 \
14
+ --task-id task_123 \
15
+ --start-time 2026-04-01 \
16
+ --end-time 2026-04-07 \
17
+ --metric-id-list '["metric_1"]'
11
18
  ```
@@ -27,6 +27,8 @@ Provide exactly one of `--task-id` or `--request`.
27
27
 
28
28
  - Prefer `task save` followed by `submit-approval --task-id`. The server loads the persisted draft, validates its
29
29
  trigger rule, and reuses the existing save-and-submit approval workflow.
30
+ - Never put `taskId` or `task_id` inside `--request`. Existing drafts must use `--task-id`; embedded task IDs fail
31
+ with `REQUEST_TASK_ID_NOT_ALLOWED` so request fields are never silently discarded.
30
32
  - Do not reconstruct or pass `trigger_rule`. It is an internal persisted field.
31
33
  - The legacy `--request` mode remains available for existing callers.
32
34
  - Required body fields (server validates): `task_name`, `channel_type`, `channel_id`, `group_content_list`, `target_cluster_type`, `trigger_type`, `completion_indicator_def`, `frequency_limits`, `enable_channel_touch_limits`, `group_id`, `trigger_time_strategy`.
@@ -41,5 +43,6 @@ Provide exactly one of `--task-id` or `--request`.
41
43
  |---|---|
42
44
  | `APPROVAL_INPUT_INVALID` | neither or both of `task_id` and `request` supplied |
43
45
  | `REQUEST_REQUIRED` | `--request` missing or not an object |
46
+ | `REQUEST_TASK_ID_NOT_ALLOWED` | `request.taskId` or `request.task_id` supplied; use `--task-id` |
44
47
  | `REQUEST_FIELDS_REQUIRED` | required body fields absent/blank |
45
48
  | `CAPABILITY_EXECUTION_FAILED` | unmapped domain failure; check `invocation_id` / Hermes logs |
@@ -110,6 +110,10 @@ ae-cli experiment experiment save --project-id 1 --req '{"expId":"exp_123","allo
110
110
  `targeting.definitionRequest`. Do not submit the internal `targeting.targetConfig`
111
111
  JSON or any `Cxx`/`Axxx` code. Resolve event and property names with Analysis
112
112
  metadata first.
113
+ - Avoid redundant adjacent `compound` groups with the same `relation`. Hermes
114
+ safely flattens those groups when an Atlas experiment is saved or submitted so
115
+ the generated cluster QP stays within the backend layer limit. Different
116
+ relations are always preserved.
113
117
 
114
118
  Semantic audience example:
115
119
 
@@ -9,7 +9,7 @@ Turn a business objective into an evidence-backed experiment design, an implemen
9
9
 
10
10
  ## Hard boundaries
11
11
 
12
- - Use `ae-cli` for every AE/TE platform interaction. Do not substitute raw HTTP, browser automation, direct database queries, MCP tools, or application SDKs.
12
+ - Use `ae-cli` for every AE/TE platform interaction. Do not substitute raw HTTP, browser automation, direct database queries, or application SDKs.
13
13
  - Do not infer an SDK request from the fact that an experiment needs implementation. Load SDK references only when the user explicitly asks about an A/B experiment SDK or client SDK integration.
14
14
  - Do not copy general tracking SDK documentation into this Skill. Route generic initialization, event reporting, `track`, user identity, user properties, data upload, LogBus, and REST questions to `ae-data-integration-helper` when that Skill is available.
15
15
  - Use only the event-metric calculation contracts defined in
@@ -4,7 +4,7 @@ Read this reference before any AE/TE platform interaction.
4
4
 
5
5
  ## Hard boundary
6
6
 
7
- All platform operations must use `ae-cli`. Do not call raw APIs, use browser automation, query a database, invoke te-mcp, or fabricate a platform result.
7
+ Use `ae-cli` for all platform operations. Do not call raw APIs, use browser automation, query a database, or fabricate a platform result.
8
8
 
9
9
  Use curated commands when their contract is known. Use the Capability Gateway for experiment capabilities that do not yet have a curated command:
10
10
 
@@ -4,7 +4,7 @@ Read this reference before retrieving any AE/TE experiment evidence.
4
4
 
5
5
  ## Hard boundary
6
6
 
7
- All platform discovery and reads must use `ae-cli`. Do not call raw APIs, use browser automation, query a database, invoke te-mcp, or invent report values.
7
+ Use `ae-cli` for all platform discovery and reads. Do not call raw APIs, use browser automation, query a database, or invent report values.
8
8
 
9
9
  Use the Capability Gateway when no curated experiment command exists:
10
10
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ae-metadata
3
- version: 1.0.0
3
+ version: 1.0.1
4
4
  description: "AE/TE metadata capability-gateway CLI: metadata data-table management and property dimension-table binding. Metadata CLI routes through the analysis gateway. Input-file upload and event/property detail belong to ae-analysis."
5
5
  ---
6
6
 
@@ -30,6 +30,7 @@ Safety:
30
30
  - Ordinary writes (`data-table *-write`, `property-bindings-update`, dimension-table bind/create) execute without `--yes`. Delete commands are `high-risk-write`: dry-run first, summarize impact, wait for explicit confirmation, then execute with `--yes`.
31
31
  - **Before any command**, read the matching `references/<name>.md` (filename = command with spaces → underscores, e.g. `metadata data-table list` → `metadata_data_table_list.md`).
32
32
  - Never invent `project_id`, event/property names, `input_file_id`, or `data_table_id`. Discover names via `ae-analysis` and data table IDs via `metadata data-table list`.
33
+ - `metadata data-table download` is an async artifact command: plain invocation submits, `--wait` waits, and `--output <file>` waits then streams atomically. Resume with `analysis run wait`; local interruption never cancels the remote run.
33
34
 
34
35
  ## When to Use
35
36
 
@@ -5,6 +5,7 @@
5
5
  ```bash
6
6
  ae-cli metadata data-table download --project-id <project_id> --data-table-id <id>
7
7
  ae-cli metadata data-table download --project-id <project_id> --data-table-id <id> --request-id cli_0123456789abcdef0123456789abcdef --timeout-seconds 120
8
+ ae-cli metadata data-table download --project-id <project_id> --data-table-id <id> --output <file>
8
9
  ```
9
10
 
10
11
  | Parameter | Required | Description |
@@ -12,6 +13,13 @@ ae-cli metadata data-table download --project-id <project_id> --data-table-id <i
12
13
  | `--project-id` / `-p` | Yes | Numeric project ID. |
13
14
  | `--data-table-id` | Yes | Data table ID. |
14
15
  | `--request-id` | No | Optional `cli_<32 lowercase hex>` request ID. |
15
- | `--timeout-seconds` | No | Timeout in seconds, 1 to 7200. |
16
+ | `--timeout-seconds` | No | Remote runtime in seconds, 1 to 21600. |
17
+ | `--wait` | No | Wait for run `SUCCEEDED` and artifact `COMPLETED`. |
18
+ | `--output` | No | Wait, then stream and atomically publish the artifact to this file. |
19
+ | `--force` | No | Replace an existing `--output` file atomically; invalid without `--output`. |
16
20
 
17
- Use this command when the user needs an exported data-table artifact.
21
+ Use this command when the user needs an exported data-table artifact. Plain
22
+ invocation submits only. `--output` implies `--wait`; resume an interrupted
23
+ wait with `ae-cli analysis run wait --run-id <run_id> [--output <file>]`.
24
+ Local interruption never cancels the remote run. Do not use this command for
25
+ inline data-table metadata; use `metadata data-table get` instead.
@@ -5,7 +5,7 @@
5
5
  ## Command
6
6
 
7
7
  ```bash
8
- ae-cli metadata data-table list --project-id <project_id>
8
+ ae-cli metadata data-table list --project-id <project_id> --limit 50 --offset 0
9
9
  ae-cli metadata data-table list --project-id <project_id> --dry-run
10
10
  ```
11
11
 
@@ -14,14 +14,17 @@ ae-cli metadata data-table list --project-id <project_id> --dry-run
14
14
  | Parameter | Required | Description |
15
15
  |---|---|---|
16
16
  | `--project-id` / `-p` | Yes | Numeric project ID. |
17
+ | `--limit` / `-l` | No | Page size. Default: 50, maximum: 200. |
18
+ | `--offset` / `-o` | No | Zero-based page offset. Default: 0. |
17
19
 
18
20
  ## Request Body
19
21
 
20
22
  ```json
21
- { "project_id": 1 }
23
+ { "project_id": 1, "limit": 50, "offset": 0 }
22
24
  ```
23
25
 
24
26
  ## Decision Rules
25
27
 
26
28
  - Use this command to discover `data_table_id` before get, delete, download, or property binding.
27
29
  - If the list is empty, do not invent IDs; create/upload a table first or ask for the target table.
30
+ - Read rows from `data.items`; pagination metadata is always `total`, `limit`, `offset`, `has_more`, and `next_offset`.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ae-system
3
- version: 1.0.0
4
- description: "AE Agent system administration CLI for root and agent administrators. Use when the user asks to manage Agent members, sandboxes, company model visibility/defaults, usage statistics, cost quotas, balance alerts, or IM channels. Must use ae-cli system commands, discover real IDs before writes, and never attempt to bypass a permission denial."
3
+ version: 1.1.0
4
+ description: "AE Agent system administration CLI for root and agent administrators. Use when the user asks to manage Agent members, sandboxes and shared tools, company model visibility/defaults/pricing, usage statistics and exports, cost quotas, balance alerts, or IM channels. Must use ae-cli system commands, discover real IDs before writes, and never attempt to bypass a permission denial."
5
5
  ---
6
6
 
7
7
  # ae-system
@@ -19,11 +19,13 @@ ae-cli system +<command> [options]
19
19
  - Run `ae-cli auth login --host <host>` before using this domain. System administration requires a user access-token session; sandbox identity headers are not an authorization substitute.
20
20
  - `+npm-install` is the exception that must also run inside a Linux te-agent sandbox because it packages the installed Linux files. It still requires the logged-in user to be `root` or `agent_admin`.
21
21
  - Discover real IDs with a list command before any update or delete. Never guess a user, sandbox, model, quota rule, or channel ID.
22
- - Read and ordinary write commands run without confirmation. Commands marked `high-risk-write` require confirmation unless the user explicitly authorizes `--yes`.
22
+ - Before every write, run `--dry-run`, show the target and effect, and obtain explicit user confirmation. The CLI itself prompts only for `high-risk-write`; `--yes` can bypass that prompt and is not a security boundary.
23
23
  - Use `--dry-run` to inspect method, path, query, and redacted body without executing.
24
24
  - JSON inputs accept inline JSON, `@file`, or `-` for stdin. Prefer `@file` for channel credentials and other sensitive values.
25
25
  - Successful output is JSON by default. Use `--format table` only when a human-readable table is more useful.
26
26
  - After each command, check stderr and `_notice.host_compat`. If present, show the version warning and its update commands before the business result.
27
+ - Do not treat an absent ae-cli command as proof that an HTTP endpoint is unreachable. An Agent with Bash/network access can construct requests directly; server authentication, role checks, company isolation, and resource ownership are the actual controls.
28
+ - Do not call `DELETE /api/admin/members?openId=...` or `/api/internal/sandboxes/**` through ad-hoc HTTP. They are intentionally excluded from this Skill because other systems own those integration contracts.
27
29
 
28
30
  ## Command Groups
29
31
 
@@ -37,6 +39,7 @@ ae-cli system +<command> [options]
37
39
  | `+set-member-status` | write | Enable or disable a member. |
38
40
  | `+set-member-role` | write | Change a non-root member between `agent_admin` and `member`. |
39
41
  | `+remove-member` | high-risk-write | Remove a non-root member. |
42
+ | `+get-member-stats` | read | Get one member's token usage and recent conversation count. |
40
43
 
41
44
  Examples:
42
45
 
@@ -77,6 +80,7 @@ Optional flags are `--rule-id` and `--create-sandbox true|false`.
77
80
  | Command | Risk | Purpose |
78
81
  | --- | --- | --- |
79
82
  | `+list-sandboxes` | read | List company sandboxes. |
83
+ | `+get-sandbox-config` | read | Read feature status and create/active seat limits. |
80
84
  | `+batch-create-sandboxes` | write | Create personal sandboxes for 1-100 users. |
81
85
  | `+update-sandbox` | write | Update a sandbox description. |
82
86
  | `+set-sandbox-enabled` | write | Enable or disable a sandbox. |
@@ -106,9 +110,33 @@ Use Agent database user IDs from `+list-members`, not TE openIds, for sandbox co
106
110
  | --- | --- | --- |
107
111
  | `+upload-sandbox-tool` | write | Validate, ZIP, and upload an existing tool directory. |
108
112
  | `+npm-install` | write | Install one exact npm CLI version in a temporary sandbox directory, generate `tool.json`, and upload it. |
113
+ | `+list-sandbox-tools` | read | List preset and custom tools for the current company. |
114
+ | `+sync-sandbox-tools` | write | Synchronize preset tools from the server manifest. |
115
+ | `+get-sandbox-tool-distribution` | read | Read the sandboxes currently receiving one tool. |
116
+ | `+set-sandbox-tool-enabled` | write | Enable or disable one registered tool. |
117
+ | `+remove-sandbox-tool` | high-risk-write | Delete a fully reclaimed tool registration. |
118
+ | `+activate-sandbox-tools` | write | Activate selected commands on selected or all running sandboxes. |
119
+ | `+deactivate-sandbox-tools` | write | Remove managed command shims from selected or all running sandboxes. |
120
+ | `+refresh-sandbox-tool-status` | write | Refresh observed tool state on target sandboxes. |
121
+ | `+list-sandbox-tool-operations` | read | List activation/deactivation history. |
109
122
 
110
123
  Uploaded tools are registered for the current company with `enabled=false`. Upload does not activate the tool in any running sandbox. Review and enable/activate it through sandbox tool management after upload.
111
124
 
125
+ For activate/deactivate/status operations:
126
+
127
+ ```bash
128
+ ae-cli system +activate-sandbox-tools \
129
+ --target-mode selected \
130
+ --sandbox-ids '["<sandbox-id>"]' \
131
+ --tool-ids '["<tool-id>"]'
132
+ ```
133
+
134
+ - `--target-mode selected` requires 1-50 `--sandbox-ids`; `all-running` forbids them.
135
+ - `--tool-ids` contains 1-20 real IDs from `+list-sandbox-tools`.
136
+ - `--command-names-by-tool-id` optionally limits an operation to named commands.
137
+ - `--expected-tool-snapshots-by-id` carries the version/package/command snapshot returned by the server for optimistic concurrency checks.
138
+ - JSON maps accept inline JSON, `@file`, or stdin. Use dry-run and user confirmation before distribution changes.
139
+
112
140
  #### Preferred npm Flow
113
141
 
114
142
  Run this inside the target Linux te-agent sandbox:
@@ -189,6 +217,9 @@ Upload contract:
189
217
  | --- | --- | --- |
190
218
  | `+list-system-models` | read | List system models and company visibility. |
191
219
  | `+set-system-model-enabled` | write | Toggle a system model for the current company. |
220
+ | `+get-model-sync-settings` | read | Read the default visibility policy for newly synchronized system models. |
221
+ | `+set-model-sync-settings` | write | Update the new-system-model visibility policy. |
222
+ | `+get-system-model-price-rules` | read | Read one managed system model's stored pricing snapshot. |
192
223
  | `+list-company-models` | read | List company models, including disabled models. |
193
224
  | `+set-company-model-enabled` | write | Toggle a company model for all company users. |
194
225
  | `+get-default-models` | read | Read the `AE_AGENT` and `AI_QA` default slots. |
@@ -211,11 +242,16 @@ ae-cli system +set-default-model --model-id <model-id> --biz-type AE_AGENT
211
242
  | --- | --- | --- |
212
243
  | `+get-usage-summary` | read | Get token/cost summary for a relative or absolute range. |
213
244
  | `+get-usage-details` | read | Get paginated usage grouped by user, model, date, or application type. |
245
+ | `+get-agent-tool-calls` | read | Get Agent tool-call count for a range, optionally refreshing the cache. |
246
+ | `+get-usage-combinations` | read | Drill one parent group into the remaining dimensions. |
247
+ | `+export-usage` | read | Stream filtered one-dimension usage groups to CSV. |
248
+ | `+export-usage-details` | read | Stream full or drill-down multi-dimension details to CSV. |
214
249
 
215
250
  Examples:
216
251
 
217
252
  ```bash
218
253
  ae-cli system +get-usage-summary --days 30
254
+ ae-cli system +get-usage-summary --days 30 --refresh true
219
255
 
220
256
  ae-cli system +get-usage-details \
221
257
  --start-date 2026-07-01 \
@@ -223,12 +259,26 @@ ae-cli system +get-usage-details \
223
259
  --group-by user \
224
260
  --page 1 \
225
261
  --page-size 20
262
+
263
+ ae-cli system +get-usage-combinations \
264
+ --start-date 2026-07-01 \
265
+ --end-date 2026-07-24 \
266
+ --parent-dimension user \
267
+ --open-id <open-id>
268
+
269
+ ae-cli system +export-usage \
270
+ --start-date 2026-07-01 \
271
+ --end-date 2026-07-24 \
272
+ --group-by user \
273
+ --output ./system-usage.csv
226
274
  ```
227
275
 
228
276
  Summary range:
229
277
 
230
278
  - Use `--days 1..365`, or provide both `--start-date` and `--end-date`.
231
279
  - Dates use `YYYY-MM-DD`.
280
+ - Do not combine `--days` with an absolute date pair.
281
+ - `--refresh true` is available on `+get-usage-summary` and `+get-agent-tool-calls` and bypasses the overview cache.
232
282
 
233
283
  Details flags:
234
284
 
@@ -239,11 +289,22 @@ Details flags:
239
289
  - `--sort-by`: `totalTokens | cost | share | requestCount`.
240
290
  - `--sort-dir`: `asc | desc`.
241
291
 
292
+ Combination drill-down requires exactly one parent selector:
293
+
294
+ - `user` → `--open-id` only.
295
+ - `model` → `--model-id` and `--model-scope` only.
296
+ - `app_type` → `--app-type` only.
297
+ - `date` → `--date` only, inside the selected range.
298
+
299
+ CSV exports require an explicit `--output`. The target is created exclusively: an existing file is never overwritten, and an HTTP or stream failure removes the incomplete file. The JSON result reports the absolute local path, bytes written, server filename, and content type.
300
+
242
301
  ### Cost Control
243
302
 
244
303
  | Command | Risk | Purpose |
245
304
  | --- | --- | --- |
246
305
  | `+get-cost-summary` | read | Get company cost, quota, and usage summary. |
306
+ | `+get-balance` | read | Get the current model account balance and currency. |
307
+ | `+list-over-limit-users` | read | List members over cost or token quota limits. |
247
308
  | `+get-balance-alert` | read | Get balance alert config and current status. |
248
309
  | `+set-balance-alert` | write | Enable, update, or disable the balance alert. |
249
310
  | `+list-quota-rules` | read | List cost/token quota rules. |
@@ -347,6 +408,8 @@ On this response:
347
408
  2. Do not recommend re-login unless the server returned 401 instead.
348
409
  3. Tell the user that `root` or `agent_admin` is required.
349
410
 
411
+ An authenticated `root` or `agent_admin` is still scoped to their own company. The current service checks the database role and company against the session, and audited member, channel, sandbox-tool, and sandbox-management routes apply company/resource ownership checks. Never use that statement as a claim that every unreviewed admin route is safe.
412
+
350
413
  ## Transport Status
351
414
 
352
415
  This is a Transitional L2 domain backed by te-agent `/api/admin/**`.