@thinkingai/ae-cli 6.0.51 → 6.0.53

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 (127) hide show
  1. package/README.md +7 -1
  2. package/README.zh.md +7 -1
  3. package/dist/{auth-XZNXFRJS.js → auth-LHM7NQPR.js} +167 -7
  4. package/dist/{capability-RJZ4KRGP.js → capability-F2RIR5DS.js} +11 -6
  5. package/dist/{chunk-57RRFUEZ.js → chunk-5XRQ3CZR.js} +4 -4
  6. package/dist/{chunk-L2QUIZTS.js → chunk-647BRKZK.js} +3 -3
  7. package/dist/{chunk-EQ255HKO.js → chunk-7WZACOAI.js} +2 -2
  8. package/dist/{chunk-DX5CDO34.js → chunk-BW7JUDEI.js} +84 -19
  9. package/dist/{chunk-7XGFSUOM.js → chunk-DU72X2IO.js} +271 -76
  10. package/dist/{chunk-V2NUHPXF.js → chunk-GK7WDY7E.js} +1 -1
  11. package/dist/{chunk-7FTTULED.js → chunk-IG3DYEIR.js} +4 -1
  12. package/dist/{chunk-HBGADCKA.js → chunk-KJDOTPYU.js} +3 -3
  13. package/dist/{chunk-4NRCTUZJ.js → chunk-KS4DE3MX.js} +4 -4
  14. package/dist/{chunk-JOCDD4ON.js → chunk-N4BLPJC7.js} +1 -1
  15. package/dist/{chunk-WEPZ5M3Z.js → chunk-PGCIKZRE.js} +7 -4
  16. package/dist/{chunk-HFGZGYCG.js → chunk-QYXDJOLA.js} +252 -6
  17. package/dist/{chunk-DVMLWQD4.js → chunk-SO5LKIWP.js} +2 -2
  18. package/dist/{chunk-MAPZ7VB6.js → chunk-YVGXGTD6.js} +13 -0
  19. package/dist/{community-report-client-CU22W53K.js → community-report-client-6VJDDMJJ.js} +1 -1
  20. package/dist/{config-XO3LI3SA.js → config-XQWOPDHN.js} +25 -6
  21. package/dist/{context-IFJI3LIT.js → context-M3HDGEIR.js} +4 -4
  22. package/dist/{data-integration-HNGUKFIC.js → data-integration-XBTCGXQT.js} +6 -6
  23. package/dist/index.js +77 -40
  24. package/dist/{local-data-upload-client-GTRIT64F.js → local-data-upload-client-3P7NIVQ4.js} +1 -1
  25. package/dist/{memory-QGPSNCQS.js → memory-6APEB2JB.js} +4 -4
  26. package/dist/{metadata-JAQW7KGZ.js → metadata-V5ZDTKWZ.js} +7 -7
  27. package/dist/{model-RNPQXIBI.js → model-ZS7HVGKN.js} +4 -4
  28. package/dist/{personal-semantic-preference-QCZ2IZTK.js → personal-semantic-preference-2XANU3F6.js} +8 -6
  29. package/dist/{project-semantic-64JURXKF.js → project-semantic-LP3LY7QP.js} +7 -7
  30. package/dist/{sync-O45NXEQY.js → sync-EQLSTUS7.js} +7 -7
  31. package/dist/{te-agent-K5MSPNHJ.js → te-agent-Z3HCTKR7.js} +348 -55
  32. package/dist/{te-analysis-KQKCAI5H.js → te-analysis-3EVYQ3IO.js} +803 -57
  33. package/dist/{te-community-4OYU3BDA.js → te-community-Z7JACGF3.js} +3 -3
  34. package/dist/{te-dataops-NFIPB6FX.js → te-dataops-F7GQOIS6.js} +644 -276
  35. package/dist/{te-engage-HSVSRW22.js → te-engage-LFBU6WWH.js} +6 -6
  36. package/dist/{te-kb-3TS73NO6.js → te-kb-QJLJEX5K.js} +323 -181
  37. package/dist/{te-system-STMHLS5J.js → te-system-IXC43QHZ.js} +6 -6
  38. package/dist/{te-team-3I5AOX3N.js → te-team-BIZIKIHZ.js} +6 -6
  39. package/dist/{update-RZXLPCRH.js → update-W2SGQNKT.js} +4 -4
  40. package/package.json +11 -4
  41. package/skills/ae-agent/SKILL.md +9 -4
  42. package/skills/ae-agent/references/notification.md +40 -0
  43. package/skills/ae-analysis/SKILL.md +65 -13
  44. package/skills/ae-analysis/references/agent_review_submit_to_page.md +3 -1
  45. package/skills/ae-analysis/references/ai_models/event.md +6 -1
  46. package/skills/ae-analysis/references/ai_models/funnel.md +7 -1
  47. package/skills/ae-analysis/references/ai_models/heat_map.md +23 -0
  48. package/skills/ae-analysis/references/ai_models/interval.md +24 -0
  49. package/skills/ae-analysis/references/ai_models/path.md +20 -0
  50. package/skills/ae-analysis/references/ai_models/prop_analysis.md +2 -0
  51. package/skills/ae-analysis/references/ai_models/rank_list.md +30 -0
  52. package/skills/ae-analysis/references/ai_models/retention.md +45 -1
  53. package/skills/ae-analysis/references/ai_models/revenue.md +20 -2
  54. package/skills/ae-analysis/references/ai_models/tag.md +2 -0
  55. package/skills/ae-analysis/references/ai_models.md +72 -3
  56. package/skills/ae-analysis/references/analysis_data_retrieval.md +4 -0
  57. package/skills/ae-analysis/references/asset_batch_info_export.md +10 -0
  58. package/skills/ae-analysis/references/asset_batch_sql_export.md +13 -1
  59. package/skills/ae-analysis/references/asset_export.md +12 -1
  60. package/skills/ae-analysis/references/asset_list.md +1 -0
  61. package/skills/ae-analysis/references/asset_search.md +11 -5
  62. package/skills/ae-analysis/references/bi_panel_list.md +1 -1
  63. package/skills/ae-analysis/references/catalog_list.md +1 -1
  64. package/skills/ae-analysis/references/collaboration.md +48 -0
  65. package/skills/ae-analysis/references/command_index.md +16 -15
  66. package/skills/ae-analysis/references/dashboard_list.md +4 -4
  67. package/skills/ae-analysis/references/dashboard_report_data_export.md +2 -0
  68. package/skills/ae-analysis/references/event_export.md +3 -1
  69. package/skills/ae-analysis/references/governance_recommendation_auto_review.md +71 -0
  70. package/skills/ae-analysis/references/governance_recommendation_export.md +11 -0
  71. package/skills/ae-analysis/references/metadata_resolution.md +3 -3
  72. package/skills/ae-analysis/references/metric_export.md +3 -1
  73. package/skills/ae-analysis/references/metric_list.md +1 -1
  74. package/skills/ae-analysis/references/operation_record_export.md +10 -0
  75. package/skills/ae-analysis/references/personal_semantic_preference_add.md +2 -2
  76. package/skills/ae-analysis/references/personal_semantic_preference_get.md +6 -4
  77. package/skills/ae-analysis/references/personal_semantic_preference_list.md +5 -3
  78. package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +3 -3
  79. package/skills/ae-analysis/references/property_export.md +3 -1
  80. package/skills/ae-analysis/references/report_create.md +4 -0
  81. package/skills/ae-analysis/references/report_data_export.md +6 -0
  82. package/skills/ae-analysis/references/report_get.md +2 -0
  83. package/skills/ae-analysis/references/report_list.md +5 -5
  84. package/skills/ae-analysis/references/report_update.md +6 -0
  85. package/skills/ae-analysis/references/sql_table_columns.md +4 -4
  86. package/skills/ae-analysis/references/sql_table_list.md +5 -5
  87. package/skills/ae-analysis/references/user_cluster_models.md +8 -0
  88. package/skills/ae-analysis/references/user_tag_create.md +7 -1
  89. package/skills/ae-analysis/references/user_tag_get.md +1 -1
  90. package/skills/ae-analysis/references/user_tag_models.md +18 -2
  91. package/skills/ae-analysis/references/user_tag_refresh.md +1 -1
  92. package/skills/ae-analysis/references/user_tag_update.md +2 -2
  93. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-rules.md +1 -1
  94. package/skills/ae-capability/SKILL.md +63 -1
  95. package/skills/ae-capability/references/collaboration.md +48 -0
  96. package/skills/ae-community/SKILL.md +5 -1
  97. package/skills/ae-community/references/collaboration.md +48 -0
  98. package/skills/ae-data-integration/SKILL.md +4 -0
  99. package/skills/ae-data-integration/references/collaboration.md +48 -0
  100. package/skills/ae-data-integration-helper/references/cpp_server_sdk_faq.md +2 -2
  101. package/skills/ae-data-integration-helper/references/logbus2_parser_plugin.md +6 -6
  102. package/skills/ae-data-integration-helper/references/sdk_log_guide.md +4 -4
  103. package/skills/ae-dataops/SKILL.md +54 -74
  104. package/skills/ae-dataops/references/collaboration.md +48 -0
  105. package/skills/ae-dataops/references/dataops-backfill.md +23 -18
  106. package/skills/ae-dataops/references/dataops-flow-create.md +74 -23
  107. package/skills/ae-dataops/references/dataops-flow-monitor.md +45 -13
  108. package/skills/ae-dataops/references/dataops-integration.md +57 -30
  109. package/skills/ae-dataops/references/dataops-query.md +21 -4
  110. package/skills/ae-dataops/references/dataops-table.md +143 -11
  111. package/skills/ae-engage/SKILL.md +21 -6
  112. package/skills/ae-engage/references/add-channel.md +3 -3
  113. package/skills/ae-engage/references/channel-mgmt.md +3 -3
  114. package/skills/ae-engage/references/collaboration.md +48 -0
  115. package/skills/ae-engage/references/common-metric.md +2 -2
  116. package/skills/ae-engage/references/save-task.md +2 -2
  117. package/skills/ae-engage/references/scene-config-channel.md +4 -4
  118. package/skills/ae-generate-tracking-code/SKILL.md +1 -1
  119. package/skills/ae-generate-tracking-plan/SKILL.md +4 -0
  120. package/skills/ae-generate-tracking-plan/references/collaboration.md +48 -0
  121. package/skills/ae-kb/SKILL.md +9 -1
  122. package/skills/ae-kb/references/collaboration.md +48 -0
  123. package/skills/ae-kb/references/schema-import.md +30 -0
  124. package/skills/ae-kb-discovery/SKILL.md +7 -2
  125. package/skills/ae-kb-discovery/references/collaboration.md +48 -0
  126. package/skills/ae-metadata/SKILL.md +20 -12
  127. package/skills/ae-metadata/references/collaboration.md +48 -0
@@ -29,7 +29,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
29
29
  | `ae-cli analysis alert-job list` | analysis.alert_job.list | read | `--project-id` (number; required) — Numeric project ID. | [alert_job_list.md](alert_job_list.md) |
30
30
  | `ae-cli analysis alert-notice-config list` | analysis.alert_notice_config.list | read | `--project-id` (number; required) — Numeric project ID. | [alert_notice_config_list.md](alert_notice_config_list.md) |
31
31
  | `ae-cli analysis artifact download` | gateway lifecycle | read | `--run-id` (string; required) — Async run ID returned by an export capability.<br>`--artifact-id` (string; required) — Artifact ID returned by the same export capability.<br>`--output` (string; required) — Local output file path. Existing paths are refused unless --force is passed.<br>`--force` (boolean; optional) — Atomically replace an existing output file. | [artifact_download.md](artifact_download.md) |
32
- | `ae-cli analysis asset search` | analysis.asset.search | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; required) — Required JSON array of 1 to 20 keyword filters. For first-pass asset discovery, use one broad search without --asset-types so results can include both dashboards and reports.<br>`--asset-types` (json; optional) — Optional saved analysis asset type narrowing. Omit by default for first-pass asset discovery so dashboards and reports are searched together; pass only when the user explicitly asks for one type or after refining a broad search.<br>`--own-types` (json; optional) — Optional owner filter. CREATED means owned by the current user; SHARED means visible assets created by others.<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_search.md](asset_search.md) |
32
+ | `ae-cli analysis asset search` | analysis.asset.search | read | `--project-id` (number; required) — Numeric project ID.<br>`--queries` (json; required) — Required JSON array of 1 to 20 keyword filters. For first-pass asset discovery, use one broad search without --asset-types and request a large page; when has_more is true and no strong candidate is present, continue with next_offset before narrowing or rewriting keywords.<br>`--asset-types` (json; optional) — Optional saved analysis asset type narrowing. Omit by default for first-pass asset discovery so dashboards and reports are searched together; pass only when the user explicitly asks for one type or after refining a broad search.<br>`--own-types` (json; optional) — Optional owner filter. CREATED means owned by the current user; SHARED means visible assets created by others.<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_search.md](asset_search.md) |
33
33
  | `ae-cli analysis bi-panel copy` | analysis.bi_panel.copy | write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-name` (string; required) — New BI panel name.<br>`--panel-uuid` (string; required) — Source BI panel UUID.<br>`--space-id` (number; optional) — Target project space ID.<br>`--folder-id` (number; optional) — Target folder ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [bi_panel_copy.md](bi_panel_copy.md) |
34
34
  | `ae-cli analysis bi-panel create` | analysis.bi_panel.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-name` (string; required) — Name for the new empty BI dashboard shell.<br>`--space-id` (number; optional) — Target project space ID.<br>`--folder-id` (number; optional) — Target folder ID. | [bi_panel_create.md](bi_panel_create.md) |
35
35
  | `ae-cli analysis bi-panel delete` | analysis.bi_panel.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--panel-ids` (json; required) — BI panel ID array. | [bi_panel_delete.md](bi_panel_delete.md) |
@@ -60,7 +60,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
60
60
  | `ae-cli analysis dashboard-definition export` | analysis.dashboard_definition.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; optional) — Single dashboard ID to export. The gateway resolves folder or project-space context.<br>`--dashboard-ids` (json; optional) — Dashboard ID array to export. The gateway resolves folder or project-space context.<br>`--dashboard-folder-ids` (json; optional) — Private folder ID array, or advanced descriptor array: [{"dashboard_folder_id":1,"dashboard_ids":[2]}].<br>`--shared-spaces` (json; optional) — Shared space export descriptor array.<br>`--export-file-name` (string; optional) — Optional export file name.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_definition_export.md](dashboard_definition_export.md) |
61
61
  | `ae-cli analysis dashboard-definition import` | analysis.dashboard_definition.import | write | `--project-id` (number; required) — Numeric project ID.<br>`--definition` (json; required) — Dashboard definition JSON object.<br>`--validate-only` (boolean; optional) — Only validate import conflicts and importable state.<br>`--dashboard-name-conflict-policy` (string; optional) — Optional dashboard name conflict policy.<br>`--space-dashboard-policy` (string; optional) — Optional space/dashboard import policy.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [dashboard_definition_import.md](dashboard_definition_import.md) |
62
62
  | `ae-cli analysis dashboard-report add` | analysis.dashboard_report.add | write | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--report-ids` (json; required) — Report ID array to add. | [dashboard_report_add.md](dashboard_report_add.md) |
63
- | `ae-cli analysis dashboard-report-data export` | analysis.dashboard_report_data.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--report-ids` (json; optional) — Optional report ID array. Omit to query all dashboard reports.<br>`--filters` (json; optional) — Optional AI-facing filter {relation,items:[{field:{name,type?},operator,values?}]}. SQL reports ignore it and the artifact includes warnings; raw taFilters/junctionKind/filts are rejected.<br>`--start-time` (string; optional) — Optional start date/time. SQL reports ignore it and the artifact includes warnings.<br>`--end-time` (string; optional) — Optional end date/time. SQL reports ignore it and the artifact includes warnings.<br>`--cluster-query-scope` (string; optional) — Optional physical query routing: GLOBAL aggregates accessible query clusters; SLAVE targets one --slave-cluster-id. Omit for the surface default.<br>`--slave-cluster-id` (string; optional) — Physical slave query-cluster ID from analysis query-cluster list. Required only with --cluster-query-scope SLAVE.<br>`--zone-offset` (number; optional) — Query execution timezone. Omit it to match the report UI for the current user (user selection when available, otherwise project default). Use a fixed UTC offset from -12 through 14, or 99 for local-time mode with no conversion to one fixed UTC offset; 99 is not UTC+99. This is not persisted in the report definition.<br>`--use-cache` (boolean; optional) — Whether to use cache. Default: true.<br>`--request-id` (string; optional) — Optional cli_<32 lowercase hex> request ID. Generated when omitted.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Async runtime in seconds. Default and max: 21600 (6 hours); cancel earlier with analysis query cancel --run-id <run_id>.<br>`--artifact-format` (string; optional) — Artifact format. Only jsonl is supported.<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. | [dashboard_report_data_export.md](dashboard_report_data_export.md) |
63
+ | `ae-cli analysis dashboard-report-data export` | analysis.dashboard_report_data.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--report-ids` (json; optional) — Optional report ID array. Omit to query all dashboard reports.<br>`--filters` (json; optional) — Optional AI-facing filter {relation,items:[{field:{name,type?},operator,values?}]}. SQL reports ignore it and the artifact includes warnings; raw taFilters/junctionKind/filts are rejected.<br>`--start-time` (string; optional) — Optional start date/time. SQL reports ignore it and the artifact includes warnings.<br>`--end-time` (string; optional) — Optional end date/time. SQL reports ignore it and the artifact includes warnings.<br>`--cluster-query-scope` (string; optional) — Optional physical query routing: GLOBAL aggregates accessible query clusters; SLAVE targets one --slave-cluster-id. Omit for the surface default.<br>`--slave-cluster-id` (string; optional) — Physical slave query-cluster ID from analysis query-cluster list. Required only with --cluster-query-scope SLAVE.<br>`--zone-offset` (number; optional) — Query execution timezone. Omit it to match the report UI for the current user (user selection when available, otherwise project default). Use a fixed UTC offset from -12 through 14, or 99 for local-time mode with no conversion to one fixed UTC offset; 99 is not UTC+99. This is not persisted in the report definition.<br>`--request-id` (string; optional) — Optional cli_<32 lowercase hex> request ID. Generated when omitted.<br>`--timeout-seconds` (number; optional, min=1, max=21600) — Async runtime in seconds. Default and max: 21600 (6 hours); cancel earlier with analysis query cancel --run-id <run_id>.<br>`--artifact-format` (string; optional) — Artifact format. Only jsonl is supported.<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. | [dashboard_report_data_export.md](dashboard_report_data_export.md) |
64
64
  | `ae-cli analysis dashboard-report-data run` | analysis.dashboard_report_data.run | read | `--project-id` (number; required) — Numeric project ID.<br>`--dashboard-id` (number; required) — Dashboard ID.<br>`--report-ids` (json; optional) — Optional report ID array. Omit to query all dashboard reports.<br>`--filters` (json; optional) — Optional AI-facing filter {relation,items:[{field:{name,type?},operator,values?}]}. SQL reports ignore it and produce data.warnings; raw taFilters/junctionKind/filts are rejected.<br>`--start-time` (string; optional) — Optional start date/time. SQL reports ignore it and produce data.warnings.<br>`--end-time` (string; optional) — Optional end date/time. SQL reports ignore it and produce data.warnings.<br>`--cluster-query-scope` (string; optional) — Optional physical query routing: GLOBAL aggregates accessible query clusters; SLAVE targets one --slave-cluster-id. Omit for the surface default.<br>`--slave-cluster-id` (string; optional) — Physical slave query-cluster ID from analysis query-cluster list. Required only with --cluster-query-scope SLAVE.<br>`--zone-offset` (number; optional) — Query execution timezone. Omit it to match the report UI for the current user (user selection when available, otherwise project default). Use a fixed UTC offset from -12 through 14, or 99 for local-time mode with no conversion to one fixed UTC offset; 99 is not UTC+99. This is not persisted in the report definition.<br>`--use-cache` (boolean; optional) — Whether to use cache. Default: true.<br>`--request-id` (string; optional) — Optional cli_<32 lowercase hex> request ID. Generated when omitted.<br>`--preview-rows` (number; optional, min=1) — Maximum synchronous preview units returned per result. Units are business rows for tabular results. For path results, this limits real nodes per path level before overflow nodes are combined into more. Omit to use the current model/cluster synchronous limit. The runtime maximum varies by model; agents should normally pass 100.<br>`--timeout-seconds` (number; optional, min=1, max=180) — Sync timeout seconds. Default: 180, max: 180. | [dashboard_report_data_run.md](dashboard_report_data_run.md) |
65
65
  | `ae-cli analysis drilldown-entities export` | analysis.query.drilldown_entities_export | read | `--project-id` (number; required) — Numeric project ID.<br>`--query-context-id` (string; required) — query_context_id returned by a synchronous analysis preview. Analysis exports never create one.<br>`--source` (json; optional) — Source selector copied from the compact sources[] summary when the synchronous preview contains multiple reports or charts. Pass exactly one returned field: report_id or chart_id.<br>`--coordinate` (json; required) — One semantic cell coordinate assembled only from row_options, column_options, and metric_options returned by analysis query-context get. Never pass target_id, raw QP, or inferred values.<br>`--properties` (json; optional) — Optional property projection object array using exact columnName and named tableType values (event or user). Subject-specific support and mandatory identity columns are documented by each command; do not pass string-name arrays.<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted.<br>`--use-cache` (boolean; optional) — Whether to use query cache. Default: true.<br>`--artifact-format` (string; optional) — Artifact format. Only csv is supported; the downloaded artifact is csv.gz.<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. | [drilldown_entities_export.md](drilldown_entities_export.md) |
66
66
  | `ae-cli analysis drilldown-entities run` | analysis.query.drilldown_entities | read | `--project-id` (number; required) — Numeric project ID.<br>`--query-context-id` (string; required) — query_context_id returned by a synchronous analysis preview. Analysis exports never create one.<br>`--source` (json; optional) — Source selector copied from the compact sources[] summary when the synchronous preview contains multiple reports or charts. Pass exactly one returned field: report_id or chart_id.<br>`--coordinate` (json; required) — One semantic cell coordinate assembled only from row_options, column_options, and metric_options returned by analysis query-context get. Never pass target_id, raw QP, or inferred values.<br>`--properties` (json; optional) — Optional property projection object array using exact columnName and named tableType values (event or user). Subject-specific support and mandatory identity columns are documented by each command; do not pass string-name arrays.<br>`--request-id` (string; optional) — Optional caller-supplied cli_<32 lowercase hex> lifecycle ID. ae-cli generates and prints one before dispatch when omitted.<br>`--use-cache` (boolean; optional) — Whether to use query cache. Default: true.<br>`--preview-rows` (number; optional, min=1) — Maximum business rows returned per result. Omit to use the current model/cluster synchronous limit. The runtime maximum varies by model; agents should normally pass 100.<br>`--timeout-seconds` (number; optional, min=1, max=180) — Sync timeout seconds. Default: 120, max: 180. | [drilldown_entities_run.md](drilldown_entities_run.md) |
@@ -99,12 +99,12 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
99
99
  | `ae-cli analysis query create-result-cluster` | analysis.query.create_result_cluster | write | `--project-id` (number; required) — Numeric project ID.<br>`--query-context-id` (string; required) — query_context_id returned by a synchronous analysis preview. Never use an export response.<br>`--source` (json; optional) — Source selector copied from the compact sources[] summary when the synchronous preview contains multiple reports or charts. Pass exactly one returned field: report_id or chart_id.<br>`--coordinate` (json; required) — One semantic cell coordinate assembled only from row_options, column_options, and metric_options returned by analysis query-context get. Never pass target_id, raw QP, or inferred values.<br>`--cluster-name` (string; required, minLength=1, maxLength=24, pattern=^[a-z][a-z0-9_]*$) — Unique result cluster name. Must start with a lowercase letter, contain only lowercase letters, digits, and underscores, and be at most 24 characters.<br>`--display-name` (string; optional, minLength=1, maxLength=80) — Optional result cluster display name. Maximum: 80 characters.<br>`--zone-offset` (number; optional) — Optional timezone offset. UTC+8 is 8; UTC-5 is -5.<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) — Optional capability execution timeout in seconds. | [query_create_result_cluster.md](query_create_result_cluster.md) |
100
100
  | `ae-cli analysis query-cluster list` | analysis.query_cluster.list | read | `--project-id` (number; required) — Numeric project ID. | [query_cluster_list.md](query_cluster_list.md) |
101
101
  | `ae-cli analysis query-context get` | analysis.query.context_get | read | `--project-id` (number; required) — Numeric project ID.<br>`--query-context-id` (string; required) — query_context_id returned by a synchronous analysis preview.<br>`--source` (json; optional) — Source selector copied from the compact sources[] summary. Required for multi-source contexts; pass exactly one field: report_id or chart_id. | [query_context_get.md](query_context_get.md) |
102
- | `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) — Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). 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>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","model_type":"event","definition":{...}}. ae-cli rejects drift between this snapshot and the final model-type/definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition. 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) |
102
+ | `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) — Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). 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. Saved-report filters may contain one compound group level only; every item inside that group must be a leaf without another items array. Historical deeper trees remain readable but cannot be written back as a definition. 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>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","model_type":"event","definition":{...}}. ae-cli rejects drift between this snapshot and the final model-type/definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition. 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) |
103
103
  | `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) |
104
104
  | `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) |
105
105
  | `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) |
106
106
  | `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) |
107
- | `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) — Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). 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>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","model_type":"event","definition":{...}}. ae-cli rejects drift between this snapshot and the final model-type/definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition. 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) |
107
+ | `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. Pass an empty string to clear it; omit to preserve it.<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) — Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). 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. Saved-report filters may contain one compound group level only; every item inside that group must be a leaf without another items array. Historical deeper trees remain readable but cannot be written back as a definition. 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>`--intent-snapshot` (json; optional) — Optional user-confirmed intent snapshot: {"schema_version":1,"requirement":"...","model_type":"event","definition":{...}}. ae-cli rejects drift between this snapshot and the final model-type/definition before validate, dry-run, or execute. The snapshot is not sent to the Gateway.<br>`--resolutions` (json; optional) — Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition. 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) |
108
108
  | `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) |
109
109
  | `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) |
110
110
  | `ae-cli analysis report-change-log list` | analysis.report_change_log.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID. | [report_change_log_list.md](report_change_log_list.md) |
@@ -113,8 +113,8 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
113
113
  | `ae-cli analysis report-version rollback` | analysis.report_version.rollback | write | `--project-id` (number; required) — Numeric project ID.<br>`--report-id` (number; required) — Report ID.<br>`--target-version` (number; required) — History version to rollback to. | [report_version_rollback.md](report_version_rollback.md) |
114
114
  | `ae-cli analysis run inspect` | gateway lifecycle | read | `--run-id` (string; required) — Async run ID returned by an export capability. | [run_inspect.md](run_inspect.md) |
115
115
  | `ae-cli analysis run wait` | gateway lifecycle | read | `--run-id` (string; required) — Async run ID returned by an export capability.<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) — After success, stream the artifact to this local file.<br>`--force` (boolean; optional) — Allow --output to atomically replace an existing file. | [run_wait.md](run_wait.md) |
116
- | `ae-cli analysis sql-table columns` | analysis.sql_table.columns | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-ref` (string; required) — Exact table_ref returned by analysis sql-table list; a unique table-only reference is also accepted.<br>`--usage` (string; optional) — Authorized table set: analysis (default) or tag_cluster. Use tag_cluster before creating SQL tags or clusters. | [sql_table_columns.md](sql_table_columns.md) |
117
- | `ae-cli analysis sql-table list` | analysis.sql_table.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>`--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>`--usage` (string; optional) — Authorized table set: analysis (default) or tag_cluster. Use tag_cluster before creating SQL tags or clusters. | [sql_table_list.md](sql_table_list.md) |
116
+ | `ae-cli analysis sql-table columns` | analysis.sql_table.columns | read | `--project-id` (number; required) — Numeric project ID.<br>`--table-ref` (string; required) — Exact table_ref or quoted sql_reference returned by analysis sql-table list; a unique table-only reference is also accepted.<br>`--usage` (string; optional) — Authorized table set: analysis (default), tag_cluster for SQL tags/clusters, or sql_datatable for SQL-built data tables. Use the same usage for list and columns. | [sql_table_columns.md](sql_table_columns.md) |
117
+ | `ae-cli analysis sql-table list` | analysis.sql_table.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>`--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>`--usage` (string; optional) — Authorized table set: analysis (default), tag_cluster for SQL tags/clusters, or sql_datatable for SQL-built data tables. Use the same usage for list and columns. | [sql_table_list.md](sql_table_list.md) |
118
118
  | `ae-cli analysis user-cluster create` | analysis.user_cluster.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--cluster-name` (string; required, minLength=1, maxLength=80, pattern=^[a-zA-Z][a-zA-Z0-9_]*$) — New cluster_name. Must start with a letter, contain only letters, digits, and underscores, and be at most 80 characters.<br>`--display-name` (string; required, minLength=1, maxLength=80) — Human-readable display name. Maximum: 80 characters.<br>`--definition-request` (json; required) — Semantic snake_case cluster definition. Read skills/ae-analysis/references/user_cluster_models.md; shared primitives are in audience_models.md.<br>`--authenticated-only` (boolean; optional) — Return only resources whose metadata can be resolved under the current identity.<br>`--zone-offset` (number; optional) — Optional timezone offset. UTC+8 is 8; UTC-5 is -5.<br>`--entity-id` (number; optional) — Optional entity ID. Required by ID-file create commands. | [user_cluster_create.md](user_cluster_create.md) |
119
119
  | `ae-cli analysis user-cluster create-id` | analysis.user_cluster.create_id | write | `--project-id` (number; required) — Numeric project ID.<br>`--cluster-name` (string; optional, minLength=1, maxLength=80, pattern=^[a-zA-Z][a-zA-Z0-9_]*$) — Optional cluster_name; generated if omitted. When provided, it must satisfy the 1-80 character machine-name contract.<br>`--display-name` (string; required, minLength=1, maxLength=80) — Human-readable display name. Maximum: 80 characters.<br>`--entity-id` (number; required) — Required analysis entity. Use the primary user entity only when matching uploaded external identifiers through a user property.<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_create_id.md](user_cluster_create_id.md) |
120
120
  | `ae-cli analysis user-cluster delete` | analysis.user_cluster.delete | 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>`--confirmed` (boolean; optional) — Set true only after dependency and influence checks have been accepted. | [user_cluster_delete.md](user_cluster_delete.md) |
@@ -142,10 +142,10 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
142
142
  | `ae-cli analysis-governance asset batch-disable-auto-backup` | governance.asset.batch_disable_auto_backup | write | `--project-id` (number; required) — Numeric project ID.<br>`--node-ids` (json; optional) — Asset node ID JSON array.<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_disable_auto_backup.md](asset_batch_disable_auto_backup.md) |
143
143
  | `ae-cli analysis-governance asset batch-disable-auto-update` | governance.asset.batch_disable_auto_update | write | `--project-id` (number; required) — Numeric project ID.<br>`--node-ids` (json; optional) — Asset node ID JSON array.<br>`--refresh-type` (number; optional) — Dashboard refresh type: 1 enabled, 0 disabled.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_batch_disable_auto_update.md](asset_batch_disable_auto_update.md) |
144
144
  | `ae-cli analysis-governance asset batch-handover` | governance.asset.batch_handover | write | `--project-id` (number; required) — Numeric project ID.<br>`--node-ids` (json; optional) — Asset node ID JSON array.<br>`--to-user-id` (number; optional) — Target user ID for handover; required here or as payload.to_user_id.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_batch_handover.md](asset_batch_handover.md) |
145
- | `ae-cli analysis-governance asset batch-info-export` | governance.asset.batch_export_info | read | `--project-id` (number; required) — Numeric project ID.<br>`--node-ids` (json; optional) — Asset node ID JSON array.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_batch_info_export.md](asset_batch_info_export.md) |
146
- | `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>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_batch_sql_export.md](asset_batch_sql_export.md) |
147
- | `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) |
148
- | `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) |
145
+ | `ae-cli analysis-governance asset batch-info-export` | governance.asset.batch_export_info | read | `--project-id` (number; required) — Numeric project ID.<br>`--node-ids` (json; optional) — Asset node ID JSON array.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields.<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: xlsx. This capability supports only xlsx.<br>`--timeout-seconds` (number; optional, min=1, max=7200) — Async export runtime in seconds. Default: 3600, max: 7200.<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. | [asset_batch_info_export.md](asset_batch_info_export.md) |
146
+ | `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>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields.<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: xlsx. This capability supports only xlsx.<br>`--timeout-seconds` (number; optional, min=1, max=7200) — Async export runtime in seconds. Default: 3600, max: 7200.<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. | [asset_batch_sql_export.md](asset_batch_sql_export.md) |
147
+ | `ae-cli analysis-governance asset export` | governance.asset.export | 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>`--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.<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. This capability supports only jsonl.<br>`--timeout-seconds` (number; optional, min=1, max=7200) — Async export runtime in seconds. Default: 3600, max: 7200.<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. | [asset_export.md](asset_export.md) |
148
+ | `ae-cli analysis-governance asset list` | governance.asset.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>`--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) |
149
149
  | `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) |
150
150
  | `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) |
151
151
  | `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) |
@@ -153,7 +153,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
153
153
  | `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>`--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) |
154
154
  | `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
155
  | `ae-cli analysis-governance asset-query-history list` | governance.asset_query_history.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--node-id` (string; optional) — Poseidon asset node 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.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [asset_query_history_list.md](asset_query_history_list.md) |
156
- | `ae-cli analysis-governance operation-record export` | governance.operation_record.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--record-id` (number; optional) — Operation record ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [operation_record_export.md](operation_record_export.md) |
156
+ | `ae-cli analysis-governance operation-record export` | governance.operation_record.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--record-id` (number; optional) — Operation record ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields.<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: xlsx. This capability supports only xlsx.<br>`--timeout-seconds` (number; optional, min=1, max=7200) — Async export runtime in seconds. Default: 3600, max: 7200.<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. | [operation_record_export.md](operation_record_export.md) |
157
157
  | `ae-cli analysis-governance operation-record list` | governance.operation_record.list | read | `--project-id` (number; required) — Numeric project ID.<br>`--type` (string; optional) — Batch operation type.<br>`--status` (json; optional) — Operation status JSON array.<br>`--query` (string; optional) — Optional keyword filter.<br>`--sort-field` (string; optional) — Sort field.<br>`--sort-order` (string; optional) — Sort order: asc or desc.<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. | [operation_record_list.md](operation_record_list.md) |
158
158
  | `ae-cli analysis-governance rule create` | governance.rule.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--rule-name` (string; optional) — Governance rule name.<br>`--comment` (string; optional) — Governance rule comment.<br>`--rule` (json; optional) — Governance Filter JSON object.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [rule_create.md](rule_create.md) |
159
159
  | `ae-cli analysis-governance rule delete` | governance.rule.delete | high-risk-write | `--project-id` (number; required) — Numeric project ID.<br>`--rule-id` (number; optional) — Governance rule ID.<br>`--payload` (json; optional) — Optional snake_case object for complex capability payload fields. | [rule_delete.md](rule_delete.md) |
@@ -182,7 +182,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
182
182
  | `ae-cli analysis-meta event changelog-list` | metadata.event.changelog_list | read | `--project-id` (number; required) — Numeric project ID.<br>`--event-name` (string; required) — Event name. | [event_changelog_list.md](event_changelog_list.md) |
183
183
  | `ae-cli analysis-meta event create` | metadata.event.create | 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_create.md](event_create.md) |
184
184
  | `ae-cli analysis-meta event delete` | metadata.event.delete | high-risk-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. | [event_delete.md](event_delete.md) |
185
- | `ae-cli analysis-meta event export` | metadata.event.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>`--authenticated-only` (boolean; optional) — When true, export only authenticated events.<br>`--output` (string; required) — Local .json output file for the complete matching metadata rows. | [event_export.md](event_export.md) |
185
+ | `ae-cli analysis-meta event export` | metadata.event.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>`--authenticated-only` (boolean; optional) — When true, export 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.<br>`--output` (string; required) — Local .json output file for the complete matching metadata rows. | [event_export.md](event_export.md) |
186
186
  | `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) |
187
187
  | `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) |
188
188
  | `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) |
@@ -196,19 +196,20 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
196
196
  | `ae-cli analysis-meta exchange rule-list` | metadata.exchange_rule.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. | [exchange_rule_list.md](exchange_rule_list.md) |
197
197
  | `ae-cli analysis-meta exchange rule-update` | metadata.exchange_rule.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. | [exchange_rule_update.md](exchange_rule_update.md) |
198
198
  | `ae-cli analysis-meta exchange rule-validate` | metadata.exchange_rule.validate | read | `--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. | [exchange_rule_validate.md](exchange_rule_validate.md) |
199
+ | `ae-cli analysis-meta governance-recommendation auto-review` | metadata.governance_recommendation.auto_review | write | `--project-id` (number; required) — Numeric project ID.<br>`--window-days` (number; optional, min=1, max=365) — Usage window in days for the recommendation batch. Default: 90.<br>`--limit` (number; optional, min=1, max=100) — Maximum hot dashboard evidence packages selected before automatic asset review. Omit for CLI bounded expansion over top-20/top-50/top-100; pass explicitly for a fixed diagnostic scope. | [governance_recommendation_auto_review.md](governance_recommendation_auto_review.md) |
199
200
  | `ae-cli analysis-meta governance-recommendation decisions` | metadata.governance_recommendation.decisions | read | `--project-id` (number; required) — Numeric project ID.<br>`--run-id` (string; optional) — Optional run_id filter.<br>`--limit` (number; optional, min=1, max=500) — Maximum rows returned. Default: 100. | [governance_recommendation_decisions.md](governance_recommendation_decisions.md) |
200
201
  | `ae-cli analysis-meta governance-recommendation export` | metadata.governance_recommendation.export | read | `--project-id` (number; required) — Numeric project ID.<br>`--window-days` (number; optional, min=1, max=365) — Usage window in days. Default: 90.<br>`--limit` (number; optional, min=1, max=100) — Maximum hot dashboard evidence packages selected before report and metadata expansion. Default: 20; this is not the business-topic count.<br>`--include-completed` (boolean; optional) — Whether to include completed/authenticated context in the same business topic. Default: true; set false only for pending-only review. | [governance_recommendation_export.md](governance_recommendation_export.md) |
201
202
  | `ae-cli analysis-meta governance-recommendation submit` | metadata.governance_recommendation.submit | write | `--project-id` (number; required) — Numeric project ID.<br>`--run-id` (string; required) — run_id returned by governance-recommendation export.<br>`--snapshot-hash` (string; optional) — Authentication snapshot hash returned by governance-recommendation export.<br>`--topic-id` (string; optional) — Optional CLI Agent business-domain ID. Dashboard-seeded evidence may submit only topic-name.<br>`--topic-name` (string; required) — CLI Agent business-domain display name.<br>`--window-days` (number; optional, min=1, max=365) — Usage window in days for server-side metric candidate re-scan. Default: 90.<br>`--limit` (number; optional, min=1, max=100) — Dashboard limit for server-side metric candidate re-scan. Default: 20.<br>`--decisions` (json; required) — Approval decisions JSON array for one CLI Agent topic. Each item uses item_type asset or metric_candidate and decision APPROVE, REJECT, or SKIP. | [governance_recommendation_submit.md](governance_recommendation_submit.md) |
202
203
  | `ae-cli analysis-meta metric create` | metadata.metric.create | write | `--project-id` (number; required) — Numeric project ID.<br>`--metric-name` (string; required) — Metric technical name, for example pay_count.<br>`--metric-desc` (string; required) — Metric display name.<br>`--metric-remark` (string; optional) — Metric remark.<br>`--model-type` (string; required) — Semantic metric model type: event or retention.<br>`--metric-events` (json; required) — One semantic event-analysis definition, or a native snake_case QP array for compatibility.<br>`--metric-params` (json; optional) — Metric params JSON object. Defaults to {} in common when omitted. | [metric_create.md](metric_create.md) |
203
204
  | `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) |
204
- | `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) |
205
+ | `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>`--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>`--output` (string; required) — Local .json output file for the complete matching metadata rows. | [metric_export.md](metric_export.md) |
205
206
  | `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) |
206
207
  | `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) |
207
208
  | `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) |
208
209
  | `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) |
209
210
  | `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) |
210
211
  | `ae-cli analysis-meta property delete` | metadata.property.delete | high-risk-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. | [property_delete.md](property_delete.md) |
211
- | `ae-cli analysis-meta property export` | metadata.property.export | 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>`--authenticated-only` (boolean; optional) — When true, export only authenticated properties.<br>`--output` (string; required) — Local .json output file for the complete matching metadata rows. | [property_export.md](property_export.md) |
212
+ | `ae-cli analysis-meta property export` | metadata.property.export | 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>`--authenticated-only` (boolean; optional) — When true, export 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.<br>`--output` (string; required) — Local .json output file for the complete matching metadata rows. | [property_export.md](property_export.md) |
212
213
  | `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) |
213
214
  | `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) |
214
215
  | `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) |
@@ -226,7 +227,7 @@ This is the exhaustive command and flag inventory for the analysis skill. Read t
226
227
  | `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) |
227
228
  | `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) |
228
229
  | `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) |
229
- | `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) |
230
+ | `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>`--title` (string; required, minLength=1, maxLength=255) — Preference title copied from list output for telemetry only.<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) |
230
231
  | `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) |
231
232
  | `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) |
232
233
  | `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) |
@@ -1,16 +1,16 @@
1
1
  # analysis dashboard list
2
2
 
3
- Use when the user needs to find dashboards they can access, with optional keyword, owner, permission, favorite, or projection filters supported by the gateway payload.
3
+ Use when the user needs a directory of dashboards they can update or manage, with optional keyword search, certification filtering, field projection, and inline pagination. The result includes both self-created and shared dashboards when effective update permission is present; it excludes shared read-only dashboards and dashboards granted only by view-all authority.
4
4
 
5
- Do not use for dashboard report data. Use `dashboard-report-data run` or `dashboard-report-data export` instead.
5
+ Do not use for readable asset discovery: use `analysis asset search`, which includes shared read-only reports and dashboards. Do not use for dashboard report data. Use `dashboard-report-data run` or `dashboard-report-data export` instead.
6
6
 
7
7
  Command:
8
8
 
9
9
  ```bash
10
- ae-cli analysis dashboard list --project-id <project_id> [--queries '["growth","retention"]'] [--fields '["dashboard_id","dashboard_name"]'] [--limit 50] [--offset 0]
10
+ ae-cli analysis dashboard list --project-id <project_id> [--queries '["growth","retention"]'] [--fields '["dashboard_id","dashboard_name"]'] [--certification-scope project|certified|all] [--limit 50] [--offset 0]
11
11
  ```
12
12
 
13
- Input uses `project_id` plus optional `queries`, `fields`, `limit`, `offset`. `queries` is a JSON array of 1 to 20 non-empty strings; values use OR semantics. Matching rows include `matched_queries` and `matched_fields`. `--fields` accepts only `dashboard_id`, `dashboard_name`, and `remark`. Input and output both use snake_case; do not use `query`, `dashboardId`, `dashboardName`, generic `id`, or generic `name`.
13
+ Input uses `project_id` plus optional `queries`, `fields`, `certification_scope`, `limit`, and `offset`. `queries` is a JSON array of 1 to 20 non-empty strings; values use OR semantics. Matching rows include `matched_queries` and `matched_fields`. `--fields` accepts only `dashboard_id`, `dashboard_name`, and `remark`. Input and output both use snake_case; do not use `query`, `dashboardId`, `dashboardName`, generic `id`, or generic `name`.
14
14
 
15
15
  When `has_more=true`, continue only with the returned `next_offset`; do not calculate the next page locally.
16
16
 
@@ -8,6 +8,8 @@ For full data, read [export handling](analysis_data_export.md) and use this `exp
8
8
 
9
9
  Do not use this command for bounded inline previews; use `dashboard-report-data run` when the requested result fits the sync data retrieval rule.
10
10
 
11
+ Export uses the native full-download path and does not accept `--use-cache`; cache selection only applies to bounded `dashboard-report-data run` queries.
12
+
11
13
  Command:
12
14
 
13
15
  ```bash
@@ -13,7 +13,9 @@ ae-cli analysis-meta event export --project-id <project_id> --queries '["login",
13
13
 
14
14
  Capability id: `metadata.event.export`.
15
15
 
16
- Input: the gateway receives `project_id` plus optional `queries`, `fields`, and `authenticated_only`; `output` is local-only.
16
+ Input: the gateway receives `project_id` plus optional `queries`, `fields`, `authenticated_only`, and `certification_scope`; `output` is local-only.
17
+
18
+ Use `--certification-scope project|certified|all` consistently with the corresponding list command. The default `project` follows the project switch; `certified` exports only certified assets; `all` exports every accessible asset. This scope never bypasses access permissions.
17
19
 
18
20
  Output: a successful response must prove `complete=true` and `total` equal to the row count before the CLI atomically publishes a private-mode `.json` array.
19
21
 
@@ -0,0 +1,71 @@
1
+ # analysis-meta governance-recommendation auto-review
2
+
3
+ Use this command only when the user explicitly asks the Agent to automatically review or automatically certify recommended assets.
4
+
5
+ Do not use this command for a plain recommendation request. Do not call this command for recommendation plus review-page submission. Those flows use `governance-recommendation export` and, when explicitly authorized, `agent-review submit-to-page`.
6
+
7
+ ## Input and command
8
+
9
+ ```bash
10
+ ae-cli analysis-meta governance-recommendation auto-review \
11
+ --project-id <project_id> \
12
+ --window-days 90
13
+ ```
14
+
15
+ Capability id: `metadata.governance_recommendation.auto_review`.
16
+
17
+ Risk: `write`.
18
+
19
+ When `--limit` is omitted, the CLI runs a bounded expansion flow before the write:
20
+
21
+ 1. Validate automatic-review preconditions first. The validate call must check both `agent_auto_asset_certification_enabled` and `project_semantic_enable`; if either is disabled, stop before collecting recommendations.
22
+ 2. Inspect top-20 pending recommendation material with `governance-recommendation export --include-completed false --limit 20`.
23
+ 3. If the retained pending scope is too small for a recurring automatic job, inspect top-50 with `--limit 50`, then top-100 with `--limit 100`. These are cumulative top-N hot-dashboard scopes, not pages.
24
+ 4. Stop when there are at least about 10 pending asset candidates and 3 pending work-unit branches, when Common says there are no more dashboards, or after top 100.
25
+ 5. Build automatic certification decisions exactly once from the final selected material, then submit those decisions for execution and audit. The 20/50/100 inspection steps are read-only and must not create certification traces.
26
+
27
+ Pass `--limit` only for an explicit diagnostic or user-specified scope. An explicit limit disables automatic expansion and preserves that exact scope.
28
+
29
+ ## Output
30
+
31
+ The command returns `manual_review_handoff` for assets that remain uncertified after automatic review. This handoff is not a page submission. It is the evidence packet to use only if the user later explicitly asks to submit the uncertified assets to the review page.
32
+
33
+ ## Project Switch
34
+
35
+ The server checks `agent_auto_asset_certification_enabled` before collecting recommendations.
36
+
37
+ If the command returns `PROJECT_AUTO_CERTIFICATION_DISABLED`, tell the user the project has not enabled automatic asset certification and stop. If it returns `PROJECT_SEMANTIC_DISABLED`, tell the user project semantics are not enabled and stop. Do not fall back to page submission, legacy `governance-recommendation submit`, direct asset-authentication update, metric mutation, or ordinary recommendation export.
38
+
39
+ ## Automatic Review Rules
40
+
41
+ Common owns the deterministic evidence packet and the final execution/audit write. The CLI Agent owns the automatic certification decision, including semantic-duplicate detection and reviewer-readable duplicate explanations.
42
+
43
+ - Only asset candidates are eligible for automatic certification. Metric candidates are not automatically created or certified.
44
+ - Only actionable candidates with strong positive evidence are approved.
45
+ - Candidates with missing source evidence, stale evidence, weak usage/impact signals, explicit prior human rejection/deferral, or CLI Agent semantic-duplicate findings are skipped for manual review.
46
+ - Semantic-duplicate skips must name the conflicting asset targets, including type/key/display name and the reason they are considered close, such as copy-like naming, same display name, synonym properties, or ambiguous close business definitions. Do not claim a duplicate when no concrete conflicting target is returned.
47
+ - The batch caps automatic decisions to the server-side limit and reports overflow separately.
48
+ - Heat, user count, and impact are signals for eligibility, not the full reason by themselves. The Agent must report the decision reason, duplicate targets where present, and source evidence so the customer can tell why a candidate was certified or skipped.
49
+
50
+ ## Audit Trace
51
+
52
+ Successful automatic review calls submit CLI Agent decisions through the same server-side certification path as manual approval, writing decision rows and certification operation records.
53
+
54
+ Automatic decision reasons must be reviewer-readable Chinese. Preserve raw source/rule identifiers only in debug exports or technical notes; do not expose fields such as `source`, `rule_version`, or raw `conflict_risks` as the page-visible explanation.
55
+
56
+ `decision:"APPROVE"` means the server attempted certification for that asset. `decision:"SKIP"` means the item remains uncertified and needs manual review if the user still wants it certified.
57
+
58
+ The command result includes `auto_review_expansion` when CLI expansion was used. Preserve `initial_limit`, `final_limit`, inspected limits, per-attempt pending counts, and `stop_reason` in unattended-job logs or user-facing summaries. This expansion trace explains why a daily automation did not keep reviewing only the same top-20 hot dashboards.
59
+
60
+ ## Follow-up Page Submission
61
+
62
+ If the user asks to submit the automatic-review leftovers to the page after `auto-review` has completed, do not rerun the whole recommendation flow as a fresh page-review batch unless the handoff is missing or stale. Use `manual_review_handoff` from the auto-review result:
63
+
64
+ - Submit `manual_review_handoff.page_review_items`, not only bare `manual_review_handoff.items`. `page_review_items` contains the uncertified assets plus the dashboard/report parent context required by the review page hierarchy. Treat only entries without `manual_review_context:true` as the human certification workload.
65
+ - Copy each item's original source links, evidence links, target reference, evidence snapshot, and relation context into the `agent-review submit-to-page` draft.
66
+ - Include the automatic-review reason in the page-visible item reason, using `manual_review_reason` / `auto_review_decision.display_reason` / `auto_review_decision.reason` as the basis. Do not describe `previous_decision_exists_for_different_evidence` as a duplicate or close-meaning risk unless the result also names a concrete conflicting asset. Convert it into a reviewer-readable fallback that says no verifiable duplicate target was returned and asks the reviewer to confirm from the current definition and source evidence. Do not expose internal wording such as evidence fingerprints, historical audit evidence, or existing audit records.
67
+ - Copy `manual_review_handoff.auto_review_trace` into submit-to-page `source_metadata.auto_review_trace`. This leaves a page-batch audit record showing which assets were already automatically certified in the same workflow.
68
+ - The item remains a normal `CERTIFY` proposal for human review; do not encode `SKIP`, `FAILED`, or automatic decision status as an approval.
69
+ - Set the batch summary to identify the source auto-review run and explain that the page batch contains only assets still uncertified after automatic review.
70
+
71
+ If `manual_review_handoff.candidate_count` is 0, tell the user there are no remaining uncertified automatic-review candidates to submit from that run.
@@ -11,6 +11,16 @@ Do not load project semantics, project KB, or personal semantic preferences befo
11
11
 
12
12
  Hard output gate: a final answer is invalid if it is grouped by asset type, backend array order, raw `work_units`, source dashboard, source report, or separate top-level asset and metric sections. The final answer must follow the fixed business-domain review display below.
13
13
 
14
+ ## Intent Routing
15
+
16
+ There are three separate user intents. Do not merge them.
17
+
18
+ - Recommendation only: call `analysis-meta governance-recommendation export`, present the evidence-backed recommendations, and stop. Do not check the automatic certification project config, do not submit to the review page, and do not certify assets.
19
+ - Recommendation plus page submission: call `analysis-meta governance-recommendation export`, build the review material, then call `analysis-meta agent-review submit-to-page` only after that submission intent is explicit. Do not check the automatic certification project config and do not certify assets.
20
+ - Automatic review or automatic certification: call `analysis-meta governance-recommendation auto-review`. This command validates both `agent_auto_asset_certification_enabled` and `project_semantic_enable` before collecting recommendations. If it returns `PROJECT_AUTO_CERTIFICATION_DISABLED` or `PROJECT_SEMANTIC_DISABLED`, tell the user which project config is disabled and stop. Do not fall back to page submission or ordinary approval commands.
21
+
22
+ `analysis-meta governance-recommendation auto-review` only certifies eligible asset candidates from its current recommendation batch. When `--limit` is omitted, the CLI mirrors the recurring page-review bounded expansion flow by read-only probing top-20/top-50/top-100 pending material, then the CLI Agent builds one automatic decision set from the final selected material and submits it for execution/audit. It does not create recommended metrics. Assets that return `decision:"SKIP"` remain for manual review and must not be described as certified. Automatic decision rows must provide reviewer-readable reasons; semantic-duplicate skips must name concrete conflicting asset targets. Keep raw source/rule traces only in debug output, and preserve the returned `auto_review_expansion` when reporting or auditing the result. If the user later asks to submit the remaining uncertified assets to the page, use `manual_review_handoff` from the auto-review result rather than drafting a fresh all-candidate page batch.
23
+
14
24
  Command:
15
25
 
16
26
  ```bash
@@ -103,6 +113,7 @@ Use this fixed review skeleton:
103
113
  ## Related Commands
104
114
 
105
115
  - `analysis-meta agent-review submit-to-page` submits existing-asset proposals for review after user choice or preauthorized submission-only task intent; it does not approve or certify. Read `agent_review_submit_to_page.md` for deduplication and unattended-task rules.
116
+ - `analysis-meta governance-recommendation auto-review` automatically certifies only eligible recommended asset candidates when the user explicitly asks for automatic review/certification and the project switches are enabled. Without an explicit `--limit`, it performs CLI-side bounded expansion and writes only once. Read `governance_recommendation_auto_review.md`.
106
117
  - `analysis-meta governance-recommendation submit`
107
118
  - `analysis-meta governance-recommendation decisions`
108
119
  - `analysis-meta asset-authentication list` only inspects certification state and is not the recommendation workflow.
@@ -4,14 +4,14 @@ Reuse verified assets, canonical names and business meanings in the current proj
4
4
 
5
5
  ## Find a reusable definition
6
6
 
7
- For an unknown business measure, search relevant saved metrics and reports. A named asset needs only its own family; already known definitions go directly to execution. Read the selected [metric](metric_list.md) and [report](report_list.md) command references together, then issue independent searches in the same model turn:
7
+ For an unknown business measure, search relevant saved metrics and readable analysis assets. A named asset needs only its own family; already known definitions go directly to execution. Read the selected [metric](metric_list.md) and [asset search](asset_search.md) command references together, then issue independent searches in the same model turn:
8
8
 
9
9
  ```bash
10
10
  ae-cli analysis-meta metric list \
11
11
  --project-id <project_id> \
12
12
  --queries '["<user phrase>","<related English term>"]'
13
13
 
14
- ae-cli analysis report list \
14
+ ae-cli analysis asset search \
15
15
  --project-id <project_id> \
16
16
  --queries '["<user phrase>","<related English term>"]'
17
17
  ```
@@ -20,7 +20,7 @@ Use the user's business terms and a few relevant English terms in the same `--qu
20
20
 
21
21
  Read metrics from `data.metrics`. With `--queries` and no `--fields`, the response includes `metric_events` and `metric_params` as JSON strings. Inspect those returned definitions directly; use `metric get` only for missing details. Field projection cannot select these two definition fields. A verified saved metric is referenced by `metric_name` in `metrics[].event` and supplies its own aggregation and property.
22
22
 
23
- Read report summaries from `data.items`. Report search matches names and descriptions. For a suitable candidate, use `analysis report get --project-id <project_id> --report-id <report_id>` to read `data.model_type` and `data.definition`; reuse a definition already read.
23
+ Read saved-asset summaries from `data.items`; report and dashboard search matches names and descriptions. For a suitable report candidate, pass its `asset_numeric_id` to `analysis report get --project-id <project_id> --report-id <report_id>` to read `data.model_type` and `data.definition`; reuse a definition already read.
24
24
 
25
25
  Compare the candidate's events, aggregation, filters, groups and time semantics with the request. An applicable report goes directly to [report-data run](report_data_run.md) with the supported requested overrides. A custom combination reuses suitable definitions in an AI-facing model. Saved metric JSON describes its measure; it is not itself a complete ad-hoc definition. Discover only the pieces still missing below.
26
26
 
@@ -13,7 +13,9 @@ ae-cli analysis-meta metric export --project-id <project_id> --queries '["pay","
13
13
 
14
14
  Capability id: `metadata.metric.export`.
15
15
 
16
- Input: the gateway receives `project_id` plus optional `ignore_authentication`, `queries`, `fields`, and `authenticated_only`; `output` is local-only.
16
+ Input: the gateway receives `project_id` plus optional `ignore_authentication`, `queries`, `fields`, `authenticated_only`, and `certification_scope`; `output` is local-only.
17
+
18
+ Use `--certification-scope project|certified|all` consistently with the corresponding list command. The default `project` follows the project switch; `certified` exports only certified assets; `all` exports every accessible asset. This scope never bypasses access permissions.
17
19
 
18
20
  Output: a successful response must prove `complete=true` and `total` equal to the row count before the CLI atomically publishes a private-mode `.json` array.
19
21
 
@@ -31,7 +31,7 @@ Output always uses the directory envelope: `data.metrics[]`, `total`, `limit`, `
31
31
  | `--authenticated-only` | No | When true, return only authenticated metrics. |
32
32
 
33
33
  ## Decision Rules
34
- - For an unknown business measure, use this with relevant `report list` search as the saved-definition discovery path in [`metadata_resolution.md`](metadata_resolution.md). Reuse a verified saved metric name directly.
34
+ - For an unknown business measure, use this with `analysis asset search` as the saved-definition discovery path in [`metadata_resolution.md`](metadata_resolution.md). Reuse a verified saved metric name directly.
35
35
  - Use `--fields` when its projected fields are sufficient. When searching with `--queries`, omit `--fields` to keep `metric_events` and `metric_params` as JSON strings. Read their content in this response; these two fields are not in the projection whitelist.
36
36
  - Use `analysis-meta metric get` only when a required definition detail is absent from the returned row.
37
37
  - For a complete result, use `analysis-meta metric export`; do not page repeatedly to synthesize an export.
@@ -22,3 +22,13 @@ Output `data` is an async XLSX descriptor with `run_id`, `artifact_id`, status,
22
22
  | --project-id | Yes | Numeric project ID. |
23
23
  | --record-id | No | Operation record ID; required unless provided inside payload. |
24
24
  | --payload | No | Optional JSON object merged into top-level input. Use schema-declared snake_case fields; explicit flags take precedence. `node_ids`, `searchs`, and `status` are arrays; `rule` is an object when supplied. |
25
+
26
+ ## Asynchronous export
27
+
28
+ This capability starts an asynchronous artifact export. Use `--wait --output <path>` to wait and download, or keep the returned `run_id` for query status and cancellation. `--force` allows overwriting the selected local output file.
29
+
30
+ - `--artifact-format xlsx` selects the logical data format. Follow the returned descriptor for compression and content type.
31
+ - `--request-id cli_<32 lowercase hex>` assigns a stable request identifier.
32
+ - `--timeout-seconds` accepts 1–7200 (server default: 3600).
33
+ - `--wait-timeout-seconds` controls how long this CLI invocation waits; it does not change the server runtime limit.
34
+ - Explicit flags override corresponding `--payload` fields; omitted options preserve payload values.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Add one personal semantic preference for the authenticated user in one project.
4
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.
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, reusable workflow, or confirmation that should become a reusable current-user preference. When a project scope is active, requests such as "remember the above workflow", "save this process for this project", or "以后按这个流程" are project-scoped personal semantics, not global memory; store reusable workflows with `context_type=experience`. 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
6
 
7
7
  Command:
8
8
 
@@ -10,7 +10,7 @@ Command:
10
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
11
  ```
12
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.
13
+ Use `preference` for durable interpretation/output preferences, `asset_context` for durable wording or intent bound to exact assets, `experience` for confirmed reusable project work methods or analysis workflows, 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
14
 
15
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
16
 
@@ -2,16 +2,18 @@
2
2
 
3
3
  Get one personal semantic preference by ID.
4
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.
5
+ Use this command after `personal-semantic-preference list` identifies a likely current-user preference. Pass the returned directory title with `--title`; it is telemetry context only, and the lookup still uses `id`. Pass `--mark-used` when the preference is adopted for the answer, query path, or as the matched target for an update.
6
6
 
7
7
  Command:
8
8
 
9
9
  ```bash
10
- ae-cli personal-semantic-preference get --project-id <project_id> --id <preference_id> [--mark-used]
10
+ ae-cli personal-semantic-preference get --project-id <project_id> --id <preference_id> --title <title_from_list> [--mark-used]
11
11
  ```
12
12
 
13
- Input uses `project_id`, `id`, and optional `mark_used`. `id` must be the exact `preference_<id>` value returned by list/add.
13
+ Input uses `project_id`, `id`, required `title`, and optional `mark_used`. `id` must be the exact `preference_<id>` value returned by list/add. `title` must be copied from the matching list item; do not invent it.
14
14
 
15
- Do not use this command as a keyword search 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.
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
+ Fetch and mark the personal item only when it materially affects the response. When its asset or calculation wording differs from the current saved definition, explain the difference and use the saved definition for execution unless the user explicitly requests a different calculation.
16
18
 
17
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.
@@ -16,7 +16,9 @@ Do not use this command for shared knowledge, metadata catalogs, report/dashboar
16
16
 
17
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
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.
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> --title <title_from_list> --mark-used` before using its full content. The `--title` value is telemetry context only; the backend lookup is still keyed by `id`. Do not mark an item used when it was only inspected or rejected.
20
+
21
+ Use a likely match only as the current user's working interpretation. Verify any chosen asset or calculation against its saved definition before execution. A personal preference does not replace the asset's current definition.
20
22
 
21
23
  ## Capture a durable preference
22
24
 
@@ -24,10 +26,10 @@ The Agent owns the personal preference capture trigger. Choose `context_type` by
24
26
 
25
27
  - `preference`: durable interpretation or output preference without an exact asset binding.
26
28
  - `asset_context`: durable user wording or intent bound to one or more exact project assets. Send the complete ordered `resource_refs` array; each item has `resource_type`, string `resource_key`, and `display_name`. This identity is generic across reports, dashboards, events, properties, metrics, tags, clusters, data tables, and future asset types.
27
- - `experience`: a confirmed reusable work method without an exact asset binding.
29
+ - `experience`: a confirmed reusable project work method or analysis workflow without an exact asset binding.
28
30
  - `background`: stable personal context without an exact asset binding.
29
31
 
30
- Any stable choice of a concrete asset, including an event-selection scenario, must use `asset_context`; do not encode asset IDs only in prose. A current-user working definition remains eligible for personal storage even when it would also benefit other users. Store it only as the current user's preference; do not copy the bound asset definition into its content or imply that it is shared authority. Keep future governance or lifecycle instructions out of the stored content. Do not save transient task details, one-off analysis results, company knowledge, or standalone metadata facts.
32
+ Any stable choice of a concrete asset, including an event-selection scenario, must use `asset_context`; do not encode asset IDs only in prose. In an active project scope, a user request such as "remember the above workflow", "save this process for this project", or "以后按这个流程" should be captured here as `context_type=experience`, not through `ae-cli memory`. A current-user working definition remains eligible for personal storage even when it would also benefit other users. Store it only as the current user's preference; do not copy the bound asset definition into its content or imply that it is shared authority. Keep future governance or lifecycle instructions out of the stored content. Do not save transient task details, one-off analysis results, company knowledge, or standalone metadata facts.
31
33
 
32
34
  An explicit stable statement, correction, or confirmation that passes that evidence gate authorizes `personal-semantic-preference add` or `update` without a second "save" confirmation. Compare against the already loaded catalog first; when one existing preference matches, fetch it with `--mark-used`, update that existing preference, and avoid creating a duplicate. Otherwise add a new one. An explicit instruction not to retain it always wins. Delete remains high risk and requires explicit user confirmation.
33
35