teleton 0.4.0 → 0.5.1
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 +88 -13
- package/dist/BigInteger-DQ33LTTE.js +5 -0
- package/dist/chunk-4DU3C27M.js +30 -0
- package/dist/chunk-5WWR4CU3.js +124 -0
- package/dist/{chunk-7UPH62J2.js → chunk-BYTHCDZA.js} +261 -255
- package/dist/{chunk-E2NXSWOS.js → chunk-NUGDTPE4.js} +24 -64
- package/dist/{chunk-OA5L7GM6.js → chunk-O4R7V5Y2.js} +37 -5
- package/dist/chunk-QUAPFI2N.js +42 -0
- package/dist/{chunk-QU4ZOR35.js → chunk-RRB6BWU7.js} +3108 -3345
- package/dist/chunk-TSKJCWQQ.js +1263 -0
- package/dist/{chunk-B2PRMXOH.js → chunk-WL2Q3VRD.js} +0 -2
- package/dist/{chunk-OQGNS2FV.js → chunk-YBA6IBGT.js} +20 -5
- package/dist/cli/index.js +39 -172
- package/dist/{endpoint-FT2B2RZ2.js → endpoint-FLYNEZ2F.js} +1 -1
- package/dist/{get-my-gifts-AFKBG4YQ.js → get-my-gifts-KVULMBJ3.js} +1 -1
- package/dist/index.js +12 -12
- package/dist/{memory-SYTQ5P7P.js → memory-657W5AS6.js} +4 -5
- package/dist/{migrate-ITXMRRSZ.js → migrate-PMB2JVXH.js} +4 -5
- package/dist/server-BQY7CM2N.js +1120 -0
- package/dist/{task-dependency-resolver-GY6PEBIS.js → task-dependency-resolver-TRPILAHM.js} +2 -2
- package/dist/{task-executor-4QKTZZ3P.js → task-executor-N7XNVK5N.js} +1 -1
- package/dist/{tasks-M3QDPTGY.js → tasks-QSCWSMPS.js} +1 -1
- package/dist/{transcript-DF2Y6CFY.js → transcript-7V4UNID4.js} +1 -1
- package/dist/web/assets/index-CDMbujHf.css +1 -0
- package/dist/web/assets/index-DDX8oQ2z.js +67 -0
- package/dist/web/index.html +16 -0
- package/dist/web/logo_dark.png +0 -0
- package/package.json +23 -4
- package/dist/chunk-67QC5FBN.js +0 -60
- package/dist/chunk-A64NPEFL.js +0 -74
- package/dist/chunk-DUW5VBAZ.js +0 -133
- package/dist/chunk-QBGUCUOW.js +0 -16
- package/dist/scraper-SH7GS7TO.js +0 -282
|
@@ -141,10 +141,8 @@ var telegramGetMyGiftsExecutor = async (params, context) => {
|
|
|
141
141
|
isCollectible,
|
|
142
142
|
stars: gift?.stars?.toString(),
|
|
143
143
|
emoji: catalogInfo?.emoji || null,
|
|
144
|
-
// IDs needed for transfer/actions (msgId for user gifts, savedId for chat gifts)
|
|
145
144
|
msgId: savedGift.msgId,
|
|
146
145
|
savedId: savedGift.savedId?.toString(),
|
|
147
|
-
// Transfer cost in Stars (if set, transfer requires payment; if null, transfer is free)
|
|
148
146
|
transferStars: savedGift.transferStars?.toString() || null
|
|
149
147
|
};
|
|
150
148
|
if (isCollectible) {
|
|
@@ -63,14 +63,17 @@ function sanitizeMessages(messages) {
|
|
|
63
63
|
sanitized.push(msg);
|
|
64
64
|
} else if (msg.role === "toolResult" || msg.role === "tool_result") {
|
|
65
65
|
const toolCallId = msg.toolCallId || msg.tool_use_id || msg.tool_call_id;
|
|
66
|
-
if (toolCallId
|
|
66
|
+
if (!toolCallId || typeof toolCallId !== "string") {
|
|
67
|
+
removedCount++;
|
|
68
|
+
console.warn(`\u{1F9F9} Removing toolResult with missing/invalid toolCallId`);
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (pendingToolCallIds.has(toolCallId)) {
|
|
67
72
|
pendingToolCallIds.delete(toolCallId);
|
|
68
73
|
sanitized.push(msg);
|
|
69
74
|
} else {
|
|
70
75
|
removedCount++;
|
|
71
|
-
console.warn(
|
|
72
|
-
`\u{1F9F9} Removing out-of-order/orphaned toolResult: ${toolCallId?.slice(0, 20)}...`
|
|
73
|
-
);
|
|
76
|
+
console.warn(`\u{1F9F9} Removing orphaned toolResult: ${toolCallId.slice(0, 20)}...`);
|
|
74
77
|
continue;
|
|
75
78
|
}
|
|
76
79
|
} else if (msg.role === "user") {
|
|
@@ -98,7 +101,19 @@ function readTranscript(sessionId) {
|
|
|
98
101
|
try {
|
|
99
102
|
const content = readFileSync(transcriptPath, "utf-8");
|
|
100
103
|
const lines = content.trim().split("\n").filter(Boolean);
|
|
101
|
-
|
|
104
|
+
let corruptCount = 0;
|
|
105
|
+
const messages = lines.map((line, i) => {
|
|
106
|
+
try {
|
|
107
|
+
return JSON.parse(line);
|
|
108
|
+
} catch {
|
|
109
|
+
corruptCount++;
|
|
110
|
+
console.warn(`\u26A0\uFE0F Skipping corrupt line ${i + 1} in transcript ${sessionId}`);
|
|
111
|
+
return null;
|
|
112
|
+
}
|
|
113
|
+
}).filter(Boolean);
|
|
114
|
+
if (corruptCount > 0) {
|
|
115
|
+
console.warn(`\u26A0\uFE0F ${corruptCount} corrupt line(s) skipped in transcript ${sessionId}`);
|
|
116
|
+
}
|
|
102
117
|
return sanitizeMessages(messages);
|
|
103
118
|
} catch (error) {
|
|
104
119
|
console.error(`Failed to read transcript ${sessionId}:`, error);
|
package/dist/cli/index.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
ConfigSchema,
|
|
3
3
|
DealsConfigSchema,
|
|
4
|
-
MarketConfigSchema,
|
|
5
4
|
TelegramUserClient,
|
|
6
5
|
configExists,
|
|
7
6
|
ensureWorkspace,
|
|
@@ -16,27 +15,25 @@ import {
|
|
|
16
15
|
saveWallet,
|
|
17
16
|
validateApiKeyFormat,
|
|
18
17
|
walletExists
|
|
19
|
-
} from "../chunk-
|
|
18
|
+
} from "../chunk-RRB6BWU7.js";
|
|
19
|
+
import "../chunk-WL2Q3VRD.js";
|
|
20
20
|
import "../chunk-EHEV7FJ7.js";
|
|
21
21
|
import "../chunk-U7FQYCBQ.js";
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
24
|
-
import "../chunk-7UPH62J2.js";
|
|
22
|
+
import "../chunk-5WWR4CU3.js";
|
|
23
|
+
import "../chunk-YBA6IBGT.js";
|
|
25
24
|
import {
|
|
26
25
|
fetchWithTimeout
|
|
27
|
-
} from "../chunk-
|
|
28
|
-
import
|
|
29
|
-
ONBOARDING_PROMPT_TIMEOUT_MS
|
|
30
|
-
} from "../chunk-67QC5FBN.js";
|
|
26
|
+
} from "../chunk-BYTHCDZA.js";
|
|
27
|
+
import "../chunk-4DU3C27M.js";
|
|
31
28
|
import {
|
|
32
29
|
TELEGRAM_MAX_MESSAGE_LENGTH
|
|
33
|
-
} from "../chunk-
|
|
30
|
+
} from "../chunk-O4R7V5Y2.js";
|
|
34
31
|
import {
|
|
35
32
|
TELETON_ROOT
|
|
36
33
|
} from "../chunk-EYWNOHMJ.js";
|
|
37
|
-
import "../chunk-
|
|
38
|
-
import "../chunk-
|
|
39
|
-
import "../chunk-
|
|
34
|
+
import "../chunk-NUGDTPE4.js";
|
|
35
|
+
import "../chunk-QUAPFI2N.js";
|
|
36
|
+
import "../chunk-TSKJCWQQ.js";
|
|
40
37
|
import "../chunk-QGM4M3NI.js";
|
|
41
38
|
|
|
42
39
|
// src/cli/index.ts
|
|
@@ -45,27 +42,15 @@ import { Command } from "commander";
|
|
|
45
42
|
// src/cli/prompts.ts
|
|
46
43
|
import * as clack from "@clack/prompts";
|
|
47
44
|
var ClackPrompter = class {
|
|
48
|
-
/**
|
|
49
|
-
* Display intro banner
|
|
50
|
-
*/
|
|
51
45
|
async intro(title) {
|
|
52
46
|
clack.intro(title);
|
|
53
47
|
}
|
|
54
|
-
/**
|
|
55
|
-
* Display outro message
|
|
56
|
-
*/
|
|
57
48
|
async outro(message) {
|
|
58
49
|
clack.outro(message);
|
|
59
50
|
}
|
|
60
|
-
/**
|
|
61
|
-
* Display note/info
|
|
62
|
-
*/
|
|
63
51
|
async note(message, title) {
|
|
64
52
|
clack.note(message, title);
|
|
65
53
|
}
|
|
66
|
-
/**
|
|
67
|
-
* Text input prompt
|
|
68
|
-
*/
|
|
69
54
|
async text(options) {
|
|
70
55
|
const result = await clack.text({
|
|
71
56
|
message: options.message,
|
|
@@ -78,9 +63,6 @@ var ClackPrompter = class {
|
|
|
78
63
|
}
|
|
79
64
|
return result;
|
|
80
65
|
}
|
|
81
|
-
/**
|
|
82
|
-
* Password input (hidden)
|
|
83
|
-
*/
|
|
84
66
|
async password(options) {
|
|
85
67
|
const result = await clack.password({
|
|
86
68
|
message: options.message,
|
|
@@ -91,9 +73,6 @@ var ClackPrompter = class {
|
|
|
91
73
|
}
|
|
92
74
|
return result;
|
|
93
75
|
}
|
|
94
|
-
/**
|
|
95
|
-
* Select prompt (single choice)
|
|
96
|
-
*/
|
|
97
76
|
async select(options) {
|
|
98
77
|
const result = await clack.select({
|
|
99
78
|
message: options.message,
|
|
@@ -114,9 +93,6 @@ var ClackPrompter = class {
|
|
|
114
93
|
}
|
|
115
94
|
return result;
|
|
116
95
|
}
|
|
117
|
-
/**
|
|
118
|
-
* Confirm (yes/no)
|
|
119
|
-
*/
|
|
120
96
|
async confirm(options) {
|
|
121
97
|
const result = await clack.confirm({
|
|
122
98
|
message: options.message,
|
|
@@ -127,9 +103,6 @@ var ClackPrompter = class {
|
|
|
127
103
|
}
|
|
128
104
|
return result;
|
|
129
105
|
}
|
|
130
|
-
/**
|
|
131
|
-
* Multi-select prompt
|
|
132
|
-
*/
|
|
133
106
|
async multiselect(options) {
|
|
134
107
|
const result = await clack.multiselect({
|
|
135
108
|
message: options.message,
|
|
@@ -150,9 +123,6 @@ var ClackPrompter = class {
|
|
|
150
123
|
}
|
|
151
124
|
return result;
|
|
152
125
|
}
|
|
153
|
-
/**
|
|
154
|
-
* Spinner for long operations
|
|
155
|
-
*/
|
|
156
126
|
spinner() {
|
|
157
127
|
const s = clack.spinner();
|
|
158
128
|
return {
|
|
@@ -161,27 +131,15 @@ var ClackPrompter = class {
|
|
|
161
131
|
message: (message) => s.message(message)
|
|
162
132
|
};
|
|
163
133
|
}
|
|
164
|
-
/**
|
|
165
|
-
* Log message
|
|
166
|
-
*/
|
|
167
134
|
log(message) {
|
|
168
135
|
clack.log.message(message);
|
|
169
136
|
}
|
|
170
|
-
/**
|
|
171
|
-
* Log warning
|
|
172
|
-
*/
|
|
173
137
|
warn(message) {
|
|
174
138
|
clack.log.warn(message);
|
|
175
139
|
}
|
|
176
|
-
/**
|
|
177
|
-
* Log error
|
|
178
|
-
*/
|
|
179
140
|
error(message) {
|
|
180
141
|
clack.log.error(message);
|
|
181
142
|
}
|
|
182
|
-
/**
|
|
183
|
-
* Log success
|
|
184
|
-
*/
|
|
185
143
|
success(message) {
|
|
186
144
|
clack.log.success(message);
|
|
187
145
|
}
|
|
@@ -198,7 +156,6 @@ function createPrompter() {
|
|
|
198
156
|
|
|
199
157
|
// src/cli/commands/onboard.ts
|
|
200
158
|
import { writeFileSync, readFileSync, existsSync, chmodSync } from "fs";
|
|
201
|
-
import { execSync } from "child_process";
|
|
202
159
|
import { join } from "path";
|
|
203
160
|
import YAML from "yaml";
|
|
204
161
|
async function onboardCommand(options = {}) {
|
|
@@ -286,14 +243,13 @@ ${blue2} \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25
|
|
|
286
243
|
options: [
|
|
287
244
|
{
|
|
288
245
|
value: "deals",
|
|
289
|
-
label: "Gifts
|
|
290
|
-
hint: "Gift/TON trading
|
|
246
|
+
label: "Gifts & Deals",
|
|
247
|
+
hint: "Gift/TON trading with escrow system"
|
|
291
248
|
}
|
|
292
249
|
],
|
|
293
250
|
required: false
|
|
294
251
|
});
|
|
295
252
|
const dealsEnabled = enabledModules.includes("deals");
|
|
296
|
-
const marketEnabled = dealsEnabled;
|
|
297
253
|
const providers = getSupportedProviders();
|
|
298
254
|
const selectedProvider = await prompter.select({
|
|
299
255
|
message: "AI Provider",
|
|
@@ -308,7 +264,7 @@ ${blue2} \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u25
|
|
|
308
264
|
if (providerMeta.toolLimit !== null) {
|
|
309
265
|
prompter.note(
|
|
310
266
|
`${providerMeta.displayName} supports max ${providerMeta.toolLimit} tools.
|
|
311
|
-
|
|
267
|
+
Teleton currently has ~116 tools. If more tools are added,
|
|
312
268
|
some may be truncated.`,
|
|
313
269
|
"Tool Limit"
|
|
314
270
|
);
|
|
@@ -599,7 +555,7 @@ Get it at: ${providerMeta.consoleUrl}`,
|
|
|
599
555
|
api_id: apiId,
|
|
600
556
|
api_hash: apiHash,
|
|
601
557
|
phone,
|
|
602
|
-
session_name: "
|
|
558
|
+
session_name: "teleton_session",
|
|
603
559
|
session_path: workspace.sessionPath,
|
|
604
560
|
dm_policy: dmPolicy,
|
|
605
561
|
allow_from: [],
|
|
@@ -628,7 +584,14 @@ Get it at: ${providerMeta.consoleUrl}`,
|
|
|
628
584
|
buy_max_floor_percent: buyMaxFloorPercent,
|
|
629
585
|
sell_min_floor_percent: sellMinFloorPercent
|
|
630
586
|
}),
|
|
631
|
-
|
|
587
|
+
webui: {
|
|
588
|
+
enabled: false,
|
|
589
|
+
port: 7777,
|
|
590
|
+
host: "127.0.0.1",
|
|
591
|
+
cors_origins: ["http://localhost:5173", "http://localhost:7777"],
|
|
592
|
+
log_requests: false
|
|
593
|
+
},
|
|
594
|
+
dev: { hot_reload: false },
|
|
632
595
|
plugins: {},
|
|
633
596
|
tonapi_key: tonapiKey
|
|
634
597
|
};
|
|
@@ -676,20 +639,6 @@ Get it at: ${providerMeta.consoleUrl}`,
|
|
|
676
639
|
saveWallet(wallet);
|
|
677
640
|
spinner2.stop("\u2713 TON wallet generated");
|
|
678
641
|
}
|
|
679
|
-
if (marketEnabled) {
|
|
680
|
-
spinner2.start("Installing browser for market data...");
|
|
681
|
-
try {
|
|
682
|
-
execSync("npx playwright install chromium", {
|
|
683
|
-
stdio: "pipe",
|
|
684
|
-
timeout: ONBOARDING_PROMPT_TIMEOUT_MS
|
|
685
|
-
});
|
|
686
|
-
spinner2.stop("\u2713 Browser installed");
|
|
687
|
-
} catch {
|
|
688
|
-
spinner2.stop(
|
|
689
|
-
"\u26A0 Browser install failed (can be done later with: npx playwright install chromium)"
|
|
690
|
-
);
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
642
|
if (!existingWallet || wallet !== existingWallet) {
|
|
694
643
|
prompter.note(
|
|
695
644
|
"BACKUP REQUIRED - WRITE DOWN THESE 24 WORDS:\n\n" + wallet.mnemonic.join(" ") + "\n\nThese words allow you to recover your wallet.\nWithout them, you will lose access to your TON.\nWrite them on paper and keep them safe.",
|
|
@@ -787,7 +736,7 @@ async function runNonInteractiveOnboarding(options, prompter) {
|
|
|
787
736
|
api_id: options.apiId,
|
|
788
737
|
api_hash: options.apiHash,
|
|
789
738
|
phone: options.phone,
|
|
790
|
-
session_name: "
|
|
739
|
+
session_name: "teleton_session",
|
|
791
740
|
session_path: workspace.sessionPath,
|
|
792
741
|
dm_policy: "open",
|
|
793
742
|
allow_from: [],
|
|
@@ -812,7 +761,14 @@ async function runNonInteractiveOnboarding(options, prompter) {
|
|
|
812
761
|
history_limit: 100
|
|
813
762
|
},
|
|
814
763
|
deals: DealsConfigSchema.parse({}),
|
|
815
|
-
|
|
764
|
+
webui: {
|
|
765
|
+
enabled: false,
|
|
766
|
+
port: 7777,
|
|
767
|
+
host: "127.0.0.1",
|
|
768
|
+
cors_origins: ["http://localhost:5173", "http://localhost:7777"],
|
|
769
|
+
log_requests: false
|
|
770
|
+
},
|
|
771
|
+
dev: { hot_reload: false },
|
|
816
772
|
plugins: {}
|
|
817
773
|
};
|
|
818
774
|
const configYaml = YAML.stringify(config);
|
|
@@ -824,7 +780,6 @@ async function runNonInteractiveOnboarding(options, prompter) {
|
|
|
824
780
|
// src/cli/commands/doctor.ts
|
|
825
781
|
import { existsSync as existsSync2, readFileSync as readFileSync2, statSync } from "fs";
|
|
826
782
|
import { join as join2 } from "path";
|
|
827
|
-
import { homedir } from "os";
|
|
828
783
|
import { parse } from "yaml";
|
|
829
784
|
var green = "\x1B[32m";
|
|
830
785
|
var yellow = "\x1B[33m";
|
|
@@ -1077,61 +1032,6 @@ async function checkTelegramSession(workspaceDir) {
|
|
|
1077
1032
|
};
|
|
1078
1033
|
}
|
|
1079
1034
|
}
|
|
1080
|
-
async function checkMarketData(workspaceDir) {
|
|
1081
|
-
const dbPath = join2(workspaceDir, "gifts.db");
|
|
1082
|
-
if (!existsSync2(dbPath)) {
|
|
1083
|
-
return {
|
|
1084
|
-
name: "Gift market data",
|
|
1085
|
-
status: "warn",
|
|
1086
|
-
message: "Not found (will fetch on first start)"
|
|
1087
|
-
};
|
|
1088
|
-
}
|
|
1089
|
-
try {
|
|
1090
|
-
const Database = (await import("better-sqlite3")).default;
|
|
1091
|
-
const db = new Database(dbPath, { readonly: true });
|
|
1092
|
-
const collections = db.prepare("SELECT COUNT(*) as count FROM gift_collections").get();
|
|
1093
|
-
const models = db.prepare("SELECT COUNT(*) as count FROM gift_models").get();
|
|
1094
|
-
const lastUpdate = db.prepare("SELECT MAX(updated_at) as last FROM gift_collections").get();
|
|
1095
|
-
db.close();
|
|
1096
|
-
if (!lastUpdate.last) {
|
|
1097
|
-
return {
|
|
1098
|
-
name: "Gift market data",
|
|
1099
|
-
status: "warn",
|
|
1100
|
-
message: "Database empty (no data yet)"
|
|
1101
|
-
};
|
|
1102
|
-
}
|
|
1103
|
-
const lastUpdateTime = (/* @__PURE__ */ new Date(lastUpdate.last + "Z")).getTime();
|
|
1104
|
-
const age = Date.now() - lastUpdateTime;
|
|
1105
|
-
const hoursAgo = Math.floor(age / (1e3 * 60 * 60));
|
|
1106
|
-
const daysAgo = Math.floor(hoursAgo / 24);
|
|
1107
|
-
const dataInfo = `${collections.count} collections, ${models.count} models`;
|
|
1108
|
-
if (daysAgo > 7) {
|
|
1109
|
-
return {
|
|
1110
|
-
name: "Gift market data",
|
|
1111
|
-
status: "warn",
|
|
1112
|
-
message: `Stale (${daysAgo} days old) - ${dataInfo}`
|
|
1113
|
-
};
|
|
1114
|
-
}
|
|
1115
|
-
if (hoursAgo > 24) {
|
|
1116
|
-
return {
|
|
1117
|
-
name: "Gift market data",
|
|
1118
|
-
status: "ok",
|
|
1119
|
-
message: `${daysAgo} day${daysAgo > 1 ? "s" : ""} old - ${dataInfo}`
|
|
1120
|
-
};
|
|
1121
|
-
}
|
|
1122
|
-
return {
|
|
1123
|
-
name: "Gift market data",
|
|
1124
|
-
status: "ok",
|
|
1125
|
-
message: hoursAgo === 0 ? `Fresh (< 1h) - ${dataInfo}` : `${hoursAgo}h old - ${dataInfo}`
|
|
1126
|
-
};
|
|
1127
|
-
} catch (err) {
|
|
1128
|
-
return {
|
|
1129
|
-
name: "Gift market data",
|
|
1130
|
-
status: "error",
|
|
1131
|
-
message: `Database error: ${err instanceof Error ? err.message : String(err)}`
|
|
1132
|
-
};
|
|
1133
|
-
}
|
|
1134
|
-
}
|
|
1135
1035
|
async function checkModel(workspaceDir) {
|
|
1136
1036
|
const configPath = join2(workspaceDir, "config.yaml");
|
|
1137
1037
|
if (!existsSync2(configPath)) {
|
|
@@ -1215,43 +1115,6 @@ async function checkNodeVersion() {
|
|
|
1215
1115
|
message: version
|
|
1216
1116
|
};
|
|
1217
1117
|
}
|
|
1218
|
-
async function checkPlaywrightBrowser() {
|
|
1219
|
-
const homeDir = homedir();
|
|
1220
|
-
const browserPaths = [
|
|
1221
|
-
join2(homeDir, ".cache", "ms-playwright", "chromium-*"),
|
|
1222
|
-
join2(homeDir, ".cache", "ms-playwright"),
|
|
1223
|
-
join2(homeDir, "Library", "Caches", "ms-playwright"),
|
|
1224
|
-
join2(homeDir, "AppData", "Local", "ms-playwright")
|
|
1225
|
-
];
|
|
1226
|
-
for (const basePath of browserPaths) {
|
|
1227
|
-
const checkPath = basePath.replace("/chromium-*", "");
|
|
1228
|
-
if (existsSync2(checkPath)) {
|
|
1229
|
-
try {
|
|
1230
|
-
const { readdirSync } = await import("fs");
|
|
1231
|
-
const contents = readdirSync(checkPath);
|
|
1232
|
-
const hasChromium = contents.some((f) => f.startsWith("chromium"));
|
|
1233
|
-
if (hasChromium) {
|
|
1234
|
-
return {
|
|
1235
|
-
name: "Playwright browser",
|
|
1236
|
-
status: "ok",
|
|
1237
|
-
message: "Chromium installed"
|
|
1238
|
-
};
|
|
1239
|
-
}
|
|
1240
|
-
} catch {
|
|
1241
|
-
return {
|
|
1242
|
-
name: "Playwright browser",
|
|
1243
|
-
status: "ok",
|
|
1244
|
-
message: "Cache found"
|
|
1245
|
-
};
|
|
1246
|
-
}
|
|
1247
|
-
}
|
|
1248
|
-
}
|
|
1249
|
-
return {
|
|
1250
|
-
name: "Playwright browser",
|
|
1251
|
-
status: "warn",
|
|
1252
|
-
message: "Not found (run: npx playwright install chromium)"
|
|
1253
|
-
};
|
|
1254
|
-
}
|
|
1255
1118
|
async function doctorCommand() {
|
|
1256
1119
|
const workspaceDir = TELETON_ROOT;
|
|
1257
1120
|
console.log(`
|
|
@@ -1264,7 +1127,6 @@ ${blue} \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u250
|
|
|
1264
1127
|
const results = [];
|
|
1265
1128
|
console.log(" Running checks...\n");
|
|
1266
1129
|
results.push(await checkNodeVersion());
|
|
1267
|
-
results.push(await checkPlaywrightBrowser());
|
|
1268
1130
|
results.push(await checkConfig(workspaceDir));
|
|
1269
1131
|
results.push(await checkTelegramCredentials(workspaceDir));
|
|
1270
1132
|
results.push(await checkApiKey(workspaceDir));
|
|
@@ -1272,7 +1134,6 @@ ${blue} \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u250
|
|
|
1272
1134
|
results.push(await checkWallet(workspaceDir));
|
|
1273
1135
|
results.push(await checkSoul(workspaceDir));
|
|
1274
1136
|
results.push(await checkDatabase(workspaceDir));
|
|
1275
|
-
results.push(await checkMarketData(workspaceDir));
|
|
1276
1137
|
results.push(await checkModel(workspaceDir));
|
|
1277
1138
|
results.push(await checkAdmins(workspaceDir));
|
|
1278
1139
|
for (const result of results) {
|
|
@@ -1314,7 +1175,7 @@ function findPackageJson() {
|
|
|
1314
1175
|
var packageJson = findPackageJson();
|
|
1315
1176
|
var program = new Command();
|
|
1316
1177
|
program.name("teleton").description("Teleton Agent - Personal AI Agent for Telegram").version(packageJson.version);
|
|
1317
|
-
program.command("setup").description("Interactive wizard to set up Teleton").option("--workspace <dir>", "Workspace directory
|
|
1178
|
+
program.command("setup").description("Interactive wizard to set up Teleton").option("--workspace <dir>", "Workspace directory").option("--non-interactive", "Non-interactive mode").option("--api-id <id>", "Telegram API ID").option("--api-hash <hash>", "Telegram API Hash").option("--phone <number>", "Phone number").option("--api-key <key>", "Anthropic API key").option("--user-id <id>", "Telegram User ID").action(async (options) => {
|
|
1318
1179
|
try {
|
|
1319
1180
|
await onboardCommand({
|
|
1320
1181
|
workspace: options.workspace,
|
|
@@ -1330,7 +1191,7 @@ program.command("setup").description("Interactive wizard to set up Teleton").opt
|
|
|
1330
1191
|
process.exit(1);
|
|
1331
1192
|
}
|
|
1332
1193
|
});
|
|
1333
|
-
program.command("start").description("Start the Teleton agent").option("-c, --config <path>", "Config file path", getDefaultConfigPath()).action(async (options) => {
|
|
1194
|
+
program.command("start").description("Start the Teleton agent").option("-c, --config <path>", "Config file path", getDefaultConfigPath()).option("--webui", "Enable WebUI server (overrides config)").option("--webui-port <port>", "WebUI server port (default: 7777)").action(async (options) => {
|
|
1334
1195
|
try {
|
|
1335
1196
|
if (!configExists(options.config)) {
|
|
1336
1197
|
console.error("\u274C Configuration not found");
|
|
@@ -1338,6 +1199,12 @@ program.command("start").description("Start the Teleton agent").option("-c, --co
|
|
|
1338
1199
|
console.error("\n\u{1F4A1} Run first: teleton setup");
|
|
1339
1200
|
process.exit(1);
|
|
1340
1201
|
}
|
|
1202
|
+
if (options.webui) {
|
|
1203
|
+
process.env.TELETON_WEBUI_ENABLED = "true";
|
|
1204
|
+
}
|
|
1205
|
+
if (options.webuiPort) {
|
|
1206
|
+
process.env.TELETON_WEBUI_PORT = options.webuiPort;
|
|
1207
|
+
}
|
|
1341
1208
|
await main(options.config);
|
|
1342
1209
|
} catch (error) {
|
|
1343
1210
|
console.error("Error:", error instanceof Error ? error.message : String(error));
|
package/dist/index.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
TeletonApp,
|
|
3
3
|
main
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-RRB6BWU7.js";
|
|
5
|
+
import "./chunk-WL2Q3VRD.js";
|
|
5
6
|
import "./chunk-EHEV7FJ7.js";
|
|
6
7
|
import "./chunk-U7FQYCBQ.js";
|
|
7
|
-
import "./chunk-
|
|
8
|
-
import "./chunk-
|
|
9
|
-
import "./chunk-
|
|
10
|
-
import "./chunk-
|
|
11
|
-
import "./chunk-
|
|
12
|
-
import "./chunk-OA5L7GM6.js";
|
|
8
|
+
import "./chunk-5WWR4CU3.js";
|
|
9
|
+
import "./chunk-YBA6IBGT.js";
|
|
10
|
+
import "./chunk-BYTHCDZA.js";
|
|
11
|
+
import "./chunk-4DU3C27M.js";
|
|
12
|
+
import "./chunk-O4R7V5Y2.js";
|
|
13
13
|
import "./chunk-EYWNOHMJ.js";
|
|
14
|
-
import "./chunk-
|
|
15
|
-
import "./chunk-
|
|
16
|
-
import "./chunk-
|
|
14
|
+
import "./chunk-NUGDTPE4.js";
|
|
15
|
+
import "./chunk-QUAPFI2N.js";
|
|
16
|
+
import "./chunk-TSKJCWQQ.js";
|
|
17
17
|
import "./chunk-QGM4M3NI.js";
|
|
18
18
|
export {
|
|
19
|
-
|
|
19
|
+
TeletonApp,
|
|
20
20
|
main
|
|
21
21
|
};
|
|
@@ -24,15 +24,14 @@ import {
|
|
|
24
24
|
runMigrations,
|
|
25
25
|
serializeEmbedding,
|
|
26
26
|
setSchemaVersion
|
|
27
|
-
} from "./chunk-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-OA5L7GM6.js";
|
|
27
|
+
} from "./chunk-BYTHCDZA.js";
|
|
28
|
+
import "./chunk-4DU3C27M.js";
|
|
29
|
+
import "./chunk-O4R7V5Y2.js";
|
|
31
30
|
import "./chunk-EYWNOHMJ.js";
|
|
32
31
|
import {
|
|
33
32
|
TaskStore,
|
|
34
33
|
getTaskStore
|
|
35
|
-
} from "./chunk-
|
|
34
|
+
} from "./chunk-NUGDTPE4.js";
|
|
36
35
|
import "./chunk-QGM4M3NI.js";
|
|
37
36
|
export {
|
|
38
37
|
AnthropicEmbeddingProvider,
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import {
|
|
2
2
|
getDatabase
|
|
3
|
-
} from "./chunk-
|
|
4
|
-
import "./chunk-
|
|
5
|
-
import "./chunk-
|
|
6
|
-
import "./chunk-OA5L7GM6.js";
|
|
3
|
+
} from "./chunk-BYTHCDZA.js";
|
|
4
|
+
import "./chunk-4DU3C27M.js";
|
|
5
|
+
import "./chunk-O4R7V5Y2.js";
|
|
7
6
|
import {
|
|
8
7
|
TELETON_ROOT
|
|
9
8
|
} from "./chunk-EYWNOHMJ.js";
|
|
10
|
-
import "./chunk-
|
|
9
|
+
import "./chunk-NUGDTPE4.js";
|
|
11
10
|
import "./chunk-QGM4M3NI.js";
|
|
12
11
|
|
|
13
12
|
// src/session/migrate.ts
|