@thinkingai/ae-cli 6.0.20 → 6.0.22

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 (70) hide show
  1. package/README.md +1 -4
  2. package/README.zh.md +1 -4
  3. package/dist/{auth-DYC2BGLM.js → auth-I2G7OAU2.js} +2 -4
  4. package/dist/{auth-GHBMJ5ZR.js → auth-RDN6D5HU.js} +32 -104
  5. package/dist/{chunk-5OC7CYCG.js → chunk-2W7HULUD.js} +14 -14
  6. package/dist/chunk-4EUZRJPO.js +163 -0
  7. package/dist/{chunk-DMMEPCST.js → chunk-5FBLRSMU.js} +25 -115
  8. package/dist/{chunk-BJX3GXWC.js → chunk-E34XH4GW.js} +2 -2
  9. package/dist/chunk-FPE5LGVU.js +105 -0
  10. package/dist/{chunk-I5CRVM2S.js → chunk-H52CSLJW.js} +44 -17
  11. package/dist/{chunk-RSHMZ3LG.js → chunk-U6QPKCN3.js} +6 -20
  12. package/dist/{chunk-6W4QOZAL.js → chunk-WPXHCP4A.js} +23 -13
  13. package/dist/{chunk-PN3OS34E.js → chunk-XE2PI5DS.js} +1 -1
  14. package/dist/{chunk-2DUEAXV3.js → chunk-YACCPUNQ.js} +1 -1
  15. package/dist/cli-token-6AGEDJF4.js +14 -0
  16. package/dist/{client-2UJ63MVQ.js → client-VTJMUZ4O.js} +3 -3
  17. package/dist/{config-NCUGK6NS.js → config-2SDTLGOC.js} +3 -3
  18. package/dist/index.js +309 -197
  19. package/dist/metadata-JZ2OTWBK.js +420 -0
  20. package/dist/{model-SJSOZTRS.js → model-ZYMRN4VS.js} +2 -2
  21. package/dist/{raw-7NVWSVJP.js → raw-NGYHAL3F.js} +4 -4
  22. package/dist/{sync-GRVO4K3U.js → sync-JVLX6TGW.js} +3 -3
  23. package/dist/{te-agent-CYZUC4US.js → te-agent-QPZTLHPH.js} +2 -2
  24. package/dist/{te-analysis-HJ22TUAA.js → te-analysis-WWX3Z6RP.js} +46 -24
  25. package/dist/{te-audience-MYDE5WEH.js → te-audience-UXGHUVBB.js} +27 -18
  26. package/dist/{te-common-WNCZB7R7.js → te-common-7XXH73MF.js} +5 -4
  27. package/dist/{te-community-JEEFXPB3.js → te-community-QKE67HR2.js} +5 -4
  28. package/dist/{te-dataops-ZTS7XMXM.js → te-dataops-6W7NNYST.js} +4 -5
  29. package/dist/{te-engage-4XHCTS6I.js → te-engage-NCFAQFX3.js} +5 -4
  30. package/dist/{te-kb-OWM3RQRH.js → te-kb-K5BQYUCM.js} +4 -5
  31. package/dist/{te-meta-JVO4QJBH.js → te-meta-LJZBOSMO.js} +26 -19
  32. package/dist/{te-team-YY24VORI.js → te-team-DHK5R7MV.js} +5 -6
  33. package/package.json +3 -2
  34. package/skills/ae-analysis/SKILL.md +9 -2
  35. package/skills/ae-analysis/references/build_attribution_analysis_qp.md +2 -0
  36. package/skills/ae-analysis/references/build_cluster_definition.md +2 -0
  37. package/skills/ae-analysis/references/build_distribution_analysis_qp.md +2 -0
  38. package/skills/ae-analysis/references/build_event_analysis_qp.md +2 -0
  39. package/skills/ae-analysis/references/build_funnel_analysis_qp.md +2 -0
  40. package/skills/ae-analysis/references/build_heat_map_analysis_qp.md +2 -0
  41. package/skills/ae-analysis/references/build_interval_analysis_qp.md +2 -0
  42. package/skills/ae-analysis/references/build_path_analysis_qp.md +2 -0
  43. package/skills/ae-analysis/references/build_prop_analysis_qp.md +2 -0
  44. package/skills/ae-analysis/references/build_rank_list_analysis_qp.md +2 -0
  45. package/skills/ae-analysis/references/build_retention_analysis_qp.md +2 -0
  46. package/skills/ae-analysis/references/build_tag_definition.md +2 -0
  47. package/skills/ae-analysis/references/list_clusters.md +3 -1
  48. package/skills/ae-analysis/references/list_events.md +5 -2
  49. package/skills/ae-analysis/references/list_metrics.md +4 -2
  50. package/skills/ae-analysis/references/list_properties.md +4 -2
  51. package/skills/ae-analysis/references/list_tags.md +3 -1
  52. package/skills/ae-generate-tracking-code/SKILL.md +68 -31
  53. package/skills/ae-generate-tracking-code/references/snippet-delivery.md +26 -1
  54. package/skills/ae-generate-tracking-code/references/te-api.md +47 -164
  55. package/skills/ae-generate-tracking-plan/SKILL.md +109 -32
  56. package/skills/ae-generate-tracking-plan/references/te-api.md +57 -27
  57. package/skills/ae-metadata/SKILL.md +90 -0
  58. package/skills/ae-metadata/references/metadata_data_table_csv_delete.md +15 -0
  59. package/skills/ae-metadata/references/metadata_data_table_csv_write.md +29 -0
  60. package/skills/ae-metadata/references/metadata_data_table_download.md +17 -0
  61. package/skills/ae-metadata/references/metadata_data_table_get.md +24 -0
  62. package/skills/ae-metadata/references/metadata_data_table_list.md +27 -0
  63. package/skills/ae-metadata/references/metadata_data_table_property_bindings_update.md +17 -0
  64. package/skills/ae-metadata/references/metadata_data_table_sql_delete.md +15 -0
  65. package/skills/ae-metadata/references/metadata_data_table_sql_write.md +31 -0
  66. package/skills/ae-metadata/references/metadata_event_get.md +52 -0
  67. package/skills/ae-metadata/references/metadata_input_file_upload.md +29 -0
  68. package/skills/ae-metadata/references/metadata_property_dimension_table_bind_existing.md +27 -0
  69. package/skills/ae-metadata/references/metadata_property_dimension_table_create_and_bind_csv.md +30 -0
  70. package/skills/ae-metadata/references/metadata_property_get.md +54 -0
@@ -33,6 +33,7 @@ ae-cli analysis_audience +build_cluster_definition --dry-run
33
33
  | Parameter | Required | Description |
34
34
  | --------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------- |
35
35
  | `--project_id` / `-p` | Yes | Project ID |
36
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the definition. |
36
37
  | `--type` | Yes | Cluster type. Supported values: `condition`, `sql` |
37
38
  | `--conditions` | No | For type=condition: main condition group JSON (required when type=condition). See `+get_cluster_definition_schema` for the structure. |
38
39
  | `--include_filter` | No | For type=condition: global include condition group JSON. |
@@ -40,6 +41,7 @@ ae-cli analysis_audience +build_cluster_definition --dry-run
40
41
  | `--sql` | No | For type=sql: SQL query returning a single column named `#user_id`. |
41
42
 
42
43
  ## Decision Rules
44
+ - Use `--authenticated_only true` when the definition should only resolve authenticated events/properties/metrics/clusters/tags.
43
45
 
44
46
  - Determine `--type` first, then pass the corresponding parameters.
45
47
  - For type=condition, `--conditions` is effectively required; `--include_filter` and `--exclude_filter` are optional global filters.
@@ -27,6 +27,7 @@ ae-cli analysis +build_distribution_analysis_qp --project_id <project_id> --time
27
27
  | Parameter | Required | Description |
28
28
  |---|---|---|
29
29
  | `--project_id` / `-p` | Yes | Project ID |
30
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
30
31
  | `--time_range` | Yes | Time range JSON |
31
32
  | `--distribution_metrics` | Yes | Distribution metrics JSON array |
32
33
  | `--time_particle_size` | No | Time granularity. Allowed values: day, week, month, total. Defaults to day. |
@@ -58,6 +59,7 @@ ae-cli analysis +build_distribution_analysis_qp --project_id 3137 --time_range '
58
59
  ```
59
60
 
60
61
  ## Decision Rules
62
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
61
63
  - After successful build (`status=generated`), call `+query_adhoc --model_type distribution --qp '<response.qp>'`.
62
64
  - If non-generated status, stop and ask user to clarify.
63
65
 
@@ -33,6 +33,7 @@ ae-cli analysis +build_event_analysis_qp --project_id <project_id> --time_range
33
33
  | Parameter | Required | Description |
34
34
  |---|---|---|
35
35
  | `--project_id` / `-p` | Yes | Project ID |
36
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
36
37
  | `--time_range` | Yes | Event analysis time range JSON |
37
38
  | `--metrics` | Yes | Event metrics JSON array |
38
39
  | `--time_particle_size` | No | Time granularity. Default: total |
@@ -122,6 +123,7 @@ ae-cli analysis +build_event_analysis_qp --project_id 3137 --time_range '{"mode"
122
123
  ```
123
124
 
124
125
  ## Decision Rules
126
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
125
127
  - After successful build, call `+query_adhoc --model_type event --qp '<response.qp>'`.
126
128
  - If build returns non-generated status, stop and ask user to clarify; do not call `+query_adhoc`.
127
129
  - Wrap JSON parameters in single quotes to avoid shell escaping issues.
@@ -33,6 +33,7 @@ ae-cli analysis +build_funnel_analysis_qp --project_id <project_id> --time_range
33
33
  | Parameter | Required | Description |
34
34
  |---|---|---|
35
35
  | `--project_id` / `-p` | Yes | Project ID |
36
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
36
37
  | `--time_range` | Yes | Funnel analysis time range JSON |
37
38
  | `--funnel` | Yes | Funnel intent JSON |
38
39
  | `--relation` | No | Top-level funnel filter relation. Supported values: and, or. Default: and |
@@ -131,6 +132,7 @@ ae-cli analysis +query_adhoc --project_id 3137 --model_type funnel --qp '<respon
131
132
  ```
132
133
 
133
134
  ## Decision Rules
135
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
134
136
  - After successful build, call `+query_adhoc --model_type funnel --qp '<response.qp>'`.
135
137
  - If build returns non-generated status, stop and ask user to clarify; do not call `+query_adhoc`.
136
138
  - Wrap JSON parameters in single quotes to avoid shell escaping issues.
@@ -25,6 +25,7 @@ ae-cli analysis +build_heat_map_analysis_qp --project_id <project_id> --time_ran
25
25
  | Parameter | Required | Description |
26
26
  |---|---|---|
27
27
  | `--project_id` / `-p` | Yes | Project ID |
28
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
28
29
  | `--time_range` | Yes | Time range JSON |
29
30
  | `--heat_map` | Yes | Heatmap intent JSON |
30
31
 
@@ -45,6 +46,7 @@ ae-cli analysis +build_heat_map_analysis_qp --project_id 3137 --time_range '{"mo
45
46
  ```
46
47
 
47
48
  ## Decision Rules
49
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
48
50
  - After successful build (`status=generated`), call `+query_adhoc --model_type heat_map --qp '<response.qp>'`.
49
51
  - If non-generated status, stop and ask user to clarify.
50
52
 
@@ -27,6 +27,7 @@ ae-cli analysis +build_interval_analysis_qp --project_id <project_id> --time_ran
27
27
  | Parameter | Required | Description |
28
28
  |---|---|---|
29
29
  | `--project_id` / `-p` | Yes | Project ID |
30
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
30
31
  | `--time_range` | Yes | Time range JSON |
31
32
  | `--interval` | Yes | Interval intent JSON |
32
33
  | `--relation` | No | Filter relation for top-level filters. Values: and, or. Default: and. |
@@ -51,6 +52,7 @@ ae-cli analysis +build_interval_analysis_qp --project_id 3137 --time_range '{"mo
51
52
  ```
52
53
 
53
54
  ## Decision Rules
55
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
54
56
  - After successful build (`status=generated`), call `+query_adhoc --model_type interval --qp '<response.qp>'`.
55
57
  - If non-generated status, stop and ask user to clarify.
56
58
 
@@ -26,6 +26,7 @@ ae-cli analysis +build_path_analysis_qp --project_id <project_id> --time_range '
26
26
  | Parameter | Required | Description |
27
27
  |---|---|---|
28
28
  | `--project_id` / `-p` | Yes | Project ID |
29
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
29
30
  | `--time_range` | Yes | Time range JSON |
30
31
  | `--path` | Yes | Path intent JSON |
31
32
 
@@ -44,6 +45,7 @@ ae-cli analysis +build_path_analysis_qp --project_id 3137 --time_range '{"mode":
44
45
  ```
45
46
 
46
47
  ## Decision Rules
48
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
47
49
  - After successful build (`status=generated`), call `+query_adhoc --model_type path --qp '<response.qp>'`.
48
50
  - If non-generated status, stop and ask user to clarify.
49
51
 
@@ -32,6 +32,7 @@ ae-cli analysis +build_prop_analysis_qp --project_id <project_id> --prop_analysi
32
32
  | Parameter | Required | Description |
33
33
  |---|---|---|
34
34
  | `--project_id` / `-p` | Yes | Project ID |
35
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
35
36
  | `--prop_analysis` | Yes | User property analysis intent JSON |
36
37
 
37
38
  ## JSON Shape
@@ -110,6 +111,7 @@ ae-cli analysis +build_prop_analysis_qp --project_id 3137 --prop_analysis '{"met
110
111
  ```
111
112
 
112
113
  ## Decision Rules
114
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
113
115
  - After successful build, call `+query_adhoc --model_type prop_analysis --qp '<response.qp>'`.
114
116
  - If build returns non-generated status, stop and ask user to clarify; do not call `+query_adhoc`.
115
117
  - Wrap JSON parameters in single quotes to avoid shell escaping issues.
@@ -26,6 +26,7 @@ ae-cli analysis +build_rank_list_analysis_qp --project_id <project_id> --time_ra
26
26
  | Parameter | Required | Description |
27
27
  |---|---|---|
28
28
  | `--project_id` / `-p` | Yes | Project ID |
29
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
29
30
  | `--time_range` | Yes | Time range JSON |
30
31
  | `--rank_list` | Yes | Rank list intent JSON |
31
32
 
@@ -54,6 +55,7 @@ ae-cli analysis +build_rank_list_analysis_qp --project_id 3137 --time_range '{"m
54
55
  ```
55
56
 
56
57
  ## Decision Rules
58
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
57
59
  - After successful build (`status=generated`), call `+query_adhoc --model_type rank_list --qp '<response.qp>'`.
58
60
  - If non-generated status, stop and ask user to clarify.
59
61
 
@@ -33,6 +33,7 @@ ae-cli analysis +build_retention_analysis_qp --project_id <project_id> --time_ra
33
33
  | Parameter | Required | Description |
34
34
  |---|---|---|
35
35
  | `--project_id` / `-p` | Yes | Project ID |
36
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the QP. Do not pass this flag to `+query_adhoc`. |
36
37
  | `--time_range` | Yes | Retention analysis time range JSON |
37
38
  | `--retention` | Yes | Retention intent JSON |
38
39
  | `--relation` | No | Top-level retention filter relation. Supported values: and, or. Default: and |
@@ -129,6 +130,7 @@ ae-cli analysis +build_retention_analysis_qp --project_id 3137 --time_range '{"m
129
130
  ```
130
131
 
131
132
  ## Decision Rules
133
+ - Use `--authenticated_only true` only when the user explicitly wants authenticated assets; do not add this flag to `+query_adhoc`.
132
134
  - After successful build, call `+query_adhoc --model_type retention --qp '<response.qp>'`.
133
135
  - If build returns non-generated status, stop and ask user to clarify; do not call `+query_adhoc`.
134
136
  - Wrap JSON parameters in single quotes to avoid shell escaping issues.
@@ -34,6 +34,7 @@ ae-cli analysis_audience +build_tag_definition --dry-run
34
34
  | Parameter | Required | Description |
35
35
  | --------------------- | -------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
36
36
  | `--project_id` / `-p` | Yes | Project ID |
37
+ | `--authenticated_only` | No | Resolve only authenticated assets while building the definition. |
37
38
  | `--type` | Yes | Tag type. Supported values: `condition`, `metric`, `first_last`, `sql` |
38
39
  | `--condition_values` | No | For type=condition: list of tag value definitions JSON array. Each item defines a segment label and its conditions. See `+get_tag_definition_schema` for the structure. |
39
40
  | `--metric` | No | For type=metric: metric definition JSON. Fields: `eventName`, `analysis`, `quota` (property name), `recentDay`/`startTime`/`endTime`. |
@@ -41,6 +42,7 @@ ae-cli analysis_audience +build_tag_definition --dry-run
41
42
  | `--sql` | No | For type=sql: SQL query returning two columns: `#user_id` and the tag value. |
42
43
 
43
44
  ## Decision Rules
45
+ - Use `--authenticated_only true` when the definition should only resolve authenticated events/properties/metrics/clusters/tags.
44
46
 
45
47
  - Determine `--type` first, then pass only the corresponding parameter.
46
48
  - For type=condition, `--condition_values` is effectively required.
@@ -28,11 +28,13 @@ ae-cli analysis_audience +list_clusters --dry-run
28
28
  |---|---|---|
29
29
  | `--project_id` / `-p` | Yes | Project ID |
30
30
  | `--query` / `-q` | No | Optional keyword filter. Performs fuzzy matching against clusterName, displayName, and remarks; if omitted, all clusters are returned. |
31
- | `--fields` | No | Optional return field list (JSON array). Supported fields: `id`, `clusterName`, `displayName`, `clusterType`, `progress`, `usersNum`, `refreshStatus`, `remarks`. Default fields when omitted: `id`, `clusterName`, `displayName`, `remarks`, `clusterType`, `progress`, `usersNum`. Invalid fields will fail with `INVALID_FIELDS`. |
31
+ | `--fields` | No | Optional return field list (JSON array). Supported fields: `id`, `clusterName`, `displayName`, `clusterType`, `progress`, `usersNum`, `refreshStatus`, `remarks`, `authenticationStatus`. Default fields when omitted: `id`, `clusterName`, `displayName`, `remarks`, `clusterType`, `progress`, `usersNum`, `authenticationStatus`. Invalid fields will fail with `INVALID_FIELDS`. |
32
32
  | `--limit` | No | Optional page size. Default: 20, max: 50. |
33
33
  | `--offset` | No | Optional page offset. Default: 0. |
34
+ | `--authenticated_only` | No | When true, return only authenticated clusters. |
34
35
 
35
36
  ## Decision Rules
37
+ - Use `--authenticated_only true` only when the user explicitly asks for authenticated assets. `authenticationStatus` is `1` for authenticated and `0` for unauthenticated.
36
38
  - For the first execution, it is recommended to pass only the required parameters (`--project_id`) and add optional parameters after confirming the path works.
37
39
  - When troubleshooting across projects, first confirm whether `--project_id` matches the current permissions and target environment.
38
40
 
@@ -27,10 +27,13 @@ ae-cli analysis_meta +list_events --dry-run
27
27
  |---|---|---|
28
28
  | `--project_id` / `-p` | Yes | Project ID |
29
29
  | `--query` / `-q` | No | Optional keyword filter. Performs fuzzy matching against eventName, eventDesc, and remark; if omitted, all events are returned. |
30
- | `--fields` / `-f` | No | Optional fields to return (JSON array). Supported fields: `eventId`, `eventName`, `eventDesc`, `remark`, `eventTag`. Default fields when omitted: `eventId`, `eventName`, `eventDesc`, `remark`. |
31
- | `--limit` / `-l` | No | Optional page size. Default: 20, maximum: 10000. |
30
+ | `--fields` / `-f` | No | Optional fields to return (JSON array). Supported fields: `eventId`, `eventName`, `eventDesc`, `remark`, `eventTag`, `authenticationStatus`. Default fields when omitted: `eventId`, `eventName`, `eventDesc`, `remark`, `authenticationStatus`. |
31
+ | `--limit` / `-l` | No | Optional page size. Default: 20, maximum: 50. |
32
32
  | `--offset` / `-o` | No | Optional page offset. Default: 0. |
33
+ | `--authenticated_only` | No | When true, return only authenticated events. |
34
+
33
35
  ## Decision Rules
36
+ - Use `--authenticated_only true` only when the user explicitly asks for authenticated assets. `authenticationStatus` is `1` for authenticated and `0` for unauthenticated.
34
37
  - For the first run, pass only the required parameter (`--project_id`) to confirm the path works, then add optional parameters.
35
38
  - For builder-supported ad-hoc analysis, pass the user's event wording to the builder instead of pre-querying event metadata.
36
39
  - For cross-project troubleshooting, first confirm whether `--project_id` matches the current permissions and target environment.
@@ -29,11 +29,13 @@ ae-cli analysis_meta +list_metrics --dry-run
29
29
  |---|---|---|
30
30
  | `--project_id` / `-p` | Yes | Project ID |
31
31
  | `--query` / `-q` | No | Optional keyword filter. Fuzzy match on metricName, metricDesc, metricRemark. |
32
- | `--fields` | No | Optional fields to return. Supported: metricId, metricName, metricDesc, metricRemark, metricMode, openId, creator, creatorLoginName, updateOpenId, updateCreator, updateLoginName, createTime, updateTime. Default fields when omitted: metricId, metricName, metricDesc, metricRemark, metricMode. Invalid fields cause INVALID_FIELDS error. |
33
- | `--limit` | No | Optional limit. Default: 20, maximum: 10000. |
32
+ | `--fields` | No | Optional fields to return. Supported: metricId, metricName, metricDesc, metricRemark, metricMode, authenticationStatus, openId, creator, creatorLoginName, updateOpenId, updateCreator, updateLoginName, createTime, updateTime. Default fields when omitted: metricId, metricName, metricDesc, metricRemark, metricMode, authenticationStatus. Invalid fields cause INVALID_FIELDS error. |
33
+ | `--limit` | No | Optional limit. Default: 20, maximum: 50. |
34
34
  | `--offset` | No | Optional offset. Default: 0. |
35
+ | `--authenticated_only` | No | When true, return only authenticated metrics. |
35
36
 
36
37
  ## Decision Rules
38
+ - Use `--authenticated_only true` only when the user explicitly asks for authenticated assets. `authenticationStatus` is `1` for authenticated and `0` for unauthenticated.
37
39
  - First run should only pass the required parameter (`--project_id`), and add optional parameters only after the path is confirmed to work.
38
40
  - For pagination, use `--limit` and `--offset` together. Default limit is 20.
39
41
  - Use `--fields` to select specific columns for lighter response payloads.
@@ -27,12 +27,14 @@ ae-cli analysis_meta +list_properties --dry-run
27
27
  | `--scope` | No | Optional property scope. event means event properties, user means user properties. If omitted, all scopes are queried. |
28
28
  | `--event_name` | No | Optional event name. If provided, only event properties available for that event are returned. |
29
29
  | `--query` / `-q` | No | Optional keyword filter. Fuzzy match is applied to propName, propDesc, and remark; if omitted, all matched properties are returned. |
30
- | `--fields` / `-f` | No | Optional fields to return (JSON array). Supported fields: `propId`, `propName`, `propDesc`, `remark`, `selectType`, `tableType`, `subTableType`. Default fields when omitted: `propId`, `propName`, `propDesc`, `remark`, `selectType`, `tableType`. |
31
- | `--limit` / `-l` | No | Optional page size. Default: 20, maximum: 10000. |
30
+ | `--fields` / `-f` | No | Optional fields to return (JSON array). Supported fields: `propId`, `propName`, `propDesc`, `remark`, `selectType`, `tableType`, `subTableType`, `authenticationStatus`. Default fields when omitted: `propId`, `propName`, `propDesc`, `remark`, `selectType`, `tableType`, `authenticationStatus`. |
31
+ | `--limit` / `-l` | No | Optional page size. Default: 20, maximum: 50. |
32
32
  | `--offset` / `-o` | No | Optional page offset. Default: 0. |
33
+ | `--authenticated_only` | No | When true, return only authenticated properties. |
33
34
 
34
35
 
35
36
  ## Decision Rules
37
+ - Use `--authenticated_only true` only when the user explicitly asks for authenticated assets. `authenticationStatus` is `1` for authenticated and `0` for unauthenticated.
36
38
  - For the first run, pass only the required parameter (`--project_id`) to confirm the path works, then add optional parameters.
37
39
  - For builder-supported ad-hoc analysis, pass the user's property wording to the builder instead of pre-querying property metadata.
38
40
  - For cross-project troubleshooting, first confirm whether `--project_id` matches the current permissions and target environment.
@@ -26,11 +26,13 @@ ae-cli analysis_audience +list_tags --dry-run
26
26
  |---|---|---|
27
27
  | `--project_id` / `-p` | Yes | Project ID |
28
28
  | `--query` / `-q` | No | Optional keyword filter. Performs fuzzy matching against tag names, display names, and remarks; if omitted, all tags are returned. |
29
- | `--fields` | No | Optional return field list (JSON array). Supported fields: `id`, `clusterName`, `displayName`, `clusterType`, `subConditionTabType`, `progress`, `usersNum`, `remarks`. Default fields when omitted: `id`, `clusterName`, `displayName`, `remarks`, `clusterType`, `subConditionTabType`, `progress`, `usersNum`. Invalid fields will fail with `INVALID_FIELDS`. |
29
+ | `--fields` | No | Optional return field list (JSON array). Supported fields: `id`, `clusterName`, `displayName`, `clusterType`, `subConditionTabType`, `progress`, `usersNum`, `remarks`, `authenticationStatus`. Default fields when omitted: `id`, `clusterName`, `displayName`, `remarks`, `clusterType`, `subConditionTabType`, `progress`, `usersNum`, `authenticationStatus`. Invalid fields will fail with `INVALID_FIELDS`. |
30
30
  | `--limit` | No | Optional page size. Default: 20, max: 50. |
31
31
  | `--offset` | No | Optional page offset. Default: 0. |
32
+ | `--authenticated_only` | No | When true, return only authenticated tags. |
32
33
 
33
34
  ## Decision Rules
35
+ - Use `--authenticated_only true` only when the user explicitly asks for authenticated assets. `authenticationStatus` is `1` for authenticated and `0` for unauthenticated.
34
36
  - For the first execution, it is recommended to pass only the required parameters (`--project_id`) and add optional parameters after confirming the path works.
35
37
  - When troubleshooting across projects, first confirm whether `--project_id` matches the current permissions and target environment.
36
38
 
@@ -58,14 +58,14 @@ First, check if `.ae-cli/draft.json` exists and read existing configuration:
58
58
  |---|---|---|
59
59
  | AE projectId | `meta.project_id` | Has value → confirm; missing → ask |
60
60
  | AE web address | `meta.host` | Has value → confirm; missing → ask |
61
- | **SERVER_URL** | `meta.server_url` | **Must ask**. Data ingestion endpoint — different from web address |
62
- | **APP_ID** | `meta.app_id` | **Must ask**. Obtained from AE Admin → "Integration Config" |
61
+ | **SERVER_URL** | `meta.server_url` | Has value → confirm; missing → try lookup from project config, then ask if unavailable |
62
+ | **APP_ID** | `meta.app_id` | Has value → confirm; missing → try lookup from accessible project list, then ask if unavailable |
63
63
  | SDK integration mode | `meta.sdk_integration_mode` | Has value → use directly |
64
64
  | Client SDK type | `meta.client_platforms` (preferred) or `meta.client_sdk_type` | Has value → use directly |
65
65
  | Server language | `meta.server_language` | Has value → use directly |
66
66
  | User identity system | `meta.user_identity` | Has value → use directly |
67
67
 
68
- **Important**: `project_id` ≠ `APP_ID`, and `host` ≠ `SERVER_URL`. Even if project_id and host are already set, SERVER_URL and APP_ID must still be asked separately.
68
+ **Important**: `project_id` ≠ `APP_ID`, and `host` ≠ `SERVER_URL`. Even if project_id and host are already set, SERVER_URL and APP_ID must still be resolved and confirmed separately. Prefer lookup first; ask the user only when lookup is unavailable or ambiguous.
69
69
 
70
70
  **Multi-platform support**:
71
71
  - If `client_platforms` exists (array): multi-platform scenario — generate code for each platform
@@ -86,14 +86,21 @@ First, check if `.ae-cli/draft.json` exists and read existing configuration:
86
86
  - User says `yes` → use draft value
87
87
  - User enters new value → update draft.json and use new value
88
88
 
89
- ### Required configuration (must confirm each item)
89
+ ### Required configuration (must resolve and confirm each item)
90
90
 
91
- **⚠️ Key: SERVER_URL and APP_ID are independent config items. Even if draft.json has project_id and host, you MUST ask. `project_id` ≠ `APP_ID`, `host` ≠ `SERVER_URL`.**
91
+ **⚠️ Key: SERVER_URL and APP_ID are independent config items. Even if draft.json has project_id and host, you MUST resolve and confirm them. `project_id` ≠ `APP_ID`, `host` ≠ `SERVER_URL`.**
92
92
 
93
- 1. **SERVER_URL** — Data ingestion endpoint (**different from web URL**; go to AE Admin → "Project Settings" → "Integration Config" → fill in "Public URL")
93
+ 1. **APP_ID** — Prefer automatic lookup before asking:
94
+ - If `meta.project_id` is known, run `ae-cli analysis_common +list_projects` once for the current host.
95
+ - Find the project whose `projectId` matches `meta.project_id`.
96
+ - If the matched project has `appId`, ask: **"I found APP_ID `<appId>` for project `<projectId>`. Use it? yes / enter new value"**
97
+ - If the project is missing, ambiguous, or has no `appId`, ask the user to copy APP_ID from AE Admin → "Project Settings" → "Integration Config".
98
+ 2. **SERVER_URL** — Data ingestion endpoint (**different from web URL**; go to AE Admin → "Project Settings" → "Integration Config" → fill in "Public URL")
99
+ - If `meta.project_id` is known, you may try `ae-cli analysis_meta +get_project_config --project_id <project_id>` once.
100
+ - Use the returned value only if the response explicitly contains a receiver URL field such as `serverUrl`, `pushUrl`, `push_url`, `receiverUrl`, `publicUrl`, or equivalent ingestion endpoint field.
101
+ - If a value is found, ask: **"I found SERVER_URL `<url>` for project `<projectId>`. Use it? yes / enter new value"**
94
102
  - ⚠️ "Public URL" only shows if previously filled in; if empty, this field won't display
95
103
  - Solution: ask ops for the URL, or **skip this step** (use `SERVER_URL` or `PUSH_URL` placeholder in code)
96
- 2. **APP_ID** — Go to AE Admin → "Project Settings" → "Integration Config" → copy "APP_ID"
97
104
 
98
105
  **host handling** (optional):
99
106
  - If you need to fetch plan from AE (no local draft.json) → ask for host
@@ -194,7 +201,7 @@ Ask in order, one item per message:
194
201
  - Account ID source: user_account / role_id / none
195
202
  - Visitor ID strategy: auto / device_id / custom
196
203
 
197
- 5. **SERVER_URL / APP_ID** (skip if already configured)
204
+ 5. **APP_ID / SERVER_URL**: resolve them with the lookup-first flow above, confirm any found values with the user, and ask only for values that cannot be found or are rejected by the user.
198
205
 
199
206
  **Step 4: Merge configuration and proceed to Phase 1**
200
207
 
@@ -224,26 +231,31 @@ Without `.ae-cli/draft.json` or `.ae-cli/remote-plan.json`:
224
231
 
225
232
  **Client platforms** (corresponding to client SDKs):
226
233
 
227
- | plan field | Platform | SDK | Document Path |
228
- |---|---|---|---|
229
- | `android` | Android | Android SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/client-sdk/android.md` |
230
- | `ios` | iOS | iOS SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/client-sdk/ios.md` |
231
- | `openharmony` | OpenHarmony | OpenHarmony SDK | `~/.ae-cli/wiki/te-docs/raw/客户端-sdk/openharmony.md` |
232
- | `javascript` | Web / H5 | JavaScript SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/client-sdk/javascript.md` |
233
- | `miniprogram` | Mini-program | Mini-program SDK | `~/.ae-cli/wiki/te-docs/raw/客户端-sdk/小程序小游戏.md` |
234
- | `unity` | Unity | Unity SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/client-sdk/game-engine/unity.md` |
235
- | `game_engine` | Game Engine | Cocos / Laya / Unreal | See `references/sdk-index.md` |
234
+ | plan field | Platform | SDK |
235
+ |---|---|---|
236
+ | `android` | Android | Android SDK |
237
+ | `ios` | iOS | iOS SDK |
238
+ | `openharmony` | OpenHarmony | OpenHarmony SDK |
239
+ | `javascript` | Web / H5 | JavaScript SDK |
240
+ | `miniprogram` | Mini-program | Mini-program SDK |
241
+ | `unity` | Unity | Unity SDK |
242
+ | `game_engine` | Game Engine | Cocos / Laya / Unreal |
236
243
 
237
244
  **Server languages** (corresponding to server SDKs):
238
245
 
239
- | plan field | Language | SDK | Document Path |
240
- |---|---|---|---|
241
- | `java` | Java | Java SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/server-sdk/java.md` |
242
- | `python` | Python | Python SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/server-sdk/python.md` |
243
- | `go` | Go | Go SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/server-sdk/golang.md` |
244
- | `nodejs` | Node.js | Node SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/server-sdk/nodejs.md` |
245
- | `php` | PHP | PHP SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/server-sdk/php.md` |
246
- | `csharp` | C# | C# SDK | `~/.ae-cli/wiki/te-docs/raw/data-ingestion-guide/server-sdk/c.md` |
246
+ | plan field | Language | SDK |
247
+ |---|---|---|
248
+ | `java` | Java | Java SDK |
249
+ | `python` | Python | Python SDK |
250
+ | `go` | Go | Go SDK |
251
+ | `nodejs` | Node.js | Node SDK |
252
+ | `php` | PHP | PHP SDK |
253
+ | `csharp` | C# | C# SDK |
254
+
255
+ **SDK document paths**:
256
+ - Do not use hard-coded wiki paths from this section.
257
+ - Always read `references/sdk-index.md` first and use the path listed there for the selected SDK.
258
+ - If the path from `references/sdk-index.md` does not exist in the local wiki mirror, search under `~/.ae-cli/wiki/te-docs/raw/` with SDK-specific keywords and use the best matching latest main document.
247
259
 
248
260
  ---
249
261
 
@@ -437,7 +449,7 @@ test -z "$(git status --porcelain)" || echo "uncommitted changes present"
437
449
  **Only generate events where `platform === "client"` or `platform === "both"`**
438
450
 
439
451
  **⚠️ Hard rule: Never guess SDK imports**
440
- - Before generating, MUST read the corresponding SDK wiki document (see `references/sdk-index.md`)
452
+ - Before generating, MUST read `references/sdk-index.md`, resolve the corresponding SDK wiki main document, verify the path exists, and then read that main document
441
453
  - **MUST copy import statements and package names from the wiki main document**, never guess
442
454
  - Example: JavaScript SDK npm package is `thinkingdata-browser`, import variable is `ta`
443
455
  - If generated code doesn't match wiki docs (e.g. `TDAnalytics`/`te`/`@thinkingdata/web-sdk`), re-read wiki and fix
@@ -460,7 +472,7 @@ test -z "$(git status --porcelain)" || echo "uncommitted changes present"
460
472
  - **Always provide LogBus2 official docs link**: https://docs-v2.thinkingdata.cn/?version=latest&code=logbus2_installation&lan=en-US
461
473
 
462
474
  **⚠️ Hard rule: Never guess SDK imports**
463
- - Before generating, MUST read the corresponding SDK wiki document (see `references/sdk-index.md`)
475
+ - Before generating, MUST read `references/sdk-index.md`, resolve the corresponding SDK wiki main document, verify the path exists, and then read that main document
464
476
  - **MUST copy import statements and package names from the wiki main document**, never guess
465
477
  - **Re-read docs before every code generation**, never rely on "remembered" code
466
478
 
@@ -478,6 +490,25 @@ test -z "$(git status --porcelain)" || echo "uncommitted changes present"
478
490
 
479
491
  Show deliverables based on selected output modes:
480
492
 
493
+ ### Attachment upload
494
+
495
+ After all `.ae-cli/output/` files are generated, upload every generated output file to the Agent attachment library so the user can download them from the file/attachment management entry.
496
+
497
+ Use the existing attachment command:
498
+
499
+ ```bash
500
+ ae-cli agent +add-attachment --yes --files '<json-array-of-generated-output-files>'
501
+ ```
502
+
503
+ Upload list rules:
504
+ - Include all generated snippet files under `.ae-cli/output/`.
505
+ - Include generated server config files such as `.ae-cli/output/daemon.json` and LogBus README files.
506
+ - Include `.ae-cli/output/README.md`.
507
+ - Include generated debug scripts if the user selected the debug option.
508
+ - Do not upload files inserted directly into the user's project; only upload generated output artifacts.
509
+
510
+ If upload succeeds, include the attachment upload result in the final response and tell the user the files are available from the file/attachment management entry. If upload fails because Agent attachment credentials are unavailable, keep the local `.ae-cli/output/` files and tell the user the upload did not complete.
511
+
481
512
  ### All snippets
482
513
 
483
514
  ```
@@ -496,6 +527,8 @@ Standalone:
496
527
  - .ae-cli/output/te-debug.java (validation script)
497
528
 
498
529
  README: .ae-cli/output/README.md (usage instructions)
530
+
531
+ Attachment upload: uploaded generated output files to the file/attachment management entry
499
532
  ```
500
533
 
501
534
  ### Mixed (some insert + some snippet)
@@ -514,6 +547,8 @@ LogBus2 official docs: https://docs-v2.thinkingdata.cn/?version=latest&code=logb
514
547
 
515
548
  Standalone:
516
549
  - .ae-cli/output/te-debug.java (validation script)
550
+
551
+ Attachment upload: uploaded generated output files to the file/attachment management entry
517
552
  ```
518
553
 
519
554
  ### Markdown code snippet display
@@ -623,7 +658,9 @@ All output mode rules are in `references/*.md`. This SKILL.md only handles phase
623
658
  - `~/.ae-cli/wiki/te-docs/synthesis/` — LLM-synthesized overview documents
624
659
 
625
660
  **Document reading order during code generation**:
626
- 1. Read `references/sdk-index.md` to find the SDK's wiki document path
627
- 2. Read wiki main doc (initialization, basic API)
628
- 3. Read wiki advanced guide (LoggerConsumer, user properties, etc.)
629
- 4. Check advanced guide sub-documents if needed
661
+ 1. Read `references/sdk-index.md` to find the selected SDK's main document and advanced guide paths.
662
+ 2. Verify the main document path exists in the local wiki mirror before reading it.
663
+ 3. If the indexed path is missing, search under `~/.ae-cli/wiki/te-docs/raw/` with SDK-specific keywords such as SDK name, platform name, language name, and `main doc`; choose the latest main document, not historical/versioned documents.
664
+ 4. Read the wiki main doc first (initialization, imports, package names, basic API).
665
+ 5. Read the advanced guide only after the main doc (LoggerConsumer, user properties, auto-track, preset properties, etc.).
666
+ 6. Check advanced guide sub-documents if needed.
@@ -4,9 +4,10 @@
4
4
 
5
5
  ## Deliverables
6
6
 
7
- Two outputs:
7
+ Three outputs:
8
8
  1. **Markdown response**: code snippets grouped by platform (for reading)
9
9
  2. **Code files**: `.ae-cli/output/<platform>-sdk.<ext>` (for copy-paste use)
10
+ 3. **Attachment library upload**: generated files uploaded with `ae-cli agent +add-attachment` so the user can download them from the file/attachment management entry
10
11
 
11
12
  ---
12
13
 
@@ -230,6 +231,26 @@ AE Debug mode requires the device ID to be added in AE Admin before data can be
230
231
 
231
232
  ---
232
233
 
234
+ ## Attachment Library Upload
235
+
236
+ After all snippet output files are written, upload generated output artifacts to the Agent attachment library:
237
+
238
+ ```bash
239
+ ae-cli agent +add-attachment --yes --files '<json-array-of-generated-output-files>'
240
+ ```
241
+
242
+ Upload list must include:
243
+ - Every generated platform snippet file under `.ae-cli/output/`
244
+ - `.ae-cli/output/README.md`
245
+ - Server-side config files, including `.ae-cli/output/daemon.json` and related README files
246
+ - Generated debug scripts, if any
247
+
248
+ Only upload generated output artifacts. Do not upload files inserted directly into the user's project.
249
+
250
+ If upload succeeds, report that the files are available from the file/attachment management entry. If upload fails because Agent attachment credentials are unavailable, preserve the local output files and report the upload failure separately.
251
+
252
+ ---
253
+
233
254
  ## Generation Workflow
234
255
 
235
256
  ### ⚠️ Mandatory Pre-checks (do not skip)
@@ -302,6 +323,10 @@ After generation, perform language style checks on each output file:
302
323
  1. Additionally generate `daemon.json` for server-side
303
324
  2. **Must always provide LogBus2 official documentation link**
304
325
 
326
+ #### Step 5: Upload Generated Artifacts
327
+
328
+ Upload all generated `.ae-cli/output/` artifacts to the Agent attachment library using `ae-cli agent +add-attachment --yes --files '<json-array>'`.
329
+
305
330
  ---
306
331
 
307
332
  ## Code Style