@thinkingai/ae-cli 6.0.33 → 6.0.35
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 +3 -2
- package/README.zh.md +3 -2
- package/dist/index.js +24 -16
- package/dist/{metadata-W2MEOI4Z.js → metadata-ELUAR3EJ.js} +0 -53
- package/dist/{metadata-3M5F2AED.js → metadata-P5GIVMZ6.js} +0 -53
- package/dist/{te-agent-K2OWMZXT.js → te-agent-BOQ7ZY56.js} +194 -1
- package/dist/{te-analysis-Q7AZCDU4.js → te-analysis-HZIP6SYW.js} +446 -562
- package/dist/{te-analysis-I73ZS4NK.js → te-analysis-ZT2MYAHL.js} +446 -562
- package/dist/{te-dataops-MJV54MNY.js → te-dataops-VYN3IOKO.js} +6 -6
- package/dist/{te-dataops-OA7I6HBG.js → te-dataops-Y5QAPPPF.js} +6 -6
- package/dist/{te-engage-GJRVQMK3.js → te-engage-2FSDUOIZ.js} +965 -1578
- package/dist/{te-engage-JIXX3WBI.js → te-engage-BMJ6UOUU.js} +965 -1578
- package/dist/{te-kb-CIZXRWMO.js → te-kb-E7NSCBRB.js} +25 -6
- package/dist/te-meta-GBDTMPEL.js +95 -0
- package/dist/te-meta-ZTLTSHXC.js +95 -0
- package/package.json +5 -4
- package/skills/ae-agent/SKILL.md +5 -1
- package/skills/ae-agent/references/list-sandbox-tools.md +79 -0
- package/skills/ae-analysis/SKILL.md +8 -9
- package/skills/ae-analysis/references/adhoc_export.md +8 -0
- package/skills/ae-analysis/references/adhoc_run.md +9 -0
- package/skills/ae-analysis/references/ai_models.md +3 -1
- package/skills/ae-analysis/references/analysis_data_retrieval.md +2 -0
- package/skills/ae-analysis/references/analysis_drilldown_contract.md +2 -0
- package/skills/ae-analysis/references/analysis_gateway_assets.md +9 -7
- package/skills/ae-analysis/references/command_index.md +18 -40
- package/skills/ae-analysis/references/dashboard_report_data_export.md +4 -2
- package/skills/ae-analysis/references/dashboard_report_data_run.md +5 -3
- package/skills/ae-analysis/references/drilldown_entities_export.md +3 -0
- package/skills/ae-analysis/references/drilldown_entities_run.md +2 -1
- package/skills/ae-analysis/references/drilldown_events_export.md +3 -0
- package/skills/ae-analysis/references/drilldown_events_run.md +2 -1
- package/skills/ae-analysis/references/drilldown_user_events_export.md +3 -0
- package/skills/ae-analysis/references/drilldown_user_events_run.md +2 -0
- package/skills/ae-analysis/references/entity_id_import_options.md +1 -1
- package/skills/ae-analysis/references/filter_value_list.md +47 -0
- package/skills/ae-analysis/references/project_space_get.md +3 -3
- package/skills/ae-analysis/references/project_space_list.md +6 -2
- package/skills/ae-analysis/references/query_cancel.md +3 -1
- package/skills/ae-analysis/references/query_cluster_list.md +34 -0
- package/skills/ae-analysis/references/query_create_result_cluster.md +2 -0
- package/skills/ae-analysis/references/report_create.md +5 -1
- package/skills/ae-analysis/references/report_data_export.md +9 -2
- package/skills/ae-analysis/references/report_data_run.md +8 -3
- package/skills/ae-analysis/references/report_get.md +3 -1
- package/skills/ae-analysis/references/report_update.md +4 -0
- package/skills/ae-analysis/references/virtual_event_create.md +7 -6
- package/skills/ae-analysis-global/SKILL.md +15 -32
- package/skills/ae-community/SKILL.md +1 -1
- package/skills/ae-data-integration-helper/SKILL.md +3 -2
- package/skills/ae-data-integration-helper/references/sdk_usage_notes.md +1 -1
- package/skills/ae-dataops/SKILL.md +2 -1
- package/skills/ae-dataops/references/dataops-integration.md +75 -6
- package/skills/ae-engage/SKILL.md +127 -104
- package/skills/ae-engage/references/activity-activity-type.md +1 -1
- package/skills/ae-engage/references/activity-activity.md +1 -1
- package/skills/ae-engage/references/activity-approval.md +5 -7
- package/skills/ae-engage/references/activity-task.md +12 -18
- package/skills/ae-engage/references/activity-topic.md +39 -22
- package/skills/ae-engage/references/add-approver.md +4 -4
- package/skills/ae-engage/references/add-channel.md +10 -5
- package/skills/ae-engage/references/approval-approver-delete.md +1 -1
- package/skills/ae-engage/references/approver-list.md +4 -4
- package/skills/ae-engage/references/build-task-save-guide.md +13 -13
- package/skills/ae-engage/references/cancel-query-by-request-id.md +7 -6
- package/skills/ae-engage/references/channel-detail.md +14 -9
- package/skills/ae-engage/references/channel-list.md +15 -10
- package/skills/ae-engage/references/channel-mgmt.md +109 -0
- package/skills/ae-engage/references/channel-test-send.md +1 -1
- package/skills/ae-engage/references/channel-update-config.md +1 -1
- package/skills/ae-engage/references/channel_touch_limits_list.md +1 -1
- package/skills/ae-engage/references/client-param.md +34 -16
- package/skills/ae-engage/references/common-metric.md +85 -18
- package/skills/ae-engage/references/config-item-analysis-report.md +8 -27
- package/skills/ae-engage/references/config-item-strategy-comparison.md +7 -18
- package/skills/ae-engage/references/config-item-trigger-report.md +8 -35
- package/skills/ae-engage/references/delete-channel.md +5 -5
- package/skills/ae-engage/references/delete-flow.md +5 -5
- package/skills/ae-engage/references/flow-ab-split-node-report.md +11 -45
- package/skills/ae-engage/references/flow-detail.md +15 -10
- package/skills/ae-engage/references/flow-list.md +9 -4
- package/skills/ae-engage/references/flow-node-config-schema.md +9 -8
- package/skills/ae-engage/references/flow-node-detail-report.md +11 -46
- package/skills/ae-engage/references/flow-node-overview-report.md +11 -43
- package/skills/ae-engage/references/flow-process-report.md +12 -50
- package/skills/ae-engage/references/flow-update-remark.md +19 -0
- package/skills/ae-engage/references/manage-flow.md +19 -19
- package/skills/ae-engage/references/manage-task.md +5 -5
- package/skills/ae-engage/references/modify-flow-base-info.md +8 -8
- package/skills/ae-engage/references/preset-event.md +1 -1
- package/skills/ae-engage/references/push-language.md +1 -1
- package/skills/ae-engage/references/save-flow.md +54 -52
- package/skills/ae-engage/references/save-task.md +23 -17
- package/skills/ae-engage/references/scene-config-channel.md +90 -10
- package/skills/ae-engage/references/scene-config-group.md +1 -1
- package/skills/ae-engage/references/scene-config-item.md +27 -4
- package/skills/ae-engage/references/scene-config-metric.md +1 -1
- package/skills/ae-engage/references/scene-config-param.md +2 -2
- package/skills/ae-engage/references/scene-preset-metric.md +1 -1
- package/skills/ae-engage/references/scene-strategy.md +19 -3
- package/skills/ae-engage/references/scene-template.md +10 -4
- package/skills/ae-engage/references/task-data-detail.md +5 -67
- package/skills/ae-engage/references/task-data-overview.md +5 -35
- package/skills/ae-engage/references/task-detail.md +5 -5
- package/skills/ae-engage/references/task-experiment-report.md +5 -38
- package/skills/ae-engage/references/task-list.md +4 -4
- package/skills/ae-engage/references/task-metric-detail.md +5 -43
- package/skills/ae-engage/references/task-stats.md +5 -5
- package/skills/ae-engage/references/update-channel-status.md +6 -6
- package/skills/ae-engage/references/validate-flow-node-config.md +12 -11
- package/skills/ae-engage/references/whitelist-list.md +4 -4
- package/skills/ae-engage/references/whitelist.md +1 -1
- package/skills/ae-engage/references/workbench-workbench.md +1 -1
- package/skills/ae-generate-tracking-code/SKILL.md +4 -3
- package/skills/ae-generate-tracking-code/references/client-sdk-insert.md +1 -1
- package/skills/ae-generate-tracking-code/references/server-sdk-insert.md +1 -1
- package/skills/ae-generate-tracking-code/references/snippet-delivery.md +1 -1
- package/skills/ae-generate-tracking-plan/SKILL.md +6 -2
- package/skills/ae-kb/SKILL.md +9 -5
- package/skills/ae-metadata/SKILL.md +8 -15
- package/skills/ae-metadata/references/metadata_property_dimension_table_bind_existing.md +1 -1
- package/dist/te-common-ST3QPSXJ.js +0 -61
- package/dist/te-common-WSLIKKPC.js +0 -61
- package/dist/te-meta-Q4L6EE3Q.js +0 -363
- package/dist/te-meta-VHCN4Q62.js +0 -363
- package/skills/ae-analysis/references/batch_create_metadata.md +0 -41
- package/skills/ae-analysis/references/batch_edit_metadata.md +0 -39
- package/skills/ae-analysis/references/cancel_query.md +0 -38
- package/skills/ae-analysis/references/create_alert.md +0 -47
- package/skills/ae-analysis/references/create_entity.md +0 -39
- package/skills/ae-analysis/references/create_project_mark_time.md +0 -39
- package/skills/ae-analysis/references/delete_alert.md +0 -32
- package/skills/ae-analysis/references/delete_project_mark_times.md +0 -36
- package/skills/ae-analysis/references/delete_track_items.md +0 -36
- package/skills/ae-analysis/references/generate_track_program.md +0 -52
- package/skills/ae-analysis/references/generate_track_sdk_sample.md +0 -44
- package/skills/ae-analysis/references/get_alert.md +0 -35
- package/skills/ae-analysis/references/get_alert_definition_schema.md +0 -33
- package/skills/ae-analysis/references/get_project_config.md +0 -33
- package/skills/ae-analysis/references/get_track_program.md +0 -34
- package/skills/ae-analysis/references/list_alerts.md +0 -41
- package/skills/ae-analysis/references/list_entities.md +0 -42
- package/skills/ae-analysis/references/list_project_mark_times.md +0 -43
- package/skills/ae-analysis/references/list_project_users.md +0 -33
- package/skills/ae-analysis/references/list_projects.md +0 -39
- package/skills/ae-analysis/references/load_filters.md +0 -47
- package/skills/ae-analysis/references/save_track_items.md +0 -37
- package/skills/ae-analysis/references/update_alert.md +0 -49
- package/skills/ae-analysis/references/update_project_mark_time.md +0 -40
- package/skills/ae-analysis-global/references/list_query_clusters.md +0 -68
- package/skills/ae-engage/references/config-channel-detail.md +0 -31
- package/skills/ae-engage/references/config-channel-list.md +0 -26
- package/skills/ae-engage/references/config-item-detail.md +0 -29
- package/skills/ae-engage/references/config-item-list.md +0 -18
- package/skills/ae-engage/references/copy-config-template.md +0 -28
- package/skills/ae-engage/references/delete-config-channel.md +0 -23
- package/skills/ae-engage/references/delete-config-item.md +0 -24
- package/skills/ae-engage/references/engage-scene-config-item.md +0 -69
- package/skills/ae-engage/references/manage-strategy.md +0 -73
- package/skills/ae-engage/references/strategy-detail.md +0 -72
- package/skills/ae-engage/references/strategy-list.md +0 -20
- package/skills/ae-engage/references/update-config-channel-status.md +0 -31
- package/skills/ae-metadata/references/metadata_event_get.md +0 -52
- package/skills/ae-metadata/references/metadata_property_get.md +0 -54
- package/dist/{config-RCCGHHYA.js → config-PMPISN5Y.js} +4 -4
- package/dist/{te-community-WXGB6IOX.js → te-community-QOYIYEJI.js} +3 -3
- package/dist/{te-community-X2AHXGCA.js → te-community-UFKI6ONP.js} +3 -3
package/README.md
CHANGED
|
@@ -52,7 +52,8 @@ ae-cli kb +add --name engineering-handbook --files '["./docs/guide.md","https://
|
|
|
52
52
|
ae-cli kb +schema --name engineering-handbook
|
|
53
53
|
ae-cli kb +compile --name engineering-handbook
|
|
54
54
|
ae-cli kb +query -q "How to configure sandbox?" \
|
|
55
|
-
--sources '[{"scope":"company","name":"engineering-handbook"}]'
|
|
55
|
+
--sources '[{"scope":"company","name":"engineering-handbook"}]' \
|
|
56
|
+
--top-k 10
|
|
56
57
|
|
|
57
58
|
# Retrieval primitives for external agents (read index → grep → read page)
|
|
58
59
|
ae-cli kb +index --sources '[{"scope":"company","name":"engineering-handbook"}]'
|
|
@@ -107,7 +108,7 @@ Knowledge base lifecycle (`+new` → `+add` → `+schema` → `+compile` → `+s
|
|
|
107
108
|
- **Schema** (`+schema`): `--name`, optional `--force`, `--model`
|
|
108
109
|
- **Compile** (`+compile`): `--name`, `--mode incremental|full` (default: incremental)
|
|
109
110
|
- **Status** (`+status`): `--name`
|
|
110
|
-
- **Query** (`+query`): `--query` / `-q`, `--sources` JSON refs
|
|
111
|
+
- **Query** (`+query`): `--query` / `-q`, optional `--sources` JSON refs (omit to search all accessible KBs), `--top-k` (1-50, default 10), `--locale`
|
|
111
112
|
- **Remove source** (`+rm-source`): `--name`, `--display-name`
|
|
112
113
|
- **Remove KB** (`+remove`): `--name`
|
|
113
114
|
|
package/README.zh.md
CHANGED
|
@@ -52,7 +52,8 @@ ae-cli kb +add --name engineering-handbook --files '["./docs/guide.md","https://
|
|
|
52
52
|
ae-cli kb +schema --name engineering-handbook
|
|
53
53
|
ae-cli kb +compile --name engineering-handbook
|
|
54
54
|
ae-cli kb +query -q "如何配置 sandbox 容器?" \
|
|
55
|
-
--sources '[{"scope":"company","name":"engineering-handbook"}]'
|
|
55
|
+
--sources '[{"scope":"company","name":"engineering-handbook"}]' \
|
|
56
|
+
--top-k 10
|
|
56
57
|
|
|
57
58
|
# 面向外部 agent 的检索原语(读 index → grep 定位 → read 翻页)
|
|
58
59
|
ae-cli kb +index --sources '[{"scope":"company","name":"engineering-handbook"}]'
|
|
@@ -108,7 +109,7 @@ ae-cli auth logout
|
|
|
108
109
|
- **生成 schema** (`+schema`):`--name`,可选 `--force`、`--model`
|
|
109
110
|
- **编译** (`+compile`):`--name`,`--mode incremental|full`(默认 incremental)
|
|
110
111
|
- **查询状态** (`+status`):`--name`
|
|
111
|
-
- **查询** (`+query`):`--query` / `-q
|
|
112
|
+
- **查询** (`+query`):`--query` / `-q`,可选 `--sources` JSON 引用(省略则搜索全部可访问知识库)、`--top-k`(1-50,默认 10)、`--locale`
|
|
112
113
|
- **删除源** (`+rm-source`):`--name`,`--display-name`
|
|
113
114
|
- **删除知识库** (`+remove`):`--name`
|
|
114
115
|
|
package/dist/index.js
CHANGED
|
@@ -1689,6 +1689,7 @@ var AUTOTRACK_I18N = {
|
|
|
1689
1689
|
desc: { zh: "\u6E38\u620F\u573A\u666F\uFF08Scene\uFF09\u5378\u8F7D\u65F6\u89E6\u53D1", en: "Triggered when a game scene is unloaded", ja: "\u30B2\u30FC\u30E0\u30B7\u30FC\u30F3\uFF08Scene\uFF09\u306E\u30A2\u30F3\u30ED\u30FC\u30C9\u6642\u306B\u767A\u751F", ko: "\uAC8C\uC784 \uC52C(Scene)\uC774 \uC5B8\uB85C\uB4DC\uB420 \uB54C \uBC1C\uC0DD\uD569\uB2C8\uB2E4" }
|
|
1690
1690
|
}
|
|
1691
1691
|
};
|
|
1692
|
+
var ALL_AUTOTRACK_EVENT_NAMES = new Set(Object.keys(AUTOTRACK_I18N));
|
|
1692
1693
|
function makeAutotrackEvent(eventName, locale) {
|
|
1693
1694
|
const i18n = AUTOTRACK_I18N[eventName];
|
|
1694
1695
|
return {
|
|
@@ -1775,6 +1776,13 @@ function injectAutotrackEvents(draft, locale = "zh") {
|
|
|
1775
1776
|
} else {
|
|
1776
1777
|
autotrackEvents = getAutotrackEvents(sdkTypeOrPlatforms, locale);
|
|
1777
1778
|
}
|
|
1779
|
+
const validNames = new Set(autotrackEvents.map((e) => e.event_name));
|
|
1780
|
+
draft.events = draft.events.filter((e) => {
|
|
1781
|
+
if (ALL_AUTOTRACK_EVENT_NAMES.has(e.event_name)) {
|
|
1782
|
+
return validNames.has(e.event_name);
|
|
1783
|
+
}
|
|
1784
|
+
return true;
|
|
1785
|
+
});
|
|
1778
1786
|
const existingNames = new Set(draft.events.map((e) => e.event_name));
|
|
1779
1787
|
const newEvents = autotrackEvents.filter((e) => !existingNames.has(e.event_name));
|
|
1780
1788
|
const eventsWithPlatform = newEvents.map((e) => ({
|
|
@@ -3359,6 +3367,11 @@ function getOrCreateCommand(parent, name, description) {
|
|
|
3359
3367
|
return parent.command(name).description(description);
|
|
3360
3368
|
}
|
|
3361
3369
|
|
|
3370
|
+
// src/framework/program-lifecycle.ts
|
|
3371
|
+
async function parseProgram(program2, argv = process.argv) {
|
|
3372
|
+
await program2.parseAsync(argv);
|
|
3373
|
+
}
|
|
3374
|
+
|
|
3362
3375
|
// src/index.ts
|
|
3363
3376
|
var require2 = createRequire(import.meta.url);
|
|
3364
3377
|
var pkg = require2("../package.json");
|
|
@@ -3376,37 +3389,32 @@ program.name("ae-cli").version(version).description("CLI tool for ThinkingAI (AE
|
|
|
3376
3389
|
async function loadCommands() {
|
|
3377
3390
|
const commands = [];
|
|
3378
3391
|
try {
|
|
3379
|
-
const teAnalysis = await import("./te-analysis-
|
|
3392
|
+
const teAnalysis = await import("./te-analysis-HZIP6SYW.js");
|
|
3380
3393
|
commands.push(...teAnalysis.default);
|
|
3381
3394
|
} catch {
|
|
3382
3395
|
}
|
|
3383
3396
|
try {
|
|
3384
|
-
const teMeta = await import("./te-meta-
|
|
3397
|
+
const teMeta = await import("./te-meta-ZTLTSHXC.js");
|
|
3385
3398
|
commands.push(...teMeta.default);
|
|
3386
3399
|
} catch {
|
|
3387
3400
|
}
|
|
3388
3401
|
try {
|
|
3389
|
-
const
|
|
3390
|
-
commands.push(...teCommon.default);
|
|
3391
|
-
} catch {
|
|
3392
|
-
}
|
|
3393
|
-
try {
|
|
3394
|
-
const engage = await import("./te-engage-JIXX3WBI.js");
|
|
3402
|
+
const engage = await import("./te-engage-BMJ6UOUU.js");
|
|
3395
3403
|
commands.push(...engage.default);
|
|
3396
3404
|
} catch {
|
|
3397
3405
|
}
|
|
3398
3406
|
try {
|
|
3399
|
-
const community = await import("./te-community-
|
|
3407
|
+
const community = await import("./te-community-UFKI6ONP.js");
|
|
3400
3408
|
commands.push(...community.default);
|
|
3401
3409
|
} catch {
|
|
3402
3410
|
}
|
|
3403
3411
|
try {
|
|
3404
|
-
const dataops = await import("./te-dataops-
|
|
3412
|
+
const dataops = await import("./te-dataops-Y5QAPPPF.js");
|
|
3405
3413
|
commands.push(...dataops.default);
|
|
3406
3414
|
} catch {
|
|
3407
3415
|
}
|
|
3408
3416
|
try {
|
|
3409
|
-
const teKb = await import("./te-kb-
|
|
3417
|
+
const teKb = await import("./te-kb-E7NSCBRB.js");
|
|
3410
3418
|
commands.push(...teKb.default);
|
|
3411
3419
|
} catch {
|
|
3412
3420
|
}
|
|
@@ -3416,12 +3424,12 @@ async function loadCommands() {
|
|
|
3416
3424
|
} catch {
|
|
3417
3425
|
}
|
|
3418
3426
|
try {
|
|
3419
|
-
const teAgent = await import("./te-agent-
|
|
3427
|
+
const teAgent = await import("./te-agent-BOQ7ZY56.js");
|
|
3420
3428
|
commands.push(...teAgent.default);
|
|
3421
3429
|
} catch {
|
|
3422
3430
|
}
|
|
3423
3431
|
try {
|
|
3424
|
-
const metadata = await import("./metadata-
|
|
3432
|
+
const metadata = await import("./metadata-P5GIVMZ6.js");
|
|
3425
3433
|
commands.push(...metadata.default);
|
|
3426
3434
|
} catch {
|
|
3427
3435
|
}
|
|
@@ -3436,7 +3444,7 @@ async function registerAuthCommands() {
|
|
|
3436
3444
|
}
|
|
3437
3445
|
async function registerConfigCommands() {
|
|
3438
3446
|
try {
|
|
3439
|
-
const { registerConfig } = await import("./config-
|
|
3447
|
+
const { registerConfig } = await import("./config-PMPISN5Y.js");
|
|
3440
3448
|
registerConfig(program);
|
|
3441
3449
|
} catch {
|
|
3442
3450
|
}
|
|
@@ -3483,9 +3491,9 @@ async function main() {
|
|
|
3483
3491
|
await registerModelCommand();
|
|
3484
3492
|
registerTracking(program);
|
|
3485
3493
|
rejectUnknownHelpCommandPath(program, process.argv.slice(2));
|
|
3486
|
-
program
|
|
3494
|
+
await parseProgram(program);
|
|
3487
3495
|
}
|
|
3488
|
-
main();
|
|
3496
|
+
await main();
|
|
3489
3497
|
function rejectUnknownHelpCommandPath(root, args) {
|
|
3490
3498
|
if (!args.includes("--help") && !args.includes("-h")) {
|
|
3491
3499
|
return;
|
|
@@ -72,57 +72,6 @@ function normalizeDataTableColumns(value, kind) {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
// src/commands/metadata/event/get.ts
|
|
76
|
-
var eventGet = createCapabilityCommand2({
|
|
77
|
-
resource: "event",
|
|
78
|
-
command: "get",
|
|
79
|
-
capabilityId: "metadata.event.get",
|
|
80
|
-
description: "Get one super-event metadata detail, including virtual event definitions. Requires metadata view permission in the target project.",
|
|
81
|
-
flags: [
|
|
82
|
-
{ name: "project-id", type: "number", required: true, desc: "Numeric project ID.", alias: "p" },
|
|
83
|
-
{
|
|
84
|
-
name: "event-name",
|
|
85
|
-
type: "string",
|
|
86
|
-
required: true,
|
|
87
|
-
desc: "Super-event technical name. Virtual events use the same field."
|
|
88
|
-
}
|
|
89
|
-
],
|
|
90
|
-
risk: "read",
|
|
91
|
-
buildInput: (ctx) => ({
|
|
92
|
-
project_id: ctx.num("project-id"),
|
|
93
|
-
event_name: ctx.str("event-name")
|
|
94
|
-
})
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
// src/commands/metadata/property/get.ts
|
|
98
|
-
var propertyGet = createCapabilityCommand2({
|
|
99
|
-
resource: "property",
|
|
100
|
-
command: "get",
|
|
101
|
-
capabilityId: "metadata.property.get",
|
|
102
|
-
description: "Get one super-property metadata detail, including virtual property definitions. Requires metadata view permission in the target project.",
|
|
103
|
-
flags: [
|
|
104
|
-
{ name: "project-id", type: "number", required: true, desc: "Numeric project ID.", alias: "p" },
|
|
105
|
-
{
|
|
106
|
-
name: "prop-name",
|
|
107
|
-
type: "string",
|
|
108
|
-
required: true,
|
|
109
|
-
desc: "Property column name."
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
name: "table-type",
|
|
113
|
-
type: "string",
|
|
114
|
-
required: true,
|
|
115
|
-
desc: "Property table type: event or user."
|
|
116
|
-
}
|
|
117
|
-
],
|
|
118
|
-
risk: "read",
|
|
119
|
-
buildInput: (ctx) => ({
|
|
120
|
-
project_id: ctx.num("project-id"),
|
|
121
|
-
table_type: ctx.str("table-type"),
|
|
122
|
-
prop_name: ctx.str("prop-name")
|
|
123
|
-
})
|
|
124
|
-
});
|
|
125
|
-
|
|
126
75
|
// src/commands/metadata/data-table/csv-delete.ts
|
|
127
76
|
var dataTableCsvDelete = createCapabilityCommand2({
|
|
128
77
|
resource: "data-table",
|
|
@@ -359,8 +308,6 @@ var propertyDimensionTableCreateAndBindCsv = createCapabilityCommand2({
|
|
|
359
308
|
// src/commands/metadata/index.ts
|
|
360
309
|
registerCapabilityGatewayRoute("metadata", { gatewayDomain: "analysis" });
|
|
361
310
|
var commands = [
|
|
362
|
-
eventGet,
|
|
363
|
-
propertyGet,
|
|
364
311
|
dataTableList,
|
|
365
312
|
dataTableGet,
|
|
366
313
|
dataTableCsvWrite,
|
|
@@ -72,57 +72,6 @@ function normalizeDataTableColumns(value, kind) {
|
|
|
72
72
|
});
|
|
73
73
|
}
|
|
74
74
|
|
|
75
|
-
// src/commands/metadata/event/get.ts
|
|
76
|
-
var eventGet = createCapabilityCommand2({
|
|
77
|
-
resource: "event",
|
|
78
|
-
command: "get",
|
|
79
|
-
capabilityId: "metadata.event.get",
|
|
80
|
-
description: "Get one super-event metadata detail, including virtual event definitions. Requires metadata view permission in the target project.",
|
|
81
|
-
flags: [
|
|
82
|
-
{ name: "project-id", type: "number", required: true, desc: "Numeric project ID.", alias: "p" },
|
|
83
|
-
{
|
|
84
|
-
name: "event-name",
|
|
85
|
-
type: "string",
|
|
86
|
-
required: true,
|
|
87
|
-
desc: "Super-event technical name. Virtual events use the same field."
|
|
88
|
-
}
|
|
89
|
-
],
|
|
90
|
-
risk: "read",
|
|
91
|
-
buildInput: (ctx) => ({
|
|
92
|
-
project_id: ctx.num("project-id"),
|
|
93
|
-
event_name: ctx.str("event-name")
|
|
94
|
-
})
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
// src/commands/metadata/property/get.ts
|
|
98
|
-
var propertyGet = createCapabilityCommand2({
|
|
99
|
-
resource: "property",
|
|
100
|
-
command: "get",
|
|
101
|
-
capabilityId: "metadata.property.get",
|
|
102
|
-
description: "Get one super-property metadata detail, including virtual property definitions. Requires metadata view permission in the target project.",
|
|
103
|
-
flags: [
|
|
104
|
-
{ name: "project-id", type: "number", required: true, desc: "Numeric project ID.", alias: "p" },
|
|
105
|
-
{
|
|
106
|
-
name: "prop-name",
|
|
107
|
-
type: "string",
|
|
108
|
-
required: true,
|
|
109
|
-
desc: "Property column name."
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
name: "table-type",
|
|
113
|
-
type: "string",
|
|
114
|
-
required: true,
|
|
115
|
-
desc: "Property table type: event or user."
|
|
116
|
-
}
|
|
117
|
-
],
|
|
118
|
-
risk: "read",
|
|
119
|
-
buildInput: (ctx) => ({
|
|
120
|
-
project_id: ctx.num("project-id"),
|
|
121
|
-
table_type: ctx.str("table-type"),
|
|
122
|
-
prop_name: ctx.str("prop-name")
|
|
123
|
-
})
|
|
124
|
-
});
|
|
125
|
-
|
|
126
75
|
// src/commands/metadata/data-table/csv-delete.ts
|
|
127
76
|
var dataTableCsvDelete = createCapabilityCommand2({
|
|
128
77
|
resource: "data-table",
|
|
@@ -359,8 +308,6 @@ var propertyDimensionTableCreateAndBindCsv = createCapabilityCommand2({
|
|
|
359
308
|
// src/commands/metadata/index.ts
|
|
360
309
|
registerCapabilityGatewayRoute("metadata", { gatewayDomain: "analysis" });
|
|
361
310
|
var commands = [
|
|
362
|
-
eventGet,
|
|
363
|
-
propertyGet,
|
|
364
311
|
dataTableList,
|
|
365
312
|
dataTableGet,
|
|
366
313
|
dataTableCsvWrite,
|
|
@@ -2471,6 +2471,197 @@ var updateAutomation = {
|
|
|
2471
2471
|
)
|
|
2472
2472
|
};
|
|
2473
2473
|
|
|
2474
|
+
// src/commands/te-agent/sandbox-tools.ts
|
|
2475
|
+
import {
|
|
2476
|
+
accessSync,
|
|
2477
|
+
closeSync,
|
|
2478
|
+
constants,
|
|
2479
|
+
existsSync as existsSync3,
|
|
2480
|
+
lstatSync,
|
|
2481
|
+
openSync,
|
|
2482
|
+
readSync,
|
|
2483
|
+
readdirSync,
|
|
2484
|
+
realpathSync
|
|
2485
|
+
} from "fs";
|
|
2486
|
+
import { isAbsolute, join, relative, resolve as resolve3 } from "path";
|
|
2487
|
+
var SANDBOX_BIN_DIR = "/home/ta/.local/bin";
|
|
2488
|
+
var SANDBOX_SHARE_ROOT = process.env.SANDBOX_SYSTEM_SHARE_ROOT ?? "/data/app/te_agent_ta/share";
|
|
2489
|
+
var SHIM_MARKER = "managed-by: te-agent-sandbox-tools";
|
|
2490
|
+
var MAX_SHIM_BYTES = 16 * 1024;
|
|
2491
|
+
var NAME_RE = /^[a-z][a-z0-9._-]{0,63}$/;
|
|
2492
|
+
function hasControlCharacters(value) {
|
|
2493
|
+
return /[\x00-\x1f\x7f]/.test(value);
|
|
2494
|
+
}
|
|
2495
|
+
function readShimHeader(filePath, size) {
|
|
2496
|
+
const buffer = Buffer.alloc(Math.min(size, MAX_SHIM_BYTES));
|
|
2497
|
+
const fd = openSync(filePath, "r");
|
|
2498
|
+
try {
|
|
2499
|
+
const bytesRead = readSync(fd, buffer, 0, buffer.length, 0);
|
|
2500
|
+
return buffer.toString("utf8", 0, bytesRead);
|
|
2501
|
+
} finally {
|
|
2502
|
+
closeSync(fd);
|
|
2503
|
+
}
|
|
2504
|
+
}
|
|
2505
|
+
function parseShim(filePath) {
|
|
2506
|
+
const fallback = {
|
|
2507
|
+
managed: false,
|
|
2508
|
+
tool: "",
|
|
2509
|
+
version: "unknown",
|
|
2510
|
+
command: "",
|
|
2511
|
+
target: ""
|
|
2512
|
+
};
|
|
2513
|
+
try {
|
|
2514
|
+
const stat = lstatSync(filePath);
|
|
2515
|
+
if (!stat.isFile() || stat.isSymbolicLink()) return fallback;
|
|
2516
|
+
const lines = readShimHeader(filePath, stat.size).split("\n").slice(0, 10);
|
|
2517
|
+
const managed = lines.includes(`# ${SHIM_MARKER}`);
|
|
2518
|
+
if (!managed) return fallback;
|
|
2519
|
+
if (stat.size > MAX_SHIM_BYTES) {
|
|
2520
|
+
return { ...fallback, managed: true, reason: "shim exceeds size limit" };
|
|
2521
|
+
}
|
|
2522
|
+
const values = /* @__PURE__ */ new Map();
|
|
2523
|
+
for (const line of lines) {
|
|
2524
|
+
if (line === `# ${SHIM_MARKER}`) continue;
|
|
2525
|
+
const match = /^# (tool|version|command|target|runtime): (.*)$/.exec(
|
|
2526
|
+
line
|
|
2527
|
+
);
|
|
2528
|
+
if (!match) continue;
|
|
2529
|
+
if (values.has(match[1])) {
|
|
2530
|
+
return { ...fallback, managed, reason: `duplicate ${match[1]} marker` };
|
|
2531
|
+
}
|
|
2532
|
+
values.set(match[1], match[2].trim());
|
|
2533
|
+
}
|
|
2534
|
+
const tool = values.get("tool") ?? "";
|
|
2535
|
+
const version = values.get("version") || "unknown";
|
|
2536
|
+
const command = values.get("command") ?? "";
|
|
2537
|
+
const target = values.get("target") ?? "";
|
|
2538
|
+
const runtimeValue = values.get("runtime");
|
|
2539
|
+
const runtime = runtimeValue === "node" || runtimeValue === "native" ? runtimeValue : void 0;
|
|
2540
|
+
if (!NAME_RE.test(tool) || !NAME_RE.test(command)) {
|
|
2541
|
+
return {
|
|
2542
|
+
...fallback,
|
|
2543
|
+
managed: true,
|
|
2544
|
+
reason: "invalid tool or command marker"
|
|
2545
|
+
};
|
|
2546
|
+
}
|
|
2547
|
+
if (version.length > 64 || hasControlCharacters(version) || hasControlCharacters(target) || !isAbsolute(target)) {
|
|
2548
|
+
return {
|
|
2549
|
+
...fallback,
|
|
2550
|
+
managed: true,
|
|
2551
|
+
tool,
|
|
2552
|
+
command,
|
|
2553
|
+
reason: "invalid version or target marker"
|
|
2554
|
+
};
|
|
2555
|
+
}
|
|
2556
|
+
if (runtimeValue && !runtime) {
|
|
2557
|
+
return {
|
|
2558
|
+
...fallback,
|
|
2559
|
+
managed: true,
|
|
2560
|
+
tool,
|
|
2561
|
+
version,
|
|
2562
|
+
command,
|
|
2563
|
+
target,
|
|
2564
|
+
reason: "invalid runtime marker"
|
|
2565
|
+
};
|
|
2566
|
+
}
|
|
2567
|
+
return { managed: true, tool, version, command, target, runtime };
|
|
2568
|
+
} catch {
|
|
2569
|
+
return fallback;
|
|
2570
|
+
}
|
|
2571
|
+
}
|
|
2572
|
+
function isInsideOrEqual(candidate, root) {
|
|
2573
|
+
const rel = relative(root, candidate);
|
|
2574
|
+
return rel === "" || !rel.startsWith("..") && !isAbsolute(rel);
|
|
2575
|
+
}
|
|
2576
|
+
function classifyShim(parsed, toolsRoot) {
|
|
2577
|
+
if (parsed.reason) return { status: "broken", reason: parsed.reason };
|
|
2578
|
+
if (!parsed.target)
|
|
2579
|
+
return { status: "broken", reason: "shim missing target marker" };
|
|
2580
|
+
let realRoot;
|
|
2581
|
+
try {
|
|
2582
|
+
realRoot = realpathSync(resolve3(toolsRoot));
|
|
2583
|
+
} catch {
|
|
2584
|
+
return { status: "broken", reason: "tools root missing" };
|
|
2585
|
+
}
|
|
2586
|
+
let realTarget;
|
|
2587
|
+
try {
|
|
2588
|
+
realTarget = realpathSync(parsed.target);
|
|
2589
|
+
} catch {
|
|
2590
|
+
return { status: "broken", reason: "target missing" };
|
|
2591
|
+
}
|
|
2592
|
+
if (!isInsideOrEqual(realTarget, realRoot)) {
|
|
2593
|
+
return { status: "broken", reason: "target outside tools root" };
|
|
2594
|
+
}
|
|
2595
|
+
try {
|
|
2596
|
+
if (!lstatSync(realTarget).isFile()) {
|
|
2597
|
+
return { status: "broken", reason: "target not a file" };
|
|
2598
|
+
}
|
|
2599
|
+
accessSync(
|
|
2600
|
+
realTarget,
|
|
2601
|
+
parsed.runtime === "native" ? constants.X_OK : constants.R_OK
|
|
2602
|
+
);
|
|
2603
|
+
} catch {
|
|
2604
|
+
return {
|
|
2605
|
+
status: "broken",
|
|
2606
|
+
reason: parsed.runtime === "native" ? "target not executable" : "target not readable"
|
|
2607
|
+
};
|
|
2608
|
+
}
|
|
2609
|
+
return { status: "active" };
|
|
2610
|
+
}
|
|
2611
|
+
function scanSandboxTools(options = {}) {
|
|
2612
|
+
const binDir = options.binDir ?? SANDBOX_BIN_DIR;
|
|
2613
|
+
const toolsRoot = options.toolsRoot ?? join(SANDBOX_SHARE_ROOT, "tools");
|
|
2614
|
+
if (!existsSync3(binDir)) {
|
|
2615
|
+
return { tools: [], summary: { total: 0, active: 0, broken: 0 } };
|
|
2616
|
+
}
|
|
2617
|
+
const all = [];
|
|
2618
|
+
for (const name of readdirSync(binDir).sort()) {
|
|
2619
|
+
const filePath = join(binDir, name);
|
|
2620
|
+
const parsed = parseShim(filePath);
|
|
2621
|
+
if (!parsed.managed) continue;
|
|
2622
|
+
const { status, reason } = classifyShim(parsed, toolsRoot);
|
|
2623
|
+
all.push({
|
|
2624
|
+
tool: parsed.tool || "unknown",
|
|
2625
|
+
version: parsed.version || "unknown",
|
|
2626
|
+
command: parsed.command || name,
|
|
2627
|
+
runtime: parsed.runtime ?? "unknown",
|
|
2628
|
+
target: parsed.target,
|
|
2629
|
+
status,
|
|
2630
|
+
reason
|
|
2631
|
+
});
|
|
2632
|
+
}
|
|
2633
|
+
const active = all.filter((entry) => entry.status === "active").length;
|
|
2634
|
+
const broken = all.filter((entry) => entry.status === "broken").length;
|
|
2635
|
+
const tools = options.status ? all.filter((entry) => entry.status === options.status) : all;
|
|
2636
|
+
return { tools, summary: { total: all.length, active, broken } };
|
|
2637
|
+
}
|
|
2638
|
+
var listSandboxTools = {
|
|
2639
|
+
service: "agent",
|
|
2640
|
+
command: "+list-sandbox-tools",
|
|
2641
|
+
description: "List managed tools in the current sandbox and verify their targets and permissions",
|
|
2642
|
+
flags: [
|
|
2643
|
+
{
|
|
2644
|
+
name: "status",
|
|
2645
|
+
type: "string",
|
|
2646
|
+
required: false,
|
|
2647
|
+
desc: "Filter by status: active | broken"
|
|
2648
|
+
}
|
|
2649
|
+
],
|
|
2650
|
+
risk: "read",
|
|
2651
|
+
validate: (ctx) => {
|
|
2652
|
+
const status = ctx.str("status");
|
|
2653
|
+
if (status && !["active", "broken"].includes(status)) {
|
|
2654
|
+
throw new Error("--status must be active or broken");
|
|
2655
|
+
}
|
|
2656
|
+
},
|
|
2657
|
+
dryRun: () => ({
|
|
2658
|
+
method: "LOCAL_SCAN",
|
|
2659
|
+
url: SANDBOX_BIN_DIR,
|
|
2660
|
+
body: { marker: SHIM_MARKER, toolsRoot: join(SANDBOX_SHARE_ROOT, "tools") }
|
|
2661
|
+
}),
|
|
2662
|
+
execute: async (ctx) => scanSandboxTools({ status: ctx.str("status") })
|
|
2663
|
+
};
|
|
2664
|
+
|
|
2474
2665
|
// src/commands/te-agent/index.ts
|
|
2475
2666
|
var commands = [
|
|
2476
2667
|
// Agent CRUD
|
|
@@ -2547,7 +2738,9 @@ var commands = [
|
|
|
2547
2738
|
// Automate tasks
|
|
2548
2739
|
listAutomations,
|
|
2549
2740
|
createAutomation,
|
|
2550
|
-
updateAutomation
|
|
2741
|
+
updateAutomation,
|
|
2742
|
+
// Sandbox tools (local scan of /home/ta/.local/bin managed shims)
|
|
2743
|
+
listSandboxTools
|
|
2551
2744
|
];
|
|
2552
2745
|
var te_agent_default = commands;
|
|
2553
2746
|
export {
|