cactus-react-native 0.2.6 → 0.2.7
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/lib/commonjs/agent.js +0 -4
- package/lib/commonjs/agent.js.map +1 -1
- package/lib/commonjs/lm.js +36 -12
- package/lib/commonjs/lm.js.map +1 -1
- package/lib/module/agent.js +0 -4
- package/lib/module/agent.js.map +1 -1
- package/lib/module/lm.js +36 -12
- package/lib/module/lm.js.map +1 -1
- package/lib/typescript/agent.d.ts +0 -1
- package/lib/typescript/agent.d.ts.map +1 -1
- package/lib/typescript/lm.d.ts +5 -1
- package/lib/typescript/lm.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/agent.ts +1 -6
- package/src/lm.ts +41 -12
package/lib/commonjs/agent.js
CHANGED
|
@@ -7,10 +7,6 @@ exports.CactusAgent = void 0;
|
|
|
7
7
|
var _lm = require("./lm");
|
|
8
8
|
var _tools = require("./tools");
|
|
9
9
|
class CactusAgent extends _lm.CactusLM {
|
|
10
|
-
constructor(context) {
|
|
11
|
-
super(context);
|
|
12
|
-
this.tools = new _tools.Tools();
|
|
13
|
-
}
|
|
14
10
|
static async init(params, onProgress, cactusToken, retryOptions) {
|
|
15
11
|
const result = await _lm.CactusLM.init(params, onProgress, cactusToken, retryOptions);
|
|
16
12
|
if (result.error || !result.lm) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_lm","require","_tools","CactusAgent","CactusLM","
|
|
1
|
+
{"version":3,"names":["_lm","require","_tools","CactusAgent","CactusLM","init","params","onProgress","cactusToken","retryOptions","result","error","lm","agent","Object","setPrototypeOf","prototype","tools","Tools","addTool","func","description","parameters","add","getTools","completionWithTools","messages","callback","recursionCount","recursionLimit","length","completion","getSchemas","jinja","newMessages","requiresReset","conversationHistoryManager","processNewMessages","context","rewind","reset","update","role","content","tool_calls","exports"],"sourceRoot":"../../src","sources":["agent.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/lm.js
CHANGED
|
@@ -19,10 +19,29 @@ class CactusLM {
|
|
|
19
19
|
retryOptions
|
|
20
20
|
});
|
|
21
21
|
}
|
|
22
|
-
constructor(context) {
|
|
22
|
+
constructor(context, initParams) {
|
|
23
23
|
this.context = context;
|
|
24
|
+
this.initParams = initParams;
|
|
24
25
|
this.conversationHistoryManager = new _chat.ConversationHistoryManager();
|
|
25
26
|
}
|
|
27
|
+
static isContextNotFoundError(e) {
|
|
28
|
+
const message = String(e?.message ?? e ?? '');
|
|
29
|
+
return /context not found/i.test(message);
|
|
30
|
+
}
|
|
31
|
+
async reinit() {
|
|
32
|
+
const newContext = await (0, _index.initLlama)(this.initParams);
|
|
33
|
+
this.context = newContext;
|
|
34
|
+
this.conversationHistoryManager.reset();
|
|
35
|
+
}
|
|
36
|
+
async run(op) {
|
|
37
|
+
try {
|
|
38
|
+
return await op();
|
|
39
|
+
} catch (e) {
|
|
40
|
+
if (!CactusLM.isContextNotFoundError(e)) throw e;
|
|
41
|
+
await this.reinit();
|
|
42
|
+
return await op();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
26
45
|
static async init(params, onProgress, cactusToken, retryOptions) {
|
|
27
46
|
if (cactusToken) {
|
|
28
47
|
(0, _remote.setCactusToken)(cactusToken);
|
|
@@ -57,7 +76,7 @@ class CactusLM {
|
|
|
57
76
|
try {
|
|
58
77
|
const context = await (0, _index.initLlama)(config, onProgress);
|
|
59
78
|
return {
|
|
60
|
-
lm: new CactusLM(context),
|
|
79
|
+
lm: new CactusLM(context, config),
|
|
61
80
|
error: null
|
|
62
81
|
};
|
|
63
82
|
} catch (e) {
|
|
@@ -91,9 +110,8 @@ class CactusLM {
|
|
|
91
110
|
})();
|
|
92
111
|
CactusLM._initCache.set(key, initPromise);
|
|
93
112
|
const result = await initPromise;
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
}
|
|
113
|
+
// Cache only while in-flight; never cache resolved instances
|
|
114
|
+
CactusLM._initCache.delete(key);
|
|
97
115
|
return result;
|
|
98
116
|
}
|
|
99
117
|
completion = async (messages, params = {}, callback) => {
|
|
@@ -102,16 +120,16 @@ class CactusLM {
|
|
|
102
120
|
requiresReset
|
|
103
121
|
} = this.conversationHistoryManager.processNewMessages(messages);
|
|
104
122
|
if (requiresReset) {
|
|
105
|
-
this.context
|
|
123
|
+
await this.run(() => this.context.rewind());
|
|
106
124
|
this.conversationHistoryManager.reset();
|
|
107
125
|
}
|
|
108
126
|
if (newMessages.length === 0) {
|
|
109
127
|
console.warn('No messages to complete!');
|
|
110
128
|
}
|
|
111
|
-
const result = await this.context.completion({
|
|
129
|
+
const result = await this.run(() => this.context.completion({
|
|
112
130
|
messages: newMessages,
|
|
113
131
|
...params
|
|
114
|
-
}, callback);
|
|
132
|
+
}, callback));
|
|
115
133
|
this.conversationHistoryManager.update(newMessages, {
|
|
116
134
|
role: 'assistant',
|
|
117
135
|
content: result.content
|
|
@@ -153,7 +171,7 @@ class CactusLM {
|
|
|
153
171
|
return result;
|
|
154
172
|
}
|
|
155
173
|
async _handleLocalEmbedding(text, params) {
|
|
156
|
-
return this.context.embedding(text, params);
|
|
174
|
+
return this.run(() => this.context.embedding(text, params));
|
|
157
175
|
}
|
|
158
176
|
async _handleRemoteEmbedding(text) {
|
|
159
177
|
const embeddingValues = await (0, _remote.getVertexAIEmbedding)(text);
|
|
@@ -162,13 +180,19 @@ class CactusLM {
|
|
|
162
180
|
};
|
|
163
181
|
}
|
|
164
182
|
rewind = async () => {
|
|
165
|
-
return this.context
|
|
183
|
+
return this.run(() => this.context.rewind());
|
|
166
184
|
};
|
|
167
185
|
async release() {
|
|
168
|
-
|
|
186
|
+
try {
|
|
187
|
+
return await this.context.release();
|
|
188
|
+
} catch (e) {
|
|
189
|
+
// Treat missing context as already released
|
|
190
|
+
if (CactusLM.isContextNotFoundError(e)) return;
|
|
191
|
+
throw e;
|
|
192
|
+
}
|
|
169
193
|
}
|
|
170
194
|
async stopCompletion() {
|
|
171
|
-
return await this.context.stopCompletion();
|
|
195
|
+
return await this.run(() => this.context.stopCompletion());
|
|
172
196
|
}
|
|
173
197
|
}
|
|
174
198
|
exports.CactusLM = CactusLM;
|
package/lib/commonjs/lm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_index","require","_telemetry","_remote","_chat","CactusLM","_initCache","Map","getCacheKey","params","cactusToken","retryOptions","JSON","stringify","constructor","context","conversationHistoryManager","ConversationHistoryManager","init","onProgress","setCactusToken","key","has","get","initPromise","maxRetries","delayMs","configs","n_gpu_layers","sleep","ms","Promise","resolve","start","Date","now","wait","then","config","lastError","attempt","
|
|
1
|
+
{"version":3,"names":["_index","require","_telemetry","_remote","_chat","CactusLM","_initCache","Map","getCacheKey","params","cactusToken","retryOptions","JSON","stringify","constructor","context","initParams","conversationHistoryManager","ConversationHistoryManager","isContextNotFoundError","e","message","String","test","reinit","newContext","initLlama","reset","run","op","init","onProgress","setCactusToken","key","has","get","initPromise","maxRetries","delayMs","configs","n_gpu_layers","sleep","ms","Promise","resolve","start","Date","now","wait","then","config","lastError","attempt","lm","error","isLastConfig","indexOf","length","isLastAttempt","Telemetry","n_ctx","model","delay","Math","pow","Error","set","result","delete","completion","messages","callback","newMessages","requiresReset","processNewMessages","rewind","console","warn","update","role","content","embedding","text","mode","_handleRemoteEmbedding","_handleLocalEmbedding","remoteError","localError","embeddingValues","getVertexAIEmbedding","release","stopCompletion","exports"],"sourceRoot":"../../src","sources":["lm.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAYA,IAAAC,UAAA,GAAAD,OAAA;AACA,IAAAE,OAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AAbA;;AAoBO,MAAMI,QAAQ,CAAC;EAIpB,OAAeC,UAAU,GAAyC,IAAIC,GAAG,CAAC,CAAC;EAE3E,OAAeC,WAAWA,CAACC,MAAqB,EAAEC,WAAoB,EAAEC,YAAwD,EAAU;IACxI,OAAOC,IAAI,CAACC,SAAS,CAAC;MAAEJ,MAAM;MAAEC,WAAW;MAAEC;IAAa,CAAC,CAAC;EAC9D;EAEUG,WAAWA,CAACC,OAAqB,EAAEC,UAAyB,EAAE;IACtE,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,0BAA0B,GAAG,IAAIC,gCAA0B,CAAC,CAAC;EACpE;EAEA,OAAeC,sBAAsBA,CAACC,CAAU,EAAW;IACzD,MAAMC,OAAO,GAAGC,MAAM,CAAEF,CAAC,EAAUC,OAAO,IAAID,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,oBAAoB,CAACG,IAAI,CAACF,OAAO,CAAC;EAC3C;EAEA,MAAcG,MAAMA,CAAA,EAAkB;IACpC,MAAMC,UAAU,GAAG,MAAM,IAAAC,gBAAS,EAAC,IAAI,CAACV,UAAU,CAAC;IACnD,IAAI,CAACD,OAAO,GAAGU,UAAU;IACzB,IAAI,CAACR,0BAA0B,CAACU,KAAK,CAAC,CAAC;EACzC;EAEA,MAAcC,GAAGA,CAAIC,EAAoB,EAAc;IACrD,IAAI;MACF,OAAO,MAAMA,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,OAAOT,CAAC,EAAE;MACV,IAAI,CAACf,QAAQ,CAACc,sBAAsB,CAACC,CAAC,CAAC,EAAE,MAAMA,CAAC;MAChD,MAAM,IAAI,CAACI,MAAM,CAAC,CAAC;MACnB,OAAO,MAAMK,EAAE,CAAC,CAAC;IACnB;EACF;EAEA,aAAaC,IAAIA,CACfrB,MAAqB,EACrBsB,UAAuC,EACvCrB,WAAoB,EACpBC,YAAwD,EAC/B;IAEzB,IAAID,WAAW,EAAE;MACf,IAAAsB,sBAAc,EAACtB,WAAW,CAAC;IAC7B;IAEA,MAAMuB,GAAG,GAAG5B,QAAQ,CAACG,WAAW,CAACC,MAAM,EAAEC,WAAW,EAAEC,YAAY,CAAC;IACnE,IAAIN,QAAQ,CAACC,UAAU,CAAC4B,GAAG,CAACD,GAAG,CAAC,EAAE;MAChC,OAAO5B,QAAQ,CAACC,UAAU,CAAC6B,GAAG,CAACF,GAAG,CAAC;IACrC;IAEA,MAAMG,WAAW,GAAG,CAAC,YAAY;MAC/B,MAAMC,UAAU,GAAG1B,YAAY,EAAE0B,UAAU,IAAI,CAAC;MAChD,MAAMC,OAAO,GAAG3B,YAAY,EAAE2B,OAAO,IAAI,IAAI;MAE7C,MAAMC,OAAO,GAAG,CACd9B,MAAM,EACN;QAAE,GAAGA,MAAM;QAAE+B,YAAY,EAAE;MAAE,CAAC,CAC/B;MAED,MAAMC,KAAK,GAAIC,EAAU,IAAoB;QAC3C,OAAO,IAAIC,OAAO,CAACC,OAAO,IAAI;UAC5B,MAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;UACxB,MAAMC,IAAI,GAAGA,CAAA,KAAM;YACjB,IAAIF,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK,IAAIH,EAAE,EAAE;cAC5BE,OAAO,CAAC,CAAC;YACX,CAAC,MAAM;cACLD,OAAO,CAACC,OAAO,CAAC,CAAC,CAACK,IAAI,CAACD,IAAI,CAAC;YAC9B;UACF,CAAC;UACDA,IAAI,CAAC,CAAC;QACR,CAAC,CAAC;MACJ,CAAC;MAED,KAAK,MAAME,MAAM,IAAIX,OAAO,EAAE;QAC5B,IAAIY,SAAuB,GAAG,IAAI;QAElC,KAAK,IAAIC,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIf,UAAU,EAAEe,OAAO,EAAE,EAAE;UACtD,IAAI;YACF,MAAMrC,OAAO,GAAG,MAAM,IAAAW,gBAAS,EAACwB,MAAM,EAAEnB,UAAU,CAAC;YACnD,OAAO;cAAEsB,EAAE,EAAE,IAAIhD,QAAQ,CAACU,OAAO,EAAEmC,MAAM,CAAC;cAAEI,KAAK,EAAE;YAAK,CAAC;UAC3D,CAAC,CAAC,OAAOlC,CAAC,EAAE;YACV+B,SAAS,GAAG/B,CAAU;YACtB,MAAMmC,YAAY,GAAGhB,OAAO,CAACiB,OAAO,CAACN,MAAM,CAAC,KAAKX,OAAO,CAACkB,MAAM,GAAG,CAAC;YACnE,MAAMC,aAAa,GAAGN,OAAO,KAAKf,UAAU;YAE5CsB,oBAAS,CAACL,KAAK,CAAClC,CAAC,EAAW;cAC1BoB,YAAY,EAAEU,MAAM,CAACV,YAAY,IAAI,IAAI;cACzCoB,KAAK,EAAEV,MAAM,CAACU,KAAK,IAAI,IAAI;cAC3BC,KAAK,EAAEX,MAAM,CAACW,KAAK,IAAI;YACzB,CAAC,CAAC;YAEF,IAAI,CAACH,aAAa,EAAE;cAClB,MAAMI,KAAK,GAAGxB,OAAO,GAAGyB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEZ,OAAO,GAAG,CAAC,CAAC;cAChD,MAAMX,KAAK,CAACqB,KAAK,CAAC;YACpB,CAAC,MAAM,IAAI,CAACP,YAAY,EAAE;cACxB;YACF;UACF;QACF;QAEA,IAAIhB,OAAO,CAACiB,OAAO,CAACN,MAAM,CAAC,KAAKX,OAAO,CAACkB,MAAM,GAAG,CAAC,IAAIN,SAAS,EAAE;UAC/D,OAAO;YAAEE,EAAE,EAAE,IAAI;YAAEC,KAAK,EAAEH;UAAU,CAAC;QACvC;MACF;MACA,OAAO;QAAEE,EAAE,EAAE,IAAI;QAAEC,KAAK,EAAE,IAAIW,KAAK,CAAC,iDAAiD;MAAE,CAAC;IAC1F,CAAC,EAAE,CAAC;IAEJ5D,QAAQ,CAACC,UAAU,CAAC4D,GAAG,CAACjC,GAAG,EAAEG,WAAW,CAAC;IAEzC,MAAM+B,MAAM,GAAG,MAAM/B,WAAW;IAChC;IACA/B,QAAQ,CAACC,UAAU,CAAC8D,MAAM,CAACnC,GAAG,CAAC;IAC/B,OAAOkC,MAAM;EACf;EAEAE,UAAU,GAAG,MAAAA,CACXC,QAAsC,EACtC7D,MAAwB,GAAG,CAAC,CAAC,EAC7B8D,QAA8B,KACM;IACpC,MAAM;MAAEC,WAAW;MAAEC;IAAc,CAAC,GAClC,IAAI,CAACxD,0BAA0B,CAACyD,kBAAkB,CAACJ,QAAQ,CAAC;IAE9D,IAAIG,aAAa,EAAE;MACjB,MAAM,IAAI,CAAC7C,GAAG,CAAC,MAAM,IAAI,CAACb,OAAO,CAAC4D,MAAM,CAAC,CAAC,CAAC;MAC3C,IAAI,CAAC1D,0BAA0B,CAACU,KAAK,CAAC,CAAC;IACzC;IAEA,IAAI6C,WAAW,CAACf,MAAM,KAAK,CAAC,EAAE;MAC5BmB,OAAO,CAACC,IAAI,CAAC,0BAA0B,CAAC;IAC1C;IAEA,MAAMV,MAAM,GAAG,MAAM,IAAI,CAACvC,GAAG,CAAC,MAC5B,IAAI,CAACb,OAAO,CAACsD,UAAU,CAAC;MAAEC,QAAQ,EAAEE,WAAW;MAAE,GAAG/D;IAAO,CAAC,EAAE8D,QAAQ,CACxE,CAAC;IAED,IAAI,CAACtD,0BAA0B,CAAC6D,MAAM,CAACN,WAAW,EAAE;MAClDO,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAEb,MAAM,CAACa;IAClB,CAAC,CAAC;IAEF,OAAOb,MAAM;EACf,CAAC;EAED,MAAMc,SAASA,CACbC,IAAY,EACZzE,MAAwB,EACxB0E,IAAY,GAAG,OAAO,EACU;IAChC,IAAIhB,MAA6B;IACjC,IAAIhB,SAAuB,GAAG,IAAI;IAElC,IAAIgC,IAAI,KAAK,QAAQ,EAAE;MACrBhB,MAAM,GAAG,MAAM,IAAI,CAACiB,sBAAsB,CAACF,IAAI,CAAC;IAClD,CAAC,MAAM,IAAIC,IAAI,KAAK,OAAO,EAAE;MAC3BhB,MAAM,GAAG,MAAM,IAAI,CAACkB,qBAAqB,CAACH,IAAI,EAAEzE,MAAM,CAAC;IACzD,CAAC,MAAM,IAAI0E,IAAI,KAAK,YAAY,EAAE;MAChC,IAAI;QACFhB,MAAM,GAAG,MAAM,IAAI,CAACkB,qBAAqB,CAACH,IAAI,EAAEzE,MAAM,CAAC;MACzD,CAAC,CAAC,OAAOW,CAAC,EAAE;QACV+B,SAAS,GAAG/B,CAAU;QACtB,IAAI;UACF+C,MAAM,GAAG,MAAM,IAAI,CAACiB,sBAAsB,CAACF,IAAI,CAAC;QAClD,CAAC,CAAC,OAAOI,WAAW,EAAE;UACpB,MAAMnC,SAAS;QACjB;MACF;IACF,CAAC,MAAM,IAAIgC,IAAI,KAAK,aAAa,EAAE;MACjC,IAAI;QACFhB,MAAM,GAAG,MAAM,IAAI,CAACiB,sBAAsB,CAACF,IAAI,CAAC;MAClD,CAAC,CAAC,OAAO9D,CAAC,EAAE;QACV+B,SAAS,GAAG/B,CAAU;QACtB,IAAI;UACF+C,MAAM,GAAG,MAAM,IAAI,CAACkB,qBAAqB,CAACH,IAAI,EAAEzE,MAAM,CAAC;QACzD,CAAC,CAAC,OAAO8E,UAAU,EAAE;UACnB,MAAMpC,SAAS;QACjB;MACF;IACF,CAAC,MAAM;MACL,MAAM,IAAIc,KAAK,CAAC,gBAAgB,GAAGkB,IAAI,GAAG,6DAA6D,CAAC;IAC1G;IACA,OAAOhB,MAAM;EACf;EAEA,MAAgBkB,qBAAqBA,CAACH,IAAY,EAAEzE,MAAwB,EAAkC;IAC5G,OAAO,IAAI,CAACmB,GAAG,CAAC,MAAM,IAAI,CAACb,OAAO,CAACkE,SAAS,CAACC,IAAI,EAAEzE,MAAM,CAAC,CAAC;EAC7D;EAEA,MAAgB2E,sBAAsBA,CAACF,IAAY,EAAkC;IACnF,MAAMM,eAAe,GAAG,MAAM,IAAAC,4BAAoB,EAACP,IAAI,CAAC;IACxD,OAAO;MACLD,SAAS,EAAEO;IACb,CAAC;EACH;EAEAb,MAAM,GAAG,MAAAA,CAAA,KAA2B;IAClC,OAAO,IAAI,CAAC/C,GAAG,CAAC,MAAM,IAAI,CAACb,OAAO,CAAC4D,MAAM,CAAC,CAAC,CAAC;EAC9C,CAAC;EAED,MAAMe,OAAOA,CAAA,EAAkB;IAC7B,IAAI;MACF,OAAO,MAAM,IAAI,CAAC3E,OAAO,CAAC2E,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,OAAOtE,CAAC,EAAE;MACV;MACA,IAAIf,QAAQ,CAACc,sBAAsB,CAACC,CAAC,CAAC,EAAE;MACxC,MAAMA,CAAC;IACT;EACF;EAEA,MAAMuE,cAAcA,CAAA,EAAkB;IACpC,OAAO,MAAM,IAAI,CAAC/D,GAAG,CAAC,MAAM,IAAI,CAACb,OAAO,CAAC4E,cAAc,CAAC,CAAC,CAAC;EAC5D;AAEF;AAACC,OAAA,CAAAvF,QAAA,GAAAA,QAAA","ignoreList":[]}
|
package/lib/module/agent.js
CHANGED
|
@@ -3,10 +3,6 @@
|
|
|
3
3
|
import { CactusLM } from './lm';
|
|
4
4
|
import { Tools } from './tools';
|
|
5
5
|
export class CactusAgent extends CactusLM {
|
|
6
|
-
constructor(context) {
|
|
7
|
-
super(context);
|
|
8
|
-
this.tools = new Tools();
|
|
9
|
-
}
|
|
10
6
|
static async init(params, onProgress, cactusToken, retryOptions) {
|
|
11
7
|
const result = await CactusLM.init(params, onProgress, cactusToken, retryOptions);
|
|
12
8
|
if (result.error || !result.lm) {
|
package/lib/module/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["CactusLM","Tools","CactusAgent","
|
|
1
|
+
{"version":3,"names":["CactusLM","Tools","CactusAgent","init","params","onProgress","cactusToken","retryOptions","result","error","lm","agent","Object","setPrototypeOf","prototype","tools","addTool","func","description","parameters","add","getTools","completionWithTools","messages","callback","recursionCount","recursionLimit","length","completion","getSchemas","jinja","newMessages","requiresReset","conversationHistoryManager","processNewMessages","context","rewind","reset","update","role","content","tool_calls"],"sourceRoot":"../../src","sources":["agent.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/lm.js
CHANGED
|
@@ -15,10 +15,29 @@ export class CactusLM {
|
|
|
15
15
|
retryOptions
|
|
16
16
|
});
|
|
17
17
|
}
|
|
18
|
-
constructor(context) {
|
|
18
|
+
constructor(context, initParams) {
|
|
19
19
|
this.context = context;
|
|
20
|
+
this.initParams = initParams;
|
|
20
21
|
this.conversationHistoryManager = new ConversationHistoryManager();
|
|
21
22
|
}
|
|
23
|
+
static isContextNotFoundError(e) {
|
|
24
|
+
const message = String(e?.message ?? e ?? '');
|
|
25
|
+
return /context not found/i.test(message);
|
|
26
|
+
}
|
|
27
|
+
async reinit() {
|
|
28
|
+
const newContext = await initLlama(this.initParams);
|
|
29
|
+
this.context = newContext;
|
|
30
|
+
this.conversationHistoryManager.reset();
|
|
31
|
+
}
|
|
32
|
+
async run(op) {
|
|
33
|
+
try {
|
|
34
|
+
return await op();
|
|
35
|
+
} catch (e) {
|
|
36
|
+
if (!CactusLM.isContextNotFoundError(e)) throw e;
|
|
37
|
+
await this.reinit();
|
|
38
|
+
return await op();
|
|
39
|
+
}
|
|
40
|
+
}
|
|
22
41
|
static async init(params, onProgress, cactusToken, retryOptions) {
|
|
23
42
|
if (cactusToken) {
|
|
24
43
|
setCactusToken(cactusToken);
|
|
@@ -53,7 +72,7 @@ export class CactusLM {
|
|
|
53
72
|
try {
|
|
54
73
|
const context = await initLlama(config, onProgress);
|
|
55
74
|
return {
|
|
56
|
-
lm: new CactusLM(context),
|
|
75
|
+
lm: new CactusLM(context, config),
|
|
57
76
|
error: null
|
|
58
77
|
};
|
|
59
78
|
} catch (e) {
|
|
@@ -87,9 +106,8 @@ export class CactusLM {
|
|
|
87
106
|
})();
|
|
88
107
|
CactusLM._initCache.set(key, initPromise);
|
|
89
108
|
const result = await initPromise;
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
}
|
|
109
|
+
// Cache only while in-flight; never cache resolved instances
|
|
110
|
+
CactusLM._initCache.delete(key);
|
|
93
111
|
return result;
|
|
94
112
|
}
|
|
95
113
|
completion = async (messages, params = {}, callback) => {
|
|
@@ -98,16 +116,16 @@ export class CactusLM {
|
|
|
98
116
|
requiresReset
|
|
99
117
|
} = this.conversationHistoryManager.processNewMessages(messages);
|
|
100
118
|
if (requiresReset) {
|
|
101
|
-
this.context
|
|
119
|
+
await this.run(() => this.context.rewind());
|
|
102
120
|
this.conversationHistoryManager.reset();
|
|
103
121
|
}
|
|
104
122
|
if (newMessages.length === 0) {
|
|
105
123
|
console.warn('No messages to complete!');
|
|
106
124
|
}
|
|
107
|
-
const result = await this.context.completion({
|
|
125
|
+
const result = await this.run(() => this.context.completion({
|
|
108
126
|
messages: newMessages,
|
|
109
127
|
...params
|
|
110
|
-
}, callback);
|
|
128
|
+
}, callback));
|
|
111
129
|
this.conversationHistoryManager.update(newMessages, {
|
|
112
130
|
role: 'assistant',
|
|
113
131
|
content: result.content
|
|
@@ -149,7 +167,7 @@ export class CactusLM {
|
|
|
149
167
|
return result;
|
|
150
168
|
}
|
|
151
169
|
async _handleLocalEmbedding(text, params) {
|
|
152
|
-
return this.context.embedding(text, params);
|
|
170
|
+
return this.run(() => this.context.embedding(text, params));
|
|
153
171
|
}
|
|
154
172
|
async _handleRemoteEmbedding(text) {
|
|
155
173
|
const embeddingValues = await getVertexAIEmbedding(text);
|
|
@@ -158,13 +176,19 @@ export class CactusLM {
|
|
|
158
176
|
};
|
|
159
177
|
}
|
|
160
178
|
rewind = async () => {
|
|
161
|
-
return this.context
|
|
179
|
+
return this.run(() => this.context.rewind());
|
|
162
180
|
};
|
|
163
181
|
async release() {
|
|
164
|
-
|
|
182
|
+
try {
|
|
183
|
+
return await this.context.release();
|
|
184
|
+
} catch (e) {
|
|
185
|
+
// Treat missing context as already released
|
|
186
|
+
if (CactusLM.isContextNotFoundError(e)) return;
|
|
187
|
+
throw e;
|
|
188
|
+
}
|
|
165
189
|
}
|
|
166
190
|
async stopCompletion() {
|
|
167
|
-
return await this.context.stopCompletion();
|
|
191
|
+
return await this.run(() => this.context.stopCompletion());
|
|
168
192
|
}
|
|
169
193
|
}
|
|
170
194
|
//# sourceMappingURL=lm.js.map
|
package/lib/module/lm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["initLlama","Telemetry","setCactusToken","getVertexAIEmbedding","ConversationHistoryManager","CactusLM","_initCache","Map","getCacheKey","params","cactusToken","retryOptions","JSON","stringify","constructor","context","conversationHistoryManager","init","onProgress","key","has","get","initPromise","maxRetries","delayMs","configs","n_gpu_layers","sleep","ms","Promise","resolve","start","Date","now","wait","then","config","lastError","attempt","lm","error","
|
|
1
|
+
{"version":3,"names":["initLlama","Telemetry","setCactusToken","getVertexAIEmbedding","ConversationHistoryManager","CactusLM","_initCache","Map","getCacheKey","params","cactusToken","retryOptions","JSON","stringify","constructor","context","initParams","conversationHistoryManager","isContextNotFoundError","e","message","String","test","reinit","newContext","reset","run","op","init","onProgress","key","has","get","initPromise","maxRetries","delayMs","configs","n_gpu_layers","sleep","ms","Promise","resolve","start","Date","now","wait","then","config","lastError","attempt","lm","error","isLastConfig","indexOf","length","isLastAttempt","n_ctx","model","delay","Math","pow","Error","set","result","delete","completion","messages","callback","newMessages","requiresReset","processNewMessages","rewind","console","warn","update","role","content","embedding","text","mode","_handleRemoteEmbedding","_handleLocalEmbedding","remoteError","localError","embeddingValues","release","stopCompletion"],"sourceRoot":"../../src","sources":["lm.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAsB,SAAS;AACjD;;AAWA,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,cAAc,EAAEC,oBAAoB,QAAQ,UAAU;AAC/D,SAASC,0BAA0B,QAAQ,QAAQ;AAOnD,OAAO,MAAMC,QAAQ,CAAC;EAIpB,OAAeC,UAAU,GAAyC,IAAIC,GAAG,CAAC,CAAC;EAE3E,OAAeC,WAAWA,CAACC,MAAqB,EAAEC,WAAoB,EAAEC,YAAwD,EAAU;IACxI,OAAOC,IAAI,CAACC,SAAS,CAAC;MAAEJ,MAAM;MAAEC,WAAW;MAAEC;IAAa,CAAC,CAAC;EAC9D;EAEUG,WAAWA,CAACC,OAAqB,EAAEC,UAAyB,EAAE;IACtE,IAAI,CAACD,OAAO,GAAGA,OAAO;IACtB,IAAI,CAACC,UAAU,GAAGA,UAAU;IAC5B,IAAI,CAACC,0BAA0B,GAAG,IAAIb,0BAA0B,CAAC,CAAC;EACpE;EAEA,OAAec,sBAAsBA,CAACC,CAAU,EAAW;IACzD,MAAMC,OAAO,GAAGC,MAAM,CAAEF,CAAC,EAAUC,OAAO,IAAID,CAAC,IAAI,EAAE,CAAC;IACtD,OAAO,oBAAoB,CAACG,IAAI,CAACF,OAAO,CAAC;EAC3C;EAEA,MAAcG,MAAMA,CAAA,EAAkB;IACpC,MAAMC,UAAU,GAAG,MAAMxB,SAAS,CAAC,IAAI,CAACgB,UAAU,CAAC;IACnD,IAAI,CAACD,OAAO,GAAGS,UAAU;IACzB,IAAI,CAACP,0BAA0B,CAACQ,KAAK,CAAC,CAAC;EACzC;EAEA,MAAcC,GAAGA,CAAIC,EAAoB,EAAc;IACrD,IAAI;MACF,OAAO,MAAMA,EAAE,CAAC,CAAC;IACnB,CAAC,CAAC,OAAOR,CAAC,EAAE;MACV,IAAI,CAACd,QAAQ,CAACa,sBAAsB,CAACC,CAAC,CAAC,EAAE,MAAMA,CAAC;MAChD,MAAM,IAAI,CAACI,MAAM,CAAC,CAAC;MACnB,OAAO,MAAMI,EAAE,CAAC,CAAC;IACnB;EACF;EAEA,aAAaC,IAAIA,CACfnB,MAAqB,EACrBoB,UAAuC,EACvCnB,WAAoB,EACpBC,YAAwD,EAC/B;IAEzB,IAAID,WAAW,EAAE;MACfR,cAAc,CAACQ,WAAW,CAAC;IAC7B;IAEA,MAAMoB,GAAG,GAAGzB,QAAQ,CAACG,WAAW,CAACC,MAAM,EAAEC,WAAW,EAAEC,YAAY,CAAC;IACnE,IAAIN,QAAQ,CAACC,UAAU,CAACyB,GAAG,CAACD,GAAG,CAAC,EAAE;MAChC,OAAOzB,QAAQ,CAACC,UAAU,CAAC0B,GAAG,CAACF,GAAG,CAAC;IACrC;IAEA,MAAMG,WAAW,GAAG,CAAC,YAAY;MAC/B,MAAMC,UAAU,GAAGvB,YAAY,EAAEuB,UAAU,IAAI,CAAC;MAChD,MAAMC,OAAO,GAAGxB,YAAY,EAAEwB,OAAO,IAAI,IAAI;MAE7C,MAAMC,OAAO,GAAG,CACd3B,MAAM,EACN;QAAE,GAAGA,MAAM;QAAE4B,YAAY,EAAE;MAAE,CAAC,CAC/B;MAED,MAAMC,KAAK,GAAIC,EAAU,IAAoB;QAC3C,OAAO,IAAIC,OAAO,CAACC,OAAO,IAAI;UAC5B,MAAMC,KAAK,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;UACxB,MAAMC,IAAI,GAAGA,CAAA,KAAM;YACjB,IAAIF,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,KAAK,IAAIH,EAAE,EAAE;cAC5BE,OAAO,CAAC,CAAC;YACX,CAAC,MAAM;cACLD,OAAO,CAACC,OAAO,CAAC,CAAC,CAACK,IAAI,CAACD,IAAI,CAAC;YAC9B;UACF,CAAC;UACDA,IAAI,CAAC,CAAC;QACR,CAAC,CAAC;MACJ,CAAC;MAED,KAAK,MAAME,MAAM,IAAIX,OAAO,EAAE;QAC5B,IAAIY,SAAuB,GAAG,IAAI;QAElC,KAAK,IAAIC,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIf,UAAU,EAAEe,OAAO,EAAE,EAAE;UACtD,IAAI;YACF,MAAMlC,OAAO,GAAG,MAAMf,SAAS,CAAC+C,MAAM,EAAElB,UAAU,CAAC;YACnD,OAAO;cAAEqB,EAAE,EAAE,IAAI7C,QAAQ,CAACU,OAAO,EAAEgC,MAAM,CAAC;cAAEI,KAAK,EAAE;YAAK,CAAC;UAC3D,CAAC,CAAC,OAAOhC,CAAC,EAAE;YACV6B,SAAS,GAAG7B,CAAU;YACtB,MAAMiC,YAAY,GAAGhB,OAAO,CAACiB,OAAO,CAACN,MAAM,CAAC,KAAKX,OAAO,CAACkB,MAAM,GAAG,CAAC;YACnE,MAAMC,aAAa,GAAGN,OAAO,KAAKf,UAAU;YAE5CjC,SAAS,CAACkD,KAAK,CAAChC,CAAC,EAAW;cAC1BkB,YAAY,EAAEU,MAAM,CAACV,YAAY,IAAI,IAAI;cACzCmB,KAAK,EAAET,MAAM,CAACS,KAAK,IAAI,IAAI;cAC3BC,KAAK,EAAEV,MAAM,CAACU,KAAK,IAAI;YACzB,CAAC,CAAC;YAEF,IAAI,CAACF,aAAa,EAAE;cAClB,MAAMG,KAAK,GAAGvB,OAAO,GAAGwB,IAAI,CAACC,GAAG,CAAC,CAAC,EAAEX,OAAO,GAAG,CAAC,CAAC;cAChD,MAAMX,KAAK,CAACoB,KAAK,CAAC;YACpB,CAAC,MAAM,IAAI,CAACN,YAAY,EAAE;cACxB;YACF;UACF;QACF;QAEA,IAAIhB,OAAO,CAACiB,OAAO,CAACN,MAAM,CAAC,KAAKX,OAAO,CAACkB,MAAM,GAAG,CAAC,IAAIN,SAAS,EAAE;UAC/D,OAAO;YAAEE,EAAE,EAAE,IAAI;YAAEC,KAAK,EAAEH;UAAU,CAAC;QACvC;MACF;MACA,OAAO;QAAEE,EAAE,EAAE,IAAI;QAAEC,KAAK,EAAE,IAAIU,KAAK,CAAC,iDAAiD;MAAE,CAAC;IAC1F,CAAC,EAAE,CAAC;IAEJxD,QAAQ,CAACC,UAAU,CAACwD,GAAG,CAAChC,GAAG,EAAEG,WAAW,CAAC;IAEzC,MAAM8B,MAAM,GAAG,MAAM9B,WAAW;IAChC;IACA5B,QAAQ,CAACC,UAAU,CAAC0D,MAAM,CAAClC,GAAG,CAAC;IAC/B,OAAOiC,MAAM;EACf;EAEAE,UAAU,GAAG,MAAAA,CACXC,QAAsC,EACtCzD,MAAwB,GAAG,CAAC,CAAC,EAC7B0D,QAA8B,KACM;IACpC,MAAM;MAAEC,WAAW;MAAEC;IAAc,CAAC,GAClC,IAAI,CAACpD,0BAA0B,CAACqD,kBAAkB,CAACJ,QAAQ,CAAC;IAE9D,IAAIG,aAAa,EAAE;MACjB,MAAM,IAAI,CAAC3C,GAAG,CAAC,MAAM,IAAI,CAACX,OAAO,CAACwD,MAAM,CAAC,CAAC,CAAC;MAC3C,IAAI,CAACtD,0BAA0B,CAACQ,KAAK,CAAC,CAAC;IACzC;IAEA,IAAI2C,WAAW,CAACd,MAAM,KAAK,CAAC,EAAE;MAC5BkB,OAAO,CAACC,IAAI,CAAC,0BAA0B,CAAC;IAC1C;IAEA,MAAMV,MAAM,GAAG,MAAM,IAAI,CAACrC,GAAG,CAAC,MAC5B,IAAI,CAACX,OAAO,CAACkD,UAAU,CAAC;MAAEC,QAAQ,EAAEE,WAAW;MAAE,GAAG3D;IAAO,CAAC,EAAE0D,QAAQ,CACxE,CAAC;IAED,IAAI,CAAClD,0BAA0B,CAACyD,MAAM,CAACN,WAAW,EAAE;MAClDO,IAAI,EAAE,WAAW;MACjBC,OAAO,EAAEb,MAAM,CAACa;IAClB,CAAC,CAAC;IAEF,OAAOb,MAAM;EACf,CAAC;EAED,MAAMc,SAASA,CACbC,IAAY,EACZrE,MAAwB,EACxBsE,IAAY,GAAG,OAAO,EACU;IAChC,IAAIhB,MAA6B;IACjC,IAAIf,SAAuB,GAAG,IAAI;IAElC,IAAI+B,IAAI,KAAK,QAAQ,EAAE;MACrBhB,MAAM,GAAG,MAAM,IAAI,CAACiB,sBAAsB,CAACF,IAAI,CAAC;IAClD,CAAC,MAAM,IAAIC,IAAI,KAAK,OAAO,EAAE;MAC3BhB,MAAM,GAAG,MAAM,IAAI,CAACkB,qBAAqB,CAACH,IAAI,EAAErE,MAAM,CAAC;IACzD,CAAC,MAAM,IAAIsE,IAAI,KAAK,YAAY,EAAE;MAChC,IAAI;QACFhB,MAAM,GAAG,MAAM,IAAI,CAACkB,qBAAqB,CAACH,IAAI,EAAErE,MAAM,CAAC;MACzD,CAAC,CAAC,OAAOU,CAAC,EAAE;QACV6B,SAAS,GAAG7B,CAAU;QACtB,IAAI;UACF4C,MAAM,GAAG,MAAM,IAAI,CAACiB,sBAAsB,CAACF,IAAI,CAAC;QAClD,CAAC,CAAC,OAAOI,WAAW,EAAE;UACpB,MAAMlC,SAAS;QACjB;MACF;IACF,CAAC,MAAM,IAAI+B,IAAI,KAAK,aAAa,EAAE;MACjC,IAAI;QACFhB,MAAM,GAAG,MAAM,IAAI,CAACiB,sBAAsB,CAACF,IAAI,CAAC;MAClD,CAAC,CAAC,OAAO3D,CAAC,EAAE;QACV6B,SAAS,GAAG7B,CAAU;QACtB,IAAI;UACF4C,MAAM,GAAG,MAAM,IAAI,CAACkB,qBAAqB,CAACH,IAAI,EAAErE,MAAM,CAAC;QACzD,CAAC,CAAC,OAAO0E,UAAU,EAAE;UACnB,MAAMnC,SAAS;QACjB;MACF;IACF,CAAC,MAAM;MACL,MAAM,IAAIa,KAAK,CAAC,gBAAgB,GAAGkB,IAAI,GAAG,6DAA6D,CAAC;IAC1G;IACA,OAAOhB,MAAM;EACf;EAEA,MAAgBkB,qBAAqBA,CAACH,IAAY,EAAErE,MAAwB,EAAkC;IAC5G,OAAO,IAAI,CAACiB,GAAG,CAAC,MAAM,IAAI,CAACX,OAAO,CAAC8D,SAAS,CAACC,IAAI,EAAErE,MAAM,CAAC,CAAC;EAC7D;EAEA,MAAgBuE,sBAAsBA,CAACF,IAAY,EAAkC;IACnF,MAAMM,eAAe,GAAG,MAAMjF,oBAAoB,CAAC2E,IAAI,CAAC;IACxD,OAAO;MACLD,SAAS,EAAEO;IACb,CAAC;EACH;EAEAb,MAAM,GAAG,MAAAA,CAAA,KAA2B;IAClC,OAAO,IAAI,CAAC7C,GAAG,CAAC,MAAM,IAAI,CAACX,OAAO,CAACwD,MAAM,CAAC,CAAC,CAAC;EAC9C,CAAC;EAED,MAAMc,OAAOA,CAAA,EAAkB;IAC7B,IAAI;MACF,OAAO,MAAM,IAAI,CAACtE,OAAO,CAACsE,OAAO,CAAC,CAAC;IACrC,CAAC,CAAC,OAAOlE,CAAC,EAAE;MACV;MACA,IAAId,QAAQ,CAACa,sBAAsB,CAACC,CAAC,CAAC,EAAE;MACxC,MAAMA,CAAC;IACT;EACF;EAEA,MAAMmE,cAAcA,CAAA,EAAkB;IACpC,OAAO,MAAM,IAAI,CAAC5D,GAAG,CAAC,MAAM,IAAI,CAACX,OAAO,CAACuE,cAAc,CAAC,CAAC,CAAC;EAC5D;AAEF","ignoreList":[]}
|
|
@@ -16,7 +16,6 @@ export interface AgentCompletionParams extends CompletionParams {
|
|
|
16
16
|
}
|
|
17
17
|
export declare class CactusAgent extends CactusLM {
|
|
18
18
|
private tools;
|
|
19
|
-
protected constructor(context: any);
|
|
20
19
|
static init(params: ContextParams, onProgress?: (progress: number) => void, cactusToken?: string, retryOptions?: {
|
|
21
20
|
maxRetries?: number;
|
|
22
21
|
delayMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,sBAAsB,EACtB,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,EAAE,EAAE,WAAW,GAAG,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,qBAAa,WAAY,SAAQ,QAAQ;IACvC,OAAO,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAA;AAE/B,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,sBAAsB,EACtB,SAAS,EACV,MAAM,SAAS,CAAA;AAEhB,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAA;AAE/B,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,UAAU,iBAAiB;IACzB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;IACnB,EAAE,EAAE,WAAW,GAAG,IAAI,CAAA;CACvB;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,KAAK,CAAC,EAAE,KAAK,CAAA;CACd;AAED,qBAAa,WAAY,SAAQ,QAAQ;IACvC,OAAO,CAAC,KAAK,CAAQ;WAER,IAAI,CACf,MAAM,EAAE,aAAa,EACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EACvC,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,iBAAiB,CAAC;IAY7B,OAAO,CACL,IAAI,EAAE,QAAQ,EACd,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;KAAE,GACvC,QAAQ;IAIX,QAAQ,IAAI,KAAK;IAIX,mBAAmB,CACvB,QAAQ,EAAE,0BAA0B,EAAE,EACtC,MAAM,GAAE,qBAA0B,EAClC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,IAAI,EACpC,cAAc,GAAE,MAAU,EAC1B,cAAc,GAAE,MAAU,GACzB,OAAO,CAAC,sBAAsB,CAAC;CA0CnC"}
|
package/lib/typescript/lm.d.ts
CHANGED
|
@@ -8,9 +8,13 @@ interface CactusLMReturn {
|
|
|
8
8
|
export declare class CactusLM {
|
|
9
9
|
protected context: LlamaContext;
|
|
10
10
|
protected conversationHistoryManager: ConversationHistoryManager;
|
|
11
|
+
private initParams;
|
|
11
12
|
private static _initCache;
|
|
12
13
|
private static getCacheKey;
|
|
13
|
-
protected constructor(context: LlamaContext);
|
|
14
|
+
protected constructor(context: LlamaContext, initParams: ContextParams);
|
|
15
|
+
private static isContextNotFoundError;
|
|
16
|
+
private reinit;
|
|
17
|
+
private run;
|
|
14
18
|
static init(params: ContextParams, onProgress?: (progress: number) => void, cactusToken?: string, retryOptions?: {
|
|
15
19
|
maxRetries?: number;
|
|
16
20
|
delayMs?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lm.d.ts","sourceRoot":"","sources":["../../src/lm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAIhB,OAAO,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAA;AAEnD,UAAU,cAAc;IACtB,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CACpB;AAED,qBAAa,QAAQ;IACnB,SAAS,CAAC,OAAO,EAAE,YAAY,CAAA;IAC/B,SAAS,CAAC,0BAA0B,EAAE,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"lm.d.ts","sourceRoot":"","sources":["../../src/lm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,YAAY,EAAE,MAAM,SAAS,CAAA;AAGjD,OAAO,KAAK,EACV,aAAa,EACb,gBAAgB,EAChB,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,qBAAqB,EACtB,MAAM,SAAS,CAAA;AAIhB,OAAO,EAAE,0BAA0B,EAAE,MAAM,QAAQ,CAAA;AAEnD,UAAU,cAAc;IACtB,EAAE,EAAE,QAAQ,GAAG,IAAI,CAAA;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAA;CACpB;AAED,qBAAa,QAAQ;IACnB,SAAS,CAAC,OAAO,EAAE,YAAY,CAAA;IAC/B,SAAS,CAAC,0BAA0B,EAAE,0BAA0B,CAAA;IAChE,OAAO,CAAC,UAAU,CAAe;IACjC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAmD;IAE5E,OAAO,CAAC,MAAM,CAAC,WAAW;IAI1B,SAAS,aAAa,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa;IAMtE,OAAO,CAAC,MAAM,CAAC,sBAAsB;YAKvB,MAAM;YAMN,GAAG;WAUJ,IAAI,CACf,MAAM,EAAE,aAAa,EACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,EACvC,WAAW,CAAC,EAAE,MAAM,EACpB,YAAY,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GACvD,OAAO,CAAC,cAAc,CAAC;IA4E1B,UAAU,GACR,UAAU,0BAA0B,EAAE,EACtC,SAAQ,gBAAqB,EAC7B,WAAW,CAAC,IAAI,EAAE,GAAG,KAAK,IAAI,KAC7B,OAAO,CAAC,sBAAsB,CAAC,CAuBjC;IAEK,SAAS,CACb,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,eAAe,EACxB,IAAI,GAAE,MAAgB,GACrB,OAAO,CAAC,qBAAqB,CAAC;cAoCjB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAI7F,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAOpF,MAAM,QAAa,OAAO,CAAC,IAAI,CAAC,CAE/B;IAEK,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxB,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAItC"}
|
package/package.json
CHANGED
package/src/agent.ts
CHANGED
|
@@ -27,12 +27,7 @@ export interface AgentCompletionParams extends CompletionParams {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export class CactusAgent extends CactusLM {
|
|
30
|
-
private tools
|
|
31
|
-
|
|
32
|
-
protected constructor(context: any) {
|
|
33
|
-
super(context)
|
|
34
|
-
this.tools = new Tools()
|
|
35
|
-
}
|
|
30
|
+
private tools!: Tools
|
|
36
31
|
|
|
37
32
|
static async init(
|
|
38
33
|
params: ContextParams,
|
package/src/lm.ts
CHANGED
|
@@ -22,18 +22,40 @@ interface CactusLMReturn {
|
|
|
22
22
|
export class CactusLM {
|
|
23
23
|
protected context: LlamaContext
|
|
24
24
|
protected conversationHistoryManager: ConversationHistoryManager
|
|
25
|
-
|
|
25
|
+
private initParams: ContextParams
|
|
26
26
|
private static _initCache: Map<string, Promise<CactusLMReturn>> = new Map();
|
|
27
27
|
|
|
28
28
|
private static getCacheKey(params: ContextParams, cactusToken?: string, retryOptions?: { maxRetries?: number; delayMs?: number }): string {
|
|
29
29
|
return JSON.stringify({ params, cactusToken, retryOptions });
|
|
30
30
|
}
|
|
31
31
|
|
|
32
|
-
protected constructor(context: LlamaContext) {
|
|
32
|
+
protected constructor(context: LlamaContext, initParams: ContextParams) {
|
|
33
33
|
this.context = context
|
|
34
|
+
this.initParams = initParams
|
|
34
35
|
this.conversationHistoryManager = new ConversationHistoryManager()
|
|
35
36
|
}
|
|
36
37
|
|
|
38
|
+
private static isContextNotFoundError(e: unknown): boolean {
|
|
39
|
+
const message = String((e as any)?.message ?? e ?? '')
|
|
40
|
+
return /context not found/i.test(message)
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
private async reinit(): Promise<void> {
|
|
44
|
+
const newContext = await initLlama(this.initParams)
|
|
45
|
+
this.context = newContext
|
|
46
|
+
this.conversationHistoryManager.reset()
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
private async run<T>(op: () => Promise<T>): Promise<T> {
|
|
50
|
+
try {
|
|
51
|
+
return await op()
|
|
52
|
+
} catch (e) {
|
|
53
|
+
if (!CactusLM.isContextNotFoundError(e)) throw e
|
|
54
|
+
await this.reinit()
|
|
55
|
+
return await op()
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
37
59
|
static async init(
|
|
38
60
|
params: ContextParams,
|
|
39
61
|
onProgress?: (progress: number) => void,
|
|
@@ -79,7 +101,7 @@ export class CactusLM {
|
|
|
79
101
|
for (let attempt = 1; attempt <= maxRetries; attempt++) {
|
|
80
102
|
try {
|
|
81
103
|
const context = await initLlama(config, onProgress);
|
|
82
|
-
return { lm: new CactusLM(context), error: null };
|
|
104
|
+
return { lm: new CactusLM(context, config), error: null };
|
|
83
105
|
} catch (e) {
|
|
84
106
|
lastError = e as Error;
|
|
85
107
|
const isLastConfig = configs.indexOf(config) === configs.length - 1;
|
|
@@ -110,9 +132,8 @@ export class CactusLM {
|
|
|
110
132
|
CactusLM._initCache.set(key, initPromise);
|
|
111
133
|
|
|
112
134
|
const result = await initPromise;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
}
|
|
135
|
+
// Cache only while in-flight; never cache resolved instances
|
|
136
|
+
CactusLM._initCache.delete(key);
|
|
116
137
|
return result;
|
|
117
138
|
}
|
|
118
139
|
|
|
@@ -125,7 +146,7 @@ export class CactusLM {
|
|
|
125
146
|
this.conversationHistoryManager.processNewMessages(messages);
|
|
126
147
|
|
|
127
148
|
if (requiresReset) {
|
|
128
|
-
this.context
|
|
149
|
+
await this.run(() => this.context.rewind())
|
|
129
150
|
this.conversationHistoryManager.reset();
|
|
130
151
|
}
|
|
131
152
|
|
|
@@ -133,7 +154,9 @@ export class CactusLM {
|
|
|
133
154
|
console.warn('No messages to complete!');
|
|
134
155
|
}
|
|
135
156
|
|
|
136
|
-
const result = await this.
|
|
157
|
+
const result = await this.run(() =>
|
|
158
|
+
this.context.completion({ messages: newMessages, ...params }, callback),
|
|
159
|
+
)
|
|
137
160
|
|
|
138
161
|
this.conversationHistoryManager.update(newMessages, {
|
|
139
162
|
role: 'assistant',
|
|
@@ -184,7 +207,7 @@ export class CactusLM {
|
|
|
184
207
|
}
|
|
185
208
|
|
|
186
209
|
protected async _handleLocalEmbedding(text: string, params?: EmbeddingParams): Promise<NativeEmbeddingResult> {
|
|
187
|
-
return this.context.embedding(text, params)
|
|
210
|
+
return this.run(() => this.context.embedding(text, params))
|
|
188
211
|
}
|
|
189
212
|
|
|
190
213
|
protected async _handleRemoteEmbedding(text: string): Promise<NativeEmbeddingResult> {
|
|
@@ -195,15 +218,21 @@ export class CactusLM {
|
|
|
195
218
|
}
|
|
196
219
|
|
|
197
220
|
rewind = async (): Promise<void> => {
|
|
198
|
-
return this.context
|
|
221
|
+
return this.run(() => this.context.rewind())
|
|
199
222
|
}
|
|
200
223
|
|
|
201
224
|
async release(): Promise<void> {
|
|
202
|
-
|
|
225
|
+
try {
|
|
226
|
+
return await this.context.release()
|
|
227
|
+
} catch (e) {
|
|
228
|
+
// Treat missing context as already released
|
|
229
|
+
if (CactusLM.isContextNotFoundError(e)) return
|
|
230
|
+
throw e
|
|
231
|
+
}
|
|
203
232
|
}
|
|
204
233
|
|
|
205
234
|
async stopCompletion(): Promise<void> {
|
|
206
|
-
return await this.context.stopCompletion()
|
|
235
|
+
return await this.run(() => this.context.stopCompletion())
|
|
207
236
|
}
|
|
208
237
|
|
|
209
238
|
}
|