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.
Files changed (33) hide show
  1. package/README.md +88 -13
  2. package/dist/BigInteger-DQ33LTTE.js +5 -0
  3. package/dist/chunk-4DU3C27M.js +30 -0
  4. package/dist/chunk-5WWR4CU3.js +124 -0
  5. package/dist/{chunk-7UPH62J2.js → chunk-BYTHCDZA.js} +261 -255
  6. package/dist/{chunk-E2NXSWOS.js → chunk-NUGDTPE4.js} +24 -64
  7. package/dist/{chunk-OA5L7GM6.js → chunk-O4R7V5Y2.js} +37 -5
  8. package/dist/chunk-QUAPFI2N.js +42 -0
  9. package/dist/{chunk-QU4ZOR35.js → chunk-RRB6BWU7.js} +3108 -3345
  10. package/dist/chunk-TSKJCWQQ.js +1263 -0
  11. package/dist/{chunk-B2PRMXOH.js → chunk-WL2Q3VRD.js} +0 -2
  12. package/dist/{chunk-OQGNS2FV.js → chunk-YBA6IBGT.js} +20 -5
  13. package/dist/cli/index.js +39 -172
  14. package/dist/{endpoint-FT2B2RZ2.js → endpoint-FLYNEZ2F.js} +1 -1
  15. package/dist/{get-my-gifts-AFKBG4YQ.js → get-my-gifts-KVULMBJ3.js} +1 -1
  16. package/dist/index.js +12 -12
  17. package/dist/{memory-SYTQ5P7P.js → memory-657W5AS6.js} +4 -5
  18. package/dist/{migrate-ITXMRRSZ.js → migrate-PMB2JVXH.js} +4 -5
  19. package/dist/server-BQY7CM2N.js +1120 -0
  20. package/dist/{task-dependency-resolver-GY6PEBIS.js → task-dependency-resolver-TRPILAHM.js} +2 -2
  21. package/dist/{task-executor-4QKTZZ3P.js → task-executor-N7XNVK5N.js} +1 -1
  22. package/dist/{tasks-M3QDPTGY.js → tasks-QSCWSMPS.js} +1 -1
  23. package/dist/{transcript-DF2Y6CFY.js → transcript-7V4UNID4.js} +1 -1
  24. package/dist/web/assets/index-CDMbujHf.css +1 -0
  25. package/dist/web/assets/index-DDX8oQ2z.js +67 -0
  26. package/dist/web/index.html +16 -0
  27. package/dist/web/logo_dark.png +0 -0
  28. package/package.json +23 -4
  29. package/dist/chunk-67QC5FBN.js +0 -60
  30. package/dist/chunk-A64NPEFL.js +0 -74
  31. package/dist/chunk-DUW5VBAZ.js +0 -133
  32. package/dist/chunk-QBGUCUOW.js +0 -16
  33. package/dist/scraper-SH7GS7TO.js +0 -282
@@ -4,9 +4,6 @@ var TaskStore = class {
4
4
  constructor(db) {
5
5
  this.db = db;
6
6
  }
7
- /**
8
- * Create a new task
9
- */
10
7
  createTask(task) {
11
8
  const id = randomUUID();
12
9
  const now = Math.floor(Date.now() / 1e3);
@@ -44,9 +41,6 @@ var TaskStore = class {
44
41
  scheduledMessageId: task.scheduledMessageId
45
42
  };
46
43
  }
47
- /**
48
- * Update a task
49
- */
50
44
  updateTask(taskId, updates) {
51
45
  const task = this.getTask(taskId);
52
46
  if (!task) return void 0;
@@ -92,9 +86,6 @@ var TaskStore = class {
92
86
  ).run(...updateValues);
93
87
  return this.getTask(taskId);
94
88
  }
95
- /**
96
- * Get a task by ID
97
- */
98
89
  getTask(id) {
99
90
  const row = this.db.prepare(`SELECT * FROM tasks WHERE id = ?`).get(id);
100
91
  if (!row) return void 0;
@@ -103,21 +94,18 @@ var TaskStore = class {
103
94
  description: row.description,
104
95
  status: row.status,
105
96
  priority: row.priority,
106
- createdBy: row.created_by,
97
+ createdBy: row.created_by ?? void 0,
107
98
  createdAt: new Date(row.created_at * 1e3),
108
99
  startedAt: row.started_at ? new Date(row.started_at * 1e3) : void 0,
109
100
  completedAt: row.completed_at ? new Date(row.completed_at * 1e3) : void 0,
110
- result: row.result,
111
- error: row.error,
101
+ result: row.result ?? void 0,
102
+ error: row.error ?? void 0,
112
103
  scheduledFor: row.scheduled_for ? new Date(row.scheduled_for * 1e3) : void 0,
113
- payload: row.payload,
114
- reason: row.reason,
115
- scheduledMessageId: row.scheduled_message_id
104
+ payload: row.payload ?? void 0,
105
+ reason: row.reason ?? void 0,
106
+ scheduledMessageId: row.scheduled_message_id ?? void 0
116
107
  };
117
108
  }
118
- /**
119
- * List tasks with optional filters
120
- */
121
109
  listTasks(filter) {
122
110
  let sql = `SELECT * FROM tasks WHERE 1=1`;
123
111
  const params = [];
@@ -136,21 +124,18 @@ var TaskStore = class {
136
124
  description: row.description,
137
125
  status: row.status,
138
126
  priority: row.priority,
139
- createdBy: row.created_by,
127
+ createdBy: row.created_by ?? void 0,
140
128
  createdAt: new Date(row.created_at * 1e3),
141
129
  startedAt: row.started_at ? new Date(row.started_at * 1e3) : void 0,
142
130
  completedAt: row.completed_at ? new Date(row.completed_at * 1e3) : void 0,
143
- result: row.result,
144
- error: row.error,
131
+ result: row.result ?? void 0,
132
+ error: row.error ?? void 0,
145
133
  scheduledFor: row.scheduled_for ? new Date(row.scheduled_for * 1e3) : void 0,
146
- payload: row.payload,
147
- reason: row.reason,
148
- scheduledMessageId: row.scheduled_message_id
134
+ payload: row.payload ?? void 0,
135
+ reason: row.reason ?? void 0,
136
+ scheduledMessageId: row.scheduled_message_id ?? void 0
149
137
  }));
150
138
  }
151
- /**
152
- * Get active (pending or in_progress) tasks
153
- */
154
139
  getActiveTasks() {
155
140
  const rows = this.db.prepare(
156
141
  `
@@ -164,52 +149,37 @@ var TaskStore = class {
164
149
  description: row.description,
165
150
  status: row.status,
166
151
  priority: row.priority,
167
- createdBy: row.created_by,
152
+ createdBy: row.created_by ?? void 0,
168
153
  createdAt: new Date(row.created_at * 1e3),
169
154
  startedAt: row.started_at ? new Date(row.started_at * 1e3) : void 0,
170
155
  completedAt: row.completed_at ? new Date(row.completed_at * 1e3) : void 0,
171
- result: row.result,
172
- error: row.error,
156
+ result: row.result ?? void 0,
157
+ error: row.error ?? void 0,
173
158
  scheduledFor: row.scheduled_for ? new Date(row.scheduled_for * 1e3) : void 0,
174
- payload: row.payload,
175
- reason: row.reason,
176
- scheduledMessageId: row.scheduled_message_id
159
+ payload: row.payload ?? void 0,
160
+ reason: row.reason ?? void 0,
161
+ scheduledMessageId: row.scheduled_message_id ?? void 0
177
162
  }));
178
163
  }
179
- /**
180
- * Delete a task
181
- */
182
164
  deleteTask(taskId) {
183
165
  const result = this.db.prepare(`DELETE FROM tasks WHERE id = ?`).run(taskId);
184
166
  return result.changes > 0;
185
167
  }
186
- /**
187
- * Mark task as done
188
- */
189
168
  completeTask(taskId, result) {
190
169
  return this.updateTask(taskId, { status: "done", result });
191
170
  }
192
- /**
193
- * Mark task as failed
194
- */
195
171
  failTask(taskId, error) {
196
172
  return this.updateTask(taskId, { status: "failed", error });
197
173
  }
198
- /**
199
- * Start a task
200
- */
201
174
  startTask(taskId) {
202
175
  return this.updateTask(taskId, { status: "in_progress" });
203
176
  }
204
- /**
205
- * Cancel a task
206
- */
207
177
  cancelTask(taskId) {
208
178
  return this.updateTask(taskId, { status: "cancelled" });
209
179
  }
210
180
  /**
211
- * Check if adding a dependency would create a cycle
212
- * Uses BFS to traverse dependency graph
181
+ * Check if adding a dependency would create a cycle.
182
+ * Uses BFS to traverse the dependency graph.
213
183
  */
214
184
  wouldCreateCycle(taskId, newParentId) {
215
185
  if (taskId === newParentId) {
@@ -231,10 +201,6 @@ var TaskStore = class {
231
201
  }
232
202
  return false;
233
203
  }
234
- /**
235
- * Add a dependency (taskId depends on parentTaskId)
236
- * Throws error if would create circular dependency
237
- */
238
204
  addDependency(taskId, parentTaskId) {
239
205
  if (this.wouldCreateCycle(taskId, parentTaskId)) {
240
206
  throw new Error(
@@ -245,23 +211,17 @@ var TaskStore = class {
245
211
  `INSERT OR IGNORE INTO task_dependencies (task_id, depends_on_task_id) VALUES (?, ?)`
246
212
  ).run(taskId, parentTaskId);
247
213
  }
248
- /**
249
- * Get all tasks that this task depends on
250
- */
251
214
  getDependencies(taskId) {
252
215
  const rows = this.db.prepare(`SELECT depends_on_task_id FROM task_dependencies WHERE task_id = ?`).all(taskId);
253
216
  return rows.map((r) => r.depends_on_task_id);
254
217
  }
255
- /**
256
- * Get all tasks that depend on this task
257
- */
258
218
  getDependents(taskId) {
259
219
  const rows = this.db.prepare(`SELECT task_id FROM task_dependencies WHERE depends_on_task_id = ?`).all(taskId);
260
220
  return rows.map((r) => r.task_id);
261
221
  }
262
222
  /**
263
- * Check if a task can execute (all dependencies are done)
264
- * Optimized: Single query with JOIN instead of N+1 queries
223
+ * Check if a task can execute (all dependencies are done).
224
+ * Uses a single JOIN query instead of N+1 queries.
265
225
  */
266
226
  canExecute(taskId) {
267
227
  const result = this.db.prepare(
@@ -276,8 +236,8 @@ var TaskStore = class {
276
236
  return result.pending_count === 0;
277
237
  }
278
238
  /**
279
- * Get all parent task results for a dependent task
280
- * Optimized: Single query with JOIN instead of N+1 queries
239
+ * Get all parent task results for a dependent task.
240
+ * Uses a single JOIN query instead of N+1 queries.
281
241
  */
282
242
  getParentResults(taskId) {
283
243
  const rows = this.db.prepare(
@@ -15,17 +15,16 @@ var COMPACTION_MAX_MESSAGES = 200;
15
15
  var COMPACTION_KEEP_RECENT = 20;
16
16
  var COMPACTION_MAX_TOKENS_RATIO = 0.75;
17
17
  var COMPACTION_SOFT_THRESHOLD_RATIO = 0.5;
18
- var SCRAPER_PARALLEL_WORKERS = 4;
19
18
  var PENDING_HISTORY_MAX_PER_CHAT = 50;
20
19
  var PENDING_HISTORY_MAX_AGE_MS = 24 * 60 * 60 * 1e3;
21
20
  var DEBOUNCE_MAX_MULTIPLIER = 3;
22
21
  var DEBOUNCE_MAX_BUFFER_SIZE = 20;
23
22
  var CONTEXT_MAX_RECENT_MESSAGES = 10;
24
23
  var CONTEXT_MAX_RELEVANT_CHUNKS = 5;
24
+ var HYBRID_SEARCH_MIN_SCORE = 0.15;
25
25
  var CONTEXT_OVERFLOW_SUMMARY_MESSAGES = 15;
26
26
  var RATE_LIMIT_MAX_RETRIES = 3;
27
27
  var KNOWLEDGE_CHUNK_SIZE = 500;
28
- var KNOWLEDGE_CHUNK_OVERLAP = 50;
29
28
  var PAYMENT_TOLERANCE_RATIO = 0.99;
30
29
  var TELEGRAM_CONNECTION_RETRIES = 5;
31
30
  var TELEGRAM_FLOOD_SLEEP_THRESHOLD = 60;
@@ -34,6 +33,23 @@ var EMBEDDING_CACHE_MAX_ENTRIES = 5e4;
34
33
  var EMBEDDING_CACHE_TTL_DAYS = 60;
35
34
  var EMBEDDING_CACHE_EVICTION_INTERVAL = 1e3;
36
35
  var MAX_WRITE_SIZE = 50 * 1024 * 1024;
36
+ var DEFAULT_MAX_TOKENS = 96e3;
37
+ var DEFAULT_SOFT_THRESHOLD_TOKENS = 64e3;
38
+ var FALLBACK_SOFT_THRESHOLD_TOKENS = 6e3;
39
+ var DEFAULT_CONTEXT_WINDOW = 15e4;
40
+ var DEFAULT_MAX_SUMMARY_TOKENS = 2e3;
41
+ var DEFAULT_SUMMARY_FALLBACK_TOKENS = 1e3;
42
+ var MEMORY_FLUSH_RECENT_MESSAGES = 5;
43
+ var CHARS_PER_TOKEN_ESTIMATE = 4;
44
+ var TOKEN_ESTIMATE_SAFETY_MARGIN = 1.2;
45
+ var OVERSIZED_MESSAGE_RATIO = 0.5;
46
+ var ADAPTIVE_CHUNK_RATIO_BASE = 0.4;
47
+ var ADAPTIVE_CHUNK_RATIO_MIN = 0.15;
48
+ var ADAPTIVE_CHUNK_RATIO_TRIGGER = 0.1;
49
+ var SESSION_SLUG_RECENT_MESSAGES = 10;
50
+ var SESSION_SLUG_MAX_TOKENS = 50;
51
+ var MASKING_KEEP_RECENT_COUNT = 10;
52
+ var EMBEDDING_CACHE_EVICTION_RATIO = 0.1;
37
53
 
38
54
  export {
39
55
  MAX_TOOL_RESULT_SIZE,
@@ -52,17 +68,16 @@ export {
52
68
  COMPACTION_KEEP_RECENT,
53
69
  COMPACTION_MAX_TOKENS_RATIO,
54
70
  COMPACTION_SOFT_THRESHOLD_RATIO,
55
- SCRAPER_PARALLEL_WORKERS,
56
71
  PENDING_HISTORY_MAX_PER_CHAT,
57
72
  PENDING_HISTORY_MAX_AGE_MS,
58
73
  DEBOUNCE_MAX_MULTIPLIER,
59
74
  DEBOUNCE_MAX_BUFFER_SIZE,
60
75
  CONTEXT_MAX_RECENT_MESSAGES,
61
76
  CONTEXT_MAX_RELEVANT_CHUNKS,
77
+ HYBRID_SEARCH_MIN_SCORE,
62
78
  CONTEXT_OVERFLOW_SUMMARY_MESSAGES,
63
79
  RATE_LIMIT_MAX_RETRIES,
64
80
  KNOWLEDGE_CHUNK_SIZE,
65
- KNOWLEDGE_CHUNK_OVERLAP,
66
81
  PAYMENT_TOLERANCE_RATIO,
67
82
  TELEGRAM_CONNECTION_RETRIES,
68
83
  TELEGRAM_FLOOD_SLEEP_THRESHOLD,
@@ -70,5 +85,22 @@ export {
70
85
  EMBEDDING_CACHE_MAX_ENTRIES,
71
86
  EMBEDDING_CACHE_TTL_DAYS,
72
87
  EMBEDDING_CACHE_EVICTION_INTERVAL,
73
- MAX_WRITE_SIZE
88
+ MAX_WRITE_SIZE,
89
+ DEFAULT_MAX_TOKENS,
90
+ DEFAULT_SOFT_THRESHOLD_TOKENS,
91
+ FALLBACK_SOFT_THRESHOLD_TOKENS,
92
+ DEFAULT_CONTEXT_WINDOW,
93
+ DEFAULT_MAX_SUMMARY_TOKENS,
94
+ DEFAULT_SUMMARY_FALLBACK_TOKENS,
95
+ MEMORY_FLUSH_RECENT_MESSAGES,
96
+ CHARS_PER_TOKEN_ESTIMATE,
97
+ TOKEN_ESTIMATE_SAFETY_MARGIN,
98
+ OVERSIZED_MESSAGE_RATIO,
99
+ ADAPTIVE_CHUNK_RATIO_BASE,
100
+ ADAPTIVE_CHUNK_RATIO_MIN,
101
+ ADAPTIVE_CHUNK_RATIO_TRIGGER,
102
+ SESSION_SLUG_RECENT_MESSAGES,
103
+ SESSION_SLUG_MAX_TOKENS,
104
+ MASKING_KEEP_RECENT_COUNT,
105
+ EMBEDDING_CACHE_EVICTION_RATIO
74
106
  };
@@ -0,0 +1,42 @@
1
+ // src/ton/endpoint.ts
2
+ var ENDPOINT_CACHE_TTL_MS = 6e4;
3
+ var ORBS_HOST = "ton.access.orbs.network";
4
+ var ORBS_TOPOLOGY_URL = `https://${ORBS_HOST}/mngr/nodes?npm_version=2.3.3`;
5
+ var TONCENTER_FALLBACK = `https://toncenter.com/api/v2/jsonRPC`;
6
+ var _cache = null;
7
+ async function discoverOrbsEndpoint() {
8
+ const res = await fetch(ORBS_TOPOLOGY_URL);
9
+ const nodes = await res.json();
10
+ const healthy = nodes.filter(
11
+ (n) => n.Healthy === "1" && n.Weight > 0 && n.Mngr?.health?.["v2-mainnet"]
12
+ );
13
+ if (healthy.length === 0) throw new Error("no healthy orbs nodes");
14
+ const totalWeight = healthy.reduce((sum, n) => sum + n.Weight, 0);
15
+ let r = Math.floor(Math.random() * totalWeight);
16
+ let chosen = healthy[0];
17
+ for (const node of healthy) {
18
+ r -= node.Weight;
19
+ if (r < 0) {
20
+ chosen = node;
21
+ break;
22
+ }
23
+ }
24
+ return `https://${ORBS_HOST}/${chosen.NodeId}/1/mainnet/toncenter-api-v2/jsonRPC`;
25
+ }
26
+ async function getCachedHttpEndpoint() {
27
+ if (_cache && Date.now() - _cache.ts < ENDPOINT_CACHE_TTL_MS) {
28
+ return _cache.url;
29
+ }
30
+ let url;
31
+ try {
32
+ url = await discoverOrbsEndpoint();
33
+ } catch {
34
+ url = TONCENTER_FALLBACK;
35
+ }
36
+ _cache = { url, ts: Date.now() };
37
+ return url;
38
+ }
39
+
40
+ export {
41
+ getCachedHttpEndpoint
42
+ };