@the-magic-tower/fixhive-opencode-plugin 0.1.13 → 0.1.15

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.
@@ -0,0 +1,11 @@
1
+ /**
2
+ * FixHive OpenCode Plugin
3
+ * Community-based error knowledge sharing plugin for OpenCode
4
+ */
5
+ import type { Plugin } from '@opencode-ai/plugin';
6
+ /**
7
+ * FixHive Plugin Factory
8
+ */
9
+ export declare const FixHivePlugin: Plugin;
10
+ export default FixHivePlugin;
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAuBlD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MA8I3B,CAAC;AAoJF,eAAe,aAAa,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * FixHive Custom Tools
3
+ * OpenCode plugin tools for error knowledge management
4
+ */
5
+ import { tool } from '@opencode-ai/plugin';
6
+ import type { LocalStore } from '../storage/local-store.js';
7
+ import type { CloudClient } from '../cloud/client.js';
8
+ import type { PrivacyFilter } from '../core/privacy-filter.js';
9
+ import type { FixHiveContext } from '../types/index.js';
10
+ /**
11
+ * Create FixHive tools for OpenCode plugin
12
+ * @returns Record of tool definitions
13
+ */
14
+ export declare function createTools(localStore: LocalStore, cloudClient: CloudClient, privacyFilter: PrivacyFilter, context: FixHiveContext): Record<string, ReturnType<typeof tool>>;
15
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/plugin/tools.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAyC,MAAM,mBAAmB,CAAC;AAE/F;;;GAGG;AACH,wBAAgB,WAAW,CACzB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,WAAW,EACxB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,cAAc,GACtB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAoOzC"}
@@ -0,0 +1,98 @@
1
+ /**
2
+ * FixHive Local Store
3
+ * SQLite-based local storage for error records and caching
4
+ */
5
+ import Database from 'better-sqlite3';
6
+ import type { LocalErrorRecord, ErrorStatus, LocalStats, CloudKnowledgeEntry } from '../types/index.js';
7
+ /**
8
+ * Local Store Class
9
+ * Manages SQLite database for error records and caching
10
+ */
11
+ export declare class LocalStore {
12
+ private db;
13
+ constructor(projectDirectory: string);
14
+ /**
15
+ * Create a new error record
16
+ */
17
+ createErrorRecord(data: Omit<LocalErrorRecord, 'id' | 'errorHash' | 'status' | 'createdAt'>): LocalErrorRecord;
18
+ /**
19
+ * Get error record by ID
20
+ */
21
+ getErrorById(id: string): LocalErrorRecord | null;
22
+ /**
23
+ * Get errors by session
24
+ */
25
+ getSessionErrors(sessionId: string, options?: {
26
+ status?: ErrorStatus;
27
+ limit?: number;
28
+ }): LocalErrorRecord[];
29
+ /**
30
+ * Get unresolved errors for a session
31
+ */
32
+ getUnresolvedErrors(sessionId: string): LocalErrorRecord[];
33
+ /**
34
+ * Get recent errors across all sessions
35
+ */
36
+ getRecentErrors(limit?: number): LocalErrorRecord[];
37
+ /**
38
+ * Mark error as resolved
39
+ */
40
+ markResolved(id: string, data: {
41
+ resolution: string;
42
+ resolutionCode?: string;
43
+ }): LocalErrorRecord | null;
44
+ /**
45
+ * Mark error as uploaded to cloud
46
+ */
47
+ markUploaded(id: string, cloudKnowledgeId: string): void;
48
+ /**
49
+ * Find similar errors by hash
50
+ */
51
+ findSimilarErrors(errorHash: string): LocalErrorRecord[];
52
+ /**
53
+ * Get cached query results
54
+ */
55
+ getCachedResults(errorHash: string): CloudKnowledgeEntry[] | null;
56
+ /**
57
+ * Cache query results
58
+ */
59
+ cacheResults(errorHash: string, results: CloudKnowledgeEntry[], expirationMs?: number): void;
60
+ /**
61
+ * Clear expired cache entries
62
+ */
63
+ clearExpiredCache(): number;
64
+ /**
65
+ * Get usage statistics
66
+ */
67
+ getStats(): LocalStats;
68
+ /**
69
+ * Allowed stat column names for incrementStat (whitelist to prevent SQL injection)
70
+ */
71
+ private static readonly ALLOWED_STATS;
72
+ /**
73
+ * Increment a stat counter
74
+ * @throws Error if stat name is not in the allowed whitelist
75
+ */
76
+ private incrementStat;
77
+ /**
78
+ * Get preference value
79
+ */
80
+ getPreference(key: string): string | null;
81
+ /**
82
+ * Set preference value
83
+ */
84
+ setPreference(key: string, value: string): void;
85
+ /**
86
+ * Convert database row to LocalErrorRecord
87
+ */
88
+ private rowToRecord;
89
+ /**
90
+ * Close database connection
91
+ */
92
+ close(): void;
93
+ /**
94
+ * Get database for advanced queries
95
+ */
96
+ getDatabase(): Database.Database;
97
+ }
98
+ //# sourceMappingURL=local-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/storage/local-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AAItC,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAI3B;;;GAGG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,EAAE,CAAoB;gBAElB,gBAAgB,EAAE,MAAM;IAoBpC;;OAEG;IACH,iBAAiB,CACf,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC,GACxE,gBAAgB;IAiCnB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI;IAMjD;;OAEG;IACH,gBAAgB,CACd,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GACjD,gBAAgB,EAAE;IAoBrB;;OAEG;IACH,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE;IAI1D;;OAEG;IACH,eAAe,CAAC,KAAK,GAAE,MAAW,GAAG,gBAAgB,EAAE;IAOvD;;OAEG;IACH,YAAY,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GACpD,gBAAgB,GAAG,IAAI;IAoB1B;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI;IAgBxD;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE;IASxD;;OAEG;IACH,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE,GAAG,IAAI;IAcjE;;OAEG;IACH,YAAY,CACV,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,YAAY,GAAE,MAAgB,GAC7B,IAAI;IAeP;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAQ3B;;OAEG;IACH,QAAQ,IAAI,UAAU;IAiBtB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAK1B;IAEX;;;OAGG;IACH,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAMzC;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAS/C;;OAEG;IACH,OAAO,CAAC,WAAW;IAsBnB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,WAAW,IAAI,QAAQ,CAAC,QAAQ;CAGjC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * FixHive Database Migrations
3
+ * SQLite schema setup and migrations
4
+ */
5
+ import type Database from 'better-sqlite3';
6
+ /**
7
+ * Run all migrations on the database
8
+ */
9
+ export declare function runMigrations(db: Database.Database): void;
10
+ //# sourceMappingURL=migrations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/storage/migrations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,QAAQ,MAAM,gBAAgB,CAAC;AAE3C;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAsBzD"}
@@ -0,0 +1,218 @@
1
+ /**
2
+ * FixHive Type Definitions
3
+ * Community-based error knowledge sharing for OpenCode
4
+ */
5
+ export type ErrorType = 'runtime' | 'build' | 'lint' | 'test' | 'network' | 'permission' | 'dependency' | 'syntax' | 'type_error' | 'unknown';
6
+ export type ErrorStatus = 'unresolved' | 'resolved' | 'uploaded';
7
+ export type Language = 'typescript' | 'javascript' | 'python' | 'rust' | 'go' | 'java' | 'ruby' | 'php' | 'csharp' | 'cpp' | 'other';
8
+ export type Severity = 'critical' | 'error' | 'warning';
9
+ export interface LocalErrorRecord {
10
+ id: string;
11
+ errorHash: string;
12
+ errorType: ErrorType;
13
+ errorMessage: string;
14
+ errorStack?: string;
15
+ language?: Language;
16
+ framework?: string;
17
+ toolName: string;
18
+ toolInput: Record<string, unknown>;
19
+ sessionId: string;
20
+ status: ErrorStatus;
21
+ resolution?: string;
22
+ resolutionCode?: string;
23
+ createdAt: string;
24
+ resolvedAt?: string;
25
+ uploadedAt?: string;
26
+ cloudKnowledgeId?: string;
27
+ }
28
+ export interface QueryCacheEntry {
29
+ id: string;
30
+ errorHash: string;
31
+ results: CloudKnowledgeEntry[];
32
+ createdAt: string;
33
+ expiresAt: string;
34
+ }
35
+ export interface LocalStats {
36
+ totalErrors: number;
37
+ resolvedErrors: number;
38
+ uploadedErrors: number;
39
+ }
40
+ export interface CloudKnowledgeEntry {
41
+ id: string;
42
+ errorHash: string;
43
+ errorType: ErrorType;
44
+ errorMessage: string;
45
+ errorStack?: string;
46
+ language: Language;
47
+ framework?: string;
48
+ dependencies?: Record<string, string>;
49
+ embedding?: number[];
50
+ resolutionDescription: string;
51
+ resolutionCode?: string;
52
+ resolutionSteps?: string[];
53
+ contributorId: string;
54
+ upvotes: number;
55
+ downvotes: number;
56
+ usageCount: number;
57
+ createdAt: string;
58
+ updatedAt: string;
59
+ isVerified: boolean;
60
+ similarity?: number;
61
+ }
62
+ export interface DuplicateCheckResult {
63
+ isDuplicate: boolean;
64
+ existingId?: string;
65
+ similarityScore: number;
66
+ }
67
+ export interface ContributorStats {
68
+ contributionCount: number;
69
+ helpedCount: number;
70
+ totalUpvotes: number;
71
+ }
72
+ export interface DetectedSignal {
73
+ type: 'exit_code' | 'stderr' | 'pattern' | 'stack_trace';
74
+ weight: number;
75
+ value: string | number;
76
+ description: string;
77
+ }
78
+ export interface ErrorDetectionResult {
79
+ detected: boolean;
80
+ confidence: number;
81
+ errorType: ErrorType;
82
+ severity: Severity;
83
+ signals: DetectedSignal[];
84
+ errorMessage: string;
85
+ errorStack?: string;
86
+ rawOutput: string;
87
+ }
88
+ export interface StackFrame {
89
+ function: string;
90
+ file: string;
91
+ line: number;
92
+ column?: number;
93
+ isProjectCode: boolean;
94
+ }
95
+ export interface StackTraceInfo {
96
+ hasStackTrace: boolean;
97
+ language: string | null;
98
+ frames: string[];
99
+ }
100
+ export interface FixHiveContext {
101
+ sessionId: string;
102
+ projectDirectory: string;
103
+ language?: Language;
104
+ framework?: string;
105
+ }
106
+ export interface ToolOutput {
107
+ tool: string;
108
+ output: string;
109
+ exitCode?: number;
110
+ stderr?: string;
111
+ metadata?: Record<string, unknown>;
112
+ }
113
+ export interface PrivacyFilterRule {
114
+ name: string;
115
+ category: 'secret' | 'identity' | 'infrastructure' | 'path' | 'environment';
116
+ pattern: RegExp;
117
+ replacement: string | ((match: string, ...groups: string[]) => string);
118
+ priority: number;
119
+ }
120
+ export interface SanitizedContent {
121
+ original: string;
122
+ sanitized: string;
123
+ redactedCount: number;
124
+ appliedFilters: string[];
125
+ }
126
+ export interface FilterContext {
127
+ projectRoot: string;
128
+ homeDir: string;
129
+ commonPaths: Map<string, string>;
130
+ }
131
+ export interface SearchRequest {
132
+ errorMessage: string;
133
+ errorStack?: string;
134
+ language?: Language;
135
+ framework?: string;
136
+ limit?: number;
137
+ threshold?: number;
138
+ }
139
+ export interface SearchResponse {
140
+ results: CloudKnowledgeEntry[];
141
+ queryTime: number;
142
+ cached: boolean;
143
+ }
144
+ export interface UploadRequest {
145
+ errorRecord: LocalErrorRecord;
146
+ resolution: string;
147
+ resolutionCode?: string;
148
+ resolutionSteps?: string[];
149
+ }
150
+ export interface UploadResponse {
151
+ success: boolean;
152
+ knowledgeId?: string;
153
+ isDuplicate: boolean;
154
+ existingId?: string;
155
+ message: string;
156
+ }
157
+ export interface QueryKnowledgeArgs {
158
+ errorMessage: string;
159
+ language?: string;
160
+ framework?: string;
161
+ limit?: number;
162
+ }
163
+ export interface SubmitResolutionArgs {
164
+ errorId: string;
165
+ resolution: string;
166
+ resolutionCode?: string;
167
+ }
168
+ export interface ListErrorsArgs {
169
+ status?: ErrorStatus;
170
+ limit?: number;
171
+ }
172
+ export interface MarkResolvedArgs {
173
+ errorId: string;
174
+ resolution: string;
175
+ resolutionCode?: string;
176
+ upload?: boolean;
177
+ }
178
+ export interface VoteArgs {
179
+ knowledgeId: string;
180
+ helpful: boolean;
181
+ }
182
+ export interface FixHiveConfig {
183
+ supabaseUrl: string;
184
+ supabaseAnonKey: string;
185
+ openaiApiKey?: string;
186
+ contributorId: string;
187
+ cacheExpirationMs: number;
188
+ embeddingModel: string;
189
+ embeddingDimensions: number;
190
+ similarityThreshold: number;
191
+ maxSearchResults: number;
192
+ }
193
+ export interface PartialConfig {
194
+ supabaseUrl?: string;
195
+ supabaseAnonKey?: string;
196
+ openaiApiKey?: string;
197
+ contributorId?: string;
198
+ cacheExpirationMs?: number;
199
+ }
200
+ export type FixHiveEvent = {
201
+ type: 'error:detected';
202
+ payload: LocalErrorRecord;
203
+ } | {
204
+ type: 'error:resolved';
205
+ payload: {
206
+ errorId: string;
207
+ resolution: string;
208
+ };
209
+ } | {
210
+ type: 'solution:uploaded';
211
+ payload: {
212
+ knowledgeId: string;
213
+ };
214
+ } | {
215
+ type: 'solution:found';
216
+ payload: CloudKnowledgeEntry[];
217
+ };
218
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@the-magic-tower/fixhive-opencode-plugin",
3
- "version": "0.1.13",
3
+ "version": "0.1.15",
4
4
  "description": "Community-based error knowledge sharing for OpenCode",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -15,14 +15,16 @@
15
15
  "dist"
16
16
  ],
17
17
  "scripts": {
18
- "build": "tsup src/index.ts --format esm --dts --clean --target esnext --external @supabase/supabase-js --external better-sqlite3 --external openai --external uuid --external @opencode-ai/plugin --external zod",
19
- "build:dts": "tsup src/index.ts --format esm --dts --clean",
20
- "dev": "tsup src/index.ts --format esm --watch",
18
+ "build": "bun run build:bun && bun run build:types",
19
+ "build:bun": "bun build src/index.ts --outdir dist --format esm --target bun --external @supabase/supabase-js --external better-sqlite3 --external openai --external uuid --external @opencode-ai/plugin --external zod",
20
+ "build:types": "tsc --emitDeclarationOnly --declaration --outDir dist",
21
+ "build:tsup": "tsup src/index.ts --format esm --dts --clean --target esnext --external @supabase/supabase-js --external better-sqlite3 --external openai --external uuid --external @opencode-ai/plugin --external zod",
22
+ "dev": "bun build src/index.ts --outdir dist --format esm --target bun --watch --external @supabase/supabase-js --external better-sqlite3 --external openai --external uuid --external @opencode-ai/plugin --external zod",
21
23
  "typecheck": "tsc --noEmit",
22
24
  "lint": "eslint src --ext .ts",
23
25
  "test": "vitest",
24
26
  "test:coverage": "vitest --coverage",
25
- "prepublishOnly": "npm run build"
27
+ "prepublishOnly": "bun run build"
26
28
  },
27
29
  "keywords": [
28
30
  "opencode",