@thinkingai/ae-cli 6.1.19 → 6.1.21

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 (370) hide show
  1. package/README.md +96 -38
  2. package/README.zh.md +96 -38
  3. package/dist/{auth-QPEVVBKT.js → auth-XZNXFRJS.js} +236 -127
  4. package/dist/{capability-ASI62I4A.js → capability-FYTU3X6L.js} +80 -37
  5. package/dist/{chunk-QL6R6TSK.js → chunk-4NRCTUZJ.js} +27045 -477
  6. package/dist/{chunk-JYMGHGCE.js → chunk-57RRFUEZ.js} +42 -15
  7. package/dist/chunk-6ZIQV5GW.js +26 -0
  8. package/dist/{chunk-KZ6ZHF5J.js → chunk-7FTTULED.js} +14 -14
  9. package/dist/chunk-7XGFSUOM.js +623 -0
  10. package/dist/chunk-CCS66K4K.js +155 -0
  11. package/dist/{chunk-B5HMQAOM.js → chunk-DVMLWQD4.js} +8 -186
  12. package/dist/{chunk-KEWVSO64.js → chunk-DX5CDO34.js} +28 -18
  13. package/dist/chunk-EQ255HKO.js +38248 -0
  14. package/dist/{chunk-6QK7SYYY.js → chunk-HBGADCKA.js} +29 -37
  15. package/dist/{chunk-GJXRF7Y6.js → chunk-HFGZGYCG.js} +54 -81
  16. package/dist/chunk-JOCDD4ON.js +15 -0
  17. package/dist/{chunk-TKHSULJT.js → chunk-KPQY44JQ.js} +6 -0
  18. package/dist/{chunk-FR2EDAQM.js → chunk-MAPZ7VB6.js} +90 -2
  19. package/dist/chunk-V2NUHPXF.js +196 -0
  20. package/dist/{chunk-S5PONFBM.js → chunk-VYXXOKYS.js} +9 -9
  21. package/dist/{community-report-client-6OL6GBQW.js → community-report-client-CU22W53K.js} +2 -4
  22. package/dist/{config-XNMACCKX.js → config-XO3LI3SA.js} +8 -9
  23. package/dist/context-IFJI3LIT.js +46 -0
  24. package/dist/{data-integration-4NZGZ45E.js → data-integration-HNGUKFIC.js} +55 -44
  25. package/dist/index.js +122 -112
  26. package/dist/{local-data-upload-client-EFHDLXFG.js → local-data-upload-client-GTRIT64F.js} +4 -5
  27. package/dist/{memory-HBJQ2GC5.js → memory-QGPSNCQS.js} +4 -6
  28. package/dist/{metadata-62EWBEIG.js → metadata-DI5BMYFU.js} +8 -10
  29. package/dist/{model-BHLJ2QMT.js → model-RNPQXIBI.js} +4 -6
  30. package/dist/{personal-semantic-preference-JBVMAI7L.js → personal-semantic-preference-5C3WUXFI.js} +11 -10
  31. package/dist/{project-semantic-BQ4MPUS5.js → project-semantic-3LF6Q6JZ.js} +29 -25
  32. package/dist/{sync-MUWPRM5I.js → sync-O45NXEQY.js} +7 -8
  33. package/dist/{te-agent-WQZTMEK4.js → te-agent-K5MSPNHJ.js} +393 -90
  34. package/dist/{te-analysis-MNCG65LU.js → te-analysis-AISWCOOZ.js} +1175 -377
  35. package/dist/{te-community-BNE6KREL.js → te-community-4OYU3BDA.js} +10 -33
  36. package/dist/{te-dataops-TXLKM2W6.js → te-dataops-NFIPB6FX.js} +19 -20
  37. package/dist/{te-engage-TPKLRVTL.js → te-engage-BAM3GBFX.js} +13 -15
  38. package/dist/{te-experiment-6BYKTCY7.js → te-experiment-GUTZXZ5Z.js} +132 -16
  39. package/dist/te-kb-3TS73NO6.js +1992 -0
  40. package/dist/{te-system-44LZJDTQ.js → te-system-STMHLS5J.js} +12 -9
  41. package/dist/{te-team-XMP47YXE.js → te-team-3I5AOX3N.js} +6 -8
  42. package/dist/{update-UODFOZ4P.js → update-RZXLPCRH.js} +7 -8
  43. package/package.json +29 -19
  44. package/skills/ae-agent/SKILL.md +30 -13
  45. package/skills/ae-agent/references/agent-distribution.md +94 -0
  46. package/skills/ae-agent/references/approval-request.md +4 -0
  47. package/skills/ae-agent/references/command_index.md +9 -2
  48. package/skills/ae-agent/references/create-automation.md +20 -2
  49. package/skills/ae-agent/references/get-agent-context.md +70 -0
  50. package/skills/ae-agent/references/list-automations.md +18 -3
  51. package/skills/ae-agent/references/list-mcp-credentials.md +1 -1
  52. package/skills/ae-agent/references/mcp-token.md +3 -3
  53. package/skills/ae-agent/references/set-mcp-credential.md +0 -1
  54. package/skills/ae-agent/references/update-automation.md +18 -0
  55. package/skills/ae-analysis/SKILL.md +101 -79
  56. package/skills/ae-analysis/references/adhoc_export.md +11 -18
  57. package/skills/ae-analysis/references/adhoc_run.md +17 -7
  58. package/skills/ae-analysis/references/agent_review_detail.md +11 -0
  59. package/skills/ae-analysis/references/agent_review_evidence.md +46 -0
  60. package/skills/ae-analysis/references/agent_review_list.md +9 -0
  61. package/skills/ae-analysis/references/agent_review_preflight.md +96 -0
  62. package/skills/ae-analysis/references/agent_review_priorities_comparisons.md +76 -0
  63. package/skills/ae-analysis/references/agent_review_records.md +9 -0
  64. package/skills/ae-analysis/references/agent_review_retry.md +12 -0
  65. package/skills/ae-analysis/references/agent_review_review.md +16 -0
  66. package/skills/ae-analysis/references/agent_review_submit_to_page.md +184 -0
  67. package/skills/ae-analysis/references/ai_models/attribution.md +29 -0
  68. package/skills/ae-analysis/references/ai_models/distribution.md +40 -0
  69. package/skills/ae-analysis/references/ai_models/event.md +108 -0
  70. package/skills/ae-analysis/references/ai_models/funnel.md +46 -0
  71. package/skills/ae-analysis/references/ai_models/heat_map.md +26 -0
  72. package/skills/ae-analysis/references/ai_models/interval.md +20 -0
  73. package/skills/ae-analysis/references/ai_models/path.md +38 -0
  74. package/skills/ae-analysis/references/ai_models/prop_analysis.md +39 -0
  75. package/skills/ae-analysis/references/ai_models/rank_list.md +25 -0
  76. package/skills/ae-analysis/references/ai_models/retention.md +70 -0
  77. package/skills/ae-analysis/references/ai_models/revenue.md +28 -0
  78. package/skills/ae-analysis/references/ai_models/sql.md +74 -0
  79. package/skills/ae-analysis/references/ai_models/tag.md +19 -0
  80. package/skills/ae-analysis/references/ai_models.md +32 -453
  81. package/skills/ae-analysis/references/alert_create.md +7 -7
  82. package/skills/ae-analysis/references/alert_delete.md +4 -6
  83. package/skills/ae-analysis/references/alert_detail_list.md +7 -9
  84. package/skills/ae-analysis/references/alert_get.md +5 -7
  85. package/skills/ae-analysis/references/alert_job_list.md +4 -6
  86. package/skills/ae-analysis/references/alert_list.md +6 -8
  87. package/skills/ae-analysis/references/alert_notice_config_list.md +4 -6
  88. package/skills/ae-analysis/references/alert_start.md +5 -7
  89. package/skills/ae-analysis/references/alert_stop.md +5 -7
  90. package/skills/ae-analysis/references/alert_update.md +8 -8
  91. package/skills/ae-analysis/references/analysis_data_export.md +72 -0
  92. package/skills/ae-analysis/references/analysis_data_retrieval.md +32 -196
  93. package/skills/ae-analysis/references/analysis_gateway_assets.md +23 -180
  94. package/skills/ae-analysis/references/analysis_interpretation.md +37 -17
  95. package/skills/ae-analysis/references/asset_abnormal_get.md +0 -1
  96. package/skills/ae-analysis/references/asset_abnormal_list.md +0 -1
  97. package/skills/ae-analysis/references/asset_authentication_export.md +4 -0
  98. package/skills/ae-analysis/references/asset_authentication_list.md +7 -1
  99. package/skills/ae-analysis/references/asset_authentication_update.md +5 -1
  100. package/skills/ae-analysis/references/asset_batch_dashboard_schedule_freeze.md +8 -6
  101. package/skills/ae-analysis/references/asset_batch_delete.md +6 -6
  102. package/skills/ae-analysis/references/asset_batch_disable_auto_backup.md +4 -5
  103. package/skills/ae-analysis/references/asset_batch_disable_auto_update.md +5 -6
  104. package/skills/ae-analysis/references/asset_batch_handover.md +4 -5
  105. package/skills/ae-analysis/references/asset_batch_info_export.md +4 -5
  106. package/skills/ae-analysis/references/asset_batch_sql_export.md +5 -6
  107. package/skills/ae-analysis/references/asset_dependency_list.md +4 -5
  108. package/skills/ae-analysis/references/asset_export.md +4 -5
  109. package/skills/ae-analysis/references/asset_impact_list.md +5 -9
  110. package/skills/ae-analysis/references/asset_lineage_get.md +5 -6
  111. package/skills/ae-analysis/references/asset_list.md +4 -5
  112. package/skills/ae-analysis/references/asset_query_history_list.md +4 -8
  113. package/skills/ae-analysis/references/asset_recent_list.md +0 -1
  114. package/skills/ae-analysis/references/asset_search.md +12 -9
  115. package/skills/ae-analysis/references/asset_url_get.md +3 -4
  116. package/skills/ae-analysis/references/bi_panel_copy.md +2 -2
  117. package/skills/ae-analysis/references/bi_panel_page_data_export.md +4 -12
  118. package/skills/ae-analysis/references/bi_panel_page_data_run.md +2 -0
  119. package/skills/ae-analysis/references/catalog_export.md +4 -17
  120. package/skills/ae-analysis/references/catalog_list.md +4 -4
  121. package/skills/ae-analysis/references/check_delete.md +5 -7
  122. package/skills/ae-analysis/references/check_export.md +11 -11
  123. package/skills/ae-analysis/references/check_get.md +8 -10
  124. package/skills/ae-analysis/references/check_list.md +4 -6
  125. package/skills/ae-analysis/references/check_retry.md +8 -10
  126. package/skills/ae-analysis/references/check_run.md +2 -4
  127. package/skills/ae-analysis/references/command_index.md +46 -28
  128. package/skills/ae-analysis/references/cross_source_config.md +84 -0
  129. package/skills/ae-analysis/references/dashboard_report_data_export.md +5 -13
  130. package/skills/ae-analysis/references/dashboard_report_data_run.md +1 -1
  131. package/skills/ae-analysis/references/dashboard_update.md +15 -4
  132. package/skills/ae-analysis/references/datatable_columns_get.md +0 -1
  133. package/skills/ae-analysis/references/datatable_influence_list.md +0 -1
  134. package/skills/ae-analysis/references/datatable_version_get.md +0 -1
  135. package/skills/ae-analysis/references/datatable_version_list.md +0 -1
  136. package/skills/ae-analysis/references/debug_device_add.md +1 -2
  137. package/skills/ae-analysis/references/drilldown_entities_export.md +3 -3
  138. package/skills/ae-analysis/references/drilldown_events_export.md +3 -2
  139. package/skills/ae-analysis/references/drilldown_user_events_export.md +2 -2
  140. package/skills/ae-analysis/references/entity_detail_export.md +3 -2
  141. package/skills/ae-analysis/references/entity_detail_run.md +1 -0
  142. package/skills/ae-analysis/references/event_blacklist_add.md +5 -7
  143. package/skills/ae-analysis/references/event_blacklist_list.md +4 -6
  144. package/skills/ae-analysis/references/event_blacklist_update.md +6 -8
  145. package/skills/ae-analysis/references/event_changelog_list.md +0 -1
  146. package/skills/ae-analysis/references/event_create.md +0 -1
  147. package/skills/ae-analysis/references/event_detail_export.md +3 -2
  148. package/skills/ae-analysis/references/event_detail_run.md +1 -0
  149. package/skills/ae-analysis/references/event_export.md +0 -1
  150. package/skills/ae-analysis/references/event_get.md +0 -1
  151. package/skills/ae-analysis/references/event_hide_update.md +0 -1
  152. package/skills/ae-analysis/references/event_influence_list.md +0 -1
  153. package/skills/ae-analysis/references/event_list.md +0 -1
  154. package/skills/ae-analysis/references/event_property_bundle_export.md +5 -14
  155. package/skills/ae-analysis/references/event_property_bundle_import.md +2 -6
  156. package/skills/ae-analysis/references/event_relation_update.md +0 -1
  157. package/skills/ae-analysis/references/event_update.md +0 -1
  158. package/skills/ae-analysis/references/exchange_config_update.md +0 -1
  159. package/skills/ae-analysis/references/exchange_rate_refresh.md +0 -1
  160. package/skills/ae-analysis/references/exchange_rule_list.md +0 -1
  161. package/skills/ae-analysis/references/exchange_rule_update.md +0 -1
  162. package/skills/ae-analysis/references/exchange_rule_validate.md +0 -1
  163. package/skills/ae-analysis/references/governance_recommendation_decisions.md +23 -0
  164. package/skills/ae-analysis/references/governance_recommendation_export.md +108 -0
  165. package/skills/ae-analysis/references/governance_recommendation_submit.md +41 -0
  166. package/skills/ae-analysis/references/history_tag_data_drilldown_export.md +4 -4
  167. package/skills/ae-analysis/references/history_tag_data_export.md +3 -3
  168. package/skills/ae-analysis/references/ingest_error_list.md +7 -9
  169. package/skills/ae-analysis/references/ingest_summary.md +6 -8
  170. package/skills/ae-analysis/references/live_data_export.md +10 -10
  171. package/skills/ae-analysis/references/live_data_list.md +7 -9
  172. package/skills/ae-analysis/references/metadata_resolution.md +78 -0
  173. package/skills/ae-analysis/references/metric_export.md +0 -1
  174. package/skills/ae-analysis/references/metric_get.md +0 -1
  175. package/skills/ae-analysis/references/metric_list.md +4 -5
  176. package/skills/ae-analysis/references/metric_update.md +0 -1
  177. package/skills/ae-analysis/references/operation_record_export.md +4 -5
  178. package/skills/ae-analysis/references/operation_record_list.md +4 -5
  179. package/skills/ae-analysis/references/personal_semantic_preference_list.md +18 -1
  180. package/skills/ae-analysis/references/plan_change_log_export.md +10 -10
  181. package/skills/ae-analysis/references/plan_change_log_list.md +4 -6
  182. package/skills/ae-analysis/references/plan_delete_items.md +2 -4
  183. package/skills/ae-analysis/references/plan_export.md +9 -9
  184. package/skills/ae-analysis/references/plan_generate.md +2 -4
  185. package/skills/ae-analysis/references/plan_get.md +4 -6
  186. package/skills/ae-analysis/references/plan_import_excel.md +6 -8
  187. package/skills/ae-analysis/references/plan_save_items.md +2 -4
  188. package/skills/ae-analysis/references/plan_sync_from_meta.md +4 -6
  189. package/skills/ae-analysis/references/project_access_detail_get.md +0 -1
  190. package/skills/ae-analysis/references/project_data_power_get.md +0 -1
  191. package/skills/ae-analysis/references/project_data_power_list.md +0 -1
  192. package/skills/ae-analysis/references/project_data_power_upsert.md +0 -1
  193. package/skills/ae-analysis/references/project_entity_create.md +0 -1
  194. package/skills/ae-analysis/references/project_entity_event_list.md +0 -1
  195. package/skills/ae-analysis/references/project_entity_get.md +0 -1
  196. package/skills/ae-analysis/references/project_entity_list.md +0 -1
  197. package/skills/ae-analysis/references/project_entity_update.md +0 -1
  198. package/skills/ae-analysis/references/project_function_list.md +0 -1
  199. package/skills/ae-analysis/references/project_info_get.md +0 -1
  200. package/skills/ae-analysis/references/project_info_list.md +0 -1
  201. package/skills/ae-analysis/references/project_info_update.md +0 -1
  202. package/skills/ae-analysis/references/project_mark_time_create.md +0 -1
  203. package/skills/ae-analysis/references/project_mark_time_list.md +0 -1
  204. package/skills/ae-analysis/references/project_mark_time_update.md +0 -1
  205. package/skills/ae-analysis/references/project_member_add.md +6 -5
  206. package/skills/ae-analysis/references/project_member_batch_update.md +0 -1
  207. package/skills/ae-analysis/references/project_member_candidate_list.md +4 -3
  208. package/skills/ae-analysis/references/project_member_handover_run.md +2 -3
  209. package/skills/ae-analysis/references/project_member_list.md +0 -1
  210. package/skills/ae-analysis/references/project_member_receiver_list.md +0 -1
  211. package/skills/ae-analysis/references/project_member_update.md +0 -1
  212. package/skills/ae-analysis/references/project_owner_update.md +0 -1
  213. package/skills/ae-analysis/references/project_permission_binding_list.md +0 -1
  214. package/skills/ae-analysis/references/project_role_function_list.md +0 -1
  215. package/skills/ae-analysis/references/project_role_get.md +0 -1
  216. package/skills/ae-analysis/references/project_role_list.md +0 -1
  217. package/skills/ae-analysis/references/project_role_upsert.md +32 -2
  218. package/skills/ae-analysis/references/project_role_user_list.md +0 -1
  219. package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +214 -0
  220. package/skills/ae-analysis/references/project_semantic_knowledge_wiki_plan_schema.md +93 -0
  221. package/skills/ae-analysis/references/project_timezone_get.md +0 -1
  222. package/skills/ae-analysis/references/project_timezone_overview.md +0 -1
  223. package/skills/ae-analysis/references/project_timezone_update.md +0 -1
  224. package/skills/ae-analysis/references/project_user_id_items_update.md +0 -1
  225. package/skills/ae-analysis/references/property_changelog_list.md +0 -1
  226. package/skills/ae-analysis/references/property_create.md +0 -1
  227. package/skills/ae-analysis/references/property_export.md +0 -1
  228. package/skills/ae-analysis/references/property_get.md +0 -1
  229. package/skills/ae-analysis/references/property_hide_update.md +0 -1
  230. package/skills/ae-analysis/references/property_influence_list.md +0 -1
  231. package/skills/ae-analysis/references/property_list.md +3 -4
  232. package/skills/ae-analysis/references/property_related_events.md +0 -1
  233. package/skills/ae-analysis/references/property_relation_update.md +0 -1
  234. package/skills/ae-analysis/references/property_update.md +0 -1
  235. package/skills/ae-analysis/references/report_create.md +4 -2
  236. package/skills/ae-analysis/references/report_data_export.md +11 -9
  237. package/skills/ae-analysis/references/report_data_run.md +14 -7
  238. package/skills/ae-analysis/references/report_get.md +5 -3
  239. package/skills/ae-analysis/references/report_list.md +2 -0
  240. package/skills/ae-analysis/references/report_update.md +5 -3
  241. package/skills/ae-analysis/references/rule_create.md +5 -6
  242. package/skills/ae-analysis/references/rule_delete.md +5 -5
  243. package/skills/ae-analysis/references/rule_list.md +3 -4
  244. package/skills/ae-analysis/references/rule_schema.md +3 -4
  245. package/skills/ae-analysis/references/rule_update.md +5 -6
  246. package/skills/ae-analysis/references/sdk_sample_generate.md +2 -4
  247. package/skills/ae-analysis/references/sql_table_columns.md +1 -1
  248. package/skills/ae-analysis/references/super_metadata_batch_create.md +1 -1
  249. package/skills/ae-analysis/references/super_metadata_batch_edit.md +1 -1
  250. package/skills/ae-analysis/references/system_member_add.md +1 -2
  251. package/skills/ae-analysis/references/system_member_status_update.md +1 -1
  252. package/skills/ae-analysis/references/system_ops_alert_contact_list.md +1 -1
  253. package/skills/ae-analysis/references/system_ops_alert_contact_test.md +0 -1
  254. package/skills/ae-analysis/references/system_query_monitor_overview.md +3 -3
  255. package/skills/ae-analysis/references/system_query_task_export.md +4 -14
  256. package/skills/ae-analysis/references/system_query_task_get.md +1 -1
  257. package/skills/ae-analysis/references/system_query_task_list.md +5 -6
  258. package/skills/ae-analysis/references/system_receiver_address_upsert.md +3 -3
  259. package/skills/ae-analysis/references/system_receiver_detection_get.md +1 -1
  260. package/skills/ae-analysis/references/system_third_party_login_disable.md +1 -1
  261. package/skills/ae-analysis/references/system_usage_trend_export.md +3 -12
  262. package/skills/ae-analysis/references/user_cluster_list.md +1 -1
  263. package/skills/ae-analysis/references/user_cluster_member_export.md +4 -4
  264. package/skills/ae-analysis/references/user_tag_create.md +23 -1
  265. package/skills/ae-analysis/references/user_tag_list.md +1 -1
  266. package/skills/ae-analysis/references/user_tag_member_export.md +4 -4
  267. package/skills/ae-analysis/references/user_tag_models.md +9 -1
  268. package/skills/ae-analysis/references/user_tag_update.md +14 -2
  269. package/skills/ae-analysis/references/virtual_event_create.md +10 -5
  270. package/skills/ae-analysis/references/virtual_event_get.md +0 -1
  271. package/skills/ae-analysis/references/virtual_property_create.md +0 -1
  272. package/skills/ae-analysis/references/virtual_property_sql_rule_update.md +0 -1
  273. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/build-project-semantic-wiki.mjs +1054 -0
  274. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/company-kb.mjs +112 -0
  275. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-rules.md +30 -0
  276. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/generate-build-ir.mjs +2735 -0
  277. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/package-wiki-source-zip.mjs +376 -0
  278. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/plan-kb-source-sync.mjs +264 -0
  279. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/precompiled-source.mjs +49 -0
  280. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/upload-kb-sources-concurrently.mjs +200 -0
  281. package/skills/ae-analysis/scripts/read_results.py +197 -0
  282. package/skills/ae-analysis-global/SKILL.md +1 -1
  283. package/skills/ae-capability/SKILL.md +1 -1
  284. package/skills/ae-community/SKILL.md +1 -1
  285. package/skills/ae-current-context/SKILL.md +53 -0
  286. package/skills/ae-data-integration/SKILL.md +6 -4
  287. package/skills/ae-data-integration/references/dimension-routing.md +36 -0
  288. package/skills/ae-data-integration/references/lark-bitable-source.md +288 -0
  289. package/skills/ae-data-integration/references/lark-sheet-source.md +130 -0
  290. package/skills/ae-data-integration/references/local-analysis.md +2 -0
  291. package/skills/ae-data-integration/references/manual-export-source.md +83 -0
  292. package/skills/ae-data-integration/references/reuse.md +2 -0
  293. package/skills/ae-data-integration/references/sink-upload.md +32 -0
  294. package/skills/ae-data-integration/references/source-inspect.md +1 -1
  295. package/skills/ae-data-integration/references/tracking-plan.md +5 -2
  296. package/skills/ae-data-integration/references/transform.md +1 -1
  297. package/skills/ae-data-integration/references/ue-mapping.md +7 -4
  298. package/skills/ae-data-integration/references/ue-routing.md +17 -1
  299. package/skills/ae-data-integration-helper/SKILL.md +5 -5
  300. package/skills/ae-data-integration-helper/references/android_sdk_faq.md +3 -3
  301. package/skills/ae-data-integration-helper/references/c_sdk_faq.md +3 -3
  302. package/skills/ae-data-integration-helper/references/cocoscreator_sdk_faq.md +1 -1
  303. package/skills/ae-data-integration-helper/references/cpp_server_sdk_faq.md +3 -3
  304. package/skills/ae-data-integration-helper/references/ios_sdk_faq.md +1 -1
  305. package/skills/ae-data-integration-helper/references/java_sdk_faq.md +3 -3
  306. package/skills/ae-data-integration-helper/references/javascript_sdk_faq.md +1 -1
  307. package/skills/ae-data-integration-helper/references/logbus2_guide.md +1 -1
  308. package/skills/ae-data-integration-helper/references/logbus2_parser_plugin.md +2 -2
  309. package/skills/ae-data-integration-helper/references/minigame_sdk_faq.md +2 -2
  310. package/skills/ae-data-integration-helper/references/miniprogram_sdk_faq.md +1 -1
  311. package/skills/ae-data-integration-helper/references/python_sdk_faq.md +2 -2
  312. package/skills/ae-data-integration-helper/references/restful_api_notes.md +2 -2
  313. package/skills/ae-data-integration-helper/references/sdk_log_guide.md +3 -3
  314. package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +11 -11
  315. package/skills/ae-data-integration-helper/references/unity_sdk_faq.md +1 -1
  316. package/skills/ae-dataops/SKILL.md +1 -1
  317. package/skills/ae-engage/SKILL.md +4 -3
  318. package/skills/ae-engage/references/build-task-save-guide.md +3 -0
  319. package/skills/ae-engage/references/flow-metric-update.md +115 -1
  320. package/skills/ae-engage/references/save-flow.md +3 -0
  321. package/skills/ae-engage/references/save-task.md +21 -0
  322. package/skills/ae-engage/references/task-metric-update.md +151 -0
  323. package/skills/ae-experiment/SKILL.md +14 -7
  324. package/skills/ae-experiment/references/save_submit_external_experiment.md +52 -0
  325. package/skills/ae-experiment-design/SKILL.md +3 -3
  326. package/skills/ae-experiment-design/references/platform-operations.md +1 -1
  327. package/skills/ae-experiment-insight/SKILL.md +2 -2
  328. package/skills/ae-experiment-insight/references/platform-operations.md +1 -1
  329. package/skills/ae-generate-tracking-code/SKILL.md +2 -1
  330. package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +1 -1
  331. package/skills/ae-generate-tracking-code/references/datax-config.md +1 -1
  332. package/skills/ae-generate-tracking-code/references/logbus-config.md +1 -1
  333. package/skills/ae-generate-tracking-code/references/modes.md +1 -1
  334. package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +5 -5
  335. package/skills/ae-generate-tracking-code/references/snippet-delivery.md +3 -3
  336. package/skills/ae-generate-tracking-plan/SKILL.md +27 -15
  337. package/skills/ae-generate-tracking-plan/references/business-dimension-mapping.md +1 -1
  338. package/skills/ae-generate-tracking-plan/references/te-api.md +1 -0
  339. package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +3 -2
  340. package/skills/ae-kb/SKILL.md +147 -37
  341. package/skills/ae-kb/references/analysis-workflow.md +292 -0
  342. package/skills/ae-kb/references/query-workflow.md +59 -29
  343. package/skills/ae-kb/references/source-mutations.md +95 -0
  344. package/skills/ae-kb/references/versions.md +46 -0
  345. package/skills/ae-kb-discovery/SKILL.md +5 -1
  346. package/skills/ae-metadata/SKILL.md +1 -1
  347. package/skills/ae-migrate-tracking-code/SKILL.md +195 -0
  348. package/skills/ae-migrate-tracking-code/references/ae-preset-properties.md +76 -0
  349. package/skills/ae-migrate-tracking-code/references/ir.md +167 -0
  350. package/skills/ae-migrate-tracking-code/references/mapping-framework.md +112 -0
  351. package/skills/ae-migrate-tracking-code/references/providers/README.md +58 -0
  352. package/skills/ae-migrate-tracking-code/references/providers/amplitude.md +208 -0
  353. package/skills/ae-migrate-tracking-code/references/providers/firebase.md +160 -0
  354. package/skills/ae-migrate-tracking-code/references/providers/ga4.md +92 -0
  355. package/skills/ae-migrate-tracking-code/references/providers/mixpanel.md +150 -0
  356. package/skills/ae-migrate-tracking-code/references/providers/sensors-data.md +146 -0
  357. package/skills/ae-project-semantic/SKILL.md +1 -1
  358. package/skills/ae-system/SKILL.md +5 -5
  359. package/skills/ae-team/SKILL.md +2 -2
  360. package/skills/ae-use-agent/SKILL.md +42 -0
  361. package/skills/ae-use-agent/references/local-agent.md +114 -0
  362. package/dist/auth-UMJAA72O.js +0 -15
  363. package/dist/chunk-533JK3YX.js +0 -72
  364. package/dist/chunk-DKEXH6Q5.js +0 -72
  365. package/dist/chunk-O6K2ODUE.js +0 -318
  366. package/dist/chunk-RWXIXOZG.js +0 -326
  367. package/dist/client-N7NGZUNI.js +0 -204
  368. package/dist/te-kb-BUD6N3NI.js +0 -1222
  369. package/skills/ae-agent/references/auto-provision-mcp-credentials.md +0 -57
  370. package/skills/ae-analysis/metadata_resolution.md +0 -184
@@ -32,13 +32,127 @@ The backend uses a clean-and-insert update model: omitted existing metric settin
32
32
  - `ab_test`
33
33
  - Preserve first-level group keys exactly. Do not convert `ab_test` to `abTest`.
34
34
  - Each group value is an array of Hermes metric DTO objects.
35
- - Use DTO field names from `HermesMetricReqDTO`: `metricSettingId`, `metricType`, `metricName`, `metricQp`, `metricWindowNum`, `metricWindowTimeUnit`, `displayName`, `orderId`, `note`, and `metricParams`.
35
+ - Use DTO field names from `HermesMetricReqDTO`: `metricSettingId`, `metricType`, `metricName`, `metricQp`, `metricWindowNum`, `metricWindowTimeUnit`, `timeCycleDef`, `displayName`, `orderId`, `note`, and `metricParams`.
36
36
  - The CLI boundary accepts snake_case nested DTO fields too, but prefer the native camelCase names above in examples and generated payloads.
37
37
  - For existing bindings, include `metricSettingId` so Hermes updates that binding instead of treating it as a new binding.
38
38
  - For preset metrics, use `metricType: 1` and a real `metricName` discovered from `engage-setting common-metric list/get`.
39
39
  - For custom metrics, use `metricType: 2` plus a complete `metricQp`, `metricWindowNum`, `metricWindowTimeUnit`, and `displayName`; Hermes creates the custom metric name.
40
40
  - Do not invent metric names, event names, property names, QP structures, or metric-setting IDs. Read the existing flow detail and available metric definitions first, then update the complete desired metric map.
41
41
 
42
+ Create/save the flow first and obtain its logical `flow_id`, then configure effect metrics with this command. Do not put the global `metric_map` in the flow-save request.
43
+
44
+ ## Custom metric window semantics
45
+
46
+ Choose the window from the user's intent, not from the number alone:
47
+
48
+ | User intent | `metricWindowNum` | `metricWindowTimeUnit` | `timeCycleDef` |
49
+ | --- | --- | --- | --- |
50
+ | One day / 24 hours / rolling one day | `1` | `"day"` | Omit |
51
+ | Until the end of the attribution event's calendar day | `1` | `"day"` | `{"startTime":"00:00"}` |
52
+ | Until the end of the attribution event's calendar week | `1` | `"week"` | `{"startDay":1,"startTime":"00:00"}` |
53
+ | Until the end of the attribution event's calendar month | `1` | `"month"` | `{"startDay":1}` |
54
+
55
+ `timeCycleDef` selects a natural calendar attribution window. The attribution event (such as a trigger, delivery, or click, according to the metric group) anchors the window; conversions must occur after that event and before the next configured cycle boundary. The boundary is exclusive. `1` + `day` alone remains a rolling one-day window. Resolve calendar boundaries in the flow's configured timezone (`tzOffset`), falling back to the backend default when absent. The report display timezone does not redefine the cycle.
56
+
57
+ For example, with Monday at midnight as the week boundary, a Wednesday 15:00 attribution event counts subsequent conversions before the following Monday 00:00. It does not count Monday or Tuesday conversions before that event. With midnight as the day boundary, a 23:00 attribution event has only the remainder of that day, rather than 24 hours.
58
+
59
+ Interpret "today", "this week", or "this month" as these windows only when the user means the attribution event's day, week, or month. A request to view results for the current reporting period belongs to report date filters and does not by itself authorize changing metric configuration.
60
+
61
+ Treat an unqualified "one day" as the existing rolling window. Use midnight, Monday, and the first day of the month for the calendar defaults above. Honor an explicitly requested valid cycle start. "Daily", "weekly", and "monthly" can describe task execution frequency: resolve the context and ask for clarification only when the metric window intent remains ambiguous.
62
+
63
+ Natural window constraints:
64
+
65
+ - `metricWindowNum` must be `1`; the unit must be `day`, `week`, or `month`.
66
+ - Day: require `startTime` in 24-hour `HH:mm`; omit `startDay`.
67
+ - Week: require `startDay` from `1` (Monday) to `7` (Sunday) and `startTime` in `HH:mm`.
68
+ - Month: require `startDay` from `1` to `28`; omit `startTime` or use `"00:00"`.
69
+ - An empty `timeCycleDef: {}` is invalid. Without `timeCycleDef`, only rolling `minute`, `hour`, and `day` units are accepted.
70
+ - When switching rolling to calendar, add the matching `timeCycleDef` and set the number/unit together. When switching back, remove `timeCycleDef` entirely and use a valid rolling unit. Preserve the binding's `metricSettingId` and all other desired metrics.
71
+ - These options apply to custom metrics (`metricType: 2`) through `metric update`. Do not use `engage-setting common-metric create/update` to create natural windows.
72
+ - Task support requires a backend deployment containing the task natural-window feature. Do not silently replace an unsupported calendar window with a rolling duration.
73
+
74
+ ### Custom metric payload examples
75
+
76
+ Each JSON block is a complete illustrative `--metric-map` value for a configuration containing only that metric. The `purchase` event and QP below are examples, not discovered project metadata: substitute a verified project metric QP (as a JSON string) before use. For an existing configuration, merge the chosen metric into the complete current map and preserve existing binding IDs; do not submit these single-metric examples over other configured metrics.
77
+
78
+ Rolling one day:
79
+
80
+ ```json
81
+ {
82
+ "trigger": [
83
+ {
84
+ "metricType": 2,
85
+ "metricQp": "{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}",
86
+ "metricWindowNum": 1,
87
+ "metricWindowTimeUnit": "day",
88
+ "displayName": "Purchase - Rolling one day",
89
+ "orderId": 1
90
+ }
91
+ ]
92
+ }
93
+ ```
94
+
95
+ Current calendar day:
96
+
97
+ ```json
98
+ {
99
+ "trigger": [
100
+ {
101
+ "metricType": 2,
102
+ "metricQp": "{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}",
103
+ "metricWindowNum": 1,
104
+ "metricWindowTimeUnit": "day",
105
+ "displayName": "Purchase - Current calendar day",
106
+ "orderId": 1,
107
+ "timeCycleDef": {
108
+ "startTime": "00:00"
109
+ }
110
+ }
111
+ ]
112
+ }
113
+ ```
114
+
115
+ Current calendar week:
116
+
117
+ ```json
118
+ {
119
+ "trigger": [
120
+ {
121
+ "metricType": 2,
122
+ "metricQp": "{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}",
123
+ "metricWindowNum": 1,
124
+ "metricWindowTimeUnit": "week",
125
+ "displayName": "Purchase - Current calendar week",
126
+ "orderId": 1,
127
+ "timeCycleDef": {
128
+ "startDay": 1,
129
+ "startTime": "00:00"
130
+ }
131
+ }
132
+ ]
133
+ }
134
+ ```
135
+
136
+ Current calendar month:
137
+
138
+ ```json
139
+ {
140
+ "trigger": [
141
+ {
142
+ "metricType": 2,
143
+ "metricQp": "{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}",
144
+ "metricWindowNum": 1,
145
+ "metricWindowTimeUnit": "month",
146
+ "displayName": "Purchase - Current calendar month",
147
+ "orderId": 1,
148
+ "timeCycleDef": {
149
+ "startDay": 1
150
+ }
151
+ }
152
+ ]
153
+ }
154
+ ```
155
+
42
156
  ## Examples
43
157
 
44
158
  Dry-run updating an existing binding:
@@ -30,6 +30,9 @@ You still organize user requirements into an intermediate intent first, then map
30
30
 
31
31
  ---
32
32
 
33
+ The current `build` / `preview` / `commit` API does not expose `completionIndicators`.
34
+ Completion-goal editing requires the web editor; CLI JSON passthrough does not add support.
35
+
33
36
  ## 2. Workflow
34
37
 
35
38
  1. Identify the flow intent from the user input and produce a unified intent JSON.
@@ -4,6 +4,8 @@ Create or update a Hermes task draft.
4
4
 
5
5
  Mapped command: `ae-cli engage-task task save`
6
6
 
7
+ To configure custom effect metrics after saving (including rolling or current calendar day/week/month windows), use [Task metric update](task-metric-update.md). Do not embed the global metric map in this save request.
8
+
7
9
  This command is the final write step. Do not use it as the first step in task construction.
8
10
 
9
11
  Recommended workflow:
@@ -437,6 +439,25 @@ For a main goal (`completionIndicatorType=0`), always include `touch_cycle_num`
437
439
  `touch_cycle_num=1` and `touch_cycle_num_unit="day"`. Static Capability validation may accept a
438
440
  main goal without these fields, but the Hermes save service rejects it.
439
441
 
442
+ ### Natural completion-goal windows
443
+
444
+ Set these fields on `req.controlConfig.completionIndicatorDef.completionIndicators[]`,
445
+ alongside `completionIndicatorType` and the semantic `eventDefinition`:
446
+
447
+ | Window | `touch_cycle_num` | `touch_cycle_num_unit` | `timeCycleDef` |
448
+ | --- | --- | --- | --- |
449
+ | Current day | 1 | `day` | `{"startTime":"00:00"}` |
450
+ | Current week | 1 | `week` | `{"startDay":1,"startTime":"00:00"}` |
451
+ | Current month | 1 | `month` | `{"startDay":1}` |
452
+
453
+ Custom day/week times use `HH:mm`. Week `startDay` is 1 (Monday) through 7 (Sunday);
454
+ month `startDay` is 1 through 28. Day windows omit `startDay`; month windows omit
455
+ `startTime` or use `00:00`. Natural windows require count 1 and a nonempty `timeCycleDef`.
456
+ Boundaries use the task timezone; conversions must follow attribution and precede the next boundary.
457
+
458
+ To return to a rolling window, remove `timeCycleDef` and set a valid `minute`, `hour`,
459
+ or `day` count/unit. Without `timeCycleDef`, `1` + `day` remains a rolling one-day window.
460
+
440
461
  Important constraints that still apply:
441
462
 
442
463
  - `doNotDisturb.enableDoNotDisturb=true` requires `startTime` and `endTime` in `HH:mm`
@@ -0,0 +1,151 @@
1
+ # Task metric update
2
+
3
+ Use this reference to configure, add, or replace effect metric settings for an operation task.
4
+
5
+ Mapped CLI command: `ae-cli engage-task metric update`
6
+
7
+ Mapped capability: `engage-task.metric.update`
8
+
9
+ ## Required input
10
+
11
+ - `--project-id`
12
+ - `--task-id`
13
+ - `--metric-map '<metric_map_json>'`
14
+
15
+ ## Workflow and parameter guidance
16
+
17
+ 1. Create/save the task first and obtain its `task_id`. The task-save request does not configure global effect metrics through `metricMap`.
18
+ 2. Read task details with `ae-cli engage-task task get --project-id <project_id> --task-id <task_id>` and use the grouped `metric_map` as the update baseline. `metric list` returns a flat list without group membership, so it cannot reconstruct this map. If the grouped configuration is unavailable, do not guess groups or treat the flat list as an empty configuration.
19
+ 3. Build the complete desired `metric_map`. This is a clean-and-insert update: omitted settings may be deleted, so preserve each binding's original group, all other desired metrics, and existing `metricSettingId` values. Select the binding to change by its setting ID, not by its display name.
20
+ 4. Use `--dry-run` on the assembled request before applying the explicitly requested configuration change. After applying, read task details again and compare the groups, binding IDs, and window fields with the intended configuration.
21
+
22
+ `metric_map` is an object with target-user group keys `trigger`, `view`, and `click`, each containing an array of Hermes metric DTOs. Use native camelCase DTO fields: `metricSettingId`, `metricType`, `metricName`, `metricQp`, `metricWindowNum`, `metricWindowTimeUnit`, `timeCycleDef`, `displayName`, `orderId`, `note`, and `metricParams`. Nested snake_case fields are also accepted at the CLI boundary.
23
+
24
+ For a custom metric use `metricType: 2`, a complete verified `metricQp` JSON string, the window fields, `displayName`, and `orderId`; Hermes creates the custom metric name. For preset metrics use `metricType: 1` and a real `metricName` from `engage-setting common-metric list/get`. Do not invent event names, metric names, QP structures, or binding IDs. Both custom and preset bindings require `displayName` and `orderId`. Do not use `metricId` in place of `metricSettingId`.
25
+
26
+ ```bash
27
+ ae-cli --dry-run engage-task metric update \
28
+ --project-id <project_id> \
29
+ --task-id <task_id> \
30
+ --metric-map '<complete_metric_map_json>'
31
+ ```
32
+
33
+ Replace the placeholders with discovered IDs and the complete desired JSON map. Apply the same command without `--dry-run` only for an authorized configuration change.
34
+
35
+ ## Custom metric window semantics
36
+
37
+ Choose the window from the user's intent, not from the number alone:
38
+
39
+ | User intent | `metricWindowNum` | `metricWindowTimeUnit` | `timeCycleDef` |
40
+ | --- | --- | --- | --- |
41
+ | One day / 24 hours / rolling one day | `1` | `"day"` | Omit |
42
+ | Until the end of the attribution event's calendar day | `1` | `"day"` | `{"startTime":"00:00"}` |
43
+ | Until the end of the attribution event's calendar week | `1` | `"week"` | `{"startDay":1,"startTime":"00:00"}` |
44
+ | Until the end of the attribution event's calendar month | `1` | `"month"` | `{"startDay":1}` |
45
+
46
+ `timeCycleDef` selects a natural calendar attribution window. The attribution event (such as a trigger, delivery, or click, according to the metric group) anchors the window; conversions must occur after that event and before the next configured cycle boundary. The boundary is exclusive. `1` + `day` alone remains a rolling one-day window. Resolve calendar boundaries in the task's configured timezone (`tzOffset`), falling back to the backend default when absent. The report display timezone does not redefine the cycle.
47
+
48
+ For example, with Monday at midnight as the week boundary, a Wednesday 15:00 attribution event counts subsequent conversions before the following Monday 00:00. It does not count Monday or Tuesday conversions before that event. With midnight as the day boundary, a 23:00 attribution event has only the remainder of that day, rather than 24 hours.
49
+
50
+ Interpret "today", "this week", or "this month" as these windows only when the user means the attribution event's day, week, or month. A request to view results for the current reporting period belongs to report date filters and does not by itself authorize changing metric configuration.
51
+
52
+ Treat an unqualified "one day" as the existing rolling window. Use midnight, Monday, and the first day of the month for the calendar defaults above. Honor an explicitly requested valid cycle start. "Daily", "weekly", and "monthly" can describe task execution frequency: resolve the context and ask for clarification only when the metric window intent remains ambiguous.
53
+
54
+ Natural window constraints:
55
+
56
+ - `metricWindowNum` must be `1`; the unit must be `day`, `week`, or `month`.
57
+ - Day: require `startTime` in 24-hour `HH:mm`; omit `startDay`.
58
+ - Week: require `startDay` from `1` (Monday) to `7` (Sunday) and `startTime` in `HH:mm`.
59
+ - Month: require `startDay` from `1` to `28`; omit `startTime` or use `"00:00"`.
60
+ - An empty `timeCycleDef: {}` is invalid. Without `timeCycleDef`, only rolling `minute`, `hour`, and `day` units are accepted.
61
+ - When switching rolling to calendar, add the matching `timeCycleDef` and set the number/unit together. When switching back, remove `timeCycleDef` entirely and use a valid rolling unit. Preserve the binding's `metricSettingId` and all other desired metrics.
62
+ - These options apply to custom metrics (`metricType: 2`) through `metric update`. Do not use `engage-setting common-metric create/update` to create natural windows.
63
+ - Task support requires a backend deployment containing the task natural-window feature. Do not silently replace an unsupported calendar window with a rolling duration.
64
+
65
+ ### Custom metric payload examples
66
+
67
+ Each JSON block is a complete illustrative `--metric-map` value for a configuration containing only that metric. The `purchase` event and QP below are examples, not discovered project metadata: substitute a verified project metric QP (as a JSON string) before use. For an existing configuration, merge the chosen metric into the complete current map and preserve existing binding IDs; do not submit these single-metric examples over other configured metrics.
68
+
69
+ Rolling one day:
70
+
71
+ ```json
72
+ {
73
+ "trigger": [
74
+ {
75
+ "metricType": 2,
76
+ "metricQp": "{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}",
77
+ "metricWindowNum": 1,
78
+ "metricWindowTimeUnit": "day",
79
+ "displayName": "Purchase - Rolling one day",
80
+ "orderId": 1
81
+ }
82
+ ]
83
+ }
84
+ ```
85
+
86
+ Current calendar day:
87
+
88
+ ```json
89
+ {
90
+ "trigger": [
91
+ {
92
+ "metricType": 2,
93
+ "metricQp": "{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}",
94
+ "metricWindowNum": 1,
95
+ "metricWindowTimeUnit": "day",
96
+ "displayName": "Purchase - Current calendar day",
97
+ "orderId": 1,
98
+ "timeCycleDef": {
99
+ "startTime": "00:00"
100
+ }
101
+ }
102
+ ]
103
+ }
104
+ ```
105
+
106
+ Current calendar week:
107
+
108
+ ```json
109
+ {
110
+ "trigger": [
111
+ {
112
+ "metricType": 2,
113
+ "metricQp": "{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}",
114
+ "metricWindowNum": 1,
115
+ "metricWindowTimeUnit": "week",
116
+ "displayName": "Purchase - Current calendar week",
117
+ "orderId": 1,
118
+ "timeCycleDef": {
119
+ "startDay": 1,
120
+ "startTime": "00:00"
121
+ }
122
+ }
123
+ ]
124
+ }
125
+ ```
126
+
127
+ Current calendar month:
128
+
129
+ ```json
130
+ {
131
+ "trigger": [
132
+ {
133
+ "metricType": 2,
134
+ "metricQp": "{\"type\":0,\"eventName\":\"purchase\",\"analysis\":\"A100\",\"filts\":[]}",
135
+ "metricWindowNum": 1,
136
+ "metricWindowTimeUnit": "month",
137
+ "displayName": "Purchase - Current calendar month",
138
+ "orderId": 1,
139
+ "timeCycleDef": {
140
+ "startDay": 1
141
+ }
142
+ }
143
+ ]
144
+ }
145
+ ```
146
+
147
+ ## Related interfaces
148
+
149
+ - [Task save](save-task.md): create or update the task draft before configuring effect metrics.
150
+ - [Flow metric update](flow-metric-update.md): the equivalent flow canvas configuration.
151
+ - [Task metric detail](task-metric-detail.md): query metric reports; this is separate from configuration.
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ae-experiment
3
- version: 1.0.1
4
- description: "Use when managing Atlas AB experiments, traffic layers, Features, metrics, buckets, and experiment reports through ae-cli"
3
+ version: 1.0.2
4
+ description: "Use when managing Atlas AB or external experiments, traffic layers, Features, metrics, buckets, and experiment reports through ae-cli"
5
5
  ---
6
6
 
7
7
  # ae-experiment
@@ -61,10 +61,11 @@ Naming and response boundary:
61
61
  - `experiment metric save`
62
62
  3. Create or patch the experiment draft with `experiment experiment save`.
63
63
  Use `experiment experiment update-metrics` when replacing metric bindings or assigning guardrail roles.
64
- 4. Check readiness with `experiment experiment ready-check`.
65
- 5. For a non-mutex traffic layer, run `experiment experiment conflict-check` before submit (needs `feature_key_list` from context or `experiment get`).
66
- 6. Move status with `experiment experiment manage`.
67
- 7. Query reports with `experiment report summary`, `experiment report sample-size`, and `experiment report metric-trend`.
64
+ 4. For an external experiment, use `experiment external-experiment save-submit` instead. It submits directly and does not use Features, traffic layers, allocation, targeting, or experiment cycles.
65
+ 5. Check readiness with `experiment experiment ready-check`.
66
+ 6. For a non-mutex traffic layer, run `experiment experiment conflict-check` before submit (needs `feature_key_list` from context or `experiment get`).
67
+ 7. Move status with `experiment experiment manage`.
68
+ 8. Query reports with `experiment report summary`, `experiment report sample-size`, and `experiment report metric-trend`.
68
69
 
69
70
  If an experiment save returns `error_code: METRIC_NOT_FOUND`, list metrics for the same project. Create and verify the metric before retrying; never retry with another invented ID. Metric deletion returns `error_code: METRIC_IN_USE` while an active experiment binding exists.
70
71
 
@@ -98,10 +99,16 @@ Read [`save_build_guide.md`](references/save_build_guide.md) and
98
99
 
99
100
  ### Experiment
100
101
 
101
- `experiment experiment save`, `experiment experiment update-metrics`, `capability run experiment.experiment.save-submit`, `experiment experiment list`, `experiment experiment list-archived`, `experiment experiment get`, `experiment experiment ready-check`, `experiment experiment conflict-check`, `experiment experiment manage`, `experiment experiment update-group`, `experiment experiment batch-delete`, `experiment operation-log query`
102
+ `experiment experiment save`, `experiment experiment update-metrics`, `experiment external-experiment save-submit`, `capability run experiment.experiment.save-submit`, `experiment experiment list`, `experiment experiment list-archived`, `experiment experiment get`, `experiment experiment ready-check`, `experiment experiment conflict-check`, `experiment experiment manage`, `experiment experiment update-group`, `experiment experiment batch-delete`, `experiment operation-log query`
102
103
 
103
104
  Read [`manage_guardrail_metrics.md`](references/manage_guardrail_metrics.md) before assigning or replacing metric roles.
104
105
 
106
+ ### External Experiment
107
+
108
+ `experiment external-experiment save-submit`
109
+
110
+ Read [`save_submit_external_experiment.md`](references/save_submit_external_experiment.md) before creating or updating an external experiment.
111
+
105
112
  ### Traffic Layer and Buckets
106
113
 
107
114
  `experiment traffic-layer save`, `experiment traffic-layer get`, `experiment traffic-layer list`, `experiment traffic-layer batch-delete`, `experiment bucket list`
@@ -0,0 +1,52 @@
1
+ # experiment external-experiment save-submit
2
+
3
+ Create or update and submit an external experiment. This is the typed L2 wrapper for
4
+ `experiment.experiment.save-submit`; it always sends `expType: "external"`.
5
+
6
+ ```bash
7
+ ae-cli experiment external-experiment save-submit \
8
+ --project-id 1 \
9
+ --exp-name "Partner onboarding test" \
10
+ --bucket-id "#user_id" \
11
+ --start-time "2026-09-01T00:00:00+08:00" \
12
+ --end-time "2026-09-15T00:00:00+08:00" \
13
+ --supposition "The new onboarding improves activation." \
14
+ --groups '[{"expGroupName":"control","isControl":1},{"expGroupName":"variant","isControl":0}]' \
15
+ --metrics '[{"metricId":"activation_rate","metricRole":"primary"}]' \
16
+ --dry-run
17
+ ```
18
+
19
+ `--dry-run` validates the external submit shape without persisting: required
20
+ time bounds, Feature-only fields that are forbidden here, group shape, and
21
+ primary metric presence. The final submit also checks that metric IDs exist and
22
+ that each metric event supports the selected bucket property.
23
+
24
+ External experiments are evaluated from exposure events reported by the caller. They
25
+ do not configure Features, traffic layers, allocation, targeting, or `expCycle`.
26
+ Choose an existing `bucket_id` whose property is available in the events used by every
27
+ bound metric. The server requires at least two named groups, exactly one control group,
28
+ and at least one existing primary metric.
29
+
30
+ Status is calculated from the submitted time range: a future start time becomes
31
+ `pending`, a current range becomes `running`, and an elapsed end time becomes `ended`.
32
+ No `end_time` creates a long-running experiment. When the scheduled job is active, a
33
+ pending experiment enters `running` at its start time and a running experiment enters
34
+ `ended` at its end time. `experiment experiment manage` permits only
35
+ `pending → running`, `running → ended`, and `ended → archive`; manually entering
36
+ `running` or `ended` replaces the corresponding time boundary with the current time.
37
+
38
+ For an update, first call `experiment experiment get`. An already submitted external
39
+ experiment can be updated only while `pending` or `running`; its hypothesis and time
40
+ range may change, and group descriptions may change. Keep its name, business group,
41
+ description, bucket, metric bindings, group count, group names, control markers,
42
+ allocations, and group values unchanged. Include every returned group unchanged,
43
+ including its `expGroupId`, `allocation`, and `expGroupValue`; the CLI rejects an
44
+ update that omits a group ID. Omitting `--end-time` represents a long-running
45
+ experiment, so preserve the current end time whenever it should remain scheduled.
46
+
47
+ Transition status: L2
48
+ Owning module: Hermes Atlas experiment capability gateway
49
+ Current transport: Capability Gateway `experiment.experiment.save-submit`
50
+ Gateway target: `experiment.experiment.save-submit`
51
+ Review after: 2027-02-28
52
+ Exit condition: Remove this wrapper if the Gateway exposes a dedicated external-experiment capability or the typed fields no longer match the Atlas external-experiment contract.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ae-experiment-design
3
- description: "Design AE/TE A/B experiments from a business goal through a reviewable draft. Use when the user asks to form an experiment hypothesis, assess metric readiness, choose or create metrics and Features, design groups or traffic, estimate sample size or duration, create an experiment draft, or run readiness and conflict checks. SDK guidance is a conditional branch: enter it only when the user explicitly asks about an A/B experiment SDK, client SDK integration, experiment SDK code generation, or SDK troubleshooting; do not include SDK work in an ordinary experiment-design or draft-creation request."
3
+ description: "Design AE A/B experiments from a business goal through a reviewable draft. Use when the user asks to form an experiment hypothesis, assess metric readiness, choose or create metrics and Features, design groups or traffic, estimate sample size or duration, create an experiment draft, or run readiness and conflict checks. SDK guidance is a conditional branch: enter it only when the user explicitly asks about an A/B experiment SDK, client SDK integration, experiment SDK code generation, or SDK troubleshooting; do not include SDK work in an ordinary experiment-design or draft-creation request."
4
4
  ---
5
5
 
6
6
  # AE Experiment Design and Integration
@@ -9,7 +9,7 @@ Turn a business objective into an evidence-backed experiment design, an implemen
9
9
 
10
10
  ## Hard boundaries
11
11
 
12
- - Use `ae-cli` for every AE/TE platform interaction. Do not substitute raw HTTP, browser automation, direct database queries, or application SDKs.
12
+ - Use `ae-cli` for every AE platform interaction. Do not substitute raw HTTP, browser automation, direct database queries, or application SDKs.
13
13
  - Do not infer an SDK request from the fact that an experiment needs implementation. Load SDK references only when the user explicitly asks about an A/B experiment SDK or client SDK integration.
14
14
  - Do not copy general tracking SDK documentation into this Skill. Route generic initialization, event reporting, `track`, user identity, user properties, data upload, LogBus, and REST questions to `ae-data-integration-helper` when that Skill is available.
15
15
  - Use only the event-metric calculation contracts defined in
@@ -24,7 +24,7 @@ Read only the references needed for the current request:
24
24
 
25
25
  | Request | Required references |
26
26
  |---|---|
27
- | Any AE/TE platform read or write | [`references/platform-operations.md`](references/platform-operations.md) |
27
+ | Any AE platform read or write | [`references/platform-operations.md`](references/platform-operations.md) |
28
28
  | Create or reuse an experiment draft | [`references/experiment-creation.md`](references/experiment-creation.md) and [`references/platform-operations.md`](references/platform-operations.md) |
29
29
  | Metric selection, feasibility, or creation | [`references/metric-readiness.md`](references/metric-readiness.md) |
30
30
  | Explicit A/B experiment SDK or client SDK integration request | [`references/sdk-integration.md`](references/sdk-integration.md) |
@@ -1,6 +1,6 @@
1
1
  # Platform Operations
2
2
 
3
- Read this reference before any AE/TE platform interaction.
3
+ Read this reference before any AE platform interaction.
4
4
 
5
5
  ## Hard boundary
6
6
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ae-experiment-insight
3
- description: "Diagnose and interpret AE/TE A/B experiments from configuration and report evidence through a defensible decision. Use when the user asks what an experiment means, whether it can roll out, why a result is not significant, why group sizes or exposure are wrong, why treatment results conflict, whether the report is trustworthy, or what to do next. Covers SRM, duration sufficiency, novelty effects, metric conflicts, missing or anomalous data, design reasonableness, data reliability, metric interpretation, trend and segment analysis, root-cause hypotheses, and rollout recommendations. All platform discovery and reads must use ae-cli."
3
+ description: "Diagnose and interpret AE A/B experiments from configuration and report evidence through a defensible decision. Use when the user asks what an experiment means, whether it can roll out, why a result is not significant, why group sizes or exposure are wrong, why treatment results conflict, whether the report is trustworthy, or what to do next. Covers SRM, duration sufficiency, novelty effects, metric conflicts, missing or anomalous data, design reasonableness, data reliability, metric interpretation, trend and segment analysis, root-cause hypotheses, and rollout recommendations. All platform discovery and reads must use ae-cli."
4
4
  ---
5
5
 
6
6
  # AE Experiment Insight and Diagnosis
@@ -9,7 +9,7 @@ Validate the evidence before interpreting the effect. Produce a decision only wh
9
9
 
10
10
  ## Platform and reference routing
11
11
 
12
- Use `ae-cli` for every AE/TE platform interaction and follow
12
+ Use `ae-cli` for every AE platform interaction and follow
13
13
  [`references/platform-operations.md`](references/platform-operations.md);
14
14
  never substitute another platform access path.
15
15
 
@@ -1,6 +1,6 @@
1
1
  # Platform Operations
2
2
 
3
- Read this reference before retrieving any AE/TE experiment evidence.
3
+ Read this reference before retrieving any AE experiment evidence.
4
4
 
5
5
  ## Hard boundary
6
6
 
@@ -299,6 +299,7 @@ From the plan file, read:
299
299
  - `meta.client_sdk_type` — client SDK type (if `client_only` or `both`)
300
300
  - `meta.server_language` — server language (if `server_only` or `both`)
301
301
  - `meta.user_identity` — user identity config (used to generate `login()` / `identify()` calls)
302
+ - `user_properties` — user property pool (each entry's `name` + `update_type`, used to generate `user_set` / `user_setOnce` / `user_add` calls)
302
303
 
303
304
  **Determine list of platforms to generate code for**:
304
305
  ```
@@ -639,7 +640,7 @@ Validation steps:
639
640
  ### After validation passes
640
641
 
641
642
  - Remind user to commit changes (if any `insert` was used)
642
- - Remind user to call `login()` / `identify()` in code to associate user IDs
643
+ - Remind user to call `login()` / `identify()` (associate user IDs) and `user_set` / `user_setOnce` / `user_add` (set user properties) at the right business moments
643
644
  - Remind user to copy daemon.json to LogBus2 conf/ directory
644
645
 
645
646
  ### Validation failure
@@ -111,7 +111,7 @@ Wait for user confirmation, then proceed to Stage 1.
111
111
 
112
112
  ## User Properties
113
113
  - File: <path>:<line>
114
- - user_set / user_setOnce / user_add
114
+ - user_set / user_setOnce / user_add / user_append
115
115
 
116
116
  ## Event Group: <tag>
117
117
  - <event_name>: <file>:<line> [Business action: <business meaning>]
@@ -1,6 +1,6 @@
1
1
  # Mode D — DataX job.json
2
2
 
3
- > **Terminology**: 数据源类型 = data source type | 连接信息 = connection info | 库表名 = database/table name | 查询条件 = query condition | reader 插件 = reader plugin | columnMapping = column-to-property mapping | push_url = TE receiver URL
3
+ > **Terminology**: 数据源类型 = data source type | 连接信息 = connection info | 库表名 = database/table name | 查询条件 = query condition | reader 插件 = reader plugin | columnMapping = column-to-property mapping | push_url = AE receiver URL
4
4
 
5
5
  ## Ask User
6
6
  1. Data source type (MySQL / Oracle / PostgreSQL / OSS / HDFS / Other)
@@ -1,6 +1,6 @@
1
1
  # LogBus2 Configuration Generation
2
2
 
3
- > **Terminology**: LogBus2 = log sync tool (Go-based, v2) | LoggerConsumer = writes events to local log files | 日志同步工具 = log sync tool | daemon.json = LogBus2 config file | push_url = TE receiver/data ingestion URL | app_id = AE project APP_ID | file_patterns = glob patterns for log files | unit_remove = file deletion unit (day/hour) | offset_remove = file deletion offset | 重命名 = rename (causes re-upload) | runtime 目录 = runtime directory (stores progress snapshots) | JSON line = JSONL format (one JSON per line)
3
+ > **Terminology**: LogBus2 = log sync tool (Go-based, v2) | LoggerConsumer = writes events to local log files | 日志同步工具 = log sync tool | daemon.json = LogBus2 config file | push_url = AE receiver/data ingestion URL | app_id = AE project APP_ID | file_patterns = glob patterns for log files | unit_remove = file deletion unit (day/hour) | offset_remove = file deletion offset | 重命名 = rename (causes re-upload) | runtime 目录 = runtime directory (stores progress snapshots) | JSON line = JSONL format (one JSON per line)
4
4
 
5
5
  LogBus2 is AE's official log sync tool, used together with LoggerConsumer (server-side SDK).
6
6
 
@@ -18,7 +18,7 @@ Server-side always gets the following regardless of `insert` or `snippet`:
18
18
  | Deliverable | Description |
19
19
  |---|---|
20
20
  | LoggerConsumer code | Server SDK writes to local log files |
21
- | `.ae-cli/output/daemon.json` | LogBus2 config (reads logs and uploads to TE) |
21
+ | `.ae-cli/output/daemon.json` | LogBus2 config (reads logs and uploads to AE) |
22
22
 
23
23
  **Note: LogBus v1 is deprecated. Use LogBus2 for all scenarios.**
24
24
 
@@ -1,6 +1,6 @@
1
1
  # Server-side Code Insertion (LoggerConsumer + LogBus2)
2
2
 
3
- > **Terminology**: 服务端 SDK = server-side SDK | 代码插入 = code insertion/injection | LoggerConsumer = writes events to local log files (recommended for production) | LogBus2 = log sync tool that reads local logs and uploads to TE | 架构 = architecture | 异步上报 = async upload | 批量上传 = batch upload | 重试策略 = retry strategy | 公共属性 = super property (公共事件属性; never "超级属性") | 用户属性 = user property | 依赖管理 = dependency management
3
+ > **Terminology**: 服务端 SDK = server-side SDK | 代码插入 = code insertion/injection | LoggerConsumer = writes events to local log files (recommended for production) | LogBus2 = log sync tool that reads local logs and uploads to AE | 架构 = architecture | 异步上报 = async upload | 批量上传 = batch upload | 重试策略 = retry strategy | 公共属性 = super property (公共事件属性; never "超级属性") | 用户属性 = user property | 依赖管理 = dependency management
4
4
 
5
5
  ## Architecture
6
6
 
@@ -91,7 +91,7 @@ Wait for user confirmation, then proceed to Stage 1.
91
91
 
92
92
  ## User Properties
93
93
  - File: <path>:<line>
94
- - user_set / user_setOnce / user_add
94
+ - user_set / user_setOnce / user_add / user_append
95
95
 
96
96
  ## Event Group: <tag>
97
97
  - <event_name>: <file>:<symbol> or SKIP (already present)
@@ -120,9 +120,9 @@ Insertion point: entry file static block / start of main function
120
120
 
121
121
  ### Batch 2: Super Properties + User Properties
122
122
 
123
- Generate based on `meta.user_identity`:
124
- - `user_set` / `user_setOnce`: user property upload
125
- - `login()` call: on user login
123
+ Generate:
124
+ - `user_set` / `user_setOnce` / `user_add` / `user_append`: user property upload, based on `draft.user_properties[]` (each entry's `name` + `update_type`)
125
+ - `login()` call: on user login, based on `meta.user_identity`
126
126
 
127
127
  ### Batch 3..N: Events grouped by event_tag
128
128
 
@@ -69,7 +69,7 @@ You must call the corresponding API to **enable** them after or during initializ
69
69
 
70
70
  ```<lang>
71
71
  // Call after user login
72
- <user_set / user_setOnce code>
72
+ <user_set / user_setOnce / user_add / user_append code>
73
73
  ```
74
74
  ```
75
75
 
@@ -161,7 +161,7 @@ Show each event individually, each as its own block for easy copying.
161
161
  <setSuperProperties code>
162
162
 
163
163
  // ==================== User Properties ====================
164
- <user_set code>
164
+ <user_set / user_setOnce / user_add / user_append code>
165
165
 
166
166
  // ==================== Event Group: <tag> ====================
167
167
  // <event_name> - <event_desc>
@@ -280,7 +280,7 @@ If upload succeeds, report that the files are available from the file/attachment
280
280
  - **Integrate SDK** section (npm package name / CDN URL / integration methods)
281
281
  - **Initialization** section (init API signature and example code)
282
282
  - **Track** section (event upload API and examples)
283
- - **User Properties** section (user_set / user_setOnce / user_add API)
283
+ - **User Properties** section (user_set / user_setOnce / user_add / user_append API)
284
284
 
285
285
  3. **⚠️ Do not skip Step 0** — even if you've generated code for the same platform before, must re-read latest docs every time
286
286