@the-magic-tower/fixhive-opencode-plugin 0.1.34 → 0.2.0-beta.2
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 +6 -7
- package/README.es.md +6 -7
- package/README.fr.md +6 -7
- package/README.ja.md +6 -7
- package/README.ko.md +5 -4
- package/README.md +108 -339
- package/README.nl.md +6 -7
- package/README.zh.md +6 -7
- package/dist/index.d.ts +5 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8018 -14093
- package/dist/plugin/index.d.ts +2 -1
- package/dist/plugin/index.d.ts.map +1 -1
- package/dist/plugin/tools.d.ts +17 -7
- package/dist/plugin/tools.d.ts.map +1 -1
- package/package.json +5 -7
- package/dist/cloud/client.d.ts +0 -44
- package/dist/cloud/client.d.ts.map +0 -1
- package/dist/cloud/embedding.d.ts +0 -43
- package/dist/cloud/embedding.d.ts.map +0 -1
- package/dist/core/error-detector.d.ts +0 -26
- package/dist/core/error-detector.d.ts.map +0 -1
- package/dist/core/hash.d.ts +0 -41
- package/dist/core/hash.d.ts.map +0 -1
- package/dist/core/privacy-filter.d.ts +0 -33
- package/dist/core/privacy-filter.d.ts.map +0 -1
- package/dist/storage/local-store.d.ts +0 -63
- package/dist/storage/local-store.d.ts.map +0 -1
- package/dist/storage/migrations.d.ts +0 -23
- package/dist/storage/migrations.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -218
- package/dist/types/index.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -21,12 +21,10 @@
|
|
|
21
21
|
<a href="https://opensource.org/licenses/MIT">
|
|
22
22
|
<img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT">
|
|
23
23
|
</a>
|
|
24
|
-
<img src="https://img.shields.io/badge/Node.js-
|
|
24
|
+
<img src="https://img.shields.io/badge/Node.js-20%20%7C%2022-green" alt="Node.js Version">
|
|
25
25
|
</p>
|
|
26
26
|
|
|
27
|
-
> Community-based Error Knowledge Sharing for OpenCode
|
|
28
|
-
|
|
29
|
-
**Latest: v0.1.34** - Fixed re-uploading already resolved errors to cloud.
|
|
27
|
+
> Community-based Error Knowledge Sharing for OpenCode (CodeCaseDB v2.0)
|
|
30
28
|
|
|
31
29
|
FixHive is an OpenCode plugin that automatically captures errors during development sessions, queries a community knowledge base for solutions, and shares resolved errors with other developers.
|
|
32
30
|
|
|
@@ -34,71 +32,66 @@ FixHive is an OpenCode plugin that automatically captures errors during developm
|
|
|
34
32
|
|
|
35
33
|
- **Auto Error Detection**: Automatically detects errors from tool outputs (bash, edit, etc.)
|
|
36
34
|
- **Cloud Knowledge Base**: Search community solutions using semantic similarity (pgvector)
|
|
37
|
-
- **
|
|
35
|
+
- **AI-Guided Normalization**: Normalize error signatures for better matching
|
|
36
|
+
- **Environment Matching**: Solutions ranked by language, framework, and package compatibility
|
|
38
37
|
- **Privacy Filtering**: Automatically redacts sensitive data (API keys, paths, emails)
|
|
39
|
-
- **
|
|
40
|
-
- **Duplicate Prevention**: Smart deduplication using embeddings and hash matching
|
|
38
|
+
- **Community Voting**: Upvote/downvote solutions to help identify the best fixes
|
|
41
39
|
|
|
42
|
-
##
|
|
40
|
+
## Upgrading from v1.x
|
|
43
41
|
|
|
44
|
-
|
|
45
|
-
npm install @the-magic-tower/fixhive-opencode-plugin
|
|
46
|
-
```
|
|
42
|
+
If you're upgrading from v1.x, please read the [Migration Guide](MIGRATION.md) for important changes:
|
|
47
43
|
|
|
48
|
-
|
|
44
|
+
- **Tool names changed**: `fixhive_search` → `fixhive_search_cases`, etc.
|
|
45
|
+
- **Local storage removed**: No more `.fixhive/` directory
|
|
46
|
+
- **Automatic device ID**: No need to set `FIXHIVE_CONTRIBUTOR_ID`
|
|
47
|
+
- **Environment matching**: Better solution ranking based on your stack
|
|
49
48
|
|
|
50
|
-
|
|
49
|
+
Quick upgrade:
|
|
51
50
|
|
|
52
51
|
```bash
|
|
53
|
-
|
|
52
|
+
# Update package
|
|
53
|
+
npm install @the-magic-tower/fixhive-opencode-plugin@latest
|
|
54
|
+
|
|
55
|
+
# Clean old data (optional)
|
|
56
|
+
rm -rf .fixhive/
|
|
57
|
+
|
|
58
|
+
# Remove old env vars (optional)
|
|
59
|
+
# FIXHIVE_CONTRIBUTOR_ID and OPENAI_API_KEY are no longer needed
|
|
54
60
|
```
|
|
55
61
|
|
|
56
|
-
|
|
62
|
+
## Installation
|
|
63
|
+
|
|
64
|
+
Add FixHive to your OpenCode configuration file (`~/.config/opencode/opencode.json` or project `opencode.json`):
|
|
57
65
|
|
|
58
66
|
```json
|
|
59
67
|
{
|
|
60
|
-
"
|
|
61
|
-
|
|
62
|
-
]
|
|
68
|
+
"$schema": "https://opencode.ai/config.json",
|
|
69
|
+
"plugin": ["@the-magic-tower/fixhive-opencode-plugin@beta"]
|
|
63
70
|
}
|
|
64
71
|
```
|
|
65
72
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
```bash
|
|
69
|
-
opencode
|
|
70
|
-
```
|
|
73
|
+
Then run OpenCode - the plugin will be automatically installed and loaded.
|
|
71
74
|
|
|
72
75
|
**That's it!** FixHive connects to the community knowledge base by default. No environment variables required.
|
|
73
76
|
|
|
74
|
-
You'll see these logs when the plugin loads successfully:
|
|
75
|
-
```
|
|
76
|
-
[FixHive] Plugin loaded
|
|
77
|
-
[FixHive] Project: /your/project/path
|
|
78
|
-
[FixHive] Cloud: enabled
|
|
79
|
-
[FixHive] Ready - use fixhive_stats to verify
|
|
80
|
-
```
|
|
81
|
-
|
|
82
77
|
## How It Works
|
|
83
78
|
|
|
84
79
|
```
|
|
85
80
|
┌─────────────────────────────────────────────────────────────────┐
|
|
86
|
-
│
|
|
81
|
+
│ FixHive Flow (v2.0) │
|
|
87
82
|
├─────────────────────────────────────────────────────────────────┤
|
|
88
83
|
│ │
|
|
89
84
|
│ 1. Error Occurs │
|
|
90
85
|
│ ↓ │
|
|
91
|
-
│ 2.
|
|
92
|
-
│ ↓ │
|
|
93
|
-
│ 3. Privacy Filter (redact API keys, paths, etc.) │
|
|
86
|
+
│ 2. AI Normalizes Error Signature │
|
|
94
87
|
│ ↓ │
|
|
95
|
-
│
|
|
88
|
+
│ 3. Cloud Search (Supabase + pgvector) │
|
|
96
89
|
│ ↓ │
|
|
97
|
-
│
|
|
90
|
+
│ 4. Environment Matching (language, framework, packages) │
|
|
98
91
|
│ ↓ │
|
|
99
|
-
│
|
|
92
|
+
│ 5. Display Ranked Solutions (similarity + votes) │
|
|
100
93
|
│ ↓ │
|
|
101
|
-
│
|
|
94
|
+
│ 6. Resolution → Upload to Community │
|
|
102
95
|
│ │
|
|
103
96
|
└─────────────────────────────────────────────────────────────────┘
|
|
104
97
|
```
|
|
@@ -111,130 +104,96 @@ Environment variables to customize behavior:
|
|
|
111
104
|
# Use your own Supabase instance instead of community
|
|
112
105
|
FIXHIVE_SUPABASE_URL=https://your-project.supabase.co
|
|
113
106
|
FIXHIVE_SUPABASE_KEY=your-anon-key
|
|
114
|
-
|
|
115
|
-
# Enable semantic search (recommended)
|
|
116
|
-
OPENAI_API_KEY=sk-...
|
|
117
|
-
|
|
118
|
-
# Custom contributor ID (auto-generated if not set)
|
|
119
|
-
FIXHIVE_CONTRIBUTOR_ID=your-contributor-id
|
|
120
107
|
```
|
|
121
108
|
|
|
122
109
|
| Variable | Default | Description |
|
|
123
110
|
|----------|---------|-------------|
|
|
124
111
|
| `FIXHIVE_SUPABASE_URL` | Community DB | Your Supabase project URL |
|
|
125
112
|
| `FIXHIVE_SUPABASE_KEY` | Community Key | Your Supabase anon key |
|
|
126
|
-
| `OPENAI_API_KEY` | None | Enables semantic similarity search |
|
|
127
|
-
| `FIXHIVE_CONTRIBUTOR_ID` | Auto-generated | Your unique contributor ID |
|
|
128
113
|
|
|
129
114
|
## Available Tools
|
|
130
115
|
|
|
131
|
-
### `
|
|
116
|
+
### `fixhive_search_cases`
|
|
132
117
|
|
|
133
118
|
Search the knowledge base for error solutions.
|
|
134
119
|
|
|
135
120
|
```typescript
|
|
136
121
|
// Arguments
|
|
137
122
|
{
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
123
|
+
error_message: string; // Required: The error message to search for
|
|
124
|
+
error_signature?: string; // Optional: Normalized signature with placeholders
|
|
125
|
+
language?: string; // Optional: Programming language (typescript, python, etc.)
|
|
126
|
+
framework?: string; // Optional: Framework (react, nextjs, express, etc.)
|
|
127
|
+
packages?: object; // Optional: Key dependencies with versions
|
|
128
|
+
limit?: number; // Optional: Maximum results (default: 5)
|
|
142
129
|
}
|
|
143
130
|
```
|
|
144
131
|
|
|
145
132
|
**Example:**
|
|
146
133
|
```
|
|
147
|
-
|
|
134
|
+
fixhive_search_cases error_message="Cannot find module 'react'" language="typescript" framework="nextjs"
|
|
148
135
|
```
|
|
149
136
|
|
|
150
|
-
### `
|
|
137
|
+
### `fixhive_report_resolution`
|
|
151
138
|
|
|
152
|
-
|
|
139
|
+
Report an error resolution to the community.
|
|
153
140
|
|
|
154
141
|
```typescript
|
|
155
142
|
// Arguments
|
|
156
143
|
{
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
144
|
+
error_message: string; // Required: Original error message
|
|
145
|
+
error_signature: string; // Required: Normalized signature
|
|
146
|
+
solution?: string; // Optional: How the error was resolved
|
|
147
|
+
cause?: string; // Optional: Root cause of the error
|
|
148
|
+
solution_steps?: string[]; // Optional: Step-by-step resolution
|
|
149
|
+
code_diff?: string; // Optional: Code changes that fixed the issue
|
|
150
|
+
language?: string; // Optional: Programming language
|
|
151
|
+
framework?: string; // Optional: Framework
|
|
152
|
+
packages?: object; // Optional: Key dependencies
|
|
153
|
+
used_variant_id?: string; // Optional: If existing solution helped
|
|
161
154
|
}
|
|
162
155
|
```
|
|
163
156
|
|
|
164
157
|
**Example:**
|
|
165
158
|
```
|
|
166
|
-
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### `fixhive_list`
|
|
170
|
-
|
|
171
|
-
List errors detected in the current session.
|
|
172
|
-
|
|
173
|
-
```typescript
|
|
174
|
-
// Arguments
|
|
175
|
-
{
|
|
176
|
-
status?: 'unresolved' | 'resolved' | 'uploaded'; // Optional: Filter by status
|
|
177
|
-
limit?: number; // Optional: Maximum results (default: 10)
|
|
178
|
-
}
|
|
159
|
+
fixhive_report_resolution error_message="Cannot find module 'react'" error_signature="Cannot find module '{module}'" solution="Added dependency to package.json"
|
|
179
160
|
```
|
|
180
161
|
|
|
181
162
|
### `fixhive_vote`
|
|
182
163
|
|
|
183
|
-
|
|
164
|
+
Vote on a solution's quality.
|
|
184
165
|
|
|
185
166
|
```typescript
|
|
186
167
|
// Arguments
|
|
187
168
|
{
|
|
188
|
-
|
|
189
|
-
|
|
169
|
+
variant_id: string; // Required: The variant ID to vote on
|
|
170
|
+
value: 'up' | 'down' | 'report'; // Required: Vote type
|
|
171
|
+
reason?: string; // Required when reporting: Explain why
|
|
190
172
|
}
|
|
191
173
|
```
|
|
192
174
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
View usage statistics.
|
|
196
|
-
|
|
197
|
-
```typescript
|
|
198
|
-
// No arguments required
|
|
175
|
+
**Example:**
|
|
199
176
|
```
|
|
200
|
-
|
|
201
|
-
**Output:**
|
|
202
|
-
```markdown
|
|
203
|
-
## FixHive Statistics
|
|
204
|
-
|
|
205
|
-
### Local
|
|
206
|
-
- Errors recorded: 42
|
|
207
|
-
- Resolved: 38
|
|
208
|
-
- Uploaded: 25
|
|
209
|
-
|
|
210
|
-
### Community Contributions
|
|
211
|
-
- Solutions shared: 25
|
|
212
|
-
- Times your solutions helped: 156
|
|
213
|
-
- Total upvotes received: 89
|
|
177
|
+
fixhive_vote variant_id="abc123" value="up"
|
|
214
178
|
```
|
|
215
179
|
|
|
216
|
-
|
|
180
|
+
## Error Signature Normalization
|
|
217
181
|
|
|
218
|
-
|
|
182
|
+
When searching or reporting errors, normalize the message by replacing variable parts with placeholders:
|
|
219
183
|
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
{
|
|
223
|
-
|
|
224
|
-
}
|
|
225
|
-
|
|
184
|
+
| Target | Placeholder | Example |
|
|
185
|
+
|--------|-------------|---------|
|
|
186
|
+
| Class names | `{class}` | `UserController` → `{class}` |
|
|
187
|
+
| File names | `{file}` | `index.ts:42` → `{file}:{id}` |
|
|
188
|
+
| Numeric IDs | `{id}` | `user_id: 12345` → `user_id: {id}` |
|
|
189
|
+
| UUIDs | `{uuid}` | `550e8400-e29b-...` → `{uuid}` |
|
|
190
|
+
| Timestamps | `{timestamp}` | `2024-01-15T10:30:00Z` → `{timestamp}` |
|
|
191
|
+
| File paths | `{path}` | `/home/user/project/` → `{path}` |
|
|
192
|
+
| DB identifiers | `{table}.{column}` | `users.email` → `{table}.{column}` |
|
|
193
|
+
| Routes | `{route}` | `/api/users/123` → `{route}` |
|
|
194
|
+
| Views | `{view}` | `admin.users.index` → `{view}` |
|
|
226
195
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
Report inappropriate content.
|
|
230
|
-
|
|
231
|
-
```typescript
|
|
232
|
-
// Arguments
|
|
233
|
-
{
|
|
234
|
-
knowledgeId: string; // Required: Knowledge entry ID to report
|
|
235
|
-
reason?: string; // Optional: Reason for reporting
|
|
236
|
-
}
|
|
237
|
-
```
|
|
196
|
+
**Keep unchanged**: Framework classes, error codes (`SQLSTATE`, `TypeError`), package names
|
|
238
197
|
|
|
239
198
|
## Example Workflow
|
|
240
199
|
|
|
@@ -243,19 +202,16 @@ Report inappropriate content.
|
|
|
243
202
|
$ npm run build
|
|
244
203
|
> error TS2307: Cannot find module '@/components/Button'
|
|
245
204
|
|
|
246
|
-
2.
|
|
247
|
-
|
|
248
|
-
- Records it locally
|
|
249
|
-
- Searches for solutions
|
|
250
|
-
- Displays matching community solutions
|
|
205
|
+
2. Search for solutions
|
|
206
|
+
fixhive_search_cases error_message="error TS2307: Cannot find module '@/components/Button'" error_signature="error TS2307: Cannot find module '{path}'" language="typescript" framework="nextjs"
|
|
251
207
|
|
|
252
|
-
3. Apply the
|
|
253
|
-
$ npm install @/components/Button --save
|
|
208
|
+
3. Apply the top-ranked solution
|
|
254
209
|
|
|
255
|
-
4.
|
|
256
|
-
|
|
210
|
+
4. Report your resolution
|
|
211
|
+
fixhive_report_resolution error_message="..." error_signature="error TS2307: Cannot find module '{path}'" solution="Added path alias in tsconfig.json"
|
|
257
212
|
|
|
258
|
-
5.
|
|
213
|
+
5. Vote on solutions that helped
|
|
214
|
+
fixhive_vote variant_id="abc123" value="up"
|
|
259
215
|
```
|
|
260
216
|
|
|
261
217
|
## Privacy
|
|
@@ -267,7 +223,7 @@ FixHive automatically filters sensitive information before sharing:
|
|
|
267
223
|
| API Keys | `sk-abc123...`, `ghp_xxx...` | `[API_KEY_REDACTED]` |
|
|
268
224
|
| Tokens | `Bearer eyJ...`, `xoxb-...` | `[TOKEN_REDACTED]` |
|
|
269
225
|
| Emails | `user@example.com` | `[EMAIL_REDACTED]` |
|
|
270
|
-
| Paths | `/Users/john/projects/...` |
|
|
226
|
+
| Paths | `/Users/john/projects/...` | `[PATH_REDACTED]` |
|
|
271
227
|
| Env Vars | `DATABASE_URL=postgres://...` | `[ENV_REDACTED]` |
|
|
272
228
|
| Connection Strings | `mongodb://user:pass@...` | `[CONNECTION_STRING_REDACTED]` |
|
|
273
229
|
| IP Addresses | `192.168.1.100` | `[IP_REDACTED]` |
|
|
@@ -290,7 +246,7 @@ CREATE EXTENSION IF NOT EXISTS vector;
|
|
|
290
246
|
|
|
291
247
|
### 3. Run Setup Script
|
|
292
248
|
|
|
293
|
-
Copy and run the contents of `scripts/setup-
|
|
249
|
+
Copy and run the contents of `scripts/setup-codecasedb-v2.sql` in the SQL Editor.
|
|
294
250
|
|
|
295
251
|
### 4. Configure Environment
|
|
296
252
|
|
|
@@ -305,216 +261,34 @@ FIXHIVE_SUPABASE_KEY=your-anon-key
|
|
|
305
261
|
```
|
|
306
262
|
@the-magic-tower/fixhive-opencode-plugin
|
|
307
263
|
├── src/
|
|
308
|
-
│ ├──
|
|
309
|
-
│
|
|
310
|
-
│
|
|
311
|
-
│
|
|
312
|
-
│
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
│ ├── cloud/
|
|
319
|
-
│ │ ├── client.ts # Supabase client
|
|
320
|
-
│ │ └── embedding.ts # OpenAI embeddings
|
|
321
|
-
│ └── types/
|
|
322
|
-
│ ├── index.ts # TypeScript definitions
|
|
323
|
-
│ └── bun-sqlite.d.ts # Bun SQLite type declarations
|
|
324
|
-
└── scripts/
|
|
325
|
-
└── setup-supabase.sql # Cloud schema
|
|
264
|
+
│ ├── index.ts # Main exports
|
|
265
|
+
│ └── plugin/
|
|
266
|
+
│ ├── index.ts # Plugin definition (hooks)
|
|
267
|
+
│ └── tools.ts # Custom tools (3 tools)
|
|
268
|
+
│
|
|
269
|
+
└── Shared Package (@the-magic-tower/fixhive-shared)
|
|
270
|
+
├── types/ # CaseGroup, CaseVariant, Resolution, Vote
|
|
271
|
+
├── device/ # device_id management
|
|
272
|
+
├── cloud/ # Supabase client, ranking algorithm
|
|
273
|
+
└── utils/ # hash, privacy filtering
|
|
326
274
|
```
|
|
327
275
|
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
FixHive automatically detects the runtime environment and uses the appropriate SQLite implementation:
|
|
331
|
-
|
|
332
|
-
| Runtime | SQLite Implementation |
|
|
333
|
-
|---------|----------------------|
|
|
334
|
-
| Bun | `bun:sqlite` (native) |
|
|
335
|
-
| Node.js | `better-sqlite3` |
|
|
276
|
+
## Device Identification
|
|
336
277
|
|
|
337
|
-
|
|
278
|
+
FixHive uses a persistent device ID stored in `~/.codecasedb/device_id`. This ID:
|
|
279
|
+
- Is automatically generated on first use (UUID v4)
|
|
280
|
+
- Persists across sessions and projects
|
|
281
|
+
- Does not contain any personal information
|
|
282
|
+
- Used for vote deduplication and contribution tracking
|
|
338
283
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
```typescript
|
|
342
|
-
import type {
|
|
343
|
-
LocalErrorRecord,
|
|
344
|
-
CloudKnowledgeEntry,
|
|
345
|
-
ErrorType,
|
|
346
|
-
ErrorStatus,
|
|
347
|
-
Language,
|
|
348
|
-
Severity,
|
|
349
|
-
} from '@the-magic-tower/fixhive-opencode-plugin';
|
|
350
|
-
|
|
351
|
-
// Error types
|
|
352
|
-
type ErrorType =
|
|
353
|
-
| 'runtime' | 'build' | 'lint' | 'test'
|
|
354
|
-
| 'network' | 'permission' | 'dependency'
|
|
355
|
-
| 'syntax' | 'type_error' | 'unknown';
|
|
356
|
-
|
|
357
|
-
// Error status
|
|
358
|
-
type ErrorStatus = 'unresolved' | 'resolved' | 'uploaded';
|
|
359
|
-
|
|
360
|
-
// Supported languages
|
|
361
|
-
type Language =
|
|
362
|
-
| 'typescript' | 'javascript' | 'python' | 'rust'
|
|
363
|
-
| 'go' | 'java' | 'ruby' | 'php' | 'csharp' | 'cpp' | 'other';
|
|
364
|
-
```
|
|
284
|
+
## Ranking Algorithm
|
|
365
285
|
|
|
366
|
-
|
|
286
|
+
Solutions are ranked using:
|
|
367
287
|
|
|
368
|
-
```typescript
|
|
369
|
-
import {
|
|
370
|
-
ErrorDetector,
|
|
371
|
-
PrivacyFilter,
|
|
372
|
-
LocalStore,
|
|
373
|
-
CloudClient,
|
|
374
|
-
createEmbeddingService,
|
|
375
|
-
} from '@the-magic-tower/fixhive-opencode-plugin';
|
|
376
|
-
|
|
377
|
-
// Create instances
|
|
378
|
-
const detector = new ErrorDetector();
|
|
379
|
-
const filter = new PrivacyFilter();
|
|
380
|
-
const store = new LocalStore('/path/to/project');
|
|
381
|
-
const cloud = new CloudClient({
|
|
382
|
-
supabaseUrl: 'https://xxx.supabase.co',
|
|
383
|
-
supabaseAnonKey: 'your-key',
|
|
384
|
-
});
|
|
385
|
-
|
|
386
|
-
// Detect errors
|
|
387
|
-
const result = detector.detect({
|
|
388
|
-
tool: 'bash',
|
|
389
|
-
output: 'error TS2307: Cannot find module...',
|
|
390
|
-
exitCode: 1,
|
|
391
|
-
});
|
|
392
|
-
|
|
393
|
-
// Sanitize content
|
|
394
|
-
const sanitized = filter.sanitize('API key: sk-abc123...');
|
|
395
|
-
// { sanitized: 'API key: [API_KEY_REDACTED]', redactedCount: 1, ... }
|
|
396
|
-
|
|
397
|
-
// Search solutions
|
|
398
|
-
const solutions = await cloud.searchSimilar({
|
|
399
|
-
errorMessage: 'Module not found',
|
|
400
|
-
language: 'typescript',
|
|
401
|
-
});
|
|
402
288
|
```
|
|
289
|
+
final_score = env_match × 0.4 + success_rate × 0.3 + vote_score × 0.2 + report_factor × 0.1
|
|
403
290
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
### Upgrade Plugin Version
|
|
407
|
-
|
|
408
|
-
If you're experiencing issues with an older version of FixHive, follow these steps to upgrade:
|
|
409
|
-
|
|
410
|
-
#### 1. Check Current Version
|
|
411
|
-
|
|
412
|
-
Run OpenCode and check the startup logs:
|
|
413
|
-
```bash
|
|
414
|
-
opencode
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
Look for:
|
|
418
|
-
```
|
|
419
|
-
[FixHive] Plugin loaded
|
|
420
|
-
```
|
|
421
|
-
|
|
422
|
-
#### 2. Clear OpenCode Cache
|
|
423
|
-
|
|
424
|
-
Remove the cached plugin files and reinstall:
|
|
425
|
-
|
|
426
|
-
```bash
|
|
427
|
-
# Method 1: Clear FixHive cache only
|
|
428
|
-
rm -rf ~/.cache/opencode/node_modules/@the-magic-tower*
|
|
429
|
-
|
|
430
|
-
# Method 2: Clear entire OpenCode cache (if above doesn't work)
|
|
431
|
-
rm -rf ~/.cache/opencode/node_modules/
|
|
432
|
-
```
|
|
433
|
-
|
|
434
|
-
#### 3. Reinstall Plugin
|
|
435
|
-
|
|
436
|
-
Navigate to your project directory and reinstall:
|
|
437
|
-
|
|
438
|
-
```bash
|
|
439
|
-
cd /your/project/path
|
|
440
|
-
npm install @the-magic-tower/fixhive-opencode-plugin@latest
|
|
441
|
-
```
|
|
442
|
-
|
|
443
|
-
#### 4. Restart OpenCode
|
|
444
|
-
|
|
445
|
-
```bash
|
|
446
|
-
opencode
|
|
447
|
-
```
|
|
448
|
-
|
|
449
|
-
You should see updated logs with the latest version:
|
|
450
|
-
```
|
|
451
|
-
[FixHive] Plugin loaded
|
|
452
|
-
[FixHive] Project: /your/project/path
|
|
453
|
-
[FixHive] Cloud: enabled
|
|
454
|
-
[FixHive] Ready - use fixhive_stats to verify
|
|
455
|
-
```
|
|
456
|
-
|
|
457
|
-
#### 5. Verify Installation
|
|
458
|
-
|
|
459
|
-
Run the stats command to verify:
|
|
460
|
-
```typescript
|
|
461
|
-
fixhive_stats
|
|
462
|
-
```
|
|
463
|
-
|
|
464
|
-
This will show you the current local statistics. If you're using the cloud features, check that the connection is working properly.
|
|
465
|
-
|
|
466
|
-
### Verify Plugin is Working
|
|
467
|
-
|
|
468
|
-
When the plugin loads successfully, you'll see:
|
|
469
|
-
```
|
|
470
|
-
[FixHive] Plugin loaded
|
|
471
|
-
[FixHive] Project: /your/project/path
|
|
472
|
-
[FixHive] Cloud: enabled
|
|
473
|
-
[FixHive] Detected: typescript
|
|
474
|
-
[FixHive] Ready - use fixhive_stats to verify
|
|
475
|
-
```
|
|
476
|
-
|
|
477
|
-
All 7 tools should be available:
|
|
478
|
-
- `fixhive_search`, `fixhive_resolve`, `fixhive_list`, `fixhive_vote`, `fixhive_report`, `fixhive_stats`, `fixhive_helpful`
|
|
479
|
-
|
|
480
|
-
### Plugin not loading
|
|
481
|
-
|
|
482
|
-
Make sure you're using OpenCode v1.1.1 or later:
|
|
483
|
-
```bash
|
|
484
|
-
npm list @opencode-ai/plugin
|
|
485
|
-
```
|
|
486
|
-
|
|
487
|
-
If you have an old cached version, clear the cache and restart:
|
|
488
|
-
```bash
|
|
489
|
-
rm -rf ~/.cache/opencode/node_modules/@the-magic-tower*
|
|
490
|
-
opencode
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
### No solutions found
|
|
494
|
-
|
|
495
|
-
1. Check if you have `OPENAI_API_KEY` set for semantic search
|
|
496
|
-
2. Try broader search terms
|
|
497
|
-
3. The community database may not have solutions for rare errors yet
|
|
498
|
-
|
|
499
|
-
### Privacy concerns
|
|
500
|
-
|
|
501
|
-
FixHive automatically filters sensitive data, but you can disable cloud sync:
|
|
502
|
-
```typescript
|
|
503
|
-
fixhive_resolve <error-id> "My resolution" --upload false
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
### SQLite errors
|
|
507
|
-
|
|
508
|
-
Clear local database:
|
|
509
|
-
```bash
|
|
510
|
-
rm -rf .fixhive/
|
|
511
|
-
```
|
|
512
|
-
|
|
513
|
-
### Connection errors
|
|
514
|
-
|
|
515
|
-
Check your network and Supabase status:
|
|
516
|
-
```bash
|
|
517
|
-
curl https://your-project.supabase.co/rest/v1/
|
|
291
|
+
env_match = language_match × 0.4 + framework_match × 0.4 + packages_overlap × 0.2
|
|
518
292
|
```
|
|
519
293
|
|
|
520
294
|
## Development
|
|
@@ -523,7 +297,7 @@ curl https://your-project.supabase.co/rest/v1/
|
|
|
523
297
|
# Install dependencies
|
|
524
298
|
npm install
|
|
525
299
|
|
|
526
|
-
# Build
|
|
300
|
+
# Build (requires Bun)
|
|
527
301
|
npm run build
|
|
528
302
|
|
|
529
303
|
# Watch mode
|
|
@@ -539,14 +313,6 @@ npm test
|
|
|
539
313
|
npm run test:coverage
|
|
540
314
|
```
|
|
541
315
|
|
|
542
|
-
### Test Coverage
|
|
543
|
-
|
|
544
|
-
| Module | Coverage |
|
|
545
|
-
|--------|----------|
|
|
546
|
-
| Core (error-detector, privacy-filter, hash) | 99% |
|
|
547
|
-
| Storage (local-store) | 98% |
|
|
548
|
-
| Cloud (client, embedding) | 96% |
|
|
549
|
-
|
|
550
316
|
## Contributing
|
|
551
317
|
|
|
552
318
|
1. Fork the repository
|
|
@@ -570,10 +336,13 @@ See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
|
570
336
|
|
|
571
337
|
MIT - see [LICENSE](LICENSE) for details.
|
|
572
338
|
|
|
339
|
+
## Related Packages
|
|
340
|
+
|
|
341
|
+
- [@the-magic-tower/fixhive-shared](https://github.com/TheMagicTower/fixhive-shared) - Shared utilities
|
|
342
|
+
- [@the-magic-tower/fixhive-claude-code](https://github.com/TheMagicTower/FixHiveMono) - Claude Code plugin
|
|
343
|
+
|
|
573
344
|
## Acknowledgments
|
|
574
345
|
|
|
575
346
|
- [OpenCode](https://github.com/opencode-ai/opencode) - AI coding assistant
|
|
576
347
|
- [Supabase](https://supabase.com) - Backend as a Service
|
|
577
348
|
- [pgvector](https://github.com/pgvector/pgvector) - Vector similarity search
|
|
578
|
-
- [better-sqlite3](https://github.com/WiseLibs/better-sqlite3) - Fast SQLite bindings (Node.js)
|
|
579
|
-
- [Bun](https://bun.sh) - Fast JavaScript runtime with native SQLite support
|
package/README.nl.md
CHANGED
|
@@ -33,14 +33,13 @@ npm install @the-magic-tower/fixhive-opencode-plugin
|
|
|
33
33
|
|
|
34
34
|
## Snelstart
|
|
35
35
|
|
|
36
|
-
Voeg toe aan uw OpenCode-configuratie (
|
|
36
|
+
Voeg toe aan uw OpenCode-configuratie (`~/.config/opencode/opencode.json`):
|
|
37
37
|
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
};
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"$schema": "https://opencode.ai/config.json",
|
|
41
|
+
"plugin": ["@the-magic-tower/fixhive-opencode-plugin@beta"]
|
|
42
|
+
}
|
|
44
43
|
```
|
|
45
44
|
|
|
46
45
|
**Dat is alles!** FixHive maakt standaard verbinding met de community-kennisbank. Geen omgevingsvariabelen vereist.
|
package/README.zh.md
CHANGED
|
@@ -33,14 +33,13 @@ npm install @the-magic-tower/fixhive-opencode-plugin
|
|
|
33
33
|
|
|
34
34
|
## 快速开始
|
|
35
35
|
|
|
36
|
-
添加到 OpenCode
|
|
36
|
+
添加到 OpenCode 配置文件(`~/.config/opencode/opencode.json`):
|
|
37
37
|
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
};
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"$schema": "https://opencode.ai/config.json",
|
|
41
|
+
"plugin": ["@the-magic-tower/fixhive-opencode-plugin@beta"]
|
|
42
|
+
}
|
|
44
43
|
```
|
|
45
44
|
|
|
46
45
|
**完成!** FixHive 默认连接到社区知识库。无需设置环境变量。
|