@thinkingai/ae-cli 6.0.18 → 6.0.20

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 (64) hide show
  1. package/README.md +7 -6
  2. package/README.zh.md +8 -7
  3. package/dist/index.js +11 -6
  4. package/dist/{te-agent-KZRIEN4N.js → te-agent-CYZUC4US.js} +543 -19
  5. package/dist/{te-analysis-VAR4KUOK.js → te-analysis-HJ22TUAA.js} +318 -40
  6. package/dist/te-audience-MYDE5WEH.js +590 -0
  7. package/dist/te-dataops-ZTS7XMXM.js +1842 -0
  8. package/dist/{te-kb-B62KFP2A.js → te-kb-OWM3RQRH.js} +46 -21
  9. package/dist/{te-meta-EPZGQN56.js → te-meta-JVO4QJBH.js} +28 -11
  10. package/package.json +1 -1
  11. package/skills/ae-agent/SKILL.md +103 -4
  12. package/skills/ae-analysis/SKILL.md +66 -19
  13. package/skills/ae-analysis/references/build_attribution_analysis_qp.md +60 -0
  14. package/skills/ae-analysis/references/build_cluster_definition.md +60 -0
  15. package/skills/ae-analysis/references/build_distribution_analysis_qp.md +65 -0
  16. package/skills/ae-analysis/references/build_heat_map_analysis_qp.md +52 -0
  17. package/skills/ae-analysis/references/build_interval_analysis_qp.md +58 -0
  18. package/skills/ae-analysis/references/build_path_analysis_qp.md +51 -0
  19. package/skills/ae-analysis/references/build_rank_list_analysis_qp.md +61 -0
  20. package/skills/ae-analysis/references/build_tag_definition.md +63 -0
  21. package/skills/ae-analysis/references/cancel_query.md +2 -3
  22. package/skills/ae-analysis/references/copy_dashboard.md +33 -0
  23. package/skills/ae-analysis/references/create_id_cluster.md +40 -0
  24. package/skills/ae-analysis/references/create_id_tag.md +39 -0
  25. package/skills/ae-analysis/references/delete_alert.md +27 -0
  26. package/skills/ae-analysis/references/delete_cluster.md +27 -0
  27. package/skills/ae-analysis/references/delete_dashboard.md +30 -0
  28. package/skills/ae-analysis/references/delete_metric.md +27 -0
  29. package/skills/ae-analysis/references/delete_report.md +27 -0
  30. package/skills/ae-analysis/references/delete_tag.md +27 -0
  31. package/skills/ae-analysis/references/drilldown_user_events.md +4 -4
  32. package/skills/ae-analysis/references/drilldown_users.md +3 -3
  33. package/skills/ae-analysis/references/freeze_dashboards.md +29 -0
  34. package/skills/ae-analysis/references/get_table_columns.md +11 -12
  35. package/skills/ae-analysis/references/list_cluster_members.md +4 -4
  36. package/skills/ae-analysis/references/list_clusters.md +3 -3
  37. package/skills/ae-analysis/references/list_dashboards.md +3 -3
  38. package/skills/ae-analysis/references/list_entities.md +1 -1
  39. package/skills/ae-analysis/references/list_events.md +3 -3
  40. package/skills/ae-analysis/references/list_metrics.md +2 -2
  41. package/skills/ae-analysis/references/list_properties.md +3 -3
  42. package/skills/ae-analysis/references/list_reports.md +3 -3
  43. package/skills/ae-analysis/references/list_spaces.md +27 -0
  44. package/skills/ae-analysis/references/list_tag_members.md +4 -4
  45. package/skills/ae-analysis/references/list_tags.md +2 -2
  46. package/skills/ae-analysis/references/move_dashboard.md +33 -0
  47. package/skills/ae-analysis/references/query_adhoc.md +2 -2
  48. package/skills/ae-analysis/references/query_bi_panel_data.md +2 -2
  49. package/skills/ae-analysis/references/query_dashboard_report_data.md +4 -4
  50. package/skills/ae-analysis/references/query_entity_details.md +4 -4
  51. package/skills/ae-analysis/references/query_event_details.md +3 -3
  52. package/skills/ae-analysis/references/query_report_data.md +37 -3
  53. package/skills/ae-analysis/references/update_id_cluster.md +36 -0
  54. package/skills/ae-analysis/references/update_id_tag.md +37 -0
  55. package/skills/ae-analysis/references/update_report.md +35 -0
  56. package/skills/ae-analysis-intent/SKILL.md +1 -1
  57. package/skills/ae-dataops/SKILL.md +54 -522
  58. package/skills/ae-dataops/references/dataops-flow-create.md +78 -75
  59. package/skills/ae-dataops/references/dataops-flow-monitor.md +58 -51
  60. package/skills/ae-dataops/references/dataops-integration.md +80 -41
  61. package/skills/ae-dataops/references/dataops-query.md +54 -53
  62. package/skills/ae-dataops/references/dataops-table.md +28 -59
  63. package/dist/te-audience-KMKYI2YJ.js +0 -400
  64. package/dist/te-dataops-GD3XBYCS.js +0 -1830
@@ -0,0 +1,61 @@
1
+ # analysis +build_rank_list_analysis_qp (Build Rank List Analysis QP)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Model Analysis**
6
+
7
+ ## Use Cases
8
+ - Build a validated rank-list-analysis QP from structured rank list intent.
9
+ - Rank list analysis ranks entities (users, items, etc.) by a metric value.
10
+ - Use in the mandatory builder flow before `+query_adhoc --model_type rank_list`.
11
+ - This command builds QP only and does not execute the analysis query.
12
+
13
+ ## JSON Rules
14
+ - CLI flags use snake_case, but JSON object keys use camelCase.
15
+ - `--rank_list` is a JSON object. Required fields: `rankDimension` (with `field`), `rankEvent`, `rankAggregation`.
16
+ - `rankType` values: `rank`=standard (1,2,2,4), `dense_rank`=dense (1,2,2,3), `row_rank`=unique (1,2,3,4). Defaults to `row_rank`.
17
+ - `orderBy`: `DESC`=highest first (default), `ASC`=lowest first.
18
+ - Wrap JSON in single quotes in shell commands.
19
+
20
+ ## Command Syntax
21
+ ```bash
22
+ ae-cli analysis +build_rank_list_analysis_qp --project_id <project_id> --time_range '<time_range_json>' --rank_list '<rank_list_json>'
23
+ ```
24
+
25
+ ## Parameters
26
+ | Parameter | Required | Description |
27
+ |---|---|---|
28
+ | `--project_id` / `-p` | Yes | Project ID |
29
+ | `--time_range` | Yes | Time range JSON |
30
+ | `--rank_list` | Yes | Rank list intent JSON |
31
+
32
+ ## JSON Shape
33
+ `--rank_list` object:
34
+ ```json
35
+ {
36
+ "rankDimension": {"field": {"name": "#account_id", "type": "user_property"}},
37
+ "rankEvent": "purchase",
38
+ "rankAggregation": "A103",
39
+ "rankProperty": "amount",
40
+ "orderBy": "DESC"
41
+ }
42
+ ```
43
+
44
+ Optional fields in `--rank_list`:
45
+ - `rankProperty`: required when rankAggregation is property-based (A103/A104/A106/A107/A108 etc.)
46
+ - `rankType`: rank / dense_rank / row_rank (default)
47
+ - `orderBy`: DESC (default) / ASC
48
+ - `filters`: global filters array
49
+ - `relation`: filter relation (and / or)
50
+
51
+ ## Examples
52
+ ```bash
53
+ ae-cli analysis +build_rank_list_analysis_qp --project_id 3137 --time_range '{"mode":"previous","unit":"day","value":7}' --rank_list '{"rankDimension":{"field":{"name":"#account_id","type":"user_property"}},"rankEvent":"purchase","rankAggregation":"A101","orderBy":"DESC"}'
54
+ ```
55
+
56
+ ## Decision Rules
57
+ - After successful build (`status=generated`), call `+query_adhoc --model_type rank_list --qp '<response.qp>'`.
58
+ - If non-generated status, stop and ask user to clarify.
59
+
60
+ ## Recommended Chain
61
+ - `+build_rank_list_analysis_qp` -> if `status=generated` -> `+query_adhoc --model_type rank_list --qp '<response.qp>'`
@@ -0,0 +1,63 @@
1
+ # analysis_audience +build_tag_definition (Build Tag Definition)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Tag Management**
6
+
7
+ ## Use Cases
8
+
9
+ - Build a tag definition JSON from structured intent. Call this before `+create_tag` or `+update_tag` to generate the `definition` field.
10
+ - Supported types: `condition` (multi-value), `metric` (event metric), `first_last` (first/last occurrence), `sql`.
11
+ - For condition/metric/first_last types, event and property names are resolved from project metadata — do not guess.
12
+ - On success, pass the returned definition to `+create_tag` or `+update_tag`.
13
+
14
+ ## Required Prerequisites (MUST)
15
+
16
+ - Before calling this command, you must first read and follow these reference docs:
17
+ - [`./get_tag_definition_schema.md`](./get_tag_definition_schema.md)
18
+ - [`./list_events.md`](./list_events.md)
19
+ - [`./list_properties.md`](./list_properties.md)
20
+ - Do not construct `--condition_values` / `--metric` / `--first_last` until the schema has been read and metadata has been verified for the same `project_id`.
21
+
22
+ ## Commands
23
+
24
+ ```bash
25
+ ae-cli analysis_audience +build_tag_definition --project_id <project_id> --type condition --condition_values '[]'
26
+ ae-cli analysis_audience +build_tag_definition --project_id <project_id> --type metric --metric '{}'
27
+ ae-cli analysis_audience +build_tag_definition --project_id <project_id> --type first_last --first_last '{}'
28
+ ae-cli analysis_audience +build_tag_definition --project_id <project_id> --type sql --sql 'SELECT "#user_id", tag_value FROM ...'
29
+ ae-cli analysis_audience +build_tag_definition --dry-run
30
+ ```
31
+
32
+ ## Parameters
33
+
34
+ | Parameter | Required | Description |
35
+ | --------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
36
+ | `--project_id` / `-p` | Yes | Project ID |
37
+ | `--type` | Yes | Tag type. Supported values: `condition`, `metric`, `first_last`, `sql` |
38
+ | `--condition_values` | No | For type=condition: list of tag value definitions JSON array. Each item defines a segment label and its conditions. See `+get_tag_definition_schema` for the structure. |
39
+ | `--metric` | No | For type=metric: metric definition JSON. Fields: `eventName`, `analysis`, `quota` (property name), `recentDay`/`startTime`/`endTime`. |
40
+ | `--first_last` | No | For type=first_last: first/last occurrence definition JSON. Fields: `eventName`, `firstEvent` (true=first, false=last), `calcPropType`, `property`, `recentDay`/`startTime`/`endTime`. |
41
+ | `--sql` | No | For type=sql: SQL query returning two columns: `#user_id` and the tag value. |
42
+
43
+ ## Decision Rules
44
+
45
+ - Determine `--type` first, then pass only the corresponding parameter.
46
+ - For type=condition, `--condition_values` is effectively required.
47
+ - For type=metric, `--metric` is effectively required.
48
+ - For type=first_last, `--first_last` is effectively required.
49
+ - For type=sql, only `--sql` is needed; other type-specific parameters are ignored.
50
+ - Event and property names must come from session-verified metadata (`analysis_meta +list_events` / `+list_properties` for the same `project_id`).
51
+ - Do not guess event or property names — always verify against real metadata first.
52
+ - Wrap JSON parameters in single quotes (e.g. `--condition_values '[]'`) to avoid shell escaping issues.
53
+ - Run `--dry-run` first to inspect the request mapping before making the actual call.
54
+
55
+ ## Next Step on Failure
56
+
57
+ - If required parameters are missing, check that `--project_id` and `--type` are provided.
58
+ - If the returned definition is rejected by `+create_tag` or `+update_tag`, re-read `+get_tag_definition_schema` with `--response_mode examples` and verify metadata names again.
59
+
60
+ ## Recommended Chain
61
+
62
+ - `+get_tag_definition_schema` → (first build/update in session or refresh) `analysis_meta +list_events` → `analysis_meta +list_properties` → `+build_tag_definition` → `+create_tag`
63
+ - `+get_tag_definition_schema` → (first build/update in session or refresh) `analysis_meta +list_events` → `analysis_meta +list_properties` → `+build_tag_definition` → `+update_tag`
@@ -10,7 +10,7 @@ Domain: **Query lifecycle**
10
10
  - Cancel a query by the same `requestId` that was supplied to or returned by a previous query command.
11
11
  - For proactive cancellation, pass `requestId` to the query tool before starting it, then call `cancel_query` with the same value if you stop waiting.
12
12
  - If a query returns `fetch failed`, hits an HTTP timeout, or the caller stops waiting, the backend query may still be running; call `+cancel_query --request_id <same value>` with the preset `requestId`.
13
- - auto-generated requestId is not available when the HTTP request fails before a response, so preset `requestId` before any query that may exceed the CLI/MCP HTTP timeout.
13
+ - MCP query tools require caller-supplied `requestId`; generate and pass it before starting any cancelable query, then reuse the same value if cleanup is needed.
14
14
 
15
15
  ## Command
16
16
  ```bash
@@ -30,9 +30,8 @@ ae-cli analysis +cancel_query --request_id mcp_0123456789abcdef0123456789abcdef
30
30
  - The request must belong to the current MCP user. Otherwise the service returns `REQUEST_NOT_FOUND_OR_NOT_OWNED`.
31
31
  - Do not invent a request ID. Use the ID from the query response or the ID explicitly supplied to the original query.
32
32
  - This command cancels by request ID only. It does not cancel by SQL text, report ID, dashboard ID, BI panel ID, run ID, or tool call ID.
33
- - For query commands that expose `--request_id`, prefer supplying a stable ID before execution using `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`, so proactive cancellation does not depend on waiting for the response metadata.
33
+ - For query commands that expose `--request_id`, supplying a stable ID before execution is required. Use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`, so proactive cancellation does not depend on waiting for the response metadata.
34
34
  - For query commands that may exceed the CLI/MCP HTTP timeout, preset `--request_id`; if `fetch failed`, HTTP timeout, or caller timeout happens, immediately call `+cancel_query --request_id <same value> --yes`.
35
- - For commands that do not expose caller-supplied `request_id`, cancel only if the response includes a request ID.
36
35
 
37
36
  ## Next Steps on Failure
38
37
  - If `REQUEST_NOT_FOUND_OR_NOT_OWNED` appears, verify the request ID, user identity, host, and whether the original query already finished.
@@ -0,0 +1,33 @@
1
+ # analysis +copy_dashboard (Copy Dashboard)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Dashboard Management**
6
+
7
+ ## Use Cases
8
+ - Copy a dashboard to a new dashboard, optionally copying its associated reports.
9
+ - To place the copy in a specific space or folder, provide `--to_space_id` or `--to_folder_id`. Use `+list_spaces` to resolve these IDs.
10
+
11
+ ## Commands
12
+ ```bash
13
+ ae-cli analysis_audience +copy_dashboard --project_id <project_id> --dashboard_id <dashboard_id> --dashboard_name "Copy of Dashboard"
14
+ ae-cli analysis_audience +copy_dashboard --project_id <project_id> --dashboard_id <dashboard_id> --dashboard_name "Copy of Dashboard" --report_copy true --to_space_id <space_id>
15
+ ae-cli analysis_audience +copy_dashboard --dry-run
16
+ ```
17
+
18
+ ## Parameters
19
+ | Parameter | Required | Description |
20
+ |---|---|---|
21
+ | `--project_id` / `-p` | Yes | Project ID |
22
+ | `--dashboard_id` | Yes | Source dashboard ID to copy |
23
+ | `--dashboard_name` | Yes | Name for the new copied dashboard |
24
+ | `--report_copy` | No | Whether to also copy associated reports. Defaults to false. |
25
+ | `--to_space_id` | No | Target space ID. Omit to use the default location. |
26
+ | `--to_folder_id` | No | Target folder ID inside the target space. Omit to place at the space root. |
27
+
28
+ ## Decision Rules
29
+ - Call `+list_spaces` first when the user wants to place the copy in a specific space or folder.
30
+ - Returns the new dashboard ID and name on success.
31
+
32
+ ## Recommended Chain
33
+ - `+list_dashboards` -> `+list_spaces` -> `+copy_dashboard` -> `analysis_common +get_resource_url`
@@ -0,0 +1,40 @@
1
+ # analysis_audience +create_id_cluster (Create ID Cluster)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Cluster Management**
6
+
7
+ ## Use Cases
8
+ - Create a new ID cluster by uploading a CSV of user IDs as plain text.
9
+ - The CSV should contain a single column of user IDs (no header row required).
10
+ - The operation is asynchronous — the cluster enters computing state after creation.
11
+
12
+ ## Commands
13
+ ```bash
14
+ ae-cli analysis_audience +create_id_cluster --project_id <project_id> --display_name "My ID Cluster" --file_content "user_001
15
+ user_002
16
+ user_003" --entity_id <entity_id>
17
+ ae-cli analysis_audience +create_id_cluster --project_id <project_id> --display_name "My ID Cluster" --file_content "user_001" --entity_id <entity_id> --cluster_name my_id_cluster --remarks "Created by script"
18
+ ae-cli analysis_audience +create_id_cluster --dry-run
19
+ ```
20
+
21
+ ## Parameters
22
+ | Parameter | Required | Description |
23
+ |---|---|---|
24
+ | `--project_id` / `-p` | Yes | Project ID |
25
+ | `--display_name` | Yes | Cluster display name (1-80 characters) |
26
+ | `--file_content` | Yes | CSV file content as plain text. No header row, UTF-8 encoding. Each row contains one user ID. Max 100MB. |
27
+ | `--entity_id` | Yes | Entity ID to associate the cluster with. Use `analysis_meta +list_entities` to query. |
28
+ | `--cluster_name` | No | Cluster name (lowercase letters, digits, underscores, starts with a letter, max 80 chars). Auto-generated if omitted. |
29
+ | `--remarks` | No | Optional remarks (max 200 characters) |
30
+ | `--main_column_name` | No | Optional main column name for ID matching |
31
+
32
+ ## Return Value
33
+ Returns `clusterId`, `uploadNum` (rows uploaded), `userNum` (matched users), `unmatchedNum` (unmatched rows), and `clusterName`.
34
+
35
+ ## Decision Rules
36
+ - Call `analysis_meta +list_entities` to resolve `entity_id` before creating.
37
+ - If file size exceeds 100MB, inform the user to upload directly via the web interface.
38
+
39
+ ## Recommended Chain
40
+ - `analysis_meta +list_entities` -> `+create_id_cluster` -> `+refresh_cluster`
@@ -0,0 +1,39 @@
1
+ # analysis_audience +create_id_tag (Create ID Tag)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Tag Management**
6
+
7
+ ## Use Cases
8
+ - Create a new ID tag by uploading a CSV of user IDs and tag values as plain text.
9
+ - The CSV should contain two columns: user ID and tag value (tag value is optional).
10
+ - The operation is asynchronous — the tag enters computing state after creation.
11
+
12
+ ## Commands
13
+ ```bash
14
+ ae-cli analysis_audience +create_id_tag --project_id <project_id> --display_name "VIP Tag" --file_content "user_001,gold
15
+ user_002,silver" --entity_id <entity_id>
16
+ ae-cli analysis_audience +create_id_tag --project_id <project_id> --display_name "VIP Tag" --file_content "user_001,gold" --entity_id <entity_id> --tag_name vip_tag --remarks "ID-based tag"
17
+ ae-cli analysis_audience +create_id_tag --dry-run
18
+ ```
19
+
20
+ ## Parameters
21
+ | Parameter | Required | Description |
22
+ |---|---|---|
23
+ | `--project_id` / `-p` | Yes | Project ID |
24
+ | `--display_name` | Yes | Tag display name (1-80 characters) |
25
+ | `--file_content` | Yes | CSV file content as plain text. No header row, UTF-8 encoding. Column 1: user ID. Column 2: tag value (optional). Example: user_001,gold_member. Max 100MB. |
26
+ | `--entity_id` | Yes | Entity ID to associate the tag with. Use `analysis_meta +list_entities` to query. |
27
+ | `--tag_name` | No | Tag name (letters/digits/underscores, starts with a letter, max 80 chars). Auto-generated if omitted. |
28
+ | `--remarks` | No | Optional remarks (max 200 characters) |
29
+ | `--main_column_name` | No | Optional main column name for ID matching |
30
+
31
+ ## Return Value
32
+ Returns `clusterId`, `uploadNum` (rows uploaded), `userNum` (matched users), `unmatchedNum` (unmatched rows), and `clusterName` (tag name).
33
+
34
+ ## Decision Rules
35
+ - Call `analysis_meta +list_entities` to resolve `entity_id` before creating.
36
+ - If file size exceeds 100MB, inform the user to upload directly via the web interface.
37
+
38
+ ## Recommended Chain
39
+ - `analysis_meta +list_entities` -> `+create_id_tag` -> `+refresh_tag`
@@ -0,0 +1,27 @@
1
+ # analysis +delete_alert (Delete Alert)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Alert Management**
6
+
7
+ ## Use Cases
8
+ - Permanently delete an alert by its ID.
9
+
10
+ ## Commands
11
+ ```bash
12
+ ae-cli analysis +delete_alert --project_id <project_id> --alert_id <alert_id>
13
+ ae-cli analysis +delete_alert --dry-run
14
+ ```
15
+
16
+ ## Parameters
17
+ | Parameter | Required | Description |
18
+ |---|---|---|
19
+ | `--project_id` / `-p` | Yes | Project ID |
20
+ | `--alert_id` | Yes | Alert ID to delete |
21
+
22
+ ## Decision Rules
23
+ - Use `+list_alerts` first to confirm the alert ID before deleting.
24
+ - This is a destructive operation; keep the confirmation prompt unless automation is explicitly required.
25
+
26
+ ## Recommended Chain
27
+ - `+list_alerts` -> `+delete_alert`
@@ -0,0 +1,27 @@
1
+ # analysis_audience +delete_cluster (Delete Cluster)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Cluster Management**
6
+
7
+ ## Use Cases
8
+ - Permanently delete a cluster by its name.
9
+
10
+ ## Commands
11
+ ```bash
12
+ ae-cli analysis_audience +delete_cluster --project_id <project_id> --cluster_name my_cluster
13
+ ae-cli analysis_audience +delete_cluster --dry-run
14
+ ```
15
+
16
+ ## Parameters
17
+ | Parameter | Required | Description |
18
+ |---|---|---|
19
+ | `--project_id` / `-p` | Yes | Project ID |
20
+ | `--cluster_name` | Yes | Cluster name to delete |
21
+
22
+ ## Decision Rules
23
+ - Use `+list_clusters` first to confirm the cluster name before deleting.
24
+ - This is a destructive operation; keep the confirmation prompt unless automation is explicitly required.
25
+
26
+ ## Recommended Chain
27
+ - `+list_clusters` -> `+delete_cluster`
@@ -0,0 +1,30 @@
1
+ # analysis +delete_dashboard (Delete Dashboard)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Dashboard Management**
6
+
7
+ ## Use Cases
8
+ - Permanently delete a dashboard by its ID.
9
+
10
+ ## Commands
11
+ ```bash
12
+ ae-cli analysis +delete_dashboard --project_id <project_id> --dashboard_id <dashboard_id>
13
+ ae-cli analysis +delete_dashboard --dry-run
14
+ ```
15
+
16
+ ## Parameters
17
+ | Parameter | Required | Description |
18
+ |---|---|---|
19
+ | `--project_id` / `-p` | Yes | Project ID |
20
+ | `--dashboard_id` | Yes | Dashboard ID to delete |
21
+
22
+ ## Decision Rules
23
+ - Use `+list_dashboards` first to confirm the dashboard ID before deleting.
24
+ - This is a destructive operation; keep the confirmation prompt unless automation is explicitly required.
25
+
26
+ ## Next Step on Failure
27
+ - If the dashboard is not found, use `+list_dashboards` to verify the ID.
28
+
29
+ ## Recommended Chain
30
+ - `+list_dashboards` -> `+delete_dashboard`
@@ -0,0 +1,27 @@
1
+ # analysis_meta +delete_metric (Delete Metric)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Metric Management**
6
+
7
+ ## Use Cases
8
+ - Permanently delete a metric by its ID.
9
+
10
+ ## Commands
11
+ ```bash
12
+ ae-cli analysis_meta +delete_metric --project_id <project_id> --metric_id <metric_id>
13
+ ae-cli analysis_meta +delete_metric --dry-run
14
+ ```
15
+
16
+ ## Parameters
17
+ | Parameter | Required | Description |
18
+ |---|---|---|
19
+ | `--project_id` / `-p` | Yes | Project ID |
20
+ | `--metric_id` | Yes | Metric ID to delete |
21
+
22
+ ## Decision Rules
23
+ - Use `+list_metrics` first to confirm the metric ID before deleting.
24
+ - This is a destructive operation; keep the confirmation prompt unless automation is explicitly required.
25
+
26
+ ## Recommended Chain
27
+ - `+list_metrics` -> `+delete_metric`
@@ -0,0 +1,27 @@
1
+ # analysis +delete_report (Delete Report)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Report Management**
6
+
7
+ ## Use Cases
8
+ - Permanently delete a report by its ID.
9
+
10
+ ## Commands
11
+ ```bash
12
+ ae-cli analysis +delete_report --project_id <project_id> --report_id <report_id>
13
+ ae-cli analysis +delete_report --dry-run
14
+ ```
15
+
16
+ ## Parameters
17
+ | Parameter | Required | Description |
18
+ |---|---|---|
19
+ | `--project_id` / `-p` | Yes | Project ID |
20
+ | `--report_id` | Yes | Report ID to delete |
21
+
22
+ ## Decision Rules
23
+ - Use `+list_reports` first to confirm the report ID before deleting.
24
+ - This is a destructive operation; keep the confirmation prompt unless automation is explicitly required.
25
+
26
+ ## Recommended Chain
27
+ - `+list_reports` -> `+delete_report`
@@ -0,0 +1,27 @@
1
+ # analysis_audience +delete_tag (Delete Tag)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Tag Management**
6
+
7
+ ## Use Cases
8
+ - Permanently delete a tag by its name.
9
+
10
+ ## Commands
11
+ ```bash
12
+ ae-cli analysis_audience +delete_tag --project_id <project_id> --tag_name my_tag
13
+ ae-cli analysis_audience +delete_tag --dry-run
14
+ ```
15
+
16
+ ## Parameters
17
+ | Parameter | Required | Description |
18
+ |---|---|---|
19
+ | `--project_id` / `-p` | Yes | Project ID |
20
+ | `--tag_name` | Yes | Tag name to delete |
21
+
22
+ ## Decision Rules
23
+ - Use `+list_tags` first to confirm the tag name before deleting.
24
+ - This is a destructive operation; keep the confirmation prompt unless automation is explicitly required.
25
+
26
+ ## Recommended Chain
27
+ - `+list_tags` -> `+delete_tag`
@@ -56,18 +56,18 @@ ae-cli analysis +drilldown_user_events --dry-run
56
56
  | `--use_cache` | No | Whether to use cache. Default: true |
57
57
  | `--page_num` | No | Start page number, default 1 |
58
58
  | `--page_size` | No | Page size. Default: 1000, maximum: 10000 |
59
- | `--request_id` | No | Optional unique request ID used for tracking and cancellation. If provided, it must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. For long-running or cancelable queries, provide this before starting the query so it can be cancelled later with `+cancel_query --request_id <same value>`, even if the caller stops waiting before the tool returns. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running. The auto-generated requestId is not available when the HTTP request fails before a response, so preset `requestId` is required for proactive cleanup. Generated automatically if omitted. The response `metadata.requestId` can also be passed to `cancel_query` when the query is no longer needed. |
59
+ | `--request_id` | Yes | Required unique request ID used for tracking and cancellation. Generate it before starting the query. It must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. Provide this before starting the query so it can be cancelled later with `+cancel_query --request_id <same value>`, even if the caller stops waiting before the tool returns. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running. `requestId` is not auto-generated for MCP query tools because the caller must know it before the response for proactive cleanup. If omitted or blank, the backend returns `REQUEST_ID_REQUIRED`; invalid format returns `INVALID_REQUEST_ID`. The response `metadata.requestId` echoes the supplied requestId and can also be passed to `cancel_query(requestId)` when the query is no longer needed. |
60
60
  | `--timeout_minutes` | No | Query timeout in minutes |
61
61
 
62
62
  ## Decision Rules
63
63
  - `user_id` / `event_names` / `target_dates` must come from the previous step result and must not be constructed out of thin air.
64
- - On the first run, start with only the required parameters (`--project_id`,`--user_id`,`--event_names`,`--target_dates`), and add optional parameters after confirming the path works.
64
+ - On the first run, include all required parameters (`--project_id`,`--user_id`,`--event_names`,`--target_dates`,`--request_id`), and add optional parameters after confirming the path works.
65
65
  - Wrap JSON parameters in single quotes (for example `--event_names '[]'`, `--target_dates '[]'`) to avoid shell escaping issues.
66
- - For long-running or cancelable drilldowns, supply your own `--request_id` before starting so `+cancel_query` can cancel by the same ID if the caller or user stops waiting. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running; call `+cancel_query --request_id <same value>` with the preset ID. The auto-generated requestId is not available when the HTTP request fails before a response. The value must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`.
66
+ - Generate and pass `--request_id` before starting any cancelable query; it is required. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running; call `+cancel_query --request_id <same value>` with the preset ID. The value must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. Omitted or blank IDs return `REQUEST_ID_REQUIRED`; invalid format returns `INVALID_REQUEST_ID`.
67
67
  - For cross-project troubleshooting, first confirm whether `--project_id` matches the current permissions and target environment.
68
68
 
69
69
  ## Next Steps on Failure
70
- - If required parameters are missing, fall back to the smallest runnable command and fill them in first (focus on `--project_id`, `--user_id`, `--event_names`, `--target_dates`).
70
+ - If required parameters are missing, fall back to the smallest runnable command and fill them in first (focus on `--project_id`, `--user_id`, `--event_names`, `--target_dates`, `--request_id`).
71
71
  - If `Invalid JSON` appears, first verify the array structure, then compare it with the previous drilldown result to confirm the values are complete and valid.
72
72
 
73
73
  ## Recommended chaining
@@ -57,15 +57,15 @@ ae-cli analysis +drilldown_users --dry-run
57
57
  | `--use_cache` | No | Whether to use cache. Default: true |
58
58
  | `--limit` | No | Optional limit. Default: 1000, maximum: 10000. |
59
59
  | `--offset` | No | Optional offset. Default: 0. |
60
- | `--request_id` | No | Optional unique request ID used for tracking and cancellation. If provided, it must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. For long-running or cancelable queries, provide this before starting the query so it can be cancelled later with `+cancel_query --request_id <same value>`, even if the caller stops waiting before the tool returns. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running. The auto-generated requestId is not available when the HTTP request fails before a response, so preset `requestId` is required for proactive cleanup. Generated automatically if omitted. The response `metadata.requestId` can also be passed to `cancel_query` when the query is no longer needed. |
60
+ | `--request_id` | Yes | Required unique request ID used for tracking and cancellation. Generate it before starting the query. It must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. Provide this before starting the query so it can be cancelled later with `+cancel_query --request_id <same value>`, even if the caller stops waiting before the tool returns. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running. `requestId` is not auto-generated for MCP query tools because the caller must know it before the response for proactive cleanup. If omitted or blank, the backend returns `REQUEST_ID_REQUIRED`; invalid format returns `INVALID_REQUEST_ID`. The response `metadata.requestId` echoes the supplied requestId and can also be passed to `cancel_query(requestId)` when the query is no longer needed. |
61
61
  | `--timeout_minutes` | No | Query timeout in minutes. If the query exceeds this time, it will be cancelled automatically. |
62
62
 
63
63
  ## Decision Rules
64
64
  - Drilldown positioning parameters must come from upstream analysis results and must not be fabricated.
65
65
  - `qp` must not be rewritten or "simplified"; it should remain consistent with the source analysis.
66
66
  - For pagination, use `--limit` and `--offset` together. Default limit is 1000, maximum 100000.
67
- - For long-running or cancelable drilldowns, supply your own `--request_id` before starting so `+cancel_query` can cancel by the same ID if the caller or user stops waiting. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running; call `+cancel_query --request_id <same value>` with the preset ID. The auto-generated requestId is not available when the HTTP request fails before a response. The value must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`.
68
- - For the first run, it is recommended to pass only the required parameters (`--project_id`, `--model_type`, `--qp`) and add optional parameters after confirming the chain works.
67
+ - Generate and pass `--request_id` before starting any cancelable query; it is required. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running; call `+cancel_query --request_id <same value>` with the preset ID. The value must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. Omitted or blank IDs return `REQUEST_ID_REQUIRED`; invalid format returns `INVALID_REQUEST_ID`.
68
+ - For the first run, include all required parameters (`--project_id`, `--model_type`, `--qp`, `--request_id`) and add optional parameters after confirming the chain works.
69
69
  - Wrap JSON parameters in single quotes (for example `--qp '{}'`, `--drilldown_groups '{}'`) to avoid shell escaping issues.
70
70
  - When dates/time ranges are involved, validate with a short range first and then expand gradually.
71
71
  - For cross-project troubleshooting, first confirm whether `--project_id` matches the current permissions and target environment.
@@ -0,0 +1,29 @@
1
+ # analysis +freeze_dashboards (Freeze / Unfreeze Dashboards)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Dashboard Management**
6
+
7
+ ## Use Cases
8
+ - Freeze one or more dashboards to take their scheduled refresh jobs offline.
9
+ - Unfreeze dashboards to bring scheduled jobs back online (for dashboards that have a schedule configured).
10
+
11
+ ## Commands
12
+ ```bash
13
+ ae-cli analysis_audience +freeze_dashboards --project_id <project_id> --dashboard_ids '[123, 456]' --freeze true
14
+ ae-cli analysis_audience +freeze_dashboards --project_id <project_id> --dashboard_ids '[123]' --freeze false
15
+ ae-cli analysis_audience +freeze_dashboards --dry-run
16
+ ```
17
+
18
+ ## Parameters
19
+ | Parameter | Required | Description |
20
+ |---|---|---|
21
+ | `--project_id` / `-p` | Yes | Project ID |
22
+ | `--dashboard_ids` | Yes | JSON array of dashboard IDs to freeze or unfreeze |
23
+ | `--freeze` | Yes | true to freeze, false to unfreeze |
24
+
25
+ ## Decision Rules
26
+ - Use `+list_dashboards` to confirm dashboard IDs before freezing.
27
+
28
+ ## Recommended Chain
29
+ - `+list_dashboards` -> `+freeze_dashboards`
@@ -5,16 +5,16 @@
5
5
  Domain: **Model analysis**
6
6
 
7
7
  ## Use Cases
8
- - Query the field list of a project table. Returns all column names and types under the specified catalog, schema, and table so the table schema can be understood before SQL analysis.
8
+ - Query the field list of a project table. Returns all column names and types for `tableRef` so the table schema can be understood before SQL analysis.
9
9
  - Table guide:
10
- - default.public.ta_event_1: catalog is default, schema is public, table is ta_event_1
11
- - public.ta_event_1: catalog is hive(default value), schema is public, table is ta_event_1
12
- - ta_event_1: catalog is hive(default value), schema is ta(default value), table is ta_event_1
13
- - Query the field list of a project table.
10
+ - `hive.ta_dim.datatable_1`: catalog is hive, schema is ta_dim, table is datatable_1.
11
+ - `ta_dim.datatable_1`: catalog defaults to hive, schema is ta_dim, table is datatable_1.
12
+ - `ta_event_1`: table only; resolved against project available tables and fails if ambiguous.
13
+ - The only common catalog is `hive`. Common hive schemas are `ta` (default analysis tables), `ta_dim` (dimension/datatable/exchange tables), `temp` (SQL temporary tables), and `ta_ext` (external datatable/API tables). Do not replace an explicit schema such as `ta_dim` with default `ta`.
14
14
 
15
15
  ## Command
16
16
  ```bash
17
- ae-cli analysis +get_table_columns --project_id <project_id> --catalog demo --schema demo --table demo
17
+ ae-cli analysis +get_table_columns --project_id <project_id> --table_ref hive.ta_dim.datatable_1
18
18
  ae-cli analysis +get_table_columns --dry-run
19
19
  ```
20
20
 
@@ -22,17 +22,16 @@ ae-cli analysis +get_table_columns --dry-run
22
22
  | Parameter | Required | Description |
23
23
  |---|---|---|
24
24
  | `--project_id` / `-p` | Yes | Project ID |
25
- | `--catalog` | Yes | Catalog name, default hive |
26
- | `--schema` | Yes | Schema name, default ta |
27
- | `--table` | Yes | Table name |
25
+ | `--table_ref` | Yes | Table reference. Supports `hive.schema.table`, `schema.table`, or `table`. If only `table` is provided, the backend resolves it against project available tables and fails on ambiguity. |
28
26
 
29
27
  ## Decision Rules
30
- - On the first run, start with only the required parameters (`--project_id`,`--catalog`,`--schema`), and add optional parameters after confirming the path works.
28
+ - Prefer a fully qualified `--table_ref` when the schema is known, especially for `ta_dim`, `temp`, or `ta_ext` tables.
29
+ - Use table-only `--table_ref <table>` only when you expect the table name to be unique in the project; if the backend returns ambiguity, retry with one of the returned fully qualified `tableRef` values.
31
30
  - For cross-project troubleshooting, first confirm whether `--project_id` matches the current permissions and target environment.
32
31
 
33
32
  ## Next Steps on Failure
34
- - If required parameters are missing, fall back to the smallest runnable command and fill them in first (focus on `--project_id`, `--catalog`, `--schema`).
35
- - If reading fails, first verify whether the object ID exists and belongs to the current project.
33
+ - If required parameters are missing, fill in `--project_id` and `--table_ref` first.
34
+ - If reading fails, first verify whether the `tableRef` exists, is unambiguous, and belongs to the current project permissions.
36
35
 
37
36
  ## Recommended chaining
38
37
  - +get_table_columns
@@ -28,17 +28,17 @@ ae-cli analysis_audience +list_cluster_members --dry-run
28
28
  | `--fields` | No | Optional return field list (JSON array). Invalid fields will fail with `INVALID_FIELDS`. |
29
29
  | `--limit` | No | Optional page size. Default: 20, max: 50. |
30
30
  | `--offset` | No | Optional page offset. Default: 0. |
31
- | `--request_id` | No | Optional unique request ID used for tracking and cancellation. If provided, it must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. For long-running or cancelable queries, provide this before starting the query so it can be cancelled later with `+cancel_query --request_id <same value>`, even if the caller stops waiting before the tool returns. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running. The auto-generated requestId is not available when the HTTP request fails before a response, so preset `requestId` is required for proactive cleanup. Generated automatically if omitted. The response `metadata.requestId` can also be passed to `cancel_query` when the query is no longer needed. |
31
+ | `--request_id` | Yes | Required unique request ID used for tracking and cancellation. Generate it before starting the query. It must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. Provide this before starting the query so it can be cancelled later with `+cancel_query --request_id <same value>`, even if the caller stops waiting before the tool returns. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running. `requestId` is not auto-generated for MCP query tools because the caller must know it before the response for proactive cleanup. If omitted or blank, the backend returns `REQUEST_ID_REQUIRED`; invalid format returns `INVALID_REQUEST_ID`. The response `metadata.requestId` echoes the supplied requestId and can also be passed to `cancel_query(requestId)` when the query is no longer needed. |
32
32
  | `--timeout_minutes` | No | Query timeout in minutes. If omitted, 30 minutes is used. |
33
33
 
34
34
  ## Decision Rules
35
- - For the first execution, it is recommended to pass only the required parameters (`--project_id`, `--cluster_name`) and add optional parameters after confirming the path works.
35
+ - For the first execution, include all required parameters (`--project_id`, `--cluster_name`, `--request_id`) and add optional parameters after confirming the path works.
36
36
  - `--property_names` must be passed as a JSON array (e.g. `--property_names '["#user_id"]'`).
37
- - For long-running or cancelable member queries, supply your own `--request_id` before starting so `analysis +cancel_query` can cancel by the same ID if the caller or user stops waiting. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running; call `+cancel_query --request_id <same value>` with the preset ID. The auto-generated requestId is not available when the HTTP request fails before a response. The value must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`.
37
+ - Generate and pass `--request_id` before starting any cancelable query; it is required. If `fetch failed`, HTTP timeout, or caller timeout happens, the backend query may still be running; call `+cancel_query --request_id <same value>` with the preset ID. The value must use `mcp_<32 lowercase hex UUID>`, for example `mcp_0123456789abcdef0123456789abcdef`. Omitted or blank IDs return `REQUEST_ID_REQUIRED`; invalid format returns `INVALID_REQUEST_ID`.
38
38
  - When troubleshooting across projects, first confirm whether `--project_id` matches the current permissions and target environment.
39
39
 
40
40
  ## Next Step on Failure
41
- - If required parameters are missing, fall back to the smallest runnable command and fill the gap (focus on `--project_id`, `--cluster_name`).
41
+ - If required parameters are missing, fall back to the smallest runnable command and fill the gap (focus on `--project_id`, `--cluster_name`, `--request_id`).
42
42
  - If the result is empty, first confirm the project ID/keyword, then try broadening the filter conditions.
43
43
 
44
44
  ## Recommended Chain
@@ -19,7 +19,7 @@ Domain: **Cluster Management**
19
19
  ```bash
20
20
  ae-cli analysis_audience +list_clusters --project_id <project_id>
21
21
  ae-cli analysis_audience +list_clusters --project_id <project_id> --query demo
22
- ae-cli analysis_audience +list_clusters --project_id <project_id> --fields '["id","clusterName","usersNum"]' --limit 20 --offset 0
22
+ ae-cli analysis_audience +list_clusters --project_id <project_id> --fields '["id","clusterName","displayName","remarks","clusterType","progress","usersNum"]' --limit 20 --offset 0
23
23
  ae-cli analysis_audience +list_clusters --dry-run
24
24
  ```
25
25
 
@@ -27,8 +27,8 @@ ae-cli analysis_audience +list_clusters --dry-run
27
27
  | Parameter | Required | Description |
28
28
  |---|---|---|
29
29
  | `--project_id` / `-p` | Yes | Project ID |
30
- | `--query` / `-q` | No | Optional keyword filter. Performs fuzzy matching against cluster names, display names, and remarks; if omitted, all clusters are returned. |
31
- | `--fields` | No | Optional return field list (JSON array). Invalid fields will fail with `INVALID_FIELDS`. |
30
+ | `--query` / `-q` | No | Optional keyword filter. Performs fuzzy matching against clusterName, displayName, and remarks; if omitted, all clusters are returned. |
31
+ | `--fields` | No | Optional return field list (JSON array). Supported fields: `id`, `clusterName`, `displayName`, `clusterType`, `progress`, `usersNum`, `refreshStatus`, `remarks`. Default fields when omitted: `id`, `clusterName`, `displayName`, `remarks`, `clusterType`, `progress`, `usersNum`. Invalid fields will fail with `INVALID_FIELDS`. |
32
32
  | `--limit` | No | Optional page size. Default: 20, max: 50. |
33
33
  | `--offset` | No | Optional page offset. Default: 0. |
34
34