quilltap 3.2.0-dev.38 → 3.2.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 (2) hide show
  1. package/bin/quilltap.js +18 -10
  2. package/package.json +2 -2
package/bin/quilltap.js CHANGED
@@ -131,20 +131,21 @@ function resolveModuleDir(moduleName) {
131
131
  function ensureNativeModules() {
132
132
  const needsRebuild = [];
133
133
 
134
- // Check better-sqlite3: it lazy-loads the native .node binary only when you
135
- // create a Database, so a bare require('better-sqlite3') always succeeds.
134
+ // Check better-sqlite3-multiple-ciphers (provides SQLCipher encryption support).
135
+ // The main app depends on this via an npm alias as 'better-sqlite3', so we must
136
+ // ensure the SQLCipher-capable version is available and link it as 'better-sqlite3'.
136
137
  // We must load the native binding directly to detect NODE_MODULE_VERSION mismatches.
137
- // Use require.resolve to find it regardless of npm hoisting.
138
138
  try {
139
- const modDir = resolveModuleDir('better-sqlite3');
139
+ const modDir = resolveModuleDir('better-sqlite3-multiple-ciphers')
140
+ || resolveModuleDir('better-sqlite3');
140
141
  if (!modDir) throw Object.assign(new Error('not found'), { code: 'MODULE_NOT_FOUND' });
141
142
  const bindingsPath = path.join(modDir, 'build', 'Release', 'better_sqlite3.node');
142
143
  require(bindingsPath);
143
144
  } catch (err) {
144
145
  if (err.message && err.message.includes('NODE_MODULE_VERSION')) {
145
- needsRebuild.push('better-sqlite3');
146
+ needsRebuild.push('better-sqlite3-multiple-ciphers');
146
147
  } else if (err.code === 'MODULE_NOT_FOUND') {
147
- needsRebuild.push('better-sqlite3');
148
+ needsRebuild.push('better-sqlite3-multiple-ciphers');
148
149
  }
149
150
  }
150
151
 
@@ -223,8 +224,10 @@ function linkNativeModules(standaloneDir) {
223
224
  }
224
225
  }
225
226
 
226
- // Link better-sqlite3
227
- const betterSqlite3Dir = resolveModuleDir('better-sqlite3');
227
+ // Link better-sqlite3-multiple-ciphers as 'better-sqlite3' (the app imports it
228
+ // via npm alias). Prefer the SQLCipher build; fall back to plain better-sqlite3.
229
+ const betterSqlite3Dir = resolveModuleDir('better-sqlite3-multiple-ciphers')
230
+ || resolveModuleDir('better-sqlite3');
228
231
  linkModule('better-sqlite3', betterSqlite3Dir);
229
232
 
230
233
  // Link sharp
@@ -514,8 +517,13 @@ async function dbCommand(args) {
514
517
  process.exit(1);
515
518
  }
516
519
 
517
- // Open database
518
- const Database = require('better-sqlite3');
520
+ // Open database — prefer SQLCipher-capable build
521
+ let Database;
522
+ try {
523
+ Database = require('better-sqlite3-multiple-ciphers');
524
+ } catch {
525
+ Database = require('better-sqlite3');
526
+ }
519
527
  const db = new Database(dbPath, { readonly: !repl });
520
528
 
521
529
  if (pepper) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "quilltap",
3
- "version": "3.2.0-dev.38",
3
+ "version": "3.2.1",
4
4
  "description": "Self-hosted AI workspace for writers, worldbuilders, and roleplayers. Run with npx quilltap.",
5
5
  "author": {
6
6
  "name": "Charles Sebold",
@@ -33,7 +33,7 @@
33
33
  "README.md"
34
34
  ],
35
35
  "dependencies": {
36
- "better-sqlite3": "npm:better-sqlite3-multiple-ciphers@^12.6.2",
36
+ "better-sqlite3-multiple-ciphers": "^12.6.2",
37
37
  "sharp": "^0.34.5",
38
38
  "tar": "^7.4.3"
39
39
  },