@thinkingai/ae-cli 6.1.7 → 6.1.8

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 (68) hide show
  1. package/dist/{auth-UPGUOKTW.js → auth-B2BRSYMS.js} +1 -1
  2. package/dist/{capability-TQ5KU5Q6.js → capability-6KPXYNO7.js} +1 -1
  3. package/dist/{capability-AJC5CBRT.js → capability-ROKYESAP.js} +1 -1
  4. package/dist/{chunk-6CHYBI64.js → chunk-EBPXT3TN.js} +1 -1
  5. package/dist/{chunk-4Q5TNP4Q.js → chunk-J7MZHDHQ.js} +48 -24
  6. package/dist/{chunk-IMMGMU54.js → chunk-JTKMDN4A.js} +64 -166
  7. package/dist/{chunk-ISY6HMHM.js → chunk-RRFK2W7I.js} +1 -1
  8. package/dist/{config-PMPISN5Y.js → config-DDYJPJX3.js} +1 -1
  9. package/dist/index.js +49 -22
  10. package/dist/{metadata-P5GIVMZ6.js → metadata-2ZFRMVOL.js} +2 -2
  11. package/dist/{metadata-ELUAR3EJ.js → metadata-ABQCKU5P.js} +2 -2
  12. package/dist/{model-OYQLXCQY.js → model-JASQVOFD.js} +1 -1
  13. package/dist/{raw-TPB7KSZO.js → raw-6HXFFHLV.js} +1 -1
  14. package/dist/{sync-EFJKFZK2.js → sync-BF3IWYFC.js} +2 -2
  15. package/dist/{te-agent-BOQ7ZY56.js → te-agent-3GJ5H2XF.js} +1 -1
  16. package/dist/{te-analysis-ZT2MYAHL.js → te-analysis-DJ6KELTU.js} +213 -129
  17. package/dist/{te-analysis-HZIP6SYW.js → te-analysis-PCGESPLW.js} +213 -129
  18. package/dist/{te-dataops-Y5QAPPPF.js → te-dataops-LXL5YULV.js} +1 -1
  19. package/dist/{te-dataops-VYN3IOKO.js → te-dataops-ROHUJOX5.js} +1 -1
  20. package/dist/{te-engage-2FSDUOIZ.js → te-engage-2YDCA552.js} +87 -4
  21. package/dist/{te-engage-BMJ6UOUU.js → te-engage-VW6NJZ5V.js} +87 -4
  22. package/dist/{te-experiment-4JC7WUKW.js → te-experiment-7JGJNDXO.js} +2 -2
  23. package/dist/{te-experiment-KYRWAUZY.js → te-experiment-OYK54B72.js} +2 -2
  24. package/dist/te-system-AH7DMCAQ.js +1706 -0
  25. package/dist/{te-team-PDKKW7Q5.js → te-team-RRZI4WRI.js} +1 -1
  26. package/dist/update-ER7VFU55.js +101 -0
  27. package/package.json +5 -1
  28. package/skills/ae-agent/references/create-automation.md +1 -0
  29. package/skills/ae-analysis/SKILL.md +1 -1
  30. package/skills/ae-analysis/references/alert_create.md +2 -3
  31. package/skills/ae-analysis/references/alert_update.md +2 -3
  32. package/skills/ae-analysis/references/analysis_gateway_assets.md +6 -4
  33. package/skills/ae-analysis/references/bi_panel_create.md +12 -4
  34. package/skills/ae-analysis/references/bi_panel_update.md +11 -8
  35. package/skills/ae-analysis/references/bi_panel_version_publish.md +3 -1
  36. package/skills/ae-analysis/references/command_index.md +10 -7
  37. package/skills/ae-analysis/references/dashboard_daily_report_get.md +18 -0
  38. package/skills/ae-analysis/references/dashboard_daily_report_send.md +12 -9
  39. package/skills/ae-analysis/references/dashboard_daily_report_send_status.md +22 -0
  40. package/skills/ae-analysis/references/dashboard_daily_report_update.md +13 -6
  41. package/skills/ae-analysis/references/drilldown_user_events_export.md +5 -0
  42. package/skills/ae-analysis/references/drilldown_user_events_run.md +6 -0
  43. package/skills/ae-analysis/references/super_metadata_batch_create.md +29 -0
  44. package/skills/ae-analysis/references/super_metadata_batch_edit.md +24 -0
  45. package/skills/ae-engage/SKILL.md +32 -5
  46. package/skills/ae-engage/references/activity-topic.md +34 -1
  47. package/skills/ae-engage/references/add-channel.md +2 -3
  48. package/skills/ae-engage/references/build-task-save-guide.md +17 -3
  49. package/skills/ae-engage/references/channel-detail.md +2 -3
  50. package/skills/ae-engage/references/channel-list.md +2 -5
  51. package/skills/ae-engage/references/channel-mgmt.md +17 -2
  52. package/skills/ae-engage/references/channel-test-send.md +1 -1
  53. package/skills/ae-engage/references/channel-update-config.md +1 -1
  54. package/skills/ae-engage/references/delete-channel.md +2 -3
  55. package/skills/ae-engage/references/save-flow.md +6 -3
  56. package/skills/ae-engage/references/save-task.md +12 -15
  57. package/skills/ae-engage/references/scene-config-channel.md +28 -4
  58. package/skills/ae-engage/references/scene-config-group.md +1 -1
  59. package/skills/ae-engage/references/scene-config-item.md +1 -1
  60. package/skills/ae-engage/references/scene-config-metric.md +1 -1
  61. package/skills/ae-engage/references/scene-config-param.md +1 -1
  62. package/skills/ae-engage/references/scene-preset-metric.md +1 -1
  63. package/skills/ae-engage/references/scene-strategy-audience.md +680 -0
  64. package/skills/ae-engage/references/scene-strategy.md +16 -1
  65. package/skills/ae-engage/references/scene-template.md +1 -1
  66. package/skills/ae-engage/references/update-channel-status.md +2 -3
  67. package/skills/ae-system/SKILL.md +357 -0
  68. package/skills/ae-analysis/references/alert_definition_schema_get.md +0 -24
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  printError,
7
7
  printOutput
8
- } from "./chunk-IMMGMU54.js";
8
+ } from "./chunk-JTKMDN4A.js";
9
9
  import "./chunk-E7UXXHO3.js";
10
10
  import "./chunk-IR4ZLVPW.js";
11
11
  import "./chunk-V6FR6WTW.js";
@@ -0,0 +1,101 @@
1
+ import {
2
+ AE_CLI_SKILLS_REPO,
3
+ OPEN_SOURCE_AE_CLI_PACKAGE,
4
+ fetchCliConfig,
5
+ getCachedCompatForHost,
6
+ printError,
7
+ printOutput
8
+ } from "./chunk-JTKMDN4A.js";
9
+ import {
10
+ peekCliToken
11
+ } from "./chunk-E7UXXHO3.js";
12
+ import "./chunk-IR4ZLVPW.js";
13
+ import {
14
+ getActiveHost,
15
+ normalizeUrl
16
+ } from "./chunk-V6FR6WTW.js";
17
+ import "./chunk-LYVNONC4.js";
18
+
19
+ // src/commands/update.ts
20
+ import { spawnSync } from "child_process";
21
+ var HOST_OPTION_DESC = "Override active AE host URL (e.g., https://ta.thinkingdata.cn)";
22
+ var SEMVER_RE = /^\d+\.\d+\.\d+(?:[-+].*)?$/;
23
+ function registerUpdate(program) {
24
+ program.command("update").description("Install the ae-cli and Skills version required by the current AE host").option("--host <url>", HOST_OPTION_DESC).option("--target <version>", "Install a specific ae-cli version instead of reading the active host").action(async (opts) => {
25
+ const target = await resolveTargetVersion(program, opts);
26
+ if (!target) return;
27
+ const host = resolveUpdateHost(program, opts);
28
+ const plan = buildUpdatePlan(target, host);
29
+ if (program.opts().dryRun) {
30
+ await printOutput({ action: "update", dryRun: true, ...plan }, program.opts().format || "json", program.opts().jq);
31
+ return;
32
+ }
33
+ runCommand("npm", ["i", "-g", `${OPEN_SOURCE_AE_CLI_PACKAGE}@${target}`]);
34
+ runCommand("npx", ["skills", "add", `${AE_CLI_SKILLS_REPO}#v${target}`, "-g", "-y"]);
35
+ await printOutput({ action: "update", dryRun: false, ...plan }, program.opts().format || "json", program.opts().jq);
36
+ });
37
+ }
38
+ async function resolveTargetVersion(program, opts) {
39
+ if (opts.target) {
40
+ return validateTarget(opts.target);
41
+ }
42
+ const host = resolveUpdateHost(program, opts);
43
+ if (!host) {
44
+ failUpdate("No AE host configured.", "Run: ae-cli config set-host <url>, or pass --target <version>.");
45
+ return null;
46
+ }
47
+ const token = peekCliToken(host);
48
+ if (token) {
49
+ const remote = await fetchCliConfig(host, token);
50
+ if (remote?.aeCliVersion) {
51
+ return validateTarget(remote.aeCliVersion);
52
+ }
53
+ }
54
+ const cached = getCachedCompatForHost(host);
55
+ if (cached?.expectedVersion) {
56
+ return validateTarget(cached.expectedVersion);
57
+ }
58
+ failUpdate(
59
+ "Could not determine the ae-cli version required by this host.",
60
+ "Run: ae-cli auth login --host <url>, or pass --target <version>."
61
+ );
62
+ return null;
63
+ }
64
+ function validateTarget(version) {
65
+ const target = version.trim().replace(/^v/i, "");
66
+ if (!SEMVER_RE.test(target)) {
67
+ failUpdate(`Invalid target version: ${version}`, "Expected semver like 6.0.34 or 6.1.6.");
68
+ return null;
69
+ }
70
+ return target;
71
+ }
72
+ function resolveUpdateHost(program, opts) {
73
+ const raw = opts.host || program.opts().host || getActiveHost();
74
+ return raw ? normalizeUrl(raw) : void 0;
75
+ }
76
+ function buildUpdatePlan(target, host) {
77
+ return {
78
+ target,
79
+ ...host ? { host } : {},
80
+ commands: [
81
+ `npm i -g ${OPEN_SOURCE_AE_CLI_PACKAGE}@${target}`,
82
+ `npx skills add ${AE_CLI_SKILLS_REPO}#v${target} -g -y`
83
+ ]
84
+ };
85
+ }
86
+ function runCommand(command, args) {
87
+ const result = spawnSync(command, args, { stdio: "inherit" });
88
+ if (result.error) {
89
+ throw result.error;
90
+ }
91
+ if (result.status !== 0) {
92
+ process.exit(result.status ?? 1);
93
+ }
94
+ }
95
+ function failUpdate(message, hint) {
96
+ printError("config", message, hint);
97
+ process.exitCode = 1;
98
+ }
99
+ export {
100
+ registerUpdate
101
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkingai/ae-cli",
3
- "version": "6.1.7",
3
+ "version": "6.1.8",
4
4
  "description": "CLI tool for ThinkingAI (AE) analytics platform",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,6 +40,7 @@
40
40
  "verify:experiment-tools": "node scripts/verify-te-experiment-tools.mjs && node --import tsx test/experiment/experiment-capability-command.test.mjs",
41
41
  "verify:team-tools": "node scripts/verify-te-team-tools.mjs",
42
42
  "verify:agent-tools": "node scripts/verify-agent-tools.mjs && npm run verify:sandbox-tools",
43
+ "verify:system-tools": "node scripts/verify-system-tools.mjs && npx tsx tests/system-domain.test.ts && npx tsx tests/sandbox-tool-package.test.ts",
43
44
  "verify:sandbox-tools": "tsx test/sandbox-tools.test.ts",
44
45
  "verify:tracking-tools": "node test/tracking-client.test.mjs && node test/tracking-skill-flow.test.mjs && node test/tracking-commands.test.mjs",
45
46
  "verify:self-check-overlay": "node test/self-check-overlay.test.mjs",
@@ -69,6 +70,7 @@
69
70
  },
70
71
  "dependencies": {
71
72
  "@types/json-bigint": "^1.0.4",
73
+ "archiver": "^5.3.2",
72
74
  "cli-table3": "^0.6.5",
73
75
  "commander": "^12.1.0",
74
76
  "exceljs": "^4.4.0",
@@ -80,9 +82,11 @@
80
82
  "xlsx": "^0.18.5"
81
83
  },
82
84
  "devDependencies": {
85
+ "@types/archiver": "^5.3.4",
83
86
  "@types/node": "^22.0.0",
84
87
  "@types/turndown": "^5.0.6",
85
88
  "@types/ws": "^8.5.0",
89
+ "jszip": "^3.10.1",
86
90
  "mysql2": "^3.22.6",
87
91
  "tsup": "^8.0.0",
88
92
  "tsx": "^4.0.0",
@@ -13,6 +13,7 @@ Domain: **Automations / write**
13
13
  - `--name` and `--message` are required.
14
14
  - A schedule is required: provide either `--cron` or a `--schedule-kind` (with its time/day fields). `--cron` and `--schedule-kind` are mutually exclusive.
15
15
  - `--agent-id` and `--agent-name` are mutually exclusive. Obtain a real Agent ID via `+list-agents` — do not guess.
16
+ - In a chat runtime, omitted `--conversation-id`, `--agent-id`, and `--model` values fall back to `TE_AGENT_CONVERSATION_ID`, `TE_AGENT_CURRENT_AGENT_ID`, and `TE_AGENT_CURRENT_MODEL_ID`. Explicit flags always take precedence; `--agent-name` intentionally suppresses the current Agent ID fallback.
16
17
  - JSON flags must be valid JSON strings, usually wrapped in single quotes in shell.
17
18
  - This is an ordinary `write` operation and does not require CLI confirmation.
18
19
  - Do not surface raw automation IDs, raw JSON, or concrete detail paths in user-facing replies.
@@ -29,7 +29,7 @@ Use this skill for these CLI services:
29
29
  - `analysis-meta`: gateway metadata assets, events, properties, virtual metadata, metrics, data tables, exchange rules, and super metadata.
30
30
  - `analysis-governance`: gateway asset governance operations, including governed asset lists/exports, lineage, dependency, impact, query history, rule schema/list/create/update/delete, batch asset actions, and operation records. Use this service for asset governance workflows, not for metadata event/property/metric CRUD.
31
31
  - `tracking`: gateway tracking plan, checking, ingest, live-data, and event blacklist operations.
32
- - `analysis_meta`: legacy metadata batch operations not yet covered by gateway commands.
32
+ - `analysis_meta`: legacy MCP metadata commands. Prefer `analysis-meta` gateway commands whenever the generated index contains the needed operation.
33
33
 
34
34
  For metadata gateway detail outside the commands in the generated index, use the metadata skill. For Engage, DataOps, or Community work, use the corresponding skill.
35
35
 
@@ -12,7 +12,7 @@ ae-cli analysis alert create [options]
12
12
 
13
13
  Capability id: `analysis.alert.create`
14
14
 
15
- Input sends `project_id` and `definition`. Do not send camelCase aliases.
15
+ Input sends `project_id` and `definition_request`. Do not send camelCase aliases.
16
16
 
17
17
  Output is the capability gateway envelope: success is `ok=true,data,meta`; failure is `ok=false,error`. Export commands return lifecycle data such as `run_id` and `artifact_id` for inspect/download.
18
18
 
@@ -21,5 +21,4 @@ Parameters:
21
21
  | Parameter | Description | Required |
22
22
  | --- | --- | --- |
23
23
  | `--project-id` | See command help | Yes |
24
- | `--definition` | See command help | Yes |
25
-
24
+ | `--definition-request` | See command help | Yes |
@@ -12,7 +12,7 @@ ae-cli analysis alert update [options]
12
12
 
13
13
  Capability id: `analysis.alert.update`
14
14
 
15
- Input sends `project_id`, `alert_id`, and `definition`. Do not send camelCase aliases.
15
+ Input sends `project_id`, `alert_id`, and `definition_request`. Do not send camelCase aliases.
16
16
 
17
17
  Output is the capability gateway envelope: success is `ok=true,data,meta`; failure is `ok=false,error`. Export commands return lifecycle data such as `run_id` and `artifact_id` for inspect/download.
18
18
 
@@ -22,5 +22,4 @@ Parameters:
22
22
  | --- | --- | --- |
23
23
  | `--project-id` | See command help | Yes |
24
24
  | `--alert-id` | See command help | Yes |
25
- | `--definition` | See command help | Yes |
26
-
25
+ | `--definition-request` | See command help | Yes |
@@ -114,12 +114,14 @@ Prefer the run/artifact commands over hand-written HTTP, Python, or curl. Analys
114
114
  | `query cancel` | `analysis.query.cancel` | Cancel gateway run/export | `--run-id`, optional `--reason` | Cancellation result |
115
115
  | `dashboard-definition export` | `analysis.dashboard_definition.export` | Export dashboard definition JSON | `--dashboard-id`, `--dashboard-ids`, `--dashboard-folder-ids`, `--shared-spaces`, or `--payload` | Definition JSON |
116
116
  | `dashboard-definition import` | `analysis.dashboard_definition.import` | Validate/import dashboard definition | `--definition`, optional `--validate-only true` | Validation or import result |
117
- | `dashboard-daily-report update` | `analysis.dashboard_daily_report.update` | Update daily report config; defaults are sent when `--payload` is absent | `--dashboard-id`, optional config flags or `--payload` | Config result |
118
- | `dashboard-daily-report send` | `analysis.dashboard_daily_report.send` | Send daily report immediately; no config flags means use saved config, missing saved config fails | `--dashboard-id`, optional config flags or `--payload` | Async send result |
117
+ | `dashboard-daily-report get` | `analysis.dashboard_daily_report.get` | Get one saved daily report config with secrets and webhook URLs redacted | `--dashboard-id` | Config state |
118
+ | `dashboard-daily-report update` | `analysis.dashboard_daily_report.update` | Patch-style create or update; omitted fields remain unchanged | `--dashboard-id`, optional config flags or `--payload` | Config result |
119
+ | `dashboard-daily-report send` | `analysis.dashboard_daily_report.send` | Send immediately; destination fields infer channels, omission reuses saved destinations | `--dashboard-id`, optional destination/content flags or `--payload` | Async task ID |
120
+ | `dashboard-daily-report send-status` | `analysis.dashboard_daily_report.send_status` | Inspect one immediate-send task and per-channel outcome | `--task-id` | Send task status |
119
121
  | `bi-panel list` | `analysis.bi_panel.list` | Find accessible BI panels | `--project-id`, optional list filters | Paginated BI panel summaries |
120
122
  | `bi-panel get` | `analysis.bi_panel.get` | Inspect released BI panel page structure only | `--panel-id`, optional `--fields` | Panel structure |
121
- | `bi-panel create` | `analysis.bi_panel.create` | Create a BI panel | optional `--panel-name`, `--payload` | Created panel |
122
- | `bi-panel update` | `analysis.bi_panel.update` | Update BI panel content/metadata | optional `--payload` | Update result |
123
+ | `bi-panel create` | `analysis.bi_panel.create` | Create an empty BI panel shell | required `--panel-name`; optional destination IDs | Created shell identifiers |
124
+ | `bi-panel update` | `analysis.bi_panel.update` | Rename a BI panel without changing content | required `--panel-uuid`, `--panel-name` | Rename result |
123
125
  | `bi-panel delete` | `analysis.bi_panel.delete` | Delete BI panels | `--panel-ids '[...]'` | Delete result |
124
126
  | `bi-panel share` | `analysis.bi_panel.share` | Modify BI panel sharing | `--panel-id`, `--payload` | Share update result |
125
127
  | `bi-panel copy` | `analysis.bi_panel.copy` | Copy a BI panel | optional source/target flags and `--payload` | Copied panel |
@@ -1,15 +1,23 @@
1
1
  # analysis bi-panel create
2
2
 
3
- Use when the user explicitly wants to create the product's BI dashboard (`仪表盘`), including requests phrased as `BI 仪表盘`.
3
+ Use when the user explicitly wants to create a BI dashboard (`仪表盘`) as an empty shell, including requests phrased as `BI 仪表盘`.
4
4
 
5
5
  Do not use for an analysis board (`看板`); use `analysis dashboard create` instead. Do not use to copy an existing BI dashboard; use `bi-panel copy`.
6
6
 
7
+ This first-version capability creates an empty BI-dashboard shell only. It does
8
+ not create pages, charts, worksheets, draft content, or released content.
9
+ Use `bi-panel copy` when the new BI dashboard should inherit an existing
10
+ released definition. The CLI does not currently expose draft-content writes.
11
+
7
12
  Command:
8
13
 
9
14
  ```bash
10
- ae-cli analysis bi-panel create --project-id <project_id> [--panel-name <name>] [--panel-uuid <uuid>] [--space-id <space_id>] [--folder-id <folder_id>] [--payload '{...}']
15
+ ae-cli analysis bi-panel create --project-id <project_id> --panel-name <name> [--space-id <space_id>] [--folder-id <folder_id>]
11
16
  ```
12
17
 
13
- Input sends `project_id` plus optional BI panel identifiers, target IDs, and `payload`.
18
+ Input sends required `project_id` and `panel_name`, plus optional target
19
+ `space_id` and `folder_id`.
14
20
 
15
- Output is the gateway envelope. `data` contains the created BI-dashboard result.
21
+ Output is the gateway envelope. `data` contains the created BI-dashboard shell
22
+ identifier. Released-only reads and page-data queries remain unavailable until
23
+ content is created and released through another supported producer.
@@ -1,18 +1,21 @@
1
1
  # analysis bi-panel update
2
2
 
3
- Use when the user wants to update BI panel content or metadata.
3
+ Use only when the user wants to rename a BI dashboard.
4
4
 
5
- Do not use this command to verify draft content or publish a draft. `bi-panel get`
6
- reads only the released/queryable version. Use `bi-panel-version get` to inspect
7
- `release` or `draft`, and `bi-panel-version publish` to publish a matching draft
8
- `source_version`.
5
+ This first-version capability does not modify pages, charts, worksheets, draft
6
+ content, or released content. Do not use it as a content-update command.
7
+
8
+ `bi-panel get` reads only the released/queryable version. If another product
9
+ entry point has created a draft, use
10
+ `bi-panel-version get --version-type draft` to inspect it and
11
+ `bi-panel-version publish` to publish its matching `source_version`.
9
12
 
10
13
  Command:
11
14
 
12
15
  ```bash
13
- ae-cli analysis bi-panel update --project-id <project_id> [--panel-name <name>] [--panel-uuid <uuid>] [--payload '{...}']
16
+ ae-cli analysis bi-panel update --project-id <project_id> --panel-uuid <uuid> --panel-name <new_name>
14
17
  ```
15
18
 
16
- Input sends `project_id`, optional `panel_name`, `panel_uuid`, and `payload`.
19
+ Input sends required `project_id`, `panel_uuid`, and new `panel_name`.
17
20
 
18
- Output is the gateway envelope. `data` contains the update result.
21
+ Output is the gateway envelope. `data.updated=true` confirms the rename.
@@ -3,7 +3,9 @@
3
3
  Use when the user wants to publish the current BI panel draft so `bi-panel get`
4
4
  and BI page-data queries can read it as a released/queryable version.
5
5
 
6
- Do not use this command blindly after `bi-panel update`. First inspect the draft with
6
+ `bi-panel update` only renames the BI dashboard and does not create a draft.
7
+ Do not call this command unless another supported producer has created draft
8
+ content. First inspect that draft with
7
9
  `bi-panel-version get --version-type draft` and use the returned `data.version`
8
10
  as `--source-version`. The gateway rejects stale `source_version` values.
9
11
 
@@ -8,25 +8,24 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
8
8
  |---|---|---|---|---|
9
9
  | `ae-cli analysis adhoc export` | analysis.adhoc.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--model-type` (string; required) — Supported AI-facing model_type values, 12 total. 9 common models: event (event analysis), retention (retention analysis), funnel (funnel conversion), distribution (distribution analysis), attribution (attribution analysis), interval (interval analysis), path (path analysis), prop_analysis (property analysis), sql (SQL analysis). 3 scenario models: heat_map (heat map analysis), rank_list (ranking analysis), revenue (revenue analysis). Tags and cohorts/clusters are separate capabilities and are not ad-hoc model_type values.<br>`--definition` (json; required) — AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. For path definitions, global filters support user_property, cluster, and tag only; event_property is not supported. session_unit accepts second (1..999), minute (1..999), or hour (1..24). Do not use day; express one day as session_interval=24 and session_unit=hour. For SQL, a simple query is {"sql":"select ..."}; raw variables use ${name}, while typed params use ${Text:name}, ${Selector:name}, or ${PartDate:name}. PartDate expands to a complete predicate, so write WHERE ${PartDate:d}, not a column followed by the placeholder. A part_date parameter may set boolean use_timezone; it defaults to false and controls whether that parameter uses the query effective timezone. Selector value must match one options[].value. Trino identifiers containing #, $, @, spaces, or punctuation must be delimited with double quotes, for example SELECT "#user_id", "$part_event" FROM ...; single quotes are string literals. Queries against an event table must include a date-partition predicate on the quoted "$part_date" column, for example WHERE "$part_date" BETWEEN '2026-07-01' AND '2026-07-07'; the backend rejects event-table SQL without it. The CLI preserves SQL text and never auto-quotes identifiers.<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted.<br>`--use-cache` (boolean; optional) — Whether to use query cache. Default: true.<br>`--zone-offset` (number; optional) — Optional timezone mode. Fixed UTC offsets are -12..14; 99 means stored local time without fixed UTC conversion (not UTC+99). Omit to use the project analysis default.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--cluster-query-scope` (string; optional) — Optional physical query routing: GLOBAL aggregates accessible query clusters; SLAVE targets one --slave-cluster-id. Omit for the surface default.<br>`--slave-cluster-id` (string; optional) — Physical slave query-cluster ID from analysis query-cluster list. Required only with --cluster-query-scope SLAVE.<br>`--artifact-format` (string; optional) — Logical artifact format, usually jsonl or csv. This does not select compression; read format, compression, file_name, content_type, and content_encoding from the returned descriptor.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Async runtime in seconds. Default and max: 21600 (6 hours); cancel earlier with analysis query cancel --run-id <run_id>. | [adhoc_export.md](adhoc_export.md) |
10
10
  | `ae-cli analysis adhoc run` | analysis.adhoc.run | read | `--project-id` (number; required) — Numeric project ID.<br>`--model-type` (string; required) — Supported AI-facing model_type values, 12 total. 9 common models: event (event analysis), retention (retention analysis), funnel (funnel conversion), distribution (distribution analysis), attribution (attribution analysis), interval (interval analysis), path (path analysis), prop_analysis (property analysis), sql (SQL analysis). 3 scenario models: heat_map (heat map analysis), rank_list (ranking analysis), revenue (revenue analysis). Tags and cohorts/clusters are separate capabilities and are not ad-hoc model_type values.<br>`--definition` (json; required) — AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. For path definitions, global filters support user_property, cluster, and tag only; event_property is not supported. session_unit accepts second (1..999), minute (1..999), or hour (1..24). Do not use day; express one day as session_interval=24 and session_unit=hour. For SQL, a simple query is {"sql":"select ..."}; raw variables use ${name}, while typed params use ${Text:name}, ${Selector:name}, or ${PartDate:name}. PartDate expands to a complete predicate, so write WHERE ${PartDate:d}, not a column followed by the placeholder. A part_date parameter may set boolean use_timezone; it defaults to false and controls whether that parameter uses the query effective timezone. Selector value must match one options[].value. Trino identifiers containing #, $, @, spaces, or punctuation must be delimited with double quotes, for example SELECT "#user_id", "$part_event" FROM ...; single quotes are string literals. Queries against an event table must include a date-partition predicate on the quoted "$part_date" column, for example WHERE "$part_date" BETWEEN '2026-07-01' AND '2026-07-07'; the backend rejects event-table SQL without it. The CLI preserves SQL text and never auto-quotes identifiers.<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted.<br>`--use-cache` (boolean; optional) — Whether to use query cache. Default: true.<br>`--zone-offset` (number; optional) — Optional timezone mode. Fixed UTC offsets are -12..14; 99 means stored local time without fixed UTC conversion (not UTC+99). Omit to use the project analysis default.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--cluster-query-scope` (string; optional) — Optional physical query routing: GLOBAL aggregates accessible query clusters; SLAVE targets one --slave-cluster-id. Omit for the surface default.<br>`--slave-cluster-id` (string; optional) — Physical slave query-cluster ID from analysis query-cluster list. Required only with --cluster-query-scope SLAVE.<br>`--limit` (number; optional, min=1, max=1000) — Maximum inline rows for sync query results. Default: 100, max: 1000. Use export for full data.<br>`--timeout-seconds` (number; optional, min=1, max=180) — Sync timeout seconds. Default: 120, max: 180. | [adhoc_run.md](adhoc_run.md) |
11
- | `ae-cli analysis alert create` | analysis.alert.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--definition` (json; required) — Alert definition JSON object using snake_case field names. Read alert-definition-schema get first. | [alert_create.md](alert_create.md) |
11
+ | `ae-cli analysis alert create` | analysis.alert.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--definition-request` (json; required) — Structured alert definition request JSON object using snake_case field names. | [alert_create.md](alert_create.md) |
12
12
  | `ae-cli analysis alert delete` | analysis.alert.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--alert-id` (number; required) — Alert task ID. | [alert_delete.md](alert_delete.md) |
13
13
  | `ae-cli analysis alert get` | analysis.alert.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--alert-id` (number; required) — Alert task ID. | [alert_get.md](alert_get.md) |
14
14
  | `ae-cli analysis alert list` | analysis.alert.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--query` (string; optional) — Optional keyword filter.<br>`--limit` (number; optional, min=1, max=200) — Page size. Default: 50, max: 200.<br>`--offset` (number; optional) — Optional zero-based result offset. | [alert_list.md](alert_list.md) |
15
15
  | `ae-cli analysis alert start` | analysis.alert.start | write | `--project-id` (number; required) — Numeric project ID.<br>`--alert-id` (number; required) — Alert task ID. | [alert_start.md](alert_start.md) |
16
16
  | `ae-cli analysis alert stop` | analysis.alert.stop | write | `--project-id` (number; required) — Numeric project ID.<br>`--alert-id` (number; required) — Alert task ID. | [alert_stop.md](alert_stop.md) |
17
- | `ae-cli analysis alert update` | analysis.alert.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--alert-id` (number; required) — Alert task ID.<br>`--definition` (json; required) — Alert definition JSON object using snake_case field names. Read alert-definition-schema get first. | [alert_update.md](alert_update.md) |
18
- | `ae-cli analysis alert-definition-schema get` | analysis.alert_definition_schema.get | read | None | [alert_definition_schema_get.md](alert_definition_schema_get.md) |
17
+ | `ae-cli analysis alert update` | analysis.alert.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--alert-id` (number; required) — Alert task ID.<br>`--definition-request` (json; required) — Structured alert definition request JSON object using snake_case field names. | [alert_update.md](alert_update.md) |
19
18
  | `ae-cli analysis alert-detail list` | analysis.alert_detail.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--alert-id` (number; required) — Alert task ID.<br>`--start-time` (string; optional) — Optional alert detail start time.<br>`--end-time` (string; optional) — Optional alert detail end time. | [alert_detail_list.md](alert_detail_list.md) |
20
19
  | `ae-cli analysis alert-job list` | analysis.alert_job.list | read | `--project-id` (number; required) — Numeric project ID. | [alert_job_list.md](alert_job_list.md) |
21
20
  | `ae-cli analysis alert-notice-config list` | analysis.alert_notice_config.list | read | `--project-id` (number; required) — Numeric project ID. | [alert_notice_config_list.md](alert_notice_config_list.md) |
22
21
  | `ae-cli analysis artifact download` | gateway lifecycle | read | `--run-id` (string; required) — Async run ID returned by an export capability.<br>`--artifact-id` (string; required) — Artifact ID returned by the same export capability.<br>`--output` (string; required) — Local output file path. Use a file path, not a directory. | [artifact_download.md](artifact_download.md) |
23
22
  | `ae-cli analysis bi-panel copy` | analysis.bi_panel.copy | write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-name` (string; optional) — New BI panel name.<br>`--panel-uuid` (string; optional) — Source BI panel UUID.<br>`--space-id` (number; optional) — Target project space ID.<br>`--folder-id` (number; optional) — Target folder ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [bi_panel_copy.md](bi_panel_copy.md) |
24
- | `ae-cli analysis bi-panel create` | analysis.bi_panel.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-name` (string; optional) — BI dashboard name.<br>`--panel-uuid` (string; optional) BI panel UUID.<br>`--space-id` (number; optional) — Target project space ID.<br>`--folder-id` (number; optional) — Target folder ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [bi_panel_create.md](bi_panel_create.md) |
23
+ | `ae-cli analysis bi-panel create` | analysis.bi_panel.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-name` (string; required) — Name for the new empty BI dashboard shell.<br>`--space-id` (number; optional) — Target project space ID.<br>`--folder-id` (number; optional) — Target folder ID. | [bi_panel_create.md](bi_panel_create.md) |
25
24
  | `ae-cli analysis bi-panel delete` | analysis.bi_panel.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-ids` (json; required) — BI panel ID array. | [bi_panel_delete.md](bi_panel_delete.md) |
26
25
  | `ae-cli analysis bi-panel get` | analysis.bi_panel.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--panel-id` (number; required) — BI panel ID.<br>`--fields` (json; optional) — Optional result field projection JSON array. | [bi_panel_get.md](bi_panel_get.md) |
27
26
  | `ae-cli analysis bi-panel list` | analysis.bi_panel.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--query` (string; optional) — Optional keyword filter.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--limit` (number; optional, min=1, max=200) — Directory page size. Default: 50, max: 200. Values outside 1..200 are rejected.<br>`--offset` (number; optional) — Optional zero-based result offset. | [bi_panel_list.md](bi_panel_list.md) |
28
27
  | `ae-cli analysis bi-panel share` | analysis.bi_panel.share | write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-id` (number; required) — BI panel ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [bi_panel_share.md](bi_panel_share.md) |
29
- | `ae-cli analysis bi-panel update` | analysis.bi_panel.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-name` (string; optional) — BI panel name.<br>`--panel-uuid` (string; optional) — BI panel UUID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [bi_panel_update.md](bi_panel_update.md) |
28
+ | `ae-cli analysis bi-panel update` | analysis.bi_panel.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-name` (string; required) — New BI dashboard name.<br>`--panel-uuid` (string; required) — BI dashboard UUID. | [bi_panel_update.md](bi_panel_update.md) |
30
29
  | `ae-cli analysis bi-panel-page-data export` | analysis.bi_panel_page_data.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--panel-id` (number; required) — BI panel ID.<br>`--page-key` (string; required) — Page key returned by bi-panel get.<br>`--result-type` (string; required) — Result type: charts or summary.<br>`--chart-ids` (json; optional) — Optional chart ID array.<br>`--parameter-controls` (json; optional) — Optional parameter control override array.<br>`--permission-controls` (json; optional) — Optional permission control array.<br>`--chart-filter-controls` (json; optional) — Optional chart filter control array.<br>`--columns` (json; optional) — Optional returned column array.<br>`--row-limit` (number; optional, min=1, max=1000) — BI chart row window control. Default: 100, max: 1000. This is chart paging, not the async artifact total-row policy.<br>`--row-offset` (number; optional) — Chart row offset.<br>`--block-limit` (number; optional) — Summary block limit.<br>`--block-offset` (number; optional) — Summary block offset.<br>`--use-cache` (boolean; optional) — Whether to use cache. Default: true.<br>`--request-id` (string; optional) — Optional cli_<32 lowercase hex> request ID. Generated when omitted.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Async runtime in seconds. Default and max: 21600 (6 hours); cancel earlier with analysis query cancel --run-id <run_id>.<br>`--artifact-format` (string; optional) — Artifact format. Only jsonl is supported. | [bi_panel_page_data_export.md](bi_panel_page_data_export.md) |
31
30
  | `ae-cli analysis bi-panel-page-data run` | analysis.bi_panel_page_data.run | read | `--project-id` (number; required) — Numeric project ID.<br>`--panel-id` (number; required) — BI panel ID.<br>`--page-key` (string; required) — Page key returned by bi-panel get.<br>`--result-type` (string; required) — Result type: charts or summary.<br>`--chart-ids` (json; optional) — Optional chart ID array.<br>`--parameter-controls` (json; optional) — Optional parameter control override array.<br>`--permission-controls` (json; optional) — Optional permission control array.<br>`--chart-filter-controls` (json; optional) — Optional chart filter control array.<br>`--columns` (json; optional) — Optional returned column array.<br>`--row-limit` (number; optional, min=1, max=1000) — BI chart row window control. Default: 100, max: 1000. This is chart paging, not the sync/export routing policy.<br>`--row-offset` (number; optional) — Chart row offset.<br>`--block-limit` (number; optional) — Summary block limit.<br>`--block-offset` (number; optional) — Summary block offset.<br>`--use-cache` (boolean; optional) — Whether to use cache. Default: true.<br>`--request-id` (string; optional) — Optional cli_<32 lowercase hex> request ID. Generated when omitted.<br>`--timeout-seconds` (number; optional, min=1, max=180) — Sync timeout seconds. Default: 120, max: 180.<br>`--limit` (number; optional, min=1, max=1000) — Maximum inline rows for sync query results. Default: 100, max: 1000. Use export for full data. | [bi_panel_page_data_run.md](bi_panel_page_data_run.md) |
32
31
  | `ae-cli analysis bi-panel-version get` | analysis.bi_panel_version.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--panel-id` (number; optional) — BI panel ID. Required when --panel-uuid is omitted.<br>`--panel-uuid` (string; optional) — BI panel UUID. Required when --panel-id is omitted.<br>`--version-type` (string; optional) — Version to inspect: release or draft. Default: release.<br>`--fields` (json; optional) — Optional result field projection JSON array. | [bi_panel_version_get.md](bi_panel_version_get.md) |
@@ -43,8 +42,10 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
43
42
  | `ae-cli analysis dashboard share-info` | analysis.dashboard.share_info | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID. | [dashboard_share_info.md](dashboard_share_info.md) |
44
43
  | `ae-cli analysis dashboard task-status` | analysis.dashboard.task_status | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID. | [dashboard_task_status.md](dashboard_task_status.md) |
45
44
  | `ae-cli analysis dashboard update` | analysis.dashboard.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--operation` (string; required) — Update operation: settings or note-upsert.<br>`--dashboard-id` (number; optional) — Dashboard ID for a single-dashboard update.<br>`--dashboard-ids` (json; optional) — Dashboard ID array for batch settings updates.<br>`--dashboard-name` (string; optional) — Dashboard name for single rename.<br>`--zone-offset` (number; optional) — Fixed dashboard time zone offset in hours. For example, UTC+8 is 8 and UTC-5 is -5. Valid range: -12 to 14.<br>`--refresh-type` (number; optional, min=0, max=1) — Dashboard refresh type: 0 real-time, 1 scheduled.<br>`--dashboard-status` (string; optional) — Dashboard status: normal or freeze.<br>`--note-id` (number; optional) — Dashboard note ID. Omit to create a new note.<br>`--note-title` (string; optional) — Dashboard note title.<br>`--description` (string; optional) — Dashboard note description.<br>`--ui-config` (string; optional) — Dashboard or note UI config string.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_update.md](dashboard_update.md) |
46
- | `ae-cli analysis dashboard-daily-report send` | analysis.dashboard_daily_report.send | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--need-csv` (boolean; optional) — Whether to include CSV attachment.<br>`--host-url` (string; optional) — Public host URL used in report links.<br>`--enable-smtp` (boolean; optional) — Whether to use configured SMTP for email.<br>`--enable-email` (boolean; optional) — Whether to send by email.<br>`--enable-dd` (boolean; optional) — Whether to send by DingTalk webhook.<br>`--dd-url` (json; optional) — DingTalk webhook URL array, e.g. ["https://..."].<br>`--enable-wx` (boolean; optional) — Whether to send by WeCom webhook.<br>`--wx-url` (json; optional) — WeCom webhook URL array, e.g. ["https://..."].<br>`--enable-feishu` (boolean; optional) — Whether to send by Feishu webhook.<br>`--feishu-info` (json; optional) — Required with --enable-feishu true. Feishu image upload and bot config, e.g. {"app_id":"cli_xxx","app_secret":"secret_xxx","webhook":["https://..."]}. app_secret is sensitive.<br>`--enable-kim` (boolean; optional) — Whether to send by KIM/custom webhook.<br>`--kim-url` (json; optional) — KIM/custom webhook URL array, e.g. ["https://..."].<br>`--enable-slack` (boolean; optional) — Whether to send by Slack webhook.<br>`--slack-url` (json; optional) — Slack webhook URL array, e.g. ["https://..."].<br>`--email-login-users` (string; optional) — Comma-separated login users for email channel.<br>`--email-new` (string; optional) — Comma-separated external emails when SMTP is enabled.<br>`--send-title` (string; optional) — Daily report title.<br>`--send-content` (string; optional) — Daily report content.<br>`--send-date` (string; optional) — Scheduled weekdays, comma-separated 1..7.<br>`--send-time` (string; optional) — Scheduled send time, HH:mm.<br>`--lang` (string; optional) — Report language.<br>`--screen-type` (string; optional) — Screenshot screen type.<br>`--zone-offset` (number; optional) — Time zone offset.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_daily_report_send.md](dashboard_daily_report_send.md) |
47
- | `ae-cli analysis dashboard-daily-report update` | analysis.dashboard_daily_report.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--need-csv` (boolean; optional) — Whether to include CSV attachment. Default: false.<br>`--host-url` (string; optional) — Public host URL used in report links. Default: empty.<br>`--enable-smtp` (boolean; optional) — Whether to use configured SMTP for email. Default: false.<br>`--enable-email` (boolean; optional) — Whether to send by email. Default: false.<br>`--enable-dd` (boolean; optional) — Whether to send by DingTalk webhook. Default: false.<br>`--dd-url` (json; optional) — DingTalk webhook URL array, e.g. ["https://..."].<br>`--enable-wx` (boolean; optional) — Whether to send by WeCom webhook. Default: false.<br>`--wx-url` (json; optional) — WeCom webhook URL array, e.g. ["https://..."].<br>`--enable-feishu` (boolean; optional) — Whether to send by Feishu webhook. Default: false.<br>`--feishu-info` (json; optional) — Required with --enable-feishu true. Feishu image upload and bot config, e.g. {"app_id":"cli_xxx","app_secret":"secret_xxx","webhook":["https://..."]}. app_secret is sensitive.<br>`--enable-kim` (boolean; optional) — Whether to send by KIM/custom webhook. Default: false.<br>`--kim-url` (json; optional) — KIM/custom webhook URL array, e.g. ["https://..."].<br>`--enable-slack` (boolean; optional) — Whether to send by Slack webhook. Default: false.<br>`--slack-url` (json; optional) — Slack webhook URL array, e.g. ["https://..."].<br>`--email-login-users` (string; optional) — Comma-separated login users for email channel.<br>`--email-new` (string; optional) — Comma-separated external emails when SMTP is enabled.<br>`--send-title` (string; optional) — Daily report title.<br>`--send-content` (string; optional) — Daily report content.<br>`--send-date` (string; optional) — Scheduled weekdays, comma-separated 1..7. Default: 1,2,3,4,5,6,7.<br>`--send-time` (string; optional) — Scheduled send time, HH:mm. Default: 09:00.<br>`--lang` (string; optional) — Report language. Default: zh-CN.<br>`--screen-type` (string; optional) — Screenshot screen type. Default: normal.<br>`--zone-offset` (number; optional) — Time zone offset. Default: 0.<br>`--enable-send` (boolean; optional) — Whether to enable scheduled sending. Default: false.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_daily_report_update.md](dashboard_daily_report_update.md) |
45
+ | `ae-cli analysis dashboard-daily-report get` | analysis.dashboard_daily_report.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID. | [dashboard_daily_report_get.md](dashboard_daily_report_get.md) |
46
+ | `ae-cli analysis dashboard-daily-report send` | analysis.dashboard_daily_report.send | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--need-csv` (boolean; optional) — Whether to include CSV attachment.<br>`--host-url` (string; optional) — Public host URL used in report links.<br>`--send-title` (string; optional) — Daily report title.<br>`--send-content` (string; optional) Daily report content.<br>`--lang` (string; optional) — Report language.<br>`--screen-type` (string; optional) Screenshot screen type.<br>`--zone-offset` (number; optional) — Time zone offset.<br>`--email-login-users` (string; optional) — Comma-separated login users for email.<br>`--email-new` (string; optional) — Comma-separated direct email addresses. The server selects company SMTP or the default mail service.<br>`--dd-url` (json; optional) — DingTalk webhook URL array, e.g. ["https://..."].<br>`--wx-url` (json; optional) — WeCom webhook URL array, e.g. ["https://..."].<br>`--feishu-info` (json; optional) — Feishu image upload and bot config, e.g. {"app_id":"cli_xxx","app_secret":"secret_xxx","webhook":["https://..."]}.<br>`--kim-url` (json; optional) — KIM/custom webhook URL array, e.g. ["https://..."].<br>`--slack-url` (json; optional) — Slack webhook URL array, e.g. ["https://..."].<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_daily_report_send.md](dashboard_daily_report_send.md) |
47
+ | `ae-cli analysis dashboard-daily-report send-status` | analysis.dashboard_daily_report.send_status | read | `--project-id` (number; required) — Numeric project ID.<br>`--task-id` (number; required) — Task ID returned by dashboard-daily-report send. | [dashboard_daily_report_send_status.md](dashboard_daily_report_send_status.md) |
48
+ | `ae-cli analysis dashboard-daily-report update` | analysis.dashboard_daily_report.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--need-csv` (boolean; optional) — Whether to include CSV attachment.<br>`--host-url` (string; optional) — Public host URL used in report links.<br>`--send-title` (string; optional) — Daily report title.<br>`--send-content` (string; optional) — Daily report content.<br>`--lang` (string; optional) — Report language.<br>`--screen-type` (string; optional) — Screenshot screen type.<br>`--zone-offset` (number; optional) — Time zone offset.<br>`--enable-email` (boolean; optional) — Whether scheduled email delivery is enabled.<br>`--enable-dd` (boolean; optional) — Whether scheduled DingTalk delivery is enabled.<br>`--enable-wx` (boolean; optional) — Whether scheduled WeCom delivery is enabled.<br>`--enable-feishu` (boolean; optional) — Whether scheduled Feishu delivery is enabled.<br>`--enable-kim` (boolean; optional) — Whether scheduled KIM delivery is enabled.<br>`--enable-slack` (boolean; optional) — Whether scheduled Slack delivery is enabled.<br>`--email-login-users` (string; optional) — Comma-separated login users for email.<br>`--email-new` (string; optional) — Comma-separated direct email addresses. The server selects company SMTP or the default mail service.<br>`--dd-url` (json; optional) — DingTalk webhook URL array, e.g. ["https://..."].<br>`--wx-url` (json; optional) — WeCom webhook URL array, e.g. ["https://..."].<br>`--feishu-info` (json; optional) — Feishu image upload and bot config, e.g. {"app_id":"cli_xxx","app_secret":"secret_xxx","webhook":["https://..."]}.<br>`--kim-url` (json; optional) — KIM/custom webhook URL array, e.g. ["https://..."].<br>`--slack-url` (json; optional) — Slack webhook URL array, e.g. ["https://..."].<br>`--send-date` (string; optional) — Scheduled weekdays, comma-separated 1..7.<br>`--send-time` (string; optional) — Scheduled send time, HH:mm.<br>`--enable-send` (boolean; optional) — Whether scheduled sending is enabled.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_daily_report_update.md](dashboard_daily_report_update.md) |
48
49
  | `ae-cli analysis dashboard-definition export` | analysis.dashboard_definition.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; optional) — Single dashboard ID to export. The gateway resolves folder or project-space context.<br>`--dashboard-ids` (json; optional) — Dashboard ID array to export. The gateway resolves folder or project-space context.<br>`--dashboard-folder-ids` (json; optional) — Private folder ID array, or advanced descriptor array: [{"dashboard_folder_id":1,"dashboard_ids":[2]}].<br>`--shared-spaces` (json; optional) — Shared space export descriptor array.<br>`--export-file-name` (string; optional) — Optional export file name.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_definition_export.md](dashboard_definition_export.md) |
49
50
  | `ae-cli analysis dashboard-definition import` | analysis.dashboard_definition.import | write | `--project-id` (number; required) — Numeric project ID.<br>`--definition` (json; required) — Dashboard definition JSON object.<br>`--validate-only` (boolean; optional) — Only validate import conflicts and importable state.<br>`--dashboard-name-conflict-policy` (string; optional) — Optional dashboard name conflict policy.<br>`--space-dashboard-policy` (string; optional) — Optional space/dashboard import policy.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_definition_import.md](dashboard_definition_import.md) |
50
51
  | `ae-cli analysis dashboard-report add` | analysis.dashboard_report.add | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--report-ids` (json; required) — Report ID array to add. | [dashboard_report_add.md](dashboard_report_add.md) |
@@ -224,6 +225,8 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
224
225
  | `ae-cli analysis-meta property related-events` | metadata.property.related_events | read | `--project-id` (number; required) — Numeric project ID.<br>`--prop-name` (string; required) — Event property column name. | [property_related_events.md](property_related_events.md) |
225
226
  | `ae-cli analysis-meta property relation-update` | metadata.property.relation_update | write | `--project-id` (number; required) — Numeric project ID.<br>`--table-type` (string; required) — Property table type.<br>`--payload` (json; required) — Required snake_case capability payload. Read the dedicated command reference for its semantic shape; an empty object is not a generic valid payload. | [property_relation_update.md](property_relation_update.md) |
226
227
  | `ae-cli analysis-meta property update` | metadata.property.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--table-type` (string; required) — Property table type.<br>`--prop-name` (string; required) — Property column name.<br>`--prop-desc` (string; optional) — Property display name.<br>`--prop-remark` (string; optional) — Property remark. | [property_update.md](property_update.md) |
228
+ | `ae-cli analysis-meta super-metadata batch-create` | metadata.super_metadata.batch_create | write | `--project-id` (number; required) — Numeric project ID.<br>`--events` (json; optional) — Optional super event JSON array. Items use event_name, event_desc, remark, and super_event_prop_names.<br>`--event-properties` (json; optional) — Optional event property JSON array. Items use prop_name, select_type, prop_desc, prop_remark, common_prop, and super_event_names.<br>`--user-properties` (json; optional) — Optional user property JSON array. Items use prop_name, select_type, prop_desc, and prop_remark. | [super_metadata_batch_create.md](super_metadata_batch_create.md) |
229
+ | `ae-cli analysis-meta super-metadata batch-edit` | metadata.super_metadata.batch_edit | write | `--project-id` (number; required) — Numeric project ID.<br>`--type` (string; required) — Metadata type to edit: event, event_property, or user_property.<br>`--items` (json; required) — Batch edit item JSON array. Event items use event_name/event_desc/remark; property items use prop_name/prop_desc/prop_remark. | [super_metadata_batch_edit.md](super_metadata_batch_edit.md) |
227
230
  | `ae-cli analysis-meta virtual-event create` | metadata.virtual_event.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields.<br>`--event-name` (string; optional) — Virtual event name. Must start with 'ta@'.<br>`--event-desc` (string; optional) — Virtual event display name.<br>`--remark` (string; optional) — Optional virtual event remark.<br>`--events` (json; optional) — Event array using snake_case event_name and optional AI-facing filter {relation,items:[{field:{name,type?},operator,values?}]}.<br>`--filter` (json; optional) — Optional AI-facing global filter {relation,items:[{field:{name,type?},operator,values?}]}; raw taFilters/junctionKind are rejected.<br>`--override` (boolean; optional) — Whether to override an existing virtual event rule. | [virtual_event_create.md](virtual_event_create.md) |
228
231
  | `ae-cli analysis-meta virtual-event delete` | metadata.virtual_event.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--v-event-id` (number; required) — Virtual event ID. | [virtual_event_delete.md](virtual_event_delete.md) |
229
232
  | `ae-cli analysis-meta virtual-event get` | metadata.virtual_event.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--v-event-id` (number; required) — Virtual event ID. | [virtual_event_get.md](virtual_event_get.md) |
@@ -0,0 +1,18 @@
1
+ # analysis dashboard-daily-report get
2
+
3
+ Use when the user wants to inspect one dashboard's saved daily report configuration.
4
+
5
+ Command:
6
+
7
+ ```bash
8
+ ae-cli analysis dashboard-daily-report get --project-id <project_id> --dashboard-id <dashboard_id>
9
+ ```
10
+
11
+ Output:
12
+
13
+ - `exists` indicates whether a saved configuration exists.
14
+ - `config` contains the saved schedule, content, enabled channels, and destinations.
15
+ - Internal SMTP selection is not exposed.
16
+ - Feishu secrets and all webhook URLs are redacted.
17
+
18
+ Use patch-style `dashboard-daily-report update` to change selected fields. Do not submit redacted values back as configuration.
@@ -7,17 +7,20 @@ Do not use for configuration changes. Use `dashboard-daily-report update`.
7
7
  Command:
8
8
 
9
9
  ```bash
10
- ae-cli analysis dashboard-daily-report send --project-id <project_id> --dashboard-id <dashboard_id> [--need-csv true] [--host-url <url>] [--payload '{...}']
10
+ ae-cli analysis dashboard-daily-report send --project-id <project_id> --dashboard-id <dashboard_id> [--email-new <emails>] [--dd-url '["https://..."]'] [--need-csv true] [--payload '{...}']
11
11
  ```
12
12
 
13
- Input sends `project_id`, `dashboard_id`, and optional daily report fields or `payload`.
14
-
15
13
  Behavior:
16
14
 
17
- - If no daily report config flags and no `--payload` are provided, the gateway uses the dashboard's saved daily report config.
18
- - If the dashboard has no saved daily report config, the command fails with a stable business error instead of creating a misleading task.
19
- - If any config flag or `--payload` is provided, the request config is used for this immediate send. Provide at least one valid channel, for example `--enable-dd true --dd-url '["https://..."]'`, or email fields such as `--enable-email true --email-login-users user@example.com`.
20
- - For an explicit Feishu send, use `--enable-feishu true --feishu-info '{"app_id":"cli_xxx","app_secret":"secret_xxx","webhook":["https://open.feishu.cn/open-apis/bot/v2/hook/..."]}'`. All three fields are required because the backend obtains a tenant access token and uploads the dashboard image before calling the group-bot webhook. Treat `app_secret` as sensitive input. If the dashboard already has a complete saved Feishu config, omit all config flags to reuse it.
21
- - Use `dashboard-daily-report update` to save or change scheduled daily report config.
15
+ - Destination fields infer channels. Do not pass `enable_email`, `enable_smtp`, or other channel switches.
16
+ - Email fields select email, `dd_url` selects DingTalk, `wx_url` selects WeCom, `feishu_info` selects Feishu, `kim_url` selects KIM, and `slack_url` selects Slack.
17
+ - If no destination field is provided, the command reuses saved destinations. Other fields such as `need_csv`, title, language, or timezone may still override the saved configuration for this send.
18
+ - If a destination field is explicitly provided but empty or invalid, the command fails instead of falling back to saved destinations.
19
+ - Direct email addresses use company SMTP when configured and otherwise use the default mail service.
20
+ - Feishu requires `app_id`, `app_secret`, and at least one webhook because the backend uploads the dashboard image before calling the group bot. Treat credentials and webhook URLs as sensitive.
21
+
22
+ Output `data.task_id` identifies the asynchronous delivery task. Inspect it with:
22
23
 
23
- Output is the gateway envelope. `data` contains the immediate send result.
24
+ ```bash
25
+ ae-cli analysis dashboard-daily-report send-status --project-id <project_id> --task-id <task_id>
26
+ ```
@@ -0,0 +1,22 @@
1
+ # analysis dashboard-daily-report send-status
2
+
3
+ Use after `dashboard-daily-report send` to inspect the actual delivery result.
4
+ Do not use it to read or change the saved daily report configuration.
5
+
6
+ Command:
7
+
8
+ ```bash
9
+ ae-cli analysis dashboard-daily-report send-status --project-id <project_id> --task-id <task_id>
10
+ ```
11
+
12
+ The normalized `status` is one of:
13
+
14
+ - `queued`
15
+ - `rendering`
16
+ - `sending`
17
+ - `succeeded`
18
+ - `partially_succeeded`
19
+ - `failed`
20
+ - `canceled`
21
+
22
+ Output also includes `progress`, `message`, and per-channel status when the backend task contains channel details.
@@ -1,19 +1,26 @@
1
1
  # analysis dashboard-daily-report update
2
2
 
3
- Use when the user wants to update a dashboard daily report configuration.
3
+ Use when the user wants to create or update a dashboard daily report configuration.
4
4
 
5
5
  Do not use to send immediately. Use `dashboard-daily-report send`.
6
6
 
7
7
  Command:
8
8
 
9
9
  ```bash
10
- ae-cli analysis dashboard-daily-report update --project-id <project_id> --dashboard-id <dashboard_id> [--enable-send true] [--send-time <time>] [--send-title <title>] [--send-content <content>] [--payload '{...}']
10
+ ae-cli analysis dashboard-daily-report update --project-id <project_id> --dashboard-id <dashboard_id> [--enable-send true] [--send-time <time>] [--enable-email true] [--email-new <emails>] [--payload '{...}']
11
11
  ```
12
12
 
13
- Input sends `project_id`, `dashboard_id`, and optional daily report fields or `payload`.
13
+ The command is a patch-style upsert:
14
14
 
15
- When `--payload` is absent, the command sends safe defaults expected by the gateway: `need_csv=false`, empty `host_url`, all channel switches false, `send_date=1,2,3,4,5,6,7`, `send_time=09:00`, `lang=zh-CN`, `screen_type=normal`, `zone_offset=0`, and `enable_send=false`. When `--payload` is present, payload values remain authoritative; pass top-level flags only for fields you intentionally want to override.
15
+ - If the dashboard has no saved configuration, the backend creates one and applies defaults for omitted fields.
16
+ - If a configuration exists, omitted fields remain unchanged.
17
+ - Pass an explicit boolean to enable or disable a saved channel.
18
+ - Pass an empty string or array to clear a saved destination.
16
19
 
17
- When enabling Feishu, pass `--enable-feishu true --feishu-info '{"app_id":"cli_xxx","app_secret":"secret_xxx","webhook":["https://open.feishu.cn/open-apis/bot/v2/hook/..."]}'`. All three fields are required because the backend uploads the dashboard image before calling the group-bot webhook. Treat `app_secret` as sensitive input.
20
+ SMTP transport is not caller-selectable. For direct email addresses, the backend uses company SMTP when configured and otherwise uses the default mail service.
18
21
 
19
- Output is the gateway envelope. `data` contains the daily report configuration update result.
22
+ When enabling Feishu, pass `--enable-feishu true --feishu-info '{"app_id":"cli_xxx","app_secret":"secret_xxx","webhook":["https://open.feishu.cn/open-apis/bot/v2/hook/..."]}'`. Treat `app_secret` and webhook URLs as sensitive.
23
+
24
+ Use `dashboard-daily-report get` before a selective update when the current state matters. The get response redacts secrets and webhook URLs, so do not copy the full response back as an update payload.
25
+
26
+ Output is the gateway envelope. `data` contains the saved daily report configuration result.
@@ -21,6 +21,11 @@ The nested backend keys are exactly `columnName` and `tableType`, and the table
21
21
 
22
22
  Use the exact `drilldown_context_id` and canonical `user_id` returned by a user-subject `analysis drilldown-entities run`. Do not use a custom entity, an entity export artifact, or a guessed identity. Export does not accept `--limit`, `--offset`, `--page-num`, or `--page-size`; Common builds the same authorized event-sequence query without the synchronous 1000-row preview cap and streams one `csv.gz` artifact. The platform full-download ceiling (`model_full_download_limit`) still applies.
23
23
 
24
+ For a `scope=total` source coordinate, there is no single selected date. Common
25
+ preserves the machine date coordinates returned by the source query together
26
+ with that query's time granularity, such as daily, weekly, or monthly. Do not
27
+ construct dates outside that context or force a daily granularity.
28
+
24
29
  Inspect the returned `run_id` with `analysis run inspect`, then download the completed artifact with `analysis artifact download`.
25
30
 
26
31
  Output is an async run/artifact descriptor. The complete event rows exist only in the downloaded artifact; they cannot be used as new analysis coordinates.
@@ -29,6 +29,12 @@ ae-cli analysis drilldown-user-events run \
29
29
 
30
30
  Do not use raw QP, `query_context_id`, or guessed user IDs for this command.
31
31
 
32
+ For a `scope=total` source coordinate, there is no single selected date. Common
33
+ preserves the machine date coordinates returned by the source query together
34
+ with that query's time granularity, such as daily, weekly, or monthly. Do not
35
+ invent `target_dates`, force a daily granularity, or replace the returned
36
+ `drilldown_context_id`.
37
+
32
38
  Do not call this command merely because an entity row looks like a user. The explicit subject and follow-up context are the authority.
33
39
 
34
40
  ## Output
@@ -0,0 +1,29 @@
1
+ # analysis-meta super-metadata batch-create
2
+
3
+ Use this command to create effective system metadata in batch through the capability gateway: super events, event properties, and user properties.
4
+
5
+ Do not use it for ordinary event/property CRUD, metadata import from XLSX, or asset governance. Use the dedicated event/property commands, event-property-bundle import, or governance commands instead.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli analysis-meta super-metadata batch-create --project-id <project_id> --events '[{"event_name":"purchase","event_desc":"Purchase"}]' --event-properties '[{"prop_name":"amount","select_type":"number","super_event_names":["purchase"]}]' --dry-run
11
+ ```
12
+
13
+ Capability id: `metadata.super_metadata.batch_create`.
14
+
15
+ Input sends `project_id` plus any non-empty JSON arrays among `events`, `event_properties`, and `user_properties`. Use snake_case object fields exactly as documented by the common-service schema:
16
+
17
+ - Event items: `event_name`, optional `event_desc`, optional `remark`, optional `super_event_prop_names`.
18
+ - Event property items: `prop_name`, `select_type`, optional `prop_desc`, optional `prop_remark`, optional `common_prop`, optional `super_event_names`.
19
+ - User property items: `prop_name`, `select_type`, optional `prop_desc`, optional `prop_remark`.
20
+
21
+ Output returns `created.events`, `created.event_properties`, and `created.user_properties` with created names and IDs, plus count metadata. If common-service rejects a duplicate, bad reference, or invalid type, preserve the gateway error code and message.
22
+
23
+ ## Parameters
24
+ | Parameter | Required | Description |
25
+ |---|---|---|
26
+ | `--project-id` | Yes | Numeric project ID. |
27
+ | `--events` | No | Super event JSON array. |
28
+ | `--event-properties` | No | Event property JSON array. |
29
+ | `--user-properties` | No | User property JSON array. |