@mclean-capital/neura 2.2.5 → 2.4.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/core/version.txt CHANGED
@@ -1 +1 @@
1
- 2.2.5
1
+ 2.4.0
@@ -1 +1 @@
1
- {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAQA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyCjD"}
1
+ {"version":3,"file":"open.d.ts","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAMA,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAyBjD"}
@@ -1,9 +1,7 @@
1
1
  import { spawn } from 'child_process';
2
- import { existsSync } from 'fs';
3
- import { join } from 'path';
4
2
  import { platform } from 'os';
5
3
  import chalk from 'chalk';
6
- import { loadConfig, getNeuraHome } from '../config.js';
4
+ import { loadConfig } from '../config.js';
7
5
  import { checkHealth } from '../health.js';
8
6
  export async function openCommand() {
9
7
  const config = loadConfig();
@@ -12,19 +10,6 @@ export async function openCommand() {
12
10
  console.log(chalk.red('Core is not running. Start it with: neura start'));
13
11
  process.exit(1);
14
12
  }
15
- // Check if web UI is installed
16
- const uiInstalled = existsSync(join(getNeuraHome(), 'ui', 'index.html'));
17
- if (!uiInstalled) {
18
- console.log(chalk.yellow('Web UI is not installed.'));
19
- console.log(chalk.dim(`Core is running on port ${health.port}, but ~/.neura/ui/ is empty.`));
20
- console.log(chalk.dim('Once the release pipeline is live, run `neura update` to download the UI.'));
21
- console.log();
22
- console.log(chalk.dim('In the meantime, connect with:'));
23
- console.log(chalk.dim(` Desktop app: Open the Neura desktop app`));
24
- console.log(chalk.dim(` Dev UI: npm run dev -w @neura/ui`));
25
- console.log(chalk.dim(` Health: curl http://localhost:${health.port}/health`));
26
- return;
27
- }
28
13
  const token = config.authToken;
29
14
  const url = token
30
15
  ? `http://localhost:${health.port}?token=${encodeURIComponent(token)}`
@@ -1 +1 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+BAA+B;IAC/B,MAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACzE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2BAA2B,MAAM,CAAC,IAAI,8BAA8B,CAAC,CAAC,CAAC;QAC7F,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,GAAG,CAAC,2EAA2E,CAAC,CACvF,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC,CAAC;QACrE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACnE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,yCAAyC,MAAM,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC;QACtF,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,MAAM,GAAG,GAAG,KAAK;QACf,CAAC,CAAC,oBAAoB,MAAM,CAAC,IAAI,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE;QACtE,CAAC,CAAC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE/C,4DAA4D;IAC5D,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3E,MAAM,IAAI,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAE9C,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC;IAC/B,MAAM,GAAG,GAAG,KAAK;QACf,CAAC,CAAC,oBAAoB,MAAM,CAAC,IAAI,UAAU,kBAAkB,CAAC,KAAK,CAAC,EAAE;QACtE,CAAC,CAAC,oBAAoB,MAAM,CAAC,IAAI,EAAE,CAAC;IACtC,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE/C,4DAA4D;IAC5D,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3E,MAAM,IAAI,GAAG,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE/D,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,0BAA0B,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -56,5 +56,22 @@ export declare function getInstalledCoreVersion(): string | null;
56
56
  * `$NEURA_HOME/models/` are never overwritten — users who train their
57
57
  * own classifiers can drop them into place and they'll take priority.
58
58
  */
59
+ /**
60
+ * Absolute path to the built web UI shipped inside the CLI npm package.
61
+ *
62
+ * Layout:
63
+ *
64
+ * $NPM_GLOBAL/lib/node_modules/@mclean-capital/neura/ui/
65
+ * index.html
66
+ * assets/
67
+ * [hashed JS/CSS bundles]
68
+ *
69
+ * The core server resolves this same directory via import.meta.url
70
+ * at runtime and serves it with express.static. This helper is
71
+ * available to CLI commands that need to check for the UI's presence.
72
+ */
73
+ export declare function getBundledUIDir(): string;
74
+ /** True if the bundled web UI exists at its expected ship location. */
75
+ export declare function hasBundledUI(): boolean;
59
76
  export declare function getBundledModelsDir(): string;
60
77
  //# sourceMappingURL=download.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,6DAA6D;AAC7D,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAED,oEAAoE;AACpE,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAIvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C"}
1
+ {"version":3,"file":"download.d.ts","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,6DAA6D;AAC7D,wBAAgB,iBAAiB,IAAI,MAAM,CAQ1C;AAED,oEAAoE;AACpE,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,GAAG,IAAI,CAIvD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAKxC;AAED,uEAAuE;AACvE,wBAAgB,YAAY,IAAI,OAAO,CAEtC;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAK5C"}
package/dist/download.js CHANGED
@@ -74,6 +74,30 @@ export function getInstalledCoreVersion() {
74
74
  * `$NEURA_HOME/models/` are never overwritten — users who train their
75
75
  * own classifiers can drop them into place and they'll take priority.
76
76
  */
77
+ /**
78
+ * Absolute path to the built web UI shipped inside the CLI npm package.
79
+ *
80
+ * Layout:
81
+ *
82
+ * $NPM_GLOBAL/lib/node_modules/@mclean-capital/neura/ui/
83
+ * index.html
84
+ * assets/
85
+ * [hashed JS/CSS bundles]
86
+ *
87
+ * The core server resolves this same directory via import.meta.url
88
+ * at runtime and serves it with express.static. This helper is
89
+ * available to CLI commands that need to check for the UI's presence.
90
+ */
91
+ export function getBundledUIDir() {
92
+ const thisFile = fileURLToPath(import.meta.url);
93
+ const thisDir = dirname(thisFile);
94
+ const pkgRoot = resolve(thisDir, '..');
95
+ return join(pkgRoot, 'ui');
96
+ }
97
+ /** True if the bundled web UI exists at its expected ship location. */
98
+ export function hasBundledUI() {
99
+ return existsSync(join(getBundledUIDir(), 'index.html'));
100
+ }
77
101
  export function getBundledModelsDir() {
78
102
  const thisFile = fileURLToPath(import.meta.url);
79
103
  const thisDir = dirname(thisFile);
@@ -1 +1 @@
1
- {"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB;IAC/B,oEAAoE;IACpE,sEAAsE;IACtE,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AACrD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"download.js","sourceRoot":"","sources":["../src/download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,6DAA6D;AAC7D,MAAM,UAAU,iBAAiB;IAC/B,oEAAoE;IACpE,sEAAsE;IACtE,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB;IACzD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC;AACrD,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,aAAa;IAC3B,OAAO,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB;IACrC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IACtE,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,IAAI,CAAC;IAC1C,OAAO,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe;IAC7B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACvC,OAAO,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mclean-capital/neura",
3
- "version": "2.2.5",
3
+ "version": "2.4.0",
4
4
  "description": "Neura — CLI for installing and managing the Neura AI assistant core service. Includes text chat and voice listen clients.",
5
5
  "keywords": [
6
6
  "neura",
@@ -33,6 +33,7 @@
33
33
  "dist",
34
34
  "core",
35
35
  "stores",
36
+ "ui",
36
37
  "models",
37
38
  "README.md",
38
39
  "LICENSE"
@@ -51,7 +52,9 @@
51
52
  "dependencies": {
52
53
  "@electric-sql/pglite": "0.4.3",
53
54
  "@inquirer/prompts": "^7",
55
+ "@mariozechner/pi-coding-agent": "^0.66.1",
54
56
  "chalk": "^5",
57
+ "chokidar": "^5.0.0",
55
58
  "commander": "^13",
56
59
  "onnxruntime-node": "1.24.3",
57
60
  "ws": "^8.20.0"
package/stores/index.js CHANGED
@@ -4592,6 +4592,35 @@ async function runMigrations(db) {
4592
4592
  await db.exec(
4593
4593
  "CREATE INDEX IF NOT EXISTS idx_transcript_chunks_session ON transcript_chunks(session_id)"
4594
4594
  );
4595
+ await db.exec(`
4596
+ CREATE TABLE IF NOT EXISTS workers (
4597
+ worker_id TEXT PRIMARY KEY,
4598
+ task_type TEXT NOT NULL,
4599
+ task_spec JSONB NOT NULL,
4600
+ status TEXT NOT NULL DEFAULT 'spawning'
4601
+ CHECK (status IN (
4602
+ 'spawning', 'running', 'blocked_clarifying', 'idle_partial',
4603
+ 'completed', 'failed', 'crashed', 'cancelled'
4604
+ )),
4605
+ started_at TIMESTAMP NOT NULL DEFAULT NOW(),
4606
+ last_progress_at TIMESTAMP NOT NULL DEFAULT NOW(),
4607
+ result_json JSONB,
4608
+ error_json JSONB,
4609
+ session_id TEXT,
4610
+ session_file TEXT
4611
+ )
4612
+ `);
4613
+ await db.exec("CREATE INDEX IF NOT EXISTS idx_workers_status ON workers(status)");
4614
+ await db.exec(
4615
+ "CREATE INDEX IF NOT EXISTS idx_workers_last_progress ON workers(last_progress_at)"
4616
+ );
4617
+ await db.exec(`
4618
+ CREATE TABLE IF NOT EXISTS skill_usage (
4619
+ skill_name TEXT PRIMARY KEY,
4620
+ last_used_at TIMESTAMP NOT NULL DEFAULT NOW(),
4621
+ use_count INTEGER NOT NULL DEFAULT 0
4622
+ )
4623
+ `);
4595
4624
  const identityCount = await db.query(
4596
4625
  "SELECT COUNT(*)::TEXT as count FROM identity"
4597
4626
  );
@@ -5712,6 +5741,15 @@ var PgliteStore = class _PgliteStore {
5712
5741
  constructor(db) {
5713
5742
  this.db = db;
5714
5743
  }
5744
+ /**
5745
+ * Raw PGlite handle for code paths that run their own queries
5746
+ * (Phase 6 worker-queries, etc.). Prefer the typed DataStore methods
5747
+ * where possible — this escape hatch exists for layers that operate
5748
+ * on tables the DataStore interface doesn't cover.
5749
+ */
5750
+ getRawDb() {
5751
+ return this.db;
5752
+ }
5715
5753
  /**
5716
5754
  * Create a PgliteStore backed by a directory on disk (WAL-persisted).
5717
5755
  * If no dataDir is provided, creates an in-memory instance (useful for tests).