@thinkingai/ae-cli 6.0.35 → 6.0.37

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 (78) hide show
  1. package/README.md +216 -150
  2. package/README.zh.md +224 -159
  3. package/dist/{auth-UPGUOKTW.js → auth-56Z45UVR.js} +1 -1
  4. package/dist/{capability-TQ5KU5Q6.js → capability-2H6PAOA3.js} +1 -1
  5. package/dist/{capability-AJC5CBRT.js → capability-YPOQX6PL.js} +1 -1
  6. package/dist/{chunk-4Q5TNP4Q.js → chunk-J7MZHDHQ.js} +48 -24
  7. package/dist/chunk-KTYR3U6D.js +1012 -0
  8. package/dist/{chunk-6CHYBI64.js → chunk-LHVM35J4.js} +1 -1
  9. package/dist/{chunk-ISY6HMHM.js → chunk-PVBYJWC2.js} +1 -1
  10. package/dist/{config-PMPISN5Y.js → config-BSSALXEN.js} +1 -1
  11. package/dist/index.js +75 -18
  12. package/dist/{metadata-P5GIVMZ6.js → metadata-AN3YFZEV.js} +2 -2
  13. package/dist/{metadata-ELUAR3EJ.js → metadata-JIQ77HFY.js} +2 -2
  14. package/dist/{model-OYQLXCQY.js → model-JASQVOFD.js} +1 -1
  15. package/dist/{raw-TPB7KSZO.js → raw-XJCAT3HX.js} +1 -1
  16. package/dist/{sync-EFJKFZK2.js → sync-QFP4XFN3.js} +2 -2
  17. package/dist/{te-agent-BOQ7ZY56.js → te-agent-JHUG6DVV.js} +28 -1
  18. package/dist/{te-analysis-HZIP6SYW.js → te-analysis-IWQZO423.js} +213 -129
  19. package/dist/{te-analysis-ZT2MYAHL.js → te-analysis-X222IRYR.js} +213 -129
  20. package/dist/{te-dataops-VYN3IOKO.js → te-dataops-PZQ5NQLY.js} +1 -1
  21. package/dist/{te-dataops-Y5QAPPPF.js → te-dataops-XTWVTJCA.js} +1 -1
  22. package/dist/{te-engage-2FSDUOIZ.js → te-engage-E7F4HTXU.js} +87 -4
  23. package/dist/{te-engage-BMJ6UOUU.js → te-engage-NLZUPSBK.js} +87 -4
  24. package/dist/te-system-AH7DMCAQ.js +1706 -0
  25. package/dist/{te-team-PDKKW7Q5.js → te-team-BQ3SKSZV.js} +1 -1
  26. package/dist/update-DKG6UXEM.js +123 -0
  27. package/package.json +8 -3
  28. package/skills/ae-agent/SKILL.md +2 -2
  29. package/skills/ae-agent/references/create-automation.md +12 -0
  30. package/skills/ae-agent/references/update-automation.md +11 -3
  31. package/skills/ae-analysis/SKILL.md +1 -1
  32. package/skills/ae-analysis/references/alert_create.md +2 -3
  33. package/skills/ae-analysis/references/alert_update.md +2 -3
  34. package/skills/ae-analysis/references/analysis_gateway_assets.md +6 -4
  35. package/skills/ae-analysis/references/bi_panel_create.md +12 -4
  36. package/skills/ae-analysis/references/bi_panel_update.md +11 -8
  37. package/skills/ae-analysis/references/bi_panel_version_publish.md +3 -1
  38. package/skills/ae-analysis/references/command_index.md +10 -7
  39. package/skills/ae-analysis/references/dashboard_daily_report_get.md +18 -0
  40. package/skills/ae-analysis/references/dashboard_daily_report_send.md +12 -9
  41. package/skills/ae-analysis/references/dashboard_daily_report_send_status.md +22 -0
  42. package/skills/ae-analysis/references/dashboard_daily_report_update.md +13 -6
  43. package/skills/ae-analysis/references/drilldown_user_events_export.md +5 -0
  44. package/skills/ae-analysis/references/drilldown_user_events_run.md +6 -0
  45. package/skills/ae-analysis/references/super_metadata_batch_create.md +29 -0
  46. package/skills/ae-analysis/references/super_metadata_batch_edit.md +24 -0
  47. package/skills/ae-engage/SKILL.md +32 -5
  48. package/skills/ae-engage/references/activity-topic.md +34 -1
  49. package/skills/ae-engage/references/add-channel.md +2 -3
  50. package/skills/ae-engage/references/build-task-save-guide.md +17 -3
  51. package/skills/ae-engage/references/channel-detail.md +2 -3
  52. package/skills/ae-engage/references/channel-list.md +2 -5
  53. package/skills/ae-engage/references/channel-mgmt.md +17 -2
  54. package/skills/ae-engage/references/channel-test-send.md +1 -1
  55. package/skills/ae-engage/references/channel-update-config.md +1 -1
  56. package/skills/ae-engage/references/delete-channel.md +2 -3
  57. package/skills/ae-engage/references/save-flow.md +6 -3
  58. package/skills/ae-engage/references/save-task.md +12 -15
  59. package/skills/ae-engage/references/scene-config-channel.md +28 -4
  60. package/skills/ae-engage/references/scene-config-group.md +1 -1
  61. package/skills/ae-engage/references/scene-config-item.md +1 -1
  62. package/skills/ae-engage/references/scene-config-metric.md +1 -1
  63. package/skills/ae-engage/references/scene-config-param.md +1 -1
  64. package/skills/ae-engage/references/scene-preset-metric.md +1 -1
  65. package/skills/ae-engage/references/scene-strategy-audience.md +680 -0
  66. package/skills/ae-engage/references/scene-strategy.md +16 -1
  67. package/skills/ae-engage/references/scene-template.md +1 -1
  68. package/skills/ae-engage/references/update-channel-status.md +2 -3
  69. package/skills/ae-generate-tracking-code/SKILL.md +5 -5
  70. package/skills/ae-generate-tracking-code/references/autotrack-enum.md +4 -4
  71. package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +1 -1
  72. package/skills/ae-generate-tracking-code/references/debug-script.md +2 -2
  73. package/skills/ae-generate-tracking-code/references/logbus-config.md +1 -1
  74. package/skills/ae-generate-tracking-code/references/restful-call.md +1 -1
  75. package/skills/ae-generate-tracking-code/references/sdk-index.md +36 -36
  76. package/skills/ae-system/SKILL.md +357 -0
  77. package/dist/chunk-IMMGMU54.js +0 -674
  78. 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-KTYR3U6D.js";
9
9
  import "./chunk-E7UXXHO3.js";
10
10
  import "./chunk-IR4ZLVPW.js";
11
11
  import "./chunk-V6FR6WTW.js";
@@ -0,0 +1,123 @@
1
+ import {
2
+ buildVersionInstallPlan,
3
+ fetchCliConfig,
4
+ friendlyVersionSyncFailure,
5
+ getCachedCompatForHost,
6
+ installVersion,
7
+ printError,
8
+ printOutput,
9
+ recordVersionSyncResult
10
+ } from "./chunk-KTYR3U6D.js";
11
+ import {
12
+ peekCliToken
13
+ } from "./chunk-E7UXXHO3.js";
14
+ import "./chunk-IR4ZLVPW.js";
15
+ import {
16
+ getActiveHost,
17
+ normalizeUrl
18
+ } from "./chunk-V6FR6WTW.js";
19
+ import "./chunk-LYVNONC4.js";
20
+
21
+ // src/commands/update.ts
22
+ var HOST_OPTION_DESC = "Override active AE host URL (e.g., https://ta.thinkingdata.cn)";
23
+ var SEMVER_RE = /^\d+\.\d+\.\d+(?:[-+].*)?$/;
24
+ function registerUpdate(program) {
25
+ 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) => {
26
+ const target = await resolveTargetVersion(program, opts);
27
+ if (!target) return;
28
+ const host = resolveUpdateHost(program, opts);
29
+ const plan = buildUpdatePlan(target, host);
30
+ if (program.opts().dryRun) {
31
+ await printOutput({ action: "update", dryRun: true, ...plan }, program.opts().format || "json", program.opts().jq);
32
+ return;
33
+ }
34
+ const result = installVersion(target, {
35
+ progress: (message) => process.stderr.write(`${message}
36
+ `)
37
+ });
38
+ if (host) {
39
+ recordVersionSyncResult(host, target, result);
40
+ }
41
+ if (!result.ok) {
42
+ const message = result.skillsPending ? `ae-cli ${target} was installed, but Skills synchronization failed.` : `Could not install ae-cli ${target}.`;
43
+ printError(
44
+ "config",
45
+ message,
46
+ `${friendlyVersionSyncFailure(result)} Check access and run: ae-cli update`,
47
+ "AE_CLI_UPDATE_FAILED",
48
+ {
49
+ target,
50
+ stage: result.stage,
51
+ cause: result.cause,
52
+ skillsPending: result.skillsPending
53
+ }
54
+ );
55
+ process.exitCode = 1;
56
+ return;
57
+ }
58
+ await printOutput(
59
+ {
60
+ action: "update",
61
+ dryRun: false,
62
+ ...plan,
63
+ skillsSource: result.skillsSource
64
+ },
65
+ program.opts().format || "json",
66
+ program.opts().jq
67
+ );
68
+ });
69
+ }
70
+ async function resolveTargetVersion(program, opts) {
71
+ if (opts.target) {
72
+ return validateTarget(opts.target);
73
+ }
74
+ const host = resolveUpdateHost(program, opts);
75
+ if (!host) {
76
+ failUpdate("No AE host configured.", "Run: ae-cli config set-host <url>, or pass --target <version>.");
77
+ return null;
78
+ }
79
+ const token = peekCliToken(host);
80
+ if (token) {
81
+ const remote = await fetchCliConfig(host, token);
82
+ if (remote?.aeCliVersion) {
83
+ return validateTarget(remote.aeCliVersion);
84
+ }
85
+ }
86
+ const cached = getCachedCompatForHost(host);
87
+ if (cached?.expectedVersion) {
88
+ return validateTarget(cached.expectedVersion);
89
+ }
90
+ failUpdate(
91
+ "Could not determine the ae-cli version required by this host.",
92
+ "Run: ae-cli auth login --host <url>, or pass --target <version>."
93
+ );
94
+ return null;
95
+ }
96
+ function validateTarget(version) {
97
+ const target = version.trim().replace(/^v/i, "");
98
+ if (!SEMVER_RE.test(target)) {
99
+ failUpdate(`Invalid target version: ${version}`, "Expected semver like 6.0.34 or 6.1.6.");
100
+ return null;
101
+ }
102
+ return target;
103
+ }
104
+ function resolveUpdateHost(program, opts) {
105
+ const raw = opts.host || program.opts().host || getActiveHost();
106
+ return raw ? normalizeUrl(raw) : void 0;
107
+ }
108
+ function buildUpdatePlan(target, host) {
109
+ const installPlan = buildVersionInstallPlan(target);
110
+ return {
111
+ target: installPlan.target,
112
+ ...host ? { host } : {},
113
+ commands: installPlan.commands,
114
+ skillsSources: installPlan.skillsSources
115
+ };
116
+ }
117
+ function failUpdate(message, hint) {
118
+ printError("config", message, hint);
119
+ process.exitCode = 1;
120
+ }
121
+ export {
122
+ registerUpdate
123
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkingai/ae-cli",
3
- "version": "6.0.35",
3
+ "version": "6.0.37",
4
4
  "description": "CLI tool for ThinkingAI (AE) analytics platform",
5
5
  "type": "module",
6
6
  "bin": {
@@ -39,14 +39,17 @@
39
39
  "verify:analysis-common-tools": "node scripts/verify-te-common-tools.mjs",
40
40
  "verify:team-tools": "node scripts/verify-te-team-tools.mjs",
41
41
  "verify:agent-tools": "node scripts/verify-agent-tools.mjs && npm run verify:sandbox-tools",
42
+ "verify:system-tools": "node scripts/verify-system-tools.mjs && npx tsx tests/system-domain.test.ts && npx tsx tests/sandbox-tool-package.test.ts",
42
43
  "verify:sandbox-tools": "tsx test/sandbox-tools.test.ts",
43
44
  "verify:tracking-tools": "node test/tracking-client.test.mjs && node test/tracking-skill-flow.test.mjs && node test/tracking-commands.test.mjs",
44
45
  "verify:self-check-overlay": "node test/self-check-overlay.test.mjs",
45
46
  "verify:update-check": "npx tsx test/update-check.test.mjs",
47
+ "verify:version-sync": "npx tsx tests/version-sync.test.ts",
46
48
  "qa-changed": "node scripts/qa-changed.mjs",
47
49
  "self-check": "node self-check/scan.mjs",
48
50
  "check:release": "node self-check/release-gate.mjs",
49
- "sync:skills-to-db": "node scripts/sync-skills-to-db.mjs",
51
+ "sync:skills-to-system": "node scripts/sync-skills-to-system.mjs",
52
+ "verify:system-skills-sync": "node --test test/sync-system-skills.test.mjs",
50
53
  "check:agents-docs": "node scripts/check-agents-docs-sync.mjs",
51
54
  "prepublishOnly": "npm run check:release && npm run build",
52
55
  "start": "node dist/index.js",
@@ -68,6 +71,7 @@
68
71
  },
69
72
  "dependencies": {
70
73
  "@types/json-bigint": "^1.0.4",
74
+ "archiver": "^5.3.2",
71
75
  "cli-table3": "^0.6.5",
72
76
  "commander": "^12.1.0",
73
77
  "exceljs": "^4.4.0",
@@ -79,10 +83,11 @@
79
83
  "xlsx": "^0.18.5"
80
84
  },
81
85
  "devDependencies": {
86
+ "@types/archiver": "^5.3.4",
82
87
  "@types/node": "^22.0.0",
83
88
  "@types/turndown": "^5.0.6",
84
89
  "@types/ws": "^8.5.0",
85
- "mysql2": "^3.22.6",
90
+ "jszip": "^3.10.1",
86
91
  "tsup": "^8.0.0",
87
92
  "tsx": "^4.0.0",
88
93
  "typescript": "^5.5.0"
@@ -76,8 +76,8 @@ If the user's intent is data analysis, audience management, metadata governance,
76
76
  ### Automations (3)
77
77
 
78
78
  - `+list-automations` ([doc](references/list-automations.md)) — list current user's Agent automation tasks
79
- - `+create-automation` ([doc](references/create-automation.md)) — create an Agent automation task (hourly/daily/weekly/monthly or cron)
80
- - `+update-automation` ([doc](references/update-automation.md)) — update an automation's name, instruction, schedule, or enabled state
79
+ - `+create-automation` ([doc](references/create-automation.md)) — create an Agent automation task (hourly/daily/weekly/monthly or cron; optional continuous conversation)
80
+ - `+update-automation` ([doc](references/update-automation.md)) — update an automation's name, instruction, schedule, enabled state, or conversation mode
81
81
 
82
82
  ### Models (6)
83
83
 
@@ -8,11 +8,13 @@ Domain: **Automations / write**
8
8
  - Create an Agent automation task that runs on a schedule (hourly / daily / weekly / monthly or cron).
9
9
  - Returns the newly created automation object including its `id` and initial `status`.
10
10
  - Automations are **enabled by default**; pass `--enabled false` only when the user explicitly asks to create the task without enabling it.
11
+ - Automations create a new conversation for every run by default. Pass `--reuse-conversation true` only when the user explicitly wants future runs to continue in one conversation.
11
12
 
12
13
  ## Mandatory Rules (MUST)
13
14
  - `--name` and `--message` are required.
14
15
  - A schedule is required: provide either `--cron` or a `--schedule-kind` (with its time/day fields). `--cron` and `--schedule-kind` are mutually exclusive.
15
16
  - `--agent-id` and `--agent-name` are mutually exclusive. Obtain a real Agent ID via `+list-agents` — do not guess.
17
+ - 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
18
  - JSON flags must be valid JSON strings, usually wrapped in single quotes in shell.
17
19
  - This is an ordinary `write` operation and does not require CLI confirmation.
18
20
  - Do not surface raw automation IDs, raw JSON, or concrete detail paths in user-facing replies.
@@ -42,6 +44,14 @@ ae-cli agent +create-automation \
42
44
  --message "Summarize yesterday's AI news" \
43
45
  --enabled false
44
46
 
47
+ # Keep future runs in one visible conversation
48
+ ae-cli agent +create-automation \
49
+ --name "Daily AI Brief" \
50
+ --schedule-kind daily \
51
+ --time 09:00 \
52
+ --message "Summarize yesterday's AI news" \
53
+ --reuse-conversation true
54
+
45
55
  # Weekly schedule on Sunday
46
56
  ae-cli agent +create-automation \
47
57
  --name "Weekly Report" \
@@ -75,6 +85,7 @@ ae-cli agent +create-automation --dry-run --name "Test" --message "x" --schedule
75
85
  | `--agent-name` | No | Agent name; use only after `+list-agents` discovery |
76
86
  | `--model` | No | Model record ID; defaults to current selected model |
77
87
  | `--enabled` | No | `true` (default) \| `false` |
88
+ | `--reuse-conversation` | No | `true` to continue in one conversation; `false` (default) to create one per run |
78
89
  | `--conversation-id` | No | Conversation ID fallback for resolving current Agent |
79
90
 
80
91
  \* One of `--cron` or `--schedule-kind` is required.
@@ -83,6 +94,7 @@ ae-cli agent +create-automation --dry-run --name "Test" --message "x" --schedule
83
94
  - If the user provides a natural-language schedule ("every day at 9am"), translate it to `--schedule-kind daily --time 09:00`.
84
95
  - If the user wants a cron-only schedule not covered by the kinds, use `--cron`.
85
96
  - If no Agent is specified, the automation targets the current conversation's Agent; verify with `+list-agents` when in doubt.
97
+ - Set `--reuse-conversation true` only when the user explicitly requests continuity across runs. The platform may rotate the underlying provider session while retaining the visible conversation history.
86
98
  - Use `--dry-run` first to verify the request shape before executing.
87
99
 
88
100
  ## Next Steps on Failure
@@ -5,13 +5,13 @@
5
5
  Domain: **Automations / write**
6
6
 
7
7
  ## Use Cases
8
- - Update an existing Agent automation task's name, instruction, schedule, or enabled state.
8
+ - Update an existing Agent automation task's name, instruction, schedule, enabled state, or conversation mode.
9
9
  - Used to pause (`--enabled false`) or resume (`--enabled true`) an automation, or to change its schedule/message.
10
10
  - Obtain the automation `id` via `+list-automations` — never guess.
11
11
 
12
12
  ## Mandatory Rules (MUST)
13
13
  - `--id` is required. Obtain the real ID via `+list-automations` — do not guess.
14
- - At least one update field must be provided (`--name`, `--message`, `--enabled`, `--cron`, or a `--schedule-kind` with its time/day fields).
14
+ - At least one update field must be provided (`--name`, `--message`, `--enabled`, `--reuse-conversation`, `--cron`, or a `--schedule-kind` with its time/day fields).
15
15
  - `--cron` and `--schedule-kind` are mutually exclusive.
16
16
  - This is an ordinary `write` operation and does not require CLI confirmation.
17
17
  - Do not surface raw automation IDs, raw JSON, or concrete detail paths in user-facing replies.
@@ -32,6 +32,12 @@ ae-cli agent +update-automation --id <automation-id> --enabled false
32
32
  # Resume an automation
33
33
  ae-cli agent +update-automation --id <automation-id> --enabled true
34
34
 
35
+ # Reuse the most recent valid conversation on future runs
36
+ ae-cli agent +update-automation --id <automation-id> --reuse-conversation true
37
+
38
+ # Return to creating a new conversation for every run
39
+ ae-cli agent +update-automation --id <automation-id> --reuse-conversation false
40
+
35
41
  # Rename and change the instruction
36
42
  ae-cli agent +update-automation \
37
43
  --id <automation-id> \
@@ -59,6 +65,7 @@ ae-cli agent +update-automation --dry-run --id <automation-id> --enabled false
59
65
  | `--name` | No | New automation task name |
60
66
  | `--message` | No | New instruction sent to the Agent |
61
67
  | `--enabled` | No | `true` to enable, `false` to pause |
68
+ | `--reuse-conversation` | No | `true` to reuse one conversation, `false` to create one per run; omit to keep unchanged |
62
69
  | `--cron` | No | Cron expression (mutually exclusive with `--schedule-kind`) |
63
70
  | `--schedule-kind` | No | `hourly` \| `daily` \| `weekly` \| `monthly` |
64
71
  | `--time` | No | Time in `HH:mm` for daily/weekly/monthly |
@@ -68,12 +75,13 @@ ae-cli agent +update-automation --dry-run --id <automation-id> --enabled false
68
75
 
69
76
  ## Decision Rules
70
77
  - If the user wants to pause/resume, use `--enabled false` / `--enabled true` (no other fields needed).
78
+ - If the user wants future runs to share one conversation, use `--reuse-conversation true`; use `false` to restore one conversation per run.
71
79
  - If the user wants to change the schedule, provide `--schedule-kind` with its required time/day fields, or `--cron`.
72
80
  - At least one update field is required; a bare `--id` is rejected.
73
81
  - Use `--dry-run` first to verify the request shape before executing.
74
82
 
75
83
  ## Next Steps on Failure
76
- - `至少提供一个更新字段`: add at least one of `--name` / `--message` / `--enabled` / `--cron` / `--schedule-kind`.
84
+ - `至少提供一个更新字段`: add at least one of `--name` / `--message` / `--enabled` / `--reuse-conversation` / `--cron` / `--schedule-kind`.
77
85
  - `必须提供 --cron 或 --schedule-kind`: if schedule detail flags (`--time` / `--minute` / `--weekday` / `--day-of-month`) are present, a `--schedule-kind` (or `--cron`) must accompany them.
78
86
  - `--time 格式必须是 HH:mm`: use 24-hour `HH:mm` (e.g. `09:00`).
79
87
 
@@ -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
+ ```