@thinkingai/ae-cli 6.0.24 → 6.0.27

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 (130) hide show
  1. package/dist/{auth-A2XXG5K4.js → auth-7TQRGLBC.js} +10 -8
  2. package/dist/{auth-IDPKDFSY.js → auth-MEJ642P4.js} +2 -2
  3. package/dist/chunk-2NDGFQHW.js +190 -0
  4. package/dist/{chunk-NGJDCOYA.js → chunk-7QQ4233A.js} +3 -3
  5. package/dist/{chunk-PFJFZVCK.js → chunk-AJTH7LT3.js} +3 -2
  6. package/dist/{chunk-V5R5UIRM.js → chunk-BXMXMUD7.js} +65 -6
  7. package/dist/{chunk-AKORWVHJ.js → chunk-C4DH76LX.js} +1 -1
  8. package/dist/{chunk-NXJP4CES.js → chunk-GWZ5MYWE.js} +3 -3
  9. package/dist/{chunk-F3ZDMC2W.js → chunk-KCA6BA5D.js} +2 -2
  10. package/dist/{chunk-WXBCP6SD.js → chunk-KGJQCYVC.js} +1 -1
  11. package/dist/{chunk-FIT4CFIN.js → chunk-LG5YT7P7.js} +1 -1
  12. package/dist/{chunk-IDXW6MEJ.js → chunk-MDJGDI6K.js} +2 -2
  13. package/dist/{chunk-4FQ36OGO.js → chunk-R77JT7XD.js} +53 -6
  14. package/dist/{chunk-65DKFJZB.js → chunk-YCLVYFK7.js} +49 -6
  15. package/dist/{chunk-2OW2RENH.js → chunk-YNQFYBDB.js} +64 -6
  16. package/dist/{chunk-ONOA6DYB.js → chunk-ZAOL36CG.js} +1 -1
  17. package/dist/cli-token-TVQRSE46.js +18 -0
  18. package/dist/{client-7L735LVY.js → client-2643Z5AG.js} +3 -3
  19. package/dist/{config-SXD2JKSL.js → config-ZVPARN4R.js} +4 -9
  20. package/dist/index.js +24 -24
  21. package/dist/{metadata-QWUAX625.js → metadata-IPSPQBX3.js} +5 -5
  22. package/dist/{metadata-XWTEGEN2.js → metadata-N5REJ7R7.js} +5 -5
  23. package/dist/{model-3OVX42DA.js → model-T3KZJWLW.js} +2 -2
  24. package/dist/{raw-IANB4AV5.js → raw-OHSUK42D.js} +4 -4
  25. package/dist/{sync-4HQ3CXSK.js → sync-ULT5SECP.js} +3 -3
  26. package/dist/{te-agent-OYNNTJDU.js → te-agent-QLIVKRUN.js} +1146 -61
  27. package/dist/{te-analysis-CRPFK3LX.js → te-analysis-2U5EPXQC.js} +207 -69
  28. package/dist/{te-analysis-JX3V76OI.js → te-analysis-QMZ2UH7F.js} +207 -69
  29. package/dist/{te-audience-RO2IZOUC.js → te-audience-PVMKQAFH.js} +5 -5
  30. package/dist/{te-audience-77FGNG5E.js → te-audience-XMRMVD2V.js} +5 -5
  31. package/dist/{te-common-4TRJPRC5.js → te-common-CFGQXTFV.js} +5 -5
  32. package/dist/{te-common-PUXBUPOL.js → te-common-SDB3O2QG.js} +5 -5
  33. package/dist/{te-community-XKE526DS.js → te-community-6A7LKYUH.js} +5 -5
  34. package/dist/{te-community-NPDZQKMY.js → te-community-GMWFGILT.js} +5 -5
  35. package/dist/{te-dataops-PW74WP76.js → te-dataops-6LIPYNGH.js} +90 -68
  36. package/dist/{te-dataops-6KWLFNV4.js → te-dataops-Z53CTG2U.js} +90 -68
  37. package/dist/{te-engage-HTLMUN7G.js → te-engage-AGREUOW7.js} +30 -15
  38. package/dist/{te-engage-YPQIVF5H.js → te-engage-MIIUKY6M.js} +30 -15
  39. package/dist/{te-kb-DOGDQIU4.js → te-kb-KQJ53M3A.js} +4 -4
  40. package/dist/{te-meta-5ESSQ5B3.js → te-meta-QLANJ4B4.js} +5 -5
  41. package/dist/{te-meta-Z47X4VT3.js → te-meta-TOA6FWDE.js} +5 -5
  42. package/dist/{te-team-SOVKZIDD.js → te-team-TQGMNHQQ.js} +5 -5
  43. package/package.json +3 -1
  44. package/skills/ae-agent/SKILL.md +158 -189
  45. package/skills/ae-agent/references/accept-skill-share.md +39 -0
  46. package/skills/ae-agent/references/add-attachment.md +57 -0
  47. package/skills/ae-agent/references/add-mcp.md +75 -0
  48. package/skills/ae-agent/references/add-model.md +70 -0
  49. package/skills/ae-agent/references/add-skill.md +71 -0
  50. package/skills/ae-agent/references/approve-skill.md +41 -0
  51. package/skills/ae-agent/references/attachment-stats.md +50 -0
  52. package/skills/ae-agent/references/auto-provision-mcp-credentials.md +57 -0
  53. package/skills/ae-agent/references/cancel-skill-submission.md +39 -0
  54. package/skills/ae-agent/references/copy-skill.md +53 -0
  55. package/skills/ae-agent/references/create-agent.md +71 -0
  56. package/skills/ae-agent/references/create-automation.md +99 -0
  57. package/skills/ae-agent/references/del-agent.md +38 -0
  58. package/skills/ae-agent/references/del-attachment.md +35 -0
  59. package/skills/ae-agent/references/del-mcp.md +35 -0
  60. package/skills/ae-agent/references/del-model.md +37 -0
  61. package/skills/ae-agent/references/del-skill-asset.md +41 -0
  62. package/skills/ae-agent/references/del-skill-reference.md +41 -0
  63. package/skills/ae-agent/references/del-skill-script.md +41 -0
  64. package/skills/ae-agent/references/del-skill.md +36 -0
  65. package/skills/ae-agent/references/edit-skill.md +64 -0
  66. package/skills/ae-agent/references/get-agent.md +37 -0
  67. package/skills/ae-agent/references/get-skill-content.md +36 -0
  68. package/skills/ae-agent/references/list-agents.md +40 -0
  69. package/skills/ae-agent/references/list-attachments.md +42 -0
  70. package/skills/ae-agent/references/list-automations.md +41 -0
  71. package/skills/ae-agent/references/list-mcp-credentials.md +65 -0
  72. package/skills/ae-agent/references/list-mcp-market.md +58 -0
  73. package/skills/ae-agent/references/list-mcps.md +37 -0
  74. package/skills/ae-agent/references/list-models.md +38 -0
  75. package/skills/ae-agent/references/list-skill-assets.md +35 -0
  76. package/skills/ae-agent/references/list-skill-market.md +59 -0
  77. package/skills/ae-agent/references/list-skill-references.md +36 -0
  78. package/skills/ae-agent/references/list-skill-scripts.md +35 -0
  79. package/skills/ae-agent/references/list-skill-shares.md +49 -0
  80. package/skills/ae-agent/references/list-skill-submissions.md +45 -0
  81. package/skills/ae-agent/references/list-skills.md +37 -0
  82. package/skills/ae-agent/references/mcp-auth-disconnect.md +50 -0
  83. package/skills/ae-agent/references/mcp-auth-start.md +61 -0
  84. package/skills/ae-agent/references/mcp-auth-status.md +56 -0
  85. package/skills/ae-agent/references/mcp-stats.md +68 -0
  86. package/skills/ae-agent/references/mcp-token.md +63 -0
  87. package/skills/ae-agent/references/mcp-tools.md +55 -0
  88. package/skills/ae-agent/references/read-skill-asset.md +51 -0
  89. package/skills/ae-agent/references/read-skill-reference.md +50 -0
  90. package/skills/ae-agent/references/read-skill-script.md +51 -0
  91. package/skills/ae-agent/references/reject-skill-share.md +37 -0
  92. package/skills/ae-agent/references/reject-skill.md +42 -0
  93. package/skills/ae-agent/references/rescan-skills.md +44 -0
  94. package/skills/ae-agent/references/set-mcp-credential.md +67 -0
  95. package/skills/ae-agent/references/set-mcp-meta.md +52 -0
  96. package/skills/ae-agent/references/set-skill-meta.md +51 -0
  97. package/skills/ae-agent/references/share-skill.md +50 -0
  98. package/skills/ae-agent/references/submit-skill.md +51 -0
  99. package/skills/ae-agent/references/test-model.md +61 -0
  100. package/skills/ae-agent/references/toggle-mcp.md +39 -0
  101. package/skills/ae-agent/references/toggle-model.md +37 -0
  102. package/skills/ae-agent/references/toggle-skill.md +37 -0
  103. package/skills/ae-agent/references/update-agent.md +71 -0
  104. package/skills/ae-agent/references/update-automation.md +83 -0
  105. package/skills/ae-agent/references/update-mcp.md +79 -0
  106. package/skills/ae-agent/references/update-model.md +77 -0
  107. package/skills/ae-agent/references/upload-skill-asset.md +49 -0
  108. package/skills/ae-agent/references/upload-skill-reference.md +51 -0
  109. package/skills/ae-agent/references/upload-skill-script.md +49 -0
  110. package/skills/ae-agent/references/upload-skill.md +89 -0
  111. package/skills/ae-analysis/SKILL.md +4 -2
  112. package/skills/ae-analysis/references/analysis_gateway_assets.md +21 -6
  113. package/skills/ae-analysis/references/artifact_download.md +17 -0
  114. package/skills/ae-analysis/references/bi_panel_page_data_export.md +11 -1
  115. package/skills/ae-analysis/references/dashboard_copy.md +3 -1
  116. package/skills/ae-analysis/references/dashboard_daily_report_send.md +4 -2
  117. package/skills/ae-analysis/references/dashboard_daily_report_update.md +3 -1
  118. package/skills/ae-analysis/references/dashboard_definition_export.md +21 -3
  119. package/skills/ae-analysis/references/dashboard_report_data_export.md +11 -1
  120. package/skills/ae-analysis/references/project_space_create.md +1 -1
  121. package/skills/ae-analysis/references/run_inspect.md +22 -0
  122. package/skills/ae-dataops/references/dataops-flow-create.md +2 -2
  123. package/skills/ae-dataops/references/dataops-flow-monitor.md +3 -3
  124. package/skills/ae-dataops/references/dataops-integration.md +1 -0
  125. package/skills/ae-engage/references/flow-node-config-schema.md +32 -8
  126. package/skills/ae-engage/references/save-flow.md +65 -29
  127. package/skills/ae-engage/references/validate-flow-node-config.md +28 -10
  128. package/skills/ae-generate-tracking-plan/SKILL.md +9 -7
  129. package/dist/chunk-OCQPQYHZ.js +0 -105
  130. package/dist/cli-token-OZXHC3U2.js +0 -14
@@ -0,0 +1,51 @@
1
+ # agent +upload-skill-reference (Upload Skill Reference)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Skills / write**
6
+
7
+ ## Use Cases
8
+ - Upload a single `.md` file to a Skill's `references` directory (multipart upload).
9
+ - Endpoint: `POST /api/sandbox/agent/skills/[id]/references` (multipart/form-data).
10
+ - Max file size: 1MB per file.
11
+ - **Only `.md` files are allowed** — other extensions are rejected.
12
+
13
+ ## Mandatory Rules (MUST)
14
+ - `--id` is required. Obtain the real Skill record ID (CUID) via `+list-skills` — do not guess.
15
+ - `--file` is required, must be an existing local `.md` file.
16
+ - Non-`.md` files are rejected — use `+upload-skill-asset` for other file types.
17
+ - Max 1MB per file; server enforces `isDangerousFile` checks.
18
+ - Write operation: keep the confirmation prompt unless `--yes` is explicitly requested.
19
+
20
+ ## Command
21
+ ```bash
22
+ # Upload a single reference
23
+ ae-cli agent +upload-skill-reference --id <skill-cuid> --file ./guide.md --yes
24
+
25
+ # Upload to a sub-directory
26
+ ae-cli agent +upload-skill-reference --id <skill-cuid> --file ./advanced.md --sub-path "advanced/" --yes
27
+
28
+ # Dry-run to inspect the request before executing
29
+ ae-cli agent +upload-skill-reference --dry-run --id <skill-cuid> --file ./guide.md
30
+ ```
31
+
32
+ ## Parameters
33
+ | Parameter | Required | Description |
34
+ |---|---|---|
35
+ | `--id` | Yes | Skill record ID (CUID) |
36
+ | `--file` | Yes | Local `.md` file path to upload (max 1MB) |
37
+ | `--sub-path` | No | Sub-directory under references (e.g. `"advanced/"`) |
38
+
39
+ ## Decision Rules
40
+ - Verify the file exists locally and has a `.md` extension before uploading.
41
+ - For non-markdown files, use `+upload-skill-asset` instead.
42
+ - Use `--sub-path` to organize references into sub-directories.
43
+ - Use `--dry-run` first to verify the request shape before executing.
44
+
45
+ ## Next Steps on Failure
46
+ - `File not found`: verify the local file path.
47
+ - `--file must be a .md file for references`: use `+upload-skill-asset` for non-markdown files.
48
+ - `文件过大(上限 1MB)`: the file exceeds the 1MB limit — split the markdown.
49
+
50
+ ## Recommended Chaining
51
+ - `+list-skills` → `+list-skill-references` → `+upload-skill-reference` → `+list-skill-references` (verify)
@@ -0,0 +1,49 @@
1
+ # agent +upload-skill-script (Upload Skill Script)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Skills / write**
6
+
7
+ ## Use Cases
8
+ - Upload a single file to a Skill's `scripts` directory (multipart upload).
9
+ - Endpoint: `POST /api/sandbox/agent/skills/[id]/scripts` (multipart/form-data).
10
+ - Max file size: 1MB per file.
11
+ - Dangerous file types are rejected server-side.
12
+
13
+ ## Mandatory Rules (MUST)
14
+ - `--id` is required. Obtain the real Skill record ID (CUID) via `+list-skills` — do not guess.
15
+ - `--file` is required and must point to an existing local file.
16
+ - Max 1MB per file; server enforces `isDangerousFile` checks.
17
+ - Write operation: keep the confirmation prompt unless `--yes` is explicitly requested.
18
+
19
+ ## Command
20
+ ```bash
21
+ # Upload a single script
22
+ ae-cli agent +upload-skill-script --id <skill-cuid> --file ./helper.sh --yes
23
+
24
+ # Upload to a sub-directory
25
+ ae-cli agent +upload-skill-script --id <skill-cuid> --file ./run.py --sub-path "tools/" --yes
26
+
27
+ # Dry-run to inspect the request before executing
28
+ ae-cli agent +upload-skill-script --dry-run --id <skill-cuid> --file ./helper.sh
29
+ ```
30
+
31
+ ## Parameters
32
+ | Parameter | Required | Description |
33
+ |---|---|---|
34
+ | `--id` | Yes | Skill record ID (CUID) |
35
+ | `--file` | Yes | Local file path to upload (max 1MB) |
36
+ | `--sub-path` | No | Sub-directory under scripts (e.g. `"tools/"`) |
37
+
38
+ ## Decision Rules
39
+ - Verify the file exists locally before uploading.
40
+ - Use `--sub-path` to organize scripts into sub-directories.
41
+ - Use `--dry-run` first to verify the request shape before executing.
42
+
43
+ ## Next Steps on Failure
44
+ - `File not found`: verify the local file path.
45
+ - `文件过大(上限 1MB)`: the file exceeds the 1MB limit — compress or split it.
46
+ - `禁止上传危险文件类型`: the file type is blocked by server-side security checks.
47
+
48
+ ## Recommended Chaining
49
+ - `+list-skills` → `+list-skill-scripts` → `+upload-skill-script` → `+list-skill-scripts` (verify)
@@ -0,0 +1,89 @@
1
+ # agent +upload-skill (Upload ZIP Skill)
2
+
3
+ > **Prerequisite:** Follow the Global AE CLI Rules in [`../SKILL.md`](../SKILL.md).
4
+
5
+ Domain: **Skills / write**
6
+
7
+ ## Use Cases
8
+ - Upload a ZIP-format Skill package. The server parses SKILL.md from the ZIP, extracts files to the target directory, and writes the DB record.
9
+ - Endpoint: `POST /api/sandbox/agent/skills/upload` (multipart/form-data, 120s timeout).
10
+ - Supports form-field overrides for name, displayName, description, instructions, icon, category.
11
+ - `--scope` controls target scope: `personal` (default) or `company`.
12
+ - `--replace-skill-id` replaces an existing Skill instead of creating a new one.
13
+ - `--auto-rename` auto-renames on name conflict.
14
+
15
+ ## Mandatory Rules (MUST)
16
+ - `--file` is required and must be a `.zip` file that exists on disk.
17
+ - The ZIP must contain a `SKILL.md` file (with name and content at minimum).
18
+ - `--scope` must be `personal` or `company` (default `personal`).
19
+ - `--category` must be one of the market category keys when provided.
20
+ - `--instructions` supports `@-` to read from stdin.
21
+ - Write operation: keep the confirmation prompt unless `--yes` is explicitly requested.
22
+
23
+ ## Market Category Keys
24
+ `ae_preset | dev_tool | search_tool | data_query | content_gen | enterprise | life | automation | other`
25
+
26
+ ## Command
27
+ ```bash
28
+ # Upload a personal Skill from ZIP
29
+ ae-cli agent +upload-skill --file ./my-skill.zip --yes
30
+
31
+ # Upload with overrides
32
+ ae-cli agent +upload-skill \
33
+ --file ./my-skill.zip \
34
+ --scope personal \
35
+ --name custom-name \
36
+ --display-name "Custom Skill" \
37
+ --description "Override description" \
38
+ --category dev_tool \
39
+ --icon-emoji robot \
40
+ --yes
41
+
42
+ # Instructions from stdin
43
+ echo "You are a helpful assistant..." | \
44
+ ae-cli agent +upload-skill --file ./my-skill.zip --instructions @- --yes
45
+
46
+ # Replace an existing Skill
47
+ ae-cli agent +upload-skill --file ./updated.zip --replace-skill-id <skill-cuid> --yes
48
+
49
+ # Auto-rename on conflict
50
+ ae-cli agent +upload-skill --file ./my-skill.zip --auto-rename --yes
51
+
52
+ # Dry-run to inspect the request before executing
53
+ ae-cli agent +upload-skill --dry-run --file ./my-skill.zip
54
+ ```
55
+
56
+ ## Parameters
57
+ | Parameter | Required | Description |
58
+ |---|---|---|
59
+ | `--file` | Yes | Local `.zip` file path |
60
+ | `--scope` | No | Target scope: `personal` (default) or `company` |
61
+ | `--auto-rename` | No | Auto-rename on name conflict |
62
+ | `--replace-skill-id` | No | Replace an existing Skill (CUID) instead of creating new |
63
+ | `--category` | No | Market category key (see above) |
64
+ | `--name` | No | Override Skill name (from ZIP SKILL.md if omitted) |
65
+ | `--display-name` | No | Override display name |
66
+ | `--description` | No | Override description |
67
+ | `--instructions` | No | Override instructions (use `@-` to read from stdin) |
68
+ | `--icon-emoji` | No | Market icon emoji (e.g. `robot`) |
69
+ | `--icon-color` | No | Market icon color (e.g. `#1E76F0`) |
70
+
71
+ ## Decision Rules
72
+ - The ZIP must contain a `SKILL.md` with at least `name` and content — otherwise the upload fails with `missing_skill_md` or `missing_name_or_content`.
73
+ - Form-field overrides take precedence over ZIP SKILL.md content.
74
+ - Use `--replace-skill-id` to update an existing Skill's full content from a ZIP (different from `+edit-skill` which edits individual fields).
75
+ - Use `--auto-rename` when the Skill name might conflict with an existing one.
76
+ - `company` scope requires root privileges.
77
+ - Use `--dry-run` first to verify the request shape before executing.
78
+
79
+ ## Next Steps on Failure
80
+ - `File not found`: verify the local file path.
81
+ - `--file must be a .zip file`: only ZIP format is supported.
82
+ - `ZIP 中缺少 SKILL.md`: ensure the ZIP contains a `SKILL.md` file.
83
+ - `缺少名称或内容`: the SKILL.md is missing the `name` field or content — fix the ZIP.
84
+ - `缺少描述`: the SKILL.md is missing the description — fix the ZIP or use `--description`.
85
+ - `数据库写入失败`: DB write failed — retry or check server logs.
86
+ - `409` / name conflict: use `--auto-rename` or choose a different `--name`.
87
+
88
+ ## Recommended Chaining
89
+ - `+upload-skill` → `+list-skills` (verify) → `+get-skill-content` (inspect) → `+edit-skill` (fine-tune) → `+submit-skill` (publish)
@@ -72,6 +72,8 @@ ae-cli analysis dashboard list --project-id <project_id>
72
72
  ae-cli analysis dashboard get --project-id <project_id> --dashboard-id <dashboard_id>
73
73
  ae-cli analysis dashboard update --project-id <project_id> --operation settings --dashboard-id <dashboard_id> --payload '{...}'
74
74
  ae-cli analysis dashboard-report-data export --project-id <project_id> --dashboard-id <dashboard_id>
75
+ ae-cli analysis run inspect --run-id <run_id>
76
+ ae-cli analysis artifact download --run-id <run_id> --artifact-id <artifact_id> --output <file>
75
77
  ae-cli analysis bi-panel-page-data run --project-id <project_id> --panel-id <panel_id> --page-key <page_key> --result-type charts
76
78
  ae-cli analysis project-space list --project-id <project_id>
77
79
  ae-cli analysis query cancel --run-id <run_id>
@@ -97,7 +99,7 @@ Capability-gateway output:
97
99
  - Successful commands return the standard gateway envelope: `{ "ok": true, "data": ..., "meta": ... }`.
98
100
  - Failed commands return `{ "ok": false, "error": ... }` and exit non-zero.
99
101
  - Inline `run` data is bounded by `--limit` and `--timeout-seconds`.
100
- - Export commands return `run_id`, `artifact_id`, artifact status, inspect path, and download path. Use `--artifact-format jsonl` for the artifact format; `--format` is reserved for CLI output formatting. Cancel with `ae-cli analysis query cancel --run-id <run_id>`.
102
+ - Export commands return `run_id`, `artifact_id`, status fields, and expiration fields. Use `--artifact-format jsonl` for the artifact format; `--format` is reserved for CLI output formatting. Poll with `ae-cli analysis run inspect --run-id <run_id>` until the run and artifact are complete, then download with `ae-cli analysis artifact download --run-id <run_id> --artifact-id <artifact_id> --output <file>`. Do not call raw inspect/download API paths directly. Cancel with `ae-cli analysis query cancel --run-id <run_id>`.
101
103
  - Unknown input fields and camelCase external fields are rejected by the gateway; use kebab-case CLI flags only.
102
104
 
103
105
  See [`references/analysis_gateway_assets.md`](references/analysis_gateway_assets.md) for the command matrix. Before running one command, read its dedicated reference file named as `<resource>_<action>.md`.
@@ -377,7 +379,7 @@ Reports:
377
379
  - `+update_report` ([doc](references/update_report.md))
378
380
  - `+delete_report` ([doc](references/delete_report.md))
379
381
 
380
- Dashboard, BI panel, project-space, folder, favorite, public-link, dashboard-definition, dashboard-daily-report, and dashboard/BI data commands are capability-gateway commands. Use `ae-cli analysis <resource> <action>` after reading [`references/analysis_gateway_assets.md`](references/analysis_gateway_assets.md); do not use old `+` dashboard/space/BI/public-link command names.
382
+ Dashboard, BI panel, project-space, folder, favorite, public-link, dashboard-definition, dashboard-daily-report, run, artifact, and dashboard/BI data commands are capability-gateway commands. Use `ae-cli analysis <resource> <action>` after reading [`references/analysis_gateway_assets.md`](references/analysis_gateway_assets.md); do not use old `+` dashboard/space/BI/public-link command names.
381
383
 
382
384
  Model Analysis (17):
383
385
  - `+build_event_analysis_qp` ([doc](references/build_event_analysis_qp.md))
@@ -20,6 +20,8 @@ Prefer export commands for long-running or large data:
20
20
 
21
21
  ```bash
22
22
  ae-cli analysis dashboard-report-data export --project-id 1 --dashboard-id 1001
23
+ ae-cli analysis run inspect --run-id run_0123456789abcdef0123456789abcdef
24
+ ae-cli analysis artifact download --run-id run_0123456789abcdef0123456789abcdef --artifact-id artifact_0123456789abcdef0123456789abcdef --output /tmp/dashboard.jsonl.gz
23
25
  ae-cli analysis bi-panel-page-data export --project-id 1 --panel-id 2001 --page-key main --result-type charts
24
26
  ae-cli analysis query cancel --run-id run_0123456789abcdef0123456789abcdef
25
27
  ```
@@ -52,7 +54,17 @@ Failures return:
52
54
  }
53
55
  ```
54
56
 
55
- Export commands return `run_id`, `artifact_id`, `status`, `artifact_status`, `inspect_path`, `download_path`, `expires_at`, and `expires_at_iso`. Download the artifact through the returned path; cancel by `run_id`.
57
+ Export commands return `run_id`, `artifact_id`, `status`, `artifact_status`, `expires_at`, and `expires_at_iso`. They do not expose raw inspect/download API paths.
58
+
59
+ Artifact workflow:
60
+
61
+ 1. Submit an export command and keep `data.run_id` and `data.artifact_id`.
62
+ 2. Poll `ae-cli analysis run inspect --run-id <run_id>` every few seconds until `data.status` is terminal and `data.artifact_status` is complete.
63
+ 3. Terminal success is `COMPLETED` or `SUCCEEDED`; terminal failure is `FAILED`, `CANCELED`, or `CANCELLED`. On failure, report the returned error fields instead of downloading.
64
+ 4. Download with `ae-cli analysis artifact download --run-id <run_id> --artifact-id <artifact_id> --output <file>`.
65
+ 5. Cancel long or abandoned exports with `ae-cli analysis query cancel --run-id <run_id>`.
66
+
67
+ Prefer the run/artifact commands over hand-written HTTP, Python, or curl. The descriptor paths are informational and may be internal `/api/cli/v1/...` paths behind a domain-routed CLI host.
56
68
 
57
69
  ## Command matrix
58
70
 
@@ -66,17 +78,19 @@ Export commands return `run_id`, `artifact_id`, `status`, `artifact_status`, `in
66
78
  | `dashboard share` | `analysis.dashboard.share` | Modify dashboard sharing | `--project-id`, `--dashboard-id`, `--payload` or `--member-authorities` | Share update result |
67
79
  | `dashboard delete` | `analysis.dashboard.delete` | Delete dashboards | `--project-id`, `--dashboard-ids '[...]'` | Delete result |
68
80
  | `dashboard handover` | `analysis.dashboard.handover` | Transfer dashboards | `--dashboard-ids`, `--to-user-id` | Handover result |
69
- | `dashboard copy` | `analysis.dashboard.copy` | Copy a dashboard | `--dashboard-id`, `--dashboard-name`, optional target IDs | Copied dashboard |
81
+ | `dashboard copy` | `analysis.dashboard.copy` | Copy a dashboard; omitted target IDs copy to the source location | `--dashboard-id`, `--dashboard-name`, optional target IDs | Copied dashboard |
70
82
  | `dashboard freeze` | `analysis.dashboard.freeze` | Freeze/unfreeze dashboards | `--dashboard-ids`, optional `--freeze false` | Freeze status |
71
83
  | `dashboard abnormal-get` | `analysis.dashboard.abnormal_get` | Inspect abnormal dependencies | `--dashboard-id` | Abnormal info |
72
84
  | `dashboard task-status` | `analysis.dashboard.task_status` | Inspect scheduled task status | `--dashboard-id` | Task status |
73
85
  | `dashboard-report-data run` | `analysis.dashboard_report_data.run` | Bounded inline dashboard report data | `--dashboard-id`, optional `--report-ids`, `--start-time`, `--end-time`, `--limit` | Inline data |
74
86
  | `dashboard-report-data export` | `analysis.dashboard_report_data.export` | Large/long dashboard report data | same as run, plus optional `--artifact-format jsonl` | Async artifact descriptor |
87
+ | `run inspect` | `analysis.run.inspect` | Poll async export status | `--run-id` | Run and artifact status |
88
+ | `artifact download` | `analysis.artifact.download` | Download run-bound export artifact | `--run-id`, `--artifact-id`, `--output` | Local output file info |
75
89
  | `query cancel` | `analysis.query.cancel` | Cancel gateway run/export | `--run-id`, optional `--reason` | Cancellation result |
76
- | `dashboard-definition export` | `analysis.dashboard_definition.export` | Export dashboard definition JSON | `--dashboard-folder-ids`, `--shared-spaces`, or `--payload` | Definition JSON |
90
+ | `dashboard-definition export` | `analysis.dashboard_definition.export` | Export dashboard definition JSON | `--dashboard-id`, `--dashboard-ids`, `--dashboard-folder-ids`, `--shared-spaces`, or `--payload` | Definition JSON |
77
91
  | `dashboard-definition import` | `analysis.dashboard_definition.import` | Validate/import dashboard definition | `--definition`, optional `--validate-only true` | Validation or import result |
78
- | `dashboard-daily-report update` | `analysis.dashboard_daily_report.update` | Update daily report config | `--dashboard-id`, optional config flags or `--payload` | Config result |
79
- | `dashboard-daily-report send` | `analysis.dashboard_daily_report.send` | Send daily report immediately | `--dashboard-id`, optional `--payload` | Async send result |
92
+ | `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 |
93
+ | `dashboard-daily-report send` | `analysis.dashboard_daily_report.send` | Send daily report immediately; defaults are sent when `--payload` is absent | `--dashboard-id`, optional config flags or `--payload` | Async send result |
80
94
  | `bi-panel list` | `analysis.bi_panel.list` | Find accessible BI panels | `--project-id`, optional list filters | Paginated BI panel summaries |
81
95
  | `bi-panel get` | `analysis.bi_panel.get` | Inspect released BI panel page structure | `--panel-id`, optional `--fields` | Panel structure |
82
96
  | `bi-panel create` | `analysis.bi_panel.create` | Create a BI panel | optional `--panel-name`, `--payload` | Created panel |
@@ -88,7 +102,7 @@ Export commands return `run_id`, `artifact_id`, `status`, `artifact_status`, `in
88
102
  | `bi-panel-page-data export` | `analysis.bi_panel_page_data.export` | Large/long BI page data | same as run, optional `--artifact-format jsonl` | Async artifact descriptor |
89
103
  | `project-space list` | `analysis.project_space.list` | Find accessible project spaces | `--project-id`, optional list filters | Paginated project spaces |
90
104
  | `project-space get` | `analysis.project_space.get` | Inspect one project space | `--project-id`, `--space-id` | Project space detail |
91
- | `project-space create` | `analysis.project_space.create` | Create a project space | `--space-name` or `--payload` | Created space |
105
+ | `project-space create` | `analysis.project_space.create` | Create a project space; `avatar_type` defaults to 1 when omitted | `--space-name` or `--payload` | Created space |
92
106
  | `project-space delete` | `analysis.project_space.delete` | Delete project spaces | `--space-id` or `--space-ids` | Delete result |
93
107
  | `project-space share` | `analysis.project_space.share` | Modify project-space members | `--space-id`, `--payload` | Share update result |
94
108
  | `project-space members` | `analysis.project_space.members` | Read project-space members | `--space-id` | Members |
@@ -109,6 +123,7 @@ Export commands return `run_id`, `artifact_id`, `status`, `artifact_status`, `in
109
123
  ```bash
110
124
  ae-cli analysis dashboard list --project-id 1 --query retention --limit 20
111
125
  ae-cli analysis dashboard update --project-id 1 --operation note-upsert --dashboard-id 1001 --note-title "Summary" --description "Weekly note" --yes
126
+ ae-cli analysis dashboard-definition export --project-id 1 --dashboard-id 1001 --export-file-name retention_dashboard
112
127
  ae-cli analysis dashboard-definition import --project-id 1 --definition '{"dashboard_folders":[],"shared_spaces":[]}' --validate-only true
113
128
  ae-cli analysis public-link create --project-id 1 --resource-type dashboard --resource-id 1001 --effective-at "2026-07-08 00:00:00" --expires-at "2026-08-08 00:00:00" --yes
114
129
  ```
@@ -0,0 +1,17 @@
1
+ # analysis artifact download
2
+
3
+ Use after `run inspect` shows an export artifact is complete.
4
+
5
+ Do not use before the run reaches a successful terminal status. Use `run inspect` first.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli analysis artifact download --run-id <run_id> --artifact-id <artifact_id> --output <file>
11
+ ```
12
+
13
+ Input sends `run_id`, `artifact_id`, and local `output` path.
14
+
15
+ Output is the gateway download result written to the local `--output` path. The command returns JSON with `run_id`, `artifact_id`, `output_path`, `bytes`, and response content headers.
16
+
17
+ Do not paste large artifact content into chat. Inspect the local file or summarize only the needed rows.
@@ -12,4 +12,14 @@ ae-cli analysis bi-panel-page-data export --project-id <project_id> --panel-id <
12
12
 
13
13
  Input sends `project_id`, `panel_id`, `page_key`, `result_type`, and optional control, paging, cache, request, timeout, and format fields. Use CLI flag `--artifact-format` for the gateway `format` input; `--format` is the CLI output formatter.
14
14
 
15
- Output is the gateway envelope. `data` contains an async export descriptor such as `run_id`, `artifact_id`, status fields, inspect path, and download path.
15
+ Output is the gateway envelope. `data` contains an async export descriptor with `run_id`, `artifact_id`, status fields, and expiration fields. It does not expose inspect/download API paths; use the CLI commands below.
16
+
17
+ Follow-up workflow:
18
+
19
+ 1. Save `data.run_id` and `data.artifact_id` from the export response.
20
+ 2. Poll status with `ae-cli analysis run inspect --run-id <run_id>`.
21
+ 3. Continue polling while status is running or pending. Treat `COMPLETED` or `SUCCEEDED` as success, and `FAILED`, `CANCELED`, or `CANCELLED` as terminal failure.
22
+ 4. On success, download with `ae-cli analysis artifact download --run-id <run_id> --artifact-id <artifact_id> --output <file>`.
23
+ 5. If the export is no longer needed, cancel with `ae-cli analysis query cancel --run-id <run_id> --yes`.
24
+
25
+ Do not write custom Python/curl for polling or download unless the CLI command itself is unavailable.
@@ -4,12 +4,14 @@ Use when the user wants to copy a dashboard, optionally copying reports and targ
4
4
 
5
5
  Do not use to create a blank dashboard. Use `dashboard create`.
6
6
 
7
+ If both `--to-space-id` and `--to-folder-id` are omitted, the gateway copies to the source dashboard's current location. Do not manually discover a target folder just to copy in place.
8
+
7
9
  Command:
8
10
 
9
11
  ```bash
10
12
  ae-cli analysis dashboard copy --project-id <project_id> --dashboard-id <source_dashboard_id> --dashboard-name <new_name> [--report-copy true] [--to-space-id <space_id>] [--to-folder-id <folder_id>] --yes
11
13
  ```
12
14
 
13
- Input sends `project_id`, `dashboard_id`, `dashboard_name`, and optional `report_copy`, `to_space_id`, `to_folder_id`.
15
+ Input sends `project_id`, `dashboard_id`, `dashboard_name`, `report_copy` defaulting to false, and optional `to_space_id`, `to_folder_id`.
14
16
 
15
17
  Output is the gateway envelope. `data` contains the copied dashboard result.
@@ -7,9 +7,11 @@ 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 1] [--host-url <url>] [--payload '{...}'] --yes
10
+ ae-cli analysis dashboard-daily-report send --project-id <project_id> --dashboard-id <dashboard_id> [--need-csv true] [--host-url <url>] [--payload '{...}'] --yes
11
11
  ```
12
12
 
13
- Input sends `project_id`, `dashboard_id`, and optional `need_csv`, `host_url`, `payload`.
13
+ Input sends `project_id`, `dashboard_id`, and optional daily report fields or `payload`.
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`, and `zone_offset=0`. When `--payload` is present, payload values remain authoritative; pass top-level flags only for fields you intentionally want to override.
14
16
 
15
17
  Output is the gateway envelope. `data` contains the immediate send result.
@@ -7,9 +7,11 @@ Do not use to send immediately. Use `dashboard-daily-report send`.
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 1] [--send-time <time>] [--send-title <title>] [--send-content <content>] [--payload '{...}'] --yes
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 '{...}'] --yes
11
11
  ```
12
12
 
13
13
  Input sends `project_id`, `dashboard_id`, and optional daily report fields or `payload`.
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.
16
+
15
17
  Output is the gateway envelope. `data` contains the daily report configuration update result.
@@ -1,15 +1,33 @@
1
1
  # analysis dashboard-definition export
2
2
 
3
- Use when the user wants to export dashboard definition JSON for selected dashboard folders or shared spaces.
3
+ Use when the user wants to export dashboard definition JSON for one dashboard, multiple dashboards, selected private dashboard folders, or shared project spaces.
4
4
 
5
5
  Do not use for dashboard report result data. Use `dashboard-report-data run` or `dashboard-report-data export`.
6
6
 
7
7
  Command:
8
8
 
9
9
  ```bash
10
- ae-cli analysis dashboard-definition export --project-id <project_id> [--dashboard-folder-ids '[...]'] [--shared-spaces '[...]'] [--export-file-name <name>] [--payload '{...}']
10
+ ae-cli analysis dashboard-definition export --project-id <project_id> [--dashboard-id <dashboard_id>] [--dashboard-ids '[1,2]'] [--dashboard-folder-ids '[...]'] [--shared-spaces '[...]'] [--export-file-name <name>] [--payload '{...}']
11
11
  ```
12
12
 
13
- Input sends `project_id` and optional `dashboard_folder_ids`, `shared_spaces`, `export_file_name`, `payload`.
13
+ Input sends `project_id` and optional `dashboard_id`, `dashboard_ids`, `dashboard_folder_ids`, `shared_spaces`, `export_file_name`, `payload`.
14
+
15
+ Prefer `--dashboard-id` or `--dashboard-ids` when the user asks for a single dashboard or a known dashboard list. The gateway resolves private-folder or project-space context.
16
+
17
+ For a private folder export, `--dashboard-folder-ids '[123]'` is accepted. Use the advanced descriptor form only when you need to restrict which dashboards inside the folder are exported.
18
+
19
+ Advanced private-folder descriptor form:
20
+
21
+ ```bash
22
+ ae-cli analysis dashboard-definition export --project-id <project_id> \
23
+ --dashboard-folder-ids '[{"dashboard_folder_id":123,"dashboard_ids":[456]}]'
24
+ ```
25
+
26
+ Advanced project-space descriptor form:
27
+
28
+ ```bash
29
+ ae-cli analysis dashboard-definition export --project-id <project_id> \
30
+ --shared-spaces '[{"space_id":10,"children":[{"is_folder":false,"id":456}]}]'
31
+ ```
14
32
 
15
33
  Output is the gateway envelope. `data` contains exported definition data or an export descriptor.
@@ -12,4 +12,14 @@ ae-cli analysis dashboard-report-data export --project-id <project_id> --dashboa
12
12
 
13
13
  Input sends `project_id`, `dashboard_id`, and optional `report_ids`, `filters`, `start_time`, `end_time`, `use_cache`, `request_id`, `timeout_seconds`, `format`. Use CLI flag `--artifact-format` for the gateway `format` input; `--format` is the CLI output formatter.
14
14
 
15
- Output is the gateway envelope. `data` contains an async export descriptor such as `run_id`, `artifact_id`, status fields, inspect path, and download path.
15
+ Output is the gateway envelope. `data` contains an async export descriptor with `run_id`, `artifact_id`, status fields, and expiration fields. It does not expose inspect/download API paths; use the CLI commands below.
16
+
17
+ Follow-up workflow:
18
+
19
+ 1. Save `data.run_id` and `data.artifact_id` from the export response.
20
+ 2. Poll status with `ae-cli analysis run inspect --run-id <run_id>`.
21
+ 3. Continue polling while status is running or pending. Treat `COMPLETED` or `SUCCEEDED` as success, and `FAILED`, `CANCELED`, or `CANCELLED` as terminal failure.
22
+ 4. On success, download with `ae-cli analysis artifact download --run-id <run_id> --artifact-id <artifact_id> --output <file>`.
23
+ 5. If the export is no longer needed, cancel with `ae-cli analysis query cancel --run-id <run_id> --yes`.
24
+
25
+ Do not write custom Python/curl for polling or download unless the CLI command itself is unavailable.
@@ -10,6 +10,6 @@ Command:
10
10
  ae-cli analysis project-space create --project-id <project_id> [--space-name <name>] [--space-desc <text>] [--avatar-type <type>] [--color-key <key>] [--avatar <value>] [--payload '{...}'] --yes
11
11
  ```
12
12
 
13
- Input sends `project_id` plus optional space metadata and `payload`.
13
+ Input sends `project_id` plus optional space metadata and `payload`. `avatar_type` defaults to `1` (word avatar) when omitted. When using `--payload`, put custom avatar fields in the payload or pass explicit top-level flags.
14
14
 
15
15
  Output is the gateway envelope. `data` contains the created project-space result.
@@ -0,0 +1,22 @@
1
+ # analysis run inspect
2
+
3
+ Use after an export command returns `run_id`.
4
+
5
+ Do not use for MCP query cancellation or old `request_id` lifecycle. This is only for capability-gateway export `run_id`.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli analysis run inspect --run-id <run_id>
11
+ ```
12
+
13
+ Input sends `run_id`.
14
+
15
+ Output is the gateway envelope. `data` contains run status, artifact status, and error fields when the run failed.
16
+
17
+ Polling rule:
18
+
19
+ - Continue polling while status is running or pending.
20
+ - Treat `COMPLETED` or `SUCCEEDED` as success.
21
+ - Treat `FAILED`, `CANCELED`, or `CANCELLED` as terminal failure.
22
+ - After success, download with `ae-cli analysis artifact download --run-id <run_id> --artifact-id <artifact_id> --output <file>`.
@@ -120,7 +120,7 @@ ae-cli dataops_operations +get_flow_instance_detail --spaceCode "${spaceCode}" \
120
120
  --flowCode ${flowCode} --flowInstanceId ${flowInstanceId}
121
121
  ae-cli dataops_operations +get_task_instance_detail --spaceCode "${spaceCode}" \
122
122
  --flowCode ${flowCode} --flowInstanceId ${flowInstanceId} \
123
- --taskName "${taskName}" --includeLog true
123
+ --taskInstanceId ${taskInstanceId} --includeLog true
124
124
  ```
125
125
 
126
126
  ---
@@ -139,7 +139,7 @@ ae-cli dataops_operations +get_task_instance_detail --spaceCode "${spaceCode}" \
139
139
  | `+get_task_params` | View DEV task parameter list | `--spaceCode` `--flowCode` `--taskCode` |
140
140
  | `+execute_flow` | Manual PROD execution | `--spaceCode` `--flowCode` `[--baseDate]` |
141
141
  | `dataops_operations +get_flow_instance_detail` | View operations instance DAG and task statuses | `--spaceCode` `--flowCode` `--flowInstanceId` |
142
- | `dataops_operations +get_task_instance_detail` | View operations task detail and optional logs | `--spaceCode` `--flowCode` `--flowInstanceId` (`--taskCode` or `--taskName`) `[--includeLog]` |
142
+ | `dataops_operations +get_task_instance_detail` | View operations task detail and optional logs | `--spaceCode` `--flowCode` `--flowInstanceId` (`--taskInstanceId` or `--taskCode` or `--taskName`) `[--includeLog]` |
143
143
  | `+preview_release_flow` | Preview pending DEV-to-PROD release changes without publishing | `--spaceCode` `--flowCode` |
144
144
  | `+release_flow` | Submit DEV-to-PROD release | `--spaceCode` `--flowCode` |
145
145
 
@@ -55,7 +55,7 @@ ae-cli dataops_operations +get_flow_instance_detail --spaceCode "${spaceCode}" \
55
55
  # Step 2: View task detail and logs
56
56
  ae-cli dataops_operations +get_task_instance_detail --spaceCode "${spaceCode}" \
57
57
  --flowCode ${flowCode} --flowInstanceId ${flowInstanceId} \
58
- --taskName "${taskName}" --includeLog true
58
+ --taskInstanceId ${taskInstanceId} --includeLog true
59
59
 
60
60
  # Step 3: Re-execute after fixing
61
61
  ae-cli dataops_flow +execute_flow --spaceCode "${spaceCode}" \
@@ -105,7 +105,7 @@ ae-cli dataops_flow +get_flow_overview --spaceCode "${spaceCode}" \
105
105
  | `+execute_flow` | Manual PROD execution | `--spaceCode` `--flowCode` `[--baseDate]` |
106
106
  | `dataops_operations +search_flow_instances` | Search operations workflow instances | `--spaceCode` `[--keyword]` `[--startDate]` `[--endDate]` `[--status]` `[--pageNum]` `[--pageSize]` |
107
107
  | `dataops_operations +get_flow_instance_detail` | Operations instance DAG and task statuses | `--spaceCode` `--flowCode` `--flowInstanceId` |
108
- | `dataops_operations +get_task_instance_detail` | Operations task detail and optional logs | `--spaceCode` `--flowCode` `--flowInstanceId` (`--taskCode` or `--taskName`) `[--includeLog]` |
108
+ | `dataops_operations +get_task_instance_detail` | Operations task detail and optional logs | `--spaceCode` `--flowCode` `--flowInstanceId` (`--taskInstanceId` or `--taskCode` or `--taskName`) `[--includeLog]` |
109
109
  | `dataops_operations +stop_flow_instance` | Stop a running execution | `--spaceCode` `--flowCode` exactly one of `--executeId` or `--flowInstanceId` |
110
110
  | `+get_task_params` | DEV task parameter list | `--spaceCode` `--flowCode` `--taskCode` |
111
111
  | `+update_flow` | Update DEV workflow name and/or remark | `--spaceCode` `--flowCode` `[--flowName]` `[--remark]` |
@@ -118,7 +118,7 @@ ae-cli dataops_flow +get_flow_overview --spaceCode "${spaceCode}" \
118
118
  - **Flow update**: `+update_flow` requires `--spaceCode`, `--flowCode`, and at least one of `--flowName` or `--remark`. It returns `action/result/status`; `result` is an array with items containing `flowCode`, `operationStatus`, `nameChanged`, and optional `flowName`.
119
119
  - **High-frequency release flows**: `+list_high_frequency_release_flows` requires `--spaceCode`; `--days`, `--topN`, `--minCount`, and `--status` are optional. Defaults are `days=30`, `topN=10`, and `status=SUCCESS`. It returns `period`, `filters`, `flows`, `returnedCount`, and `nextAction`; flow items include `rank`, `flowCode`, `flowName`, `releaseCount`, `lastReleaseTime`, and `avgIntervalHours`.
120
120
  - **Operations instance search**: `dataops_operations +search_flow_instances` requires `--spaceCode`; `--keyword`, `--startDate`, `--endDate`, `--status`, `--pageNum`, and `--pageSize` are optional. `--keyword` fuzzy-matches `flowName` or `flowCode`. `pageNum` defaults to `1`; `pageSize` defaults to `20` and maxes at `100`. It returns `totalCount`, `returnedCount`, `pageNum`, `pageSize`, `hasMore`, `instances`, `statusCounts`, `triggerTypeCounts`, and `ownerCounts`.
121
- - **Task instance detail**: `dataops_operations +get_task_instance_detail` requires `--spaceCode`, `--flowCode`, `--flowInstanceId`, and either `--taskCode` or exact `--taskName`. `--taskCode` takes precedence when both are passed. `--includeLog` is optional and defaults to `false`. It returns `success`, `flowInstanceId`, `taskCode`, `taskName`, `taskInstanceId`, `status`, `task`, `taskInstance`, `definition`, and `log` only when requested.
121
+ - **Task instance detail**: `dataops_operations +get_task_instance_detail` requires `--spaceCode`, `--flowCode`, `--flowInstanceId`, and one selector: `--taskInstanceId`, `--taskCode`, or exact `--taskName`. Prefer `--taskInstanceId` because retries can create multiple instances with the same task code/name. `--includeLog` is optional and defaults to `false`. It returns `success`, `flowInstanceId`, `taskCode`, `taskName`, `taskInstanceId`, `status`, `task`, `taskInstance`, `definition`, and `log` only when requested.
122
122
  - **env**: `DEV` (development) | `PROD` (production, instance list defaults to PROD)
123
123
  - **flow list paging**: `+list_flows` requires `--spaceCode`; `--keyword`, `--pageNum`, and `--pageSize` are optional. It returns `flows`, `totalCount`, `returnedCount`, `pageNum`, `pageSize`, and `hasMore`; flow items include `latestProductionInstance` only when available. `pageSize` defaults to `20` and maxes at `100`.
124
124
  - **Task parameters**: `+get_task_params` requires `--spaceCode`, `--flowCode`, and `--taskCode`; it has no optional flags. It queries DEV and returns `data` as an array. Items include fields such as `paramKey`, `paramType`, `paramDataType`, `paramFrom`, and built-in flags like `isBd`.
@@ -18,6 +18,7 @@ Use the `dataops_integration` subcommand to manage datasources and sync solution
18
18
  - sourceConfig/sinkConfig/channelConfig/fieldsMapping are all JSON strings
19
19
  - Sync solution updates are not partial patches: call `+get_sync_detail --withParams true` first, then submit complete sourceConfig and sinkConfig JSON. Pass channelConfig and fieldsMapping when keeping or updating them
20
20
  - Test datasource connection before creating sync solution
21
+ - `sinkConfig.dataSaveMode` codes are fixed: `1 = APPEND_DATA` (insert/append new data; UI label `插入新数据`), `2 = OVERWRITE` (`DROP_DATA`; UI label `覆盖写入`). Never describe `dataSaveMode=1` as overwrite; use `2` for overwrite.
21
22
 
22
23
  ---
23
24
 
@@ -1,7 +1,7 @@
1
1
  # ae-engage +flow_node_config_schema
2
2
 
3
3
 
4
- Query the configuration schema for a flow node type.
4
+ Query the configuration schema for one flow node type before constructing a `save_flow` node config.
5
5
 
6
6
  Mapped command: `ae-cli engage +flow_node_config_schema`
7
7
 
@@ -9,13 +9,34 @@ Mapped command: `ae-cli engage +flow_node_config_schema`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--node_type` | string | Yes | node type |
12
+ | `--node_type` | string | Yes | Flow node type |
13
+
14
+ ## When To Use
15
+
16
+ Call this before writing any non-trivial `save_flow` `nodes[].config` or `nodeConfigs[].config`. The response is the source of truth for:
17
+
18
+ - `required` and `conditional_required` fields
19
+ - defaulted fields that can be omitted from draft input
20
+ - enum values and allowed modes
21
+ - `minimal_valid`, `full_valid`, and `common_invalid` examples
22
+ - submit-time requirements for stricter `save_submit_flow` validation
23
+
24
+ Do not use this command to build an old full `FlowSaveReqDTO`, `nodeList`, or `edgeList`. `save_flow` uses compact `nodes` / `edges`.
25
+
26
+ ## Recent Save Flow Notes
27
+
28
+ - `event_trigger` supports `targetUserType=1` custom and `targetUserType=3` all users; existing cluster `targetUserType=2` is not supported for this node.
29
+ - `event_trigger` and `event_judge` A-segment trigger rules are non-branch rules and use `periodStart`, `periodEnd`, and `periodTimeSymbol`.
30
+ - `event_split_flow` branch rules use `delayTime` and `delayTimeSymbol`; `branchType=1` also needs `targetClusterType`, and non-all-user branches need `clusterKey`.
31
+ - Push nodes default `processType=1`, `enableChannelTouchLimits=0`, and `isOccasionUp=false`.
32
+ - The validator normalizes compatible inputs before schema validation: apostrophe-prefixed field aliases, case-insensitive property aliases, `enableChannelTouchLimits` booleans, string `"0"`/`"1"` QP relations inside `targetClusterQp`, and `clusterPredictCount: null`.
33
+ - For push nodes, `contentList[].content` should be a JSON array; the validator also accepts a JSON-stringified array for compatibility. For push `OBJ_ARRAY` params, `value` must still be a JSON array and `objArray` must be copied from `query_channel_detail data.config.paramsList[].objArray`.
13
34
 
14
35
  ## Enum Notes
15
36
 
16
37
  ### `--node_type`
17
38
 
18
- Common node types include:
39
+ Schema-backed node types include:
19
40
 
20
41
  - `single_trigger`
21
42
  - `repeat_trigger`
@@ -25,15 +46,10 @@ Common node types include:
25
46
  - `message_push`
26
47
  - `wechat_push`
27
48
  - `webhook_push`
28
- - `config_push`
29
- - `tag`
30
49
  - `time_control`
31
50
  - `feature_split_flow`
32
51
  - `event_split_flow`
33
- - `trigger_prop_split_flow`
34
- - `percent_split_flow`
35
52
  - `ab_split_flow`
36
- - `race_split_flow`
37
53
  - `exit_flow`
38
54
 
39
55
  ## Examples
@@ -41,3 +57,11 @@ Common node types include:
41
57
  ```bash
42
58
  ae-cli engage +flow_node_config_schema --node_type message_push
43
59
  ```
60
+
61
+ Typical flow:
62
+
63
+ ```bash
64
+ ae-cli engage +flow_node_config_schema --node_type event_trigger
65
+ ae-cli engage +validate_flow_node_config \
66
+ --node_type event_trigger --operation_mode save_flow --config '<config-json-string>'
67
+ ```