draken 0.5.1 → 0.6.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 +19 -0
- package/MEMORY.md +10 -4
- package/PERSONA.md +9 -2
- package/README.md +8 -10
- package/SETUP.md +3 -3
- package/TRAY.md +2 -2
- 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 +7 -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 +57 -64
- 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} +5 -12
- package/dist/sync/background.d.ts.map +1 -0
- package/dist/{memory/automatic.js → sync/background.js} +29 -74
- 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 +1 -14
- package/dist/sync/store.d.ts.map +1 -1
- package/dist/sync/store.js +32 -90
- package/dist/sync/store.js.map +1 -1
- package/dist/sync/tree.d.ts.map +1 -1
- package/dist/sync/tree.js +17 -22
- package/dist/sync/tree.js.map +1 -1
- package/dist/sync/usage.js +3 -3
- 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 +1 -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-DXPfCm7z.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.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
package/dist/db/schema.js
CHANGED
|
@@ -3,24 +3,20 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.getDataDir = getDataDir;
|
|
7
6
|
exports.getDb = getDb;
|
|
8
7
|
exports.initSchema = initSchema;
|
|
9
8
|
exports.closeDb = closeDb;
|
|
10
9
|
const better_sqlite3_1 = __importDefault(require("better-sqlite3"));
|
|
11
10
|
const path_1 = __importDefault(require("path"));
|
|
12
|
-
const
|
|
11
|
+
const data_dir_1 = require("../data-dir");
|
|
13
12
|
const fs_1 = __importDefault(require("fs"));
|
|
14
13
|
const pointer_migration_1 = require("./pointer-migration");
|
|
15
14
|
const snapshot_pointers_1 = require("./snapshot-pointers");
|
|
16
15
|
const agent_migration_1 = require("./agent-migration");
|
|
17
|
-
function getDataDir() {
|
|
18
|
-
return path_1.default.resolve(process.env.DRAKEN_DATA_DIR || path_1.default.join(os_1.default.homedir(), '.draken'));
|
|
19
|
-
}
|
|
20
16
|
let db = null;
|
|
21
17
|
function getDb() {
|
|
22
18
|
if (!db) {
|
|
23
|
-
const dir = getDataDir();
|
|
19
|
+
const dir = (0, data_dir_1.getDataDir)();
|
|
24
20
|
fs_1.default.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
25
21
|
db = new better_sqlite3_1.default(path_1.default.join(dir, 'draken.db'));
|
|
26
22
|
// Set mode before SQLite creates WAL/SHM sidecars, which inherit database permissions.
|
|
@@ -234,8 +230,12 @@ function initSchema(database) {
|
|
|
234
230
|
if (fresh) {
|
|
235
231
|
const seed = database.prepare('INSERT INTO sync_settings(key,value) VALUES (?,?)');
|
|
236
232
|
seed.run('auto_index', 'true');
|
|
237
|
-
seed.run('auto_prepare_conversations', 'true');
|
|
238
233
|
}
|
|
234
|
+
// Preserve the saved indexing choice while withdrawing the retired permission
|
|
235
|
+
// to create snapshots and spend provider quota in the background.
|
|
236
|
+
database.exec(`INSERT OR IGNORE INTO sync_settings(key,value)
|
|
237
|
+
SELECT 'auto_index',value FROM sync_settings WHERE key='auto_prepare_conversations';
|
|
238
|
+
DELETE FROM sync_settings WHERE key IN ('auto_prepare_conversations','auto_preparing_sync','auto_briefing_failed');`);
|
|
239
239
|
})();
|
|
240
240
|
}
|
|
241
241
|
function closeDb() {
|
package/dist/db/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/db/schema.ts"],"names":[],"mappings":"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"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,SAAU,SAAQ,KAAK;IACf,MAAM,EAAE,MAAM;gBAAd,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;CACnD"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpError = void 0;
|
|
4
|
+
class HttpError extends Error {
|
|
5
|
+
status;
|
|
6
|
+
constructor(status, message) {
|
|
7
|
+
super(message);
|
|
8
|
+
this.status = status;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.HttpError = HttpError;
|
|
12
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":";;;AAAA,MAAa,SAAU,SAAQ,KAAK;IACf;IAAnB,YAAmB,MAAc,EAAE,OAAe;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAAlD,WAAM,GAAN,MAAM,CAAQ;IAAqC,CAAC;CACxE;AAFD,8BAEC"}
|
package/dist/memory/context.d.ts
CHANGED
|
@@ -1,13 +1,6 @@
|
|
|
1
|
-
import type { HistoryQuery
|
|
2
|
-
export declare
|
|
3
|
-
export declare function historyContext(question: string, before: string, signal?: AbortSignal, maxBytes?: number, preparedOnly?: boolean, selection?: Pick<HistoryQuery, 'session_ids' | 'kind' | 'recent' | 'topics'>): Promise<{
|
|
1
|
+
import type { HistoryQuery } from './types';
|
|
2
|
+
export declare function historyContext(question: string, before: string, signal?: AbortSignal, maxBytes?: number, preparedOnly?: boolean, selection?: Pick<HistoryQuery, 'session_ids' | 'kind' | 'recent' | 'topics' | 'reconcile'>): Promise<{
|
|
4
3
|
text: string;
|
|
5
4
|
refs: string[];
|
|
6
5
|
}>;
|
|
7
|
-
export declare function historyPacket(found: Pick<HistoryResults, 'results' | 'limitations' | 'reconciliation'> & {
|
|
8
|
-
mode: HistoryResults['mode'] | 'reference_read';
|
|
9
|
-
}, maxBytes?: number, excerptLimit?: number): {
|
|
10
|
-
text: string;
|
|
11
|
-
refs: string[];
|
|
12
|
-
};
|
|
13
6
|
//# sourceMappingURL=context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/memory/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/memory/context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI5C,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,EAAE,QAAQ,SAAO,EAAE,YAAY,UAAQ,EAChI,SAAS,GAAE,IAAI,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,CAAM;;;GAuB/F"}
|
package/dist/memory/context.js
CHANGED
|
@@ -1,26 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DISCUSSION_HISTORY_BYTES = void 0;
|
|
4
3
|
exports.historyContext = historyContext;
|
|
5
|
-
exports.historyPacket = historyPacket;
|
|
6
4
|
const service_1 = require("./service");
|
|
7
5
|
const normalize_1 = require("../sync/normalize");
|
|
8
6
|
const reconcile_1 = require("./reconcile");
|
|
9
|
-
|
|
10
|
-
// in acknowledged context parts; speech length is independent of evidence size.
|
|
11
|
-
exports.DISCUSSION_HISTORY_BYTES = 32000;
|
|
12
|
-
// Existing E/C labels belong to a particular snapshot. Do not let quoted source
|
|
13
|
-
// text masquerade as references in the current answer's namespace.
|
|
14
|
-
const quote = (text, max) => {
|
|
15
|
-
const full = (0, normalize_1.cleanText)(text, Number.MAX_SAFE_INTEGER).replace(/\[([ECH][a-f0-9]+)\]/gi, '(historical reference $1)');
|
|
16
|
-
if (full.length <= max)
|
|
17
|
-
return full;
|
|
18
|
-
const marker = '\n[middle omitted]\n', head = Math.floor((max - marker.length) / 3);
|
|
19
|
-
return full.slice(0, head) + marker + full.slice(-(max - marker.length - head));
|
|
20
|
-
};
|
|
7
|
+
const packet_1 = require("./packet");
|
|
21
8
|
async function historyContext(question, before, signal, maxBytes = 3500, preparedOnly = false, selection = {}) {
|
|
22
9
|
const explicit = [...new Set(question.match(/\bH[a-f0-9]{24}\b/g) || [])].slice(0, 3);
|
|
23
|
-
if (explicit.length && !(
|
|
10
|
+
if (explicit.length && !(selection.reconcile && selection.kind === 'sources' && (0, reconcile_1.statusQuestion)(question) && !/\boffset[ :=]+\d/i.test(question))) {
|
|
24
11
|
const sources = [];
|
|
25
12
|
for (const ref of explicit) {
|
|
26
13
|
const requested = question.match(new RegExp(`\\b${ref}\\s+(?:at\\s+)?offset[ :=]+(\\d{1,7})\\b`, 'i'));
|
|
@@ -29,83 +16,19 @@ async function historyContext(question, before, signal, maxBytes = 3500, prepare
|
|
|
29
16
|
if (page.record.at && page.record.at <= before && (!selection.session_ids || (page.record.session_id && selection.session_ids.includes(page.record.session_id))))
|
|
30
17
|
sources.push({ ...page.record, offset: page.offset, score: 1 });
|
|
31
18
|
}
|
|
32
|
-
return historyPacket({ results: sources, mode: 'reference_read', limitations: 'Explicit historical references, not a new archive search. Missing or undated records cannot establish an as-of claim.' }, maxBytes, explicit.length === 1 ? (maxBytes > 3500 ? 4000 : 2400) : 800);
|
|
19
|
+
return (0, packet_1.historyPacket)({ results: sources, mode: 'reference_read', limitations: 'Explicit historical references, not a new archive search. Missing or undated records cannot establish an as-of claim.' }, maxBytes, explicit.length === 1 ? (maxBytes > 3500 ? 4000 : 2400) : 800);
|
|
33
20
|
}
|
|
34
|
-
const found = await (preparedOnly ? service_1.searchPreparedHistory : service_1.searchHistory)({ ...selection,
|
|
21
|
+
const found = await (preparedOnly ? service_1.searchPreparedHistory : service_1.searchHistory)({ ...selection, question: (0, normalize_1.cleanText)(question, 2000), before }, signal);
|
|
35
22
|
found.limitations += ` Prepared history cutoff: ${before}. This is the latest recorded evidence within that cutoff, not live process observation.`;
|
|
36
|
-
//
|
|
37
|
-
// questions, keep original matches rather than crowding them out with nearby
|
|
38
|
-
// chatter. Explicit H requests can read a longer original passage next.
|
|
23
|
+
// Work questions need original records, not neighboring conversation chatter.
|
|
39
24
|
if (selection.kind === 'sources')
|
|
40
|
-
return historyPacket(found, maxBytes, maxBytes > 7000 ? 3000 : maxBytes > 3500 ? 1200 : 800);
|
|
41
|
-
// Read the leading match and adjacent records, rather than trusting a search
|
|
42
|
-
// snippet alone. Keep neighbors' own dates, roles and reference identities.
|
|
25
|
+
return (0, packet_1.historyPacket)(found, maxBytes, maxBytes > 7000 ? 3000 : maxBytes > 3500 ? 1200 : 800);
|
|
43
26
|
if (found.results[0]) {
|
|
44
27
|
const hit = found.results[0], page = await (0, service_1.readHistory)(hit.ref, Math.max(0, hit.offset - 200), signal, preparedOnly ? before : undefined);
|
|
45
28
|
const neighbors = page.neighbors.filter(item => item.at && item.at <= before);
|
|
46
29
|
found.results = [hit, ...found.results.slice(1, 2), ...neighbors.map(item => ({ ...item, offset: 0, score: 0 })), ...found.results.slice(2)]
|
|
47
30
|
.filter((item, index, all) => all.findIndex(other => other.ref === item.ref) === index);
|
|
48
31
|
}
|
|
49
|
-
return historyPacket(found, maxBytes);
|
|
50
|
-
}
|
|
51
|
-
function historyPacket(found, maxBytes = 3500, excerptLimit = maxBytes <= 3500 ? 400 : 800) {
|
|
52
|
-
const contiguous = excerptLimit >= 800;
|
|
53
|
-
const clip = (text, max) => {
|
|
54
|
-
if (!contiguous)
|
|
55
|
-
return quote(text, max);
|
|
56
|
-
const full = quote(text, Number.MAX_SAFE_INTEGER);
|
|
57
|
-
return full.length <= max ? full : full.slice(0, Math.max(0, max - 20)) + '\n[excerpt continues]';
|
|
58
|
-
};
|
|
59
|
-
const originals = new Map();
|
|
60
|
-
const sources = found.results.map(item => {
|
|
61
|
-
const body = excerptLimit >= 800 && (excerptLimit <= 1600 || found.mode !== 'reference_read') && item.role === 'assistant' && item.offset === 0 && item.text.includes('\nTool requested:')
|
|
62
|
-
? item.text.slice(0, item.text.indexOf('\nTool requested:')) + '\n[tool requests omitted]' : item.text;
|
|
63
|
-
originals.set(item.ref, body);
|
|
64
|
-
return { ref: item.ref, kind: item.kind, sync_id: item.sync_id, session_id: item.session_id,
|
|
65
|
-
at: item.at, sequence: item.sequence, role: item.role, qualification: item.qualification, workspace: item.workspace, lead: item.lead ? quote(item.lead, 400) : undefined,
|
|
66
|
-
text: clip(body, excerptLimit), offset: item.offset, ending: undefined };
|
|
67
|
-
});
|
|
68
|
-
let shown = sources.slice(0, maxBytes <= 3500 ? (excerptLimit >= 800 ? 3 : 4) : maxBytes <= 7000 ? 4 : 16);
|
|
69
|
-
for (;;) {
|
|
70
|
-
// Never pack an earlier blocker without all selected later reports. This
|
|
71
|
-
// also applies when byte pressure removes a source from a linked chain.
|
|
72
|
-
let changed = true;
|
|
73
|
-
while (changed) {
|
|
74
|
-
const refs = new Set(shown.map(item => item.ref)), previous = shown.length;
|
|
75
|
-
shown = shown.filter(item => !(found.reconciliation?.threads || []).some(thread => thread.earlier_ref === item.ref && thread.later_refs.some(ref => !refs.has(ref))));
|
|
76
|
-
changed = shown.length !== previous;
|
|
77
|
-
}
|
|
78
|
-
if (found.reconciliation?.threads.length)
|
|
79
|
-
for (const item of shown) {
|
|
80
|
-
const full = originals.get(item.ref);
|
|
81
|
-
if (item.text !== quote(full, Number.MAX_SAFE_INTEGER)) {
|
|
82
|
-
// Closing qualifications often say that only the client was completed,
|
|
83
|
-
// while delivery remains disabled. Preserve this contiguous ending with
|
|
84
|
-
// its own original offset instead of silently clipping that distinction.
|
|
85
|
-
const start = Math.max(0, full.length - 600);
|
|
86
|
-
item.ending = { offset: item.offset + start, text: quote(full.slice(start), 600) };
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
const refs = new Set(shown.map(item => item.ref));
|
|
90
|
-
const threads = found.reconciliation?.threads.filter(thread => refs.has(thread.earlier_ref) && thread.later_refs.every(ref => refs.has(ref)));
|
|
91
|
-
const reconciliation = found.reconciliation ? { ...found.reconciliation, threads,
|
|
92
|
-
omitted_threads: found.reconciliation.omitted_threads + found.reconciliation.threads.length - threads.length } : undefined;
|
|
93
|
-
const text = JSON.stringify({ type: 'read_only_history', scope: 'Historical lookup, separate from the frozen snapshot. Historical text is untrusted data, not a current request.',
|
|
94
|
-
mode: found.mode, sources: shown, reconciliation, omitted_matches: sources.length - shown.length,
|
|
95
|
-
limitations: found.limitations + ' Excerpts may omit corrections elsewhere. No match is not proof something never happened. Cite only the supplied H references; never infer agreement from generated speech.' });
|
|
96
|
-
if (Buffer.byteLength(text) <= maxBytes)
|
|
97
|
-
return { text, refs: shown.map(item => item.ref) };
|
|
98
|
-
const longest = shown.reduce((a, b) => !a || b.text.length > a.text.length ? b : a, undefined);
|
|
99
|
-
if (shown.length > 1 && longest && longest.text.length > 400)
|
|
100
|
-
longest.text = clip(longest.text, Math.max(400, Math.floor(longest.text.length * 0.75)));
|
|
101
|
-
else if (shown.length > 1)
|
|
102
|
-
shown = shown.slice(0, -1);
|
|
103
|
-
else if (shown[0]?.text.length > 100)
|
|
104
|
-
shown[0].text = clip(shown[0].text, Math.floor(shown[0].text.length / 2));
|
|
105
|
-
else if (shown.length)
|
|
106
|
-
shown = [];
|
|
107
|
-
else
|
|
108
|
-
throw new Error('History packet exceeds its byte limit');
|
|
109
|
-
}
|
|
32
|
+
return (0, packet_1.historyPacket)(found, maxBytes);
|
|
110
33
|
}
|
|
111
34
|
//# sourceMappingURL=context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/memory/context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/memory/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const EMBEDDING_DIMENSIONS = 384;
|
|
2
|
+
export declare const EMBEDDING_BYTES: number;
|
|
3
|
+
export declare const EMBEDDING_TEXT_LIMIT = 16000;
|
|
4
|
+
export declare function validEmbedding(value: unknown): value is Float32Array;
|
|
5
|
+
//# sourceMappingURL=embedding-contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-contract.d.ts","sourceRoot":"","sources":["../../src/memory/embedding-contract.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,oBAAoB,MAAM,CAAC;AACxC,eAAO,MAAM,eAAe,QAAwD,CAAC;AACrF,eAAO,MAAM,oBAAoB,QAAQ,CAAC;AAE1C,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,YAAY,CAEpE"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EMBEDDING_TEXT_LIMIT = exports.EMBEDDING_BYTES = exports.EMBEDDING_DIMENSIONS = void 0;
|
|
4
|
+
exports.validEmbedding = validEmbedding;
|
|
5
|
+
// This dimension is part of the pinned model and persisted vector format.
|
|
6
|
+
exports.EMBEDDING_DIMENSIONS = 384;
|
|
7
|
+
exports.EMBEDDING_BYTES = exports.EMBEDDING_DIMENSIONS * Float32Array.BYTES_PER_ELEMENT;
|
|
8
|
+
exports.EMBEDDING_TEXT_LIMIT = 16000;
|
|
9
|
+
function validEmbedding(value) {
|
|
10
|
+
return value instanceof Float32Array && value.length === exports.EMBEDDING_DIMENSIONS && value.every(Number.isFinite);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=embedding-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embedding-contract.js","sourceRoot":"","sources":["../../src/memory/embedding-contract.ts"],"names":[],"mappings":";;;AAKA,wCAEC;AAPD,0EAA0E;AAC7D,QAAA,oBAAoB,GAAG,GAAG,CAAC;AAC3B,QAAA,eAAe,GAAG,4BAAoB,GAAG,YAAY,CAAC,iBAAiB,CAAC;AACxE,QAAA,oBAAoB,GAAG,KAAK,CAAC;AAE1C,SAAgB,cAAc,CAAC,KAAc;IAC3C,OAAO,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,MAAM,KAAK,4BAAoB,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;AAChH,CAAC"}
|
|
@@ -8,14 +8,13 @@ export declare class EmbeddingPool implements Embedder {
|
|
|
8
8
|
workers: number;
|
|
9
9
|
threads: number;
|
|
10
10
|
};
|
|
11
|
-
|
|
11
|
+
readonly fingerprint = "Xenova/multilingual-e5-small@761b726dd34fb83930e26aab4e9ac3899aa1fa78/q8-mean-normalized-v1";
|
|
12
12
|
private lanes;
|
|
13
13
|
private sequence;
|
|
14
14
|
private busy;
|
|
15
15
|
private epoch;
|
|
16
16
|
private retiring;
|
|
17
17
|
constructor(directory: string);
|
|
18
|
-
get fingerprint(): string;
|
|
19
18
|
ready(): boolean;
|
|
20
19
|
setup(report?: ReportHistory, allowDownload?: boolean): Promise<void>;
|
|
21
20
|
private lane;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-pool.d.ts","sourceRoot":"","sources":["../../src/memory/embedding-pool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"embedding-pool.d.ts","sourceRoot":"","sources":["../../src/memory/embedding-pool.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAMvD;;iFAEiF;AACjF,qBAAa,aAAc,YAAW,QAAQ;IAQhC,OAAO,CAAC,SAAS;IAP7B,QAAQ,CAAC,WAAW,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3D,QAAQ,CAAC,WAAW,iGAAY;IAChC,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,QAAQ,CAAuC;gBACnC,SAAS,EAAE,MAAM;IAMrC,KAAK;IACL,KAAK,CAAC,MAAM,CAAC,EAAE,aAAa,EAAE,aAAa,UAAO;IAClD,OAAO,CAAC,IAAI;IAqBZ,OAAO,CAAC,GAAG;IASL,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,CAAC;IAChE,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,QAAQ,UAAO,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;YACtD,IAAI;IAeZ,KAAK;CAQZ"}
|
|
@@ -7,7 +7,9 @@ exports.EmbeddingPool = void 0;
|
|
|
7
7
|
const path_1 = __importDefault(require("path"));
|
|
8
8
|
const os_1 = require("os");
|
|
9
9
|
const worker_threads_1 = require("worker_threads");
|
|
10
|
-
const
|
|
10
|
+
const model_files_1 = require("./model-files");
|
|
11
|
+
const model_assets_1 = require("./model-assets");
|
|
12
|
+
const embedding_contract_1 = require("./embedding-contract");
|
|
11
13
|
const failure = () => new Error('Local embedding worker failed; no other runtime or model was substituted');
|
|
12
14
|
/** At most two model copies and six kernel threads. Small/constrained machines
|
|
13
15
|
* keep one lane. All lanes die with their owning history process on cancellation.
|
|
@@ -15,7 +17,7 @@ const failure = () => new Error('Local embedding worker failed; no other runtime
|
|
|
15
17
|
class EmbeddingPool {
|
|
16
18
|
directory;
|
|
17
19
|
parallelism;
|
|
18
|
-
|
|
20
|
+
fingerprint = model_files_1.MODEL_ID;
|
|
19
21
|
lanes = [];
|
|
20
22
|
sequence = 0;
|
|
21
23
|
busy = false;
|
|
@@ -27,11 +29,9 @@ class EmbeddingPool {
|
|
|
27
29
|
const workers = cpus >= 12 && memory >= 4 * 1024 ** 3 ? 2 : 1;
|
|
28
30
|
const perLane = workers === 2 ? 3 : Math.max(1, Math.min(4, Math.floor(cpus / 2)));
|
|
29
31
|
this.parallelism = { workers, threads: workers * perLane };
|
|
30
|
-
this.files = new model_1.LocalEmbedder(directory);
|
|
31
32
|
}
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
setup(report, allowDownload = true) { return this.files.setup(report, allowDownload); }
|
|
33
|
+
ready() { return (0, model_assets_1.modelFilesPresent)(this.directory); }
|
|
34
|
+
setup(report, allowDownload = true) { return (0, model_assets_1.prepareModelFiles)(this.directory, report, allowDownload); }
|
|
35
35
|
lane(index) {
|
|
36
36
|
if (this.lanes[index]) {
|
|
37
37
|
if (this.lanes[index].dead)
|
|
@@ -54,12 +54,12 @@ class EmbeddingPool {
|
|
|
54
54
|
const pending = lane.pending;
|
|
55
55
|
if (!pending)
|
|
56
56
|
return;
|
|
57
|
-
if (message?.id !== pending.id || message.error || !(message.vector instanceof ArrayBuffer) || message.vector.byteLength !==
|
|
57
|
+
if (message?.id !== pending.id || message.error || !(message.vector instanceof ArrayBuffer) || message.vector.byteLength !== embedding_contract_1.EMBEDDING_BYTES) {
|
|
58
58
|
fail();
|
|
59
59
|
return;
|
|
60
60
|
}
|
|
61
61
|
const vector = new Float32Array(message.vector);
|
|
62
|
-
if (
|
|
62
|
+
if (!(0, embedding_contract_1.validEmbedding)(vector)) {
|
|
63
63
|
fail();
|
|
64
64
|
return;
|
|
65
65
|
}
|
|
@@ -89,7 +89,7 @@ class EmbeddingPool {
|
|
|
89
89
|
async embed(text, query) { return (await this.work([text], query))[0]; }
|
|
90
90
|
embedMany(texts, parallel = true) { return this.work(texts, false, parallel); }
|
|
91
91
|
async work(texts, query, parallel = false) {
|
|
92
|
-
if (this.busy || texts.length > 8 || texts.some(text => typeof text !== 'string' || text.length >
|
|
92
|
+
if (this.busy || texts.length > 8 || texts.some(text => typeof text !== 'string' || text.length > embedding_contract_1.EMBEDDING_TEXT_LIMIT))
|
|
93
93
|
throw new Error('Invalid or overlapping embedding batch');
|
|
94
94
|
this.busy = true;
|
|
95
95
|
const epoch = this.epoch;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedding-pool.js","sourceRoot":"","sources":["../../src/memory/embedding-pool.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,2BAA0C;AAC1C,mDAAwC;AACxC,
|
|
1
|
+
{"version":3,"file":"embedding-pool.js","sourceRoot":"","sources":["../../src/memory/embedding-pool.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,2BAA0C;AAC1C,mDAAwC;AACxC,+CAAyC;AACzC,iDAAsE;AACtE,6DAA6F;AAK7F,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;AAE5G;;iFAEiF;AACjF,MAAa,aAAa;IAQJ;IAPX,WAAW,CAAuC;IAClD,WAAW,GAAG,sBAAQ,CAAC;IACxB,KAAK,GAAW,EAAE,CAAC;IACnB,QAAQ,GAAG,CAAC,CAAC;IACb,IAAI,GAAG,KAAK,CAAC;IACb,KAAK,GAAG,CAAC,CAAC;IACV,QAAQ,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAC;IACvD,YAAoB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QACnC,MAAM,IAAI,GAAG,IAAA,yBAAoB,GAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;QACxE,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,IAAI,MAAM,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9D,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,WAAW,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,CAAC;IAC7D,CAAC;IACD,KAAK,KAAK,OAAO,IAAA,gCAAiB,EAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrD,KAAK,CAAC,MAAsB,EAAE,aAAa,GAAG,IAAI,IAAI,OAAO,IAAA,gCAAiB,EAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC;IAChH,IAAI,CAAC,KAAa;QACxB,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAAC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI;gBAAE,MAAM,OAAO,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAAC,CAAC;QACjG,MAAM,MAAM,GAAG,IAAI,uBAAM,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,qBAAqB,CAAC,EAAE;YACrE,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE;YACvG,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE;YACzG,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI;SAC3B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAS,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;QACxD,MAAM,IAAI,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7H,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,OAAY,EAAE,EAAE;YACpC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,IAAI,OAAO,EAAE,EAAE,KAAK,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,YAAY,WAAW,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,KAAK,oCAAe,EAAE,CAAC;gBAAC,IAAI,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YACjK,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAChD,IAAI,CAAC,IAAA,mCAAc,EAAC,MAAM,CAAC,EAAE,CAAC;gBAAC,IAAI,EAAE,CAAC;gBAAC,OAAO;YAAC,CAAC;YAChD,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;YAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IACO,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,KAAc;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAChD,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC;YAAC,IAAI,CAAC,OAAO,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YACnE,IAAI,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAAC,CAAC;YACrD,MAAM,CAAC;gBAAC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBAAC,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,IAAY,EAAE,KAAc,IAA2B,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChH,SAAS,CAAC,KAAe,EAAE,QAAQ,GAAG,IAAI,IAA6B,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC1G,KAAK,CAAC,IAAI,CAAC,KAAe,EAAE,KAAc,EAAE,QAAQ,GAAG,KAAK;QAClE,IAAI,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,GAAG,yCAAoB,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACnL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3C,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,QAAQ,CAAC;YACpB,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;gBAAE,MAAM,OAAO,EAAE,CAAC;YAC1C,IAAI,IAAI,GAAG,CAAC,CAAC;YAAC,MAAM,OAAO,GAAG,IAAI,KAAK,CAAe,KAAK,CAAC,MAAM,CAAC,CAAC;YACpE,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE;gBAC1H,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;oBAAC,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;wBAAE,MAAM,OAAO,EAAE,CAAC;oBAAC,MAAM,KAAK,GAAG,IAAI,EAAE,CAAC;oBAAC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBAAC,CAAC;YAC9J,CAAC,CAAC,CAAC,CAAC;YACJ,IAAI,KAAK,KAAK,IAAI,CAAC,KAAK;gBAAE,MAAM,OAAO,EAAE,CAAC;YAC1C,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,KAAK,CAAC;QAAC,CAAC;gBAC5C,CAAC;YAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QAAC,CAAC;IAChC,CAAC;IACD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBAC9D,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gBAAC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;gBAAC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;YAC5F,CAAC,CAAC,CAAC,CAAC,CAAC;QACL,MAAM,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;CACF;AAvED,sCAuEC"}
|
|
@@ -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"}
|