@thinkingai/ae-cli 1.0.1 → 1.0.3
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 +16 -13
- package/dist/auth-BQC5DBE7.js +19 -0
- package/dist/auth-DXKYLMO7.js +81 -0
- package/dist/chunk-3CDLNXTD.js +218 -0
- package/dist/chunk-53FNNCZW.js +174 -0
- package/dist/chunk-EBFUVWIZ.js +127 -0
- package/dist/chunk-ZYXIGPG7.js +148 -0
- package/dist/client-T4VODLA6.js +16 -0
- package/dist/community-FVDAWGS4.js +684 -0
- package/dist/config-V7AXKDMB.js +242 -0
- package/dist/index.js +16 -15
- package/dist/raw-G3GKHAPZ.js +61 -0
- package/dist/te-analysis-CHFTDN55.js +871 -0
- package/dist/te-audience-M6LQY6M7.js +350 -0
- package/dist/te-common-BLQ7DVGC.js +144 -0
- package/dist/te-dataops-V4OTKY35.js +1853 -0
- package/dist/te-engage-DXE4R5EW.js +1470 -0
- package/dist/te-meta-FMM7KCVI.js +479 -0
- package/package.json +7 -5
- package/skills/te-analysis/SKILL.md +10 -10
- package/skills/te-analysis/references/build-entity-details-sql.md +10 -10
- package/skills/te-analysis/references/build-event-details-sql.md +10 -10
- package/skills/te-analysis/references/create-alert.md +4 -4
- package/skills/te-analysis/references/create-dashboard.md +4 -4
- package/skills/te-analysis/references/create-or-update-dashboard-note.md +4 -4
- package/skills/te-analysis/references/create-public-access-link.md +4 -4
- package/skills/te-analysis/references/create-report.md +10 -10
- package/skills/te-analysis/references/create-result-cluster.md +4 -4
- package/skills/te-analysis/references/drilldown-user-events.md +6 -6
- package/skills/te-analysis/references/drilldown-users.md +4 -4
- package/skills/te-analysis/references/get-alert-definition-schema.md +3 -3
- package/skills/te-analysis/references/get-alert.md +3 -3
- package/skills/te-analysis/references/get-analysis-query-schema.md +4 -4
- package/skills/te-analysis/references/get-filter-schema.md +3 -3
- package/skills/te-analysis/references/get-groupby-schema.md +3 -3
- package/skills/te-analysis/references/get-report-definition.md +3 -3
- package/skills/te-analysis/references/get-table-columns.md +3 -3
- package/skills/te-analysis/references/list-alerts.md +4 -4
- package/skills/te-analysis/references/list-dashboards.md +4 -4
- package/skills/te-analysis/references/list-public-access-links.md +3 -3
- package/skills/te-analysis/references/list-reports.md +4 -4
- package/skills/te-analysis/references/load-filters.md +4 -4
- package/skills/te-analysis/references/query-adhoc.md +10 -10
- package/skills/te-analysis/references/query-dashboard-detail.md +3 -3
- package/skills/te-analysis/references/query-dashboard-report-data.md +9 -9
- package/skills/te-analysis/references/query-entity-details.md +10 -10
- package/skills/te-analysis/references/query-event-details.md +10 -10
- package/skills/te-analysis/references/query-report-data.md +11 -11
- package/skills/te-analysis/references/update-alert.md +4 -4
- package/skills/te-analysis/references/update-dashboard.md +4 -4
- package/skills/te-analysis/references/update-public-access-link.md +4 -4
- package/skills/te-audience/SKILL.md +5 -5
- package/skills/te-audience/references/create-cluster.md +10 -10
- package/skills/te-audience/references/create-tag.md +10 -10
- package/skills/te-audience/references/get-cluster-definition-schema.md +9 -9
- package/skills/te-audience/references/get-clusters-by-name.md +3 -3
- package/skills/te-audience/references/get-tag-definition-schema.md +3 -3
- package/skills/te-audience/references/get-tags-by-name.md +3 -3
- package/skills/te-audience/references/list-cluster-members.md +4 -4
- package/skills/te-audience/references/list-clusters.md +4 -4
- package/skills/te-audience/references/list-tag-members.md +4 -4
- package/skills/te-audience/references/list-tags.md +4 -4
- package/skills/te-audience/references/refresh-cluster.md +3 -3
- package/skills/te-audience/references/refresh-tag.md +3 -3
- package/skills/te-audience/references/update-cluster.md +9 -9
- package/skills/te-audience/references/update-tag.md +10 -10
- package/skills/te-common/SKILL.md +2 -2
- package/skills/te-common/references/get-resource-url.md +5 -5
- package/skills/te-common/references/list-projects.md +3 -3
- package/skills/te-community/SKILL.md +61 -69
- package/skills/te-community/references/community-activity-analysis.md +43 -43
- package/skills/te-community/references/community-analyzing-official-content.md +47 -47
- package/skills/te-community/references/community-analyzing-theme-comment.md +87 -87
- package/skills/te-community/references/community-character-analysis.md +44 -44
- package/skills/te-community/references/community-daily-report.md +56 -53
- package/skills/te-community/references/community-hottopic-insight.md +81 -87
- package/skills/te-community/references/community-weekly-report.md +54 -53
- package/skills/te-community/references/get_channel_info.md +9 -9
- package/skills/te-community/references/get_comment_tag_analysis.md +15 -15
- package/skills/te-community/references/get_comments_summary.md +15 -15
- package/skills/te-community/references/get_corpus_tags.md +9 -9
- package/skills/te-community/references/get_daily_summary.md +10 -10
- package/skills/te-community/references/get_hot_topics.md +12 -12
- package/skills/te-community/references/get_livestream_analysis.md +9 -9
- package/skills/te-community/references/get_livestream_detail.md +19 -19
- package/skills/te-community/references/get_livestream_list.md +13 -13
- package/skills/te-community/references/get_livestream_overview.md +11 -11
- package/skills/te-community/references/get_livestream_room_metrics.md +12 -12
- package/skills/te-community/references/get_livestream_rooms.md +12 -12
- package/skills/te-community/references/get_overview_metrics.md +12 -12
- package/skills/te-community/references/get_post_detail.md +21 -21
- package/skills/te-community/references/get_risk_content.md +23 -23
- package/skills/te-community/references/get_sentiment_overview.md +16 -16
- package/skills/te-community/references/get_tag_trends.md +13 -13
- package/skills/te-community/references/get_topic_detail.md +12 -12
- package/skills/te-community/references/search_posts.md +26 -26
- package/skills/te-dataops/SKILL.md +390 -392
- package/skills/te-dataops/references/dataops-flow-create.md +87 -87
- package/skills/te-dataops/references/dataops-flow-monitor.md +65 -65
- package/skills/te-dataops/references/dataops-integration.md +90 -85
- package/skills/te-dataops/references/dataops-query.md +58 -58
- package/skills/te-dataops/references/dataops-table.md +63 -63
- package/skills/te-engage/SKILL.md +103 -103
- package/skills/te-engage/references/add-approver.md +11 -11
- package/skills/te-engage/references/add-channel.md +34 -34
- package/skills/te-engage/references/approver-list.md +8 -8
- package/skills/te-engage/references/cancel-query-by-request-id.md +10 -10
- package/skills/te-engage/references/channel-detail.md +13 -13
- package/skills/te-engage/references/channel-list.md +15 -15
- package/skills/te-engage/references/config-channel-detail.md +10 -10
- package/skills/te-engage/references/config-channel-list.md +11 -11
- package/skills/te-engage/references/config-item-analysis-report.md +21 -21
- package/skills/te-engage/references/config-item-detail.md +10 -10
- package/skills/te-engage/references/config-item-list.md +8 -8
- package/skills/te-engage/references/config-item-strategy-comparison.md +14 -14
- package/skills/te-engage/references/config-item-trigger-report.md +26 -26
- package/skills/te-engage/references/copy-config-template.md +16 -16
- package/skills/te-engage/references/delete-channel.md +11 -11
- package/skills/te-engage/references/delete-config-channel.md +11 -11
- package/skills/te-engage/references/delete-config-item.md +12 -12
- package/skills/te-engage/references/delete-flow.md +11 -11
- package/skills/te-engage/references/flow-ab-split-node-report.md +29 -29
- package/skills/te-engage/references/flow-detail.md +19 -19
- package/skills/te-engage/references/flow-list.md +8 -8
- package/skills/te-engage/references/flow-node-config-schema.md +11 -11
- package/skills/te-engage/references/flow-node-detail-report.md +30 -30
- package/skills/te-engage/references/flow-node-overview-report.md +27 -27
- package/skills/te-engage/references/flow-process-report.md +32 -32
- package/skills/te-engage/references/manage-flow.md +44 -44
- package/skills/te-engage/references/manage-strategy.md +37 -37
- package/skills/te-engage/references/manage-task.md +20 -20
- package/skills/te-engage/references/modify-flow-base-info.md +14 -14
- package/skills/te-engage/references/save-flow.md +264 -263
- package/skills/te-engage/references/strategy-detail.md +16 -16
- package/skills/te-engage/references/strategy-list.md +10 -10
- package/skills/te-engage/references/task-data-detail.md +47 -47
- package/skills/te-engage/references/task-data-overview.md +23 -23
- package/skills/te-engage/references/task-detail.md +18 -18
- package/skills/te-engage/references/task-experiment-report.md +26 -26
- package/skills/te-engage/references/task-list.md +35 -35
- package/skills/te-engage/references/task-metric-detail.md +31 -31
- package/skills/te-engage/references/task-stats.md +31 -31
- package/skills/te-engage/references/update-channel-status.md +13 -13
- package/skills/te-engage/references/update-config-channel-status.md +14 -14
- package/skills/te-engage/references/validate-flow-node-config.md +15 -15
- package/skills/te-engage/references/whitelist-list.md +8 -8
- package/skills/te-meta/SKILL.md +5 -5
- package/skills/te-meta/references/batch-create-metadata.md +4 -4
- package/skills/te-meta/references/batch-edit-metadata.md +3 -3
- package/skills/te-meta/references/create-metric.md +12 -12
- package/skills/te-meta/references/create-project-mark-time.md +4 -4
- package/skills/te-meta/references/create-virtual-event.md +10 -10
- package/skills/te-meta/references/create-virtual-property.md +8 -8
- package/skills/te-meta/references/delete-project-mark-times.md +3 -3
- package/skills/te-meta/references/delete-track-items.md +3 -3
- package/skills/te-meta/references/get-metric.md +3 -3
- package/skills/te-meta/references/get-project-config.md +3 -3
- package/skills/te-meta/references/get-track-program.md +3 -3
- package/skills/te-meta/references/list-entities.md +4 -4
- package/skills/te-meta/references/list-events.md +4 -4
- package/skills/te-meta/references/list-metrics.md +4 -4
- package/skills/te-meta/references/list-project-mark-times.md +4 -4
- package/skills/te-meta/references/list-project-users.md +3 -3
- package/skills/te-meta/references/list-properties.md +4 -4
- package/skills/te-meta/references/save-track-items.md +3 -3
- package/skills/te-meta/references/update-metric.md +10 -10
- package/skills/te-meta/references/update-project-mark-time.md +4 -4
- package/skills/te-shared/SKILL.md +8 -8
- package/skills/te-community/references/community-release-analysis.md +0 -79
- package/skills/te-dataops/references/dataops-operations.md +0 -107
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getAuthStatus,
|
|
3
|
+
getToken
|
|
4
|
+
} from "./chunk-3CDLNXTD.js";
|
|
5
|
+
import {
|
|
6
|
+
addHost,
|
|
7
|
+
listHosts,
|
|
8
|
+
removeHost,
|
|
9
|
+
setActiveHost,
|
|
10
|
+
updateHostLabel
|
|
11
|
+
} from "./chunk-EBFUVWIZ.js";
|
|
12
|
+
|
|
13
|
+
// src/commands/config.ts
|
|
14
|
+
import * as readline from "readline";
|
|
15
|
+
function registerConfig(program) {
|
|
16
|
+
program.command("config").description("Interactive TE host configuration manager").action(async () => {
|
|
17
|
+
await runConfigUI(program);
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
async function runConfigUI(program) {
|
|
21
|
+
const hosts = listHosts();
|
|
22
|
+
if (hosts.length === 0) {
|
|
23
|
+
process.stderr.write("\x1B[1m[ae-cli] No TE hosts configured. Let's add one.\x1B[0m\n\n");
|
|
24
|
+
const newHost = await promptNewHost();
|
|
25
|
+
if (!newHost) {
|
|
26
|
+
process.stderr.write("Cancelled.\n");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
addHost(newHost.url, newHost.label);
|
|
30
|
+
setActiveHost(newHost.url);
|
|
31
|
+
process.stderr.write(`
|
|
32
|
+
\x1B[32m\u2713\x1B[0m Added and activated: \x1B[1m${newHost.label}\x1B[0m ${newHost.url}
|
|
33
|
+
`);
|
|
34
|
+
await ensureAuth(newHost.url);
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
await hostManagerLoop(program);
|
|
38
|
+
}
|
|
39
|
+
async function hostManagerLoop(program) {
|
|
40
|
+
while (true) {
|
|
41
|
+
const hosts = listHosts();
|
|
42
|
+
const items = hosts.map((h) => ({
|
|
43
|
+
display: formatHostLine(h),
|
|
44
|
+
type: "host",
|
|
45
|
+
url: h.url,
|
|
46
|
+
label: h.label,
|
|
47
|
+
active: h.active
|
|
48
|
+
}));
|
|
49
|
+
items.push({ display: "\x1B[2m + Add new host...\x1B[0m", type: "add", url: "", label: "", active: false });
|
|
50
|
+
const activeIdx = items.findIndex((i) => i.active);
|
|
51
|
+
process.stderr.write("\n\x1B[1mTE Host Manager\x1B[0m (\u2191\u2193 select \xB7 Enter switch \xB7 e edit label \xB7 d delete \xB7 a add \xB7 q quit)\n\n");
|
|
52
|
+
const result = await interactiveHostSelect(items, activeIdx >= 0 ? activeIdx : 0);
|
|
53
|
+
if (result.action === "quit" || result.action === "cancel") {
|
|
54
|
+
break;
|
|
55
|
+
}
|
|
56
|
+
const item = items[result.index];
|
|
57
|
+
if (result.action === "select") {
|
|
58
|
+
if (item.type === "add") {
|
|
59
|
+
await handleAddHost();
|
|
60
|
+
} else {
|
|
61
|
+
setActiveHost(item.url);
|
|
62
|
+
process.stderr.write(`
|
|
63
|
+
\x1B[32m\u2713\x1B[0m Switched to: \x1B[1m${item.label}\x1B[0m ${item.url}
|
|
64
|
+
`);
|
|
65
|
+
await ensureAuth(item.url);
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
} else if (result.action === "edit" && item.type === "host") {
|
|
69
|
+
await handleEditLabel(item.url, item.label);
|
|
70
|
+
} else if (result.action === "delete" && item.type === "host") {
|
|
71
|
+
await handleDeleteHost(item.url, item.label, item.active);
|
|
72
|
+
} else if (result.action === "add") {
|
|
73
|
+
await handleAddHost();
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
function formatHostLine(h) {
|
|
78
|
+
const marker = h.active ? "\x1B[32m\u25CF\x1B[0m" : "\x1B[2m\u25CB\x1B[0m";
|
|
79
|
+
const labelText = h.active ? `\x1B[1;32m${h.label}\x1B[0m` : `\x1B[1m${h.label}\x1B[0m`;
|
|
80
|
+
const authInfo = getAuthStatus(h.url);
|
|
81
|
+
const authBadge = authInfo.authenticated ? `\x1B[32m\u2713\x1B[0m` : `\x1B[31m\u2717\x1B[0m`;
|
|
82
|
+
return `${marker} ${labelText} ${h.url} ${authBadge}`;
|
|
83
|
+
}
|
|
84
|
+
async function handleAddHost() {
|
|
85
|
+
const newHost = await promptNewHost();
|
|
86
|
+
if (!newHost) {
|
|
87
|
+
process.stderr.write("Cancelled.\n");
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
addHost(newHost.url, newHost.label);
|
|
91
|
+
setActiveHost(newHost.url);
|
|
92
|
+
process.stderr.write(`
|
|
93
|
+
\x1B[32m\u2713\x1B[0m Added and activated: \x1B[1m${newHost.label}\x1B[0m ${newHost.url}
|
|
94
|
+
`);
|
|
95
|
+
await ensureAuth(newHost.url);
|
|
96
|
+
}
|
|
97
|
+
async function handleEditLabel(url, currentLabel) {
|
|
98
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
99
|
+
const newLabel = await new Promise(
|
|
100
|
+
(resolve) => rl.question(`
|
|
101
|
+
New label [${currentLabel}]: `, (a) => {
|
|
102
|
+
rl.close();
|
|
103
|
+
resolve(a.trim() || currentLabel);
|
|
104
|
+
})
|
|
105
|
+
);
|
|
106
|
+
if (newLabel !== currentLabel) {
|
|
107
|
+
updateHostLabel(url, newLabel);
|
|
108
|
+
process.stderr.write(`\x1B[32m\u2713\x1B[0m Label updated: ${newLabel}
|
|
109
|
+
`);
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
async function handleDeleteHost(url, label, isActive) {
|
|
113
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
114
|
+
const answer = await new Promise(
|
|
115
|
+
(resolve) => rl.question(`
|
|
116
|
+
Delete \x1B[1m${label}\x1B[0m (${url})? [y/N]: `, (a) => {
|
|
117
|
+
rl.close();
|
|
118
|
+
resolve(a.trim().toLowerCase());
|
|
119
|
+
})
|
|
120
|
+
);
|
|
121
|
+
if (answer === "y" || answer === "yes") {
|
|
122
|
+
removeHost(url);
|
|
123
|
+
process.stderr.write(`\x1B[32m\u2713\x1B[0m Deleted: ${label}
|
|
124
|
+
`);
|
|
125
|
+
if (isActive) {
|
|
126
|
+
const remaining = listHosts();
|
|
127
|
+
if (remaining.length > 0) {
|
|
128
|
+
process.stderr.write(` Active host switched to: ${remaining[0].label}
|
|
129
|
+
`);
|
|
130
|
+
} else {
|
|
131
|
+
process.stderr.write(" No hosts remaining. Run ae-cli config to add one.\n");
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
async function ensureAuth(hostUrl) {
|
|
137
|
+
const status = getAuthStatus(hostUrl);
|
|
138
|
+
if (status.authenticated) {
|
|
139
|
+
process.stderr.write(`\x1B[32m\u2713\x1B[0m Token valid for ${hostUrl}
|
|
140
|
+
`);
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
process.stderr.write(`
|
|
144
|
+
\x1B[33m!\x1B[0m No valid token for ${hostUrl}. Starting login...
|
|
145
|
+
`);
|
|
146
|
+
try {
|
|
147
|
+
await getToken(hostUrl);
|
|
148
|
+
process.stderr.write(`\x1B[32m\u2713\x1B[0m Authenticated to ${hostUrl}
|
|
149
|
+
`);
|
|
150
|
+
} catch (err) {
|
|
151
|
+
process.stderr.write(`\x1B[31m\u2717\x1B[0m Auth failed: ${err.message}
|
|
152
|
+
`);
|
|
153
|
+
process.stderr.write(` You can set token manually: ae-cli auth set-token <token>
|
|
154
|
+
`);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async function promptNewHost() {
|
|
158
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stderr });
|
|
159
|
+
const ask = (q) => new Promise((resolve) => rl.question(q, (a) => resolve(a.trim())));
|
|
160
|
+
const url = await ask("TE host URL (e.g., https://ta.thinkingdata.cn): ");
|
|
161
|
+
if (!url) {
|
|
162
|
+
rl.close();
|
|
163
|
+
return null;
|
|
164
|
+
}
|
|
165
|
+
const label = await ask("Label: ");
|
|
166
|
+
rl.close();
|
|
167
|
+
if (!label) return null;
|
|
168
|
+
return { url: normalizeUrl(url), label };
|
|
169
|
+
}
|
|
170
|
+
function normalizeUrl(url) {
|
|
171
|
+
if (!url.startsWith("http://") && !url.startsWith("https://")) {
|
|
172
|
+
url = `https://${url}`;
|
|
173
|
+
}
|
|
174
|
+
return url.replace(/\/$/, "");
|
|
175
|
+
}
|
|
176
|
+
function interactiveHostSelect(items, initialIndex) {
|
|
177
|
+
return new Promise((resolve) => {
|
|
178
|
+
let cursor = initialIndex;
|
|
179
|
+
const stdin = process.stdin;
|
|
180
|
+
const stderr = process.stderr;
|
|
181
|
+
let renderCount = 0;
|
|
182
|
+
stderr.write("\x1B[?25l");
|
|
183
|
+
function render() {
|
|
184
|
+
if (renderCount > 0) {
|
|
185
|
+
stderr.write(`\x1B[${items.length}A`);
|
|
186
|
+
}
|
|
187
|
+
for (let i = 0; i < items.length; i++) {
|
|
188
|
+
const pointer = i === cursor ? "\x1B[36m\u276F\x1B[0m" : " ";
|
|
189
|
+
stderr.write(`${pointer} ${items[i].display}\x1B[K
|
|
190
|
+
`);
|
|
191
|
+
}
|
|
192
|
+
renderCount++;
|
|
193
|
+
}
|
|
194
|
+
render();
|
|
195
|
+
if (!stdin.isTTY) {
|
|
196
|
+
stderr.write("\x1B[?25h");
|
|
197
|
+
resolve({ action: "select", index: initialIndex });
|
|
198
|
+
return;
|
|
199
|
+
}
|
|
200
|
+
stdin.setRawMode(true);
|
|
201
|
+
stdin.resume();
|
|
202
|
+
stdin.setEncoding("utf8");
|
|
203
|
+
function cleanup() {
|
|
204
|
+
stdin.setRawMode(false);
|
|
205
|
+
stdin.pause();
|
|
206
|
+
stdin.removeListener("data", onData);
|
|
207
|
+
stderr.write("\x1B[?25h");
|
|
208
|
+
}
|
|
209
|
+
function onData(key) {
|
|
210
|
+
if (key === "\x1B[A" || key === "k") {
|
|
211
|
+
cursor = (cursor - 1 + items.length) % items.length;
|
|
212
|
+
render();
|
|
213
|
+
} else if (key === "\x1B[B" || key === "j") {
|
|
214
|
+
cursor = (cursor + 1) % items.length;
|
|
215
|
+
render();
|
|
216
|
+
} else if (key === "\r" || key === "\n") {
|
|
217
|
+
cleanup();
|
|
218
|
+
resolve({ action: "select", index: cursor });
|
|
219
|
+
} else if (key === "e" || key === "E") {
|
|
220
|
+
if (items[cursor].type === "host") {
|
|
221
|
+
cleanup();
|
|
222
|
+
resolve({ action: "edit", index: cursor });
|
|
223
|
+
}
|
|
224
|
+
} else if (key === "d" || key === "D") {
|
|
225
|
+
if (items[cursor].type === "host") {
|
|
226
|
+
cleanup();
|
|
227
|
+
resolve({ action: "delete", index: cursor });
|
|
228
|
+
}
|
|
229
|
+
} else if (key === "a" || key === "A") {
|
|
230
|
+
cleanup();
|
|
231
|
+
resolve({ action: "add", index: cursor });
|
|
232
|
+
} else if (key === "q" || key === "Q" || key === "\x1B" || key === "") {
|
|
233
|
+
cleanup();
|
|
234
|
+
resolve({ action: "quit", index: cursor });
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
stdin.on("data", onData);
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
export {
|
|
241
|
+
registerConfig
|
|
242
|
+
};
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,9 @@ import {
|
|
|
3
3
|
printOutput
|
|
4
4
|
} from "./chunk-KM57HI5B.js";
|
|
5
5
|
import {
|
|
6
|
-
getActiveHost
|
|
7
|
-
|
|
6
|
+
getActiveHost,
|
|
7
|
+
safeJsonParse
|
|
8
|
+
} from "./chunk-EBFUVWIZ.js";
|
|
8
9
|
|
|
9
10
|
// src/index.ts
|
|
10
11
|
import { Command as CommanderCommand } from "commander";
|
|
@@ -61,7 +62,7 @@ function createRuntimeContext(cmd, opts, globalOpts) {
|
|
|
61
62
|
let _clientModule = null;
|
|
62
63
|
async function getClient() {
|
|
63
64
|
if (!_clientModule) {
|
|
64
|
-
_clientModule = await import("./client-
|
|
65
|
+
_clientModule = await import("./client-T4VODLA6.js");
|
|
65
66
|
}
|
|
66
67
|
return _clientModule;
|
|
67
68
|
}
|
|
@@ -81,7 +82,7 @@ function createRuntimeContext(cmd, opts, globalOpts) {
|
|
|
81
82
|
if (val === void 0 || val === null) return void 0;
|
|
82
83
|
if (typeof val === "object") return val;
|
|
83
84
|
try {
|
|
84
|
-
return
|
|
85
|
+
return safeJsonParse(String(val));
|
|
85
86
|
} catch {
|
|
86
87
|
printError("validation", `Invalid JSON for --${name}: ${val}`);
|
|
87
88
|
process.exit(1);
|
|
@@ -104,7 +105,7 @@ function createRuntimeContext(cmd, opts, globalOpts) {
|
|
|
104
105
|
return client.queryReportData(projectId, reportId, qp, eventModel, options, ctx.host());
|
|
105
106
|
},
|
|
106
107
|
async token() {
|
|
107
|
-
const { getToken } = await import("./auth-
|
|
108
|
+
const { getToken } = await import("./auth-BQC5DBE7.js");
|
|
108
109
|
return getToken(ctx.host());
|
|
109
110
|
},
|
|
110
111
|
host() {
|
|
@@ -209,37 +210,37 @@ program.name("ae-cli").version(version).description("CLI tool for ThinkingEngine
|
|
|
209
210
|
async function loadCommands() {
|
|
210
211
|
const commands = [];
|
|
211
212
|
try {
|
|
212
|
-
const teAnalysis = await import("./te-analysis-
|
|
213
|
+
const teAnalysis = await import("./te-analysis-CHFTDN55.js");
|
|
213
214
|
commands.push(...teAnalysis.default);
|
|
214
215
|
} catch {
|
|
215
216
|
}
|
|
216
217
|
try {
|
|
217
|
-
const teAudience = await import("./te-audience-
|
|
218
|
+
const teAudience = await import("./te-audience-M6LQY6M7.js");
|
|
218
219
|
commands.push(...teAudience.default);
|
|
219
220
|
} catch {
|
|
220
221
|
}
|
|
221
222
|
try {
|
|
222
|
-
const teMeta = await import("./te-meta-
|
|
223
|
+
const teMeta = await import("./te-meta-FMM7KCVI.js");
|
|
223
224
|
commands.push(...teMeta.default);
|
|
224
225
|
} catch {
|
|
225
226
|
}
|
|
226
227
|
try {
|
|
227
|
-
const teCommon = await import("./te-common-
|
|
228
|
+
const teCommon = await import("./te-common-BLQ7DVGC.js");
|
|
228
229
|
commands.push(...teCommon.default);
|
|
229
230
|
} catch {
|
|
230
231
|
}
|
|
231
232
|
try {
|
|
232
|
-
const engage = await import("./te-engage-
|
|
233
|
+
const engage = await import("./te-engage-DXE4R5EW.js");
|
|
233
234
|
commands.push(...engage.default);
|
|
234
235
|
} catch {
|
|
235
236
|
}
|
|
236
237
|
try {
|
|
237
|
-
const community = await import("./community-
|
|
238
|
+
const community = await import("./community-FVDAWGS4.js");
|
|
238
239
|
commands.push(...community.default);
|
|
239
240
|
} catch {
|
|
240
241
|
}
|
|
241
242
|
try {
|
|
242
|
-
const dataops = await import("./te-dataops-
|
|
243
|
+
const dataops = await import("./te-dataops-V4OTKY35.js");
|
|
243
244
|
commands.push(...dataops.default);
|
|
244
245
|
} catch {
|
|
245
246
|
}
|
|
@@ -247,21 +248,21 @@ async function loadCommands() {
|
|
|
247
248
|
}
|
|
248
249
|
async function registerAuthCommands() {
|
|
249
250
|
try {
|
|
250
|
-
const { registerAuth } = await import("./auth-
|
|
251
|
+
const { registerAuth } = await import("./auth-DXKYLMO7.js");
|
|
251
252
|
registerAuth(program);
|
|
252
253
|
} catch {
|
|
253
254
|
}
|
|
254
255
|
}
|
|
255
256
|
async function registerConfigCommands() {
|
|
256
257
|
try {
|
|
257
|
-
const { registerConfig } = await import("./config-
|
|
258
|
+
const { registerConfig } = await import("./config-V7AXKDMB.js");
|
|
258
259
|
registerConfig(program);
|
|
259
260
|
} catch {
|
|
260
261
|
}
|
|
261
262
|
}
|
|
262
263
|
async function registerApiCommand() {
|
|
263
264
|
try {
|
|
264
|
-
const { registerApi } = await import("./raw-
|
|
265
|
+
const { registerApi } = await import("./raw-G3GKHAPZ.js");
|
|
265
266
|
registerApi(program);
|
|
266
267
|
} catch {
|
|
267
268
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import {
|
|
2
|
+
printError,
|
|
3
|
+
printOutput
|
|
4
|
+
} from "./chunk-KM57HI5B.js";
|
|
5
|
+
import {
|
|
6
|
+
httpGet,
|
|
7
|
+
httpPost
|
|
8
|
+
} from "./chunk-ZYXIGPG7.js";
|
|
9
|
+
import {
|
|
10
|
+
resolveHost
|
|
11
|
+
} from "./chunk-3CDLNXTD.js";
|
|
12
|
+
import {
|
|
13
|
+
safeJsonParse
|
|
14
|
+
} from "./chunk-EBFUVWIZ.js";
|
|
15
|
+
|
|
16
|
+
// src/api/raw.ts
|
|
17
|
+
function registerApi(program) {
|
|
18
|
+
program.command("api").description("Raw API call: ae-cli api <METHOD> <PATH> [options]").argument("<method>", "HTTP method (GET, POST)").argument("<path>", "API path (e.g., /v1/ta/event/catalog/listEvent)").option("--params <json>", "URL parameters as JSON").option("--data <json>", "Request body as JSON").action(async (method, apiPath, opts) => {
|
|
19
|
+
const globalOpts = program.opts();
|
|
20
|
+
const host = resolveHost(globalOpts.host);
|
|
21
|
+
const format = globalOpts.format || "json";
|
|
22
|
+
const jq = globalOpts.jq;
|
|
23
|
+
if (!host) {
|
|
24
|
+
printError("config", "No TE host configured.", "Run: ae-cli config set-host");
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
try {
|
|
28
|
+
let params = {};
|
|
29
|
+
let body = void 0;
|
|
30
|
+
if (opts.params) {
|
|
31
|
+
try {
|
|
32
|
+
params = safeJsonParse(opts.params);
|
|
33
|
+
} catch {
|
|
34
|
+
printError("validation", `Invalid JSON for --params: ${opts.params}`);
|
|
35
|
+
process.exit(1);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (opts.data) {
|
|
39
|
+
try {
|
|
40
|
+
body = safeJsonParse(opts.data);
|
|
41
|
+
} catch {
|
|
42
|
+
printError("validation", `Invalid JSON for --data: ${opts.data}`);
|
|
43
|
+
process.exit(1);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
let result;
|
|
47
|
+
if (method.toUpperCase() === "GET") {
|
|
48
|
+
result = await httpGet(apiPath, params, host);
|
|
49
|
+
} else {
|
|
50
|
+
result = await httpPost(apiPath, params, body, host);
|
|
51
|
+
}
|
|
52
|
+
printOutput(result, format, jq);
|
|
53
|
+
} catch (err) {
|
|
54
|
+
printError("api", err.message);
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export {
|
|
60
|
+
registerApi
|
|
61
|
+
};
|