@pcircle/memesh 2.8.10 → 2.8.11
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 +51 -0
- package/README.zh-TW.md +51 -0
- package/dist/cli/login.js +1 -1
- package/dist/cli/login.js.map +1 -1
- package/dist/cloud/MeMeshCloudClient.js +1 -1
- package/dist/cloud/MeMeshCloudClient.js.map +1 -1
- package/dist/config/simple-config.d.ts +6 -3
- package/dist/config/simple-config.d.ts.map +1 -1
- package/dist/config/simple-config.js +35 -18
- package/dist/config/simple-config.js.map +1 -1
- package/dist/db/ConnectionPool.d.ts +6 -3
- package/dist/db/ConnectionPool.d.ts.map +1 -1
- package/dist/db/ConnectionPool.js +62 -15
- package/dist/db/ConnectionPool.js.map +1 -1
- package/dist/db/IDatabaseAdapter.d.ts +25 -0
- package/dist/db/IDatabaseAdapter.d.ts.map +1 -0
- package/dist/db/IDatabaseAdapter.js +2 -0
- package/dist/db/IDatabaseAdapter.js.map +1 -0
- package/dist/db/adapters/BetterSqlite3Adapter.d.ts +15 -0
- package/dist/db/adapters/BetterSqlite3Adapter.d.ts.map +1 -0
- package/dist/db/adapters/BetterSqlite3Adapter.js +105 -0
- package/dist/db/adapters/BetterSqlite3Adapter.js.map +1 -0
- package/dist/mcp/ServerInitializer.d.ts +5 -4
- package/dist/mcp/ServerInitializer.d.ts.map +1 -1
- package/dist/mcp/ServerInitializer.js +66 -21
- package/dist/mcp/ServerInitializer.js.map +1 -1
- package/dist/mcp/SessionBootstrapper.d.ts +1 -1
- package/dist/mcp/SessionBootstrapper.d.ts.map +1 -1
- package/dist/mcp/SessionBootstrapper.js +3 -0
- package/dist/mcp/SessionBootstrapper.js.map +1 -1
- package/dist/mcp/handlers/BuddyHandlers.d.ts +3 -1
- package/dist/mcp/handlers/BuddyHandlers.d.ts.map +1 -1
- package/dist/mcp/handlers/BuddyHandlers.js +26 -0
- package/dist/mcp/handlers/BuddyHandlers.js.map +1 -1
- package/dist/mcp/handlers/ToolHandlers.d.ts +3 -1
- package/dist/mcp/handlers/ToolHandlers.d.ts.map +1 -1
- package/dist/mcp/handlers/ToolHandlers.js +40 -2
- package/dist/mcp/handlers/ToolHandlers.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +5 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/memesh-cloud-sync.js +61 -8
- package/dist/mcp/tools/memesh-cloud-sync.js.map +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
package/README.md
CHANGED
|
@@ -73,6 +73,57 @@ npm install && npm run build
|
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
76
|
+
## Compatibility
|
|
77
|
+
|
|
78
|
+
### Supported Platforms
|
|
79
|
+
|
|
80
|
+
| Platform | Status | Notes |
|
|
81
|
+
|----------|--------|-------|
|
|
82
|
+
| **macOS** | ✅ Fully tested | Primary development platform |
|
|
83
|
+
| **Linux** | ✅ Fully tested | All distributions supported |
|
|
84
|
+
| **Windows** | ✅ Compatible | WSL2 recommended for best experience |
|
|
85
|
+
|
|
86
|
+
### Requirements
|
|
87
|
+
|
|
88
|
+
- **Claude Code**: Latest version recommended ([install guide](https://docs.anthropic.com/en/docs/claude-code))
|
|
89
|
+
- **Node.js**: >= 20.0.0 ([download](https://nodejs.org/))
|
|
90
|
+
- **npm**: >= 9.0.0 (included with Node.js)
|
|
91
|
+
|
|
92
|
+
### Claude Code Integration
|
|
93
|
+
|
|
94
|
+
MeMesh works seamlessly with:
|
|
95
|
+
- ✅ **Claude Code CLI** (terminal) - **Full functionality**
|
|
96
|
+
- ✅ **Claude Code VS Code Extension** - **Full functionality**
|
|
97
|
+
- ✅ **Cursor** (via MCP) - **Full functionality**
|
|
98
|
+
- ⚠️ **Claude Desktop (Cowork)** - **Partial support** (see below)
|
|
99
|
+
- ✅ **Other MCP-compatible editors**
|
|
100
|
+
|
|
101
|
+
#### Claude Desktop Cowork Compatibility
|
|
102
|
+
|
|
103
|
+
**Current Status**: Cloud-only mode with limited functionality
|
|
104
|
+
|
|
105
|
+
| Feature | Status | Notes |
|
|
106
|
+
|---------|--------|-------|
|
|
107
|
+
| MCP Server | ✅ Works | Starts successfully in cloud-only mode |
|
|
108
|
+
| Basic Commands | ✅ Works | buddy-help, list-skills, etc. |
|
|
109
|
+
| Memory Tools | ❌ Disabled | recall-memory, create-entities, buddy-do, buddy-remember |
|
|
110
|
+
| Cloud Sync | ✅ Works | When MEMESH_API_KEY is configured |
|
|
111
|
+
| Local Knowledge Graph | ❌ Unavailable | better-sqlite3 cannot compile in Cowork sandbox |
|
|
112
|
+
|
|
113
|
+
**Why Limited**: Cowork sandbox has read-only filesystem and blocks native module compilation (better-sqlite3, onnxruntime-node, sqlite-vec).
|
|
114
|
+
|
|
115
|
+
**Future**: Full support planned through cloud-first memory architecture. See [docs/COWORK_SUPPORT.md](docs/COWORK_SUPPORT.md) for details.
|
|
116
|
+
|
|
117
|
+
**Recommendation**: Use **CLI version** for full functionality until cloud-first memory is implemented.
|
|
118
|
+
|
|
119
|
+
### Known Limitations
|
|
120
|
+
|
|
121
|
+
- Windows native terminal may have display issues (use WSL2)
|
|
122
|
+
- Minimum 4GB RAM recommended for large knowledge graphs
|
|
123
|
+
- Vector search requires ~100MB disk space for embedding models
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
76
127
|
## Usage
|
|
77
128
|
|
|
78
129
|
MeMesh provides 3 core commands inside Claude Code:
|
package/README.zh-TW.md
CHANGED
|
@@ -73,6 +73,57 @@ npm install && npm run build
|
|
|
73
73
|
|
|
74
74
|
---
|
|
75
75
|
|
|
76
|
+
## 相容性
|
|
77
|
+
|
|
78
|
+
### 支援的平台
|
|
79
|
+
|
|
80
|
+
| 平台 | 狀態 | 備註 |
|
|
81
|
+
|------|------|------|
|
|
82
|
+
| **macOS** | ✅ 完整測試 | 主要開發平台 |
|
|
83
|
+
| **Linux** | ✅ 完整測試 | 支援所有發行版 |
|
|
84
|
+
| **Windows** | ✅ 相容 | 建議使用 WSL2 以獲得最佳體驗 |
|
|
85
|
+
|
|
86
|
+
### 系統需求
|
|
87
|
+
|
|
88
|
+
- **Claude Code**: 建議使用最新版本 ([安裝指南](https://docs.anthropic.com/en/docs/claude-code))
|
|
89
|
+
- **Node.js**: >= 20.0.0 ([下載](https://nodejs.org/))
|
|
90
|
+
- **npm**: >= 9.0.0 (隨 Node.js 安裝)
|
|
91
|
+
|
|
92
|
+
### Claude Code 整合
|
|
93
|
+
|
|
94
|
+
MeMesh 可無縫整合:
|
|
95
|
+
- ✅ **Claude Code CLI**(終端機)- **完整功能**
|
|
96
|
+
- ✅ **Claude Code VS Code 擴充套件** - **完整功能**
|
|
97
|
+
- ✅ **Cursor**(透過 MCP)- **完整功能**
|
|
98
|
+
- ⚠️ **Claude Desktop (Cowork)** - **部分支援**(見下方說明)
|
|
99
|
+
- ✅ **其他相容 MCP 的編輯器**
|
|
100
|
+
|
|
101
|
+
#### Claude Desktop Cowork 相容性
|
|
102
|
+
|
|
103
|
+
**目前狀態**:僅雲端模式,功能受限
|
|
104
|
+
|
|
105
|
+
| 功能 | 狀態 | 備註 |
|
|
106
|
+
|------|------|------|
|
|
107
|
+
| MCP 伺服器 | ✅ 正常 | 成功以僅雲端模式啟動 |
|
|
108
|
+
| 基本指令 | ✅ 正常 | buddy-help, list-skills 等 |
|
|
109
|
+
| 記憶工具 | ❌ 停用 | recall-memory, create-entities, buddy-do, buddy-remember |
|
|
110
|
+
| 雲端同步 | ✅ 正常 | 需設定 MEMESH_API_KEY |
|
|
111
|
+
| 本地知識圖譜 | ❌ 無法使用 | better-sqlite3 無法在 Cowork 沙盒編譯 |
|
|
112
|
+
|
|
113
|
+
**限制原因**:Cowork 沙盒具有唯讀檔案系統,並阻止原生模組編譯(better-sqlite3、onnxruntime-node、sqlite-vec)。
|
|
114
|
+
|
|
115
|
+
**未來計畫**:透過雲端優先記憶架構實現完整支援。詳見 [docs/COWORK_SUPPORT.md](docs/COWORK_SUPPORT.md)。
|
|
116
|
+
|
|
117
|
+
**建議**:在雲端優先記憶實作完成前,使用 **CLI 版本**以獲得完整功能。
|
|
118
|
+
|
|
119
|
+
### 已知限制
|
|
120
|
+
|
|
121
|
+
- Windows 原生終端機可能有顯示問題(建議使用 WSL2)
|
|
122
|
+
- 大型知識圖譜建議至少 4GB RAM
|
|
123
|
+
- 向量搜尋需要約 100MB 磁碟空間存放嵌入模型
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
76
127
|
## 使用方式
|
|
77
128
|
|
|
78
129
|
MeMesh 在 Claude Code 中提供 3 個核心指令:
|
package/dist/cli/login.js
CHANGED
|
@@ -2,7 +2,7 @@ import chalk from 'chalk';
|
|
|
2
2
|
import * as readline from 'readline';
|
|
3
3
|
import { saveCredentials, loadCredentials } from './credentials.js';
|
|
4
4
|
import { logger } from '../utils/logger.js';
|
|
5
|
-
const DEFAULT_BACKEND_URL = 'https://memesh
|
|
5
|
+
const DEFAULT_BACKEND_URL = 'https://api.memesh.ai';
|
|
6
6
|
async function openBrowser(url) {
|
|
7
7
|
try {
|
|
8
8
|
const parsed = new URL(url);
|
package/dist/cli/login.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAE5C,MAAM,mBAAmB,GAAG,
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../src/cli/login.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ export class MeMeshCloudClient {
|
|
|
25
25
|
catch {
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
this.baseUrl = (baseUrl ?? process.env.MEMESH_BASE_URL ?? fileBaseUrl ?? 'https://memesh
|
|
28
|
+
this.baseUrl = (baseUrl ?? process.env.MEMESH_BASE_URL ?? fileBaseUrl ?? 'https://api.memesh.ai').replace(/\/+$/, '');
|
|
29
29
|
this.timeoutMs = timeoutMs ?? parseInt(process.env.MEMESH_TIMEOUT_MS ?? '10000', 10);
|
|
30
30
|
if (!this.apiKey) {
|
|
31
31
|
logger.debug('MeMeshCloudClient created without API key - cloud features disabled');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MeMeshCloudClient.js","sourceRoot":"","sources":["../../src/cloud/MeMeshCloudClient.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA0E3D,MAAM,OAAO,iBAAiB;IACX,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,SAAS,CAAS;IAEnC,YACE,MAAe,EACf,OAAgB,EAChB,SAAkB;QAIlB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QACzD,IAAI,WAA+B,CAAC;QAGpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;gBACtC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC/D,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;wBACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC/B,CAAC;oBAED,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;wBACrB,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QAGD,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,WAAW,IAAI,
|
|
1
|
+
{"version":3,"file":"MeMeshCloudClient.js","sourceRoot":"","sources":["../../src/cloud/MeMeshCloudClient.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AA0E3D,MAAM,OAAO,iBAAiB;IACX,OAAO,CAAS;IAChB,MAAM,CAAS;IACf,SAAS,CAAS;IAEnC,YACE,MAAe,EACf,OAAgB,EAChB,SAAkB;QAIlB,IAAI,CAAC,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,EAAE,CAAC;QACzD,IAAI,WAA+B,CAAC;QAGpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;gBACtC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;oBAC/D,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;wBACpB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;oBAC/B,CAAC;oBAED,IAAI,OAAO,EAAE,OAAO,EAAE,CAAC;wBACrB,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;YAET,CAAC;QACH,CAAC;QAGD,IAAI,CAAC,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,WAAW,IAAI,uBAAuB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACtH,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,EAAE,EAAE,CAAC,CAAC;QAErF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,CAAC,qEAAqE,CAAC,CAAC;QACtF,CAAC;IACH,CAAC;IAGD,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAKD,KAAK,CAAC,YAAY;QAChB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,KAAK,EAAE,YAAY,CAAC,CAAC;YACtE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;QACxE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,CAAC,IAAI,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACrE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,WAAW,CAAC,MAA+B;QAC/C,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;QACrF,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAGD,KAAK,CAAC,aAAa,CACjB,QAAmC,EACnC,aAAa,GAAG,KAAK;QAErB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,OAAO,IAAI,CAAC,OAAO,CAAwB,MAAM,EAAE,eAAe,EAAE;YAClE,QAAQ;YACR,aAAa;SACd,CAAC,CAAC;IACL,CAAC;IAGD,KAAK,CAAC,YAAY,CAChB,KAAa,EACb,OAA+C;QAE/C,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9C,IAAI,OAAO,EAAE,KAAK;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,IAAI,OAAO,EAAE,MAAM,EAAE,MAAM;YAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAE5E,OAAO,IAAI,CAAC,OAAO,CAA0B,KAAK,EAAE,kBAAkB,MAAM,EAAE,CAAC,CAAC;IAClF,CAAC;IAGD,KAAK,CAAC,aAAa,CAAC,UAAkB;QACpC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QACzD,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAoB,KAAK,EAAE,eAAe,CAAC,CAAC;YAC/E,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,UAAU;gBACV,UAAU,EAAE,QAAQ,CAAC,KAAK;aAC3B,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QACzD,CAAC;IACH,CAAC;IAKD,KAAK,CAAC,aAAa,CAAC,KAAgC;QAClD,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAiB,MAAM,EAAE,kBAAkB,EAAE,KAAK,CAAC,CAAC;QACrF,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QACvG,OAAO,MAAM,CAAC;IAChB,CAAC;IAIO,WAAW;QACjB,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;YACvB,MAAM,IAAI,oBAAoB,CAAC,qCAAqC,EAAE;gBACpE,OAAO,EAAE,cAAc;gBACvB,QAAQ,EAAE,yCAAyC;aACpD,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,OAAO,CACnB,MAAc,EACd,IAAY,EACZ,IAAc;QAEd,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,CAAC;QAErC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAErE,IAAI,CAAC;YACH,MAAM,OAAO,GAA2B;gBACtC,WAAW,EAAE,IAAI,CAAC,MAAM;gBACxB,YAAY,EAAE,kBAAkB;aACjC,CAAC;YAEF,MAAM,OAAO,GAAgB;gBAC3B,MAAM;gBACN,OAAO;gBACP,MAAM,EAAE,UAAU,CAAC,MAAM;aAC1B,CAAC;YAEF,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,OAAO,CAAC,EAAE,CAAC;gBAC1E,OAAO,CAAC,cAAc,CAAC,GAAG,kBAAkB,CAAC;gBAC7C,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAE3C,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,CAAC;gBAEnE,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC;gBACrF,MAAM,IAAI,oBAAoB,CAAC,2BAA2B,QAAQ,CAAC,MAAM,EAAE,EAAE;oBAC3E,OAAO,EAAE,cAAc;oBACvB,QAAQ,EAAE,IAAI;oBACd,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,QAAQ,EAAE,SAAS;iBACpB,CAAC,CAAC;YACL,CAAC;YAGD,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;gBAC5B,OAAO,SAAc,CAAC;YACxB,CAAC;YAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAC;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,oBAAoB;gBAAE,MAAM,KAAK,CAAC;YAEvD,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,SAAS,GAAG,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;YAExE,MAAM,IAAI,oBAAoB,CAC5B,SAAS;gBACP,CAAC,CAAC,wCAAwC,IAAI,CAAC,SAAS,IAAI;gBAC5D,CAAC,CAAC,gCAAgC,OAAO,EAAE,EAC7C;gBACE,OAAO,EAAE,cAAc;gBACvB,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,SAAS;aACnB,CACF,CAAC;QACJ,CAAC;gBAAS,CAAC;YACT,YAAY,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;CACF;AAID,IAAI,SAAS,GAA6B,IAAI,CAAC;AAG/C,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,IAAI,iBAAiB,EAAE,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAGD,MAAM,UAAU,cAAc;IAC5B,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc;QAAE,OAAO,IAAI,CAAC;IAG5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QACtC,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAC/D,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC;QAC3B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;IAET,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAGD,MAAM,UAAU,gBAAgB;IAC9B,SAAS,GAAG,IAAI,CAAC;AACnB,CAAC"}
|
|
@@ -13,18 +13,21 @@ export declare class SimpleConfig {
|
|
|
13
13
|
private static parseBoolean;
|
|
14
14
|
}
|
|
15
15
|
import Database from 'better-sqlite3';
|
|
16
|
+
import type { IDatabaseAdapter } from '../db/IDatabaseAdapter.js';
|
|
16
17
|
import { ConnectionPool, type PoolStats } from '../db/ConnectionPool.js';
|
|
17
18
|
export declare class SimpleDatabaseFactory {
|
|
18
19
|
private static instances;
|
|
19
20
|
private static pools;
|
|
21
|
+
private static pendingPools;
|
|
20
22
|
private static createDatabase;
|
|
21
23
|
private static normalizeDbPath;
|
|
22
24
|
private static ensureDirectoryExists;
|
|
23
25
|
static getInstance(path?: string): Database.Database;
|
|
24
26
|
static createTestDatabase(): Database.Database;
|
|
25
|
-
static getPool(path?: string): ConnectionPool
|
|
26
|
-
static
|
|
27
|
-
static
|
|
27
|
+
static getPool(path?: string): Promise<ConnectionPool>;
|
|
28
|
+
private static createPoolInternal;
|
|
29
|
+
static getPooledConnection(path?: string): Promise<IDatabaseAdapter>;
|
|
30
|
+
static releasePooledConnection(db: IDatabaseAdapter, path?: string): void;
|
|
28
31
|
static getPoolStats(path?: string): PoolStats | null;
|
|
29
32
|
static closeAll(): Promise<void>;
|
|
30
33
|
static close(path?: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-config.d.ts","sourceRoot":"","sources":["../../src/config/simple-config.ts"],"names":[],"mappings":"AA+DA,qBAAa,YAAY;IAiBvB,MAAM,KAAK,YAAY,IAAI,MAAM,CAEhC;IAqBD,MAAM,KAAK,aAAa,IAAI,MAAM,CAQjC;IAUD,MAAM,KAAK,aAAa,IAAI,OAAO,CAElC;IAUD,MAAM,KAAK,aAAa,IAAI,OAAO,CAElC;IA0BD,MAAM,KAAK,QAAQ,IAAI,MAAM,CAE5B;IA4BD,MAAM,KAAK,SAAS,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAM1D;IAkBD,MAAM,KAAK,aAAa,IAAI,OAAO,CAElC;IAkBD,MAAM,KAAK,YAAY,IAAI,OAAO,CAEjC;IAkBD,MAAM,KAAK,MAAM,IAAI,OAAO,CAE3B;IA4BD,MAAM,CAAC,gBAAgB,IAAI,MAAM,EAAE;IA0CnC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAcjD,OAAO,CAAC,MAAM,CAAC,YAAY;CAe5B;AAqED,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzE,qBAAa,qBAAqB;IAShC,OAAO,CAAC,MAAM,CAAC,SAAS,CAA6C;IAUrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAA0C;
|
|
1
|
+
{"version":3,"file":"simple-config.d.ts","sourceRoot":"","sources":["../../src/config/simple-config.ts"],"names":[],"mappings":"AA+DA,qBAAa,YAAY;IAiBvB,MAAM,KAAK,YAAY,IAAI,MAAM,CAEhC;IAqBD,MAAM,KAAK,aAAa,IAAI,MAAM,CAQjC;IAUD,MAAM,KAAK,aAAa,IAAI,OAAO,CAElC;IAUD,MAAM,KAAK,aAAa,IAAI,OAAO,CAElC;IA0BD,MAAM,KAAK,QAAQ,IAAI,MAAM,CAE5B;IA4BD,MAAM,KAAK,SAAS,IAAI,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAM1D;IAkBD,MAAM,KAAK,aAAa,IAAI,OAAO,CAElC;IAkBD,MAAM,KAAK,YAAY,IAAI,OAAO,CAEjC;IAkBD,MAAM,KAAK,MAAM,IAAI,OAAO,CAE3B;IA4BD,MAAM,CAAC,gBAAgB,IAAI,MAAM,EAAE;IA0CnC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAcjD,OAAO,CAAC,MAAM,CAAC,YAAY;CAe5B;AAqED,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzE,qBAAa,qBAAqB;IAShC,OAAO,CAAC,MAAM,CAAC,SAAS,CAA6C;IAUrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAA0C;IAU9D,OAAO,CAAC,MAAM,CAAC,YAAY,CAAmD;IAyC9E,OAAO,CAAC,MAAM,CAAC,cAAc;IAyC7B,OAAO,CAAC,MAAM,CAAC,eAAe;IAa9B,OAAO,CAAC,MAAM,CAAC,qBAAqB;IA8CpC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAC,QAAQ;IAiEpD,MAAM,CAAC,kBAAkB,IAAI,QAAQ,CAAC,QAAQ;WA2BjC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;mBAuCvC,kBAAkB;WA8C1B,mBAAmB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAwB1E,MAAM,CAAC,uBAAuB,CAAC,EAAE,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IA4BzE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;WA2CvC,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;WAmDzB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAyBjD"}
|
|
@@ -76,6 +76,7 @@ import { ConnectionPool } from '../db/ConnectionPool.js';
|
|
|
76
76
|
export class SimpleDatabaseFactory {
|
|
77
77
|
static instances = new Map();
|
|
78
78
|
static pools = new Map();
|
|
79
|
+
static pendingPools = new Map();
|
|
79
80
|
static createDatabase(path, isTest = false) {
|
|
80
81
|
try {
|
|
81
82
|
this.ensureDirectoryExists(path);
|
|
@@ -143,30 +144,46 @@ export class SimpleDatabaseFactory {
|
|
|
143
144
|
static createTestDatabase() {
|
|
144
145
|
return this.createDatabase(':memory:', true);
|
|
145
146
|
}
|
|
146
|
-
static getPool(path) {
|
|
147
|
+
static async getPool(path) {
|
|
147
148
|
const dbPath = this.normalizeDbPath(path);
|
|
148
149
|
let pool = this.pools.get(dbPath);
|
|
149
|
-
if (
|
|
150
|
-
|
|
151
|
-
const maxConnections = parseInt(process.env.DB_POOL_SIZE || '5', 10) || 5;
|
|
152
|
-
const connectionTimeout = parseInt(process.env.DB_POOL_TIMEOUT || '5000', 10) || 5000;
|
|
153
|
-
const idleTimeout = parseInt(process.env.DB_POOL_IDLE_TIMEOUT || '30000', 10) || 30000;
|
|
154
|
-
pool = new ConnectionPool(dbPath, {
|
|
155
|
-
maxConnections,
|
|
156
|
-
connectionTimeout,
|
|
157
|
-
idleTimeout,
|
|
158
|
-
}, SimpleConfig.isDevelopment ? logger : undefined);
|
|
159
|
-
this.pools.set(dbPath, pool);
|
|
160
|
-
logger.info(`Created connection pool for ${dbPath}`, {
|
|
161
|
-
maxConnections,
|
|
162
|
-
connectionTimeout,
|
|
163
|
-
idleTimeout,
|
|
164
|
-
});
|
|
150
|
+
if (pool) {
|
|
151
|
+
return pool;
|
|
165
152
|
}
|
|
153
|
+
const pending = this.pendingPools.get(dbPath);
|
|
154
|
+
if (pending) {
|
|
155
|
+
return pending;
|
|
156
|
+
}
|
|
157
|
+
const poolPromise = this.createPoolInternal(dbPath);
|
|
158
|
+
this.pendingPools.set(dbPath, poolPromise);
|
|
159
|
+
try {
|
|
160
|
+
pool = await poolPromise;
|
|
161
|
+
this.pools.set(dbPath, pool);
|
|
162
|
+
return pool;
|
|
163
|
+
}
|
|
164
|
+
finally {
|
|
165
|
+
this.pendingPools.delete(dbPath);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
static async createPoolInternal(dbPath) {
|
|
169
|
+
this.ensureDirectoryExists(dbPath);
|
|
170
|
+
const maxConnections = parseInt(process.env.DB_POOL_SIZE || '5', 10) || 5;
|
|
171
|
+
const connectionTimeout = parseInt(process.env.DB_POOL_TIMEOUT || '5000', 10) || 5000;
|
|
172
|
+
const idleTimeout = parseInt(process.env.DB_POOL_IDLE_TIMEOUT || '30000', 10) || 30000;
|
|
173
|
+
const pool = await ConnectionPool.create(dbPath, {
|
|
174
|
+
maxConnections,
|
|
175
|
+
connectionTimeout,
|
|
176
|
+
idleTimeout,
|
|
177
|
+
}, SimpleConfig.isDevelopment ? logger : undefined);
|
|
178
|
+
logger.info(`Created connection pool for ${dbPath}`, {
|
|
179
|
+
maxConnections,
|
|
180
|
+
connectionTimeout,
|
|
181
|
+
idleTimeout,
|
|
182
|
+
});
|
|
166
183
|
return pool;
|
|
167
184
|
}
|
|
168
185
|
static async getPooledConnection(path) {
|
|
169
|
-
const pool = this.getPool(path);
|
|
186
|
+
const pool = await this.getPool(path);
|
|
170
187
|
return pool.acquire();
|
|
171
188
|
}
|
|
172
189
|
static releasePooledConnection(db, path) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-config.js","sourceRoot":"","sources":["../../src/config/simple-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"simple-config.js","sourceRoot":"","sources":["../../src/config/simple-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Database from 'better-sqlite3';
|
|
2
1
|
import type { ILogger } from '../utils/ILogger.js';
|
|
2
|
+
import type { IDatabaseAdapter } from './IDatabaseAdapter.js';
|
|
3
3
|
export interface ConnectionPoolOptions {
|
|
4
4
|
maxConnections: number;
|
|
5
5
|
connectionTimeout: number;
|
|
@@ -26,17 +26,20 @@ export declare class ConnectionPool {
|
|
|
26
26
|
private stats;
|
|
27
27
|
private healthCheckTimer;
|
|
28
28
|
private isShuttingDown;
|
|
29
|
+
private isInitialized;
|
|
29
30
|
private healthCheckErrorCount;
|
|
30
31
|
private readonly MAX_CONSECUTIVE_HEALTH_CHECK_ERRORS;
|
|
32
|
+
static create(dbPath: string, options?: Partial<ConnectionPoolOptions>, verboseLogger?: ILogger): Promise<ConnectionPool>;
|
|
31
33
|
constructor(dbPath: string, options?: Partial<ConnectionPoolOptions>, verboseLogger?: ILogger);
|
|
34
|
+
initialize(): Promise<void>;
|
|
32
35
|
private initializePool;
|
|
33
36
|
private createConnection;
|
|
34
37
|
private createConnectionWithRetry;
|
|
35
38
|
private isConnectionValid;
|
|
36
39
|
private getValidConnection;
|
|
37
|
-
acquire(): Promise<
|
|
40
|
+
acquire(): Promise<IDatabaseAdapter>;
|
|
38
41
|
private _acquireInternal;
|
|
39
|
-
release(db:
|
|
42
|
+
release(db: IDatabaseAdapter): void;
|
|
40
43
|
getStats(): PoolStats;
|
|
41
44
|
private startHealthCheck;
|
|
42
45
|
private performHealthCheck;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ConnectionPool.d.ts","sourceRoot":"","sources":["../../src/db/ConnectionPool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ConnectionPool.d.ts","sourceRoot":"","sources":["../../src/db/ConnectionPool.ts"],"names":[],"mappings":"AAoDA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAS9D,MAAM,WAAW,qBAAqB;IAcpC,cAAc,EAAE,MAAM,CAAC;IAUvB,iBAAiB,EAAE,MAAM,CAAC;IAU1B,WAAW,EAAE,MAAM,CAAC;IASpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAQD,MAAM,WAAW,SAAS;IAMxB,KAAK,EAAE,MAAM,CAAC;IAOd,MAAM,EAAE,MAAM,CAAC;IAOf,IAAI,EAAE,MAAM,CAAC;IAQb,OAAO,EAAE,MAAM,CAAC;IAOhB,aAAa,EAAE,MAAM,CAAC;IAOtB,aAAa,EAAE,MAAM,CAAC;IAOtB,aAAa,EAAE,MAAM,CAAC;IAOtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAgFD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAkC;IAC1D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAU;IACzC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA4B;IACjD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAIhB;IAGR,OAAO,CAAC,KAAK,CAKX;IAEF,OAAO,CAAC,gBAAgB,CAA+B;IACvD,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,aAAa,CAAS;IAG9B,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,QAAQ,CAAC,mCAAmC,CAAK;WA0B5C,MAAM,CACjB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,CAAC,qBAAqB,CAAM,EAC5C,aAAa,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC,cAAc,CAAC;gBAqDxB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAO,CAAC,qBAAqB,CAAM,EAC5C,aAAa,CAAC,EAAE,OAAO;IAmInB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YA4BnB,cAAc;YAkCd,gBAAgB;YAyEhB,yBAAyB;IAkDvC,OAAO,CAAC,iBAAiB;YAgBX,kBAAkB;IAwE1B,OAAO,IAAI,OAAO,CAAC,gBAAgB,CAAC;YAyC5B,gBAAgB;IA8D9B,OAAO,CAAC,EAAE,EAAE,gBAAgB,GAAG,IAAI;IAmEnC,QAAQ,IAAI,SAAS;IAqBrB,OAAO,CAAC,gBAAgB;YAkEV,kBAAkB;YAgHlB,eAAe;IAyEvB,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAwD/B,SAAS,IAAI,OAAO;CAGrB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import Database from 'better-sqlite3';
|
|
2
1
|
import { logger } from '../utils/logger.js';
|
|
2
|
+
import { BetterSqlite3Adapter, checkBetterSqlite3Availability } from './adapters/BetterSqlite3Adapter.js';
|
|
3
3
|
const MAX_SAFE_CONNECTIONS = 100;
|
|
4
4
|
const MAX_SAFE_TIMEOUT_MS = 10 * 60 * 1000;
|
|
5
5
|
const MIN_CONNECTION_TIMEOUT_MS = 1000;
|
|
@@ -21,9 +21,29 @@ export class ConnectionPool {
|
|
|
21
21
|
};
|
|
22
22
|
healthCheckTimer = null;
|
|
23
23
|
isShuttingDown = false;
|
|
24
|
+
isInitialized = false;
|
|
24
25
|
healthCheckErrorCount = 0;
|
|
25
26
|
MAX_CONSECUTIVE_HEALTH_CHECK_ERRORS = 5;
|
|
27
|
+
static async create(dbPath, options = {}, verboseLogger) {
|
|
28
|
+
const availability = await checkBetterSqlite3Availability();
|
|
29
|
+
if (!availability.available) {
|
|
30
|
+
const errorMsg = `Cannot create ConnectionPool: better-sqlite3 is unavailable.\n` +
|
|
31
|
+
`Error: ${availability.error}\n` +
|
|
32
|
+
`Suggestion: ${availability.fallbackSuggestion || 'Use Cloud-only mode with MEMESH_API_KEY'}`;
|
|
33
|
+
logger.error('[ConnectionPool] Static factory failed', {
|
|
34
|
+
error: availability.error,
|
|
35
|
+
suggestion: availability.fallbackSuggestion,
|
|
36
|
+
});
|
|
37
|
+
throw new Error(errorMsg);
|
|
38
|
+
}
|
|
39
|
+
const pool = new ConnectionPool(dbPath, options, verboseLogger);
|
|
40
|
+
await pool.initialize();
|
|
41
|
+
return pool;
|
|
42
|
+
}
|
|
26
43
|
constructor(dbPath, options = {}, verboseLogger) {
|
|
44
|
+
if (!dbPath || dbPath.trim().length === 0) {
|
|
45
|
+
throw new Error('dbPath must be a non-empty string');
|
|
46
|
+
}
|
|
27
47
|
this.dbPath = dbPath;
|
|
28
48
|
this.verboseLogger = verboseLogger;
|
|
29
49
|
this.options = {
|
|
@@ -91,19 +111,30 @@ export class ConnectionPool {
|
|
|
91
111
|
});
|
|
92
112
|
this.options.healthCheckInterval = MAX_HEALTH_CHECK_INTERVAL_MS;
|
|
93
113
|
}
|
|
94
|
-
logger.info('
|
|
114
|
+
logger.info('ConnectionPool constructor called', {
|
|
95
115
|
dbPath: this.dbPath,
|
|
96
116
|
maxConnections: this.options.maxConnections,
|
|
97
117
|
connectionTimeout: this.options.connectionTimeout,
|
|
98
118
|
idleTimeout: this.options.idleTimeout,
|
|
99
119
|
});
|
|
100
|
-
|
|
120
|
+
}
|
|
121
|
+
async initialize() {
|
|
122
|
+
if (this.isInitialized) {
|
|
123
|
+
throw new Error('ConnectionPool already initialized');
|
|
124
|
+
}
|
|
125
|
+
logger.info('Initializing connection pool', {
|
|
126
|
+
dbPath: this.dbPath,
|
|
127
|
+
maxConnections: this.options.maxConnections,
|
|
128
|
+
});
|
|
129
|
+
await this.initializePool();
|
|
101
130
|
this.startHealthCheck();
|
|
131
|
+
this.isInitialized = true;
|
|
132
|
+
logger.info(`Connection pool initialized with ${this.pool.length} connections`);
|
|
102
133
|
}
|
|
103
|
-
initializePool() {
|
|
134
|
+
async initializePool() {
|
|
104
135
|
for (let i = 0; i < this.options.maxConnections; i++) {
|
|
105
136
|
try {
|
|
106
|
-
const db = this.createConnection();
|
|
137
|
+
const db = await this.createConnection();
|
|
107
138
|
const metadata = {
|
|
108
139
|
db,
|
|
109
140
|
lastAcquired: 0,
|
|
@@ -118,12 +149,12 @@ export class ConnectionPool {
|
|
|
118
149
|
throw new Error(`Pool initialization failed: ${error}`);
|
|
119
150
|
}
|
|
120
151
|
}
|
|
121
|
-
logger.info(`Connection pool initialized with ${this.pool.length} connections`);
|
|
122
152
|
}
|
|
123
|
-
createConnection() {
|
|
124
|
-
const
|
|
153
|
+
async createConnection() {
|
|
154
|
+
const adapter = await BetterSqlite3Adapter.create(this.dbPath, {
|
|
125
155
|
verbose: this.verboseLogger ? ((msg) => this.verboseLogger.debug('SQLite', { message: msg })) : undefined,
|
|
126
156
|
});
|
|
157
|
+
const db = adapter.db;
|
|
127
158
|
try {
|
|
128
159
|
db.pragma('busy_timeout = 5000');
|
|
129
160
|
}
|
|
@@ -153,8 +184,19 @@ export class ConnectionPool {
|
|
|
153
184
|
logger.debug('[ConnectionPool] Could not set mmap_size:', error);
|
|
154
185
|
}
|
|
155
186
|
}
|
|
156
|
-
|
|
157
|
-
|
|
187
|
+
try {
|
|
188
|
+
db.pragma('foreign_keys = ON');
|
|
189
|
+
const fkEnabled = db.pragma('foreign_keys', { simple: true });
|
|
190
|
+
if (fkEnabled !== 1) {
|
|
191
|
+
throw new Error('Failed to enable foreign_keys pragma - database integrity cannot be guaranteed');
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
logger.error('[ConnectionPool] CRITICAL: Failed to enable foreign key constraints', { error });
|
|
196
|
+
throw new Error(`Cannot create connection: foreign key constraints failed to enable. ` +
|
|
197
|
+
`This is critical for database integrity. Error: ${error}`);
|
|
198
|
+
}
|
|
199
|
+
return adapter;
|
|
158
200
|
}
|
|
159
201
|
async createConnectionWithRetry(context) {
|
|
160
202
|
const MAX_RETRIES = 3;
|
|
@@ -162,7 +204,7 @@ export class ConnectionPool {
|
|
|
162
204
|
let lastError;
|
|
163
205
|
for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
|
|
164
206
|
try {
|
|
165
|
-
return this.createConnection();
|
|
207
|
+
return await this.createConnection();
|
|
166
208
|
}
|
|
167
209
|
catch (error) {
|
|
168
210
|
lastError = error instanceof Error ? error : new Error(String(error));
|
|
@@ -187,7 +229,7 @@ export class ConnectionPool {
|
|
|
187
229
|
isConnectionValid(db) {
|
|
188
230
|
try {
|
|
189
231
|
db.prepare('SELECT 1').get();
|
|
190
|
-
return
|
|
232
|
+
return db.open;
|
|
191
233
|
}
|
|
192
234
|
catch {
|
|
193
235
|
return false;
|
|
@@ -205,7 +247,8 @@ export class ConnectionPool {
|
|
|
205
247
|
try {
|
|
206
248
|
metadata.db.close();
|
|
207
249
|
}
|
|
208
|
-
catch {
|
|
250
|
+
catch (error) {
|
|
251
|
+
logger.debug('[ConnectionPool] Ignoring close error for invalid connection', { error });
|
|
209
252
|
}
|
|
210
253
|
try {
|
|
211
254
|
const newDb = await this.createConnectionWithRetry('acquire fallback');
|
|
@@ -229,6 +272,9 @@ export class ConnectionPool {
|
|
|
229
272
|
return undefined;
|
|
230
273
|
}
|
|
231
274
|
async acquire() {
|
|
275
|
+
if (!this.isInitialized) {
|
|
276
|
+
throw new Error('ConnectionPool not initialized. Call initialize() or use ConnectionPool.create()');
|
|
277
|
+
}
|
|
232
278
|
let outerTimeoutId = null;
|
|
233
279
|
try {
|
|
234
280
|
const result = await Promise.race([
|
|
@@ -361,6 +407,7 @@ export class ConnectionPool {
|
|
|
361
407
|
}
|
|
362
408
|
});
|
|
363
409
|
}, this.options.healthCheckInterval);
|
|
410
|
+
this.healthCheckTimer.unref();
|
|
364
411
|
}
|
|
365
412
|
async performHealthCheck() {
|
|
366
413
|
if (this.isShuttingDown) {
|
|
@@ -391,7 +438,7 @@ export class ConnectionPool {
|
|
|
391
438
|
metadata.db.close();
|
|
392
439
|
}
|
|
393
440
|
catch (error) {
|
|
394
|
-
logger.error('Error closing stale connection
|
|
441
|
+
logger.error('[ConnectionPool] Error closing stale connection during health check', { error });
|
|
395
442
|
if (poolIndex !== -1) {
|
|
396
443
|
this.pool.splice(poolIndex, 1);
|
|
397
444
|
removedFromPool = true;
|
|
@@ -491,7 +538,7 @@ export class ConnectionPool {
|
|
|
491
538
|
metadata.db.close();
|
|
492
539
|
}
|
|
493
540
|
catch (error) {
|
|
494
|
-
logger.error('Error closing connection during shutdown
|
|
541
|
+
logger.error('[ConnectionPool] Error closing connection during shutdown', { error });
|
|
495
542
|
}
|
|
496
543
|
});
|
|
497
544
|
await Promise.all(closePromises);
|