@pcircle/memesh 2.9.2 → 2.9.3
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.de.md +119 -78
- package/README.es.md +116 -75
- package/README.fr.md +116 -75
- package/README.id.md +115 -74
- package/README.ja.md +111 -70
- package/README.ko.md +116 -75
- package/README.md +113 -72
- package/README.th.md +118 -77
- package/README.vi.md +116 -75
- package/README.zh-CN.md +120 -79
- package/README.zh-TW.md +116 -75
- package/dist/core/GitCommandParser.d.ts +11 -0
- package/dist/core/GitCommandParser.d.ts.map +1 -0
- package/dist/core/GitCommandParser.js +43 -0
- package/dist/core/GitCommandParser.js.map +1 -0
- package/dist/core/HookIntegration.d.ts +0 -3
- package/dist/core/HookIntegration.d.ts.map +1 -1
- package/dist/core/HookIntegration.js +6 -30
- package/dist/core/HookIntegration.js.map +1 -1
- package/dist/embeddings/EmbeddingService.d.ts +3 -0
- package/dist/embeddings/EmbeddingService.d.ts.map +1 -1
- package/dist/embeddings/EmbeddingService.js +32 -6
- package/dist/embeddings/EmbeddingService.js.map +1 -1
- package/dist/embeddings/InMemoryVectorAdapter.d.ts +15 -0
- package/dist/embeddings/InMemoryVectorAdapter.d.ts.map +1 -0
- package/dist/embeddings/InMemoryVectorAdapter.js +58 -0
- package/dist/embeddings/InMemoryVectorAdapter.js.map +1 -0
- package/dist/embeddings/SqliteVecAdapter.d.ts +15 -0
- package/dist/embeddings/SqliteVecAdapter.d.ts.map +1 -0
- package/dist/embeddings/SqliteVecAdapter.js +107 -0
- package/dist/embeddings/SqliteVecAdapter.js.map +1 -0
- package/dist/embeddings/VectorExtension.d.ts +2 -4
- package/dist/embeddings/VectorExtension.d.ts.map +1 -1
- package/dist/embeddings/VectorExtension.js.map +1 -1
- package/dist/embeddings/VectorSearchAdapter.d.ts +17 -0
- package/dist/embeddings/VectorSearchAdapter.d.ts.map +1 -0
- package/dist/embeddings/VectorSearchAdapter.js +2 -0
- package/dist/embeddings/VectorSearchAdapter.js.map +1 -0
- package/dist/embeddings/index.d.ts +6 -1
- package/dist/embeddings/index.d.ts.map +1 -1
- package/dist/embeddings/index.js +4 -1
- package/dist/embeddings/index.js.map +1 -1
- package/dist/knowledge-graph/ContentHasher.d.ts +4 -0
- package/dist/knowledge-graph/ContentHasher.d.ts.map +1 -0
- package/dist/knowledge-graph/ContentHasher.js +8 -0
- package/dist/knowledge-graph/ContentHasher.js.map +1 -0
- package/dist/knowledge-graph/KGSearchEngine.d.ts +36 -0
- package/dist/knowledge-graph/KGSearchEngine.d.ts.map +1 -0
- package/dist/knowledge-graph/KGSearchEngine.js +257 -0
- package/dist/knowledge-graph/KGSearchEngine.js.map +1 -0
- package/dist/knowledge-graph/index.d.ts +18 -7
- package/dist/knowledge-graph/index.d.ts.map +1 -1
- package/dist/knowledge-graph/index.js +147 -242
- package/dist/knowledge-graph/index.js.map +1 -1
- package/dist/mcp/ServerInitializer.d.ts.map +1 -1
- package/dist/mcp/ServerInitializer.js +1 -1
- package/dist/mcp/ServerInitializer.js.map +1 -1
- package/dist/mcp/StdinBufferManager.d.ts +11 -0
- package/dist/mcp/StdinBufferManager.d.ts.map +1 -0
- package/dist/mcp/StdinBufferManager.js +62 -0
- package/dist/mcp/StdinBufferManager.js.map +1 -0
- package/dist/mcp/daemon/StdioProxyClient.d.ts.map +1 -1
- package/dist/mcp/daemon/StdioProxyClient.js +6 -0
- package/dist/mcp/daemon/StdioProxyClient.js.map +1 -1
- package/dist/mcp/handlers/HookToolHandler.d.ts +10 -0
- package/dist/mcp/handlers/HookToolHandler.d.ts.map +1 -0
- package/dist/mcp/handlers/HookToolHandler.js +92 -0
- package/dist/mcp/handlers/HookToolHandler.js.map +1 -0
- package/dist/mcp/handlers/MemoryToolHandler.d.ts +21 -0
- package/dist/mcp/handlers/MemoryToolHandler.d.ts.map +1 -0
- package/dist/mcp/handlers/MemoryToolHandler.js +430 -0
- package/dist/mcp/handlers/MemoryToolHandler.js.map +1 -0
- package/dist/mcp/handlers/SystemToolHandler.d.ts +14 -0
- package/dist/mcp/handlers/SystemToolHandler.d.ts.map +1 -0
- package/dist/mcp/handlers/SystemToolHandler.js +224 -0
- package/dist/mcp/handlers/SystemToolHandler.js.map +1 -0
- package/dist/mcp/handlers/ToolHandlers.d.ts +4 -17
- package/dist/mcp/handlers/ToolHandlers.d.ts.map +1 -1
- package/dist/mcp/handlers/ToolHandlers.js +19 -689
- package/dist/mcp/handlers/ToolHandlers.js.map +1 -1
- package/dist/mcp/handlers/index.d.ts +3 -0
- package/dist/mcp/handlers/index.d.ts.map +1 -1
- package/dist/mcp/handlers/index.js +3 -0
- package/dist/mcp/handlers/index.js.map +1 -1
- package/dist/mcp/server-bootstrap.js +24 -59
- package/dist/mcp/server-bootstrap.js.map +1 -1
- package/dist/mcp/tools/create-entities.d.ts.map +1 -1
- package/dist/mcp/tools/create-entities.js +18 -24
- package/dist/mcp/tools/create-entities.js.map +1 -1
- package/dist/memory/MemorySearchEngine.d.ts +17 -0
- package/dist/memory/MemorySearchEngine.d.ts.map +1 -0
- package/dist/memory/MemorySearchEngine.js +88 -0
- package/dist/memory/MemorySearchEngine.js.map +1 -0
- package/dist/memory/ProactiveRecaller.d.ts +26 -0
- package/dist/memory/ProactiveRecaller.d.ts.map +1 -0
- package/dist/memory/ProactiveRecaller.js +96 -0
- package/dist/memory/ProactiveRecaller.js.map +1 -0
- package/dist/memory/UnifiedMemoryStore.d.ts +1 -0
- package/dist/memory/UnifiedMemoryStore.d.ts.map +1 -1
- package/dist/memory/UnifiedMemoryStore.js +7 -63
- package/dist/memory/UnifiedMemoryStore.js.map +1 -1
- package/dist/memory/index.d.ts +3 -0
- package/dist/memory/index.d.ts.map +1 -1
- package/dist/memory/index.js +2 -0
- package/dist/memory/index.js.map +1 -1
- package/dist/utils/index.d.ts +0 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +0 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/tracing/index.d.ts +0 -1
- package/dist/utils/tracing/index.d.ts.map +1 -1
- package/dist/utils/tracing/index.js +0 -1
- package/dist/utils/tracing/index.js.map +1 -1
- package/package.json +2 -11
- package/plugin.json +1 -1
- package/scripts/hooks/__tests__/post-tool-use-recall.test.js +192 -0
- package/scripts/hooks/__tests__/session-start-recall.test.js +86 -0
- package/scripts/hooks/post-tool-use-recall-utils.js +74 -0
- package/scripts/hooks/post-tool-use.js +79 -0
- package/scripts/hooks/session-start-recall-utils.js +40 -0
- package/scripts/hooks/session-start.js +66 -0
- package/scripts/hooks/templates/planning-template.md +46 -0
package/README.zh-TW.md
CHANGED
|
@@ -1,60 +1,89 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
<img src="https://img.shields.io/badge/%F0%9F%A7%A0-MeMesh-blueviolet?style=for-the-badge" alt="MeMesh" />
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
# MeMesh
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
### 你的 AI 程式開發應該有記憶。
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
[](LICENSE)
|
|
11
|
-
[](https://modelcontextprotocol.io)
|
|
9
|
+
MeMesh 賦予 Claude Code 持久、可搜尋的記憶 — 讓每次對話都能延續上一次的成果。
|
|
12
10
|
|
|
13
|
-
[
|
|
11
|
+
[](https://www.npmjs.com/package/@pcircle/memesh)
|
|
12
|
+
[](https://www.npmjs.com/package/@pcircle/memesh)
|
|
13
|
+
[](LICENSE)
|
|
14
|
+
[](https://nodejs.org)
|
|
15
|
+
[](https://modelcontextprotocol.io)
|
|
14
16
|
|
|
15
|
-
|
|
17
|
+
```bash
|
|
18
|
+
npm install -g @pcircle/memesh
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
[開始使用](#開始使用) · [運作原理](#運作原理) · [指令](#指令) · [文件](docs/USER_GUIDE.md)
|
|
22
|
+
|
|
23
|
+
[English](README.md) · **繁體中文** · [简体中文](README.zh-CN.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Español](README.es.md) · [Tiếng Việt](README.vi.md) · [ภาษาไทย](README.th.md) · [Bahasa Indonesia](README.id.md)
|
|
16
24
|
|
|
17
25
|
</div>
|
|
18
26
|
|
|
27
|
+
> **備註**:本專案原名「Claude Code Buddy」,為避免潛在的商標問題已更名為 MeMesh Plugin。
|
|
28
|
+
|
|
19
29
|
---
|
|
20
30
|
|
|
21
|
-
##
|
|
31
|
+
## 問題所在
|
|
22
32
|
|
|
23
|
-
|
|
33
|
+
你正在用 Claude Code 深入開發一個專案。三個 session 前你做了重要決策 — 用哪個 auth 函式庫、為什麼選了那個資料庫 schema、該遵循什麼模式。但 Claude 不記得了。你只能重複說明、失去脈絡、浪費時間。
|
|
24
34
|
|
|
25
|
-
|
|
35
|
+
**MeMesh 解決了這個問題。** 它賦予 Claude 持久、可搜尋的記憶,隨著你的專案一起成長。
|
|
36
|
+
|
|
37
|
+
---
|
|
26
38
|
|
|
27
|
-
|
|
39
|
+
## 運作原理
|
|
28
40
|
|
|
29
|
-
|
|
41
|
+
<table>
|
|
42
|
+
<tr>
|
|
43
|
+
<td width="50%">
|
|
44
|
+
|
|
45
|
+
### 沒有 MeMesh
|
|
46
|
+
```
|
|
47
|
+
Session 1: "用 JWT 做 auth"
|
|
48
|
+
Session 2: "我們當初為什麼選 JWT?"
|
|
49
|
+
Session 3: "等等,我們用的是哪個 auth 函式庫?"
|
|
50
|
+
```
|
|
51
|
+
你不斷重複決策。Claude 忘了脈絡。進度停滯。
|
|
52
|
+
|
|
53
|
+
</td>
|
|
54
|
+
<td width="50%">
|
|
55
|
+
|
|
56
|
+
### 有了 MeMesh
|
|
57
|
+
```
|
|
58
|
+
Session 1: "用 JWT 做 auth" → 已儲存
|
|
59
|
+
Session 2: buddy-remember "auth" → 即時回憶
|
|
60
|
+
Session 3: 啟動時自動載入脈絡
|
|
61
|
+
```
|
|
62
|
+
每次 session 都能接續上次的進度。
|
|
30
63
|
|
|
31
|
-
|
|
64
|
+
</td>
|
|
65
|
+
</tr>
|
|
66
|
+
</table>
|
|
32
67
|
|
|
33
|
-
|
|
68
|
+
---
|
|
34
69
|
|
|
35
|
-
|
|
70
|
+
## 你能獲得什麼
|
|
36
71
|
|
|
37
|
-
|
|
38
|
-
- 開始新 session 時顯示上次工作摘要
|
|
39
|
-
- 追蹤你改了哪些檔案、測試了哪些
|
|
40
|
-
- 在 commit 前提醒你做 code review
|
|
41
|
-
- 把任務分配到最合適的模型(搜尋用快的、規劃用強的)
|
|
72
|
+
**可搜尋的專案記憶** — 問「我們之前怎麼決定 auth 的?」就能即時得到語意匹配的答案。不是關鍵字搜尋 — 而是*語意*搜尋,由本地 ONNX embeddings 驅動。
|
|
42
73
|
|
|
43
|
-
|
|
74
|
+
**智慧任務分析** — `buddy-do "加上使用者認證"` 不只是執行。它會從過去的 session 中提取相關脈絡、檢查你已建立的模式,在寫下任何一行程式碼之前先建構完整的計畫。
|
|
44
75
|
|
|
45
|
-
|
|
76
|
+
**主動回憶** — MeMesh 在你開始 session、遇到測試失敗或碰到錯誤時,自動浮現相關記憶。不需要手動搜尋。
|
|
46
77
|
|
|
47
|
-
|
|
78
|
+
**工作流自動化** — 啟動時顯示 session 回顧、追蹤檔案變更、commit 前提醒 code review。全部在背景靜靜運行。
|
|
48
79
|
|
|
49
|
-
|
|
50
|
-
- **CLAUDE.md** = 你寫給 Claude 的使用手冊
|
|
51
|
-
- **MeMesh** = 可搜尋的筆記本 + 隨專案成長而學習的智慧助手
|
|
80
|
+
**錯誤學習** — 記錄錯誤和修復方式來建立知識庫。同樣的錯誤不會再犯第二次。
|
|
52
81
|
|
|
53
82
|
---
|
|
54
83
|
|
|
55
|
-
##
|
|
84
|
+
## 開始使用
|
|
56
85
|
|
|
57
|
-
|
|
86
|
+
**前置需求**:[Claude Code](https://docs.anthropic.com/en/docs/claude-code) + Node.js 20+
|
|
58
87
|
|
|
59
88
|
```bash
|
|
60
89
|
npm install -g @pcircle/memesh
|
|
@@ -62,16 +91,16 @@ npm install -g @pcircle/memesh
|
|
|
62
91
|
|
|
63
92
|
重啟 Claude Code,完成。
|
|
64
93
|
|
|
65
|
-
|
|
94
|
+
**驗證** — 在 Claude Code 中輸入:
|
|
66
95
|
|
|
67
96
|
```
|
|
68
97
|
buddy-help
|
|
69
98
|
```
|
|
70
99
|
|
|
71
|
-
|
|
100
|
+
你應該會看到可用指令的列表。
|
|
72
101
|
|
|
73
102
|
<details>
|
|
74
|
-
<summary
|
|
103
|
+
<summary><strong>從原始碼安裝</strong>(貢獻者)</summary>
|
|
75
104
|
|
|
76
105
|
```bash
|
|
77
106
|
git clone https://github.com/PCIRCLE-AI/claude-code-buddy.git
|
|
@@ -83,76 +112,88 @@ npm install && npm run build
|
|
|
83
112
|
|
|
84
113
|
---
|
|
85
114
|
|
|
86
|
-
##
|
|
87
|
-
|
|
88
|
-
MeMesh 在 Claude Code 中增加 3 個指令:
|
|
115
|
+
## 指令
|
|
89
116
|
|
|
90
|
-
| 指令 |
|
|
91
|
-
|
|
92
|
-
| `buddy-do "任務"` |
|
|
117
|
+
| 指令 | 功能說明 |
|
|
118
|
+
|------|----------|
|
|
119
|
+
| `buddy-do "任務"` | 帶著完整記憶脈絡執行任務 |
|
|
93
120
|
| `buddy-remember "主題"` | 搜尋過去的決策和脈絡 |
|
|
94
121
|
| `buddy-help` | 顯示可用指令 |
|
|
95
122
|
|
|
96
|
-
|
|
123
|
+
**實際範例:**
|
|
97
124
|
|
|
98
125
|
```bash
|
|
99
|
-
|
|
100
|
-
buddy-do "
|
|
101
|
-
|
|
102
|
-
|
|
126
|
+
# 快速了解一個不熟悉的 codebase
|
|
127
|
+
buddy-do "explain this codebase"
|
|
128
|
+
|
|
129
|
+
# 帶著過去工作的脈絡來開發功能
|
|
130
|
+
buddy-do "add user authentication"
|
|
131
|
+
|
|
132
|
+
# 回顧決策的原因
|
|
133
|
+
buddy-remember "API design decisions"
|
|
134
|
+
buddy-remember "why we chose PostgreSQL"
|
|
103
135
|
```
|
|
104
136
|
|
|
105
137
|
所有資料都存在你的電腦上。決策保留 90 天,session 筆記保留 30 天。
|
|
106
138
|
|
|
107
139
|
---
|
|
108
140
|
|
|
109
|
-
##
|
|
141
|
+
## 這跟 CLAUDE.md 有什麼不同?
|
|
142
|
+
|
|
143
|
+
| | CLAUDE.md | MeMesh |
|
|
144
|
+
|---|-----------|--------|
|
|
145
|
+
| **用途** | 給 Claude 的靜態指令 | 隨專案成長的活記憶 |
|
|
146
|
+
| **搜尋** | 手動文字搜尋 | 依語意搜尋 |
|
|
147
|
+
| **更新** | 你手動編輯 | 工作時自動捕捉決策 |
|
|
148
|
+
| **回憶** | 永遠載入(可能變很長) | 按需浮現相關脈絡 |
|
|
149
|
+
| **範圍** | 一般偏好設定 | 專案專屬的知識圖譜 |
|
|
150
|
+
|
|
151
|
+
**它們可以搭配使用。** CLAUDE.md 告訴 Claude *如何*工作。MeMesh 記住你*建了什麼*。
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 平台支援
|
|
110
156
|
|
|
111
157
|
| 平台 | 狀態 |
|
|
112
158
|
|------|------|
|
|
113
|
-
|
|
|
114
|
-
|
|
|
115
|
-
|
|
|
159
|
+
| macOS | ✅ |
|
|
160
|
+
| Linux | ✅ |
|
|
161
|
+
| Windows | ✅ (建議 WSL2) |
|
|
116
162
|
|
|
117
|
-
**可搭配使用:**
|
|
118
|
-
- Claude Code CLI(終端機)
|
|
119
|
-
- Claude Code VS Code 擴充套件
|
|
120
|
-
- Cursor(透過 MCP)
|
|
121
|
-
- 其他相容 MCP 的編輯器
|
|
122
|
-
|
|
123
|
-
**Claude Desktop (Cowork)**:基本指令可用,記憶功能需使用 CLI 版本。詳見 [Cowork 說明](docs/COWORK_SUPPORT.md)。
|
|
163
|
+
**可搭配使用:** Claude Code CLI · VS Code Extension · Cursor (透過 MCP) · 任何相容 MCP 的編輯器
|
|
124
164
|
|
|
125
165
|
---
|
|
126
166
|
|
|
127
|
-
##
|
|
167
|
+
## 架構
|
|
128
168
|
|
|
129
|
-
|
|
169
|
+
MeMesh 作為本地 MCP 伺服器與 Claude Code 並行運作:
|
|
130
170
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
171
|
+
- **知識圖譜** — SQLite 支援的實體儲存,搭配 FTS5 全文搜尋
|
|
172
|
+
- **向量嵌入** — ONNX 執行環境實現語意相似度(100% 本地運行)
|
|
173
|
+
- **內容去重** — SHA-256 雜湊跳過重複的嵌入運算
|
|
174
|
+
- **批次處理** — 針對大型知識庫的高效批量操作
|
|
175
|
+
- **Hook 系統** — 在 session 啟動、測試失敗和錯誤時主動回憶
|
|
134
176
|
|
|
135
|
-
|
|
136
|
-
node --version
|
|
177
|
+
一切在本地運行。沒有雲端。沒有 API 呼叫。你的資料永遠不會離開你的電腦。
|
|
137
178
|
|
|
138
|
-
|
|
139
|
-
memesh setup
|
|
140
|
-
```
|
|
179
|
+
---
|
|
141
180
|
|
|
142
|
-
|
|
181
|
+
## 文件
|
|
143
182
|
|
|
144
|
-
|
|
183
|
+
| 文件 | 說明 |
|
|
184
|
+
|------|------|
|
|
185
|
+
| [快速開始](docs/GETTING_STARTED.md) | 一步步的安裝指南 |
|
|
186
|
+
| [使用指南](docs/USER_GUIDE.md) | 完整使用指南與範例 |
|
|
187
|
+
| [指令參考](docs/COMMANDS.md) | 完整的指令參考 |
|
|
188
|
+
| [架構說明](docs/ARCHITECTURE.md) | 技術深入解析 |
|
|
189
|
+
| [貢獻指南](CONTRIBUTING.md) | 貢獻者指南 |
|
|
190
|
+
| [開發指南](docs/DEVELOPMENT.md) | 給貢獻者的開發設定 |
|
|
145
191
|
|
|
146
192
|
---
|
|
147
193
|
|
|
148
|
-
##
|
|
194
|
+
## 貢獻
|
|
149
195
|
|
|
150
|
-
|
|
151
|
-
- **[使用指南](docs/USER_GUIDE.md)** — 完整使用範例
|
|
152
|
-
- **[指令參考](docs/COMMANDS.md)** — 所有可用指令
|
|
153
|
-
- **[架構說明](docs/ARCHITECTURE.md)** — 內部運作原理
|
|
154
|
-
- **[貢獻指南](CONTRIBUTING.md)** — 想幫忙?從這裡開始
|
|
155
|
-
- **[開發指南](docs/DEVELOPMENT.md)** — 給貢獻者
|
|
196
|
+
歡迎貢獻!請參閱 [CONTRIBUTING.md](CONTRIBUTING.md) 開始。
|
|
156
197
|
|
|
157
198
|
---
|
|
158
199
|
|
|
@@ -164,8 +205,8 @@ MIT — 詳見 [LICENSE](LICENSE)
|
|
|
164
205
|
|
|
165
206
|
<div align="center">
|
|
166
207
|
|
|
167
|
-
|
|
208
|
+
**用 Claude Code 打造,為 Claude Code 而生。**
|
|
168
209
|
|
|
169
|
-
[回報 Bug](https://github.com/PCIRCLE-AI/claude-code-buddy/issues/new?labels=bug&template=bug_report.yml)
|
|
210
|
+
[回報 Bug](https://github.com/PCIRCLE-AI/claude-code-buddy/issues/new?labels=bug&template=bug_report.yml) · [功能請求](https://github.com/PCIRCLE-AI/claude-code-buddy/discussions) · [取得協助](https://github.com/PCIRCLE-AI/claude-code-buddy/issues/new)
|
|
170
211
|
|
|
171
212
|
</div>
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class GitCommandParser {
|
|
2
|
+
private static readonly TEST_FILE_PATTERNS;
|
|
3
|
+
private static readonly TEST_COMMAND_PATTERNS;
|
|
4
|
+
static isGitAdd(command: string): boolean;
|
|
5
|
+
static isGitCommit(command: string): boolean;
|
|
6
|
+
static extractCommitMessage(command: string): string | null;
|
|
7
|
+
static isTestFile(filePath: string): boolean;
|
|
8
|
+
static isTestCommand(command: string): boolean;
|
|
9
|
+
static findGitCommitSegment(command: string): string | null;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=GitCommandParser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitCommandParser.d.ts","sourceRoot":"","sources":["../../src/core/GitCommandParser.ts"],"names":[],"mappings":"AAOA,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAmC;IAG7E,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,qBAAqB,CAA2D;IAQxG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUzC,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAa5C,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAuB3D,MAAM,CAAC,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAU5C,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAY9C,MAAM,CAAC,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAc5D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export class GitCommandParser {
|
|
2
|
+
static TEST_FILE_PATTERNS = ['.test.', '.spec.', '/tests/'];
|
|
3
|
+
static TEST_COMMAND_PATTERNS = ['npm test', 'npm run test', 'vitest', 'jest', 'mocha'];
|
|
4
|
+
static isGitAdd(command) {
|
|
5
|
+
return command.trim().startsWith('git add');
|
|
6
|
+
}
|
|
7
|
+
static isGitCommit(command) {
|
|
8
|
+
return GitCommandParser.findGitCommitSegment(command) !== null;
|
|
9
|
+
}
|
|
10
|
+
static extractCommitMessage(command) {
|
|
11
|
+
const segment = GitCommandParser.findGitCommitSegment(command);
|
|
12
|
+
const source = segment ?? command;
|
|
13
|
+
const messages = [];
|
|
14
|
+
const regex = /-m\s+(?:"([^"]*)"|'([^']*)'|([^\s]+))/g;
|
|
15
|
+
let match;
|
|
16
|
+
while ((match = regex.exec(source)) !== null) {
|
|
17
|
+
const message = match[1] ?? match[2] ?? match[3];
|
|
18
|
+
if (message) {
|
|
19
|
+
messages.push(message);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return messages.length > 0 ? messages.join('\n') : null;
|
|
23
|
+
}
|
|
24
|
+
static isTestFile(filePath) {
|
|
25
|
+
return GitCommandParser.TEST_FILE_PATTERNS.some(p => filePath.includes(p));
|
|
26
|
+
}
|
|
27
|
+
static isTestCommand(command) {
|
|
28
|
+
return GitCommandParser.TEST_COMMAND_PATTERNS.some(p => command.includes(p));
|
|
29
|
+
}
|
|
30
|
+
static findGitCommitSegment(command) {
|
|
31
|
+
const segments = command
|
|
32
|
+
.split(/&&|;/)
|
|
33
|
+
.map(segment => segment.trim())
|
|
34
|
+
.filter(Boolean);
|
|
35
|
+
for (const segment of segments) {
|
|
36
|
+
if (/^git\s+commit(\s|$)/.test(segment)) {
|
|
37
|
+
return segment;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return null;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=GitCommandParser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitCommandParser.js","sourceRoot":"","sources":["../../src/core/GitCommandParser.ts"],"names":[],"mappings":"AAOA,MAAM,OAAO,gBAAgB;IAEnB,MAAM,CAAU,kBAAkB,GAAG,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAGrE,MAAM,CAAU,qBAAqB,GAAG,CAAC,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAQxG,MAAM,CAAC,QAAQ,CAAC,OAAe;QAC7B,OAAO,OAAO,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC9C,CAAC;IAQD,MAAM,CAAC,WAAW,CAAC,OAAe;QAChC,OAAO,gBAAgB,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC;IACjE,CAAC;IAWD,MAAM,CAAC,oBAAoB,CAAC,OAAe;QACzC,MAAM,OAAO,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,OAAO,IAAI,OAAO,CAAC;QAClC,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,wCAAwC,CAAC;QACvD,IAAI,KAA6B,CAAC;QAElC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC7C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;YACjD,IAAI,OAAO,EAAE,CAAC;gBACZ,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1D,CAAC;IAQD,MAAM,CAAC,UAAU,CAAC,QAAgB;QAChC,OAAO,gBAAgB,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAQD,MAAM,CAAC,aAAa,CAAC,OAAe;QAClC,OAAO,gBAAgB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,CAAC;IAUD,MAAM,CAAC,oBAAoB,CAAC,OAAe;QACzC,MAAM,QAAQ,GAAG,OAAO;aACrB,KAAK,CAAC,MAAM,CAAC;aACb,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;aAC9B,MAAM,CAAC,OAAO,CAAC,CAAC;QAEnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,OAAO,OAAO,CAAC;YACjB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC"}
|
|
@@ -34,14 +34,11 @@ export declare class HookIntegration {
|
|
|
34
34
|
private buildCheckpointDetails;
|
|
35
35
|
private ensureProjectMemoryInitialized;
|
|
36
36
|
onButlerTrigger(callback: (context: CheckpointContext) => void): void;
|
|
37
|
-
private static readonly TEST_FILE_PATTERNS;
|
|
38
|
-
private static readonly TEST_COMMAND_PATTERNS;
|
|
39
37
|
private isTestFile;
|
|
40
38
|
private isTestCommand;
|
|
41
39
|
private isGitAddCommand;
|
|
42
40
|
private isGitCommitCommand;
|
|
43
41
|
private extractGitCommitMessage;
|
|
44
|
-
private findGitCommitSegment;
|
|
45
42
|
private isValidTestResults;
|
|
46
43
|
private shouldRecordError;
|
|
47
44
|
private recordErrorFromOutput;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HookIntegration.d.ts","sourceRoot":"","sources":["../../src/core/HookIntegration.ts"],"names":[],"mappings":"AA8CA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"HookIntegration.d.ts","sourceRoot":"","sources":["../../src/core/HookIntegration.ts"],"names":[],"mappings":"AA8CA,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAyCrE,MAAM,WAAW,WAAW;IAE1B,QAAQ,EAAE,MAAM,CAAC;IAGjB,SAAS,CAAC,EAAE,OAAO,CAAC;IAGpB,OAAO,EAAE,OAAO,CAAC;IAGjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,UAAU,CAAC,EAAE,MAAM,CAAC;IAGpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA+DD,UAAU,UAAU;IAElB,IAAI,EAAE,MAAM,CAAC;IAGb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAsBD,MAAM,WAAW,iBAAiB;IAEhC,UAAU,EAAE,MAAM,CAAC;IAGnB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAG9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiCD,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,gBAAgB,CAAmD;IAC3E,OAAO,CAAC,aAAa,CAAC,CAAqB;IAC3C,OAAO,CAAC,cAAc,CAAC,CAAS;IAChC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,kBAAkB,CAAC,CAAqB;gBAmB9C,kBAAkB,EAAE,kBAAkB,EACtC,kBAAkB,CAAC,EAAE,kBAAkB;IAiDzC,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAkE7C,2BAA2B,CAC/B,QAAQ,EAAE,WAAW,GACpB,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiIvB,cAAc,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;YAiF5C,qBAAqB;IAyDnC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAA2E;YAKnG,wBAAwB;IAoCtC,OAAO,CAAC,sBAAsB;IAyC9B,OAAO,CAAC,8BAA8B;IA0DtC,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,GAAG,IAAI;IAQrE,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,eAAe;IAQvB,OAAO,CAAC,kBAAkB;IAQ1B,OAAO,CAAC,uBAAuB;IAU/B,OAAO,CAAC,kBAAkB;IAwB1B,OAAO,CAAC,iBAAiB;YAeX,qBAAqB;CAuBpC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { GitCommandParser } from './GitCommandParser.js';
|
|
1
2
|
import { logger } from '../utils/logger.js';
|
|
2
3
|
import { TestOutputParser } from './TestOutputParser.js';
|
|
3
4
|
export class HookIntegration {
|
|
@@ -216,45 +217,20 @@ export class HookIntegration {
|
|
|
216
217
|
onButlerTrigger(callback) {
|
|
217
218
|
this.triggerCallbacks.push(callback);
|
|
218
219
|
}
|
|
219
|
-
static TEST_FILE_PATTERNS = ['.test.', '.spec.', '/tests/'];
|
|
220
|
-
static TEST_COMMAND_PATTERNS = ['npm test', 'npm run test', 'vitest', 'jest', 'mocha'];
|
|
221
220
|
isTestFile(filePath) {
|
|
222
|
-
return
|
|
221
|
+
return GitCommandParser.isTestFile(filePath);
|
|
223
222
|
}
|
|
224
223
|
isTestCommand(command) {
|
|
225
|
-
return
|
|
224
|
+
return GitCommandParser.isTestCommand(command);
|
|
226
225
|
}
|
|
227
226
|
isGitAddCommand(command) {
|
|
228
|
-
return
|
|
227
|
+
return GitCommandParser.isGitAdd(command);
|
|
229
228
|
}
|
|
230
229
|
isGitCommitCommand(command) {
|
|
231
|
-
return
|
|
230
|
+
return GitCommandParser.isGitCommit(command);
|
|
232
231
|
}
|
|
233
232
|
extractGitCommitMessage(command) {
|
|
234
|
-
|
|
235
|
-
const source = segment ?? command;
|
|
236
|
-
const messages = [];
|
|
237
|
-
const regex = /-m\s+(?:"([^"]*)"|'([^']*)'|([^\s]+))/g;
|
|
238
|
-
let match;
|
|
239
|
-
while ((match = regex.exec(source)) !== null) {
|
|
240
|
-
const message = match[1] ?? match[2] ?? match[3];
|
|
241
|
-
if (message) {
|
|
242
|
-
messages.push(message);
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
return messages.length > 0 ? messages.join('\n') : null;
|
|
246
|
-
}
|
|
247
|
-
findGitCommitSegment(command) {
|
|
248
|
-
const segments = command
|
|
249
|
-
.split(/&&|;/)
|
|
250
|
-
.map(segment => segment.trim())
|
|
251
|
-
.filter(Boolean);
|
|
252
|
-
for (const segment of segments) {
|
|
253
|
-
if (/^git\s+commit(\s|$)/.test(segment)) {
|
|
254
|
-
return segment;
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
return null;
|
|
233
|
+
return GitCommandParser.extractCommitMessage(command);
|
|
258
234
|
}
|
|
259
235
|
isValidTestResults(data) {
|
|
260
236
|
if (!data || typeof data !== 'object') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HookIntegration.js","sourceRoot":"","sources":["../../src/core/HookIntegration.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HookIntegration.js","sourceRoot":"","sources":["../../src/core/HookIntegration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
export declare class EmbeddingService {
|
|
2
2
|
private static readonly DIMENSIONS;
|
|
3
3
|
private static readonly MODEL_NAME;
|
|
4
|
+
private static readonly MAX_CACHE_SIZE;
|
|
4
5
|
private extractor;
|
|
5
6
|
private initialized;
|
|
7
|
+
private cache;
|
|
6
8
|
initialize(): Promise<void>;
|
|
7
9
|
isInitialized(): boolean;
|
|
8
10
|
encode(text: string): Promise<Float32Array>;
|
|
@@ -15,6 +17,7 @@ export declare class LazyEmbeddingService {
|
|
|
15
17
|
private static instance;
|
|
16
18
|
private static initPromise;
|
|
17
19
|
static get(): Promise<EmbeddingService>;
|
|
20
|
+
static preload(): Promise<void>;
|
|
18
21
|
static dispose(): Promise<void>;
|
|
19
22
|
}
|
|
20
23
|
//# sourceMappingURL=EmbeddingService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddingService.d.ts","sourceRoot":"","sources":["../../src/embeddings/EmbeddingService.ts"],"names":[],"mappings":"AA+CA,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAO;IAGzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAG/D,OAAO,CAAC,SAAS,CAA0C;IAG3D,OAAO,CAAC,WAAW,CAAS;
|
|
1
|
+
{"version":3,"file":"EmbeddingService.d.ts","sourceRoot":"","sources":["../../src/embeddings/EmbeddingService.ts"],"names":[],"mappings":"AA+CA,qBAAa,gBAAgB;IAE3B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAO;IAGzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAG/D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAO;IAG7C,OAAO,CAAC,SAAS,CAA0C;IAG3D,OAAO,CAAC,WAAW,CAAS;IAG5B,OAAO,CAAC,KAAK,CAAmC;IAW1C,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BjC,aAAa,IAAI,OAAO;IAoBlB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA8C3C,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAiC3D,gBAAgB,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,YAAY,GAAG,MAAM;IA4B1D,aAAa,IAAI,MAAM;IAUjB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B;AAmBD,qBAAa,oBAAoB;IAE/B,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAiC;IAGxD,OAAO,CAAC,MAAM,CAAC,WAAW,CAA0C;WAYvD,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;WAgChC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;WAiBxB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAOtC"}
|
|
@@ -8,8 +8,10 @@ env.allowRemoteModels = true;
|
|
|
8
8
|
export class EmbeddingService {
|
|
9
9
|
static DIMENSIONS = 384;
|
|
10
10
|
static MODEL_NAME = 'Xenova/all-MiniLM-L6-v2';
|
|
11
|
+
static MAX_CACHE_SIZE = 500;
|
|
11
12
|
extractor = null;
|
|
12
13
|
initialized = false;
|
|
14
|
+
cache = new Map();
|
|
13
15
|
async initialize() {
|
|
14
16
|
if (this.initialized) {
|
|
15
17
|
return;
|
|
@@ -34,19 +36,32 @@ export class EmbeddingService {
|
|
|
34
36
|
if (!this.extractor) {
|
|
35
37
|
throw new Error('EmbeddingService not initialized. Call initialize() first.');
|
|
36
38
|
}
|
|
39
|
+
const cached = this.cache.get(text);
|
|
40
|
+
if (cached) {
|
|
41
|
+
return new Float32Array(cached);
|
|
42
|
+
}
|
|
37
43
|
const result = await this.extractor(text, {
|
|
38
44
|
pooling: 'mean',
|
|
39
45
|
normalize: true,
|
|
40
46
|
});
|
|
41
|
-
|
|
47
|
+
const embedding = new Float32Array(result.data);
|
|
48
|
+
if (this.cache.size >= EmbeddingService.MAX_CACHE_SIZE) {
|
|
49
|
+
const firstKey = this.cache.keys().next().value;
|
|
50
|
+
if (firstKey !== undefined)
|
|
51
|
+
this.cache.delete(firstKey);
|
|
52
|
+
}
|
|
53
|
+
this.cache.set(text, new Float32Array(embedding));
|
|
54
|
+
return embedding;
|
|
42
55
|
}
|
|
43
56
|
async encodeBatch(texts) {
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
57
|
+
const chunkSize = 10;
|
|
58
|
+
const results = [];
|
|
59
|
+
for (let i = 0; i < texts.length; i += chunkSize) {
|
|
60
|
+
const chunk = texts.slice(i, i + chunkSize);
|
|
61
|
+
const chunkResults = await Promise.all(chunk.map(text => this.encode(text)));
|
|
62
|
+
results.push(...chunkResults);
|
|
48
63
|
}
|
|
49
|
-
return
|
|
64
|
+
return results;
|
|
50
65
|
}
|
|
51
66
|
cosineSimilarity(a, b) {
|
|
52
67
|
if (a.length !== b.length) {
|
|
@@ -72,6 +87,7 @@ export class EmbeddingService {
|
|
|
72
87
|
async dispose() {
|
|
73
88
|
this.extractor = null;
|
|
74
89
|
this.initialized = false;
|
|
90
|
+
this.cache.clear();
|
|
75
91
|
logger.debug('EmbeddingService disposed');
|
|
76
92
|
}
|
|
77
93
|
}
|
|
@@ -98,6 +114,16 @@ export class LazyEmbeddingService {
|
|
|
98
114
|
}
|
|
99
115
|
return this.initPromise;
|
|
100
116
|
}
|
|
117
|
+
static async preload() {
|
|
118
|
+
try {
|
|
119
|
+
await LazyEmbeddingService.get();
|
|
120
|
+
}
|
|
121
|
+
catch (err) {
|
|
122
|
+
logger.debug('ONNX model preload failed (will load on first use)', {
|
|
123
|
+
error: err instanceof Error ? err.message : String(err),
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
}
|
|
101
127
|
static async dispose() {
|
|
102
128
|
if (this.instance) {
|
|
103
129
|
await this.instance.dispose();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../src/embeddings/EmbeddingService.ts"],"names":[],"mappings":"AA6BA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG5C,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC,WAAW,EAAE,CAAC;AAClD,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;AACtC,GAAG,CAAC,iBAAiB,GAAG,IAAI,CAAC;AAU7B,MAAM,OAAO,gBAAgB;IAEnB,MAAM,CAAU,UAAU,GAAG,GAAG,CAAC;IAGjC,MAAM,CAAU,UAAU,GAAG,yBAAyB,CAAC;IAGvD,SAAS,GAAqC,IAAI,CAAC;IAGnD,WAAW,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"EmbeddingService.js","sourceRoot":"","sources":["../../src/embeddings/EmbeddingService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type Database from 'better-sqlite3';
|
|
2
|
+
import type { VectorSearchAdapter, KnnSearchResult } from './VectorSearchAdapter.js';
|
|
3
|
+
export declare class InMemoryVectorAdapter implements VectorSearchAdapter {
|
|
4
|
+
private vectors;
|
|
5
|
+
loadExtension(_db: Database.Database): void;
|
|
6
|
+
createVectorTable(_db: Database.Database, _dimensions?: number): void;
|
|
7
|
+
insertEmbedding(_db: Database.Database, entityName: string, embedding: Float32Array, dimensions?: number): void;
|
|
8
|
+
deleteEmbedding(_db: Database.Database, entityName: string): void;
|
|
9
|
+
knnSearch(_db: Database.Database, queryEmbedding: Float32Array, k: number, dimensions?: number): KnnSearchResult[];
|
|
10
|
+
getEmbedding(_db: Database.Database, entityName: string): Float32Array | null;
|
|
11
|
+
hasEmbedding(_db: Database.Database, entityName: string): boolean;
|
|
12
|
+
getEmbeddingCount(_db: Database.Database): number;
|
|
13
|
+
private cosineDistance;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=InMemoryVectorAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryVectorAdapter.d.ts","sourceRoot":"","sources":["../../src/embeddings/InMemoryVectorAdapter.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAC3C,OAAO,KAAK,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAGrF,qBAAa,qBAAsB,YAAW,mBAAmB;IAC/D,OAAO,CAAC,OAAO,CAAmC;IAElD,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI;IAI3C,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI;IAIrE,eAAe,CACb,GAAG,EAAE,QAAQ,CAAC,QAAQ,EACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,YAAY,EACvB,UAAU,GAAE,MAAqC,GAChD,IAAI;IASP,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjE,SAAS,CACP,GAAG,EAAE,QAAQ,CAAC,QAAQ,EACtB,cAAc,EAAE,YAAY,EAC5B,CAAC,EAAE,MAAM,EACT,UAAU,GAAE,MAAqC,GAChD,eAAe,EAAE;IAkBpB,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI;IAM7E,YAAY,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAIjE,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,QAAQ,GAAG,MAAM;IAIjD,OAAO,CAAC,cAAc;CAavB"}
|