@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.
@@ -1,5 +1,6 @@
1
1
  /**
2
- * FixHive OpenCode Plugin
2
+ * FixHive OpenCode Plugin - CodeCaseDB v2.0
3
+ *
3
4
  * Community-based error knowledge sharing plugin for OpenCode
4
5
  */
5
6
  import type { Plugin } from '@opencode-ai/plugin';
@@ -1 +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,MAwK3B,CAAC;AAoJF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugin/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AA0ClD;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,MAuD3B,CAAC;AAyIF,eAAe,aAAa,CAAC"}
@@ -1,15 +1,25 @@
1
1
  /**
2
- * FixHive Custom Tools
2
+ * FixHive Custom Tools - CodeCaseDB v2.0
3
+ *
3
4
  * OpenCode plugin tools for error knowledge management
5
+ * 3 core tools: search_cases, report_resolution, vote
4
6
  */
5
7
  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';
8
+ import type { CloudClient } from '@the-magic-tower/fixhive-shared';
9
+ interface FixHiveContext {
10
+ sessionId: string;
11
+ projectDirectory: string;
12
+ language?: string;
13
+ framework?: string;
14
+ packages?: Record<string, string>;
15
+ }
10
16
  /**
11
17
  * Create FixHive tools for OpenCode plugin
12
- * @returns Record of tool definitions
13
18
  */
14
- export declare function createTools(localStore: LocalStore, cloudClient: CloudClient, privacyFilter: PrivacyFilter, context: FixHiveContext): Record<string, ReturnType<typeof tool>>;
19
+ export declare function createTools(cloudClient: CloudClient, context: FixHiveContext): Record<string, ReturnType<typeof tool>>;
20
+ /**
21
+ * Create offline-only tools when cloud is not configured
22
+ */
23
+ export declare function createOfflineTools(_context: FixHiveContext): Record<string, ReturnType<typeof tool>>;
24
+ export {};
15
25
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +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,CAgPzC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/plugin/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAO3C,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEhF,UAAU,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACnC;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,cAAc,GACtB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAuRzC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,cAAc,GACvB,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC,CAiBzC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@the-magic-tower/fixhive-opencode-plugin",
3
- "version": "0.1.34",
4
- "description": "Community-based error knowledge sharing for OpenCode",
3
+ "version": "0.2.0-beta.2",
4
+ "description": "Community-based error knowledge sharing for OpenCode (CodeCaseDB v2.0)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -26,6 +26,7 @@
26
26
  "keywords": [
27
27
  "opencode",
28
28
  "plugin",
29
+ "codecasedb",
29
30
  "error",
30
31
  "knowledge",
31
32
  "community",
@@ -33,24 +34,21 @@
33
34
  "developer-tools",
34
35
  "debugging"
35
36
  ],
36
- "author": "Seoul Ventures",
37
+ "author": "The Magic Tower",
37
38
  "license": "MIT",
38
39
  "repository": {
39
40
  "type": "git",
40
41
  "url": "https://github.com/TheMagicTower/FixHive.git"
41
42
  },
42
43
  "dependencies": {
44
+ "@the-magic-tower/fixhive-shared": "github:TheMagicTower/fixhive-shared",
43
45
  "@opencode-ai/plugin": "^1.1.1",
44
- "@supabase/supabase-js": "2.43.2",
45
46
  "better-sqlite3": "^12.5.0",
46
- "openai": "^6.16.0",
47
- "uuid": "^13.0.0",
48
47
  "zod": "^4.1.8"
49
48
  },
50
49
  "devDependencies": {
51
50
  "@types/better-sqlite3": "^7.6.11",
52
51
  "@types/node": "^25.0.3",
53
- "@types/uuid": "^10.0.0",
54
52
  "@typescript-eslint/eslint-plugin": "^8.0.0",
55
53
  "@typescript-eslint/parser": "^8.0.0",
56
54
  "@vitest/coverage-v8": "^4.0.16",
@@ -1,44 +0,0 @@
1
- /**
2
- * FixHive Cloud Client
3
- * Supabase client for cloud knowledge base operations
4
- */
5
- import type { CloudKnowledgeEntry, SearchRequest, SearchResponse, UploadRequest, UploadResponse, DuplicateCheckResult, ContributorStats } from '../types/index.js';
6
- /**
7
- * Cloud Client Configuration
8
- */
9
- export interface CloudClientConfig {
10
- supabaseUrl: string;
11
- supabaseAnonKey: string;
12
- openaiApiKey?: string;
13
- contributorId?: string;
14
- similarityThreshold?: number;
15
- }
16
- /**
17
- * CloudClient interface - defines all public methods
18
- */
19
- export interface CloudClient {
20
- searchSimilar(request: SearchRequest): Promise<SearchResponse>;
21
- uploadResolution(request: UploadRequest): Promise<UploadResponse>;
22
- checkDuplicate(errorHash: string, embedding: number[]): Promise<DuplicateCheckResult>;
23
- vote(knowledgeId: string, helpful: boolean): Promise<{
24
- success: boolean;
25
- error?: string;
26
- }>;
27
- reportEntry(knowledgeId: string, reason?: string): Promise<{
28
- success: boolean;
29
- }>;
30
- reportHelpful(knowledgeId: string): Promise<void>;
31
- getContributorStats(): Promise<ContributorStats>;
32
- getEntry(id: string): Promise<CloudKnowledgeEntry | null>;
33
- getContributorId(): string;
34
- hasEmbeddingService(): boolean;
35
- }
36
- /**
37
- * Create a CloudClient instance
38
- * Factory function pattern to avoid ES6 class issues with Bun
39
- */
40
- export declare function createCloudClient(config: CloudClientConfig): Promise<CloudClient>;
41
- export declare const CloudClient: {
42
- create: typeof createCloudClient;
43
- };
44
- //# sourceMappingURL=client.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/cloud/client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,aAAa,EACb,cAAc,EACd,oBAAoB,EACpB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAa3B;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/D,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAClE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtF,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3F,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IACjF,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClD,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACjD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IAC1D,gBAAgB,IAAI,MAAM,CAAC;IAC3B,mBAAmB,IAAI,OAAO,CAAC;CAChC;AA6BD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAkTvF;AAID,eAAO,MAAM,WAAW;;CAEvB,CAAC"}
@@ -1,43 +0,0 @@
1
- /**
2
- * FixHive Embedding Service
3
- * Generates text embeddings for semantic search using OpenAI
4
- */
5
- /**
6
- * EmbeddingService interface - defines all public methods
7
- */
8
- export interface EmbeddingService {
9
- generate(text: string): Promise<number[]>;
10
- generateBatch(texts: string[]): Promise<number[][]>;
11
- generateErrorEmbedding(errorMessage: string, errorStack?: string, context?: {
12
- language?: string;
13
- framework?: string;
14
- }): Promise<number[]>;
15
- getDimensions(): number;
16
- getModel(): string;
17
- }
18
- /**
19
- * EmbeddingService configuration
20
- */
21
- export interface EmbeddingServiceConfig {
22
- apiKey: string;
23
- model?: string;
24
- dimensions?: number;
25
- }
26
- /**
27
- * Calculate cosine similarity between two embeddings
28
- */
29
- export declare function cosineSimilarity(a: number[], b: number[]): number;
30
- /**
31
- * Create an EmbeddingService instance
32
- * Factory function pattern to avoid ES6 class issues with Bun
33
- */
34
- export declare function createEmbeddingService(config: EmbeddingServiceConfig): Promise<EmbeddingService>;
35
- /**
36
- * Legacy class wrapper for backwards compatibility
37
- * @deprecated Use createEmbeddingService() instead
38
- */
39
- export declare const EmbeddingService: {
40
- create: typeof createEmbeddingService;
41
- cosineSimilarity: typeof cosineSimilarity;
42
- };
43
- //# sourceMappingURL=embedding.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"embedding.d.ts","sourceRoot":"","sources":["../../src/cloud/embedding.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAeH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpD,sBAAsB,CACpB,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACrB,aAAa,IAAI,MAAM,CAAC;IACxB,QAAQ,IAAI,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAmBjE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2GtG;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB;;;CAG5B,CAAC"}
@@ -1,26 +0,0 @@
1
- /**
2
- * FixHive Error Detector
3
- * Detects errors from tool outputs using multi-signal analysis
4
- */
5
- import type { ErrorDetectionResult, ToolOutput } from '../types/index.js';
6
- import { type PrivacyFilter } from './privacy-filter.js';
7
- /**
8
- * ErrorDetector interface - defines all public methods
9
- */
10
- export interface ErrorDetector {
11
- detect(toolOutput: ToolOutput): ErrorDetectionResult;
12
- }
13
- /**
14
- * Create an ErrorDetector instance
15
- * Factory function pattern to avoid ES6 class issues with Bun
16
- */
17
- export declare function createErrorDetector(privacyFilter?: PrivacyFilter): ErrorDetector;
18
- /**
19
- * Legacy class wrapper for backwards compatibility
20
- * @deprecated Use createErrorDetector() instead
21
- */
22
- export declare const ErrorDetector: {
23
- create: typeof createErrorDetector;
24
- };
25
- export declare const defaultErrorDetector: ErrorDetector;
26
- //# sourceMappingURL=error-detector.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error-detector.d.ts","sourceRoot":"","sources":["../../src/core/error-detector.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAIV,oBAAoB,EAEpB,UAAU,EACX,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAuB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAsG9E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,oBAAoB,CAAC;CACtD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,CAAC,EAAE,aAAa,GAAG,aAAa,CA8PhF;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa;;CAEzB,CAAC;AAGF,eAAO,MAAM,oBAAoB,eAAwB,CAAC"}
@@ -1,41 +0,0 @@
1
- /**
2
- * FixHive Hash Utilities
3
- * Generates fingerprints and hashes for error deduplication
4
- */
5
- /**
6
- * Generate SHA-256 hash of content
7
- */
8
- export declare function sha256(content: string): string;
9
- /**
10
- * Generate a shortened hash (first 16 characters)
11
- */
12
- export declare function shortHash(content: string): string;
13
- /**
14
- * Generate error fingerprint for matching similar errors
15
- * Normalizes variable parts (paths, numbers, hashes) before hashing
16
- */
17
- export declare function generateErrorFingerprint(errorMessage: string, errorStack?: string): string;
18
- /**
19
- * Normalize error content by replacing variable parts
20
- */
21
- export declare function normalizeErrorContent(content: string): string;
22
- /**
23
- * Generate contributor ID (anonymous hash)
24
- * Uses machine-specific information to create a stable anonymous ID
25
- */
26
- export declare function generateContributorId(): string;
27
- /**
28
- * Generate session-specific hash
29
- */
30
- export declare function generateSessionHash(sessionId: string): string;
31
- /**
32
- * Compare two fingerprints for similarity
33
- * Returns true if they're identical (exact match)
34
- */
35
- export declare function fingerprintsMatch(fp1: string, fp2: string): boolean;
36
- /**
37
- * Calculate simple string similarity (Jaccard index)
38
- * Used as a fallback when embeddings aren't available
39
- */
40
- export declare function calculateStringSimilarity(str1: string, str2: string): number;
41
- //# sourceMappingURL=hash.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"hash.d.ts","sourceRoot":"","sources":["../../src/core/hash.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9C;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,MAAM,CASR;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2B7D;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAS9C;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAEnE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAU5E"}
@@ -1,33 +0,0 @@
1
- /**
2
- * FixHive Privacy Filter
3
- * Sanitizes sensitive information from error messages before sharing
4
- */
5
- import type { PrivacyFilterRule, SanitizedContent, FilterContext } from '../types/index.js';
6
- /**
7
- * PrivacyFilter interface - defines all public methods
8
- */
9
- export interface PrivacyFilter {
10
- sanitize(content: string, context?: FilterContext): SanitizedContent;
11
- addRule(rule: PrivacyFilterRule): void;
12
- removeRule(name: string): boolean;
13
- getRules(): ReadonlyArray<PrivacyFilterRule>;
14
- containsSensitiveData(content: string): boolean;
15
- }
16
- /**
17
- * Create a PrivacyFilter instance
18
- * Factory function pattern to avoid ES6 class issues with Bun
19
- */
20
- export declare function createPrivacyFilter(customRules?: PrivacyFilterRule[]): PrivacyFilter;
21
- /**
22
- * Legacy class wrapper for backwards compatibility
23
- * @deprecated Use createPrivacyFilter() instead
24
- */
25
- export declare const PrivacyFilter: {
26
- create: typeof createPrivacyFilter;
27
- };
28
- /**
29
- * Create default filter context from project directory
30
- */
31
- export declare function createFilterContext(projectDirectory: string): FilterContext;
32
- export declare const defaultPrivacyFilter: PrivacyFilter;
33
- //# sourceMappingURL=privacy-filter.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"privacy-filter.d.ts","sourceRoot":"","sources":["../../src/core/privacy-filter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAwN5F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,gBAAgB,CAAC;IACrE,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACvC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAClC,QAAQ,IAAI,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAC7C,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;CACjD;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,CAAC,EAAE,iBAAiB,EAAE,GAAG,aAAa,CAyHpF;AAED;;;GAGG;AACH,eAAO,MAAM,aAAa;;CAEzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,gBAAgB,EAAE,MAAM,GAAG,aAAa,CAc3E;AAGD,eAAO,MAAM,oBAAoB,eAAwB,CAAC"}
@@ -1,63 +0,0 @@
1
- /**
2
- * FixHive Local Store
3
- * SQLite-based local storage for error records and caching
4
- * Automatically uses bun:sqlite for Bun runtime, better-sqlite3 for Node.js
5
- */
6
- import type { LocalErrorRecord, ErrorStatus, LocalStats, CloudKnowledgeEntry } from '../types/index.js';
7
- /**
8
- * Unified database interface for both Bun and Node.js
9
- */
10
- interface UnifiedDatabase {
11
- exec(sql: string): void;
12
- prepare(sql: string): UnifiedStatement;
13
- close(): void;
14
- }
15
- interface UnifiedStatement {
16
- run(...params: unknown[]): {
17
- changes: number;
18
- };
19
- get(...params: unknown[]): Record<string, unknown> | undefined;
20
- all(...params: unknown[]): Record<string, unknown>[];
21
- }
22
- /**
23
- * LocalStore interface - defines all public methods
24
- */
25
- export interface LocalStore {
26
- createErrorRecord(data: Omit<LocalErrorRecord, 'id' | 'errorHash' | 'status' | 'createdAt'>): LocalErrorRecord;
27
- getErrorById(id: string): LocalErrorRecord | null;
28
- getSessionErrors(sessionId: string, options?: {
29
- status?: ErrorStatus;
30
- limit?: number;
31
- }): LocalErrorRecord[];
32
- getUnresolvedErrors(sessionId: string): LocalErrorRecord[];
33
- getRecentErrors(limit?: number): LocalErrorRecord[];
34
- markResolved(id: string, data: {
35
- resolution: string;
36
- resolutionCode?: string;
37
- }): LocalErrorRecord | null;
38
- markUploaded(id: string, cloudKnowledgeId: string): void;
39
- findSimilarErrors(errorHash: string): LocalErrorRecord[];
40
- getCachedResults(errorHash: string): CloudKnowledgeEntry[] | null;
41
- cacheResults(errorHash: string, results: CloudKnowledgeEntry[], expirationMs?: number): void;
42
- clearExpiredCache(): number;
43
- getStats(): LocalStats;
44
- getPreference(key: string): string | null;
45
- setPreference(key: string, value: string): void;
46
- close(): void;
47
- getDatabase(): UnifiedDatabase;
48
- }
49
- /**
50
- * Create a LocalStore instance
51
- * Factory function pattern to avoid ES6 class issues with Bun
52
- * Automatically uses bun:sqlite for Bun runtime, better-sqlite3 for Node.js
53
- */
54
- export declare function createLocalStore(projectDirectory: string): Promise<LocalStore>;
55
- /**
56
- * Legacy class wrapper for backwards compatibility
57
- * @deprecated Use createLocalStore() instead
58
- */
59
- export declare const LocalStore: {
60
- create: typeof createLocalStore;
61
- };
62
- export {};
63
- //# sourceMappingURL=local-store.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"local-store.d.ts","sourceRoot":"","sources":["../../src/storage/local-store.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EACV,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,mBAAmB,EACpB,MAAM,mBAAmB,CAAC;AAU3B;;GAEG;AACH,UAAU,eAAe;IACvB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,CAAC;IACvC,KAAK,IAAI,IAAI,CAAC;CACf;AAED,UAAU,gBAAgB;IACxB,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;IAC/D,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACtD;AA2DD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC,GAAG,gBAAgB,CAAC;IAC/G,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAAC;IAClD,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,EAAE,CAAC;IAC5G,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IAC3D,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IACpD,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,gBAAgB,GAAG,IAAI,CAAC;IACzG,YAAY,CAAC,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAAC;IACzD,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,mBAAmB,EAAE,GAAG,IAAI,CAAC;IAClE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7F,iBAAiB,IAAI,MAAM,CAAC;IAC5B,QAAQ,IAAI,UAAU,CAAC;IACvB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IAC1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAChD,KAAK,IAAI,IAAI,CAAC;IACd,WAAW,IAAI,eAAe,CAAC;CAChC;AA2BD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAySpF;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU;;CAEtB,CAAC"}
@@ -1,23 +0,0 @@
1
- /**
2
- * FixHive Database Migrations
3
- * SQLite schema setup and migrations
4
- */
5
- /**
6
- * Unified database interface for migrations
7
- * Works with both bun:sqlite and better-sqlite3
8
- */
9
- interface MigrationDatabase {
10
- exec(sql: string): void;
11
- prepare(sql: string): {
12
- all(...params: unknown[]): Record<string, unknown>[];
13
- run(...params: unknown[]): {
14
- changes: number;
15
- };
16
- };
17
- }
18
- /**
19
- * Run all migrations on the database
20
- */
21
- export declare function runMigrations(db: MigrationDatabase): void;
22
- export {};
23
- //# sourceMappingURL=migrations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../src/storage/migrations.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,UAAU,iBAAiB;IACzB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG;QACpB,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;KAChD,CAAC;CACH;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAsBzD"}
@@ -1,218 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}