teleton 0.8.0 → 0.8.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 +28 -11
- package/dist/{chunk-U56QTM46.js → chunk-3S4GGLLR.js} +28 -26
- package/dist/{chunk-NUGDTPE4.js → chunk-4L66JHQE.js} +2 -1
- package/dist/{chunk-H36RFKRI.js → chunk-5FNWBZ5K.js} +476 -143
- package/dist/{chunk-SD4NLLYG.js → chunk-7U7BOHCL.js} +80 -33
- package/dist/{chunk-QVBSUYVX.js → chunk-AYWEJCDB.js} +11 -3
- package/dist/{chunk-RQBAMUCV.js → chunk-CGOXE4WP.js} +1235 -201
- package/dist/{chunk-TVRZJIZX.js → chunk-KVXV7EF7.js} +3 -3
- package/dist/{chunk-WIKM24GZ.js → chunk-QBHRXLZS.js} +5 -0
- package/dist/{chunk-P36I6OIV.js → chunk-QV2GLOTK.js} +12 -1
- package/dist/{chunk-JHYZYFZJ.js → chunk-S6PHGKOC.js} +8 -1
- package/dist/{chunk-IJBWWQE4.js → chunk-UP55PXFH.js} +4 -0
- package/dist/cli/index.js +17 -16
- package/dist/{client-LNZTDQSA.js → client-MPHPIZB6.js} +2 -2
- package/dist/{get-my-gifts-OMGKOEPM.js → get-my-gifts-CC6HAVWB.js} +1 -1
- package/dist/index.js +11 -11
- package/dist/{memory-AS7WKGTW.js → memory-UBHM7ILG.js} +4 -4
- package/dist/{migrate-POHWYEIW.js → migrate-UBBEJ5BL.js} +4 -4
- package/dist/{server-H3QA252W.js → server-3FHI2SEB.js} +392 -51
- package/dist/{setup-server-QXED3D2L.js → setup-server-32XGDPE6.js} +157 -7
- package/dist/{store-GAFULOOX.js → store-M5IMUQCL.js} +5 -5
- package/dist/{task-dependency-resolver-3FIKQ7Z6.js → task-dependency-resolver-RR2O5S7B.js} +2 -2
- package/dist/{task-executor-RUTFG6VG.js → task-executor-6W5HRX5C.js} +2 -2
- package/dist/{tasks-BEZ4QRI2.js → tasks-WQIKXDX5.js} +1 -1
- package/dist/{tool-index-H3SHOJC3.js → tool-index-PMAOXWUA.js} +8 -5
- package/dist/{transcript-IMNE6KU3.js → transcript-NGDPSNIH.js} +1 -1
- package/dist/web/assets/index-BfYCdwLI.js +80 -0
- package/dist/web/assets/{index-BrVqauzj.css → index-DmlyQVhR.css} +1 -1
- package/dist/web/assets/{index.es-DkU1GvWU.js → index.es-DitvF-9H.js} +1 -1
- package/dist/web/index.html +2 -2
- package/package.json +11 -4
- package/dist/web/assets/index-DYeEkvJ6.js +0 -72
|
@@ -3,14 +3,14 @@ import {
|
|
|
3
3
|
createEmbeddingProvider,
|
|
4
4
|
hashText,
|
|
5
5
|
serializeEmbedding
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-3S4GGLLR.js";
|
|
7
7
|
import {
|
|
8
8
|
FEED_MESSAGE_MAX_CHARS,
|
|
9
9
|
HYBRID_SEARCH_MIN_SCORE,
|
|
10
10
|
KNOWLEDGE_CHUNK_SIZE,
|
|
11
11
|
SQLITE_CACHE_SIZE_KB,
|
|
12
12
|
SQLITE_MMAP_SIZE
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-UP55PXFH.js";
|
|
14
14
|
import {
|
|
15
15
|
TELETON_ROOT
|
|
16
16
|
} from "./chunk-EYWNOHMJ.js";
|
|
@@ -133,11 +133,7 @@ function migrateFromMainDb(moduleDb, tables) {
|
|
|
133
133
|
`INSERT OR IGNORE INTO ${table} (${cols}) SELECT ${cols} FROM main_db.${table}`
|
|
134
134
|
);
|
|
135
135
|
totalMigrated += src.c;
|
|
136
|
-
|
|
137
|
-
moduleDb.exec(`DROP TABLE main_db.${table}`);
|
|
138
|
-
} catch {
|
|
139
|
-
}
|
|
140
|
-
log.info(`Migrated ${src.c} rows from memory.db \u2192 ${table} (source dropped)`);
|
|
136
|
+
log.info(`Migrated ${src.c} rows from memory.db \u2192 ${table}`);
|
|
141
137
|
} catch (e) {
|
|
142
138
|
log.warn({ err: e }, `Could not migrate table ${table}`);
|
|
143
139
|
}
|
|
@@ -427,6 +423,26 @@ function ensureSchema(db) {
|
|
|
427
423
|
CREATE INDEX IF NOT EXISTS idx_exec_audit_timestamp ON exec_audit(timestamp DESC);
|
|
428
424
|
CREATE INDEX IF NOT EXISTS idx_exec_audit_user ON exec_audit(user_id);
|
|
429
425
|
|
|
426
|
+
-- =====================================================
|
|
427
|
+
-- PLUGIN CONFIG (Plugin Priority Order)
|
|
428
|
+
-- =====================================================
|
|
429
|
+
|
|
430
|
+
CREATE TABLE IF NOT EXISTS plugin_config (
|
|
431
|
+
plugin_name TEXT PRIMARY KEY,
|
|
432
|
+
priority INTEGER NOT NULL DEFAULT 0,
|
|
433
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
434
|
+
);
|
|
435
|
+
|
|
436
|
+
-- =====================================================
|
|
437
|
+
-- USER HOOK CONFIG (Keyword Blocklist + Context Triggers)
|
|
438
|
+
-- =====================================================
|
|
439
|
+
|
|
440
|
+
CREATE TABLE IF NOT EXISTS user_hook_config (
|
|
441
|
+
key TEXT PRIMARY KEY,
|
|
442
|
+
value TEXT NOT NULL,
|
|
443
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
444
|
+
);
|
|
445
|
+
|
|
430
446
|
-- =====================================================
|
|
431
447
|
-- JOURNAL (Trading & Business Operations)
|
|
432
448
|
-- =====================================================
|
|
@@ -469,7 +485,7 @@ function setSchemaVersion(db, version) {
|
|
|
469
485
|
`
|
|
470
486
|
).run(version);
|
|
471
487
|
}
|
|
472
|
-
var CURRENT_SCHEMA_VERSION = "1.
|
|
488
|
+
var CURRENT_SCHEMA_VERSION = "1.15.0";
|
|
473
489
|
function runMigrations(db) {
|
|
474
490
|
const currentVersion = getSchemaVersion(db);
|
|
475
491
|
if (!currentVersion || versionLessThan(currentVersion, "1.1.0")) {
|
|
@@ -523,7 +539,7 @@ function runMigrations(db) {
|
|
|
523
539
|
try {
|
|
524
540
|
db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${type}`);
|
|
525
541
|
} catch (e) {
|
|
526
|
-
if (!e.message.includes("duplicate column name")) {
|
|
542
|
+
if (!(e instanceof Error) || !e.message.includes("duplicate column name")) {
|
|
527
543
|
throw e;
|
|
528
544
|
}
|
|
529
545
|
}
|
|
@@ -692,7 +708,7 @@ function runMigrations(db) {
|
|
|
692
708
|
try {
|
|
693
709
|
db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${type}`);
|
|
694
710
|
} catch (e) {
|
|
695
|
-
if (!e.message.includes("duplicate column name")) {
|
|
711
|
+
if (!(e instanceof Error) || !e.message.includes("duplicate column name")) {
|
|
696
712
|
throw e;
|
|
697
713
|
}
|
|
698
714
|
}
|
|
@@ -705,6 +721,38 @@ function runMigrations(db) {
|
|
|
705
721
|
throw error;
|
|
706
722
|
}
|
|
707
723
|
}
|
|
724
|
+
if (!currentVersion || versionLessThan(currentVersion, "1.14.0")) {
|
|
725
|
+
log2.info("Running migration 1.14.0: Add plugin_config table for plugin priority");
|
|
726
|
+
try {
|
|
727
|
+
db.exec(`
|
|
728
|
+
CREATE TABLE IF NOT EXISTS plugin_config (
|
|
729
|
+
plugin_name TEXT PRIMARY KEY,
|
|
730
|
+
priority INTEGER NOT NULL DEFAULT 0,
|
|
731
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
732
|
+
);
|
|
733
|
+
`);
|
|
734
|
+
log2.info("Migration 1.14.0 complete: plugin_config table created");
|
|
735
|
+
} catch (error) {
|
|
736
|
+
log2.error({ err: error }, "Migration 1.14.0 failed");
|
|
737
|
+
throw error;
|
|
738
|
+
}
|
|
739
|
+
}
|
|
740
|
+
if (!currentVersion || versionLessThan(currentVersion, "1.15.0")) {
|
|
741
|
+
log2.info("Running migration 1.15.0: Add user_hook_config table");
|
|
742
|
+
try {
|
|
743
|
+
db.exec(`
|
|
744
|
+
CREATE TABLE IF NOT EXISTS user_hook_config (
|
|
745
|
+
key TEXT PRIMARY KEY,
|
|
746
|
+
value TEXT NOT NULL,
|
|
747
|
+
updated_at TEXT NOT NULL DEFAULT (datetime('now'))
|
|
748
|
+
);
|
|
749
|
+
`);
|
|
750
|
+
log2.info("Migration 1.15.0 complete: user_hook_config table created");
|
|
751
|
+
} catch (error) {
|
|
752
|
+
log2.error({ err: error }, "Migration 1.15.0 failed");
|
|
753
|
+
throw error;
|
|
754
|
+
}
|
|
755
|
+
}
|
|
708
756
|
setSchemaVersion(db, CURRENT_SCHEMA_VERSION);
|
|
709
757
|
}
|
|
710
758
|
|
|
@@ -1720,33 +1768,32 @@ var ContextBuilder = class {
|
|
|
1720
1768
|
role: m.isFromAgent ? "assistant" : "user",
|
|
1721
1769
|
content: m.text ?? ""
|
|
1722
1770
|
}));
|
|
1723
|
-
const relevantKnowledge = [];
|
|
1724
|
-
if (includeAgentMemory) {
|
|
1725
|
-
try {
|
|
1726
|
-
const knowledgeResults = await this.hybridSearch.searchKnowledge(query, queryEmbedding, {
|
|
1727
|
-
limit: maxRelevantChunks
|
|
1728
|
-
});
|
|
1729
|
-
relevantKnowledge.push(...reorderForEdges(knowledgeResults.map((r) => r.text)));
|
|
1730
|
-
} catch (error) {
|
|
1731
|
-
log6.warn({ err: error }, "Knowledge search failed");
|
|
1732
|
-
}
|
|
1733
|
-
}
|
|
1734
1771
|
const recentTextsSet = new Set(
|
|
1772
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion -- filtered for non-null text above
|
|
1735
1773
|
recentTgMessages.filter((m) => m.text && m.text.length > 0).map((m) => m.text)
|
|
1736
1774
|
);
|
|
1775
|
+
const knowledgePromise = includeAgentMemory ? this.hybridSearch.searchKnowledge(query, queryEmbedding, { limit: maxRelevantChunks }).catch((error) => {
|
|
1776
|
+
log6.warn({ err: error }, "Knowledge search failed");
|
|
1777
|
+
return [];
|
|
1778
|
+
}) : Promise.resolve([]);
|
|
1779
|
+
const feedPromise = includeFeedHistory ? this.hybridSearch.searchMessages(query, queryEmbedding, { chatId, limit: maxRelevantChunks }).catch((error) => {
|
|
1780
|
+
log6.warn({ err: error }, "Feed search failed");
|
|
1781
|
+
return [];
|
|
1782
|
+
}) : Promise.resolve([]);
|
|
1783
|
+
const [knowledgeResults, feedResults] = await Promise.all([knowledgePromise, feedPromise]);
|
|
1784
|
+
const relevantKnowledge = [];
|
|
1785
|
+
if (knowledgeResults.length > 0) {
|
|
1786
|
+
relevantKnowledge.push(...reorderForEdges(knowledgeResults.map((r) => r.text)));
|
|
1787
|
+
}
|
|
1737
1788
|
const relevantFeed = [];
|
|
1738
1789
|
if (includeFeedHistory) {
|
|
1739
|
-
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
limit: maxRelevantChunks
|
|
1743
|
-
});
|
|
1744
|
-
for (const r of feedResults) {
|
|
1745
|
-
if (!recentTextsSet.has(r.text)) {
|
|
1746
|
-
relevantFeed.push(truncateFeedMessage(r.text));
|
|
1747
|
-
}
|
|
1790
|
+
for (const r of feedResults) {
|
|
1791
|
+
if (!recentTextsSet.has(r.text)) {
|
|
1792
|
+
relevantFeed.push(truncateFeedMessage(r.text));
|
|
1748
1793
|
}
|
|
1749
|
-
|
|
1794
|
+
}
|
|
1795
|
+
if (searchAllChats) {
|
|
1796
|
+
try {
|
|
1750
1797
|
const globalResults = await this.hybridSearch.searchMessages(query, queryEmbedding, {
|
|
1751
1798
|
limit: maxRelevantChunks
|
|
1752
1799
|
});
|
|
@@ -1757,9 +1804,9 @@ var ContextBuilder = class {
|
|
|
1757
1804
|
relevantFeed.push(`[From chat ${r.source}]: ${truncated}`);
|
|
1758
1805
|
}
|
|
1759
1806
|
}
|
|
1807
|
+
} catch (error) {
|
|
1808
|
+
log6.warn({ err: error }, "Global feed search failed");
|
|
1760
1809
|
}
|
|
1761
|
-
} catch (error) {
|
|
1762
|
-
log6.warn({ err: error }, "Feed search failed");
|
|
1763
1810
|
}
|
|
1764
1811
|
if (relevantFeed.length === 0 && recentTgMessages.length > 0) {
|
|
1765
1812
|
const recentTexts = recentTgMessages.filter((m) => m.text && m.text.length > 0).slice(-maxRelevantChunks).map((m) => {
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
appendToTranscript,
|
|
8
8
|
readTranscript
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-QV2GLOTK.js";
|
|
10
10
|
import {
|
|
11
11
|
fetchWithTimeout
|
|
12
12
|
} from "./chunk-XQUHC3JZ.js";
|
|
@@ -225,7 +225,7 @@ function getProviderModel(provider, modelId) {
|
|
|
225
225
|
}
|
|
226
226
|
modelCache.set(cacheKey, model);
|
|
227
227
|
return model;
|
|
228
|
-
} catch
|
|
228
|
+
} catch {
|
|
229
229
|
log.warn(`Model ${modelId} not found for ${provider}, falling back to ${meta.defaultModel}`);
|
|
230
230
|
const fallbackKey = `${provider}:${meta.defaultModel}`;
|
|
231
231
|
const fallbackCached = modelCache.get(fallbackKey);
|
|
@@ -331,9 +331,17 @@ async function chatWithContext(config, options) {
|
|
|
331
331
|
}
|
|
332
332
|
function loadContextFromTranscript(sessionId, systemPrompt) {
|
|
333
333
|
const messages = readTranscript(sessionId);
|
|
334
|
+
const seenToolCallIds = /* @__PURE__ */ new Set();
|
|
335
|
+
const deduped = messages.filter((msg) => {
|
|
336
|
+
if (msg.role !== "toolResult") return true;
|
|
337
|
+
const id = msg.toolCallId;
|
|
338
|
+
if (seenToolCallIds.has(id)) return false;
|
|
339
|
+
seenToolCallIds.add(id);
|
|
340
|
+
return true;
|
|
341
|
+
});
|
|
334
342
|
return {
|
|
335
343
|
systemPrompt,
|
|
336
|
-
messages
|
|
344
|
+
messages: deduped
|
|
337
345
|
};
|
|
338
346
|
}
|
|
339
347
|
function createClient(_config) {
|