draken 0.5.1 → 0.7.0
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/CHANGELOG.md +40 -0
- package/MEMORY.md +43 -6
- package/PERSONA.md +9 -2
- package/README.md +14 -14
- package/SETUP.md +23 -3
- package/TRAY.md +4 -4
- package/VOICE.md +1 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +0 -13
- package/dist/auth/middleware.js.map +1 -1
- package/dist/cli.js +6 -2
- package/dist/cli.js.map +1 -1
- package/dist/data-dir.d.ts +2 -0
- package/dist/data-dir.d.ts.map +1 -0
- package/dist/data-dir.js +12 -0
- package/dist/data-dir.js.map +1 -0
- package/dist/db/evidence.d.ts +2 -1
- package/dist/db/evidence.d.ts.map +1 -1
- package/dist/db/evidence.js +6 -5
- package/dist/db/evidence.js.map +1 -1
- package/dist/db/pointer-migration.js +4 -4
- package/dist/db/pointer-migration.js.map +1 -1
- package/dist/db/schema.d.ts +0 -1
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +31 -7
- package/dist/db/schema.js.map +1 -1
- package/dist/errors.d.ts +5 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +12 -0
- package/dist/errors.js.map +1 -0
- package/dist/memory/context.d.ts +2 -9
- package/dist/memory/context.d.ts.map +1 -1
- package/dist/memory/context.js +7 -84
- package/dist/memory/context.js.map +1 -1
- package/dist/memory/embedding-contract.d.ts +5 -0
- package/dist/memory/embedding-contract.d.ts.map +1 -0
- package/dist/memory/embedding-contract.js +12 -0
- package/dist/memory/embedding-contract.js.map +1 -0
- package/dist/memory/embedding-pool.d.ts +1 -2
- package/dist/memory/embedding-pool.d.ts.map +1 -1
- package/dist/memory/embedding-pool.js +9 -9
- package/dist/memory/embedding-pool.js.map +1 -1
- package/dist/memory/embedding-worker.js +2 -1
- package/dist/memory/embedding-worker.js.map +1 -1
- package/dist/{voice/history-focus.d.ts → memory/focus.d.ts} +6 -6
- package/dist/memory/focus.d.ts.map +1 -0
- package/dist/{voice/history-focus.js → memory/focus.js} +6 -6
- package/dist/memory/focus.js.map +1 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +12 -15
- package/dist/memory/index.js.map +1 -1
- package/dist/memory/model-assets.d.ts +5 -0
- package/dist/memory/model-assets.d.ts.map +1 -0
- package/dist/memory/model-assets.js +84 -0
- package/dist/memory/model-assets.js.map +1 -0
- package/dist/memory/model.d.ts +2 -7
- package/dist/memory/model.d.ts.map +1 -1
- package/dist/memory/model.js +13 -83
- package/dist/memory/model.js.map +1 -1
- package/dist/memory/packet.d.ts +9 -0
- package/dist/memory/packet.d.ts.map +1 -0
- package/dist/memory/packet.js +78 -0
- package/dist/memory/packet.js.map +1 -0
- package/dist/memory/passages.d.ts +15 -0
- package/dist/memory/passages.d.ts.map +1 -0
- package/dist/memory/passages.js +22 -0
- package/dist/memory/passages.js.map +1 -0
- package/dist/memory/readiness.d.ts.map +1 -1
- package/dist/memory/readiness.js +2 -6
- package/dist/memory/readiness.js.map +1 -1
- package/dist/memory/service.d.ts +2 -1
- package/dist/memory/service.d.ts.map +1 -1
- package/dist/memory/service.js +46 -22
- package/dist/memory/service.js.map +1 -1
- package/dist/memory/sources.d.ts +0 -1
- package/dist/memory/sources.d.ts.map +1 -1
- package/dist/memory/sources.js +3 -7
- package/dist/memory/sources.js.map +1 -1
- package/dist/memory/stamps.d.ts +3 -3
- package/dist/memory/stamps.d.ts.map +1 -1
- package/dist/memory/stamps.js +3 -3
- package/dist/memory/stamps.js.map +1 -1
- package/dist/memory/storage.d.ts.map +1 -1
- package/dist/memory/storage.js +3 -2
- package/dist/memory/storage.js.map +1 -1
- package/dist/memory/types.d.ts +2 -1
- package/dist/memory/types.d.ts.map +1 -1
- package/dist/memory/types.js +2 -1
- package/dist/memory/types.js.map +1 -1
- package/dist/pi/runtime.js +7 -7
- package/dist/pi/runtime.js.map +1 -1
- package/dist/pi/setup.d.ts +0 -1
- package/dist/pi/setup.d.ts.map +1 -1
- package/dist/pi/setup.js +2 -11
- package/dist/pi/setup.js.map +1 -1
- package/dist/routes/auth.d.ts.map +1 -1
- package/dist/routes/auth.js +0 -5
- package/dist/routes/auth.js.map +1 -1
- package/dist/routes/http.d.ts +6 -0
- package/dist/routes/http.d.ts.map +1 -0
- package/dist/routes/http.js +22 -0
- package/dist/routes/http.js.map +1 -0
- package/dist/routes/live-voice.d.ts.map +1 -1
- package/dist/routes/live-voice.js +18 -32
- package/dist/routes/live-voice.js.map +1 -1
- package/dist/routes/memory.d.ts.map +1 -1
- package/dist/routes/memory.js +8 -14
- package/dist/routes/memory.js.map +1 -1
- package/dist/routes/sync.d.ts.map +1 -1
- package/dist/routes/sync.js +65 -65
- package/dist/routes/sync.js.map +1 -1
- package/dist/routes/voice.d.ts.map +1 -1
- package/dist/routes/voice.js +7 -7
- package/dist/routes/voice.js.map +1 -1
- package/dist/server-ownership.d.ts +5 -0
- package/dist/server-ownership.d.ts.map +1 -0
- package/dist/server-ownership.js +34 -0
- package/dist/server-ownership.js.map +1 -0
- package/dist/server-state.js +3 -3
- package/dist/server-state.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +40 -10
- package/dist/server.js.map +1 -1
- package/dist/sync/activity.d.ts +26 -0
- package/dist/sync/activity.d.ts.map +1 -0
- package/dist/sync/activity.js +80 -0
- package/dist/sync/activity.js.map +1 -0
- package/dist/{memory/automatic.d.ts → sync/background.d.ts} +7 -12
- package/dist/sync/background.d.ts.map +1 -0
- package/dist/sync/background.js +184 -0
- package/dist/sync/background.js.map +1 -0
- package/dist/sync/collector.d.ts.map +1 -1
- package/dist/sync/collector.js +7 -6
- package/dist/sync/collector.js.map +1 -1
- package/dist/sync/manager.d.ts +1 -4
- package/dist/sync/manager.d.ts.map +1 -1
- package/dist/sync/manager.js +29 -49
- package/dist/sync/manager.js.map +1 -1
- package/dist/sync/models.d.ts +3 -0
- package/dist/sync/models.d.ts.map +1 -0
- package/dist/sync/models.js +12 -0
- package/dist/sync/models.js.map +1 -0
- package/dist/sync/pi.d.ts +1 -1
- package/dist/sync/pi.d.ts.map +1 -1
- package/dist/sync/pi.js +32 -19
- package/dist/sync/pi.js.map +1 -1
- package/dist/{voice → sync}/preparation.d.ts +0 -1
- package/dist/sync/preparation.d.ts.map +1 -0
- package/dist/{voice → sync}/preparation.js +10 -18
- package/dist/sync/preparation.js.map +1 -0
- package/dist/sync/retrieval.d.ts +3 -0
- package/dist/sync/retrieval.d.ts.map +1 -0
- package/dist/sync/retrieval.js +12 -0
- package/dist/sync/retrieval.js.map +1 -0
- package/dist/sync/source-files.d.ts +2 -4
- package/dist/sync/source-files.d.ts.map +1 -1
- package/dist/sync/source-files.js +5 -20
- package/dist/sync/source-files.js.map +1 -1
- package/dist/sync/store.d.ts +5 -15
- package/dist/sync/store.d.ts.map +1 -1
- package/dist/sync/store.js +41 -90
- package/dist/sync/store.js.map +1 -1
- package/dist/sync/summary-preparation.d.ts +14 -0
- package/dist/sync/summary-preparation.d.ts.map +1 -0
- package/dist/sync/summary-preparation.js +205 -0
- package/dist/sync/summary-preparation.js.map +1 -0
- package/dist/sync/tree.d.ts +17 -1
- package/dist/sync/tree.d.ts.map +1 -1
- package/dist/sync/tree.js +109 -49
- package/dist/sync/tree.js.map +1 -1
- package/dist/sync/usage.d.ts +3 -1
- package/dist/sync/usage.d.ts.map +1 -1
- package/dist/sync/usage.js +27 -9
- package/dist/sync/usage.js.map +1 -1
- package/dist/tray/launcher.js +2 -2
- package/dist/tray/launcher.js.map +1 -1
- package/dist/tray/worker.js +4 -4
- package/dist/tray/worker.js.map +1 -1
- package/dist/types.d.ts +9 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/voice/history-delivery.js +3 -3
- package/dist/voice/history-delivery.js.map +1 -1
- package/dist/voice/live-context.js +3 -3
- package/dist/voice/live-context.js.map +1 -1
- package/dist/voice/live.d.ts +1 -0
- package/dist/voice/live.d.ts.map +1 -1
- package/dist/voice/live.js +57 -34
- package/dist/voice/live.js.map +1 -1
- package/package.json +1 -1
- package/public/assets/index-5bTQNQYG.js +131 -0
- package/public/index.html +1 -1
- package/voice/realtime/README.md +1 -1
- package/voice/realtime/helper-process.mjs +54 -0
- package/voice/realtime/native.mjs +55 -15
- package/voice/realtime/probe-server.mjs +24 -4
- package/voice/realtime/probe.mjs +49 -11
- package/voice/realtime/rpc.mjs +7 -32
- package/voice/realtime/setup.mjs +82 -19
- package/dist/memory/automatic.d.ts.map +0 -1
- package/dist/memory/automatic.js +0 -200
- package/dist/memory/automatic.js.map +0 -1
- package/dist/sync/automatic.d.ts +0 -7
- package/dist/sync/automatic.d.ts.map +0 -1
- package/dist/sync/automatic.js +0 -56
- package/dist/sync/automatic.js.map +0 -1
- package/dist/voice/history-focus.d.ts.map +0 -1
- package/dist/voice/history-focus.js.map +0 -1
- package/dist/voice/preparation.d.ts.map +0 -1
- package/dist/voice/preparation.js.map +0 -1
- package/public/assets/index-DrGvDGTG.js +0 -131
|
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const path_1 = __importDefault(require("path"));
|
|
7
7
|
const worker_threads_1 = require("worker_threads");
|
|
8
8
|
const model_1 = require("./model");
|
|
9
|
+
const embedding_contract_1 = require("./embedding-contract");
|
|
9
10
|
// No database, source-file discovery, download or provider credentials. The
|
|
10
11
|
// owning history process verifies/downloads weights; this lane only reads them.
|
|
11
12
|
if (!worker_threads_1.parentPort || !path_1.default.isAbsolute(worker_threads_1.workerData?.directory || ''))
|
|
@@ -13,7 +14,7 @@ if (!worker_threads_1.parentPort || !path_1.default.isAbsolute(worker_threads_1.
|
|
|
13
14
|
const model = new model_1.LocalEmbedder(worker_threads_1.workerData.directory, worker_threads_1.workerData.threads);
|
|
14
15
|
let busy = false;
|
|
15
16
|
worker_threads_1.parentPort.on('message', async (message) => {
|
|
16
|
-
if (busy || !Number.isSafeInteger(message?.id) || typeof message.text !== 'string' || message.text.length >
|
|
17
|
+
if (busy || !Number.isSafeInteger(message?.id) || typeof message.text !== 'string' || message.text.length > embedding_contract_1.EMBEDDING_TEXT_LIMIT || typeof message.query !== 'boolean') {
|
|
17
18
|
worker_threads_1.parentPort.postMessage({ id: message?.id, error: true });
|
|
18
19
|
return;
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-worker.js","sourceRoot":"","sources":["../../src/memory/embedding-worker.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,mDAAwD;AACxD,mCAAwC;
|
|
1
|
+
{"version":3,"file":"embedding-worker.js","sourceRoot":"","sources":["../../src/memory/embedding-worker.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,mDAAwD;AACxD,mCAAwC;AACxC,6DAA4D;AAE5D,4EAA4E;AAC5E,gFAAgF;AAChF,IAAI,CAAC,2BAAU,IAAI,CAAC,cAAI,CAAC,UAAU,CAAC,2BAAU,EAAE,SAAS,IAAI,EAAE,CAAC;IAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;AAC5G,MAAM,KAAK,GAAG,IAAI,qBAAa,CAAC,2BAAU,CAAC,SAAS,EAAE,2BAAU,CAAC,OAAO,CAAC,CAAC;AAC1E,IAAI,IAAI,GAAG,KAAK,CAAC;AACjB,2BAAU,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,OAAY,EAAE,EAAE;IAC9C,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,yCAAoB,IAAI,OAAO,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACvK,2BAAW,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAAC,OAAO;IACpE,CAAC;IACD,IAAI,GAAG,IAAI,CAAC;IACZ,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9D,2BAAW,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAqB,CAAC,CAAC,CAAC;IACrG,CAAC;IAAC,MAAM,CAAC;QAAC,2BAAW,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAAC,CAAC;YAC7D,CAAC;QAAC,IAAI,GAAG,KAAK,CAAC;IAAC,CAAC;AAC3B,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type Database from 'better-sqlite3';
|
|
2
|
-
import type { HistoryQuery } from '
|
|
3
|
-
export interface
|
|
2
|
+
import type { HistoryQuery } from './types';
|
|
3
|
+
export interface HistoryFocus {
|
|
4
4
|
sessions: string[];
|
|
5
5
|
question: string;
|
|
6
6
|
topics?: string[];
|
|
@@ -8,11 +8,11 @@ export interface VoiceHistoryFocus {
|
|
|
8
8
|
/** Shared text/voice continuity. Only actual saved user turns establish focus;
|
|
9
9
|
* generated replies, briefings and quoted source instructions never select it.
|
|
10
10
|
* Re-resolve against current source permissions when a new call is reserved. */
|
|
11
|
-
export declare function discussionFocus(db: Database.Database, syncId: number, currentUserId?: number):
|
|
11
|
+
export declare function discussionFocus(db: Database.Database, syncId: number, currentUserId?: number): HistoryFocus | undefined;
|
|
12
12
|
/** Resolve scope from admitted session metadata and the actual user's turns,
|
|
13
13
|
* never from commands or project names embedded in retrieved source text. */
|
|
14
|
-
export declare function
|
|
15
|
-
focus:
|
|
14
|
+
export declare function historyQuery(db: Database.Database, question: string, previous?: HistoryFocus): {
|
|
15
|
+
focus: HistoryFocus;
|
|
16
16
|
query: HistoryQuery;
|
|
17
17
|
};
|
|
18
|
-
//# sourceMappingURL=
|
|
18
|
+
//# sourceMappingURL=focus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus.d.ts","sourceRoot":"","sources":["../../src/memory/focus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,MAAM,WAAW,YAAY;IAAG,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE;AAKzF;;gFAEgF;AAChF,wBAAgB,eAAe,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,SAAK,GAAG,YAAY,GAAG,SAAS,CASnH;AAED;6EAC6E;AAC7E,wBAAgB,YAAY,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,YAAY,CAAC;IAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CA4B3I"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.discussionFocus = discussionFocus;
|
|
4
|
-
exports.
|
|
5
|
-
const reconcile_1 = require("
|
|
4
|
+
exports.historyQuery = historyQuery;
|
|
5
|
+
const reconcile_1 = require("./reconcile");
|
|
6
6
|
const common = new Set('hello hi hey can could would please check tell about what whats happening going latest current now doing working work trying achieve project repo repository called have with from this that those these here there where which when your our app application ios native rewrite version status update progress mean meant exactly does how the and for are was were has had you it its into written make want thinking using upload uploading safety missing links visual parity screens screen functional original remains tests testing tested implementation implemented images photos profile navigation blocked blocker blockers unfinished unconfirmed remaining finished completed completion left long longer'.split(' '));
|
|
7
7
|
const words = (text) => [...new Set(text.toLowerCase().match(/[\p{L}\p{N}]+/gu) || [])].filter(word => word.length >= 3 && !common.has(word));
|
|
8
8
|
const conversationQuestion = (question) => /\b(?:what (?:did|have) (?:i|we|you) (?:ask|say|discuss|agree|decide)|(?:previous|earlier|last) (?:call|conversation|discussion)|remember (?:when|what)|quote (?:me|our))\b/i.test(question);
|
|
@@ -17,12 +17,12 @@ function discussionFocus(db, syncId, currentUserId = -1) {
|
|
|
17
17
|
) ORDER BY at DESC LIMIT 30`).all(syncId, currentUserId, syncId);
|
|
18
18
|
let focus;
|
|
19
19
|
for (const turn of users.reverse())
|
|
20
|
-
focus =
|
|
20
|
+
focus = historyQuery(db, turn.content, focus).focus;
|
|
21
21
|
return focus;
|
|
22
22
|
}
|
|
23
23
|
/** Resolve scope from admitted session metadata and the actual user's turns,
|
|
24
24
|
* never from commands or project names embedded in retrieved source text. */
|
|
25
|
-
function
|
|
25
|
+
function historyQuery(db, question, previous) {
|
|
26
26
|
const terms = words(question);
|
|
27
27
|
const rows = db.prepare(`SELECT s.id,s.name,s.cwd FROM agent_sessions s JOIN agent_sources a ON a.id=s.agent
|
|
28
28
|
WHERE s.included=1 AND s.missing=0 AND a.enabled=1 ORDER BY s.id`).all();
|
|
@@ -48,7 +48,7 @@ function voiceHistoryQuery(db, question, previous) {
|
|
|
48
48
|
const topics = namedTopics || (same && /\b(?:here|those|that|exactly)\b/i.test(question) ? previous?.topics : undefined);
|
|
49
49
|
return { focus: { sessions, question: question.slice(0, 2000), topics }, query: {
|
|
50
50
|
question: queryText.slice(0, 2000), ...(sessions.length && !recall ? { session_ids: sessions } : {}),
|
|
51
|
-
kind: recall ? 'conversation' : 'sources', recent, ...(topics && !recall ? { topics } : {}),
|
|
51
|
+
kind: recall ? 'conversation' : 'sources', ...(!recall ? { reconcile: true } : {}), recent, ...(topics && !recall ? { topics } : {}),
|
|
52
52
|
} };
|
|
53
53
|
}
|
|
54
|
-
//# sourceMappingURL=
|
|
54
|
+
//# sourceMappingURL=focus.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"focus.js","sourceRoot":"","sources":["../../src/memory/focus.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAG3C,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,qBAAqB,CAAC;AASrE,OAAO,EAA0C,KAAK,QAAQ,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAmB9J,qBAAa,YAAY;IAIX,OAAO,CAAC,EAAE;IAAqB,OAAO,CAAC,MAAM;IAAqB,OAAO,CAAC,KAAK;IAAY,OAAO,CAAC,IAAI;IAHnH,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,UAAU,CAA4B;gBAC1B,EAAE,EAAE,QAAQ,CAAC,QAAQ,EAAU,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAU,KAAK,EAAE,QAAQ,EAAU,IAAI,GAAE,SAA4B;IAajJ;uFACmF;IACnF,OAAO,CAAC,OAAO;IA4Bf;;uFAEmF;IAC7E,OAAO,CAAC,KAAK,GAAE,OAAO,CAAC,YAAY,CAAM,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,UAAU,UAA4F;IAqE/K;;iFAE6E;IAC7E,OAAO,CAAC,cAAc;YAiBR,WAAW;IAGzB,OAAO,CAAC,QAAQ;IAShB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,MAAM;IASR,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,YAAY,UAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IA2FxG,OAAO,CAAC,MAAM;IAKd,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAI,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,WAAW;CAepE"}
|
package/dist/memory/index.js
CHANGED
|
@@ -39,10 +39,12 @@ const normalize_1 = require("../sync/normalize");
|
|
|
39
39
|
const registry_1 = require("../sources/registry");
|
|
40
40
|
const jsonl_1 = require("../sync/jsonl");
|
|
41
41
|
const storage_1 = require("./storage");
|
|
42
|
+
const embedding_contract_1 = require("./embedding-contract");
|
|
42
43
|
const reconcile_1 = require("./reconcile");
|
|
43
44
|
const stamps_1 = require("./stamps");
|
|
44
45
|
const readiness_1 = require("./readiness");
|
|
45
46
|
const sources_1 = require("./sources");
|
|
47
|
+
const passages_1 = require("./passages");
|
|
46
48
|
const types_1 = require("./types");
|
|
47
49
|
function proximity(text, terms) {
|
|
48
50
|
if (terms.length < 2 || terms.length > 5)
|
|
@@ -101,7 +103,7 @@ class HistoryIndex {
|
|
|
101
103
|
const retained = new Set();
|
|
102
104
|
const existing = new Set(this.db.prepare('SELECT ref FROM records').all().map(row => row.ref));
|
|
103
105
|
const insert = this.db.prepare('INSERT INTO records VALUES(?,?,?,?,?,?,?)');
|
|
104
|
-
const
|
|
106
|
+
const insertPassage = this.db.prepare('INSERT OR IGNORE INTO passages(hash) VALUES(?)');
|
|
105
107
|
const find = this.db.prepare('SELECT id FROM passages WHERE hash=?');
|
|
106
108
|
const words = this.db.prepare('INSERT INTO words(rowid,body) VALUES(?,?)');
|
|
107
109
|
const chunk = this.db.prepare('INSERT INTO chunk_links(ref,offset,passage_id) VALUES(?,?,?)');
|
|
@@ -115,14 +117,11 @@ class HistoryIndex {
|
|
|
115
117
|
continue;
|
|
116
118
|
current.set(item.ref, item);
|
|
117
119
|
insert.run(item.ref, JSON.stringify({ ...item, text: undefined }), item.session_id, item.sync_id, item.at, item.group, item.position);
|
|
118
|
-
for (
|
|
119
|
-
|
|
120
|
-
passage.run(hash);
|
|
120
|
+
for (const { offset, body, hash } of (0, passages_1.passages)(item, this.model.fingerprint)) {
|
|
121
|
+
insertPassage.run(hash);
|
|
121
122
|
const row = find.get(hash);
|
|
122
123
|
const link = chunk.run(item.ref, offset, row.id);
|
|
123
124
|
words.run(link.lastInsertRowid, body);
|
|
124
|
-
if (offset + 800 >= item.text.length)
|
|
125
|
-
break;
|
|
126
125
|
}
|
|
127
126
|
}
|
|
128
127
|
const remove = this.db.prepare('DELETE FROM records WHERE ref=?');
|
|
@@ -200,8 +199,8 @@ class HistoryIndex {
|
|
|
200
199
|
notify('loading');
|
|
201
200
|
const batch = groups.slice(offset, offset + 8), bodies = batch.map(group => {
|
|
202
201
|
const chunk = getChunk.get(group.id), record = this.record(chunk.ref);
|
|
203
|
-
const body =
|
|
204
|
-
if (
|
|
202
|
+
const { body, hash } = (0, passages_1.passage)(record, chunk.offset, this.model.fingerprint);
|
|
203
|
+
if (hash !== chunk.hash)
|
|
205
204
|
throw new Error('Verified search passage changed');
|
|
206
205
|
return body;
|
|
207
206
|
});
|
|
@@ -214,7 +213,7 @@ class HistoryIndex {
|
|
|
214
213
|
if (vectors.length !== batch.length)
|
|
215
214
|
throw new Error('Incomplete embedding batch');
|
|
216
215
|
const embeddings = vectors.map(vector => {
|
|
217
|
-
if (!(
|
|
216
|
+
if (!(0, embedding_contract_1.validEmbedding)(vector))
|
|
218
217
|
throw new Error('Invalid embedding');
|
|
219
218
|
return Buffer.from(vector.buffer, vector.byteOffset, vector.byteLength);
|
|
220
219
|
});
|
|
@@ -247,12 +246,10 @@ class HistoryIndex {
|
|
|
247
246
|
continue;
|
|
248
247
|
const rows = chunks.all(record.ref);
|
|
249
248
|
let count = 0;
|
|
250
|
-
for (
|
|
251
|
-
const row = rows[count++]
|
|
249
|
+
for (const { offset, hash } of (0, passages_1.passages)(record, this.model.fingerprint)) {
|
|
250
|
+
const row = rows[count++];
|
|
252
251
|
if (!row || row.offset !== offset || row.hash !== hash || row.embedded !== 1)
|
|
253
252
|
throw new Error('History needs preparation before calling.');
|
|
254
|
-
if (offset + 800 >= record.text.length)
|
|
255
|
-
break;
|
|
256
253
|
}
|
|
257
254
|
if (rows.length !== count)
|
|
258
255
|
throw new Error('Prepared history changed.');
|
|
@@ -382,7 +379,7 @@ class HistoryIndex {
|
|
|
382
379
|
const role = record.role === 'user' ? 0.25 : /^Tool requested:/.test(record.text) ? 0.5 : 1;
|
|
383
380
|
const detail = record.role === 'assistant' && /\n(?:[-*] |### |\|)/.test(record.text) ? 1.5 : 1;
|
|
384
381
|
return value.score * role * detail * (query.recent ? 1 + 2 * Math.exp(-age / 0.5) : 1 + 0.4 * Math.exp(-age / 3))
|
|
385
|
-
* proximity(record.text.slice(value.chunk.offset, value.chunk.offset +
|
|
382
|
+
* proximity(record.text.slice(value.chunk.offset, value.chunk.offset + passages_1.PASSAGE_CHARACTERS), terms);
|
|
386
383
|
};
|
|
387
384
|
const rankings = scoresByQuery.map((scores, i) => [...scores.values()].sort((a, b) => rank(b, termSets[i]) - rank(a, termSets[i]) || a.chunk.id - b.chunk.id));
|
|
388
385
|
const ranked = rankings.flat(), topicLeaders = [0, 1].flatMap(i => rankings.slice(1).flatMap(rows => rows[i] ? [rows[i]] : []));
|
|
@@ -434,7 +431,7 @@ class HistoryIndex {
|
|
|
434
431
|
const before = records.slice(0, at).reverse().find(row => row.identity !== item.identity);
|
|
435
432
|
const after = records.slice(at + 1).find(row => row.identity !== item.identity && row.identity !== before?.identity);
|
|
436
433
|
const neighbors = [before, after].filter((row) => Boolean(row)).map(row => ({ ...row, text: row.text.slice(0, 600) }));
|
|
437
|
-
return { record: { ...item, text: item.text.slice(offset, offset +
|
|
434
|
+
return { record: { ...item, text: item.text.slice(offset, offset + types_1.HISTORY_PAGE_CHARACTERS) }, offset, total: item.text.length, neighbors };
|
|
438
435
|
}
|
|
439
436
|
}
|
|
440
437
|
exports.HistoryIndex = HistoryIndex;
|
package/dist/memory/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ReportHistory } from './types';
|
|
2
|
+
export declare function modelFilesPresent(directory: string): boolean;
|
|
3
|
+
export declare function verifyModelFiles(directory: string): Promise<void>;
|
|
4
|
+
export declare function prepareModelFiles(directory: string, report?: ReportHistory, allowDownload?: boolean): Promise<void>;
|
|
5
|
+
//# sourceMappingURL=model-assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-assets.d.ts","sourceRoot":"","sources":["../../src/memory/model-assets.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAG5D,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE5D;AAQD,wBAAsB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvE;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,EAAE,aAAa,UAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBtH"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.modelFilesPresent = modelFilesPresent;
|
|
7
|
+
exports.verifyModelFiles = verifyModelFiles;
|
|
8
|
+
exports.prepareModelFiles = prepareModelFiles;
|
|
9
|
+
const fs_1 = __importDefault(require("fs"));
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const crypto_1 = require("crypto");
|
|
12
|
+
const model_files_1 = require("./model-files");
|
|
13
|
+
const types_1 = require("./types");
|
|
14
|
+
// Presence is a cheap readiness hint; inference still verifies the actual bytes.
|
|
15
|
+
function modelFilesPresent(directory) {
|
|
16
|
+
return model_files_1.FILES.every(file => { try {
|
|
17
|
+
return fs_1.default.statSync(path_1.default.join(directory, file.name)).size === file.size;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
} });
|
|
22
|
+
}
|
|
23
|
+
async function verified(directory, file) {
|
|
24
|
+
const hash = (0, crypto_1.createHash)('sha256');
|
|
25
|
+
try {
|
|
26
|
+
for await (const chunk of fs_1.default.createReadStream(path_1.default.join(directory, file.name)))
|
|
27
|
+
hash.update(chunk);
|
|
28
|
+
return hash.digest('hex') === file.sha;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
async function verifyModelFiles(directory) {
|
|
35
|
+
for (const file of model_files_1.FILES)
|
|
36
|
+
if (!await verified(directory, file))
|
|
37
|
+
throw new Error('Pinned embedding files are missing or damaged. Retry the history request to repair them.');
|
|
38
|
+
}
|
|
39
|
+
async function prepareModelFiles(directory, report, allowDownload = true) {
|
|
40
|
+
const total = model_files_1.FILES.reduce((sum, file) => sum + file.size, 0);
|
|
41
|
+
let completed = 0;
|
|
42
|
+
for (const file of model_files_1.FILES) {
|
|
43
|
+
if (await verified(directory, file)) {
|
|
44
|
+
completed += file.size;
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
if (!allowDownload)
|
|
48
|
+
throw new Error('Pinned embedding files are missing or damaged. Prepare history before calling.');
|
|
49
|
+
const progress = (size) => report?.((0, types_1.historyUpdate)('downloading', { downloaded_bytes: completed + size, download_total_bytes: total }));
|
|
50
|
+
progress(0);
|
|
51
|
+
const target = path_1.default.join(directory, file.name), temporary = target + '.part';
|
|
52
|
+
fs_1.default.mkdirSync(path_1.default.dirname(target), { recursive: true, mode: 0o700 });
|
|
53
|
+
const controller = new AbortController(), timer = setTimeout(() => controller.abort(), 300000);
|
|
54
|
+
try {
|
|
55
|
+
const response = await fetch(`https://huggingface.co/${model_files_1.MODEL}/resolve/${model_files_1.REVISION}/${file.name}`, { signal: controller.signal });
|
|
56
|
+
if (!response.ok || !response.body)
|
|
57
|
+
throw new Error('Model download failed');
|
|
58
|
+
const handle = fs_1.default.openSync(temporary, 'w', 0o600), hash = (0, crypto_1.createHash)('sha256');
|
|
59
|
+
let size = 0;
|
|
60
|
+
try {
|
|
61
|
+
for await (const chunk of response.body) {
|
|
62
|
+
size += chunk.length;
|
|
63
|
+
if (size > file.size)
|
|
64
|
+
throw new Error('Model size mismatch');
|
|
65
|
+
hash.update(chunk);
|
|
66
|
+
fs_1.default.writeSync(handle, chunk);
|
|
67
|
+
progress(size);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
finally {
|
|
71
|
+
fs_1.default.closeSync(handle);
|
|
72
|
+
}
|
|
73
|
+
if (size !== file.size || hash.digest('hex') !== file.sha)
|
|
74
|
+
throw new Error('Model checksum mismatch');
|
|
75
|
+
fs_1.default.renameSync(temporary, target);
|
|
76
|
+
completed += file.size;
|
|
77
|
+
}
|
|
78
|
+
finally {
|
|
79
|
+
clearTimeout(timer);
|
|
80
|
+
fs_1.default.rmSync(temporary, { force: true });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=model-assets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-assets.js","sourceRoot":"","sources":["../../src/memory/model-assets.ts"],"names":[],"mappings":"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"}
|
package/dist/memory/model.d.ts
CHANGED
|
@@ -1,14 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
export declare class LocalEmbedder implements Embedder {
|
|
1
|
+
export declare class LocalEmbedder {
|
|
3
2
|
private directory;
|
|
4
3
|
private threads;
|
|
5
|
-
readonly fingerprint = "Xenova/multilingual-e5-small@761b726dd34fb83930e26aab4e9ac3899aa1fa78/q8-mean-normalized-v1";
|
|
6
4
|
private session?;
|
|
7
5
|
private tokenizer?;
|
|
8
|
-
constructor(directory: string, threads
|
|
9
|
-
ready(): boolean;
|
|
10
|
-
private verified;
|
|
11
|
-
setup(report?: ReportHistory, allowDownload?: boolean): Promise<void>;
|
|
6
|
+
constructor(directory: string, threads: number);
|
|
12
7
|
private load;
|
|
13
8
|
embed(text: string, query: boolean): Promise<Float32Array>;
|
|
14
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/memory/model.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/memory/model.ts"],"names":[],"mappings":"AASA,qBAAa,aAAa;IAGZ,OAAO,CAAC,SAAS;IAAU,OAAO,CAAC,OAAO;IAFtD,OAAO,CAAC,OAAO,CAAC,CAAuB;IACvC,OAAO,CAAC,SAAS,CAAC,CAAY;gBACV,SAAS,EAAE,MAAM,EAAU,OAAO,EAAE,MAAM;YAGhD,IAAI;IAYZ,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;CAyBjE"}
|
package/dist/memory/model.js
CHANGED
|
@@ -6,97 +6,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.LocalEmbedder = void 0;
|
|
7
7
|
const fs_1 = __importDefault(require("fs"));
|
|
8
8
|
const path_1 = __importDefault(require("path"));
|
|
9
|
-
const crypto_1 = require("crypto");
|
|
10
|
-
const os_1 = require("os");
|
|
11
9
|
const tokenizers_1 = require("@huggingface/tokenizers");
|
|
12
|
-
const ort = require('onnxruntime-web/wasm');
|
|
13
|
-
const types_1 = require("./types");
|
|
14
|
-
// CPU-only text embeddings. No speech runtime, provider credentials, downloaded
|
|
15
|
-
// executable code or arbitrary model URLs. The owner prepares files on demand.
|
|
16
10
|
const model_files_1 = require("./model-files");
|
|
11
|
+
const model_assets_1 = require("./model-assets");
|
|
12
|
+
const embedding_contract_1 = require("./embedding-contract");
|
|
13
|
+
const ort = require('onnxruntime-web/wasm');
|
|
17
14
|
class LocalEmbedder {
|
|
18
15
|
directory;
|
|
19
16
|
threads;
|
|
20
|
-
fingerprint = model_files_1.MODEL_ID;
|
|
21
17
|
session;
|
|
22
18
|
tokenizer;
|
|
23
|
-
constructor(directory, threads
|
|
19
|
+
constructor(directory, threads) {
|
|
24
20
|
this.directory = directory;
|
|
25
21
|
this.threads = threads;
|
|
26
22
|
if (!Number.isSafeInteger(threads) || threads < 1 || threads > 4)
|
|
27
23
|
throw new Error('Invalid embedding thread budget');
|
|
28
24
|
}
|
|
29
|
-
ready() { return model_files_1.FILES.every(file => { try {
|
|
30
|
-
return fs_1.default.statSync(path_1.default.join(this.directory, file.name)).size === file.size;
|
|
31
|
-
}
|
|
32
|
-
catch {
|
|
33
|
-
return false;
|
|
34
|
-
} }); }
|
|
35
|
-
async verified(file) {
|
|
36
|
-
const hash = (0, crypto_1.createHash)('sha256');
|
|
37
|
-
try {
|
|
38
|
-
for await (const chunk of fs_1.default.createReadStream(path_1.default.join(this.directory, file.name)))
|
|
39
|
-
hash.update(chunk);
|
|
40
|
-
return hash.digest('hex') === file.sha;
|
|
41
|
-
}
|
|
42
|
-
catch {
|
|
43
|
-
return false;
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
async setup(report, allowDownload = true) {
|
|
47
|
-
const total = model_files_1.FILES.reduce((sum, file) => sum + file.size, 0);
|
|
48
|
-
let completed = 0;
|
|
49
|
-
for (const file of model_files_1.FILES) {
|
|
50
|
-
if (await this.verified(file)) {
|
|
51
|
-
completed += file.size;
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
if (!allowDownload)
|
|
55
|
-
throw new Error('Pinned embedding files are missing or damaged. Prepare history before calling.');
|
|
56
|
-
const progress = (size) => report?.((0, types_1.historyUpdate)('downloading', { downloaded_bytes: completed + size, download_total_bytes: total }));
|
|
57
|
-
progress(0);
|
|
58
|
-
const target = path_1.default.join(this.directory, file.name), temporary = target + '.part';
|
|
59
|
-
fs_1.default.mkdirSync(path_1.default.dirname(target), { recursive: true, mode: 0o700 });
|
|
60
|
-
const controller = new AbortController(), timer = setTimeout(() => controller.abort(), 300000);
|
|
61
|
-
try {
|
|
62
|
-
const response = await fetch(`https://huggingface.co/${model_files_1.MODEL}/resolve/${model_files_1.REVISION}/${file.name}`, { signal: controller.signal });
|
|
63
|
-
if (!response.ok || !response.body)
|
|
64
|
-
throw new Error('Model download failed');
|
|
65
|
-
const handle = fs_1.default.openSync(temporary, 'w', 0o600), hash = (0, crypto_1.createHash)('sha256');
|
|
66
|
-
let size = 0;
|
|
67
|
-
try {
|
|
68
|
-
for await (const chunk of response.body) {
|
|
69
|
-
size += chunk.length;
|
|
70
|
-
if (size > file.size)
|
|
71
|
-
throw new Error('Model size mismatch');
|
|
72
|
-
hash.update(chunk);
|
|
73
|
-
fs_1.default.writeSync(handle, chunk);
|
|
74
|
-
progress(size);
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
finally {
|
|
78
|
-
fs_1.default.closeSync(handle);
|
|
79
|
-
}
|
|
80
|
-
if (size !== file.size || hash.digest('hex') !== file.sha)
|
|
81
|
-
throw new Error('Model checksum mismatch');
|
|
82
|
-
fs_1.default.renameSync(temporary, target);
|
|
83
|
-
completed += file.size;
|
|
84
|
-
}
|
|
85
|
-
finally {
|
|
86
|
-
clearTimeout(timer);
|
|
87
|
-
fs_1.default.rmSync(temporary, { force: true });
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
25
|
async load() {
|
|
92
26
|
if (this.session)
|
|
93
27
|
return;
|
|
94
|
-
|
|
95
|
-
if (!await this.verified(file))
|
|
96
|
-
throw new Error('Pinned embedding files are missing or damaged. Retry the history request to repair them.');
|
|
28
|
+
await (0, model_assets_1.verifyModelFiles)(this.directory);
|
|
97
29
|
// WASM is deliberately used on the server: no CUDA installer or browser bundle.
|
|
98
|
-
//
|
|
99
|
-
// The pool caps their combined CPU use, leaving capacity for other work.
|
|
30
|
+
// The owning pool caps combined CPU use across isolated inference lanes.
|
|
100
31
|
ort.env.wasm.numThreads = this.threads;
|
|
101
32
|
ort.env.wasm.proxy = false;
|
|
102
33
|
ort.env.logLevel = 'error';
|
|
@@ -106,9 +37,8 @@ class LocalEmbedder {
|
|
|
106
37
|
async embed(text, query) {
|
|
107
38
|
await this.load();
|
|
108
39
|
const encoded = this.tokenizer.encode(`${query ? 'query' : 'passage'}: ${text}`, { add_special_tokens: false });
|
|
109
|
-
//
|
|
110
|
-
|
|
111
|
-
const pooled = new Float32Array(384);
|
|
40
|
+
// Long code and multilingual passages must contribute beyond their prefix.
|
|
41
|
+
const pooled = new Float32Array(embedding_contract_1.EMBEDDING_DIMENSIONS);
|
|
112
42
|
let weight = 0;
|
|
113
43
|
for (let start = 0; start < encoded.ids.length; start += 480) {
|
|
114
44
|
const ids = [0, ...encoded.ids.slice(start, start + 480), 2];
|
|
@@ -118,11 +48,11 @@ class LocalEmbedder {
|
|
|
118
48
|
const result = await this.session.run({ input_ids: input, attention_mask: mask,
|
|
119
49
|
...(this.session.inputNames.includes('token_type_ids') ? { token_type_ids: segment } : {}) });
|
|
120
50
|
const output = result.last_hidden_state;
|
|
121
|
-
if (!output || output.dims[2] !==
|
|
51
|
+
if (!output || output.dims[2] !== embedding_contract_1.EMBEDDING_DIMENSIONS || !(output.data instanceof Float32Array))
|
|
122
52
|
throw new Error('Unexpected embedding output');
|
|
123
53
|
for (let token = 0; token < ids.length; token++)
|
|
124
|
-
for (let d = 0; d <
|
|
125
|
-
pooled[d] += output.data[token *
|
|
54
|
+
for (let d = 0; d < embedding_contract_1.EMBEDDING_DIMENSIONS; d++)
|
|
55
|
+
pooled[d] += output.data[token * embedding_contract_1.EMBEDDING_DIMENSIONS + d];
|
|
126
56
|
weight += ids.length;
|
|
127
57
|
for (const tensor of Object.values(result))
|
|
128
58
|
tensor.dispose();
|
|
@@ -131,14 +61,14 @@ class LocalEmbedder {
|
|
|
131
61
|
segment.dispose();
|
|
132
62
|
}
|
|
133
63
|
let norm = 0;
|
|
134
|
-
for (let d = 0; d <
|
|
64
|
+
for (let d = 0; d < embedding_contract_1.EMBEDDING_DIMENSIONS; d++) {
|
|
135
65
|
pooled[d] /= weight;
|
|
136
66
|
norm += pooled[d] ** 2;
|
|
137
67
|
}
|
|
138
68
|
norm = Math.sqrt(norm);
|
|
139
69
|
if (!Number.isFinite(norm) || norm === 0)
|
|
140
70
|
throw new Error('Invalid embedding');
|
|
141
|
-
for (let d = 0; d <
|
|
71
|
+
for (let d = 0; d < embedding_contract_1.EMBEDDING_DIMENSIONS; d++)
|
|
142
72
|
pooled[d] /= norm;
|
|
143
73
|
return pooled;
|
|
144
74
|
}
|