@thinkingai/ae-cli 6.0.31 → 6.0.33

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 (255) hide show
  1. package/README.md +3 -2
  2. package/README.zh.md +3 -2
  3. package/dist/{auth-MEJ642P4.js → auth-ENM3FE6L.js} +3 -2
  4. package/dist/{auth-7H3HAAJ3.js → auth-UPGUOKTW.js} +13 -6
  5. package/dist/{capability-SEH3JWLN.js → capability-AJC5CBRT.js} +50 -18
  6. package/dist/{capability-SQ2IWKP3.js → capability-TQ5KU5Q6.js} +50 -18
  7. package/dist/chunk-24BAVOX3.js +51 -0
  8. package/dist/{chunk-MDJGDI6K.js → chunk-3KI3RRXX.js} +5 -5
  9. package/dist/{chunk-PKRD2IEM.js → chunk-3P3562ZX.js} +9 -7
  10. package/dist/{chunk-R77JT7XD.js → chunk-4Q5TNP4Q.js} +4 -4
  11. package/dist/{chunk-TKQJQXWT.js → chunk-6CHYBI64.js} +7 -4
  12. package/dist/{chunk-6LEYLOV3.js → chunk-CPVTECJ3.js} +9 -7
  13. package/dist/{chunk-KCA6BA5D.js → chunk-DB4Q3ANU.js} +5 -3
  14. package/dist/{chunk-2NDGFQHW.js → chunk-E7UXXHO3.js} +11 -3
  15. package/dist/{chunk-I4A62X3N.js → chunk-HQ2A7ITL.js} +23 -14
  16. package/dist/chunk-IMMGMU54.js +674 -0
  17. package/dist/{chunk-AJTH7LT3.js → chunk-IR4ZLVPW.js} +4 -2
  18. package/dist/{chunk-N2QORU5D.js → chunk-ISY6HMHM.js} +7 -4
  19. package/dist/{chunk-KGJQCYVC.js → chunk-LCXU3AAT.js} +4 -2
  20. package/dist/chunk-LYVNONC4.js +86 -0
  21. package/dist/{chunk-DYOS6YY7.js → chunk-RGXCNC4N.js} +23 -14
  22. package/dist/{chunk-YCLVYFK7.js → chunk-V6FR6WTW.js} +45 -87
  23. package/dist/chunk-VTWMIC5L.js +27 -0
  24. package/dist/{cli-token-TVQRSE46.js → cli-token-4SBMXAUK.js} +6 -3
  25. package/dist/{client-2643Z5AG.js → client-PP5FETMW.js} +4 -3
  26. package/dist/community-report-client-KK2QBANO.js +145 -0
  27. package/dist/{config-7UZWDE74.js → config-RCCGHHYA.js} +6 -3
  28. package/dist/index.js +541 -234
  29. package/dist/{metadata-W6JFFMBA.js → metadata-3M5F2AED.js} +15 -14
  30. package/dist/{metadata-X62TKIVK.js → metadata-W2MEOI4Z.js} +15 -14
  31. package/dist/{model-T3KZJWLW.js → model-OYQLXCQY.js} +3 -2
  32. package/dist/{raw-CN542NGT.js → raw-TPB7KSZO.js} +6 -4
  33. package/dist/{sync-ERNHDPB5.js → sync-EFJKFZK2.js} +6 -3
  34. package/dist/{te-agent-FCCWUDTJ.js → te-agent-K2OWMZXT.js} +3 -2
  35. package/dist/{te-analysis-NJGNWZFC.js → te-analysis-I73ZS4NK.js} +2196 -120
  36. package/dist/{te-analysis-YGV5V5EX.js → te-analysis-Q7AZCDU4.js} +2196 -120
  37. package/dist/te-common-ST3QPSXJ.js +61 -0
  38. package/dist/te-common-WSLIKKPC.js +61 -0
  39. package/dist/te-community-WXGB6IOX.js +1659 -0
  40. package/dist/te-community-X2AHXGCA.js +1659 -0
  41. package/dist/{te-dataops-ZNJBQ6VT.js → te-dataops-MJV54MNY.js} +10 -8
  42. package/dist/{te-dataops-F36T656A.js → te-dataops-OA7I6HBG.js} +10 -8
  43. package/dist/te-engage-GJRVQMK3.js +3895 -0
  44. package/dist/te-engage-JIXX3WBI.js +3895 -0
  45. package/dist/{te-kb-NT33UHAE.js → te-kb-CIZXRWMO.js} +105 -23
  46. package/dist/{te-meta-VKWNAWO4.js → te-meta-Q4L6EE3Q.js} +8 -240
  47. package/dist/{te-meta-MAAUHFQO.js → te-meta-VHCN4Q62.js} +8 -240
  48. package/dist/{te-team-OKCOX7OE.js → te-team-PDKKW7Q5.js} +7 -6
  49. package/dist/tracking/i18n/resources/cli/en.json +4 -3
  50. package/dist/tracking/i18n/resources/cli/ja.json +4 -3
  51. package/dist/tracking/i18n/resources/cli/ko.json +4 -3
  52. package/dist/tracking/i18n/resources/cli/zh.json +4 -3
  53. package/package.json +6 -2
  54. package/skills/ae-agent/SKILL.md +2 -1
  55. package/skills/ae-analysis/SKILL.md +21 -7
  56. package/skills/ae-analysis/references/adhoc_export.md +5 -6
  57. package/skills/ae-analysis/references/adhoc_run.md +7 -9
  58. package/skills/ae-analysis/references/ai_models.md +17 -1
  59. package/skills/ae-analysis/references/alert_create.md +25 -0
  60. package/skills/ae-analysis/references/alert_definition_schema_get.md +24 -0
  61. package/skills/ae-analysis/references/alert_delete.md +26 -0
  62. package/skills/ae-analysis/references/alert_detail_list.md +27 -0
  63. package/skills/ae-analysis/references/alert_get.md +25 -0
  64. package/skills/ae-analysis/references/alert_job_list.md +24 -0
  65. package/skills/ae-analysis/references/alert_list.md +27 -0
  66. package/skills/ae-analysis/references/alert_notice_config_list.md +24 -0
  67. package/skills/ae-analysis/references/alert_start.md +25 -0
  68. package/skills/ae-analysis/references/alert_stop.md +25 -0
  69. package/skills/ae-analysis/references/alert_update.md +26 -0
  70. package/skills/ae-analysis/references/analysis_data_retrieval.md +11 -11
  71. package/skills/ae-analysis/references/analysis_drilldown_contract.md +93 -0
  72. package/skills/ae-analysis/references/analysis_gateway_assets.md +9 -8
  73. package/skills/ae-analysis/references/asset_url_get.md +4 -3
  74. package/skills/ae-analysis/references/bi_panel_create.md +3 -3
  75. package/skills/ae-analysis/references/bi_panel_page_data_export.md +2 -2
  76. package/skills/ae-analysis/references/bi_panel_page_data_run.md +1 -1
  77. package/skills/ae-analysis/references/check_delete.md +27 -0
  78. package/skills/ae-analysis/references/check_export.md +27 -0
  79. package/skills/ae-analysis/references/check_get.md +27 -0
  80. package/skills/ae-analysis/references/check_list.md +24 -0
  81. package/skills/ae-analysis/references/check_retry.md +27 -0
  82. package/skills/ae-analysis/references/check_run.md +25 -0
  83. package/skills/ae-analysis/references/command_index.md +114 -46
  84. package/skills/ae-analysis/references/create_entity.md +2 -2
  85. package/skills/ae-analysis/references/dashboard_create.md +3 -3
  86. package/skills/ae-analysis/references/dashboard_daily_report_send.md +1 -0
  87. package/skills/ae-analysis/references/dashboard_daily_report_update.md +2 -0
  88. package/skills/ae-analysis/references/dashboard_report_data_export.md +4 -4
  89. package/skills/ae-analysis/references/dashboard_report_data_run.md +4 -4
  90. package/skills/ae-analysis/references/drilldown_entities_export.md +26 -0
  91. package/skills/ae-analysis/references/drilldown_entities_run.md +33 -0
  92. package/skills/ae-analysis/references/drilldown_events_export.md +21 -0
  93. package/skills/ae-analysis/references/drilldown_events_run.md +23 -0
  94. package/skills/ae-analysis/references/drilldown_user_events_export.md +6 -3
  95. package/skills/ae-analysis/references/drilldown_user_events_run.md +6 -6
  96. package/skills/ae-analysis/references/entity_detail_export.md +2 -0
  97. package/skills/ae-analysis/references/entity_detail_run.md +8 -1
  98. package/skills/ae-analysis/references/event_blacklist_add.md +25 -0
  99. package/skills/ae-analysis/references/event_blacklist_list.md +24 -0
  100. package/skills/ae-analysis/references/event_blacklist_update.md +26 -0
  101. package/skills/ae-analysis/references/event_detail_export.md +2 -0
  102. package/skills/ae-analysis/references/event_detail_run.md +2 -0
  103. package/skills/ae-analysis/references/event_list.md +10 -2
  104. package/skills/ae-analysis/references/ingest_error_list.md +27 -0
  105. package/skills/ae-analysis/references/ingest_summary.md +26 -0
  106. package/skills/ae-analysis/references/list_entities.md +1 -1
  107. package/skills/ae-analysis/references/live_data_export.md +27 -0
  108. package/skills/ae-analysis/references/live_data_list.md +27 -0
  109. package/skills/ae-analysis/references/metric_create.md +13 -4
  110. package/skills/ae-analysis/references/metric_delete.md +7 -0
  111. package/skills/ae-analysis/references/metric_get.md +6 -0
  112. package/skills/ae-analysis/references/metric_list.md +16 -3
  113. package/skills/ae-analysis/references/metric_update.md +12 -1
  114. package/skills/ae-analysis/references/plan_change_log_export.md +27 -0
  115. package/skills/ae-analysis/references/plan_change_log_list.md +24 -0
  116. package/skills/ae-analysis/references/plan_delete_items.md +30 -0
  117. package/skills/ae-analysis/references/plan_export.md +26 -0
  118. package/skills/ae-analysis/references/plan_generate.md +27 -0
  119. package/skills/ae-analysis/references/plan_get.md +24 -0
  120. package/skills/ae-analysis/references/plan_import_excel.md +26 -0
  121. package/skills/ae-analysis/references/plan_save_items.md +27 -0
  122. package/skills/ae-analysis/references/plan_sync_from_meta.md +24 -0
  123. package/skills/ae-analysis/references/project_access_detail_get.md +23 -0
  124. package/skills/ae-analysis/references/project_data_power_delete.md +26 -0
  125. package/skills/ae-analysis/references/project_data_power_get.md +24 -0
  126. package/skills/ae-analysis/references/project_data_power_list.md +23 -0
  127. package/skills/ae-analysis/references/project_data_power_upsert.md +24 -0
  128. package/skills/ae-analysis/references/project_entity_create.md +27 -0
  129. package/skills/ae-analysis/references/project_entity_delete.md +25 -0
  130. package/skills/ae-analysis/references/project_entity_event_list.md +24 -0
  131. package/skills/ae-analysis/references/project_entity_get.md +24 -0
  132. package/skills/ae-analysis/references/project_entity_list.md +28 -0
  133. package/skills/ae-analysis/references/project_entity_update.md +28 -0
  134. package/skills/ae-analysis/references/project_function_list.md +24 -0
  135. package/skills/ae-analysis/references/project_info_get.md +23 -0
  136. package/skills/ae-analysis/references/project_info_list.md +26 -0
  137. package/skills/ae-analysis/references/project_info_update.md +25 -0
  138. package/skills/ae-analysis/references/project_mark_time_create.md +27 -0
  139. package/skills/ae-analysis/references/project_mark_time_delete.md +25 -0
  140. package/skills/ae-analysis/references/project_mark_time_list.md +28 -0
  141. package/skills/ae-analysis/references/project_mark_time_update.md +28 -0
  142. package/skills/ae-analysis/references/project_member_add.md +25 -0
  143. package/skills/ae-analysis/references/project_member_batch_update.md +24 -0
  144. package/skills/ae-analysis/references/project_member_candidate_list.md +25 -0
  145. package/skills/ae-analysis/references/project_member_handover_export.md +27 -0
  146. package/skills/ae-analysis/references/project_member_handover_run.md +24 -0
  147. package/skills/ae-analysis/references/project_member_import.md +25 -0
  148. package/skills/ae-analysis/references/project_member_list.md +23 -0
  149. package/skills/ae-analysis/references/project_member_receiver_list.md +23 -0
  150. package/skills/ae-analysis/references/project_member_remove.md +26 -0
  151. package/skills/ae-analysis/references/project_member_update.md +25 -0
  152. package/skills/ae-analysis/references/project_owner_update.md +27 -0
  153. package/skills/ae-analysis/references/project_permission_binding_list.md +24 -0
  154. package/skills/ae-analysis/references/project_receive_status_update.md +25 -0
  155. package/skills/ae-analysis/references/project_role_delete.md +26 -0
  156. package/skills/ae-analysis/references/project_role_function_list.md +27 -0
  157. package/skills/ae-analysis/references/project_role_get.md +24 -0
  158. package/skills/ae-analysis/references/project_role_list.md +25 -0
  159. package/skills/ae-analysis/references/project_role_upsert.md +24 -0
  160. package/skills/ae-analysis/references/project_role_user_list.md +24 -0
  161. package/skills/ae-analysis/references/project_timezone_get.md +23 -0
  162. package/skills/ae-analysis/references/project_timezone_overview.md +23 -0
  163. package/skills/ae-analysis/references/project_timezone_update.md +25 -0
  164. package/skills/ae-analysis/references/project_user_id_items_update.md +24 -0
  165. package/skills/ae-analysis/references/property_list.md +21 -6
  166. package/skills/ae-analysis/references/public_link_create.md +1 -1
  167. package/skills/ae-analysis/references/query_create_result_cluster.md +15 -32
  168. package/skills/ae-analysis/references/report_create.md +1 -1
  169. package/skills/ae-analysis/references/report_data_export.md +5 -3
  170. package/skills/ae-analysis/references/report_data_run.md +13 -3
  171. package/skills/ae-analysis/references/report_get.md +2 -0
  172. package/skills/ae-analysis/references/report_update.md +1 -1
  173. package/skills/ae-analysis/references/sdk_sample_generate.md +24 -0
  174. package/skills/ae-analysis/references/user_cluster_create.md +5 -1
  175. package/skills/ae-analysis/references/user_cluster_create_id.md +2 -0
  176. package/skills/ae-analysis/references/user_cluster_get.md +4 -0
  177. package/skills/ae-analysis/references/user_cluster_refresh.md +4 -2
  178. package/skills/ae-analysis/references/user_cluster_update.md +5 -1
  179. package/skills/ae-analysis/references/user_cluster_update_id.md +2 -0
  180. package/skills/ae-analysis/references/user_tag_create.md +5 -1
  181. package/skills/ae-analysis/references/user_tag_create_id.md +2 -0
  182. package/skills/ae-analysis/references/user_tag_get.md +4 -0
  183. package/skills/ae-analysis/references/user_tag_refresh.md +4 -2
  184. package/skills/ae-analysis/references/user_tag_update.md +5 -1
  185. package/skills/ae-analysis/references/user_tag_update_id.md +2 -0
  186. package/skills/ae-analysis/references/virtual_event_create.md +22 -3
  187. package/skills/ae-analysis/references/virtual_property_create.md +23 -2
  188. package/skills/ae-analysis-global/SKILL.md +2 -0
  189. package/skills/ae-capability/SKILL.md +7 -5
  190. package/skills/ae-community/SKILL.md +72 -8
  191. package/skills/ae-community/references/community-chat-analysis.md +341 -0
  192. package/skills/ae-community/references/community-data-report.md +301 -0
  193. package/skills/ae-dataops/SKILL.md +2 -1
  194. package/skills/ae-engage/SKILL.md +204 -8
  195. package/skills/ae-engage/references/activity-activity-type.md +42 -0
  196. package/skills/ae-engage/references/activity-activity.md +70 -0
  197. package/skills/ae-engage/references/activity-approval.md +53 -0
  198. package/skills/ae-engage/references/activity-task.md +87 -0
  199. package/skills/ae-engage/references/activity-topic.md +98 -0
  200. package/skills/ae-engage/references/approval-approver-delete.md +26 -0
  201. package/skills/ae-engage/references/channel-test-send.md +37 -0
  202. package/skills/ae-engage/references/channel-touch-limits-batch-update.md +28 -0
  203. package/skills/ae-engage/references/channel-touch-limits-save.md +37 -0
  204. package/skills/ae-engage/references/channel-touch-limits-toggle.md +28 -0
  205. package/skills/ae-engage/references/channel-update-config.md +36 -0
  206. package/skills/ae-engage/references/client-param.md +58 -0
  207. package/skills/ae-engage/references/common-metric.md +75 -0
  208. package/skills/ae-engage/references/config-table.md +92 -0
  209. package/skills/ae-engage/references/engage-scene-config-item.md +69 -0
  210. package/skills/ae-engage/references/operation-log-query.md +1 -1
  211. package/skills/ae-engage/references/preset-event.md +42 -0
  212. package/skills/ae-engage/references/push-language.md +39 -0
  213. package/skills/ae-engage/references/scene-config-channel.md +58 -0
  214. package/skills/ae-engage/references/scene-config-group.md +62 -0
  215. package/skills/ae-engage/references/scene-config-item.md +68 -0
  216. package/skills/ae-engage/references/scene-config-metric.md +79 -0
  217. package/skills/ae-engage/references/scene-config-param.md +72 -0
  218. package/skills/ae-engage/references/scene-preset-metric.md +45 -0
  219. package/skills/ae-engage/references/scene-strategy.md +47 -0
  220. package/skills/ae-engage/references/scene-template.md +71 -0
  221. package/skills/ae-engage/references/{ops-delete.md → task-delete.md} +3 -3
  222. package/skills/ae-engage/references/whitelist.md +72 -0
  223. package/skills/ae-engage/references/workbench-workbench.md +48 -0
  224. package/skills/ae-generate-tracking-code/SKILL.md +4 -4
  225. package/skills/ae-generate-tracking-plan/SKILL.md +140 -16
  226. package/skills/ae-generate-tracking-plan/references/business-dimension-mapping.md +98 -33
  227. package/skills/ae-generate-tracking-plan/references/te-api.md +1 -1
  228. package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +16 -14
  229. package/skills/ae-kb/SKILL.md +36 -9
  230. package/skills/ae-metadata/SKILL.md +3 -2
  231. package/skills/ae-metadata/references/metadata_event_get.md +4 -4
  232. package/skills/ae-metadata/references/metadata_property_dimension_table_bind_existing.md +1 -1
  233. package/skills/ae-metadata/references/metadata_property_get.md +4 -4
  234. package/skills/ae-team/SKILL.md +2 -1
  235. package/dist/chunk-NOO24N7W.js +0 -11
  236. package/dist/chunk-TNW2CI4W.js +0 -129
  237. package/dist/te-common-5NJLF3XG.js +0 -130
  238. package/dist/te-common-7VTJZPII.js +0 -130
  239. package/dist/te-community-PEZ2VEF7.js +0 -687
  240. package/dist/te-community-TSKJ652U.js +0 -687
  241. package/dist/te-engage-BUWVSSSK.js +0 -1912
  242. package/dist/te-engage-EPE3QKDE.js +0 -1912
  243. package/skills/ae-analysis/references/create_metric.md +0 -58
  244. package/skills/ae-analysis/references/create_virtual_event.md +0 -60
  245. package/skills/ae-analysis/references/create_virtual_property.md +0 -69
  246. package/skills/ae-analysis/references/delete_metric.md +0 -32
  247. package/skills/ae-analysis/references/drilldown_users_export.md +0 -17
  248. package/skills/ae-analysis/references/drilldown_users_run.md +0 -61
  249. package/skills/ae-analysis/references/get_metric.md +0 -38
  250. package/skills/ae-analysis/references/get_resource_url.md +0 -33
  251. package/skills/ae-analysis/references/list_events.md +0 -46
  252. package/skills/ae-analysis/references/list_metrics.md +0 -52
  253. package/skills/ae-analysis/references/list_properties.md +0 -47
  254. package/skills/ae-analysis/references/update_metric.md +0 -58
  255. package/dist/{chunk-HL2AJQ4Q.js → chunk-PTE56QPL.js} +3 -3
@@ -2,12 +2,13 @@ import {
2
2
  callMcpTool,
3
3
  parseMcpResult,
4
4
  resolveMcpUrl
5
- } from "./chunk-PKRD2IEM.js";
6
- import "./chunk-KGJQCYVC.js";
7
- import "./chunk-NOO24N7W.js";
8
- import "./chunk-2NDGFQHW.js";
9
- import "./chunk-AJTH7LT3.js";
10
- import "./chunk-YCLVYFK7.js";
5
+ } from "./chunk-3P3562ZX.js";
6
+ import "./chunk-LCXU3AAT.js";
7
+ import "./chunk-E7UXXHO3.js";
8
+ import "./chunk-IR4ZLVPW.js";
9
+ import "./chunk-V6FR6WTW.js";
10
+ import "./chunk-24BAVOX3.js";
11
+ import "./chunk-LYVNONC4.js";
11
12
 
12
13
  // src/commands/te-meta/shared.ts
13
14
  function createMcpCommand(config) {
@@ -42,72 +43,14 @@ function optionalNumber(ctx, name) {
42
43
  const value = ctx.str(name);
43
44
  return value === "" ? void 0 : Number(value);
44
45
  }
45
- function optionalBoolean(ctx, name) {
46
- const value = ctx.str(name);
47
- return value === "" ? void 0 : ctx.bool(name);
48
- }
49
46
  function optionalJson(ctx, name) {
50
47
  const value = ctx.str(name);
51
48
  return value === "" ? void 0 : ctx.json(name);
52
49
  }
53
- function optionalJsonString(ctx, name) {
54
- const value = optionalJson(ctx, name);
55
- return value === void 0 ? void 0 : JSON.stringify(value);
56
- }
57
50
  function requiredJsonString(ctx, name) {
58
51
  return JSON.stringify(ctx.json(name));
59
52
  }
60
53
 
61
- // src/commands/te-meta/meta/list-events.ts
62
- var listEvents = createMcpCommand({
63
- command: "+list_events",
64
- description: "List events in the project. Use for explicit metadata inspection, not as a pre-step for event/retention/funnel/prop_analysis ad-hoc builders; the builders resolve event names internally. Query performs fuzzy matching on eventName, eventDesc, and remark. Supports authenticated asset filtering plus fields/limit/offset payload governance. Default returned fields: eventId, eventName, eventDesc, remark, authenticationStatus.",
65
- flags: [
66
- { name: "project_id", type: "number", required: true, desc: "Project ID", alias: "p" },
67
- { name: "query", type: "string", required: false, desc: "Optional keyword filter. Fuzzy match is applied to eventName, eventDesc, and remark; if omitted, all events are returned.", alias: "q" },
68
- { name: "fields", type: "json", required: false, desc: "Optional fields to return. Supported fields: eventId, eventName, eventDesc, remark, eventTag, authenticationStatus. Default fields when omitted: eventId, eventName, eventDesc, remark, authenticationStatus.", alias: "f" },
69
- { name: "limit", type: "number", required: false, desc: "Optional page size. Default: 50, maximum: 200.", alias: "l", min: 1, max: 200 },
70
- { name: "offset", type: "number", required: false, desc: "Optional page offset. Default: 0.", alias: "o" },
71
- { name: "authenticated_only", type: "boolean", required: false, desc: "When true, return only authenticated events." }
72
- ],
73
- risk: "read",
74
- buildArgs: (ctx) => ({
75
- projectId: ctx.num("project_id"),
76
- query: optionalString(ctx, "query"),
77
- fields: optionalJson(ctx, "fields"),
78
- limit: optionalNumber(ctx, "limit"),
79
- offset: optionalNumber(ctx, "offset"),
80
- authenticatedOnly: optionalBoolean(ctx, "authenticated_only")
81
- })
82
- });
83
-
84
- // src/commands/te-meta/meta/list-properties.ts
85
- var listProperties = createMcpCommand({
86
- command: "+list_properties",
87
- description: "List properties in the project. Use for explicit metadata inspection, not as a pre-step for event/retention/funnel/prop_analysis ad-hoc builders; the builders resolve property names internally. Query performs fuzzy matching on propName, propDesc, and remark. Supports authenticated asset filtering plus fields/limit/offset payload governance. Default returned fields: propId, propName, propDesc, remark, selectType, tableType, authenticationStatus.",
88
- flags: [
89
- { name: "project_id", type: "number", required: true, desc: "Project ID", alias: "p" },
90
- { name: "scope", type: "string", required: false, desc: "Property scope: event or user" },
91
- { name: "event_name", type: "string", required: false, desc: "Optional event name filter" },
92
- { name: "query", type: "string", required: false, desc: "Optional keyword filter. Fuzzy match is applied to propName, propDesc, and remark; if omitted, all accessible properties are returned.", alias: "q" },
93
- { name: "fields", type: "json", required: false, desc: "Optional fields to return. Supported fields: propId, propName, propDesc, remark, selectType, tableType, subTableType, authenticationStatus. Default fields when omitted: propId, propName, propDesc, remark, selectType, tableType, authenticationStatus.", alias: "f" },
94
- { name: "limit", type: "number", required: false, desc: "Optional page size. Default: 50, maximum: 200.", alias: "l", min: 1, max: 200 },
95
- { name: "offset", type: "number", required: false, desc: "Optional page offset. Default: 0.", alias: "o" },
96
- { name: "authenticated_only", type: "boolean", required: false, desc: "When true, return only authenticated properties." }
97
- ],
98
- risk: "read",
99
- buildArgs: (ctx) => ({
100
- projectId: ctx.num("project_id"),
101
- scope: optionalString(ctx, "scope"),
102
- eventName: optionalString(ctx, "event_name"),
103
- query: optionalString(ctx, "query"),
104
- fields: optionalJson(ctx, "fields"),
105
- limit: optionalNumber(ctx, "limit"),
106
- offset: optionalNumber(ctx, "offset"),
107
- authenticatedOnly: optionalBoolean(ctx, "authenticated_only")
108
- })
109
- });
110
-
111
54
  // src/commands/te-meta/meta/batch-edit-metadata.ts
112
55
  var batchEditMetadata = createMcpCommand({
113
56
  command: "+batch_edit_metadata",
@@ -146,185 +89,10 @@ var batchCreateMetadata = createMcpCommand({
146
89
  })
147
90
  });
148
91
 
149
- // src/commands/te-meta/meta/create-virtual-event.ts
150
- var createVirtualEvent = createMcpCommand({
151
- command: "+create_virtual_event",
152
- description: "Create a virtual event by combining multiple events with optional filters",
153
- flags: [
154
- { name: "project_id", type: "number", required: true, alias: "p", desc: "Project ID" },
155
- { name: "event_name", type: "string", required: true, desc: "Virtual event name. Must start with 'ta@' and follow the naming constraints in the schema" },
156
- { name: "event_desc", type: "string", required: true, desc: "Virtual event description" },
157
- { name: "remark", type: "string", required: false, desc: "Optional remark" },
158
- { name: "events", type: "json", required: true, desc: "JSON array of events to combine" },
159
- { name: "filter", type: "json", required: false, desc: "Optional global filter JSON" },
160
- { name: "override", type: "boolean", required: false, desc: "Whether to override if the event already exists. Default: false" }
161
- ],
162
- risk: "write",
163
- mcpService: "te_analysis_extend",
164
- buildArgs: (ctx) => ({
165
- projectId: ctx.num("project_id"),
166
- eventName: ctx.str("event_name"),
167
- eventDesc: ctx.str("event_desc"),
168
- remark: optionalString(ctx, "remark"),
169
- events: requiredJsonString(ctx, "events"),
170
- filter: optionalJsonString(ctx, "filter"),
171
- override: optionalBoolean(ctx, "override")
172
- })
173
- });
174
-
175
- // src/commands/te-meta/meta/create-virtual-property.ts
176
- var createVirtualProperty = createMcpCommand({
177
- command: "+create_virtual_property",
178
- description: "Create a SQL-based virtual property",
179
- flags: [
180
- { name: "project_id", type: "number", required: true, alias: "p", desc: "Project ID" },
181
- { name: "property_name", type: "string", required: true, desc: "Property name. Must start with '#vp@' and follow the naming constraints in the schema" },
182
- { name: "property_desc", type: "string", required: false, desc: "Display name/description" },
183
- { name: "table_type", type: "string", required: true, desc: "Table type: event or user" },
184
- { name: "select_type", type: "string", required: true, desc: "Select type: string, number, bool, or datetime" },
185
- { name: "sql_expression", type: "string", required: true, desc: "SQL expression for computing the property" },
186
- { name: "sql_event_relation_type", type: "string", required: true, desc: "SQL event relation type: relation_default, relation_always, or relation_by_setting" },
187
- { name: "related_events", type: "json", required: false, desc: "Optional related events JSON array. Required when sql_event_relation_type is relation_by_setting" },
188
- { name: "property_remark", type: "string", required: false, desc: "Optional property remark" }
189
- ],
190
- risk: "write",
191
- mcpService: "te_analysis_extend",
192
- buildArgs: (ctx) => ({
193
- projectId: ctx.num("project_id"),
194
- propertyName: ctx.str("property_name"),
195
- propertyDesc: optionalString(ctx, "property_desc"),
196
- tableType: ctx.str("table_type"),
197
- selectType: ctx.str("select_type"),
198
- sqlExpression: ctx.str("sql_expression"),
199
- sqlEventRelationType: ctx.str("sql_event_relation_type"),
200
- relatedEvents: optionalJsonString(ctx, "related_events"),
201
- propertyRemark: optionalString(ctx, "property_remark")
202
- })
203
- });
204
-
205
- // src/commands/te-meta/meta/list-metrics.ts
206
- var listMetrics = createMcpCommand({
207
- command: "+list_metrics",
208
- description: "List metric metadata in the project. Use for metric metadata inspection/management. For AI-facing analysis definitions, reference saved metrics by verified metric name in the analysis definition instead of calling old QP builders. Query performs fuzzy matching on metricName, metricDesc, and metricRemark. Supports authenticated asset filtering plus fields/limit/offset pagination. Default returned fields: metricId, metricName, metricDesc, metricRemark, metricMode, authenticationStatus.",
209
- flags: [
210
- { name: "project_id", type: "number", required: true, alias: "p", desc: "Project ID" },
211
- { name: "query", type: "string", required: false, alias: "q", desc: "Optional keyword filter. Fuzzy match on metricName, metricDesc, metricRemark." },
212
- { name: "fields", type: "json", required: false, desc: "Optional fields to return. Supported: metricId, metricName, metricDesc, metricRemark, metricMode, authenticationStatus, openId, creator, creatorLoginName, updateOpenId, updateCreator, updateLoginName, createTime, updateTime. Default fields when omitted: metricId, metricName, metricDesc, metricRemark, metricMode, authenticationStatus." },
213
- { name: "limit", type: "number", required: false, desc: "Optional limit. Default: 50, maximum: 200.", min: 1, max: 200 },
214
- { name: "offset", type: "number", required: false, desc: "Optional offset. Default: 0." },
215
- { name: "authenticated_only", type: "boolean", required: false, desc: "When true, return only authenticated metrics." }
216
- ],
217
- risk: "read",
218
- mcpService: "te_analysis_extend",
219
- buildArgs: (ctx) => ({
220
- projectId: ctx.num("project_id"),
221
- query: optionalString(ctx, "query"),
222
- fields: optionalJson(ctx, "fields"),
223
- limit: optionalNumber(ctx, "limit"),
224
- offset: optionalNumber(ctx, "offset"),
225
- authenticatedOnly: optionalBoolean(ctx, "authenticated_only")
226
- })
227
- });
228
-
229
- // src/commands/te-meta/meta/get-metric.ts
230
- var getMetric = createMcpCommand({
231
- command: "+get_metric",
232
- description: "Get the definition details of a single metric. Use for metric metadata inspection/management. For AI-facing analysis definitions, reference saved metrics by verified metric name instead of calling old QP builders.",
233
- flags: [
234
- { name: "project_id", type: "number", required: true, alias: "p", desc: "Project ID" },
235
- { name: "metric_id", type: "number", required: true, alias: "m", desc: "Metric ID" }
236
- ],
237
- risk: "read",
238
- mcpService: "te_analysis_extend",
239
- buildArgs: (ctx) => ({
240
- projectId: ctx.num("project_id"),
241
- metricId: ctx.num("metric_id")
242
- })
243
- });
244
-
245
- // src/commands/te-meta/meta/create-metric.ts
246
- var createMetric = createMcpCommand({
247
- command: "+create_metric",
248
- description: "Create a metric from analysis configuration",
249
- flags: [
250
- { name: "project_id", type: "number", required: true, alias: "p", desc: "Project ID" },
251
- { name: "name", type: "string", required: true, desc: "Metric name. Must start with a lowercase letter and contain only lowercase letters, digits, and underscores. Maximum length: 80." },
252
- { name: "display_name", type: "string", required: true, desc: "Metric display name" },
253
- { name: "remark", type: "string", required: false, desc: "Optional metric remark" },
254
- { name: "model_type", type: "string", required: true, desc: "Metric model type: event or retention" },
255
- { name: "events", type: "json", required: true, desc: "Metric events JSON. Follow the create_metric reference for the metric event contract." },
256
- { name: "params", type: "json", required: true, desc: "Metric parameters JSON. For event, use format config; for retention, use the eventView configuration." }
257
- ],
258
- risk: "write",
259
- mcpService: "te_analysis_extend",
260
- buildArgs: (ctx) => ({
261
- projectId: ctx.num("project_id"),
262
- name: ctx.str("name"),
263
- displayName: ctx.str("display_name"),
264
- remark: optionalString(ctx, "remark"),
265
- modelType: ctx.str("model_type"),
266
- events: requiredJsonString(ctx, "events"),
267
- params: requiredJsonString(ctx, "params")
268
- })
269
- });
270
-
271
- // src/commands/te-meta/meta/update-metric.ts
272
- var updateMetric = createMcpCommand({
273
- command: "+update_metric",
274
- description: "Update a metric definition",
275
- flags: [
276
- { name: "project_id", type: "number", required: true, alias: "p", desc: "Project ID" },
277
- { name: "metric_id", type: "number", required: true, alias: "m", desc: "Metric ID" },
278
- { name: "name", type: "string", required: true, desc: "Metric name. Must start with a lowercase letter and contain only lowercase letters, digits, and underscores. Maximum length: 80." },
279
- { name: "display_name", type: "string", required: true, desc: "Metric display name" },
280
- { name: "remark", type: "string", required: false, desc: "Optional metric remark" },
281
- { name: "model_type", type: "string", required: true, desc: "Metric model type: event or retention" },
282
- { name: "events", type: "json", required: true, desc: "Metric event definition JSON" },
283
- { name: "params", type: "json", required: false, desc: "Metric parameter definition JSON" }
284
- ],
285
- risk: "write",
286
- mcpService: "te_analysis_extend",
287
- buildArgs: (ctx) => ({
288
- projectId: ctx.num("project_id"),
289
- metricId: ctx.num("metric_id"),
290
- name: ctx.str("name"),
291
- displayName: ctx.str("display_name"),
292
- remark: optionalString(ctx, "remark"),
293
- modelType: ctx.str("model_type"),
294
- events: requiredJsonString(ctx, "events"),
295
- params: optionalJsonString(ctx, "params")
296
- })
297
- });
298
-
299
- // src/commands/te-meta/meta/delete-metric.ts
300
- var deleteMetric = createMcpCommand({
301
- command: "+delete_metric",
302
- description: "Delete a metric by metricId",
303
- flags: [
304
- { name: "project_id", type: "number", required: true, desc: "Project ID", alias: "p" },
305
- { name: "metric_id", type: "number", required: true, desc: "Metric ID to delete" }
306
- ],
307
- risk: "high-risk-write",
308
- mcpService: "te_analysis_extend",
309
- buildArgs: (ctx) => ({
310
- projectId: ctx.num("project_id"),
311
- metricId: ctx.num("metric_id")
312
- })
313
- });
314
-
315
92
  // src/commands/te-meta/meta/index.ts
316
93
  var commands = [
317
- listEvents,
318
- listProperties,
319
94
  batchEditMetadata,
320
- batchCreateMetadata,
321
- createVirtualEvent,
322
- createVirtualProperty,
323
- listMetrics,
324
- getMetric,
325
- createMetric,
326
- updateMetric,
327
- deleteMetric
95
+ batchCreateMetadata
328
96
  ];
329
97
  var meta_default = commands;
330
98
 
@@ -1,15 +1,16 @@
1
1
  import {
2
2
  getAuthHeaders,
3
3
  kbApi
4
- } from "./chunk-MDJGDI6K.js";
4
+ } from "./chunk-3KI3RRXX.js";
5
5
  import {
6
6
  printError,
7
7
  printOutput
8
- } from "./chunk-TNW2CI4W.js";
9
- import "./chunk-NOO24N7W.js";
10
- import "./chunk-2NDGFQHW.js";
11
- import "./chunk-AJTH7LT3.js";
12
- import "./chunk-YCLVYFK7.js";
8
+ } from "./chunk-IMMGMU54.js";
9
+ import "./chunk-E7UXXHO3.js";
10
+ import "./chunk-IR4ZLVPW.js";
11
+ import "./chunk-V6FR6WTW.js";
12
+ import "./chunk-24BAVOX3.js";
13
+ import "./chunk-LYVNONC4.js";
13
14
 
14
15
  // src/commands/te-team/shared.ts
15
16
  var API_PREFIX = process.env.AE_API_PREFIX ?? "/agent";
@@ -94,9 +94,10 @@
94
94
  "raw_header": "# raw"
95
95
  },
96
96
  "code": {
97
- "inferred_sdk_mode": "[import-xlsx] inferred sdk_integration_mode: {mode}",
98
- "default_sdk_mode": "[import-xlsx] sdk_integration_mode: {mode} (default, xlsx has no platform info)",
99
- "wrote_events": "[import-xlsx] wrote {count} events to {path}"
97
+ "inferred_sdk_mode": "[import-template] inferred sdk_integration_mode: {mode}",
98
+ "default_sdk_mode": "[import-template] sdk_integration_mode: {mode} (default, xlsx has no platform info)",
99
+ "wrote_events": "[import-template] wrote {count} events to {path}",
100
+ "xlsx_import_empty_warning": "[import-template] WARNING: No events imported from {path}. The file may not be an AE tracking plan xlsx (missing #-prefixed sheets like #event data)"
100
101
  },
101
102
  "wiki": {
102
103
  "sync_not_supported": "wiki sync: run in a repo checkout with scripts/wiki-plan.ts available;",
@@ -94,9 +94,10 @@
94
94
  "raw_header": "# 生データ"
95
95
  },
96
96
  "code": {
97
- "inferred_sdk_mode": "[import-xlsx] sdk_integration_mode を推論: {mode}",
98
- "default_sdk_mode": "[import-xlsx] sdk_integration_mode: {mode}(デフォルト、xlsx に platform 情報なし)",
99
- "wrote_events": "[import-xlsx] {count} イベントを {path} に書き込みました"
97
+ "inferred_sdk_mode": "[import-template] sdk_integration_mode を推論: {mode}",
98
+ "default_sdk_mode": "[import-template] sdk_integration_mode: {mode}(デフォルト、xlsx に platform 情報なし)",
99
+ "wrote_events": "[import-template] {count} イベントを {path} に書き込みました",
100
+ "xlsx_import_empty_warning": "[import-template] ⚠️ 警告:{path} からイベントがインポートされませんでした。このファイルはAEトラッキングプランxlsxではない可能性があります(#イベントデータ などの # プレフィックスシートがありません)"
100
101
  },
101
102
  "wiki": {
102
103
  "sync_not_supported": "wiki sync: リポジトリのチェックアウト内で実行してください(scripts/wiki-plan.ts);",
@@ -94,9 +94,10 @@
94
94
  "raw_header": "# 원시 데이터"
95
95
  },
96
96
  "code": {
97
- "inferred_sdk_mode": "[import-xlsx] sdk_integration_mode 추론: {mode}",
98
- "default_sdk_mode": "[import-xlsx] sdk_integration_mode: {mode} (기본값, xlsx에 platform 정보 없음)",
99
- "wrote_events": "[import-xlsx] {count}개 이벤트를 {path}에 작성했습니다"
97
+ "inferred_sdk_mode": "[import-template] sdk_integration_mode 추론: {mode}",
98
+ "default_sdk_mode": "[import-template] sdk_integration_mode: {mode} (기본값, xlsx에 platform 정보 없음)",
99
+ "wrote_events": "[import-template] {count}개 이벤트를 {path}에 작성했습니다",
100
+ "xlsx_import_empty_warning": "[import-template] ⚠️ 경고: {path}에서 이벤트를 가져오지 못했습니다. 이 파일은 AE 트래킹 플랜 xlsx가 아닐 수 있습니다 (#이벤트 데이터 등 # 접두사 시트가 없습니다)"
100
101
  },
101
102
  "wiki": {
102
103
  "sync_not_supported": "wiki sync: 리포지토리 체크아웃 내에서 실행하세요 (scripts/wiki-plan.ts);",
@@ -94,9 +94,10 @@
94
94
  "raw_header": "# 原始数据"
95
95
  },
96
96
  "code": {
97
- "inferred_sdk_mode": "[import-xlsx] 推断 sdk_integration_mode: {mode}",
98
- "default_sdk_mode": "[import-xlsx] sdk_integration_mode: {mode}(默认,xlsx 无 platform 信息)",
99
- "wrote_events": "[import-xlsx] 写入 {count} 个事件至 {path}"
97
+ "inferred_sdk_mode": "[import-template] 推断 sdk_integration_mode: {mode}",
98
+ "default_sdk_mode": "[import-template] sdk_integration_mode: {mode}(默认,xlsx 无 platform 信息)",
99
+ "wrote_events": "[import-template] 写入 {count} 个事件至 {path}",
100
+ "xlsx_import_empty_warning": "[import-template] ⚠️ 警告:未从 {path} 导入到任何事件。该文件可能不是 AE 埋点方案 xlsx(缺少 #事件数据 等带 # 前缀的 sheet)"
100
101
  },
101
102
  "wiki": {
102
103
  "sync_not_supported": "wiki sync: 需要在仓库 checkout 中运行(scripts/wiki-plan.ts);",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thinkingai/ae-cli",
3
- "version": "6.0.31",
3
+ "version": "6.0.33",
4
4
  "description": "CLI tool for ThinkingAI (AE) analytics platform",
5
5
  "type": "module",
6
6
  "bin": {
@@ -20,6 +20,7 @@
20
20
  "build": "tsup src/index.ts --format esm --outDir dist && node scripts/copy-tracking-assets.mjs",
21
21
  "generate:analysis-skill": "tsx scripts/generate-analysis-skill-index.mts",
22
22
  "verify:config": "node test/config-commands.test.mjs",
23
+ "verify:json-utils": "npx tsx tests/json-utils.test.ts",
23
24
  "verify:jq-output": "npx tsx test/jq-output.test.mjs",
24
25
  "verify:analysis-tools": "tsx scripts/verify-te-analysis-tools.mjs",
25
26
  "verify:analysis-skill": "tsx scripts/generate-analysis-skill-index.mts --check",
@@ -30,15 +31,18 @@
30
31
  "verify:analysis-cluster-routing": "node scripts/verify-analysis-cluster-routing.mjs",
31
32
  "verify:multi-cluster-mode": "node test/multi-cluster-mode.test.mjs",
32
33
  "verify:metadata-capability": "npx tsx test/metadata-capability-commands.test.mjs",
34
+ "verify:community-capability": "node test/community-capability-routing.test.mjs",
35
+ "verify:community-report": "npx tsx tests/community-report-standard-v5.test.ts && npx tsx tests/community-report-client.test.ts && npx tsx tests/community-report-framework.test.ts && npx tsx tests/community-data-report-command.test.ts && node test/community-data-report-skill.test.mjs",
33
36
  "verify:engage-capability": "tsx test/engage/engage-capability-command.test.mjs && node test/engage/engage-skill-capability.test.mjs",
34
37
  "verify:retired-analysis-commands": "node --test test/retired-analysis-commands.test.mjs",
35
38
  "verify:analysis-meta-tools": "node scripts/verify-te-meta-tools.mjs",
36
39
  "verify:analysis-common-tools": "node scripts/verify-te-common-tools.mjs",
37
40
  "verify:team-tools": "node scripts/verify-te-team-tools.mjs",
38
41
  "verify:agent-tools": "node scripts/verify-agent-tools.mjs",
39
- "verify:tracking-tools": "node test/tracking-client.test.mjs && node test/tracking-skill-flow.test.mjs && node test/tracking-commands.test.mjs",
42
+ "verify:tracking-tools": "tsx test/tracking-client.test.mjs && node test/tracking-skill-flow.test.mjs && node test/tracking-commands.test.mjs",
40
43
  "verify:self-check-overlay": "node test/self-check-overlay.test.mjs",
41
44
  "verify:update-check": "npx tsx test/update-check.test.mjs",
45
+ "qa-changed": "node scripts/qa-changed.mjs",
42
46
  "self-check": "node self-check/scan.mjs",
43
47
  "check:release": "node self-check/release-gate.mjs",
44
48
  "sync:skills-to-db": "node scripts/sync-skills-to-db.mjs",
@@ -47,8 +47,9 @@ ae-cli agent +create-automation --help
47
47
 
48
48
  ### Output and Errors
49
49
 
50
- - Successful commands return machine-readable JSON by default. Use `--format table` when a table is easier to scan.
50
+ - Successful commands return machine-readable JSON by default. Use `--format table` when a table is easier to scan. Envelope may include optional `_notice.host_compat`.
51
51
  - Failed commands return `{ "ok": false, "error": { "type": "...", "message": "...", "hint": "..." } }` and exit non-zero.
52
+ - **CRITICAL — Host compat (do this first):** After each `ae-cli` run, check stderr and `_notice.host_compat`. If either is present, open the user reply with a short ⚠️ version warning and **quote the `npm i -g` / `npx skills add` (or update-cluster) lines verbatim**, then present the business result. Soft tip; `ok: true` can still carry the notice.
52
53
 
53
54
  ## When to Use
54
55
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ae-analysis
3
- version: 4.0.2
4
- description: "Use ae-cli for AE/TE analysis-side data questions and asset operations: reports, dashboards, ad-hoc models, drilldown, detail data, alerts, clusters, tags, metrics, metadata, project configuration, tracking plans, projects, and resource links. Use when the user asks to query data, explain a change, export evidence, or inspect/create/update analysis assets."
3
+ version: 4.0.3
4
+ description: "Use ae-cli for AE/TE analysis-side data questions, asset operations, and asset governance: reports, analysis boards, BI dashboards, ad-hoc models, drilldown, detail data, alerts, clusters, tags, metrics, metadata, project configuration, tracking plans, governance asset lists/rules/lineage/impact/dependency, batch asset operations, projects, and resource links. Use when the user asks to query data, explain a change, export evidence, or inspect/create/update/govern analysis assets."
5
5
  ---
6
6
 
7
7
  # ae-analysis
@@ -12,7 +12,7 @@ This is the single entry skill for analysis intent and command execution.
12
12
 
13
13
  1. If the command family is already known, open its dedicated reference directly. Otherwise search only the matching row in [`references/command_index.md`](references/command_index.md) (for example with `rg`); do not read the exhaustive index end to end.
14
14
  2. Read the selected command's dedicated reference before composing it:
15
- - `+list_events` -> `references/list_events.md`
15
+ - `event list` -> `references/event_list.md`
16
16
  - `analysis dashboard list` -> `references/dashboard_list.md`
17
17
  - replace hyphens with underscores in gateway filenames.
18
18
  3. For an AI-facing ad-hoc definition, also read [`references/ai_models.md`](references/ai_models.md).
@@ -27,8 +27,10 @@ Use this skill for these CLI services:
27
27
 
28
28
  - `analysis`: reports, dashboards, BI panels, ad-hoc analysis, drilldown, detail data, alerts, clusters, tags, and async runs/artifacts.
29
29
  - `analysis-meta`: gateway metadata assets, events, properties, virtual metadata, metrics, data tables, exchange rules, and super metadata.
30
+ - `analysis-governance`: gateway asset governance operations, including governed asset lists/exports, lineage, dependency, impact, query history, rule schema/list/create/update/delete, batch asset actions, and operation records. Use this service for asset governance workflows, not for metadata event/property/metric CRUD.
31
+ - `tracking`: gateway tracking plan, checking, ingest, live-data, and event blacklist operations. Some legacy tracking commands still exist under the same service; prefer the dedicated reference for the exact command form.
30
32
  - `analysis_meta`: metadata governance, metrics, virtual metadata, project config, tracking plans, mark times, and entity catalog.
31
- - `analysis_common`: project discovery and resource links.
33
+ - `analysis_common`: project discovery.
32
34
 
33
35
  For metadata gateway detail outside the commands in the generated index, use the metadata skill. For Engage, DataOps, or Community work, use the corresponding skill.
34
36
 
@@ -46,6 +48,8 @@ ae-cli analysis_meta +<command> [options]
46
48
  ae-cli analysis_common +<command> [options]
47
49
  ae-cli analysis <resource> <action> [options]
48
50
  ae-cli analysis-meta <resource> <action> [options]
51
+ ae-cli analysis-governance <resource> <action> [options]
52
+ ae-cli tracking <resource> <action> [options]
49
53
  ae-cli capability search|inspect|validate|dry-run|run [options]
50
54
  ```
51
55
 
@@ -54,6 +58,7 @@ ae-cli capability search|inspect|validate|dry-run|run [options]
54
58
  - JSON values must be JSON string literals.
55
59
  - Global flags include `--host`, `--format json|table`, `--jq`, `--validate`, `--dry-run`, and `--yes`. Use `--validate` alone to normalize complex capability input; use `--dry-run` alone for execution or risk preview.
56
60
  - JSON is the default machine-readable output. On failure, preserve the structured error and non-zero exit.
61
+ - **CRITICAL — Host compat (do this first):** After each `ae-cli` run, check stderr and `_notice.host_compat`. If either is present, your reply **MUST open with** a short ⚠️ version warning and **quote the `npm i -g` / `npx skills add` (or update-cluster) lines verbatim**, then present the business result. Never answer with only a project/table summary when a host_compat notice exists. Soft tip; `ok: true` can still carry the notice.
57
62
  - Never invent command names, flags, payload fields, projects, resource IDs, asset names, event/property names, metric definitions, or dates.
58
63
  - 中文时间表达必须按固定语义映射:最近7天/近7天 -> `mode=recent` -> QP `recentDay=0-7`,含今天;过去7天/前7天 -> `mode=previous` -> QP `recentDay=1-7`,不含今天。用户明确说明是否包含今天时,以该说明为准。完整映射见 [`references/ai_models.md`](references/ai_models.md)。
59
64
 
@@ -78,6 +83,14 @@ For every gateway command that exposes `--request-id`, ae-cli generates a `reque
78
83
 
79
84
  ## Mandatory routing
80
85
 
86
+ ### Product terminology gate
87
+
88
+ - The Chinese product term `看板` means an analysis board backed by saved reports. Route it to `ae-cli analysis dashboard ...` and capability IDs under `analysis.dashboard.*`.
89
+ - The Chinese product terms `仪表盘` and `BI 仪表盘` mean a BI dashboard with worksheets, charts, and pages. Route them to `ae-cli analysis bi-panel ...` and capability IDs under `analysis.bi_panel.*`.
90
+ - These assets are not aliases. Never substitute an analysis board for a BI dashboard, or a BI dashboard for an analysis board.
91
+ - The standalone English word `dashboard` is ambiguous in this product. Before a write, ask whether the user means an analysis board (`看板`) or a BI dashboard (`仪表盘`) unless the surrounding context already makes the product asset explicit.
92
+ - If the requested BI-panel capability is unavailable or unauthorized, report that constraint. Do not fall back to creating an analysis board.
93
+
81
94
  ### Project gate
82
95
 
83
96
  Before a project-scoped command:
@@ -110,7 +123,7 @@ Do not call removed QP builders or schema helpers for ad-hoc analysis. `--defini
110
123
  - Metric value, trend, comparison, or anomaly -> saved report/dashboard first, then ad-hoc data.
111
124
  - Metric definition search/create/update -> metadata commands.
112
125
  - Event/entity rows -> `event-detail run|export` or `entity-detail run|export`.
113
- - User members from a query result -> follow the returned `query_context_id` and `sources[].target_contract`; never reconstruct raw QP.
126
+ - Events/entities from a query result -> follow the returned synchronous `query_context_id` and `sources[].drilldown`; never reconstruct raw QP or use export rows as coordinates.
114
127
  - Cluster/tag definition -> matching gateway cluster/tag commands and matching model reference.
115
128
  - Alert/configuration/tracking-plan requests -> dedicated legacy command reference from the index.
116
129
 
@@ -118,8 +131,9 @@ Do not call removed QP builders or schema helpers for ad-hoc analysis. `--defini
118
131
 
119
132
  - `run` is a bounded inline preview for known-small work that can complete within the synchronous limits.
120
133
  - `export` is for complete, unknown-size, over-limit, or long-running results. It returns `run_id` and `artifact_id`.
134
+ - Drilldown event/entity/user-event exports are `csv.gz` full-download streams bounded by `model_full_download_limit`; never pass or simulate `limit`, `offset`, `page_num`, or `page_size`.
121
135
  - Inspect with `analysis run inspect`, download with `analysis artifact download`, and cancel with `analysis query cancel`. Do not call raw lifecycle URLs.
122
- - Drilldown requires the context IDs and target contracts returned by a supported data result. If they are absent, report that drilldown/result-cluster creation is unavailable.
136
+ - Drilldown requires a synchronous preview context and the selected source's returned row/column/metric coordinate options. If they are absent or the action is not advertised, report that drilldown/result-cluster creation is unavailable.
123
137
 
124
138
  ### Writes and destructive operations
125
139
 
@@ -127,7 +141,7 @@ Write only with explicit user intent. Use `--validate` alone while correcting co
127
141
 
128
142
  Project-space and folder create/delete/share are L3 capabilities rather than curated `analysis` commands. Read the matching command reference, then use `ae-cli capability inspect|dry-run|run`; discover `*.members` through `capability search|inspect|run` and [`references/analysis_gateway_assets.md`](references/analysis_gateway_assets.md). For `risk=high-risk-write`, dry-run first, summarize the impact, and execute with `--yes` only after a later explicit confirmation.
129
143
 
130
- After a successful create/update, if a resource ID and supported resource type are available, call `analysis_common +get_resource_url` and return the link. Explicitly state when link generation is skipped because no resource ID exists or when it fails.
144
+ After a successful create/update, if a resource ID and supported resource type are available, call `analysis-meta asset url-get` and return the link. Explicitly state when link generation is skipped because no resource ID exists or when it fails.
131
145
 
132
146
  ## Analysis workflow
133
147
 
@@ -23,7 +23,7 @@ ae-cli analysis adhoc export \
23
23
 
24
24
  Read [`ai_models.md`](ai_models.md) for the single 12-model `model_type` registry, AI-facing `definition`, and SQL dynamic params contract.
25
25
 
26
- For SQL model definitions, do not invent table or column names. If the table is unknown, call `analysis sql-table list --project-id <project_id>`; then inspect the selected `table_ref` with `analysis sql-table columns --project-id <project_id> --table-ref <table_ref>` before writing SQL.
26
+ For SQL model definitions, do not invent table or column names. If the table reference is known, inspect columns with `analysis-meta datatable columns-get`; if the table is unknown, ask for it instead of guessing.
27
27
 
28
28
  ## Definition contract
29
29
 
@@ -42,6 +42,8 @@ Async export has no inline row limit. Runtime defaults to and is capped at 21600
42
42
 
43
43
  Do not use raw QP, `events`, `event_view`, `visual_view`, removed ad-hoc QP builder outputs, or schema helper outputs as `--definition`.
44
44
 
45
+ Timezone contract: fixed `--zone-offset` values are integers from `-12` through `14`. Use `--zone-offset 99` for local-time mode, which analyzes timestamps as stored local time without applying a fixed UTC offset conversion; it does not mean UTC+99. Omit the flag to use the project's analysis default.
46
+
45
47
  ## Output
46
48
 
47
49
  The response is an async artifact descriptor:
@@ -49,12 +51,9 @@ The response is an async artifact descriptor:
49
51
  - `run_id`: poll or cancel this run.
50
52
  - `artifact_id`: download this artifact after completion.
51
53
  - `status` / `artifact_status`: initial lifecycle states.
52
- - `format`: actual logical artifact format (`jsonl` or `csv`).
53
- - `compression` / `content_encoding`: actual compression/encoding; analysis ad-hoc exports currently return `gzip`.
54
- - `file_name` / `content_type`: actual downloadable file contract. Do not infer compression from `--artifact-format` alone.
55
54
  - `expires_at` / `expires_at_iso`: artifact expiration.
56
55
  - `effective_timeout_seconds`, `timeout_source`, `deadline_at`: effective lifecycle policy.
57
- - `query_context_id` / `query_context_expires_at`: reusable follow-up context when Redis context creation succeeds.
56
+ - Export descriptors contain lifecycle/artifact metadata only. They do not create `query_context_id` or selectable drilldown options.
58
57
 
59
58
  Preserve the `run_id` and `artifact_id` from this exact submit response as one pair. Do not infer either ID from a path or reuse an ID from another export.
60
59
 
@@ -68,4 +67,4 @@ ae-cli analysis query cancel --run-id <run_id>
68
67
 
69
68
  If query execution fails, `run inspect` reaches `FAILED`; it must not produce a completed empty artifact. Download only after the successful terminal states documented in `analysis_data_retrieval.md`.
70
69
 
71
- Use the submit response `query_context_id` immediately with `analysis drilldown-users run` or `analysis query create-result-cluster` when present. JSONL artifacts repeat query context plus `format`, `compression`, `content_type`, and `content_encoding` in the first metadata line. Source metadata includes `effective_time_range`, `time_range_adjustments`, and `clipping_reasons`. Date rows expose stable `drilldown_date` and separate `display_date`; copy only `drilldown_date` into a drilldown target. CSV remains pure CSV and carries context/format metadata only in the submit and run-inspect descriptors. Do not pass raw QP.
70
+ Exported rows are durable data, not interactive preview coordinates. Never drill down or create a result cluster from the submit response or downloaded artifact. Run a bounded synchronous preview containing the desired cell first.
@@ -25,7 +25,7 @@ ae-cli analysis adhoc run \
25
25
 
26
26
  Read [`ai_models.md`](ai_models.md) for the single 12-model `model_type` registry, AI-facing `definition`, and SQL dynamic params contract.
27
27
 
28
- For SQL model definitions, do not invent table or column names. If the table is unknown, call `analysis sql-table list --project-id <project_id>`; then inspect the selected `table_ref` with `analysis sql-table columns --project-id <project_id> --table-ref <table_ref>` before writing SQL.
28
+ For SQL model definitions, do not invent table or column names. If the table reference is known, inspect columns with `analysis-meta datatable columns-get`; if the table is unknown, ask for it instead of guessing.
29
29
 
30
30
  ## Input
31
31
 
@@ -33,26 +33,24 @@ For SQL model definitions, do not invent table or column names. If the table is
33
33
  - `--model-type`: one of the 12 AI-facing model names from [`ai_models.md`](ai_models.md). Do not pass `scenario`, `history_tag`, or `cluster`; tags and cohorts/clusters are separate capabilities.
34
34
  - `--definition`: model-specific AI-facing definition JSON.
35
35
 
36
- Control defaults: `--limit` default 100 / max 1000, `--timeout-seconds` default 120 / max 180. The routing rule lives in [`analysis_data_retrieval.md`](analysis_data_retrieval.md).
36
+ Control defaults: `--limit` default 100 / max 1000, `--timeout-seconds` default 60 / max 180. The routing rule lives in [`analysis_data_retrieval.md`](analysis_data_retrieval.md).
37
37
 
38
38
  If the user asks for more than 1000 rows, or the SQL text requests `LIMIT 2000` (or any limit above 1000), go directly to `analysis adhoc export`. Do not lower the SQL limit to 1000, run a truncated sync query first, or loop over repeated `run` calls.
39
39
 
40
40
  Do not use raw QP, `events`, `event_view`, `visual_view`, removed ad-hoc QP builder outputs, or schema helper outputs as `--definition`.
41
41
 
42
+ Timezone contract: fixed `--zone-offset` values are integers from `-12` through `14`. Use `--zone-offset 99` for local-time mode, which analyzes timestamps as stored local time without applying a fixed UTC offset conversion; it does not mean UTC+99. Omit the flag to use the project's analysis default.
43
+
42
44
  ## Output
43
45
 
44
46
  The response may include:
45
47
 
46
- - `query_context_id`: Redis-backed context for drilldown or result-cluster creation.
47
- - `drilldown_available`: whether the response contains a complete machine-readable follow-up target. When false, read `drilldown_unavailable_reason` and do not infer a target from display text.
48
- - `sources[].target_contract.default_target`: a complete target that can be passed directly to a follow-up command. Copy and replace only fields named by `copy_from_selected_result` when drilling into a different row or cell.
48
+ - `query_context_id`: Redis-backed context for follow-ups from this bounded synchronous preview.
49
+ - `sources[].drilldown`: finite row, column, and metric options plus allowed actions. The preview `limit` is the selection boundary.
49
50
  - `title` / `rows` / `total` / `returned_rows` / `truncated`: tabular preview fields. When truncated, use `adhoc export`; there is no next-page request.
50
51
  - `result`: direct result for non-tabular models.
51
52
  - `request_id`: lifecycle request id.
52
- - `effective_time_range`: the resolved query scope actually sent to execution. `clipping_reasons` is empty when the gateway applied no range cap.
53
- - `data_time_range`: the minimum/maximum machine dates present in returned rows when available. Compare it with `effective_time_range` to distinguish query-range clipping from missing data.
54
- - `row_metadata`: row-aligned machine fields. For date-drilldown rows, copy `drilldown_date`; `display_date` is presentation text only.
55
53
 
56
54
  Execution failures are returned as command failures with `request_id`; only the explicit project-no-data condition is a successful empty result. Do not interpret an empty object as evidence that a failed query succeeded.
57
55
 
58
- Use `query_context_id` with `analysis drilldown-users run` or `analysis query create-result-cluster` only when `drilldown_available=true` and the selected source includes `target_contract.default_target`. Do not pass raw QP or infer a target from display text.
56
+ Read [`analysis_drilldown_contract.md`](analysis_drilldown_contract.md). Use the context only with an action advertised by the selected source/metric, and assemble the coordinate only from returned option fragments. Do not pass raw QP or infer a coordinate from display text.