@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.
Files changed (129) hide show
  1. package/README.md +20 -20
  2. package/dist/cli/audit.d.ts +5 -3
  3. package/dist/cli/audit.d.ts.map +1 -1
  4. package/dist/cli/audit.js +3 -24
  5. package/dist/cli/audit.js.map +1 -1
  6. package/dist/cli/contradiction-cli.d.ts +1 -0
  7. package/dist/cli/contradiction-cli.d.ts.map +1 -1
  8. package/dist/cli/contradiction-cli.js +12 -3
  9. package/dist/cli/contradiction-cli.js.map +1 -1
  10. package/dist/cli/contradiction.js +8 -8
  11. package/dist/cli/contradiction.js.map +1 -1
  12. package/dist/cli/export.d.ts +1 -1
  13. package/dist/cli/export.d.ts.map +1 -1
  14. package/dist/cli/export.js +7 -28
  15. package/dist/cli/export.js.map +1 -1
  16. package/dist/cli/import.d.ts +2 -2
  17. package/dist/cli/import.d.ts.map +1 -1
  18. package/dist/cli/import.js +5 -26
  19. package/dist/cli/import.js.map +1 -1
  20. package/dist/cli/index.js +17 -12
  21. package/dist/cli/index.js.map +1 -1
  22. package/dist/cli/purge.d.ts +2 -2
  23. package/dist/cli/purge.d.ts.map +1 -1
  24. package/dist/cli/purge.js +2 -23
  25. package/dist/cli/purge.js.map +1 -1
  26. package/dist/cli/rebuild.d.ts +8 -6
  27. package/dist/cli/rebuild.d.ts.map +1 -1
  28. package/dist/cli/rebuild.js +9 -31
  29. package/dist/cli/rebuild.js.map +1 -1
  30. package/dist/cli/serve.d.ts +9 -7
  31. package/dist/cli/serve.d.ts.map +1 -1
  32. package/dist/cli/serve.js +71 -41
  33. package/dist/cli/serve.js.map +1 -1
  34. package/dist/cli/status.d.ts +7 -5
  35. package/dist/cli/status.d.ts.map +1 -1
  36. package/dist/cli/status.js +10 -29
  37. package/dist/cli/status.js.map +1 -1
  38. package/dist/db/client.d.ts +4 -4
  39. package/dist/db/client.js +3 -3
  40. package/dist/db/client.js.map +1 -1
  41. package/dist/db/migrations/0002_rename_kg_to_pinakes.sql +49 -0
  42. package/dist/db/migrations/{migrations/meta/0001_snapshot.json → meta/0002_snapshot.json} +44 -44
  43. package/dist/db/migrations/meta/_journal.json +7 -0
  44. package/dist/db/repository.js +5 -5
  45. package/dist/db/repository.js.map +1 -1
  46. package/dist/db/schema.d.ts +84 -84
  47. package/dist/db/schema.d.ts.map +1 -1
  48. package/dist/db/schema.js +49 -49
  49. package/dist/db/schema.js.map +1 -1
  50. package/dist/db/types.d.ts +2 -2
  51. package/dist/db/types.js +1 -1
  52. package/dist/gaps/detector.d.ts +5 -5
  53. package/dist/gaps/detector.js +15 -15
  54. package/dist/gaps/detector.js.map +1 -1
  55. package/dist/ingest/chokidar.js +1 -1
  56. package/dist/ingest/ingester.d.ts +4 -4
  57. package/dist/ingest/ingester.js +21 -21
  58. package/dist/ingest/ingester.js.map +1 -1
  59. package/dist/ingest/manifest.d.ts +5 -3
  60. package/dist/ingest/manifest.d.ts.map +1 -1
  61. package/dist/ingest/manifest.js +23 -14
  62. package/dist/ingest/manifest.js.map +1 -1
  63. package/dist/ingest/parse/chunk.js +1 -1
  64. package/dist/ingest/parse/markdown.d.ts +2 -2
  65. package/dist/ingest/queue.d.ts +1 -1
  66. package/dist/ingest/queue.js +1 -1
  67. package/dist/ingest/source.d.ts +2 -2
  68. package/dist/ingest/source.d.ts.map +1 -1
  69. package/dist/ingest/source.js +1 -1
  70. package/dist/llm/provider.js +3 -3
  71. package/dist/llm/provider.js.map +1 -1
  72. package/dist/mcp/envelope.d.ts +1 -1
  73. package/dist/mcp/tools/execute.d.ts +7 -7
  74. package/dist/mcp/tools/execute.d.ts.map +1 -1
  75. package/dist/mcp/tools/execute.js +27 -27
  76. package/dist/mcp/tools/execute.js.map +1 -1
  77. package/dist/mcp/tools/search.d.ts +8 -8
  78. package/dist/mcp/tools/search.d.ts.map +1 -1
  79. package/dist/mcp/tools/search.js +23 -22
  80. package/dist/mcp/tools/search.js.map +1 -1
  81. package/dist/observability/audit.d.ts +2 -2
  82. package/dist/observability/audit.js +3 -3
  83. package/dist/observability/audit.js.map +1 -1
  84. package/dist/observability/logger.js +4 -4
  85. package/dist/observability/logger.js.map +1 -1
  86. package/dist/observability/metrics.js +1 -1
  87. package/dist/observability/metrics.js.map +1 -1
  88. package/dist/paths.d.ts +61 -0
  89. package/dist/paths.d.ts.map +1 -0
  90. package/dist/paths.js +106 -0
  91. package/dist/paths.js.map +1 -0
  92. package/dist/retrieval/embedder.d.ts +9 -9
  93. package/dist/retrieval/embedder.d.ts.map +1 -1
  94. package/dist/retrieval/embedder.js +17 -17
  95. package/dist/retrieval/embedder.js.map +1 -1
  96. package/dist/retrieval/fts.d.ts +3 -3
  97. package/dist/retrieval/fts.js +8 -8
  98. package/dist/retrieval/graph.d.ts +1 -1
  99. package/dist/retrieval/graph.js +8 -8
  100. package/dist/retrieval/graph.js.map +1 -1
  101. package/dist/retrieval/vec.d.ts +2 -2
  102. package/dist/retrieval/vec.js +3 -3
  103. package/dist/sandbox/bindings/install.d.ts +5 -5
  104. package/dist/sandbox/bindings/install.d.ts.map +1 -1
  105. package/dist/sandbox/bindings/install.js +3 -3
  106. package/dist/sandbox/bindings/install.js.map +1 -1
  107. package/dist/sandbox/bindings/pinakes.d.ts +29 -0
  108. package/dist/sandbox/bindings/pinakes.d.ts.map +1 -0
  109. package/dist/sandbox/bindings/pinakes.js +333 -0
  110. package/dist/sandbox/bindings/pinakes.js.map +1 -0
  111. package/dist/sandbox/bindings/write.d.ts +1 -1
  112. package/dist/sandbox/bindings/write.d.ts.map +1 -1
  113. package/dist/sandbox/bindings/write.js +9 -9
  114. package/dist/sandbox/bindings/write.js.map +1 -1
  115. package/dist/sandbox/executor.d.ts +3 -3
  116. package/dist/sandbox/executor.js +6 -6
  117. package/dist/sandbox/executor.js.map +1 -1
  118. package/dist/sandbox/helpers.d.ts +1 -1
  119. package/dist/sandbox/helpers.d.ts.map +1 -1
  120. package/dist/sandbox/helpers.js +2 -2
  121. package/dist/sandbox/vendored-codemode.d.ts +1 -1
  122. package/dist/sandbox/vendored-codemode.js +1 -1
  123. package/dist/server.js +15 -6
  124. package/dist/server.js.map +1 -1
  125. package/package.json +9 -3
  126. package/dist/db/migrations/migrations/0000_conscious_lockheed.sql +0 -115
  127. package/dist/db/migrations/migrations/0001_icy_dust.sql +0 -1
  128. package/dist/db/migrations/migrations/meta/0000_snapshot.json +0 -496
  129. package/dist/db/migrations/migrations/meta/_journal.json +0 -20
@@ -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 `kg_nodes.scope`.
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(kg_chunks_fts, 0, '', '', '…', 64) AS 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(kg_chunks_fts) AS rank,
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 kg_chunks_fts f
23
- JOIN kg_chunks c ON c.rowid = f.rowid
24
- JOIN kg_nodes n ON c.node_id = n.id
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 kg_chunks_fts MATCH ?
27
- ORDER BY bm25(kg_chunks_fts)
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 `kg_edges` table (D40).
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.
@@ -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 kg_nodes WHERE scope = ?`)
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 kg_edges e
24
- JOIN kg_nodes ns ON e.src_id = ns.id
25
- JOIN kg_nodes nd ON e.dst_id = nd.id
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 kg_nodes WHERE scope = ?`)
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 kg_edges e
98
- JOIN kg_nodes ns ON e.src_id = ns.id
99
- JOIN kg_nodes nd ON e.dst_id = nd.id
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":"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"}
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,iEAAiE,CAClE;SACA,GAAG,CAAC,KAAK,CAAC,CAAC;IAEd,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,MAAM,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC;IACvB,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEhD,gDAAgD;IAChD,MAAM,KAAK,GAAG,MAAM;SACjB,OAAO,CACN;;;2CAGqC,CACtC;SACA,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAErB,qDAAqD;IACrD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE5C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;YAAE,SAAS;QAC/D,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,mBAAmB;IACnB,IAAI,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAED,UAAU;IACV,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,UAAU,EAAE,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAkB,CAAC;QAE3C,iCAAiC;QACjC,IAAI,WAAW,GAAG,CAAC,CAAC;QACpB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvC,WAAW,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;YACpC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,KAAK,GAAG,CAAC,CAAC;YACd,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAE,EAAE,CAAC;gBACvC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACvD,CAAC;YACD,8BAA8B;YAC9B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;YACvD,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,GAAG,QAAQ,CAAC;IACnB,CAAC;IAED,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,KAAK,EAAE,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,EAAE,CAAC;YACT,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,IAAI,CAAC,EAAE;gBACX,UAAU,EAAE,IAAI,CAAC,UAAU;gBAC3B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,KAAK;aACN,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAWD;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA4B,EAC5B,KAAa;IAEb,iBAAiB;IACjB,MAAM,KAAK,GAAG,MAAM;SACjB,OAAO,CACN,iEAAiE,CAClE;SACA,GAAG,CAAC,KAAK,CAAC,CAAC;IAEd,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAElC,+CAA+C;IAC/C,MAAM,KAAK,GAAG,MAAM;SACjB,OAAO,CACN;;;2CAGqC,CACtC;SACA,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAErB,kCAAkC;IAClC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAuB,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC3B,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACjC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACnC,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,UAAU,GAAsB,EAAE,CAAC;IACzC,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,SAAS;QAEnC,MAAM,SAAS,GAAa,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAErB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAExB,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;oBACtB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,UAAU,CAAC,IAAI,CAAC;YACd,YAAY,EAAE,WAAW,EAAE;YAC3B,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC1B,MAAM,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAE,CAAC;gBAC3B,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;YAChE,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED,oCAAoC;IACpC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC3D,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -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 `kg_chunks_vec`, returning rowids + cosine distances.
9
- * We join back to `kg_chunks` + `kg_nodes` for the full result shape.
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).
@@ -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 kg_chunks_vec v
23
- JOIN kg_chunks c ON c.rowid = v.rowid
24
- JOIN kg_nodes n ON c.node_id = n.id
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 KgBindingDeps } from './kg.js';
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, `kg.personal`
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?: KgBindingDeps;
12
- personal?: KgBindingDeps;
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. `kg.project.*` and/or `kg.personal.*` (scope-dependent)
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,EAAqB,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAGhE;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB,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
+ {"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 { installKgBindings } from './kg.js';
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. `kg.project.*` and/or `kg.personal.*` (scope-dependent)
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
- installKgBindings(context, deps.project, deps.personal);
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,iBAAiB,EAAsB,MAAM,SAAS,CAAC;AAChE,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,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,qBAAqB,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;AACjD,CAAC"}
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 kg_execute call. */
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,sFAAsF;AACtF,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"}
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"}