teleton 0.4.0 → 0.5.2
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-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-TSKJCWQQ.js +1263 -0
- package/dist/{chunk-B2PRMXOH.js → chunk-WL2Q3VRD.js} +0 -2
- package/dist/{chunk-QU4ZOR35.js → chunk-WOXBZOQX.js} +3179 -3368
- package/dist/{chunk-7UPH62J2.js → chunk-WUTMT6DW.js} +293 -261
- package/dist/{chunk-OQGNS2FV.js → chunk-YBA6IBGT.js} +20 -5
- package/dist/cli/index.js +41 -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-Y5J7CXAR.js} +4 -5
- package/dist/{migrate-ITXMRRSZ.js → migrate-UEQCDWL2.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 -6
- 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
|
@@ -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-WOXBZOQX.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-WUTMT6DW.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: [],
|
|
@@ -623,12 +579,20 @@ Get it at: ${providerMeta.consoleUrl}`,
|
|
|
623
579
|
memory_file: `${workspace.root}/memory.json`,
|
|
624
580
|
history_limit: 100
|
|
625
581
|
},
|
|
582
|
+
embedding: { provider: "local" },
|
|
626
583
|
deals: DealsConfigSchema.parse({
|
|
627
584
|
enabled: dealsEnabled,
|
|
628
585
|
buy_max_floor_percent: buyMaxFloorPercent,
|
|
629
586
|
sell_min_floor_percent: sellMinFloorPercent
|
|
630
587
|
}),
|
|
631
|
-
|
|
588
|
+
webui: {
|
|
589
|
+
enabled: false,
|
|
590
|
+
port: 7777,
|
|
591
|
+
host: "127.0.0.1",
|
|
592
|
+
cors_origins: ["http://localhost:5173", "http://localhost:7777"],
|
|
593
|
+
log_requests: false
|
|
594
|
+
},
|
|
595
|
+
dev: { hot_reload: false },
|
|
632
596
|
plugins: {},
|
|
633
597
|
tonapi_key: tonapiKey
|
|
634
598
|
};
|
|
@@ -676,20 +640,6 @@ Get it at: ${providerMeta.consoleUrl}`,
|
|
|
676
640
|
saveWallet(wallet);
|
|
677
641
|
spinner2.stop("\u2713 TON wallet generated");
|
|
678
642
|
}
|
|
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
643
|
if (!existingWallet || wallet !== existingWallet) {
|
|
694
644
|
prompter.note(
|
|
695
645
|
"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 +737,7 @@ async function runNonInteractiveOnboarding(options, prompter) {
|
|
|
787
737
|
api_id: options.apiId,
|
|
788
738
|
api_hash: options.apiHash,
|
|
789
739
|
phone: options.phone,
|
|
790
|
-
session_name: "
|
|
740
|
+
session_name: "teleton_session",
|
|
791
741
|
session_path: workspace.sessionPath,
|
|
792
742
|
dm_policy: "open",
|
|
793
743
|
allow_from: [],
|
|
@@ -811,8 +761,16 @@ async function runNonInteractiveOnboarding(options, prompter) {
|
|
|
811
761
|
memory_file: `${workspace.root}/memory.json`,
|
|
812
762
|
history_limit: 100
|
|
813
763
|
},
|
|
764
|
+
embedding: { provider: "local" },
|
|
814
765
|
deals: DealsConfigSchema.parse({}),
|
|
815
|
-
|
|
766
|
+
webui: {
|
|
767
|
+
enabled: false,
|
|
768
|
+
port: 7777,
|
|
769
|
+
host: "127.0.0.1",
|
|
770
|
+
cors_origins: ["http://localhost:5173", "http://localhost:7777"],
|
|
771
|
+
log_requests: false
|
|
772
|
+
},
|
|
773
|
+
dev: { hot_reload: false },
|
|
816
774
|
plugins: {}
|
|
817
775
|
};
|
|
818
776
|
const configYaml = YAML.stringify(config);
|
|
@@ -824,7 +782,6 @@ async function runNonInteractiveOnboarding(options, prompter) {
|
|
|
824
782
|
// src/cli/commands/doctor.ts
|
|
825
783
|
import { existsSync as existsSync2, readFileSync as readFileSync2, statSync } from "fs";
|
|
826
784
|
import { join as join2 } from "path";
|
|
827
|
-
import { homedir } from "os";
|
|
828
785
|
import { parse } from "yaml";
|
|
829
786
|
var green = "\x1B[32m";
|
|
830
787
|
var yellow = "\x1B[33m";
|
|
@@ -1077,61 +1034,6 @@ async function checkTelegramSession(workspaceDir) {
|
|
|
1077
1034
|
};
|
|
1078
1035
|
}
|
|
1079
1036
|
}
|
|
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
1037
|
async function checkModel(workspaceDir) {
|
|
1136
1038
|
const configPath = join2(workspaceDir, "config.yaml");
|
|
1137
1039
|
if (!existsSync2(configPath)) {
|
|
@@ -1215,43 +1117,6 @@ async function checkNodeVersion() {
|
|
|
1215
1117
|
message: version
|
|
1216
1118
|
};
|
|
1217
1119
|
}
|
|
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
1120
|
async function doctorCommand() {
|
|
1256
1121
|
const workspaceDir = TELETON_ROOT;
|
|
1257
1122
|
console.log(`
|
|
@@ -1264,7 +1129,6 @@ ${blue} \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u250
|
|
|
1264
1129
|
const results = [];
|
|
1265
1130
|
console.log(" Running checks...\n");
|
|
1266
1131
|
results.push(await checkNodeVersion());
|
|
1267
|
-
results.push(await checkPlaywrightBrowser());
|
|
1268
1132
|
results.push(await checkConfig(workspaceDir));
|
|
1269
1133
|
results.push(await checkTelegramCredentials(workspaceDir));
|
|
1270
1134
|
results.push(await checkApiKey(workspaceDir));
|
|
@@ -1272,7 +1136,6 @@ ${blue} \u250C\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u250
|
|
|
1272
1136
|
results.push(await checkWallet(workspaceDir));
|
|
1273
1137
|
results.push(await checkSoul(workspaceDir));
|
|
1274
1138
|
results.push(await checkDatabase(workspaceDir));
|
|
1275
|
-
results.push(await checkMarketData(workspaceDir));
|
|
1276
1139
|
results.push(await checkModel(workspaceDir));
|
|
1277
1140
|
results.push(await checkAdmins(workspaceDir));
|
|
1278
1141
|
for (const result of results) {
|
|
@@ -1314,7 +1177,7 @@ function findPackageJson() {
|
|
|
1314
1177
|
var packageJson = findPackageJson();
|
|
1315
1178
|
var program = new Command();
|
|
1316
1179
|
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
|
|
1180
|
+
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
1181
|
try {
|
|
1319
1182
|
await onboardCommand({
|
|
1320
1183
|
workspace: options.workspace,
|
|
@@ -1330,7 +1193,7 @@ program.command("setup").description("Interactive wizard to set up Teleton").opt
|
|
|
1330
1193
|
process.exit(1);
|
|
1331
1194
|
}
|
|
1332
1195
|
});
|
|
1333
|
-
program.command("start").description("Start the Teleton agent").option("-c, --config <path>", "Config file path", getDefaultConfigPath()).action(async (options) => {
|
|
1196
|
+
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
1197
|
try {
|
|
1335
1198
|
if (!configExists(options.config)) {
|
|
1336
1199
|
console.error("\u274C Configuration not found");
|
|
@@ -1338,6 +1201,12 @@ program.command("start").description("Start the Teleton agent").option("-c, --co
|
|
|
1338
1201
|
console.error("\n\u{1F4A1} Run first: teleton setup");
|
|
1339
1202
|
process.exit(1);
|
|
1340
1203
|
}
|
|
1204
|
+
if (options.webui) {
|
|
1205
|
+
process.env.TELETON_WEBUI_ENABLED = "true";
|
|
1206
|
+
}
|
|
1207
|
+
if (options.webuiPort) {
|
|
1208
|
+
process.env.TELETON_WEBUI_PORT = options.webuiPort;
|
|
1209
|
+
}
|
|
1341
1210
|
await main(options.config);
|
|
1342
1211
|
} catch (error) {
|
|
1343
1212
|
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-WOXBZOQX.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-WUTMT6DW.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-WUTMT6DW.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-WUTMT6DW.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
|