@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
@@ -1,72 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import {
3
- resolveGatewayDomain
4
- } from "./chunk-TKHSULJT.js";
5
- import {
6
- withOutputMetadata
7
- } from "./chunk-KEWVSO64.js";
8
- import {
9
- dryRunCapability,
10
- executeCapabilityWithEnvelope,
11
- validateCapability
12
- } from "./chunk-GJXRF7Y6.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,318 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import {
3
- getActiveHost,
4
- getConfigDir,
5
- normalizeUrl,
6
- safeJsonParse
7
- } from "./chunk-KZ6ZHF5J.js";
8
- import {
9
- logger
10
- } from "./chunk-FR2EDAQM.js";
11
-
12
- // src/core/secure-store.ts
13
- import crypto from "crypto";
14
- import fs from "fs";
15
- import os from "os";
16
- import path from "path";
17
- import { execFileSync } from "child_process";
18
- var STORE_DIR_SUFFIX = "secure-tokens";
19
- var SCRYPT_SALT = Buffer.from("ae-cli-secure-store-v1");
20
- var SCRYPT_N = 16384;
21
- var SCRYPT_R = 8;
22
- var SCRYPT_P = 1;
23
- var KEY_LEN = 32;
24
- var NONCE_LEN = 12;
25
- var REFRESH_TOKEN_PATH = "/v1/oauth/refreshForToken";
26
- function getMachineId() {
27
- if (process.platform === "darwin") {
28
- try {
29
- const out = execFileSync(
30
- "ioreg",
31
- ["-rd1", "-c", "IOPlatformExpertDevice"],
32
- { encoding: "utf8", timeout: 3e3 }
33
- );
34
- const m = out.match(/IOPlatformUUID.*?=.*?"([0-9A-F-]{36})"/i);
35
- if (m?.[1]) return `darwin:${m[1]}`;
36
- } catch {
37
- }
38
- }
39
- if (process.platform === "linux") {
40
- for (const p of ["/etc/machine-id", "/var/lib/dbus/machine-id"]) {
41
- try {
42
- const id = fs.readFileSync(p, "utf8").trim();
43
- if (id) return `linux:${id}`;
44
- } catch {
45
- }
46
- }
47
- }
48
- if (process.platform === "win32") {
49
- try {
50
- const out = execFileSync(
51
- "reg",
52
- ["query", "HKLM\\SOFTWARE\\Microsoft\\Cryptography", "/v", "MachineGuid"],
53
- { encoding: "utf8", timeout: 3e3 }
54
- );
55
- const m = out.match(/MachineGuid\s+REG_SZ\s+([0-9a-f-]+)/i);
56
- if (m?.[1]) return `win32:${m[1]}`;
57
- } catch {
58
- }
59
- }
60
- const fallback = `${os.homedir()}|${os.hostname()}|${os.platform()}`;
61
- logger.warn("secure-store: using fallback machine-id (HOME+hostname+platform)");
62
- return `fallback:${fallback}`;
63
- }
64
- var _cachedMachineId;
65
- function getCachedMachineId() {
66
- if (!_cachedMachineId) _cachedMachineId = getMachineId();
67
- return _cachedMachineId;
68
- }
69
- function deriveKey(machineId) {
70
- return crypto.scryptSync(machineId, SCRYPT_SALT, KEY_LEN, {
71
- N: SCRYPT_N,
72
- r: SCRYPT_R,
73
- p: SCRYPT_P
74
- });
75
- }
76
- var _cachedKey;
77
- function getKey() {
78
- if (!_cachedKey) _cachedKey = deriveKey(getCachedMachineId());
79
- return _cachedKey;
80
- }
81
- function encrypt(plaintext) {
82
- const key = getKey();
83
- const nonce = crypto.randomBytes(NONCE_LEN);
84
- const cipher = crypto.createCipheriv("aes-256-gcm", key, nonce);
85
- const encrypted = Buffer.concat([cipher.update(plaintext, "utf8"), cipher.final()]);
86
- const tag = cipher.getAuthTag();
87
- return {
88
- nonce: nonce.toString("hex"),
89
- tag: tag.toString("hex"),
90
- data: encrypted.toString("hex")
91
- };
92
- }
93
- function decrypt(blob) {
94
- const key = getKey();
95
- const nonce = Buffer.from(blob.nonce, "hex");
96
- const tag = Buffer.from(blob.tag, "hex");
97
- const data = Buffer.from(blob.data, "hex");
98
- const decipher = crypto.createDecipheriv("aes-256-gcm", key, nonce);
99
- decipher.setAuthTag(tag);
100
- const decrypted = Buffer.concat([decipher.update(data), decipher.final()]);
101
- return decrypted.toString("utf8");
102
- }
103
- function storeDir() {
104
- return path.join(getConfigDir(), STORE_DIR_SUFFIX);
105
- }
106
- function tokenFilePath(host) {
107
- const safe = host.replace(/^https?:\/\//, "").replace(/[^a-zA-Z0-9._-]/g, "_");
108
- return path.join(storeDir(), `${safe}.enc.json`);
109
- }
110
- function ensureStoreDir() {
111
- const dir = storeDir();
112
- if (!fs.existsSync(dir)) {
113
- fs.mkdirSync(dir, { recursive: true });
114
- try {
115
- fs.chmodSync(dir, 448);
116
- } catch {
117
- }
118
- }
119
- }
120
- function save(host, payload) {
121
- ensureStoreDir();
122
- const plaintext = JSON.stringify(payload);
123
- const blob = encrypt(plaintext);
124
- const filePath = tokenFilePath(host);
125
- fs.writeFileSync(filePath, JSON.stringify(blob, null, 2), { encoding: "utf8" });
126
- try {
127
- fs.chmodSync(filePath, 384);
128
- } catch {
129
- }
130
- logger.info(`secure-store: token saved for ${host}`);
131
- }
132
- function load(host) {
133
- const filePath = tokenFilePath(host);
134
- if (!fs.existsSync(filePath)) return null;
135
- try {
136
- const raw = fs.readFileSync(filePath, "utf8");
137
- const blob = safeJsonParse(raw);
138
- if (!blob?.nonce || !blob?.tag || !blob?.data) {
139
- logger.warn(`secure-store: malformed blob for ${host}`);
140
- return null;
141
- }
142
- const plaintext = decrypt(blob);
143
- return JSON.parse(plaintext);
144
- } catch (e) {
145
- logger.error(`secure-store: decrypt failed for ${host}: ${e.message}`);
146
- return null;
147
- }
148
- }
149
- function clear(host) {
150
- const filePath = tokenFilePath(host);
151
- if (fs.existsSync(filePath)) {
152
- fs.rmSync(filePath);
153
- logger.info(`secure-store: token cleared for ${host}`);
154
- }
155
- }
156
- async function getValidAccessToken(host) {
157
- const payload = load(host);
158
- if (!payload) {
159
- throw new SecureStoreAuthError(
160
- `No stored token for ${host}. Please run: ae-cli auth login`
161
- );
162
- }
163
- const expiresAt = new Date(payload.accessExpiresAt).getTime();
164
- const now = Date.now();
165
- const needsRefresh = expiresAt - now < 6e4;
166
- if (!needsRefresh) {
167
- return payload.accessToken;
168
- }
169
- if (payload.refreshToken) {
170
- logger.info(`secure-store: access token past local expiry for ${host}, refreshing\u2026`);
171
- const refreshed = await doRefresh(host, payload.refreshToken);
172
- save(host, { ...refreshed, cliToken: payload.cliToken });
173
- logger.info(`secure-store: token refreshed for ${host}`);
174
- return refreshed.accessToken;
175
- }
176
- logger.info(`secure-store: ${host} past static local expiry, no refresh token \u2014 returning stored token, server validates (lazy)`);
177
- return payload.accessToken;
178
- }
179
- function loadCliToken(host) {
180
- return load(host)?.cliToken ?? null;
181
- }
182
- async function doRefresh(host, refreshToken) {
183
- const base = host.replace(/\/+$/, "");
184
- const url = `${base}${REFRESH_TOKEN_PATH}`;
185
- let resp;
186
- try {
187
- resp = await fetch(url, {
188
- method: "POST",
189
- headers: { "Content-Type": "application/json" },
190
- body: JSON.stringify({ refreshToken })
191
- });
192
- } catch (e) {
193
- throw new SecureStoreAuthError(
194
- `Token refresh network error for ${host}: ${e.message}. Please run: ae-cli auth login`
195
- );
196
- }
197
- if (!resp.ok) {
198
- throw new SecureStoreAuthError(
199
- `Token refresh failed (HTTP ${resp.status}) for ${host}. Please run: ae-cli auth login`
200
- );
201
- }
202
- let body;
203
- try {
204
- body = safeJsonParse(await resp.text());
205
- } catch {
206
- throw new SecureStoreAuthError(
207
- `Token refresh returned invalid JSON for ${host}. Please run: ae-cli auth login`
208
- );
209
- }
210
- if (body.return_code !== 0) {
211
- throw new SecureStoreAuthError(
212
- `Token refresh error (${body.return_code}: ${body.return_message ?? "unknown"}) for ${host}. Please run: ae-cli auth login`
213
- );
214
- }
215
- const d = body.data;
216
- const newAccess = d?.accessToken ?? d?.access_token ?? "";
217
- const newRefresh = d?.refreshToken ?? d?.refresh_token ?? refreshToken;
218
- const expiresIn = d?.expiresIn ?? d?.expires_in ?? 72e3;
219
- if (!newAccess) {
220
- throw new SecureStoreAuthError(
221
- `Token refresh returned empty accessToken for ${host}. Please run: ae-cli auth login`
222
- );
223
- }
224
- return {
225
- accessToken: newAccess,
226
- refreshToken: newRefresh,
227
- accessExpiresAt: new Date(Date.now() + expiresIn * 1e3).toISOString()
228
- };
229
- }
230
- var SecureStoreAuthError = class extends Error {
231
- constructor(message) {
232
- super(message);
233
- this.name = "SecureStoreAuthError";
234
- }
235
- };
236
-
237
- // src/core/host-guidance.ts
238
- var AE_TRIAL_URL = "https://thinkingai.cn/request-demo";
239
- var AE_HOST_SETUP_COMMAND = "ae-cli config set-host <url>";
240
- function missingAeHostHint(additionalAction) {
241
- const actions = [
242
- `If your organization already uses AgenticEngine, ask your administrator for its AE URL, then run: ${AE_HOST_SETUP_COMMAND}.`,
243
- `If you do not have an AgenticEngine environment, request a trial: ${AE_TRIAL_URL}`
244
- ];
245
- if (additionalAction) actions.push(additionalAction);
246
- return actions.join(" ");
247
- }
248
- function missingAeHostGuidance() {
249
- return {
250
- configure_host: AE_HOST_SETUP_COMMAND,
251
- existing_customer: "Ask your AgenticEngine administrator for the AE environment URL.",
252
- request_trial_url: AE_TRIAL_URL
253
- };
254
- }
255
-
256
- // src/core/auth.ts
257
- function resolveHost(hostOverride) {
258
- if (hostOverride) return normalizeUrl(hostOverride);
259
- return getActiveHost();
260
- }
261
- async function validateToken(token, hostUrl) {
262
- const url = `${hostUrl}/v1/oauth/checkToken`;
263
- try {
264
- const resp = await fetch(url, {
265
- method: "POST",
266
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
267
- body: new URLSearchParams({ accessToken: token }).toString()
268
- });
269
- const respJson = safeJsonParse(await resp.text());
270
- return respJson?.return_code === 0;
271
- } catch {
272
- return false;
273
- }
274
- }
275
- function invalidateAccessTokenForRetry(hostUrl) {
276
- const payload = load(hostUrl);
277
- if (!payload) return;
278
- save(hostUrl, { ...payload, accessExpiresAt: (/* @__PURE__ */ new Date(0)).toISOString() });
279
- logger.info(`auth: marked access token stale for retry on ${hostUrl}`);
280
- }
281
- async function getToken(hostUrl) {
282
- if (!hostUrl) {
283
- throw new Error(
284
- `No AE host configured.
285
- ` + missingAeHostHint()
286
- );
287
- }
288
- try {
289
- const secureToken = await getValidAccessToken(hostUrl);
290
- logger.info(`Using secure-store token for ${hostUrl}`);
291
- return secureToken;
292
- } catch (e) {
293
- if (e instanceof SecureStoreAuthError) {
294
- logger.info(`secure-store: ${e.message}`);
295
- } else {
296
- logger.warn(`secure-store unexpected error: ${e.message}`);
297
- }
298
- }
299
- throw new Error(
300
- `Cannot obtain token for ${hostUrl}.
301
- Run: ae-cli auth login (device code flow, cross-platform)`
302
- );
303
- }
304
-
305
- export {
306
- save,
307
- load,
308
- clear,
309
- loadCliToken,
310
- SecureStoreAuthError,
311
- AE_TRIAL_URL,
312
- missingAeHostHint,
313
- missingAeHostGuidance,
314
- resolveHost,
315
- validateToken,
316
- invalidateAccessTokenForRetry,
317
- getToken
318
- };
@@ -1,326 +0,0 @@
1
- import { createRequire as __createRequire } from 'node:module'; const require = __createRequire(import.meta.url);
2
- import {
3
- SecureStoreAuthError,
4
- getToken,
5
- load,
6
- loadCliToken,
7
- save
8
- } from "./chunk-O6K2ODUE.js";
9
- import {
10
- getActiveHost,
11
- getConfigDir,
12
- getFallbackCliToken,
13
- listHosts,
14
- normalizeUrl,
15
- safeJsonParse,
16
- safeReadJsonFile
17
- } from "./chunk-KZ6ZHF5J.js";
18
- import {
19
- PermissionError
20
- } from "./chunk-533JK3YX.js";
21
- import {
22
- logger
23
- } from "./chunk-FR2EDAQM.js";
24
-
25
- // src/core/cli-token.ts
26
- import fs from "fs";
27
- import path from "path";
28
- var CLI_TOKEN_GENERATE_PATH = "/v1/ta/cli/token/generate";
29
- var CLI_TOKEN_RENEW_PATH = "/v1/ta/cli/token/renew";
30
- var CLI_TOKEN_VALIDATE_PATH = "/v1/ta/cli/token/validate";
31
- var CliTokenValidationUnavailableError = class extends Error {
32
- constructor(message) {
33
- super(message);
34
- this.name = "CliTokenValidationUnavailableError";
35
- }
36
- };
37
- function isExplicitCliTokenRejection(data, responseText) {
38
- const code = String(data?.code ?? data?.error?.code ?? "");
39
- const message = String(data?.return_message ?? data?.message ?? data?.error?.message ?? responseText);
40
- return /cli[_-]?token[_-]?(invalid|expired)/i.test(code) || /cli[-_\s]?token.*\b(invalid|expired)\b/i.test(message) || /\b(invalid|expired)\b.*cli[-_\s]?token/i.test(message);
41
- }
42
- var _cliTokenCache = /* @__PURE__ */ new Map();
43
- var _renewedLocalDateByHost = /* @__PURE__ */ new Map();
44
- var _renewInFlightByHost = /* @__PURE__ */ new Map();
45
- function renewHostKey(hostUrl) {
46
- return normalizeUrl(hostUrl);
47
- }
48
- function renewStateFilePath() {
49
- return path.join(getConfigDir(), "cli-token-renew.json");
50
- }
51
- function localRenewDate(now = /* @__PURE__ */ new Date()) {
52
- const y = now.getFullYear();
53
- const m = String(now.getMonth() + 1).padStart(2, "0");
54
- const d = String(now.getDate()).padStart(2, "0");
55
- return `${y}-${m}-${d}`;
56
- }
57
- function loadRenewStore() {
58
- try {
59
- const file = renewStateFilePath();
60
- if (!fs.existsSync(file)) return {};
61
- const data = safeReadJsonFile(file);
62
- if (!data || typeof data !== "object" || Array.isArray(data)) return {};
63
- return data;
64
- } catch {
65
- return {};
66
- }
67
- }
68
- function saveRenewStore(store) {
69
- const dir = getConfigDir();
70
- if (!fs.existsSync(dir)) fs.mkdirSync(dir, { recursive: true });
71
- const file = renewStateFilePath();
72
- if (Object.keys(store).length === 0) {
73
- try {
74
- fs.unlinkSync(file);
75
- } catch {
76
- }
77
- return;
78
- }
79
- fs.writeFileSync(file, JSON.stringify(store, null, 2), { encoding: "utf8" });
80
- try {
81
- fs.chmodSync(file, 384);
82
- } catch {
83
- }
84
- }
85
- function getPersistedRenewDate(hostUrl) {
86
- const key = renewHostKey(hostUrl);
87
- const store = loadRenewStore();
88
- return store[key]?.date ?? (key !== hostUrl ? store[hostUrl]?.date : void 0) ?? null;
89
- }
90
- function markRenewSucceeded(hostUrl, date) {
91
- const key = renewHostKey(hostUrl);
92
- _renewedLocalDateByHost.set(key, date);
93
- const store = loadRenewStore();
94
- if (key !== hostUrl && store[hostUrl]) {
95
- delete store[hostUrl];
96
- }
97
- store[key] = { date };
98
- saveRenewStore(store);
99
- }
100
- function clearRenewState(hostUrl) {
101
- if (hostUrl) {
102
- const key = renewHostKey(hostUrl);
103
- _renewedLocalDateByHost.delete(key);
104
- _renewInFlightByHost.delete(key);
105
- if (key !== hostUrl) {
106
- _renewedLocalDateByHost.delete(hostUrl);
107
- _renewInFlightByHost.delete(hostUrl);
108
- }
109
- const store = loadRenewStore();
110
- let changed = false;
111
- for (const k of /* @__PURE__ */ new Set([key, hostUrl])) {
112
- if (store[k]) {
113
- delete store[k];
114
- changed = true;
115
- }
116
- }
117
- if (changed) {
118
- saveRenewStore(store);
119
- }
120
- return;
121
- }
122
- _renewedLocalDateByHost.clear();
123
- _renewInFlightByHost.clear();
124
- saveRenewStore({});
125
- }
126
- async function generateCliToken(hostUrl, accessTokenOverride) {
127
- const accessToken = accessTokenOverride ?? await getToken(hostUrl);
128
- const base = hostUrl.replace(/\/+$/, "");
129
- const url = `${base}${CLI_TOKEN_GENERATE_PATH}`;
130
- const resp = await fetch(url, {
131
- method: "GET",
132
- headers: {
133
- "Authorization": `bearer ${accessToken}`
134
- }
135
- });
136
- if (!resp.ok) {
137
- if (resp.status === 403) {
138
- const text = await resp.text();
139
- let body = {};
140
- try {
141
- body = text ? safeJsonParse(text) : {};
142
- } catch {
143
- }
144
- const message = body.message ?? body.return_message ?? "CLI access is disabled for this account.";
145
- const code = body.code ?? (String(message).includes("CLI_ACCESS_DISABLED") ? "CLI_ACCESS_DISABLED" : void 0);
146
- throw new PermissionError(message, code, body.hint);
147
- }
148
- throw new Error(`CLI token generate HTTP error: ${resp.status} ${resp.statusText}`);
149
- }
150
- const data = safeJsonParse(await resp.text());
151
- if (data.return_code !== 0) {
152
- const message = data.return_message || data.message || "unknown";
153
- if (data.code === "CLI_ACCESS_DISABLED" || String(message).includes("CLI_ACCESS_DISABLED")) {
154
- throw new PermissionError(message, "CLI_ACCESS_DISABLED", data.hint);
155
- }
156
- throw new Error(`CLI token generate error: ${message} (code: ${data.return_code})`);
157
- }
158
- const cliToken = data.data?.userSecret;
159
- if (!cliToken) {
160
- throw new Error("CLI token generate error: empty userSecret in response");
161
- }
162
- return cliToken;
163
- }
164
- async function validateCliTokenOnServer(hostUrl, cliToken) {
165
- const base = hostUrl.replace(/\/+$/, "");
166
- const url = `${base}${CLI_TOKEN_VALIDATE_PATH}`;
167
- let resp;
168
- try {
169
- resp = await fetch(url, {
170
- method: "GET",
171
- headers: {
172
- Accept: "application/json",
173
- "cli-token": cliToken
174
- }
175
- });
176
- } catch (e) {
177
- throw new CliTokenValidationUnavailableError(`Unable to validate CLI token for ${hostUrl}: ${e.message}`);
178
- }
179
- const responseText = await resp.text();
180
- let data;
181
- try {
182
- data = safeJsonParse(responseText);
183
- } catch {
184
- data = void 0;
185
- }
186
- if (isExplicitCliTokenRejection(data, responseText)) {
187
- throw new SecureStoreAuthError(
188
- `CLI token is invalid or expired for ${hostUrl}. Run: ae-cli auth logout --host ${hostUrl}, then ae-cli auth login --host ${hostUrl}`
189
- );
190
- }
191
- if (!resp.ok) {
192
- throw new CliTokenValidationUnavailableError(
193
- `CLI token validation is unavailable for ${hostUrl} (HTTP ${resp.status} ${resp.statusText})`
194
- );
195
- }
196
- if (data?.return_code !== 0) {
197
- throw new CliTokenValidationUnavailableError(`CLI token validation returned an unsupported response for ${hostUrl}`);
198
- }
199
- }
200
- async function renewCliTokenOnServer(hostUrl, cliToken) {
201
- const base = hostUrl.replace(/\/+$/, "");
202
- const url = new URL(`${base}${CLI_TOKEN_RENEW_PATH}`);
203
- url.searchParams.set("cli-token", cliToken);
204
- const headers = {
205
- Accept: "application/json"
206
- };
207
- try {
208
- const accessToken = await getToken(hostUrl);
209
- if (accessToken) {
210
- headers.Authorization = `bearer ${accessToken}`;
211
- }
212
- } catch {
213
- }
214
- const resp = await fetch(url.toString(), { method: "GET", headers });
215
- const text = await resp.text();
216
- const data = safeJsonParse(text);
217
- if (!resp.ok) {
218
- throw new Error(`CLI token renew HTTP error: ${resp.status} ${resp.statusText}`);
219
- }
220
- if (data?.return_code !== void 0 && data.return_code !== 0) {
221
- throw new Error(`CLI token renew error: ${data.return_message || "unknown"} (code: ${data.return_code})`);
222
- }
223
- }
224
- async function maybeRenewCliTokenDaily(hostUrl, cliToken) {
225
- const hostKey = renewHostKey(hostUrl);
226
- const today = localRenewDate();
227
- if (_renewedLocalDateByHost.get(hostKey) === today) {
228
- return;
229
- }
230
- if (getPersistedRenewDate(hostUrl) === today) {
231
- _renewedLocalDateByHost.set(hostKey, today);
232
- return;
233
- }
234
- const existing = _renewInFlightByHost.get(hostKey);
235
- if (existing) {
236
- await existing;
237
- return;
238
- }
239
- const attempt = (async () => {
240
- try {
241
- await renewCliTokenOnServer(hostUrl, cliToken);
242
- markRenewSucceeded(hostUrl, today);
243
- logger.info(`cli-token: renewed for ${hostKey} (local day ${today})`);
244
- } catch (e) {
245
- logger.warn(`cli-token: renew failed for ${hostKey}: ${e?.message || e}; business call proceeds with cached token`);
246
- } finally {
247
- _renewInFlightByHost.delete(hostKey);
248
- }
249
- })();
250
- _renewInFlightByHost.set(hostKey, attempt);
251
- await attempt;
252
- }
253
- function persistCliTokenIfPossible(hostUrl, cliToken) {
254
- const existing = load(hostUrl);
255
- if (!existing) {
256
- logger.info(`cli-token: no secure-store session for ${hostUrl}, keeping token in-process only`);
257
- return;
258
- }
259
- save(hostUrl, { ...existing, cliToken });
260
- }
261
- function clearPersistedCliToken(hostUrl) {
262
- const existing = load(hostUrl);
263
- if (existing?.cliToken) {
264
- save(hostUrl, { ...existing, cliToken: void 0 });
265
- }
266
- }
267
- function peekCliToken(hostOverride) {
268
- const hostUrl = hostOverride || getActiveHost();
269
- if (!hostUrl) return void 0;
270
- return _cliTokenCache.get(hostUrl) || loadCliToken(hostUrl) || getFallbackCliToken(hostUrl) || void 0;
271
- }
272
- async function getCliToken(hostOverride) {
273
- const hostUrl = hostOverride || getActiveHost();
274
- let token = _cliTokenCache.get(hostUrl);
275
- if (!token) {
276
- const storedToken = loadCliToken(hostUrl);
277
- if (storedToken) {
278
- _cliTokenCache.set(hostUrl, storedToken);
279
- logger.info(`Using persisted CLI token (secure-store) for ${hostUrl}`);
280
- token = storedToken;
281
- }
282
- }
283
- if (!token) {
284
- const fallbackToken = getFallbackCliToken(hostUrl);
285
- if (fallbackToken) {
286
- _cliTokenCache.set(hostUrl, fallbackToken);
287
- logger.info(`Using sandbox-provisioned CLI token (fallback file) for ${hostUrl}`);
288
- token = fallbackToken;
289
- }
290
- }
291
- if (!token) {
292
- token = await mintCliToken(hostUrl);
293
- }
294
- await maybeRenewCliTokenDaily(hostUrl, token);
295
- return token;
296
- }
297
- async function mintCliToken(hostUrl, accessTokenOverride, persist = true) {
298
- logger.info(`Generating CLI token for ${hostUrl}`);
299
- const cliToken = await generateCliToken(hostUrl, accessTokenOverride);
300
- _cliTokenCache.set(hostUrl, cliToken);
301
- if (persist) persistCliTokenIfPossible(hostUrl, cliToken);
302
- logger.info(`CLI token generated and cached${persist ? " and persisted" : ""} for ${hostUrl}`);
303
- return cliToken;
304
- }
305
- function clearCliToken(hostUrl) {
306
- if (hostUrl) {
307
- _cliTokenCache.delete(hostUrl);
308
- clearPersistedCliToken(hostUrl);
309
- clearRenewState(hostUrl);
310
- return;
311
- }
312
- _cliTokenCache.clear();
313
- clearRenewState();
314
- for (const { url } of listHosts()) {
315
- clearPersistedCliToken(url);
316
- }
317
- }
318
-
319
- export {
320
- CliTokenValidationUnavailableError,
321
- validateCliTokenOnServer,
322
- peekCliToken,
323
- getCliToken,
324
- mintCliToken,
325
- clearCliToken
326
- };