llm-agent-runtime 0.1.17 → 0.1.21

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 (80) hide show
  1. package/USAGE.md +5 -3
  2. package/dist/agent.d.ts +0 -1
  3. package/dist/agent.js +1 -69
  4. package/dist/create-runtime.d.ts +5 -3
  5. package/dist/create-runtime.js +1 -321
  6. package/dist/embeddings/xenova.d.ts +0 -1
  7. package/dist/embeddings/xenova.js +1 -69
  8. package/dist/env-llm.d.ts +0 -1
  9. package/dist/env-llm.js +1 -114
  10. package/dist/errors.d.ts +0 -1
  11. package/dist/errors.js +1 -17
  12. package/dist/index.d.ts +1 -2
  13. package/dist/index.js +1 -15
  14. package/dist/intents/define.d.ts +0 -1
  15. package/dist/intents/define.js +1 -52
  16. package/dist/intents/general.d.ts +0 -1
  17. package/dist/intents/general.js +1 -67
  18. package/dist/llm.d.ts +0 -1
  19. package/dist/llm.js +1 -112
  20. package/dist/rag/index.d.ts +0 -1
  21. package/dist/rag/index.js +1 -140
  22. package/dist/rag/loaders.d.ts +0 -1
  23. package/dist/rag/loaders.js +1 -80
  24. package/dist/rag/sources.d.ts +0 -1
  25. package/dist/rag/sources.js +1 -101
  26. package/dist/redis.d.ts +0 -1
  27. package/dist/redis.js +1 -18
  28. package/dist/services/agent-runner.d.ts +0 -1
  29. package/dist/services/agent-runner.js +1 -18
  30. package/dist/services/chat-cache.d.ts +0 -1
  31. package/dist/services/chat-cache.js +1 -70
  32. package/dist/services/conversation.d.ts +0 -1
  33. package/dist/services/conversation.js +1 -68
  34. package/dist/services/extract.d.ts +0 -1
  35. package/dist/services/extract.js +1 -64
  36. package/dist/services/flow-router.d.ts +0 -1
  37. package/dist/services/flow-router.js +1 -191
  38. package/dist/services/intent-embeddings.d.ts +0 -1
  39. package/dist/services/intent-embeddings.js +1 -45
  40. package/dist/services/intent-router.d.ts +0 -1
  41. package/dist/services/intent-router.js +1 -98
  42. package/dist/services/simple-config.d.ts +0 -1
  43. package/dist/services/simple-config.js +1 -70
  44. package/dist/services/token-usage.d.ts +10 -5
  45. package/dist/services/token-usage.js +1 -63
  46. package/dist/services/usage-store.d.ts +15 -3
  47. package/dist/services/usage-store.js +1 -92
  48. package/dist/types.d.ts +2 -2
  49. package/dist/types.js +1 -1
  50. package/dist/utils/message.d.ts +0 -1
  51. package/dist/utils/message.js +1 -13
  52. package/dist/utils/normalize.d.ts +0 -1
  53. package/dist/utils/normalize.js +1 -8
  54. package/package.json +6 -3
  55. package/dist/agent.d.ts.map +0 -1
  56. package/dist/create-runtime.d.ts.map +0 -1
  57. package/dist/embeddings/xenova.d.ts.map +0 -1
  58. package/dist/env-llm.d.ts.map +0 -1
  59. package/dist/errors.d.ts.map +0 -1
  60. package/dist/index.d.ts.map +0 -1
  61. package/dist/intents/define.d.ts.map +0 -1
  62. package/dist/intents/general.d.ts.map +0 -1
  63. package/dist/llm.d.ts.map +0 -1
  64. package/dist/rag/index.d.ts.map +0 -1
  65. package/dist/rag/loaders.d.ts.map +0 -1
  66. package/dist/rag/sources.d.ts.map +0 -1
  67. package/dist/redis.d.ts.map +0 -1
  68. package/dist/services/agent-runner.d.ts.map +0 -1
  69. package/dist/services/chat-cache.d.ts.map +0 -1
  70. package/dist/services/conversation.d.ts.map +0 -1
  71. package/dist/services/extract.d.ts.map +0 -1
  72. package/dist/services/flow-router.d.ts.map +0 -1
  73. package/dist/services/intent-embeddings.d.ts.map +0 -1
  74. package/dist/services/intent-router.d.ts.map +0 -1
  75. package/dist/services/simple-config.d.ts.map +0 -1
  76. package/dist/services/token-usage.d.ts.map +0 -1
  77. package/dist/services/usage-store.d.ts.map +0 -1
  78. package/dist/types.d.ts.map +0 -1
  79. package/dist/utils/message.d.ts.map +0 -1
  80. package/dist/utils/normalize.d.ts.map +0 -1
package/dist/rag/index.js CHANGED
@@ -1,140 +1 @@
1
- import { llmConfigFromEnv } from "../env-llm.js";
2
- import { createModels } from "../llm.js";
3
- import { loadRagDocuments, loadRagDocument, } from "./loaders.js";
4
- import { ragSourcesFromEnv, resolveRagSources, resolveRagSource, isHttpUrl, } from "./sources.js";
5
- export { loadRagDocuments, loadRagDocument, ragSourcesFromEnv, resolveRagSources, resolveRagSource, isHttpUrl, };
6
- function chunkText(text, chunkSize = 800, overlap = 120) {
7
- const cleaned = text.replace(/\s+/g, " ").trim();
8
- if (!cleaned)
9
- return [];
10
- if (cleaned.length <= chunkSize)
11
- return [cleaned];
12
- const chunks = [];
13
- let start = 0;
14
- while (start < cleaned.length) {
15
- const end = Math.min(start + chunkSize, cleaned.length);
16
- chunks.push(cleaned.slice(start, end));
17
- if (end >= cleaned.length)
18
- break;
19
- start = Math.max(0, end - overlap);
20
- }
21
- return chunks;
22
- }
23
- function cosine(a, b) {
24
- let dot = 0;
25
- let magA = 0;
26
- let magB = 0;
27
- const n = Math.min(a.length, b.length);
28
- for (let i = 0; i < n; i++) {
29
- dot += a[i] * b[i];
30
- magA += a[i] * a[i];
31
- magB += b[i] * b[i];
32
- }
33
- if (!magA || !magB)
34
- return 0;
35
- return dot / (Math.sqrt(magA) * Math.sqrt(magB));
36
- }
37
- /**
38
- * Build an in-memory RAG store from loaded documents + any Embeddings backend
39
- * (xenova / ollama / openai).
40
- */
41
- export async function createSimpleRagStore(options) {
42
- const chunks = [];
43
- let i = 0;
44
- for (const doc of options.documents) {
45
- const parts = chunkText(doc.text, options.chunkSize ?? 800, options.overlap ?? 120);
46
- for (const part of parts) {
47
- const embedding = await options.embeddings.embedQuery(part);
48
- chunks.push({
49
- id: `${i++}`,
50
- source: doc.source,
51
- text: part,
52
- embedding,
53
- });
54
- }
55
- }
56
- return {
57
- chunks,
58
- retrieve: async (query, topK = 4) => {
59
- if (!chunks.length)
60
- return "";
61
- const q = await options.embeddings.embedQuery(query);
62
- return chunks
63
- .map((c) => ({ c, score: cosine(q, c.embedding) }))
64
- .sort((a, b) => b.score - a.score)
65
- .slice(0, topK)
66
- .map(({ c }) => `[${c.source}]\n${c.text}`)
67
- .join("\n---\n");
68
- },
69
- };
70
- }
71
- /**
72
- * Resolve + load + index RAG sources (local paths and/or http(s) PDF/DOCX URLs).
73
- */
74
- export async function createSimpleRagFromSources(options) {
75
- const resolved = await resolveRagSources(options.sources);
76
- const documents = await loadRagDocuments(resolved);
77
- const store = await createSimpleRagStore({
78
- documents,
79
- embeddings: options.embeddings,
80
- chunkSize: options.chunkSize,
81
- overlap: options.overlap,
82
- });
83
- return { resolved, documents, store };
84
- }
85
- /** Same as createSimpleRagFromSources, reading RAG_SOURCES / RAG_PDF_* / RAG_DOC_URLS. */
86
- export async function createSimpleRagFromEnv(options) {
87
- const sources = ragSourcesFromEnv(options.env ?? process.env);
88
- if (!sources.length) {
89
- throw new Error("No RAG sources configured. Set RAG_SOURCES=/path/a.pdf,https://example.com/b.docx");
90
- }
91
- return createSimpleRagFromSources({
92
- sources,
93
- embeddings: options.embeddings,
94
- chunkSize: options.chunkSize,
95
- overlap: options.overlap,
96
- });
97
- }
98
- let storePromise = null;
99
- let documentCount = 0;
100
- /**
101
- * Lazy singleton RAG store from `RAG_SOURCES` (path and/or URL).
102
- * Apps do not need their own `rag/store.ts` — call this, then `store.retrieve(message)`.
103
- */
104
- export function getRagStore(options = {}) {
105
- if (!storePromise) {
106
- storePromise = (async () => {
107
- const env = options.env ?? process.env;
108
- const embeddings = options.embeddings ??
109
- createModels(llmConfigFromEnv(env)).embeddings;
110
- const { store, documents } = await createSimpleRagFromEnv({
111
- embeddings,
112
- env,
113
- chunkSize: options.chunkSize,
114
- overlap: options.overlap,
115
- });
116
- if (!documents.length) {
117
- throw new Error("RAG sources were configured but none could be loaded. Check file paths and PDF/DOCX parsers.");
118
- }
119
- documentCount = documents.length;
120
- if (options.log !== false) {
121
- console.log(`[rag] indexed ${documents.length} document(s) from RAG_SOURCES`);
122
- }
123
- return store;
124
- })().catch((err) => {
125
- // Allow the next getRagStore() call to retry after a failed index.
126
- storePromise = null;
127
- documentCount = 0;
128
- throw err;
129
- });
130
- }
131
- return storePromise;
132
- }
133
- export function getRagDocumentCount() {
134
- return documentCount;
135
- }
136
- /** Clear the singleton (tests / re-index). Next `getRagStore()` rebuilds. */
137
- export function resetRagStore() {
138
- storePromise = null;
139
- documentCount = 0;
140
- }
1
+ (function(_0x53c0bf,_0x222c65){const _0x15d897=a9_0x4643,_0x5ecfd5=_0x53c0bf();while(!![]){try{const _0x247d8a=parseInt(_0x15d897(0x195))/0x1*(parseInt(_0x15d897(0x170))/0x2)+parseInt(_0x15d897(0x169))/0x3+-parseInt(_0x15d897(0x167))/0x4*(-parseInt(_0x15d897(0x171))/0x5)+parseInt(_0x15d897(0x16d))/0x6*(parseInt(_0x15d897(0x168))/0x7)+-parseInt(_0x15d897(0x193))/0x8*(parseInt(_0x15d897(0x17f))/0x9)+parseInt(_0x15d897(0x183))/0xa+-parseInt(_0x15d897(0x174))/0xb;if(_0x247d8a===_0x222c65)break;else _0x5ecfd5['push'](_0x5ecfd5['shift']());}catch(_0x42bc67){_0x5ecfd5['push'](_0x5ecfd5['shift']());}}}(a9_0x5dec,0x6a1e7));function a9_0x5dec(){const _0x80f64f=['ffzSz','embeddings','ClDmB','kLgru','sources','[rag]\x20indexed\x20','No\x20RAG\x20sources\x20configured.\x20Set\x20RAG_SOURCES=/path/a.pdf,https://example.com/b.docx','1608DsWbnp','text','79vfKlVk','length','efHve','score','log','chunkSize','zNeIF','NlgEe','map','NuTVp','GOBJa','RAG\x20sources\x20were\x20configured\x20but\x20none\x20could\x20be\x20loaded.\x20Check\x20file\x20paths\x20and\x20PDF/DOCX\x20parsers.','oBtBU','embedQuery','4dKOBPH','1057kgTdXB','1915980CCiqkk','sqrt','sort','min','23916yBBZhZ','trim','overlap','9104lfJeUx','1691685XqQAyC','push','Hmfrq','21093490vszMum','zJken','OXFXa','DyjQF','slice','uMmxR','tdGBA','catch','crzvi','\x20document(s)\x20from\x20RAG_SOURCES','WumlX','5481kIhOVN','bqnGu','dpHCh','eIeXq','5361710pRnTRq','xdvfk','mBckt','env','SIFok','JFfOp','max','HfxAo','replace'];a9_0x5dec=function(){return _0x80f64f;};return a9_0x5dec();}import{llmConfigFromEnv}from'../env-llm.js';import{createModels}from'../llm.js';import{loadRagDocuments,loadRagDocument}from'./loaders.js';import{ragSourcesFromEnv,resolveRagSources,resolveRagSource,isHttpUrl}from'./sources.js';export{loadRagDocuments,loadRagDocument,ragSourcesFromEnv,resolveRagSources,resolveRagSource,isHttpUrl};function chunkText(_0x22948a,_0x234bce=0x320,_0x48482b=0x78){const _0x43a277=a9_0x4643,_0x24eabb={'NlgEe':function(_0x12ab21,_0x33f75e){return _0x12ab21<=_0x33f75e;},'HfxAo':function(_0x2deec4,_0x469d3e){return _0x2deec4+_0x469d3e;},'NuTVp':function(_0x92cf9a,_0x23c9ba){return _0x92cf9a>=_0x23c9ba;},'ClDmB':function(_0x5ce139,_0x4be566){return _0x5ce139-_0x4be566;}},_0x13f1d4=_0x22948a[_0x43a277(0x18b)](/\s+/g,'\x20')[_0x43a277(0x16e)]();if(!_0x13f1d4)return[];if(_0x24eabb[_0x43a277(0x19c)](_0x13f1d4[_0x43a277(0x196)],_0x234bce))return[_0x13f1d4];const _0x32c33c=[];let _0x382f74=0x0;while(_0x382f74<_0x13f1d4[_0x43a277(0x196)]){const _0x47cd84=Math['min'](_0x24eabb[_0x43a277(0x18a)](_0x382f74,_0x234bce),_0x13f1d4[_0x43a277(0x196)]);_0x32c33c[_0x43a277(0x172)](_0x13f1d4[_0x43a277(0x178)](_0x382f74,_0x47cd84));if(_0x24eabb[_0x43a277(0x19e)](_0x47cd84,_0x13f1d4[_0x43a277(0x196)]))break;_0x382f74=Math[_0x43a277(0x189)](0x0,_0x24eabb[_0x43a277(0x18e)](_0x47cd84,_0x48482b));}return _0x32c33c;}function cosine(_0x5878e1,_0x54620f){const _0x4daf10=a9_0x4643,_0x26ccee={'GOBJa':function(_0x35c4e8,_0x5c1e51){return _0x35c4e8<_0x5c1e51;},'WumlX':function(_0xd9ae6f,_0x4fd397){return _0xd9ae6f!==_0x4fd397;},'JFfOp':function(_0x3f51fb,_0x5bcdbc){return _0x3f51fb*_0x5bcdbc;},'ZUvSL':function(_0x4d5e5f,_0x109ad8){return _0x4d5e5f||_0x109ad8;},'mBckt':function(_0x1694ef,_0x2c14dd){return _0x1694ef/_0x2c14dd;},'oBtBU':function(_0x6577d1,_0x5171e2){return _0x6577d1*_0x5171e2;}};let _0x4ac954=0x0,_0x2c1dc8=0x0,_0x13d295=0x0;const _0x42ed10=Math[_0x4daf10(0x16c)](_0x5878e1['length'],_0x54620f[_0x4daf10(0x196)]);for(let _0x2db9d7=0x0;_0x26ccee[_0x4daf10(0x19f)](_0x2db9d7,_0x42ed10);_0x2db9d7++){_0x26ccee[_0x4daf10(0x17e)](_0x4daf10(0x173),'Hmfrq')?_0x2c1bbc[_0x4daf10(0x199)](_0x4daf10(0x191)+_0x56ad0d[_0x4daf10(0x196)]+_0x4daf10(0x17d)):(_0x4ac954+=_0x26ccee['JFfOp'](_0x5878e1[_0x2db9d7],_0x54620f[_0x2db9d7]),_0x2c1dc8+=_0x5878e1[_0x2db9d7]*_0x5878e1[_0x2db9d7],_0x13d295+=_0x26ccee[_0x4daf10(0x188)](_0x54620f[_0x2db9d7],_0x54620f[_0x2db9d7]));}if(_0x26ccee['ZUvSL'](!_0x2c1dc8,!_0x13d295))return 0x0;return _0x26ccee[_0x4daf10(0x185)](_0x4ac954,_0x26ccee[_0x4daf10(0x165)](Math['sqrt'](_0x2c1dc8),Math[_0x4daf10(0x16a)](_0x13d295)));}export async function createSimpleRagStore(_0x4455cd){const _0x1cf030=a9_0x4643,_0x2ba7e6={'uXrBb':'\x0a---\x0a','DnKWr':_0x1cf030(0x180),'EGPod':_0x1cf030(0x197)},_0x293e81=[];let _0x572beb=0x0;for(const _0x2ba1ae of _0x4455cd['documents']){const _0x4433cf=chunkText(_0x2ba1ae[_0x1cf030(0x194)],_0x4455cd['chunkSize']??0x320,_0x4455cd['overlap']??0x78);for(const _0x387afa of _0x4433cf){if(_0x2ba7e6['DnKWr']===_0x2ba7e6['EGPod'])return _0x5d3570;else{const _0x56dcd0=await _0x4455cd[_0x1cf030(0x18d)][_0x1cf030(0x166)](_0x387afa);_0x293e81['push']({'id':''+_0x572beb++,'source':_0x2ba1ae['source'],'text':_0x387afa,'embedding':_0x56dcd0});}}}return{'chunks':_0x293e81,'retrieve':async(_0x352fad,_0x903472=0x4)=>{const _0x2c1a80=_0x1cf030;if(!_0x293e81[_0x2c1a80(0x196)])return'';const _0x2b43d4=await _0x4455cd['embeddings'][_0x2c1a80(0x166)](_0x352fad);return _0x293e81[_0x2c1a80(0x19d)](_0x5bc3f0=>({'c':_0x5bc3f0,'score':cosine(_0x2b43d4,_0x5bc3f0['embedding'])}))[_0x2c1a80(0x16b)]((_0x4f659d,_0x27fcea)=>_0x27fcea[_0x2c1a80(0x198)]-_0x4f659d[_0x2c1a80(0x198)])['slice'](0x0,_0x903472)[_0x2c1a80(0x19d)](({c:_0x1c524b})=>'['+_0x1c524b['source']+']\x0a'+_0x1c524b[_0x2c1a80(0x194)])['join'](_0x2ba7e6['uXrBb']);}};}export async function createSimpleRagFromSources(_0x432a70){const _0x4169ba=a9_0x4643,_0x316aec={'dpHCh':function(_0x1a9a86,_0x5e2b84){return _0x1a9a86(_0x5e2b84);},'ffzSz':function(_0x118057,_0xea3532){return _0x118057(_0xea3532);}},_0x51c630=await _0x316aec[_0x4169ba(0x181)](resolveRagSources,_0x432a70[_0x4169ba(0x190)]),_0x335c8a=await _0x316aec[_0x4169ba(0x18c)](loadRagDocuments,_0x51c630),_0x2676f5=await _0x316aec['dpHCh'](createSimpleRagStore,{'documents':_0x335c8a,'embeddings':_0x432a70['embeddings'],'chunkSize':_0x432a70[_0x4169ba(0x19a)],'overlap':_0x432a70[_0x4169ba(0x16f)]});return{'resolved':_0x51c630,'documents':_0x335c8a,'store':_0x2676f5};}export async function createSimpleRagFromEnv(_0x227fa4){const _0x1679b3=a9_0x4643,_0x408451={'crzvi':function(_0x16173d,_0x48a4ad){return _0x16173d(_0x48a4ad);},'mhIQp':function(_0x2cebe3,_0x553ef3){return _0x2cebe3!==_0x553ef3;},'uMmxR':_0x1679b3(0x177),'tdGBA':function(_0x18425c,_0x407f09){return _0x18425c(_0x407f09);}},_0x3a0032=_0x408451[_0x1679b3(0x17c)](ragSourcesFromEnv,_0x227fa4[_0x1679b3(0x186)]??process[_0x1679b3(0x186)]);if(!_0x3a0032[_0x1679b3(0x196)]){if(_0x408451['mhIQp'](_0x408451[_0x1679b3(0x179)],_0x408451[_0x1679b3(0x179)])){_0x2fb396=null,_0x537fe8=0x0;throw _0x5b7494;}else throw new Error(_0x1679b3(0x192));}return _0x408451[_0x1679b3(0x17a)](createSimpleRagFromSources,{'sources':_0x3a0032,'embeddings':_0x227fa4['embeddings'],'chunkSize':_0x227fa4[_0x1679b3(0x19a)],'overlap':_0x227fa4[_0x1679b3(0x16f)]});}let storePromise=null,documentCount=0x0;function a9_0x4643(_0x222390,_0x2a8691){_0x222390=_0x222390-0x164;const _0x5dec4e=a9_0x5dec();let _0x46431e=_0x5dec4e[_0x222390];return _0x46431e;}export function getRagStore(_0x34ef35={}){const _0x2d62bb=a9_0x4643,_0x4e6b0f={'eIeXq':function(_0x272a7b,_0x2dfb9f){return _0x272a7b(_0x2dfb9f);},'OXFXa':_0x2d62bb(0x18f),'oSDYu':_0x2d62bb(0x175),'zNeIF':'RAG\x20sources\x20were\x20configured\x20but\x20none\x20could\x20be\x20loaded.\x20Check\x20file\x20paths\x20and\x20PDF/DOCX\x20parsers.','SIFok':function(_0x525325,_0x22d7b7){return _0x525325===_0x22d7b7;},'BvYVp':'xdvfk'};return!storePromise&&(storePromise=(async()=>{const _0x2a887f=_0x2d62bb,_0x413868=_0x34ef35['env']??process[_0x2a887f(0x186)],_0x14eb88=_0x34ef35['embeddings']??createModels(llmConfigFromEnv(_0x413868))[_0x2a887f(0x18d)],{store:_0x4af803,documents:_0x2dfae8}=await _0x4e6b0f[_0x2a887f(0x182)](createSimpleRagFromEnv,{'embeddings':_0x14eb88,'env':_0x413868,'chunkSize':_0x34ef35[_0x2a887f(0x19a)],'overlap':_0x34ef35[_0x2a887f(0x16f)]});if(!_0x2dfae8['length']){if(_0x4e6b0f[_0x2a887f(0x176)]!==_0x4e6b0f['oSDYu'])throw new Error(_0x2a887f(0x164));else throw new _0x2cfccc('No\x20RAG\x20sources\x20configured.\x20Set\x20RAG_SOURCES=/path/a.pdf,https://example.com/b.docx');}return documentCount=_0x2dfae8[_0x2a887f(0x196)],_0x34ef35['log']!==![]&&console['log'](_0x2a887f(0x191)+_0x2dfae8[_0x2a887f(0x196)]+'\x20document(s)\x20from\x20RAG_SOURCES'),_0x4af803;})()[_0x2d62bb(0x17b)](_0x4cc075=>{const _0x3d2c3b=_0x2d62bb;if(_0x4e6b0f[_0x3d2c3b(0x187)](_0x4e6b0f['BvYVp'],_0x3d2c3b(0x184))){storePromise=null,documentCount=0x0;throw _0x4cc075;}else throw new _0x5e0468(_0x4e6b0f[_0x3d2c3b(0x19b)]);})),storePromise;}export function getRagDocumentCount(){return documentCount;}export function resetRagStore(){storePromise=null,documentCount=0x0;}
@@ -8,4 +8,3 @@ export type LoadedRagDocument = {
8
8
  */
9
9
  export declare function loadRagDocument(resolved: ResolvedRagSource): Promise<LoadedRagDocument>;
10
10
  export declare function loadRagDocuments(resolved: ResolvedRagSource[]): Promise<LoadedRagDocument[]>;
11
- //# sourceMappingURL=loaders.d.ts.map
@@ -1,80 +1 @@
1
- import { createRequire } from "node:module";
2
- import fs from "node:fs/promises";
3
- const require = createRequire(import.meta.url);
4
- function loadPdfParse() {
5
- try {
6
- // Prefer CJS require — ESM `import("pdf-parse")` is flaky with pdf.js (bad XRef).
7
- const mod = require("pdf-parse");
8
- if (typeof mod === "function")
9
- return mod;
10
- if (typeof mod?.default === "function")
11
- return mod.default;
12
- throw new Error("pdf-parse export missing");
13
- }
14
- catch (err) {
15
- if (err instanceof Error && err.message === "pdf-parse export missing") {
16
- throw err;
17
- }
18
- throw new Error("PDF RAG requires pdf-parse. Install with: pnpm add pdf-parse");
19
- }
20
- }
21
- async function loadPdf(localPath) {
22
- const pdfParse = loadPdfParse();
23
- const data = await fs.readFile(localPath);
24
- const parsed = await pdfParse(data);
25
- return parsed.text ?? "";
26
- }
27
- async function loadDocx(localPath) {
28
- let mammoth;
29
- try {
30
- mammoth = await import("mammoth");
31
- }
32
- catch {
33
- throw new Error('DOCX RAG requires mammoth. Install with: pnpm add mammoth');
34
- }
35
- const result = await mammoth.extractRawText({ path: localPath });
36
- return result.value ?? "";
37
- }
38
- async function loadText(localPath) {
39
- return fs.readFile(localPath, "utf8");
40
- }
41
- /**
42
- * Extract plain text from a resolved PDF / DOCX / TXT source.
43
- */
44
- export async function loadRagDocument(resolved) {
45
- let text;
46
- switch (resolved.kind) {
47
- case "pdf":
48
- text = await loadPdf(resolved.localPath);
49
- break;
50
- case "docx":
51
- text = await loadDocx(resolved.localPath);
52
- break;
53
- case "txt":
54
- text = await loadText(resolved.localPath);
55
- break;
56
- default:
57
- throw new Error(`Unsupported RAG file type for ${resolved.source} (use .pdf, .docx, .txt, .md)`);
58
- }
59
- return {
60
- source: resolved.source,
61
- text: text.replace(/\u0000/g, "").trim(),
62
- };
63
- }
64
- export async function loadRagDocuments(resolved) {
65
- const docs = [];
66
- for (const item of resolved) {
67
- try {
68
- const doc = await loadRagDocument(item);
69
- if (doc.text)
70
- docs.push(doc);
71
- else {
72
- console.warn(`[rag] skipped empty document: ${item.source}`);
73
- }
74
- }
75
- catch (err) {
76
- console.warn(`[rag] skipped unreadable source: ${item.source}`, err instanceof Error ? err.message : err);
77
- }
78
- }
79
- return docs;
80
- }
1
+ (function(_0x311509,_0x494e47){const _0x5c30cb=a10_0x45b2,_0x13d71a=_0x311509();while(!![]){try{const _0x2b513e=parseInt(_0x5c30cb(0xd9))/0x1+parseInt(_0x5c30cb(0xcf))/0x2*(-parseInt(_0x5c30cb(0xdb))/0x3)+-parseInt(_0x5c30cb(0xbb))/0x4*(parseInt(_0x5c30cb(0xc2))/0x5)+parseInt(_0x5c30cb(0xcc))/0x6*(parseInt(_0x5c30cb(0xc6))/0x7)+-parseInt(_0x5c30cb(0xd3))/0x8+-parseInt(_0x5c30cb(0xd0))/0x9+parseInt(_0x5c30cb(0xc7))/0xa*(parseInt(_0x5c30cb(0xcd))/0xb);if(_0x2b513e===_0x494e47)break;else _0x13d71a['push'](_0x13d71a['shift']());}catch(_0x33a0c3){_0x13d71a['push'](_0x13d71a['shift']());}}}(a10_0x516e,0xbad85));import{createRequire}from'node:module';import a10_0x1837af from'node:fs/promises';const require=createRequire(import.meta.url);function loadPdfParse(){const _0x350270=a10_0x45b2,_0x186bca={'tlgWh':_0x350270(0xbe),'WbnUW':function(_0x3aab5b,_0xea4121){return _0x3aab5b===_0xea4121;},'fYdJp':_0x350270(0xca),'yCljM':function(_0x7516e5,_0x299f0c){return _0x7516e5===_0x299f0c;},'ZmuQG':'pdf-parse\x20export\x20missing','VaqAw':function(_0x34a577,_0x331bab){return _0x34a577!==_0x331bab;},'cVyNl':_0x350270(0xb5),'heKzd':function(_0x1e59fa,_0x4f7e2c){return _0x1e59fa===_0x4f7e2c;},'caoeF':function(_0x59ba85,_0x315d68){return _0x59ba85===_0x315d68;},'ewyWg':function(_0x76c8a3,_0x2d2b01){return _0x76c8a3===_0x2d2b01;},'VXtye':_0x350270(0xe3),'esmNf':_0x350270(0xbc),'VnddN':_0x350270(0xd8)};try{if(_0x186bca[_0x350270(0xb7)](_0x186bca['cVyNl'],_0x186bca[_0x350270(0xdf)]))return _0x592302[_0x350270(0xe5)](_0x3a833a,_0x186bca[_0x350270(0xad)]);else{const _0x4fb112=require('pdf-parse');if(_0x186bca[_0x350270(0xde)](typeof _0x4fb112,_0x350270(0xca)))return _0x4fb112;if(_0x186bca[_0x350270(0xb3)](typeof _0x4fb112?.[_0x350270(0xaf)],_0x186bca['fYdJp']))return _0x4fb112[_0x350270(0xaf)];throw new Error(_0x186bca[_0x350270(0xbd)]);}}catch(_0x2e31c5){if(_0x2e31c5 instanceof Error&&_0x186bca[_0x350270(0xde)](_0x2e31c5[_0x350270(0xb6)],_0x186bca['ZmuQG'])){if(_0x186bca['ewyWg'](_0x186bca[_0x350270(0xae)],_0x186bca[_0x350270(0xe2)])){const _0x3604a1=_0x421a29('pdf-parse');if(_0x186bca[_0x350270(0xb1)](typeof _0x3604a1,_0x186bca[_0x350270(0xc1)]))return _0x3604a1;if(_0x186bca[_0x350270(0xdc)](typeof _0x3604a1?.[_0x350270(0xaf)],_0x186bca[_0x350270(0xc1)]))return _0x3604a1[_0x350270(0xaf)];throw new _0x1a1d30(_0x186bca['ZmuQG']);}else throw _0x2e31c5;}throw new Error(_0x186bca['VnddN']);}}async function loadPdf(_0x50da82){const _0xcf3835=a10_0x45b2,_0x4c5090={'Fgicp':function(_0x2d4795,_0x4ad6a7){return _0x2d4795(_0x4ad6a7);}},_0x2e483e=loadPdfParse(),_0x2ba0ff=await a10_0x1837af['readFile'](_0x50da82),_0x516a7c=await _0x4c5090[_0xcf3835(0xcb)](_0x2e483e,_0x2ba0ff);return _0x516a7c[_0xcf3835(0xe1)]??'';}function a10_0x45b2(_0x36f87a,_0x31a853){_0x36f87a=_0x36f87a-0xab;const _0x516eec=a10_0x516e();let _0x45b201=_0x516eec[_0x36f87a];return _0x45b201;}async function loadDocx(_0x1f36f4){const _0x31a73c=a10_0x45b2,_0x54c078={'wxpuX':function(_0x58317d,_0x5425dc){return _0x58317d instanceof _0x5425dc;},'MhWgT':function(_0x3fe662,_0x516b9e){return _0x3fe662===_0x516b9e;},'oQJLd':_0x31a73c(0xac),'Gahxt':_0x31a73c(0xb4)};let _0x4904e6;try{_0x54c078[_0x31a73c(0xc9)](_0x54c078[_0x31a73c(0xd7)],_0x54c078[_0x31a73c(0xbf)])?_0x255e78['warn'](_0x31a73c(0xe4)+_0x299e6f[_0x31a73c(0xd1)],_0x54c078[_0x31a73c(0xda)](_0x48c160,_0x1f00a)?_0x21abb6[_0x31a73c(0xb6)]:_0x21dace):_0x4904e6=await import('mammoth');}catch{throw new Error(_0x31a73c(0xce));}const _0x199557=await _0x4904e6['extractRawText']({'path':_0x1f36f4});return _0x199557[_0x31a73c(0xe0)]??'';}async function loadText(_0x38f6bd){const _0x318b6d=a10_0x45b2,_0x5a0a4c={'IloWg':'utf8'};return a10_0x1837af[_0x318b6d(0xe5)](_0x38f6bd,_0x5a0a4c[_0x318b6d(0xe6)]);}export async function loadRagDocument(_0x2c2724){const _0x2d1c7b=a10_0x45b2,_0x350f04={'kmlYT':_0x2d1c7b(0xab),'AHfcu':'docx','PzJTG':function(_0x4c72ac,_0x36cc69){return _0x4c72ac(_0x36cc69);}};let _0x260ddd;switch(_0x2c2724['kind']){case _0x350f04[_0x2d1c7b(0xb0)]:_0x260ddd=await loadPdf(_0x2c2724[_0x2d1c7b(0xba)]);break;case _0x350f04[_0x2d1c7b(0xdd)]:_0x260ddd=await _0x350f04[_0x2d1c7b(0xb9)](loadDocx,_0x2c2724['localPath']);break;case _0x2d1c7b(0xc4):_0x260ddd=await _0x350f04[_0x2d1c7b(0xb9)](loadText,_0x2c2724[_0x2d1c7b(0xba)]);break;default:throw new Error('Unsupported\x20RAG\x20file\x20type\x20for\x20'+_0x2c2724[_0x2d1c7b(0xd1)]+_0x2d1c7b(0xd6));}return{'source':_0x2c2724['source'],'text':_0x260ddd[_0x2d1c7b(0xb8)](/\u0000/g,'')[_0x2d1c7b(0xd2)]()};}export async function loadRagDocuments(_0x399e8d){const _0xe2e63f=a10_0x45b2,_0x155dfe={'IAEVH':_0xe2e63f(0xce),'SgxmQ':function(_0x508a2d,_0x272e60){return _0x508a2d!==_0x272e60;},'gyBsB':_0xe2e63f(0xd5),'mvPvT':function(_0x48554d,_0x282cfe){return _0x48554d instanceof _0x282cfe;}},_0x483ec2=[];for(const _0x3a9e3b of _0x399e8d){if(_0x155dfe[_0xe2e63f(0xd4)](_0x155dfe[_0xe2e63f(0xc0)],_0x155dfe['gyBsB']))throw new _0x30227b(_0x155dfe[_0xe2e63f(0xc8)]);else try{const _0x2782d1=await loadRagDocument(_0x3a9e3b);if(_0x2782d1['text'])_0x483ec2[_0xe2e63f(0xb2)](_0x2782d1);else console[_0xe2e63f(0xc3)]('[rag]\x20skipped\x20empty\x20document:\x20'+_0x3a9e3b[_0xe2e63f(0xd1)]);}catch(_0x2c5a4c){console[_0xe2e63f(0xc3)](_0xe2e63f(0xe4)+_0x3a9e3b[_0xe2e63f(0xd1)],_0x155dfe[_0xe2e63f(0xc5)](_0x2c5a4c,Error)?_0x2c5a4c['message']:_0x2c5a4c);}}return _0x483ec2;}function a10_0x516e(){const _0x22a44a=['message','VaqAw','replace','PzJTG','localPath','6114284hbxKnj','MOdWW','ZmuQG','utf8','Gahxt','gyBsB','fYdJp','5gvgTay','warn','txt','mvPvT','4522273qLXBma','81850qkcjZw','IAEVH','MhWgT','function','Fgicp','6ZieWFC','3685UbIuoZ','DOCX\x20RAG\x20requires\x20mammoth.\x20Install\x20with:\x20pnpm\x20add\x20mammoth','2354UpleGa','330147gMnHmG','source','trim','7579016MLmASU','SgxmQ','VUZpy','\x20(use\x20.pdf,\x20.docx,\x20.txt,\x20.md)','oQJLd','PDF\x20RAG\x20requires\x20pdf-parse.\x20Install\x20with:\x20pnpm\x20add\x20pdf-parse','711480yHVROv','wxpuX','2094ivKHEC','yCljM','AHfcu','heKzd','cVyNl','value','text','esmNf','LaCEX','[rag]\x20skipped\x20unreadable\x20source:\x20','readFile','IloWg','pdf','qgJeg','tlgWh','VXtye','default','kmlYT','WbnUW','push','caoeF','RZpsV','dziMe'];a10_0x516e=function(){return _0x22a44a;};return a10_0x516e();}
@@ -26,4 +26,3 @@ export declare function ragSourcesFromEnv(env?: NodeJS.ProcessEnv): string[];
26
26
  */
27
27
  export declare function resolveRagSource(source: string): Promise<ResolvedRagSource>;
28
28
  export declare function resolveRagSources(sources: string[]): Promise<ResolvedRagSource[]>;
29
- //# sourceMappingURL=sources.d.ts.map
@@ -1,101 +1 @@
1
- import fs from "node:fs/promises";
2
- import os from "node:os";
3
- import path from "node:path";
4
- function detectKind(nameOrUrl) {
5
- const lower = nameOrUrl.split("?")[0].toLowerCase();
6
- if (lower.endsWith(".pdf"))
7
- return "pdf";
8
- if (lower.endsWith(".docx"))
9
- return "docx";
10
- if (lower.endsWith(".txt") || lower.endsWith(".md"))
11
- return "txt";
12
- return "unknown";
13
- }
14
- export function isHttpUrl(value) {
15
- return /^https?:\/\//i.test(value.trim());
16
- }
17
- /**
18
- * Collect RAG sources from env.
19
- *
20
- * Preferred:
21
- * RAG_SOURCES=/path/a.pdf,https://cdn.example.com/b.docx
22
- *
23
- * Also accepted:
24
- * RAG_PDF_PATH=/one.pdf
25
- * RAG_PDF_PATHS=/a.pdf,/b.pdf
26
- * RAG_DOC_URLS=https://.../a.pdf,https://.../b.docx
27
- */
28
- export function ragSourcesFromEnv(env = process.env) {
29
- const parts = [];
30
- const pushCsv = (raw) => {
31
- if (!raw?.trim())
32
- return;
33
- for (const item of raw.split(",")) {
34
- const s = item.trim();
35
- if (s)
36
- parts.push(s);
37
- }
38
- };
39
- pushCsv(env.RAG_SOURCES);
40
- pushCsv(env.RAG_PDF_PATH);
41
- pushCsv(env.RAG_PDF_PATHS);
42
- pushCsv(env.RAG_DOC_URLS);
43
- return [...new Set(parts)];
44
- }
45
- async function downloadToTemp(url) {
46
- const res = await fetch(url);
47
- if (!res.ok) {
48
- throw new Error(`Failed to download RAG source (${res.status}): ${url}`);
49
- }
50
- const kind = detectKind(url);
51
- const ext = kind === "pdf"
52
- ? ".pdf"
53
- : kind === "docx"
54
- ? ".docx"
55
- : kind === "txt"
56
- ? ".txt"
57
- : path.extname(new URL(url).pathname) || ".bin";
58
- const dir = await fs.mkdtemp(path.join(os.tmpdir(), "llm-agent-rag-"));
59
- const localPath = path.join(dir, `doc${ext}`);
60
- const buf = Buffer.from(await res.arrayBuffer());
61
- await fs.writeFile(localPath, buf);
62
- return localPath;
63
- }
64
- /**
65
- * Resolve a single source (local path or http(s) URL) to a local file.
66
- */
67
- export async function resolveRagSource(source) {
68
- const trimmed = source.trim();
69
- if (!trimmed) {
70
- throw new Error("Empty RAG source");
71
- }
72
- if (isHttpUrl(trimmed)) {
73
- const localPath = await downloadToTemp(trimmed);
74
- return {
75
- source: trimmed,
76
- localPath,
77
- kind: detectKind(trimmed),
78
- isTemp: true,
79
- };
80
- }
81
- const localPath = path.resolve(trimmed);
82
- try {
83
- await fs.access(localPath);
84
- }
85
- catch {
86
- throw new Error(`RAG file not found: ${localPath}`);
87
- }
88
- return {
89
- source: trimmed,
90
- localPath,
91
- kind: detectKind(localPath),
92
- isTemp: false,
93
- };
94
- }
95
- export async function resolveRagSources(sources) {
96
- const out = [];
97
- for (const source of sources) {
98
- out.push(await resolveRagSource(source));
99
- }
100
- return out;
101
- }
1
+ (function(_0x376f39,_0xf313a0){const _0xabe615=a11_0x5bde,_0x425218=_0x376f39();while(!![]){try{const _0x292d62=-parseInt(_0xabe615(0x1e7))/0x1*(-parseInt(_0xabe615(0x1fa))/0x2)+-parseInt(_0xabe615(0x1f2))/0x3+-parseInt(_0xabe615(0x1ea))/0x4+-parseInt(_0xabe615(0x1eb))/0x5+-parseInt(_0xabe615(0x1fe))/0x6+-parseInt(_0xabe615(0x200))/0x7*(-parseInt(_0xabe615(0x1f3))/0x8)+parseInt(_0xabe615(0x20f))/0x9*(parseInt(_0xabe615(0x1fd))/0xa);if(_0x292d62===_0xf313a0)break;else _0x425218['push'](_0x425218['shift']());}catch(_0x1604cf){_0x425218['push'](_0x425218['shift']());}}}(a11_0x2630,0xe5bbe));import a11_0x1b1af5 from'node:fs/promises';import a11_0x29689d from'node:os';import a11_0x1b1b06 from'node:path';function detectKind(_0x1ba036){const _0x4035c3=a11_0x5bde,_0x14e867={'zZSMz':'pdf','yLdbU':_0x4035c3(0x20b),'bULsK':_0x4035c3(0x218),'UTHEG':'txt','xfrtI':'unknown'},_0x23211b=_0x1ba036[_0x4035c3(0x216)]('?')[0x0][_0x4035c3(0x210)]();if(_0x23211b[_0x4035c3(0x211)](_0x4035c3(0x1f4)))return _0x14e867['zZSMz'];if(_0x23211b[_0x4035c3(0x211)](_0x14e867[_0x4035c3(0x1fc)]))return _0x4035c3(0x206);if(_0x23211b['endsWith'](_0x14e867[_0x4035c3(0x202)])||_0x23211b['endsWith']('.md'))return _0x14e867[_0x4035c3(0x20e)];return _0x14e867['xfrtI'];}export function isHttpUrl(_0x2063ee){const _0x48f2f4=a11_0x5bde;return/^https?:\/\//i[_0x48f2f4(0x217)](_0x2063ee[_0x48f2f4(0x20d)]());}export function ragSourcesFromEnv(_0x3352aa=process['env']){const _0x4a54e6=a11_0x5bde,_0x59bfa2={'IaqKz':_0x4a54e6(0x206),'ZvRHl':_0x4a54e6(0x218),'LKjvE':'.md','jrLAv':_0x4a54e6(0x215),'WLnLb':_0x4a54e6(0x208),'JrTtT':'iNgCF','EatOS':'NHLcP','IChJV':function(_0x5484e2,_0x53cc92){return _0x5484e2(_0x53cc92);}},_0x5ae504=[],_0x2a89db=_0x4a5785=>{const _0x483121=_0x4a54e6,_0x1d285d={'igCXX':'.pdf','WHIfk':_0x59bfa2[_0x483121(0x21c)],'BrGoJ':_0x59bfa2[_0x483121(0x207)],'nMXVj':_0x59bfa2[_0x483121(0x1f8)],'bxVQB':_0x59bfa2[_0x483121(0x205)],'zOCxO':_0x59bfa2[_0x483121(0x1e5)]};if(_0x59bfa2['JrTtT']===_0x59bfa2['EatOS']){const _0x49fd02=_0x445f0c['split']('?')[0x0][_0x483121(0x210)]();if(_0x49fd02[_0x483121(0x211)](_0x1d285d['igCXX']))return _0x483121(0x21e);if(_0x49fd02[_0x483121(0x211)](_0x483121(0x20b)))return _0x1d285d['WHIfk'];if(_0x49fd02[_0x483121(0x211)](_0x1d285d['BrGoJ'])||_0x49fd02[_0x483121(0x211)](_0x1d285d[_0x483121(0x221)]))return _0x1d285d[_0x483121(0x1e8)];return _0x1d285d[_0x483121(0x222)];}else{if(!_0x4a5785?.[_0x483121(0x20d)]())return;for(const _0x2e251f of _0x4a5785['split'](',')){const _0x3ce6c2=_0x2e251f['trim']();if(_0x3ce6c2)_0x5ae504[_0x483121(0x212)](_0x3ce6c2);}}};return _0x59bfa2['IChJV'](_0x2a89db,_0x3352aa[_0x4a54e6(0x21f)]),_0x59bfa2[_0x4a54e6(0x1ec)](_0x2a89db,_0x3352aa[_0x4a54e6(0x21b)]),_0x2a89db(_0x3352aa[_0x4a54e6(0x214)]),_0x2a89db(_0x3352aa[_0x4a54e6(0x1f6)]),[...new Set(_0x5ae504)];}async function downloadToTemp(_0x105e06){const _0x2f5d57=a11_0x5bde,_0x2583ec={'HwCif':function(_0x290e7d,_0x327f0b){return _0x290e7d(_0x327f0b);},'IAuKa':function(_0x57a69d,_0x38fc0d){return _0x57a69d(_0x38fc0d);},'vGAOz':function(_0x193ae3,_0x54a130){return _0x193ae3===_0x54a130;},'IRwzw':_0x2f5d57(0x21e),'SXQOr':'docx','RzUIH':_0x2f5d57(0x20b),'loeUS':_0x2f5d57(0x215),'IeSMb':_0x2f5d57(0x218),'qjEzZ':_0x2f5d57(0x20a),'UgQbv':_0x2f5d57(0x1ff)},_0x221412=await _0x2583ec[_0x2f5d57(0x1f1)](fetch,_0x105e06);if(!_0x221412['ok'])throw new Error(_0x2f5d57(0x21d)+_0x221412['status']+'):\x20'+_0x105e06);const _0x35e2c9=_0x2583ec[_0x2f5d57(0x1ed)](detectKind,_0x105e06),_0x556864=_0x2583ec[_0x2f5d57(0x209)](_0x35e2c9,_0x2583ec[_0x2f5d57(0x1f5)])?_0x2f5d57(0x1f4):_0x2583ec[_0x2f5d57(0x209)](_0x35e2c9,_0x2583ec[_0x2f5d57(0x1f9)])?_0x2583ec['RzUIH']:_0x35e2c9===_0x2583ec[_0x2f5d57(0x1f7)]?_0x2583ec[_0x2f5d57(0x1e6)]:a11_0x1b1b06[_0x2f5d57(0x21a)](new URL(_0x105e06)[_0x2f5d57(0x1e4)])||_0x2583ec[_0x2f5d57(0x1ef)],_0x4b228d=await a11_0x1b1af5['mkdtemp'](a11_0x1b1b06[_0x2f5d57(0x213)](a11_0x29689d['tmpdir'](),_0x2583ec[_0x2f5d57(0x219)])),_0x2cf5b3=a11_0x1b1b06['join'](_0x4b228d,_0x2f5d57(0x1ee)+_0x556864),_0x420a54=Buffer[_0x2f5d57(0x220)](await _0x221412[_0x2f5d57(0x201)]());return await a11_0x1b1af5[_0x2f5d57(0x1e3)](_0x2cf5b3,_0x420a54),_0x2cf5b3;}function a11_0x2630(){const _0x4bd537=['nMXVj','zOCxO','writeFile','pathname','WLnLb','IeSMb','411741dkAujw','bxVQB','QULak','402220sHfIoh','4019080TwaLGc','IChJV','IAuKa','doc','qjEzZ','OMbMB','HwCif','3427524nyvdTJ','17920IizjGq','.pdf','IRwzw','RAG_DOC_URLS','loeUS','LKjvE','SXQOr','2YQAQNJ','resolve','yLdbU','24243070mNJSBq','2395314JzxIIs','llm-agent-rag-','1722dGFWci','arrayBuffer','bULsK','Empty\x20RAG\x20source','YSDOI','jrLAv','docx','ZvRHl','unknown','vGAOz','.bin','.docx','fYwbm','trim','UTHEG','9zbQNka','toLowerCase','endsWith','push','join','RAG_PDF_PATHS','txt','split','test','.txt','UgQbv','extname','RAG_PDF_PATH','IaqKz','Failed\x20to\x20download\x20RAG\x20source\x20(','pdf','RAG_SOURCES','from'];a11_0x2630=function(){return _0x4bd537;};return a11_0x2630();}export async function resolveRagSource(_0x5befb2){const _0x522723=a11_0x5bde,_0x3d6ee2={'OMbMB':function(_0x5dfe70,_0x332de4){return _0x5dfe70(_0x332de4);},'QULak':function(_0x51e8af,_0xc205b8){return _0x51e8af(_0xc205b8);},'YSDOI':function(_0x1f9ecd,_0x2630d7){return _0x1f9ecd(_0x2630d7);}},_0x500591=_0x5befb2[_0x522723(0x20d)]();if(!_0x500591)throw new Error(_0x522723(0x203));if(_0x3d6ee2[_0x522723(0x1f0)](isHttpUrl,_0x500591)){const _0x24a1c9=await _0x3d6ee2[_0x522723(0x1e9)](downloadToTemp,_0x500591);return{'source':_0x500591,'localPath':_0x24a1c9,'kind':_0x3d6ee2['OMbMB'](detectKind,_0x500591),'isTemp':!![]};}const _0x52cb5b=a11_0x1b1b06[_0x522723(0x1fb)](_0x500591);try{await a11_0x1b1af5['access'](_0x52cb5b);}catch{throw new Error('RAG\x20file\x20not\x20found:\x20'+_0x52cb5b);}return{'source':_0x500591,'localPath':_0x52cb5b,'kind':_0x3d6ee2[_0x522723(0x204)](detectKind,_0x52cb5b),'isTemp':![]};}function a11_0x5bde(_0x29c183,_0x2ddc63){_0x29c183=_0x29c183-0x1e3;const _0x2630ee=a11_0x2630();let _0x5bde1d=_0x2630ee[_0x29c183];return _0x5bde1d;}export async function resolveRagSources(_0x217583){const _0x151fe5=a11_0x5bde,_0x5ae5f1={'fYwbm':function(_0x585b4b,_0xc463e5){return _0x585b4b(_0xc463e5);}},_0x4c0539=[];for(const _0x2526cc of _0x217583){_0x4c0539[_0x151fe5(0x212)](await _0x5ae5f1[_0x151fe5(0x20c)](resolveRagSource,_0x2526cc));}return _0x4c0539;}
package/dist/redis.d.ts CHANGED
@@ -6,4 +6,3 @@ export type RuntimeRedis = {
6
6
  };
7
7
  /** Creates a Redis client for flow state + optional answer cache. */
8
8
  export declare function createRedis(redisUrl: string): RuntimeRedis;
9
- //# sourceMappingURL=redis.d.ts.map
package/dist/redis.js CHANGED
@@ -1,18 +1 @@
1
- import { createClient } from "redis";
2
- /** Creates a Redis client for flow state + optional answer cache. */
3
- export function createRedis(redisUrl) {
4
- const client = createClient({ url: redisUrl });
5
- return {
6
- client,
7
- connect: async () => {
8
- if (!client.isOpen) {
9
- await client.connect();
10
- }
11
- },
12
- disconnect: async () => {
13
- if (client.isOpen) {
14
- await client.disconnect();
15
- }
16
- },
17
- };
18
- }
1
+ (function(_0xc893bf,_0x924cec){const _0x150560=a12_0x47f8,_0x718b87=_0xc893bf();while(!![]){try{const _0x18469d=-parseInt(_0x150560(0x139))/0x1+parseInt(_0x150560(0x134))/0x2+-parseInt(_0x150560(0x131))/0x3+parseInt(_0x150560(0x13a))/0x4*(-parseInt(_0x150560(0x135))/0x5)+parseInt(_0x150560(0x12d))/0x6+parseInt(_0x150560(0x133))/0x7*(-parseInt(_0x150560(0x136))/0x8)+parseInt(_0x150560(0x12f))/0x9*(parseInt(_0x150560(0x12e))/0xa);if(_0x18469d===_0x924cec)break;else _0x718b87['push'](_0x718b87['shift']());}catch(_0x4986c7){_0x718b87['push'](_0x718b87['shift']());}}}(a12_0x459b,0xb2ef5));import{createClient}from'redis';function a12_0x47f8(_0x3c3bbc,_0x4d0988){_0x3c3bbc=_0x3c3bbc-0x12d;const _0x459b46=a12_0x459b();let _0x47f8f8=_0x459b46[_0x3c3bbc];return _0x47f8f8;}function a12_0x459b(){const _0x548beb=['woDCY','1913191vCmcyr','709770XauHkc','5HUQJmQ','16tTDdaF','disconnect','error','1051305WsPEJu','362084YwUjDV','isOpen','6115194XIsOpa','90avxJyu','1117305qNXWWg','XgKLp','210060MMpVcj'];a12_0x459b=function(){return _0x548beb;};return a12_0x459b();}const REDIS_CONNECT_TIMEOUT_MS=0x1388;export function createRedis(_0x487dfb){const _0x5e12b1=a12_0x47f8,_0x489e08={'XgKLp':function(_0x47853e,_0x384c6c){return _0x47853e(_0x384c6c);},'woDCY':_0x5e12b1(0x138)},_0x230d5d=_0x489e08[_0x5e12b1(0x130)](createClient,{'url':_0x487dfb,'socket':{'connectTimeout':REDIS_CONNECT_TIMEOUT_MS}});return _0x230d5d['on'](_0x489e08[_0x5e12b1(0x132)],()=>{}),{'client':_0x230d5d,'connect':async()=>{const _0x16fcd9=_0x5e12b1;!_0x230d5d[_0x16fcd9(0x13b)]&&await _0x230d5d['connect']();},'disconnect':async()=>{const _0x529c2e=_0x5e12b1;_0x230d5d[_0x529c2e(0x13b)]&&await _0x230d5d[_0x529c2e(0x137)]();}};}
@@ -14,4 +14,3 @@ export declare function createAgentRunner(options: {
14
14
  runAgent: ({ message, threadId, messages, systemPrompt, phoneKey, intent, }: AgentRunInput) => Promise<any>;
15
15
  };
16
16
  export type AgentRunResult = Awaited<ReturnType<ReturnType<typeof createAgentRunner>["runAgent"]>>;
17
- //# sourceMappingURL=agent-runner.d.ts.map
@@ -1,18 +1 @@
1
- import { HumanMessage, SystemMessage } from "@langchain/core/messages";
2
- export function createAgentRunner(options) {
3
- const recursionLimit = options.recursionLimit ?? 6;
4
- const runAgent = async ({ message, threadId, messages, systemPrompt, phoneKey, intent, }) => {
5
- const agent = options.agentFactory.createAgent(phoneKey, intent);
6
- return agent.invoke({
7
- messages: [
8
- new SystemMessage(systemPrompt),
9
- ...messages,
10
- new HumanMessage(message),
11
- ],
12
- }, {
13
- configurable: { thread_id: threadId },
14
- recursionLimit,
15
- });
16
- };
17
- return { runAgent };
18
- }
1
+ (function(_0x4829f4,_0x41a262){const _0x4d9fa4=a13_0x24d1,_0x567bcd=_0x4829f4();while(!![]){try{const _0xd89197=parseInt(_0x4d9fa4(0x92))/0x1+-parseInt(_0x4d9fa4(0x95))/0x2+parseInt(_0x4d9fa4(0x88))/0x3*(parseInt(_0x4d9fa4(0x8c))/0x4)+-parseInt(_0x4d9fa4(0x8e))/0x5*(parseInt(_0x4d9fa4(0x89))/0x6)+parseInt(_0x4d9fa4(0x90))/0x7*(parseInt(_0x4d9fa4(0x94))/0x8)+parseInt(_0x4d9fa4(0x93))/0x9*(parseInt(_0x4d9fa4(0x91))/0xa)+-parseInt(_0x4d9fa4(0x8a))/0xb;if(_0xd89197===_0x41a262)break;else _0x567bcd['push'](_0x567bcd['shift']());}catch(_0x1b0562){_0x567bcd['push'](_0x567bcd['shift']());}}}(a13_0x4fae,0xa35d0));function a13_0x24d1(_0x1633ae,_0x2f0e26){_0x1633ae=_0x1633ae-0x88;const _0x4faeaa=a13_0x4fae();let _0x24d1cf=_0x4faeaa[_0x1633ae];return _0x24d1cf;}import{HumanMessage,SystemMessage}from'@langchain/core/messages';export function createAgentRunner(_0x3a4e79){const _0x45396a=a13_0x24d1,_0x23bafb=_0x3a4e79[_0x45396a(0x8d)]??0x6,_0x1b71fa=async({message:_0x400f58,threadId:_0x5aa1ff,messages:_0xce3785,systemPrompt:_0x445830,phoneKey:_0x573846,intent:_0x2678c8})=>{const _0xde8ad9=_0x45396a,_0xee8830=_0x3a4e79['agentFactory'][_0xde8ad9(0x8f)](_0x573846,_0x2678c8);return _0xee8830[_0xde8ad9(0x8b)]({'messages':[new SystemMessage(_0x445830),..._0xce3785,new HumanMessage(_0x400f58)]},{'configurable':{'thread_id':_0x5aa1ff},'recursionLimit':_0x23bafb});};return{'runAgent':_0x1b71fa};}function a13_0x4fae(){const _0x1fa6a3=['12861qUGElX','7640dSwFeJ','897422KUWHJO','3GzMAOB','145572HlOXKV','8889199iCwqtF','invoke','4078012fVWDem','recursionLimit','175bYpkkm','createAgent','658gCCnyn','5120BlMrwr','934205tbwhAW'];a13_0x4fae=function(){return _0x1fa6a3;};return a13_0x4fae();}
@@ -13,4 +13,3 @@ export declare function createChatCache(options: {
13
13
  clearChatCacheFlowState: (threadId: string) => Promise<void>;
14
14
  };
15
15
  export type ChatCache = ReturnType<typeof createChatCache>;
16
- //# sourceMappingURL=chat-cache.d.ts.map
@@ -1,70 +1 @@
1
- import { normalize } from "../utils/normalize.js";
2
- import { getLastMessageContent } from "../utils/message.js";
3
- const DEFAULT_ANSWER_TTL = 60 * 60 * 24;
4
- const DEFAULT_FLOW_TTL = 60 * 30;
5
- export function createChatCache(options) {
6
- const enabled = Boolean(options.config?.enabled && options.redis);
7
- const answerTtl = options.config?.ttlSeconds ?? DEFAULT_ANSWER_TTL;
8
- const flowTtl = options.config?.flowTtlSeconds ?? DEFAULT_FLOW_TTL;
9
- const scope = options.config?.scope ?? "qa";
10
- const redis = options.redis;
11
- const getCacheKey = (message) => `${scope}:${normalize(message)}`;
12
- const getFlowStateKey = (threadId) => `flow:${threadId}`;
13
- const getCachedAnswer = async (message) => {
14
- if (!enabled || !redis)
15
- return undefined;
16
- const cacheKey = getCacheKey(message);
17
- const cached = await redis.get(cacheKey);
18
- if (!cached)
19
- return undefined;
20
- const cachedResult = JSON.parse(cached);
21
- const cachedAnswer = typeof cachedResult?.answer === "string"
22
- ? cachedResult.answer
23
- : getLastMessageContent(cachedResult?.messages);
24
- if (cachedAnswer)
25
- return cachedAnswer;
26
- await redis.del(cacheKey);
27
- return undefined;
28
- };
29
- const setCachedAnswer = async (message, answer) => {
30
- if (!enabled || !redis)
31
- return;
32
- await redis.set(getCacheKey(message), JSON.stringify({ answer }), {
33
- EX: answerTtl,
34
- });
35
- };
36
- const deleteCachedAnswer = async (message) => {
37
- if (!redis)
38
- return;
39
- await redis.del(getCacheKey(message));
40
- };
41
- const setChatCacheFlowState = async (threadId, flowState) => {
42
- if (!redis)
43
- return;
44
- await redis.set(getFlowStateKey(threadId), JSON.stringify(flowState), {
45
- EX: flowTtl,
46
- });
47
- };
48
- const getChatCacheFlowState = async (threadId) => {
49
- if (!redis)
50
- return null;
51
- const cached = await redis.get(getFlowStateKey(threadId));
52
- if (!cached)
53
- return null;
54
- return JSON.parse(cached);
55
- };
56
- const clearChatCacheFlowState = async (threadId) => {
57
- if (!redis)
58
- return;
59
- await redis.del(getFlowStateKey(threadId));
60
- };
61
- return {
62
- enabled,
63
- getCachedAnswer,
64
- setCachedAnswer,
65
- deleteCachedAnswer,
66
- setChatCacheFlowState,
67
- getChatCacheFlowState,
68
- clearChatCacheFlowState,
69
- };
70
- }
1
+ function a14_0x32e7(_0x2e6757,_0x2c5189){_0x2e6757=_0x2e6757-0x190;const _0x2649a2=a14_0x2649();let _0x32e7e7=_0x2649a2[_0x2e6757];return _0x32e7e7;}(function(_0x13738e,_0x45e408){const _0x3018c5=a14_0x32e7,_0x362e1c=_0x13738e();while(!![]){try{const _0x2e9e04=-parseInt(_0x3018c5(0x190))/0x1*(parseInt(_0x3018c5(0x1a3))/0x2)+-parseInt(_0x3018c5(0x1a4))/0x3+-parseInt(_0x3018c5(0x199))/0x4+-parseInt(_0x3018c5(0x19f))/0x5+parseInt(_0x3018c5(0x191))/0x6*(parseInt(_0x3018c5(0x198))/0x7)+-parseInt(_0x3018c5(0x19d))/0x8+-parseInt(_0x3018c5(0x196))/0x9*(-parseInt(_0x3018c5(0x193))/0xa);if(_0x2e9e04===_0x45e408)break;else _0x362e1c['push'](_0x362e1c['shift']());}catch(_0x370d80){_0x362e1c['push'](_0x362e1c['shift']());}}}(a14_0x2649,0x23d55));import{normalize}from'../utils/normalize.js';import{getLastMessageContent}from'../utils/message.js';function a14_0x2649(){const _0xc7ff27=['340924RkKpXv','beFKb','set','config','1775888NGQGBf','flow:','299235MSiClv','nfHEv','answer','flowTtlSeconds','185618DUthyB','695571hhitGf','del','string','stringify','3xkqvXr','1464MNzCMd','scope','3690yZqkEA','lMwrv','get','23949uKQenK','redis','1211gMkOxm'];a14_0x2649=function(){return _0xc7ff27;};return a14_0x2649();}const DEFAULT_ANSWER_TTL=0x3c*0x3c*0x18,DEFAULT_FLOW_TTL=0x3c*0x1e;export function createChatCache(_0x55368c){const _0x13b706=a14_0x32e7,_0x3b635f={'beFKb':function(_0x338a3b,_0x521f01){return _0x338a3b||_0x521f01;},'nfHEv':function(_0xeedc4d,_0x2449f6){return _0xeedc4d(_0x2449f6);},'lMwrv':function(_0xdda718,_0x1218de){return _0xdda718===_0x1218de;},'QUNbz':_0x13b706(0x1a6)},_0x1c4dce=Boolean(_0x55368c[_0x13b706(0x19c)]?.['enabled']&&_0x55368c[_0x13b706(0x197)]),_0x5752d1=_0x55368c[_0x13b706(0x19c)]?.['ttlSeconds']??DEFAULT_ANSWER_TTL,_0x264a12=_0x55368c[_0x13b706(0x19c)]?.[_0x13b706(0x1a2)]??DEFAULT_FLOW_TTL,_0xd4478d=_0x55368c[_0x13b706(0x19c)]?.[_0x13b706(0x192)]??'qa',_0x48a624=_0x55368c['redis'],_0x346594=_0x210c4f=>_0xd4478d+':'+normalize(_0x210c4f),_0x19520a=_0x5ce2ff=>_0x13b706(0x19e)+_0x5ce2ff,_0x4dc0cf=async _0x7f1488=>{const _0x279bdf=_0x13b706;if(_0x3b635f[_0x279bdf(0x19a)](!_0x1c4dce,!_0x48a624))return undefined;const _0x58a848=_0x3b635f[_0x279bdf(0x1a0)](_0x346594,_0x7f1488),_0x34129b=await _0x48a624[_0x279bdf(0x195)](_0x58a848);if(!_0x34129b)return undefined;const _0x4b4d5d=JSON['parse'](_0x34129b),_0x5f4cc4=_0x3b635f[_0x279bdf(0x194)](typeof _0x4b4d5d?.[_0x279bdf(0x1a1)],_0x3b635f['QUNbz'])?_0x4b4d5d['answer']:getLastMessageContent(_0x4b4d5d?.['messages']);if(_0x5f4cc4)return _0x5f4cc4;return await _0x48a624['del'](_0x58a848),undefined;},_0x3ef7c8=async(_0xfc10d8,_0x48ae5f)=>{const _0x3e2412=_0x13b706;if(_0x3b635f[_0x3e2412(0x19a)](!_0x1c4dce,!_0x48a624))return;await _0x48a624[_0x3e2412(0x19b)](_0x346594(_0xfc10d8),JSON[_0x3e2412(0x1a7)]({'answer':_0x48ae5f}),{'EX':_0x5752d1});},_0x3ffc7a=async _0x27fe16=>{const _0x3299c2=_0x13b706;if(!_0x48a624)return;await _0x48a624[_0x3299c2(0x1a5)](_0x3b635f['nfHEv'](_0x346594,_0x27fe16));},_0x5186f1=async(_0x5c87f0,_0x4790de)=>{const _0x5e1f3e=_0x13b706;if(!_0x48a624)return;await _0x48a624[_0x5e1f3e(0x19b)](_0x3b635f[_0x5e1f3e(0x1a0)](_0x19520a,_0x5c87f0),JSON['stringify'](_0x4790de),{'EX':_0x264a12});},_0x306ff2=async _0x2cef6a=>{const _0x1df63c=_0x13b706;if(!_0x48a624)return null;const _0xc5bec4=await _0x48a624['get'](_0x3b635f[_0x1df63c(0x1a0)](_0x19520a,_0x2cef6a));if(!_0xc5bec4)return null;return JSON['parse'](_0xc5bec4);},_0x67dd10=async _0x468de7=>{const _0x3b85d5=_0x13b706;if(!_0x48a624)return;await _0x48a624[_0x3b85d5(0x1a5)](_0x19520a(_0x468de7));};return{'enabled':_0x1c4dce,'getCachedAnswer':_0x4dc0cf,'setCachedAnswer':_0x3ef7c8,'deleteCachedAnswer':_0x3ffc7a,'setChatCacheFlowState':_0x5186f1,'getChatCacheFlowState':_0x306ff2,'clearChatCacheFlowState':_0x67dd10};}
@@ -4,4 +4,3 @@ export declare function createConversationService(agentFactory: AgentFactory): {
4
4
  formatConversationForIntentRouter: (messages: unknown[]) => string;
5
5
  getConversationContextForIntent: (threadId: string) => Promise<string>;
6
6
  };
7
- //# sourceMappingURL=conversation.d.ts.map
@@ -1,68 +1 @@
1
- export function createConversationService(agentFactory) {
2
- // Keep intent-router prompts small (matches Xel-agent defaults).
3
- const AGENT_HISTORY_LIMIT = 4;
4
- const INTENT_ROUTER_HISTORY_LIMIT = 3;
5
- const INTENT_ROUTER_MESSAGE_CHAR_LIMIT = 200;
6
- const isHumanOrAiMessage = (message) => {
7
- const type = message._getType?.() ?? message.type ?? "";
8
- return type === "human" || type === "ai";
9
- };
10
- const getManagedConversationMessages = async (threadId) => {
11
- const state = await agentFactory.getAgentState(threadId);
12
- const messages = state.values.messages ?? [];
13
- return messages
14
- .filter((message) => {
15
- if (!isHumanOrAiMessage(message))
16
- return false;
17
- const content = String(message?.content ?? "")
18
- .toLowerCase();
19
- return !(content.includes("tool failed") ||
20
- content.includes("error") ||
21
- content.includes("undefined"));
22
- })
23
- .slice(-AGENT_HISTORY_LIMIT);
24
- };
25
- const getMessageRole = (message) => {
26
- const type = message._getType?.() ?? message.type ?? "";
27
- if (type === "human")
28
- return "User";
29
- if (type === "ai")
30
- return "Assistant";
31
- // Should not happen due to isHumanOrAiMessage filter.
32
- return "User";
33
- };
34
- const getMessageText = (message) => {
35
- const content = message.content;
36
- if (typeof content === "string")
37
- return content.trim();
38
- if (Array.isArray(content)) {
39
- return content
40
- .map((part) => (typeof part === "string" ? part : (part?.text ?? "")))
41
- .join(" ")
42
- .trim();
43
- }
44
- return String(content ?? "").trim();
45
- };
46
- const formatConversationForIntentRouter = (messages) => {
47
- if (messages.length === 0)
48
- return "(no prior messages)";
49
- return messages
50
- .slice(-INTENT_ROUTER_HISTORY_LIMIT)
51
- .map((message) => {
52
- const role = getMessageRole(message);
53
- const text = getMessageText(message).slice(0, INTENT_ROUTER_MESSAGE_CHAR_LIMIT);
54
- return text ? `${role}: ${text}` : null;
55
- })
56
- .filter(Boolean)
57
- .join("\n");
58
- };
59
- const getConversationContextForIntent = async (threadId) => {
60
- const messages = await getManagedConversationMessages(threadId);
61
- return formatConversationForIntentRouter(messages);
62
- };
63
- return {
64
- getManagedConversationMessages,
65
- formatConversationForIntentRouter,
66
- getConversationContextForIntent,
67
- };
68
- }
1
+ function a15_0x9831(_0x216809,_0x4f2978){_0x216809=_0x216809-0xee;const _0x3b2211=a15_0x3b22();let _0x9831d1=_0x3b2211[_0x216809];return _0x9831d1;}function a15_0x3b22(){const _0x2d7935=['undefined','110eZYHRC','TlXZN','map','mwTzB','xDFVV','RKcIo','FFbaI','toLowerCase','pJqgB','HaDKt','VgrUk','zaPJQ','1191090NedhRQ','FbNQG','YaZko','OHVUN','slice','Assistant','_getType','DuSEQ','Zmiip','jIXzm','sJOcI','yhspD','uuFLA','RSXpZ','tool\x20failed','gcUpd','values','17616EvJNeg','GKCbQ','dCdVC','type','203WbsPsQ','WPqTN','JlazW','128840rNXJeU','JNgRh','cYXTX','fgwbN','1907902ZVnsZL','getAgentState','pnesq','AQyPu','isArray','nwYXK','join','RVsoC','SbQas','khlLS','string','error','qwIPj','3428037pADVmZ','human','filter','NbcoW','text','AwWwz','ONDYT','trim','ZbYla','hbNHC','CBXvW','4729056rGpyzQ','EsNZY','includes','content','kasWy','30822786oGUrWR','length','VobJx'];a15_0x3b22=function(){return _0x2d7935;};return a15_0x3b22();}(function(_0xfaeaa6,_0x1079bb){const _0x18fa38=a15_0x9831,_0x13c9bb=_0xfaeaa6();while(!![]){try{const _0x44b4b8=-parseInt(_0x18fa38(0x134))/0x1+parseInt(_0x18fa38(0x107))/0x2+-parseInt(_0x18fa38(0x114))/0x3+parseInt(_0x18fa38(0xfc))/0x4*(parseInt(_0x18fa38(0x128))/0x5)+-parseInt(_0x18fa38(0x11f))/0x6+-parseInt(_0x18fa38(0x100))/0x7*(parseInt(_0x18fa38(0x103))/0x8)+parseInt(_0x18fa38(0x124))/0x9;if(_0x44b4b8===_0x1079bb)break;else _0x13c9bb['push'](_0x13c9bb['shift']());}catch(_0x49db81){_0x13c9bb['push'](_0x13c9bb['shift']());}}}(a15_0x3b22,0xd874b));export function createConversationService(_0x49f58a){const _0x54f41f=a15_0x9831,_0x2a843d={'AQyPu':function(_0x1fc6a6,_0x4979bc){return _0x1fc6a6(_0x4979bc);},'psaRL':function(_0xfdec02,_0x4ab78e){return _0xfdec02!==_0x4ab78e;},'gcUpd':_0x54f41f(0x10c),'fRrBK':'ZvBFg','zaPJQ':function(_0x532c3d,_0x165094){return _0x532c3d===_0x165094;},'uuFLA':_0x54f41f(0x115),'khlLS':function(_0x4cfb9b,_0x28bfbc){return _0x4cfb9b===_0x28bfbc;},'GKCbQ':'User','jIXzm':_0x54f41f(0xf0),'rQxlx':_0x54f41f(0x112),'DuSEQ':_0x54f41f(0x11a),'JNgRh':_0x54f41f(0x127),'kasWy':_0x54f41f(0x129),'sJOcI':function(_0x3db6d3,_0x2c8c03){return _0x3db6d3===_0x2c8c03;},'fgwbN':_0x54f41f(0x111),'qwIPj':function(_0x426e8c,_0x29144c){return _0x426e8c??_0x29144c;},'Zmiip':function(_0x420322,_0x3444be){return _0x420322===_0x3444be;},'OHVUN':_0x54f41f(0x10f),'cwDGR':_0x54f41f(0x117),'kxfCd':function(_0x249166,_0x34073c){return _0x249166===_0x34073c;},'cYXTX':function(_0x133e3f,_0x36af47){return _0x133e3f(_0x36af47);},'AwWwz':function(_0x32cc07,_0xee9327){return _0x32cc07??_0xee9327;},'YaZko':'(no\x20prior\x20messages)','HaDKt':function(_0x4ea134,_0x1eb37c){return _0x4ea134!==_0x1eb37c;},'ZbYla':_0x54f41f(0xf8),'RVsoC':function(_0x806788,_0x230066){return _0x806788===_0x230066;}},_0x4704e6=0x4,_0x56ba2f=0x3,_0xc2693=0xc8,_0x4fcd56=_0x42811d=>{const _0x7bc7df=_0x54f41f,_0x4a2daa={'VgrUk':function(_0x3578e2,_0x36e53f){const _0x43f8aa=a15_0x9831;return _0x2a843d[_0x43f8aa(0x10a)](_0x3578e2,_0x36e53f);},'pnesq':function(_0x1366f3,_0x43d5fb){return _0x1366f3(_0x43d5fb);}};if(_0x2a843d['psaRL'](_0x2a843d[_0x7bc7df(0xfa)],_0x2a843d['fRrBK'])){const _0x26e80a=_0x42811d[_0x7bc7df(0xf1)]?.()??_0x42811d[_0x7bc7df(0xff)]??'';return _0x2a843d[_0x7bc7df(0x133)](_0x26e80a,_0x2a843d['uuFLA'])||_0x2a843d[_0x7bc7df(0x110)](_0x26e80a,'ai');}else{const _0x1efa7b=_0x4a2daa[_0x7bc7df(0x132)](_0x1b85a2,_0x1472c2),_0x9b2203=_0x4a2daa[_0x7bc7df(0x109)](_0x46da11,_0x1e8856)[_0x7bc7df(0xef)](0x0,_0x153f4d);return _0x9b2203?_0x1efa7b+':\x20'+_0x9b2203:null;}},_0x45a9bb=async _0x5b90da=>{const _0x4db83c=_0x54f41f,_0xcf626e={'eWwAF':function(_0x1aacd3,_0x51d9cb){const _0x447599=a15_0x9831;return _0x2a843d[_0x447599(0x133)](_0x1aacd3,_0x51d9cb);},'FFbaI':_0x2a843d[_0x4db83c(0xf7)],'yhspD':_0x2a843d['GKCbQ'],'pJqgB':function(_0x385770,_0x38a47a){return _0x385770===_0x38a47a;},'JDHOB':_0x2a843d[_0x4db83c(0xf4)],'bfJkf':_0x4db83c(0xf9),'RKcIo':_0x2a843d['rQxlx'],'mwTzB':_0x4db83c(0x120),'hbNHC':_0x2a843d[_0x4db83c(0xf2)],'CBXvW':function(_0x5ce242,_0xa62b4d){const _0x12ea55=_0x4db83c;return _0x2a843d[_0x12ea55(0x10a)](_0x5ce242,_0xa62b4d);},'JlazW':function(_0x5ed233,_0x2a8159){const _0x16caa5=_0x4db83c;return _0x2a843d[_0x16caa5(0x10a)](_0x5ed233,_0x2a8159);},'dCdVC':_0x2a843d[_0x4db83c(0x104)]};if(_0x2a843d[_0x4db83c(0x110)](_0x2a843d[_0x4db83c(0x123)],_0x4db83c(0x12c))){const _0x909c60=_0xdb5c2a[_0x4db83c(0xf1)]?.()??_0x5afc5e[_0x4db83c(0xff)]??'';if(_0xcf626e['eWwAF'](_0x909c60,_0xcf626e[_0x4db83c(0x12e)]))return _0xcf626e[_0x4db83c(0xf6)];if(_0xcf626e[_0x4db83c(0x130)](_0x909c60,'ai'))return _0xcf626e['JDHOB'];return _0xcf626e[_0x4db83c(0xf6)];}else{const _0xf1fdd8=await _0x49f58a[_0x4db83c(0x108)](_0x5b90da),_0xcc6a69=_0xf1fdd8[_0x4db83c(0xfb)]['messages']??[];return _0xcc6a69[_0x4db83c(0x116)](_0x5bdc9d=>{const _0xb6c7f7=_0x4db83c;if(_0xcf626e['eWwAF'](_0xcf626e[_0xb6c7f7(0x12b)],_0xcf626e[_0xb6c7f7(0x11d)])){if(!_0x39dfe(_0x41c740))return![];const _0x1b4cb5=_0x5d24b8(_0x4540a4?.[_0xb6c7f7(0x122)]??'')[_0xb6c7f7(0x12f)]();return!(_0x1b4cb5[_0xb6c7f7(0x121)](_0xcf626e['bfJkf'])||_0x1b4cb5['includes'](_0xcf626e[_0xb6c7f7(0x12d)])||_0x1b4cb5[_0xb6c7f7(0x121)](_0xb6c7f7(0x127)));}else{if(!_0xcf626e[_0xb6c7f7(0x11e)](_0x4fcd56,_0x5bdc9d))return![];const _0x651791=_0xcf626e[_0xb6c7f7(0x102)](String,_0x5bdc9d?.[_0xb6c7f7(0x122)]??'')['toLowerCase']();return!(_0x651791[_0xb6c7f7(0x121)](_0xcf626e['bfJkf'])||_0x651791[_0xb6c7f7(0x121)](_0xcf626e[_0xb6c7f7(0x12d)])||_0x651791[_0xb6c7f7(0x121)](_0xcf626e[_0xb6c7f7(0xfe)]));}})[_0x4db83c(0xef)](-_0x4704e6);}},_0x4dc498=_0x2311b5=>{const _0x57164a=_0x54f41f,_0x287b7d=_0x2311b5[_0x57164a(0xf1)]?.()??_0x2311b5[_0x57164a(0xff)]??'';if(_0x2a843d[_0x57164a(0xf5)](_0x287b7d,_0x2a843d['uuFLA']))return _0x2a843d['GKCbQ'];if(_0x2a843d[_0x57164a(0xf5)](_0x287b7d,'ai'))return _0x2a843d['jIXzm'];return _0x2a843d[_0x57164a(0xfd)];},_0xb18b61=_0x49fec1=>{const _0x4f34fd=_0x54f41f,_0x7ffc69={'VobJx':_0x2a843d['fgwbN'],'hkahC':function(_0x1ea01e,_0x493488){const _0x39befa=a15_0x9831;return _0x2a843d[_0x39befa(0x10a)](_0x1ea01e,_0x493488);},'AONDE':function(_0xff0fc1,_0x23ddd0){const _0x2b8f46=a15_0x9831;return _0x2a843d[_0x2b8f46(0x113)](_0xff0fc1,_0x23ddd0);}};if(_0x2a843d[_0x4f34fd(0xf3)](_0x2a843d[_0x4f34fd(0xee)],_0x2a843d['cwDGR'])){const _0x402950=_0x1c8e2d['content'];if(typeof _0x402950===_0x7ffc69[_0x4f34fd(0x126)])return _0x402950[_0x4f34fd(0x11b)]();if(_0x429047[_0x4f34fd(0x10b)](_0x402950))return _0x402950[_0x4f34fd(0x12a)](_0x1130af=>typeof _0x1130af==='string'?_0x1130af:_0x1130af?.[_0x4f34fd(0x118)]??'')[_0x4f34fd(0x10d)]('\x20')[_0x4f34fd(0x11b)]();return _0x7ffc69['hkahC'](_0x168289,_0x7ffc69['AONDE'](_0x402950,''))[_0x4f34fd(0x11b)]();}else{const _0x50f6a9=_0x49fec1[_0x4f34fd(0x122)];if(_0x2a843d['kxfCd'](typeof _0x50f6a9,_0x2a843d[_0x4f34fd(0x106)]))return _0x50f6a9['trim']();if(Array['isArray'](_0x50f6a9))return _0x50f6a9['map'](_0x369002=>typeof _0x369002==='string'?_0x369002:_0x369002?.['text']??'')[_0x4f34fd(0x10d)]('\x20')[_0x4f34fd(0x11b)]();return _0x2a843d[_0x4f34fd(0x105)](String,_0x2a843d[_0x4f34fd(0x119)](_0x50f6a9,''))[_0x4f34fd(0x11b)]();}},_0x30780b=_0xfddb0a=>{const _0x30252e=_0x54f41f,_0x3645a9={'FbNQG':function(_0x124945,_0x3820dc){const _0x48d142=a15_0x9831;return _0x2a843d[_0x48d142(0x10a)](_0x124945,_0x3820dc);}};if(_0x2a843d[_0x30252e(0x131)](_0x2a843d[_0x30252e(0x11c)],_0x30252e(0xf8))){const _0x28c172={'WPqTN':function(_0x22f71d,_0x51c53a){const _0x355aed=_0x30252e;return _0x2a843d[_0x355aed(0x105)](_0x22f71d,_0x51c53a);}};if(_0x13dec3[_0x30252e(0x125)]===0x0)return _0x2a843d[_0x30252e(0x136)];return _0x3111c2['slice'](-_0x4821ec)[_0x30252e(0x12a)](_0x32d652=>{const _0x606d1=_0x30252e,_0x4a329b=_0x28c172[_0x606d1(0x101)](_0x2dd2c9,_0x32d652),_0x54a2bd=_0x28c172[_0x606d1(0x101)](_0x184fd4,_0x32d652)['slice'](0x0,_0xb25fb0);return _0x54a2bd?_0x4a329b+':\x20'+_0x54a2bd:null;})['filter'](_0x3920d5)[_0x30252e(0x10d)]('\x0a');}else{if(_0x2a843d[_0x30252e(0x10e)](_0xfddb0a[_0x30252e(0x125)],0x0))return'(no\x20prior\x20messages)';return _0xfddb0a[_0x30252e(0xef)](-_0x56ba2f)[_0x30252e(0x12a)](_0x1b2783=>{const _0x3049b2=_0x30252e,_0x219a6a=_0x3645a9[_0x3049b2(0x135)](_0x4dc498,_0x1b2783),_0x3db628=_0xb18b61(_0x1b2783)[_0x3049b2(0xef)](0x0,_0xc2693);return _0x3db628?_0x219a6a+':\x20'+_0x3db628:null;})[_0x30252e(0x116)](Boolean)['join']('\x0a');}},_0x53bb19=async _0x2d34d2=>{const _0x2e9eed=_0x54f41f,_0x969108=await _0x45a9bb(_0x2d34d2);return _0x2a843d[_0x2e9eed(0x10a)](_0x30780b,_0x969108);};return{'getManagedConversationMessages':_0x45a9bb,'formatConversationForIntentRouter':_0x30780b,'getConversationContextForIntent':_0x53bb19};}
@@ -30,4 +30,3 @@ export declare function extractRawToolOutputs(messages: unknown[]): Record<strin
30
30
  export declare function createToolOutputExtractor(extractors: ToolExtractorMap, initialOutputs?: () => Record<string, unknown>, options?: {
31
31
  includeUnknown?: boolean;
32
32
  }): (messages: unknown[]) => Record<string, unknown>;
33
- //# sourceMappingURL=extract.d.ts.map