claude-flow 2.0.0-alpha.62 → 2.0.0-alpha.63
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/.claude/commands/analysis/COMMAND_COMPLIANCE_REPORT.md +54 -0
- package/.claude/commands/analysis/token-efficiency.md +2 -1
- package/.claude/commands/automation/self-healing.md +47 -2
- package/.claude/commands/automation/session-memory.md +39 -10
- package/.claude/commands/automation/smart-agents.md +36 -8
- package/.claude/commands/github/code-review-swarm.md +80 -15
- package/.claude/commands/github/github-modes.md +14 -14
- package/.claude/commands/github/issue-tracker.md +19 -16
- package/.claude/commands/github/multi-repo-swarm.md +114 -16
- package/.claude/commands/github/pr-manager.md +5 -4
- package/.claude/commands/github/project-board-sync.md +38 -5
- package/.claude/commands/github/release-manager.md +19 -19
- package/.claude/commands/github/release-swarm.md +102 -13
- package/.claude/commands/github/repo-architect.md +6 -6
- package/.claude/commands/github/swarm-issue.md +139 -17
- package/.claude/commands/github/swarm-pr.md +49 -15
- package/.claude/commands/github/sync-coordinator.md +33 -33
- package/.claude/commands/github/workflow-automation.md +37 -10
- package/.claude/commands/hooks/overview.md +2 -2
- package/.claude/commands/hooks/setup.md +7 -7
- package/.claude/commands/memory/neural.md +10 -5
- package/.claude/commands/memory/usage.md +9 -5
- package/.claude/commands/monitoring/agents.md +7 -5
- package/.claude/commands/monitoring/status.md +8 -5
- package/.claude/commands/optimization/auto-topology.md +13 -1
- package/.claude/commands/optimization/parallel-execution.md +7 -1
- package/.claude/commands/sparc/analyzer.md +28 -2
- package/.claude/commands/sparc/architect.md +27 -1
- package/.claude/commands/sparc/batch-executor.md +27 -1
- package/.claude/commands/sparc/coder.md +27 -1
- package/.claude/commands/sparc/debugger.md +27 -1
- package/.claude/commands/sparc/designer.md +27 -1
- package/.claude/commands/sparc/documenter.md +27 -1
- package/.claude/commands/sparc/innovator.md +27 -1
- package/.claude/commands/sparc/memory-manager.md +27 -1
- package/.claude/commands/sparc/optimizer.md +27 -1
- package/.claude/commands/sparc/orchestrator.md +106 -2
- package/.claude/commands/sparc/researcher.md +27 -1
- package/.claude/commands/sparc/reviewer.md +27 -1
- package/.claude/commands/sparc/sparc-modes.md +137 -5
- package/.claude/commands/sparc/swarm-coordinator.md +27 -1
- package/.claude/commands/sparc/tdd.md +27 -1
- package/.claude/commands/sparc/tester.md +27 -1
- package/.claude/commands/sparc/workflow-manager.md +27 -1
- package/.claude/commands/swarm/analysis.md +82 -5
- package/.claude/commands/swarm/development.md +83 -6
- package/.claude/commands/swarm/examples.md +141 -3
- package/.claude/commands/swarm/maintenance.md +92 -8
- package/.claude/commands/swarm/optimization.md +107 -9
- package/.claude/commands/swarm/research.md +126 -8
- package/.claude/commands/swarm/testing.md +121 -9
- package/.claude/commands/training/neural-patterns.md +27 -2
- package/.claude/commands/training/specialization.md +13 -3
- package/.claude/commands/workflows/development.md +43 -4
- package/.claude/commands/workflows/research.md +26 -2
- package/README.md +8 -0
- package/bin/claude-flow +1 -1
- package/dist/cli/simple-commands/hive-mind/mcp-wrapper.d.ts +66 -0
- package/dist/cli/simple-commands/hive-mind/mcp-wrapper.d.ts.map +1 -1
- package/dist/cli/simple-commands/hive-mind/mcp-wrapper.js +220 -2
- package/dist/cli/simple-commands/hive-mind/mcp-wrapper.js.map +1 -1
- package/dist/cli/simple-commands/hive-mind.d.ts.map +1 -1
- package/dist/cli/simple-commands/hive-mind.js +83 -5
- package/dist/cli/simple-commands/hive-mind.js.map +1 -1
- package/dist/memory/fallback-store.d.ts +1 -0
- package/dist/memory/fallback-store.d.ts.map +1 -1
- package/dist/memory/fallback-store.js +25 -3
- package/dist/memory/fallback-store.js.map +1 -1
- package/dist/memory/sqlite-store.d.ts +34 -0
- package/dist/memory/sqlite-store.d.ts.map +1 -0
- package/dist/memory/sqlite-store.js +2 -3
- package/dist/memory/sqlite-store.js.map +1 -1
- package/dist/memory/sqlite-wrapper.d.ts +38 -0
- package/dist/memory/sqlite-wrapper.d.ts.map +1 -0
- package/dist/memory/sqlite-wrapper.js +157 -0
- package/dist/memory/sqlite-wrapper.js.map +1 -0
- package/package.json +1 -1
- package/src/api/claude-api-errors.ts +248 -0
- package/src/api/claude-client-enhanced.ts +616 -0
- package/src/api/claude-client.ts +282 -14
- package/src/cli/help-text.js +2 -1
- package/src/cli/simple-commands/coordination.js +73 -49
- package/src/cli/simple-commands/hive-mind/auto-save-middleware.js +6 -6
- package/src/cli/simple-commands/hive-mind/mcp-wrapper.js +327 -8
- package/src/cli/simple-commands/hive-mind/session-manager.js +330 -108
- package/src/cli/simple-commands/hive-mind.js +192 -11
- package/src/cli/simple-commands/init/claude-commands/optimized-slash-commands.js +53 -28
- package/src/cli/simple-commands/init/claude-commands/slash-commands.js +36 -14
- package/src/cli/simple-commands/init/claude-commands/sparc-commands.js +107 -30
- package/src/cli/simple-commands/init/copy-revised-templates.js +175 -0
- package/src/cli/simple-commands/init/index.js +156 -235
- package/src/cli/simple-commands/init/template-copier.js +583 -0
- package/src/cli/simple-commands/init/templates/coordination.md +16 -0
- package/src/cli/simple-commands/init/templates/memory-bank.md +16 -0
- package/src/cli/simple-commands/init/templates/settings.json.enhanced +35 -0
- package/src/cli/simple-commands/init/templates/sparc-modes.js +634 -23
- package/src/hive-mind/core/DatabaseManager.ts +75 -16
- package/src/memory/backends/sqlite.ts +21 -3
- package/src/memory/fallback-store.js +35 -3
- package/src/memory/sqlite-store.js +2 -3
- package/src/memory/sqlite-wrapper.js +173 -0
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { SqliteMemoryStore } from './sqlite-store.js';
|
|
6
6
|
import { InMemoryStore } from './in-memory-store.js';
|
|
7
|
+
import { isSQLiteAvailable, getLoadError, isWindows } from './sqlite-wrapper.js';
|
|
7
8
|
class FallbackMemoryStore {
|
|
8
9
|
constructor(options = {}) {
|
|
9
10
|
this.options = options;
|
|
@@ -16,7 +17,20 @@ class FallbackMemoryStore {
|
|
|
16
17
|
if (this.initializationAttempted)
|
|
17
18
|
return;
|
|
18
19
|
this.initializationAttempted = true;
|
|
19
|
-
//
|
|
20
|
+
// Check if SQLite is available before attempting initialization
|
|
21
|
+
const sqliteAvailable = await isSQLiteAvailable();
|
|
22
|
+
if (!sqliteAvailable) {
|
|
23
|
+
// Skip SQLite initialization if module can't be loaded
|
|
24
|
+
const loadError = getLoadError();
|
|
25
|
+
console.error(`[${new Date().toISOString()}] WARN [fallback-store] SQLite module not available:`, loadError?.message || 'Unknown error');
|
|
26
|
+
// Use in-memory store directly
|
|
27
|
+
this.fallbackStore = new InMemoryStore(this.options);
|
|
28
|
+
await this.fallbackStore.initialize();
|
|
29
|
+
this.useFallback = true;
|
|
30
|
+
this._logFallbackUsage();
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Try to initialize SQLite store
|
|
20
34
|
try {
|
|
21
35
|
this.primaryStore = new SqliteMemoryStore(this.options);
|
|
22
36
|
await this.primaryStore.initialize();
|
|
@@ -24,12 +38,20 @@ class FallbackMemoryStore {
|
|
|
24
38
|
this.useFallback = false;
|
|
25
39
|
}
|
|
26
40
|
catch (error) {
|
|
27
|
-
console.error(`[${new Date().toISOString()}] WARN [fallback-store] SQLite initialization failed
|
|
41
|
+
console.error(`[${new Date().toISOString()}] WARN [fallback-store] SQLite initialization failed:`, error.message);
|
|
28
42
|
// Fall back to in-memory store
|
|
29
43
|
this.fallbackStore = new InMemoryStore(this.options);
|
|
30
44
|
await this.fallbackStore.initialize();
|
|
31
45
|
this.useFallback = true;
|
|
32
|
-
|
|
46
|
+
this._logFallbackUsage();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
_logFallbackUsage() {
|
|
50
|
+
console.error(`[${new Date().toISOString()}] INFO [fallback-store] Using in-memory store (data will not persist across sessions)`);
|
|
51
|
+
if (isWindows()) {
|
|
52
|
+
console.error(`[${new Date().toISOString()}] INFO [fallback-store] Windows detected. For persistent storage options, see: https://github.com/ruvnet/claude-code-flow/docs/windows-installation.md`);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
33
55
|
console.error(`[${new Date().toISOString()}] INFO [fallback-store] To enable persistent storage, install the package locally: npm install claude-flow@alpha`);
|
|
34
56
|
}
|
|
35
57
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fallback-store.js","sourceRoot":"","sources":["../../src/memory/fallback-store.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"fallback-store.js","sourceRoot":"","sources":["../../src/memory/fallback-store.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export const memoryStore: SqliteMemoryStore;
|
|
2
|
+
export default SqliteMemoryStore;
|
|
3
|
+
export class SqliteMemoryStore {
|
|
4
|
+
constructor(options?: {});
|
|
5
|
+
options: {
|
|
6
|
+
dbName: any;
|
|
7
|
+
directory: any;
|
|
8
|
+
};
|
|
9
|
+
db: any;
|
|
10
|
+
statements: Map<any, any>;
|
|
11
|
+
isInitialized: boolean;
|
|
12
|
+
/**
|
|
13
|
+
* Determine the best directory for memory storage
|
|
14
|
+
* Uses .swarm directory in current working directory (consistent with hive-mind approach)
|
|
15
|
+
*/
|
|
16
|
+
_getMemoryDirectory(): string;
|
|
17
|
+
_directoryExists(dir: any): boolean;
|
|
18
|
+
initialize(): Promise<void>;
|
|
19
|
+
_createTables(): void;
|
|
20
|
+
_prepareStatements(): void;
|
|
21
|
+
store(key: any, value: any, options?: {}): Promise<{
|
|
22
|
+
success: boolean;
|
|
23
|
+
id: any;
|
|
24
|
+
size: number;
|
|
25
|
+
}>;
|
|
26
|
+
retrieve(key: any, options?: {}): Promise<any>;
|
|
27
|
+
list(options?: {}): Promise<any>;
|
|
28
|
+
delete(key: any, options?: {}): Promise<boolean>;
|
|
29
|
+
search(pattern: any, options?: {}): Promise<any>;
|
|
30
|
+
cleanup(): Promise<any>;
|
|
31
|
+
_tryParseJson(value: any): any;
|
|
32
|
+
close(): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=sqlite-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-store.d.ts","sourceRoot":"","sources":["../../src/memory/sqlite-store.js"],"names":[],"mappings":"AAqUA,4CAAmD;;AAvTnD;IACE,0BAUC;IATC;;;MAIC;IAED,QAAc;IACd,0BAA2B;IAC3B,uBAA0B;IAG5B;;;OAGG;IACH,8BAIC;IAED,oCAOC;IAED,4BAiCC;IAED,sBAqBC;IAED,2BA0EC;IAED;;;;OAuBC;IAED,+CAyBC;IAED,iCAsBC;IAED,iDAYC;IAED,iDAuBC;IAED,wBAUC;IAED,+BAMC;IAED,cAMC;CACF"}
|
|
@@ -2,12 +2,11 @@
|
|
|
2
2
|
* SQLite-based memory store for MCP server
|
|
3
3
|
* Provides persistent storage that works with both local and remote npx execution
|
|
4
4
|
*/
|
|
5
|
-
// @ts-ignore
|
|
6
|
-
import Database from 'better-sqlite3';
|
|
7
5
|
import path from 'path';
|
|
8
6
|
import { promises as fs } from 'fs';
|
|
9
7
|
import { fileURLToPath } from 'url';
|
|
10
8
|
import os from 'os';
|
|
9
|
+
import { createDatabase } from './sqlite-wrapper.js';
|
|
11
10
|
const __filename = fileURLToPath(import.meta.url);
|
|
12
11
|
const __dirname = path.dirname(__filename);
|
|
13
12
|
class SqliteMemoryStore {
|
|
@@ -47,7 +46,7 @@ class SqliteMemoryStore {
|
|
|
47
46
|
await fs.mkdir(this.options.directory, { recursive: true });
|
|
48
47
|
// Open database
|
|
49
48
|
const dbPath = path.join(this.options.directory, this.options.dbName);
|
|
50
|
-
this.db =
|
|
49
|
+
this.db = await createDatabase(dbPath);
|
|
51
50
|
// Enable WAL mode for better concurrency
|
|
52
51
|
this.db.pragma('journal_mode = WAL');
|
|
53
52
|
this.db.pragma('synchronous = NORMAL');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../src/memory/sqlite-store.js"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,
|
|
1
|
+
{"version":3,"file":"sqlite-store.js","sourceRoot":"","sources":["../../src/memory/sqlite-store.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if SQLite is available
|
|
3
|
+
*/
|
|
4
|
+
export function isSQLiteAvailable(): Promise<boolean>;
|
|
5
|
+
/**
|
|
6
|
+
* Get SQLite Database constructor or null
|
|
7
|
+
*/
|
|
8
|
+
export function getSQLiteDatabase(): Promise<any>;
|
|
9
|
+
/**
|
|
10
|
+
* Get the load error if any
|
|
11
|
+
*/
|
|
12
|
+
export function getLoadError(): any;
|
|
13
|
+
/**
|
|
14
|
+
* Create a SQLite database instance with fallback
|
|
15
|
+
*/
|
|
16
|
+
export function createDatabase(dbPath: any): Promise<any>;
|
|
17
|
+
/**
|
|
18
|
+
* Check if running on Windows
|
|
19
|
+
*/
|
|
20
|
+
export function isWindows(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Get platform-specific storage recommendations
|
|
23
|
+
*/
|
|
24
|
+
export function getStorageRecommendations(): {
|
|
25
|
+
recommended: string;
|
|
26
|
+
reason: string;
|
|
27
|
+
alternatives: string[];
|
|
28
|
+
};
|
|
29
|
+
declare namespace _default {
|
|
30
|
+
export { isSQLiteAvailable };
|
|
31
|
+
export { getSQLiteDatabase };
|
|
32
|
+
export { getLoadError };
|
|
33
|
+
export { createDatabase };
|
|
34
|
+
export { isWindows };
|
|
35
|
+
export { getStorageRecommendations };
|
|
36
|
+
}
|
|
37
|
+
export default _default;
|
|
38
|
+
//# sourceMappingURL=sqlite-wrapper.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-wrapper.d.ts","sourceRoot":"","sources":["../../src/memory/sqlite-wrapper.js"],"names":[],"mappings":"AA+EA;;GAEG;AACH,sDAOC;AAED;;GAEG;AACH,kDAMC;AAED;;GAEG;AACH,oCAEC;AAED;;GAEG;AACH,0DAgBC;AAED;;GAEG;AACH,qCAEC;AAED;;GAEG;AACH;;;;EAkBC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SQLite Wrapper with Windows Fallback Support
|
|
3
|
+
* Provides graceful fallback when better-sqlite3 fails to load
|
|
4
|
+
*/
|
|
5
|
+
import { createRequire } from 'module';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { fileURLToPath } from 'url';
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = path.dirname(__filename);
|
|
10
|
+
let Database = null;
|
|
11
|
+
let sqliteAvailable = false;
|
|
12
|
+
let loadError = null;
|
|
13
|
+
/**
|
|
14
|
+
* Try to load better-sqlite3 with comprehensive error handling
|
|
15
|
+
*/
|
|
16
|
+
function tryLoadSQLite() {
|
|
17
|
+
try {
|
|
18
|
+
// Try ES module import
|
|
19
|
+
const module = import('better-sqlite3');
|
|
20
|
+
return module.then(m => {
|
|
21
|
+
Database = m.default;
|
|
22
|
+
sqliteAvailable = true;
|
|
23
|
+
return true;
|
|
24
|
+
}).catch(err => {
|
|
25
|
+
loadError = err;
|
|
26
|
+
return false;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
// Fallback to CommonJS require
|
|
31
|
+
try {
|
|
32
|
+
const require = createRequire(import.meta.url);
|
|
33
|
+
Database = require('better-sqlite3');
|
|
34
|
+
sqliteAvailable = true;
|
|
35
|
+
return Promise.resolve(true);
|
|
36
|
+
}
|
|
37
|
+
catch (requireErr) {
|
|
38
|
+
loadError = requireErr;
|
|
39
|
+
// Check for specific Windows errors
|
|
40
|
+
if (requireErr.message.includes('was compiled against a different Node.js version') ||
|
|
41
|
+
requireErr.message.includes('Could not locate the bindings file') ||
|
|
42
|
+
requireErr.message.includes('The specified module could not be found') ||
|
|
43
|
+
requireErr.code === 'MODULE_NOT_FOUND') {
|
|
44
|
+
console.warn(`
|
|
45
|
+
╔══════════════════════════════════════════════════════════════════════════════╗
|
|
46
|
+
║ Windows SQLite Installation Issue ║
|
|
47
|
+
╠══════════════════════════════════════════════════════════════════════════════╣
|
|
48
|
+
║ ║
|
|
49
|
+
║ The native SQLite module failed to load. This is common on Windows when ║
|
|
50
|
+
║ using 'npx' or when node-gyp build tools are not available. ║
|
|
51
|
+
║ ║
|
|
52
|
+
║ Claude Flow will continue with in-memory storage (non-persistent). ║
|
|
53
|
+
║ ║
|
|
54
|
+
║ To enable persistent storage on Windows: ║
|
|
55
|
+
║ ║
|
|
56
|
+
║ Option 1 - Install Windows Build Tools: ║
|
|
57
|
+
║ > npm install --global windows-build-tools ║
|
|
58
|
+
║ > npm install claude-flow@alpha ║
|
|
59
|
+
║ ║
|
|
60
|
+
║ Option 2 - Use Pre-built Binaries: ║
|
|
61
|
+
║ > npm config set python python3 ║
|
|
62
|
+
║ > npm install claude-flow@alpha --build-from-source=false ║
|
|
63
|
+
║ ║
|
|
64
|
+
║ Option 3 - Use WSL (Windows Subsystem for Linux): ║
|
|
65
|
+
║ Install WSL and run Claude Flow inside a Linux environment ║
|
|
66
|
+
║ ║
|
|
67
|
+
╚══════════════════════════════════════════════════════════════════════════════╝
|
|
68
|
+
`);
|
|
69
|
+
}
|
|
70
|
+
return Promise.resolve(false);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Check if SQLite is available
|
|
76
|
+
*/
|
|
77
|
+
export async function isSQLiteAvailable() {
|
|
78
|
+
if (sqliteAvailable !== null) {
|
|
79
|
+
return sqliteAvailable;
|
|
80
|
+
}
|
|
81
|
+
await tryLoadSQLite();
|
|
82
|
+
return sqliteAvailable;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Get SQLite Database constructor or null
|
|
86
|
+
*/
|
|
87
|
+
export async function getSQLiteDatabase() {
|
|
88
|
+
if (!sqliteAvailable && loadError === null) {
|
|
89
|
+
await tryLoadSQLite();
|
|
90
|
+
}
|
|
91
|
+
return Database;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get the load error if any
|
|
95
|
+
*/
|
|
96
|
+
export function getLoadError() {
|
|
97
|
+
return loadError;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Create a SQLite database instance with fallback
|
|
101
|
+
*/
|
|
102
|
+
export async function createDatabase(dbPath) {
|
|
103
|
+
const DB = await getSQLiteDatabase();
|
|
104
|
+
if (!DB) {
|
|
105
|
+
throw new Error('SQLite is not available. Use fallback storage instead.');
|
|
106
|
+
}
|
|
107
|
+
try {
|
|
108
|
+
return new DB(dbPath);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
// Additional Windows-specific error handling
|
|
112
|
+
if (err.message.includes('EPERM') || err.message.includes('access denied')) {
|
|
113
|
+
throw new Error(`Cannot create database at ${dbPath}. Permission denied. Try using a different directory or running with administrator privileges.`);
|
|
114
|
+
}
|
|
115
|
+
throw err;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Check if running on Windows
|
|
120
|
+
*/
|
|
121
|
+
export function isWindows() {
|
|
122
|
+
return process.platform === 'win32';
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get platform-specific storage recommendations
|
|
126
|
+
*/
|
|
127
|
+
export function getStorageRecommendations() {
|
|
128
|
+
if (isWindows()) {
|
|
129
|
+
return {
|
|
130
|
+
recommended: 'in-memory',
|
|
131
|
+
reason: 'Windows native module compatibility',
|
|
132
|
+
alternatives: [
|
|
133
|
+
'Install Windows build tools for SQLite support',
|
|
134
|
+
'Use WSL (Windows Subsystem for Linux)',
|
|
135
|
+
'Use Docker container with Linux'
|
|
136
|
+
]
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return {
|
|
140
|
+
recommended: 'sqlite',
|
|
141
|
+
reason: 'Best performance and persistence',
|
|
142
|
+
alternatives: ['in-memory for testing']
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
// Pre-load SQLite on module import
|
|
146
|
+
tryLoadSQLite().catch(() => {
|
|
147
|
+
// Silently handle initial load failure
|
|
148
|
+
});
|
|
149
|
+
export default {
|
|
150
|
+
isSQLiteAvailable,
|
|
151
|
+
getSQLiteDatabase,
|
|
152
|
+
getLoadError,
|
|
153
|
+
createDatabase,
|
|
154
|
+
isWindows,
|
|
155
|
+
getStorageRecommendations
|
|
156
|
+
};
|
|
157
|
+
//# sourceMappingURL=sqlite-wrapper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite-wrapper.js","sourceRoot":"","sources":["../../src/memory/sqlite-wrapper.js"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude API specific error types with enhanced error handling
|
|
3
|
+
*/
|
|
4
|
+
|
|
5
|
+
import { ClaudeFlowError } from '../utils/errors.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Base error class for Claude API errors
|
|
9
|
+
*/
|
|
10
|
+
export class ClaudeAPIError extends ClaudeFlowError {
|
|
11
|
+
constructor(
|
|
12
|
+
message: string,
|
|
13
|
+
public readonly statusCode?: number,
|
|
14
|
+
public readonly retryable: boolean = false,
|
|
15
|
+
details?: unknown,
|
|
16
|
+
) {
|
|
17
|
+
super(message, 'CLAUDE_API_ERROR', details);
|
|
18
|
+
this.name = 'ClaudeAPIError';
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Error for 500 Internal Server Error
|
|
24
|
+
*/
|
|
25
|
+
export class ClaudeInternalServerError extends ClaudeAPIError {
|
|
26
|
+
constructor(message: string, details?: unknown) {
|
|
27
|
+
super(
|
|
28
|
+
message || 'Claude API internal server error. The service may be temporarily unavailable.',
|
|
29
|
+
500,
|
|
30
|
+
true, // Retryable
|
|
31
|
+
details,
|
|
32
|
+
);
|
|
33
|
+
this.name = 'ClaudeInternalServerError';
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Error for 503 Service Unavailable
|
|
39
|
+
*/
|
|
40
|
+
export class ClaudeServiceUnavailableError extends ClaudeAPIError {
|
|
41
|
+
constructor(message: string, details?: unknown) {
|
|
42
|
+
super(
|
|
43
|
+
message || 'Claude API service is temporarily unavailable. Please try again later.',
|
|
44
|
+
503,
|
|
45
|
+
true, // Retryable
|
|
46
|
+
details,
|
|
47
|
+
);
|
|
48
|
+
this.name = 'ClaudeServiceUnavailableError';
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Error for 429 Too Many Requests (Rate Limit)
|
|
54
|
+
*/
|
|
55
|
+
export class ClaudeRateLimitError extends ClaudeAPIError {
|
|
56
|
+
constructor(
|
|
57
|
+
message: string,
|
|
58
|
+
public readonly retryAfter?: number,
|
|
59
|
+
details?: unknown,
|
|
60
|
+
) {
|
|
61
|
+
super(
|
|
62
|
+
message || 'Rate limit exceeded. Please wait before making more requests.',
|
|
63
|
+
429,
|
|
64
|
+
true, // Retryable
|
|
65
|
+
details,
|
|
66
|
+
);
|
|
67
|
+
this.name = 'ClaudeRateLimitError';
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Error for network timeouts
|
|
73
|
+
*/
|
|
74
|
+
export class ClaudeTimeoutError extends ClaudeAPIError {
|
|
75
|
+
constructor(message: string, public readonly timeout: number, details?: unknown) {
|
|
76
|
+
super(
|
|
77
|
+
message || `Request timed out after ${timeout}ms. The API may be slow or unreachable.`,
|
|
78
|
+
undefined,
|
|
79
|
+
true, // Retryable
|
|
80
|
+
details,
|
|
81
|
+
);
|
|
82
|
+
this.name = 'ClaudeTimeoutError';
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/**
|
|
87
|
+
* Error for network-related issues
|
|
88
|
+
*/
|
|
89
|
+
export class ClaudeNetworkError extends ClaudeAPIError {
|
|
90
|
+
constructor(message: string, details?: unknown) {
|
|
91
|
+
super(
|
|
92
|
+
message || 'Network error occurred. Please check your internet connection.',
|
|
93
|
+
undefined,
|
|
94
|
+
true, // Retryable
|
|
95
|
+
details,
|
|
96
|
+
);
|
|
97
|
+
this.name = 'ClaudeNetworkError';
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Error for authentication issues
|
|
103
|
+
*/
|
|
104
|
+
export class ClaudeAuthenticationError extends ClaudeAPIError {
|
|
105
|
+
constructor(message: string, details?: unknown) {
|
|
106
|
+
super(
|
|
107
|
+
message || 'Authentication failed. Please check your API key.',
|
|
108
|
+
401,
|
|
109
|
+
false, // Not retryable
|
|
110
|
+
details,
|
|
111
|
+
);
|
|
112
|
+
this.name = 'ClaudeAuthenticationError';
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* Error for invalid requests
|
|
118
|
+
*/
|
|
119
|
+
export class ClaudeValidationError extends ClaudeAPIError {
|
|
120
|
+
constructor(message: string, details?: unknown) {
|
|
121
|
+
super(
|
|
122
|
+
message || 'Invalid request. Please check your parameters.',
|
|
123
|
+
400,
|
|
124
|
+
false, // Not retryable
|
|
125
|
+
details,
|
|
126
|
+
);
|
|
127
|
+
this.name = 'ClaudeValidationError';
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* Health check result
|
|
133
|
+
*/
|
|
134
|
+
export interface HealthCheckResult {
|
|
135
|
+
healthy: boolean;
|
|
136
|
+
latency?: number;
|
|
137
|
+
error?: string;
|
|
138
|
+
timestamp: Date;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* User-friendly error messages and fallback suggestions
|
|
143
|
+
*/
|
|
144
|
+
export const ERROR_MESSAGES = {
|
|
145
|
+
INTERNAL_SERVER_ERROR: {
|
|
146
|
+
title: 'Claude API Service Error',
|
|
147
|
+
message: 'The Claude API is experiencing technical difficulties.',
|
|
148
|
+
suggestions: [
|
|
149
|
+
'Wait a few minutes and try again',
|
|
150
|
+
'Check the Anthropic status page for service updates',
|
|
151
|
+
'Consider using a fallback AI service if available',
|
|
152
|
+
'Cache previous responses for offline usage',
|
|
153
|
+
],
|
|
154
|
+
},
|
|
155
|
+
SERVICE_UNAVAILABLE: {
|
|
156
|
+
title: 'Service Temporarily Unavailable',
|
|
157
|
+
message: 'Claude API is temporarily unavailable or undergoing maintenance.',
|
|
158
|
+
suggestions: [
|
|
159
|
+
'Try again in 5-10 minutes',
|
|
160
|
+
'Check if there\'s scheduled maintenance',
|
|
161
|
+
'Use cached responses if available',
|
|
162
|
+
'Consider implementing a queue for requests',
|
|
163
|
+
],
|
|
164
|
+
},
|
|
165
|
+
RATE_LIMIT: {
|
|
166
|
+
title: 'Rate Limit Exceeded',
|
|
167
|
+
message: 'You\'ve made too many requests to the Claude API.',
|
|
168
|
+
suggestions: [
|
|
169
|
+
'Implement request throttling',
|
|
170
|
+
'Batch multiple requests together',
|
|
171
|
+
'Consider upgrading your API plan',
|
|
172
|
+
'Use exponential backoff for retries',
|
|
173
|
+
],
|
|
174
|
+
},
|
|
175
|
+
TIMEOUT: {
|
|
176
|
+
title: 'Request Timeout',
|
|
177
|
+
message: 'The request took too long to complete.',
|
|
178
|
+
suggestions: [
|
|
179
|
+
'Check your internet connection',
|
|
180
|
+
'Try a simpler request',
|
|
181
|
+
'Increase the timeout duration',
|
|
182
|
+
'Break large requests into smaller ones',
|
|
183
|
+
],
|
|
184
|
+
},
|
|
185
|
+
NETWORK_ERROR: {
|
|
186
|
+
title: 'Network Connection Error',
|
|
187
|
+
message: 'Unable to connect to the Claude API.',
|
|
188
|
+
suggestions: [
|
|
189
|
+
'Check your internet connection',
|
|
190
|
+
'Verify firewall/proxy settings',
|
|
191
|
+
'Try using a different network',
|
|
192
|
+
'Check if the API endpoint is correct',
|
|
193
|
+
],
|
|
194
|
+
},
|
|
195
|
+
AUTHENTICATION: {
|
|
196
|
+
title: 'Authentication Failed',
|
|
197
|
+
message: 'Unable to authenticate with the Claude API.',
|
|
198
|
+
suggestions: [
|
|
199
|
+
'Verify your API key is correct',
|
|
200
|
+
'Check if your API key has expired',
|
|
201
|
+
'Ensure the API key has proper permissions',
|
|
202
|
+
'Generate a new API key if needed',
|
|
203
|
+
],
|
|
204
|
+
},
|
|
205
|
+
VALIDATION: {
|
|
206
|
+
title: 'Invalid Request',
|
|
207
|
+
message: 'The request contains invalid parameters.',
|
|
208
|
+
suggestions: [
|
|
209
|
+
'Check the request parameters',
|
|
210
|
+
'Verify the model name is correct',
|
|
211
|
+
'Ensure message format is valid',
|
|
212
|
+
'Review the API documentation',
|
|
213
|
+
],
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Get user-friendly error information
|
|
219
|
+
*/
|
|
220
|
+
export function getUserFriendlyError(error: ClaudeAPIError): {
|
|
221
|
+
title: string;
|
|
222
|
+
message: string;
|
|
223
|
+
suggestions: string[];
|
|
224
|
+
retryable: boolean;
|
|
225
|
+
} {
|
|
226
|
+
let errorInfo = ERROR_MESSAGES.INTERNAL_SERVER_ERROR; // Default
|
|
227
|
+
|
|
228
|
+
if (error instanceof ClaudeInternalServerError) {
|
|
229
|
+
errorInfo = ERROR_MESSAGES.INTERNAL_SERVER_ERROR;
|
|
230
|
+
} else if (error instanceof ClaudeServiceUnavailableError) {
|
|
231
|
+
errorInfo = ERROR_MESSAGES.SERVICE_UNAVAILABLE;
|
|
232
|
+
} else if (error instanceof ClaudeRateLimitError) {
|
|
233
|
+
errorInfo = ERROR_MESSAGES.RATE_LIMIT;
|
|
234
|
+
} else if (error instanceof ClaudeTimeoutError) {
|
|
235
|
+
errorInfo = ERROR_MESSAGES.TIMEOUT;
|
|
236
|
+
} else if (error instanceof ClaudeNetworkError) {
|
|
237
|
+
errorInfo = ERROR_MESSAGES.NETWORK_ERROR;
|
|
238
|
+
} else if (error instanceof ClaudeAuthenticationError) {
|
|
239
|
+
errorInfo = ERROR_MESSAGES.AUTHENTICATION;
|
|
240
|
+
} else if (error instanceof ClaudeValidationError) {
|
|
241
|
+
errorInfo = ERROR_MESSAGES.VALIDATION;
|
|
242
|
+
}
|
|
243
|
+
|
|
244
|
+
return {
|
|
245
|
+
...errorInfo,
|
|
246
|
+
retryable: error.retryable,
|
|
247
|
+
};
|
|
248
|
+
}
|