@thinkingai/ae-cli 6.1.9 → 6.1.11
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.
- package/README.md +25 -3
- package/README.zh.md +25 -3
- package/dist/{auth-56Z45UVR.js → auth-GDV3H5I4.js} +18 -8
- package/dist/{auth-ENM3FE6L.js → auth-NN55553T.js} +3 -3
- package/dist/{capability-2H6PAOA3.js → capability-TPORIKRQ.js} +19 -15
- package/dist/{capability-YPOQX6PL.js → capability-VQNC5CF7.js} +19 -15
- package/dist/chunk-4NN5IWVN.js +26 -0
- package/dist/{chunk-DB4Q3ANU.js → chunk-6A2FUCIS.js} +3 -3
- package/dist/{chunk-PVBYJWC2.js → chunk-7KQWSBSL.js} +4 -4
- package/dist/{chunk-24BAVOX3.js → chunk-AXDXJTPC.js} +3 -1
- package/dist/{chunk-CPVTECJ3.js → chunk-DT6Y3TD7.js} +5 -5
- package/dist/{chunk-EGEIXA2Z.js → chunk-DWO43OIB.js} +0 -248
- package/dist/{chunk-V6FR6WTW.js → chunk-GJJA4CQZ.js} +34 -2
- package/dist/{chunk-RGXCNC4N.js → chunk-GS2P7LFD.js} +50 -17
- package/dist/{chunk-LYVNONC4.js → chunk-JHENBQ5B.js} +35 -0
- package/dist/{chunk-3P3562ZX.js → chunk-MVDZ7DBQ.js} +5 -5
- package/dist/{chunk-LCXU3AAT.js → chunk-NBPKWKRA.js} +2 -2
- package/dist/{chunk-HQ2A7ITL.js → chunk-RBNKI5ZW.js} +50 -17
- package/dist/{chunk-LHVM35J4.js → chunk-TS6BUGUY.js} +4 -4
- package/dist/chunk-TUKQZTMI.js +250 -0
- package/dist/{chunk-J7MZHDHQ.js → chunk-VKD5WQKN.js} +5 -5
- package/dist/{chunk-3KI3RRXX.js → chunk-VTXHDCBW.js} +3 -3
- package/dist/{chunk-KTYR3U6D.js → chunk-YTG6Q75E.js} +10 -6
- package/dist/{chunk-IR4ZLVPW.js → chunk-YV52FB5G.js} +25 -3
- package/dist/{chunk-E7UXXHO3.js → chunk-Z3OXWCIA.js} +3 -3
- package/dist/{cli-token-4SBMXAUK.js → cli-token-GL5MS5FK.js} +4 -4
- package/dist/{client-PP5FETMW.js → client-DAIPF7XN.js} +4 -4
- package/dist/{community-report-client-KK2QBANO.js → community-report-client-M2RW4MXD.js} +2 -2
- package/dist/config-4VZNLBKF.js +489 -0
- package/dist/index.js +94 -35
- package/dist/memory-RWJW4XFO.js +892 -0
- package/dist/memory-VO2ZJCRT.js +892 -0
- package/dist/{metadata-JIQ77HFY.js → metadata-YGTHR2XJ.js} +8 -8
- package/dist/{metadata-AN3YFZEV.js → metadata-ZRN2GHPN.js} +8 -8
- package/dist/{model-JASQVOFD.js → model-CLUIK3K5.js} +7 -5
- package/dist/{raw-XJCAT3HX.js → raw-52B4UKO4.js} +8 -7
- package/dist/sync-3REDHGY6.js +10259 -0
- package/dist/{te-agent-JHUG6DVV.js → te-agent-XNPELAKX.js} +580 -84
- package/dist/{te-analysis-IWQZO423.js → te-analysis-GJI5FZUL.js} +1611 -25
- package/dist/{te-analysis-X222IRYR.js → te-analysis-N2BRDJZ5.js} +1611 -25
- package/dist/{te-community-QOYIYEJI.js → te-community-SQXKE5OO.js} +7 -7
- package/dist/{te-community-UFKI6ONP.js → te-community-TYSNU3NQ.js} +7 -7
- package/dist/{te-dataops-PZQ5NQLY.js → te-dataops-5TM7WZDI.js} +370 -189
- package/dist/{te-dataops-XTWVTJCA.js → te-dataops-OWIADNSM.js} +370 -189
- package/dist/{te-engage-NLZUPSBK.js → te-engage-F7V55KVW.js} +333 -105
- package/dist/{te-engage-E7F4HTXU.js → te-engage-FMYAYCNV.js} +333 -105
- package/dist/{te-experiment-N63WF7XA.js → te-experiment-JWXOYJ3W.js} +83 -10
- package/dist/{te-experiment-D32TB6ZB.js → te-experiment-UPDMHCAJ.js} +83 -10
- package/dist/{te-kb-E7NSCBRB.js → te-kb-VRMEY3D4.js} +6 -6
- package/dist/{te-meta-GBDTMPEL.js → te-meta-53BVXPFI.js} +7 -7
- package/dist/{te-meta-ZTLTSHXC.js → te-meta-TOCBPBXI.js} +7 -7
- package/dist/{te-system-AH7DMCAQ.js → te-system-XGS5EQIQ.js} +4 -4
- package/dist/{te-team-BQ3SKSZV.js → te-team-BZRDV2CM.js} +7 -7
- package/dist/{update-DKG6UXEM.js → update-HEDXGOJH.js} +8 -6
- package/package.json +5 -2
- package/skills/ae-agent/SKILL.md +178 -16
- package/skills/ae-agent/references/add-skill.md +22 -10
- package/skills/ae-agent/references/edit-skill.md +24 -14
- package/skills/ae-agent/references/find-archived-conversations.md +82 -0
- package/skills/ae-agent/references/restore-conversation.md +54 -0
- package/skills/ae-agent/references/upload-skill.md +24 -14
- package/skills/ae-analysis/SKILL.md +1 -1
- package/skills/ae-analysis/references/command_index.md +109 -42
- package/skills/ae-analysis/references/debug_data_list.md +28 -0
- package/skills/ae-analysis/references/debug_device_add.md +23 -0
- package/skills/ae-analysis/references/debug_device_list.md +19 -0
- package/skills/ae-analysis/references/debug_device_select.md +22 -0
- package/skills/ae-analysis/references/entity_id_import_options.md +1 -1
- package/skills/ae-analysis/references/plan_sync_display_names.md +28 -0
- package/skills/ae-analysis/references/project_access_detail_get.md +3 -3
- package/skills/ae-analysis/references/project_data_power_delete.md +3 -3
- package/skills/ae-analysis/references/project_data_power_get.md +3 -3
- package/skills/ae-analysis/references/project_data_power_list.md +3 -3
- package/skills/ae-analysis/references/project_data_power_upsert.md +3 -3
- package/skills/ae-analysis/references/project_entity_create.md +3 -3
- package/skills/ae-analysis/references/project_entity_delete.md +3 -3
- package/skills/ae-analysis/references/project_entity_event_list.md +3 -3
- package/skills/ae-analysis/references/project_entity_get.md +3 -3
- package/skills/ae-analysis/references/project_entity_list.md +3 -3
- package/skills/ae-analysis/references/project_entity_update.md +3 -3
- package/skills/ae-analysis/references/project_function_list.md +3 -3
- package/skills/ae-analysis/references/project_info_create.md +25 -0
- package/skills/ae-analysis/references/project_info_delete.md +24 -0
- package/skills/ae-analysis/references/project_info_get.md +3 -3
- package/skills/ae-analysis/references/project_info_list.md +3 -3
- package/skills/ae-analysis/references/project_info_update.md +3 -3
- package/skills/ae-analysis/references/project_mark_time_create.md +3 -3
- package/skills/ae-analysis/references/project_mark_time_delete.md +3 -3
- package/skills/ae-analysis/references/project_mark_time_list.md +3 -3
- package/skills/ae-analysis/references/project_mark_time_update.md +3 -3
- package/skills/ae-analysis/references/project_member_add.md +3 -3
- package/skills/ae-analysis/references/project_member_batch_update.md +3 -3
- package/skills/ae-analysis/references/project_member_candidate_list.md +3 -3
- package/skills/ae-analysis/references/project_member_handover_export.md +3 -3
- package/skills/ae-analysis/references/project_member_handover_run.md +3 -3
- package/skills/ae-analysis/references/project_member_import.md +3 -3
- package/skills/ae-analysis/references/project_member_list.md +3 -3
- package/skills/ae-analysis/references/project_member_receiver_list.md +3 -3
- package/skills/ae-analysis/references/project_member_remove.md +3 -3
- package/skills/ae-analysis/references/project_member_update.md +3 -3
- package/skills/ae-analysis/references/project_owner_update.md +3 -3
- package/skills/ae-analysis/references/project_permission_binding_list.md +3 -3
- package/skills/ae-analysis/references/project_receive_status_update.md +3 -3
- package/skills/ae-analysis/references/project_role_delete.md +3 -3
- package/skills/ae-analysis/references/project_role_function_list.md +3 -3
- package/skills/ae-analysis/references/project_role_get.md +3 -3
- package/skills/ae-analysis/references/project_role_list.md +3 -3
- package/skills/ae-analysis/references/project_role_upsert.md +3 -3
- package/skills/ae-analysis/references/project_role_user_list.md +3 -3
- package/skills/ae-analysis/references/project_space_list.md +1 -1
- package/skills/ae-analysis/references/project_timezone_get.md +3 -3
- package/skills/ae-analysis/references/project_timezone_overview.md +3 -3
- package/skills/ae-analysis/references/project_timezone_update.md +3 -3
- package/skills/ae-analysis/references/project_user_id_items_update.md +3 -3
- package/skills/ae-analysis/references/system_admin_function_list.md +22 -0
- package/skills/ae-analysis/references/system_admin_function_update.md +26 -0
- package/skills/ae-analysis/references/system_admin_list.md +21 -0
- package/skills/ae-analysis/references/system_admin_remove.md +25 -0
- package/skills/ae-analysis/references/system_admin_upsert.md +25 -0
- package/skills/ae-analysis/references/system_function_list.md +21 -0
- package/skills/ae-analysis/references/system_member_add.md +25 -0
- package/skills/ae-analysis/references/system_member_candidate_list.md +22 -0
- package/skills/ae-analysis/references/system_member_delete.md +25 -0
- package/skills/ae-analysis/references/system_member_list.md +24 -0
- package/skills/ae-analysis/references/system_member_mfa_unbind.md +25 -0
- package/skills/ae-analysis/references/system_member_password_reset.md +32 -0
- package/skills/ae-analysis/references/system_member_project_batch_update.md +27 -0
- package/skills/ae-analysis/references/system_member_status_update.md +26 -0
- package/skills/ae-analysis/references/system_member_update.md +23 -0
- package/skills/ae-analysis/references/system_mfa_get.md +21 -0
- package/skills/ae-analysis/references/system_mfa_update.md +25 -0
- package/skills/ae-analysis/references/system_node_monitor_list.md +24 -0
- package/skills/ae-analysis/references/system_oauth2_update.md +22 -0
- package/skills/ae-analysis/references/system_ops_alert_contact_delete.md +25 -0
- package/skills/ae-analysis/references/system_ops_alert_contact_list.md +23 -0
- package/skills/ae-analysis/references/system_ops_alert_contact_test.md +29 -0
- package/skills/ae-analysis/references/system_ops_alert_contact_upsert.md +39 -0
- package/skills/ae-analysis/references/system_preference_get.md +21 -0
- package/skills/ae-analysis/references/system_preference_update.md +22 -0
- package/skills/ae-analysis/references/system_project_usage_list.md +28 -0
- package/skills/ae-analysis/references/system_query_alert_rule_list.md +21 -0
- package/skills/ae-analysis/references/system_query_alert_rule_update.md +26 -0
- package/skills/ae-analysis/references/system_query_monitor_overview.md +26 -0
- package/skills/ae-analysis/references/system_query_task_cancel.md +25 -0
- package/skills/ae-analysis/references/system_query_task_export.md +49 -0
- package/skills/ae-analysis/references/system_query_task_get.md +23 -0
- package/skills/ae-analysis/references/system_query_task_list.md +35 -0
- package/skills/ae-analysis/references/system_query_task_options.md +27 -0
- package/skills/ae-analysis/references/system_receiver_address_delete.md +26 -0
- package/skills/ae-analysis/references/system_receiver_address_overview.md +21 -0
- package/skills/ae-analysis/references/system_receiver_address_project_list.md +21 -0
- package/skills/ae-analysis/references/system_receiver_address_promote.md +24 -0
- package/skills/ae-analysis/references/system_receiver_address_upsert.md +27 -0
- package/skills/ae-analysis/references/system_receiver_detection_get.md +22 -0
- package/skills/ae-analysis/references/system_receiver_detection_run.md +22 -0
- package/skills/ae-analysis/references/system_receiver_detection_update.md +25 -0
- package/skills/ae-analysis/references/system_role_delete.md +26 -0
- package/skills/ae-analysis/references/system_role_function_list.md +22 -0
- package/skills/ae-analysis/references/system_role_get.md +22 -0
- package/skills/ae-analysis/references/system_role_list.md +24 -0
- package/skills/ae-analysis/references/system_role_upsert.md +27 -0
- package/skills/ae-analysis/references/system_role_user_list.md +22 -0
- package/skills/ae-analysis/references/system_seat_list.md +25 -0
- package/skills/ae-analysis/references/system_seat_update.md +26 -0
- package/skills/ae-analysis/references/system_smtp_delete.md +24 -0
- package/skills/ae-analysis/references/system_smtp_get.md +21 -0
- package/skills/ae-analysis/references/system_smtp_test.md +22 -0
- package/skills/ae-analysis/references/system_smtp_upsert.md +31 -0
- package/skills/ae-analysis/references/system_third_party_login_disable.md +25 -0
- package/skills/ae-analysis/references/system_third_party_login_list.md +21 -0
- package/skills/ae-analysis/references/system_third_party_login_upsert.md +33 -0
- package/skills/ae-analysis/references/system_usage_overview.md +21 -0
- package/skills/ae-analysis/references/system_usage_trend_export.md +44 -0
- package/skills/ae-analysis/references/system_usage_trend_query.md +28 -0
- package/skills/ae-dataops/SKILL.md +1 -1
- package/skills/ae-dataops/references/dataops-flow-create.md +51 -16
- package/skills/ae-engage/SKILL.md +56 -26
- package/skills/ae-engage/references/activity-activity.md +3 -0
- package/skills/ae-engage/references/activity-approval.md +12 -4
- package/skills/ae-engage/references/activity-task.md +21 -6
- package/skills/ae-engage/references/activity-topic.md +31 -13
- package/skills/ae-engage/references/add-channel.md +170 -41
- package/skills/ae-engage/references/build-task-save-guide.md +40 -27
- package/skills/ae-engage/references/channel-update-config.md +3 -2
- package/skills/ae-engage/references/common-metric.md +48 -120
- package/skills/ae-engage/references/flow-detail.md +13 -0
- package/skills/ae-engage/references/preset-event.md +12 -32
- package/skills/ae-engage/references/save-flow.md +127 -64
- package/skills/ae-engage/references/save-task.md +197 -59
- package/skills/ae-engage/references/scene-config-metric.md +3 -0
- package/skills/ae-engage/references/scene-preset-metric.md +8 -37
- package/skills/ae-engage/references/scene-strategy-audience.md +51 -643
- package/skills/ae-engage/references/scene-strategy.md +6 -6
- package/skills/ae-engage/references/task-detail.md +10 -0
- package/skills/ae-engage/references/task-submit-approval.md +45 -0
- package/skills/ae-engage/references/validate-flow-node-config.md +1 -1
- package/skills/ae-experiment/SKILL.md +21 -1
- package/skills/ae-experiment/references/check_experiment_ready.md +2 -0
- package/skills/ae-experiment/references/query_experiment_detail.md +6 -0
- package/skills/ae-experiment/references/query_experiment_list.md +4 -0
- package/skills/ae-experiment/references/query_experiment_list_archived.md +3 -0
- package/skills/ae-experiment/references/query_metric_detail.md +5 -0
- package/skills/ae-experiment/references/query_metric_list.md +3 -0
- package/skills/ae-experiment/references/save_experiment.md +46 -3
- package/skills/ae-experiment/references/save_metric.md +62 -0
- package/skills/ae-experiment/references/save_submit_experiment.md +3 -0
- package/skills/ae-experiment-design/SKILL.md +149 -0
- package/skills/ae-experiment-design/agents/openai.yaml +4 -0
- package/skills/ae-experiment-design/references/client-experiment-sdk.md +147 -0
- package/skills/ae-experiment-design/references/experiment-creation.md +108 -0
- package/skills/ae-experiment-design/references/experiment-sdk-contract.md +100 -0
- package/skills/ae-experiment-design/references/exposure-contract.md +91 -0
- package/skills/ae-experiment-design/references/hybrid-experiment-sdk.md +74 -0
- package/skills/ae-experiment-design/references/metric-readiness.md +143 -0
- package/skills/ae-experiment-design/references/platform-operations.md +99 -0
- package/skills/ae-experiment-design/references/sdk-index.md +76 -0
- package/skills/ae-experiment-design/references/sdk-integration.md +114 -0
- package/skills/ae-experiment-design/references/sdk-troubleshooting.md +139 -0
- package/skills/ae-experiment-design/references/server-experiment-sdk.md +78 -0
- package/skills/ae-experiment-design/scripts/calculate_experiment_plan.py +450 -0
- package/skills/ae-experiment-insight/SKILL.md +149 -0
- package/skills/ae-experiment-insight/agents/openai.yaml +4 -0
- package/skills/ae-experiment-insight/references/decision-framework.md +69 -0
- package/skills/ae-experiment-insight/references/diagnostic-playbook.md +225 -0
- package/skills/ae-experiment-insight/references/platform-operations.md +76 -0
- package/skills/ae-experiment-insight/scripts/analyze_experiment.py +478 -0
- package/skills/ae-generate-tracking-code/SKILL.md +24 -8
- package/skills/ae-generate-tracking-code/references/debug-script.md +46 -37
- package/skills/ae-generate-tracking-plan/SKILL.md +26 -1
- package/skills/ae-metadata/SKILL.md +1 -1
- package/dist/config-BSSALXEN.js +0 -128
- package/dist/sync-QFP4XFN3.js +0 -485
|
@@ -3,28 +3,33 @@
|
|
|
3
3
|
> **Terminology**: 校验脚本 = validation/debug script | 设备绑定 = device binding | Debug 模式 = debug mode | TDDebugConsumer = debug mode consumer (validates data format, does NOT persist to production) | 实时调试 = real-time debugging | 代表业务事件 = representative business events | SDK 日志打印 = SDK log printing
|
|
4
4
|
|
|
5
5
|
## Deliverable
|
|
6
|
+
|
|
6
7
|
`te-debug.<ext>` single file; used to quickly verify SDK configuration is correct.
|
|
7
8
|
|
|
8
9
|
---
|
|
9
10
|
|
|
10
11
|
## Debug Mode Verification
|
|
11
12
|
|
|
12
|
-
When using debug mode,
|
|
13
|
+
When using debug mode, register and select the debug device with `ae-cli` before sending events. The Agent can then query the received Debug data directly, without asking the user to return to the AE page.
|
|
13
14
|
|
|
14
15
|
### Verification Steps
|
|
15
16
|
|
|
16
|
-
| Step | Action
|
|
17
|
-
|
|
18
|
-
| 1
|
|
19
|
-
| 2
|
|
20
|
-
| 3
|
|
21
|
-
| 4
|
|
17
|
+
| Step | Action |
|
|
18
|
+
| ---- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
19
|
+
| 1 | List devices: `ae-cli tracking debug-device list --project-id <project_id>` |
|
|
20
|
+
| 2 | Add the script's device ID when missing: `ae-cli tracking debug-device add --project-id <project_id> --device-id <device_id> --device-name <name>` |
|
|
21
|
+
| 3 | Select it: `ae-cli tracking debug-device select --project-id <project_id> --device-id <device_id>` |
|
|
22
|
+
| 4 | Run the debug script to send test events |
|
|
23
|
+
| 5 | Query received data: `ae-cli tracking debug-data list --project-id <project_id> --device-id <device_id>` |
|
|
24
|
+
| 6 | If needed, filter one event with `--event-name <event_name>` or inspect it in AE at `https://<host>/#/data/debug` |
|
|
22
25
|
|
|
23
26
|
### Common Notes for Client and Server SDKs
|
|
24
27
|
|
|
25
28
|
- Both use **TDDebugConsumer** (or the platform's equivalent debug mode API)
|
|
26
|
-
- Both require
|
|
29
|
+
- Both require registering the same device ID with `ae-cli tracking debug-device add`
|
|
27
30
|
- On validation failure, the SDK prints error logs or throws exceptions (behavior varies by language)
|
|
31
|
+
- `debug-data list` defaults to the most recent hour and returns `has_data`, `event_count`, `data_count`, and the raw Debug records
|
|
32
|
+
- Treat `has_data: true` as evidence that the receiver got Debug data; also inspect each record's error fields before declaring validation successful
|
|
28
33
|
|
|
29
34
|
---
|
|
30
35
|
|
|
@@ -32,32 +37,32 @@ When using debug mode, you must add the debug device ID in AE Admin before data
|
|
|
32
37
|
|
|
33
38
|
### Client SDK
|
|
34
39
|
|
|
35
|
-
| SDK
|
|
36
|
-
|
|
37
|
-
| Unity SDK
|
|
38
|
-
| Android SDK
|
|
39
|
-
| iOS SDK
|
|
40
|
-
| JavaScript SDK
|
|
41
|
-
| Mini Program SDK | `ta.init({ appId: appId, server_url: serverUrl, debug: true });`
|
|
42
|
-
| CocosCreator
|
|
43
|
-
| Cocos2d-x
|
|
44
|
-
| Unreal SDK
|
|
45
|
-
| Flutter SDK
|
|
46
|
-
| React Native
|
|
40
|
+
| SDK | Debug Mode API | Reference Doc |
|
|
41
|
+
| ---------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------- |
|
|
42
|
+
| Unity SDK | `TDConfig config = new TDConfig(appId, serverUrl); config.mode = TDMode.DEBUG; TDAnalytics.Init(config);` | `data-ingestion-guide/client-sdk/game-engine/unity/unity-advanced/debugging-and-logging.md` |
|
|
43
|
+
| Android SDK | `TDConfig config = new TDConfig(this, serverUrl, appId); config.setMode(TDConfig.Mode.DEBUG); TDAnalytics.init(this, config);` | `data-ingestion-guide/client-sdk/android/android-advanced/debugging-and-logging.md` |
|
|
44
|
+
| iOS SDK | `TDConfig *config = [[TDConfig alloc] initWithAppId:appId serverUrl:serverUrl]; config.mode = TDModeDebug; [TDAnalytics startWithConfig:config];` | `data-ingestion-guide/client-sdk/ios/ios-advanced/debugging-and-logging.md` |
|
|
45
|
+
| JavaScript SDK | `ta.init({ appId: appId, server_url: serverUrl, debug: true });` | `data-ingestion-guide/client-sdk/javascript/javascript-advanced/debugging-and-logging.md` |
|
|
46
|
+
| Mini Program SDK | `ta.init({ appId: appId, server_url: serverUrl, debug: true });` | `客户端-sdk/小程序小游戏/进阶指南/实时调试.md` |
|
|
47
|
+
| CocosCreator | See doc | `data-ingestion-guide/client-sdk/game-engine/cocoscreator/cocoscreator-advance/debugging-and-logging.md` |
|
|
48
|
+
| Cocos2d-x | See doc | `data-ingestion-guide/client-sdk/game-engine/cocos2d-x/cocos2d-x-advanced/debugging-and-logging.md` |
|
|
49
|
+
| Unreal SDK | See doc | `data-ingestion-guide/client-sdk/game-engine/unreal/unreal-advanced/debugging-and-logging.md` |
|
|
50
|
+
| Flutter SDK | See doc | `data-ingestion-guide/client-sdk/cross-platform/flutter/flutter-advanced/debugging-and-logging.md` |
|
|
51
|
+
| React Native | See doc | `data-ingestion-guide/client-sdk/cross-platform/react-native/reactnative-advanced/debugging-and-logging.md` |
|
|
47
52
|
|
|
48
53
|
### Server SDK
|
|
49
54
|
|
|
50
|
-
| Language | DebugConsumer API
|
|
51
|
-
|
|
52
|
-
| Java
|
|
53
|
-
| Python
|
|
54
|
-
| Go
|
|
55
|
-
| Node.js
|
|
56
|
-
| PHP
|
|
57
|
-
| Ruby
|
|
58
|
-
| Erlang
|
|
59
|
-
| Lua
|
|
60
|
-
| C
|
|
55
|
+
| Language | DebugConsumer API | Reference Doc |
|
|
56
|
+
| -------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
57
|
+
| Java | `new TDDebugConsumer(serverUrl, appId, deviceId)` | `data-ingestion-guide/server-sdk/java/java-advanced/debugging-and-logging.md` |
|
|
58
|
+
| Python | `TDDebugConsumer(serverUrl, appId, device_id="...")` | `data-ingestion-guide/server-sdk/python/python-advanced/debugging-and-logging.md` |
|
|
59
|
+
| Go | `NewDebugConsumerWithDeviceId(serverUrl, appId, false, deviceId)` | `data-ingestion-guide/server-sdk/golang/golang-advanced/debugging-and-logging.md` |
|
|
60
|
+
| Node.js | `ThinkingData.initWithDebugMode(appId, serverUrl, { deviceId: "..." })` | `data-ingestion-guide/server-sdk/nodejs/nodejs-advanced/debugging-and-logging.md` |
|
|
61
|
+
| PHP | `new TDDebugConsumer(serverUrl, appId, deviceId)` | `data-ingestion-guide/server-sdk/php/php-advanced/debugging-and-logging.md` |
|
|
62
|
+
| Ruby | `TDDebugConsumer.new(serverUrl, appId, deviceId)` | `data-ingestion-guide/server-sdk/ruby/ruby-advanced/debugging-and-logging.md` |
|
|
63
|
+
| Erlang | `tddebug_consumer:new(ServerUrl, AppId, DeviceId)` | `data-ingestion-guide/server-sdk/erlang/erlang-advanced/debugging-and-logging.md` |
|
|
64
|
+
| Lua | `TDDebugConsumer.new(serverUrl, appId, deviceId)` | `data-ingestion-guide/server-sdk/lua/lua-advanced/debugging-and-logging.md` |
|
|
65
|
+
| C | `td_debug_consumer_new(serverUrl, appId, deviceId)` | `data-ingestion-guide/server-sdk/c/c-advanced/debugging-and-logging.md` |
|
|
61
66
|
|
|
62
67
|
---
|
|
63
68
|
|
|
@@ -67,7 +72,7 @@ When generating a debug script, the skill must:
|
|
|
67
72
|
|
|
68
73
|
1. **First read the corresponding SDK's "Real-time Debug" doc** (see reference doc paths below) to confirm the SDK's debug mode API and usage (the table above is an index reference only; actual usage may differ)
|
|
69
74
|
2. Use the corresponding platform's **TDDebugConsumer** or debug mode API
|
|
70
|
-
3. Set `deviceId` (e.g. `
|
|
75
|
+
3. Set a stable `deviceId` (e.g. `agent-debug-<project_id>`) and register it with `ae-cli tracking debug-device add`
|
|
71
76
|
4. Read `SERVER_URL` and `appId` from plan (NOT web host)
|
|
72
77
|
5. Pick 3 representative business events from plan (if object array properties exist, construct them fully)
|
|
73
78
|
6. Recommend enabling SDK log printing (for easier troubleshooting)
|
|
@@ -76,6 +81,7 @@ When generating a debug script, the skill must:
|
|
|
76
81
|
### Post-delivery Prompt
|
|
77
82
|
|
|
78
83
|
**Platform filtering notes**:
|
|
84
|
+
|
|
79
85
|
- xlsx "Platform" column values map to `platform` field:
|
|
80
86
|
- `客户端` / `client` → `platform: "client"`
|
|
81
87
|
- `服务端` / `server` → `platform: "server"`
|
|
@@ -86,16 +92,19 @@ When generating a debug script, the skill must:
|
|
|
86
92
|
|
|
87
93
|
```
|
|
88
94
|
Verification steps:
|
|
89
|
-
1.
|
|
90
|
-
2.
|
|
91
|
-
3.
|
|
92
|
-
4.
|
|
93
|
-
5.
|
|
95
|
+
1. Run `ae-cli tracking debug-device list --project-id <project_id>`.
|
|
96
|
+
2. If needed, run `ae-cli tracking debug-device add --project-id <project_id> --device-id <device_id> --device-name <name>`.
|
|
97
|
+
3. Run `ae-cli tracking debug-device select --project-id <project_id> --device-id <device_id>`.
|
|
98
|
+
4. Run the debug script.
|
|
99
|
+
5. Run `ae-cli tracking debug-data list --project-id <project_id> --device-id <device_id>`.
|
|
100
|
+
6. Confirm `has_data` is true and inspect error fields and event property structures.
|
|
101
|
+
7. If no data appears, retry with an explicit `--start-time "YYYY-MM-DD HH:mm:ss"` and verify that the script reports the exact same device ID.
|
|
94
102
|
```
|
|
95
103
|
|
|
96
104
|
### Reference Doc Paths
|
|
97
105
|
|
|
98
106
|
All SDK debug/logging docs are located at:
|
|
107
|
+
|
|
99
108
|
- `~/.ae-cli/wiki/raw/data-ingestion-guide/client-sdk/<sdk>/<sdk>-advanced/debugging-and-logging.md`
|
|
100
109
|
- `~/.ae-cli/wiki/raw/data-ingestion-guide/server-sdk/<language>/<language>-advanced/debugging-and-logging.md`
|
|
101
110
|
|
|
@@ -72,6 +72,8 @@ Phase 0 → 1 → 2 → 3 → 4, do not skip steps.
|
|
|
72
72
|
>
|
|
73
73
|
> **Language rules**: For newly generated content, user-facing fields in draft.json (`display_name`, `event_desc`, `event_tag`,
|
|
74
74
|
> property `display_name`, property `desc`, etc.) should be generated in the **user's input language**.
|
|
75
|
+
> Every event, event property, common event property, and user property must have a non-empty `display_name`.
|
|
76
|
+
> A canonical snake_case identifier is not a substitute for a user-facing display name.
|
|
75
77
|
> For imported templates, do NOT translate those fields manually. Template sheet names, headers, property type display values,
|
|
76
78
|
> CLI messages, and auto-track/i18n-owned labels must come from `src/tracking/i18n` via `AE_LANG=<user_lang>` and `draft.meta.lang`.
|
|
77
79
|
> When a localized label is needed, inspect `src/tracking/i18n` and use the existing resource key/value; do not invent translations from the model.
|
|
@@ -969,6 +971,7 @@ User ok → **immediately execute archive command**, then proceed to Phase 3.
|
|
|
969
971
|
- [ ] Do event/property names contain only letters, digits, and underscores (no Chinese, no spaces)?
|
|
970
972
|
- [ ] Are there duplicate event names or synonymous events coexisting (e.g. `order_create` and `create_order`)?
|
|
971
973
|
- [ ] Does the same property name map to multiple display names or types?
|
|
974
|
+
- [ ] Does every event, event property, common event property, and user property have a non-empty `display_name` in the user's language?
|
|
972
975
|
|
|
973
976
|
### Revenue Model Required Events Check
|
|
974
977
|
|
|
@@ -1251,6 +1254,26 @@ AE_LANG=<user_lang> ae-cli tracking plan upload --project <projectId> --xlsx .ae
|
|
|
1251
1254
|
|
|
1252
1255
|
On successful upload, prompt user to verify in AE Admin. **Provide the full URL** (tracking plan page URL format: `https://<host>/#/data/plan`).
|
|
1253
1256
|
|
|
1257
|
+
Then read the uploaded plan back through ae-cli and synchronize its display names to any event/property metadata
|
|
1258
|
+
that already exists in the project:
|
|
1259
|
+
|
|
1260
|
+
```bash
|
|
1261
|
+
AE_LANG=<user_lang> ae-cli tracking plan get --project-id <projectId> --host <host>
|
|
1262
|
+
AE_LANG=<user_lang> ae-cli tracking plan sync-display-names \
|
|
1263
|
+
--project-id <projectId> \
|
|
1264
|
+
--draft .ae-cli/draft.json \
|
|
1265
|
+
--host <host>
|
|
1266
|
+
```
|
|
1267
|
+
|
|
1268
|
+
`sync-display-names` is intentionally safe to rerun:
|
|
1269
|
+
|
|
1270
|
+
- It fills only blank event/property metadata display names.
|
|
1271
|
+
- It never overwrites a non-empty display name already maintained in AE.
|
|
1272
|
+
- `missing_in_metadata` means that the event/property has not appeared in project metadata yet; it is not an upload failure.
|
|
1273
|
+
Report those names and rerun the same command after the first Debug or production data reaches AE.
|
|
1274
|
+
- `missing_display_name_in_draft` means the generated plan is incomplete. Add the missing localized `display_name`,
|
|
1275
|
+
regenerate/validate the xlsx, and rerun the upload/synchronization flow.
|
|
1276
|
+
|
|
1254
1277
|
---
|
|
1255
1278
|
|
|
1256
1279
|
### 4.4 Upload Failure Handling and Auto-fix
|
|
@@ -1289,7 +1312,9 @@ Fixed: Fixed object array sub-property inconsistency, Fixed display name duplica
|
|
|
1289
1312
|
|
|
1290
1313
|
### 4.5 Post-success Actions
|
|
1291
1314
|
|
|
1292
|
-
After successful upload, prompt user to verify in AE Admin. **Provide the full URL**
|
|
1315
|
+
After successful upload and display-name synchronization, prompt user to verify in AE Admin. **Provide the full URL**
|
|
1316
|
+
(tracking plan page URL format: `https://<host>/#/data/plan`). Include a short synchronization summary:
|
|
1317
|
+
updated counts, preserved existing counts, and any names still missing from project metadata.
|
|
1293
1318
|
|
|
1294
1319
|
**Ask about generating tracking code**:
|
|
1295
1320
|
|
|
@@ -53,7 +53,7 @@ ae-cli metadata property <dimension-table-action> [options]
|
|
|
53
53
|
|
|
54
54
|
## PROJECT_ID_GATE
|
|
55
55
|
|
|
56
|
-
Same rules as `ae-analysis`: reuse verified project context in one conversation; otherwise `ae-cli
|
|
56
|
+
Same rules as `ae-analysis`: reuse verified project context in one conversation; otherwise `ae-cli project info list` (or `ae-analysis` skill) to resolve `project_id`.
|
|
57
57
|
|
|
58
58
|
## Commands (10)
|
|
59
59
|
|
package/dist/config-BSSALXEN.js
DELETED
|
@@ -1,128 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
GLOBAL_QUERY_CONFIG_KEY,
|
|
3
|
-
getAnalysisMappingPathForClusterMode,
|
|
4
|
-
getClusterInfoFilePath,
|
|
5
|
-
isGlobalQueryModeEnabled,
|
|
6
|
-
setGlobalQueryModeEnabled
|
|
7
|
-
} from "./chunk-LCXU3AAT.js";
|
|
8
|
-
import {
|
|
9
|
-
printError,
|
|
10
|
-
printOutput
|
|
11
|
-
} from "./chunk-KTYR3U6D.js";
|
|
12
|
-
import "./chunk-E7UXXHO3.js";
|
|
13
|
-
import "./chunk-IR4ZLVPW.js";
|
|
14
|
-
import {
|
|
15
|
-
addHost,
|
|
16
|
-
loadConfig,
|
|
17
|
-
normalizeUrl,
|
|
18
|
-
setActiveHost
|
|
19
|
-
} from "./chunk-V6FR6WTW.js";
|
|
20
|
-
import "./chunk-LYVNONC4.js";
|
|
21
|
-
|
|
22
|
-
// src/commands/config.ts
|
|
23
|
-
function registerConfig(program) {
|
|
24
|
-
const configCmd = program.command("config").description("AE host and environment configuration").action(() => {
|
|
25
|
-
printError("config", "Missing subcommand.", "Run: ae-cli config --help");
|
|
26
|
-
process.exit(1);
|
|
27
|
-
});
|
|
28
|
-
configCmd.command("list").description("List configured AE environments").action(async () => {
|
|
29
|
-
await printConfigList(program);
|
|
30
|
-
});
|
|
31
|
-
configCmd.command("current").description("Show the active AE environment").action(async () => {
|
|
32
|
-
await printCurrentConfig(program);
|
|
33
|
-
});
|
|
34
|
-
configCmd.command("use <env>").description("Switch active AE environment by exact URL or unique label").action(async (env) => {
|
|
35
|
-
await useConfigEnv(program, env);
|
|
36
|
-
});
|
|
37
|
-
configCmd.command("set-host <url>").description("Set the active AE host non-interactively (adds it if not already configured)").option("--label <label>", "Display label for this host (defaults to the host URL)").action(async (url, opts) => {
|
|
38
|
-
const normalized = normalizeUrl(url);
|
|
39
|
-
const label = opts.label || normalized;
|
|
40
|
-
addHost(normalized, label);
|
|
41
|
-
setActiveHost(normalized);
|
|
42
|
-
await printOutput({ activeHost: normalized, label }, program.opts().format || "json");
|
|
43
|
-
});
|
|
44
|
-
const clusterMode = configCmd.command("cluster-mode").description("Manage local multi-cluster analysis MCP mode").action(async () => {
|
|
45
|
-
await printClusterModeStatus(program);
|
|
46
|
-
});
|
|
47
|
-
clusterMode.command("status").description("Show local multi-cluster analysis MCP mode").action(async () => {
|
|
48
|
-
await printClusterModeStatus(program);
|
|
49
|
-
});
|
|
50
|
-
clusterMode.command("enable").description("Enable local multi-cluster analysis MCP mode").action(async () => {
|
|
51
|
-
setGlobalQueryModeEnabled(true);
|
|
52
|
-
await printClusterModeStatus(program);
|
|
53
|
-
});
|
|
54
|
-
clusterMode.command("disable").description("Disable local multi-cluster analysis MCP mode").action(async () => {
|
|
55
|
-
setGlobalQueryModeEnabled(false);
|
|
56
|
-
await printClusterModeStatus(program);
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
async function printClusterModeStatus(program) {
|
|
60
|
-
const enabled = isGlobalQueryModeEnabled();
|
|
61
|
-
await printOutput({
|
|
62
|
-
[GLOBAL_QUERY_CONFIG_KEY]: enabled,
|
|
63
|
-
path: getClusterInfoFilePath(),
|
|
64
|
-
analysisMappingPath: getAnalysisMappingPathForClusterMode(enabled)
|
|
65
|
-
}, program.opts().format || "json", program.opts().jq);
|
|
66
|
-
}
|
|
67
|
-
function readHostViews() {
|
|
68
|
-
const config = loadConfig();
|
|
69
|
-
const hosts = Object.entries(config.hosts).map(([url, entry]) => ({
|
|
70
|
-
url,
|
|
71
|
-
label: entry.label,
|
|
72
|
-
active: url === config.activeHost
|
|
73
|
-
}));
|
|
74
|
-
return { activeHost: config.activeHost, hosts };
|
|
75
|
-
}
|
|
76
|
-
async function printConfigList(program) {
|
|
77
|
-
const { activeHost, hosts } = readHostViews();
|
|
78
|
-
await printOutput({ activeHost, hosts }, program.opts().format || "json", program.opts().jq);
|
|
79
|
-
}
|
|
80
|
-
async function printCurrentConfig(program) {
|
|
81
|
-
const { activeHost, hosts } = readHostViews();
|
|
82
|
-
const current = hosts.find((h) => h.url === activeHost);
|
|
83
|
-
if (!current) {
|
|
84
|
-
failConfig("No active AE environment configured.", "Run: ae-cli config use <env> or ae-cli config list");
|
|
85
|
-
return;
|
|
86
|
-
}
|
|
87
|
-
await printOutput({ activeHost: current.url, label: current.label }, program.opts().format || "json", program.opts().jq);
|
|
88
|
-
}
|
|
89
|
-
async function useConfigEnv(program, env) {
|
|
90
|
-
const target = resolveHost(env);
|
|
91
|
-
if (target.status === "not-found") {
|
|
92
|
-
failConfig(
|
|
93
|
-
`No AE environment matched: ${env}`,
|
|
94
|
-
target.hosts.length > 0 ? `Available environments: ${formatHostOptions(target.hosts)}` : "Run: ae-cli config list"
|
|
95
|
-
);
|
|
96
|
-
return;
|
|
97
|
-
}
|
|
98
|
-
if (target.status === "duplicate-label") {
|
|
99
|
-
failConfig(
|
|
100
|
-
`Duplicate label: ${env}`,
|
|
101
|
-
`Rename duplicate labels first. Run: ae-cli config list \u2014 ${formatHostOptions(target.matches)}`
|
|
102
|
-
);
|
|
103
|
-
return;
|
|
104
|
-
}
|
|
105
|
-
setActiveHost(target.host.url);
|
|
106
|
-
await printOutput({ activeHost: target.host.url, label: target.host.label }, program.opts().format || "json", program.opts().jq);
|
|
107
|
-
}
|
|
108
|
-
function resolveHost(env) {
|
|
109
|
-
const raw = env.trim();
|
|
110
|
-
const selector = raw.startsWith("http://") || raw.startsWith("https://") ? normalizeUrl(raw) : raw;
|
|
111
|
-
const { hosts } = readHostViews();
|
|
112
|
-
const byUrl = hosts.find((h) => h.url === selector);
|
|
113
|
-
if (byUrl) return { status: "found", host: byUrl };
|
|
114
|
-
const byLabel = hosts.filter((h) => h.label === raw);
|
|
115
|
-
if (byLabel.length === 1) return { status: "found", host: byLabel[0] };
|
|
116
|
-
if (byLabel.length > 1) return { status: "duplicate-label", matches: byLabel };
|
|
117
|
-
return { status: "not-found", hosts };
|
|
118
|
-
}
|
|
119
|
-
function formatHostOptions(hosts) {
|
|
120
|
-
return hosts.map((h) => `${h.label} (${h.url})`).join(", ");
|
|
121
|
-
}
|
|
122
|
-
function failConfig(message, hint) {
|
|
123
|
-
printError("config", message, hint);
|
|
124
|
-
process.exitCode = 1;
|
|
125
|
-
}
|
|
126
|
-
export {
|
|
127
|
-
registerConfig
|
|
128
|
-
};
|