@thinkingai/ae-cli 6.0.55 → 6.0.57

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 (169) hide show
  1. package/README.md +35 -6
  2. package/README.zh.md +35 -6
  3. package/bin/ae-cli.js +5 -0
  4. package/bin/runtime-capabilities.json +5 -0
  5. package/cli-installation-guide.md +24 -3
  6. package/dist/{auth-RQBO6MTY.js → auth-YEIJLBFY.js} +61 -19
  7. package/dist/{automation-VAAQBM7Y.js → automation-NAR5DDGL.js} +94 -38
  8. package/dist/{capability-JRIFC4AJ.js → capability-P7DD4Q73.js} +50 -21
  9. package/dist/{chunk-5XJYLEVC.js → chunk-72NJKS7O.js} +4 -4
  10. package/dist/chunk-752BSLZC.js +222 -0
  11. package/dist/{chunk-RGYPSEYD.js → chunk-7ABK2PEJ.js} +3 -3
  12. package/dist/{chunk-Q5US7JC5.js → chunk-7JAVT5TK.js} +3 -3
  13. package/dist/{chunk-GHXZK54S.js → chunk-H3K5UGYC.js} +41 -13
  14. package/dist/{chunk-OP44TT4H.js → chunk-IN7KKL6K.js} +4 -2
  15. package/dist/{chunk-VZZNLV3I.js → chunk-JCWM2TYP.js} +61 -15
  16. package/dist/{chunk-S6M42KND.js → chunk-JEUXDY3B.js} +1 -1
  17. package/dist/{chunk-ZL7SGNIA.js → chunk-JNVVJ273.js} +58 -46
  18. package/dist/chunk-N6XBLRB7.js +105 -0
  19. package/dist/{chunk-AP7YP2NX.js → chunk-OAWPT7VP.js} +2 -2
  20. package/dist/{chunk-7KU2WNQE.js → chunk-QEMQKVHW.js} +37 -15
  21. package/dist/{chunk-CT7QDJS6.js → chunk-QVRIDN42.js} +2 -2
  22. package/dist/{chunk-RPBOAQQQ.js → chunk-QZUVLFNR.js} +1 -1
  23. package/dist/{chunk-3YVEAZUN.js → chunk-RJHGDWSC.js} +32 -21
  24. package/dist/{chunk-374V5R6N.js → chunk-TKVVACEJ.js} +6 -4
  25. package/dist/chunk-TULINOLS.js +2283 -0
  26. package/dist/chunk-YVG6QD3V.js +233 -0
  27. package/dist/{chunk-WNGFSIOB.js → chunk-Z3Q2AEIN.js} +237 -86
  28. package/dist/chunk-ZGIYG473.js +132 -0
  29. package/dist/{community-report-client-PEERQCX2.js → community-report-client-TJVCLZ3K.js} +1 -1
  30. package/dist/compat-check-PMEGUPZU.js +32 -0
  31. package/dist/{config-SICKWZ2A.js → config-VWVPR4WW.js} +43 -10
  32. package/dist/{context-NGVFPCBK.js → context-F6FCGTF3.js} +4 -4
  33. package/dist/{data-integration-BCLQFTGU.js → data-integration-6UAZO4GG.js} +207 -24
  34. package/dist/evaluation-4LO2O4AF.js +3714 -0
  35. package/dist/index.js +343 -79
  36. package/dist/{local-data-upload-client-TWMHFLUA.js → local-data-upload-client-KCMG6J62.js} +1 -1
  37. package/dist/{memory-CQKH2JAV.js → memory-HHPX3NF2.js} +6 -6
  38. package/dist/{metadata-EMFGUI2W.js → metadata-HEQQEEG3.js} +17 -9
  39. package/dist/{model-VX5M2CJ6.js → model-7UHGWYVR.js} +4 -4
  40. package/dist/{personal-semantic-preference-SLWVVYZ4.js → personal-semantic-preference-V4L6ZWR2.js} +7 -6
  41. package/dist/{project-semantic-DPSZBKQD.js → project-semantic-NKHKJX6M.js} +7 -6
  42. package/dist/{sync-RZIAV37C.js → sync-ZJMXCRIN.js} +8 -7
  43. package/dist/{te-agent-AORRE2FM.js → te-agent-WBKIFEQD.js} +757 -94
  44. package/dist/{te-analysis-ISXKJKRT.js → te-analysis-ADX7RKO4.js} +578 -94
  45. package/dist/{te-community-42M7ICDO.js → te-community-PREDRXG3.js} +722 -228
  46. package/dist/{te-dataops-BNKNZ4F2.js → te-dataops-ITWJHO2U.js} +9 -6
  47. package/dist/{te-engage-BZE3MBKT.js → te-engage-VE2NUH5V.js} +7 -6
  48. package/dist/{te-kb-ULATOTQ3.js → te-kb-WSMOW7WS.js} +407 -83
  49. package/dist/{te-system-UGHVKBVV.js → te-system-YM657FKO.js} +6 -6
  50. package/dist/{te-team-YA6SNOJ3.js → te-team-T2WRLOOD.js} +64 -41
  51. package/dist/{things-DTCOQIQB.js → things-6QOMFXOG.js} +7 -7
  52. package/dist/{update-ESNYKUVR.js → update-I4MOUYOX.js} +11 -7
  53. package/dist/{workspace-JEOHKFPX.js → workspace-LYDAP647.js} +6 -6
  54. package/package.json +25 -11
  55. package/skills/ae-agent/SKILL.md +20 -3
  56. package/skills/ae-agent/references/command_index.md +8 -0
  57. package/skills/ae-agent/references/resource-package.md +57 -0
  58. package/skills/ae-analysis/SKILL.md +23 -10
  59. package/skills/ae-analysis/references/adhoc_export.md +1 -1
  60. package/skills/ae-analysis/references/agent_review_preflight.md +55 -10
  61. package/skills/ae-analysis/references/agent_review_priorities_comparisons.md +5 -3
  62. package/skills/ae-analysis/references/agent_review_submit_to_page.md +60 -24
  63. package/skills/ae-analysis/references/ai_models/event.md +58 -2
  64. package/skills/ae-analysis/references/ai_models/rank_list.md +1 -0
  65. package/skills/ae-analysis/references/ai_models/retention.md +2 -0
  66. package/skills/ae-analysis/references/ai_models/revenue.md +2 -0
  67. package/skills/ae-analysis/references/analysis_data_export.md +11 -1
  68. package/skills/ae-analysis/references/asset_batch_info_export.md +2 -2
  69. package/skills/ae-analysis/references/asset_batch_sql_export.md +2 -2
  70. package/skills/ae-analysis/references/asset_export.md +1 -1
  71. package/skills/ae-analysis/references/bi_panel_page_data_export.md +1 -1
  72. package/skills/ae-analysis/references/check_export.md +1 -1
  73. package/skills/ae-analysis/references/command_index.md +39 -26
  74. package/skills/ae-analysis/references/dashboard_report_data_export.md +2 -0
  75. package/skills/ae-analysis/references/dashboard_report_get.md +6 -2
  76. package/skills/ae-analysis/references/dashboard_report_update.md +24 -5
  77. package/skills/ae-analysis/references/feedback_submit.md +1 -1
  78. package/skills/ae-analysis/references/governance_recommendation_export.md +40 -18
  79. package/skills/ae-analysis/references/governance_recommendation_run_update.md +13 -0
  80. package/skills/ae-analysis/references/live_data_export.md +1 -1
  81. package/skills/ae-analysis/references/metric_create.md +29 -0
  82. package/skills/ae-analysis/references/metric_get.md +2 -0
  83. package/skills/ae-analysis/references/metric_update.md +2 -0
  84. package/skills/ae-analysis/references/operation_record_export.md +1 -1
  85. package/skills/ae-analysis/references/plan_change_log_export.md +1 -1
  86. package/skills/ae-analysis/references/plan_export.md +1 -1
  87. package/skills/ae-analysis/references/project_info_get.md +4 -0
  88. package/skills/ae-analysis/references/project_member_group_add_members.md +35 -0
  89. package/skills/ae-analysis/references/project_member_group_create.md +25 -0
  90. package/skills/ae-analysis/references/project_member_group_delete.md +34 -0
  91. package/skills/ae-analysis/references/project_member_group_list.md +29 -0
  92. package/skills/ae-analysis/references/project_member_group_members.md +28 -0
  93. package/skills/ae-analysis/references/project_member_group_remove_members.md +35 -0
  94. package/skills/ae-analysis/references/project_member_group_rename.md +26 -0
  95. package/skills/ae-analysis/references/project_semantic_knowledge_wiki.md +9 -1
  96. package/skills/ae-analysis/references/project_semantic_knowledge_wiki_plan_schema.md +6 -1
  97. package/skills/ae-analysis/references/report_data_export.md +1 -1
  98. package/skills/ae-analysis/references/scenario_append.md +31 -0
  99. package/skills/ae-analysis/references/scenario_begin.md +11 -0
  100. package/skills/ae-analysis/references/scenario_collect.md +43 -0
  101. package/skills/ae-analysis/references/scenario_evaluation.md +18 -0
  102. package/skills/ae-analysis/references/scenario_get.md +15 -0
  103. package/skills/ae-analysis/references/scenario_list.md +64 -0
  104. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/build-project-semantic-wiki.mjs +73 -4
  105. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/company-kb.mjs +14 -1
  106. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/default-compile-schema.md +5 -1
  107. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/execution-contract.mjs +173 -0
  108. package/skills/ae-analysis/scripts/project-semantic-knowledge-wiki/generate-build-ir.mjs +109 -64
  109. package/skills/ae-automation/SKILL.md +2 -2
  110. package/skills/ae-automation/references/cli.md +18 -1
  111. package/skills/ae-capability/SKILL.md +7 -3
  112. package/skills/ae-community/SKILL.md +77 -27
  113. package/skills/ae-community/references/community-analyzing-theme-comment.md +10 -8
  114. package/skills/ae-community/references/community-data-quality.md +68 -0
  115. package/skills/ae-community/references/community-query-evidence.md +85 -0
  116. package/skills/ae-community/references/community-scenario-capabilities.md +137 -0
  117. package/skills/ae-community/references/community-weekly-report.md +6 -3
  118. package/skills/ae-community/references/get_channel_info.md +7 -4
  119. package/skills/ae-community/references/get_comment_tag_analysis.md +3 -3
  120. package/skills/ae-community/references/get_comments_summary.md +4 -4
  121. package/skills/ae-community/references/get_corpus_tags.md +3 -3
  122. package/skills/ae-community/references/get_daily_summary.md +3 -3
  123. package/skills/ae-community/references/get_hot_topics.md +3 -3
  124. package/skills/ae-community/references/get_livestream_analysis.md +3 -3
  125. package/skills/ae-community/references/get_livestream_detail.md +4 -4
  126. package/skills/ae-community/references/get_livestream_list.md +3 -3
  127. package/skills/ae-community/references/get_livestream_overview.md +3 -3
  128. package/skills/ae-community/references/get_livestream_room_metrics.md +3 -3
  129. package/skills/ae-community/references/get_livestream_rooms.md +3 -3
  130. package/skills/ae-community/references/get_overview_metrics.md +3 -3
  131. package/skills/ae-community/references/get_post_detail.md +4 -4
  132. package/skills/ae-community/references/get_risk_content.md +5 -5
  133. package/skills/ae-community/references/get_sentiment_overview.md +4 -4
  134. package/skills/ae-community/references/get_tag_trends.md +3 -3
  135. package/skills/ae-community/references/get_topic_detail.md +3 -3
  136. package/skills/ae-community/references/list_sources.md +28 -0
  137. package/skills/ae-community/references/list_spaces.md +39 -0
  138. package/skills/ae-community/references/search_posts.md +21 -7
  139. package/skills/ae-data-integration/SKILL.md +6 -4
  140. package/skills/ae-data-integration/references/error-handling.md +1 -0
  141. package/skills/ae-data-integration/references/handoff.md +1 -1
  142. package/skills/ae-data-integration/references/sink-upload.md +11 -0
  143. package/skills/ae-data-integration/references/source-inspect.md +2 -1
  144. package/skills/ae-data-integration/references/transform.md +1 -1
  145. package/skills/ae-data-integration/references/ue-mapping.md +1 -1
  146. package/skills/ae-evaluation/SKILL.md +83 -0
  147. package/skills/ae-evaluation/references/access-and-members.md +55 -0
  148. package/skills/ae-evaluation/references/connections.md +78 -0
  149. package/skills/ae-evaluation/references/datasets.md +57 -0
  150. package/skills/ae-evaluation/references/evaluators.md +81 -0
  151. package/skills/ae-evaluation/references/files.md +33 -0
  152. package/skills/ae-evaluation/references/integrations.md +39 -0
  153. package/skills/ae-evaluation/references/runs.md +160 -0
  154. package/skills/ae-evaluation/references/schedules.md +31 -0
  155. package/skills/ae-kb/SKILL.md +33 -6
  156. package/skills/ae-kb/references/publication.md +81 -0
  157. package/skills/ae-kb/references/query-workflow.md +14 -1
  158. package/skills/ae-metadata/SKILL.md +3 -2
  159. package/skills/ae-metadata/references/metadata_data_table_download.md +7 -1
  160. package/skills/ae-metadata/references/metadata_data_table_get.md +37 -0
  161. package/skills/ae-team/SKILL.md +2 -2
  162. package/skills/ae-team/references/run-start.md +1 -0
  163. package/skills/ae-team/references/run-watch.md +7 -5
  164. package/skills/ae-things/SKILL.md +53 -51
  165. package/skills/ae-things/references/cli.md +56 -54
  166. package/skills/ae-things-progress/SKILL.md +20 -20
  167. package/skills/ae-things-review/SKILL.md +19 -19
  168. package/dist/chunk-6VNIR4AP.js +0 -1422
  169. package/dist/chunk-CI24BDR2.js +0 -43
@@ -12,8 +12,9 @@ You are "Director of Community Operations + Senior Data Analyst". The goal is no
12
12
  ## Time deduction rules
13
13
 
14
14
  1. The user clearly gives the date: query strictly according to the user scope.
15
- 2. The user does not provide a date: automatically retrieve the past 7 days (`endTime=yesterday`, `startTime=endTime-7d`).
16
- 3. Don’t interrupt the process due to lack of time.
15
+ 2. The user does not provide a date: automatically retrieve the past 7 days (`endTime=yesterday`, `startTime=endTime-6d`).
16
+ 3. These bounds include both dates: state the exact seven calendar days and service timezone. Use the preceding seven days for an equal-length comparison. Missing or failed data is unknown, never zero.
17
+ 4. For filtered questions, use the same effective visual query for all comparisons and evidence. An unfiltered overview is not the denominator of a filtered search.
17
18
 
18
19
  ## Required tool chain
19
20
 
@@ -24,7 +25,9 @@ You are "Director of Community Operations + Senior Data Analyst". The goal is no
24
25
  5. `+get_risk_content` (compliance risk control)
25
26
  6. `+get_hot_topics` (hotspot assisted verification)
26
27
 
27
- ## Output structure (must be complete)
28
+ ## Output structure
29
+
30
+ Mark unsupported or unavailable sections explicitly. Never invent results to fill this template.
28
31
 
29
32
  1. **Core summary of the report**: Setting the tone for this week + hot keywords
30
33
  2. **Overview indicator board**: total volume, sentiment distribution, channel matrix (table)
@@ -1,7 +1,7 @@
1
1
  # ae-community +get_channel_info
2
2
 
3
3
 
4
- Get the list of valid channels for the community space, including channel IDs and names. **This is the prerequisite step for most commands that require `--channel-id` / `--channel-id-list`: First get the real channel ID here, and then call `+search_posts`, `+get_post_detail`, `+get_comments_summary`, `+get_livestream_list`, etc. with parameters (subject to the reference of each command).
4
+ Get the list of valid channels for the community space, including channel IDs and names. **This is the prerequisite step for most commands that require `--channel-id` / `--channel-id-list`**: first get the real channel ID here, then call `+search_posts`, `+get_post_detail`, `+get_comments_summary`, `+get_livestream_list`, etc. If the space ID is unknown, run `ae-cli community spaces list` first.
5
5
 
6
6
  Mapping command: `ae-cli community +get_channel_info`
7
7
 
@@ -9,12 +9,15 @@ Mapping command: `ae-cli community +get_channel_info`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
 
15
15
  ## Example
16
16
 
17
17
  ```bash
18
18
  # Get channel list
19
- ae-cli community +get_channel_info --space-id 1 --game-id 1
19
+ ae-cli community +get_channel_info --space-id 1
20
20
  ```
21
+
22
+ Copy returned channel IDs exactly. JSON output preserves IDs outside JavaScript's safe integer range
23
+ as strings.
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_comment_tag_analysis`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id` | number | yes | channel ID |
15
15
  | `--uuid` | string | yes | content UUID |
16
16
  | `--resource-type` | number | Yes | Resource type: `0` for posts, `1` for videos |
@@ -23,7 +23,7 @@ Mapping command: `ae-cli community +get_comment_tag_analysis`
23
23
  ```bash
24
24
  # Analyze comment tags
25
25
  ae-cli community +get_comment_tag_analysis \
26
- --space-id 1 --game-id 1 \
26
+ --space-id 1 \
27
27
  --channel-id 1 --uuid <uuid> \
28
28
  --resource-type 0 --tag-code "sentiment"
29
29
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_comments_summary`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id` | number | yes | channel ID |
15
15
  | `--uuid` | string | yes | content UUID |
16
16
  | `--start-time` | string | No | Earliest comment publish date, format yyyy-MM-dd, default is the publishing time of the post |
@@ -21,12 +21,12 @@ Mapping command: `ae-cli community +get_comments_summary`
21
21
  ```bash
22
22
  # Get comment summary
23
23
  ae-cli community +get_comments_summary \
24
- --space-id 1 --game-id 1 \
24
+ --space-id 1 \
25
25
  --channel-id 1 --uuid <uuid>
26
26
 
27
27
  #Specify time range
28
28
  ae-cli community +get_comments_summary \
29
- --space-id 1 --game-id 1 \
29
+ --space-id 1 \
30
30
  --channel-id 1 --uuid <uuid> \
31
31
  --start-time 2024-01-01 --end-time 2024-01-07
32
32
  ```
@@ -9,12 +9,12 @@ Mapping command: `ae-cli community +get_corpus_tags`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
 
15
15
  ## Example
16
16
 
17
17
  ```bash
18
18
  # Get the tag list
19
- ae-cli community +get_corpus_tags --space-id 1 --game-id 1
19
+ ae-cli community +get_corpus_tags --space-id 1
20
20
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_daily_summary`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--date` | string | Yes | Date, format yyyy-MM-dd |
15
15
 
16
16
  ## Example
@@ -18,5 +18,5 @@ Mapping command: `ae-cli community +get_daily_summary`
18
18
  ```bash
19
19
  # Get daily report
20
20
  ae-cli community +get_daily_summary \
21
- --space-id 1 --game-id 1 --date 2024-01-01
21
+ --space-id 1 --date 2024-01-01
22
22
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_hot_topics`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--start-time` | string | No | Topic statistics start time, format yyyy-MM-dd |
15
15
  | `--end-time` | string | No | Topic statistics end time, format yyyy-MM-dd |
16
16
  | `--order-by` | number | No | Sort: 0 by popularity desc, 1 by start time desc |
@@ -20,6 +20,6 @@ Mapping command: `ae-cli community +get_hot_topics`
20
20
  ```bash
21
21
  # Get hot topics
22
22
  ae-cli community +get_hot_topics \
23
- --space-id 1 --game-id 1 \
23
+ --space-id 1 \
24
24
  --start-time 2024-01-01 --end-time 2024-01-07
25
25
  ```
@@ -9,14 +9,14 @@ Mapping command: `ae-cli community +get_livestream_analysis`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--stream-id` | string | Yes | Livestream session ID, streamId from `get_livestream_list` |
15
15
 
16
16
  ## Example
17
17
 
18
18
  ```bash
19
19
  ae-cli community +get_livestream_analysis \
20
- --space-id 1 --game-id 1 \
20
+ --space-id 1 \
21
21
  --stream-id <stream-id>
22
22
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_livestream_detail`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--stream-id` | string | Yes | Live session ID, obtained from get_livestream_list |
15
15
  | `--activity-types` | string | No | Interaction type filtering: 0 danmaku, 1 gift, 2 eye-catching message, 3 premium, comma separated |
16
16
  | `--anchor-time` | string | No | Interaction anchor time, format yyyy-MM-dd HH:mm |
@@ -24,10 +24,10 @@ Mapping command: `ae-cli community +get_livestream_detail`
24
24
  ```bash
25
25
  # Get livestream details
26
26
  ae-cli community +get_livestream_detail \
27
- --space-id 1 --game-id 1 --stream-id <stream-id>
27
+ --space-id 1 --stream-id <stream-id>
28
28
 
29
29
  # Filter danmaku types
30
30
  ae-cli community +get_livestream_detail \
31
- --space-id 1 --game-id 1 --stream-id <stream-id> \
31
+ --space-id 1 --stream-id <stream-id> \
32
32
  --activity-types 0,1
33
33
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_livestream_list`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id` | number | no | Channel ID (obtain via `get_livestream_rooms`) |
15
15
  | `--room-id` | string | No | Room ID (obtain via `get_livestream_rooms`) |
16
16
  | `--start-time` | string | No | Start date for statistics, format yyyy-MM-dd |
@@ -21,5 +21,5 @@ Mapping command: `ae-cli community +get_livestream_list`
21
21
  ```bash
22
22
  # Get the livestream session list
23
23
  ae-cli community +get_livestream_list \
24
- --space-id 1 --game-id 1 --channel-id 1
24
+ --space-id 1 --channel-id 1
25
25
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_livestream_overview`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--start-time` | string | No | Start date for statistics, format yyyy-MM-dd |
15
15
  | `--end-time` | string | No | End date for statistics, format yyyy-MM-dd |
16
16
 
@@ -19,6 +19,6 @@ Mapping command: `ae-cli community +get_livestream_overview`
19
19
  ```bash
20
20
  # Get livestream overview
21
21
  ae-cli community +get_livestream_overview \
22
- --space-id 1 --game-id 1 \
22
+ --space-id 1 \
23
23
  --start-time 2024-01-01 --end-time 2024-01-07
24
24
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_livestream_room_metrics`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id` | number | Yes | Channel ID (obtain via `get_livestream_rooms`) |
15
15
  | `--room-id` | string | yes | Room ID (obtain via `get_livestream_rooms`) |
16
16
  | `--year` | string | No | Year, format yyyy, default is the current year |
@@ -20,6 +20,6 @@ Mapping command: `ae-cli community +get_livestream_room_metrics`
20
20
  ```bash
21
21
  # Get the annual indicators of the livestream room
22
22
  ae-cli community +get_livestream_room_metrics \
23
- --space-id 1 --game-id 1 \
23
+ --space-id 1 \
24
24
  --channel-id 1 --room-id <room-id> --year 2024
25
25
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_livestream_rooms`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id-list` | string | No | List of channel IDs, comma separated |
15
15
  | `--start-time` | string | No | Start date for statistics, format yyyy-MM-dd |
16
16
  | `--end-time` | string | No | End date for statistics, format yyyy-MM-dd |
@@ -20,6 +20,6 @@ Mapping command: `ae-cli community +get_livestream_rooms`
20
20
  ```bash
21
21
  # Search livestream room
22
22
  ae-cli community +get_livestream_rooms \
23
- --space-id 1 --game-id 1 \
23
+ --space-id 1 \
24
24
  --start-time 2024-01-01 --end-time 2024-01-07
25
25
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_overview_metrics`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id-list` | string | No | List of channel IDs, comma separated |
15
15
  | `--start-time` | string | Yes | Start date for statistics, format yyyy-MM-dd |
16
16
  | `--end-time` | string | Yes | End date for statistics, format yyyy-MM-dd |
@@ -20,6 +20,6 @@ Mapping command: `ae-cli community +get_overview_metrics`
20
20
  ```bash
21
21
  # Get overall indicators
22
22
  ae-cli community +get_overview_metrics \
23
- --space-id 1 --game-id 1 \
23
+ --space-id 1 \
24
24
  --start-time 2024-01-01 --end-time 2024-01-07
25
25
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_post_detail`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id` | number | yes | channel ID |
15
15
  | `--uuid` | string | yes | content UUID |
16
16
  | `--resource-type` | number | Yes | Resource type: `0` for posts, `1` for videos |
@@ -26,12 +26,12 @@ Mapping command: `ae-cli community +get_post_detail`
26
26
  ```bash
27
27
  # Get post details
28
28
  ae-cli community +get_post_detail \
29
- --space-id 1 --game-id 1 \
29
+ --space-id 1 \
30
30
  --channel-id 1 --uuid <uuid> --resource-type 0
31
31
 
32
32
  # Get video details and page comments
33
33
  ae-cli community +get_post_detail \
34
- --space-id 1 --game-id 1 \
34
+ --space-id 1 \
35
35
  --channel-id 1 --uuid <uuid> --resource-type 1 \
36
36
  --reply-page-num 1 --reply-page-size 20
37
37
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_risk_content`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--start-time` | string | Yes | Lower limit of release time for risky content, format yyyy-MM-dd |
15
15
  | `--end-time` | string | yes | upper limit of release time for risky content, format yyyy-MM-dd |
16
16
  | `--risk-codes` | string | No | List of risk type codes, comma separated |
@@ -25,18 +25,18 @@ Mapping command: `ae-cli community +get_risk_content`
25
25
  ```bash
26
26
  # Query risk content
27
27
  ae-cli community +get_risk_content \
28
- --space-id 1 --game-id 1 \
28
+ --space-id 1 \
29
29
  --start-time 2024-01-01 --end-time 2024-01-07
30
30
 
31
31
  # Filter by risk type
32
32
  ae-cli community +get_risk_content \
33
- --space-id 1 --game-id 1 \
33
+ --space-id 1 \
34
34
  --start-time 2024-01-01 --end-time 2024-01-07 \
35
35
  --risk-codes 1,2
36
36
 
37
37
  # Keyword search
38
38
  ae-cli community +get_risk_content \
39
- --space-id 1 --game-id 1 \
39
+ --space-id 1 \
40
40
  --start-time 2024-01-01 --end-time 2024-01-07 \
41
41
  --search-word "violating keywords"
42
42
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_sentiment_overview`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id-list` | string | No | List of channel IDs, comma separated |
15
15
  | `--start-time` | string | Yes | Start date for statistics, format yyyy-MM-dd |
16
16
  | `--end-time` | string | Yes | End date for statistics, format yyyy-MM-dd |
@@ -22,12 +22,12 @@ Mapping command: `ae-cli community +get_sentiment_overview`
22
22
  ```bash
23
23
  #emotionoverview
24
24
  ae-cli community +get_sentiment_overview \
25
- --space-id 1 --game-id 1 \
25
+ --space-id 1 \
26
26
  --start-time 2024-01-01 --end-time 2024-01-07
27
27
 
28
28
  # Limit the number of returns
29
29
  ae-cli community +get_sentiment_overview \
30
- --space-id 1 --game-id 1 \
30
+ --space-id 1 \
31
31
  --start-time 2024-01-01 --end-time 2024-01-07 \
32
32
  --limit 50
33
33
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_tag_trends`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--tag-code` | string | Yes | Tag code (obtain via `get_corpus_tags`) |
15
15
  | `--channel-id-list` | string | No | List of channel IDs, comma separated |
16
16
  | `--start-time` | string | No | Start date for statistics, format yyyy-MM-dd |
@@ -21,7 +21,7 @@ Mapping command: `ae-cli community +get_tag_trends`
21
21
  ```bash
22
22
  # Get tag trends
23
23
  ae-cli community +get_tag_trends \
24
- --space-id 1 --game-id 1 \
24
+ --space-id 1 \
25
25
  --tag-code "game_version" \
26
26
  --start-time 2024-01-01 --end-time 2024-01-07
27
27
  ```
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +get_topic_detail`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | yes | community space ID |
13
- | `--game-id` | number | yes | game/space ID |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--topic-id` | string | yes | Topic ID, obtained from get_hot_topics |
15
15
  | `--start-time` | string | Yes | Statistics start date, format yyyy-MM-dd, priority is given to the start time of the topic |
16
16
  | `--end-time` | string | Yes | Statistics end date, format yyyy-MM-dd, priority is given to the end time of the topic |
@@ -20,7 +20,7 @@ Mapping command: `ae-cli community +get_topic_detail`
20
20
  ```bash
21
21
  # Get topic details
22
22
  ae-cli community +get_topic_detail \
23
- --space-id 1 --game-id 1 \
23
+ --space-id 1 \
24
24
  --topic-id <topic-id> \
25
25
  --start-time 2024-01-01 --end-time 2024-01-07
26
26
  ```
@@ -0,0 +1,28 @@
1
+ # List Configured Community Sources
2
+
3
+ Use this L2 command when an ingestion or reporting workflow needs the exact source and channel IDs
4
+ configured in a selected community space.
5
+
6
+ ## Command
7
+
8
+ ```bash
9
+ ae-cli community sources list --space-id <space-id>
10
+ ```
11
+
12
+ ## Input
13
+
14
+ | Flag | Required | Description |
15
+ |---|---|---|
16
+ | `--space-id` | yes | Positive signed int64 space ID returned by `community spaces list`. |
17
+
18
+ The command is backed by `community.source.list` and requires the product's data-configuration view
19
+ permission. A permission error does not mean that the space has no data sources.
20
+
21
+ ## Output and next step
22
+
23
+ Each source includes its `sourceId`, `sourceName`, `sourceType`, `channelId`, and `channelName`, plus
24
+ the configured template/config metadata. Preserve every digit of IDs exactly.
25
+
26
+ For `community data report`, select the source that matches the real data producer, then pass its
27
+ `sourceId` as `--source-id` and its `channelId` as `--channel-id`. Do not choose a source by position
28
+ in the list and never fabricate a missing source.
@@ -0,0 +1,39 @@
1
+ # ae-community spaces list
2
+
3
+ List the community spaces available to the authenticated user. Run this before curated community
4
+ analysis when the real `spaceId` is unknown.
5
+
6
+ Mapping command: `ae-cli community spaces list`
7
+
8
+ Capability: `community.space.list`
9
+
10
+ ## Flags
11
+
12
+ No command-specific flags are required. Authentication and host selection use the standard ae-cli
13
+ configuration and global flags.
14
+
15
+ ## Example
16
+
17
+ ```bash
18
+ ae-cli community spaces list
19
+ ```
20
+
21
+ Use the returned `spaceId` as `--space-id` for `+get_channel_info` and the other curated commands.
22
+ IDs outside JavaScript's safe integer range are emitted as strings in JSON. Copy all digits exactly
23
+ and never convert an ID to a floating-point number.
24
+
25
+ ## Returned count and failures
26
+
27
+ A successful array response includes `meta.returned_count`, calculated by the CLI from the number
28
+ of entries in `data`. Use it when reporting how many entries this call returned; verify that the
29
+ number matches the rows you display. It is not a global total or a count of unique space IDs.
30
+ If the server also supplies `returned_count`, the CLI's array count takes precedence. Other server
31
+ metadata, including `total` when present, is preserved with its original meaning.
32
+
33
+ The count describes the original response before any `--jq` projection or filtering. If you filter
34
+ the displayed rows locally, state the displayed count separately rather than presenting
35
+ `meta.returned_count` as the filtered count.
36
+
37
+ `ok: true`, `data: []`, and `meta.returned_count: 0` mean this successful call returned no visible
38
+ spaces. Authentication, permission, routing, and capability failures remain failures; never turn
39
+ them into an empty successful list or infer zero available spaces from an error.
@@ -9,8 +9,8 @@ Mapping command: `ae-cli community +search_posts`
9
9
 
10
10
  | Flag | Type | Required | Description |
11
11
  |------|------|------|------|
12
- | `--space-id` | number | Yes | Community Space ID |
13
- | `--game-id` | number | Yes | Game/Space Logo |
12
+ | `--space-id` | int64 | yes | Community space ID returned by `community spaces list` |
13
+ | `--game-id` | int64 | no | Deprecated compatibility alias; omit it, or make it equal to `--space-id` |
14
14
  | `--channel-id-list` | string | No | List of channel IDs, comma separated |
15
15
  | `--keywords` | string | No | List of keywords, comma separated |
16
16
  | `--start-time` | string | Yes | Minimum content post time, format yyyy-MM-dd |
@@ -20,6 +20,8 @@ Mapping command: `ae-cli community +search_posts`
20
20
  | `--search-mode` | number | No | Search mode: 0 word (default), 1 exact match, 2 author names |
21
21
  | `--search-word` | string | No | Full-text search term, in conjunction with searchMode |
22
22
  | `--sentiment-types` | string | No | Emotion type: 0 negative, 1 positive, 2 neutral, comma separated |
23
+ | `--topic-id-list` | string | No | Topic IDs returned by `+get_hot_topics`, comma separated |
24
+ | `--tag-filters` | JSON | No | Corpus tag filter array using `tagName`, `tagCode`, `inferenceType`, `calcuSymbol`, and optional `ftv` |
23
25
  | `--order-by` | number | No | Sort: 0 time desc, 1 weight desc, 2 time asc, 3 replies desc, 4 heat desc |
24
26
  | `--page-num` | number | No | Page from 1 |
25
27
  | `--page-size` | number | No | Number of bars per page |
@@ -27,21 +29,33 @@ Mapping command: `ae-cli community +search_posts`
27
29
  Examples
28
30
 
29
31
  ```bash
30
- Basic search
32
+ # Basic search
31
33
  ae-cli community +search_posts \
32
- --space-id 1 --game-id 1 \
34
+ --space-id 1 \
33
35
  --start-time 2024-01-01 --end-time 2024-01-07
34
36
 
35
37
  # Filter by channel and sentiment
36
38
  ae-cli community +search_posts \
37
- --space-id 1 --game-id 1 \
39
+ --space-id 1 \
38
40
  --start-time 2024-01-01 --end-time 2024-01-07 \
39
41
  --channel-id-list 1,2 \
40
42
  --sentiment-types 0,1
41
43
 
42
- Pagination Query
44
+ # Pagination query
43
45
  ae-cli community +search_posts \
44
- --space-id 1 --game-id 1 \
46
+ --space-id 1 \
45
47
  --start-time 2024-01-01 --end-time 2024-01-07 \
46
48
  --page-num 1 --page-size 20
49
+
50
+ # Filter by topic and corpus tag
51
+ ae-cli community +search_posts \
52
+ --space-id 1 \
53
+ --start-time 2024-01-01 --end-time 2024-01-07 \
54
+ --topic-id-list topic-1,topic-2 \
55
+ --tag-filters '[{"tagName":"Character","tagCode":"hero","inferenceType":"label","calcuSymbol":"C04"}]'
47
56
  ```
57
+
58
+ `inferenceType` must be `label` or `score` and should be copied from `+get_corpus_tags`.
59
+ Label filters support `C04` (has value) and `C05` (no value). Score filters support
60
+ `C00`, `C01`, `C02`, `C020`, `C03`, `C030`, `C04`, `C05`, and `C06`; comparisons other
61
+ than `C04`/`C05` require an `ftv` JSON array, and `C06` requires at least two values.
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: ae-data-integration
3
- description: "Bring local CSV, TSV, TXT, JSON, JSONL (NDJSON), XLS, and XLSX files — and Feishu sheet / Bitable (多维表格) URLs — into AE end-to-end: identify the source's business meaning, generate and confirm a tracking plan, transform rows into UE records, and upload. Also supports privacy-preserving local analysis and handing a small file to AE Agent. Use whenever a user wants to import offline/local data or a Feishu sheet / Bitable into AE, or analyze a file without uploading it. Trigger words: 本地数据导入 / 离线数据 / 数据文件 / 文件导入 / 文件上报 / CSV 导入 / Excel 导入 / TSV 导入 / JSON 导入 / 飞书表格导入 / 在线表格导入 / 飞书多维表格导入 / 多维表格导入 / 在线多维表格导入 / 导入到 AE / 导入到 ThinkingAI / local data import / import local file / import Feishu sheet / import Feishu Bitable."
3
+ description: "Bring local CSV, TSV, TXT, JSON, JSONL (NDJSON), XLS, XLSX, and Parquet files — and Feishu sheet / Bitable (多维表格) URLs — into AE end-to-end: identify the source's business meaning, generate and confirm a tracking plan, transform rows into UE records, and upload. Also supports privacy-preserving local analysis and handing a small file to AE Agent. Use whenever a user wants to import offline/local data or a Feishu sheet / Bitable into AE, or analyze a file without uploading it. Trigger words: 本地数据导入 / 离线数据 / 数据文件 / 文件导入 / 文件上报 / CSV 导入 / Excel 导入 / TSV 导入 / JSON 导入 / Parquet 导入 / 飞书表格导入 / 在线表格导入 / 飞书多维表格导入 / 多维表格导入 / 在线多维表格导入 / 导入到 AE / 导入到 ThinkingAI / local data import / import local file / parquet import / import Feishu sheet / import Feishu Bitable."
4
4
  ---
5
5
 
6
6
  # AE Data Integration
@@ -11,7 +11,7 @@ When remaining work is outside this skill's scope, or a necessary prerequisite n
11
11
 
12
12
  Turn local/offline files and Feishu sheet / Bitable (多维表格) URLs into AE data through one fixed pipeline of four submodules: **Source → Tracking plan → Transform → Sink**. A file or sheet is never uploaded merely because it is present: its business meaning is understood, confirmed once by a human, and only then ingested. The tracking plan is generated and confirmed **before** ingestion (data governance shift-left) — see [references/tracking-plan.md](references/tracking-plan.md).
13
13
 
14
- Two entrances lead here: the AE Agent dialog (attach / plus-button upload) and `ae-cli`. Two sink paths exist: RESTful API for one-time/small loads (current phase), and LogBus / DataX for recurring/high-volume loads (next phase). Source and Sink are pluggable — adding one does not change the main pipeline.
14
+ Two entrances lead here: the AE Agent dialog (attach / plus-button upload) and `ae-cli`. Two sink paths exist: RESTful `/sync_json` upload for one-time/small loads, and file / LogBus2 delivery (convert-only — writes `valid.ue.jsonl` to a watched directory, never uploads) for recurring/high-volume loads. Which path applies is always the user's choice, never a default. Source and Sink are pluggable — adding one does not change the main pipeline.
15
15
 
16
16
  ## Mandatory safety rules
17
17
 
@@ -31,7 +31,7 @@ Two entrances lead here: the AE Agent dialog (attach / plus-button upload) and `
31
31
 
32
32
  ## When to use / When NOT to use
33
33
 
34
- Use this skill when the user wants to bring a **local data file** (CSV/TSV/TXT/JSON/JSONL/XLS/XLSX) or a **Feishu sheet / Bitable (多维表格) URL** into AE, or analyze a local file without uploading.
34
+ Use this skill when the user wants to bring a **local data file** (CSV/TSV/TXT/JSON/JSONL/XLS/XLSX/Parquet) or a **Feishu sheet / Bitable (多维表格) URL** into AE, or analyze a local file without uploading.
35
35
 
36
36
  | User intent | Use this instead |
37
37
  | --- | --- |
@@ -53,7 +53,9 @@ Walk the four submodules in order. Each submodule is its own reference; follow i
53
53
  2. **Reuse check.** If the profile is `ue_eligible`, read [references/reuse.md](references/reuse.md) and match the recommended mapping against the handoff index. `reuse` searches the current directory's `.ae-cli/data-integration/` upward, then `~/.ae-cli/data-integration/`, so a package written elsewhere is still found. A match proposes a frozen package; after one explicit confirmation, run the returned `transform.mjs` command and jump to Sink (step 5). No match → continue.
54
54
  3. **Tracking plan.** Read [references/tracking-plan.md](references/tracking-plan.md). The plan is generated from the mapping (`plan --mapping`), so confirm the recommended mapping's key system fields with the user first — `mode`, `#account_id`/`#distinct_id`, `#time` + timezone, `#event_name`, `#ip`/`#uuid` (see [references/transform.md](references/transform.md) steps 1–5) — then generate the event/property plan and get a single explicit confirmation from the user before touching data. The plan is a separate, required deliverable from the transform mapping: a user who supplies a column→field mapping directly has **not** completed this step, so build the plan from the confirmed mapping anyway. `user_set` still requires a plan (no events; every property becomes a user property). This step runs for **every** file: a second or later file merges its new events and properties into the existing project plan (tracking-plan.md step 4) — an existing plan is never a reason to skip it.
55
55
  4. **Transform.** Read [references/transform.md](references/transform.md). Map columns to AE system fields and properties, convert, and quarantine dirty rows per [references/ue-mapping.md](references/ue-mapping.md).
56
- 5. **Sink — upload.** Read [references/sink-upload.md](references/sink-upload.md). Resolve the destination, dry-run, confirm, then upload per [references/sync-json-upload.md](references/sync-json-upload.md). `receiver_accepted` is not persistence: after a ~1-minute ingestion delay, verify the data landed with ae-cli (`tracking live-data list` / `tracking ingest summary` / `tracking ingest-error list`) rather than telling the user to check the console.
56
+ 5. **Sink — choose the path first, then act.** Read [references/sink-upload.md](references/sink-upload.md). Before resolving any destination, ask the user which sink path this data takes — never default one silently (the user handing you an endpoint/APPID is not a sink decision):
57
+ - **RESTful `/sync_json` upload** — one-time / small loads. Resolve the destination, dry-run, confirm, then upload per [references/sync-json-upload.md](references/sync-json-upload.md). `receiver_accepted` is not persistence: after a ~1-minute ingestion delay, verify the data landed with ae-cli (`tracking live-data list` / `tracking ingest summary` / `tracking ingest-error list`) rather than telling the user to check the console.
58
+ - **File / LogBus2 mode — JSONL only, never uploads** — recurring / high-volume loads (e.g. daily parquet exports). Run `convert` (or the handoff `bin/run.sh`) so `valid.ue.jsonl` lands in the directory LogBus2 watches — never `upload.sh`, which posts to the RESTful receiver. Use the output directory confirmed in step 4. The same rows must not go through both paths: RESTful upload plus LogBus2 pickup double-ingests.
57
59
  6. **Handoff.** Read [references/handoff.md](references/handoff.md). Export the reusable package (pipeline descriptor + frozen mappings + stage executors + docs) and a shareable zip; in the completion response, state the absolute zip path, the package directory, and the one-line way to run the next same-shape file.
58
60
 
59
61
  ## Error handling
@@ -50,6 +50,7 @@ the user decide — never to guess an encoding or structure and retry silently.
50
50
  | `LOCAL_DATA_INPUT_NOT_FOUND` | Path is not a readable file | Ask for the correct path |
51
51
  | `LOCAL_DATA_FILE_TOO_LARGE` | XLS over 1 GB | Convert to XLSX or split the workbook |
52
52
  | `LOCAL_DATA_INPUT_INVALID` | Generic parse failure (malformed CSV/TSV/JSON/XLS) | Verify encoding and structure, then retry without changing the source |
53
+ | `LOCAL_DATA_PARQUET_INVALID` | File cannot be read as Parquet | Verify the file is a valid Parquet file and retry without changing the source |
53
54
  | `LOCAL_DATA_JSONL_INVALID` | A JSONL line is not valid JSON (`location.record` names the line) | Point at the offending record |
54
55
  | `LOCAL_DATA_JSON_ROOT_INVALID` | JSON root is not an object or array | Check the file's top-level shape |
55
56
  | `LOCAL_DATA_XLSX_INVALID` | Workbook metadata missing / no readable sheets / worksheet entry missing | Re-export the workbook (sheet recognition accepts `<sheet>` and namespaced `<x:sheet>` alike, so this is a real metadata gap) |
@@ -48,7 +48,7 @@ A shareable archive is written next to the package root: `<parent>/ae-data-integ
48
48
 
49
49
  ## Pipeline descriptor
50
50
 
51
- `pipeline.json` declares the three stages and their types. Only `source: local_file` and `sink: restful_sync_json` are implemented today; the `type` fields reserve logbus / datax / mysql for later phases. `bin/run.sh` and `bin/upload.sh` read the descriptor and dispatch each stage by its `type` to `ae-cli data-integration inspect / convert / upload` — they are executors, not a second runtime engine.
51
+ `pipeline.json` declares the three stages and their types. Only `source: local_file` and `sink: restful_sync_json` are implemented today; the `type` fields reserve logbus / datax / mysql for later phases. `bin/run.sh` and `bin/upload.sh` read the descriptor and dispatch each stage by its `type` to `ae-cli data-integration inspect / convert / upload` — they are executors, not a second runtime engine. A Parquet source runs the same `local_file` path: `bin/run.sh` converts it to `valid.ue.jsonl` on disk. When the destination is LogBus2 (or any file-watch sink), hand the runs directory to it and **never run `bin/upload.sh`**, which posts to the RESTful receiver.
52
52
 
53
53
  ## Recorded destination
54
54