@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
@@ -7,17 +7,12 @@ import {
7
7
  waitForAnalysisRun,
8
8
  withAsyncArtifactLifecycle,
9
9
  withInterruptSignal
10
- } from "./chunk-S5PONFBM.js";
10
+ } from "./chunk-VYXXOKYS.js";
11
11
  import {
12
- createCapabilityCommand
13
- } from "./chunk-DKEXH6Q5.js";
14
- import {
15
- registerCapabilityGatewayRoute,
16
- resolveGatewayDomain
17
- } from "./chunk-TKHSULJT.js";
18
- import {
19
- withOutputMetadata
20
- } from "./chunk-KEWVSO64.js";
12
+ createCapabilityCommand,
13
+ definitionIntentSnapshotFlag,
14
+ modelDefinitionIntentSnapshotFlag
15
+ } from "./chunk-CCS66K4K.js";
21
16
  import {
22
17
  CapabilityGatewayError,
23
18
  buildCapabilityGatewayUrl,
@@ -28,17 +23,22 @@ import {
28
23
  requestCapabilityGatewayWithEnvelope,
29
24
  uploadInputFile,
30
25
  validateCapability
31
- } from "./chunk-GJXRF7Y6.js";
26
+ } from "./chunk-HFGZGYCG.js";
27
+ import {
28
+ registerCapabilityGatewayRoute,
29
+ resolveGatewayDomain
30
+ } from "./chunk-KPQY44JQ.js";
31
+ import {
32
+ withOutputMetadata
33
+ } from "./chunk-DX5CDO34.js";
32
34
  import "./chunk-Y74WTIKJ.js";
33
35
  import {
34
36
  getCliToken
35
- } from "./chunk-RWXIXOZG.js";
36
- import "./chunk-O6K2ODUE.js";
37
- import "./chunk-KZ6ZHF5J.js";
37
+ } from "./chunk-7XGFSUOM.js";
38
+ import "./chunk-7FTTULED.js";
38
39
  import {
39
40
  CliValidationError
40
- } from "./chunk-533JK3YX.js";
41
- import "./chunk-FR2EDAQM.js";
41
+ } from "./chunk-MAPZ7VB6.js";
42
42
 
43
43
  // src/commands/te-analysis/capability-shared.ts
44
44
  var ANALYSIS_GATEWAY_CLI_SERVICES = /* @__PURE__ */ new Set(["project", "system"]);
@@ -335,6 +335,9 @@ function optionalString(ctx, name) {
335
335
  const value = ctx.str(name);
336
336
  return value === "" ? void 0 : value;
337
337
  }
338
+ function optionalStringPreserveEmpty(ctx, name) {
339
+ return ctx.has?.(name) ? ctx.str(name) : optionalString(ctx, name);
340
+ }
338
341
  function optionalNumber(ctx, name) {
339
342
  const value = ctx.str(name);
340
343
  return value === "" ? void 0 : Number(value);
@@ -403,99 +406,43 @@ function validateCatalogExportFlags(ctx) {
403
406
  throw new CliValidationError("--output must use the .jsonl extension");
404
407
  }
405
408
  }
406
- function catalogArtifactMaterializer(resourceType) {
407
- return async ({
408
- ctx,
409
+ async function catalogArtifactMaterializer({
410
+ ctx,
411
+ runId,
412
+ artifactId,
413
+ output,
414
+ force,
415
+ signal,
416
+ finalDescriptor
417
+ }) {
418
+ await assertRegularFileOrMissing(resolve(output), force);
419
+ const download = await downloadAnalysisArtifact(
420
+ ctx.host(),
409
421
  runId,
410
422
  artifactId,
411
423
  output,
412
- force,
413
- signal,
414
- finalDescriptor
415
- }) => {
416
- const outputPath = resolve(output);
417
- const metaPath = join(
418
- dirname(outputPath),
419
- `${basename(outputPath, extname(outputPath))}.meta.json`
420
- );
421
- await mkdir(dirname(outputPath), { recursive: true });
422
- await assertRegularFileOrMissing(outputPath, force);
423
- await assertRegularFileOrMissing(metaPath, force);
424
- const suffix = `${process.pid}.${randomBytes(8).toString("hex")}`;
425
- const partPath = `${outputPath}.part.${suffix}`;
426
- const metaPartPath = `${metaPath}.part.${suffix}`;
427
- let handle;
428
- try {
429
- const download = await downloadAnalysisArtifact(
430
- ctx.host(),
431
- runId,
432
- artifactId,
433
- partPath,
434
- { force: true, signal, ensureReady: false }
435
- );
436
- const hash = createHash("sha256");
437
- let bytes = 0;
438
- let rows = 0;
439
- for await (const chunk of createReadStream(partPath)) {
440
- const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
441
- hash.update(buffer);
442
- bytes += buffer.length;
443
- for (const value of buffer) {
444
- if (value === 10) rows++;
445
- }
446
- }
447
- const contentSha256 = hash.digest("hex");
448
- const token = await getCliToken(ctx.host());
449
- const metadata = {
450
- schema_version: 1,
451
- resource_type: resourceType,
452
- host: ctx.host(),
453
- project_id: ctx.num("project-id"),
454
- principal_fingerprint: `sha256:${createHash("sha256").update(token).digest("hex")}`,
455
- generated_at: (/* @__PURE__ */ new Date()).toISOString(),
456
- row_count: rows,
457
- complete: true,
458
- content_sha256: contentSha256,
459
- run_id: runId,
460
- artifact_id: artifactId
461
- };
462
- handle = await open(metaPartPath, "w", 384);
463
- await handle.write(`${JSON.stringify(metadata)}
464
- `, void 0, "utf8");
465
- await handle.sync();
466
- await handle.close();
467
- handle = void 0;
468
- await publishCatalogPair(partPath, outputPath, metaPartPath, metaPath, suffix);
469
- return {
470
- ...finalDescriptor,
471
- ...download,
472
- output_path: outputPath,
473
- metadata_path: metaPath,
474
- format: "jsonl",
475
- row_count: rows,
476
- bytes,
477
- content_sha256: contentSha256,
478
- complete: true
479
- };
480
- } catch (error) {
481
- await handle?.close().catch(() => void 0);
482
- await rm(partPath, { force: true }).catch(() => void 0);
483
- await rm(metaPartPath, { force: true }).catch(() => void 0);
484
- throw error;
424
+ { force, signal, ensureReady: false, mode: 384 }
425
+ );
426
+ let rows = 0;
427
+ for await (const chunk of createReadStream(download.output_path)) {
428
+ const buffer = Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk);
429
+ for (const value of buffer) {
430
+ if (value === 10) rows++;
485
431
  }
432
+ }
433
+ return {
434
+ ...finalDescriptor,
435
+ ...download,
436
+ format: "jsonl",
437
+ row_count: rows,
438
+ complete: true
486
439
  };
487
440
  }
488
441
  async function preflightCatalogArtifactOutput({
489
442
  output,
490
443
  force
491
444
  }) {
492
- const outputPath = resolve(output);
493
- const metaPath = join(
494
- dirname(outputPath),
495
- `${basename(outputPath, extname(outputPath))}.meta.json`
496
- );
497
- await assertRegularFileOrMissing(outputPath, force);
498
- await assertRegularFileOrMissing(metaPath, force);
445
+ await assertRegularFileOrMissing(resolve(output), force);
499
446
  }
500
447
  function validateQueriesFlag(ctx) {
501
448
  const queries = ctx.json("queries");
@@ -1181,8 +1128,8 @@ var metadataVirtualEventCreate = createAnalysisMetaCapabilityCommand({
1181
1128
  { name: "event-name", type: "string", required: false, desc: "Virtual event name. Must start with 'ta@'." },
1182
1129
  { name: "event-desc", type: "string", required: false, desc: "Virtual event display name." },
1183
1130
  { name: "remark", type: "string", required: false, desc: "Optional virtual event remark." },
1184
- { name: "events", type: "json", required: false, desc: "Event array using snake_case event_name and optional AI-facing filter {relation,items:[{field:{name,type?},operator,values?}]}." },
1185
- { name: "filter", type: "json", required: false, desc: "Optional AI-facing global filter {relation,items:[{field:{name,type?},operator,values?}]}; raw taFilters/junctionKind are rejected." },
1131
+ { name: "events", type: "json", required: false, desc: "Event array using snake_case event_name and optional AI-facing filter conditions. Tag/cluster conditions accept cluster_date_policy and specified_cluster_date." },
1132
+ { name: "filter", type: "json", required: false, desc: "Optional AI-facing global filter. Tag/cluster conditions accept LATEST, AUTO, or SPECIFIED; SPECIFIED requires specified_cluster_date. Raw taFilters/junctionKind are rejected." },
1186
1133
  { name: "override", type: "boolean", required: false, desc: "Whether to override an existing virtual event rule." }
1187
1134
  ],
1188
1135
  risk: "write",
@@ -1538,21 +1485,43 @@ var commands5 = [
1538
1485
  var metric_default = commands5;
1539
1486
 
1540
1487
  // src/commands/te-analysis/meta/asset/search.ts
1541
- var metadataAssetSearch = createAnalysisMetaCapabilityCommand({
1488
+ var assetTypesFlag = {
1489
+ name: "asset-types",
1490
+ type: "json",
1491
+ required: false,
1492
+ desc: "Optional saved analysis asset type narrowing. Omit by default for first-pass asset discovery so dashboards and reports are searched together; pass only when the user explicitly asks for one type or after refining a broad search."
1493
+ };
1494
+ var ownTypesFlag = {
1495
+ name: "own-types",
1496
+ type: "json",
1497
+ required: false,
1498
+ desc: "Optional owner filter. CREATED means owned by the current user; SHARED means visible assets created by others."
1499
+ };
1500
+ var requiredQueriesFlag = {
1501
+ ...queriesFlag,
1502
+ required: true,
1503
+ desc: "Required JSON array of 1 to 20 keyword filters. For first-pass asset discovery, use one broad search without --asset-types so results can include both dashboards and reports."
1504
+ };
1505
+ var analysisAssetSearch = createAnalysisCapabilityCommand({
1542
1506
  resource: "asset",
1543
1507
  command: "search",
1544
- capabilityId: "metadata.asset.search",
1545
- description: "Search project assets by keyword.",
1508
+ capabilityId: "analysis.asset.search",
1509
+ description: "Search visible saved analysis assets by keyword. Default first-pass search should omit --asset-types to cover both dashboards and reports.",
1546
1510
  flags: [
1547
1511
  projectIdFlag,
1548
- requiredPayloadFlag,
1512
+ requiredQueriesFlag,
1513
+ assetTypesFlag,
1514
+ ownTypesFlag,
1549
1515
  directoryLimitFlag,
1550
1516
  directoryOffsetFlag
1551
1517
  ],
1552
1518
  risk: "read",
1519
+ validate: validateQueriesFlag,
1553
1520
  buildInput: (ctx) => compactInput({
1554
1521
  ...projectInput(ctx),
1555
- payload: ctx.json("payload"),
1522
+ queries: optionalJson(ctx, "queries"),
1523
+ asset_types: optionalJson(ctx, "asset-types"),
1524
+ own_types: optionalJson(ctx, "own-types"),
1556
1525
  limit: optionalNumber(ctx, "limit"),
1557
1526
  offset: optionalNumber(ctx, "offset")
1558
1527
  })
@@ -1655,13 +1624,11 @@ var ruleIdFlag = { name: "rule-id", type: "number", required: false, desc: "Gove
1655
1624
  var ruleNameFlag = { name: "rule-name", type: "string", required: false, desc: "Governance rule name." };
1656
1625
  var commentFlag = { name: "comment", type: "string", required: false, desc: "Governance rule comment." };
1657
1626
  var nodeIdsFlag = { name: "node-ids", type: "json", required: false, desc: "Asset node ID JSON array." };
1658
- var reportsVersionFlag = { name: "reports-version", type: "number", required: false, desc: "Dashboard reports version." };
1659
- var zoneOffsetFlag = { name: "zone-offset", type: "number", required: false, desc: "Dashboard zone offset." };
1660
1627
  var scheduleUiConfigFlag = { name: "schedule-ui-config", type: "json", required: false, desc: "Dashboard schedule UI config JSON." };
1661
1628
  var dashboardStatusFlag = { name: "dashboard-status", type: "string", required: false, desc: "Dashboard status." };
1662
1629
  var refreshTypeFlag = { name: "refresh-type", type: "number", required: false, desc: "Dashboard refresh type: 1 enabled, 0 disabled." };
1663
1630
  var cacheConfigFlag = { name: "cache-config", type: "json", required: false, desc: "Dashboard cache config JSON." };
1664
- var toUserIdFlag = { name: "to-user-id", type: "number", required: true, desc: "Target user ID for handover." };
1631
+ var toUserIdFlag = { name: "to-user-id", type: "number", required: false, desc: "Target user ID for handover; required here or as payload.to_user_id." };
1665
1632
  var clearHistoryTagFlag = { name: "clear-history-tag", type: "number", required: false, desc: "Whether to clear tag history: 1 yes, 0 no." };
1666
1633
  var typeFlag = { name: "type", type: "string", required: false, desc: "Batch operation type." };
1667
1634
  var statusFlag = { name: "status", type: "json", required: false, desc: "Operation status JSON array." };
@@ -1680,7 +1647,7 @@ var readers = {
1680
1647
  rule_id: (ctx) => optionalNumber(ctx, "rule-id"),
1681
1648
  rule_name: (ctx) => optionalString(ctx, "rule-name"),
1682
1649
  comment: (ctx) => optionalString(ctx, "comment"),
1683
- node_ids: (ctx) => optionalJsonArray(ctx, "node-ids"),
1650
+ node_ids: (ctx) => optionalJson(ctx, "node-ids"),
1684
1651
  reports_version: (ctx) => optionalNumber(ctx, "reports-version"),
1685
1652
  zone_offset: (ctx) => optionalNumber(ctx, "zone-offset"),
1686
1653
  schedule_ui_config: (ctx) => optionalJson(ctx, "schedule-ui-config"),
@@ -1697,37 +1664,79 @@ var readers = {
1697
1664
  limit: (ctx) => optionalNumber(ctx, "limit"),
1698
1665
  offset: (ctx) => optionalNumber(ctx, "offset")
1699
1666
  };
1700
- function assetGovernanceInput(ctx, fields) {
1667
+ function assetGovernanceInput(ctx, fields2) {
1668
+ const payload = optionalJson(ctx, "payload");
1669
+ if (payload !== void 0 && (!payload || typeof payload !== "object" || Array.isArray(payload))) {
1670
+ throw new CliValidationError("--payload must be a JSON object.");
1671
+ }
1672
+ if (payload && Object.hasOwn(payload, "payload")) {
1673
+ throw new CliValidationError("--payload must not contain a nested payload field.");
1674
+ }
1701
1675
  const input = {
1702
- ...projectInput(ctx),
1703
- payload: optionalJson(ctx, "payload")
1676
+ ...payload,
1677
+ ...projectInput(ctx)
1704
1678
  };
1705
- for (const field of fields) {
1706
- input[field] = readers[field]?.(ctx);
1679
+ for (const field of fields2) {
1680
+ const value = readers[field]?.(ctx);
1681
+ if (value !== void 0) input[field] = value;
1707
1682
  }
1708
- return compactInput(input);
1683
+ for (const field of ["node_ids", "searchs", "status"]) {
1684
+ if (input[field] !== void 0 && !Array.isArray(input[field])) {
1685
+ throw new CliValidationError(`${field} must be a JSON array.`);
1686
+ }
1687
+ }
1688
+ if (input.rule !== void 0 && (!input.rule || typeof input.rule !== "object" || Array.isArray(input.rule))) {
1689
+ throw new CliValidationError("rule must be a JSON object.");
1690
+ }
1691
+ if (fields2.includes("to_user_id") && (!Number.isInteger(input.to_user_id) || Number(input.to_user_id) <= 0)) {
1692
+ throw new CliValidationError("to_user_id must be a positive integer; provide --to-user-id or payload.to_user_id.");
1693
+ }
1694
+ return input;
1709
1695
  }
1710
1696
 
1711
1697
  // src/core/resource-url.ts
1712
- function normalizeResourceUrlFields(node, host) {
1698
+ var LOCAL_BACKEND_PORTS = /* @__PURE__ */ new Set(["8992", "8996"]);
1699
+ function normalizeResourceUrlFields(node, host, sourceHost = host) {
1713
1700
  if (!node || typeof node !== "object") return;
1714
1701
  const obj = node;
1715
1702
  for (const [key, value] of Object.entries(obj)) {
1716
1703
  if (typeof value === "string") {
1717
1704
  if (/url|link/i.test(key) || value.includes("/#/")) {
1718
- obj[key] = absolutizeRelativeUrls(value, host);
1705
+ obj[key] = normalizeResourceUrls(value, host, sourceHost);
1719
1706
  }
1720
1707
  } else if (value && typeof value === "object") {
1721
- normalizeResourceUrlFields(value, host);
1708
+ normalizeResourceUrlFields(value, host, sourceHost);
1722
1709
  }
1723
1710
  }
1724
1711
  }
1725
- function absolutizeRelativeUrls(s, host) {
1712
+ function normalizeResourceUrls(s, host, sourceHost = host) {
1726
1713
  const base = host.replace(/\/+$/, "");
1714
+ const sourceBase = sourceHost.replace(/\/+$/, "");
1715
+ if (sourceBase && sourceBase !== base) {
1716
+ s = s.replace(new RegExp(`${escapeRegExp(sourceBase)}/#`, "g"), `${base}/#`);
1717
+ }
1727
1718
  s = s.replace(/\]\((\/(?!\/)[^)]*)\)/g, `](${base}$1)`);
1728
1719
  if (/^\/(?!\/)/.test(s)) s = base + s;
1729
1720
  return s;
1730
1721
  }
1722
+ function resolvePublicWebHost(host) {
1723
+ const override = process.env.AE_CLI_PUBLIC_WEB_URL || process.env.AE_CLI_WEB_HOST;
1724
+ if (override?.trim()) {
1725
+ return override.trim().replace(/\/+$/, "");
1726
+ }
1727
+ try {
1728
+ const url = new URL(host);
1729
+ if ((url.hostname === "127.0.0.1" || url.hostname === "localhost") && LOCAL_BACKEND_PORTS.has(url.port)) {
1730
+ url.port = "10010";
1731
+ return url.toString().replace(/\/+$/, "");
1732
+ }
1733
+ } catch {
1734
+ }
1735
+ return host.replace(/\/+$/, "");
1736
+ }
1737
+ function escapeRegExp(value) {
1738
+ return value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
1739
+ }
1731
1740
 
1732
1741
  // src/commands/te-analysis/meta/asset/url-get.ts
1733
1742
  var analysisMetaAssetUrlGet = createAnalysisMetaCapabilityCommand({
@@ -1746,7 +1755,7 @@ var analysisMetaAssetUrlGet = createAnalysisMetaCapabilityCommand({
1746
1755
 
1747
1756
  // src/commands/te-analysis/meta/asset/index.ts
1748
1757
  var commands6 = [
1749
- metadataAssetSearch,
1758
+ analysisAssetSearch,
1750
1759
  metadataAssetRecentList,
1751
1760
  metadataAssetAuthenticationList,
1752
1761
  metadataAssetAuthenticationUpdate,
@@ -2009,9 +2018,9 @@ var metadataCatalogExport = createAnalysisMetaCapabilityCommand({
2009
2018
  capabilityId: "metadata.catalog.export",
2010
2019
  asyncArtifact: {
2011
2020
  preflightOutput: preflightCatalogArtifactOutput,
2012
- materialize: catalogArtifactMaterializer("analysis_metadata")
2021
+ materialize: catalogArtifactMaterializer
2013
2022
  },
2014
- description: "Export the complete accessible analysis metadata catalog to JSONL with an integrity sidecar.",
2023
+ description: "Export the complete accessible analysis metadata catalog to one local JSONL file.",
2015
2024
  flags: [projectIdFlag, requestIdFlag, asyncTimeoutSecondsFlag, certificationScopeFlag],
2016
2025
  risk: "read",
2017
2026
  validate: validateCatalogExportFlags,
@@ -2093,8 +2102,653 @@ var metadataCatalogList = createAnalysisMetaCapabilityCommand({
2093
2102
  var commands10 = [metadataCatalogList, metadataCatalogExport];
2094
2103
  var catalog_default = commands10;
2095
2104
 
2096
- // src/commands/te-analysis/meta/index.ts
2105
+ // src/commands/te-analysis/meta/governance-recommendation/export.ts
2106
+ var windowDaysFlag = {
2107
+ name: "window-days",
2108
+ type: "number",
2109
+ required: false,
2110
+ min: 1,
2111
+ max: 365,
2112
+ desc: "Usage window in days. Default: 90."
2113
+ };
2114
+ var limitFlag2 = {
2115
+ name: "limit",
2116
+ type: "number",
2117
+ required: false,
2118
+ min: 1,
2119
+ max: 100,
2120
+ desc: "Maximum hot dashboard evidence packages selected before report and metadata expansion. Default: 20; this is not the business-topic count."
2121
+ };
2122
+ var includeCompletedFlag = {
2123
+ name: "include-completed",
2124
+ type: "boolean",
2125
+ required: false,
2126
+ desc: "Whether to include completed/authenticated context in the same business topic. Default: true; set false only for pending-only review."
2127
+ };
2128
+ var GOVERNANCE_RECOMMENDATION_EXPORT_HELP = [
2129
+ "Customer/Agent material package contract:",
2130
+ "- Requires project_semantic_enable=on. A disabled project returns PROJECT_SEMANTIC_DISABLED before collecting export materials.",
2131
+ "- Use this command as the entry point before asset-certification recommendation display or review-page submission.",
2132
+ "- The command requires a numeric --project-id. If the user provides only a project name, resolve it on the same host with ae-cli project info list before calling export.",
2133
+ "- The response run_id, snapshot_hash, and review_material_package are the handoff package for the Agent.",
2134
+ "- review_material_package should carry candidate_assets, heat evidence, source_link/evidence_links, relations, report definitions, AI-model definitions, target_revision, and hashes needed for review drafting.",
2135
+ "- Dashboard candidates may include optional space_id/space_name. Preserve these fields into the review draft when present; not every dashboard belongs to a space, so never invent or require them.",
2136
+ "- The Agent turns that package into a submit-to-page draft with batch ai_summary, presentation_snapshot, per-item ai_summary/reasons, copied evidence_snapshot, copied source links, and relations.",
2137
+ "- work_units are deterministic evidence containers from Common. They are not final page groups; the Agent clusters selected assets into one or more business-domain topics.",
2138
+ "- For report and SQL items, use packaged evidence_snapshot.analysis first. Call analysis-meta agent-review evidence only for explicit definition/analysis gaps or draft validation.",
2139
+ "- For real page-review submission, start with --limit 20, filter out completed/rejected/deferred/in-flight items, and expand to --limit 50 then --limit 100 only when the remaining pending review assets or visible business domains are too few.",
2140
+ "- Expansion increases business-domain coverage; it must not submit every pending asset found. Keep a daily review capacity target such as 20-50 pending assets, hard cap around 80, and select about 3-6 visible domains.",
2141
+ "- When candidates exceed the cap, rank by impact, heat, user count, dependency breadth, and under-covered domains; keep only direct context needed for selected pending assets and report overflow for later batches.",
2142
+ "- Draft only business domains with pending review assets. Completed/authenticated assets are necessary context under those visible domains, not standalone work and not a reason to display a zero-pending domain.",
2143
+ "- Generate long Agent summaries only for visible business domains and pending review assets; hidden domains and pure authenticated context should keep copied evidence/links without new page-visible narrative.",
2144
+ "- Page submission uses analysis-meta agent-review submit-to-page. governance-recommendation submit is for explicit approval decisions and must not be used to create page drafts."
2145
+ ].join("\n");
2146
+ var metadataGovernanceRecommendationExport = createAnalysisMetaCapabilityCommand({
2147
+ resource: "governance-recommendation",
2148
+ command: "export",
2149
+ capabilityId: "metadata.governance_recommendation.export",
2150
+ description: "Export the material package for CLI Agent asset-authentication and metric-recommendation review.",
2151
+ helpText: GOVERNANCE_RECOMMENDATION_EXPORT_HELP,
2152
+ flags: [projectIdFlag, windowDaysFlag, limitFlag2, includeCompletedFlag],
2153
+ risk: "read",
2154
+ buildInput: (ctx) => compactInput({
2155
+ ...projectInput(ctx),
2156
+ window_days: optionalNumber(ctx, "window-days"),
2157
+ limit: optionalNumber(ctx, "limit"),
2158
+ include_completed: optionalBoolean(ctx, "include-completed")
2159
+ }),
2160
+ postProcess: (result, _input, ctx) => {
2161
+ normalizeResourceUrlFields(result, resolvePublicWebHost(ctx.host()), ctx.host());
2162
+ return result;
2163
+ }
2164
+ });
2165
+
2166
+ // src/commands/te-analysis/meta/governance-recommendation/submit.ts
2167
+ var runIdFlag = {
2168
+ name: "run-id",
2169
+ type: "string",
2170
+ required: true,
2171
+ desc: "run_id returned by governance-recommendation export."
2172
+ };
2173
+ var snapshotHashFlag = {
2174
+ name: "snapshot-hash",
2175
+ type: "string",
2176
+ required: false,
2177
+ desc: "Authentication snapshot hash returned by governance-recommendation export."
2178
+ };
2179
+ var topicIdFlag = {
2180
+ name: "topic-id",
2181
+ type: "string",
2182
+ required: false,
2183
+ desc: "Optional CLI Agent business-domain ID. Dashboard-seeded evidence may submit only topic-name."
2184
+ };
2185
+ var topicNameFlag = {
2186
+ name: "topic-name",
2187
+ type: "string",
2188
+ required: true,
2189
+ desc: "CLI Agent business-domain display name."
2190
+ };
2191
+ var decisionsFlag = {
2192
+ name: "decisions",
2193
+ type: "json",
2194
+ required: true,
2195
+ desc: "Approval decisions JSON array for one CLI Agent topic. Each item uses item_type asset or metric_candidate and decision APPROVE, REJECT, or SKIP."
2196
+ };
2197
+ var windowDaysFlag2 = {
2198
+ name: "window-days",
2199
+ type: "number",
2200
+ required: false,
2201
+ min: 1,
2202
+ max: 365,
2203
+ desc: "Usage window in days for server-side metric candidate re-scan. Default: 90."
2204
+ };
2205
+ var limitFlag3 = {
2206
+ name: "limit",
2207
+ type: "number",
2208
+ required: false,
2209
+ min: 1,
2210
+ max: 100,
2211
+ desc: "Dashboard limit for server-side metric candidate re-scan. Default: 20."
2212
+ };
2213
+ var metadataGovernanceRecommendationSubmit = createAnalysisMetaCapabilityCommand({
2214
+ resource: "governance-recommendation",
2215
+ command: "submit",
2216
+ capabilityId: "metadata.governance_recommendation.submit",
2217
+ description: "Submit CLI Agent approval decisions for asset authentication and metric recommendation items.",
2218
+ flags: [
2219
+ projectIdFlag,
2220
+ runIdFlag,
2221
+ snapshotHashFlag,
2222
+ topicIdFlag,
2223
+ topicNameFlag,
2224
+ windowDaysFlag2,
2225
+ limitFlag3,
2226
+ decisionsFlag
2227
+ ],
2228
+ risk: "write",
2229
+ buildInput: (ctx) => compactInput({
2230
+ ...projectInput(ctx),
2231
+ run_id: ctx.str("run-id"),
2232
+ snapshot_hash: optionalString(ctx, "snapshot-hash"),
2233
+ topic_id: optionalString(ctx, "topic-id"),
2234
+ topic_name: ctx.str("topic-name"),
2235
+ window_days: optionalNumber(ctx, "window-days"),
2236
+ limit: optionalNumber(ctx, "limit"),
2237
+ decisions: ctx.json("decisions")
2238
+ })
2239
+ });
2240
+
2241
+ // src/commands/te-analysis/meta/governance-recommendation/decisions.ts
2242
+ var runIdFlag2 = {
2243
+ name: "run-id",
2244
+ type: "string",
2245
+ required: false,
2246
+ desc: "Optional run_id filter."
2247
+ };
2248
+ var limitFlag4 = {
2249
+ name: "limit",
2250
+ type: "number",
2251
+ required: false,
2252
+ min: 1,
2253
+ max: 500,
2254
+ desc: "Maximum rows returned. Default: 100."
2255
+ };
2256
+ var metadataGovernanceRecommendationDecisions = createAnalysisMetaCapabilityCommand({
2257
+ resource: "governance-recommendation",
2258
+ command: "decisions",
2259
+ capabilityId: "metadata.governance_recommendation.decisions",
2260
+ description: "List recent CLI Agent recommendation approval decisions.",
2261
+ flags: [projectIdFlag, runIdFlag2, limitFlag4],
2262
+ risk: "read",
2263
+ buildInput: (ctx) => compactInput({
2264
+ ...projectInput(ctx),
2265
+ run_id: optionalString(ctx, "run-id"),
2266
+ limit: optionalNumber(ctx, "limit")
2267
+ })
2268
+ });
2269
+
2270
+ // src/commands/te-analysis/meta/governance-recommendation/index.ts
2097
2271
  var commands11 = [
2272
+ metadataGovernanceRecommendationExport,
2273
+ metadataGovernanceRecommendationSubmit,
2274
+ metadataGovernanceRecommendationDecisions
2275
+ ];
2276
+ var governance_recommendation_default = commands11;
2277
+
2278
+ // src/commands/te-analysis/meta/agent-review/shared.ts
2279
+ var projectFlag = {
2280
+ name: "project-id",
2281
+ type: "number",
2282
+ required: true,
2283
+ min: 1,
2284
+ desc: "Numeric project ID."
2285
+ };
2286
+ var batchFlag = {
2287
+ name: "batch-id",
2288
+ type: "string",
2289
+ required: true,
2290
+ desc: "Review batch ID as a decimal string; preserve all digits."
2291
+ };
2292
+ var clientRequestFlag = {
2293
+ name: "client-request-id",
2294
+ type: "string",
2295
+ required: true,
2296
+ desc: "Stable operation key. Reuse for network replay; use a new key for a new decision or manual retry."
2297
+ };
2298
+ function text(ctx, name) {
2299
+ const value = ctx.str(name);
2300
+ if (!value.trim()) throw new Error(`--${name} must not be empty.`);
2301
+ return value;
2302
+ }
2303
+ function decimalId(value, name) {
2304
+ if (typeof value !== "string" || !/^[1-9]\d*$/.test(value) || BigInt(value) > 9223372036854775807n) {
2305
+ throw new Error(`${name} must be a positive signed 64-bit decimal string.`);
2306
+ }
2307
+ return value;
2308
+ }
2309
+ function projectInput2(ctx) {
2310
+ const id = ctx.num("project-id");
2311
+ if (!Number.isInteger(id) || id < 1 || id > 2147483647) {
2312
+ throw new Error("--project-id must be a positive 32-bit integer.");
2313
+ }
2314
+ return { project_id: id };
2315
+ }
2316
+ function batchInput(ctx) {
2317
+ return { ...projectInput2(ctx), batch_id: decimalId(ctx.str("batch-id"), "--batch-id") };
2318
+ }
2319
+ function object(value, name) {
2320
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
2321
+ throw new Error(`${name} must be a JSON object.`);
2322
+ }
2323
+ return value;
2324
+ }
2325
+ function array(value, name) {
2326
+ if (!Array.isArray(value) || value.length < 1 || value.length > 5e3) {
2327
+ throw new Error(`${name} must contain 1 to 5000 items.`);
2328
+ }
2329
+ return value;
2330
+ }
2331
+ function fields(value, allowed, name) {
2332
+ const unknown = Object.keys(value).filter((key) => !allowed.includes(key));
2333
+ if (unknown.length) throw new Error(`${name} has unsupported fields: ${unknown.join(", ")}.`);
2334
+ }
2335
+ function unique(values, name) {
2336
+ if (new Set(values).size !== values.length) throw new Error(`${name} must be unique.`);
2337
+ }
2338
+
2339
+ // src/commands/te-analysis/meta/agent-review/submit-to-page.ts
2340
+ import { readFileSync } from "fs";
2341
+ var supportedTargetTypes = /* @__PURE__ */ new Set([
2342
+ "dashboard",
2343
+ "report",
2344
+ "event",
2345
+ "event_prop",
2346
+ "user_prop",
2347
+ "user_tag",
2348
+ "user_cluster",
2349
+ "metric"
2350
+ ]);
2351
+ var SUBMIT_TO_PAGE_HELP = [
2352
+ "Customer/Agent review-page draft contract:",
2353
+ "- Normal flow: governance-recommendation export -> Agent builds ai_summary/presentation_snapshot/item reasons -> submit-to-page --input-file -> review page batch and site notification.",
2354
+ "- This command creates an asset certification review draft for humans. It never approves, certifies, retries, or creates metrics.",
2355
+ "- Use --input-file for real drafts. The file is JSON; --project-id and --client-request-id come from CLI flags so replays keep one stable operation key.",
2356
+ "- Build the file from review_material_package, preserving candidate assets, heat evidence, source_link/evidence_links, relations, report/AI-model definitions, target_revision, and hashes.",
2357
+ "- For dashboard items, preserve optional space_id/space_name from the material package into evidence_snapshot.definition.config when present. Not every dashboard has a space; do not invent or require one.",
2358
+ "- For recurring recommendation jobs, build the draft from the latest sufficient export: start at top-20 hot dashboards, expand to top-50/top-100 only when filtering leaves too few pending review assets or visible business domains, and record the final scope in batch ai_summary.",
2359
+ "- Expansion is for coverage, not unlimited workload. Target about 20-50 pending assets per daily batch, cap around 80, and balance roughly 3-6 visible domains with per-domain quotas before adding context.",
2360
+ "- If more pending candidates exist, submit the ranked slice and record overflow counts/domains in batch ai_summary for later batches.",
2361
+ "- presentation_snapshot should display only business-domain topics that contain pending review assets. Authenticated/completed assets may appear as context under those topics, but must not create standalone zero-pending topics.",
2362
+ "- Do not author long page-visible AI summaries for hidden topics or pure authenticated context. Copy evidence, links, signals, and relations for context; spend Agent interpretation on visible domains and pending review assets.",
2363
+ "- Scripts may assemble transport JSON and copy evidence, but page-visible ai_summary and analysis_explanation text must be Agent-written interpretation from verified evidence, not generated boilerplate.",
2364
+ "- Follow agent_review_preflight.md: independent Agent review, at most 3 corrections, then submit with unresolved-quality warnings only when already authorized. LOCAL_ONLY never submits. Business meaning and visible-text quality are Agent review responsibilities; this command enforces only transport structure and evidence references.",
2365
+ "- Follow agent_review_priorities_comparisons.md: item ai_summary includes recommendation.priority/priority_reason/evidence_refs, classified comparisons with both-side evidence, and comparison_review coverage. LOW is review urgency, not a defer decision; only POSSIBLE_CONFLICT merits a conflict badge. These assessments share the same 3-correction budget.",
2366
+ "- presentation_snapshot.topics is one or more business-domain topics. Each topic must use groups[].items; do not use top-level topics[].items or raw Common work_units as the page grouping.",
2367
+ "- relations should let the page render dashboard -> report -> metadata with contains/uses edges. Use an empty relations array only when the package truly has no known parent-child evidence.",
2368
+ "- Each submitted item must keep source_link or evidence_links[].url so reviewers can jump to source evidence.",
2369
+ "- item.ai_summary.summary is the per-item recommendation reason. It must cite concrete item evidence, not generic review boilerplate. batch ai_summary.summary is only the batch overview.",
2370
+ "- For reports and SQL reports, item.ai_summary.analysis_explanation must explain reviewer-readable calculations or measures from packaged evidence_snapshot.analysis. A purpose-only summary is incomplete and is rejected locally before dispatch.",
2371
+ "- Reviewer-visible text should follow the project-KB source style: one business Chinese Agent summary that explains purpose, calculation caliber, filters, time scope, boundaries, and concrete reviewer questions. Keep raw SQL, parser labels, temporary aliases, parameter placeholders, hashes, and evidence paths in evidence_snapshot only; independent Agent preflight flags visible implementation terms as quality findings.",
2372
+ "- The command output includes review_page_url when review_url is present. Return review_page_url to the user; do not prepend the Common/API host to review_url yourself.",
2373
+ "",
2374
+ "Input-file JSON shape:",
2375
+ "{",
2376
+ ' "review_type": "ASSET_GOVERNANCE",',
2377
+ ' "schema_version": "1.0",',
2378
+ ' "title": "<review batch title>",',
2379
+ ' "source_run_id": "<export.run_id>",',
2380
+ ' "source_task_id": "<optional preauthorized task id>",',
2381
+ ' "ai_summary": { "summary": "<batch overview>" },',
2382
+ ' "presentation_snapshot": {',
2383
+ ' "project": { "id": 1, "name": "<project name>" },',
2384
+ ' "evidenceDate": "YYYY-MM-DD",',
2385
+ ' "topics": [{',
2386
+ ' "id": "<business-domain-id>",',
2387
+ ' "name": "<business-domain-name>",',
2388
+ ' "groups": [{',
2389
+ ' "id": "<second-level-group-id>",',
2390
+ ' "name": "<second-level group or source dashboard>",',
2391
+ ' "items": [{ "id": "<client_item_id>" }]',
2392
+ " }]",
2393
+ " }],",
2394
+ ' "relations": [{ "parent": "<dashboard item id>", "child": "<report item id>", "type": "contains" }, { "parent": "<report item id>", "child": "<metadata item id>", "type": "uses" }],',
2395
+ ' "analysisByItem": {}',
2396
+ " },",
2397
+ ' "items": [{',
2398
+ ' "client_item_id": "<stable item id used by presentation_snapshot>",',
2399
+ ' "target_ref": { "type": "dashboard|report|event|event_prop|user_prop|user_tag|user_cluster|metric", "key": "<lossless target key>" },',
2400
+ ' "action_type": "CERTIFY",',
2401
+ ' "proposal_payload": { "authentication_status": 1 },',
2402
+ ' "source_link": "<copied source URL>",',
2403
+ ' "evidence_links": [{ "label": "<source label>", "url": "<copied evidence URL>" }],',
2404
+ ' "evidence_snapshot": { "analysis": "<Common packaged evidence when available>", "target_revision": "<definition version/hash>" },',
2405
+ ' "ai_summary": {',
2406
+ ' "summary": "<item reason with evidence basis and risks>",',
2407
+ ' "analysis_explanation": {',
2408
+ ' "business_purpose": "<what the reviewer uses this asset for>",',
2409
+ ' "measures": [{ "statement": "<measure explanation>", "evidence_refs": ["evidence_snapshot.analysis..."], "inferred": false }],',
2410
+ ' "calculations": [{ "statement": "<formula or aggregation explanation>", "evidence_refs": ["evidence_snapshot.analysis..."], "inferred": false }],',
2411
+ ' "filters": [], "time_scope": [], "dimensions": [], "query_columns": [],',
2412
+ ' "limitations": [], "open_questions": []',
2413
+ " }",
2414
+ " }",
2415
+ " }]",
2416
+ "}"
2417
+ ].join("\n");
2418
+ var agentReviewSubmitToPage = createAnalysisMetaCapabilityCommand({
2419
+ resource: "agent-review",
2420
+ command: "submit-to-page",
2421
+ capabilityId: "metadata.agent_review.create",
2422
+ description: "Submit evidence-backed asset proposals to a review page without approving or certifying assets.",
2423
+ helpText: SUBMIT_TO_PAGE_HELP,
2424
+ risk: "write",
2425
+ flags: [
2426
+ projectFlag,
2427
+ clientRequestFlag,
2428
+ { name: "input-file", type: "string", required: false, sensitive: true, desc: "Local JSON draft generated from review_material_package; includes ai_summary, presentation_snapshot.topics[].groups, copied evidence/source links, and items." },
2429
+ { name: "title", type: "string", required: false, desc: "Review batch title." },
2430
+ { name: "source-run-id", type: "string", required: false, desc: "Evidence run that produced this proposal." },
2431
+ { name: "source-task-id", type: "string", desc: "Optional preauthorized task ID." },
2432
+ { name: "ai-summary", type: "json", required: false, desc: "Evidence-backed batch summary object." },
2433
+ { name: "presentation-snapshot", type: "json", required: false, desc: "Review page packet with business-domain topics, groups[].items, relations, stable client_item_id references, and real evidence links." },
2434
+ { name: "items", type: "json", required: false, desc: "1 to 5000 CERTIFY proposals with client_item_id, target_ref, source/evidence links, proposal_payload, item ai_summary/reasons, and evidence_snapshot." }
2435
+ ],
2436
+ buildInput: (ctx) => {
2437
+ const publicWebHost = resolvePublicWebHost(ctx.host());
2438
+ const file = ctx.str("input-file");
2439
+ if (file) {
2440
+ const input = object(JSON.parse(readFileSync(file, "utf8")), "--input-file");
2441
+ return normalizeSubmitInput(validateInput({
2442
+ ...input,
2443
+ ...projectInput2(ctx),
2444
+ client_request_id: text(ctx, "client-request-id")
2445
+ }), publicWebHost, ctx.host());
2446
+ }
2447
+ const title = text(ctx, "title");
2448
+ const sourceRunId = text(ctx, "source-run-id");
2449
+ if (!title || !sourceRunId || !ctx.str("ai-summary") || !ctx.str("presentation-snapshot") || !ctx.str("items")) {
2450
+ throw new Error("Pass --input-file, or pass --title, --source-run-id, --ai-summary, --presentation-snapshot, and --items together.");
2451
+ }
2452
+ return normalizeSubmitInput(validateInput({
2453
+ ...projectInput2(ctx),
2454
+ review_type: "ASSET_GOVERNANCE",
2455
+ schema_version: "1.0",
2456
+ client_request_id: text(ctx, "client-request-id"),
2457
+ title,
2458
+ source_run_id: sourceRunId,
2459
+ ...ctx.str("source-task-id") ? { source_task_id: text(ctx, "source-task-id") } : {},
2460
+ ai_summary: object(ctx.json("ai-summary"), "--ai-summary"),
2461
+ presentation_snapshot: object(ctx.json("presentation-snapshot"), "--presentation-snapshot"),
2462
+ items: ctx.json("items")
2463
+ }), publicWebHost, ctx.host());
2464
+ },
2465
+ postProcess: (result, _input, ctx) => normalizeSubmitResult(result, resolvePublicWebHost(ctx.host()), ctx.host())
2466
+ });
2467
+ function validateInput(input) {
2468
+ const items = array(input.items, "items").map((value) => {
2469
+ const item = object(value, "items[]");
2470
+ fields(item, [
2471
+ "client_item_id",
2472
+ "target_ref",
2473
+ "action_type",
2474
+ "proposal_payload",
2475
+ "ai_summary",
2476
+ "evidence_snapshot",
2477
+ "source_link",
2478
+ "evidence_links"
2479
+ ], "items[]");
2480
+ if (typeof item.client_item_id !== "string" || !item.client_item_id.trim()) {
2481
+ throw new Error("items[].client_item_id must be a nonempty string.");
2482
+ }
2483
+ const target = object(item.target_ref, "items[].target_ref");
2484
+ const targetType = typeof target.type === "string" ? target.type.trim() : "";
2485
+ const targetKey = typeof target.key === "string" ? target.key.trim() : "";
2486
+ if (!targetType || !targetKey) {
2487
+ throw new Error("items[].target_ref requires nonempty string type and key.");
2488
+ }
2489
+ if (!supportedTargetTypes.has(targetType)) {
2490
+ throw new Error("items[].target_ref.type must be one of dashboard, report, event, event_prop, user_prop, user_tag, user_cluster, metric.");
2491
+ }
2492
+ const proposal = object(item.proposal_payload, "items[].proposal_payload");
2493
+ fields(proposal, ["authentication_status"], "items[].proposal_payload");
2494
+ if (item.action_type !== "CERTIFY" || proposal.authentication_status !== 1) {
2495
+ throw new Error("Only CERTIFY with authentication_status=1 is supported by the review page.");
2496
+ }
2497
+ const aiSummary = object(item.ai_summary, "items[].ai_summary");
2498
+ const evidenceSnapshot = object(item.evidence_snapshot, "items[].evidence_snapshot");
2499
+ validateItemAiSummary(aiSummary, `items[${String(item.client_item_id)}].ai_summary`);
2500
+ if (targetType === "report") {
2501
+ validateReportAnalysis(aiSummary, evidenceSnapshot, `items[${String(item.client_item_id)}]`);
2502
+ }
2503
+ validateEvidenceLinks(item);
2504
+ return item;
2505
+ });
2506
+ unique(items.map((item) => item.client_item_id), "client_item_id");
2507
+ fields(input, [
2508
+ "project_id",
2509
+ "review_type",
2510
+ "schema_version",
2511
+ "client_request_id",
2512
+ "title",
2513
+ "source_run_id",
2514
+ "source_task_id",
2515
+ "ai_summary",
2516
+ "presentation_snapshot",
2517
+ "items"
2518
+ ], "submit-to-page input");
2519
+ object(input.ai_summary, "ai_summary");
2520
+ validatePresentation(object(input.presentation_snapshot, "presentation_snapshot"), new Set(items.map((item) => item.client_item_id)));
2521
+ if (input.review_type !== "ASSET_GOVERNANCE" || input.schema_version !== "1.0") {
2522
+ throw new Error("submit-to-page input requires review_type=ASSET_GOVERNANCE and schema_version=1.0.");
2523
+ }
2524
+ return { ...input, items };
2525
+ }
2526
+ function validateItemAiSummary(aiSummary, name) {
2527
+ if (!meaningfulText(aiSummary.summary)) {
2528
+ throw new Error(`${name}.summary must be a nonempty string.`);
2529
+ }
2530
+ }
2531
+ function validateReportAnalysis(aiSummary, evidenceSnapshot, name) {
2532
+ const analysis = object(evidenceSnapshot.analysis, `${name}.evidence_snapshot.analysis`);
2533
+ if (!meaningfulText(evidenceSnapshot.target_revision)) {
2534
+ throw new Error(`${name}.evidence_snapshot.target_revision is required for report drafts.`);
2535
+ }
2536
+ const explanation = object(aiSummary.analysis_explanation, `${name}.ai_summary.analysis_explanation`);
2537
+ const evidenceRefs = [
2538
+ ...explanationRows(explanation.measures, `${name}.ai_summary.analysis_explanation.measures`),
2539
+ ...explanationRows(explanation.calculations, `${name}.ai_summary.analysis_explanation.calculations`)
2540
+ ].filter((row) => meaningfulText(row.statement)).flatMap((row) => evidenceRefList(row.evidence_refs));
2541
+ if (!evidenceRefs.some((ref) => resolvesAnalysisPath(analysis, ref))) {
2542
+ throw new Error(`${name} report analysis_explanation requires calculations or measures with resolvable evidence_snapshot.analysis refs.`);
2543
+ }
2544
+ }
2545
+ function explanationRows(value, name) {
2546
+ if (value === void 0) return [];
2547
+ if (!Array.isArray(value)) throw new Error(`${name} must be an array.`);
2548
+ return value.map((entry) => object(entry, `${name}[]`));
2549
+ }
2550
+ function evidenceRefList(value) {
2551
+ if (!Array.isArray(value)) return [];
2552
+ return value.filter((entry) => typeof entry === "string" && entry.trim().length > 0);
2553
+ }
2554
+ function meaningfulText(value) {
2555
+ return typeof value === "string" ? value.trim() : "";
2556
+ }
2557
+ function resolvesAnalysisPath(analysis, path) {
2558
+ const prefix = "evidence_snapshot.analysis";
2559
+ if (path === prefix) return true;
2560
+ if (!path.startsWith(`${prefix}.`) && !path.startsWith(`${prefix}[`)) return false;
2561
+ const suffix = path.slice(prefix.length);
2562
+ const matcher = /(?:\.([A-Za-z0-9_$-]+)|\[(\d+)\])/g;
2563
+ let index = 0;
2564
+ let current = analysis;
2565
+ for (let match = matcher.exec(suffix); match; match = matcher.exec(suffix)) {
2566
+ if (match.index !== index) return false;
2567
+ index += match[0].length;
2568
+ const [, key, arrayIndex] = match;
2569
+ if (arrayIndex !== void 0) {
2570
+ if (!Array.isArray(current)) return false;
2571
+ current = current[Number(arrayIndex)];
2572
+ } else {
2573
+ if (current === null || typeof current !== "object" || Array.isArray(current)) return false;
2574
+ current = current[key];
2575
+ }
2576
+ if (current === void 0) return false;
2577
+ }
2578
+ return index === suffix.length;
2579
+ }
2580
+ function validateEvidenceLinks(item) {
2581
+ const sourceLink = typeof item.source_link === "string" && item.source_link.trim();
2582
+ let evidenceLink = false;
2583
+ if ("evidence_links" in item) {
2584
+ evidenceLink = array(item.evidence_links, "items[].evidence_links").some((value) => {
2585
+ const link = object(value, "items[].evidence_links[]");
2586
+ return typeof link.url === "string" && !!link.url.trim();
2587
+ });
2588
+ }
2589
+ if (!sourceLink && !evidenceLink) {
2590
+ throw new Error("items[] must include source_link or evidence_links[].url so reviewers can open source evidence.");
2591
+ }
2592
+ }
2593
+ function validatePresentation(presentation, itemIds) {
2594
+ const displayed = /* @__PURE__ */ new Set();
2595
+ for (const topicValue of array(presentation.topics, "presentation_snapshot.topics")) {
2596
+ const topic = object(topicValue, "presentation_snapshot.topics[]");
2597
+ if ("items" in topic) {
2598
+ throw new Error("presentation_snapshot.topics[] must use groups[].items, not top-level items.");
2599
+ }
2600
+ for (const groupValue of array(topic.groups, "presentation_snapshot.topics[].groups")) {
2601
+ const group = object(groupValue, "presentation_snapshot.topics[].groups[]");
2602
+ if (typeof group.id !== "string" || !group.id.trim() || typeof group.name !== "string" || !group.name.trim()) {
2603
+ throw new Error("presentation_snapshot.topics[].groups[] requires nonempty string id and name.");
2604
+ }
2605
+ for (const itemValue of array(group.items, "presentation_snapshot.topics[].groups[].items")) {
2606
+ const item = object(itemValue, "presentation_snapshot.topics[].groups[].items[]");
2607
+ if (typeof item.id !== "string" || !item.id.trim()) {
2608
+ throw new Error("presentation_snapshot display items require nonempty string id.");
2609
+ }
2610
+ if (!itemIds.has(item.id)) {
2611
+ throw new Error("presentation_snapshot references an unknown client_item_id.");
2612
+ }
2613
+ displayed.add(item.id);
2614
+ }
2615
+ }
2616
+ }
2617
+ for (const id of itemIds) {
2618
+ if (!displayed.has(String(id))) {
2619
+ throw new Error("presentation_snapshot must display every submitted item under topics[].groups[].items.");
2620
+ }
2621
+ }
2622
+ }
2623
+ function normalizeSubmitInput(input, publicWebHost, sourceHost) {
2624
+ normalizeResourceUrlFields(input, publicWebHost, sourceHost);
2625
+ return input;
2626
+ }
2627
+ function normalizeSubmitResult(result, publicWebHost, sourceHost) {
2628
+ normalizeResourceUrlFields(result, publicWebHost, sourceHost);
2629
+ if (result && typeof result === "object" && !Array.isArray(result)) {
2630
+ const data = result;
2631
+ if (typeof data.review_url === "string" && data.review_url.trim()) {
2632
+ data.review_page_url = normalizeResourceUrls(data.review_url, publicWebHost, sourceHost);
2633
+ }
2634
+ }
2635
+ return result;
2636
+ }
2637
+
2638
+ // src/commands/te-analysis/meta/agent-review/review.ts
2639
+ var agentReviewReview = createAnalysisMetaCapabilityCommand({
2640
+ resource: "agent-review",
2641
+ command: "review",
2642
+ capabilityId: "metadata.agent_review.review",
2643
+ description: "Record explicit human decisions and execute approved certification proposals.",
2644
+ risk: "write",
2645
+ flags: [
2646
+ projectFlag,
2647
+ batchFlag,
2648
+ clientRequestFlag,
2649
+ { name: "decisions", type: "json", required: true, desc: "Versioned decisions: item_id (string), version (integer), decision APPROVE/DEFER/REJECT, reason (required for DEFER/REJECT)." }
2650
+ ],
2651
+ buildInput: (ctx) => {
2652
+ const decisions = array(ctx.json("decisions"), "--decisions").map((value) => {
2653
+ const decision = object(value, "decisions[]");
2654
+ fields(decision, ["item_id", "version", "decision", "reason"], "decisions[]");
2655
+ decimalId(decision.item_id, "decisions[].item_id");
2656
+ if (!Number.isSafeInteger(decision.version) || Number(decision.version) < 0) {
2657
+ throw new Error("decisions[].version must be a nonnegative safe integer from detail.");
2658
+ }
2659
+ if (!["APPROVE", "DEFER", "REJECT"].includes(String(decision.decision))) {
2660
+ throw new Error("decisions[].decision must be APPROVE, DEFER, or REJECT.");
2661
+ }
2662
+ if (decision.reason !== void 0 && typeof decision.reason !== "string") {
2663
+ throw new Error("decisions[].reason must be a string.");
2664
+ }
2665
+ if (decision.decision !== "APPROVE" && !String(decision.reason ?? "").trim()) {
2666
+ throw new Error("DEFER and REJECT require a nonempty reason.");
2667
+ }
2668
+ return decision;
2669
+ });
2670
+ unique(decisions.map((decision) => decision.item_id), "decisions[].item_id");
2671
+ return { ...batchInput(ctx), client_request_id: text(ctx, "client-request-id"), decisions };
2672
+ }
2673
+ });
2674
+
2675
+ // src/commands/te-analysis/meta/agent-review/retry.ts
2676
+ var agentReviewRetry = createAnalysisMetaCapabilityCommand({
2677
+ resource: "agent-review",
2678
+ command: "retry",
2679
+ capabilityId: "metadata.agent_review.retry",
2680
+ description: "Retry selected failed executions under their existing approvals.",
2681
+ risk: "write",
2682
+ flags: [
2683
+ projectFlag,
2684
+ batchFlag,
2685
+ clientRequestFlag,
2686
+ { name: "item-ids", type: "json", required: true, desc: "1 to 5000 failed item IDs as decimal strings. Successful items must not be retried." }
2687
+ ],
2688
+ buildInput: (ctx) => {
2689
+ const ids = array(ctx.json("item-ids"), "--item-ids").map((id) => decimalId(id, "item_ids[]"));
2690
+ unique(ids, "item_ids");
2691
+ return { ...batchInput(ctx), client_request_id: text(ctx, "client-request-id"), item_ids: ids };
2692
+ }
2693
+ });
2694
+
2695
+ // src/commands/te-analysis/meta/agent-review/evidence.ts
2696
+ var agentReviewEvidence = createAnalysisMetaCapabilityCommand({
2697
+ resource: "agent-review",
2698
+ command: "evidence",
2699
+ capabilityId: "metadata.agent_review.evidence",
2700
+ description: "Read current server-generated asset review evidence before drafting a proposal. Does not submit or certify.",
2701
+ risk: "read",
2702
+ flags: [
2703
+ projectFlag,
2704
+ { name: "target-type", type: "string", required: true, desc: "Resolved asset type supported by Common, for example report or dashboard." },
2705
+ { name: "target-key", type: "string", required: true, desc: "Exact resolved asset key as a string; preserve all ID digits and technical names." }
2706
+ ],
2707
+ buildInput: (ctx) => ({
2708
+ ...projectInput2(ctx),
2709
+ review_type: "ASSET_GOVERNANCE",
2710
+ target_ref: { type: text(ctx, "target-type"), key: text(ctx, "target-key") },
2711
+ action_type: "CERTIFY",
2712
+ proposal_payload: { authentication_status: 1 }
2713
+ })
2714
+ });
2715
+
2716
+ // src/commands/te-analysis/meta/agent-review/index.ts
2717
+ var agentReviewList = createAnalysisMetaCapabilityCommand({
2718
+ resource: "agent-review",
2719
+ command: "list",
2720
+ capabilityId: "metadata.agent_review.list",
2721
+ description: "List recent visible review batches and their current status.",
2722
+ risk: "read",
2723
+ flags: [projectFlag, { name: "limit", type: "number", min: 1, max: 500, default: 20, desc: "Maximum recent batches, from 1 to 500. Default: 20." }],
2724
+ buildInput: (ctx) => {
2725
+ const limit = ctx.str("limit") === "" ? 20 : ctx.num("limit");
2726
+ if (!Number.isInteger(limit) || limit < 1 || limit > 500) throw new Error("--limit must be an integer from 1 to 500.");
2727
+ return { ...projectInput2(ctx), limit };
2728
+ }
2729
+ });
2730
+ var agentReviewDetail = createAnalysisMetaCapabilityCommand({
2731
+ resource: "agent-review",
2732
+ command: "detail",
2733
+ capabilityId: "metadata.agent_review.detail",
2734
+ description: "Read review snapshots, item versions, decisions, and execution status.",
2735
+ risk: "read",
2736
+ flags: [projectFlag, batchFlag],
2737
+ buildInput: batchInput
2738
+ });
2739
+ var agentReviewRecords = createAnalysisMetaCapabilityCommand({
2740
+ resource: "agent-review",
2741
+ command: "records",
2742
+ capabilityId: "metadata.agent_review.records",
2743
+ description: "Read immutable review and execution events for a batch.",
2744
+ risk: "read",
2745
+ flags: [projectFlag, batchFlag],
2746
+ buildInput: batchInput
2747
+ });
2748
+ var agent_review_default = [agentReviewSubmitToPage, agentReviewList, agentReviewDetail, agentReviewRecords, agentReviewReview, agentReviewRetry, agentReviewEvidence];
2749
+
2750
+ // src/commands/te-analysis/meta/index.ts
2751
+ var commands12 = [
2098
2752
  ...event_default,
2099
2753
  ...property_default,
2100
2754
  ...virtual_event_default,
@@ -2104,9 +2758,11 @@ var commands11 = [
2104
2758
  ...exchange_default,
2105
2759
  ...super_metadata_default,
2106
2760
  ...datatable_default,
2107
- ...catalog_default
2761
+ ...catalog_default,
2762
+ ...governance_recommendation_default,
2763
+ ...agent_review_default
2108
2764
  ];
2109
- var meta_default = commands11;
2765
+ var meta_default = commands12;
2110
2766
 
2111
2767
  // src/commands/te-analysis/meta/asset/usage-list.ts
2112
2768
  var analysisMetaAssetUsageList = createAnalysisGovernanceCapabilityCommand({
@@ -2158,9 +2814,9 @@ var analysisMetaAssetImpactList = createAnalysisGovernanceCapabilityCommand({
2158
2814
  command: "list",
2159
2815
  capabilityId: "governance.asset_impact.list",
2160
2816
  description: "List downstream impacts for one asset.",
2161
- flags: [projectIdFlag, nodeIdFlag, queryFlag, searchsFlag, ruleFlag, directoryLimitFlag, directoryOffsetFlag, payloadFlag],
2817
+ flags: [projectIdFlag, nodeIdFlag, directoryLimitFlag, directoryOffsetFlag, payloadFlag],
2162
2818
  risk: "read",
2163
- buildInput: (ctx) => assetGovernanceInput(ctx, ["node_id", "query", "searchs", "rule", "limit", "offset"])
2819
+ buildInput: (ctx) => assetGovernanceInput(ctx, ["node_id", "limit", "offset"])
2164
2820
  });
2165
2821
 
2166
2822
  // src/commands/te-analysis/meta/asset/query-history-list.ts
@@ -2169,9 +2825,9 @@ var analysisMetaAssetQueryHistoryList = createAnalysisGovernanceCapabilityComman
2169
2825
  command: "list",
2170
2826
  capabilityId: "governance.asset_query_history.list",
2171
2827
  description: "List query history for one asset.",
2172
- flags: [projectIdFlag, nodeIdFlag, queryFlag, searchsFlag, ruleFlag, directoryLimitFlag, directoryOffsetFlag, payloadFlag],
2828
+ flags: [projectIdFlag, nodeIdFlag, directoryLimitFlag, directoryOffsetFlag, payloadFlag],
2173
2829
  risk: "read",
2174
- buildInput: (ctx) => assetGovernanceInput(ctx, ["node_id", "query", "searchs", "rule", "limit", "offset"])
2830
+ buildInput: (ctx) => assetGovernanceInput(ctx, ["node_id", "limit", "offset"])
2175
2831
  });
2176
2832
 
2177
2833
  // src/commands/te-analysis/meta/asset/rule-schema.ts
@@ -2235,9 +2891,9 @@ var analysisMetaAssetBatchInfoExport = createAnalysisGovernanceCapabilityCommand
2235
2891
  command: "batch-info-export",
2236
2892
  capabilityId: "governance.asset.batch_export_info",
2237
2893
  description: "Batch export asset information.",
2238
- flags: [projectIdFlag, nodeIdsFlag, reportsVersionFlag, zoneOffsetFlag, scheduleUiConfigFlag, dashboardStatusFlag, refreshTypeFlag, cacheConfigFlag, clearHistoryTagFlag, payloadFlag],
2894
+ flags: [projectIdFlag, nodeIdsFlag, payloadFlag],
2239
2895
  risk: "read",
2240
- buildInput: (ctx) => assetGovernanceInput(ctx, ["node_ids", "reports_version", "zone_offset", "schedule_ui_config", "dashboard_status", "refresh_type", "cache_config", "clear_history_tag"])
2896
+ buildInput: (ctx) => assetGovernanceInput(ctx, ["node_ids"])
2241
2897
  });
2242
2898
 
2243
2899
  // src/commands/te-analysis/meta/asset/batch-sql-export.ts
@@ -2246,9 +2902,9 @@ var analysisMetaAssetBatchSqlExport = createAnalysisGovernanceCapabilityCommand(
2246
2902
  command: "batch-sql-export",
2247
2903
  capabilityId: "governance.asset.batch_export_sql",
2248
2904
  description: "Batch export asset SQL definitions.",
2249
- flags: [projectIdFlag, nodeIdsFlag, reportsVersionFlag, zoneOffsetFlag, scheduleUiConfigFlag, dashboardStatusFlag, refreshTypeFlag, cacheConfigFlag, clearHistoryTagFlag, payloadFlag],
2905
+ flags: [projectIdFlag, nodeIdsFlag, payloadFlag],
2250
2906
  risk: "read",
2251
- buildInput: (ctx) => assetGovernanceInput(ctx, ["node_ids", "reports_version", "zone_offset", "schedule_ui_config", "dashboard_status", "refresh_type", "cache_config", "clear_history_tag"])
2907
+ buildInput: (ctx) => assetGovernanceInput(ctx, ["node_ids"])
2252
2908
  });
2253
2909
 
2254
2910
  // src/commands/te-analysis/meta/asset/batch-delete.ts
@@ -2290,9 +2946,9 @@ var analysisMetaAssetBatchDashboardScheduleFreeze = createAnalysisGovernanceCapa
2290
2946
  command: "batch-dashboard-schedule-freeze",
2291
2947
  capabilityId: "governance.asset.batch_dashboard_schedule_freeze",
2292
2948
  description: "Batch freeze dashboard schedules for governed assets.",
2293
- flags: [projectIdFlag, nodeIdsFlag, reportsVersionFlag, zoneOffsetFlag, scheduleUiConfigFlag, dashboardStatusFlag, refreshTypeFlag, cacheConfigFlag, payloadFlag],
2949
+ flags: [projectIdFlag, nodeIdsFlag, scheduleUiConfigFlag, dashboardStatusFlag, refreshTypeFlag, cacheConfigFlag, payloadFlag],
2294
2950
  risk: "write",
2295
- buildInput: (ctx) => assetGovernanceInput(ctx, ["node_ids", "reports_version", "zone_offset", "schedule_ui_config", "dashboard_status", "refresh_type", "cache_config"])
2951
+ buildInput: (ctx) => assetGovernanceInput(ctx, ["node_ids", "schedule_ui_config", "dashboard_status", "refresh_type", "cache_config"])
2296
2952
  });
2297
2953
 
2298
2954
  // src/commands/te-analysis/meta/asset/batch-handover.ts
@@ -2330,7 +2986,7 @@ var analysisMetaAssetOperationRecordExport = createAnalysisGovernanceCapabilityC
2330
2986
 
2331
2987
  // src/commands/te-analysis/governance/asset-authentication-shared.ts
2332
2988
  import { createHash as createHash3, randomBytes as randomBytes3 } from "crypto";
2333
- import { readFileSync, statSync } from "fs";
2989
+ import { readFileSync as readFileSync2, statSync } from "fs";
2334
2990
  import { mkdir as mkdir3, open as open3, rm as rm3 } from "fs/promises";
2335
2991
  import { dirname as dirname3, extname as extname3, resolve as resolve3 } from "path";
2336
2992
  var ASSET_TYPES = /* @__PURE__ */ new Set([
@@ -2355,7 +3011,7 @@ var OUTPUT_FIELDS = /* @__PURE__ */ new Set([
2355
3011
  "user_count90d",
2356
3012
  "impact_degree"
2357
3013
  ]);
2358
- var assetTypesFlag = {
3014
+ var assetTypesFlag2 = {
2359
3015
  name: "asset-types",
2360
3016
  type: "json",
2361
3017
  required: false,
@@ -2416,7 +3072,7 @@ var authenticationExportOutputFlag = {
2416
3072
  desc: "Local .jsonl output path. Integrity metadata is written to <output>.meta.json."
2417
3073
  };
2418
3074
  var authenticationFilterFlags = [
2419
- assetTypesFlag,
3075
+ assetTypesFlag2,
2420
3076
  authenticationStatusFilterFlag,
2421
3077
  governanceQueriesFlag,
2422
3078
  heatCountGtFlag,
@@ -2538,7 +3194,7 @@ function assetRefsInput(ctx) {
2538
3194
  if (!statSync(path, { throwIfNoEntry: false })?.isFile()) {
2539
3195
  throw new CliValidationError(`--asset-file must be a regular file: ${path}`);
2540
3196
  }
2541
- values = readFileSync(path, "utf8").split(/\r?\n/).filter(Boolean).map((line, index) => {
3197
+ values = readFileSync2(path, "utf8").split(/\r?\n/).filter(Boolean).map((line, index) => {
2542
3198
  try {
2543
3199
  return JSON.parse(line);
2544
3200
  } catch {
@@ -2671,7 +3327,7 @@ var analysisGovernanceAssetAuthenticationUpdate = createAnalysisGovernanceCapabi
2671
3327
  });
2672
3328
 
2673
3329
  // src/commands/te-analysis/governance/index.ts
2674
- var commands12 = [
3330
+ var commands13 = [
2675
3331
  analysisGovernanceAssetAuthenticationList,
2676
3332
  analysisGovernanceAssetAuthenticationExport,
2677
3333
  analysisGovernanceAssetAuthenticationUpdate,
@@ -2696,7 +3352,7 @@ var commands12 = [
2696
3352
  analysisMetaAssetOperationRecordList,
2697
3353
  analysisMetaAssetOperationRecordExport
2698
3354
  ];
2699
- var governance_default = commands12;
3355
+ var governance_default = commands13;
2700
3356
 
2701
3357
  // src/commands/te-analysis/report/list.ts
2702
3358
  var reportList = createAnalysisCapabilityCommand({
@@ -2782,7 +3438,7 @@ var REPORT_WRITE_MODEL_TYPE_VALUES = [
2782
3438
  "tag"
2783
3439
  ];
2784
3440
  var REPORT_WRITE_MODEL_DESCRIPTION = `${AI_MODEL_DESCRIPTION} Report create/update also supports tag for saved tag report data; use tag as the AI-facing spelling.`;
2785
- var AI_DEFINITION_DESCRIPTION = 'AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. Distribution filters must be attached to the corresponding distribution_metrics[].filters; do not use top-level filters or relation. For path definitions, global filters support user_property, cluster, and tag only; event_property is not supported. session_unit accepts second (1..999), minute (1..999), or hour (1..24). Do not use day; express one day as session_interval=24 and session_unit=hour. For SQL, a simple query is {"sql":"select ..."}; raw variables use ${name}, while typed params use ${Text:name}, ${Selector:name}, or ${PartDate:name}. PartDate expands to a complete predicate, so write WHERE ${PartDate:d}, not a column followed by the placeholder. A part_date parameter may set boolean use_timezone; it defaults to false and controls whether that parameter uses the query effective timezone. Selector value must match one options[].value. Trino identifiers containing #, $, @, spaces, punctuation, or a reserved word must be delimited with double quotes, for example SELECT "#user_id", "$part_event", "end" FROM ...; single quotes are string literals. For multiline SQL JSON, the decoded sql value must contain a real line break; do not submit a literal \\n sequence outside quoted SQL text. Queries against an event table must include a date-partition predicate on the quoted "$part_date" column, for example WHERE "$part_date" BETWEEN \'2026-07-01\' AND \'2026-07-07\'; the backend rejects event-table SQL without it. The CLI preserves SQL text and never auto-quotes identifiers.';
3441
+ var AI_DEFINITION_DESCRIPTION = 'Event metrics: omit optional display_name unless the target command schema explicitly supports it. Funnel step filters use event_property_name (not field) and string-array values, including "true"/"false" for boolean properties. For tag/cluster filters, cluster_date_policy accepts LATEST (default), AUTO (match the computed result for each analysis date), or SPECIFIED (requires specified_cluster_date in yyyy-MM-dd format). AI-facing model definition JSON. Do not pass raw QP, events, event_view, visual_view, or analysis_query. Distribution filters must be attached to the corresponding distribution_metrics[].filters; do not use top-level filters or relation. For path definitions, global filters support user_property, cluster, and tag only; event_property is not supported. session_unit accepts second (1..999), minute (1..999), or hour (1..24). Do not use day; express one day as session_interval=24 and session_unit=hour. For SQL, a simple query is {"sql":"select ..."}; raw variables use ${name}, while typed params use ${Text:name}, ${Selector:name}, or ${PartDate:name}. PartDate expands to a complete predicate, so write WHERE ${PartDate:d}, not a column followed by the placeholder. A part_date parameter may set boolean use_timezone; it defaults to false and controls whether that parameter uses the query effective timezone. Selector value must match one options[].value. Trino identifiers containing #, $, @, spaces, punctuation, or a reserved word must be delimited with double quotes, for example SELECT "#user_id", "$part_event", "end" FROM ...; single quotes are string literals. For multiline SQL JSON, the decoded sql value must contain a real line break; do not submit a literal \\n sequence outside quoted SQL text. Queries against an event table must include a date-partition predicate on the quoted "$part_date" column, for example WHERE "$part_date" BETWEEN \'2026-07-01\' AND \'2026-07-07\'; the backend rejects event-table SQL without it. The CLI preserves SQL text and never auto-quotes identifiers.';
2786
3442
  var REPORT_WRITE_DEFINITION_DESCRIPTION = `${AI_DEFINITION_DESCRIPTION} For model_type=tag, pass a tag report intent such as {"tag":{"tag_name":"vip_users","time_range":{"mode":"recent","unit":"day","value":7}}}. Tags are supported for report create/update and report data, not ad-hoc analysis.`;
2787
3443
  function aiModelTypeFlag(required) {
2788
3444
  return {
@@ -2792,6 +3448,34 @@ function aiModelTypeFlag(required) {
2792
3448
  desc: AI_MODEL_DESCRIPTION
2793
3449
  };
2794
3450
  }
3451
+ function validateFunnelStepFilters(modelType, definition) {
3452
+ if (modelType !== "funnel" || !isRecord(definition) || !isRecord(definition.funnel)) return;
3453
+ const steps = definition.funnel.steps;
3454
+ if (!Array.isArray(steps)) return;
3455
+ const errors = [];
3456
+ steps.forEach((step, stepIndex) => {
3457
+ if (!isRecord(step) || !Array.isArray(step.filters)) return;
3458
+ step.filters.forEach((filter, filterIndex) => {
3459
+ if (!isRecord(filter)) return;
3460
+ const location = `definition.funnel.steps[${stepIndex}].filters[${filterIndex}]`;
3461
+ if ("field" in filter || typeof filter.event_property_name !== "string" || !filter.event_property_name.trim()) {
3462
+ errors.push(`${location}: use a non-empty event_property_name, not a generic field object.`);
3463
+ }
3464
+ if ("values" in filter && (!Array.isArray(filter.values) || filter.values.some((value) => typeof value !== "string"))) {
3465
+ errors.push(`${location}.values: use an array of strings (boolean properties use "true" or "false").`);
3466
+ }
3467
+ });
3468
+ });
3469
+ if (errors.length) {
3470
+ throw new CliValidationError(errors.join("\n"), {
3471
+ code: "INVALID_ANALYSIS_DEFINITION",
3472
+ hint: "Correct all reported step-filter fields together, preserve the complete requested definition, then validate it once. No query was dispatched."
3473
+ });
3474
+ }
3475
+ }
3476
+ function isRecord(value) {
3477
+ return value !== null && typeof value === "object" && !Array.isArray(value);
3478
+ }
2795
3479
  function reportWriteModelTypeFlag(required) {
2796
3480
  return {
2797
3481
  name: "model-type",
@@ -2820,7 +3504,7 @@ var metadataResolutionsFlag = {
2820
3504
  name: "resolutions",
2821
3505
  type: "json",
2822
3506
  required: false,
2823
- desc: "Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Reuse the unchanged definition and only pass values explicitly confirmed by the user."
3507
+ desc: "Optional user-confirmed metadata bindings keyed by compiler error path. Each value requires raw_value, resource_type, and resource_key. Keep each bound field's path and raw_value; fill the confirmed aggregation and other model parameters in the definition."
2824
3508
  };
2825
3509
  var reportMetadataResolutionsFlag = {
2826
3510
  ...metadataResolutionsFlag,
@@ -2843,6 +3527,7 @@ var reportCreate = createAnalysisCapabilityCommand({
2843
3527
  { name: "report-name", type: "string", required: true, desc: "Report display name." },
2844
3528
  reportWriteModelTypeFlag(true),
2845
3529
  reportWriteDefinitionFlag(true),
3530
+ modelDefinitionIntentSnapshotFlag,
2846
3531
  reportMetadataResolutionsFlag,
2847
3532
  { name: "report-desc", type: "string", required: false, desc: "Optional report description." },
2848
3533
  { name: "cache-seconds", type: "number", required: false, desc: "Optional cache duration in seconds." },
@@ -2851,6 +3536,7 @@ var reportCreate = createAnalysisCapabilityCommand({
2851
3536
  ],
2852
3537
  risk: "write",
2853
3538
  validate: validateReportMetadataResolutions,
3539
+ intentConsistency: { definitionFlag: "definition", modelTypeFlag: "model-type" },
2854
3540
  buildInput: (ctx) => compactInput({
2855
3541
  ...projectInput(ctx),
2856
3542
  report_name: ctx.str("report-name"),
@@ -2893,12 +3579,14 @@ var reportUpdate = createAnalysisCapabilityCommand({
2893
3579
  { name: "report-desc", type: "string", required: false, desc: "New report description." },
2894
3580
  reportWriteModelTypeFlag(false),
2895
3581
  reportWriteDefinitionFlag(false),
3582
+ modelDefinitionIntentSnapshotFlag,
2896
3583
  reportMetadataResolutionsFlag,
2897
3584
  { name: "cache-seconds", type: "number", required: false, desc: "Optional cache duration in seconds." },
2898
3585
  { name: "query-duration-ms", type: "number", required: false, desc: "Optional last query duration in milliseconds." }
2899
3586
  ],
2900
3587
  risk: "write",
2901
3588
  validate: validateReportUpdate,
3589
+ intentConsistency: { definitionFlag: "definition", modelTypeFlag: "model-type" },
2902
3590
  buildInput: (ctx) => compactInput({
2903
3591
  ...projectInput(ctx),
2904
3592
  report_id: ctx.num("report-id"),
@@ -2928,7 +3616,7 @@ var reportDelete = createAnalysisCapabilityCommand({
2928
3616
  });
2929
3617
 
2930
3618
  // src/commands/te-analysis/report/index.ts
2931
- var commands13 = [
3619
+ var commands14 = [
2932
3620
  reportList,
2933
3621
  reportListExport,
2934
3622
  reportGet,
@@ -2936,10 +3624,43 @@ var commands13 = [
2936
3624
  reportUpdate,
2937
3625
  reportDelete
2938
3626
  ];
2939
- var report_default = commands13;
3627
+ var report_default = commands14;
2940
3628
 
2941
3629
  // src/commands/te-analysis/report-data/shared.ts
2942
3630
  var reportDataZoneOffsetDescription = "Query execution timezone. Omit it to match the report UI for the current user (user selection when available, otherwise project default). Use a fixed UTC offset from -12 through 14, or 99 for local-time mode with no conversion to one fixed UTC offset; 99 is not UTC+99. This is not persisted in the report definition.";
3631
+ var sqlReportParamsDescription = "SQL reports only. First run analysis report get for every target SQL report; each name must exist in every definition.params. For a selector parameter, put the exact UI option label from definition.params[].options[].name in the override value field; never send options[].value or its SQL fragment. Other parameter types use their documented value/range fields. Do not send definition fields such as paramType, selectorItems, options, or use_timezone.";
3632
+ var SQL_SELECTOR_RUNTIME_ERROR_HINT = "If --sql-params overrides a selector, run analysis report get and copy the exact definition.params[].options[].name label into the override value field. Do not pass options[].value or its underlying SQL fragment, and do not guess or automatically rewrite an ambiguous option.";
3633
+ function enrichSqlSelectorRuntimeError(error) {
3634
+ if (!(error instanceof CapabilityGatewayError) || error.code !== "INVALID_REPORT_DEFINITION" || !/selectorName\s+invalid/i.test(error.message)) {
3635
+ return error;
3636
+ }
3637
+ const hint = error.hint ? `${error.hint} ${SQL_SELECTOR_RUNTIME_ERROR_HINT}` : SQL_SELECTOR_RUNTIME_ERROR_HINT;
3638
+ return new CapabilityGatewayError(
3639
+ error.message,
3640
+ error.code,
3641
+ error.httpStatus,
3642
+ hint,
3643
+ error.meta
3644
+ );
3645
+ }
3646
+ async function withSqlSelectorRuntimeErrorHint(operation) {
3647
+ try {
3648
+ return await operation();
3649
+ } catch (error) {
3650
+ throw enrichSqlSelectorRuntimeError(error);
3651
+ }
3652
+ }
3653
+ function withSqlSelectorRuntimeDiagnostics(command) {
3654
+ const validateInput2 = command.validateInput;
3655
+ const dryRun = command.dryRun;
3656
+ const execute = command.execute;
3657
+ return {
3658
+ ...command,
3659
+ ...validateInput2 ? { validateInput: (ctx) => withSqlSelectorRuntimeErrorHint(() => validateInput2(ctx)) } : {},
3660
+ ...dryRun ? { dryRun: (ctx) => withSqlSelectorRuntimeErrorHint(() => dryRun(ctx)) } : {},
3661
+ execute: (ctx) => withSqlSelectorRuntimeErrorHint(() => execute(ctx))
3662
+ };
3663
+ }
2943
3664
  function reportDataInput(ctx) {
2944
3665
  return compactInput({
2945
3666
  ...projectInput(ctx),
@@ -2967,7 +3688,7 @@ function reportDataExportInput(ctx) {
2967
3688
  }
2968
3689
 
2969
3690
  // src/commands/te-analysis/report-data/run.ts
2970
- var reportDataRun = createAnalysisCapabilityCommand({
3691
+ var reportDataRun = withSqlSelectorRuntimeDiagnostics(createAnalysisCapabilityCommand({
2971
3692
  resource: "report-data",
2972
3693
  command: "run",
2973
3694
  capabilityId: "analysis.report_data.run",
@@ -2978,7 +3699,7 @@ var reportDataRun = createAnalysisCapabilityCommand({
2978
3699
  requestIdFlag,
2979
3700
  { name: "filters", type: "json", required: false, desc: 'Non-SQL analysis models only. SQL-only requests reject this field; mixed batches warn for SQL report_ids that ignore it. AI-facing shape: {"relation":"and","items":[{"field":{"name":"country","type":"user_property"},"operator":"eq","values":["US"]}]}. Never pass QP taFilters.' },
2980
3701
  { name: "group-by", type: "json", required: false, desc: 'Non-SQL analysis models only. SQL-only requests reject this field; mixed batches warn. AI-facing shape: [{"field":{"name":"country","type":"user_property"}}]. Time granularity uses --time-granularity.' },
2981
- { name: "sql-params", type: "json", required: false, desc: 'SQL reports only. First run analysis report get for every target SQL report; each name must exist in every definition.params. Send value overrides only, for example [{"name":"platform","value":"ios"}] or saved part_date/time parameters with start_time/end_time. Do not send definition fields such as paramType, selectorItems, or use_timezone.' },
3702
+ { name: "sql-params", type: "json", required: false, desc: sqlReportParamsDescription },
2982
3703
  { name: "start-time", type: "string", required: false, desc: "Non-SQL analysis-model date override start, yyyy-MM-dd. SQL dates must be saved parameters overridden through --sql-params." },
2983
3704
  { name: "end-time", type: "string", required: false, desc: "Non-SQL analysis-model date override end, yyyy-MM-dd. SQL dates must be saved parameters overridden through --sql-params." },
2984
3705
  { name: "time-granularity", type: "string", required: false, desc: "Non-SQL analysis-model time granularity override. SQL accepts only --sql-params." },
@@ -2992,10 +3713,10 @@ var reportDataRun = createAnalysisCapabilityCommand({
2992
3713
  risk: "read",
2993
3714
  validate: validateClusterQueryRouting,
2994
3715
  buildInput: reportDataInput
2995
- });
3716
+ }));
2996
3717
 
2997
3718
  // src/commands/te-analysis/report-data/export.ts
2998
- var reportDataExport = createAnalysisCapabilityCommand({
3719
+ var reportDataExport = withSqlSelectorRuntimeDiagnostics(createAnalysisCapabilityCommand({
2999
3720
  resource: "report-data",
3000
3721
  command: "export",
3001
3722
  capabilityId: "analysis.report_data.export",
@@ -3007,7 +3728,7 @@ var reportDataExport = createAnalysisCapabilityCommand({
3007
3728
  requestIdFlag,
3008
3729
  { name: "filters", type: "json", required: false, desc: "Non-SQL analysis models only. SQL-only requests reject this field; mixed batches are best-effort. Use AI-facing field intent, never QP taFilters." },
3009
3730
  { name: "group-by", type: "json", required: false, desc: 'Non-SQL analysis models only. SQL-only requests reject this field. Shape: [{"field":{"name":"country","type":"user_property"}}].' },
3010
- { name: "sql-params", type: "json", required: false, desc: "SQL reports only. First run analysis report get for every target SQL report; each name must exist in every definition.params. Send value overrides only, including saved part_date/time parameters for date changes. Do not send definition fields such as paramType, selectorItems, or use_timezone." },
3731
+ { name: "sql-params", type: "json", required: false, desc: sqlReportParamsDescription },
3011
3732
  { name: "start-time", type: "string", required: false, desc: "Non-SQL analysis-model date override start, yyyy-MM-dd. SQL dates use --sql-params." },
3012
3733
  { name: "end-time", type: "string", required: false, desc: "Non-SQL analysis-model date override end, yyyy-MM-dd. SQL dates use --sql-params." },
3013
3734
  { name: "time-granularity", type: "string", required: false, desc: "Non-SQL analysis-model time granularity override. SQL accepts only --sql-params." },
@@ -3021,14 +3742,14 @@ var reportDataExport = createAnalysisCapabilityCommand({
3021
3742
  risk: "read",
3022
3743
  validate: validateClusterQueryRouting,
3023
3744
  buildInput: reportDataExportInput
3024
- });
3745
+ }));
3025
3746
 
3026
3747
  // src/commands/te-analysis/report-data/index.ts
3027
- var commands14 = [
3748
+ var commands15 = [
3028
3749
  reportDataRun,
3029
3750
  reportDataExport
3030
3751
  ];
3031
- var report_data_default = commands14;
3752
+ var report_data_default = commands15;
3032
3753
 
3033
3754
  // src/commands/te-analysis/report-change-log/list.ts
3034
3755
  var reportChangeLogList = createAnalysisCapabilityCommand({
@@ -3064,11 +3785,11 @@ var reportChangeLogGet = createAnalysisCapabilityCommand({
3064
3785
  });
3065
3786
 
3066
3787
  // src/commands/te-analysis/report-change-log/index.ts
3067
- var commands15 = [
3788
+ var commands16 = [
3068
3789
  reportChangeLogList,
3069
3790
  reportChangeLogGet
3070
3791
  ];
3071
- var report_change_log_default = commands15;
3792
+ var report_change_log_default = commands16;
3072
3793
 
3073
3794
  // src/commands/te-analysis/report-version/rollback.ts
3074
3795
  var reportVersionRollback = createAnalysisCapabilityCommand({
@@ -3090,10 +3811,10 @@ var reportVersionRollback = createAnalysisCapabilityCommand({
3090
3811
  });
3091
3812
 
3092
3813
  // src/commands/te-analysis/report-version/index.ts
3093
- var commands16 = [
3814
+ var commands17 = [
3094
3815
  reportVersionRollback
3095
3816
  ];
3096
- var report_version_default = commands16;
3817
+ var report_version_default = commands17;
3097
3818
 
3098
3819
  // src/commands/te-analysis/report-abnormal/get.ts
3099
3820
  var reportAbnormalGet = createAnalysisCapabilityCommand({
@@ -3110,10 +3831,10 @@ var reportAbnormalGet = createAnalysisCapabilityCommand({
3110
3831
  });
3111
3832
 
3112
3833
  // src/commands/te-analysis/report-abnormal/index.ts
3113
- var commands17 = [
3834
+ var commands18 = [
3114
3835
  reportAbnormalGet
3115
3836
  ];
3116
- var report_abnormal_default = commands17;
3837
+ var report_abnormal_default = commands18;
3117
3838
 
3118
3839
  // src/commands/te-analysis/dashboard/list.ts
3119
3840
  var dashboardList = createAnalysisCapabilityCommand({
@@ -3192,22 +3913,22 @@ var dashboardUpdate = createAnalysisCapabilityCommand({
3192
3913
  resource: "dashboard",
3193
3914
  command: "update",
3194
3915
  capabilityId: "analysis.dashboard.update",
3195
- description: "Update dashboard settings, create/update a dashboard note, save a dashboard-wide default filter, or replace the dashboard-level business filter. Use --operation settings, note-upsert, default-filter, or business-filter.",
3916
+ description: "Update dashboard settings, create/update a dashboard note, save a dashboard-wide or personal default filter, or replace the dashboard-level business filter. Use --operation settings, note-upsert, default-filter, personal-default-filter, or business-filter.",
3196
3917
  flags: [
3197
3918
  projectIdFlag,
3198
- { name: "operation", type: "string", required: true, desc: "Update operation: settings, note-upsert, default-filter, or business-filter." },
3199
- { name: "dashboard-id", type: "number", required: false, desc: "Dashboard ID for a single-dashboard update." },
3919
+ { name: "operation", type: "string", required: true, desc: "Update operation: settings, note-upsert, default-filter, personal-default-filter, or business-filter." },
3920
+ { name: "dashboard-id", type: "number", required: false, desc: "Dashboard ID. Required for note-upsert, default-filter, personal-default-filter, and single-dashboard settings updates." },
3200
3921
  { name: "dashboard-ids", type: "json", required: false, desc: "Dashboard ID array for batch settings updates." },
3201
3922
  { name: "dashboard-name", type: "string", required: false, desc: "Dashboard name for single rename." },
3202
3923
  { name: "zone-offset", type: "number", required: false, desc: "Fixed dashboard time zone offset in hours. For example, UTC+8 is 8 and UTC-5 is -5. Valid range: -12 to 14." },
3203
3924
  { name: "refresh-type", type: "number", required: false, desc: "Dashboard refresh type: 0 real-time, 1 scheduled.", min: 0, max: 1 },
3204
3925
  { name: "dashboard-status", type: "string", required: false, desc: "Dashboard status: normal or freeze." },
3205
- { name: "note-id", type: "number", required: false, desc: "Dashboard note ID. Omit to create a new note." },
3206
- { name: "note-title", type: "string", required: false, desc: "Dashboard note title." },
3207
- { name: "description", type: "string", required: false, desc: "Dashboard note description." },
3208
- { name: "ui-config", type: "string", required: false, desc: "Dashboard or note UI config string." },
3209
- { name: "filter-name", type: "string", required: false, desc: "Saved filter name. Required with --operation default-filter." },
3210
- { name: "filter", type: "json", required: false, desc: 'Saved filter in snake_case QP form. Required with --operation default-filter or business-filter. Pass {"junction_kind":"and","ta_filters":[]} to clear a business filter.' },
3926
+ { name: "note-id", type: "number", required: false, desc: "Dashboard note ID. Omit to create a new note attached to the dashboard." },
3927
+ { name: "note-title", type: "string", required: false, desc: "Dashboard note title. Defaults to empty on create; omitted values are preserved on update." },
3928
+ { name: "description", type: "string", required: false, desc: "Dashboard note description. Defaults to empty on create; omitted values are preserved on update." },
3929
+ { name: "ui-config", type: "string", required: false, desc: "Dashboard or note UI config string. Omitted note style is preserved on update." },
3930
+ { name: "filter-name", type: "string", required: false, desc: "Saved filter name. Required with --operation default-filter or personal-default-filter." },
3931
+ { name: "filter", type: "json", required: false, desc: 'Saved filter in snake_case QP form: root junction_kind (and/or) and ta_filters array; SIMPLE conditions use filter_type="SIMPLE", column_name, table_type ("0" event, "1" user, "2" cluster/tag), select_type, calcu_symbol (C00 equals), and ftv. Do not use metadata table names or property_name/values. Common validates the QP format; ae-cli forwards it without local QP validation. Required with --operation default-filter, personal-default-filter, or business-filter. Pass {"junction_kind":"and","ta_filters":[]} to clear a business filter.' },
3211
3932
  payloadFlag
3212
3933
  ],
3213
3934
  risk: "write",
@@ -3221,8 +3942,8 @@ var dashboardUpdate = createAnalysisCapabilityCommand({
3221
3942
  refresh_type: optionalNumber(ctx, "refresh-type"),
3222
3943
  dashboard_status: optionalString(ctx, "dashboard-status"),
3223
3944
  note_id: optionalNumber(ctx, "note-id"),
3224
- note_title: optionalString(ctx, "note-title"),
3225
- description: optionalString(ctx, "description"),
3945
+ note_title: optionalStringPreserveEmpty(ctx, "note-title"),
3946
+ description: optionalStringPreserveEmpty(ctx, "description"),
3226
3947
  ui_config: optionalString(ctx, "ui-config"),
3227
3948
  filter_name: optionalString(ctx, "filter-name"),
3228
3949
  filter: optionalJson(ctx, "filter"),
@@ -3371,7 +4092,7 @@ var dashboardTaskStatus = createAnalysisCapabilityCommand({
3371
4092
  });
3372
4093
 
3373
4094
  // src/commands/te-analysis/dashboard/index.ts
3374
- var commands18 = [
4095
+ var commands19 = [
3375
4096
  dashboardList,
3376
4097
  dashboardCreate,
3377
4098
  dashboardGet,
@@ -3385,7 +4106,7 @@ var commands18 = [
3385
4106
  dashboardAbnormalGet,
3386
4107
  dashboardTaskStatus
3387
4108
  ];
3388
- var dashboard_default = commands18;
4109
+ var dashboard_default = commands19;
3389
4110
 
3390
4111
  // src/commands/te-analysis/dashboard-report/add.ts
3391
4112
  var dashboardReportAdd = createAnalysisCapabilityCommand({
@@ -3407,10 +4128,10 @@ var dashboardReportAdd = createAnalysisCapabilityCommand({
3407
4128
  });
3408
4129
 
3409
4130
  // src/commands/te-analysis/dashboard-report/index.ts
3410
- var commands19 = [
4131
+ var commands20 = [
3411
4132
  dashboardReportAdd
3412
4133
  ];
3413
- var dashboard_report_default = commands19;
4134
+ var dashboard_report_default = commands20;
3414
4135
 
3415
4136
  // src/commands/te-analysis/dashboard-report-data/run.ts
3416
4137
  var dashboardReportDataRun = createAnalysisCapabilityCommand({
@@ -3466,11 +4187,11 @@ var dashboardReportDataExport = createAnalysisCapabilityCommand({
3466
4187
  });
3467
4188
 
3468
4189
  // src/commands/te-analysis/dashboard-report-data/index.ts
3469
- var commands20 = [
4190
+ var commands21 = [
3470
4191
  dashboardReportDataRun,
3471
4192
  dashboardReportDataExport
3472
4193
  ];
3473
- var dashboard_report_data_default = commands20;
4194
+ var dashboard_report_data_default = commands21;
3474
4195
 
3475
4196
  // src/commands/te-analysis/query/cancel.ts
3476
4197
  var queryCancel = createAnalysisCapabilityCommand({
@@ -3565,11 +4286,11 @@ var queryCreateResultCluster = createAnalysisCapabilityCommand({
3565
4286
  });
3566
4287
 
3567
4288
  // src/commands/te-analysis/query/index.ts
3568
- var commands21 = [
4289
+ var commands22 = [
3569
4290
  queryCancel,
3570
4291
  queryCreateResultCluster
3571
4292
  ];
3572
- var query_default = commands21;
4293
+ var query_default = commands22;
3573
4294
 
3574
4295
  // src/commands/te-analysis/query-context/get.ts
3575
4296
  var queryContextGet = createAnalysisCapabilityCommand({
@@ -3601,8 +4322,8 @@ var queryContextGet = createAnalysisCapabilityCommand({
3601
4322
  });
3602
4323
 
3603
4324
  // src/commands/te-analysis/query-context/index.ts
3604
- var commands22 = [queryContextGet];
3605
- var query_context_default = commands22;
4325
+ var commands23 = [queryContextGet];
4326
+ var query_context_default = commands23;
3606
4327
 
3607
4328
  // src/commands/te-analysis/run/inspect.ts
3608
4329
  var runInspect = {
@@ -3694,11 +4415,11 @@ function artifactIdFrom(descriptor) {
3694
4415
  }
3695
4416
 
3696
4417
  // src/commands/te-analysis/run/index.ts
3697
- var commands23 = [
4418
+ var commands24 = [
3698
4419
  runInspect,
3699
4420
  runWait
3700
4421
  ];
3701
- var run_default = commands23;
4422
+ var run_default = commands24;
3702
4423
 
3703
4424
  // src/commands/te-analysis/artifact/download.ts
3704
4425
  import { resolve as resolve4 } from "path";
@@ -3745,10 +4466,10 @@ var artifactDownload = {
3745
4466
  };
3746
4467
 
3747
4468
  // src/commands/te-analysis/artifact/index.ts
3748
- var commands24 = [
4469
+ var commands25 = [
3749
4470
  artifactDownload
3750
4471
  ];
3751
- var artifact_default = commands24;
4472
+ var artifact_default = commands25;
3752
4473
 
3753
4474
  // src/commands/te-analysis/adhoc/shared.ts
3754
4475
  var useCacheFlag2 = {
@@ -3757,17 +4478,19 @@ var useCacheFlag2 = {
3757
4478
  required: false,
3758
4479
  desc: "Whether to use query cache. Default: true."
3759
4480
  };
3760
- var zoneOffsetFlag2 = {
4481
+ var zoneOffsetFlag = {
3761
4482
  name: "zone-offset",
3762
4483
  type: "number",
3763
4484
  required: false,
3764
4485
  desc: "Optional timezone mode. Fixed UTC offsets are -12..14; 99 means stored local time without fixed UTC conversion (not UTC+99). Omit to use the project analysis default."
3765
4486
  };
3766
4487
  function adhocRunInput(ctx) {
4488
+ const definition = ctx.json("definition");
4489
+ validateFunnelStepFilters(ctx.str("model-type"), definition);
3767
4490
  return compactInput({
3768
4491
  project_id: ctx.num("project-id"),
3769
4492
  model_type: ctx.str("model-type"),
3770
- definition: ctx.json("definition"),
4493
+ definition,
3771
4494
  resolutions: optionalJson(ctx, "resolutions"),
3772
4495
  request_id: optionalString(ctx, "request-id"),
3773
4496
  use_cache: optionalBoolean(ctx, "use-cache"),
@@ -3780,10 +4503,12 @@ function adhocRunInput(ctx) {
3780
4503
  });
3781
4504
  }
3782
4505
  function adhocExportInput(ctx) {
4506
+ const definition = ctx.json("definition");
4507
+ validateFunnelStepFilters(ctx.str("model-type"), definition);
3783
4508
  return compactInput({
3784
4509
  project_id: ctx.num("project-id"),
3785
4510
  model_type: ctx.str("model-type"),
3786
- definition: ctx.json("definition"),
4511
+ definition,
3787
4512
  resolutions: optionalJson(ctx, "resolutions"),
3788
4513
  request_id: optionalString(ctx, "request-id"),
3789
4514
  use_cache: optionalBoolean(ctx, "use-cache"),
@@ -3799,10 +4524,11 @@ var adhocBaseFlags = [
3799
4524
  projectIdFlag,
3800
4525
  aiModelTypeFlag(true),
3801
4526
  aiDefinitionFlag(true),
4527
+ modelDefinitionIntentSnapshotFlag,
3802
4528
  metadataResolutionsFlag,
3803
4529
  requestIdFlag,
3804
4530
  useCacheFlag2,
3805
- zoneOffsetFlag2,
4531
+ zoneOffsetFlag,
3806
4532
  fieldsFlag,
3807
4533
  clusterQueryScopeFlag,
3808
4534
  slaveClusterIdFlag
@@ -3829,6 +4555,7 @@ var adhocRun = createAnalysisCapabilityCommand({
3829
4555
  ],
3830
4556
  risk: "read",
3831
4557
  validate: validateClusterQueryRouting,
4558
+ intentConsistency: { definitionFlag: "definition", modelTypeFlag: "model-type" },
3832
4559
  buildInput: adhocRunInput
3833
4560
  });
3834
4561
 
@@ -3844,15 +4571,16 @@ var adhocExport = createAnalysisCapabilityCommand({
3844
4571
  ],
3845
4572
  risk: "read",
3846
4573
  validate: validateClusterQueryRouting,
4574
+ intentConsistency: { definitionFlag: "definition", modelTypeFlag: "model-type" },
3847
4575
  buildInput: adhocExportInput
3848
4576
  });
3849
4577
 
3850
4578
  // src/commands/te-analysis/adhoc/index.ts
3851
- var commands25 = [
4579
+ var commands26 = [
3852
4580
  adhocRun,
3853
4581
  adhocExport
3854
4582
  ];
3855
- var adhoc_default = commands25;
4583
+ var adhoc_default = commands26;
3856
4584
 
3857
4585
  // src/commands/te-analysis/dashboard-definition/export.ts
3858
4586
  var dashboardDefinitionExport = createAnalysisCapabilityCommand({
@@ -3907,11 +4635,11 @@ var dashboardDefinitionImport = createAnalysisCapabilityCommand({
3907
4635
  });
3908
4636
 
3909
4637
  // src/commands/te-analysis/dashboard-definition/index.ts
3910
- var commands26 = [
4638
+ var commands27 = [
3911
4639
  dashboardDefinitionExport,
3912
4640
  dashboardDefinitionImport
3913
4641
  ];
3914
- var dashboard_definition_default = commands26;
4642
+ var dashboard_definition_default = commands27;
3915
4643
 
3916
4644
  // src/commands/te-analysis/dashboard-daily-report/get.ts
3917
4645
  var dashboardDailyReportGet = createAnalysisCapabilityCommand({
@@ -4095,13 +4823,13 @@ var dashboardDailyReportSendStatus = createAnalysisCapabilityCommand({
4095
4823
  });
4096
4824
 
4097
4825
  // src/commands/te-analysis/dashboard-daily-report/index.ts
4098
- var commands27 = [
4826
+ var commands28 = [
4099
4827
  dashboardDailyReportGet,
4100
4828
  dashboardDailyReportUpdate,
4101
4829
  dashboardDailyReportSend,
4102
4830
  dashboardDailyReportSendStatus
4103
4831
  ];
4104
- var dashboard_daily_report_default = commands27;
4832
+ var dashboard_daily_report_default = commands28;
4105
4833
 
4106
4834
  // src/commands/te-analysis/bi-panel/list.ts
4107
4835
  var biPanelList = createAnalysisCapabilityCommand({
@@ -4211,8 +4939,8 @@ var biPanelCopy = createAnalysisCapabilityCommand({
4211
4939
  description: "Copy a BI panel.",
4212
4940
  flags: [
4213
4941
  projectIdFlag,
4214
- { name: "panel-name", type: "string", required: false, desc: "New BI panel name." },
4215
- { name: "panel-uuid", type: "string", required: false, desc: "Source BI panel UUID." },
4942
+ { name: "panel-name", type: "string", required: true, desc: "New BI panel name." },
4943
+ { name: "panel-uuid", type: "string", required: true, desc: "Source BI panel UUID." },
4216
4944
  { name: "space-id", type: "number", required: false, desc: "Target project space ID." },
4217
4945
  { name: "folder-id", type: "number", required: false, desc: "Target folder ID." },
4218
4946
  payloadFlag
@@ -4229,7 +4957,7 @@ var biPanelCopy = createAnalysisCapabilityCommand({
4229
4957
  });
4230
4958
 
4231
4959
  // src/commands/te-analysis/bi-panel/index.ts
4232
- var commands28 = [
4960
+ var commands29 = [
4233
4961
  biPanelList,
4234
4962
  biPanelGet,
4235
4963
  biPanelCreate,
@@ -4238,7 +4966,7 @@ var commands28 = [
4238
4966
  biPanelShare,
4239
4967
  biPanelCopy
4240
4968
  ];
4241
- var bi_panel_default = commands28;
4969
+ var bi_panel_default = commands29;
4242
4970
 
4243
4971
  // src/commands/te-analysis/bi-panel-version/get.ts
4244
4972
  var biPanelVersionGet = createAnalysisCapabilityCommand({
@@ -4285,11 +5013,11 @@ var biPanelVersionPublish = createAnalysisCapabilityCommand({
4285
5013
  });
4286
5014
 
4287
5015
  // src/commands/te-analysis/bi-panel-version/index.ts
4288
- var commands29 = [
5016
+ var commands30 = [
4289
5017
  biPanelVersionGet,
4290
5018
  biPanelVersionPublish
4291
5019
  ];
4292
- var bi_panel_version_default = commands29;
5020
+ var bi_panel_version_default = commands30;
4293
5021
 
4294
5022
  // src/commands/te-analysis/bi-panel-page-data/run.ts
4295
5023
  var biPanelPageDataRun = createAnalysisCapabilityCommand({
@@ -4343,11 +5071,11 @@ var biPanelPageDataExport = createAnalysisCapabilityCommand({
4343
5071
  });
4344
5072
 
4345
5073
  // src/commands/te-analysis/bi-panel-page-data/index.ts
4346
- var commands30 = [
5074
+ var commands31 = [
4347
5075
  biPanelPageDataRun,
4348
5076
  biPanelPageDataExport
4349
5077
  ];
4350
- var bi_panel_page_data_default = commands30;
5078
+ var bi_panel_page_data_default = commands31;
4351
5079
 
4352
5080
  // src/commands/te-analysis/project-space/list.ts
4353
5081
  var projectSpaceList = createAnalysisCapabilityCommand({
@@ -4396,12 +5124,12 @@ var projectSpaceBusinessFilterUpsert = createAnalysisCapabilityCommand({
4396
5124
  });
4397
5125
 
4398
5126
  // src/commands/te-analysis/project-space/index.ts
4399
- var commands31 = [
5127
+ var commands32 = [
4400
5128
  projectSpaceList,
4401
5129
  projectSpaceGet,
4402
5130
  projectSpaceBusinessFilterUpsert
4403
5131
  ];
4404
- var project_space_default = commands31;
5132
+ var project_space_default = commands32;
4405
5133
 
4406
5134
  // src/commands/te-analysis/favorite/add.ts
4407
5135
  var favoriteAdd = createAnalysisCapabilityCommand({
@@ -4446,11 +5174,11 @@ var favoriteRemove = createAnalysisCapabilityCommand({
4446
5174
  });
4447
5175
 
4448
5176
  // src/commands/te-analysis/favorite/index.ts
4449
- var commands32 = [
5177
+ var commands33 = [
4450
5178
  favoriteAdd,
4451
5179
  favoriteRemove
4452
5180
  ];
4453
- var favorite_default = commands32;
5181
+ var favorite_default = commands33;
4454
5182
 
4455
5183
  // src/commands/te-analysis/public-link/create.ts
4456
5184
  var publicLinkCreate = createAnalysisCapabilityCommand({
@@ -4567,14 +5295,14 @@ var publicLinkDelete = createAnalysisCapabilityCommand({
4567
5295
  });
4568
5296
 
4569
5297
  // src/commands/te-analysis/public-link/index.ts
4570
- var commands33 = [
5298
+ var commands34 = [
4571
5299
  publicLinkCreate,
4572
5300
  publicLinkList,
4573
5301
  publicLinkUpdate,
4574
5302
  publicLinkOffline,
4575
5303
  publicLinkDelete
4576
5304
  ];
4577
- var public_link_default = commands33;
5305
+ var public_link_default = commands34;
4578
5306
 
4579
5307
  // src/commands/te-analysis/filter-value/list.ts
4580
5308
  var filterValueList = createAnalysisCapabilityCommand({
@@ -4608,8 +5336,8 @@ var filterValueList = createAnalysisCapabilityCommand({
4608
5336
  });
4609
5337
 
4610
5338
  // src/commands/te-analysis/filter-value/index.ts
4611
- var commands34 = [filterValueList];
4612
- var filter_value_default = commands34;
5339
+ var commands35 = [filterValueList];
5340
+ var filter_value_default = commands35;
4613
5341
 
4614
5342
  // src/commands/te-analysis/event-detail/shared.ts
4615
5343
  var eventDetailDefinitionFlag = {
@@ -4653,9 +5381,10 @@ function eventDetailExportInput(ctx) {
4653
5381
  var eventDetailBaseFlags = [
4654
5382
  projectIdFlag,
4655
5383
  eventDetailDefinitionFlag,
5384
+ definitionIntentSnapshotFlag,
4656
5385
  requestIdFlag,
4657
5386
  useCacheFlag2,
4658
- zoneOffsetFlag2
5387
+ zoneOffsetFlag
4659
5388
  ];
4660
5389
  var eventDetailExportFlags = [
4661
5390
  ...eventDetailBaseFlags,
@@ -4675,6 +5404,7 @@ var eventDetailRun = createAnalysisCapabilityCommand({
4675
5404
  syncTimeoutSecondsFlag
4676
5405
  ],
4677
5406
  risk: "read",
5407
+ intentConsistency: { definitionFlag: "definition" },
4678
5408
  buildInput: eventDetailRunInput
4679
5409
  });
4680
5410
 
@@ -4689,15 +5419,16 @@ var eventDetailExport = createAnalysisCapabilityCommand({
4689
5419
  ...eventDetailExportFlags
4690
5420
  ],
4691
5421
  risk: "read",
5422
+ intentConsistency: { definitionFlag: "definition" },
4692
5423
  buildInput: eventDetailExportInput
4693
5424
  });
4694
5425
 
4695
5426
  // src/commands/te-analysis/event-detail/index.ts
4696
- var commands35 = [
5427
+ var commands36 = [
4697
5428
  eventDetailRun,
4698
5429
  eventDetailExport
4699
5430
  ];
4700
- var event_detail_default = commands35;
5431
+ var event_detail_default = commands36;
4701
5432
 
4702
5433
  // src/commands/te-analysis/entity-detail/shared.ts
4703
5434
  var entityDetailDefinitionFlag = {
@@ -4741,9 +5472,10 @@ function entityDetailExportInput(ctx) {
4741
5472
  var entityDetailBaseFlags = [
4742
5473
  projectIdFlag,
4743
5474
  entityDetailDefinitionFlag,
5475
+ definitionIntentSnapshotFlag,
4744
5476
  requestIdFlag,
4745
5477
  useCacheFlag2,
4746
- zoneOffsetFlag2
5478
+ zoneOffsetFlag
4747
5479
  ];
4748
5480
  var entityDetailExportFlags = [
4749
5481
  ...entityDetailBaseFlags,
@@ -4763,6 +5495,7 @@ var entityDetailRun = createAnalysisCapabilityCommand({
4763
5495
  syncTimeoutSecondsFlag
4764
5496
  ],
4765
5497
  risk: "read",
5498
+ intentConsistency: { definitionFlag: "definition" },
4766
5499
  buildInput: entityDetailRunInput
4767
5500
  });
4768
5501
 
@@ -4777,15 +5510,16 @@ var entityDetailExport = createAnalysisCapabilityCommand({
4777
5510
  ...entityDetailExportFlags
4778
5511
  ],
4779
5512
  risk: "read",
5513
+ intentConsistency: { definitionFlag: "definition" },
4780
5514
  buildInput: entityDetailExportInput
4781
5515
  });
4782
5516
 
4783
5517
  // src/commands/te-analysis/entity-detail/index.ts
4784
- var commands36 = [
5518
+ var commands37 = [
4785
5519
  entityDetailRun,
4786
5520
  entityDetailExport
4787
5521
  ];
4788
- var entity_detail_default = commands36;
5522
+ var entity_detail_default = commands37;
4789
5523
 
4790
5524
  // src/commands/te-analysis/drilldown-events/shared.ts
4791
5525
  var queryContextIdFlag = {
@@ -4873,8 +5607,8 @@ var drilldownEventsRun = createAnalysisCapabilityCommand({
4873
5607
  });
4874
5608
 
4875
5609
  // src/commands/te-analysis/drilldown-events/index.ts
4876
- var commands37 = [drilldownEventsRun, drilldownEventsExport];
4877
- var drilldown_events_default = commands37;
5610
+ var commands38 = [drilldownEventsRun, drilldownEventsExport];
5611
+ var drilldown_events_default = commands38;
4878
5612
 
4879
5613
  // src/commands/te-analysis/drilldown-entities/shared.ts
4880
5614
  var queryContextIdFlag2 = {
@@ -4958,8 +5692,8 @@ var drilldownEntitiesRun = createAnalysisCapabilityCommand({
4958
5692
  });
4959
5693
 
4960
5694
  // src/commands/te-analysis/drilldown-entities/index.ts
4961
- var commands38 = [drilldownEntitiesRun, drilldownEntitiesExport];
4962
- var drilldown_entities_default = commands38;
5695
+ var commands39 = [drilldownEntitiesRun, drilldownEntitiesExport];
5696
+ var drilldown_entities_default = commands39;
4963
5697
 
4964
5698
  // src/commands/te-analysis/drilldown-user-events/shared.ts
4965
5699
  var drilldownContextIdFlag = {
@@ -5060,8 +5794,8 @@ var drilldownUserEventsRun = createAnalysisCapabilityCommand({
5060
5794
  });
5061
5795
 
5062
5796
  // src/commands/te-analysis/drilldown-user-events/index.ts
5063
- var commands39 = [drilldownUserEventsRun, drilldownUserEventsExport];
5064
- var drilldown_user_events_default = commands39;
5797
+ var commands40 = [drilldownUserEventsRun, drilldownUserEventsExport];
5798
+ var drilldown_user_events_default = commands40;
5065
5799
 
5066
5800
  // src/commands/te-analysis/user/index.ts
5067
5801
  import { existsSync, statSync as statSync2 } from "fs";
@@ -5152,7 +5886,7 @@ var optionalTagDefinitionRequestFlag = {
5152
5886
  required: false,
5153
5887
  desc: "Optional semantic snake_case tag definition. Read user_tag_models.md; raw filts, C-codes, ftv, columnName, and backend DTOs are rejected."
5154
5888
  };
5155
- var zoneOffsetFlag3 = {
5889
+ var zoneOffsetFlag2 = {
5156
5890
  name: "zone-offset",
5157
5891
  type: "number",
5158
5892
  required: false,
@@ -5164,6 +5898,24 @@ var autoRefreshCronFlag = {
5164
5898
  required: false,
5165
5899
  desc: "Optional Quartz cron expression for an existing enabled auto-refresh schedule. This does not enable auto refresh."
5166
5900
  };
5901
+ var tagAutoRefreshFlags = [
5902
+ {
5903
+ name: "enable-auto-refresh",
5904
+ type: "boolean",
5905
+ required: false,
5906
+ desc: "Enable or disable periodic refresh. Omit to preserve the setting on update. Enabling on create requires a schedule."
5907
+ },
5908
+ {
5909
+ ...autoRefreshCronFlag,
5910
+ desc: "Quartz cron expression in the tag timezone. Enables periodic refresh. Mutually exclusive with --auto-refresh-schedule."
5911
+ },
5912
+ {
5913
+ name: "auto-refresh-schedule",
5914
+ type: "json",
5915
+ required: false,
5916
+ desc: 'Schedule object: frequency daily|weekly|monthly, time HH:mm, weekdays (weekly, ISO 1=Monday to 7=Sunday), month_days (monthly, 1-31). Enables periodic refresh in the tag timezone. Example: {"frequency":"daily","time":"02:30"}.'
5917
+ }
5918
+ ];
5167
5919
  var entityIdFlag = {
5168
5920
  name: "entity-id",
5169
5921
  type: "number",
@@ -5412,6 +6164,18 @@ function clusterWriteInput(ctx, create) {
5412
6164
  function tagWriteInput(ctx, create) {
5413
6165
  const definitionRequest = optionalJson(ctx, "definition-request");
5414
6166
  validateDefinitionRequest(create, definitionRequest);
6167
+ const enabled = optionalBoolean(ctx, "enable-auto-refresh");
6168
+ const cron = optionalString(ctx, "auto-refresh-cron");
6169
+ const schedule = optionalJson(ctx, "auto-refresh-schedule");
6170
+ if (cron !== void 0 && schedule !== void 0) {
6171
+ throw new Error("Pass only one of --auto-refresh-cron and --auto-refresh-schedule");
6172
+ }
6173
+ if (enabled === false && (cron !== void 0 || schedule !== void 0)) {
6174
+ throw new Error("Cannot set a schedule with --enable-auto-refresh false");
6175
+ }
6176
+ if (create && enabled === true && cron === void 0 && schedule === void 0) {
6177
+ throw new Error("Enabling auto refresh on create requires --auto-refresh-schedule or --auto-refresh-cron");
6178
+ }
5415
6179
  return compactInput({
5416
6180
  project_id: ctx.num("project-id"),
5417
6181
  tag_name: ctx.str("tag-name"),
@@ -5420,7 +6184,9 @@ function tagWriteInput(ctx, create) {
5420
6184
  authenticated_only: optionalBoolean(ctx, "authenticated-only"),
5421
6185
  remark: create ? void 0 : optionalString(ctx, "remark"),
5422
6186
  zone_offset: optionalNumber(ctx, "zone-offset"),
5423
- auto_refresh_cron: create ? void 0 : optionalString(ctx, "auto-refresh-cron"),
6187
+ enable_auto_refresh: enabled,
6188
+ auto_refresh_cron: cron,
6189
+ auto_refresh_schedule: schedule,
5424
6190
  entity_id: create ? optionalNumber(ctx, "entity-id") : void 0
5425
6191
  });
5426
6192
  }
@@ -5542,7 +6308,7 @@ var memberExportFlags = [
5542
6308
  memberArtifactFormatFlag,
5543
6309
  asyncTimeoutSecondsFlag
5544
6310
  ];
5545
- var commands40 = [
6311
+ var commands41 = [
5546
6312
  capability(
5547
6313
  "user-cluster",
5548
6314
  "list",
@@ -5589,7 +6355,7 @@ var commands40 = [
5589
6355
  displayNameFlag,
5590
6356
  clusterDefinitionRequestFlag,
5591
6357
  authenticatedOnlyFlag,
5592
- zoneOffsetFlag3,
6358
+ zoneOffsetFlag2,
5593
6359
  entityIdFlag
5594
6360
  ], "write", (ctx) => clusterWriteInput(ctx, true)),
5595
6361
  capability("user-cluster", "update", "analysis.user_cluster.update", "Update a condition or SQL user cluster without changing its existing type or analysis entity. Pass only fields that should change.", [
@@ -5599,7 +6365,7 @@ var commands40 = [
5599
6365
  optionalClusterDefinitionRequestFlag,
5600
6366
  authenticatedOnlyFlag,
5601
6367
  remarkFlag,
5602
- zoneOffsetFlag3,
6368
+ zoneOffsetFlag2,
5603
6369
  autoRefreshCronFlag
5604
6370
  ], "high-risk-write", (ctx) => clusterWriteInput(ctx, false)),
5605
6371
  idImportCapability(capability("user-cluster", "create-id", "analysis.user_cluster.create_id", "Create a cluster by mapping imported values to an analysis entity.", [
@@ -5682,8 +6448,9 @@ var commands40 = [
5682
6448
  displayNameFlag,
5683
6449
  tagDefinitionRequestFlag,
5684
6450
  authenticatedOnlyFlag,
5685
- zoneOffsetFlag3,
5686
- entityIdFlag
6451
+ zoneOffsetFlag2,
6452
+ entityIdFlag,
6453
+ ...tagAutoRefreshFlags
5687
6454
  ], "write", (ctx) => tagWriteInput(ctx, true)),
5688
6455
  capability("user-tag", "update", "analysis.user_tag.update", "Update a user tag. Pass only fields that should change.", [
5689
6456
  projectIdFlag,
@@ -5692,8 +6459,8 @@ var commands40 = [
5692
6459
  optionalTagDefinitionRequestFlag,
5693
6460
  authenticatedOnlyFlag,
5694
6461
  remarkFlag,
5695
- zoneOffsetFlag3,
5696
- autoRefreshCronFlag
6462
+ zoneOffsetFlag2,
6463
+ ...tagAutoRefreshFlags
5697
6464
  ], "write", (ctx) => tagWriteInput(ctx, false)),
5698
6465
  capability("user-tag", "refresh", "analysis.user_tag.refresh", "Refresh a user tag by exact tag_name.", [
5699
6466
  projectIdFlag,
@@ -5796,7 +6563,7 @@ var commands40 = [
5796
6563
  ...memberExportFlags
5797
6564
  ], "read", (ctx) => historyTagDataDrilldownInput(ctx, false), { asyncArtifact: true })
5798
6565
  ];
5799
- var user_default = commands40;
6566
+ var user_default = commands41;
5800
6567
 
5801
6568
  // src/commands/te-analysis/query-cluster/list.ts
5802
6569
  var queryClusterList = createAnalysisCapabilityCommand({
@@ -5810,8 +6577,8 @@ var queryClusterList = createAnalysisCapabilityCommand({
5810
6577
  });
5811
6578
 
5812
6579
  // src/commands/te-analysis/query-cluster/index.ts
5813
- var commands41 = [queryClusterList];
5814
- var query_cluster_default = commands41;
6580
+ var commands42 = [queryClusterList];
6581
+ var query_cluster_default = commands42;
5815
6582
 
5816
6583
  // src/commands/te-analysis/sql-table/columns.ts
5817
6584
  var sqlTableColumns = createAnalysisCapabilityCommand({
@@ -5856,8 +6623,8 @@ var sqlTableList = createAnalysisCapabilityCommand({
5856
6623
  });
5857
6624
 
5858
6625
  // src/commands/te-analysis/sql-table/index.ts
5859
- var commands42 = [sqlTableList, sqlTableColumns];
5860
- var sql_table_default = commands42;
6626
+ var commands43 = [sqlTableList, sqlTableColumns];
6627
+ var sql_table_default = commands43;
5861
6628
 
5862
6629
  // src/commands/te-analysis/entity/id-import-options.ts
5863
6630
  var entityIdImportOptions = createAnalysisCapabilityCommand({
@@ -5882,8 +6649,8 @@ var entityIdImportOptions = createAnalysisCapabilityCommand({
5882
6649
  });
5883
6650
 
5884
6651
  // src/commands/te-analysis/entity/index.ts
5885
- var commands43 = [entityIdImportOptions];
5886
- var entity_default = commands43;
6652
+ var commands44 = [entityIdImportOptions];
6653
+ var entity_default = commands44;
5887
6654
 
5888
6655
  // src/commands/te-analysis/input-file/inspect.ts
5889
6656
  var inputFileInspect = {
@@ -5966,8 +6733,8 @@ var inputFileUpload = {
5966
6733
  };
5967
6734
 
5968
6735
  // src/commands/te-analysis/input-file/index.ts
5969
- var commands44 = [inputFileUpload, inputFileInspect, inputFilePurposeList];
5970
- var input_file_default = commands44;
6736
+ var commands45 = [inputFileUpload, inputFileInspect, inputFilePurposeList];
6737
+ var input_file_default = commands45;
5971
6738
 
5972
6739
  // src/commands/te-analysis/project/access-detail/get.ts
5973
6740
  var projectAccessDetailGet = createAnalysisCapabilityCommand({
@@ -5985,10 +6752,10 @@ var projectAccessDetailGet = createAnalysisCapabilityCommand({
5985
6752
  });
5986
6753
 
5987
6754
  // src/commands/te-analysis/project/access-detail/index.ts
5988
- var commands45 = [
6755
+ var commands46 = [
5989
6756
  projectAccessDetailGet
5990
6757
  ];
5991
- var access_detail_default = commands45;
6758
+ var access_detail_default = commands46;
5992
6759
 
5993
6760
  // src/commands/te-analysis/project/data-power/delete.ts
5994
6761
  var projectDataPowerDelete = createAnalysisCapabilityCommand({
@@ -6060,13 +6827,13 @@ var projectDataPowerUpsert = createAnalysisCapabilityCommand({
6060
6827
  });
6061
6828
 
6062
6829
  // src/commands/te-analysis/project/data-power/index.ts
6063
- var commands46 = [
6830
+ var commands47 = [
6064
6831
  projectDataPowerDelete,
6065
6832
  projectDataPowerGet,
6066
6833
  projectDataPowerList,
6067
6834
  projectDataPowerUpsert
6068
6835
  ];
6069
- var data_power_default = commands46;
6836
+ var data_power_default = commands47;
6070
6837
 
6071
6838
  // src/commands/te-analysis/project/entity/create.ts
6072
6839
  var projectEntityCreate = createAnalysisCapabilityCommand({
@@ -6177,14 +6944,14 @@ var projectEntityUpdate = createAnalysisCapabilityCommand({
6177
6944
  });
6178
6945
 
6179
6946
  // src/commands/te-analysis/project/entity/index.ts
6180
- var commands47 = [
6947
+ var commands48 = [
6181
6948
  projectEntityCreate,
6182
6949
  projectEntityDelete,
6183
6950
  projectEntityGet,
6184
6951
  projectEntityList,
6185
6952
  projectEntityUpdate
6186
6953
  ];
6187
- var entity_default2 = commands47;
6954
+ var entity_default2 = commands48;
6188
6955
 
6189
6956
  // src/commands/te-analysis/project/entity-event/list.ts
6190
6957
  var projectEntityEventList = createAnalysisCapabilityCommand({
@@ -6204,10 +6971,10 @@ var projectEntityEventList = createAnalysisCapabilityCommand({
6204
6971
  });
6205
6972
 
6206
6973
  // src/commands/te-analysis/project/entity-event/index.ts
6207
- var commands48 = [
6974
+ var commands49 = [
6208
6975
  projectEntityEventList
6209
6976
  ];
6210
- var entity_event_default = commands48;
6977
+ var entity_event_default = commands49;
6211
6978
 
6212
6979
  // src/commands/te-analysis/project/function/list.ts
6213
6980
  var projectFunctionList = createAnalysisCapabilityCommand({
@@ -6227,10 +6994,10 @@ var projectFunctionList = createAnalysisCapabilityCommand({
6227
6994
  });
6228
6995
 
6229
6996
  // src/commands/te-analysis/project/function/index.ts
6230
- var commands49 = [
6997
+ var commands50 = [
6231
6998
  projectFunctionList
6232
6999
  ];
6233
- var function_default = commands49;
7000
+ var function_default = commands50;
6234
7001
 
6235
7002
  // src/commands/te-analysis/project/info/create.ts
6236
7003
  var projectInfoCreate = createAnalysisCapabilityCommand({
@@ -6325,14 +7092,14 @@ var projectInfoUpdate = createAnalysisCapabilityCommand({
6325
7092
  });
6326
7093
 
6327
7094
  // src/commands/te-analysis/project/info/index.ts
6328
- var commands50 = [
7095
+ var commands51 = [
6329
7096
  projectInfoCreate,
6330
7097
  projectInfoDelete,
6331
7098
  projectInfoGet,
6332
7099
  projectInfoList,
6333
7100
  projectInfoUpdate
6334
7101
  ];
6335
- var info_default = commands50;
7102
+ var info_default = commands51;
6336
7103
 
6337
7104
  // src/commands/te-analysis/project/mark-time/create.ts
6338
7105
  var projectMarkTimeCreate = createAnalysisCapabilityCommand({
@@ -6426,13 +7193,13 @@ var projectMarkTimeUpdate = createAnalysisCapabilityCommand({
6426
7193
  });
6427
7194
 
6428
7195
  // src/commands/te-analysis/project/mark-time/index.ts
6429
- var commands51 = [
7196
+ var commands52 = [
6430
7197
  projectMarkTimeCreate,
6431
7198
  projectMarkTimeDelete,
6432
7199
  projectMarkTimeList,
6433
7200
  projectMarkTimeUpdate
6434
7201
  ];
6435
- var mark_time_default = commands51;
7202
+ var mark_time_default = commands52;
6436
7203
 
6437
7204
  // src/commands/te-analysis/project/member/add.ts
6438
7205
  var projectMemberAdd = createAnalysisCapabilityCommand({
@@ -6443,7 +7210,12 @@ var projectMemberAdd = createAnalysisCapabilityCommand({
6443
7210
  flags: [
6444
7211
  projectIdFlag,
6445
7212
  requiredPayloadFlag,
6446
- { name: "type", type: "string", required: true, desc: "Add type accepted by ProjMemberAddTypeEnum." }
7213
+ {
7214
+ name: "type",
7215
+ type: "string",
7216
+ required: true,
7217
+ desc: "Member add type: 0 creates a company member from project management; 1 adds an existing company member. Type 0 may be disabled by company configuration."
7218
+ }
6447
7219
  ],
6448
7220
  risk: "write",
6449
7221
  buildInput: (ctx) => compactInput({
@@ -6543,7 +7315,7 @@ var projectMemberUpdate = createAnalysisCapabilityCommand({
6543
7315
  });
6544
7316
 
6545
7317
  // src/commands/te-analysis/project/member/index.ts
6546
- var commands52 = [
7318
+ var commands53 = [
6547
7319
  projectMemberAdd,
6548
7320
  projectMemberBatchUpdate,
6549
7321
  projectMemberImport,
@@ -6551,7 +7323,7 @@ var commands52 = [
6551
7323
  projectMemberRemove,
6552
7324
  projectMemberUpdate
6553
7325
  ];
6554
- var member_default = commands52;
7326
+ var member_default = commands53;
6555
7327
 
6556
7328
  // src/commands/te-analysis/project/member-candidate/list.ts
6557
7329
  var projectMemberCandidateList = createAnalysisCapabilityCommand({
@@ -6561,8 +7333,18 @@ var projectMemberCandidateList = createAnalysisCapabilityCommand({
6561
7333
  description: "List candidate users and role/data-power options for adding project members.",
6562
7334
  flags: [
6563
7335
  projectIdFlag,
6564
- { name: "type", type: "string", required: true, desc: "Add type accepted by ProjMemberAddTypeEnum." },
6565
- { name: "login-names", type: "string", required: false, desc: "Comma-separated login names when checking new users." }
7336
+ {
7337
+ name: "type",
7338
+ type: "string",
7339
+ required: true,
7340
+ desc: "Member add type: 0 checks new company members from project management; 1 lists existing company members. Type 0 may be disabled by company configuration."
7341
+ },
7342
+ {
7343
+ name: "login-names",
7344
+ type: "string",
7345
+ required: false,
7346
+ desc: "Comma-separated login names when checking new users."
7347
+ }
6566
7348
  ],
6567
7349
  risk: "read",
6568
7350
  buildInput: (ctx) => compactInput({
@@ -6573,10 +7355,10 @@ var projectMemberCandidateList = createAnalysisCapabilityCommand({
6573
7355
  });
6574
7356
 
6575
7357
  // src/commands/te-analysis/project/member-candidate/index.ts
6576
- var commands53 = [
7358
+ var commands54 = [
6577
7359
  projectMemberCandidateList
6578
7360
  ];
6579
- var member_candidate_default = commands53;
7361
+ var member_candidate_default = commands54;
6580
7362
 
6581
7363
  // src/commands/te-analysis/project/member-handover/export.ts
6582
7364
  var projectMemberHandoverExport = createAnalysisCapabilityCommand({
@@ -6617,11 +7399,11 @@ var projectMemberHandoverRun = createAnalysisCapabilityCommand({
6617
7399
  });
6618
7400
 
6619
7401
  // src/commands/te-analysis/project/member-handover/index.ts
6620
- var commands54 = [
7402
+ var commands55 = [
6621
7403
  projectMemberHandoverExport,
6622
7404
  projectMemberHandoverRun
6623
7405
  ];
6624
- var member_handover_default = commands54;
7406
+ var member_handover_default = commands55;
6625
7407
 
6626
7408
  // src/commands/te-analysis/project/member-receiver/list.ts
6627
7409
  var projectMemberReceiverList = createAnalysisCapabilityCommand({
@@ -6639,10 +7421,10 @@ var projectMemberReceiverList = createAnalysisCapabilityCommand({
6639
7421
  });
6640
7422
 
6641
7423
  // src/commands/te-analysis/project/member-receiver/index.ts
6642
- var commands55 = [
7424
+ var commands56 = [
6643
7425
  projectMemberReceiverList
6644
7426
  ];
6645
- var member_receiver_default = commands55;
7427
+ var member_receiver_default = commands56;
6646
7428
 
6647
7429
  // src/commands/te-analysis/project/owner/update.ts
6648
7430
  var projectOwnerUpdate = createAnalysisCapabilityCommand({
@@ -6668,10 +7450,10 @@ var projectOwnerUpdate = createAnalysisCapabilityCommand({
6668
7450
  });
6669
7451
 
6670
7452
  // src/commands/te-analysis/project/owner/index.ts
6671
- var commands56 = [
7453
+ var commands57 = [
6672
7454
  projectOwnerUpdate
6673
7455
  ];
6674
- var owner_default = commands56;
7456
+ var owner_default = commands57;
6675
7457
 
6676
7458
  // src/commands/te-analysis/project/permission-binding/list.ts
6677
7459
  var projectPermissionBindingList = createAnalysisCapabilityCommand({
@@ -6693,10 +7475,10 @@ var projectPermissionBindingList = createAnalysisCapabilityCommand({
6693
7475
  });
6694
7476
 
6695
7477
  // src/commands/te-analysis/project/permission-binding/index.ts
6696
- var commands57 = [
7478
+ var commands58 = [
6697
7479
  projectPermissionBindingList
6698
7480
  ];
6699
- var permission_binding_default = commands57;
7481
+ var permission_binding_default = commands58;
6700
7482
 
6701
7483
  // src/commands/te-analysis/project/receive-status/update.ts
6702
7484
  var projectReceiveStatusUpdate = createAnalysisCapabilityCommand({
@@ -6717,10 +7499,10 @@ var projectReceiveStatusUpdate = createAnalysisCapabilityCommand({
6717
7499
  });
6718
7500
 
6719
7501
  // src/commands/te-analysis/project/receive-status/index.ts
6720
- var commands58 = [
7502
+ var commands59 = [
6721
7503
  projectReceiveStatusUpdate
6722
7504
  ];
6723
- var receive_status_default = commands58;
7505
+ var receive_status_default = commands59;
6724
7506
 
6725
7507
  // src/commands/te-analysis/project/role/delete.ts
6726
7508
  var projectRoleDelete = createAnalysisCapabilityCommand({
@@ -6779,14 +7561,30 @@ var projectRoleList = createAnalysisCapabilityCommand({
6779
7561
  });
6780
7562
 
6781
7563
  // src/commands/te-analysis/project/role/upsert.ts
7564
+ var ROLE_UPSERT_HELP = [
7565
+ "Payload contract:",
7566
+ "- role_func_list is a non-empty array of objects. Each object requires a non-empty function_name and has_power set to integer 0 or 1.",
7567
+ "- Resolve valid function_name values with ae-cli project function list before saving the role.",
7568
+ "- role_desc is required when creating a role and must contain 1 to 80 characters. It may be omitted when updating an existing role.",
7569
+ "- Omit role_name to create a role. Pass the existing role_name to update that role.",
7570
+ "- Functions omitted from role_func_list are preserved by the service as unselected permissions with has_power=0.",
7571
+ "Example create payload:",
7572
+ '{"role_desc":"Data analyst","role_func_list":[{"function_name":"viewReport","has_power":1}]}',
7573
+ "Example update payload:",
7574
+ '{"role_name":"custom_role","role_func_list":[{"function_name":"viewReport","has_power":1}]}'
7575
+ ].join("\n");
6782
7576
  var projectRoleUpsert = createAnalysisCapabilityCommand({
6783
7577
  resource: "project role",
6784
7578
  command: "upsert",
6785
7579
  capabilityId: "project.role.upsert",
6786
7580
  description: "Create or update a project role.",
7581
+ helpText: ROLE_UPSERT_HELP,
6787
7582
  flags: [
6788
7583
  projectIdFlag,
6789
- requiredPayloadFlag
7584
+ {
7585
+ ...requiredPayloadFlag,
7586
+ desc: "Role payload with role_func_list object items containing function_name and has_power (0 or 1)."
7587
+ }
6790
7588
  ],
6791
7589
  risk: "write",
6792
7590
  buildInput: (ctx) => compactInput({
@@ -6796,13 +7594,13 @@ var projectRoleUpsert = createAnalysisCapabilityCommand({
6796
7594
  });
6797
7595
 
6798
7596
  // src/commands/te-analysis/project/role/index.ts
6799
- var commands59 = [
7597
+ var commands60 = [
6800
7598
  projectRoleDelete,
6801
7599
  projectRoleGet,
6802
7600
  projectRoleList,
6803
7601
  projectRoleUpsert
6804
7602
  ];
6805
- var role_default = commands59;
7603
+ var role_default = commands60;
6806
7604
 
6807
7605
  // src/commands/te-analysis/project/role-function/list.ts
6808
7606
  var projectRoleFunctionList = createAnalysisCapabilityCommand({
@@ -6828,10 +7626,10 @@ var projectRoleFunctionList = createAnalysisCapabilityCommand({
6828
7626
  });
6829
7627
 
6830
7628
  // src/commands/te-analysis/project/role-function/index.ts
6831
- var commands60 = [
7629
+ var commands61 = [
6832
7630
  projectRoleFunctionList
6833
7631
  ];
6834
- var role_function_default = commands60;
7632
+ var role_function_default = commands61;
6835
7633
 
6836
7634
  // src/commands/te-analysis/project/role-user/list.ts
6837
7635
  var projectRoleUserList = createAnalysisCapabilityCommand({
@@ -6851,10 +7649,10 @@ var projectRoleUserList = createAnalysisCapabilityCommand({
6851
7649
  });
6852
7650
 
6853
7651
  // src/commands/te-analysis/project/role-user/index.ts
6854
- var commands61 = [
7652
+ var commands62 = [
6855
7653
  projectRoleUserList
6856
7654
  ];
6857
- var role_user_default = commands61;
7655
+ var role_user_default = commands62;
6858
7656
 
6859
7657
  // src/commands/te-analysis/project/timezone/get.ts
6860
7658
  var projectTimezoneGet = createAnalysisCapabilityCommand({
@@ -6973,9 +7771,9 @@ function validateDisplayTimezones(value, item) {
6973
7771
  }
6974
7772
  }
6975
7773
  }
6976
- function allowOnly(payload, item, fields) {
6977
- if (Object.keys(payload).some((field) => !fields.includes(field))) {
6978
- throw invalidPayload(item, `supports only fields ${fields.join(", ")}`);
7774
+ function allowOnly(payload, item, fields2) {
7775
+ if (Object.keys(payload).some((field) => !fields2.includes(field))) {
7776
+ throw invalidPayload(item, `supports only fields ${fields2.join(", ")}`);
6979
7777
  }
6980
7778
  }
6981
7779
  function invalidPayload(item, reason, example) {
@@ -6992,12 +7790,12 @@ function isObject(value) {
6992
7790
  }
6993
7791
 
6994
7792
  // src/commands/te-analysis/project/timezone/index.ts
6995
- var commands62 = [
7793
+ var commands63 = [
6996
7794
  projectTimezoneGet,
6997
7795
  projectTimezoneOverview,
6998
7796
  projectTimezoneUpdate
6999
7797
  ];
7000
- var timezone_default = commands62;
7798
+ var timezone_default = commands63;
7001
7799
 
7002
7800
  // src/commands/te-analysis/project/user-id-items/update.ts
7003
7801
  var projectUserIdItemsUpdate = createAnalysisCapabilityCommand({
@@ -7017,13 +7815,13 @@ var projectUserIdItemsUpdate = createAnalysisCapabilityCommand({
7017
7815
  });
7018
7816
 
7019
7817
  // src/commands/te-analysis/project/user-id-items/index.ts
7020
- var commands63 = [
7818
+ var commands64 = [
7021
7819
  projectUserIdItemsUpdate
7022
7820
  ];
7023
- var user_id_items_default = commands63;
7821
+ var user_id_items_default = commands64;
7024
7822
 
7025
7823
  // src/commands/te-analysis/project/index.ts
7026
- var commands64 = [
7824
+ var commands65 = [
7027
7825
  ...access_detail_default,
7028
7826
  ...data_power_default,
7029
7827
  ...entity_default2,
@@ -7044,7 +7842,7 @@ var commands64 = [
7044
7842
  ...timezone_default,
7045
7843
  ...user_id_items_default
7046
7844
  ];
7047
- var project_default = commands64;
7845
+ var project_default = commands65;
7048
7846
 
7049
7847
  // src/commands/te-analysis/tracking/shared.ts
7050
7848
  function createTrackingCapabilityCommand(config) {
@@ -7218,12 +8016,12 @@ var confirmFlag = {
7218
8016
  required: true,
7219
8017
  desc: "Must be true for this destructive tracking operation. Also use global --yes to skip local confirmation."
7220
8018
  };
7221
- function projectInput2(ctx) {
8019
+ function projectInput3(ctx) {
7222
8020
  return { project_id: ctx.num("project-id") };
7223
8021
  }
7224
8022
  function projectLifecycleInput(ctx) {
7225
8023
  return compactInput({
7226
- ...projectInput2(ctx),
8024
+ ...projectInput3(ctx),
7227
8025
  request_id: optionalString(ctx, "request-id"),
7228
8026
  timeout_seconds: optionalNumber(ctx, "timeout-seconds")
7229
8027
  });
@@ -7237,7 +8035,7 @@ var trackingPlanGet = createTrackingCapabilityCommand({
7237
8035
  description: "Get the tracking plan for one project.",
7238
8036
  flags: [projectIdFlag],
7239
8037
  risk: "read",
7240
- buildInput: projectInput2
8038
+ buildInput: projectInput3
7241
8039
  });
7242
8040
 
7243
8041
  // src/commands/te-analysis/tracking/plan/save-items.ts
@@ -7249,7 +8047,7 @@ var trackingPlanSaveItems = createTrackingCapabilityCommand({
7249
8047
  flags: [projectIdFlag, eventsFlag, eventPropsFlag, userPropsFlag, commonEventPropsFlag],
7250
8048
  risk: "write",
7251
8049
  buildInput: (ctx) => compactInput({
7252
- ...projectInput2(ctx),
8050
+ ...projectInput3(ctx),
7253
8051
  events: optionalJson(ctx, "events"),
7254
8052
  event_props: optionalJson(ctx, "event-props"),
7255
8053
  user_props: optionalJson(ctx, "user-props"),
@@ -7266,7 +8064,7 @@ var trackingPlanDeleteItems = createTrackingCapabilityCommand({
7266
8064
  flags: [projectIdFlag, eventsFlag, eventPropNamesFlag, userPropNamesFlag, commonEventPropNamesFlag, confirmFlag],
7267
8065
  risk: "high-risk-write",
7268
8066
  buildInput: (ctx) => compactInput({
7269
- ...projectInput2(ctx),
8067
+ ...projectInput3(ctx),
7270
8068
  events: optionalJson(ctx, "events"),
7271
8069
  event_prop_names: optionalJson(ctx, "event-prop-names"),
7272
8070
  user_prop_names: optionalJson(ctx, "user-prop-names"),
@@ -7284,7 +8082,7 @@ var trackingPlanGenerate = createTrackingCapabilityCommand({
7284
8082
  flags: [projectIdFlag, languageFlag, formDataFlag, developmentCarrierFlag, predefinedEventFlag],
7285
8083
  risk: "write",
7286
8084
  buildInput: (ctx) => compactInput({
7287
- ...projectInput2(ctx),
8085
+ ...projectInput3(ctx),
7288
8086
  language: ctx.str("language"),
7289
8087
  form_data: ctx.json("form-data"),
7290
8088
  development_carrier: optionalJson(ctx, "development-carrier"),
@@ -7410,7 +8208,7 @@ function validateSource(ctx) {
7410
8208
  }
7411
8209
  function buildInput(ctx, inputFileId) {
7412
8210
  return compactInput({
7413
- ...projectInput2(ctx),
8211
+ ...projectInput3(ctx),
7414
8212
  input_file_id: inputFileId,
7415
8213
  lang: optionalString(ctx, "lang")
7416
8214
  });
@@ -7424,7 +8222,7 @@ var trackingPlanSyncFromMeta = createTrackingCapabilityCommand({
7424
8222
  description: "Synchronize tracking plan from project metadata.",
7425
8223
  flags: [projectIdFlag],
7426
8224
  risk: "write",
7427
- buildInput: projectInput2
8225
+ buildInput: projectInput3
7428
8226
  });
7429
8227
 
7430
8228
  // src/commands/te-analysis/tracking/plan/sync-display-names.ts
@@ -7455,7 +8253,7 @@ function buildDisplayNameSyncPlan(draft, metadata) {
7455
8253
  };
7456
8254
  }
7457
8255
  function assertTrackingDraft(value) {
7458
- if (!isRecord(value)) {
8256
+ if (!isRecord2(value)) {
7459
8257
  throw new Error("Tracking draft must be a JSON object.");
7460
8258
  }
7461
8259
  for (const field of [
@@ -7519,7 +8317,7 @@ function existingDefinitions(value, nameField, displayNameField) {
7519
8317
  if (!Array.isArray(value)) return [];
7520
8318
  const rows = [];
7521
8319
  for (const item of value) {
7522
- if (!isRecord(item)) continue;
8320
+ if (!isRecord2(item)) continue;
7523
8321
  const name = nonEmptyString(item[nameField]);
7524
8322
  if (!name) continue;
7525
8323
  rows.push({
@@ -7562,7 +8360,7 @@ function nonEmptyString(value) {
7562
8360
  const trimmed = value.trim();
7563
8361
  return trimmed ? trimmed : void 0;
7564
8362
  }
7565
- function isRecord(value) {
8363
+ function isRecord2(value) {
7566
8364
  return value !== null && typeof value === "object" && !Array.isArray(value);
7567
8365
  }
7568
8366
 
@@ -7775,7 +8573,7 @@ function counts(plan, value) {
7775
8573
  }
7776
8574
 
7777
8575
  // src/commands/te-analysis/tracking/plan/index.ts
7778
- var commands65 = [
8576
+ var commands66 = [
7779
8577
  trackingPlanGet,
7780
8578
  trackingPlanSaveItems,
7781
8579
  trackingPlanDeleteItems,
@@ -7785,7 +8583,7 @@ var commands65 = [
7785
8583
  trackingPlanSyncFromMeta,
7786
8584
  trackingPlanSyncDisplayNames
7787
8585
  ];
7788
- var plan_default = commands65;
8586
+ var plan_default = commands66;
7789
8587
 
7790
8588
  // src/commands/te-analysis/tracking/sdk-sample/generate.ts
7791
8589
  var trackingSdkSampleGenerate = createTrackingCapabilityCommand({
@@ -7795,14 +8593,14 @@ var trackingSdkSampleGenerate = createTrackingCapabilityCommand({
7795
8593
  description: "Submit an AI SDK sample generation task.",
7796
8594
  flags: [projectIdFlag, sdkTypesFlag],
7797
8595
  risk: "write",
7798
- buildInput: (ctx) => ({ ...projectInput2(ctx), sdk_types: ctx.json("sdk-types") })
8596
+ buildInput: (ctx) => ({ ...projectInput3(ctx), sdk_types: ctx.json("sdk-types") })
7799
8597
  });
7800
8598
 
7801
8599
  // src/commands/te-analysis/tracking/sdk-sample/index.ts
7802
- var commands66 = [
8600
+ var commands67 = [
7803
8601
  trackingSdkSampleGenerate
7804
8602
  ];
7805
- var sdk_sample_default = commands66;
8603
+ var sdk_sample_default = commands67;
7806
8604
 
7807
8605
  // src/commands/te-analysis/tracking/plan-change-log/list.ts
7808
8606
  var trackingPlanChangeLogList = createTrackingCapabilityCommand({
@@ -7812,7 +8610,7 @@ var trackingPlanChangeLogList = createTrackingCapabilityCommand({
7812
8610
  description: "List tracking plan change logs.",
7813
8611
  flags: [projectIdFlag],
7814
8612
  risk: "read",
7815
- buildInput: projectInput2
8613
+ buildInput: projectInput3
7816
8614
  });
7817
8615
 
7818
8616
  // src/commands/te-analysis/tracking/plan-change-log/export.ts
@@ -7824,15 +8622,15 @@ var trackingPlanChangeLogExport = createTrackingCapabilityCommand({
7824
8622
  description: "Export one tracking plan change log.",
7825
8623
  flags: [projectIdFlag, logIdFlag, requestIdFlag, asyncTimeoutSecondsFlag],
7826
8624
  risk: "read",
7827
- buildInput: (ctx) => compactInput({ ...projectInput2(ctx), log_id: ctx.num("log-id"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
8625
+ buildInput: (ctx) => compactInput({ ...projectInput3(ctx), log_id: ctx.num("log-id"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
7828
8626
  });
7829
8627
 
7830
8628
  // src/commands/te-analysis/tracking/plan-change-log/index.ts
7831
- var commands67 = [
8629
+ var commands68 = [
7832
8630
  trackingPlanChangeLogList,
7833
8631
  trackingPlanChangeLogExport
7834
8632
  ];
7835
- var plan_change_log_default = commands67;
8633
+ var plan_change_log_default = commands68;
7836
8634
 
7837
8635
  // src/commands/te-analysis/tracking/check/run.ts
7838
8636
  var trackingCheckRun = createTrackingCapabilityCommand({
@@ -7843,7 +8641,7 @@ var trackingCheckRun = createTrackingCapabilityCommand({
7843
8641
  flags: [projectIdFlag, checkScopeFlag, resultScopeFlag],
7844
8642
  risk: "write",
7845
8643
  buildInput: (ctx) => compactInput({
7846
- ...projectInput2(ctx),
8644
+ ...projectInput3(ctx),
7847
8645
  check_scope: ctx.json("check-scope"),
7848
8646
  result_scope: optionalJson(ctx, "result-scope")
7849
8647
  })
@@ -7857,7 +8655,7 @@ var trackingCheckList = createTrackingCapabilityCommand({
7857
8655
  description: "List tracking validation runs.",
7858
8656
  flags: [projectIdFlag],
7859
8657
  risk: "read",
7860
- buildInput: projectInput2
8658
+ buildInput: projectInput3
7861
8659
  });
7862
8660
 
7863
8661
  // src/commands/te-analysis/tracking/check/get.ts
@@ -7868,7 +8666,7 @@ var trackingCheckGet = createTrackingCapabilityCommand({
7868
8666
  description: "Get one tracking validation result.",
7869
8667
  flags: [projectIdFlag, uuidFlag, requestIdFlag, timeoutSecondsFlag],
7870
8668
  risk: "read",
7871
- buildInput: (ctx) => compactInput({ ...projectInput2(ctx), uuid: ctx.str("uuid"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
8669
+ buildInput: (ctx) => compactInput({ ...projectInput3(ctx), uuid: ctx.str("uuid"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
7872
8670
  });
7873
8671
 
7874
8672
  // src/commands/te-analysis/tracking/check/retry.ts
@@ -7879,7 +8677,7 @@ var trackingCheckRetry = createTrackingCapabilityCommand({
7879
8677
  description: "Retry one tracking validation run.",
7880
8678
  flags: [projectIdFlag, uuidFlag, requestIdFlag, timeoutSecondsFlag],
7881
8679
  risk: "write",
7882
- buildInput: (ctx) => compactInput({ ...projectInput2(ctx), uuid: ctx.str("uuid"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
8680
+ buildInput: (ctx) => compactInput({ ...projectInput3(ctx), uuid: ctx.str("uuid"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
7883
8681
  });
7884
8682
 
7885
8683
  // src/commands/te-analysis/tracking/check/delete.ts
@@ -7890,7 +8688,7 @@ var trackingCheckDelete = createTrackingCapabilityCommand({
7890
8688
  description: "Delete one tracking validation run.",
7891
8689
  flags: [projectIdFlag, uuidFlag, confirmFlag],
7892
8690
  risk: "high-risk-write",
7893
- buildInput: (ctx) => ({ ...projectInput2(ctx), uuid: ctx.str("uuid"), yes: ctx.bool("confirm") })
8691
+ buildInput: (ctx) => ({ ...projectInput3(ctx), uuid: ctx.str("uuid"), yes: ctx.bool("confirm") })
7894
8692
  });
7895
8693
 
7896
8694
  // src/commands/te-analysis/tracking/check/export.ts
@@ -7902,11 +8700,11 @@ var trackingCheckExport = createTrackingCapabilityCommand({
7902
8700
  description: "Export one tracking validation result.",
7903
8701
  flags: [projectIdFlag, uuidFlag, requestIdFlag, asyncTimeoutSecondsFlag],
7904
8702
  risk: "read",
7905
- buildInput: (ctx) => compactInput({ ...projectInput2(ctx), uuid: ctx.str("uuid"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
8703
+ buildInput: (ctx) => compactInput({ ...projectInput3(ctx), uuid: ctx.str("uuid"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
7906
8704
  });
7907
8705
 
7908
8706
  // src/commands/te-analysis/tracking/check/index.ts
7909
- var commands68 = [
8707
+ var commands69 = [
7910
8708
  trackingCheckRun,
7911
8709
  trackingCheckList,
7912
8710
  trackingCheckGet,
@@ -7914,7 +8712,7 @@ var commands68 = [
7914
8712
  trackingCheckDelete,
7915
8713
  trackingCheckExport
7916
8714
  ];
7917
- var check_default = commands68;
8715
+ var check_default = commands69;
7918
8716
 
7919
8717
  // src/commands/te-analysis/tracking/ingest/summary.ts
7920
8718
  var trackingIngestSummary = createTrackingCapabilityCommand({
@@ -7924,14 +8722,14 @@ var trackingIngestSummary = createTrackingCapabilityCommand({
7924
8722
  description: "Get tracking ingest summary.",
7925
8723
  flags: [projectIdFlag, startTimeFlag, endTimeFlag],
7926
8724
  risk: "read",
7927
- buildInput: (ctx) => ({ ...projectInput2(ctx), start_time: ctx.str("start-time"), end_time: ctx.str("end-time") })
8725
+ buildInput: (ctx) => ({ ...projectInput3(ctx), start_time: ctx.str("start-time"), end_time: ctx.str("end-time") })
7928
8726
  });
7929
8727
 
7930
8728
  // src/commands/te-analysis/tracking/ingest/index.ts
7931
- var commands69 = [
8729
+ var commands70 = [
7932
8730
  trackingIngestSummary
7933
8731
  ];
7934
- var ingest_default = commands69;
8732
+ var ingest_default = commands70;
7935
8733
 
7936
8734
  // src/commands/te-analysis/tracking/ingest-error/list.ts
7937
8735
  var trackingIngestErrorList = createTrackingCapabilityCommand({
@@ -7941,14 +8739,14 @@ var trackingIngestErrorList = createTrackingCapabilityCommand({
7941
8739
  description: "List tracking ingest errors for one data name.",
7942
8740
  flags: [projectIdFlag, dataNameFlag, startTimeFlag, endTimeFlag],
7943
8741
  risk: "read",
7944
- buildInput: (ctx) => ({ ...projectInput2(ctx), data_name: ctx.str("data-name"), start_time: ctx.str("start-time"), end_time: ctx.str("end-time") })
8742
+ buildInput: (ctx) => ({ ...projectInput3(ctx), data_name: ctx.str("data-name"), start_time: ctx.str("start-time"), end_time: ctx.str("end-time") })
7945
8743
  });
7946
8744
 
7947
8745
  // src/commands/te-analysis/tracking/ingest-error/index.ts
7948
- var commands70 = [
8746
+ var commands71 = [
7949
8747
  trackingIngestErrorList
7950
8748
  ];
7951
- var ingest_error_default = commands70;
8749
+ var ingest_error_default = commands71;
7952
8750
 
7953
8751
  // src/commands/te-analysis/tracking/live-data/list.ts
7954
8752
  var trackingLiveDataList = createTrackingCapabilityCommand({
@@ -7958,7 +8756,7 @@ var trackingLiveDataList = createTrackingCapabilityCommand({
7958
8756
  description: "List recent tracking live data.",
7959
8757
  flags: [projectIdFlag, dataTypeFlag, requestIdFlag, timeoutSecondsFlag],
7960
8758
  risk: "read",
7961
- buildInput: (ctx) => compactInput({ ...projectInput2(ctx), data_type: optionalString(ctx, "data-type"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
8759
+ buildInput: (ctx) => compactInput({ ...projectInput3(ctx), data_type: optionalString(ctx, "data-type"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
7962
8760
  });
7963
8761
 
7964
8762
  // src/commands/te-analysis/tracking/live-data/export.ts
@@ -7970,15 +8768,15 @@ var trackingLiveDataExport = createTrackingCapabilityCommand({
7970
8768
  description: "Export recent tracking live data.",
7971
8769
  flags: [projectIdFlag, dataTypeFlag, requestIdFlag, asyncTimeoutSecondsFlag],
7972
8770
  risk: "read",
7973
- buildInput: (ctx) => compactInput({ ...projectInput2(ctx), data_type: optionalString(ctx, "data-type"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
8771
+ buildInput: (ctx) => compactInput({ ...projectInput3(ctx), data_type: optionalString(ctx, "data-type"), request_id: optionalString(ctx, "request-id"), timeout_seconds: optionalNumber(ctx, "timeout-seconds") })
7974
8772
  });
7975
8773
 
7976
8774
  // src/commands/te-analysis/tracking/live-data/index.ts
7977
- var commands71 = [
8775
+ var commands72 = [
7978
8776
  trackingLiveDataList,
7979
8777
  trackingLiveDataExport
7980
8778
  ];
7981
- var live_data_default = commands71;
8779
+ var live_data_default = commands72;
7982
8780
 
7983
8781
  // src/commands/te-analysis/tracking/event-blacklist/list.ts
7984
8782
  var trackingEventBlacklistList = createTrackingCapabilityCommand({
@@ -7988,7 +8786,7 @@ var trackingEventBlacklistList = createTrackingCapabilityCommand({
7988
8786
  description: "List tracking event blacklist configuration.",
7989
8787
  flags: [projectIdFlag],
7990
8788
  risk: "read",
7991
- buildInput: projectInput2
8789
+ buildInput: projectInput3
7992
8790
  });
7993
8791
 
7994
8792
  // src/commands/te-analysis/tracking/event-blacklist/add.ts
@@ -7999,7 +8797,7 @@ var trackingEventBlacklistAdd = createTrackingCapabilityCommand({
7999
8797
  description: "Add events to tracking event blacklist.",
8000
8798
  flags: [projectIdFlag, eventNamesFlag],
8001
8799
  risk: "write",
8002
- buildInput: (ctx) => ({ ...projectInput2(ctx), event_names: ctx.json("event-names") })
8800
+ buildInput: (ctx) => ({ ...projectInput3(ctx), event_names: ctx.json("event-names") })
8003
8801
  });
8004
8802
 
8005
8803
  // src/commands/te-analysis/tracking/event-blacklist/update.ts
@@ -8010,16 +8808,16 @@ var trackingEventBlacklistUpdate = createTrackingCapabilityCommand({
8010
8808
  description: "Update tracking event blacklist config.",
8011
8809
  flags: [projectIdFlag, eventNamesFlag, blacklistTypeFlag],
8012
8810
  risk: "write",
8013
- buildInput: (ctx) => ({ ...projectInput2(ctx), event_names: ctx.json("event-names"), type: ctx.num("type") })
8811
+ buildInput: (ctx) => ({ ...projectInput3(ctx), event_names: ctx.json("event-names"), type: ctx.num("type") })
8014
8812
  });
8015
8813
 
8016
8814
  // src/commands/te-analysis/tracking/event-blacklist/index.ts
8017
- var commands72 = [
8815
+ var commands73 = [
8018
8816
  trackingEventBlacklistList,
8019
8817
  trackingEventBlacklistAdd,
8020
8818
  trackingEventBlacklistUpdate
8021
8819
  ];
8022
- var event_blacklist_default = commands72;
8820
+ var event_blacklist_default = commands73;
8023
8821
 
8024
8822
  // src/commands/te-analysis/tracking/debug-device/add.ts
8025
8823
  var trackingDebugDeviceAdd = createTrackingCapabilityCommand({
@@ -8030,7 +8828,7 @@ var trackingDebugDeviceAdd = createTrackingCapabilityCommand({
8030
8828
  flags: [projectIdFlag, debugDeviceIdFlag, debugDeviceNameFlag],
8031
8829
  risk: "write",
8032
8830
  buildInput: (ctx) => ({
8033
- ...projectInput2(ctx),
8831
+ ...projectInput3(ctx),
8034
8832
  device_id: ctx.str("device-id"),
8035
8833
  device_name: ctx.str("device-name")
8036
8834
  })
@@ -8044,7 +8842,7 @@ var trackingDebugDeviceList = createTrackingCapabilityCommand({
8044
8842
  description: "List Debug devices and the device selected by the current CLI user.",
8045
8843
  flags: [projectIdFlag],
8046
8844
  risk: "read",
8047
- buildInput: projectInput2
8845
+ buildInput: projectInput3
8048
8846
  });
8049
8847
 
8050
8848
  // src/commands/te-analysis/tracking/debug-device/select.ts
@@ -8056,18 +8854,18 @@ var trackingDebugDeviceSelect = createTrackingCapabilityCommand({
8056
8854
  flags: [projectIdFlag, debugDeviceIdFlag],
8057
8855
  risk: "write",
8058
8856
  buildInput: (ctx) => ({
8059
- ...projectInput2(ctx),
8857
+ ...projectInput3(ctx),
8060
8858
  device_id: ctx.str("device-id")
8061
8859
  })
8062
8860
  });
8063
8861
 
8064
8862
  // src/commands/te-analysis/tracking/debug-device/index.ts
8065
- var commands73 = [
8863
+ var commands74 = [
8066
8864
  trackingDebugDeviceList,
8067
8865
  trackingDebugDeviceAdd,
8068
8866
  trackingDebugDeviceSelect
8069
8867
  ];
8070
- var debug_device_default = commands73;
8868
+ var debug_device_default = commands74;
8071
8869
 
8072
8870
  // src/commands/te-analysis/tracking/debug-data/list.ts
8073
8871
  var debugStartTimeFlag = {
@@ -8084,13 +8882,13 @@ var trackingDebugDataList = createTrackingCapabilityCommand({
8084
8882
  flags: [projectIdFlag, debugDeviceIdFlag, debugStartTimeFlag, eventNameFlag],
8085
8883
  risk: "read",
8086
8884
  buildInput: (ctx) => compactInput({
8087
- ...projectInput2(ctx),
8885
+ ...projectInput3(ctx),
8088
8886
  device_id: ctx.str("device-id"),
8089
8887
  start_time: optionalString(ctx, "start-time") ?? formatLocalTime(new Date(Date.now() - 60 * 60 * 1e3)),
8090
8888
  event_name: optionalString(ctx, "event-name")
8091
8889
  }),
8092
8890
  postProcess: (result, input) => {
8093
- const data = isRecord2(result) ? result : {};
8891
+ const data = isRecord3(result) ? result : {};
8094
8892
  const eventList = Array.isArray(data.event_list) ? data.event_list : [];
8095
8893
  const deviceDataList = Array.isArray(data.device_data_list) ? data.device_data_list : [];
8096
8894
  return {
@@ -8121,16 +8919,16 @@ function formatLocalTime(value) {
8121
8919
  pad(value.getSeconds())
8122
8920
  ].join("");
8123
8921
  }
8124
- function isRecord2(value) {
8922
+ function isRecord3(value) {
8125
8923
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
8126
8924
  }
8127
8925
 
8128
8926
  // src/commands/te-analysis/tracking/debug-data/index.ts
8129
- var commands74 = [trackingDebugDataList];
8130
- var debug_data_default = commands74;
8927
+ var commands75 = [trackingDebugDataList];
8928
+ var debug_data_default = commands75;
8131
8929
 
8132
8930
  // src/commands/te-analysis/tracking/index.ts
8133
- var commands75 = [
8931
+ var commands76 = [
8134
8932
  ...plan_default,
8135
8933
  ...sdk_sample_default,
8136
8934
  ...plan_change_log_default,
@@ -8142,7 +8940,7 @@ var commands75 = [
8142
8940
  ...debug_device_default,
8143
8941
  ...debug_data_default
8144
8942
  ];
8145
- var tracking_default = commands75;
8943
+ var tracking_default = commands76;
8146
8944
 
8147
8945
  // src/commands/te-analysis/alert/shared.ts
8148
8946
  var alertIdFlag = {
@@ -8169,11 +8967,11 @@ var endTimeFlag2 = {
8169
8967
  required: false,
8170
8968
  desc: "Optional alert detail end time."
8171
8969
  };
8172
- function projectInput3(ctx) {
8970
+ function projectInput4(ctx) {
8173
8971
  return { project_id: ctx.num("project-id") };
8174
8972
  }
8175
8973
  function alertIdInput(ctx) {
8176
- return { ...projectInput3(ctx), alert_id: ctx.num("alert-id") };
8974
+ return { ...projectInput4(ctx), alert_id: ctx.num("alert-id") };
8177
8975
  }
8178
8976
 
8179
8977
  // src/commands/te-analysis/alert/list.ts
@@ -8185,7 +8983,7 @@ var analysisAlertList = createAnalysisCapabilityCommand({
8185
8983
  flags: [projectIdFlag, queriesFlag, directoryLimitFlag, directoryOffsetFlag],
8186
8984
  risk: "read",
8187
8985
  validate: validateQueriesFlag,
8188
- buildInput: (ctx) => compactInput({ ...projectInput3(ctx), queries: optionalQueries(ctx), limit: optionalNumber(ctx, "limit"), offset: optionalNumber(ctx, "offset") })
8986
+ buildInput: (ctx) => compactInput({ ...projectInput4(ctx), queries: optionalQueries(ctx), limit: optionalNumber(ctx, "limit"), offset: optionalNumber(ctx, "offset") })
8189
8987
  });
8190
8988
 
8191
8989
  // src/commands/te-analysis/alert/get.ts
@@ -8207,7 +9005,7 @@ var analysisAlertCreate = createAnalysisCapabilityCommand({
8207
9005
  description: "Create an alert.",
8208
9006
  flags: [projectIdFlag, definitionRequestFlag],
8209
9007
  risk: "write",
8210
- buildInput: (ctx) => ({ ...projectInput3(ctx), definition_request: ctx.json("definition-request") })
9008
+ buildInput: (ctx) => ({ ...projectInput4(ctx), definition_request: ctx.json("definition-request") })
8211
9009
  });
8212
9010
 
8213
9011
  // src/commands/te-analysis/alert/update.ts
@@ -8255,7 +9053,7 @@ var analysisAlertStop = createAnalysisCapabilityCommand({
8255
9053
  });
8256
9054
 
8257
9055
  // src/commands/te-analysis/alert/index.ts
8258
- var commands76 = [
9056
+ var commands77 = [
8259
9057
  analysisAlertList,
8260
9058
  analysisAlertGet,
8261
9059
  analysisAlertCreate,
@@ -8264,7 +9062,7 @@ var commands76 = [
8264
9062
  analysisAlertStart,
8265
9063
  analysisAlertStop
8266
9064
  ];
8267
- var alert_default = commands76;
9065
+ var alert_default = commands77;
8268
9066
 
8269
9067
  // src/commands/te-analysis/alert-detail/list.ts
8270
9068
  var analysisAlertDetailList = createAnalysisCapabilityCommand({
@@ -8278,10 +9076,10 @@ var analysisAlertDetailList = createAnalysisCapabilityCommand({
8278
9076
  });
8279
9077
 
8280
9078
  // src/commands/te-analysis/alert-detail/index.ts
8281
- var commands77 = [
9079
+ var commands78 = [
8282
9080
  analysisAlertDetailList
8283
9081
  ];
8284
- var alert_detail_default = commands77;
9082
+ var alert_detail_default = commands78;
8285
9083
 
8286
9084
  // src/commands/te-analysis/alert-job/list.ts
8287
9085
  var analysisAlertJobList = createAnalysisCapabilityCommand({
@@ -8291,14 +9089,14 @@ var analysisAlertJobList = createAnalysisCapabilityCommand({
8291
9089
  description: "List alert job status.",
8292
9090
  flags: [projectIdFlag],
8293
9091
  risk: "read",
8294
- buildInput: projectInput3
9092
+ buildInput: projectInput4
8295
9093
  });
8296
9094
 
8297
9095
  // src/commands/te-analysis/alert-job/index.ts
8298
- var commands78 = [
9096
+ var commands79 = [
8299
9097
  analysisAlertJobList
8300
9098
  ];
8301
- var alert_job_default = commands78;
9099
+ var alert_job_default = commands79;
8302
9100
 
8303
9101
  // src/commands/te-analysis/alert-notice-config/list.ts
8304
9102
  var analysisAlertNoticeConfigList = createAnalysisCapabilityCommand({
@@ -8308,17 +9106,17 @@ var analysisAlertNoticeConfigList = createAnalysisCapabilityCommand({
8308
9106
  description: "List alert notice configs.",
8309
9107
  flags: [projectIdFlag],
8310
9108
  risk: "read",
8311
- buildInput: projectInput3
9109
+ buildInput: projectInput4
8312
9110
  });
8313
9111
 
8314
9112
  // src/commands/te-analysis/alert-notice-config/index.ts
8315
- var commands79 = [
9113
+ var commands80 = [
8316
9114
  analysisAlertNoticeConfigList
8317
9115
  ];
8318
- var alert_notice_config_default = commands79;
9116
+ var alert_notice_config_default = commands80;
8319
9117
 
8320
9118
  // src/commands/te-analysis/system/shared.ts
8321
- import { readFileSync as readFileSync2, statSync as statSync3 } from "fs";
9119
+ import { readFileSync as readFileSync3, statSync as statSync3 } from "fs";
8322
9120
  var secretValues = /* @__PURE__ */ new WeakMap();
8323
9121
  var companyIdField = {
8324
9122
  flag: "company-id",
@@ -8353,7 +9151,7 @@ var fieldsField = {
8353
9151
  desc: "Optional snake_case result field projection JSON array."
8354
9152
  };
8355
9153
  function defineSystemCommand(spec) {
8356
- const fields = [companyIdField, ...spec.fields ?? []];
9154
+ const fields2 = [companyIdField, ...spec.fields ?? []];
8357
9155
  const secrets = spec.secrets ?? [];
8358
9156
  return createAnalysisCapabilityCommand({
8359
9157
  resource: `system ${spec.resource}`,
@@ -8362,24 +9160,24 @@ function defineSystemCommand(spec) {
8362
9160
  asyncArtifact: spec.asyncArtifact,
8363
9161
  description: spec.description,
8364
9162
  flags: [
8365
- ...fields.map(fieldFlag),
9163
+ ...fields2.map(fieldFlag),
8366
9164
  ...secrets.flatMap(secretFlags)
8367
9165
  ],
8368
9166
  risk: spec.risk,
8369
9167
  validate: (ctx) => {
8370
9168
  validateSecretSources(ctx, secrets);
8371
- const input = buildSystemInput(ctx, fields, [], spec.risk);
9169
+ const input = buildSystemInput(ctx, fields2, [], spec.risk);
8372
9170
  for (const secret of secrets) {
8373
9171
  if (ctx.str(`${secret.flag}-file`) || ctx.bool(`${secret.flag}-stdin`)) {
8374
9172
  input[secret.input] = "<provided>";
8375
9173
  }
8376
9174
  }
8377
- validateFields(fields, input);
9175
+ validateFields(fields2, input);
8378
9176
  spec.validate?.(ctx, input);
8379
9177
  },
8380
9178
  buildInput: (ctx) => {
8381
- const input = buildSystemInput(ctx, fields, secrets, spec.risk);
8382
- validateFields(fields, input);
9179
+ const input = buildSystemInput(ctx, fields2, secrets, spec.risk);
9180
+ validateFields(fields2, input);
8383
9181
  validateSecretSources(ctx, secrets);
8384
9182
  spec.validate?.(ctx, input);
8385
9183
  return input;
@@ -8415,9 +9213,9 @@ function secretFlags(secret) {
8415
9213
  }
8416
9214
  ];
8417
9215
  }
8418
- function buildSystemInput(ctx, fields, secrets, risk) {
9216
+ function buildSystemInput(ctx, fields2, secrets, risk) {
8419
9217
  const input = {};
8420
- for (const field of fields) {
9218
+ for (const field of fields2) {
8421
9219
  const value = fieldValue(ctx, field);
8422
9220
  if (value !== void 0) input[field.input ?? kebabToSnake(field.flag)] = value;
8423
9221
  }
@@ -8436,8 +9234,8 @@ function fieldValue(ctx, field) {
8436
9234
  if (field.type === "boolean") return ctx.bool(field.flag);
8437
9235
  return ctx.json(field.flag);
8438
9236
  }
8439
- function validateFields(fields, input) {
8440
- for (const field of fields) {
9237
+ function validateFields(fields2, input) {
9238
+ for (const field of fields2) {
8441
9239
  const inputName = field.input ?? kebabToSnake(field.flag);
8442
9240
  const value = input[inputName];
8443
9241
  if (field.required && value === void 0) {
@@ -8486,9 +9284,9 @@ function secretValue(ctx, secret) {
8486
9284
  if ((stat.mode & 63) !== 0) {
8487
9285
  throw validation(`--${secret.flag}-file must not be readable or writable by group/others (use chmod 600).`);
8488
9286
  }
8489
- value = nonEmptySecret(readFileSync2(file, "utf8"), secret.flag);
9287
+ value = nonEmptySecret(readFileSync3(file, "utf8"), secret.flag);
8490
9288
  } else if (ctx.bool(`${secret.flag}-stdin`)) {
8491
- value = nonEmptySecret(readFileSync2(0, "utf8"), secret.flag);
9289
+ value = nonEmptySecret(readFileSync3(0, "utf8"), secret.flag);
8492
9290
  }
8493
9291
  values.set(secret.flag, value);
8494
9292
  return value;
@@ -8665,7 +9463,7 @@ var systemConfigurationCommands = [
8665
9463
  command: "get",
8666
9464
  capabilityId: "system.receiver_detection.get",
8667
9465
  description: "Get receiver-address detection configuration.",
8668
- risk: "read",
9466
+ risk: "write",
8669
9467
  fields: [addressUrl]
8670
9468
  }),
8671
9469
  defineSystemCommand({
@@ -9054,7 +9852,7 @@ var systemMonitoringCommands = [
9054
9852
  risk: "read",
9055
9853
  fields: [
9056
9854
  { flag: "task-id", type: "string", required: true, desc: "Query-monitor task ID." },
9057
- { flag: "sql-max-chars", type: "number", min: 0, max: 1e5, desc: "Maximum returned SQL characters." }
9855
+ { flag: "sql-max-chars", type: "number", min: 0, max: 2e4, desc: "Maximum returned SQL characters. Max: 20000." }
9058
9856
  ]
9059
9857
  }),
9060
9858
  defineSystemCommand({
@@ -9157,7 +9955,7 @@ var systemMonitoringCommands = [
9157
9955
  description: "List sanitized operations-alert contacts.",
9158
9956
  risk: "read",
9159
9957
  fields: [
9160
- { flag: "limit", type: "number", min: 1, max: 200, desc: "Page size. Default: 50, max: 200." },
9958
+ { flag: "limit", type: "number", min: 1, max: 100, desc: "Page size. Default: 50, max: 100." },
9161
9959
  offsetField
9162
9960
  ]
9163
9961
  }),
@@ -9379,14 +10177,14 @@ var systemUsageCommands = [
9379
10177
  ];
9380
10178
 
9381
10179
  // src/commands/te-analysis/system/index.ts
9382
- var commands80 = [
10180
+ var commands81 = [
9383
10181
  ...systemUsageCommands,
9384
10182
  ...systemIdentityCommands,
9385
10183
  ...systemSecurityCommands,
9386
10184
  ...systemMonitoringCommands,
9387
10185
  ...systemConfigurationCommands
9388
10186
  ];
9389
- var system_default = commands80;
10187
+ var system_default = commands81;
9390
10188
 
9391
10189
  // src/commands/te-analysis/index.ts
9392
10190
  registerCapabilityGatewayRoute("analysis", { gatewayDomain: "analysis" });
@@ -9436,8 +10234,8 @@ var baseCommands = [
9436
10234
  ...alert_notice_config_default,
9437
10235
  ...system_default
9438
10236
  ];
9439
- var commands81 = [...baseCommands];
9440
- var te_analysis_default = commands81;
10237
+ var commands82 = [...baseCommands];
10238
+ var te_analysis_default = commands82;
9441
10239
  export {
9442
10240
  baseCommands,
9443
10241
  te_analysis_default as default