@thinkingai/ae-cli 6.1.20 → 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 (338) hide show
  1. package/README.md +2 -1
  2. package/README.zh.md +2 -1
  3. package/dist/{auth-FUM37MHF.js → auth-XZNXFRJS.js} +5 -5
  4. package/dist/{capability-AXFQW5WM.js → capability-FYTU3X6L.js} +42 -12
  5. package/dist/{chunk-LNZBEQXW.js → chunk-4NRCTUZJ.js} +27041 -474
  6. package/dist/{chunk-VXNMYUXU.js → chunk-57RRFUEZ.js} +23 -7
  7. package/dist/{chunk-WZ6YVQSF.js → chunk-7FTTULED.js} +1 -1
  8. package/dist/{chunk-ATSM5XAW.js → chunk-7XGFSUOM.js} +2 -2
  9. package/dist/chunk-CCS66K4K.js +155 -0
  10. package/dist/{chunk-I4WQAEYB.js → chunk-DVMLWQD4.js} +8 -186
  11. package/dist/{chunk-CZU3V3DQ.js → chunk-DX5CDO34.js} +27 -6
  12. package/dist/chunk-EQ255HKO.js +38248 -0
  13. package/dist/{chunk-BBEFP4SB.js → chunk-HBGADCKA.js} +3 -3
  14. package/dist/{chunk-QJQZH5GQ.js → chunk-HFGZGYCG.js} +10 -6
  15. package/dist/{chunk-ECBLHAZO.js → chunk-JOCDD4ON.js} +1 -1
  16. package/dist/{chunk-TKHSULJT.js → chunk-KPQY44JQ.js} +6 -0
  17. package/dist/{chunk-4P355ZWB.js → chunk-MAPZ7VB6.js} +21 -1
  18. package/dist/chunk-V2NUHPXF.js +196 -0
  19. package/dist/{chunk-RSG4ONOI.js → chunk-VYXXOKYS.js} +5 -5
  20. package/dist/{community-report-client-XXWGSBSD.js → community-report-client-CU22W53K.js} +1 -1
  21. package/dist/{config-EXUGQN5T.js → config-XO3LI3SA.js} +4 -4
  22. package/dist/context-IFJI3LIT.js +46 -0
  23. package/dist/{data-integration-4NZ53OMT.js → data-integration-HNGUKFIC.js} +44 -35
  24. package/dist/index.js +101 -64
  25. package/dist/{local-data-upload-client-KYOKVYZV.js → local-data-upload-client-GTRIT64F.js} +3 -2
  26. package/dist/{memory-ATNKZNW5.js → memory-QGPSNCQS.js} +4 -4
  27. package/dist/{metadata-VZVC7YMH.js → metadata-DI5BMYFU.js} +8 -8
  28. package/dist/{model-E4JMQ4V2.js → model-RNPQXIBI.js} +4 -4
  29. package/dist/{personal-semantic-preference-7S2SQ3UV.js → personal-semantic-preference-5C3WUXFI.js} +11 -8
  30. package/dist/{project-semantic-2SZP2OPO.js → project-semantic-3LF6Q6JZ.js} +27 -21
  31. package/dist/{sync-YV3E66IF.js → sync-O45NXEQY.js} +7 -6
  32. package/dist/{te-agent-JB5T3PO7.js → te-agent-K5MSPNHJ.js} +5 -5
  33. package/dist/{te-analysis-3YJAAT2D.js → te-analysis-AISWCOOZ.js} +1086 -354
  34. package/dist/{te-community-UDBI672N.js → te-community-4OYU3BDA.js} +4 -4
  35. package/dist/{te-dataops-ZLYOCXZ4.js → te-dataops-NFIPB6FX.js} +5 -5
  36. package/dist/{te-engage-4XG6OJML.js → te-engage-BAM3GBFX.js} +7 -7
  37. package/dist/{te-experiment-VXUWPINJ.js → te-experiment-GUTZXZ5Z.js} +132 -14
  38. package/dist/{te-kb-WYQWHFSC.js → te-kb-3TS73NO6.js} +454 -194
  39. package/dist/{te-system-7G6F2LJA.js → te-system-STMHLS5J.js} +12 -7
  40. package/dist/{te-team-E7FBBXMQ.js → te-team-3I5AOX3N.js} +6 -6
  41. package/dist/{update-D47BUG25.js → update-RZXLPCRH.js} +4 -4
  42. package/package.json +21 -14
  43. package/skills/ae-analysis/SKILL.md +91 -78
  44. package/skills/ae-analysis/references/adhoc_export.md +11 -18
  45. package/skills/ae-analysis/references/adhoc_run.md +15 -7
  46. package/skills/ae-analysis/references/agent_review_detail.md +11 -0
  47. package/skills/ae-analysis/references/agent_review_evidence.md +46 -0
  48. package/skills/ae-analysis/references/agent_review_list.md +9 -0
  49. package/skills/ae-analysis/references/agent_review_preflight.md +96 -0
  50. package/skills/ae-analysis/references/agent_review_priorities_comparisons.md +76 -0
  51. package/skills/ae-analysis/references/agent_review_records.md +9 -0
  52. package/skills/ae-analysis/references/agent_review_retry.md +12 -0
  53. package/skills/ae-analysis/references/agent_review_review.md +16 -0
  54. package/skills/ae-analysis/references/agent_review_submit_to_page.md +184 -0
  55. package/skills/ae-analysis/references/ai_models/attribution.md +29 -0
  56. package/skills/ae-analysis/references/ai_models/distribution.md +40 -0
  57. package/skills/ae-analysis/references/ai_models/event.md +108 -0
  58. package/skills/ae-analysis/references/ai_models/funnel.md +46 -0
  59. package/skills/ae-analysis/references/ai_models/heat_map.md +26 -0
  60. package/skills/ae-analysis/references/ai_models/interval.md +20 -0
  61. package/skills/ae-analysis/references/ai_models/path.md +38 -0
  62. package/skills/ae-analysis/references/ai_models/prop_analysis.md +39 -0
  63. package/skills/ae-analysis/references/ai_models/rank_list.md +25 -0
  64. package/skills/ae-analysis/references/ai_models/retention.md +70 -0
  65. package/skills/ae-analysis/references/ai_models/revenue.md +28 -0
  66. package/skills/ae-analysis/references/ai_models/sql.md +74 -0
  67. package/skills/ae-analysis/references/ai_models/tag.md +19 -0
  68. package/skills/ae-analysis/references/ai_models.md +32 -473
  69. package/skills/ae-analysis/references/alert_create.md +7 -7
  70. package/skills/ae-analysis/references/alert_delete.md +4 -6
  71. package/skills/ae-analysis/references/alert_detail_list.md +7 -9
  72. package/skills/ae-analysis/references/alert_get.md +5 -7
  73. package/skills/ae-analysis/references/alert_job_list.md +4 -6
  74. package/skills/ae-analysis/references/alert_list.md +6 -8
  75. package/skills/ae-analysis/references/alert_notice_config_list.md +4 -6
  76. package/skills/ae-analysis/references/alert_start.md +5 -7
  77. package/skills/ae-analysis/references/alert_stop.md +5 -7
  78. package/skills/ae-analysis/references/alert_update.md +8 -8
  79. package/skills/ae-analysis/references/analysis_data_export.md +72 -0
  80. package/skills/ae-analysis/references/analysis_data_retrieval.md +32 -196
  81. package/skills/ae-analysis/references/analysis_gateway_assets.md +23 -180
  82. package/skills/ae-analysis/references/analysis_interpretation.md +37 -17
  83. package/skills/ae-analysis/references/asset_abnormal_get.md +0 -1
  84. package/skills/ae-analysis/references/asset_abnormal_list.md +0 -1
  85. package/skills/ae-analysis/references/asset_authentication_export.md +4 -0
  86. package/skills/ae-analysis/references/asset_authentication_list.md +7 -1
  87. package/skills/ae-analysis/references/asset_authentication_update.md +5 -1
  88. package/skills/ae-analysis/references/asset_batch_dashboard_schedule_freeze.md +8 -6
  89. package/skills/ae-analysis/references/asset_batch_delete.md +6 -6
  90. package/skills/ae-analysis/references/asset_batch_disable_auto_backup.md +4 -5
  91. package/skills/ae-analysis/references/asset_batch_disable_auto_update.md +5 -6
  92. package/skills/ae-analysis/references/asset_batch_handover.md +4 -5
  93. package/skills/ae-analysis/references/asset_batch_info_export.md +4 -5
  94. package/skills/ae-analysis/references/asset_batch_sql_export.md +5 -6
  95. package/skills/ae-analysis/references/asset_dependency_list.md +4 -5
  96. package/skills/ae-analysis/references/asset_export.md +4 -5
  97. package/skills/ae-analysis/references/asset_impact_list.md +5 -9
  98. package/skills/ae-analysis/references/asset_lineage_get.md +5 -6
  99. package/skills/ae-analysis/references/asset_list.md +4 -5
  100. package/skills/ae-analysis/references/asset_query_history_list.md +4 -8
  101. package/skills/ae-analysis/references/asset_recent_list.md +0 -1
  102. package/skills/ae-analysis/references/asset_search.md +12 -9
  103. package/skills/ae-analysis/references/asset_url_get.md +3 -4
  104. package/skills/ae-analysis/references/bi_panel_copy.md +2 -2
  105. package/skills/ae-analysis/references/bi_panel_page_data_export.md +4 -12
  106. package/skills/ae-analysis/references/bi_panel_page_data_run.md +2 -0
  107. package/skills/ae-analysis/references/catalog_export.md +4 -17
  108. package/skills/ae-analysis/references/catalog_list.md +4 -4
  109. package/skills/ae-analysis/references/check_delete.md +5 -7
  110. package/skills/ae-analysis/references/check_export.md +11 -11
  111. package/skills/ae-analysis/references/check_get.md +8 -10
  112. package/skills/ae-analysis/references/check_list.md +4 -6
  113. package/skills/ae-analysis/references/check_retry.md +8 -10
  114. package/skills/ae-analysis/references/check_run.md +2 -4
  115. package/skills/ae-analysis/references/command_index.md +44 -26
  116. package/skills/ae-analysis/references/dashboard_report_data_export.md +5 -13
  117. package/skills/ae-analysis/references/dashboard_report_data_run.md +1 -1
  118. package/skills/ae-analysis/references/dashboard_update.md +14 -3
  119. package/skills/ae-analysis/references/datatable_columns_get.md +0 -1
  120. package/skills/ae-analysis/references/datatable_influence_list.md +0 -1
  121. package/skills/ae-analysis/references/datatable_version_get.md +0 -1
  122. package/skills/ae-analysis/references/datatable_version_list.md +0 -1
  123. package/skills/ae-analysis/references/debug_device_add.md +1 -2
  124. package/skills/ae-analysis/references/drilldown_entities_export.md +3 -3
  125. package/skills/ae-analysis/references/drilldown_events_export.md +3 -2
  126. package/skills/ae-analysis/references/drilldown_user_events_export.md +2 -2
  127. package/skills/ae-analysis/references/entity_detail_export.md +3 -2
  128. package/skills/ae-analysis/references/entity_detail_run.md +1 -0
  129. package/skills/ae-analysis/references/event_blacklist_add.md +5 -7
  130. package/skills/ae-analysis/references/event_blacklist_list.md +4 -6
  131. package/skills/ae-analysis/references/event_blacklist_update.md +6 -8
  132. package/skills/ae-analysis/references/event_changelog_list.md +0 -1
  133. package/skills/ae-analysis/references/event_create.md +0 -1
  134. package/skills/ae-analysis/references/event_detail_export.md +3 -2
  135. package/skills/ae-analysis/references/event_detail_run.md +1 -0
  136. package/skills/ae-analysis/references/event_export.md +0 -1
  137. package/skills/ae-analysis/references/event_get.md +0 -1
  138. package/skills/ae-analysis/references/event_hide_update.md +0 -1
  139. package/skills/ae-analysis/references/event_influence_list.md +0 -1
  140. package/skills/ae-analysis/references/event_list.md +0 -1
  141. package/skills/ae-analysis/references/event_property_bundle_export.md +5 -14
  142. package/skills/ae-analysis/references/event_property_bundle_import.md +2 -6
  143. package/skills/ae-analysis/references/event_relation_update.md +0 -1
  144. package/skills/ae-analysis/references/event_update.md +0 -1
  145. package/skills/ae-analysis/references/exchange_config_update.md +0 -1
  146. package/skills/ae-analysis/references/exchange_rate_refresh.md +0 -1
  147. package/skills/ae-analysis/references/exchange_rule_list.md +0 -1
  148. package/skills/ae-analysis/references/exchange_rule_update.md +0 -1
  149. package/skills/ae-analysis/references/exchange_rule_validate.md +0 -1
  150. package/skills/ae-analysis/references/governance_recommendation_decisions.md +23 -0
  151. package/skills/ae-analysis/references/governance_recommendation_export.md +108 -0
  152. package/skills/ae-analysis/references/governance_recommendation_submit.md +41 -0
  153. package/skills/ae-analysis/references/history_tag_data_drilldown_export.md +4 -4
  154. package/skills/ae-analysis/references/history_tag_data_export.md +3 -3
  155. package/skills/ae-analysis/references/ingest_error_list.md +7 -9
  156. package/skills/ae-analysis/references/ingest_summary.md +6 -8
  157. package/skills/ae-analysis/references/live_data_export.md +10 -10
  158. package/skills/ae-analysis/references/live_data_list.md +7 -9
  159. package/skills/ae-analysis/references/metadata_resolution.md +78 -0
  160. package/skills/ae-analysis/references/metric_export.md +0 -1
  161. package/skills/ae-analysis/references/metric_get.md +0 -1
  162. package/skills/ae-analysis/references/metric_list.md +4 -5
  163. package/skills/ae-analysis/references/metric_update.md +0 -1
  164. package/skills/ae-analysis/references/operation_record_export.md +4 -5
  165. package/skills/ae-analysis/references/operation_record_list.md +4 -5
  166. package/skills/ae-analysis/references/personal_semantic_preference_list.md +18 -1
  167. package/skills/ae-analysis/references/plan_change_log_export.md +10 -10
  168. package/skills/ae-analysis/references/plan_change_log_list.md +4 -6
  169. package/skills/ae-analysis/references/plan_delete_items.md +2 -4
  170. package/skills/ae-analysis/references/plan_export.md +9 -9
  171. package/skills/ae-analysis/references/plan_generate.md +2 -4
  172. package/skills/ae-analysis/references/plan_get.md +4 -6
  173. package/skills/ae-analysis/references/plan_import_excel.md +6 -8
  174. package/skills/ae-analysis/references/plan_save_items.md +2 -4
  175. package/skills/ae-analysis/references/plan_sync_from_meta.md +4 -6
  176. package/skills/ae-analysis/references/project_access_detail_get.md +0 -1
  177. package/skills/ae-analysis/references/project_data_power_get.md +0 -1
  178. package/skills/ae-analysis/references/project_data_power_list.md +0 -1
  179. package/skills/ae-analysis/references/project_data_power_upsert.md +0 -1
  180. package/skills/ae-analysis/references/project_entity_create.md +0 -1
  181. package/skills/ae-analysis/references/project_entity_event_list.md +0 -1
  182. package/skills/ae-analysis/references/project_entity_get.md +0 -1
  183. package/skills/ae-analysis/references/project_entity_list.md +0 -1
  184. package/skills/ae-analysis/references/project_entity_update.md +0 -1
  185. package/skills/ae-analysis/references/project_function_list.md +0 -1
  186. package/skills/ae-analysis/references/project_info_get.md +0 -1
  187. package/skills/ae-analysis/references/project_info_list.md +0 -1
  188. package/skills/ae-analysis/references/project_info_update.md +0 -1
  189. package/skills/ae-analysis/references/project_mark_time_create.md +0 -1
  190. package/skills/ae-analysis/references/project_mark_time_list.md +0 -1
  191. package/skills/ae-analysis/references/project_mark_time_update.md +0 -1
  192. package/skills/ae-analysis/references/project_member_add.md +6 -5
  193. package/skills/ae-analysis/references/project_member_batch_update.md +0 -1
  194. package/skills/ae-analysis/references/project_member_candidate_list.md +4 -3
  195. package/skills/ae-analysis/references/project_member_handover_run.md +2 -3
  196. package/skills/ae-analysis/references/project_member_list.md +0 -1
  197. package/skills/ae-analysis/references/project_member_receiver_list.md +0 -1
  198. package/skills/ae-analysis/references/project_member_update.md +0 -1
  199. package/skills/ae-analysis/references/project_owner_update.md +0 -1
  200. package/skills/ae-analysis/references/project_permission_binding_list.md +0 -1
  201. package/skills/ae-analysis/references/project_role_function_list.md +0 -1
  202. package/skills/ae-analysis/references/project_role_get.md +0 -1
  203. package/skills/ae-analysis/references/project_role_list.md +0 -1
  204. package/skills/ae-analysis/references/project_role_upsert.md +32 -2
  205. package/skills/ae-analysis/references/project_role_user_list.md +0 -1
  206. package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +214 -0
  207. package/skills/ae-analysis/references/project_semantic_knowledge_wiki_plan_schema.md +93 -0
  208. package/skills/ae-analysis/references/project_timezone_get.md +0 -1
  209. package/skills/ae-analysis/references/project_timezone_overview.md +0 -1
  210. package/skills/ae-analysis/references/project_timezone_update.md +0 -1
  211. package/skills/ae-analysis/references/project_user_id_items_update.md +0 -1
  212. package/skills/ae-analysis/references/property_changelog_list.md +0 -1
  213. package/skills/ae-analysis/references/property_create.md +0 -1
  214. package/skills/ae-analysis/references/property_export.md +0 -1
  215. package/skills/ae-analysis/references/property_get.md +0 -1
  216. package/skills/ae-analysis/references/property_hide_update.md +0 -1
  217. package/skills/ae-analysis/references/property_influence_list.md +0 -1
  218. package/skills/ae-analysis/references/property_list.md +3 -4
  219. package/skills/ae-analysis/references/property_related_events.md +0 -1
  220. package/skills/ae-analysis/references/property_relation_update.md +0 -1
  221. package/skills/ae-analysis/references/property_update.md +0 -1
  222. package/skills/ae-analysis/references/report_create.md +4 -2
  223. package/skills/ae-analysis/references/report_data_export.md +11 -9
  224. package/skills/ae-analysis/references/report_data_run.md +14 -7
  225. package/skills/ae-analysis/references/report_get.md +5 -3
  226. package/skills/ae-analysis/references/report_list.md +2 -0
  227. package/skills/ae-analysis/references/report_update.md +5 -3
  228. package/skills/ae-analysis/references/rule_create.md +5 -6
  229. package/skills/ae-analysis/references/rule_delete.md +5 -5
  230. package/skills/ae-analysis/references/rule_list.md +3 -4
  231. package/skills/ae-analysis/references/rule_schema.md +3 -4
  232. package/skills/ae-analysis/references/rule_update.md +5 -6
  233. package/skills/ae-analysis/references/sdk_sample_generate.md +2 -4
  234. package/skills/ae-analysis/references/sql_table_columns.md +1 -1
  235. package/skills/ae-analysis/references/super_metadata_batch_create.md +1 -1
  236. package/skills/ae-analysis/references/super_metadata_batch_edit.md +1 -1
  237. package/skills/ae-analysis/references/system_member_add.md +1 -2
  238. package/skills/ae-analysis/references/system_member_status_update.md +1 -1
  239. package/skills/ae-analysis/references/system_ops_alert_contact_list.md +1 -1
  240. package/skills/ae-analysis/references/system_ops_alert_contact_test.md +0 -1
  241. package/skills/ae-analysis/references/system_query_monitor_overview.md +3 -3
  242. package/skills/ae-analysis/references/system_query_task_export.md +4 -14
  243. package/skills/ae-analysis/references/system_query_task_get.md +1 -1
  244. package/skills/ae-analysis/references/system_query_task_list.md +5 -6
  245. package/skills/ae-analysis/references/system_receiver_address_upsert.md +3 -3
  246. package/skills/ae-analysis/references/system_receiver_detection_get.md +1 -1
  247. package/skills/ae-analysis/references/system_third_party_login_disable.md +1 -1
  248. package/skills/ae-analysis/references/system_usage_trend_export.md +3 -12
  249. package/skills/ae-analysis/references/user_cluster_list.md +1 -1
  250. package/skills/ae-analysis/references/user_cluster_member_export.md +4 -4
  251. package/skills/ae-analysis/references/user_tag_list.md +1 -1
  252. package/skills/ae-analysis/references/user_tag_member_export.md +4 -4
  253. package/skills/ae-analysis/references/virtual_event_create.md +10 -5
  254. package/skills/ae-analysis/references/virtual_event_get.md +0 -1
  255. package/skills/ae-analysis/references/virtual_property_create.md +0 -1
  256. package/skills/ae-analysis/references/virtual_property_sql_rule_update.md +0 -1
  257. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/build-project-semantic-wiki.mjs +1054 -0
  258. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/company-kb.mjs +112 -0
  259. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-rules.md +30 -0
  260. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/generate-build-ir.mjs +2735 -0
  261. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/package-wiki-source-zip.mjs +376 -0
  262. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/plan-kb-source-sync.mjs +264 -0
  263. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/precompiled-source.mjs +49 -0
  264. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/upload-kb-sources-concurrently.mjs +200 -0
  265. package/skills/ae-analysis/scripts/read_results.py +197 -0
  266. package/skills/ae-analysis-global/SKILL.md +1 -1
  267. package/skills/ae-capability/SKILL.md +1 -1
  268. package/skills/ae-community/SKILL.md +1 -1
  269. package/skills/ae-current-context/SKILL.md +53 -0
  270. package/skills/ae-data-integration/SKILL.md +5 -4
  271. package/skills/ae-data-integration/references/lark-bitable-source.md +288 -0
  272. package/skills/ae-data-integration/references/lark-sheet-source.md +130 -0
  273. package/skills/ae-data-integration/references/manual-export-source.md +83 -0
  274. package/skills/ae-data-integration/references/reuse.md +2 -0
  275. package/skills/ae-data-integration/references/sink-upload.md +32 -0
  276. package/skills/ae-data-integration/references/tracking-plan.md +4 -1
  277. package/skills/ae-data-integration/references/ue-mapping.md +2 -2
  278. package/skills/ae-data-integration-helper/SKILL.md +5 -5
  279. package/skills/ae-data-integration-helper/references/android_sdk_faq.md +3 -3
  280. package/skills/ae-data-integration-helper/references/c_sdk_faq.md +3 -3
  281. package/skills/ae-data-integration-helper/references/cocoscreator_sdk_faq.md +1 -1
  282. package/skills/ae-data-integration-helper/references/cpp_server_sdk_faq.md +3 -3
  283. package/skills/ae-data-integration-helper/references/ios_sdk_faq.md +1 -1
  284. package/skills/ae-data-integration-helper/references/java_sdk_faq.md +3 -3
  285. package/skills/ae-data-integration-helper/references/javascript_sdk_faq.md +1 -1
  286. package/skills/ae-data-integration-helper/references/logbus2_guide.md +1 -1
  287. package/skills/ae-data-integration-helper/references/logbus2_parser_plugin.md +2 -2
  288. package/skills/ae-data-integration-helper/references/minigame_sdk_faq.md +2 -2
  289. package/skills/ae-data-integration-helper/references/miniprogram_sdk_faq.md +1 -1
  290. package/skills/ae-data-integration-helper/references/python_sdk_faq.md +2 -2
  291. package/skills/ae-data-integration-helper/references/restful_api_notes.md +2 -2
  292. package/skills/ae-data-integration-helper/references/sdk_log_guide.md +3 -3
  293. package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +11 -11
  294. package/skills/ae-data-integration-helper/references/unity_sdk_faq.md +1 -1
  295. package/skills/ae-dataops/SKILL.md +1 -1
  296. package/skills/ae-engage/SKILL.md +4 -3
  297. package/skills/ae-engage/references/build-task-save-guide.md +3 -0
  298. package/skills/ae-engage/references/flow-metric-update.md +115 -1
  299. package/skills/ae-engage/references/save-flow.md +3 -0
  300. package/skills/ae-engage/references/save-task.md +21 -0
  301. package/skills/ae-engage/references/task-metric-update.md +151 -0
  302. package/skills/ae-experiment/SKILL.md +14 -7
  303. package/skills/ae-experiment/references/save_submit_external_experiment.md +52 -0
  304. package/skills/ae-experiment-design/SKILL.md +3 -3
  305. package/skills/ae-experiment-design/references/platform-operations.md +1 -1
  306. package/skills/ae-experiment-insight/SKILL.md +2 -2
  307. package/skills/ae-experiment-insight/references/platform-operations.md +1 -1
  308. package/skills/ae-generate-tracking-code/SKILL.md +2 -1
  309. package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +1 -1
  310. package/skills/ae-generate-tracking-code/references/datax-config.md +1 -1
  311. package/skills/ae-generate-tracking-code/references/logbus-config.md +1 -1
  312. package/skills/ae-generate-tracking-code/references/modes.md +1 -1
  313. package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +5 -5
  314. package/skills/ae-generate-tracking-code/references/snippet-delivery.md +3 -3
  315. package/skills/ae-generate-tracking-plan/SKILL.md +2 -2
  316. package/skills/ae-generate-tracking-plan/references/te-api.md +1 -0
  317. package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +3 -2
  318. package/skills/ae-kb/SKILL.md +41 -2
  319. package/skills/ae-kb/references/analysis-workflow.md +292 -0
  320. package/skills/ae-kb/references/source-mutations.md +95 -0
  321. package/skills/ae-kb-discovery/SKILL.md +5 -1
  322. package/skills/ae-metadata/SKILL.md +1 -1
  323. package/skills/ae-migrate-tracking-code/SKILL.md +195 -0
  324. package/skills/ae-migrate-tracking-code/references/ae-preset-properties.md +76 -0
  325. package/skills/ae-migrate-tracking-code/references/ir.md +167 -0
  326. package/skills/ae-migrate-tracking-code/references/mapping-framework.md +112 -0
  327. package/skills/ae-migrate-tracking-code/references/providers/README.md +58 -0
  328. package/skills/ae-migrate-tracking-code/references/providers/amplitude.md +208 -0
  329. package/skills/ae-migrate-tracking-code/references/providers/firebase.md +160 -0
  330. package/skills/ae-migrate-tracking-code/references/providers/ga4.md +92 -0
  331. package/skills/ae-migrate-tracking-code/references/providers/mixpanel.md +150 -0
  332. package/skills/ae-migrate-tracking-code/references/providers/sensors-data.md +146 -0
  333. package/skills/ae-project-semantic/SKILL.md +1 -1
  334. package/skills/ae-system/SKILL.md +4 -4
  335. package/skills/ae-team/SKILL.md +2 -2
  336. package/skills/ae-use-agent/references/local-agent.md +1 -1
  337. package/dist/chunk-TAL6CZH6.js +0 -72
  338. package/skills/ae-analysis/metadata_resolution.md +0 -184
@@ -0,0 +1,150 @@
1
+ # Mixpanel Adapter
2
+
3
+ > **Terminology**: 事件 = event | 属性 = event property | 用户 ID = distinct id | 用户属性 = people property | 公共属性 = super property | 分组 = group | 自动采集 = autotrack
4
+
5
+ ## 1. Recognition
6
+
7
+ Official Mixpanel SDKs (verified against `docs.mixpanel.com`): **JavaScript**, **Node.js**, **Python**, **Go**, **Java**, **Ruby**, **PHP**, **Android**, **iOS**, **Swift**, **React Native**, **Flutter**, **Unity**.
8
+
9
+ - **Client SDKs** (persistent identity via `identify`): JavaScript, Android, iOS, Swift, React Native, Flutter, Unity.
10
+ - **Server SDKs** (identity passed per call as `distinct_id` first argument): Node.js, Python, Go, Java, Ruby, PHP.
11
+
12
+ ### Client (JavaScript — `mixpanel-browser`)
13
+
14
+ | Call kind | Signature |
15
+ |---|---|
16
+ | init | `mixpanel.init('TOKEN')` |
17
+ | event | `mixpanel.track('event_name', { prop: value })` |
18
+ | identity | `mixpanel.identify('distinct_id')` |
19
+ | alias | `mixpanel.alias('new_id')` |
20
+ | reset | `mixpanel.reset()` |
21
+ | super props | `mixpanel.register({ k: v })` / `register_once({ k: v })` / `unregister('k')` |
22
+ | opt out | `mixpanel.opt_in_tracking()` / `opt_out_tracking()` / `has_opted_out_tracking()` |
23
+ | duration | `mixpanel.time_event('event_name')` (start timer, then `track`) |
24
+ | link / form | `mixpanel.track_links('#id', 'event_name')` / `track_forms('#id', 'event_name')` |
25
+ | grouped event | `mixpanel.track_with_groups('event_name', props, { group_key: 'group_type' })` |
26
+ | group | `mixpanel.get_group('group_type').set('group_key', value)` |
27
+ | group ops | `mixpanel.add_group('group_type', 'key')` / `set_group('group_type', 'key')` / `remove_group('group_type', 'key')` |
28
+ | people props | `mixpanel.people.set({ k: v })` / `.set_once` / `.increment` / `.append` / `.union` / `.remove` / `.unset` / `.track_charge` / `.clear_charges` / `.delete_user` |
29
+
30
+ ### Client (native — Android / iOS / Swift / React Native / Flutter / Unity)
31
+
32
+ | Platform | Init | Event | Identity | User props | Group / opt-out |
33
+ |---|---|---|---|---|---|
34
+ | Android (Kotlin) | `MixpanelAPI.getInstance(context, token)` | `mixpanel.track("event", JSONObject)` | `mixpanel.identify("id")` / `alias(id, distinctId)` | `mixpanel.people.set(props)` | `getGroup/setGroup/addGroup/removeGroup`, `optOutTracking()`/`optInTracking()`, `timeEvent(name)`, `registerSuperProperties(props)`, `reset()` |
35
+ | iOS (ObjC/Swift) | `Mixpanel.mainInstance()` | `mixpanel.track(event: "event", properties: props)` | `mixpanel.identify(distinctId: "id")` / `alias(...)` | `mixpanel.people.set(properties:)` | `getGroup/setGroup/addGroup/removeGroup`, `optOutTracking()`/`optInTracking()`, `time(event:)`, `registerSuperProperties(...)`, `reset()` |
36
+ | Swift | `Mixpanel.initialize(token:)` | `mixpanel.track(event:properties:)` | `mixpanel.identify(distinctId:)` | `mixpanel.people.set(...)` | same group / opt-out / reset surface as iOS |
37
+ | React Native | `mixpanel.init('TOKEN')` | `mixpanel.track('event', props)` | `mixpanel.identify('id')` / `alias` | `mixpanel.people.set(props)` | `getGroup/setGroup/addGroup/removeGroup`, `optInTracking/optOutTracking`, `timeEvent`, `registerSuperProperties`, `reset`, `setLoggingEnabled` |
38
+ | Flutter | `mixpanel.init('TOKEN')` | `mixpanel.track('event', props)` | `mixpanel.identify('id')` | `mixpanel.people.set(props)` | `getGroup/setGroup/addGroup`, `optInTracking/optOutTracking`, `timeEvent`, `registerSuperProperties`, `reset`, `autocapture` |
39
+ | Unity (C#) | `Mixpanel.Init(token)` | `Mixpanel.Track("event", props)` | `Mixpanel.Identify("id")` / `Alias` | `Mixpanel.People.Set(props)` | `OptInTracking()/OptOutTracking()`, `Reset()` |
40
+
41
+ ### Server (identity passed per call as `distinct_id`)
42
+
43
+ | Language | Init | Event | User props | Group |
44
+ |---|---|---|---|---|
45
+ | Node.js | `mixpanel.init('TOKEN')` | `mixpanel.track('event', props)` | `mixpanel.people.set('distinct_id', props)` | `mixpanel.groups.set('type', 'key', props)` |
46
+ | Python | `mp = Mixpanel('TOKEN')` | `mp.track(distinct_id, 'event', props)` | `mp.people_set(distinct_id, props)` / `people_set_once` / `people_increment` / `people_append` / `people_union` | `mp.group_set(type, key, props)` / `group_set_once` / `group_union` / `group_unset` / `group_remove` |
47
+ | Go | `client := mixpanel.NewApiClient(token)` | `client.Track([]*mixpanel.Event{...})` | people / groups via the same API surface | `mixpanel.Groups` |
48
+ | Java | `MixpanelAPI mixpanel = MixpanelAPI.getInstance(token)` | `mixpanel.track(distinctId, event, props)` | `mixpanel.getPeople().set(distinctId, props)` | group methods on `MixpanelAPI` |
49
+ | Ruby | `tracker = Mixpanel::Tracker.new(token)` | `tracker.track(distinct_id, 'event', props)` | `tracker.people.set(distinct_id, props)` | group methods on `tracker` |
50
+ | PHP | `$mp = Mixpanel::getInstance(token)` | `$mp->track(distinct_id, 'event', props)` | `$mp->people->set(distinct_id, props)` | `$mp->groups->set(type, key, props)` |
51
+
52
+ Server-side also expose `import_data` (batch historical import) and `alias(alias, distinct_id)`.
53
+
54
+ ## 2. Event mapping rules
55
+
56
+ > **Forward compatibility**: preserve event/property names verbatim (skip snake_case — AE matches names case-sensitively) when historical Mixpanel data has been (or will be) imported into AE offline and must join with new SDK data; transform only hard-constraint violations, matching the names the offline import used. See `mapping-framework.md` §1.
57
+
58
+ - `track(name, props)` → `track(snake_case(name), props)`. Server SDKs drop the leading `distinct_id` argument — it becomes identity (§3), not a property.
59
+ - Reserved prefixes: `$` marks Mixpanel special/reserved properties (`$os`, `$browser`, `$device`, `$current_url`, `$distinct_id`, `$user_id`, `$time`, ...) and `mp_` is Mixpanel-reserved (`mp_country_code`, `mp_lib`, ...). Map `$` special properties to AE `#` preset properties (never custom) — but only to names in the authoritative AE list (`references/ae-preset-properties.md`); for `mp_` names and any `$` name without an AE preset equivalent, surface the rename to the user for confirmation (fall back to a normal custom property or drop, never a made-up `#` name).
60
+ - Property types inferred per `mapping-framework.md`; Mixpanel allows nested objects and arrays → AE `object` / `array_row` / `array_string`.
61
+
62
+ ## 3. Identity mapping
63
+
64
+ - Client `identify(distinct_id)` → AE `login(accountId)` (account_id_source `user_account`).
65
+ - Server SDKs: the `distinct_id` first argument on every `track` / `people_*` / `group_*` call → AE per-event `#account_id` / account_id_source, not a client `login()` call.
66
+ - `alias(new_id)` (client) / `alias(alias, distinct_id)` (server) merges anonymous → identified; AE handles this via `login`, ignore `alias`.
67
+ - Anonymous `distinct_id` (auto-generated) → AE visitor (SDK-managed), do not migrate as `login`. **Forward compatibility**: map it to AE `#distinct_id` via the AE visitor-id API (`setDistinctId` / `identify`) once at init, before any event; see `mapping-framework.md` §4.
68
+ - `reset()` clears the device identity and starts a new anonymous user → AE `logout()` (clears `login` state, returns to visitor). Do not migrate as `login`.
69
+ - Group APIs (`get_group` / `add_group` / `set_group` / `remove_group`, `track_with_groups`, server `group_*`) have no AE group concept. Map the group key to a user property or the AE account/role system; **mark `needs decision`** and ask the user.
70
+ - `opt_in_tracking()` / `opt_out_tracking()` / `has_opted_out_tracking()` (web) / `optInTracking()` / `optOutTracking()` (native) → AE's consent model is to **initialize the SDK only after the user accepts the privacy policy** (gate the AE init behind the consent check — see the AE client-SDK FAQ, e.g. `android_sdk_faq.md` / `ios_sdk_faq.md`), not an init-then-toggle switch. A runtime opt-out toggle maps to AE's runtime pause API `enableTracking` (the compliance/GDPR doc describes it as suspending all data reporting; CocosCreator's variant is `setTrackStatus(PAUSE/STOP/SAVE_ONLY/NORMAL)`) — read the exact signature from the target platform's SDK doc; `has_opted_out_tracking()` is a read, no AE call to emit.
71
+
72
+ ## 4. User property mapping
73
+
74
+ | Mixpanel people operation | AE method | Notes |
75
+ |---|---|---|
76
+ | `people.set({k:v})` / `people_set` | `user_set` | overwrite |
77
+ | `people.set_once({k:v})` / `people_set_once` | `user_setOnce` | first-write-wins |
78
+ | `people.increment({k:n})` / `people_increment` | `user_add` | numeric accumulate |
79
+ | `people.append(k, v)` / `people_append` | `user_append` | array append |
80
+ | `people.union(k, [v...])` / `people_union` | `user_append` | set-union → array append, note the dedup difference |
81
+ | `people.unset([k...])` / `people_unset` | `user_unset` | remove property |
82
+ | `people.remove(k, v)` / `people_remove` | `needs decision` | list-item removal has no direct AE equivalent; map to `user_set` with the full remaining array or mark `needs decision` |
83
+ | `people.track_charge(amount, props)` | `needs decision` | AE models revenue as events, not user properties; map to a payment event with **custom** amount + currency properties (e.g. `amount` numeric, `currency` ISO 4217 string) — `#amount` / `#currency` are NOT valid AE preset properties (they are rejected at ingestion), so never emit `#`-prefixed money names; or `user_add` on a revenue counter |
84
+ | `people.clear_charges()` | drop | resets Mixpanel's revenue counter; no AE equivalent needed |
85
+ | `people.delete_user()` / `people_delete` | `needs decision` | AE has no SDK-side user deletion; deleting a user is a server-side / admin action in AE |
86
+
87
+ > `user_append` / `user_unset` are code-level only — they do not enter the AE plan (`update_type` is `user_set` / `user_setOnce` / `user_add`); see `mapping-framework.md` §5.
88
+
89
+ ## 5. Super property mapping
90
+
91
+ Mixpanel super properties (web `register` / `register_once` / `unregister`; native `registerSuperProperties`) attach to **every event** — they are event properties, never user properties. Map them to AE common event properties (`setSuperProperties`).
92
+
93
+ | Source operation | AE method | Notes |
94
+ |---|---|---|
95
+ | `register({k:v})` / `registerSuperProperties({k:v})` | `set_super_properties` (`setSuperProperties({...})`) | static common event property; lands in `draft.json` `common_event_properties` |
96
+ | `register_once({k:v})` | `needs decision` | AE has no first-write-wins common property; `setSuperProperties` overwrites |
97
+ | `unregister('k')` | `needs decision` | AE has no single-key removal; closest is one `setSuperProperties` with the remaining keys |
98
+
99
+ > `register` **accumulates** across calls, but AE `setSuperProperties` **overwrites** the whole set each call. Multiple `register` call sites must be merged into a single `setSuperProperties` (or flagged for the user) so earlier keys are not silently dropped.
100
+
101
+ ## 6. Auto-track decision
102
+
103
+ Mixpanel's autotrack (web page views, clicks, forms) is opt-in:
104
+
105
+ | Source autotrack | Decision |
106
+ |---|---|
107
+ | page view (`$pageview`) | map to AE `ta_page_show` switch |
108
+ | click / form events | drop or map to AE auto-track switches per user decision |
109
+ | `$` special properties | map to AE `#` preset properties, never create as custom |
110
+ | Flutter / RN `autocapture` | drop the flag; enable the equivalent AE auto-track switches via init instead |
111
+
112
+ Enable via the AE SDK init switch, never as manual `track()`.
113
+
114
+ ## 7. Dependency identifiers
115
+
116
+ | Platform | Remove in `switch` mode | Notes |
117
+ |---|---|---|
118
+ | Web | `mixpanel-browser` | npm |
119
+ | Node | `mixpanel` | npm |
120
+ | Python | `mixpanel` | pip |
121
+ | Go | `github.com/mixpanel/mixpanel-go` | Go module |
122
+ | Java (server) | `com.mixpanel:mixpanel-java` | Maven/Gradle |
123
+ | Ruby | `mixpanel-ruby` | gem |
124
+ | PHP | `mixpanel/mixpanel-php` | Composer |
125
+ | Android | `com.mixpanel.android:mixpanel-android` | Gradle |
126
+ | iOS / Swift | `Mixpanel` (CocoaPods/SPM) | |
127
+ | React Native | `mixpanel-react-native` | npm |
128
+ | Flutter | `mixpanel_flutter` | pubspec |
129
+ | Unity | Mixpanel Unity package | remove from the Unity project |
130
+
131
+ AE SDK dependency is resolved via the AE wiki (`ae-generate-tracking-code` → `references/sdk-index.md`), not here.
132
+
133
+ ## 8. Official docs
134
+
135
+ - Docs portal: https://docs.mixpanel.com/docs
136
+ - SDK list: https://docs.mixpanel.com/docs/tracking-methods/sdks
137
+ - JavaScript SDK: https://docs.mixpanel.com/docs/tracking-methods/sdks/javascript
138
+ - Node.js: https://docs.mixpanel.com/docs/tracking-methods/sdks/nodejs
139
+ - Python: https://docs.mixpanel.com/docs/tracking-methods/sdks/python
140
+ - Go: https://docs.mixpanel.com/docs/tracking-methods/sdks/go
141
+ - Java: https://docs.mixpanel.com/docs/tracking-methods/sdks/java
142
+ - Ruby: https://docs.mixpanel.com/docs/tracking-methods/sdks/ruby
143
+ - PHP: https://docs.mixpanel.com/docs/tracking-methods/sdks/php
144
+ - Android: https://docs.mixpanel.com/docs/tracking-methods/sdks/android
145
+ - iOS: https://docs.mixpanel.com/docs/tracking-methods/sdks/ios
146
+ - Swift: https://docs.mixpanel.com/docs/tracking-methods/sdks/swift
147
+ - React Native: https://docs.mixpanel.com/docs/tracking-methods/sdks/react-native
148
+ - Flutter: https://docs.mixpanel.com/docs/tracking-methods/sdks/flutter
149
+ - Unity: https://docs.mixpanel.com/docs/tracking-methods/sdks/unity
150
+ - Identity management: https://docs.mixpanel.com/docs/tracking-methods/id-management
@@ -0,0 +1,146 @@
1
+ # Sensors Data (神策) Adapter
2
+
3
+ > **Terminology**: 事件 = event | 属性 = event property / user property | 用户 ID = user id | 公共属性 = super property | 预置属性 = preset property | 自动采集 = auto-track
4
+
5
+ ## 1. Recognition
6
+
7
+ **Core API is identical across every Sensors Data SDK** (verified against `manual.sensorsdata.cn`): `track` (event), `login` / `identify` (identity — `identify` is an alias of `login`), `profileSet` (user properties, new naming), `register` (super properties, native SDKs also expose `registerSuperProperties`), `quick` (quick track).
8
+
9
+ **Two user-property naming conventions coexist:**
10
+
11
+ - **New naming** (all SDKs): `profileSet` / `profileSetOnce` / `profileAppend` / `profileIncrement` / `profileUnset`.
12
+ - **Legacy naming** (Web JS, WeChat & other mini-programs, Harmony only): `setProfile` / `setOnceProfile` / `appendProfile` / `incrementProfile` / `unsetProfile` / `deleteProfile`.
13
+
14
+ ### Client SDKs
15
+
16
+ | Platform | Import / init | Notes |
17
+ |---|---|---|
18
+ | Web (JS) | `sensors.init({ server_url: '...', is_track_single_page: true })` | both naming conventions; `sensors.registerPage` / `registerSession`; `getPresetProperties()`; `quick('autoTrack')` |
19
+ | Android | `com.sensorsdata.analytics.android.sdk.SensorsDataAPI` | new naming; `registerSuperProperties`; `trackAppInstall()` preset event |
20
+ | iOS | `import SensorsAnalyticsSDK` | new naming; `registerSuperProperties` |
21
+ | Harmony | Harmony SDK (HAR) | both naming conventions; `register` |
22
+ | macOS / tvOS | `SensorsAnalyticsSDK` | new naming; `trackInstallation()` preset event |
23
+ | C++ | Sensors Analytics C++ SDK | new naming (`profileSet`, `login`, `identify`, `register`) |
24
+ | React Native | `@sensorsdata/analytics` (npm) | new naming; `registerSuperProperties` |
25
+ | Flutter | `sensors_analytics` (pubspec) | new naming; `register` |
26
+ | Unity | Sensors Analytics Unity package | new naming; `register` |
27
+ | Unreal Engine | `unreal-engine-sdk` plugin | new naming; `register` |
28
+ | Cocos2d-x | Sensors Analytics Cocos SDK | new naming; `registerSuperProperties` |
29
+ | WeChat Mini Program | `sensorsdata.min.js` (小程序版) | both naming conventions; mirrors the web JS API |
30
+ | Other Mini Programs (Alipay/Baidu/ByteDance/QQ) | `sensorsdata.min.js` | both naming conventions; mirrors the web JS API |
31
+ | QuickApp (快应用) | Sensors Analytics QuickApp SDK | new naming (`profileSet*`); mirrors the core API |
32
+ | APICloud | Sensors Analytics APICloud plugin | new naming (`profileSet*`); mirrors the core API |
33
+ | uni-app | Sensors Analytics uni-app plugin | new naming (`profileSet*`); mirrors the core API |
34
+ | Weex | Sensors Analytics Weex SDK | new naming (`profileSet*`); mirrors the core API |
35
+ | Egret (HTML5 game engine) | Sensors Analytics Egret SDK | legacy naming (`setProfile*`), like Web JS |
36
+ | LayaAir (HTML5 game engine) | Sensors Analytics LayaAir SDK | legacy naming (`setProfile*`), like Web JS |
37
+
38
+ Common call shape (client): `sensors.track('event_name', { prop: value })` / `sensors.login(id)` / `sensors.profileSet({ k: v })` (or `setProfile` legacy) / `sensors.register({ k: v })`; native SDKs use the class instance (`SensorsDataAPI.sharedInstance().track(...)`, `SensorsAnalyticsSDK.sharedInstance()?.track(...)`).
39
+
40
+ ### Server SDKs
41
+
42
+ All server SDKs share the same call shape (`track` / `login` / `profileSet...` / `register`) and map to the matching AE server SDK language:
43
+
44
+ | Language | Dependency (verified) |
45
+ |---|---|
46
+ | Java | `com.sensorsdata.analytics.javasdk:SensorsAnalyticsSDK` (Maven) — also exposes `flush`, `registerSuperProperties` |
47
+ | Python | `github.com/sensorsdata/sa-sdk-python` |
48
+ | Go | `github.com/sensorsdata/sa-sdk-go` |
49
+ | Node.js | `github.com/sensorsdata/sa-sdk-node` — also `registerSuperProperties` |
50
+ | PHP | `github.com/sensorsdata/sa-sdk-php` |
51
+ | Ruby | `github.com/sensorsdata/sa-sdk-ruby` (gem) |
52
+ | C | `github.com/sensorsdata/sa-sdk-c` |
53
+ | C# / .NET | `github.com/sensorsdata/sa-sdk-dotnet` |
54
+ | Lua | `github.com/sensorsdata/sa-sdk-lua` |
55
+
56
+ ## 2. Event mapping rules
57
+
58
+ > **Forward compatibility**: preserve event/property names verbatim (skip snake_case — AE matches names case-sensitively) when historical Sensors Data data has been (or will be) imported into AE offline and must join with new SDK data; transform only hard-constraint violations, matching the names the offline import used. See `mapping-framework.md` §1.
59
+
60
+ - `track(eventName, props)` → `track(snake_case(eventName), props)`. Sensors Data event names are already snake_case by convention; only normalize camelCase/PascalCase if present.
61
+ - Event name: letters / digits / underscore, must start with a letter — same as AE.
62
+ - Reserved prefix `$` marks Sensors **preset properties** (e.g. `$app_version`, `$os`, `$ip`, `$time`, `$url`, `$is_first_day`) and **preset events** (e.g. `$pageview`, `$AppStart`, `$AppViewScreen`, `$AppClick`, `$WebClick`). Both are SDK-provided and must never become custom names: preset properties map to AE `#` preset properties — but only to names in the authoritative AE list (`references/ae-preset-properties.md`); a `$` property with no AE equivalent becomes a normal custom property (snake_case) or is dropped, never a made-up `#` name. Preset events map to AE auto-track or are dropped per §6. Surface each `$`-name mapping to the user for confirmation.
63
+ - Property types inferred per `mapping-framework.md`.
64
+
65
+ ## 3. Identity mapping
66
+
67
+ - `login(id)` / `identify(id)` → AE `login(accountId)` (account_id_source `user_account`).
68
+ - No identity call → `account_id_source = "none"` (guest). Sensors auto-generates a `distinct_id` for anonymous users — normally AE visitor (SDK-managed), not `login`. **Forward compatibility**: map the auto `distinct_id` to AE `#distinct_id` via the AE visitor-id API (`setDistinctId` / `identify`) once at init, before any event; see `mapping-framework.md` §4.
69
+
70
+ ## 4. User property mapping
71
+
72
+ | Source operation | AE method | Notes |
73
+ |---|---|---|
74
+ | `profileSet({k:v})` / `setProfile({k:v})` | `user_set` | overwrite |
75
+ | `profileSetOnce({k:v})` / `setOnceProfile({k:v})` | `user_setOnce` | first-write-wins |
76
+ | `profileAppend(name, v)` / `appendProfile(name, v)` | `user_append` | array append |
77
+ | `profileIncrement(name, n)` / `incrementProfile(name, n)` | `user_add` | numeric accumulate |
78
+ | `profileUnset(name)` / `unsetProfile(name)` | `user_unset` | remove the property value |
79
+ | `deleteProfile(name)` | `needs decision` | removes the property from the user profile entirely (Web/mini-program/Harmony legacy naming); AE has no SDK-side property delete — closest is `user_unset` (removes the value); confirm semantics with user |
80
+
81
+ > `user_append` / `user_unset` are code-level only — they do not enter the AE plan (`update_type` is `user_set` / `user_setOnce` / `user_add`); see `mapping-framework.md` §5.
82
+
83
+ ## 5. Super property mapping
84
+
85
+ Sensors Data `register({k:v})` / `registerSuperProperties({k:v})` (public/super properties) attach to **every event** — they are event properties, never user properties. Map them to AE common event properties (`setSuperProperties`).
86
+
87
+ | Source operation | AE method | Notes |
88
+ |---|---|---|
89
+ | `register({k:v})` / `registerSuperProperties({k:v})` | `set_super_properties` (`setSuperProperties({...})`) | static common event property; lands in `draft.json` `common_event_properties` |
90
+
91
+ > `register` **accumulates** across calls, but AE `setSuperProperties` **overwrites** the whole set each call. Multiple `register` call sites must be merged into a single `setSuperProperties` (or flagged for the user) so earlier keys are not silently dropped.
92
+
93
+ ## 6. Auto-track decision
94
+
95
+ Sensors Data auto-collects preset properties (all `$`-prefixed) and, when enabled, page/app-lifecycle events:
96
+
97
+ | Source auto-track | Decision |
98
+ |---|---|
99
+ | web page view (`$pageview` / `track_pageview`) | map to AE `ta_page_show` switch |
100
+ | app start / install | map to AE `ta_app_start` / `ta_app_install` switch |
101
+ | `sensors.quick('autoTrack')` | a config call enabling Sensors auto-track; drop the call and enable the equivalent AE auto-track switches via init instead |
102
+ | `trackAppInstall()` (Android) / `trackInstallation()` (macOS/tvOS) | preset install events (explicit calls, not auto-track) — map to AE `ta_app_install` switch, or drop since AE auto-tracks install |
103
+ | `$` preset properties | SDK-provided; map to AE `#` preset properties, never create as custom |
104
+
105
+ Enable via the AE SDK init switch, never as manual `track()`.
106
+
107
+ ## 7. Dependency identifiers
108
+
109
+ | Platform | Remove in `switch` mode | Notes |
110
+ |---|---|---|
111
+ | Web | `sensorsdata.min.js` (script tag) / `sensorsdata` (npm) | remove the `sensors.init(...)` snippet too |
112
+ | Android | `com.sensorsdata.analytics.android:sensors-analytics-sdk` | Gradle |
113
+ | iOS | `SensorsAnalyticsSDK` (CocoaPods/SPM) | |
114
+ | Harmony | Harmony SDK (HAR) | |
115
+ | macOS / tvOS | `SensorsAnalyticsSDK` | |
116
+ | C++ | Sensors Analytics C++ SDK | remove from CMake / build config |
117
+ | React Native | `@sensorsdata/analytics` | npm |
118
+ | Flutter | `sensors_analytics` | pubspec |
119
+ | Unity | Sensors Analytics Unity package | remove from the Unity project |
120
+ | Unreal Engine | `unreal-engine-sdk` plugin | |
121
+ | Cocos2d-x | Sensors Analytics Cocos SDK | |
122
+ | Mini Program (WeChat/other) | `sensorsdata.min.js` | |
123
+ | QuickApp / APICloud / uni-app / Weex | per-framework plugin (see §1) | remove from the project config |
124
+ | Egret / LayaAir | Egret / LayaAir SDK plugin | remove from the game project |
125
+ | Server (Java) | `com.sensorsdata.analytics.javasdk:SensorsAnalyticsSDK` | Maven |
126
+ | Server (Python/Go/Node/PHP/Ruby/C/.NET/Lua) | `sa-sdk-<lang>` (see §1 table) | per-language package manager |
127
+
128
+ AE SDK dependency is resolved via the AE wiki (`ae-generate-tracking-code` → `references/sdk-index.md`), not here.
129
+
130
+ ## 8. Official docs
131
+
132
+ - Docs portal: https://manual.sensorsdata.cn/ (per-platform client & server SDK sections)
133
+ - Web API reference (verified): https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_web_api/v0300
134
+ - Android: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_android_basic/v0300
135
+ - iOS: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_ios_use/v0300
136
+ - Harmony: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_harmony_api/v0300
137
+ - React Native: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_rn_api/v0300
138
+ - WeChat Mini Program: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_mp_wechat_api/v0300
139
+ - QuickApp: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_mp_quick_idm/v0300
140
+ - APICloud: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_apicloud/v0300
141
+ - uni-app: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_uni_app/v0300
142
+ - Weex: https://manual.sensorsdata.cn/sa/docs/tech_sdk_client_weex/v0300
143
+ - Egret: https://manual.sensorsdata.cn/sa/docs/integrate_egret_sdk
144
+ - LayaAir: https://manual.sensorsdata.cn/sa/docs/base_api_layaair
145
+ - Server (Java): https://manual.sensorsdata.cn/sa/docs/tech_sdk_server_java_api/v0300
146
+ - Server SDK list: https://manual.sensorsdata.cn/sa/docs/tech_sdk_server/v0300
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ae-project-semantic
3
- description: "Use when generating, testing, submitting, reviewing, or publishing governed project semantic candidates from AE/TE project asset packages. This skill owns progressive asset-scope consent, recommendation quality gates, evidence authority, topic-domain grouping, candidate JSON generation, CLI closed-loop validation, and frontend review acceptance. Do not use it for ordinary analysis questions that only consume already published semantics."
3
+ description: "Use when generating, testing, submitting, reviewing, or publishing governed project semantic candidates from AE project asset packages. This skill owns progressive asset-scope consent, recommendation quality gates, evidence authority, topic-domain grouping, candidate JSON generation, CLI closed-loop validation, and frontend review acceptance. Do not use it for ordinary analysis questions that only consume already published semantics."
4
4
  ---
5
5
 
6
6
  # ae-project-semantic
@@ -34,9 +34,9 @@ ae-cli system <resource> <action> [options]
34
34
 
35
35
  | Command | Risk | Purpose |
36
36
  | --- | --- | --- |
37
- | `+list-member-candidates` | read | List TE company users that can be added. |
37
+ | `+list-member-candidates` | read | List AE company users that can be added. |
38
38
  | `+list-members` | read | List Agent members in the current company. |
39
- | `+add-members` | write | Add one or more TE users, optionally binding a quota rule or creating sandboxes. |
39
+ | `+add-members` | write | Add one or more AE users, optionally binding a quota rule or creating sandboxes. |
40
40
  | `+set-member-status` | write | Enable or disable a member. |
41
41
  | `+set-member-role` | write | Change a non-root member between `agent_admin` and `member`. |
42
42
  | `+remove-member` | high-risk-write | Remove a non-root member. |
@@ -103,7 +103,7 @@ ae-cli system +set-sandbox-enabled --id <sandbox-id> --enabled true
103
103
  ae-cli system +bind-sandbox-user --id <sandbox-id> --user-id <user-id>
104
104
  ```
105
105
 
106
- Use Agent database user IDs from `+list-members`, not TE openIds, for sandbox commands.
106
+ Use Agent database user IDs from `+list-members`, not AE openIds, for sandbox commands.
107
107
 
108
108
  ### Shared Sandbox Tools
109
109
 
@@ -312,7 +312,7 @@ CSV exports require an explicit `--output`. The target is created exclusively: a
312
312
  | `+create-quota-rule` | write | Create a company or user quota rule. |
313
313
  | `+update-quota-rule` | write | Update a quota rule. |
314
314
  | `+remove-quota-rule` | high-risk-write | Delete a quota rule. |
315
- | `+bind-quota-rule-user` | write | Bind a quota rule to a TE user openId. |
315
+ | `+bind-quota-rule-user` | write | Bind a quota rule to a AE user openId. |
316
316
 
317
317
  Examples:
318
318
 
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ae-team
3
3
  version: 1.0.0
4
- description: "AE/TE/ThinkingEngine/ThinkingAI ae-cli manual for AI Agent Team tasks: managing teams (list, create, update, delete, AI-generate, templates) and executing TeamRuns (start, chat, cancel, reply, result, artifacts). Use when the user asks to find a team, run a team task, check run status, retrieve results or artifacts, or set up multi-agent workflows. Must use ae-cli, read the matching references/<command>.md before composing commands, and never guess team IDs, run IDs, config structures, or parameter formats."
4
+ description: "ThinkingAI AE (Agentic Engine) ae-cli manual for AI Agent Team tasks: managing teams (list, create, update, delete, AI-generate, templates) and executing TeamRuns (start, chat, cancel, reply, result, artifacts). Use when the user asks to find a team, run a team task, check run status, retrieve results or artifacts, or set up multi-agent workflows. Must use ae-cli, read the matching references/<command>.md before composing commands, and never guess team IDs, run IDs, config structures, or parameter formats."
5
5
  ---
6
6
 
7
7
  # ae-team
@@ -12,7 +12,7 @@ description: "AE/TE/ThinkingEngine/ThinkingAI ae-cli manual for AI Agent Team ta
12
12
 
13
13
  ## Global AE CLI Rules
14
14
 
15
- AE CLI (`ae-cli`) is the command-line tool for the AE / TE / ThinkingEngine analysis platform.
15
+ AE CLI (`ae-cli`) is the command-line tool for the AE (Agentic Engine) analysis platform.
16
16
 
17
17
  Global parameters:
18
18
 
@@ -12,7 +12,7 @@ command with that version substituted; do not install automatically:
12
12
  ```bash
13
13
  # Customer/public distribution
14
14
  npm install -g @thinkingai/ae-cli@<supported-version>
15
- # Internal ThinkingData distribution
15
+ # Internal ThinkingAI distribution
16
16
  npm install -g @tant/ae-cli@<supported-version> --registry=https://npm.thinkingdata.cn:3443
17
17
  ```
18
18
 
@@ -1,72 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import {
3
- dryRunCapability,
4
- executeCapabilityWithEnvelope,
5
- validateCapability
6
- } from "./chunk-QJQZH5GQ.js";
7
- import {
8
- resolveGatewayDomain
9
- } from "./chunk-TKHSULJT.js";
10
- import {
11
- withOutputMetadata
12
- } from "./chunk-CZU3V3DQ.js";
13
-
14
- // src/core/capability-command.ts
15
- import { randomBytes } from "crypto";
16
- function createCapabilityCommand(config) {
17
- return {
18
- service: config.cliService,
19
- resource: config.resource,
20
- command: config.command,
21
- capabilityId: config.capabilityId,
22
- description: config.description,
23
- flags: config.flags,
24
- risk: config.risk,
25
- validate: config.validate,
26
- preflight: (ctx) => {
27
- config.buildInput(ctx);
28
- },
29
- validateInput: async (ctx) => {
30
- const gatewayDomain = resolveGatewayDomain(config.cliService, config.gatewayDomain);
31
- const requestHost = config.requestHost ?? ctx.host();
32
- const input = withLifecycleRequestId(config, config.buildInput(ctx));
33
- return validateCapability(requestHost, gatewayDomain, config.capabilityId, input);
34
- },
35
- dryRun: async (ctx) => {
36
- const gatewayDomain = resolveGatewayDomain(config.cliService, config.gatewayDomain);
37
- const requestHost = config.requestHost ?? ctx.host();
38
- const input = withLifecycleRequestId(config, config.buildInput(ctx));
39
- return dryRunCapability(requestHost, gatewayDomain, config.capabilityId, input);
40
- },
41
- execute: async (ctx) => {
42
- const gatewayDomain = resolveGatewayDomain(config.cliService, config.gatewayDomain);
43
- const requestHost = config.requestHost ?? ctx.host();
44
- const input = withLifecycleRequestId(config, config.buildInput(ctx));
45
- announceDispatch(config.capabilityId, input);
46
- const result = await executeCapabilityWithEnvelope(requestHost, gatewayDomain, config.capabilityId, input);
47
- const data = config.postProcess ? await config.postProcess(result.data, input, ctx) : result.data;
48
- return withOutputMetadata(data, result.meta);
49
- }
50
- };
51
- }
52
- function withLifecycleRequestId(config, input) {
53
- if (!config.flags.some((flag) => flag.name === "request-id")) {
54
- return input;
55
- }
56
- const supplied = input.request_id;
57
- const requestId = typeof supplied === "string" && supplied.length > 0 ? supplied : `cli_${randomBytes(16).toString("hex")}`;
58
- return { ...input, request_id: requestId };
59
- }
60
- function announceDispatch(capabilityId, input) {
61
- if (typeof input.request_id !== "string") {
62
- return;
63
- }
64
- process.stderr.write(
65
- `[ae-cli] dispatching capability=${capabilityId} request_id=${input.request_id}
66
- `
67
- );
68
- }
69
-
70
- export {
71
- createCapabilityCommand
72
- };
@@ -1,184 +0,0 @@
1
- # Analysis metadata resolution
2
-
3
- Enter this workflow through either path:
4
-
5
- 1. `analysis adhoc run|export`, report create, or report update fails with `AI_QP_COMPILE_FAILED` and its metadata errors contain the structured fields below.
6
- 2. Ordinary event, property, metric, cluster, or tag metadata discovery has completed two successful remote miss rounds in the same host, project, authenticated principal, and Agent conversation, and a third remote discovery round would otherwise be needed.
7
-
8
- For the structured compiler path, the metadata errors contain:
9
-
10
- - `path`
11
- - `slot_kind`
12
- - `raw_value`
13
- - `allowed_resource_types`
14
- - `search_targets`
15
- - `candidates`
16
- - `next_action`
17
-
18
- The Common compiler returns every unresolved slot from the same compile attempt. Treat that complete error array as one resolution plan. Do not run the structured path independently for each `path`.
19
-
20
- `allowed_resource_types` and `search_targets` are authoritative for their exact paths. Do not add, remove, prioritize, or reinterpret resource types. `search_targets[].constraints` must be applied when filtering local rows.
21
-
22
- ## One catalog for the conversation
23
-
24
- The complete analysis metadata catalog contains these resource types in one JSONL file:
25
-
26
- - `event`
27
- - `metric`
28
- - `event_property`
29
- - `user_property`
30
- - `cluster`
31
- - `tag`
32
-
33
- Use the current Agent conversation context as the catalog base:
34
-
35
- 1. If the Agent host exposes a private artifact or workspace directory scoped to the current conversation, use it as `<agent-conversation-root>`.
36
- 2. Use:
37
-
38
- ```text
39
- <agent-conversation-root>/ae-cli/analysis-metadata/
40
- ```
41
-
42
- Do not assume a product-specific environment variable, Agent implementation, or launcher contract.
43
-
44
- If the host has no stable conversation-scoped directory, create one private fallback root once:
45
-
46
- ```bash
47
- mktemp -d "${TMPDIR:-/tmp}/ae-cli-analysis-metadata.XXXXXX"
48
- ```
49
-
50
- Retain that absolute path in the current conversation state. Never create a new root per error, command, or turn.
51
-
52
- Normalize the AE host to its lowercase URL origin without a trailing slash. Set `host-key` to the first 16 lowercase hex characters of the origin SHA-256. Use:
53
-
54
- ```text
55
- <session-root>/<host-key>/project-<project_id>/catalog.jsonl
56
- <session-root>/<host-key>/project-<project_id>/catalog.meta.json
57
- ```
58
-
59
- Create the directory with mode `0700`. Do not put a token, user name, or user ID in its path.
60
-
61
- Before reuse, require both files and verify:
62
-
63
- - `schema_version=1`
64
- - `resource_type=analysis_metadata`
65
- - `complete=true`
66
- - `host` and `project_id` match the current request
67
- - `principal_fingerprint` is present
68
- - JSONL SHA-256 equals `content_sha256`
69
- - the authenticated principal has not changed during the conversation
70
-
71
- If any check fails, discard the cached pair for this workflow and fetch it again. A `.part` file or JSONL without the completed metadata sidecar is never valid.
72
-
73
- ## Ordinary discovery workflow
74
-
75
- 1. Keep one miss budget for the current host, project, authenticated principal, and Agent conversation.
76
- 2. One ordinary discovery round is one successful remote event, property, metric, cluster, or tag list/search request. Put the current phrase and its useful synonyms in one `--queries` array instead of issuing one request per synonym.
77
- 3. A round consumes one miss only when it returns no confirmable candidate. A plausible candidate stops discovery and requires explicit user confirmation; it is not a miss.
78
- 4. Project lookup, exact `get`, filter-value lookup, and data queries do not consume this metadata-discovery budget. Validation, permission, network, and server errors are failures, do not consume a miss, and must not trigger the full-catalog fallback.
79
- 5. After at most two ordinary miss rounds, do not issue a third resource-specific list/search. The third remote metadata-discovery round must be exactly one aggregate search using every accumulated deduplicated query and the union of applicable resource types:
80
-
81
- ```bash
82
- ae-cli analysis-meta catalog list \
83
- --project-id <project_id> \
84
- --queries '["<all accumulated deduplicated queries>"]' \
85
- --resource-types '["<union of applicable resource types>"]' \
86
- --limit-per-type 20
87
- ```
88
-
89
- 6. If the aggregate response contains a confirmable candidate, stop and ask for confirmation. If it remains unresolved or returns `has_more=true` without a candidate, download the complete catalog exactly once:
90
-
91
- ```bash
92
- ae-cli analysis-meta catalog export \
93
- --project-id <project_id> \
94
- --output "<catalog_dir>/catalog.jsonl"
95
- ```
96
-
97
- 7. Search the complete JSONL locally, return only a small candidate subset to model context, and require confirmation before binding. A local no-match is a complete negative result for that snapshot.
98
- 8. Once the valid complete catalog exists, use it for every later metadata discovery in the same scope. Do not call online resource-specific metadata list/search commands or `analysis-meta catalog list|export` again. An exact `get` for details not present in the catalog remains outside the discovery budget.
99
-
100
- This caps ordinary online metadata discovery at three successful remote rounds before the full-catalog fallback becomes eligible: at most two resource-specific misses followed by one aggregate catalog search. Errors never advance that counter.
101
-
102
- ## Compile-wide workflow
103
-
104
- 1. Read the complete compiler error array.
105
- 2. Keep existing compiler `candidates` for their exact paths. They require confirmation and no metadata lookup unless the user explicitly rejects every candidate for that path. After an explicit reject-all response, discard that rejected set and treat the path as requiring `next_action=search_candidates`, using its existing `raw_value`, `allowed_resource_types`, and `search_targets`.
106
- 3. Collect every empty-candidate path with `next_action=search_candidates`.
107
- 4. If at least one such path exists, check the one conversation catalog above.
108
- 5. If a valid complete catalog exists, skip every online metadata call and search it locally as described below.
109
- 6. If no valid catalog exists:
110
- - Generate useful synonyms for every empty-candidate path from its `raw_value` and `slot_kind`.
111
- - Deduplicate the synonyms from all paths into one `queries` array.
112
- - Take the union of those paths' `allowed_resource_types` into one `resource-types` array. Do not add other types.
113
- - Invoke exactly one aggregate online search:
114
-
115
- ```bash
116
- ae-cli analysis-meta catalog list \
117
- --project-id <project_id> \
118
- --queries '["<all deduplicated synonyms>"]' \
119
- --resource-types '["<union of allowed resource types>"]' \
120
- --limit-per-type 20
121
- ```
122
-
123
- 7. Split the online rows back across paths:
124
- - Accept a row for a path only when its `resource_type` is allowed by that path.
125
- - Apply that path's `search_targets[].constraints`.
126
- - Prefer the server-provided exact matches before contained matches.
127
- - Deduplicate by `resource_type + resource_key`.
128
- 8. If every searched path now has at least one candidate, skip the full catalog and continue to confirmation.
129
- 9. If any searched path still has no candidate, download the complete catalog exactly once:
130
-
131
- ```bash
132
- ae-cli analysis-meta catalog export \
133
- --project-id <project_id> \
134
- --output "<catalog_dir>/catalog.jsonl"
135
- ```
136
-
137
- 10. Search the one JSONL locally for every path still without a candidate:
138
- - Generate useful synonyms from that path's `raw_value` and `slot_kind`.
139
- - Filter rows by `search_targets[].resource_type`.
140
- - Apply every target `constraints` field.
141
- - Prefer exact `resource_key`, then exact `display_name`, then contained display name or remark.
142
- - Deduplicate by `resource_type + resource_key`.
143
- - Return only a small candidate subset to model context; never read the full catalog into context.
144
- 11. Aggregate candidates for all paths and ask the user to confirm each selected candidate in one interaction.
145
- 12. Keep the original definition unchanged. Build one `resolutions` object keyed by compiler path and rerun the original command once with `--resolutions`.
146
-
147
- A reject-all response is a state transition, not task cancellation. Run the aggregate online search at most once for the rejected path set, then use the same complete-catalog fallback above if needed. Never repeat candidates the user already rejected. If the complete catalog has no different candidate, ask for an exact canonical name or a changed business definition.
148
-
149
- Do not call event, property, metric, cluster, or tag list commands after entering the structured workflow. Do not run `--queries` synonym rounds: the aggregate online search is one call for the whole compile error array, never one call per path or resource type. The unified catalog capability replaces both repeated online searches and per-resource full exports.
150
-
151
- Once a valid complete catalog exists for the current host, project, principal, and conversation, never call `analysis-meta catalog list` again in that scope, and never call `analysis-meta catalog export` again either. Search the complete local snapshot instead; a local no-match is a complete negative result for this snapshot.
152
-
153
- An online response with `has_more=true` is bounded discovery, not a complete negative result. If any path remains unresolved after that response, use the one complete-catalog fallback instead of paging or broadening online queries. Permission, network, and server errors are failures, not empty search results, and must not trigger the full-catalog fallback.
154
-
155
- ## Confirmation and deterministic binding
156
-
157
- Never use a compiler or local candidate without explicit user confirmation.
158
-
159
- For each confirmed path, pass:
160
-
161
- ```json
162
- {
163
- "resolutions": {
164
- "request.metrics[0].event": {
165
- "raw_value": "付费事件",
166
- "resource_type": "event",
167
- "resource_key": "payment"
168
- }
169
- }
170
- }
171
- ```
172
-
173
- The server verifies that:
174
-
175
- - the path still exists in the unchanged definition;
176
- - `raw_value` still matches that path;
177
- - `resource_type` is allowed for that path;
178
- - `resource_key` is currently accessible in the project and identity scope.
179
-
180
- Handle `RESOLUTION_STALE`, `RESOLUTION_TYPE_NOT_ALLOWED`, and `RESOLUTION_PATH_INVALID` as deterministic validation failures. Do not retry the same resolution unchanged.
181
-
182
- If the complete local catalog has no candidate for a path, ask the user for an exact canonical name or a different business definition. Never fabricate an entity.
183
-
184
- Permission, network, and server errors are not empty catalogs. Report them and do not publish or reuse a failed catalog.