@pella-labs/pinakes 0.2.0 → 0.3.1
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 +20 -20
- package/dist/cli/audit.d.ts +5 -3
- package/dist/cli/audit.d.ts.map +1 -1
- package/dist/cli/audit.js +3 -24
- package/dist/cli/audit.js.map +1 -1
- package/dist/cli/contradiction-cli.d.ts +1 -0
- package/dist/cli/contradiction-cli.d.ts.map +1 -1
- package/dist/cli/contradiction-cli.js +12 -3
- package/dist/cli/contradiction-cli.js.map +1 -1
- package/dist/cli/contradiction.js +8 -8
- package/dist/cli/contradiction.js.map +1 -1
- package/dist/cli/export.d.ts +1 -1
- package/dist/cli/export.d.ts.map +1 -1
- package/dist/cli/export.js +7 -28
- package/dist/cli/export.js.map +1 -1
- package/dist/cli/import.d.ts +2 -2
- package/dist/cli/import.d.ts.map +1 -1
- package/dist/cli/import.js +5 -26
- package/dist/cli/import.js.map +1 -1
- package/dist/cli/index.js +17 -12
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/purge.d.ts +2 -2
- package/dist/cli/purge.d.ts.map +1 -1
- package/dist/cli/purge.js +2 -23
- package/dist/cli/purge.js.map +1 -1
- package/dist/cli/rebuild.d.ts +8 -6
- package/dist/cli/rebuild.d.ts.map +1 -1
- package/dist/cli/rebuild.js +9 -31
- package/dist/cli/rebuild.js.map +1 -1
- package/dist/cli/serve.d.ts +9 -7
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +71 -41
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/status.d.ts +7 -5
- package/dist/cli/status.d.ts.map +1 -1
- package/dist/cli/status.js +10 -29
- package/dist/cli/status.js.map +1 -1
- package/dist/db/client.d.ts +4 -4
- package/dist/db/client.js +3 -3
- package/dist/db/client.js.map +1 -1
- package/dist/db/migrations/0002_rename_kg_to_pinakes.sql +49 -0
- package/dist/db/migrations/{migrations/meta/0001_snapshot.json → meta/0002_snapshot.json} +44 -44
- package/dist/db/migrations/meta/_journal.json +7 -0
- package/dist/db/repository.js +5 -5
- package/dist/db/repository.js.map +1 -1
- package/dist/db/schema.d.ts +84 -84
- package/dist/db/schema.d.ts.map +1 -1
- package/dist/db/schema.js +49 -49
- package/dist/db/schema.js.map +1 -1
- package/dist/db/types.d.ts +2 -2
- package/dist/db/types.js +1 -1
- package/dist/gaps/detector.d.ts +5 -5
- package/dist/gaps/detector.js +15 -15
- package/dist/gaps/detector.js.map +1 -1
- package/dist/ingest/chokidar.js +1 -1
- package/dist/ingest/ingester.d.ts +4 -4
- package/dist/ingest/ingester.js +21 -21
- package/dist/ingest/ingester.js.map +1 -1
- package/dist/ingest/manifest.d.ts +5 -3
- package/dist/ingest/manifest.d.ts.map +1 -1
- package/dist/ingest/manifest.js +23 -14
- package/dist/ingest/manifest.js.map +1 -1
- package/dist/ingest/parse/chunk.js +1 -1
- package/dist/ingest/parse/markdown.d.ts +2 -2
- package/dist/ingest/queue.d.ts +1 -1
- package/dist/ingest/queue.js +1 -1
- package/dist/ingest/source.d.ts +2 -2
- package/dist/ingest/source.d.ts.map +1 -1
- package/dist/ingest/source.js +1 -1
- package/dist/llm/provider.js +3 -3
- package/dist/llm/provider.js.map +1 -1
- package/dist/mcp/envelope.d.ts +1 -1
- package/dist/mcp/tools/execute.d.ts +7 -7
- package/dist/mcp/tools/execute.d.ts.map +1 -1
- package/dist/mcp/tools/execute.js +27 -27
- package/dist/mcp/tools/execute.js.map +1 -1
- package/dist/mcp/tools/search.d.ts +8 -8
- package/dist/mcp/tools/search.d.ts.map +1 -1
- package/dist/mcp/tools/search.js +23 -22
- package/dist/mcp/tools/search.js.map +1 -1
- package/dist/observability/audit.d.ts +2 -2
- package/dist/observability/audit.js +3 -3
- package/dist/observability/audit.js.map +1 -1
- package/dist/observability/logger.js +4 -4
- package/dist/observability/logger.js.map +1 -1
- package/dist/observability/metrics.js +1 -1
- package/dist/observability/metrics.js.map +1 -1
- package/dist/paths.d.ts +61 -0
- package/dist/paths.d.ts.map +1 -0
- package/dist/paths.js +106 -0
- package/dist/paths.js.map +1 -0
- package/dist/retrieval/embedder.d.ts +9 -9
- package/dist/retrieval/embedder.d.ts.map +1 -1
- package/dist/retrieval/embedder.js +17 -17
- package/dist/retrieval/embedder.js.map +1 -1
- package/dist/retrieval/fts.d.ts +3 -3
- package/dist/retrieval/fts.js +8 -8
- package/dist/retrieval/graph.d.ts +1 -1
- package/dist/retrieval/graph.js +8 -8
- package/dist/retrieval/graph.js.map +1 -1
- package/dist/retrieval/vec.d.ts +2 -2
- package/dist/retrieval/vec.js +3 -3
- package/dist/sandbox/bindings/install.d.ts +5 -5
- package/dist/sandbox/bindings/install.d.ts.map +1 -1
- package/dist/sandbox/bindings/install.js +3 -3
- package/dist/sandbox/bindings/install.js.map +1 -1
- package/dist/sandbox/bindings/pinakes.d.ts +29 -0
- package/dist/sandbox/bindings/pinakes.d.ts.map +1 -0
- package/dist/sandbox/bindings/pinakes.js +333 -0
- package/dist/sandbox/bindings/pinakes.js.map +1 -0
- package/dist/sandbox/bindings/write.d.ts +1 -1
- package/dist/sandbox/bindings/write.d.ts.map +1 -1
- package/dist/sandbox/bindings/write.js +9 -9
- package/dist/sandbox/bindings/write.js.map +1 -1
- package/dist/sandbox/executor.d.ts +3 -3
- package/dist/sandbox/executor.js +6 -6
- package/dist/sandbox/executor.js.map +1 -1
- package/dist/sandbox/helpers.d.ts +1 -1
- package/dist/sandbox/helpers.d.ts.map +1 -1
- package/dist/sandbox/helpers.js +2 -2
- package/dist/sandbox/vendored-codemode.d.ts +1 -1
- package/dist/sandbox/vendored-codemode.js +1 -1
- package/dist/server.js +15 -6
- package/dist/server.js.map +1 -1
- package/package.json +9 -3
- package/dist/db/migrations/migrations/0000_conscious_lockheed.sql +0 -115
- package/dist/db/migrations/migrations/0001_icy_dust.sql +0 -1
- package/dist/db/migrations/migrations/meta/0000_snapshot.json +0 -496
- package/dist/db/migrations/migrations/meta/_journal.json +0 -20
package/dist/retrieval/fts.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Run an FTS5 MATCH query with BM25 ranking and snippet extraction.
|
|
3
3
|
*
|
|
4
4
|
* @param reader A read-only `better-sqlite3` connection (from the read pool).
|
|
5
|
-
* @param scope `'project'` or `'personal'` — filters by `
|
|
5
|
+
* @param scope `'project'` or `'personal'` — filters by `pinakes_nodes.scope`.
|
|
6
6
|
* @param query Raw user/LLM query string (will be escaped).
|
|
7
7
|
* @param limit Max results (clamped to 1..100 by callers).
|
|
8
8
|
* @returns Results ranked by BM25 (lower rank = better match).
|
|
@@ -13,18 +13,18 @@ export function ftsQuery(reader, scope, query, limit) {
|
|
|
13
13
|
return [];
|
|
14
14
|
const rows = reader
|
|
15
15
|
.prepare(`SELECT c.id AS id, c.text AS text,
|
|
16
|
-
snippet(
|
|
16
|
+
snippet(pinakes_chunks_fts, 0, '', '', '…', 64) AS snippet,
|
|
17
17
|
n.source_uri AS source_uri,
|
|
18
|
-
n.id AS node_id, bm25(
|
|
18
|
+
n.id AS node_id, bm25(pinakes_chunks_fts) AS rank,
|
|
19
19
|
n.confidence AS confidence,
|
|
20
20
|
n.title AS title,
|
|
21
21
|
n.section_path AS section_path
|
|
22
|
-
FROM
|
|
23
|
-
JOIN
|
|
24
|
-
JOIN
|
|
22
|
+
FROM pinakes_chunks_fts f
|
|
23
|
+
JOIN pinakes_chunks c ON c.rowid = f.rowid
|
|
24
|
+
JOIN pinakes_nodes n ON c.node_id = n.id
|
|
25
25
|
WHERE n.scope = ?
|
|
26
|
-
AND
|
|
27
|
-
ORDER BY bm25(
|
|
26
|
+
AND pinakes_chunks_fts MATCH ?
|
|
27
|
+
ORDER BY bm25(pinakes_chunks_fts)
|
|
28
28
|
LIMIT ?`)
|
|
29
29
|
.all(scope, escaped, limit);
|
|
30
30
|
return rows;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Database as BetterSqliteDatabase } from 'better-sqlite3';
|
|
2
2
|
/**
|
|
3
|
-
* Graph algorithms over the `
|
|
3
|
+
* Graph algorithms over the `pinakes_edges` table (D40).
|
|
4
4
|
*
|
|
5
5
|
* - **PageRank**: iterative power method (d=0.85, 20 iterations).
|
|
6
6
|
* - **Connected components**: BFS on undirected edge interpretation.
|
package/dist/retrieval/graph.js
CHANGED
|
@@ -12,7 +12,7 @@ export function pagerank(reader, scope, opts) {
|
|
|
12
12
|
const limit = Math.min(Math.max(opts?.limit ?? 20, 1), 100);
|
|
13
13
|
// Load all nodes
|
|
14
14
|
const nodes = reader
|
|
15
|
-
.prepare(`SELECT id, source_uri, title FROM
|
|
15
|
+
.prepare(`SELECT id, source_uri, title FROM pinakes_nodes WHERE scope = ?`)
|
|
16
16
|
.all(scope);
|
|
17
17
|
if (nodes.length === 0)
|
|
18
18
|
return [];
|
|
@@ -20,9 +20,9 @@ export function pagerank(reader, scope, opts) {
|
|
|
20
20
|
const nodeSet = new Set(nodes.map((n) => n.id));
|
|
21
21
|
// Load edges (only between nodes in this scope)
|
|
22
22
|
const edges = reader
|
|
23
|
-
.prepare(`SELECT e.src_id, e.dst_id FROM
|
|
24
|
-
JOIN
|
|
25
|
-
JOIN
|
|
23
|
+
.prepare(`SELECT e.src_id, e.dst_id FROM pinakes_edges e
|
|
24
|
+
JOIN pinakes_nodes ns ON e.src_id = ns.id
|
|
25
|
+
JOIN pinakes_nodes nd ON e.dst_id = nd.id
|
|
26
26
|
WHERE ns.scope = ? AND nd.scope = ?`)
|
|
27
27
|
.all(scope, scope);
|
|
28
28
|
// Build adjacency: outgoing edges and incoming edges
|
|
@@ -88,15 +88,15 @@ export function pagerank(reader, scope, opts) {
|
|
|
88
88
|
export function connectedComponents(reader, scope) {
|
|
89
89
|
// Load all nodes
|
|
90
90
|
const nodes = reader
|
|
91
|
-
.prepare(`SELECT id, source_uri, title FROM
|
|
91
|
+
.prepare(`SELECT id, source_uri, title FROM pinakes_nodes WHERE scope = ?`)
|
|
92
92
|
.all(scope);
|
|
93
93
|
if (nodes.length === 0)
|
|
94
94
|
return [];
|
|
95
95
|
// Load edges (undirected: add both directions)
|
|
96
96
|
const edges = reader
|
|
97
|
-
.prepare(`SELECT e.src_id, e.dst_id FROM
|
|
98
|
-
JOIN
|
|
99
|
-
JOIN
|
|
97
|
+
.prepare(`SELECT e.src_id, e.dst_id FROM pinakes_edges e
|
|
98
|
+
JOIN pinakes_nodes ns ON e.src_id = ns.id
|
|
99
|
+
JOIN pinakes_nodes nd ON e.dst_id = nd.id
|
|
100
100
|
WHERE ns.scope = ? AND nd.scope = ?`)
|
|
101
101
|
.all(scope, scope);
|
|
102
102
|
// Build undirected adjacency list
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/retrieval/graph.ts"],"names":[],"mappings":"AAgCA;;;;;;;GAOG;AACH,MAAM,UAAU,QAAQ,CACtB,MAA4B,EAC5B,KAAa,EACb,IAAmB;IAEnB,MAAM,CAAC,GAAG,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;IAChC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,UAAU,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAE5D,iBAAiB;IACjB,MAAM,KAAK,GAAG,MAAM;SACjB,OAAO,CACN,
|
|
1
|
+
{"version":3,"file":"graph.js","sourceRoot":"","sources":["../../src/retrieval/graph.ts"],"names":[],"mappings":"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"}
|
package/dist/retrieval/vec.d.ts
CHANGED
|
@@ -5,8 +5,8 @@ import type { Embedder } from './embedder.js';
|
|
|
5
5
|
*
|
|
6
6
|
* The query embedding is computed on the fly by the caller-provided embedder.
|
|
7
7
|
* The sqlite-vec `MATCH` operator performs an approximate nearest-neighbor
|
|
8
|
-
* search against `
|
|
9
|
-
* We join back to `
|
|
8
|
+
* search against `pinakes_chunks_vec`, returning rowids + cosine distances.
|
|
9
|
+
* We join back to `pinakes_chunks` + `pinakes_nodes` for the full result shape.
|
|
10
10
|
*
|
|
11
11
|
* **Graceful degradation**: if the vec table is empty or the embedder fails,
|
|
12
12
|
* returns an empty array (never throws on query path).
|
package/dist/retrieval/vec.js
CHANGED
|
@@ -19,9 +19,9 @@ export function vecQuery(reader, scope, embedding, limit) {
|
|
|
19
19
|
n.confidence AS confidence,
|
|
20
20
|
n.title AS title,
|
|
21
21
|
n.section_path AS section_path
|
|
22
|
-
FROM
|
|
23
|
-
JOIN
|
|
24
|
-
JOIN
|
|
22
|
+
FROM pinakes_chunks_vec v
|
|
23
|
+
JOIN pinakes_chunks c ON c.rowid = v.rowid
|
|
24
|
+
JOIN pinakes_nodes n ON c.node_id = n.id
|
|
25
25
|
WHERE v.embedding MATCH ?
|
|
26
26
|
AND k = ?
|
|
27
27
|
AND n.scope = ?
|
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
import type { QuickJSContext } from 'quickjs-emscripten';
|
|
2
|
-
import { type
|
|
2
|
+
import { type PinakesBindingDeps } from './pinakes.js';
|
|
3
3
|
/**
|
|
4
4
|
* All deps needed by the binding surface. Supports single-scope
|
|
5
5
|
* (project-only or personal-only) and dual-scope (both).
|
|
6
6
|
*
|
|
7
|
-
* Privacy invariant: if `personal` is undefined, `
|
|
7
|
+
* Privacy invariant: if `personal` is undefined, `pinakes.personal`
|
|
8
8
|
* does NOT exist in the sandbox — not undefined, not null, absent.
|
|
9
9
|
*/
|
|
10
10
|
export interface BindingDeps {
|
|
11
|
-
project?:
|
|
12
|
-
personal?:
|
|
11
|
+
project?: PinakesBindingDeps;
|
|
12
|
+
personal?: PinakesBindingDeps;
|
|
13
13
|
maxTokens: number;
|
|
14
14
|
logs: string[];
|
|
15
15
|
}
|
|
16
16
|
/**
|
|
17
17
|
* Install all sandbox bindings on a fresh QuickJS context:
|
|
18
18
|
* 1. `logger.log(...)` capture
|
|
19
|
-
* 2. `
|
|
19
|
+
* 2. `pinakes.project.*` and/or `pinakes.personal.*` (scope-dependent)
|
|
20
20
|
* 3. `budget.fit()`
|
|
21
21
|
*/
|
|
22
22
|
export declare function installBindings(context: QuickJSContext, deps: BindingDeps): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/sandbox/bindings/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,
|
|
1
|
+
{"version":3,"file":"install.d.ts","sourceRoot":"","sources":["../../../src/sandbox/bindings/install.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,OAAO,EAA0B,KAAK,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG/E;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAIhF"}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { installLogger } from './logger.js';
|
|
2
|
-
import {
|
|
2
|
+
import { installPinakesBindings } from './pinakes.js';
|
|
3
3
|
import { installBudgetBindings } from './budget.js';
|
|
4
4
|
/**
|
|
5
5
|
* Install all sandbox bindings on a fresh QuickJS context:
|
|
6
6
|
* 1. `logger.log(...)` capture
|
|
7
|
-
* 2. `
|
|
7
|
+
* 2. `pinakes.project.*` and/or `pinakes.personal.*` (scope-dependent)
|
|
8
8
|
* 3. `budget.fit()`
|
|
9
9
|
*/
|
|
10
10
|
export function installBindings(context, deps) {
|
|
11
11
|
installLogger(context, deps.logs);
|
|
12
|
-
|
|
12
|
+
installPinakesBindings(context, deps.project, deps.personal);
|
|
13
13
|
installBudgetBindings(context, deps.maxTokens);
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/sandbox/bindings/install.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"install.js","sourceRoot":"","sources":["../../../src/sandbox/bindings/install.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,sBAAsB,EAA2B,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAgBpD;;;;;GAKG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuB,EAAE,IAAiB;IACxE,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,sBAAsB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7D,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type QuickJSContext } from 'quickjs-emscripten';
|
|
2
|
+
import type { Repository } from '../../db/repository.js';
|
|
3
|
+
import { type DbBundle } from '../../db/client.js';
|
|
4
|
+
import type { Embedder } from '../../retrieval/embedder.js';
|
|
5
|
+
import { type WriteCounter } from './write.js';
|
|
6
|
+
/**
|
|
7
|
+
* Dependencies for installing one scope's bindings in the sandbox.
|
|
8
|
+
*/
|
|
9
|
+
export interface PinakesBindingDeps {
|
|
10
|
+
repository: Repository;
|
|
11
|
+
bundle: DbBundle;
|
|
12
|
+
scope: 'project' | 'personal';
|
|
13
|
+
embedder: Embedder;
|
|
14
|
+
wikiRoot?: string;
|
|
15
|
+
writeCounter?: WriteCounter;
|
|
16
|
+
queryEmbeddings?: Map<string, Float32Array>;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Install the `pinakes` global with `pinakes.project.*` and/or `pinakes.personal.*`
|
|
20
|
+
* bindings plus backward-compat `pinakes.search()` / `pinakes.get()` aliases
|
|
21
|
+
* and `pinakes.describe()`.
|
|
22
|
+
*
|
|
23
|
+
* **Privacy invariant**: if `personalDeps` is undefined, `pinakes.personal`
|
|
24
|
+
* does NOT exist in the sandbox — not undefined, not null, simply absent.
|
|
25
|
+
* This is enforced at the dispatcher level (tool handler decides which
|
|
26
|
+
* deps to pass). The 15-test adversarial suite verifies this.
|
|
27
|
+
*/
|
|
28
|
+
export declare function installPinakesBindings(context: QuickJSContext, projectDeps?: PinakesBindingDeps, personalDeps?: PinakesBindingDeps): void;
|
|
29
|
+
//# sourceMappingURL=pinakes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinakes.d.ts","sourceRoot":"","sources":["../../../src/sandbox/bindings/pinakes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,cAAc,EAAsB,MAAM,oBAAoB,CAAC;AAGpF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,KAAK,QAAQ,EAAc,MAAM,oBAAoB,CAAC;AAC/D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAK5D,OAAO,EAAgD,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAI7F;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,QAAQ,CAAC;IACjB,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,eAAe,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;CAC7C;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,cAAc,EACvB,WAAW,CAAC,EAAE,kBAAkB,EAChC,YAAY,CAAC,EAAE,kBAAkB,GAChC,IAAI,CAmCN"}
|
|
@@ -0,0 +1,333 @@
|
|
|
1
|
+
import { Scope } from 'quickjs-emscripten';
|
|
2
|
+
import { nextReader } from '../../db/client.js';
|
|
3
|
+
import { ftsQuery as ftsQueryImpl } from '../../retrieval/fts.js';
|
|
4
|
+
import { vecQuery as vecQueryImpl } from '../../retrieval/vec.js';
|
|
5
|
+
import { rrfFuse } from '../../retrieval/hybrid.js';
|
|
6
|
+
import { pagerank, connectedComponents } from '../../retrieval/graph.js';
|
|
7
|
+
import { writeWikiFile, appendWikiLog, removeWikiFile } from './write.js';
|
|
8
|
+
import { queryGaps } from '../../gaps/detector.js';
|
|
9
|
+
import { errorMessage, marshalJsValue } from '../helpers.js';
|
|
10
|
+
/**
|
|
11
|
+
* Install the `pinakes` global with `pinakes.project.*` and/or `pinakes.personal.*`
|
|
12
|
+
* bindings plus backward-compat `pinakes.search()` / `pinakes.get()` aliases
|
|
13
|
+
* and `pinakes.describe()`.
|
|
14
|
+
*
|
|
15
|
+
* **Privacy invariant**: if `personalDeps` is undefined, `pinakes.personal`
|
|
16
|
+
* does NOT exist in the sandbox — not undefined, not null, simply absent.
|
|
17
|
+
* This is enforced at the dispatcher level (tool handler decides which
|
|
18
|
+
* deps to pass). The 15-test adversarial suite verifies this.
|
|
19
|
+
*/
|
|
20
|
+
export function installPinakesBindings(context, projectDeps, personalDeps) {
|
|
21
|
+
Scope.withScope((s) => {
|
|
22
|
+
const pinakesObj = s.manage(context.newObject());
|
|
23
|
+
// Install project namespace if deps provided
|
|
24
|
+
if (projectDeps) {
|
|
25
|
+
const projectObj = s.manage(context.newObject());
|
|
26
|
+
installScopeBindings(context, s, projectObj, projectDeps);
|
|
27
|
+
context.setProp(pinakesObj, 'project', projectObj);
|
|
28
|
+
// Backward-compat aliases route to project scope
|
|
29
|
+
installBackwardCompat(context, pinakesObj, projectDeps);
|
|
30
|
+
}
|
|
31
|
+
// Install personal namespace if deps provided (privacy invariant)
|
|
32
|
+
if (personalDeps) {
|
|
33
|
+
const personalObj = s.manage(context.newObject());
|
|
34
|
+
installScopeBindings(context, s, personalObj, personalDeps);
|
|
35
|
+
context.setProp(pinakesObj, 'personal', personalObj);
|
|
36
|
+
}
|
|
37
|
+
// pinakes.describe() — returns metadata for available scopes only
|
|
38
|
+
attachFn(context, pinakesObj, 'describe', () => {
|
|
39
|
+
const result = {};
|
|
40
|
+
if (projectDeps) {
|
|
41
|
+
result.project = describeScope(projectDeps);
|
|
42
|
+
}
|
|
43
|
+
if (personalDeps) {
|
|
44
|
+
result.personal = describeScope(personalDeps);
|
|
45
|
+
}
|
|
46
|
+
return result;
|
|
47
|
+
});
|
|
48
|
+
context.setProp(context.global, 'pinakes', pinakesObj);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Install all bindings for one scope onto a QuickJS object.
|
|
53
|
+
* Called once for project, once for personal (if both are requested).
|
|
54
|
+
*/
|
|
55
|
+
function installScopeBindings(context, s, scopeObj, deps) {
|
|
56
|
+
const { bundle, scope } = deps;
|
|
57
|
+
const reader = nextReader(bundle);
|
|
58
|
+
const logObj = s.manage(context.newObject());
|
|
59
|
+
// -- fts(query, opts?) -------------------------------------------------
|
|
60
|
+
attachFn(context, scopeObj, 'fts', (args) => {
|
|
61
|
+
const query = args[0];
|
|
62
|
+
if (typeof query !== 'string' || !query.trim())
|
|
63
|
+
return [];
|
|
64
|
+
const opts = (args[1] ?? {});
|
|
65
|
+
const limit = Math.min(Math.max(opts.limit ?? 20, 1), 100);
|
|
66
|
+
return ftsQueryImpl(reader, scope, query, limit);
|
|
67
|
+
});
|
|
68
|
+
// -- vec(query, opts?) -------------------------------------------------
|
|
69
|
+
attachFn(context, scopeObj, 'vec', (args) => {
|
|
70
|
+
const query = args[0];
|
|
71
|
+
if (typeof query !== 'string' || !query.trim())
|
|
72
|
+
return [];
|
|
73
|
+
const opts = (args[1] ?? {});
|
|
74
|
+
const limit = Math.min(Math.max(opts.limit ?? 20, 1), 100);
|
|
75
|
+
const cached = deps.queryEmbeddings?.get(query);
|
|
76
|
+
if (!cached)
|
|
77
|
+
return [];
|
|
78
|
+
return vecQueryImpl(reader, scope, cached, limit);
|
|
79
|
+
});
|
|
80
|
+
// -- hybrid(query, opts?) ----------------------------------------------
|
|
81
|
+
attachFn(context, scopeObj, 'hybrid', (args) => {
|
|
82
|
+
const query = args[0];
|
|
83
|
+
if (typeof query !== 'string' || !query.trim())
|
|
84
|
+
return [];
|
|
85
|
+
const opts = (args[1] ?? {});
|
|
86
|
+
const limit = Math.min(Math.max(opts.limit ?? 20, 1), 100);
|
|
87
|
+
const rrfK = opts.rrf_k ?? 60;
|
|
88
|
+
const fetchLimit = Math.min(limit * 2, 100);
|
|
89
|
+
const ftsResults = ftsQueryImpl(reader, scope, query, fetchLimit);
|
|
90
|
+
const cached = deps.queryEmbeddings?.get(query);
|
|
91
|
+
const vecResults = cached
|
|
92
|
+
? vecQueryImpl(reader, scope, cached, fetchLimit)
|
|
93
|
+
: [];
|
|
94
|
+
return rrfFuse(ftsResults, vecResults, rrfK, limit);
|
|
95
|
+
});
|
|
96
|
+
// -- get(id) -----------------------------------------------------------
|
|
97
|
+
attachFn(context, scopeObj, 'get', (args) => {
|
|
98
|
+
const id = args[0];
|
|
99
|
+
if (typeof id !== 'string')
|
|
100
|
+
return null;
|
|
101
|
+
return nodeGet(reader, scope, id);
|
|
102
|
+
});
|
|
103
|
+
// -- index(opts?) — Phase 7.5: browsable table of contents ---------------
|
|
104
|
+
attachFn(context, scopeObj, 'index', (args) => {
|
|
105
|
+
const opts = (args[0] ?? {});
|
|
106
|
+
const limit = Math.min(Math.max(opts.limit ?? 500, 1), 2000);
|
|
107
|
+
return indexQuery(reader, scope, limit, opts.kind, opts.source_uri);
|
|
108
|
+
});
|
|
109
|
+
// -- neighbors(id, opts?) ----------------------------------------------
|
|
110
|
+
attachFn(context, scopeObj, 'neighbors', (args) => {
|
|
111
|
+
const id = args[0];
|
|
112
|
+
if (typeof id !== 'string')
|
|
113
|
+
return [];
|
|
114
|
+
const opts = (args[1] ?? {});
|
|
115
|
+
const depth = Math.min(Math.max(opts.depth ?? 1, 1), 3);
|
|
116
|
+
return neighborsQuery(reader, scope, id, depth, opts.edge_kinds);
|
|
117
|
+
});
|
|
118
|
+
// -- log.recent(n?, opts?) ---------------------------------------------
|
|
119
|
+
attachFn(context, logObj, 'recent', (args) => {
|
|
120
|
+
const n = typeof args[0] === 'number' ? Math.min(Math.max(args[0], 1), 100) : 20;
|
|
121
|
+
const opts = (args[1] ?? {});
|
|
122
|
+
return logRecent(reader, scope, n, opts.kind);
|
|
123
|
+
});
|
|
124
|
+
// -- gaps(opts?) — Phase 6: query pinakes_gaps for concept gaps ---------------
|
|
125
|
+
attachFn(context, scopeObj, 'gaps', (args) => {
|
|
126
|
+
const opts = (args[0] ?? {});
|
|
127
|
+
return queryGaps(reader, scope, opts);
|
|
128
|
+
});
|
|
129
|
+
// -- pagerank(opts?) — D40: PageRank scores based on wikilink graph -------
|
|
130
|
+
attachFn(context, scopeObj, 'pagerank', (args) => {
|
|
131
|
+
const opts = (args[0] ?? {});
|
|
132
|
+
return pagerank(reader, scope, opts);
|
|
133
|
+
});
|
|
134
|
+
// -- components(opts?) — D40: connected components in the wikilink graph --
|
|
135
|
+
attachFn(context, scopeObj, 'components', () => {
|
|
136
|
+
return connectedComponents(reader, scope);
|
|
137
|
+
});
|
|
138
|
+
// -- write(path, content) ----------------------------------------------
|
|
139
|
+
attachThrowingFn(context, scopeObj, 'write', (args) => {
|
|
140
|
+
if (!deps.wikiRoot || !deps.writeCounter) {
|
|
141
|
+
throw new Error('write bindings not available (no wikiRoot configured)');
|
|
142
|
+
}
|
|
143
|
+
const path = args[0];
|
|
144
|
+
const content = args[1];
|
|
145
|
+
if (typeof path !== 'string')
|
|
146
|
+
throw new Error('write: path must be a string');
|
|
147
|
+
if (typeof content !== 'string')
|
|
148
|
+
throw new Error('write: content must be a string');
|
|
149
|
+
return writeWikiFile(deps.wikiRoot, path, content, deps.writeCounter, scope, bundle.writer);
|
|
150
|
+
});
|
|
151
|
+
// -- append(entry) -----------------------------------------------------
|
|
152
|
+
attachThrowingFn(context, scopeObj, 'append', (args) => {
|
|
153
|
+
if (!deps.wikiRoot || !deps.writeCounter) {
|
|
154
|
+
throw new Error('append bindings not available (no wikiRoot configured)');
|
|
155
|
+
}
|
|
156
|
+
const entry = args[0];
|
|
157
|
+
if (typeof entry !== 'string')
|
|
158
|
+
throw new Error('append: entry must be a string');
|
|
159
|
+
return appendWikiLog(deps.wikiRoot, entry, deps.writeCounter, scope, bundle.writer);
|
|
160
|
+
});
|
|
161
|
+
// -- remove(path) ------------------------------------------------------
|
|
162
|
+
attachThrowingFn(context, scopeObj, 'remove', (args) => {
|
|
163
|
+
if (!deps.wikiRoot || !deps.writeCounter) {
|
|
164
|
+
throw new Error('remove bindings not available (no wikiRoot configured)');
|
|
165
|
+
}
|
|
166
|
+
const path = args[0];
|
|
167
|
+
if (typeof path !== 'string')
|
|
168
|
+
throw new Error('remove: path must be a string');
|
|
169
|
+
return removeWikiFile(deps.wikiRoot, path, deps.writeCounter, scope, bundle.writer);
|
|
170
|
+
});
|
|
171
|
+
// Wire nesting: scope.log
|
|
172
|
+
context.setProp(scopeObj, 'log', logObj);
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Install backward-compat `pinakes.search()` and `pinakes.get()` aliases.
|
|
176
|
+
* Always routes to the project scope.
|
|
177
|
+
*/
|
|
178
|
+
function installBackwardCompat(context, pinakesObj, deps) {
|
|
179
|
+
const { repository, scope } = deps;
|
|
180
|
+
attachFn(context, pinakesObj, 'search', (args) => {
|
|
181
|
+
const query = args[0];
|
|
182
|
+
if (typeof query !== 'string')
|
|
183
|
+
return [];
|
|
184
|
+
return repository.search(query, scope).map((c) => ({
|
|
185
|
+
id: c.id,
|
|
186
|
+
text: c.text,
|
|
187
|
+
source_uri: c.source_uri,
|
|
188
|
+
}));
|
|
189
|
+
});
|
|
190
|
+
attachFn(context, pinakesObj, 'get', (args) => {
|
|
191
|
+
const id = args[0];
|
|
192
|
+
if (typeof id !== 'string')
|
|
193
|
+
return null;
|
|
194
|
+
const c = repository.get(id, scope);
|
|
195
|
+
if (!c)
|
|
196
|
+
return null;
|
|
197
|
+
return { id: c.id, text: c.text, source_uri: c.source_uri };
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Return summary metadata for a scope (no content, just counts).
|
|
202
|
+
*/
|
|
203
|
+
function describeScope(deps) {
|
|
204
|
+
const reader = nextReader(deps.bundle);
|
|
205
|
+
const chunks = reader
|
|
206
|
+
.prepare(`SELECT count(*) AS c FROM pinakes_chunks ch JOIN pinakes_nodes n ON ch.node_id = n.id WHERE n.scope = ?`)
|
|
207
|
+
.get(deps.scope)?.c ?? 0;
|
|
208
|
+
const nodes = reader
|
|
209
|
+
.prepare(`SELECT count(*) AS c FROM pinakes_nodes WHERE scope = ?`)
|
|
210
|
+
.get(deps.scope)?.c ?? 0;
|
|
211
|
+
return { chunks, nodes };
|
|
212
|
+
}
|
|
213
|
+
// ============================================================================
|
|
214
|
+
// SQL query implementations
|
|
215
|
+
// ============================================================================
|
|
216
|
+
function nodeGet(reader, scope, id) {
|
|
217
|
+
const row = reader
|
|
218
|
+
.prepare(`SELECT id, source_uri, section_path, kind, title, content, token_count, confidence
|
|
219
|
+
FROM pinakes_nodes
|
|
220
|
+
WHERE id = ? AND scope = ?
|
|
221
|
+
LIMIT 1`)
|
|
222
|
+
.get(id, scope);
|
|
223
|
+
return row ?? null;
|
|
224
|
+
}
|
|
225
|
+
function indexQuery(reader, scope, limit, kind, sourceUri) {
|
|
226
|
+
let sql = `SELECT id, title, source_uri, section_path, kind, token_count
|
|
227
|
+
FROM pinakes_nodes
|
|
228
|
+
WHERE scope = ?`;
|
|
229
|
+
const params = [scope];
|
|
230
|
+
if (kind) {
|
|
231
|
+
sql += ` AND kind = ?`;
|
|
232
|
+
params.push(kind);
|
|
233
|
+
}
|
|
234
|
+
if (sourceUri) {
|
|
235
|
+
sql += ` AND source_uri = ?`;
|
|
236
|
+
params.push(sourceUri);
|
|
237
|
+
}
|
|
238
|
+
sql += ` ORDER BY source_uri, section_path LIMIT ?`;
|
|
239
|
+
params.push(limit);
|
|
240
|
+
return reader.prepare(sql).all(...params);
|
|
241
|
+
}
|
|
242
|
+
function neighborsQuery(reader, scope, id, maxDepth, edgeKinds) {
|
|
243
|
+
let edgeFilter = '';
|
|
244
|
+
const params = [id, maxDepth];
|
|
245
|
+
if (edgeKinds && edgeKinds.length > 0) {
|
|
246
|
+
const placeholders = edgeKinds.map(() => '?').join(',');
|
|
247
|
+
edgeFilter = `AND e.edge_kind IN (${placeholders})`;
|
|
248
|
+
params.push(...edgeKinds);
|
|
249
|
+
}
|
|
250
|
+
params.push(id, scope);
|
|
251
|
+
const sql = `
|
|
252
|
+
WITH RECURSIVE hops(node_id, depth) AS (
|
|
253
|
+
VALUES(?, 0)
|
|
254
|
+
UNION ALL
|
|
255
|
+
SELECT e.dst_id, h.depth + 1
|
|
256
|
+
FROM hops h
|
|
257
|
+
JOIN pinakes_edges e ON e.src_id = h.node_id
|
|
258
|
+
WHERE h.depth < ? ${edgeFilter}
|
|
259
|
+
)
|
|
260
|
+
SELECT DISTINCT n.id, n.source_uri, n.section_path, n.kind, n.title, h.depth
|
|
261
|
+
FROM hops h
|
|
262
|
+
JOIN pinakes_nodes n ON n.id = h.node_id
|
|
263
|
+
WHERE n.id != ? AND n.scope = ?`;
|
|
264
|
+
return reader.prepare(sql).all(...params);
|
|
265
|
+
}
|
|
266
|
+
function logRecent(reader, scope, n, kind) {
|
|
267
|
+
let sql;
|
|
268
|
+
let params;
|
|
269
|
+
if (kind) {
|
|
270
|
+
sql = `SELECT id, ts, kind, source_uri, payload
|
|
271
|
+
FROM pinakes_log
|
|
272
|
+
WHERE scope = ? AND kind = ?
|
|
273
|
+
ORDER BY ts DESC
|
|
274
|
+
LIMIT ?`;
|
|
275
|
+
params = [scope, kind, n];
|
|
276
|
+
}
|
|
277
|
+
else {
|
|
278
|
+
sql = `SELECT id, ts, kind, source_uri, payload
|
|
279
|
+
FROM pinakes_log
|
|
280
|
+
WHERE scope = ?
|
|
281
|
+
ORDER BY ts DESC
|
|
282
|
+
LIMIT ?`;
|
|
283
|
+
params = [scope, n];
|
|
284
|
+
}
|
|
285
|
+
const rows = reader.prepare(sql).all(...params);
|
|
286
|
+
return rows.map((r) => ({
|
|
287
|
+
id: r.id,
|
|
288
|
+
ts: r.ts,
|
|
289
|
+
kind: r.kind,
|
|
290
|
+
source_uri: r.source_uri,
|
|
291
|
+
payload: r.payload ? tryParseJson(r.payload) : null,
|
|
292
|
+
}));
|
|
293
|
+
}
|
|
294
|
+
// ============================================================================
|
|
295
|
+
// Helpers
|
|
296
|
+
// ============================================================================
|
|
297
|
+
function tryParseJson(s) {
|
|
298
|
+
try {
|
|
299
|
+
return JSON.parse(s);
|
|
300
|
+
}
|
|
301
|
+
catch {
|
|
302
|
+
return s;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
function attachFn(context, obj, name, impl) {
|
|
306
|
+
const fn = context.newFunction(name, (...handles) => {
|
|
307
|
+
try {
|
|
308
|
+
const nativeArgs = handles.map((h) => context.dump(h));
|
|
309
|
+
const result = impl(nativeArgs);
|
|
310
|
+
return marshalJsValue(context, result);
|
|
311
|
+
}
|
|
312
|
+
catch (e) {
|
|
313
|
+
return context.newError(errorMessage(e));
|
|
314
|
+
}
|
|
315
|
+
});
|
|
316
|
+
context.setProp(obj, name, fn);
|
|
317
|
+
fn.dispose();
|
|
318
|
+
}
|
|
319
|
+
function attachThrowingFn(context, obj, name, impl) {
|
|
320
|
+
const fn = context.newFunction(name, (...handles) => {
|
|
321
|
+
try {
|
|
322
|
+
const nativeArgs = handles.map((h) => context.dump(h));
|
|
323
|
+
const result = impl(nativeArgs);
|
|
324
|
+
return marshalJsValue(context, result);
|
|
325
|
+
}
|
|
326
|
+
catch (e) {
|
|
327
|
+
return { error: context.newError(errorMessage(e)) };
|
|
328
|
+
}
|
|
329
|
+
});
|
|
330
|
+
context.setProp(obj, name, fn);
|
|
331
|
+
fn.dispose();
|
|
332
|
+
}
|
|
333
|
+
//# sourceMappingURL=pinakes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pinakes.js","sourceRoot":"","sources":["../../../src/sandbox/bindings/pinakes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Database as BetterSqliteDatabase } from 'better-sqlite3';
|
|
2
|
-
/** Mutable counter shared across all write operations in a single
|
|
2
|
+
/** Mutable counter shared across all write operations in a single pinakes_execute call. */
|
|
3
3
|
export interface WriteCounter {
|
|
4
4
|
value: number;
|
|
5
5
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/sandbox/bindings/write.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAuBvE,
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/sandbox/bindings/write.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,QAAQ,IAAI,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAuBvE,2FAA2F;AAC3F,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;CACf;AAoGD;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,oBAAoB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAqCjC;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,oBAAoB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CA2CjC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,oBAAoB,GAC3B;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,CAgBjC"}
|