teleton 0.1.0 → 0.1.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 +7 -7
- package/dist/chunk-5BEHAIBQ.js +38 -0
- package/dist/chunk-EBFMA7CL.js +40 -0
- package/dist/chunk-I6ZVPVLK.js +20 -0
- package/dist/{chunk-WDUHRPGA.js → chunk-MPU2XS5H.js} +121 -6
- package/dist/{chunk-WXVHT6CI.js → chunk-UQUYPDZJ.js} +944 -652
- package/dist/cli/index.js +334 -86
- package/dist/index.js +5 -2
- package/dist/{memory-O5NYYWF3.js → memory-WSP5MEER.js} +4 -1
- package/dist/{migrate-25RH22HJ.js → migrate-JPXMIIPI.js} +4 -1
- package/dist/{scraper-DW5Z2AP5.js → scraper-PGYSNQRD.js} +36 -17
- package/dist/{task-dependency-resolver-5I62EU67.js → task-dependency-resolver-KRQRZKAD.js} +7 -2
- package/dist/{task-executor-ZMXWLMI7.js → task-executor-L6DTJANH.js} +14 -6
- package/package.json +17 -7
- package/src/templates/SECURITY.md +31 -0
package/README.md
CHANGED
|
@@ -82,7 +82,7 @@ Teleton is a production-grade autonomous AI agent that operates as a real Telegr
|
|
|
82
82
|
|
|
83
83
|
**One-liner (recommended):**
|
|
84
84
|
```bash
|
|
85
|
-
curl -fsSL https://raw.githubusercontent.com/TONresistor/teleton-agent
|
|
85
|
+
curl -fsSL https://raw.githubusercontent.com/TONresistor/teleton-agent/main/install.sh | bash
|
|
86
86
|
```
|
|
87
87
|
|
|
88
88
|
**npm:**
|
|
@@ -92,13 +92,13 @@ npm install -g teleton
|
|
|
92
92
|
|
|
93
93
|
**Docker:**
|
|
94
94
|
```bash
|
|
95
|
-
docker run -it -v ~/.teleton:/data ghcr.io/tonresistor/teleton
|
|
95
|
+
docker run -it -v ~/.teleton:/data ghcr.io/tonresistor/teleton:latest setup
|
|
96
96
|
```
|
|
97
97
|
|
|
98
98
|
**From source (development):**
|
|
99
99
|
```bash
|
|
100
|
-
git clone https://github.com/TONresistor/teleton-agent
|
|
101
|
-
cd teleton
|
|
100
|
+
git clone https://github.com/TONresistor/teleton-agent.git
|
|
101
|
+
cd teleton
|
|
102
102
|
npm install && npm run build
|
|
103
103
|
```
|
|
104
104
|
|
|
@@ -308,8 +308,8 @@ Do not open public issues for security vulnerabilities. Contact maintainers (t.m
|
|
|
308
308
|
### Setup
|
|
309
309
|
|
|
310
310
|
```bash
|
|
311
|
-
git clone https://github.com/TONresistor/teleton-agent
|
|
312
|
-
cd teleton
|
|
311
|
+
git clone https://github.com/TONresistor/teleton-agent.git
|
|
312
|
+
cd teleton
|
|
313
313
|
npm install
|
|
314
314
|
npm run setup
|
|
315
315
|
npm run dev # Watch mode with auto-restart
|
|
@@ -390,6 +390,6 @@ MIT License - See [LICENSE](LICENSE) for details.
|
|
|
390
390
|
|
|
391
391
|
## Support
|
|
392
392
|
|
|
393
|
-
- **Issues**: [GitHub Issues](https://github.com/TONresistor/teleton-agent
|
|
393
|
+
- **Issues**: [GitHub Issues](https://github.com/TONresistor/teleton-agent/issues)
|
|
394
394
|
- **Channel**: [@ResistanceTools](https://t.me/ResistanceTools)
|
|
395
395
|
- **Contact**: [@zkproof](https://t.me/zkproof)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// src/constants/limits.ts
|
|
2
|
+
var MAX_TOOL_RESULT_SIZE = 5e4;
|
|
3
|
+
var DEFAULT_GIFTS_QUERY_LIMIT = 50;
|
|
4
|
+
var MAX_POLL_QUESTION_LENGTH = 300;
|
|
5
|
+
var DEAL_VERIFICATION_WINDOW_SECONDS = 300;
|
|
6
|
+
var TELEGRAM_MAX_MESSAGE_LENGTH = 4096;
|
|
7
|
+
var MAX_JSON_FIELD_CHARS = 8e3;
|
|
8
|
+
var MAX_TOTAL_PROMPT_CHARS = 32e3;
|
|
9
|
+
var VOYAGE_BATCH_SIZE = 128;
|
|
10
|
+
var SQLITE_CACHE_SIZE_KB = 64e3;
|
|
11
|
+
var SQLITE_MMAP_SIZE = 3e10;
|
|
12
|
+
var SECONDS_PER_DAY = 86400;
|
|
13
|
+
var SECONDS_PER_HOUR = 3600;
|
|
14
|
+
var COMPACTION_MAX_MESSAGES = 200;
|
|
15
|
+
var COMPACTION_KEEP_RECENT = 20;
|
|
16
|
+
var COMPACTION_MAX_TOKENS_RATIO = 0.75;
|
|
17
|
+
var COMPACTION_SOFT_THRESHOLD_RATIO = 0.5;
|
|
18
|
+
var SCRAPER_PARALLEL_WORKERS = 4;
|
|
19
|
+
|
|
20
|
+
export {
|
|
21
|
+
MAX_TOOL_RESULT_SIZE,
|
|
22
|
+
DEFAULT_GIFTS_QUERY_LIMIT,
|
|
23
|
+
MAX_POLL_QUESTION_LENGTH,
|
|
24
|
+
DEAL_VERIFICATION_WINDOW_SECONDS,
|
|
25
|
+
TELEGRAM_MAX_MESSAGE_LENGTH,
|
|
26
|
+
MAX_JSON_FIELD_CHARS,
|
|
27
|
+
MAX_TOTAL_PROMPT_CHARS,
|
|
28
|
+
VOYAGE_BATCH_SIZE,
|
|
29
|
+
SQLITE_CACHE_SIZE_KB,
|
|
30
|
+
SQLITE_MMAP_SIZE,
|
|
31
|
+
SECONDS_PER_DAY,
|
|
32
|
+
SECONDS_PER_HOUR,
|
|
33
|
+
COMPACTION_MAX_MESSAGES,
|
|
34
|
+
COMPACTION_KEEP_RECENT,
|
|
35
|
+
COMPACTION_MAX_TOKENS_RATIO,
|
|
36
|
+
COMPACTION_SOFT_THRESHOLD_RATIO,
|
|
37
|
+
SCRAPER_PARALLEL_WORKERS
|
|
38
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
// src/constants/timeouts.ts
|
|
2
|
+
var TTS_TIMEOUT_MS = 3e4;
|
|
3
|
+
var BROWSER_NAVIGATION_TIMEOUT_MS = 3e4;
|
|
4
|
+
var MESSAGE_HANDLER_LOCK_TIMEOUT_MS = 12e4;
|
|
5
|
+
var ONBOARDING_PROMPT_TIMEOUT_MS = 12e4;
|
|
6
|
+
var BATCH_TRIGGER_DELAY_MS = 500;
|
|
7
|
+
var DEFAULT_FETCH_TIMEOUT_MS = 15e3;
|
|
8
|
+
var SCRAPER_PAGE_LOAD_MS = 2500;
|
|
9
|
+
var SCRAPER_FILTER_CLICK_MS = 3e3;
|
|
10
|
+
var SCRAPER_MODEL_CLICK_MS = 2e3;
|
|
11
|
+
var SCRAPER_FILTER_OPEN_MS = 600;
|
|
12
|
+
var SCRAPER_MODEL_OPEN_MS = 800;
|
|
13
|
+
var SCRAPER_SCROLL_STEP_MS = 80;
|
|
14
|
+
var SCRAPER_PRE_SCROLL_MS = 4e3;
|
|
15
|
+
var SCRAPER_COLLECTION_SCROLL_MS = 200;
|
|
16
|
+
var SCRAPER_SCROLL_INCREMENT_PX = 250;
|
|
17
|
+
var SCRAPER_SCROLL_PADDING_PX = 500;
|
|
18
|
+
var SCRAPER_MAX_SCROLL_ITERATIONS = 15;
|
|
19
|
+
var SCRAPER_COLLECTION_NAV_MS = 6e4;
|
|
20
|
+
|
|
21
|
+
export {
|
|
22
|
+
TTS_TIMEOUT_MS,
|
|
23
|
+
BROWSER_NAVIGATION_TIMEOUT_MS,
|
|
24
|
+
MESSAGE_HANDLER_LOCK_TIMEOUT_MS,
|
|
25
|
+
ONBOARDING_PROMPT_TIMEOUT_MS,
|
|
26
|
+
BATCH_TRIGGER_DELAY_MS,
|
|
27
|
+
DEFAULT_FETCH_TIMEOUT_MS,
|
|
28
|
+
SCRAPER_PAGE_LOAD_MS,
|
|
29
|
+
SCRAPER_FILTER_CLICK_MS,
|
|
30
|
+
SCRAPER_MODEL_CLICK_MS,
|
|
31
|
+
SCRAPER_FILTER_OPEN_MS,
|
|
32
|
+
SCRAPER_MODEL_OPEN_MS,
|
|
33
|
+
SCRAPER_SCROLL_STEP_MS,
|
|
34
|
+
SCRAPER_PRE_SCROLL_MS,
|
|
35
|
+
SCRAPER_COLLECTION_SCROLL_MS,
|
|
36
|
+
SCRAPER_SCROLL_INCREMENT_PX,
|
|
37
|
+
SCRAPER_SCROLL_PADDING_PX,
|
|
38
|
+
SCRAPER_MAX_SCROLL_ITERATIONS,
|
|
39
|
+
SCRAPER_COLLECTION_NAV_MS
|
|
40
|
+
};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// src/constants/api-endpoints.ts
|
|
2
|
+
var TONAPI_BASE_URL = "https://tonapi.io/v2";
|
|
3
|
+
var STONFI_API_BASE_URL = "https://api.ston.fi/v1";
|
|
4
|
+
var GECKOTERMINAL_API_URL = "https://api.geckoterminal.com/api/v2";
|
|
5
|
+
var COINGECKO_API_URL = "https://api.coingecko.com/api/v3";
|
|
6
|
+
var MARKETAPP_BASE_URL = "https://marketapp.ws";
|
|
7
|
+
var OPENAI_TTS_URL = "https://api.openai.com/v1/audio/speech";
|
|
8
|
+
var ELEVENLABS_TTS_URL = "https://api.elevenlabs.io/v1/text-to-speech";
|
|
9
|
+
var VOYAGE_API_URL = "https://api.voyageai.com/v1";
|
|
10
|
+
|
|
11
|
+
export {
|
|
12
|
+
TONAPI_BASE_URL,
|
|
13
|
+
STONFI_API_BASE_URL,
|
|
14
|
+
GECKOTERMINAL_API_URL,
|
|
15
|
+
COINGECKO_API_URL,
|
|
16
|
+
MARKETAPP_BASE_URL,
|
|
17
|
+
OPENAI_TTS_URL,
|
|
18
|
+
ELEVENLABS_TTS_URL,
|
|
19
|
+
VOYAGE_API_URL
|
|
20
|
+
};
|
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
import {
|
|
2
|
+
VOYAGE_API_URL
|
|
3
|
+
} from "./chunk-I6ZVPVLK.js";
|
|
4
|
+
import {
|
|
5
|
+
SQLITE_CACHE_SIZE_KB,
|
|
6
|
+
SQLITE_MMAP_SIZE,
|
|
7
|
+
VOYAGE_BATCH_SIZE
|
|
8
|
+
} from "./chunk-5BEHAIBQ.js";
|
|
9
|
+
import {
|
|
10
|
+
DEFAULT_FETCH_TIMEOUT_MS
|
|
11
|
+
} from "./chunk-EBFMA7CL.js";
|
|
12
|
+
|
|
1
13
|
// src/memory/database.ts
|
|
2
14
|
import Database from "better-sqlite3";
|
|
3
15
|
import { existsSync, mkdirSync } from "fs";
|
|
@@ -250,6 +262,48 @@ function ensureSchema(db) {
|
|
|
250
262
|
CREATE INDEX IF NOT EXISTS idx_embedding_cache_model ON embedding_cache(provider, model);
|
|
251
263
|
CREATE INDEX IF NOT EXISTS idx_embedding_cache_accessed ON embedding_cache(accessed_at);
|
|
252
264
|
|
|
265
|
+
-- =====================================================
|
|
266
|
+
-- CASINO
|
|
267
|
+
-- =====================================================
|
|
268
|
+
|
|
269
|
+
CREATE TABLE IF NOT EXISTS casino_users (
|
|
270
|
+
telegram_id TEXT PRIMARY KEY,
|
|
271
|
+
wallet_address TEXT,
|
|
272
|
+
total_bets INTEGER NOT NULL DEFAULT 0,
|
|
273
|
+
total_wagered REAL NOT NULL DEFAULT 0,
|
|
274
|
+
total_wins INTEGER NOT NULL DEFAULT 0,
|
|
275
|
+
total_losses INTEGER NOT NULL DEFAULT 0,
|
|
276
|
+
total_won REAL NOT NULL DEFAULT 0,
|
|
277
|
+
last_bet_at INTEGER
|
|
278
|
+
);
|
|
279
|
+
|
|
280
|
+
CREATE TABLE IF NOT EXISTS used_transactions (
|
|
281
|
+
tx_hash TEXT PRIMARY KEY,
|
|
282
|
+
user_id TEXT NOT NULL,
|
|
283
|
+
amount REAL NOT NULL,
|
|
284
|
+
game_type TEXT NOT NULL,
|
|
285
|
+
used_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
286
|
+
);
|
|
287
|
+
|
|
288
|
+
CREATE INDEX IF NOT EXISTS idx_used_tx_user ON used_transactions(user_id);
|
|
289
|
+
CREATE INDEX IF NOT EXISTS idx_used_tx_used_at ON used_transactions(used_at);
|
|
290
|
+
|
|
291
|
+
CREATE TABLE IF NOT EXISTS casino_cooldowns (
|
|
292
|
+
user_id TEXT PRIMARY KEY,
|
|
293
|
+
last_spin_at INTEGER NOT NULL
|
|
294
|
+
);
|
|
295
|
+
|
|
296
|
+
CREATE TABLE IF NOT EXISTS casino_jackpot (
|
|
297
|
+
id INTEGER PRIMARY KEY CHECK(id = 1),
|
|
298
|
+
amount REAL NOT NULL DEFAULT 0,
|
|
299
|
+
last_awarded_at INTEGER,
|
|
300
|
+
last_winner_id TEXT,
|
|
301
|
+
last_winner_amount REAL
|
|
302
|
+
);
|
|
303
|
+
|
|
304
|
+
-- Insert default jackpot row
|
|
305
|
+
INSERT OR IGNORE INTO casino_jackpot (id, amount) VALUES (1, 0);
|
|
306
|
+
|
|
253
307
|
-- =====================================================
|
|
254
308
|
-- JOURNAL (Trading & Business Operations)
|
|
255
309
|
-- =====================================================
|
|
@@ -321,7 +375,7 @@ function setSchemaVersion(db, version) {
|
|
|
321
375
|
`
|
|
322
376
|
).run(version);
|
|
323
377
|
}
|
|
324
|
-
var CURRENT_SCHEMA_VERSION = "1.
|
|
378
|
+
var CURRENT_SCHEMA_VERSION = "1.7.0";
|
|
325
379
|
function runMigrations(db) {
|
|
326
380
|
const currentVersion = getSchemaVersion(db);
|
|
327
381
|
if (!currentVersion || versionLessThan(currentVersion, "1.1.0")) {
|
|
@@ -577,6 +631,53 @@ function runMigrations(db) {
|
|
|
577
631
|
throw error;
|
|
578
632
|
}
|
|
579
633
|
}
|
|
634
|
+
if (!currentVersion || versionLessThan(currentVersion, "1.7.0")) {
|
|
635
|
+
try {
|
|
636
|
+
console.log("\u{1F504} Running migration 1.7.0: Add casino tables");
|
|
637
|
+
db.exec(`
|
|
638
|
+
CREATE TABLE IF NOT EXISTS casino_users (
|
|
639
|
+
telegram_id TEXT PRIMARY KEY,
|
|
640
|
+
wallet_address TEXT,
|
|
641
|
+
total_bets INTEGER NOT NULL DEFAULT 0,
|
|
642
|
+
total_wagered REAL NOT NULL DEFAULT 0,
|
|
643
|
+
total_wins INTEGER NOT NULL DEFAULT 0,
|
|
644
|
+
total_losses INTEGER NOT NULL DEFAULT 0,
|
|
645
|
+
total_won REAL NOT NULL DEFAULT 0,
|
|
646
|
+
last_bet_at INTEGER
|
|
647
|
+
);
|
|
648
|
+
|
|
649
|
+
CREATE TABLE IF NOT EXISTS used_transactions (
|
|
650
|
+
tx_hash TEXT PRIMARY KEY,
|
|
651
|
+
user_id TEXT NOT NULL,
|
|
652
|
+
amount REAL NOT NULL,
|
|
653
|
+
game_type TEXT NOT NULL,
|
|
654
|
+
used_at INTEGER NOT NULL DEFAULT (unixepoch())
|
|
655
|
+
);
|
|
656
|
+
|
|
657
|
+
CREATE INDEX IF NOT EXISTS idx_used_tx_user ON used_transactions(user_id);
|
|
658
|
+
CREATE INDEX IF NOT EXISTS idx_used_tx_used_at ON used_transactions(used_at);
|
|
659
|
+
|
|
660
|
+
CREATE TABLE IF NOT EXISTS casino_cooldowns (
|
|
661
|
+
user_id TEXT PRIMARY KEY,
|
|
662
|
+
last_spin_at INTEGER NOT NULL
|
|
663
|
+
);
|
|
664
|
+
|
|
665
|
+
CREATE TABLE IF NOT EXISTS casino_jackpot (
|
|
666
|
+
id INTEGER PRIMARY KEY CHECK(id = 1),
|
|
667
|
+
amount REAL NOT NULL DEFAULT 0,
|
|
668
|
+
last_awarded_at INTEGER,
|
|
669
|
+
last_winner_id TEXT,
|
|
670
|
+
last_winner_amount REAL
|
|
671
|
+
);
|
|
672
|
+
|
|
673
|
+
INSERT OR IGNORE INTO casino_jackpot (id, amount) VALUES (1, 0);
|
|
674
|
+
`);
|
|
675
|
+
console.log("\u2705 Migration 1.7.0 complete: Casino tables added");
|
|
676
|
+
} catch (error) {
|
|
677
|
+
console.error("\u274C Migration 1.7.0 failed:", error);
|
|
678
|
+
throw error;
|
|
679
|
+
}
|
|
680
|
+
}
|
|
580
681
|
setSchemaVersion(db, CURRENT_SCHEMA_VERSION);
|
|
581
682
|
}
|
|
582
683
|
|
|
@@ -596,9 +697,9 @@ var MemoryDatabase = class {
|
|
|
596
697
|
});
|
|
597
698
|
this.db.pragma("journal_mode = WAL");
|
|
598
699
|
this.db.pragma("synchronous = NORMAL");
|
|
599
|
-
this.db.pragma(
|
|
700
|
+
this.db.pragma(`cache_size = -${SQLITE_CACHE_SIZE_KB}`);
|
|
600
701
|
this.db.pragma("temp_store = MEMORY");
|
|
601
|
-
this.db.pragma(
|
|
702
|
+
this.db.pragma(`mmap_size = ${SQLITE_MMAP_SIZE}`);
|
|
602
703
|
this.db.pragma("foreign_keys = ON");
|
|
603
704
|
this.initialize();
|
|
604
705
|
}
|
|
@@ -781,13 +882,26 @@ var NoopEmbeddingProvider = class {
|
|
|
781
882
|
}
|
|
782
883
|
};
|
|
783
884
|
|
|
885
|
+
// src/utils/fetch.ts
|
|
886
|
+
var DEFAULT_TIMEOUT_MS = DEFAULT_FETCH_TIMEOUT_MS;
|
|
887
|
+
function fetchWithTimeout(url, init) {
|
|
888
|
+
const { timeoutMs = DEFAULT_TIMEOUT_MS, ...fetchInit } = init ?? {};
|
|
889
|
+
if (fetchInit.signal) {
|
|
890
|
+
return fetch(url, fetchInit);
|
|
891
|
+
}
|
|
892
|
+
return fetch(url, {
|
|
893
|
+
...fetchInit,
|
|
894
|
+
signal: AbortSignal.timeout(timeoutMs)
|
|
895
|
+
});
|
|
896
|
+
}
|
|
897
|
+
|
|
784
898
|
// src/memory/embeddings/anthropic.ts
|
|
785
899
|
var AnthropicEmbeddingProvider = class {
|
|
786
900
|
id = "anthropic";
|
|
787
901
|
model;
|
|
788
902
|
dimensions;
|
|
789
903
|
apiKey;
|
|
790
|
-
baseUrl =
|
|
904
|
+
baseUrl = VOYAGE_API_URL;
|
|
791
905
|
constructor(config) {
|
|
792
906
|
this.apiKey = config.apiKey;
|
|
793
907
|
this.model = config.model ?? "voyage-3-lite";
|
|
@@ -807,7 +921,7 @@ var AnthropicEmbeddingProvider = class {
|
|
|
807
921
|
}
|
|
808
922
|
async embedBatch(texts) {
|
|
809
923
|
if (texts.length === 0) return [];
|
|
810
|
-
const batchSize =
|
|
924
|
+
const batchSize = VOYAGE_BATCH_SIZE;
|
|
811
925
|
const results = [];
|
|
812
926
|
for (let i = 0; i < texts.length; i += batchSize) {
|
|
813
927
|
const batch = texts.slice(i, i + batchSize);
|
|
@@ -817,7 +931,7 @@ var AnthropicEmbeddingProvider = class {
|
|
|
817
931
|
return results;
|
|
818
932
|
}
|
|
819
933
|
async embed(texts) {
|
|
820
|
-
const response = await
|
|
934
|
+
const response = await fetchWithTimeout(`${this.baseUrl}/embeddings`, {
|
|
821
935
|
method: "POST",
|
|
822
936
|
headers: {
|
|
823
937
|
"Content-Type": "application/json",
|
|
@@ -1912,6 +2026,7 @@ export {
|
|
|
1912
2026
|
getDatabase,
|
|
1913
2027
|
closeDatabase,
|
|
1914
2028
|
NoopEmbeddingProvider,
|
|
2029
|
+
fetchWithTimeout,
|
|
1915
2030
|
AnthropicEmbeddingProvider,
|
|
1916
2031
|
LocalEmbeddingProvider,
|
|
1917
2032
|
createEmbeddingProvider,
|