@thinkingai/ae-cli 6.0.32 → 6.0.34

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 (201) hide show
  1. package/README.md +3 -2
  2. package/README.zh.md +3 -2
  3. package/dist/{auth-MEJ642P4.js → auth-ENM3FE6L.js} +3 -2
  4. package/dist/{auth-7H3HAAJ3.js → auth-UPGUOKTW.js} +13 -6
  5. package/dist/{capability-QW4AVJHI.js → capability-AJC5CBRT.js} +49 -17
  6. package/dist/{capability-SCRFGODD.js → capability-TQ5KU5Q6.js} +49 -17
  7. package/dist/chunk-24BAVOX3.js +51 -0
  8. package/dist/{chunk-MDJGDI6K.js → chunk-3KI3RRXX.js} +5 -5
  9. package/dist/{chunk-PKRD2IEM.js → chunk-3P3562ZX.js} +9 -7
  10. package/dist/{chunk-R77JT7XD.js → chunk-4Q5TNP4Q.js} +4 -4
  11. package/dist/{chunk-7OLGDQQ2.js → chunk-6CHYBI64.js} +2 -2
  12. package/dist/{chunk-6LEYLOV3.js → chunk-CPVTECJ3.js} +9 -7
  13. package/dist/{chunk-KCA6BA5D.js → chunk-DB4Q3ANU.js} +5 -3
  14. package/dist/{chunk-2NDGFQHW.js → chunk-E7UXXHO3.js} +11 -3
  15. package/dist/{chunk-I4A62X3N.js → chunk-HQ2A7ITL.js} +23 -14
  16. package/dist/chunk-IMMGMU54.js +674 -0
  17. package/dist/{chunk-AJTH7LT3.js → chunk-IR4ZLVPW.js} +4 -2
  18. package/dist/{chunk-TBHBYKXZ.js → chunk-ISY6HMHM.js} +2 -2
  19. package/dist/{chunk-KGJQCYVC.js → chunk-LCXU3AAT.js} +4 -2
  20. package/dist/chunk-LYVNONC4.js +86 -0
  21. package/dist/{chunk-DYOS6YY7.js → chunk-RGXCNC4N.js} +23 -14
  22. package/dist/{chunk-YCLVYFK7.js → chunk-V6FR6WTW.js} +45 -87
  23. package/dist/chunk-VTWMIC5L.js +27 -0
  24. package/dist/{cli-token-TVQRSE46.js → cli-token-4SBMXAUK.js} +6 -3
  25. package/dist/{client-2643Z5AG.js → client-PP5FETMW.js} +4 -3
  26. package/dist/community-report-client-KK2QBANO.js +145 -0
  27. package/dist/{config-7UZWDE74.js → config-RCCGHHYA.js} +6 -3
  28. package/dist/index.js +505 -220
  29. package/dist/{metadata-BFDL6RUK.js → metadata-3M5F2AED.js} +14 -13
  30. package/dist/{metadata-FCLDBXX2.js → metadata-W2MEOI4Z.js} +14 -13
  31. package/dist/{model-T3KZJWLW.js → model-OYQLXCQY.js} +3 -2
  32. package/dist/{raw-CN542NGT.js → raw-TPB7KSZO.js} +6 -4
  33. package/dist/{sync-ERNHDPB5.js → sync-EFJKFZK2.js} +6 -3
  34. package/dist/{te-agent-FCCWUDTJ.js → te-agent-K2OWMZXT.js} +3 -2
  35. package/dist/{te-analysis-PUVF5IF4.js → te-analysis-I73ZS4NK.js} +903 -33
  36. package/dist/{te-analysis-UJDOKPAN.js → te-analysis-Q7AZCDU4.js} +903 -33
  37. package/dist/{te-common-XLAGWNIV.js → te-common-ST3QPSXJ.js} +7 -6
  38. package/dist/{te-common-VUX3VOXZ.js → te-common-WSLIKKPC.js} +7 -6
  39. package/dist/te-community-WXGB6IOX.js +1659 -0
  40. package/dist/te-community-X2AHXGCA.js +1659 -0
  41. package/dist/{te-dataops-ZNJBQ6VT.js → te-dataops-MJV54MNY.js} +10 -8
  42. package/dist/{te-dataops-F36T656A.js → te-dataops-OA7I6HBG.js} +10 -8
  43. package/dist/{te-engage-QBCCME22.js → te-engage-2FSDUOIZ.js} +973 -1585
  44. package/dist/{te-engage-K4AEUPK5.js → te-engage-BMJ6UOUU.js} +973 -1585
  45. package/dist/{te-kb-AYCODNU6.js → te-kb-E7NSCBRB.js} +74 -12
  46. package/dist/{te-meta-UUROEODR.js → te-meta-Q4L6EE3Q.js} +7 -6
  47. package/dist/{te-meta-ARDIW3YI.js → te-meta-VHCN4Q62.js} +7 -6
  48. package/dist/{te-team-OKCOX7OE.js → te-team-PDKKW7Q5.js} +7 -6
  49. package/dist/tracking/i18n/resources/cli/en.json +4 -3
  50. package/dist/tracking/i18n/resources/cli/ja.json +4 -3
  51. package/dist/tracking/i18n/resources/cli/ko.json +4 -3
  52. package/dist/tracking/i18n/resources/cli/zh.json +4 -3
  53. package/package.json +6 -2
  54. package/skills/ae-agent/SKILL.md +2 -1
  55. package/skills/ae-analysis/SKILL.md +12 -1
  56. package/skills/ae-analysis/references/adhoc_export.md +2 -0
  57. package/skills/ae-analysis/references/adhoc_run.md +2 -0
  58. package/skills/ae-analysis/references/alert_create.md +25 -0
  59. package/skills/ae-analysis/references/alert_definition_schema_get.md +24 -0
  60. package/skills/ae-analysis/references/alert_delete.md +26 -0
  61. package/skills/ae-analysis/references/alert_detail_list.md +27 -0
  62. package/skills/ae-analysis/references/alert_get.md +25 -0
  63. package/skills/ae-analysis/references/alert_job_list.md +24 -0
  64. package/skills/ae-analysis/references/alert_list.md +27 -0
  65. package/skills/ae-analysis/references/alert_notice_config_list.md +24 -0
  66. package/skills/ae-analysis/references/alert_start.md +25 -0
  67. package/skills/ae-analysis/references/alert_stop.md +25 -0
  68. package/skills/ae-analysis/references/alert_update.md +26 -0
  69. package/skills/ae-analysis/references/bi_panel_create.md +3 -3
  70. package/skills/ae-analysis/references/check_delete.md +27 -0
  71. package/skills/ae-analysis/references/check_export.md +27 -0
  72. package/skills/ae-analysis/references/check_get.md +27 -0
  73. package/skills/ae-analysis/references/check_list.md +24 -0
  74. package/skills/ae-analysis/references/check_retry.md +27 -0
  75. package/skills/ae-analysis/references/check_run.md +25 -0
  76. package/skills/ae-analysis/references/command_index.md +61 -27
  77. package/skills/ae-analysis/references/dashboard_create.md +3 -3
  78. package/skills/ae-analysis/references/dashboard_daily_report_send.md +1 -0
  79. package/skills/ae-analysis/references/dashboard_daily_report_update.md +2 -0
  80. package/skills/ae-analysis/references/dashboard_report_data_export.md +3 -3
  81. package/skills/ae-analysis/references/dashboard_report_data_run.md +3 -3
  82. package/skills/ae-analysis/references/event_blacklist_add.md +25 -0
  83. package/skills/ae-analysis/references/event_blacklist_list.md +24 -0
  84. package/skills/ae-analysis/references/event_blacklist_update.md +26 -0
  85. package/skills/ae-analysis/references/ingest_error_list.md +27 -0
  86. package/skills/ae-analysis/references/ingest_summary.md +26 -0
  87. package/skills/ae-analysis/references/live_data_export.md +27 -0
  88. package/skills/ae-analysis/references/live_data_list.md +27 -0
  89. package/skills/ae-analysis/references/plan_change_log_export.md +27 -0
  90. package/skills/ae-analysis/references/plan_change_log_list.md +24 -0
  91. package/skills/ae-analysis/references/plan_delete_items.md +30 -0
  92. package/skills/ae-analysis/references/plan_export.md +26 -0
  93. package/skills/ae-analysis/references/plan_generate.md +27 -0
  94. package/skills/ae-analysis/references/plan_get.md +24 -0
  95. package/skills/ae-analysis/references/plan_import_excel.md +26 -0
  96. package/skills/ae-analysis/references/plan_save_items.md +27 -0
  97. package/skills/ae-analysis/references/plan_sync_from_meta.md +24 -0
  98. package/skills/ae-analysis/references/project_role_delete.md +4 -3
  99. package/skills/ae-analysis/references/project_role_get.md +4 -3
  100. package/skills/ae-analysis/references/project_role_user_list.md +4 -3
  101. package/skills/ae-analysis/references/query_create_result_cluster.md +2 -1
  102. package/skills/ae-analysis/references/report_data_export.md +3 -1
  103. package/skills/ae-analysis/references/report_data_run.md +12 -2
  104. package/skills/ae-analysis/references/sdk_sample_generate.md +24 -0
  105. package/skills/ae-analysis/references/user_cluster_create.md +2 -0
  106. package/skills/ae-analysis/references/user_cluster_create_id.md +2 -0
  107. package/skills/ae-analysis/references/user_cluster_update.md +2 -0
  108. package/skills/ae-analysis/references/user_cluster_update_id.md +2 -0
  109. package/skills/ae-analysis/references/user_tag_create.md +2 -0
  110. package/skills/ae-analysis/references/user_tag_create_id.md +2 -0
  111. package/skills/ae-analysis/references/user_tag_update.md +2 -0
  112. package/skills/ae-analysis/references/user_tag_update_id.md +2 -0
  113. package/skills/ae-analysis-global/SKILL.md +2 -0
  114. package/skills/ae-capability/SKILL.md +7 -5
  115. package/skills/ae-community/SKILL.md +72 -8
  116. package/skills/ae-community/references/community-chat-analysis.md +341 -0
  117. package/skills/ae-community/references/community-data-report.md +301 -0
  118. package/skills/ae-dataops/SKILL.md +2 -1
  119. package/skills/ae-engage/SKILL.md +129 -105
  120. package/skills/ae-engage/references/activity-activity-type.md +1 -1
  121. package/skills/ae-engage/references/activity-activity.md +1 -1
  122. package/skills/ae-engage/references/activity-approval.md +5 -7
  123. package/skills/ae-engage/references/activity-task.md +12 -18
  124. package/skills/ae-engage/references/activity-topic.md +39 -22
  125. package/skills/ae-engage/references/add-approver.md +4 -4
  126. package/skills/ae-engage/references/add-channel.md +10 -5
  127. package/skills/ae-engage/references/approval-approver-delete.md +1 -1
  128. package/skills/ae-engage/references/approver-list.md +4 -4
  129. package/skills/ae-engage/references/build-task-save-guide.md +13 -13
  130. package/skills/ae-engage/references/cancel-query-by-request-id.md +7 -6
  131. package/skills/ae-engage/references/channel-detail.md +14 -9
  132. package/skills/ae-engage/references/channel-list.md +15 -10
  133. package/skills/ae-engage/references/channel-mgmt.md +109 -0
  134. package/skills/ae-engage/references/channel-test-send.md +1 -1
  135. package/skills/ae-engage/references/channel-update-config.md +1 -1
  136. package/skills/ae-engage/references/channel_touch_limits_list.md +1 -1
  137. package/skills/ae-engage/references/client-param.md +34 -16
  138. package/skills/ae-engage/references/common-metric.md +85 -18
  139. package/skills/ae-engage/references/config-item-analysis-report.md +8 -27
  140. package/skills/ae-engage/references/config-item-strategy-comparison.md +7 -18
  141. package/skills/ae-engage/references/config-item-trigger-report.md +8 -35
  142. package/skills/ae-engage/references/delete-channel.md +5 -5
  143. package/skills/ae-engage/references/delete-flow.md +5 -5
  144. package/skills/ae-engage/references/flow-ab-split-node-report.md +11 -45
  145. package/skills/ae-engage/references/flow-detail.md +15 -10
  146. package/skills/ae-engage/references/flow-list.md +9 -4
  147. package/skills/ae-engage/references/flow-node-config-schema.md +9 -8
  148. package/skills/ae-engage/references/flow-node-detail-report.md +11 -46
  149. package/skills/ae-engage/references/flow-node-overview-report.md +11 -43
  150. package/skills/ae-engage/references/flow-process-report.md +12 -50
  151. package/skills/ae-engage/references/flow-update-remark.md +19 -0
  152. package/skills/ae-engage/references/manage-flow.md +19 -19
  153. package/skills/ae-engage/references/manage-task.md +5 -5
  154. package/skills/ae-engage/references/modify-flow-base-info.md +8 -8
  155. package/skills/ae-engage/references/preset-event.md +1 -1
  156. package/skills/ae-engage/references/push-language.md +1 -1
  157. package/skills/ae-engage/references/save-flow.md +54 -52
  158. package/skills/ae-engage/references/save-task.md +23 -17
  159. package/skills/ae-engage/references/scene-config-channel.md +90 -10
  160. package/skills/ae-engage/references/scene-config-group.md +1 -1
  161. package/skills/ae-engage/references/scene-config-item.md +27 -4
  162. package/skills/ae-engage/references/scene-config-metric.md +1 -1
  163. package/skills/ae-engage/references/scene-config-param.md +2 -2
  164. package/skills/ae-engage/references/scene-preset-metric.md +1 -1
  165. package/skills/ae-engage/references/scene-strategy.md +19 -3
  166. package/skills/ae-engage/references/scene-template.md +10 -4
  167. package/skills/ae-engage/references/task-data-detail.md +5 -67
  168. package/skills/ae-engage/references/task-data-overview.md +5 -35
  169. package/skills/ae-engage/references/task-detail.md +5 -5
  170. package/skills/ae-engage/references/task-experiment-report.md +5 -38
  171. package/skills/ae-engage/references/task-list.md +4 -4
  172. package/skills/ae-engage/references/task-metric-detail.md +5 -43
  173. package/skills/ae-engage/references/task-stats.md +5 -5
  174. package/skills/ae-engage/references/update-channel-status.md +6 -6
  175. package/skills/ae-engage/references/validate-flow-node-config.md +12 -11
  176. package/skills/ae-engage/references/whitelist-list.md +4 -4
  177. package/skills/ae-engage/references/whitelist.md +1 -1
  178. package/skills/ae-engage/references/workbench-workbench.md +1 -1
  179. package/skills/ae-generate-tracking-code/SKILL.md +4 -4
  180. package/skills/ae-generate-tracking-plan/SKILL.md +132 -11
  181. package/skills/ae-generate-tracking-plan/references/business-dimension-mapping.md +98 -33
  182. package/skills/ae-generate-tracking-plan/references/xlsx-schema.md +16 -14
  183. package/skills/ae-kb/SKILL.md +11 -6
  184. package/skills/ae-metadata/SKILL.md +2 -1
  185. package/skills/ae-team/SKILL.md +2 -1
  186. package/dist/chunk-NOO24N7W.js +0 -11
  187. package/dist/chunk-TNW2CI4W.js +0 -129
  188. package/dist/te-community-PEZ2VEF7.js +0 -687
  189. package/dist/te-community-TSKJ652U.js +0 -687
  190. package/skills/ae-engage/references/config-channel-detail.md +0 -31
  191. package/skills/ae-engage/references/config-channel-list.md +0 -26
  192. package/skills/ae-engage/references/config-item-detail.md +0 -29
  193. package/skills/ae-engage/references/config-item-list.md +0 -18
  194. package/skills/ae-engage/references/copy-config-template.md +0 -28
  195. package/skills/ae-engage/references/delete-config-channel.md +0 -23
  196. package/skills/ae-engage/references/delete-config-item.md +0 -24
  197. package/skills/ae-engage/references/engage-scene-config-item.md +0 -69
  198. package/skills/ae-engage/references/manage-strategy.md +0 -73
  199. package/skills/ae-engage/references/strategy-detail.md +0 -72
  200. package/skills/ae-engage/references/strategy-list.md +0 -20
  201. package/skills/ae-engage/references/update-config-channel-status.md +0 -31
@@ -0,0 +1,301 @@
1
+ # Community Data Reporting
2
+
3
+ Use `ae-cli community data report` to validate, normalize, and submit community records directly to an authorized Iris ingress endpoint. This is an ingestion data-plane command, not an AE analysis-host command.
4
+
5
+ ## Contents
6
+
7
+ - [Safety and delivery contract](#safety-and-delivery-contract)
8
+ - [Endpoint and identifiers](#endpoint-and-identifiers)
9
+ - [Input modes](#input-modes)
10
+ - [Chat example](#chat-example)
11
+ - [Mixed payload example](#mixed-payload-example)
12
+ - [Common record rules](#common-record-rules)
13
+ - [Schemas](#schemas)
14
+ - [Normalization](#normalization)
15
+ - [Dry-run and output](#dry-run-and-output)
16
+ - [Errors and retry policy](#errors-and-retry-policy)
17
+ - [Privacy](#privacy)
18
+
19
+ ## Safety and delivery contract
20
+
21
+ - The command has `risk: write`. A clear user request to report the data is sufficient; do not add `--yes` or ask for a second confirmation.
22
+ - Run a redacted `--dry-run` before the first submission of a dataset.
23
+ - A successful response means only that Iris queued the request. It does not prove that every record passed asynchronous processing or reached durable storage.
24
+ - Never describe `status: "queued"` as accepted, imported, persisted, or queryable.
25
+ - The client makes at most one POST, never follows redirects, and never retries automatically.
26
+ - After a timeout, the delivery state is unknown. Check the downstream query or storage side before deciding whether a manual resubmission is safe.
27
+
28
+ ## Endpoint and identifiers
29
+
30
+ The endpoint precedence is:
31
+
32
+ 1. `--endpoint`
33
+ 2. `AE_IRIS_SYNC_ENDPOINT`
34
+
35
+ The endpoint must be a complete `http` or `https` URL whose path ends in `/sync_content`. It must not contain credentials, a query string, or a fragment. Never guess, concatenate, or derive this URL from `--host`; `--host` is unrelated to this command.
36
+
37
+ Verify all three identifiers with the user or an authoritative system:
38
+
39
+ | Flag | Iris field | Contract |
40
+ |------|------------|----------|
41
+ | `--space-id` | `game_id` | Positive signed int64 |
42
+ | `--channel-id` | `channel_id` | Positive signed int64 |
43
+ | `--source-id` | `source_id` | Positive signed int64 |
44
+
45
+ The CLI reads these flags as strings to preserve precision, then emits JSON numeric values without quotes. It fixes `source_type` to `#standard` and `version` to `5.0.0`. `--zone-id` defaults to `Asia/Shanghai` and accepts a valid IANA time-zone ID.
46
+
47
+ The reporting command does not provide a `--game-id` alias. It also does not accept `zone_offset` or top-level `timestamp`/`datetime` request overrides.
48
+
49
+ ## Input modes
50
+
51
+ Choose exactly one mode:
52
+
53
+ ```text
54
+ --data-type <type> --data <inline|path|@path|->
55
+ --payload <inline|path|@path|->
56
+ ```
57
+
58
+ `--data` accepts one record object or a non-empty record array. `--payload` accepts one segment object or a non-empty segment array. A segment has this shape:
59
+
60
+ ```json
61
+ {
62
+ "data_type": "chat",
63
+ "data": [
64
+ { "chat_uuid": "example" }
65
+ ]
66
+ }
67
+ ```
68
+
69
+ Supported `data_type` values are `post`, `video`, `reply`, `danmu`, `live_room`, `live_interaction`, `chat`, and `interaction`.
70
+
71
+ Before constructing records, run `ae-cli community data report --help`. The installed command's schema summary is the source of truth for the required fields of every supported `data_type`; use the schema sections below for field limits and normalization behavior.
72
+
73
+ For either input flag:
74
+
75
+ - Inline JSON is accepted for non-sensitive examples.
76
+ - `@path/to/file.json` is the preferred, unambiguous file form.
77
+ - A plain existing path is also accepted.
78
+ - `-` reads JSON from stdin.
79
+ - JSONL is not supported.
80
+
81
+ ## Chat example
82
+
83
+ Store records in `chat.json` so message content does not enter shell history:
84
+
85
+ ```json
86
+ [
87
+ {
88
+ "chat_uuid": "wecom-chat-0001",
89
+ "user_id": "user-001",
90
+ "user_name": "Example User",
91
+ "chat_room_type": "wecom_group",
92
+ "chat_room_id": "room-001",
93
+ "chat_room": "Example support group",
94
+ "content": "Example redacted message",
95
+ "publish_time": "2026-07-21 09:30:00",
96
+ "extras": {
97
+ "source": "wecom"
98
+ }
99
+ }
100
+ ]
101
+ ```
102
+
103
+ Run the redacted preview, then submit only if the endpoint and IDs are verified:
104
+
105
+ ```bash
106
+ ae-cli --dry-run community data report \
107
+ --endpoint https://<iris-ingress>/sync_content \
108
+ --space-id <space-id> \
109
+ --channel-id <channel-id> \
110
+ --source-id <source-id> \
111
+ --data-type chat \
112
+ --data @chat.json
113
+
114
+ ae-cli community data report \
115
+ --endpoint https://<iris-ingress>/sync_content \
116
+ --space-id <space-id> \
117
+ --channel-id <channel-id> \
118
+ --source-id <source-id> \
119
+ --data-type chat \
120
+ --data @chat.json
121
+ ```
122
+
123
+ ## Mixed payload example
124
+
125
+ Use `--payload` when one request contains multiple data types. For example, `mixed.json` can contain a post with a sidecar interaction plus a standalone interaction snapshot:
126
+
127
+ ```json
128
+ [
129
+ {
130
+ "data_type": "post",
131
+ "data": [
132
+ {
133
+ "post_uuid": "post-0001",
134
+ "user_id": "author-001",
135
+ "title": "Example post",
136
+ "content": "Example body",
137
+ "publish_time": "2026-07-21 10:00:00",
138
+ "interaction": {
139
+ "collect_time": "2026-07-21 10:05:00",
140
+ "metrics": {
141
+ "views": 100,
142
+ "likes": 8
143
+ }
144
+ }
145
+ }
146
+ ]
147
+ },
148
+ {
149
+ "data_type": "interaction",
150
+ "data": [
151
+ {
152
+ "content_uuid": "post-0001",
153
+ "content_type": 0,
154
+ "collect_time": "2026-07-21 11:00:00",
155
+ "metrics": {
156
+ "views": "125",
157
+ "comments": 3
158
+ }
159
+ }
160
+ ]
161
+ }
162
+ ]
163
+ ```
164
+
165
+ ```bash
166
+ AE_IRIS_SYNC_ENDPOINT=https://<iris-ingress>/sync_content \
167
+ ae-cli --dry-run community data report \
168
+ --space-id <space-id> --channel-id <channel-id> --source-id <source-id> \
169
+ --payload @mixed.json
170
+ ```
171
+
172
+ ## Common record rules
173
+
174
+ - Each record and segment must be a JSON object; arrays must be non-empty.
175
+ - Text fields accept only JSON strings. Numbers and booleans are not coerced to text.
176
+ - Optional `null` fields are treated as omitted.
177
+ - Unknown record fields are preserved.
178
+ - Signed int64 inputs may be JSON integer numbers or canonical decimal strings. The wire body contains lossless, unquoted JSON numbers.
179
+ - Fields constrained to non-negative int64 reject negative values, fractions, and values above `9223372036854775807`.
180
+ - Date/time strings accept only `yyyy-MM-dd HH:mm:ss`, `yyyy-MM-dd HH:mm:ss.SSS`, `yyyy-MM-dd HH:mm`, or `yyyy-MM-dd` where the field permits a date-only value.
181
+ - `extras` and `user_extra` accept an object or a JSON-encoded object string. Missing, null, or invalid values normalize to `{}`. Serialized `user_extra` must not exceed 1024 UTF-16 code units.
182
+ - `subtitle` accepts an object array or a JSON-encoded object array. Every element must be an object.
183
+ - Lengths and truncation use UTF-16 code units, matching Iris/Java string behavior.
184
+ - A field with an Iris truncation fallback is truncated and counted in normalization statistics. An overlong field without a fallback is rejected.
185
+
186
+ ## Schemas
187
+
188
+ Only the key ingestion constraints are listed below. Unknown fields remain on the record after validation.
189
+
190
+ ### `post`
191
+
192
+ Required: `post_uuid`, a string no longer than 32 UTF-16 code units.
193
+
194
+ Optional normalized fields include `user_id` (64), `user_name` (80), `title` (200), `content` (65533), `publish_time`, and `extras`. Values in parentheses are truncation limits. An optional `interaction` sidecar requires `collect_time` and a non-empty `metrics` object using the same metric rules as standalone `interaction` with `content_type=0`.
195
+
196
+ ### `video`
197
+
198
+ Required: `video_uuid`, a string no longer than 32 UTF-16 code units.
199
+
200
+ Optional normalized fields include `user_id` (64), `user_name` (80), `title` (1000), `description` (65533), `publish_time`, `subtitle`, and `extras`. An optional `interaction` sidecar uses the standalone metric rules with `content_type=1`.
201
+
202
+ ### `reply`
203
+
204
+ Required: `reply_uuid` (maximum 32), `root_id` (maximum 32), and `root_type`, which must be `post`, `video`, or `live`.
205
+
206
+ Optional normalized fields include `user_id` (64), `user_name` (80), `content` (65533), `publish_time`, `parent_id` (32), and `extras`.
207
+
208
+ ### `danmu`
209
+
210
+ Required: `danmu_uuid` (maximum 32), non-negative int64 `timestamp`, `root_id` (maximum 32), and `root_type`, which must be `post`, `video`, or `live`.
211
+
212
+ Optional normalized fields include `user_id` (64), `user_name` (80), `content` (65533), and `publish_time`.
213
+
214
+ ### `live_room`
215
+
216
+ Required: non-negative int64 `uuid`, `room_id` (maximum 32), `room_name` (maximum 80), `room_avatar` (maximum 65533), non-negative int64 `fans`, and date/time `timestamp`.
217
+
218
+ Optional room/stream fields include `room_type` (truncated to 128), `stream_cover` (65533), `stream_title` (80), `stream_status`, `stream_start_time`, `stream_end_time`, and `stream_notice` (maximum 255, rejected if longer). Missing or `2` `stream_status` becomes `0`; only normalized values `0` and `1` are allowed.
219
+
220
+ The optional metrics `online`, `heat`, `noble_count`, `guardian_count`, `diamond_fan_count`, and `dfans_count` are non-negative int64 values. At most one of the three guardian aliases may be present. If stream details or metrics are present, `stream_start_time` is required and must include a time component; a date-only value is rejected. The derived `stream_id` must not exceed 64 UTF-16 code units, and every derived metric ID (`uuid * 5 + metric_type`) must remain within signed int64 range.
221
+
222
+ ### `live_interaction`
223
+
224
+ Required: non-negative int64 `uuid`, `activity_type`, `activity_content`, `room_id`, `stream_start_time`, and date/time `timestamp`.
225
+
226
+ `activity_type` must be `danmu`, `gift`, `superchat`, or `premium`. `activity_content` is truncated to 1024. `room_id` is at most 32. `stream_start_time` must include a time component. Optional normalized fields include `user_id` (80), `user_name` (80), and `user_extra`.
227
+
228
+ ### `chat`
229
+
230
+ The six required string fields are:
231
+
232
+ | Field | Limit |
233
+ |-------|-------|
234
+ | `chat_uuid` | 36 UTF-16 code units; overlong values are truncated |
235
+ | `user_id` | 80 |
236
+ | `chat_room_type` | 16; no enum restriction |
237
+ | `chat_room_id` | 80 |
238
+ | `content` | 65533 |
239
+ | `publish_time` | One supported date/time format |
240
+
241
+ Optional normalized fields are `user_name`, `chat_room`, `chat_server`, and `chat_server_id` (each 80), plus `extras`.
242
+
243
+ `chat_uuid` is a required JSON string. If it exceeds 36 UTF-16 code units, the client keeps the first 36 units and reports the change under `chat.chat_uuid` in the normalization statistics; it does not reject the record for length. Supply source identifiers that already fit the limit to avoid truncation changing record identity or collapsing distinct identifiers to the same normalized value.
244
+
245
+ ### `interaction`
246
+
247
+ Required: `content_uuid` (maximum 32), integer `content_type` from 0 through 7, `collect_time`, and a non-empty `metrics` object.
248
+
249
+ Every metric value must be a non-negative int64. A single invalid metric rejects the whole record; it is never silently dropped. Metric names must match `content_type`:
250
+
251
+ | `content_type` | Meaning | Allowed metric names |
252
+ |----------------|---------|----------------------|
253
+ | `0`, `1` | post, video | `views`, `likes`, `comments`, `shares`, `favorites`, `coins`, `danmaku`, `dislikes` |
254
+ | `2`-`6` | live, chat, comment, reply, danmu | `favorites`, `coins`, `danmaku`, `dislikes` |
255
+ | `7` | user | `followers`, `total_views`, `total_likes` |
256
+
257
+ ## Normalization
258
+
259
+ The CLI normalizes the input before dry-run or submission:
260
+
261
+ - A single record becomes a one-element `data` array; a single segment becomes a one-element `payload` array.
262
+ - Fixed request metadata is `source_type: "#standard"` and `version: "5.0.0"`.
263
+ - Integer strings become lossless JSON numeric literals.
264
+ - Optional `null` properties are removed.
265
+ - Fields with Iris truncation fallbacks are truncated by UTF-16 code units.
266
+ - Invalid or missing `extras`/`user_extra` becomes `{}`; encoded objects and `subtitle` arrays become native JSON structures.
267
+ - Missing or legacy `stream_status: 2` becomes `0`.
268
+
269
+ The summary counts truncated, defaulted, and integer-converted fields without exposing their original values.
270
+
271
+ ## Dry-run and output
272
+
273
+ `--dry-run` performs local parsing, schema validation, and normalization, but sends no network request. Its redacted output contains endpoint, data types, segment/record counts, encoded byte count, and normalization statistics. It never prints the business payload.
274
+
275
+ A successful live submission has these semantics:
276
+
277
+ ```json
278
+ {
279
+ "status": "queued",
280
+ "persistence_verified": false,
281
+ "next_step": "After asynchronous processing, verify the submitted record identifiers through an authorized downstream query or storage path before treating this submission as persisted."
282
+ }
283
+ ```
284
+
285
+ The complete output also reports submission counts and normalization statistics. Treat them as submitted-to-queue counts, not per-record acceptance counts. Iris does not currently return a query URL or trace ID in this response, so the CLI does not invent one; use the submitted identifiers with an authorized downstream query or storage path.
286
+
287
+ ## Errors and retry policy
288
+
289
+ - Input, schema, file, identifier, and endpoint failures use a `validation` error envelope. Locations identify segment, record, and field but do not echo the invalid business value.
290
+ - Iris HTTP 400 errors expose the safe `return_message` when available.
291
+ - HTTP 5xx responses, non-JSON responses, missing `return_code`, non-zero `return_code`, redirects, and buffer-full responses use a standard API error envelope. Server stack traces are not echoed.
292
+ - The request timeout is 30 seconds. A timeout does not establish whether Iris queued the request.
293
+ - Never automate a retry. For timeout or ambiguous transport failure, check downstream state first and ask the user before any deliberate resubmission.
294
+
295
+ ## Privacy
296
+
297
+ - Prefer `@file` or stdin for chat text, usernames, identifiers, and other sensitive content. Inline JSON can remain in shell history or process listings.
298
+ - The reporting client sends only `Content-Type: application/json` and `Accept: application/json`. It does not send AE access tokens, CLI tokens, or custom authorization headers.
299
+ - Request and response bodies are excluded from CLI HTTP logs. Logs contain only endpoint, status, and byte counts.
300
+ - Dry-run output is redacted by default. Do not paste raw records into reports or error explanations.
301
+ - An endpoint URL must not contain embedded credentials, query parameters, or fragments.
@@ -39,8 +39,9 @@ Global parameters:
39
39
  | `--host <url>` | Override the active AE host. Available on every command and may be placed after the subcommand, e.g. `ae-cli dataops_ide +<command> --host <url>`. |
40
40
 
41
41
  Output and errors:
42
- - Successful commands return machine-readable JSON by default.
42
+ - Successful commands return machine-readable JSON by default. Envelope may include optional `_notice.host_compat`.
43
43
  - Failed commands return `{ "ok": false, "error": { "type": "...", "message": "...", "hint": "..." } }` and exit non-zero.
44
+ - **CRITICAL — Host compat (do this first):** After each `ae-cli` run, check stderr and `_notice.host_compat`. If either is present, open the user reply with a short ⚠️ version warning and **quote the `npm i -g` / `npx skills add` (or update-cluster) lines verbatim**, then present the business result. Soft tip; `ok: true` can still carry the notice.
44
45
 
45
46
  Safety constraints:
46
47
  - Read commands can execute directly after required IDs and references are verified.