@specforge/mcp 2.6.0 → 3.0.0
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.md +73 -0
- package/bin/{specforge-mcp → specforge} +0 -5
- package/dist/ai-provider/circuit-breaker.d.ts +63 -0
- package/dist/ai-provider/circuit-breaker.d.ts.map +1 -0
- package/dist/ai-provider/circuit-breaker.js +160 -0
- package/dist/ai-provider/circuit-breaker.js.map +1 -0
- package/dist/ai-provider/cli-version.d.ts +50 -0
- package/dist/ai-provider/cli-version.d.ts.map +1 -0
- package/dist/ai-provider/cli-version.js +141 -0
- package/dist/ai-provider/cli-version.js.map +1 -0
- package/dist/ai-provider/config-loader.d.ts +45 -0
- package/dist/ai-provider/config-loader.d.ts.map +1 -0
- package/dist/ai-provider/config-loader.js +106 -0
- package/dist/ai-provider/config-loader.js.map +1 -0
- package/dist/ai-provider/errors.d.ts +48 -0
- package/dist/ai-provider/errors.d.ts.map +1 -0
- package/dist/ai-provider/errors.js +102 -0
- package/dist/ai-provider/errors.js.map +1 -0
- package/dist/ai-provider/events.d.ts +73 -0
- package/dist/ai-provider/events.d.ts.map +1 -0
- package/dist/ai-provider/events.js +75 -0
- package/dist/ai-provider/events.js.map +1 -0
- package/dist/ai-provider/factory.d.ts +31 -0
- package/dist/ai-provider/factory.d.ts.map +1 -0
- package/dist/ai-provider/factory.js +100 -0
- package/dist/ai-provider/factory.js.map +1 -0
- package/dist/ai-provider/index.d.ts +24 -0
- package/dist/ai-provider/index.d.ts.map +1 -0
- package/dist/ai-provider/index.js +46 -0
- package/dist/ai-provider/index.js.map +1 -0
- package/dist/ai-provider/instance-coordinator.d.ts +54 -0
- package/dist/ai-provider/instance-coordinator.d.ts.map +1 -0
- package/dist/ai-provider/instance-coordinator.js +199 -0
- package/dist/ai-provider/instance-coordinator.js.map +1 -0
- package/dist/ai-provider/jsonl-parser.d.ts +43 -0
- package/dist/ai-provider/jsonl-parser.d.ts.map +1 -0
- package/dist/ai-provider/jsonl-parser.js +107 -0
- package/dist/ai-provider/jsonl-parser.js.map +1 -0
- package/dist/ai-provider/lifecycle.d.ts +50 -0
- package/dist/ai-provider/lifecycle.d.ts.map +1 -0
- package/dist/ai-provider/lifecycle.js +145 -0
- package/dist/ai-provider/lifecycle.js.map +1 -0
- package/dist/ai-provider/logger.d.ts +69 -0
- package/dist/ai-provider/logger.d.ts.map +1 -0
- package/dist/ai-provider/logger.js +161 -0
- package/dist/ai-provider/logger.js.map +1 -0
- package/dist/ai-provider/metrics.d.ts +91 -0
- package/dist/ai-provider/metrics.d.ts.map +1 -0
- package/dist/ai-provider/metrics.js +187 -0
- package/dist/ai-provider/metrics.js.map +1 -0
- package/dist/ai-provider/process-manager.d.ts +97 -0
- package/dist/ai-provider/process-manager.d.ts.map +1 -0
- package/dist/ai-provider/process-manager.js +477 -0
- package/dist/ai-provider/process-manager.js.map +1 -0
- package/dist/ai-provider/providers/claude-code.d.ts +64 -0
- package/dist/ai-provider/providers/claude-code.d.ts.map +1 -0
- package/dist/ai-provider/providers/claude-code.js +205 -0
- package/dist/ai-provider/providers/claude-code.js.map +1 -0
- package/dist/ai-provider/retry-executor.d.ts +52 -0
- package/dist/ai-provider/retry-executor.d.ts.map +1 -0
- package/dist/ai-provider/retry-executor.js +138 -0
- package/dist/ai-provider/retry-executor.js.map +1 -0
- package/dist/ai-provider/safe-args.d.ts +58 -0
- package/dist/ai-provider/safe-args.d.ts.map +1 -0
- package/dist/ai-provider/safe-args.js +176 -0
- package/dist/ai-provider/safe-args.js.map +1 -0
- package/dist/ai-provider/semaphore.d.ts +50 -0
- package/dist/ai-provider/semaphore.d.ts.map +1 -0
- package/dist/ai-provider/semaphore.js +97 -0
- package/dist/ai-provider/semaphore.js.map +1 -0
- package/dist/ai-provider/tracer.d.ts +67 -0
- package/dist/ai-provider/tracer.d.ts.map +1 -0
- package/dist/ai-provider/tracer.js +209 -0
- package/dist/ai-provider/tracer.js.map +1 -0
- package/dist/ai-provider/types.d.ts +181 -0
- package/dist/ai-provider/types.d.ts.map +1 -0
- package/dist/ai-provider/types.js +8 -0
- package/dist/ai-provider/types.js.map +1 -0
- package/dist/autopilot/agents/agent-runner.d.ts +109 -0
- package/dist/autopilot/agents/agent-runner.d.ts.map +1 -0
- package/dist/autopilot/agents/agent-runner.js +731 -0
- package/dist/autopilot/agents/agent-runner.js.map +1 -0
- package/dist/autopilot/agents/agent-selector.d.ts +59 -0
- package/dist/autopilot/agents/agent-selector.d.ts.map +1 -0
- package/dist/autopilot/agents/agent-selector.js +234 -0
- package/dist/autopilot/agents/agent-selector.js.map +1 -0
- package/dist/autopilot/agents/model-selector.d.ts +49 -0
- package/dist/autopilot/agents/model-selector.d.ts.map +1 -0
- package/dist/autopilot/agents/model-selector.js +62 -0
- package/dist/autopilot/agents/model-selector.js.map +1 -0
- package/dist/autopilot/agents/profiles/builtin.d.ts +55 -0
- package/dist/autopilot/agents/profiles/builtin.d.ts.map +1 -0
- package/dist/autopilot/agents/profiles/builtin.js +323 -0
- package/dist/autopilot/agents/profiles/builtin.js.map +1 -0
- package/dist/autopilot/agents/profiles/types.d.ts +98 -0
- package/dist/autopilot/agents/profiles/types.d.ts.map +1 -0
- package/dist/autopilot/agents/profiles/types.js +17 -0
- package/dist/autopilot/agents/profiles/types.js.map +1 -0
- package/dist/autopilot/api/autopilot-api-client.d.ts +217 -0
- package/dist/autopilot/api/autopilot-api-client.d.ts.map +1 -0
- package/dist/autopilot/api/autopilot-api-client.js +402 -0
- package/dist/autopilot/api/autopilot-api-client.js.map +1 -0
- package/dist/autopilot/cli/abort.d.ts +20 -0
- package/dist/autopilot/cli/abort.d.ts.map +1 -0
- package/dist/autopilot/cli/abort.js +201 -0
- package/dist/autopilot/cli/abort.js.map +1 -0
- package/dist/autopilot/cli/display.d.ts +63 -0
- package/dist/autopilot/cli/display.d.ts.map +1 -0
- package/dist/autopilot/cli/display.js +260 -0
- package/dist/autopilot/cli/display.js.map +1 -0
- package/dist/autopilot/cli/index.d.ts +24 -0
- package/dist/autopilot/cli/index.d.ts.map +1 -0
- package/dist/autopilot/cli/index.js +79 -0
- package/dist/autopilot/cli/index.js.map +1 -0
- package/dist/autopilot/cli/pause.d.ts +18 -0
- package/dist/autopilot/cli/pause.d.ts.map +1 -0
- package/dist/autopilot/cli/pause.js +110 -0
- package/dist/autopilot/cli/pause.js.map +1 -0
- package/dist/autopilot/cli/resume.d.ts +22 -0
- package/dist/autopilot/cli/resume.d.ts.map +1 -0
- package/dist/autopilot/cli/resume.js +172 -0
- package/dist/autopilot/cli/resume.js.map +1 -0
- package/dist/autopilot/cli/run.d.ts +25 -0
- package/dist/autopilot/cli/run.d.ts.map +1 -0
- package/dist/autopilot/cli/run.js +220 -0
- package/dist/autopilot/cli/run.js.map +1 -0
- package/dist/autopilot/cli/status.d.ts +20 -0
- package/dist/autopilot/cli/status.d.ts.map +1 -0
- package/dist/autopilot/cli/status.js +217 -0
- package/dist/autopilot/cli/status.js.map +1 -0
- package/dist/autopilot/config.d.ts +45 -0
- package/dist/autopilot/config.d.ts.map +1 -0
- package/dist/autopilot/config.js +269 -0
- package/dist/autopilot/config.js.map +1 -0
- package/dist/autopilot/core/dependency-resolver.d.ts +108 -0
- package/dist/autopilot/core/dependency-resolver.d.ts.map +1 -0
- package/dist/autopilot/core/dependency-resolver.js +394 -0
- package/dist/autopilot/core/dependency-resolver.js.map +1 -0
- package/dist/autopilot/core/dispatcher.d.ts +215 -0
- package/dist/autopilot/core/dispatcher.d.ts.map +1 -0
- package/dist/autopilot/core/dispatcher.js +594 -0
- package/dist/autopilot/core/dispatcher.js.map +1 -0
- package/dist/autopilot/core/failure-handler.d.ts +145 -0
- package/dist/autopilot/core/failure-handler.d.ts.map +1 -0
- package/dist/autopilot/core/failure-handler.js +308 -0
- package/dist/autopilot/core/failure-handler.js.map +1 -0
- package/dist/autopilot/core/rate-limit-handler.d.ts +108 -0
- package/dist/autopilot/core/rate-limit-handler.d.ts.map +1 -0
- package/dist/autopilot/core/rate-limit-handler.js +195 -0
- package/dist/autopilot/core/rate-limit-handler.js.map +1 -0
- package/dist/autopilot/core/state-manager.d.ts +160 -0
- package/dist/autopilot/core/state-manager.d.ts.map +1 -0
- package/dist/autopilot/core/state-manager.js +393 -0
- package/dist/autopilot/core/state-manager.js.map +1 -0
- package/dist/autopilot/core/timeout-manager.d.ts +95 -0
- package/dist/autopilot/core/timeout-manager.d.ts.map +1 -0
- package/dist/autopilot/core/timeout-manager.js +188 -0
- package/dist/autopilot/core/timeout-manager.js.map +1 -0
- package/dist/autopilot/git/branch-manager.d.ts +117 -0
- package/dist/autopilot/git/branch-manager.d.ts.map +1 -0
- package/dist/autopilot/git/branch-manager.js +238 -0
- package/dist/autopilot/git/branch-manager.js.map +1 -0
- package/dist/autopilot/git/index.d.ts +9 -0
- package/dist/autopilot/git/index.d.ts.map +1 -0
- package/dist/autopilot/git/index.js +9 -0
- package/dist/autopilot/git/index.js.map +1 -0
- package/dist/autopilot/git/merge-manager.d.ts +118 -0
- package/dist/autopilot/git/merge-manager.d.ts.map +1 -0
- package/dist/autopilot/git/merge-manager.js +304 -0
- package/dist/autopilot/git/merge-manager.js.map +1 -0
- package/dist/autopilot/git/worktree-manager.d.ts +128 -0
- package/dist/autopilot/git/worktree-manager.d.ts.map +1 -0
- package/dist/autopilot/git/worktree-manager.js +298 -0
- package/dist/autopilot/git/worktree-manager.js.map +1 -0
- package/dist/autopilot/index.d.ts +30 -0
- package/dist/autopilot/index.d.ts.map +1 -0
- package/dist/autopilot/index.js +55 -0
- package/dist/autopilot/index.js.map +1 -0
- package/dist/autopilot/sync/index.d.ts +7 -0
- package/dist/autopilot/sync/index.d.ts.map +1 -0
- package/dist/autopilot/sync/index.js +7 -0
- package/dist/autopilot/sync/index.js.map +1 -0
- package/dist/autopilot/sync/sync-manager.d.ts +168 -0
- package/dist/autopilot/sync/sync-manager.d.ts.map +1 -0
- package/dist/autopilot/sync/sync-manager.js +303 -0
- package/dist/autopilot/sync/sync-manager.js.map +1 -0
- package/dist/autopilot/types.d.ts +454 -0
- package/dist/autopilot/types.d.ts.map +1 -0
- package/dist/autopilot/types.js +26 -0
- package/dist/autopilot/types.js.map +1 -0
- package/dist/autopilot/utils/audit-logger.d.ts +176 -0
- package/dist/autopilot/utils/audit-logger.d.ts.map +1 -0
- package/dist/autopilot/utils/audit-logger.js +308 -0
- package/dist/autopilot/utils/audit-logger.js.map +1 -0
- package/dist/autopilot/utils/cost-tracker.d.ts +162 -0
- package/dist/autopilot/utils/cost-tracker.d.ts.map +1 -0
- package/dist/autopilot/utils/cost-tracker.js +269 -0
- package/dist/autopilot/utils/cost-tracker.js.map +1 -0
- package/dist/autopilot/utils/index.d.ts +9 -0
- package/dist/autopilot/utils/index.d.ts.map +1 -0
- package/dist/autopilot/utils/index.js +9 -0
- package/dist/autopilot/utils/index.js.map +1 -0
- package/dist/autopilot/utils/progress-reporter.d.ts +132 -0
- package/dist/autopilot/utils/progress-reporter.d.ts.map +1 -0
- package/dist/autopilot/utils/progress-reporter.js +290 -0
- package/dist/autopilot/utils/progress-reporter.js.map +1 -0
- package/dist/autopilot/worker/worker-pool.d.ts +179 -0
- package/dist/autopilot/worker/worker-pool.d.ts.map +1 -0
- package/dist/autopilot/worker/worker-pool.js +331 -0
- package/dist/autopilot/worker/worker-pool.js.map +1 -0
- package/dist/autopilot/worker/worker-session.d.ts +171 -0
- package/dist/autopilot/worker/worker-session.d.ts.map +1 -0
- package/dist/autopilot/worker/worker-session.js +295 -0
- package/dist/autopilot/worker/worker-session.js.map +1 -0
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +4 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/index.js +0 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/core/epic.js +1 -1
- package/dist/tools/core/epic.js.map +1 -1
- package/dist/tools/core/lookup.d.ts.map +1 -1
- package/dist/tools/core/lookup.js +3 -2
- package/dist/tools/core/lookup.js.map +1 -1
- package/dist/tools/core/specification.js +1 -1
- package/dist/tools/core/specification.js.map +1 -1
- package/dist/tools/core/ticket.d.ts.map +1 -1
- package/dist/tools/core/ticket.js +4 -6
- package/dist/tools/core/ticket.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +60 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/validation/index.d.ts.map +1 -1
- package/dist/validation/index.js +4 -1
- package/dist/validation/index.js.map +1 -1
- package/package.json +8 -4
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* Loads configuration from local sources with caching.
|
|
5
|
+
*/
|
|
6
|
+
import { createLogger } from './logger.js';
|
|
7
|
+
const logger = createLogger('ConfigLoader');
|
|
8
|
+
/**
|
|
9
|
+
* Default configuration values.
|
|
10
|
+
*/
|
|
11
|
+
const DEFAULT_CONFIG = {
|
|
12
|
+
mode: 'claude_code',
|
|
13
|
+
maxParallelProcesses: 5,
|
|
14
|
+
requestTimeoutSeconds: 300,
|
|
15
|
+
maxRetries: 3,
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Cache TTL in milliseconds (1 minute).
|
|
19
|
+
*/
|
|
20
|
+
const CACHE_TTL_MS = 60000;
|
|
21
|
+
export class ConfigLoader {
|
|
22
|
+
cache = null;
|
|
23
|
+
cacheTimestamp = 0;
|
|
24
|
+
userId;
|
|
25
|
+
constructor(userId) {
|
|
26
|
+
this.userId = userId;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Get configuration with caching.
|
|
30
|
+
*/
|
|
31
|
+
async getConfig() {
|
|
32
|
+
// Check cache
|
|
33
|
+
if (this.cache && Date.now() - this.cacheTimestamp < CACHE_TTL_MS) {
|
|
34
|
+
logger.debug('Returning cached config');
|
|
35
|
+
return this.cache;
|
|
36
|
+
}
|
|
37
|
+
// For CLI usage, just return defaults or load from local config
|
|
38
|
+
this.cache = this.getDefaults();
|
|
39
|
+
this.cacheTimestamp = Date.now();
|
|
40
|
+
logger.debug('Config loaded', { config: this.cache });
|
|
41
|
+
return this.cache;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Update configuration.
|
|
45
|
+
*/
|
|
46
|
+
async updateConfig(updates) {
|
|
47
|
+
const current = await this.getConfig();
|
|
48
|
+
this.cache = {
|
|
49
|
+
...current,
|
|
50
|
+
...updates,
|
|
51
|
+
mode: 'claude_code', // Always enforce claude_code mode
|
|
52
|
+
};
|
|
53
|
+
this.cacheTimestamp = Date.now();
|
|
54
|
+
logger.info('Config updated', { config: this.cache });
|
|
55
|
+
return this.cache;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Get default configuration.
|
|
59
|
+
*/
|
|
60
|
+
getDefaults() {
|
|
61
|
+
return { ...DEFAULT_CONFIG };
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Invalidate cache.
|
|
65
|
+
*/
|
|
66
|
+
invalidateCache() {
|
|
67
|
+
this.cache = null;
|
|
68
|
+
this.cacheTimestamp = 0;
|
|
69
|
+
logger.debug('Config cache invalidated');
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Set cache directly (useful for testing or initialization).
|
|
73
|
+
*/
|
|
74
|
+
setCache(config) {
|
|
75
|
+
this.cache = config;
|
|
76
|
+
this.cacheTimestamp = Date.now();
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get user ID.
|
|
80
|
+
*/
|
|
81
|
+
getUserId() {
|
|
82
|
+
return this.userId;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Global config loader instances by user ID.
|
|
87
|
+
*/
|
|
88
|
+
const loaders = new Map();
|
|
89
|
+
/**
|
|
90
|
+
* Get or create a config loader for a user.
|
|
91
|
+
*/
|
|
92
|
+
export function getConfigLoader(userId) {
|
|
93
|
+
let loader = loaders.get(userId);
|
|
94
|
+
if (!loader) {
|
|
95
|
+
loader = new ConfigLoader(userId);
|
|
96
|
+
loaders.set(userId, loader);
|
|
97
|
+
}
|
|
98
|
+
return loader;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Create a new config loader.
|
|
102
|
+
*/
|
|
103
|
+
export function createConfigLoader(userId) {
|
|
104
|
+
return new ConfigLoader(userId);
|
|
105
|
+
}
|
|
106
|
+
//# sourceMappingURL=config-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-loader.js","sourceRoot":"","sources":["../../src/ai-provider/config-loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Error Classes
|
|
3
|
+
*
|
|
4
|
+
* Custom error types for different failure scenarios.
|
|
5
|
+
*/
|
|
6
|
+
export declare class AIProviderError extends Error {
|
|
7
|
+
code: string;
|
|
8
|
+
isRetryable: boolean;
|
|
9
|
+
suggestion?: string | undefined;
|
|
10
|
+
constructor(message: string, code: string, isRetryable?: boolean, suggestion?: string | undefined);
|
|
11
|
+
}
|
|
12
|
+
export declare class NotConfiguredError extends AIProviderError {
|
|
13
|
+
constructor();
|
|
14
|
+
}
|
|
15
|
+
export declare class AuthenticationError extends AIProviderError {
|
|
16
|
+
constructor(message?: string);
|
|
17
|
+
}
|
|
18
|
+
export declare class RateLimitError extends AIProviderError {
|
|
19
|
+
constructor(message?: string);
|
|
20
|
+
}
|
|
21
|
+
export declare class TimeoutError extends AIProviderError {
|
|
22
|
+
constructor(timeoutMs: number);
|
|
23
|
+
}
|
|
24
|
+
export declare class CLINotFoundError extends AIProviderError {
|
|
25
|
+
constructor();
|
|
26
|
+
}
|
|
27
|
+
export declare class CircuitOpenError extends AIProviderError {
|
|
28
|
+
constructor();
|
|
29
|
+
}
|
|
30
|
+
export declare class InputValidationError extends AIProviderError {
|
|
31
|
+
constructor(message: string);
|
|
32
|
+
}
|
|
33
|
+
export declare class ProcessSpawnError extends AIProviderError {
|
|
34
|
+
constructor(message: string);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Helper to determine if an error is retryable
|
|
38
|
+
*/
|
|
39
|
+
export declare function isRetryableError(error: unknown): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Helper to get suggestion from error
|
|
42
|
+
*/
|
|
43
|
+
export declare function getErrorSuggestion(error: unknown): string | undefined;
|
|
44
|
+
/**
|
|
45
|
+
* Helper to get error code
|
|
46
|
+
*/
|
|
47
|
+
export declare function getErrorCode(error: unknown): string;
|
|
48
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/ai-provider/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,qBAAa,eAAgB,SAAQ,KAAK;IAG/B,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,OAAO;IACpB,UAAU,CAAC,EAAE,MAAM;gBAH1B,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,WAAW,GAAE,OAAe,EAC5B,UAAU,CAAC,EAAE,MAAM,YAAA;CAM7B;AAED,qBAAa,kBAAmB,SAAQ,eAAe;;CAWtD;AAED,qBAAa,mBAAoB,SAAQ,eAAe;gBAC1C,OAAO,GAAE,MAA4B;CAUlD;AAED,qBAAa,cAAe,SAAQ,eAAe;gBACrC,OAAO,GAAE,MAA6B;CAUnD;AAED,qBAAa,YAAa,SAAQ,eAAe;gBACnC,SAAS,EAAE,MAAM;CAU9B;AAED,qBAAa,gBAAiB,SAAQ,eAAe;;CAWpD;AAED,qBAAa,gBAAiB,SAAQ,eAAe;;CAWpD;AAED,qBAAa,oBAAqB,SAAQ,eAAe;gBAC3C,OAAO,EAAE,MAAM;CAU5B;AAED,qBAAa,iBAAkB,SAAQ,eAAe;gBACxC,OAAO,EAAE,MAAM;CAU5B;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAKxD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAKrE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Error Classes
|
|
3
|
+
*
|
|
4
|
+
* Custom error types for different failure scenarios.
|
|
5
|
+
*/
|
|
6
|
+
export class AIProviderError extends Error {
|
|
7
|
+
code;
|
|
8
|
+
isRetryable;
|
|
9
|
+
suggestion;
|
|
10
|
+
constructor(message, code, isRetryable = false, suggestion) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.isRetryable = isRetryable;
|
|
14
|
+
this.suggestion = suggestion;
|
|
15
|
+
this.name = 'AIProviderError';
|
|
16
|
+
Object.setPrototypeOf(this, AIProviderError.prototype);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export class NotConfiguredError extends AIProviderError {
|
|
20
|
+
constructor() {
|
|
21
|
+
super('AI Provider not configured.', 'NOT_CONFIGURED', false, 'Go to Settings > AI Provider to configure.');
|
|
22
|
+
this.name = 'NotConfiguredError';
|
|
23
|
+
Object.setPrototypeOf(this, NotConfiguredError.prototype);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export class AuthenticationError extends AIProviderError {
|
|
27
|
+
constructor(message = 'Not authenticated') {
|
|
28
|
+
super(message, 'AUTH_ERROR', false, 'Please run: claude login');
|
|
29
|
+
this.name = 'AuthenticationError';
|
|
30
|
+
Object.setPrototypeOf(this, AuthenticationError.prototype);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export class RateLimitError extends AIProviderError {
|
|
34
|
+
constructor(message = 'Rate limit reached') {
|
|
35
|
+
super(message, 'RATE_LIMIT', true, 'Account usage limit reached. Please run: claude login (with a different account)');
|
|
36
|
+
this.name = 'RateLimitError';
|
|
37
|
+
Object.setPrototypeOf(this, RateLimitError.prototype);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export class TimeoutError extends AIProviderError {
|
|
41
|
+
constructor(timeoutMs) {
|
|
42
|
+
super(`Request timed out after ${timeoutMs}ms`, 'TIMEOUT', true, 'The request took too long. Try again or increase the timeout.');
|
|
43
|
+
this.name = 'TimeoutError';
|
|
44
|
+
Object.setPrototypeOf(this, TimeoutError.prototype);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
export class CLINotFoundError extends AIProviderError {
|
|
48
|
+
constructor() {
|
|
49
|
+
super('Claude Code CLI not found', 'CLI_NOT_FOUND', false, 'Please install Claude Code: npm install -g @anthropic-ai/claude-code');
|
|
50
|
+
this.name = 'CLINotFoundError';
|
|
51
|
+
Object.setPrototypeOf(this, CLINotFoundError.prototype);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
export class CircuitOpenError extends AIProviderError {
|
|
55
|
+
constructor() {
|
|
56
|
+
super('Circuit breaker is open', 'CIRCUIT_OPEN', false, 'Service temporarily unavailable. Too many recent failures. Please wait before retrying.');
|
|
57
|
+
this.name = 'CircuitOpenError';
|
|
58
|
+
Object.setPrototypeOf(this, CircuitOpenError.prototype);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
export class InputValidationError extends AIProviderError {
|
|
62
|
+
constructor(message) {
|
|
63
|
+
super(message, 'INPUT_VALIDATION', false, 'Please check your input and try again.');
|
|
64
|
+
this.name = 'InputValidationError';
|
|
65
|
+
Object.setPrototypeOf(this, InputValidationError.prototype);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
export class ProcessSpawnError extends AIProviderError {
|
|
69
|
+
constructor(message) {
|
|
70
|
+
super(message, 'PROCESS_SPAWN', true, 'Failed to spawn Claude CLI process. Please check your installation.');
|
|
71
|
+
this.name = 'ProcessSpawnError';
|
|
72
|
+
Object.setPrototypeOf(this, ProcessSpawnError.prototype);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Helper to determine if an error is retryable
|
|
77
|
+
*/
|
|
78
|
+
export function isRetryableError(error) {
|
|
79
|
+
if (error instanceof AIProviderError) {
|
|
80
|
+
return error.isRetryable;
|
|
81
|
+
}
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Helper to get suggestion from error
|
|
86
|
+
*/
|
|
87
|
+
export function getErrorSuggestion(error) {
|
|
88
|
+
if (error instanceof AIProviderError) {
|
|
89
|
+
return error.suggestion;
|
|
90
|
+
}
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Helper to get error code
|
|
95
|
+
*/
|
|
96
|
+
export function getErrorCode(error) {
|
|
97
|
+
if (error instanceof AIProviderError) {
|
|
98
|
+
return error.code;
|
|
99
|
+
}
|
|
100
|
+
return 'UNKNOWN';
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/ai-provider/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Event System
|
|
3
|
+
*
|
|
4
|
+
* Typed EventEmitter for rate limits, authentication, and process events.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
export interface RateLimitHitPayload {
|
|
8
|
+
message: string;
|
|
9
|
+
timestamp?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface AuthFailedPayload {
|
|
12
|
+
error: string;
|
|
13
|
+
suggestion: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ProcessSpawnedPayload {
|
|
16
|
+
requestId: string;
|
|
17
|
+
workingDirectory?: string;
|
|
18
|
+
}
|
|
19
|
+
export interface ProcessCompletedPayload {
|
|
20
|
+
requestId: string;
|
|
21
|
+
durationMs: number;
|
|
22
|
+
success: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface ProcessFailedPayload {
|
|
25
|
+
requestId: string;
|
|
26
|
+
error: string;
|
|
27
|
+
errorType?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface CircuitStateChangePayload {
|
|
30
|
+
previousState: string;
|
|
31
|
+
newState: string;
|
|
32
|
+
}
|
|
33
|
+
export interface AIProviderEvents {
|
|
34
|
+
'rate_limit:hit': RateLimitHitPayload;
|
|
35
|
+
'rate_limit:cleared': void;
|
|
36
|
+
'auth:failed': AuthFailedPayload;
|
|
37
|
+
'auth:success': void;
|
|
38
|
+
'process:spawned': ProcessSpawnedPayload;
|
|
39
|
+
'process:completed': ProcessCompletedPayload;
|
|
40
|
+
'process:failed': ProcessFailedPayload;
|
|
41
|
+
'circuit_breaker:opened': CircuitStateChangePayload;
|
|
42
|
+
'circuit_breaker:half_open': CircuitStateChangePayload;
|
|
43
|
+
'circuit_breaker:closed': CircuitStateChangePayload;
|
|
44
|
+
'shutdown:started': void;
|
|
45
|
+
'shutdown:completed': void;
|
|
46
|
+
}
|
|
47
|
+
declare class TypedEventEmitter extends EventEmitter {
|
|
48
|
+
emit<K extends keyof AIProviderEvents>(event: K, payload?: AIProviderEvents[K]): boolean;
|
|
49
|
+
on<K extends keyof AIProviderEvents>(event: K, listener: (payload: AIProviderEvents[K]) => void): this;
|
|
50
|
+
once<K extends keyof AIProviderEvents>(event: K, listener: (payload: AIProviderEvents[K]) => void): this;
|
|
51
|
+
off<K extends keyof AIProviderEvents>(event: K, listener: (payload: AIProviderEvents[K]) => void): this;
|
|
52
|
+
removeAllListeners<K extends keyof AIProviderEvents>(event?: K): this;
|
|
53
|
+
listeners<K extends keyof AIProviderEvents>(event: K): Function[];
|
|
54
|
+
}
|
|
55
|
+
export declare const aiProviderEvents: TypedEventEmitter;
|
|
56
|
+
/**
|
|
57
|
+
* Subscribe to rate limit events
|
|
58
|
+
*/
|
|
59
|
+
export declare function onRateLimitHit(callback: (payload: RateLimitHitPayload) => void): () => void;
|
|
60
|
+
/**
|
|
61
|
+
* Subscribe to auth failure events
|
|
62
|
+
*/
|
|
63
|
+
export declare function onAuthFailed(callback: (payload: AuthFailedPayload) => void): () => void;
|
|
64
|
+
/**
|
|
65
|
+
* Subscribe to process events
|
|
66
|
+
*/
|
|
67
|
+
export declare function onProcessEvent(event: 'spawned' | 'completed' | 'failed', callback: (payload: ProcessSpawnedPayload | ProcessCompletedPayload | ProcessFailedPayload) => void): () => void;
|
|
68
|
+
/**
|
|
69
|
+
* Subscribe to circuit breaker state changes
|
|
70
|
+
*/
|
|
71
|
+
export declare function onCircuitBreakerChange(callback: (payload: CircuitStateChangePayload) => void): () => void;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/ai-provider/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Event System
|
|
3
|
+
*
|
|
4
|
+
* Typed EventEmitter for rate limits, authentication, and process events.
|
|
5
|
+
*/
|
|
6
|
+
import { EventEmitter } from 'events';
|
|
7
|
+
// ============================================================================
|
|
8
|
+
// Typed Event Emitter
|
|
9
|
+
// ============================================================================
|
|
10
|
+
class TypedEventEmitter extends EventEmitter {
|
|
11
|
+
emit(event, payload) {
|
|
12
|
+
return super.emit(event, payload);
|
|
13
|
+
}
|
|
14
|
+
on(event, listener) {
|
|
15
|
+
return super.on(event, listener);
|
|
16
|
+
}
|
|
17
|
+
once(event, listener) {
|
|
18
|
+
return super.once(event, listener);
|
|
19
|
+
}
|
|
20
|
+
off(event, listener) {
|
|
21
|
+
return super.off(event, listener);
|
|
22
|
+
}
|
|
23
|
+
removeAllListeners(event) {
|
|
24
|
+
return super.removeAllListeners(event);
|
|
25
|
+
}
|
|
26
|
+
listeners(event) {
|
|
27
|
+
return super.listeners(event);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
// ============================================================================
|
|
31
|
+
// Singleton Instance
|
|
32
|
+
// ============================================================================
|
|
33
|
+
export const aiProviderEvents = new TypedEventEmitter();
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// Helper Functions
|
|
36
|
+
// ============================================================================
|
|
37
|
+
/**
|
|
38
|
+
* Subscribe to rate limit events
|
|
39
|
+
*/
|
|
40
|
+
export function onRateLimitHit(callback) {
|
|
41
|
+
aiProviderEvents.on('rate_limit:hit', callback);
|
|
42
|
+
return () => aiProviderEvents.off('rate_limit:hit', callback);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Subscribe to auth failure events
|
|
46
|
+
*/
|
|
47
|
+
export function onAuthFailed(callback) {
|
|
48
|
+
aiProviderEvents.on('auth:failed', callback);
|
|
49
|
+
return () => aiProviderEvents.off('auth:failed', callback);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Subscribe to process events
|
|
53
|
+
*/
|
|
54
|
+
export function onProcessEvent(event, callback) {
|
|
55
|
+
const eventName = `process:${event}`;
|
|
56
|
+
aiProviderEvents.on(eventName, callback);
|
|
57
|
+
return () => aiProviderEvents.off(eventName, callback);
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Subscribe to circuit breaker state changes
|
|
61
|
+
*/
|
|
62
|
+
export function onCircuitBreakerChange(callback) {
|
|
63
|
+
const unsubOpen = () => aiProviderEvents.off('circuit_breaker:opened', callback);
|
|
64
|
+
const unsubHalfOpen = () => aiProviderEvents.off('circuit_breaker:half_open', callback);
|
|
65
|
+
const unsubClosed = () => aiProviderEvents.off('circuit_breaker:closed', callback);
|
|
66
|
+
aiProviderEvents.on('circuit_breaker:opened', callback);
|
|
67
|
+
aiProviderEvents.on('circuit_breaker:half_open', callback);
|
|
68
|
+
aiProviderEvents.on('circuit_breaker:closed', callback);
|
|
69
|
+
return () => {
|
|
70
|
+
unsubOpen();
|
|
71
|
+
unsubHalfOpen();
|
|
72
|
+
unsubClosed();
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/ai-provider/events.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAyDtC,+EAA+E;AAC/E,sBAAsB;AACtB,+EAA+E;AAE/E,MAAM,iBAAkB,SAAQ,YAAY;IAC1C,IAAI,CACF,KAAQ,EACR,OAA6B;QAE7B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAED,EAAE,CACA,KAAQ,EACR,QAAgD;QAEhD,OAAO,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,CACF,KAAQ,EACR,QAAgD;QAEhD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,CACD,KAAQ,EACR,QAAgD;QAEhD,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,kBAAkB,CAAmC,KAAS;QAC5D,OAAO,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,SAAS,CAAmC,KAAQ;QAClD,OAAO,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;CACF;AAED,+EAA+E;AAC/E,qBAAqB;AACrB,+EAA+E;AAE/E,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,iBAAiB,EAAE,CAAC;AAExD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgD;IAEhD,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAChD,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAChE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,QAA8C;IAE9C,gBAAgB,CAAC,EAAE,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC7C,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;AAC7D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAyC,EACzC,QAAmG;IAEnG,MAAM,SAAS,GAAG,WAAW,KAAK,EAA4B,CAAC;IAC/D,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,QAAiE,CAAC,CAAC;IAClG,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAiE,CAAC,CAAC;AAClH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,QAAsD;IAEtD,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACjF,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;IACxF,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAEnF,gBAAgB,CAAC,EAAE,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IACxD,gBAAgB,CAAC,EAAE,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;IAC3D,gBAAgB,CAAC,EAAE,CAAC,wBAAwB,EAAE,QAAQ,CAAC,CAAC;IAExD,OAAO,GAAG,EAAE;QACV,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,CAAC;IAChB,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates configured AI provider instances.
|
|
5
|
+
*/
|
|
6
|
+
import type { AIProvider, AIProviderConfig } from './types.js';
|
|
7
|
+
/**
|
|
8
|
+
* Create an AI provider based on configuration.
|
|
9
|
+
*
|
|
10
|
+
* @param config - The provider configuration
|
|
11
|
+
* @returns An initialized AI provider
|
|
12
|
+
* @throws {NotConfiguredError} If mode is not supported
|
|
13
|
+
*/
|
|
14
|
+
export declare function createAIProvider(config: AIProviderConfig): Promise<AIProvider>;
|
|
15
|
+
/**
|
|
16
|
+
* Create a provider with defaults for quick usage.
|
|
17
|
+
*/
|
|
18
|
+
export declare function createDefaultProvider(workingDirectory?: string): Promise<AIProvider>;
|
|
19
|
+
/**
|
|
20
|
+
* Validate configuration before creating provider.
|
|
21
|
+
*/
|
|
22
|
+
export declare function validateConfig(config: Partial<AIProviderConfig>): string[];
|
|
23
|
+
/**
|
|
24
|
+
* Get default configuration values.
|
|
25
|
+
*/
|
|
26
|
+
export declare function getDefaultConfig(): AIProviderConfig;
|
|
27
|
+
/**
|
|
28
|
+
* Merge partial config with defaults.
|
|
29
|
+
*/
|
|
30
|
+
export declare function mergeWithDefaults(partial?: Partial<AIProviderConfig>): AIProviderConfig;
|
|
31
|
+
//# sourceMappingURL=factory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/ai-provider/factory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAO/D;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,gBAAgB,GACvB,OAAO,CAAC,UAAU,CAAC,CAYrB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,gBAAgB,CAAC,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,CAAC,CAQrB;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,MAAM,EAAE,CAmC1E;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAOnD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAClC,gBAAgB,CAelB"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates configured AI provider instances.
|
|
5
|
+
*/
|
|
6
|
+
import { createClaudeCodeProvider } from './providers/claude-code.js';
|
|
7
|
+
import { createLogger } from './logger.js';
|
|
8
|
+
const logger = createLogger('AIProviderFactory');
|
|
9
|
+
/**
|
|
10
|
+
* Create an AI provider based on configuration.
|
|
11
|
+
*
|
|
12
|
+
* @param config - The provider configuration
|
|
13
|
+
* @returns An initialized AI provider
|
|
14
|
+
* @throws {NotConfiguredError} If mode is not supported
|
|
15
|
+
*/
|
|
16
|
+
export async function createAIProvider(config) {
|
|
17
|
+
logger.info('Creating AI provider', { mode: config.mode });
|
|
18
|
+
if (config.mode !== 'claude_code') {
|
|
19
|
+
throw new Error(`Unsupported mode: ${config.mode}. Only claude_code is supported.`);
|
|
20
|
+
}
|
|
21
|
+
const provider = createClaudeCodeProvider(config);
|
|
22
|
+
await provider.initialize();
|
|
23
|
+
logger.info('AI provider created successfully', { mode: config.mode });
|
|
24
|
+
return provider;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a provider with defaults for quick usage.
|
|
28
|
+
*/
|
|
29
|
+
export async function createDefaultProvider(workingDirectory) {
|
|
30
|
+
return createAIProvider({
|
|
31
|
+
mode: 'claude_code',
|
|
32
|
+
maxParallelProcesses: 5,
|
|
33
|
+
requestTimeoutSeconds: 300,
|
|
34
|
+
maxRetries: 3,
|
|
35
|
+
workingDirectory: workingDirectory || process.cwd(),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validate configuration before creating provider.
|
|
40
|
+
*/
|
|
41
|
+
export function validateConfig(config) {
|
|
42
|
+
const errors = [];
|
|
43
|
+
if (config.mode && config.mode !== 'claude_code') {
|
|
44
|
+
errors.push(`Invalid mode: ${config.mode}. Only 'claude_code' is supported.`);
|
|
45
|
+
}
|
|
46
|
+
if (config.maxParallelProcesses !== undefined) {
|
|
47
|
+
if (!Number.isInteger(config.maxParallelProcesses) || config.maxParallelProcesses < 1) {
|
|
48
|
+
errors.push('maxParallelProcesses must be a positive integer');
|
|
49
|
+
}
|
|
50
|
+
if (config.maxParallelProcesses > 20) {
|
|
51
|
+
errors.push('maxParallelProcesses cannot exceed 20');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (config.requestTimeoutSeconds !== undefined) {
|
|
55
|
+
if (!Number.isInteger(config.requestTimeoutSeconds) || config.requestTimeoutSeconds < 1) {
|
|
56
|
+
errors.push('requestTimeoutSeconds must be a positive integer');
|
|
57
|
+
}
|
|
58
|
+
if (config.requestTimeoutSeconds > 3600) {
|
|
59
|
+
errors.push('requestTimeoutSeconds cannot exceed 3600 (1 hour)');
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (config.maxRetries !== undefined) {
|
|
63
|
+
if (!Number.isInteger(config.maxRetries) || config.maxRetries < 0) {
|
|
64
|
+
errors.push('maxRetries must be a non-negative integer');
|
|
65
|
+
}
|
|
66
|
+
if (config.maxRetries > 10) {
|
|
67
|
+
errors.push('maxRetries cannot exceed 10');
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return errors;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Get default configuration values.
|
|
74
|
+
*/
|
|
75
|
+
export function getDefaultConfig() {
|
|
76
|
+
return {
|
|
77
|
+
mode: 'claude_code',
|
|
78
|
+
maxParallelProcesses: 5,
|
|
79
|
+
requestTimeoutSeconds: 300,
|
|
80
|
+
maxRetries: 3,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Merge partial config with defaults.
|
|
85
|
+
*/
|
|
86
|
+
export function mergeWithDefaults(partial) {
|
|
87
|
+
const defaults = getDefaultConfig();
|
|
88
|
+
if (!partial) {
|
|
89
|
+
return defaults;
|
|
90
|
+
}
|
|
91
|
+
return {
|
|
92
|
+
mode: partial.mode ?? defaults.mode,
|
|
93
|
+
maxParallelProcesses: partial.maxParallelProcesses ?? defaults.maxParallelProcesses,
|
|
94
|
+
requestTimeoutSeconds: partial.requestTimeoutSeconds ?? defaults.requestTimeoutSeconds,
|
|
95
|
+
maxRetries: partial.maxRetries ?? defaults.maxRetries,
|
|
96
|
+
workingDirectory: partial.workingDirectory ?? defaults.workingDirectory,
|
|
97
|
+
circuitBreakerThreshold: partial.circuitBreakerThreshold ?? defaults.circuitBreakerThreshold,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=factory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/ai-provider/factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Module
|
|
3
|
+
*
|
|
4
|
+
* Public exports for the AI Provider module.
|
|
5
|
+
*/
|
|
6
|
+
export type { AIProvider, AIResponse, ProviderStatus, ProviderMode, RunOptions, TestOptions, TestResult, AIProviderConfig, AIProviderConfigInput, ProcessManagerConfig, ProcessResult, ProcessStatus, SpawnResult, ErrorType, CircuitState, CircuitBreakerConfig, RetryConfig, CLIVersionInfo, MetricStats, LogLevel, LogEntry, Span, InstanceState, InstanceInfo, AIProviderAPIResponse, GetConfigResponse, GetStatusResponse, UpdateConfigResponse, TestProviderResponse, } from './types.js';
|
|
7
|
+
export { createAIProvider, createDefaultProvider, validateConfig, getDefaultConfig, mergeWithDefaults, } from './factory.js';
|
|
8
|
+
export { ClaudeCodeProvider, createClaudeCodeProvider, } from './providers/claude-code.js';
|
|
9
|
+
export { ClaudeCodeProcessManager, createProcessManager, } from './process-manager.js';
|
|
10
|
+
export { AIProviderError, NotConfiguredError, AuthenticationError, RateLimitError, TimeoutError, CLINotFoundError, CircuitOpenError, InputValidationError, ProcessSpawnError, isRetryableError, getErrorSuggestion, getErrorCode, } from './errors.js';
|
|
11
|
+
export { aiProviderEvents, onRateLimitHit, onAuthFailed, onProcessEvent, onCircuitBreakerChange, } from './events.js';
|
|
12
|
+
export type { AIProviderEvents, RateLimitHitPayload, AuthFailedPayload, ProcessSpawnedPayload, ProcessCompletedPayload, ProcessFailedPayload, CircuitStateChangePayload, } from './events.js';
|
|
13
|
+
export { Semaphore, } from './semaphore.js';
|
|
14
|
+
export { CircuitBreaker, createCircuitBreaker, } from './circuit-breaker.js';
|
|
15
|
+
export { RetryExecutor, createRetryExecutor, withRetry, } from './retry-executor.js';
|
|
16
|
+
export { InstanceCoordinator, createInstanceCoordinator, } from './instance-coordinator.js';
|
|
17
|
+
export { SafeArgumentBuilder, buildSafeArgs, isValidWorkingDirectory, } from './safe-args.js';
|
|
18
|
+
export { CLIVersionDetector, getCLIVersionDetector, detectCLIVersion, isCLIInstalled, } from './cli-version.js';
|
|
19
|
+
export { ConfigLoader, getConfigLoader, createConfigLoader, } from './config-loader.js';
|
|
20
|
+
export { Logger, createLogger, } from './logger.js';
|
|
21
|
+
export { Metrics, getMetrics, createMetrics, METRIC_NAMES, } from './metrics.js';
|
|
22
|
+
export { Tracer, getTracer, createTracer, } from './tracer.js';
|
|
23
|
+
export { ProcessLifecycleManager, getLifecycleManager, createLifecycleManager, onShutdown, } from './lifecycle.js';
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai-provider/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,YAAY,EACV,UAAU,EACV,UAAU,EACV,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,EACT,YAAY,EACZ,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,IAAI,EACJ,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAKtB,OAAO,EACL,kBAAkB,EAClB,wBAAwB,GACzB,MAAM,4BAA4B,CAAC;AAKpC,OAAO,EACL,wBAAwB,EACxB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAK9B,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,YAAY,GACb,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,cAAc,EACd,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,SAAS,GACV,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,GACnB,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EACL,MAAM,EACN,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,OAAO,EACP,UAAU,EACV,aAAa,EACb,YAAY,GACb,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,MAAM,EACN,SAAS,EACT,YAAY,GACb,MAAM,aAAa,CAAC;AAKrB,OAAO,EACL,uBAAuB,EACvB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,GACX,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AI Provider Module
|
|
3
|
+
*
|
|
4
|
+
* Public exports for the AI Provider module.
|
|
5
|
+
*/
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Factory
|
|
8
|
+
// ============================================================================
|
|
9
|
+
export { createAIProvider, createDefaultProvider, validateConfig, getDefaultConfig, mergeWithDefaults, } from './factory.js';
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// Provider
|
|
12
|
+
// ============================================================================
|
|
13
|
+
export { ClaudeCodeProvider, createClaudeCodeProvider, } from './providers/claude-code.js';
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// Process Manager
|
|
16
|
+
// ============================================================================
|
|
17
|
+
export { ClaudeCodeProcessManager, createProcessManager, } from './process-manager.js';
|
|
18
|
+
// ============================================================================
|
|
19
|
+
// Errors
|
|
20
|
+
// ============================================================================
|
|
21
|
+
export { AIProviderError, NotConfiguredError, AuthenticationError, RateLimitError, TimeoutError, CLINotFoundError, CircuitOpenError, InputValidationError, ProcessSpawnError, isRetryableError, getErrorSuggestion, getErrorCode, } from './errors.js';
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Events
|
|
24
|
+
// ============================================================================
|
|
25
|
+
export { aiProviderEvents, onRateLimitHit, onAuthFailed, onProcessEvent, onCircuitBreakerChange, } from './events.js';
|
|
26
|
+
// ============================================================================
|
|
27
|
+
// Utilities
|
|
28
|
+
// ============================================================================
|
|
29
|
+
export { Semaphore, } from './semaphore.js';
|
|
30
|
+
export { CircuitBreaker, createCircuitBreaker, } from './circuit-breaker.js';
|
|
31
|
+
export { RetryExecutor, createRetryExecutor, withRetry, } from './retry-executor.js';
|
|
32
|
+
export { InstanceCoordinator, createInstanceCoordinator, } from './instance-coordinator.js';
|
|
33
|
+
export { SafeArgumentBuilder, buildSafeArgs, isValidWorkingDirectory, } from './safe-args.js';
|
|
34
|
+
export { CLIVersionDetector, getCLIVersionDetector, detectCLIVersion, isCLIInstalled, } from './cli-version.js';
|
|
35
|
+
export { ConfigLoader, getConfigLoader, createConfigLoader, } from './config-loader.js';
|
|
36
|
+
// ============================================================================
|
|
37
|
+
// Observability
|
|
38
|
+
// ============================================================================
|
|
39
|
+
export { Logger, createLogger, } from './logger.js';
|
|
40
|
+
export { Metrics, getMetrics, createMetrics, METRIC_NAMES, } from './metrics.js';
|
|
41
|
+
export { Tracer, getTracer, createTracer, } from './tracer.js';
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// Lifecycle
|
|
44
|
+
// ============================================================================
|
|
45
|
+
export { ProcessLifecycleManager, getLifecycleManager, createLifecycleManager, onShutdown, } from './lifecycle.js';
|
|
46
|
+
//# sourceMappingURL=index.js.map
|