@thinkingai/ae-cli 6.1.17 → 6.1.19

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 (126) hide show
  1. package/README.md +2 -0
  2. package/README.zh.md +6 -0
  3. package/dist/{auth-77BUFLGC.js → auth-QPEVVBKT.js} +20 -15
  4. package/dist/auth-UMJAA72O.js +15 -0
  5. package/dist/{capability-72DTW5M2.js → capability-ASI62I4A.js} +53 -15
  6. package/dist/{chunk-UW5UN47B.js → chunk-533JK3YX.js} +2 -0
  7. package/dist/{chunk-UOUS37JQ.js → chunk-6QK7SYYY.js} +5 -4
  8. package/dist/{chunk-TUKQZTMI.js → chunk-7K24F7T2.js} +2 -0
  9. package/dist/{chunk-OO6XR6LK.js → chunk-AMBFK2K3.js} +2 -0
  10. package/dist/{sync-DAVKYVMW.js → chunk-B5HMQAOM.js} +31 -540
  11. package/dist/{chunk-VR3LCBHW.js → chunk-DKEXH6Q5.js} +6 -5
  12. package/dist/{chunk-VTWMIC5L.js → chunk-E2JKXMVO.js} +2 -0
  13. package/dist/{chunk-LYVNONC4.js → chunk-FR2EDAQM.js} +36 -0
  14. package/dist/{chunk-ILIU36SU.js → chunk-GJXRF7Y6.js} +6 -5
  15. package/dist/{chunk-DWO43OIB.js → chunk-JQ3ENZZH.js} +2 -0
  16. package/dist/chunk-JYMGHGCE.js +191 -0
  17. package/dist/{chunk-GT46FPXN.js → chunk-KEWVSO64.js} +18 -8
  18. package/dist/chunk-KZ6ZHF5J.js +294 -0
  19. package/dist/chunk-O6K2ODUE.js +318 -0
  20. package/dist/chunk-QL6R6TSK.js +25215 -0
  21. package/dist/{chunk-4SGZG4XY.js → chunk-RWXIXOZG.js} +28 -13
  22. package/dist/{chunk-YA6SMTXG.js → chunk-S5PONFBM.js} +5 -4
  23. package/dist/{chunk-4NN5IWVN.js → chunk-T6OSFQZD.js} +2 -0
  24. package/dist/{chunk-PTE56QPL.js → chunk-TKHSULJT.js} +6 -0
  25. package/dist/{chunk-6EIJSNBD.js → chunk-Y74WTIKJ.js} +2 -0
  26. package/dist/{client-TKG4WBHN.js → client-N7NGZUNI.js} +6 -4
  27. package/dist/{community-report-client-FI4LNVYS.js → community-report-client-6OL6GBQW.js} +3 -3
  28. package/dist/{config-RE6CMGPK.js → config-XNMACCKX.js} +10 -8
  29. package/dist/{data-integration-XQYB4X4F.js → data-integration-4NZGZ45E.js} +2502 -272
  30. package/dist/index.js +137 -1245
  31. package/dist/{local-data-upload-client-BWHSUQQK.js → local-data-upload-client-EFHDLXFG.js} +3 -3
  32. package/dist/{memory-YK33G4T7.js → memory-HBJQ2GC5.js} +8 -7
  33. package/dist/{metadata-UILXHBWF.js → metadata-62EWBEIG.js} +12 -11
  34. package/dist/{model-NR3JHFSJ.js → model-BHLJ2QMT.js} +10 -9
  35. package/dist/personal-semantic-preference-JBVMAI7L.js +240 -0
  36. package/dist/project-semantic-BQ4MPUS5.js +1115 -0
  37. package/dist/sync-MUWPRM5I.js +522 -0
  38. package/dist/{te-agent-4BKBODMF.js → te-agent-WQZTMEK4.js} +12 -10
  39. package/dist/{te-analysis-O6DCO6BS.js → te-analysis-MNCG65LU.js} +534 -48
  40. package/dist/{te-community-HLC43QKH.js → te-community-BNE6KREL.js} +8 -7
  41. package/dist/{te-dataops-EJP56W3K.js → te-dataops-TXLKM2W6.js} +469 -68
  42. package/dist/{te-engage-FGBGQ4IY.js → te-engage-TPKLRVTL.js} +84 -10
  43. package/dist/{te-experiment-SO5MPDMJ.js → te-experiment-6BYKTCY7.js} +303 -12
  44. package/dist/{te-kb-SQCLHG6X.js → te-kb-BUD6N3NI.js} +312 -25
  45. package/dist/{te-system-YARIK4S5.js → te-system-44LZJDTQ.js} +573 -37
  46. package/dist/{te-team-EFKWYKMK.js → te-team-XMP47YXE.js} +10 -7
  47. package/dist/{update-OGPSZM5A.js → update-UODFOZ4P.js} +9 -7
  48. package/package.json +18 -9
  49. package/skills/ae-agent/SKILL.md +3 -4
  50. package/skills/ae-agent/references/edit-skill.md +3 -0
  51. package/skills/ae-agent/references/get-skill-content.md +1 -1
  52. package/skills/ae-agent/references/rescan-skills.md +15 -13
  53. package/skills/ae-agent/references/upload-skill.md +7 -4
  54. package/skills/ae-analysis/SKILL.md +45 -4
  55. package/skills/ae-analysis/metadata_resolution.md +38 -4
  56. package/skills/ae-analysis/references/analysis_data_retrieval.md +29 -0
  57. package/skills/ae-analysis/references/analysis_gateway_assets.md +1 -1
  58. package/skills/ae-analysis/references/asset_authentication_export.md +22 -0
  59. package/skills/ae-analysis/references/asset_authentication_list.md +18 -14
  60. package/skills/ae-analysis/references/asset_authentication_update.md +29 -14
  61. package/skills/ae-analysis/references/audience_models.md +18 -0
  62. package/skills/ae-analysis/references/command_index.md +19 -11
  63. package/skills/ae-analysis/references/dashboard_get.md +18 -1
  64. package/skills/ae-analysis/references/dashboard_update.md +3 -0
  65. package/skills/ae-analysis/references/personal_semantic_preference_add.md +23 -0
  66. package/skills/ae-analysis/references/personal_semantic_preference_delete.md +17 -0
  67. package/skills/ae-analysis/references/personal_semantic_preference_get.md +19 -0
  68. package/skills/ae-analysis/references/personal_semantic_preference_list.md +21 -0
  69. package/skills/ae-analysis/references/personal_semantic_preference_update.md +19 -0
  70. package/skills/ae-analysis/references/project_timezone_update.md +13 -4
  71. package/skills/ae-analysis/references/property_create.md +2 -0
  72. package/skills/ae-analysis/references/super_metadata_batch_create.md +2 -0
  73. package/skills/ae-analysis/references/user_cluster_models.md +2 -0
  74. package/skills/ae-analysis/references/user_cluster_update.md +8 -4
  75. package/skills/ae-analysis/references/user_tag_create.md +7 -1
  76. package/skills/ae-analysis/references/user_tag_models.md +8 -2
  77. package/skills/ae-data-integration/SKILL.md +24 -4
  78. package/skills/ae-data-integration/references/custom-layer.md +93 -0
  79. package/skills/ae-data-integration/references/error-handling.md +145 -0
  80. package/skills/ae-data-integration/references/handoff.md +77 -18
  81. package/skills/ae-data-integration/references/local-analysis.md +1 -1
  82. package/skills/ae-data-integration/references/reuse.md +9 -5
  83. package/skills/ae-data-integration/references/sink-upload.md +1 -1
  84. package/skills/ae-data-integration/references/source-inspect.md +35 -13
  85. package/skills/ae-data-integration/references/tracking-plan.md +7 -5
  86. package/skills/ae-data-integration/references/transform.md +12 -10
  87. package/skills/ae-data-integration/references/ue-mapping.md +33 -11
  88. package/skills/ae-data-integration/references/ue-routing.md +23 -0
  89. package/skills/ae-dataops/SKILL.md +11 -1
  90. package/skills/ae-dataops/references/dataops-backfill.md +135 -0
  91. package/skills/ae-engage/SKILL.md +5 -0
  92. package/skills/ae-engage/references/build-task-save-guide.md +14 -1
  93. package/skills/ae-engage/references/save-flow.md +37 -1
  94. package/skills/ae-engage/references/save-task.md +88 -0
  95. package/skills/ae-experiment/SKILL.md +14 -4
  96. package/skills/ae-experiment/references/manage_feature_whitelist.md +66 -0
  97. package/skills/ae-experiment/references/manage_guardrail_metrics.md +26 -0
  98. package/skills/ae-experiment/references/save_experiment.md +1 -1
  99. package/skills/ae-experiment/references/save_metric.md +20 -8
  100. package/skills/ae-kb/SKILL.md +121 -10
  101. package/skills/ae-project-semantic/SKILL.md +193 -0
  102. package/skills/ae-project-semantic/references/query-routing-v5.md +165 -0
  103. package/skills/ae-project-semantic/references/recommendation-quality.md +68 -0
  104. package/skills/ae-system/SKILL.md +28 -30
  105. package/skills/ae-system/references/channel-management.md +303 -0
  106. package/dist/auth-2WTQOP77.js +0 -14
  107. package/dist/capability-PJHNI4GJ.js +0 -315
  108. package/dist/chunk-4KVPKXFX.js +0 -98
  109. package/dist/chunk-C4MGVGJW.js +0 -13
  110. package/dist/chunk-P3FGXJTU.js +0 -349
  111. package/dist/chunk-QGM4M3NI.js +0 -37
  112. package/dist/chunk-RGKJGKT7.js +0 -71
  113. package/dist/chunk-SAU3QFIQ.js +0 -556
  114. package/dist/chunk-VPKZ7I72.js +0 -509
  115. package/dist/chunk-ZZUOD757.js +0 -598
  116. package/dist/memory-CHRU2F7W.js +0 -893
  117. package/dist/metadata-XXR34N5P.js +0 -339
  118. package/dist/model-K3KLWIW6.js +0 -139
  119. package/dist/sync-FCKOVWWS.js +0 -10261
  120. package/dist/te-agent-HLW4VTQK.js +0 -3893
  121. package/dist/te-analysis-ZMNGOVNW.js +0 -8958
  122. package/dist/te-community-6HPBWJUZ.js +0 -1859
  123. package/dist/te-dataops-HDRUXY4K.js +0 -2208
  124. package/dist/te-engage-RAK5PESW.js +0 -4898
  125. package/dist/te-experiment-VZF7BT6G.js +0 -770
  126. package/dist/te-system-Z77IKZFN.js +0 -2213
@@ -1,24 +1,39 @@
1
- # analysis-meta asset-authentication update
1
+ # analysis-governance asset-authentication update
2
2
 
3
- Use when the user needs to batch authenticate or unauthenticate assets.
3
+ Use to authenticate or revoke an explicit set of typed project assets.
4
4
 
5
- Do not use it to edit the asset itself or to authenticate a guessed asset name; call `asset authentication-list` first and submit only returned asset identities.
5
+ Do not use it with guessed identities or as a rule engine; derive an explicit typed set from `list` or `export` first.
6
6
 
7
- Command:
7
+ Inline command:
8
8
 
9
9
  ```bash
10
- ae-cli analysis-meta asset-authentication update --project-id <project_id> --payload '{"authentication_status":1,"asset_list":[{"asset_name":"<name>","asset_type":"<type>"}]}'
11
- ae-cli analysis-meta asset-authentication update --dry-run
10
+ ae-cli analysis-governance asset-authentication update --project-id <project_id> --authentication-status 1 --asset-refs '[{"resource_type":"dashboard","resource_key":"4350"}]'
12
11
  ```
13
12
 
14
- Capability id: `metadata.asset_authentication.update`.
13
+ Large file command:
15
14
 
16
- Input sends `project_id`, `payload`.
15
+ ```bash
16
+ ae-cli analysis-governance asset-authentication update --project-id <project_id> --authentication-status 1 --asset-file /tmp/selected-assets.jsonl --expected-snapshot-hash <snapshot_hash> --dry-run
17
+ ```
18
+
19
+ Capability id: `governance.asset_authentication.update`.
20
+
21
+ Choose exactly one identity input:
22
+
23
+ - `--asset-refs` for an inline typed array.
24
+ - `--asset-file` for JSONL rows containing `resource_type` and `resource_key`; extra export columns are ignored.
25
+ - `--asset-type` with `--asset-ids` as a same-type convenience form.
26
+
27
+ The CLI always normalizes the request to `asset_refs[]`. A bare `asset_ids[]` array is never sent to Common. When `expected_snapshot_hash` differs from the current authentication set, the complete update is rejected with `SNAPSHOT_CONFLICT`.
17
28
 
18
- Output is a successful gateway envelope with no business data. Verify with `asset authentication-list`.
29
+ The response includes requested, resolved, changed, unchanged, and failed counts; retry only the returned failures.
30
+
31
+ ## analysis-meta asset-authentication update
32
+
33
+ The legacy `--payload` entry remains available for one release cycle.
34
+
35
+ ```bash
36
+ ae-cli analysis-meta asset-authentication update --project-id <project_id> --payload '{"authentication_status":1,"asset_list":[{"asset_name":"4350","asset_type":"dashboard"}]}'
37
+ ```
19
38
 
20
- ## Parameters
21
- | Parameter | Required | Description |
22
- |---|---|---|
23
- | `--project-id` | Yes | Numeric project ID. |
24
- | `--payload` | Yes | `{authentication_status, asset_list}`. `authentication_status` is `1` to authenticate or `0` to revoke; each `asset_list` item requires the real `asset_name` and `asset_type` returned by the list command. |
39
+ Legacy Input is `project_id` plus `payload`. Legacy Output is the new structured batch result, although the input shape remains deprecated.
@@ -25,12 +25,30 @@ A property is either a name or a typed object:
25
25
 
26
26
  ## Time range
27
27
 
28
+ Use semantic `mode`, `unit`, and `value` fields. Always pass `unit` with `recent` or `previous`; the supported units are `day`, `week`, `month`, `quarter`, and `year`.
29
+
30
+ | User intent | `time_range` |
31
+ |---|---|
32
+ | Today | `{"mode":"recent","unit":"day","value":1}` |
33
+ | This week | `{"mode":"recent","unit":"week","value":1}` |
34
+ | This month | `{"mode":"recent","unit":"month","value":1}` |
35
+ | This quarter | `{"mode":"recent","unit":"quarter","value":1}` |
36
+ | This year | `{"mode":"recent","unit":"year","value":1}` |
37
+ | Yesterday | `{"mode":"previous","unit":"day","value":1}` |
38
+ | Previous month | `{"mode":"previous","unit":"month","value":1}` |
39
+ | From a fixed date through today | `{"mode":"start_to_today","start_time":"2026-07-01"}` |
40
+ | From a fixed date through yesterday | `{"mode":"start_to_yesterday","start_time":"2026-07-01"}` |
41
+
42
+ Use `custom` only when both boundaries are fixed:
43
+
28
44
  ```json
29
45
  {"mode":"recent","unit":"day","value":7}
30
46
  {"mode":"previous","unit":"day","value":30}
31
47
  {"mode":"custom","start_time":"2026-07-01","end_time":"2026-07-07"}
32
48
  ```
33
49
 
50
+ Do not pass backend `recent_day` encodings inside `time_range`; the capability compiles the semantic object to the existing analysis representation.
51
+
34
52
  ## Filter group
35
53
 
36
54
  Groups use `{relation,items}`. Each item has `field`, `operator`, and optional `values`:
@@ -39,11 +39,11 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
39
39
  | `ae-cli analysis dashboard freeze` | analysis.dashboard.freeze | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-ids` (json; required) — Dashboard ID array.<br>`--freeze` (boolean; optional) — true to freeze, false to unfreeze. Default: true. | [dashboard_freeze.md](dashboard_freeze.md) |
40
40
  | `ae-cli analysis dashboard get` | analysis.dashboard.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--use-cache` (boolean; optional) — Whether to use cached dashboard detail. Default: true. | [dashboard_get.md](dashboard_get.md) |
41
41
  | `ae-cli analysis dashboard handover` | analysis.dashboard.handover | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-ids` (json; required) — Dashboard ID array.<br>`--to-user-id` (number; required) — Target user ID. | [dashboard_handover.md](dashboard_handover.md) |
42
- | `ae-cli analysis dashboard list` | analysis.dashboard.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional projection field array. Supported fields: dashboard_id, dashboard_name, remark.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected. | [dashboard_list.md](dashboard_list.md) |
42
+ | `ae-cli analysis dashboard list` | analysis.dashboard.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional projection field array. Supported fields: dashboard_id, dashboard_name, remark.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset. | [dashboard_list.md](dashboard_list.md) |
43
43
  | `ae-cli analysis dashboard share` | analysis.dashboard.share | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--member-authorities` (json; optional) — Complete user authority map: {"<numeric_user_id>":"READ\|EDIT\|CREATOR\|MAINTAIN"}. An empty object removes all directly shared users.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_share.md](dashboard_share.md) |
44
44
  | `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) |
45
45
  | `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) |
46
- | `ae-cli analysis dashboard update` | analysis.dashboard.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--operation` (string; required) — Update operation: settings, note-upsert, or business-filter.<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>`--filter` (json; optional) — Dashboard-level business filter in snake_case QP form. Required with --operation business-filter. Pass {"junction_kind":"and","ta_filters":[]} to clear it.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_update.md](dashboard_update.md) |
46
+ | `ae-cli analysis dashboard update` | analysis.dashboard.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--operation` (string; required) — Update operation: settings, note-upsert, default-filter, or business-filter.<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>`--filter-name` (string; optional) — Saved filter name. Required with --operation default-filter.<br>`--filter` (json; optional) — Saved filter in snake_case QP form. Required with --operation default-filter or business-filter. Pass {"junction_kind":"and","ta_filters":[]} to clear a business filter.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_update.md](dashboard_update.md) |
47
47
  | `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) |
48
48
  | `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) |
49
49
  | `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) |
@@ -93,8 +93,8 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
93
93
  | `ae-cli analysis report create` | analysis.report.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--report-name` (string; required) — Report display name.<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. Report create/update also supports tag for saved tag report data; use tag as the AI-facing spelling.<br>`--definition` (json; required) — AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. Distribution filters must be attached to the corresponding distribution_metrics[].filters; do not use top-level filters or relation. 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, punctuation, or a reserved word must be delimited with double quotes, for example SELECT "#user_id", "$part_event", "end" FROM ...; single quotes are string literals. For multiline SQL JSON, the decoded sql value must contain a real line break; do not submit a literal \n sequence outside quoted SQL text. 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. For model_type=tag, pass a tag report intent such as {"tag":{"tag_name":"vip_users","time_range":{"mode":"recent","unit":"day","value":7}}}. Tags are supported for report create/update and report data, not ad-hoc analysis.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Reuse the unchanged definition and only pass values explicitly confirmed by the user. This option is not supported with --model-type tag.<br>`--report-desc` (string; optional) — Optional report description.<br>`--cache-seconds` (number; optional) — Optional cache duration in seconds.<br>`--query-duration-ms` (number; optional) — Optional last query duration in milliseconds.<br>`--dashboard-ids` (json; optional) — Optional dashboard ID array to associate after creation. | [report_create.md](report_create.md) |
94
94
  | `ae-cli analysis report delete` | analysis.report.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--report-ids` (json; required) — Report ID array. | [report_delete.md](report_delete.md) |
95
95
  | `ae-cli analysis report get` | analysis.report.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID. | [report_get.md](report_get.md) |
96
- | `ae-cli analysis report list` | analysis.report.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--model-types` (json; optional) — Optional semantic report model JSON array, for example ["event","sql","tag","revenue"].<br>`--limit` (number; optional, min=1, max=200) — Report page size. Default: 50, max: 200. Values outside 1..200 are rejected.<br>`--offset` (number; optional, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected. | [report_list.md](report_list.md) |
97
- | `ae-cli analysis report list-export` | analysis.report.list_export | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--model-types` (json; optional) — Optional semantic report model JSON array, for example ["event","sql","tag","revenue"].<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>`--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>.<br>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [report_list_export.md](report_list_export.md) |
96
+ | `ae-cli analysis report list` | analysis.report.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--model-types` (json; optional) — Optional semantic report model JSON array, for example ["event","sql","tag","revenue"].<br>`--limit` (number; optional, min=1, max=200) — Report page size. Default: 50, max: 200. Values outside 1..200 are rejected.<br>`--offset` (number; optional, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset. | [report_list.md](report_list.md) |
97
+ | `ae-cli analysis report list-export` | analysis.report.list_export | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--model-types` (json; optional) — Optional semantic report model JSON array, for example ["event","sql","tag","revenue"].<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>`--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>.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset.<br>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [report_list_export.md](report_list_export.md) |
98
98
  | `ae-cli analysis report update` | analysis.report.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID to update.<br>`--report-version` (number; required) — Current report version from report get.<br>`--report-name` (string; optional) — New report display name.<br>`--report-desc` (string; optional) — New report description.<br>`--model-type` (string; optional) — 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. Report create/update also supports tag for saved tag report data; use tag as the AI-facing spelling.<br>`--definition` (json; optional) — AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. Distribution filters must be attached to the corresponding distribution_metrics[].filters; do not use top-level filters or relation. 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, punctuation, or a reserved word must be delimited with double quotes, for example SELECT "#user_id", "$part_event", "end" FROM ...; single quotes are string literals. For multiline SQL JSON, the decoded sql value must contain a real line break; do not submit a literal \n sequence outside quoted SQL text. 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. For model_type=tag, pass a tag report intent such as {"tag":{"tag_name":"vip_users","time_range":{"mode":"recent","unit":"day","value":7}}}. Tags are supported for report create/update and report data, not ad-hoc analysis.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Reuse the unchanged definition and only pass values explicitly confirmed by the user. This option is not supported with --model-type tag.<br>`--cache-seconds` (number; optional) — Optional cache duration in seconds.<br>`--query-duration-ms` (number; optional) — Optional last query duration in milliseconds. | [report_update.md](report_update.md) |
99
99
  | `ae-cli analysis report-abnormal get` | analysis.report_abnormal.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID. | [report_abnormal_get.md](report_abnormal_get.md) |
100
100
  | `ae-cli analysis report-change-log get` | analysis.report_change_log.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID.<br>`--history-version` (number; optional) — Optional history version. Omit for latest. | [report_change_log_get.md](report_change_log_get.md) |
@@ -113,7 +113,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
113
113
  | `ae-cli analysis user-cluster get` | analysis.user_cluster.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--cluster-names` (json; required) — JSON array of exact cluster_name values. | [user_cluster_get.md](user_cluster_get.md) |
114
114
  | `ae-cli analysis user-cluster list` | analysis.user_cluster.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--authenticated-only` (boolean; optional) — Return only resources whose metadata can be resolved under the current identity. | [user_cluster_list.md](user_cluster_list.md) |
115
115
  | `ae-cli analysis user-cluster refresh` | analysis.user_cluster.refresh | write | `--project-id` (number; required) — Numeric project ID.<br>`--cluster-name` (string; required) — Exact cluster_name. Discover real values with analysis user-cluster list first. | [user_cluster_refresh.md](user_cluster_refresh.md) |
116
- | `ae-cli analysis user-cluster update` | analysis.user_cluster.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--cluster-name` (string; required) — Exact cluster_name. Discover real values with analysis user-cluster list first.<br>`--display-name` (string; optional, minLength=1, maxLength=80) — Optional new display name. Maximum: 80 characters.<br>`--definition-request` (json; optional) — Optional semantic snake_case cluster definition. Read user_cluster_models.md; raw filts, C-codes, ftv, columnName, and backend DTOs are rejected.<br>`--authenticated-only` (boolean; optional) — Return only resources whose metadata can be resolved under the current identity.<br>`--remark` (string; optional, maxLength=400) — Optional new remark. Maximum: 400 characters.<br>`--zone-offset` (number; optional) — Optional timezone offset. UTC+8 is 8; UTC-5 is -5.<br>`--auto-refresh-cron` (string; optional) — Optional Quartz cron expression for an existing enabled auto-refresh schedule. This does not enable auto refresh. | [user_cluster_update.md](user_cluster_update.md) |
116
+ | `ae-cli analysis user-cluster update` | analysis.user_cluster.update | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--cluster-name` (string; required) — Exact cluster_name. Discover real values with analysis user-cluster list first.<br>`--display-name` (string; optional, minLength=1, maxLength=80) — Optional new display name. Maximum: 80 characters.<br>`--definition-request` (json; optional) — Optional semantic snake_case cluster definition. Its type must match the existing cluster type; update cannot change the analysis entity. Read user_cluster_models.md; raw filts, C-codes, ftv, columnName, and backend DTOs are rejected.<br>`--authenticated-only` (boolean; optional) — Return only resources whose metadata can be resolved under the current identity.<br>`--remark` (string; optional, maxLength=400) — Optional new remark. Maximum: 400 characters.<br>`--zone-offset` (number; optional) — Optional timezone offset. UTC+8 is 8; UTC-5 is -5.<br>`--auto-refresh-cron` (string; optional) — Optional Quartz cron expression for an existing enabled auto-refresh schedule. This does not enable auto refresh. | [user_cluster_update.md](user_cluster_update.md) |
117
117
  | `ae-cli analysis user-cluster update-id` | analysis.user_cluster.update_id | write | `--project-id` (number; required) — Numeric project ID.<br>`--cluster-name` (string; required) — Exact cluster_name. Discover real values with analysis user-cluster list first.<br>`--display-name` (string; optional, minLength=1, maxLength=80) — Optional new display name. Maximum: 80 characters.<br>`--input-file` (string; optional) — Local CSV path. The CLI uploads it with purpose analysis.user.id_import before executing the create/update capability.<br>`--input-file-id` (string; optional) — Reuse a file already uploaded for purpose analysis.user.id_import.<br>`--file-content` (string; optional) — Headerless UTF-8 CSV. No header row. Exactly one non-empty column per row: association-property value for the primary user entity, otherwise the entity ID.<br>`--remarks` (string; optional, maxLength=400) — Optional remarks. Maximum: 400 characters.<br>`--association-property` (string; optional) — Required only for the primary user entity. The first CSV column is matched against this allowed user property; #user_id is forbidden. Omit for non-primary entities. | [user_cluster_update_id.md](user_cluster_update_id.md) |
118
118
  | `ae-cli analysis user-cluster-member export` | analysis.user_cluster_member.export | read | `--cluster-name` (string; required) — Exact cluster_name. Discover real values with analysis user-cluster list first.<br>`--project-id` (number; required) — Numeric project ID.<br>`--property-names` (json; optional) — Optional JSON array of user property names to include.<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>`--artifact-format` (string; optional) — Artifact format: jsonl or csv. Default: jsonl. Both formats use native full-download streaming and gzip compression.<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>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [user_cluster_member_export.md](user_cluster_member_export.md) |
119
119
  | `ae-cli analysis user-cluster-member list` | analysis.user_cluster_member.list | read | `--cluster-name` (string; required) — Exact cluster_name. Discover real values with analysis user-cluster list first.<br>`--project-id` (number; required) — Numeric project ID.<br>`--property-names` (json; optional) — Optional JSON array of user property names to include.<br>`--fields` (json; optional) — Optional result fields. Defaults to #user_id, #account_id, and #distinct_id.<br>`--query` (string; optional) — Optional keyword filter.<br>`--use-cache` (boolean; optional) — Whether to use query cache. Default: true.<br>`--preview-rows` (number; optional, min=1, max=100000) — Maximum business rows returned per result. Default: 1000, matching the UI member query. Maximum: 100000.<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>`--timeout-seconds` (number; optional, min=1, max=180) — Sync timeout seconds. Default: 120, max: 180. | [user_cluster_member_list.md](user_cluster_member_list.md) |
@@ -137,6 +137,9 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
137
137
  | `ae-cli analysis-governance asset batch-sql-export` | governance.asset.batch_export_sql | read | `--project-id` (number; required) — Numeric project ID.<br>`--node-ids` (json; optional) — Asset node ID JSON array.<br>`--reports-version` (number; optional) — Dashboard reports version.<br>`--zone-offset` (number; optional) — Dashboard zone offset.<br>`--schedule-ui-config` (json; optional) — Dashboard schedule UI config JSON.<br>`--dashboard-status` (string; optional) — Dashboard status.<br>`--refresh-type` (number; optional) — Dashboard refresh type: 1 enabled, 0 disabled.<br>`--cache-config` (json; optional) — Dashboard cache config JSON.<br>`--clear-history-tag` (number; optional) — Whether to clear tag history: 1 yes, 0 no.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_batch_sql_export.md](asset_batch_sql_export.md) |
138
138
  | `ae-cli analysis-governance asset export` | governance.asset.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--query` (string; optional) — Optional keyword filter.<br>`--searchs` (json; optional) — Quick filter JSON array.<br>`--rule` (json; optional) — Governance Filter JSON object.<br>`--operation-type` (string; optional) — Batch operation type.<br>`--limit` (number; optional) — Optional inline result limit.<br>`--offset` (number; optional) — Optional zero-based result offset.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_export.md](asset_export.md) |
139
139
  | `ae-cli analysis-governance asset list` | governance.asset.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--query` (string; optional) — Optional keyword filter.<br>`--searchs` (json; optional) — Quick filter JSON array.<br>`--rule` (json; optional) — Governance Filter JSON object.<br>`--operation-type` (string; optional) — Batch operation type.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_list.md](asset_list.md) |
140
+ | `ae-cli analysis-governance asset-authentication export` | governance.asset_authentication.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--asset-types` (json; optional) — Optional JSON array of asset types. Omit for every supported type.<br>`--authentication-status` (number; optional, min=0, max=1) — Authentication status: 1 for authenticated or 0 for unauthenticated.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keywords matched against identity and display fields.<br>`--heat-count-gt` (number; optional, min=0) — Strict recent-90-day heat threshold.<br>`--user-count-gt` (number; optional, min=0) — Strict recent-90-day user threshold.<br>`--impact-degree-gt` (number; optional, min=0) — Strict governance impact threshold.<br>`--match` (string; optional, default="all") — Combine multiple numeric thresholds with any or all. Default: all.<br>`--fields` (json; optional) — Optional JSON array of output fields.<br>`--output` (string; required) — Local .jsonl output path. Integrity metadata is written to <output>.meta.json. | [asset_authentication_export.md](asset_authentication_export.md) |
141
+ | `ae-cli analysis-governance asset-authentication list` | governance.asset_authentication.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--asset-types` (json; optional) — Optional JSON array of asset types. Omit for every supported type.<br>`--authentication-status` (number; optional, min=0, max=1) — Authentication status: 1 for authenticated or 0 for unauthenticated.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keywords matched against identity and display fields.<br>`--heat-count-gt` (number; optional, min=0) — Strict recent-90-day heat threshold.<br>`--user-count-gt` (number; optional, min=0) — Strict recent-90-day user threshold.<br>`--impact-degree-gt` (number; optional, min=0) — Strict governance impact threshold.<br>`--match` (string; optional, default="all") — Combine multiple numeric thresholds with any or all. Default: all.<br>`--fields` (json; optional) — Optional JSON array of output fields.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected. | [asset_authentication_list.md](asset_authentication_list.md) |
142
+ | `ae-cli analysis-governance asset-authentication update` | governance.asset_authentication.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--authentication-status` (number; required, min=0, max=1) — Target authentication status: 1 authenticates and 0 revokes.<br>`--asset-refs` (json; optional) — Inline JSON array of {resource_type,resource_key} asset references.<br>`--asset-file` (string; optional) — JSONL file whose rows contain resource_type and resource_key.<br>`--asset-type` (string; optional) — Convenience asset type used together with --asset-ids.<br>`--asset-ids` (json; optional) — Convenience JSON array of business keys used together with --asset-type.<br>`--expected-snapshot-hash` (string; optional) — Optional snapshot_hash from the export sidecar. A mismatch rejects the whole update.<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted. | [asset_authentication_update.md](asset_authentication_update.md) |
140
143
  | `ae-cli analysis-governance asset-dependency list` | governance.asset_dependency.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--node-id` (string; optional) — Poseidon asset node ID.<br>`--query` (string; optional) — Optional keyword filter.<br>`--searchs` (json; optional) — Quick filter JSON array.<br>`--rule` (json; optional) — Governance Filter JSON object.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_dependency_list.md](asset_dependency_list.md) |
141
144
  | `ae-cli analysis-governance asset-impact list` | governance.asset_impact.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--node-id` (string; optional) — Poseidon asset node ID.<br>`--query` (string; optional) — Optional keyword filter.<br>`--searchs` (json; optional) — Quick filter JSON array.<br>`--rule` (json; optional) — Governance Filter JSON object.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_impact_list.md](asset_impact_list.md) |
142
145
  | `ae-cli analysis-governance asset-lineage get` | governance.asset_lineage.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--node-id` (string; optional) — Poseidon asset node ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_lineage_get.md](asset_lineage_get.md) |
@@ -155,8 +158,8 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
155
158
  | `ae-cli analysis-meta asset-abnormal list` | metadata.asset_abnormal.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--resource-types` (string; required) — Resource types to query.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected. | [asset_abnormal_list.md](asset_abnormal_list.md) |
156
159
  | `ae-cli analysis-meta asset-authentication list` | metadata.asset_authentication.list | read | `--project-id` (number; required) — Numeric project ID.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected. | [asset_authentication_list.md](asset_authentication_list.md) |
157
160
  | `ae-cli analysis-meta asset-authentication update` | metadata.asset_authentication.update | write | `--project-id` (number; required) — Numeric project ID.<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. | [asset_authentication_update.md](asset_authentication_update.md) |
158
- | `ae-cli analysis-meta catalog export` | metadata.catalog.export | read | `--project-id` (number; required) — Numeric project ID.<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>`--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>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [catalog_export.md](catalog_export.md) |
159
- | `ae-cli analysis-meta catalog list` | metadata.catalog.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--resource-types` (json; optional) — Online search resource type filter JSON array. Use event, metric, event_property, user_property, cluster, or tag.<br>`--limit-per-type` (number; optional, min=1, max=200) — Maximum online search results per resource type. Default: 20, max: 200. | [catalog_list.md](catalog_list.md) |
161
+ | `ae-cli analysis-meta catalog export` | metadata.catalog.export | read | `--project-id` (number; required) — Numeric project ID.<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>`--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>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset.<br>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [catalog_export.md](catalog_export.md) |
162
+ | `ae-cli analysis-meta catalog list` | metadata.catalog.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--resource-types` (json; optional) — Online search resource type filter JSON array. Use event, metric, event_property, user_property, cluster, or tag.<br>`--limit-per-type` (number; optional, min=1, max=200) — Maximum online search results per resource type. Default: 20, max: 200.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset. | [catalog_list.md](catalog_list.md) |
160
163
  | `ae-cli analysis-meta datatable columns-get` | metadata.data_table.columns_get | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-ref` (string; required) — Project table reference. | [datatable_columns_get.md](datatable_columns_get.md) |
161
164
  | `ae-cli analysis-meta datatable influence-list` | metadata.data_table.influence_list | read | `--project-id` (number; required) — Numeric project ID.<br>`--datatable-id` (number; required) — Data table ID. | [datatable_influence_list.md](datatable_influence_list.md) |
162
165
  | `ae-cli analysis-meta datatable version-get` | metadata.data_table_version.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--version-id` (number; required) — Data table version ID. | [datatable_version_get.md](datatable_version_get.md) |
@@ -168,7 +171,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
168
171
  | `ae-cli analysis-meta event get` | metadata.event.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--event-name` (string; required) — Event name. | [event_get.md](event_get.md) |
169
172
  | `ae-cli analysis-meta event hide-update` | metadata.event.hide_update | write | `--project-id` (number; required) — Numeric project ID.<br>`--event-names` (json; required) — Event names JSON array, or a JSON string accepted by common-service.<br>`--is-hide` (boolean; required) — Whether to hide the events. | [event_hide_update.md](event_hide_update.md) |
170
173
  | `ae-cli analysis-meta event influence-list` | metadata.event.influence_list | read | `--project-id` (number; required) — Numeric project ID.<br>`--event-name` (string; required) — Event name. | [event_influence_list.md](event_influence_list.md) |
171
- | `ae-cli analysis-meta event list` | metadata.event.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--authenticated-only` (boolean; optional) — When true, return only authenticated events. | [event_list.md](event_list.md) |
174
+ | `ae-cli analysis-meta event list` | metadata.event.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--authenticated-only` (boolean; optional) — When true, return only authenticated events.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset. | [event_list.md](event_list.md) |
172
175
  | `ae-cli analysis-meta event relation-update` | metadata.event.relation_update | write | `--project-id` (number; required) — Numeric project ID.<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. | [event_relation_update.md](event_relation_update.md) |
173
176
  | `ae-cli analysis-meta event update` | metadata.event.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--event-name` (string; required) — Event name.<br>`--event-desc` (string; optional) — Event display name.<br>`--remark` (string; optional) — Event remark. | [event_update.md](event_update.md) |
174
177
  | `ae-cli analysis-meta event-property-bundle export` | metadata.event_property_bundle.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--request-id` (string; optional) — Optional cli_<32 lowercase hex> request ID. Generated when omitted.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Export timeout seconds. Default and max: 21600 (6 hours).<br>`--wait` (boolean; optional) — Wait for the remote run and artifact to reach a terminal state. Polling uses short inspect requests; interrupting does not cancel the remote run.<br>`--wait-timeout-seconds` (number; optional, min=1, max=21600) — Maximum time this CLI process waits. Default: 600 seconds; expiry never cancels the remote run.<br>`--output` (string; optional) — Wait, then stream the completed artifact to this local file. Implies --wait.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. Without this flag, existing paths are refused. | [event_property_bundle_export.md](event_property_bundle_export.md) |
@@ -182,7 +185,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
182
185
  | `ae-cli analysis-meta metric delete` | metadata.metric.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--metric-id` (number; required) — Metric ID. | [metric_delete.md](metric_delete.md) |
183
186
  | `ae-cli analysis-meta metric export` | metadata.metric.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--ignore-authentication` (boolean; optional) — Whether to skip asset authentication status decoration.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<br>`--fields` (json; optional) — Optional result field projection JSON array.<br>`--authenticated-only` (boolean; optional) — When true, export only authenticated metrics.<br>`--output` (string; required) — Local .json output file for the complete matching metadata rows. | [metric_export.md](metric_export.md) |
184
187
  | `ae-cli analysis-meta metric get` | metadata.metric.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--metric-id` (number; required) — Metric ID. | [metric_get.md](metric_get.md) |
185
- | `ae-cli analysis-meta metric list` | metadata.metric.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--ignore-authentication` (boolean; optional) — Whether to skip asset authentication status decoration.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--authenticated-only` (boolean; optional) — When true, return only authenticated metrics. | [metric_list.md](metric_list.md) |
188
+ | `ae-cli analysis-meta metric list` | metadata.metric.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--ignore-authentication` (boolean; optional) — Whether to skip asset authentication status decoration.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--authenticated-only` (boolean; optional) — When true, return only authenticated metrics.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset. | [metric_list.md](metric_list.md) |
186
189
  | `ae-cli analysis-meta metric update` | metadata.metric.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--metric-id` (number; required) — Metric ID.<br>`--metric-name` (string; optional) — Metric technical name for full-definition update.<br>`--metric-desc` (string; optional) — Metric display name.<br>`--metric-remark` (string; optional) — Metric remark.<br>`--metric-mode` (number; optional) — Metric model mode for full-definition update.<br>`--model-type` (string; optional) — Semantic metric model type: event or retention. Prefer this over metric-mode.<br>`--metric-events` (json; optional) — Metric event-analysis QP JSON array for full-definition update.<br>`--metric-params` (json; optional) — Metric params JSON object. | [metric_update.md](metric_update.md) |
187
190
  | `ae-cli analysis-meta property changelog-list` | metadata.property.changelog_list | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-type` (string; required) — Property table type.<br>`--prop-name` (string; required) — Property column name. | [property_changelog_list.md](property_changelog_list.md) |
188
191
  | `ae-cli analysis-meta property create` | metadata.property.create | 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_create.md](property_create.md) |
@@ -191,7 +194,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
191
194
  | `ae-cli analysis-meta property get` | metadata.property.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-type` (string; required) — Property table type.<br>`--prop-name` (string; required) — Property column name. | [property_get.md](property_get.md) |
192
195
  | `ae-cli analysis-meta property hide-update` | metadata.property.hide_update | write | `--project-id` (number; required) — Numeric project ID.<br>`--table-type` (string; required) — Property table type.<br>`--prop-names` (json; required) — Property names JSON array, or a JSON string accepted by common-service.<br>`--is-hide` (boolean; required) — Whether to hide the properties. | [property_hide_update.md](property_hide_update.md) |
193
196
  | `ae-cli analysis-meta property influence-list` | metadata.property.influence_list | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-type` (string; required) — Property table type.<br>`--prop-name` (string; required) — Property column name. | [property_influence_list.md](property_influence_list.md) |
194
- | `ae-cli analysis-meta property list` | metadata.property.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-type` (string; optional) — Optional property table type: event or user.<br>`--scope` (string; optional) — Optional property scope: event or user.<br>`--event-name` (string; optional) — Optional event name filter for event properties.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--authenticated-only` (boolean; optional) — When true, return only authenticated properties. | [property_list.md](property_list.md) |
197
+ | `ae-cli analysis-meta property list` | metadata.property.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-type` (string; optional) — Optional property table type: event or user.<br>`--scope` (string; optional) — Optional property scope: event or user.<br>`--event-name` (string; optional) — Optional event name filter for event properties.<br>`--queries` (json; optional) — Optional JSON array of 1 to 20 keyword filters. Results match any keyword.<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, min=0) — Zero-based directory page offset. Default: 0. Negative values are rejected.<br>`--authenticated-only` (boolean; optional) — When true, return only authenticated properties.<br>`--certification-scope` (string; optional, default="project") — Asset certification filter scope: project follows the project switch, certified returns only certified assets, all returns every asset. | [property_list.md](property_list.md) |
195
198
  | `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) |
196
199
  | `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) |
197
200
  | `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) |
@@ -203,6 +206,11 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
203
206
  | `ae-cli analysis-meta virtual-property create` | metadata.virtual_property.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--sql-expression` (string; required) — SQL expression used to calculate the virtual property.<br>`--v-prop` (json; optional) — Virtual property JSON object with property.column_name/property.table_type/property.select_type fields.<br>`--property-name` (string; optional) — Virtual property name. Must start with '#vp@'.<br>`--property-desc` (string; optional) — Virtual property display name.<br>`--table-type` (string; optional) — Property table type: event or user.<br>`--select-type` (string; optional) — Property value type: string, number, bool, or datetime.<br>`--property-remark` (string; optional) — Optional virtual property remark.<br>`--properties` (json; optional) — Dependent property JSON array.<br>`--sql-event-relation-type` (string; optional) — relation_default, relation_always, or relation_by_setting.<br>`--related-events` (json; optional) — Related events JSON array when using relation_by_setting.<br>`--tag-date-policies` (json; optional) — Optional tag date policies JSON array.<br>`--replace-remark` (string; optional) — Replacement remark.<br>`--replace-suggestion` (string; optional) — Replacement suggestion. | [virtual_property_create.md](virtual_property_create.md) |
204
207
  | `ae-cli analysis-meta virtual-property sql-rule-delete` | metadata.virtual_property.sql_rule_delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--v-prop-id` (number; required) — Virtual property ID.<br>`--operation` (string; optional) — Delete operation. Use revoke to revoke instead of delete. | [virtual_property_sql_rule_delete.md](virtual_property_sql_rule_delete.md) |
205
208
  | `ae-cli analysis-meta virtual-property sql-rule-update` | metadata.virtual_property.sql_rule_update | write | `--project-id` (number; required) — Numeric project ID.<br>`--sql-expression` (string; required) — SQL expression used to calculate the virtual property.<br>`--v-prop` (json; required) — Virtual property JSON object with prop_id beside property.<br>`--properties` (json; optional) — Dependent property JSON array.<br>`--sql-event-relation-type` (string; optional) — relation_default, relation_always, or relation_by_setting.<br>`--related-events` (json; optional) — Related events JSON array when using relation_by_setting.<br>`--tag-date-policies` (json; optional) — Optional tag date policies JSON array.<br>`--replace-remark` (string; optional) — Replacement remark.<br>`--replace-suggestion` (string; optional) — Replacement suggestion. | [virtual_property_sql_rule_update.md](virtual_property_sql_rule_update.md) |
209
+ | `ae-cli personal-semantic-preference add` | business_semantics.personal_context.add | write | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--context-type` (string; required) — preference \| asset_context \| experience \| background.<br>`--title` (string; required, maxLength=255) — Short preference title.<br>`--summary` (string; required, maxLength=1000) — Compact preference summary.<br>`--content` (string; required, maxLength=20000) — Full personal semantic preference content.<br>`--keywords` (json; optional) — Optional JSON array of preference keywords.<br>`--resource-refs` (json; optional) — Ordered JSON asset references; required only for asset_context.<br>`--fresh-until-at` (string; optional) — Optional freshness expiration timestamp: yyyy-MM-dd HH:mm:ss.<br>`--request-id` (string; optional, maxLength=128) — Optional idempotency key; generated when omitted. | [personal_semantic_preference_add.md](personal_semantic_preference_add.md) |
210
+ | `ae-cli personal-semantic-preference delete` | business_semantics.personal_context.delete | high-risk-write | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--id` (string; required) — Preference ID returned by list/add.<br>`--expected-revision` (number; required, min=1) — Revision returned by the latest read.<br>`--request-id` (string; optional, maxLength=128) — Optional idempotency key; generated when omitted. | [personal_semantic_preference_delete.md](personal_semantic_preference_delete.md) |
211
+ | `ae-cli personal-semantic-preference get` | business_semantics.personal_context.get | read | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--id` (string; required) — Preference ID returned by list/add.<br>`--mark-used` (boolean; optional) — Count this preference as adopted and update its usage heat. | [personal_semantic_preference_get.md](personal_semantic_preference_get.md) |
212
+ | `ae-cli personal-semantic-preference list` | business_semantics.personal_context.list | read | `--project-id` (number; required, min=1) — Numeric project ID. | [personal_semantic_preference_list.md](personal_semantic_preference_list.md) |
213
+ | `ae-cli personal-semantic-preference update` | business_semantics.personal_context.update | write | `--project-id` (number; required, min=1) — Numeric project ID.<br>`--id` (string; required) — Preference ID returned by list/add.<br>`--expected-revision` (number; required, min=1) — Revision returned by the latest read.<br>`--context-type` (string; required) — preference \| asset_context \| experience \| background.<br>`--title` (string; required, maxLength=255) — Short preference title.<br>`--summary` (string; required, maxLength=1000) — Compact preference summary.<br>`--content` (string; required, maxLength=20000) — Full replacement content.<br>`--keywords` (json; optional) — Optional JSON array of preference keywords.<br>`--resource-refs` (json; optional) — Ordered JSON asset references; required only for asset_context.<br>`--fresh-until-at` (string; optional) — Optional freshness expiration timestamp: yyyy-MM-dd HH:mm:ss.<br>`--request-id` (string; optional, maxLength=128) — Optional idempotency key; generated when omitted. | [personal_semantic_preference_update.md](personal_semantic_preference_update.md) |
206
214
  | `ae-cli project access-detail get` | project.access_detail.get | read | `--company-id` (number; required) — Company ID. | [project_access_detail_get.md](project_access_detail_get.md) |
207
215
  | `ae-cli project data-power delete` | project.data_power.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--data-power-id` (number; required) — Data power ID to delete.<br>`--new-data-power-id` (number; optional) — Optional replacement data power ID for affected users. | [project_data_power_delete.md](project_data_power_delete.md) |
208
216
  | `ae-cli project data-power get` | project.data_power.get | read | `--project-id` (number; required) — Numeric project ID.<br>`--data-power-id` (number; required) — Data power ID. | [project_data_power_get.md](project_data_power_get.md) |
@@ -245,7 +253,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
245
253
  | `ae-cli project role-user list` | project.role_user.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--role-name` (string; required) — Role name. | [project_role_user_list.md](project_role_user_list.md) |
246
254
  | `ae-cli project timezone get` | project.timezone.get | read | `--project-id` (number; required) — Numeric project ID. | [project_timezone_get.md](project_timezone_get.md) |
247
255
  | `ae-cli project timezone overview` | project.timezone.overview | read | `--project-id` (number; required) — Numeric project ID. | [project_timezone_overview.md](project_timezone_overview.md) |
248
- | `ae-cli project timezone update` | project.timezone.update | write | `--project-id` (number; required) — Numeric project ID.<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.<br>`--item` (string; required) — Timezone item: timezone_toggle, zone_offset, user_timezone, project_timezone_display. | [project_timezone_update.md](project_timezone_update.md) |
256
+ | `ae-cli project timezone update` | project.timezone.update | write | `--project-id` (number; required) — Numeric project ID.<br>`--payload` (json; required) — Item-specific snake_case payload: timezone_toggle uses {"toggle":true}; zone_offset uses {"column_name":"#zone_offset"}; user_timezone uses {"column_name":"user_timezone","codetable":"optional_table"}; project_timezone_display uses {"display_timezones":[{"timezone":8,"is_default":true}]}.<br>`--item` (string; required) — Timezone item: timezone_toggle, zone_offset, user_timezone, project_timezone_display. | [project_timezone_update.md](project_timezone_update.md) |
249
257
  | `ae-cli project user-id-items update` | project.user_id_items.update | write | `--project-id` (number; required) — Numeric project ID.<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. | [project_user_id_items_update.md](project_user_id_items_update.md) |
250
258
  | `ae-cli system admin list` | system.admin.list | read | `--company-id` (number; required, min=1) — Company ID. | [system_admin_list.md](system_admin_list.md) |
251
259
  | `ae-cli system admin remove` | system.admin.remove | high-risk-write | `--company-id` (number; required, min=1) — Company ID.<br>`--target-open-id` (string; required) — Target member open ID. | [system_admin_remove.md](system_admin_remove.md) |
@@ -1,6 +1,6 @@
1
1
  # analysis dashboard get
2
2
 
3
- Use when the user needs one dashboard detail or when an agent needs the business context for dashboard report data. The detail includes location, creator and create/update time, settings, reports, notes, and sharing information.
3
+ Use when the user needs one dashboard detail or when an agent needs the effective settings, saved filter configuration, and business context for dashboard report data.
4
4
 
5
5
  Do not use to query report result data. Use `dashboard-report-data run` or `dashboard-report-data export`.
6
6
 
@@ -18,4 +18,21 @@ Output is the gateway envelope. `data` contains the dashboard detail returned by
18
18
  - `location` always contains `space_id`, `space_name`, `folder_id`, and `folder_name`; values are null when that level does not apply. `folder_name` is the immediate parent folder.
19
19
  - `notes` is an array whose items contain `note_id`, `note_title`, and `description`.
20
20
 
21
+ Prefer `effective_settings` over raw storage fields in `settings` when interpreting behavior:
22
+
23
+ - `approximate_calculation.enabled` says whether report queries use approximate calculation.
24
+ - `fixed_timezone.enabled` says whether the dashboard locks its timezone. When enabled, use `zone_offset`; otherwise `timezone_source=current_user_or_project_default` means the query follows the current user timezone or project default.
25
+ - `scheduled_precompute.enabled`, `schedule_hour`, and `zone_offset` describe scheduled precomputation.
26
+ - `cache.applicable`, `value`, `unit`, and `source` describe effective cache behavior. A `source` of `scheduled_precompute` means custom cache duration does not apply.
27
+
28
+ `filter_config` separates filters by source:
29
+
30
+ - `fixed_time` is the saved dashboard time range. Explicit supported `start_time` and `end_time` on a dashboard data command take precedence.
31
+ - `dashboard_default` is the dashboard-wide default filter; it excludes the current caller's personal default filter.
32
+ - `dashboard_business` is the mandatory business filter configured on the dashboard.
33
+ - `space_business` is the mandatory business filter inherited from the project space.
34
+ - `merge_relation=and` means these saved sources and any call-time `--filters` are combined with AND. Treat saved filters as already applied; do not copy them into `--filters`.
35
+
36
+ Each saved source has `enabled` and a semantic `definition`. Read conditions from `definition.relation` and `definition.items`; fields and operators are Agent-facing names rather than raw QP codes. If a condition has `supported=false`, report that its legacy definition could not be fully mapped instead of claiming that no filter exists.
37
+
21
38
  When this detail is fetched before a dashboard data query, preserve non-empty `location.folder_name`, `dashboard_name`, `remark`, and `notes[].note_title/description` as dashboard context. Use them to interpret the report results, but distinguish this authored context from conclusions observed in the queried data.
@@ -10,6 +10,7 @@ Command:
10
10
  ae-cli analysis dashboard update --project-id <project_id> --operation settings --dashboard-ids '[1001,1002]' [--zone-offset 8] [--payload '{...}']
11
11
  ae-cli analysis dashboard update --project-id <project_id> --operation settings --dashboard-id <dashboard_id> --refresh-type 1 --dashboard-status normal --payload '{"dashboard_job_schedule":"0 0 8 * * ?","time_config_open":true,"time_config":{},"cache_config":{},"schedule_ui_config":{}}'
12
12
  ae-cli analysis dashboard update --project-id <project_id> --operation note-upsert --dashboard-id <dashboard_id> [--note-id <note_id>] [--note-title <title>] [--description <text>]
13
+ ae-cli analysis dashboard update --project-id <project_id> --operation default-filter --dashboard-id <dashboard_id> --filter-name <name> --filter '{"junction_kind":"and","ta_filters":[...]}'
13
14
  ae-cli analysis dashboard update --project-id <project_id> --operation business-filter --dashboard-id <dashboard_id> --filter '{"junction_kind":"and","ta_filters":[...]}'
14
15
  ```
15
16
 
@@ -23,6 +24,8 @@ For `operation=settings`:
23
24
 
24
25
  For `operation=note-upsert`, pass `dashboard_id`; omit `note_id` to create a note or pass it to update an existing note. Do not mix note fields with batch settings fields.
25
26
 
27
+ For `operation=default-filter`, pass one `dashboard_id`, `filter_name`, and `filter`. This saves a favorite filter and enables it as the dashboard-wide default filter; it is distinct from the current caller's personal default filter.
28
+
26
29
  For `operation=business-filter`, pass one `dashboard_id` and a `filter` object in snake_case QP form. This replaces the dashboard-level business filter saved in `ta_dashboard_business_filter`; it is not a condition-filter favorite or a space-level filter. Each simple condition uses fields such as `filter_type`, `column_name`, `table_type`, `column_type`, `select_type`, `calcu_symbol`, `ftv`, and `lack_value`. A condition with `lack_value=true` is saved as a selectable field but does not restrict query data. Pass `{"junction_kind":"and","ta_filters":[]}` to clear all dashboard-level business-filter conditions.
27
30
 
28
31
  Output is the gateway envelope. `data` contains the update result.
@@ -0,0 +1,23 @@
1
+ # personal-semantic-preference add
2
+
3
+ Add one personal semantic preference for the authenticated user in one project.
4
+
5
+ Use this when the user explicitly asks to save a personal semantic preference, or when the current project task contains an explicit stable statement, correction, or confirmation that should become a reusable current-user preference. A current-user working definition remains eligible even when the same content may benefit other users. A second "save" confirmation is not required after that evidence gate is met, unless the target meaning is ambiguous.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli personal-semantic-preference add --project-id <project_id> --context-type <context_type> --title <title> --summary <summary> --content <content> [--keywords '["keyword"]'] [--resource-refs '[{"resource_type":"report","resource_key":"101","display_name":"Revenue daily report"}]'] [--fresh-until-at "yyyy-MM-dd HH:mm:ss"] [--request-id <id>]
11
+ ```
12
+
13
+ Use `preference` for durable interpretation/output preferences, `asset_context` for durable wording or intent bound to exact assets, `experience` for confirmed reusable work methods, and `background` for stable personal context. `--resource-refs` is required and non-empty only for `asset_context`; for every other type it must be absent or empty.
14
+
15
+ `--resource-refs` accepts 1 to 50 ordered objects. Each object contains exactly `resource_type`, string `resource_key`, and `display_name`; `(resource_type, resource_key)` must be unique. `resource_type` is generic lower snake_case rather than a report-only enum, so events, properties, metrics, tags, clusters, reports, dashboards, data tables, and later asset types share the same shape. Array order is the user's intended priority.
16
+
17
+ `--request-id` is an idempotency key; omit it for ordinary interactive use and the CLI will generate one.
18
+
19
+ This command creates only a current-user preference; it never creates or approves a project semantic. Do not reject an otherwise valid personal preference merely because the same content may benefit other users, and do not imply that the saved preference is shared authority. Keep project-candidate recommendation separate: after personal capture, ask whether to recommend broadly reusable content as a project semantic candidate, and submit nothing without that choice.
20
+
21
+ Store only the present working preference. Do not append future governance or lifecycle instructions. Do not use this command for company knowledge, standalone metadata facts, reports, dashboards, transient task details, one-off analysis results, or automatic stale/expired preference handling.
22
+
23
+ Output is the gateway envelope. `data.preference` contains the full created preference, current revision, and complete ordered `resource_refs`. A separate readback is unnecessary unless a later step needs to refresh the record.
@@ -0,0 +1,17 @@
1
+ # personal-semantic-preference delete
2
+
3
+ Soft-delete one personal semantic preference using optimistic locking.
4
+
5
+ Use this only after explicit user confirmation to remove a saved personal preference.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli personal-semantic-preference delete --project-id <project_id> --id <preference_id> --expected-revision <revision> [--request-id <id>] --yes
11
+ ```
12
+
13
+ Read the current item first and pass its revision as `--expected-revision`. This is a high-risk write; use `--dry-run` when the target is ambiguous.
14
+
15
+ Do not use this command for automatic stale/expired preference handling. Stale or low-freshness personal preferences are hidden by list filtering and backend maintenance.
16
+
17
+ Output is the gateway envelope. `data.deleted` identifies the deleted preference and status. After deletion, it should no longer appear in `personal-semantic-preference list`.
@@ -0,0 +1,19 @@
1
+ # personal-semantic-preference get
2
+
3
+ Get one personal semantic preference by ID.
4
+
5
+ Use this command after `personal-semantic-preference list` identifies a likely current-user preference. Pass `--mark-used` when the preference is adopted for the answer, query path, or as the matched target for an update.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli personal-semantic-preference get --project-id <project_id> --id <preference_id> [--mark-used]
11
+ ```
12
+
13
+ Input uses `project_id`, `id`, and optional `mark_used`. `id` must be the exact `preference_<id>` value returned by list/add.
14
+
15
+ Do not use this command as a keyword search, project semantics lookup, or asset catalog lookup. Do not call it repeatedly for every catalog row. Do not use `--mark-used` for a candidate that turns out not to match the user's intent or is only inspected and then rejected.
16
+
17
+ When a published project semantic conflicts with the personal item, the project semantic is the formal definition. Fetch and mark the personal item only when it materially affects the response, such as an explicitly requested non-formal alternative; never silently use it to override the project semantic.
18
+
19
+ Output is the gateway envelope. `data.preference` contains the full personal preference, including content, complete ordered `resource_refs`, and revision. When `--mark-used` is set, the backend increments `heat_count` and updates `last_used_at` for that record.
@@ -0,0 +1,21 @@
1
+ # personal-semantic-preference list
2
+
3
+ List the authenticated user's active personal semantic preference catalog for one project.
4
+
5
+ Use this command once per host, authenticated user, project, and conversation after resolving the project. Keep the returned directory in conversation context for later questions where user-specific wording or preferences may change interpretation.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli personal-semantic-preference list --project-id <project_id>
11
+ ```
12
+
13
+ Input uses `project_id` only. Do not add pagination parameters: the backend returns a compact catalog intended for agent context.
14
+
15
+ Do not use this command for project semantics, shared knowledge, metadata catalogs, report/dashboard lists, or complete asset discovery. It only returns the current user's personal semantic preferences in the current project.
16
+
17
+ Output is the gateway envelope. `data.items[]` contains only `id`, `context_type`, `title`, truncated `summary`, limited `keywords`, `resource_ref_count`, distinct `resource_types`, and `revision`; it deliberately omits content, full asset references, heat, and timestamps. `data.returned_count` is at most 200, `data.truncated` says whether entries were omitted, and `data.selection_policy` is `HOT_160_PLUS_RECENT_40`: up to 160 highest-heat items plus up to 40 recently changed items not already selected. The backend may return fewer items to keep the data payload within 64 KiB.
18
+
19
+ If one returned item is actually adopted to interpret the user's request, call `ae-cli personal-semantic-preference get --project-id <project_id> --id <preference_id> --mark-used` before using its full content. Do not mark an item used when it was only inspected or rejected.
20
+
21
+ Compare a likely match with the published project semantic catalog. Published project semantics remain the formal project-wide authority; personal items provide current-user defaults and working interpretations. If they conflict, use the project semantic for the formal result, explicitly disclose the personal difference, and do not mark the personal item used unless the user explicitly adopts it as a labeled alternative.
@@ -0,0 +1,19 @@
1
+ # personal-semantic-preference update
2
+
3
+ Update one personal semantic preference using optimistic locking.
4
+
5
+ Use this when the user explicitly asks to change an existing personal preference, or when the current project task provides an explicit stable correction or confirmation that should replace a matching saved current-user preference. A current-user working definition remains eligible even when the same content may benefit other users. First read the matched current item with `personal-semantic-preference get --mark-used` and pass the returned revision as `--expected-revision`.
6
+
7
+ Command:
8
+
9
+ ```bash
10
+ ae-cli personal-semantic-preference update --project-id <project_id> --id <preference_id> --expected-revision <revision> --context-type <context_type> --title <title> --summary <summary> --content <content> [--keywords '["keyword"]'] [--resource-refs '[{"resource_type":"event","resource_key":"$login","display_name":"Login event"}]'] [--fresh-until-at "yyyy-MM-dd HH:mm:ss"] [--request-id <id>]
11
+ ```
12
+
13
+ The update replaces all editable fields. Include the full intended `title`, `summary`, `content`, keywords, and asset bindings rather than a partial patch. `asset_context` requires 1 to 50 complete ordered `resource_refs`; other context types cannot contain non-empty refs.
14
+
15
+ This command updates only the current-user preference; it does not update, approve, or publish project semantics. Do not block the update merely because the same content may benefit other users, and do not imply that the saved preference is shared authority. Keep project-candidate recommendation separate and ask before submitting it.
16
+
17
+ Keep future governance and lifecycle handling out of the stored content. Do not use this command for shared knowledge, standalone metadata facts, reports, dashboards, transient task details, one-off analysis results, or automatic stale/expired preference handling.
18
+
19
+ Output is the gateway envelope. `data.preference` contains the full updated preference and new revision. If the revision is stale, read the latest record and ask the user how to merge rather than overwriting silently.
@@ -7,13 +7,22 @@ Do not use it for unrelated project-management actions or for fields not present
7
7
  Command:
8
8
 
9
9
  ```bash
10
- ae-cli project timezone update --project-id <project_id> --payload <payload> --item <item>
11
- ae-cli project timezone update --dry-run --project-id <project_id> --payload <payload> --item <item>
10
+ ae-cli project timezone update --project-id <project_id> --item timezone_toggle --payload '{"toggle":true}'
11
+ ae-cli project timezone update --project-id <project_id> --item timezone_toggle --payload '{"toggle":true}' --dry-run
12
12
  ```
13
13
 
14
14
  Capability id: `project.timezone.update`.
15
15
 
16
- Input sends `project_id`, `payload`, `item`. Payload keys, JSON arrays, and projection fields must follow the common-service snake_case input schema.
16
+ Input sends `project_id`, `payload`, and `item`. The payload is selected by `item`; use exactly one of these snake_case shapes:
17
+
18
+ | `item` | `payload` | Notes |
19
+ |---|---|---|
20
+ | `timezone_toggle` | `{"toggle":true}` | `toggle` is required and boolean. Use `true` to enable multi-timezone and `false` to disable it. Never send `time_zone_enabled`. |
21
+ | `zone_offset` | `{"column_name":"#zone_offset"}` | `column_name` is required and selects the event property used as the timezone offset. |
22
+ | `user_timezone` | `{"column_name":"user_timezone","codetable":"timezone_code_table"}` | `column_name` is required. `codetable` is optional. |
23
+ | `project_timezone_display` | `{"display_timezones":[{"timezone":8,"is_default":true},{"timezone":0,"is_default":false}]}` | `display_timezones` is a non-empty array. `timezone` is an integer from -12 through 14, or 99 for no fixed display timezone; `is_default` is optional and boolean. |
24
+
25
+ Do not infer a payload field from the `project timezone get` output. In particular, its `time_zone_enabled` response field is not accepted by the update DTO; `timezone_toggle` always uses `payload.toggle`.
17
26
 
18
27
  Output uses the gateway envelope: success is `ok=true,data,meta`; failure is `ok=false,error`. Preserve `request_id` and `invocation_id` when present.
19
28
 
@@ -21,5 +30,5 @@ Output uses the gateway envelope: success is `ok=true,data,meta`; failure is `ok
21
30
  | Parameter | Required | Description |
22
31
  |---|---|---|
23
32
  | `--project-id` | Yes | Numeric project ID. |
24
- | `--payload` | Yes | Timezone update payload. Shape depends on item. |
33
+ | `--payload` | Yes | Item-specific payload from the table above. Do not send camelCase aliases or response-only fields. |
25
34
  | `--item` | Yes | Timezone item: timezone_toggle, zone_offset, user_timezone, project_timezone_display. |
@@ -13,6 +13,8 @@ ae-cli analysis-meta property create --dry-run
13
13
 
14
14
  Capability id: `metadata.property.create`.
15
15
 
16
+ Authorization requires the single project function permission `editSuperMeta` with the `metadata:write` scope. In the zh-CN permission UI, this permission is labeled `元数据管理 > 编辑`; the corresponding English label is `Metadata Management > Edit`. This is the same project permission used by `metadata.super_metadata.batch_create`. If either command returns `PROJECT_PERMISSION_DENIED`, do not retry with a different payload and do not describe the two capability IDs as two separate permissions. Ask a project administrator to grant this shared project permission to the current identity.
17
+
16
18
  Input sends `project_id`, `table_type`, `payload`.
17
19
 
18
20
  Output is a successful gateway envelope with no business data. Read back with `property get` using the same table type.
@@ -12,6 +12,8 @@ ae-cli analysis-meta super-metadata batch-create --project-id <project_id> --eve
12
12
 
13
13
  Capability id: `metadata.super_metadata.batch_create`.
14
14
 
15
+ Authorization requires the single project function permission `editSuperMeta` with the `metadata:write` scope. In the zh-CN permission UI, this permission is labeled `元数据管理 > 编辑`; the corresponding English label is `Metadata Management > Edit`. This is the same project permission used by `metadata.property.create`. If either command returns `PROJECT_PERMISSION_DENIED`, do not retry with a different payload and do not describe the two capability IDs as two separate permissions. Ask a project administrator to grant this shared project permission to the current identity.
16
+
15
17
  Input sends `project_id` plus any non-empty JSON arrays among `events`, `event_properties`, and `user_properties`. Use snake_case object fields exactly as documented by the common-service schema:
16
18
 
17
19
  - Event items: `event_name`, optional `event_desc`, optional `remark`, optional `super_event_prop_names`.
@@ -7,6 +7,8 @@ Top-level variants:
7
7
  - condition: `{"type":"condition","conditions":{"relation":"and|or","items":[...]}}`
8
8
  - SQL: `{"type":"sql","sql":"...","params":[{"name":"partdate","type":"part_date","recent_day":"1-7"}]}`
9
9
 
10
+ For `user-cluster update`, `type` must match the existing cluster type. The update command cannot change a cluster between condition and SQL, and it cannot change the cluster's analysis entity.
11
+
10
12
  For SQL clusters, quote Trino special identifiers with double quotes, for example `{"type":"sql","sql":"SELECT \"#user_id\" FROM v_user_1 WHERE vip_level >= 3"}`. This applies to identifiers containing `#`, `$`, `@`, spaces, or punctuation; single quotes are string literals.
11
13
 
12
14
  If a SQL cluster reads an event table, include a predicate on the quoted `"$part_date"` date-partition column; the backend rejects event-table SQL without it. This does not apply to the user-table example above.
@@ -2,18 +2,22 @@
2
2
 
3
3
  Update a condition or SQL user cluster. Discover the exact `cluster_name` first.
4
4
 
5
- Do not use it for ID-file membership replacement or to create a missing cluster. Supplying `--definition-request` automatically starts recomputation after the definition is updated; do not call `user-cluster refresh` afterward. Updating only `--display-name` or `--remark` does not recompute. `--auto-refresh-cron` changes an existing enabled auto-refresh schedule and does not enable auto refresh. A successful update means the definition was saved, not that the new result is complete. Poll `user-cluster get` until `progress=100` and `refresh_end_time` is not older than `update_time` before using `users_num` or querying members.
5
+ This is a `high-risk-write`. First run the final command with `--dry-run`, summarize the exact cluster and fields that will change, and wait for explicit user confirmation. Then run the unchanged command with `--yes`. Do not use it for ID-file membership replacement, to create a missing cluster, to change its analysis entity, or to change it between condition and SQL types.
6
+
7
+ Supplying `--definition-request` automatically starts recomputation after the definition is updated; do not call `user-cluster refresh` afterward. Updating only `--display-name` or `--remark` does not recompute. `--auto-refresh-cron` changes an existing enabled auto-refresh schedule and does not enable auto refresh. A successful update means the definition was saved, not that the new result is complete. Poll `user-cluster get` until `progress=100` and `refresh_end_time` is not older than `update_time` before using `users_num` or querying members.
6
8
 
7
9
  The response distinguishes both paths. A definition update returns `computation.triggered_automatically=true`, `result_freshness.is_stale=true`, and normally `next_action=poll_get` with an exact capability/input pair. A display-name/remark-only update returns `computation.status=not_triggered`, `result_freshness.status=fresh`, and `next_action=none`.
8
10
 
9
- Flags: `--project-id`, `--cluster-name` required. Optional: `--display-name`, `--definition-request`, `--authenticated-only`, `--remark`, `--zone-offset`, `--auto-refresh-cron`. The cluster type comes from `definition_request.type` when the definition changes.
11
+ Flags: `--project-id`, `--cluster-name` required. Optional: `--display-name`, `--definition-request`, `--authenticated-only`, `--remark`, `--zone-offset`, `--auto-refresh-cron`. There is no `--entity-id` update flag. When the definition changes, `definition_request.type` must match the existing cluster type; it selects the definition variant but does not change the saved type.
10
12
 
11
13
  `display_name` is at most 80 characters and `remark` is at most 400 characters. The CLI rejects violations before dispatch. `cluster_name` is an existing exact identifier and cannot be renamed by update.
12
14
 
13
15
  Read `user_cluster_models.md` before changing the definition. The backend validates and compiles `definition_request` inside update and refuses to modify the cluster if clarification is required. Condition definitions are saved as mixed-condition clusters.
14
16
 
15
17
  ```bash
16
- ae-cli analysis user-cluster update --project-id <project_id> --cluster-name retained_users --display-name "Retained Users v2"
18
+ ae-cli analysis user-cluster update --project-id <project_id> --cluster-name retained_users --display-name "Retained Users v2" --dry-run
19
+
20
+ ae-cli analysis user-cluster update --project-id <project_id> --cluster-name retained_users --display-name "Retained Users v2" --yes
17
21
 
18
- ae-cli analysis user-cluster update --project-id <project_id> --cluster-name retained_users --auto-refresh-cron '0 30 2 * * ? *'
22
+ ae-cli analysis user-cluster update --project-id <project_id> --cluster-name retained_users --auto-refresh-cron '0 30 2 * * ? *' --dry-run
19
23
  ```