vektor-slipstream 1.4.4 → 2.0.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/README.md +67 -306
- package/package.json +14 -146
- package/CHANGELOG.md +0 -139
- package/LICENSE +0 -33
- package/TENETS.md +0 -189
- package/audn-log.js +0 -143
- package/axon.js +0 -389
- package/boot-patch.js +0 -33
- package/boot-screen.html +0 -210
- package/briefing.js +0 -150
- package/cerebellum.js +0 -439
- package/cloak-behaviour.js +0 -596
- package/cloak-captcha.js +0 -541
- package/cloak-core.js +0 -499
- package/cloak-identity.js +0 -484
- package/cloak-index.js +0 -261
- package/cloak-llms.js +0 -163
- package/cloak-pattern-store.js +0 -471
- package/cloak-recorder-auto.js +0 -297
- package/cloak-recorder-snippet.js +0 -119
- package/cloak-turbo-quant.js +0 -357
- package/cloak-warmup.js +0 -240
- package/cortex.js +0 -221
- package/detect-hardware.js +0 -181
- package/entity-resolver.js +0 -298
- package/errors.js +0 -66
- package/examples/example-claude-mcp.js +0 -220
- package/examples/example-langchain-researcher.js +0 -82
- package/examples/example-openai-assistant.js +0 -84
- package/examples/examples-README.md +0 -161
- package/export-import.js +0 -221
- package/forget.js +0 -148
- package/inspect.js +0 -199
- package/mistral/README-mistral.md +0 -123
- package/mistral/mistral-bridge.js +0 -218
- package/mistral/mistral-setup.js +0 -220
- package/mistral/vektor-tool-manifest.json +0 -41
- package/models/model_quantized.onnx +0 -0
- package/models/vocab.json +0 -1
- package/namespace.js +0 -186
- package/pin.js +0 -91
- package/slipstream-core-extended.js +0 -134
- package/slipstream-core.js +0 -1
- package/slipstream-db.js +0 -140
- package/slipstream-embedder.js +0 -338
- package/sovereign.js +0 -142
- package/token.js +0 -322
- package/types/index.d.ts +0 -269
- package/vektor-banner-loader.js +0 -109
- package/vektor-cli.js +0 -259
- package/vektor-licence-prompt.js +0 -128
- package/vektor-licence.js +0 -192
- package/vektor-setup.js +0 -270
- package/vektor-slipstream.dxt +0 -0
- package/vektor-tui.js +0 -373
- package/visualize.js +0 -235
package/namespace.js
DELETED
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VEKTOR memory namespacing — v1.3.7
|
|
3
|
-
* Scopes all memory reads/writes to a namespace.
|
|
4
|
-
* Prevents project bleed across different agent workstreams.
|
|
5
|
-
*
|
|
6
|
-
* Schema addition:
|
|
7
|
-
* ALTER TABLE memories ADD COLUMN namespace TEXT NOT NULL DEFAULT 'default';
|
|
8
|
-
* CREATE INDEX IF NOT EXISTS idx_memories_ns ON memories(agent_id, namespace);
|
|
9
|
-
*
|
|
10
|
-
* This module handles namespace validation and the createMemory() factory update.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
import { VektorError, ERR } from './errors.js';
|
|
14
|
-
|
|
15
|
-
const NAMESPACE_RE = /^[a-z0-9_-]{1,64}$/;
|
|
16
|
-
const RESERVED = new Set(['__system__', '__rem__', '__audn__']);
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Validate a namespace string.
|
|
20
|
-
* Must be lowercase alphanumeric + hyphens/underscores, max 64 chars.
|
|
21
|
-
*/
|
|
22
|
-
export function validateNamespace(ns) {
|
|
23
|
-
if (!ns || typeof ns !== 'string') {
|
|
24
|
-
throw new VektorError(ERR.NAMESPACE_INVALID, 'Namespace must be a non-empty string');
|
|
25
|
-
}
|
|
26
|
-
if (!NAMESPACE_RE.test(ns)) {
|
|
27
|
-
throw new VektorError(
|
|
28
|
-
ERR.NAMESPACE_INVALID,
|
|
29
|
-
`Namespace "${ns}" is invalid. Use lowercase letters, numbers, hyphens, underscores only.`
|
|
30
|
-
);
|
|
31
|
-
}
|
|
32
|
-
if (RESERVED.has(ns)) {
|
|
33
|
-
throw new VektorError(ERR.NAMESPACE_INVALID, `Namespace "${ns}" is reserved`);
|
|
34
|
-
}
|
|
35
|
-
return ns;
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* listNamespaces(db, agentId)
|
|
40
|
-
* Returns all namespaces for an agent with memory counts.
|
|
41
|
-
*/
|
|
42
|
-
export function listNamespaces(db, agentId) {
|
|
43
|
-
return db.prepare(`
|
|
44
|
-
SELECT namespace, COUNT(*) as memories,
|
|
45
|
-
MAX(created_at) as last_active,
|
|
46
|
-
SUM(pinned) as pinned
|
|
47
|
-
FROM memories
|
|
48
|
-
WHERE agent_id = ?
|
|
49
|
-
GROUP BY namespace
|
|
50
|
-
ORDER BY last_active DESC
|
|
51
|
-
`).all(agentId);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* switchNamespace(memory, namespace)
|
|
56
|
-
* Returns a proxy of the memory instance scoped to a new namespace.
|
|
57
|
-
* Non-destructive — original instance unchanged.
|
|
58
|
-
*
|
|
59
|
-
* @param {object} memory - createMemory() instance
|
|
60
|
-
* @param {string} namespace - target namespace
|
|
61
|
-
* @returns {Proxy}
|
|
62
|
-
*/
|
|
63
|
-
export function switchNamespace(memory, namespace) {
|
|
64
|
-
validateNamespace(namespace);
|
|
65
|
-
return new Proxy(memory, {
|
|
66
|
-
get(target, prop) {
|
|
67
|
-
if (prop === 'namespace') return namespace;
|
|
68
|
-
const val = target[prop];
|
|
69
|
-
if (typeof val === 'function') {
|
|
70
|
-
return val.bind({ ...target, namespace });
|
|
71
|
-
}
|
|
72
|
-
return val;
|
|
73
|
-
}
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* deleteNamespace(db, agentId, namespace)
|
|
79
|
-
* Hard-deletes ALL memories and edges in a namespace.
|
|
80
|
-
* Requires explicit confirm string to prevent accidents.
|
|
81
|
-
*
|
|
82
|
-
* @param {string} confirm - must equal `DELETE_${namespace}` to proceed
|
|
83
|
-
*/
|
|
84
|
-
export function deleteNamespace(db, agentId, namespace, confirm) {
|
|
85
|
-
validateNamespace(namespace);
|
|
86
|
-
|
|
87
|
-
if (confirm !== `DELETE_${namespace}`) {
|
|
88
|
-
throw new VektorError(
|
|
89
|
-
ERR.NAMESPACE_INVALID,
|
|
90
|
-
`Safety check failed. Pass confirm: "DELETE_${namespace}" to proceed.`
|
|
91
|
-
);
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const deleteOp = db.transaction(() => {
|
|
95
|
-
// Bulk deletes using subqueries — SQLite handles this in one pass
|
|
96
|
-
// vs. a JS for-loop which would lock the DB for N*2 individual statements
|
|
97
|
-
db.prepare(`
|
|
98
|
-
DELETE FROM graph_edges WHERE source_id IN (
|
|
99
|
-
SELECT id FROM memories WHERE agent_id = ? AND namespace = ?
|
|
100
|
-
) OR target_id IN (
|
|
101
|
-
SELECT id FROM memories WHERE agent_id = ? AND namespace = ?
|
|
102
|
-
)
|
|
103
|
-
`).run(agentId, namespace, agentId, namespace);
|
|
104
|
-
|
|
105
|
-
db.prepare(`
|
|
106
|
-
DELETE FROM entity_mentions WHERE memory_id IN (
|
|
107
|
-
SELECT id FROM memories WHERE agent_id = ? AND namespace = ?
|
|
108
|
-
)
|
|
109
|
-
`).run(agentId, namespace);
|
|
110
|
-
|
|
111
|
-
db.prepare(`DELETE FROM audn_log WHERE agent_id = ? AND namespace = ?`).run(agentId, namespace);
|
|
112
|
-
db.prepare(`DELETE FROM memories WHERE agent_id = ? AND namespace = ?`).run(agentId, namespace);
|
|
113
|
-
});
|
|
114
|
-
|
|
115
|
-
// Retry loop for SQLITE_BUSY — another agent may be writing to this namespace.
|
|
116
|
-
// better-sqlite3 is synchronous so we use Atomics.wait for a blocking spin-wait
|
|
117
|
-
// rather than async setTimeout. Max 3 attempts, 100ms apart.
|
|
118
|
-
const MAX_RETRIES = 3;
|
|
119
|
-
const RETRY_MS = 100;
|
|
120
|
-
let lastError = null;
|
|
121
|
-
|
|
122
|
-
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
123
|
-
try {
|
|
124
|
-
deleteOp();
|
|
125
|
-
lastError = null;
|
|
126
|
-
break;
|
|
127
|
-
} catch (e) {
|
|
128
|
-
lastError = e;
|
|
129
|
-
const isBusy = e?.code === 'SQLITE_BUSY' || e?.message?.includes('database is locked');
|
|
130
|
-
if (isBusy && attempt < MAX_RETRIES - 1) {
|
|
131
|
-
// Synchronous sleep — safe in better-sqlite3 (no event loop to block)
|
|
132
|
-
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, RETRY_MS);
|
|
133
|
-
} else {
|
|
134
|
-
throw e;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
if (lastError) throw lastError;
|
|
140
|
-
|
|
141
|
-
// changes() returns count from the last DELETE statement (memories table)
|
|
142
|
-
const deletedCount = db.prepare('SELECT changes() as n').get().n;
|
|
143
|
-
return { deleted: deletedCount, namespace };
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Integration into createMemory() factory:
|
|
148
|
-
*
|
|
149
|
-
* export async function createMemory(opts = {}) {
|
|
150
|
-
* const {
|
|
151
|
-
* agentId,
|
|
152
|
-
* namespace = 'default', // ← add this
|
|
153
|
-
* licenceKey,
|
|
154
|
-
* provider,
|
|
155
|
-
* apiKey,
|
|
156
|
-
* dbPath
|
|
157
|
-
* } = opts;
|
|
158
|
-
*
|
|
159
|
-
* validateNamespace(namespace); // ← add this
|
|
160
|
-
* // ... rest of init
|
|
161
|
-
*
|
|
162
|
-
* return {
|
|
163
|
-
* namespace, // ← expose on instance
|
|
164
|
-
* // ... all methods receive namespace in scope
|
|
165
|
-
* };
|
|
166
|
-
* }
|
|
167
|
-
*
|
|
168
|
-
* Usage:
|
|
169
|
-
* // Default namespace
|
|
170
|
-
* const memory = await createMemory({ agentId: 'my-agent', namespace: 'default' });
|
|
171
|
-
*
|
|
172
|
-
* // Project-scoped
|
|
173
|
-
* const atlasMemory = await createMemory({ agentId: 'my-agent', namespace: 'project-atlas' });
|
|
174
|
-
* const personalMemory = await createMemory({ agentId: 'my-agent', namespace: 'personal' });
|
|
175
|
-
*
|
|
176
|
-
* // Or switch namespace on existing instance (lightweight)
|
|
177
|
-
* const atlasScope = switchNamespace(memory, 'project-atlas');
|
|
178
|
-
* await atlasScope.remember('Atlas deadline is Q3');
|
|
179
|
-
*
|
|
180
|
-
* // List all namespaces
|
|
181
|
-
* memory.listNamespaces();
|
|
182
|
-
* // → [{ namespace: 'default', memories: 247 }, { namespace: 'project-atlas', memories: 18 }]
|
|
183
|
-
*
|
|
184
|
-
* // Delete a namespace (requires confirm string)
|
|
185
|
-
* memory.deleteNamespace('project-atlas', 'DELETE_project-atlas');
|
|
186
|
-
*/
|
package/pin.js
DELETED
|
@@ -1,91 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* VEKTOR memory.pin() / memory.unpin() — v1.3.7
|
|
3
|
-
* Marks a memory as pinned — REM cycle will never compress or delete it.
|
|
4
|
-
* Critical facts, user preferences, permanent context survive all compression.
|
|
5
|
-
*
|
|
6
|
-
* Schema addition required:
|
|
7
|
-
* ALTER TABLE memories ADD COLUMN pinned INTEGER DEFAULT 0;
|
|
8
|
-
* CREATE INDEX IF NOT EXISTS idx_memories_pinned ON memories(pinned, agent_id, namespace);
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
import { VektorError, ERR } from './errors.js';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* pin(id) — mark a memory as permanent, skip REM compression
|
|
15
|
-
* @returns {{ id, pinned: true, content }}
|
|
16
|
-
*/
|
|
17
|
-
export function pin(db, agentId, namespace, id) {
|
|
18
|
-
const mem = db
|
|
19
|
-
.prepare(`SELECT id, content, pinned FROM memories WHERE id = ? AND agent_id = ? AND namespace = ?`)
|
|
20
|
-
.get(id, agentId, namespace);
|
|
21
|
-
|
|
22
|
-
if (!mem) throw new VektorError(ERR.MEMORY_NOT_FOUND, `Memory ${id} not found`);
|
|
23
|
-
|
|
24
|
-
db.prepare(`UPDATE memories SET pinned = 1, updated_at = unixepoch() WHERE id = ?`).run(id);
|
|
25
|
-
return { id, pinned: true, content: mem.content };
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* unpin(id) — allow REM to compress this memory again
|
|
30
|
-
* @returns {{ id, pinned: false, content }}
|
|
31
|
-
*/
|
|
32
|
-
export function unpin(db, agentId, namespace, id) {
|
|
33
|
-
const mem = db
|
|
34
|
-
.prepare(`SELECT id, content FROM memories WHERE id = ? AND agent_id = ? AND namespace = ?`)
|
|
35
|
-
.get(id, agentId, namespace);
|
|
36
|
-
|
|
37
|
-
if (!mem) throw new VektorError(ERR.MEMORY_NOT_FOUND, `Memory ${id} not found`);
|
|
38
|
-
|
|
39
|
-
db.prepare(`UPDATE memories SET pinned = 0, updated_at = unixepoch() WHERE id = ?`).run(id);
|
|
40
|
-
return { id, pinned: false, content: mem.content };
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* listPinned() — return all pinned memories in current scope
|
|
45
|
-
* @returns {object[]}
|
|
46
|
-
*/
|
|
47
|
-
export function listPinned(db, agentId, namespace) {
|
|
48
|
-
return db
|
|
49
|
-
.prepare(`
|
|
50
|
-
SELECT id, content, summary, importance, created_at
|
|
51
|
-
FROM memories
|
|
52
|
-
WHERE pinned = 1 AND agent_id = ? AND namespace = ?
|
|
53
|
-
ORDER BY importance DESC, created_at DESC
|
|
54
|
-
`)
|
|
55
|
-
.all(agentId, namespace);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
/**
|
|
59
|
-
* REM cycle guard — call this before compressing a cluster:
|
|
60
|
-
*
|
|
61
|
-
* const safe = cluster.filter(m => !m.pinned);
|
|
62
|
-
* const pinned = cluster.filter(m => m.pinned);
|
|
63
|
-
* // compress `safe`, keep `pinned` untouched
|
|
64
|
-
*/
|
|
65
|
-
export function filterCompressible(memories) {
|
|
66
|
-
return {
|
|
67
|
-
compressible: memories.filter(m => !m.pinned),
|
|
68
|
-
pinned: memories.filter(m => m.pinned)
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Integration into Memory class:
|
|
74
|
-
*
|
|
75
|
-
* async pin(id) { return pin(this.db, this.agentId, this.namespace, id); }
|
|
76
|
-
* async unpin(id) { return unpin(this.db, this.agentId, this.namespace, id); }
|
|
77
|
-
* async listPinned() { return listPinned(this.db, this.agentId, this.namespace); }
|
|
78
|
-
*
|
|
79
|
-
* Usage:
|
|
80
|
-
* await memory.pin('mem_abc123');
|
|
81
|
-
* // → { id: 'mem_abc123', pinned: true, content: 'User is allergic to peanuts' }
|
|
82
|
-
*
|
|
83
|
-
* await memory.listPinned();
|
|
84
|
-
* // → [{ id, content, importance, created_at }, ...]
|
|
85
|
-
*
|
|
86
|
-
* await memory.unpin('mem_abc123');
|
|
87
|
-
*
|
|
88
|
-
* Tip — pin on remember():
|
|
89
|
-
* const { id } = await memory.remember('User is allergic to peanuts');
|
|
90
|
-
* await memory.pin(id);
|
|
91
|
-
*/
|
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* VEKTOR slipstream-core-extended.js — v1.3.7
|
|
5
|
-
* ═══════════════════════════════════════════
|
|
6
|
-
* Wraps the obfuscated slipstream-core.js and adds all v1.3.7 methods.
|
|
7
|
-
* The original core is untouched — this is a clean extension layer.
|
|
8
|
-
*
|
|
9
|
-
* In package.json, change:
|
|
10
|
-
* "main": "slipstream-core.js"
|
|
11
|
-
* to:
|
|
12
|
-
* "main": "slipstream-core-extended.js"
|
|
13
|
-
*
|
|
14
|
-
* And update exports:
|
|
15
|
-
* ".": "./slipstream-core-extended.js"
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
const core = require('./slipstream-core.js');
|
|
19
|
-
|
|
20
|
-
const { forget, forgetWhere } = require('./forget.js');
|
|
21
|
-
const { pin, unpin, listPinned, filterCompressible } = require('./pin.js');
|
|
22
|
-
const { briefing } = require('./briefing.js');
|
|
23
|
-
const { inspect } = require('./inspect.js');
|
|
24
|
-
const { logAudn, auditLog, auditStats } = require('./audn-log.js');
|
|
25
|
-
const { validateNamespace, listNamespaces,
|
|
26
|
-
switchNamespace, deleteNamespace } = require('./namespace.js');
|
|
27
|
-
const { exportMemory, importMemory } = require('./export-import.js');
|
|
28
|
-
const { migrate137 } = require('./migrate-137.js');
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* createMemory() — drop-in replacement.
|
|
32
|
-
* Calls the original, then bolts on all v1.3.7 methods.
|
|
33
|
-
*/
|
|
34
|
-
async function createMemory(opts = {}) {
|
|
35
|
-
const namespace = opts.namespace || 'default';
|
|
36
|
-
|
|
37
|
-
// Validate namespace before anything else
|
|
38
|
-
validateNamespace(namespace);
|
|
39
|
-
|
|
40
|
-
// Call the original obfuscated createMemory
|
|
41
|
-
const memory = await core.createMemory(opts);
|
|
42
|
-
|
|
43
|
-
// Run schema migration — safe every startup, skips if already applied
|
|
44
|
-
// Access the db through the memory instance
|
|
45
|
-
// The obfuscated core stores db on memory.db
|
|
46
|
-
if (memory.db) {
|
|
47
|
-
migrate137(memory.db);
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
// Attach namespace to instance
|
|
51
|
-
memory.namespace = namespace;
|
|
52
|
-
|
|
53
|
-
// ── v1.3.7 methods ─────────────────────────────────────────────────────────
|
|
54
|
-
|
|
55
|
-
memory.forget = function(id) {
|
|
56
|
-
return forget(this.db, this.agentId, this.namespace, id);
|
|
57
|
-
};
|
|
58
|
-
|
|
59
|
-
memory.forgetWhere = function(query, opts = {}) {
|
|
60
|
-
return forgetWhere(this.db, this.agentId, this.namespace, this.recall.bind(this), query, opts);
|
|
61
|
-
};
|
|
62
|
-
|
|
63
|
-
memory.pin = function(id) {
|
|
64
|
-
return pin(this.db, this.agentId, this.namespace, id);
|
|
65
|
-
};
|
|
66
|
-
|
|
67
|
-
memory.unpin = function(id) {
|
|
68
|
-
return unpin(this.db, this.agentId, this.namespace, id);
|
|
69
|
-
};
|
|
70
|
-
|
|
71
|
-
memory.listPinned = function() {
|
|
72
|
-
return listPinned(this.db, this.agentId, this.namespace);
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
memory.inspect = function() {
|
|
76
|
-
return inspect(this.db, this.agentId, this.namespace);
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
memory.auditLog = function(opts = {}) {
|
|
80
|
-
return auditLog(this.db, this.agentId, this.namespace, opts);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
memory.auditStats = function() {
|
|
84
|
-
return auditStats(this.db, this.agentId, this.namespace);
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
memory.export = function(opts = {}) {
|
|
88
|
-
return exportMemory(this.db, this.agentId, this.namespace, opts);
|
|
89
|
-
};
|
|
90
|
-
|
|
91
|
-
memory.import = function(bundle, opts = {}) {
|
|
92
|
-
return importMemory(this.db, this.agentId, bundle, opts);
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
memory.listNamespaces = function() {
|
|
96
|
-
return listNamespaces(this.db, this.agentId);
|
|
97
|
-
};
|
|
98
|
-
|
|
99
|
-
memory.switchNamespace = function(ns) {
|
|
100
|
-
return switchNamespace(this, ns);
|
|
101
|
-
};
|
|
102
|
-
|
|
103
|
-
memory.deleteNamespace = function(ns, confirm) {
|
|
104
|
-
return deleteNamespace(this.db, this.agentId, ns, confirm);
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
// ── Scoped briefing — replaces original ────────────────────────────────────
|
|
108
|
-
// Preserve the original for fallback
|
|
109
|
-
const _originalBriefing = memory.briefing?.bind(memory);
|
|
110
|
-
|
|
111
|
-
memory.briefing = async function(opts = {}) {
|
|
112
|
-
// If opts has since/minImportance/raw — use new scoped version
|
|
113
|
-
if (opts.since !== undefined || opts.minImportance !== undefined || opts.raw !== undefined) {
|
|
114
|
-
const summariseFn = async (prompt) => {
|
|
115
|
-
// Use the agent's own recall to summarise if no LLM summariser exposed
|
|
116
|
-
if (typeof this._summarise === 'function') return this._summarise(prompt);
|
|
117
|
-
// Fallback — return raw context string if no summariser available
|
|
118
|
-
return prompt;
|
|
119
|
-
};
|
|
120
|
-
return briefing(this.db, this.agentId, this.namespace, summariseFn, opts);
|
|
121
|
-
}
|
|
122
|
-
// Default — call original briefing for backwards compat
|
|
123
|
-
if (_originalBriefing) return _originalBriefing();
|
|
124
|
-
return briefing(this.db, this.agentId, this.namespace, async p => p, opts);
|
|
125
|
-
};
|
|
126
|
-
|
|
127
|
-
return memory;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
// Re-export everything from original core
|
|
131
|
-
module.exports = {
|
|
132
|
-
...core,
|
|
133
|
-
createMemory, // override with extended version
|
|
134
|
-
};
|
package/slipstream-core.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
'use strict';const _0x55f972=_0x22ab;(function(_0x47b6f5,_0x4e3940){const _0x4afa2e={_0x330b8f:0x281,_0x129d3f:0x242,_0x39a187:0x209},_0x240750=_0x22ab,_0x5062e9=_0x47b6f5();while(!![]){try{const _0x1434c6=-parseInt(_0x240750(_0x4afa2e._0x330b8f))/0x1*(parseInt(_0x240750(_0x4afa2e._0x129d3f))/0x2)+-parseInt(_0x240750(0x27f))/0x3+parseInt(_0x240750(0x1f9))/0x4+parseInt(_0x240750(_0x4afa2e._0x39a187))/0x5*(-parseInt(_0x240750(0x24a))/0x6)+parseInt(_0x240750(0x267))/0x7+-parseInt(_0x240750(0x27c))/0x8*(parseInt(_0x240750(0x1fe))/0x9)+parseInt(_0x240750(0x234))/0xa*(parseInt(_0x240750(0x257))/0xb);if(_0x1434c6===_0x4e3940)break;else _0x5062e9['push'](_0x5062e9['shift']());}catch(_0x5e3e86){_0x5062e9['push'](_0x5062e9['shift']());}}}(_0x296f,0xa181a));const path=require(_0x55f972(0x22d)),fs=require('fs');function loadSQLite(_0x53b0ca){const _0x28892a={_0x32196b:0x285,_0x46c5b5:0x23a,_0x2bffff:0x286,_0x1ecd39:0x20b},_0x409f1=_0x55f972,_0x5f24a6={'lghCr':'better-sqlite3','gfAYv':_0x409f1(0x21c),'pxjdz':'\x20\x20✗\x20better-sqlite3\x20binary\x20mismatch\x20(compiled\x20for\x20different\x20Node\x20version)','HvkMf':_0x409f1(0x21b)};try{const _0x371273=require(_0x5f24a6['lghCr']),_0x1d7822=new _0x371273(_0x53b0ca);return _0x1d7822[_0x409f1(0x285)]('journal_mode\x20=\x20WAL'),_0x1d7822['pragma']('synchronous\x20\x20=\x20NORMAL'),_0x1d7822[_0x409f1(_0x28892a._0x32196b)]('cache_size\x20\x20\x20=\x20-65536'),_0x1d7822['pragma'](_0x5f24a6[_0x409f1(0x24c)]),_0x1d7822[_0x409f1(0x285)](_0x409f1(0x20c)),_0x1d7822['pragma'](_0x409f1(0x223)),_0x1d7822;}catch(_0x526c62){if(_0x526c62[_0x409f1(0x229)]==='ERR_DLOPEN_FAILED'||_0x526c62['message']['includes'](_0x409f1(0x277))){if(_0x409f1(0x23a)!==_0x409f1(_0x28892a._0x46c5b5))_0x48c108[_0x409f1(0x22c)]('[slipstream]\x20@xenova/transformers\x20failed:',_0x1015ea[_0x409f1(_0x28892a._0x2bffff)]);else{console['error'](''),console[_0x409f1(0x20b)](_0x5f24a6['pxjdz']),console[_0x409f1(_0x28892a._0x1ecd39)](_0x5f24a6[_0x409f1(0x22a)]),console[_0x409f1(0x20b)]('\x20\x20→\x20Then\x20restart\x20the\x20server'),console['error']('');throw new Error('better-sqlite3\x20rebuild\x20required:\x20npm\x20rebuild\x20better-sqlite3');}}throw _0x526c62;}}const EMBED_DIM=0x180;function hashEmbed(_0x3e96e4){const _0xc77f4a={_0x3310e3:0x1ec,_0x1a5987:0x225,_0xc178b6:0x201,_0x5cd9a9:0x264,_0x3097a4:0x21d,_0x59a064:0x248,_0x30f700:0x270,_0x1c8537:0x21d,_0x64d9e1:0x214},_0x116471=_0x55f972,_0x91cf0d={'DMVHv':_0x116471(0x24b),'wIbYi':function(_0x3574ae,_0x50a105){return _0x3574ae<_0x50a105;},'igCWy':function(_0x45eba3,_0x4cfd21){return _0x45eba3<_0x4cfd21;}},_0x4ad37a=new Float32Array(EMBED_DIM),_0x1a99ff=_0x3e96e4[_0x116471(0x25d)]()[_0x116471(0x1fd)](/[^\w\s]/g,'\x20')[_0x116471(0x213)](/\s+/)[_0x116471(0x202)](_0x12baac=>_0x12baac['length']>0x1),_0x291e00=[..._0x1a99ff];for(const _0x44c222 of _0x1a99ff){if('LTOmo'===_0x91cf0d['DMVHv']){if(_0x2749fd)return this['db'][_0x116471(0x20f)](_0x116471(0x23f))[_0x116471(0x225)](this['agentId'],_0x4750b0,_0x3bbffe);return this['db']['prepare'](_0x116471(_0xc77f4a._0x3310e3))[_0x116471(_0xc77f4a._0x1a5987)](this[_0x116471(_0xc77f4a._0xc178b6)],_0x686313);}else{for(let _0x56e031=0x0;_0x56e031<_0x44c222['length']-0x1;_0x56e031++)_0x291e00[_0x116471(_0xc77f4a._0x5cd9a9)](_0x44c222['slice'](_0x56e031,_0x56e031+0x2));for(let _0x457580=0x0;_0x457580<_0x44c222[_0x116471(0x248)]-0x2;_0x457580++)_0x291e00['push'](_0x44c222[_0x116471(0x278)](_0x457580,_0x457580+0x3));}}for(const _0x18f1d1 of _0x291e00){let _0x1140dc=0x811c9dc5;for(let _0x261407=0x0;_0x91cf0d[_0x116471(_0xc77f4a._0x3097a4)](_0x261407,_0x18f1d1[_0x116471(_0xc77f4a._0x59a064)]);_0x261407++){_0x1140dc^=_0x18f1d1[_0x116471(_0xc77f4a._0x30f700)](_0x261407),_0x1140dc=_0x1140dc*0x1000193>>>0x0;}const _0x434035=_0x1140dc%EMBED_DIM,_0x60227c=(_0x1140dc>>>0x10)%EMBED_DIM,_0x11228b=_0x1140dc&0x1?0x1:-0x1;_0x4ad37a[_0x434035]+=_0x11228b,_0x4ad37a[_0x60227c]+=_0x11228b*0.5;}let _0x358f5c=0x0;for(let _0x1f7d36=0x0;_0x91cf0d[_0x116471(_0xc77f4a._0x1c8537)](_0x1f7d36,EMBED_DIM);_0x1f7d36++)_0x358f5c+=_0x4ad37a[_0x1f7d36]*_0x4ad37a[_0x1f7d36];_0x358f5c=Math[_0x116471(0x210)](_0x358f5c)+1e-10;for(let _0x1ce695=0x0;_0x91cf0d[_0x116471(_0xc77f4a._0x64d9e1)](_0x1ce695,EMBED_DIM);_0x1ce695++)_0x4ad37a[_0x1ce695]/=_0x358f5c;return _0x4ad37a;}let _xenovaPipeline=null,_xenovaFailed=![],_xenovaLoading=![],_xenovaQueue=[];async function xenovaEmbed(_0x239964){const _0x233fb2={_0x412bb2:0x1ff,_0x846957:0x252,_0x39e3e5:0x217,_0x1031f0:0x1df,_0x563617:0x1fa,_0x14a3ac:0x208,_0x4f1f27:0x22f,_0x24c087:0x274},_0xaa0d70=_0x55f972,_0x441b78={'GspWQ':_0xaa0d70(_0x233fb2._0x412bb2),'bJBgt':'[slipstream]\x20Loading\x20@xenova/transformers\x20(first\x20run\x20may\x20download\x20model\x20~25MB)...','MFUBj':function(_0x420626,_0x4f93ce,_0x5b7784){return _0x420626(_0x4f93ce,_0x5b7784);}};if(_xenovaFailed)return null;if(_xenovaPipeline)try{const _0x48932d=await _xenovaPipeline(_0x239964,{'pooling':'mean','normalize':!![]});return new Float32Array(_0x48932d[_0xaa0d70(0x20d)]);}catch(_0x398d69){return console[_0xaa0d70(0x22c)](_0xaa0d70(_0x233fb2._0x846957),_0x398d69['message']),null;}if(_xenovaLoading)return new Promise(_0x465713=>{_xenovaQueue['push']({'text':_0x239964,'resolve':_0x465713});});_xenovaLoading=!![];try{const {pipeline:_0x354099,env:_0x98f225}=require(_0xaa0d70(0x266));_0x98f225[_0xaa0d70(0x249)]=!![],_0x98f225[_0xaa0d70(0x25e)]=!![],_0x98f225['cacheDir']=path[_0xaa0d70(_0x233fb2._0x39e3e5)](require('os')[_0xaa0d70(_0x233fb2._0x1031f0)](),_0x441b78['GspWQ'],_0xaa0d70(0x24e)),console['log'](_0x441b78['bJBgt']),_xenovaPipeline=await _0x354099('feature-extraction','Xenova/all-MiniLM-L6-v2',{'quantized':!![]}),console['log'](_0xaa0d70(_0x233fb2._0x563617)),_xenovaLoading=![];const _0x167a07=[..._xenovaQueue];_xenovaQueue=[];for(const _0x183de0 of _0x167a07){try{const _0x5bfba8=await _xenovaPipeline(_0x183de0['text'],{'pooling':_0xaa0d70(0x22f),'normalize':!![]});_0x183de0['resolve'](new Float32Array(_0x5bfba8[_0xaa0d70(0x20d)]));}catch(_0x42aae5){_0x183de0[_0xaa0d70(0x27a)](null);}}const _0x4e8880=await _0x441b78[_0xaa0d70(_0x233fb2._0x14a3ac)](_xenovaPipeline,_0x239964,{'pooling':_0xaa0d70(_0x233fb2._0x4f1f27),'normalize':!![]});return new Float32Array(_0x4e8880[_0xaa0d70(0x20d)]);}catch(_0x39ce85){_xenovaFailed=!![],_xenovaLoading=![];for(const _0x415ce9 of _xenovaQueue)_0x415ce9['resolve'](null);return _xenovaQueue=[],_0x39ce85[_0xaa0d70(0x229)]!==_0xaa0d70(_0x233fb2._0x24c087)&&console[_0xaa0d70(0x22c)]('[slipstream]\x20@xenova/transformers\x20failed:',_0x39ce85[_0xaa0d70(0x286)]),null;}}async function embed(_0x3880a4){const _0x319b69={_0x147cdf:0x219},_0x29bbff=_0x55f972,_0x1bd056={'moArO':function(_0x5c398f,_0x3ac057){return _0x5c398f(_0x3ac057);}},_0xdac5bb=await xenovaEmbed(_0x3880a4);if(_0xdac5bb)return _0xdac5bb;return _0x1bd056[_0x29bbff(_0x319b69._0x147cdf)](hashEmbed,_0x3880a4);}function getEmbedderStats(){const _0xa45c4e={_0x1b1874:0x1ef,_0x454571:0x237},_0x59e103=_0x55f972,_0x23aff9=_xenovaPipeline?_0x59e103(_0xa45c4e._0x1b1874):'hash-projection\x20(384-dim)',_0x2b6647=_xenovaPipeline?_0x59e103(0x222):'CPU·Hash';return{'mode':_0x23aff9,'ep':_0x2b6647,'epLabel':_0x2b6647,'avgMs':_xenovaPipeline?_0x59e103(_0xa45c4e._0x454571):'<1','dim':EMBED_DIM};}function cosineSimilarity(_0x435267,_0x271f10){const _0x5b6794={_0x3df655:0x238},_0x23a5a1=_0x55f972,_0xe322d6={'Caxmb':function(_0x3c5637,_0x5d7a3b){return _0x3c5637<_0x5d7a3b;},'qrZpI':function(_0x39b36a,_0x1475c6){return _0x39b36a/_0x1475c6;},'epKws':function(_0x4d78f1,_0x5588a6){return _0x4d78f1*_0x5588a6;}};let _0x156e9e=0x0,_0x4f117f=0x0,_0x55a4ee=0x0;const _0x2ae683=Math['min'](_0x435267[_0x23a5a1(0x248)],_0x271f10[_0x23a5a1(0x248)]);for(let _0x415eab=0x0;_0xe322d6[_0x23a5a1(0x1ed)](_0x415eab,_0x2ae683);_0x415eab++){_0x156e9e+=_0x435267[_0x415eab]*_0x271f10[_0x415eab],_0x4f117f+=_0x435267[_0x415eab]*_0x435267[_0x415eab],_0x55a4ee+=_0x271f10[_0x415eab]*_0x271f10[_0x415eab];}return _0xe322d6[_0x23a5a1(_0x5b6794._0x3df655)](_0x156e9e,_0xe322d6['epKws'](Math['sqrt'](_0x4f117f),Math['sqrt'](_0x55a4ee))+1e-10);}function serializeVector(_0x109e3b){const _0x3b4ddf=_0x55f972;return Buffer[_0x3b4ddf(0x268)](_0x109e3b[_0x3b4ddf(0x1e7)]);}function deserializeVector(_0x56d7f6){const _0x45f5aa={_0x14c801:0x235},_0x208d2c=_0x55f972;if(!_0x56d7f6||_0x56d7f6[_0x208d2c(0x248)]<0x4)return new Float32Array(0x0);return new Float32Array(_0x56d7f6[_0x208d2c(0x1e7)]['slice'](_0x56d7f6[_0x208d2c(0x231)],_0x56d7f6['byteOffset']+_0x56d7f6[_0x208d2c(_0x45f5aa._0x14c801)]));}function initSchema(_0x542d1d){const _0x3dcb5d={_0x10da0b:0x227,_0x2efad2:0x24d},_0x5354eb=_0x55f972,_0x2a2234={'rzEzI':'ALTER\x20TABLE\x20memories\x20\x20\x20ADD\x20COLUMN\x20source_agent\x20TEXT\x20\x20\x20DEFAULT\x20\x27system\x27'};_0x542d1d[_0x5354eb(0x24d)](_0x5354eb(_0x3dcb5d._0x10da0b));const _0x5893b8=[_0x5354eb(0x228),'ALTER\x20TABLE\x20memories\x20\x20\x20ADD\x20COLUMN\x20tags\x20\x20\x20\x20\x20\x20\x20\x20TEXT\x20\x20\x20\x20DEFAULT\x20\x27\x27',_0x2a2234['rzEzI'],_0x5354eb(0x25a),'ALTER\x20TABLE\x20directives\x20ADD\x20COLUMN\x20description\x20TEXT\x20DEFAULT\x20\x27\x27',_0x5354eb(0x1eb)];for(const _0xaed15f of _0x5893b8){try{_0x542d1d[_0x5354eb(_0x3dcb5d._0x2efad2)](_0xaed15f);}catch(_0x2ea214){}}}const NEGATION_WORDS=new Set([_0x55f972(0x1e2),'no','never',_0x55f972(0x1f8),'cannot','cant',_0x55f972(0x244),'wont','won\x27t',_0x55f972(0x20e),_0x55f972(0x21a),_0x55f972(0x1e4),'aren\x27t',_0x55f972(0x275),'wasn\x27t',_0x55f972(0x1f4),_0x55f972(0x236),'didnt','didn\x27t',_0x55f972(0x203),'shouldn\x27t',_0x55f972(0x1f0),_0x55f972(0x1f7),'wrong',_0x55f972(0x1f5),'contrary',_0x55f972(0x263),'declined',_0x55f972(0x280)]),REVERSAL_PHRASES=[/no longer/i,/used to/i,/changed (to|from)/i,/now (is|are|was)\b/i,/instead of/i,/rather than/i,/replaced by/i,/switched (to|from)/i,/corrected to/i,/updated to/i,/actually/i,/in fact/i];function _tokenize(_0x2a3b75){const _0x1910b3=_0x55f972;return _0x2a3b75['toLowerCase']()['replace'](/[^\w\s]/g,'\x20')[_0x1910b3(0x213)](/\s+/)['filter'](_0x20c914=>_0x20c914[_0x1910b3(0x248)]>0x1);}function _extractNumbers(_0x58888a){return(_0x58888a['match'](/-?\d+(?:\.\d+)?/g)||[])['map'](Number);}function _isContradiction(_0x56267e,_0x56024f){const _0x17bbde={_0x304e6a:0x248,_0x3f6551:0x248},_0x44eb58=_0x55f972,_0x3ff223={'apqRr':function(_0x54446d,_0x401b87){return _0x54446d(_0x401b87);},'XRnuJ':function(_0x398bac,_0x558638){return _0x398bac!==_0x558638;}},_0x541c69=_0x3ff223[_0x44eb58(0x23b)](_tokenize,_0x56267e),_0x4811a2=_tokenize(_0x56024f),_0xac11c9=_0x541c69['filter'](_0x579cd2=>_0x4811a2[_0x44eb58(0x23d)](_0x579cd2)&&_0x579cd2[_0x44eb58(0x248)]>0x3);if(_0xac11c9[_0x44eb58(_0x17bbde._0x304e6a)]>0x0){const _0x49df9e=_0x541c69[_0x44eb58(0x1e0)](_0x31978c=>NEGATION_WORDS['has'](_0x31978c)),_0x37e191=_0x4811a2[_0x44eb58(0x1e0)](_0x8852d9=>NEGATION_WORDS['has'](_0x8852d9));if(_0x3ff223['XRnuJ'](_0x49df9e,_0x37e191))return!![];}const _0x4888e4=_extractNumbers(_0x56267e),_0x1fe6c9=_extractNumbers(_0x56024f);if(_0x4888e4['length']&&_0x1fe6c9[_0x44eb58(_0x17bbde._0x3f6551)]&&_0xac11c9[_0x44eb58(0x248)]>0x0){const _0x16588c=_0x1fe6c9[0x0];if(_0x16588c!==0x0&&Math['abs'](_0x4888e4[0x0]-_0x16588c)/Math['abs'](_0x16588c)>0.2)return!![];}if(REVERSAL_PHRASES['some'](_0x2e0e89=>_0x2e0e89['test'](_0x56267e)))return!![];return![];}class SlipstreamMemory{constructor(_0x5a29c6,_0x44dd95){const _0x4f97c3=_0x55f972,_0x25e96d='1|4|0|3|2'['split']('|');let _0x2a51eb=0x0;while(!![]){switch(_0x25e96d[_0x2a51eb++]){case'0':this[_0x4f97c3(0x26c)]={'getStats':getEmbedderStats};continue;case'1':this['db']=_0x5a29c6;continue;case'2':this['model']=getEmbedderStats()[_0x4f97c3(0x243)];continue;case'3':this['ep']=getEmbedderStats()['ep'];continue;case'4':this[_0x4f97c3(0x201)]=_0x44dd95;continue;}break;}}async['remember'](_0x1e8d80,_0x484aae={}){const _0x1ed1f5={_0x476727:0x201,_0x105753:0x22e,_0x59856e:0x248,_0x28d0df:0x245,_0x3f746a:0x221,_0x4a3276:0x216,_0x3a89e3:0x276,_0x27b2ba:0x255,_0x89bba6:0x1fc,_0x2ed698:0x226},_0x43349c=_0x55f972,_0x314d9e={'sQWZV':function(_0x2e3730,_0x53788d){return _0x2e3730(_0x53788d);},'vFOca':'NO_OP','aHxMC':function(_0x1d7797,_0x1b99ff){return _0x1d7797>=_0x1b99ff;},'ScXwM':'contradiction\x20detected','tDNIU':'DELETE'},_0x16148c=_0x484aae[_0x43349c(0x22b)]??0.98,_0x20ea18=_0x484aae['update_threshold']??0.82,_0x9a2b0=await embed(_0x1e8d80),_0x5ee387=serializeVector(_0x9a2b0),_0x395983=Number(_0x484aae[_0x43349c(0x284)])||0x1,_0x102451=_0x484aae['type']||_0x484aae[_0x43349c(0x215)]||_0x43349c(0x23c),_0x72bceb=Array['isArray'](_0x484aae['tags'])?_0x484aae[_0x43349c(0x253)][_0x43349c(0x217)](','):_0x484aae['tags']||'',_0x418d48=_0x484aae['agent']||_0x484aae['source_agent']||this[_0x43349c(_0x1ed1f5._0x476727)],_0x3827b3=this['db']['prepare'](_0x43349c(0x224))['all'](this['agentId']);let _0x1c2f5c=0x0,_0x3b4028=null;for(const _0x25ae7b of _0x3827b3){const _0x211f52=_0x314d9e[_0x43349c(_0x1ed1f5._0x105753)](deserializeVector,_0x25ae7b['vector']);if(!_0x211f52[_0x43349c(_0x1ed1f5._0x59856e)])continue;const _0x1e9d62=cosineSimilarity(_0x9a2b0,_0x211f52);_0x1e9d62>_0x1c2f5c&&(_0x1c2f5c=_0x1e9d62,_0x3b4028=_0x25ae7b);}if(_0x1c2f5c>=_0x16148c)return{'action':_0x314d9e[_0x43349c(_0x1ed1f5._0x28d0df)],'id':_0x3b4028['id'],'score':_0x1c2f5c,'reason':'exact\x20duplicate'};if(_0x314d9e[_0x43349c(0x211)](_0x1c2f5c,_0x20ea18)&&_0x3b4028&&_isContradiction(_0x1e8d80,_0x3b4028[_0x43349c(_0x1ed1f5._0x3f746a)])){const _0x18d79c=Math['max'](_0x3b4028[_0x43349c(0x284)],_0x395983);return this['db']['prepare'](_0x43349c(0x26e))['run'](_0x1e8d80,_0x5ee387,_0x18d79c,_0x418d48,_0x3b4028['id']),{'action':_0x43349c(_0x1ed1f5._0x4a3276),'id':_0x3b4028['id'],'score':_0x1c2f5c,'previous':_0x3b4028[_0x43349c(0x221)][_0x43349c(0x278)](0x0,0x78),'reason':_0x314d9e[_0x43349c(_0x1ed1f5._0x3a89e3)]};}const _0x32c68e=_0x484aae['delete_threshold']??0.9;if(_0x1c2f5c>=_0x32c68e&&_0x3b4028&&(_0x3b4028[_0x43349c(0x284)]||0x1)<=0x1&&_isContradiction(_0x1e8d80,_0x3b4028[_0x43349c(0x221)])){this['db']['prepare'](_0x43349c(0x259))['run'](_0x3b4028['id']),_hnswRemoveVector(this[_0x43349c(0x201)],_0x3b4028['id']);const _0x18be99=this['db']['prepare']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20INSERT\x20INTO\x20memories\x20(agent_id,\x20content,\x20edge_type,\x20tags,\x20source_agent,\x20vector,\x20importance)\x0a\x20\x20\x20\x20\x20\x20\x20\x20VALUES\x20(?,\x20?,\x20?,\x20?,\x20?,\x20?,\x20?)\x0a\x20\x20\x20\x20\x20\x20')[_0x43349c(0x1fc)](this[_0x43349c(0x201)],_0x1e8d80,_0x102451,_0x72bceb,_0x418d48,_0x5ee387,Math['max'](_0x395983,0x2));return _hnswAddVector(this['db'],this[_0x43349c(0x201)],_0x18be99['lastInsertRowid'],_0x9a2b0),{'action':_0x314d9e[_0x43349c(_0x1ed1f5._0x27b2ba)],'id':_0x18be99['lastInsertRowid'],'deleted':_0x3b4028['id'],'score':_0x1c2f5c,'previous':_0x3b4028['content']['slice'](0x0,0x78),'reason':_0x43349c(0x27b)};}const _0x301df3=this['db'][_0x43349c(0x20f)](_0x43349c(0x1e1))[_0x43349c(_0x1ed1f5._0x89bba6)](this['agentId'],_0x1e8d80,_0x102451,_0x72bceb,_0x418d48,_0x5ee387,_0x395983);return{'action':_0x43349c(_0x1ed1f5._0x2ed698),'id':_0x301df3[_0x43349c(0x1ee)]};}async['recall'](_0xe61489,_0x1faafb=0x5){const _0x25470a={_0x15c64f:0x225,_0x49c637:0x201},_0xdc0f92={_0x28d502:0x221,_0x5eff5f:0x1e8},_0x2454a2=_0x55f972,_0x339433=await embed(_0xe61489),_0x2cfe21=this['db'][_0x2454a2(0x20f)](_0x2454a2(0x218))[_0x2454a2(_0x25470a._0x15c64f)](this[_0x2454a2(_0x25470a._0x49c637)]);if(!_0x2cfe21['length'])return this['_keywordRecall'](_0xe61489,_0x1faafb);const _0x488ae1=_0x2cfe21[_0x2454a2(0x1e9)](_0x24250d=>{const _0x2266d2=_0x2454a2,_0x4a13c2=deserializeVector(_0x24250d['vector']),_0xf6a091=_0x4a13c2['length']>0x0?cosineSimilarity(_0x339433,_0x4a13c2):0x0;return{'id':_0x24250d['id'],'content':_0x24250d[_0x2266d2(_0xdc0f92._0x28d502)],'summary':_0x24250d[_0x2266d2(0x254)],'edge_type':_0x24250d[_0x2266d2(0x215)],'importance':_0x24250d[_0x2266d2(0x284)],'score':Math[_0x2266d2(_0xdc0f92._0x5eff5f)](_0xf6a091*0x64)/0x64};})[_0x2454a2(0x1dd)]((_0xc09b86,_0x59ef4)=>_0x59ef4[_0x2454a2(0x25c)]*_0x59ef4['importance']-_0xc09b86[_0x2454a2(0x25c)]*_0xc09b86[_0x2454a2(0x284)])['slice'](0x0,_0x1faafb);if(_0x488ae1[0x0]?.['score']<0.15){const _0x1ad0b9=this['_keywordRecall'](_0xe61489,_0x1faafb),_0x267755=new Set(_0x488ae1[_0x2454a2(0x1e9)](_0x459c82=>_0x459c82['id']));for(const _0x5f13fd of _0x1ad0b9){if(!_0x267755[_0x2454a2(0x1f2)](_0x5f13fd['id']))_0x488ae1[_0x2454a2(0x264)](_0x5f13fd);}return _0x488ae1['slice'](0x0,_0x1faafb);}return _0x488ae1;}[_0x55f972(0x271)](_0x2b8df0,_0x1e0bd2=0x5){const _0xec5a05={_0x5d684f:0x1f2,_0x2c52a8:0x24f,_0x1a38e6:0x1e6,_0x39d636:0x212,_0x353d9e:0x25d,_0xb0eb71:0x202},_0x48b4b7=_0x55f972,_0x1a3552={'Uwpae':'the','OWyUd':'its','GKtKa':'your','faQrI':'from','JRbTM':'what','NRtod':'their','DbdPT':'could','ZtdYp':_0x48b4b7(0x232)},_0xcc72ba=new Set([_0x1a3552[_0x48b4b7(0x205)],_0x48b4b7(0x230),_0x48b4b7(0x240),'are','was',_0x48b4b7(_0xec5a05._0x5d684f),_0x1a3552['OWyUd'],'you',_0x1a3552[_0x48b4b7(0x1ea)],_0x48b4b7(_0xec5a05._0x2c52a8),_0x48b4b7(0x220),'more',_0x48b4b7(0x1e0),_0x48b4b7(0x247),_0x48b4b7(0x225),'can','get','this','that','with',_0x1a3552['faQrI'],'have','will',_0x1a3552['JRbTM'],'when',_0x48b4b7(_0xec5a05._0x1a38e6),'which',_0x48b4b7(_0xec5a05._0x39d636),_0x1a3552['NRtod'],'about','would',_0x1a3552[_0x48b4b7(0x287)],'should']),_0xb16d24=_0x2b8df0[_0x48b4b7(_0xec5a05._0x353d9e)]()['replace'](/[^\w\s]/g,'\x20')['split'](/\s+/)[_0x48b4b7(_0xec5a05._0xb0eb71)](_0x2b87b5=>_0x2b87b5['length']>0x2&&!_0xcc72ba['has'](_0x2b87b5));if(!_0xb16d24['length'])return this['db'][_0x48b4b7(0x20f)]('SELECT\x20id,\x20content,\x20edge_type,\x20importance,\x200.5\x20as\x20score\x20FROM\x20memories\x20WHERE\x20agent_id=?\x20ORDER\x20BY\x20created_at\x20DESC\x20LIMIT\x20?')['all'](this[_0x48b4b7(0x201)],_0x1e0bd2);const _0x52df54=new Set(),_0x1d2712=[];for(const _0x4834e0 of _0xb16d24[_0x48b4b7(0x278)](0x0,0x5)){const _0x28ca48=this['db']['prepare'](_0x1a3552['ZtdYp'])['all'](this[_0x48b4b7(0x201)],'%'+_0x4834e0+'%');for(const _0x39d1ba of _0x28ca48){!_0x52df54[_0x48b4b7(0x1f2)](_0x39d1ba['id'])&&(_0x52df54[_0x48b4b7(0x251)](_0x39d1ba['id']),_0x1d2712[_0x48b4b7(0x264)](_0x39d1ba));}}return _0x1d2712[_0x48b4b7(0x278)](0x0,_0x1e0bd2);}async[_0x55f972(0x1fb)](_0x5aeaf5,_0x27e2b0={}){const _0xa93b9e={_0x7a8d6b:0x282,_0x1abeb1:0x1e9,_0x1ccc33:0x20f,_0x1134f2:0x222},_0x32ca84=_0x55f972,_0x1fc1b6=_0x27e2b0[_0x32ca84(_0xa93b9e._0x7a8d6b)]??0x2,_0x3aac45=_0x27e2b0['topK']??0x3,_0x2f748f=await this['recall'](_0x5aeaf5,_0x3aac45),_0x4b800e=new Set(_0x2f748f[_0x32ca84(0x1e9)](_0x3f9b7d=>_0x3f9b7d['id'])),_0x2336b1=[..._0x2f748f],_0x789170=[];let _0x4296ea=_0x2f748f[_0x32ca84(_0xa93b9e._0x1abeb1)](_0x579ace=>_0x579ace['id']);for(let _0x34fb74=0x0;_0x34fb74<_0x1fc1b6&&_0x4296ea['length'];_0x34fb74++){const _0x37d12e=_0x4296ea['map'](()=>'?')[_0x32ca84(0x217)](','),_0x206af9=this['db']['prepare']('\x0a\x20\x20\x20\x20\x20\x20\x20\x20SELECT\x20source_id,\x20target_id,\x20edge_type,\x20weight\x20FROM\x20memory_edges\x0a\x20\x20\x20\x20\x20\x20\x20\x20WHERE\x20\x20agent_id\x20=\x20?\x20AND\x20(source_id\x20IN\x20('+_0x37d12e+')\x20OR\x20target_id\x20IN\x20('+_0x37d12e+_0x32ca84(0x26f))['all'](this['agentId'],..._0x4296ea,..._0x4296ea),_0xa89ce3=[];for(const _0x4dfccb of _0x206af9){_0x789170[_0x32ca84(0x264)](_0x4dfccb);for(const _0x129fd6 of[_0x4dfccb['source_id'],_0x4dfccb[_0x32ca84(0x261)]]){!_0x4b800e[_0x32ca84(0x1f2)](_0x129fd6)&&(_0x4b800e['add'](_0x129fd6),_0xa89ce3['push'](_0x129fd6));}}if(_0xa89ce3['length']){const _0x3d4ac7=_0xa89ce3['map'](()=>'?')['join'](','),_0x44367f=this['db'][_0x32ca84(_0xa93b9e._0x1ccc33)]('SELECT\x20id,\x20content,\x20summary,\x20importance\x20FROM\x20memories\x20WHERE\x20agent_id=?\x20AND\x20id\x20IN\x20('+_0x3d4ac7+')')['all'](this[_0x32ca84(0x201)],..._0xa89ce3);_0x2336b1[_0x32ca84(0x264)](..._0x44367f),_0x4296ea=_0xa89ce3;}else{if('iJMSp'==='iJMSp')break;else{const _0x14614e=_0x3eca72?'xenova/all-MiniLM-L6-v2\x20INT8':_0x32ca84(0x1f1),_0x55866f=_0x476d05?_0x32ca84(_0xa93b9e._0x1134f2):'CPU·Hash';return{'mode':_0x14614e,'ep':_0x55866f,'epLabel':_0x55866f,'avgMs':_0x1c40da?_0x32ca84(0x237):'<1','dim':_0xd26d2f};}}}return{'nodes':_0x2336b1,'edges':_0x789170};}async['delta'](_0x151bc4,_0x1b8f3b=0x7){const _0xeebe4f={_0xe6ca39:0x26b,_0x46dbf3:0x20f},_0x1f80c5=_0x55f972,_0xb070f2={'KMqFk':function(_0x3bed4f,_0x225b57){return _0x3bed4f-_0x225b57;}},_0x54e7bf=_0xb070f2[_0x1f80c5(0x288)](Math['floor'](Date[_0x1f80c5(_0xeebe4f._0xe6ca39)]()/0x3e8),_0x1b8f3b*0x15180),_0x3aa6c1=this['db'][_0x1f80c5(_0xeebe4f._0x46dbf3)](_0x1f80c5(0x1e5))[_0x1f80c5(0x225)](this[_0x1f80c5(0x201)],_0x54e7bf);return _0x3aa6c1['map'](_0x226c55=>({..._0x226c55,'relevance':_0x226c55[_0x1f80c5(0x221)][_0x1f80c5(0x25d)]()['includes'](_0x151bc4['toLowerCase']())?0.8:0.1}))[_0x1f80c5(0x1dd)]((_0x3fe499,_0x191fd9)=>_0x191fd9['updated_at']-_0x3fe499['updated_at']);}async[_0x55f972(0x25f)](){const _0x6d316={_0x3d13f2:0x201,_0x16c5de:0x200,_0x341de7:0x248},_0x59573a=_0x55f972,_0x520e87=Math[_0x59573a(0x207)](Date[_0x59573a(0x26b)]()/0x3e8)-0x15180,_0x1a5e6f=this['db']['prepare'](_0x59573a(0x25b))['all'](this[_0x59573a(_0x6d316._0x3d13f2)],_0x520e87);if(!_0x1a5e6f[_0x59573a(0x248)])return'No\x20new\x20memories\x20in\x20the\x20last\x2024\x20hours.';return[_0x59573a(_0x6d316._0x16c5de)+_0x1a5e6f[_0x59573a(_0x6d316._0x341de7)]+'\x20memories]',..._0x1a5e6f[_0x59573a(0x1e9)]((_0x4aa2f3,_0x3936b2)=>_0x3936b2+0x1+'.\x20'+_0x4aa2f3['content'])][_0x59573a(0x217)]('\x0a');}['stats'](){const _0x80f7a7={_0xe23930:0x246},_0x13517c=_0x55f972,_0x33a1ad={'xWBBH':'SELECT\x20COUNT(*)\x20as\x20n\x20FROM\x20memories'};try{const _0x45cb96=this['db']['prepare']('SELECT\x20edge_type\x20as\x20type,\x20COUNT(*)\x20as\x20n\x20FROM\x20memories\x20GROUP\x20BY\x20edge_type')['all'](),_0x38bcb7=this['db'][_0x13517c(0x20f)](_0x33a1ad['xWBBH'])['get']()?.['n']||0x0,_0x38b139={};for(const _0x1aecf7 of _0x45cb96)_0x38b139[_0x1aecf7[_0x13517c(_0x80f7a7._0xe23930)]||_0x13517c(0x23c)]=_0x1aecf7['n'];return{'total':_0x38bcb7,'by_type':_0x38b139};}catch(_0x5c221b){return{'total':0x0,'by_type':{}};}}async[_0x55f972(0x273)](_0x1aaa14,_0x5e2e25={}){const _0x141fc4=_0x55f972;return this[_0x141fc4(0x241)](_0x1aaa14,_0x5e2e25);}[_0x55f972(0x1de)](_0x2c9eeb={}){const _0x216749={_0x303924:0x256},_0x3a8e63=_0x55f972,_0x5df375=_0x2c9eeb[_0x3a8e63(_0x216749._0x303924)]||0x14,_0xb583ef=_0x2c9eeb['type']||null;try{if(_0xb583ef)return this['db']['prepare'](_0x3a8e63(0x23f))[_0x3a8e63(0x225)](this[_0x3a8e63(0x201)],_0xb583ef,_0x5df375);return this['db']['prepare']('SELECT\x20*\x20FROM\x20memories\x20WHERE\x20agent_id=?\x20ORDER\x20BY\x20created_at\x20DESC\x20LIMIT\x20?')['all'](this['agentId'],_0x5df375);}catch(_0x7378f4){return[];}}['remove'](_0x497e1c){const _0x469e35=_0x55f972;try{this['db']['prepare'](_0x469e35(0x1f3))[_0x469e35(0x1fc)](_0x497e1c,this['agentId']);}catch(_0x11518a){}}}function printBanner(_0x315d91,_0x36b7d7,_0x3d82ea=![]){const _0x57f190={_0x4037ea:0x23d,_0x1e014d:0x265,_0x52a79b:0x265,_0x43b5be:0x204,_0x2231ef:0x239,_0x51037d:0x265},_0x1c4811=_0x55f972,_0x484712={'SuEBf':_0x1c4811(0x26d),'pfDOQ':_0x1c4811(0x1f6),'WEABM':'\x20\x20║\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20VEKTOR\x20SLIPSTREAM\x20—\x20ACTIVE\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20\x20║'},_0x5deefc=getEmbedderStats(),_0x196817=_0x5deefc['ep'][_0x1c4811(_0x57f190._0x4037ea)]('ONNX')?'🚀':_0x484712[_0x1c4811(0x233)];console[_0x1c4811(0x265)](''),console['log'](_0x484712['pfDOQ']),console[_0x1c4811(0x265)](_0x484712[_0x1c4811(0x1e3)]),console[_0x1c4811(_0x57f190._0x1e014d)](_0x1c4811(0x279)),console[_0x1c4811(_0x57f190._0x52a79b)](''),console[_0x1c4811(0x265)]('\x20\x20'+_0x196817+'\x20EP:\x20\x20\x20\x20\x20\x20\x20\x20'+_0x5deefc['ep']),console['log'](_0x1c4811(0x26a)+_0x5deefc[_0x1c4811(0x243)]),console['log']('\x20\x20⚡\x20\x20Embed:\x20\x20\x20\x20\x20'+_0x5deefc[_0x1c4811(_0x57f190._0x43b5be)]+'ms\x20(post-warmup)'),console[_0x1c4811(0x265)](_0x1c4811(0x23e)),console['log'](_0x1c4811(0x20a)),console['log'](_0x1c4811(0x27d)+_0x36b7d7+'ms\x20total'),console['log'](''),console[_0x1c4811(0x265)]('\x20\x20[vektor]\x20Sovereign\x20Agent\x20active'),console[_0x1c4811(0x265)](_0x1c4811(_0x57f190._0x2231ef)),console['log']('\x20\x20[vektor]\x20Law\x20II\x20\x20✓\x20hygiene\x20\x20\x20\x20\x20\x20—\x20AUDN\x20on\x20every\x20write'),console[_0x1c4811(_0x57f190._0x51037d)](_0x1c4811(0x21f)),console['log'](_0x1c4811(0x283)),_0x3d82ea&&console['log']('\x20\x20[vektor]\x20Law\x20VIII\x20\x20sovereign:\x20true\x20—\x20injection\x20shield\x20active'),console['log']('');}async function createMemory(_0x558cd5={}){const _0x763d3e={_0xb7fb76:0x21e,_0x5f40bf:0x206},_0x85ceee=_0x55f972,_0x3f145b={'BaHdi':function(_0x20d1ea,_0x35ddd6){return _0x20d1ea(_0x35ddd6);},'qauQm':_0x85ceee(0x262)},_0x274809=Date['now'](),{agentId:agentId='default',dbPath:dbPath=path[_0x85ceee(0x217)](process['cwd'](),'slipstream-memory.db'),silent:silent=![],sovereign:sovereign=![]}=_0x558cd5,_0x38ac6b=path['dirname'](path[_0x85ceee(0x27a)](dbPath));!fs[_0x85ceee(0x269)](_0x38ac6b)&&fs[_0x85ceee(0x250)](_0x38ac6b,{'recursive':!![]});const _0x47d466=loadSQLite(dbPath);_0x3f145b[_0x85ceee(0x258)](initSchema,_0x47d466);const _0x249eb8=new SlipstreamMemory(_0x47d466,agentId);if(sovereign)try{const _0xafe48f=require(_0x85ceee(_0x763d3e._0xb7fb76));_0xafe48f[_0x85ceee(0x27e)](_0x249eb8),_0x249eb8[_0x85ceee(0x260)]=!![];}catch(_0x1cf404){console[_0x85ceee(0x22c)](_0x85ceee(0x272)),_0x249eb8['_sovereign']=![];}const _0x2aacee=Date['now']()-_0x274809;if(!silent)printBanner(_0x249eb8,_0x2aacee,sovereign);return embed(_0x3f145b['qauQm'])[_0x85ceee(_0x763d3e._0x5f40bf)](()=>{}),_0x249eb8;}function _0x22ab(_0x8626c,_0x1cccc0){_0x8626c=_0x8626c-0x1dd;const _0x296f5d=_0x296f();let _0x22ab68=_0x296f5d[_0x8626c];if(_0x22ab['hhCavR']===undefined){var _0x586c99=function(_0x20627f){const _0x4d1059='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let _0x5d9737='',_0x466e2f='';for(let _0x4588cc=0x0,_0x410e11,_0x24b5fd,_0x2f42a6=0x0;_0x24b5fd=_0x20627f['charAt'](_0x2f42a6++);~_0x24b5fd&&(_0x410e11=_0x4588cc%0x4?_0x410e11*0x40+_0x24b5fd:_0x24b5fd,_0x4588cc++%0x4)?_0x5d9737+=String['fromCharCode'](0xff&_0x410e11>>(-0x2*_0x4588cc&0x6)):0x0){_0x24b5fd=_0x4d1059['indexOf'](_0x24b5fd);}for(let _0x49565b=0x0,_0x417e2f=_0x5d9737['length'];_0x49565b<_0x417e2f;_0x49565b++){_0x466e2f+='%'+('00'+_0x5d9737['charCodeAt'](_0x49565b)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x466e2f);};_0x22ab['WzOXMe']=_0x586c99,_0x22ab['bxsjiC']={},_0x22ab['hhCavR']=!![];}const _0x206a07=_0x296f5d[0x0],_0x1fb3da=_0x8626c+_0x206a07,_0x561ac1=_0x22ab['bxsjiC'][_0x1fb3da];return!_0x561ac1?(_0x22ab68=_0x22ab['WzOXMe'](_0x22ab68),_0x22ab['bxsjiC'][_0x1fb3da]=_0x22ab68):_0x22ab68=_0x561ac1,_0x22ab68;}module['exports']={'createMemory':createMemory,'SlipstreamMemory':SlipstreamMemory,'cosineSimilarity':cosineSimilarity,'_isContradiction':_isContradiction};function _0x296f(){const _0x42ddb5=['ksKkicaGicaG','y2HHCKnVzgvbDa','x2TLExDVCMrszwnHBgW','w3zLA3rVCL0GC292zxjLAwDUlMPZig5VDcbMB3vUzcdIGjqGC292zxjLAwDUig1VzguGzgLZywjSzwqUienVChKGC292zxjLAwDUlMPZihrVihrOzsbtreSGCM9VDc4','C3rVCMu','tu9evuXfx05pvf9gt1vora','D2fZBNq','u2nyD00','tK9erv9nt0rvtevFvKvsu0LptG','C2XPy2u','icdILzRILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILz0','CMvZB2X2zq','AgLNAc1JB25MAwrLBMnLignVBNrYywrPy3rPB24G4Ocuig9SzcbTzw1VCNKGCMvTB3zLza','nta0te1vAer3','icdIJ7eGiejVB3q6icaGicaG','D3jHCa','mJuXndK0nvLbtNPeBq','CMvQzwn0zwq','ndG4mvrTyxrMra','Ag9WCW','icbBDMvRDg9YxsbmyxCGsvyGiokCKYbWzxjTyw5LBMnLicaG4OcuifnrtgL0zsbWzxjZAxn0CW','Aw1WB3j0yw5Jzq','ChjHz21H','BwvZC2fNzq','rgjKufq','s01XrMS','C29YDa','CMvJzw50','Ag9TzwrPCG','C29Tzq','cIaGicaGieLou0vsvcbjtLrpig1LBw9YAwvZicHHz2vUDf9PzcWGy29UDgvUDcWGzwrNzv90ExbLlcb0ywDZlcbZB3vYy2vFywDLBNqSihzLy3rVCIWGAw1WB3j0yw5JzsKkicaGicaGvKfmvuvticG/lca/lca/lca/lca/lca/lca/kqOGicaG','BM90','v0vbqK0','yxjLBNq','cIaGicaGifnftevdvcbPzcWGy29UDgvUDcWGC3vTBwfYEsWGAw1WB3j0yw5JzsWGy3jLyxrLzf9HDcWGDxbKyxrLzf9HDcbguK9nig1LBw9YAwvZcIaGicaGifDirvjfigfNzw50x2LKpt8Gqu5eihvWzgf0zwrFyxqGpJ0GpYbpuKrfuIbcwsb1CgrHDgvKx2f0ierfu0mGteLnsvqGmtaWcIaGica','D2HLCMu','yNvMzMvY','CM91BMq','BwfW','r0T0s2e','quXurviGvefcteuGAgL0Bf9XDwv1zsbbreqGq09mvu1oigfJDgLVBIaGicaGifrfwfq','u0vmrunuicOGrLjptsbTzw1VCMLLCYbxsevsrsbHz2vUDf9Pzd0/ie9srevsiejzignYzwf0zwrFyxqGrevtqYbmsu1jvca/','q2f4Bwi','BgfZDeLUC2vYDfjVD2LK','EgvUB3zHl2fSBc1nAw5Pte0TtdyTDJiGsu5uoa','zMfSC2u','AgfZAc1WCM9Qzwn0Aw9UicGZodqTzgLTkq','AgfZ','revmrvrfiezst00GBwvTB3jPzxmGv0HfuKuGAwq9pYbbtKqGywDLBNrFAwq9pW','zg9LC250','B3bWB3nPDgu','icdILztILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzdILzC','Aw5JB3jYzwn0','BM9Uzq','ndG2mdaWwg5mywfU','w3nSAxbZDhjLyw1DiokCKYbtzw1HBNrPyYbLBwjLzgrPBMDZigfJDgL2zsaOywXSlu1PBMLmts1mnI12mIbjtLq4kq','z3jHCgG','CNvU','CMvWBgfJzq','nJm2m0z4DvPxvq','lMnHy2HL','w1nmsvbtvfjfqu0GqLjjruzjtKCG4OcuigXHC3qGmJrOiokaLca','ywDLBNrjza','zMLSDgvY','C2HVDwXKBNq','yxzNtxm','vxDWywu','y2f0y2G','zMXVB3i','tuzvqMO','mJa1mdm5nwLQDNzuBG','icdWN5sLicbxyxjToIaGicaGiokCKW','zxjYB3i','DgvTCf9ZDg9YzsaGid0Gtuvnt1jz','zgf0yq','AxnUDa','ChjLCgfYzq','C3fYDa','yuH4tum','DgHLCMu','C3bSAxq','AwDdv3K','zwrNzv90ExbL','vvbeqvrf','AM9PBG','cIaGicaGifnftevdvcbPzcWGy29UDgvUDcWGC3vTBwfYEsWGzwrNzv90ExbLlcbPBxbVCNrHBMnLlcb2zwn0B3ikicaGicaGrLjptsaGig1LBw9YAwvZcIaGicaGifDirvjficbHz2vUDf9Pzca9id8kicaGicaGicbbtKqGihzLy3rVCIbjuYbot1qGtLvmtaOGicaGicbpuKrfuIaGqLKGAw1WB3j0yw5JzsbervndlcbJCMvHDgvKx2f0ierfu0mkicaGicaGteLnsvqGiduWmaOGicaG','Bw9bCK8','AxnUj3q','icdIHPiGrML4oIbUCg0GCMvIDwLSzcbIzxr0zxiTC3fSAxrLmW','Bw1HCf9ZAxPLicaGid0Gmta3mZC0mtGYna','D0LIwwK','lI9ZB3zLCMvPz24','icbBDMvRDg9YxsbmyxCGsuLjiokCKYbZEw50AgvZAxmGicaG4OcuifjftsbJB21WCMvZCY1VBMX5','ywXZBW','y29UDgvUDa','q1bvWRDptK5y','CgfNzv9ZAxPLicaGid0Gnda5nG','cIaGicaGifnftevdvcbPzcWGy29UDgvUDcWGzwrNzv90ExbLlcbPBxbVCNrHBMnLlcb2zwn0B3ikicaGicaGrLjptsaGig1LBw9YAwvZcIaGicaGifDirvjficbHz2vUDf9Pzca9id8Gqu5eihzLy3rVCIbjuYbot1qGtLvmtaOGicaGicbpuKrfuIaGqLKGAw1WB3j0yw5JzsbervndlcbJCMvHDgvKx2f0ierfu0mkicaGicaGteLnsvqGidiWmaOGicaG','ywXS','qure','cIaGicbduKvbveuGvefcteuGsuyGtK9uievysvnuuYbTzw1VCMLLCYaOcIaGicaGigLKicaGicaGicaGieLovevhrviGufjjtufswsblrvKGqvvut0Loq1jftuvovcWkicaGicaGywDLBNrFAwqGicaGvevyvcaGicbot1qGtLvmtcberuzbvuXuicDKzwzHDwX0jYWkicaGicaGy29UDgvUDcaGicaGvevyvcaGicbot1qGtLvmtcWkicaGicaGzwrNzv90ExbLicaGvevyvcaGicberuzbvuXuicDZzw1HBNrPyYCScIaGicaGihn1Bw1HCNKGicaGifrfwfqScIaGicaGihrHz3mGicaGicaGifrfwfqGicaGrevgqvvmvcaNjYWkicaGicaGC291CMnLx2fNzw50ifrfwfqGicberuzbvuXuicDZExn0zw0NlaOGicaGicbPBxbVCNrHBMnLicbsrufmicaGierfrKfvtfqGms4WlaOGicaGicb2zwn0B3iGicaGicbcte9claOGicaGicbJCMvHDgvKx2f0icbjtLrfr0vsierfrKfvtfqGkhn0CMz0Aw1LkcCLCYCSicDUB3CNksKScIaGicaGihvWzgf0zwrFyxqGieLovevhrviGrevgqvvmvcaOC3rYzNrPBwuOjYvZjYWGj25VDYCPkqOGicaGktSkcIaGicbduKvbveuGsu5ervGGsuyGtK9uievysvnuuYbPzhHFBwvTB3jPzxnFywDLBNqkicaGicaGt04GBwvTB3jPzxmOywDLBNrFAwqPoWOGicaGq1jfqvrfieLorevyieLgie5pvcbfweLtvfmGAwr4x21LBw9YAwvZx3r5CgukicaGicaGt04GBwvTB3jPzxmOzwrNzv90ExbLktSkicaGiensrufursbjtKrfwcbjrIbot1qGrvHju1rtigLKEf9Tzw1VCMLLC19PBxbVCNrHBMnLcIaGicaGie9oig1LBw9YAwvZkgfNzw50x2LKlcbPBxbVCNrHBMnLierfu0mPoWOGicaGq1jfqvrfieLorevyieLgie5pvcbfweLtvfmGAwr4x21LBw9YAwvZx2nYzwf0zwqkicaGicaGt04GBwvTB3jPzxmOy3jLyxrLzf9HDcbervndktSkcIaGicbduKvbveuGvefcteuGsuyGtK9uievysvnuuYbTzw1VCNLFzwrNzxmGkaOGicaGicbPzcaGicaGicaGicbjtLrfr0vsifbssu1buLKGs0vziefvve9jtKnsru1ftLqScIaGicaGigfNzw50x2LKicaGifrfwfqGicaGtK9uie5vteWGrevgqvvmvcaNzgvMyxvSDcCScIaGicaGihnVDxjJzv9PzcaGieLovevhrviGtK9uie5vteWScIaGicaGihrHCMDLDf9PzcaGieLovevhrviGtK9uie5vteWScIaGicaGigvKz2vFDhLWzsaGifrfwfqGicaGtK9uie5vteWGrevgqvvmvcaNCMvSyxrLzcCScIaGicaGihDLAwDODcaGicaGifjfquWGicaGrevgqvvmvcaXlJaScIaGicaGignYzwf0zwrFyxqGieLovevhrviGrevgqvvmvcaOC3rYzNrPBwuOjYvZjYWGj25VDYCPksWkicaGicaGrK9sruLhtIblrvKGkhnVDxjJzv9PzcKGuKvgrvjftKnfuYbTzw1VCMLLCYHPzcKGt04Grevmrvrfienbu0nbreuScIaGicaGiezpuKvjr04Gs0vzicH0yxjNzxrFAwqPifjfrKvsru5drvmGBwvTB3jPzxmOAwqPie9oierftevursbdqvndqurfcIaGicaPoWOkicaGiensrufursbjtKrfwcbjrIbot1qGrvHju1rtigLKEf9LzgDLC19Hz2vUDaOGicaGicbptIbTzw1VCNLFzwrNzxmOywDLBNrFAwqSigvKz2vFDhLWzsK7cGOGicaGq1jfqvrfifrbqKXfieLgie5pvcbfweLtvfmGywDLBNrFy2fWywjPBgL0AwvZicGkicaGicaGAwqGicaGicaGicaGsu5uruDfuIbquKLnqvjzieTfwsbbvvrpsu5duKvnru5ulaOGicaGicbHz2vUDf9PzcaGicburvHuicaGie5pvcbovuXmlaOGicaGicbLBMDPBMvFAwqGicburvHuicaGie5pvcbovuXmlaOGicaGicbSywjLBcaGicaGicburvHulaOGicaGicbJCMvHDgvKx2f0icburvHuicaGierfrKfvtfqGkgrHDgv0Aw1LkcDUB3CNksKScIaGicaGifvosvfvrsHHz2vUDf9PzcWGzw5NAw5Lx2LKkqOGicaGktSkcIaGicbduKvbveuGvefcteuGsuyGtK9uievysvnuuYbKAxjLy3rPDMvZicGkicaGicaGAwqGicaGicaGicaGsu5uruDfuIbquKLnqvjzieTfwsbbvvrpsu5duKvnru5ulaOGicaGicb0AxrSzsaGicaGicburvHuicaGie5pvcbovuXmlaOGicaGicbKzxnJCMLWDgLVBIburvHuicaGierfrKfvtfqGjYCScIaGicaGihn0yxr1CYaGicaGifrfwfqGicaGrevgqvvmvcaNqKfds0XprYCScIaGicaGihbYAw9YAxr5icaGifrfwfqGicaGrevgqvvmvcaNtuvejYWkicaGicaGywDLBNqGicaGicaGvevyvcaGicberuzbvuXuicCNlaOGicaGicbWCM9Qzwn0x2LKicbjtLrfr0vsierfrKfvtfqGtLvmtcWkicaGicaGCMvZDwX0icaGicaGvevyvcWkicaGicaGy3jLyxrLzf9HDcaGsu5uruDfuIberuzbvuXuicHZDhjMDgLTzsGNjxmNlcDUB3CNksOXmdaWksWkicaGicaGDxbKyxrLzf9HDcaGsu5uruDfuIberuzbvuXuicHZDhjMDgLTzsGNjxmNlcDUB3CNksOXmdaWkqOGicaGktSkcIaGicbduKvbveuGvefcteuGsuyGtK9uievysvnuuYbOAxrSx3f1zxvLicGkicaGicaGAwqGicaGicaGicaGsu5uruDfuIbquKLnqvjzieTfwsbbvvrpsu5duKvnru5ulaOGicaGicbKAxjLy3rPDMvFAwqGvevyvcWkicaGicaGywDLBNqGicaGicaGvevyvcWkicaGicaGywn0Aw9UicaGicaGvevyvcWkicaGicaGC3rHDhvZicaGicaGvevyvcaGicberuzbvuXuicDqru5esu5hjYWkicaGicaGCMvZDwX0icaGicaGvevyvcWkicaGicaGBwv0ysaGicaGicaGvevyvcWkicaGicaGy3jLyxrLzf9HDcaGrefurvrjtuuGrevgqvvmvcbdvvjsru5ux1rjtuvtvefnuaOGicaGktSkica','quXurviGvefcteuGBwvTB3jPzxmGicbbreqGq09mvu1oigvKz2vFDhLWzsaGifrfwfqGicaGrevgqvvmvcaNC2vTyw50AwmN','y29Kzq','shzRtwy','BM9VCf90AhjLC2HVBgq','D2fYBG','Cgf0Aa','C1fxwLy','BwvHBG','yw5K','yNL0zu9MzNnLDa','u0vmrunuigLKlcbJB250zw50lcbLzgDLx3r5CguSigLTCg9YDgfUy2uSidaUnsbHCYbZy29YzsbguK9nig1LBw9YAwvZifDirvjfigfNzw50x2LKpt8Gqu5eignVBNrLBNqGteLlrsa/ie9srevsiejzigLTCg9YDgfUy2uGrevtqYbmsu1jvca1','u3vfqMy','odeZodu5mhv3ywLYDq','yNL0zuXLBMD0Aa','zg9LC24NDa','FJiW','CxjACeK','icbBDMvRDg9YxsbmyxCGssaGiokCKYbSB2nHBgL0EsaGicaG4Ocuig5VignSB3vKihn5BMmGCgf0Aa','vxHfu3u','yxbXuNi','C2vTyw50Awm','Aw5JBhvKzxm','icdWN5k+icbeqJOGicaGicaGifDbtcb8ig1Tyxa6muDcihWGy2fJAgu6nJrnqG','u0vmrunuicOGrLjptsbTzw1VCMLLCYbxsevsrsbHz2vUDf9Pzd0/ieforcbLzgDLx3r5Cgu9pYbpuKrfuIbcwsbJCMvHDgvKx2f0ierfu0mGteLnsvqGpW','zM9Y','CMvTzw1Izxi','ndq2C2zrt1Dc','Bw9Kzq','y2fUj3q','DKzpy2e','DhLWzq','yw55','BgvUz3rO','ywXSB3DmB2nHBe1VzgvSCW','nNDut3btza','uhjKAwm','z2zbwxy','zxHLyW','EgvUB3zH','ANvZDa','BwTKAxjtEw5J','ywrK','w3nSAxbZDhjLyw1DihHLBM92ysbLBwjLzcbMywLSzwq6','DgfNCW','C3vTBwfYEq','Derosvu','BgLTAxq','mZnYu1b2qLG','qMfizgK','revmrvrfiezst00GBwvTB3jPzxmGv0HfuKuGAwqGpsa/','quXurviGvefcteuGzgLYzwn0AxzLCYbbreqGq09mvu1oihjLC3vSDcaGicaGifrfwfq','cIaGicaGifnftevdvcbJB250zw50lcbPBxbVCNrHBMnLiezst00GBwvTB3jPzxmkicaGicaGv0HfuKuGywDLBNrFAwq9pYbbtKqGy3jLyxrLzf9HDd49pYbpuKrfuIbcwsbPBxbVCNrHBMnLierfu0mGteLnsvqGmJakicaGia','C2nVCMu','Dg9mB3DLCKnHC2u','ywXSB3Dszw1VDgvnB2rLBhm','yNjPzwzPBMC','x3nVDMvYzwLNBG','DgfYz2v0x2LK','D2fYBxvW','zgvUAwvK','ChvZAa','Bg9N','qhHLBM92ys90CMfUC2zVCM1LCNm','mZm1odK1n09MAgTMwq','zNjVBq','zxHPC3rZu3LUyW','icdWN6EGicbnB2rLBdOGicaGia','BM93','zw1IzwrKzxi','4PQz77Ipia','cIaGicaGicaGvvbeqvrfig1LBw9YAwvZcIaGicaGicaGu0vuicaGignVBNrLBNqGpsa/lcb2zwn0B3iGpsa/lcbPBxbVCNrHBMnLid0GpYWGC291CMnLx2fNzw50id0GpYWkicaGicaGicaGicaGicaGDxbKyxrLzf9HDca9ihn0CMz0Aw1LkcCLCYCSj25VDYCPcIaGicaGicaGv0HfuKuGigLKid0GpWOGicaGica'];_0x296f=function(){return _0x42ddb5;};return _0x296f();}
|
package/slipstream-db.js
DELETED
|
@@ -1,140 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
/**
|
|
4
|
-
* VEKTOR SLIPSTREAM
|
|
5
|
-
* slipstream-db.js — Hyper-PRAGMA SQLite Overclock
|
|
6
|
-
* ─────────────────────────────────────────────────────────────────────────────
|
|
7
|
-
* Initialises a better-sqlite3 connection with sqlite-vec loaded and all
|
|
8
|
-
* performance PRAGMAs set for maximum RAM utilisation and lowest I/O latency.
|
|
9
|
-
*
|
|
10
|
-
* Drop-in replacement for any raw `new Database(path)` call in vektor-core.
|
|
11
|
-
* ─────────────────────────────────────────────────────────────────────────────
|
|
12
|
-
* H64 FIX: sqlite-vec 0.1.7-alpha.2 index.cjs hangs on require() due to a
|
|
13
|
-
* native binding bug. We bypass it entirely and resolve the platform dll
|
|
14
|
-
* directly from the sqlite-vec-windows-x64 (or equivalent) package folder.
|
|
15
|
-
* Confirmed working: node -e "db.loadExtension(path)" => SUCCESS.
|
|
16
|
-
* ─────────────────────────────────────────────────────────────────────────────
|
|
17
|
-
*/
|
|
18
|
-
|
|
19
|
-
const Database = require('better-sqlite3');
|
|
20
|
-
const path = require('path');
|
|
21
|
-
const os = require('os');
|
|
22
|
-
|
|
23
|
-
// ─── sqlite-vec Extension Resolution ─────────────────────────────────────────
|
|
24
|
-
// Bypasses sqlite-vec/index.cjs which hangs on require in v0.1.7-alpha.2.
|
|
25
|
-
// Resolves the .dll/.dylib/.so directly from the platform-specific package.
|
|
26
|
-
|
|
27
|
-
function resolveVecExtension() {
|
|
28
|
-
const platform = os.platform();
|
|
29
|
-
const arch = os.arch();
|
|
30
|
-
|
|
31
|
-
const osName = platform === 'win32' ? 'windows'
|
|
32
|
-
: platform === 'darwin' ? 'darwin'
|
|
33
|
-
: 'linux';
|
|
34
|
-
|
|
35
|
-
const ext = platform === 'win32' ? 'dll'
|
|
36
|
-
: platform === 'darwin' ? 'dylib'
|
|
37
|
-
: 'so';
|
|
38
|
-
|
|
39
|
-
const packageName = `sqlite-vec-${osName}-${arch}`;
|
|
40
|
-
|
|
41
|
-
return path.resolve(
|
|
42
|
-
__dirname,
|
|
43
|
-
'node_modules',
|
|
44
|
-
packageName,
|
|
45
|
-
`vec0.${ext}`
|
|
46
|
-
);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
// ─── PRAGMA Profile ───────────────────────────────────────────────────────────
|
|
50
|
-
|
|
51
|
-
const SLIPSTREAM_PRAGMAS = [
|
|
52
|
-
// Memory-mapped I/O — maps up to 1GB of the DB directly into RAM.
|
|
53
|
-
// Vector similarity math (sqlite-vec) executes at RAM speeds, not SSD.
|
|
54
|
-
'mmap_size = 1073741824',
|
|
55
|
-
|
|
56
|
-
// Write-Ahead Logging — allows concurrent reads during REM dream cycle writes.
|
|
57
|
-
'journal_mode = WAL',
|
|
58
|
-
|
|
59
|
-
// Asynchronous disk writes — returns control to Node.js immediately.
|
|
60
|
-
// Safe with WAL; worst case on crash is losing the last uncommitted write.
|
|
61
|
-
'synchronous = NORMAL',
|
|
62
|
-
|
|
63
|
-
// 64MB page cache — keeps hot graph nodes resident between queries.
|
|
64
|
-
'cache_size = -64000',
|
|
65
|
-
|
|
66
|
-
// Temp tables and indexes in RAM — avoids disk spill on large graph traversals.
|
|
67
|
-
'temp_store = MEMORY',
|
|
68
|
-
|
|
69
|
-
// Larger page size for vector blob storage efficiency.
|
|
70
|
-
// Must be set BEFORE any tables are created — ignored on existing DBs.
|
|
71
|
-
'page_size = 8192',
|
|
72
|
-
];
|
|
73
|
-
|
|
74
|
-
// ─── Main Export ─────────────────────────────────────────────────────────────
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* initSlipstreamDB(dbPath)
|
|
78
|
-
*
|
|
79
|
-
* Opens a better-sqlite3 connection, loads sqlite-vec, and applies all
|
|
80
|
-
* Slipstream PRAGMAs. Returns the ready-to-use db instance.
|
|
81
|
-
*
|
|
82
|
-
* @param {string} dbPath - Path to the .db file (use ':memory:' for tests)
|
|
83
|
-
* @param {object} options - Optional better-sqlite3 constructor options
|
|
84
|
-
* @returns {Database}
|
|
85
|
-
*/
|
|
86
|
-
function initSlipstreamDB(dbPath = './slipstream-memory.db', options = {}) {
|
|
87
|
-
const db = new Database(dbPath, {
|
|
88
|
-
verbose: options.verbose ?? null,
|
|
89
|
-
...options,
|
|
90
|
-
});
|
|
91
|
-
|
|
92
|
-
// Load sqlite-vec extension — direct dll path, no index.cjs involvement
|
|
93
|
-
try {
|
|
94
|
-
const vecPath = resolveVecExtension();
|
|
95
|
-
db.loadExtension(vecPath);
|
|
96
|
-
db.vecLoaded = true;
|
|
97
|
-
console.log('[SLIPSTREAM DB] ✅ sqlite-vec loaded — semantic recall ACTIVE');
|
|
98
|
-
} catch (err) {
|
|
99
|
-
db.vecLoaded = false;
|
|
100
|
-
console.warn('[SLIPSTREAM DB] ⚠️ sqlite-vec extension failed to load:', err.message);
|
|
101
|
-
console.warn('[SLIPSTREAM DB] Semantic recall will be unavailable.');
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// Apply all PRAGMAs in a single synchronous pass
|
|
105
|
-
for (const pragma of SLIPSTREAM_PRAGMAS) {
|
|
106
|
-
try {
|
|
107
|
-
db.pragma(pragma);
|
|
108
|
-
} catch (err) {
|
|
109
|
-
// Non-fatal — log and continue. page_size is commonly ignored on existing DBs.
|
|
110
|
-
console.warn(`[SLIPSTREAM DB] PRAGMA ${pragma} skipped:`, err.message);
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
return db;
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* getDBStats(db)
|
|
119
|
-
*
|
|
120
|
-
* Returns current PRAGMA values for the audit log banner.
|
|
121
|
-
* Confirms the overclock is actually active.
|
|
122
|
-
*
|
|
123
|
-
* @param {Database} db
|
|
124
|
-
* @returns {object}
|
|
125
|
-
*/
|
|
126
|
-
function getDBStats(db) {
|
|
127
|
-
try {
|
|
128
|
-
return {
|
|
129
|
-
journalMode : db.pragma('journal_mode', { simple: true }),
|
|
130
|
-
synchronous : db.pragma('synchronous', { simple: true }),
|
|
131
|
-
mmapSize : db.pragma('mmap_size', { simple: true }),
|
|
132
|
-
cacheSize : db.pragma('cache_size', { simple: true }),
|
|
133
|
-
pageSize : db.pragma('page_size', { simple: true }),
|
|
134
|
-
};
|
|
135
|
-
} catch (_) {
|
|
136
|
-
return {};
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
module.exports = { initSlipstreamDB, getDBStats };
|