@camaradesuk/git-worktree-tools 1.3.0 → 1.4.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 +290 -3
- package/dist/api/clean.d.ts +65 -0
- package/dist/api/clean.d.ts.map +1 -0
- package/dist/api/clean.js +209 -0
- package/dist/api/clean.js.map +1 -0
- package/dist/api/create.d.ts +88 -0
- package/dist/api/create.d.ts.map +1 -0
- package/dist/api/create.js +370 -0
- package/dist/api/create.js.map +1 -0
- package/dist/api/index.d.ts +15 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +19 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/list.d.ts +74 -0
- package/dist/api/list.d.ts.map +1 -0
- package/dist/api/list.js +80 -0
- package/dist/api/list.js.map +1 -0
- package/dist/api/state.d.ts +43 -0
- package/dist/api/state.d.ts.map +1 -0
- package/dist/api/state.js +70 -0
- package/dist/api/state.js.map +1 -0
- package/dist/cli/cleanpr.js +171 -28
- package/dist/cli/cleanpr.js.map +1 -1
- package/dist/cli/cleanpr.test.js +459 -7
- package/dist/cli/cleanpr.test.js.map +1 -1
- package/dist/cli/newpr.js +189 -28
- package/dist/cli/newpr.js.map +1 -1
- package/dist/cli/newpr.test.js +349 -0
- package/dist/cli/newpr.test.js.map +1 -1
- package/dist/cli/wtconfig.d.ts +14 -0
- package/dist/cli/wtconfig.d.ts.map +1 -0
- package/dist/cli/wtconfig.js +948 -0
- package/dist/cli/wtconfig.js.map +1 -0
- package/dist/cli/wtconfig.test.d.ts +5 -0
- package/dist/cli/wtconfig.test.d.ts.map +1 -0
- package/dist/cli/wtconfig.test.js +1281 -0
- package/dist/cli/wtconfig.test.js.map +1 -0
- package/dist/cli/wtlink.js +5 -0
- package/dist/cli/wtlink.js.map +1 -1
- package/dist/cli/wtstate.d.ts +8 -0
- package/dist/cli/wtstate.d.ts.map +1 -0
- package/dist/cli/wtstate.js +83 -0
- package/dist/cli/wtstate.js.map +1 -0
- package/dist/cli/wtstate.test.d.ts +5 -0
- package/dist/cli/wtstate.test.d.ts.map +1 -0
- package/dist/cli/wtstate.test.js +193 -0
- package/dist/cli/wtstate.test.js.map +1 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts +2 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts.map +1 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.js +326 -0
- package/dist/e2e/cleanpr/cleanpr.e2e.test.js.map +1 -0
- package/dist/e2e/helpers/cli-runner.d.ts +103 -0
- package/dist/e2e/helpers/cli-runner.d.ts.map +1 -0
- package/dist/e2e/helpers/cli-runner.js +200 -0
- package/dist/e2e/helpers/cli-runner.js.map +1 -0
- package/dist/e2e/helpers/gh-mock.d.ts +87 -0
- package/dist/e2e/helpers/gh-mock.d.ts.map +1 -0
- package/dist/e2e/helpers/gh-mock.js +384 -0
- package/dist/e2e/helpers/gh-mock.js.map +1 -0
- package/dist/e2e/helpers/index.d.ts +12 -0
- package/dist/e2e/helpers/index.d.ts.map +1 -0
- package/dist/e2e/helpers/index.js +16 -0
- package/dist/e2e/helpers/index.js.map +1 -0
- package/dist/e2e/helpers/pty-wrapper.d.ts +118 -0
- package/dist/e2e/helpers/pty-wrapper.d.ts.map +1 -0
- package/dist/e2e/helpers/pty-wrapper.js +276 -0
- package/dist/e2e/helpers/pty-wrapper.js.map +1 -0
- package/dist/e2e/helpers/scenario-harness.d.ts +55 -0
- package/dist/e2e/helpers/scenario-harness.d.ts.map +1 -0
- package/dist/e2e/helpers/scenario-harness.js +360 -0
- package/dist/e2e/helpers/scenario-harness.js.map +1 -0
- package/dist/e2e/helpers/test-context.d.ts +120 -0
- package/dist/e2e/helpers/test-context.d.ts.map +1 -0
- package/dist/e2e/helpers/test-context.js +263 -0
- package/dist/e2e/helpers/test-context.js.map +1 -0
- package/dist/e2e/lswt/lswt.e2e.test.d.ts +2 -0
- package/dist/e2e/lswt/lswt.e2e.test.d.ts.map +1 -0
- package/dist/e2e/lswt/lswt.e2e.test.js +328 -0
- package/dist/e2e/lswt/lswt.e2e.test.js.map +1 -0
- package/dist/e2e/newpr/newpr.e2e.test.d.ts +2 -0
- package/dist/e2e/newpr/newpr.e2e.test.d.ts.map +1 -0
- package/dist/e2e/newpr/newpr.e2e.test.js +286 -0
- package/dist/e2e/newpr/newpr.e2e.test.js.map +1 -0
- package/dist/e2e/newpr/scenarios.e2e.test.d.ts +2 -0
- package/dist/e2e/newpr/scenarios.e2e.test.d.ts.map +1 -0
- package/dist/e2e/newpr/scenarios.e2e.test.js +426 -0
- package/dist/e2e/newpr/scenarios.e2e.test.js.map +1 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts +2 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts.map +1 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.js +298 -0
- package/dist/e2e/workflows/pr-lifecycle.e2e.test.js.map +1 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.d.ts +2 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.d.ts.map +1 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.js +364 -0
- package/dist/e2e/wtlink/wtlink.e2e.test.js.map +1 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/ai/base-provider.d.ts +58 -0
- package/dist/lib/ai/base-provider.d.ts.map +1 -0
- package/dist/lib/ai/base-provider.js +246 -0
- package/dist/lib/ai/base-provider.js.map +1 -0
- package/dist/lib/ai/base-provider.test.d.ts +7 -0
- package/dist/lib/ai/base-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/base-provider.test.js +320 -0
- package/dist/lib/ai/base-provider.test.js.map +1 -0
- package/dist/lib/ai/cli-provider.d.ts +87 -0
- package/dist/lib/ai/cli-provider.d.ts.map +1 -0
- package/dist/lib/ai/cli-provider.js +280 -0
- package/dist/lib/ai/cli-provider.js.map +1 -0
- package/dist/lib/ai/cli-provider.test.d.ts +5 -0
- package/dist/lib/ai/cli-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/cli-provider.test.js +462 -0
- package/dist/lib/ai/cli-provider.test.js.map +1 -0
- package/dist/lib/ai/fallback-provider.d.ts +20 -0
- package/dist/lib/ai/fallback-provider.d.ts.map +1 -0
- package/dist/lib/ai/fallback-provider.js +125 -0
- package/dist/lib/ai/fallback-provider.js.map +1 -0
- package/dist/lib/ai/fallback-provider.test.d.ts +7 -0
- package/dist/lib/ai/fallback-provider.test.d.ts.map +1 -0
- package/dist/lib/ai/fallback-provider.test.js +165 -0
- package/dist/lib/ai/fallback-provider.test.js.map +1 -0
- package/dist/lib/ai/generation-service.d.ts +44 -0
- package/dist/lib/ai/generation-service.d.ts.map +1 -0
- package/dist/lib/ai/generation-service.js +107 -0
- package/dist/lib/ai/generation-service.js.map +1 -0
- package/dist/lib/ai/generation-service.test.d.ts +7 -0
- package/dist/lib/ai/generation-service.test.d.ts.map +1 -0
- package/dist/lib/ai/generation-service.test.js +213 -0
- package/dist/lib/ai/generation-service.test.js.map +1 -0
- package/dist/lib/ai/index.d.ts +19 -0
- package/dist/lib/ai/index.d.ts.map +1 -0
- package/dist/lib/ai/index.js +22 -0
- package/dist/lib/ai/index.js.map +1 -0
- package/dist/lib/ai/provider-manager.d.ts +109 -0
- package/dist/lib/ai/provider-manager.d.ts.map +1 -0
- package/dist/lib/ai/provider-manager.js +270 -0
- package/dist/lib/ai/provider-manager.js.map +1 -0
- package/dist/lib/ai/provider-manager.test.d.ts +5 -0
- package/dist/lib/ai/provider-manager.test.d.ts.map +1 -0
- package/dist/lib/ai/provider-manager.test.js +312 -0
- package/dist/lib/ai/provider-manager.test.js.map +1 -0
- package/dist/lib/ai/types.d.ts +166 -0
- package/dist/lib/ai/types.d.ts.map +1 -0
- package/dist/lib/ai/types.js +19 -0
- package/dist/lib/ai/types.js.map +1 -0
- package/dist/lib/cleanpr/args.d.ts.map +1 -1
- package/dist/lib/cleanpr/args.js +18 -0
- package/dist/lib/cleanpr/args.js.map +1 -1
- package/dist/lib/cleanpr/args.test.js +88 -11
- package/dist/lib/cleanpr/args.test.js.map +1 -1
- package/dist/lib/cleanpr/cleanup.d.ts +2 -0
- package/dist/lib/cleanpr/cleanup.d.ts.map +1 -1
- package/dist/lib/cleanpr/cleanup.js +30 -2
- package/dist/lib/cleanpr/cleanup.js.map +1 -1
- package/dist/lib/cleanpr/cleanup.test.js +37 -5
- package/dist/lib/cleanpr/cleanup.test.js.map +1 -1
- package/dist/lib/cleanpr/types.d.ts +10 -0
- package/dist/lib/cleanpr/types.d.ts.map +1 -1
- package/dist/lib/cleanpr/worktree-info.test.js +72 -1
- package/dist/lib/cleanpr/worktree-info.test.js.map +1 -1
- package/dist/lib/config.d.ts +170 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +129 -2
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/config.test.js +406 -2
- package/dist/lib/config.test.js.map +1 -1
- package/dist/lib/hooks/executor.d.ts +35 -0
- package/dist/lib/hooks/executor.d.ts.map +1 -0
- package/dist/lib/hooks/executor.js +401 -0
- package/dist/lib/hooks/executor.js.map +1 -0
- package/dist/lib/hooks/executor.test.d.ts +5 -0
- package/dist/lib/hooks/executor.test.d.ts.map +1 -0
- package/dist/lib/hooks/executor.test.js +648 -0
- package/dist/lib/hooks/executor.test.js.map +1 -0
- package/dist/lib/hooks/index.d.ts +25 -0
- package/dist/lib/hooks/index.d.ts.map +1 -0
- package/dist/lib/hooks/index.js +26 -0
- package/dist/lib/hooks/index.js.map +1 -0
- package/dist/lib/hooks/templates.d.ts +74 -0
- package/dist/lib/hooks/templates.d.ts.map +1 -0
- package/dist/lib/hooks/templates.js +270 -0
- package/dist/lib/hooks/templates.js.map +1 -0
- package/dist/lib/hooks/templates.test.d.ts +5 -0
- package/dist/lib/hooks/templates.test.d.ts.map +1 -0
- package/dist/lib/hooks/templates.test.js +163 -0
- package/dist/lib/hooks/templates.test.js.map +1 -0
- package/dist/lib/hooks/types.d.ts +161 -0
- package/dist/lib/hooks/types.d.ts.map +1 -0
- package/dist/lib/hooks/types.js +73 -0
- package/dist/lib/hooks/types.js.map +1 -0
- package/dist/lib/hooks/types.test.d.ts +5 -0
- package/dist/lib/hooks/types.test.d.ts.map +1 -0
- package/dist/lib/hooks/types.test.js +132 -0
- package/dist/lib/hooks/types.test.js.map +1 -0
- package/dist/lib/json-output.d.ts +172 -0
- package/dist/lib/json-output.d.ts.map +1 -0
- package/dist/lib/json-output.js +134 -0
- package/dist/lib/json-output.js.map +1 -0
- package/dist/lib/json-output.test.d.ts +5 -0
- package/dist/lib/json-output.test.d.ts.map +1 -0
- package/dist/lib/json-output.test.js +259 -0
- package/dist/lib/json-output.test.js.map +1 -0
- package/dist/lib/lswt/action-executors.test.js +6 -0
- package/dist/lib/lswt/action-executors.test.js.map +1 -1
- package/dist/lib/newpr/action-deps.d.ts +15 -0
- package/dist/lib/newpr/action-deps.d.ts.map +1 -0
- package/dist/lib/newpr/action-deps.js +22 -0
- package/dist/lib/newpr/action-deps.js.map +1 -0
- package/dist/lib/newpr/args.d.ts.map +1 -1
- package/dist/lib/newpr/args.js +56 -0
- package/dist/lib/newpr/args.js.map +1 -1
- package/dist/lib/newpr/hook-runner.d.ts +80 -0
- package/dist/lib/newpr/hook-runner.d.ts.map +1 -0
- package/dist/lib/newpr/hook-runner.js +182 -0
- package/dist/lib/newpr/hook-runner.js.map +1 -0
- package/dist/lib/newpr/hook-runner.test.d.ts +7 -0
- package/dist/lib/newpr/hook-runner.test.d.ts.map +1 -0
- package/dist/lib/newpr/hook-runner.test.js +301 -0
- package/dist/lib/newpr/hook-runner.test.js.map +1 -0
- package/dist/lib/newpr/index.d.ts +3 -0
- package/dist/lib/newpr/index.d.ts.map +1 -1
- package/dist/lib/newpr/index.js +3 -0
- package/dist/lib/newpr/index.js.map +1 -1
- package/dist/lib/newpr/types.d.ts +9 -0
- package/dist/lib/newpr/types.d.ts.map +1 -1
- package/dist/lib/wtconfig/config-manager.d.ts +72 -0
- package/dist/lib/wtconfig/config-manager.d.ts.map +1 -0
- package/dist/lib/wtconfig/config-manager.js +408 -0
- package/dist/lib/wtconfig/config-manager.js.map +1 -0
- package/dist/lib/wtconfig/config-manager.test.d.ts +5 -0
- package/dist/lib/wtconfig/config-manager.test.d.ts.map +1 -0
- package/dist/lib/wtconfig/config-manager.test.js +501 -0
- package/dist/lib/wtconfig/config-manager.test.js.map +1 -0
- package/dist/lib/wtconfig/environment.d.ts +23 -0
- package/dist/lib/wtconfig/environment.d.ts.map +1 -0
- package/dist/lib/wtconfig/environment.js +238 -0
- package/dist/lib/wtconfig/environment.js.map +1 -0
- package/dist/lib/wtconfig/environment.test.d.ts +5 -0
- package/dist/lib/wtconfig/environment.test.d.ts.map +1 -0
- package/dist/lib/wtconfig/environment.test.js +246 -0
- package/dist/lib/wtconfig/environment.test.js.map +1 -0
- package/dist/lib/wtconfig/index.d.ts +7 -0
- package/dist/lib/wtconfig/index.d.ts.map +1 -0
- package/dist/lib/wtconfig/index.js +8 -0
- package/dist/lib/wtconfig/index.js.map +1 -0
- package/dist/lib/wtconfig/types.d.ts +97 -0
- package/dist/lib/wtconfig/types.d.ts.map +1 -0
- package/dist/lib/wtconfig/types.js +5 -0
- package/dist/lib/wtconfig/types.js.map +1 -0
- package/dist/lib/wtstate/analyze.d.ts +13 -0
- package/dist/lib/wtstate/analyze.d.ts.map +1 -0
- package/dist/lib/wtstate/analyze.js +165 -0
- package/dist/lib/wtstate/analyze.js.map +1 -0
- package/dist/lib/wtstate/analyze.test.d.ts +5 -0
- package/dist/lib/wtstate/analyze.test.d.ts.map +1 -0
- package/dist/lib/wtstate/analyze.test.js +282 -0
- package/dist/lib/wtstate/analyze.test.js.map +1 -0
- package/dist/lib/wtstate/args.d.ts +17 -0
- package/dist/lib/wtstate/args.d.ts.map +1 -0
- package/dist/lib/wtstate/args.js +91 -0
- package/dist/lib/wtstate/args.js.map +1 -0
- package/dist/lib/wtstate/args.test.d.ts +5 -0
- package/dist/lib/wtstate/args.test.d.ts.map +1 -0
- package/dist/lib/wtstate/args.test.js +120 -0
- package/dist/lib/wtstate/args.test.js.map +1 -0
- package/dist/lib/wtstate/index.d.ts +7 -0
- package/dist/lib/wtstate/index.d.ts.map +1 -0
- package/dist/lib/wtstate/index.js +8 -0
- package/dist/lib/wtstate/index.js.map +1 -0
- package/dist/lib/wtstate/types.d.ts +64 -0
- package/dist/lib/wtstate/types.d.ts.map +1 -0
- package/dist/lib/wtstate/types.js +5 -0
- package/dist/lib/wtstate/types.js.map +1 -0
- package/dist/mcp/server.d.ts +14 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +339 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/server.test.d.ts +9 -0
- package/dist/mcp/server.test.d.ts.map +1 -0
- package/dist/mcp/server.test.js +390 -0
- package/dist/mcp/server.test.js.map +1 -0
- package/package.json +8 -2
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI-based AI Providers
|
|
3
|
+
*
|
|
4
|
+
* Providers that use command-line AI tools (Claude Code, Gemini CLI, etc.)
|
|
5
|
+
*/
|
|
6
|
+
import type { AIGenerationResult } from './types.js';
|
|
7
|
+
import { BaseAIProvider } from './base-provider.js';
|
|
8
|
+
/**
|
|
9
|
+
* Claude Code CLI provider
|
|
10
|
+
*
|
|
11
|
+
* Uses the `claude` command-line tool for generation.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ClaudeProvider extends BaseAIProvider {
|
|
14
|
+
readonly name = "claude";
|
|
15
|
+
private model;
|
|
16
|
+
constructor(model?: string);
|
|
17
|
+
/**
|
|
18
|
+
* Static availability check for lazy initialization
|
|
19
|
+
* Avoids creating a provider instance just to check availability.
|
|
20
|
+
*/
|
|
21
|
+
static checkAvailability(): Promise<boolean>;
|
|
22
|
+
isAvailable(): Promise<boolean>;
|
|
23
|
+
protected generate(prompt: string): Promise<AIGenerationResult>;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Gemini CLI provider
|
|
27
|
+
*
|
|
28
|
+
* Uses the `gemini` command-line tool for generation.
|
|
29
|
+
*/
|
|
30
|
+
export declare class GeminiProvider extends BaseAIProvider {
|
|
31
|
+
readonly name = "gemini";
|
|
32
|
+
private model;
|
|
33
|
+
constructor(model?: string);
|
|
34
|
+
/**
|
|
35
|
+
* Static availability check for lazy initialization
|
|
36
|
+
*/
|
|
37
|
+
static checkAvailability(): Promise<boolean>;
|
|
38
|
+
isAvailable(): Promise<boolean>;
|
|
39
|
+
protected generate(prompt: string): Promise<AIGenerationResult>;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Ollama local AI provider
|
|
43
|
+
*
|
|
44
|
+
* Uses the local Ollama server for generation.
|
|
45
|
+
*/
|
|
46
|
+
export declare class OllamaProvider extends BaseAIProvider {
|
|
47
|
+
readonly name = "ollama";
|
|
48
|
+
private model;
|
|
49
|
+
private host;
|
|
50
|
+
constructor(model?: string, host?: string);
|
|
51
|
+
/**
|
|
52
|
+
* Static availability check for lazy initialization
|
|
53
|
+
*/
|
|
54
|
+
static checkAvailability(host?: string): Promise<boolean>;
|
|
55
|
+
isAvailable(): Promise<boolean>;
|
|
56
|
+
protected generate(prompt: string): Promise<AIGenerationResult>;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* OpenAI API provider
|
|
60
|
+
*
|
|
61
|
+
* Uses the OpenAI API via curl (no SDK dependency).
|
|
62
|
+
*/
|
|
63
|
+
export declare class OpenAIProvider extends BaseAIProvider {
|
|
64
|
+
readonly name = "openai";
|
|
65
|
+
private model;
|
|
66
|
+
private apiKeyEnv;
|
|
67
|
+
constructor(model?: string, apiKeyEnv?: string);
|
|
68
|
+
/**
|
|
69
|
+
* Static availability check for lazy initialization
|
|
70
|
+
*/
|
|
71
|
+
static checkAvailability(apiKeyEnv?: string): Promise<boolean>;
|
|
72
|
+
isAvailable(): Promise<boolean>;
|
|
73
|
+
protected generate(prompt: string): Promise<AIGenerationResult>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Custom script provider
|
|
77
|
+
*
|
|
78
|
+
* Runs a user-defined script for generation.
|
|
79
|
+
*/
|
|
80
|
+
export declare class ScriptProvider extends BaseAIProvider {
|
|
81
|
+
readonly name = "script";
|
|
82
|
+
private scriptPath;
|
|
83
|
+
constructor(scriptPath: string);
|
|
84
|
+
isAvailable(): Promise<boolean>;
|
|
85
|
+
protected generate(prompt: string): Promise<AIGenerationResult>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=cli-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-provider.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/cli-provider.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,cAAc,EAA0C,MAAM,oBAAoB,CAAC;AAwC5F;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,SAA6B;IAK9C;;;OAGG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAIrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAWtE;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;gBAEV,KAAK,SAAqB;IAKtC;;OAEG;IACH,MAAM,CAAC,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAItC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAIrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAUtE;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,IAAI,CAAS;gBAET,KAAK,SAAkB,EAAE,IAAI,SAA2B;IAMpE;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,IAAI,SAA2B,GAAG,OAAO,CAAC,OAAO,CAAC;IAarE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAIrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA0CtE;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,SAAS,CAAS;gBAEd,KAAK,SAAW,EAAE,SAAS,SAAmB;IAM1D;;OAEG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,SAAmB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAIrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAoDtE;AAED;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,MAAM;IAKxB,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;cAUrB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CAUtE"}
|
|
@@ -0,0 +1,280 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLI-based AI Providers
|
|
3
|
+
*
|
|
4
|
+
* Providers that use command-line AI tools (Claude Code, Gemini CLI, etc.)
|
|
5
|
+
*/
|
|
6
|
+
import { spawnSync } from 'child_process';
|
|
7
|
+
import { BaseAIProvider, createSuccessResult, createErrorResult } from './base-provider.js';
|
|
8
|
+
/**
|
|
9
|
+
* Check if a command exists in PATH
|
|
10
|
+
*/
|
|
11
|
+
function commandExists(cmd) {
|
|
12
|
+
try {
|
|
13
|
+
const result = spawnSync(process.platform === 'win32' ? 'where' : 'which', [cmd], {
|
|
14
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
15
|
+
encoding: 'utf-8',
|
|
16
|
+
});
|
|
17
|
+
return result.status === 0;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Execute a CLI command and capture output
|
|
25
|
+
*/
|
|
26
|
+
function execCommand(cmd, args, input) {
|
|
27
|
+
const result = spawnSync(cmd, args, {
|
|
28
|
+
input,
|
|
29
|
+
encoding: 'utf-8',
|
|
30
|
+
stdio: ['pipe', 'pipe', 'pipe'],
|
|
31
|
+
maxBuffer: 1024 * 1024 * 10, // 10MB
|
|
32
|
+
timeout: 60000, // 60 seconds
|
|
33
|
+
});
|
|
34
|
+
if (result.error) {
|
|
35
|
+
throw result.error;
|
|
36
|
+
}
|
|
37
|
+
if (result.status !== 0) {
|
|
38
|
+
throw new Error(result.stderr || `Command failed with exit code ${result.status}`);
|
|
39
|
+
}
|
|
40
|
+
return result.stdout;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Claude Code CLI provider
|
|
44
|
+
*
|
|
45
|
+
* Uses the `claude` command-line tool for generation.
|
|
46
|
+
*/
|
|
47
|
+
export class ClaudeProvider extends BaseAIProvider {
|
|
48
|
+
name = 'claude';
|
|
49
|
+
model;
|
|
50
|
+
constructor(model = 'claude-sonnet-4-20250514') {
|
|
51
|
+
super();
|
|
52
|
+
this.model = model;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Static availability check for lazy initialization
|
|
56
|
+
* Avoids creating a provider instance just to check availability.
|
|
57
|
+
*/
|
|
58
|
+
static checkAvailability() {
|
|
59
|
+
return Promise.resolve(commandExists('claude'));
|
|
60
|
+
}
|
|
61
|
+
async isAvailable() {
|
|
62
|
+
return ClaudeProvider.checkAvailability();
|
|
63
|
+
}
|
|
64
|
+
async generate(prompt) {
|
|
65
|
+
try {
|
|
66
|
+
// Use claude CLI with the prompt
|
|
67
|
+
// The claude CLI accepts prompts via stdin or as an argument
|
|
68
|
+
const output = execCommand('claude', ['-p', prompt, '--model', this.model]);
|
|
69
|
+
return createSuccessResult(output.trim(), this.name);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
73
|
+
return createErrorResult(`Claude CLI error: ${message}`, this.name);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Gemini CLI provider
|
|
79
|
+
*
|
|
80
|
+
* Uses the `gemini` command-line tool for generation.
|
|
81
|
+
*/
|
|
82
|
+
export class GeminiProvider extends BaseAIProvider {
|
|
83
|
+
name = 'gemini';
|
|
84
|
+
model;
|
|
85
|
+
constructor(model = 'gemini-2.0-flash') {
|
|
86
|
+
super();
|
|
87
|
+
this.model = model;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Static availability check for lazy initialization
|
|
91
|
+
*/
|
|
92
|
+
static checkAvailability() {
|
|
93
|
+
return Promise.resolve(commandExists('gemini'));
|
|
94
|
+
}
|
|
95
|
+
async isAvailable() {
|
|
96
|
+
return GeminiProvider.checkAvailability();
|
|
97
|
+
}
|
|
98
|
+
async generate(prompt) {
|
|
99
|
+
try {
|
|
100
|
+
// Use gemini CLI with the prompt
|
|
101
|
+
const output = execCommand('gemini', ['prompt', prompt, '--model', this.model]);
|
|
102
|
+
return createSuccessResult(output.trim(), this.name);
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
106
|
+
return createErrorResult(`Gemini CLI error: ${message}`, this.name);
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Ollama local AI provider
|
|
112
|
+
*
|
|
113
|
+
* Uses the local Ollama server for generation.
|
|
114
|
+
*/
|
|
115
|
+
export class OllamaProvider extends BaseAIProvider {
|
|
116
|
+
name = 'ollama';
|
|
117
|
+
model;
|
|
118
|
+
host;
|
|
119
|
+
constructor(model = 'codellama:13b', host = 'http://localhost:11434') {
|
|
120
|
+
super();
|
|
121
|
+
this.model = model;
|
|
122
|
+
this.host = host;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Static availability check for lazy initialization
|
|
126
|
+
*/
|
|
127
|
+
static checkAvailability(host = 'http://localhost:11434') {
|
|
128
|
+
try {
|
|
129
|
+
// Check if Ollama server is running
|
|
130
|
+
const result = spawnSync('curl', ['-s', `${host}/api/tags`], {
|
|
131
|
+
encoding: 'utf-8',
|
|
132
|
+
timeout: 5000,
|
|
133
|
+
});
|
|
134
|
+
return Promise.resolve(result.status === 0);
|
|
135
|
+
}
|
|
136
|
+
catch {
|
|
137
|
+
return Promise.resolve(false);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
async isAvailable() {
|
|
141
|
+
return OllamaProvider.checkAvailability(this.host);
|
|
142
|
+
}
|
|
143
|
+
async generate(prompt) {
|
|
144
|
+
try {
|
|
145
|
+
// Use curl to call Ollama API
|
|
146
|
+
const payload = JSON.stringify({
|
|
147
|
+
model: this.model,
|
|
148
|
+
prompt,
|
|
149
|
+
stream: false,
|
|
150
|
+
});
|
|
151
|
+
const result = spawnSync('curl', [
|
|
152
|
+
'-s',
|
|
153
|
+
'-X',
|
|
154
|
+
'POST',
|
|
155
|
+
`${this.host}/api/generate`,
|
|
156
|
+
'-d',
|
|
157
|
+
payload,
|
|
158
|
+
'-H',
|
|
159
|
+
'Content-Type: application/json',
|
|
160
|
+
], {
|
|
161
|
+
encoding: 'utf-8',
|
|
162
|
+
timeout: 120000, // 2 minutes for local models
|
|
163
|
+
});
|
|
164
|
+
if (result.status !== 0) {
|
|
165
|
+
throw new Error(result.stderr || 'Ollama API request failed');
|
|
166
|
+
}
|
|
167
|
+
const response = JSON.parse(result.stdout);
|
|
168
|
+
if (response.response) {
|
|
169
|
+
return createSuccessResult(response.response.trim(), this.name);
|
|
170
|
+
}
|
|
171
|
+
throw new Error('Invalid Ollama response');
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
175
|
+
return createErrorResult(`Ollama error: ${message}`, this.name);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* OpenAI API provider
|
|
181
|
+
*
|
|
182
|
+
* Uses the OpenAI API via curl (no SDK dependency).
|
|
183
|
+
*/
|
|
184
|
+
export class OpenAIProvider extends BaseAIProvider {
|
|
185
|
+
name = 'openai';
|
|
186
|
+
model;
|
|
187
|
+
apiKeyEnv;
|
|
188
|
+
constructor(model = 'gpt-4o', apiKeyEnv = 'OPENAI_API_KEY') {
|
|
189
|
+
super();
|
|
190
|
+
this.model = model;
|
|
191
|
+
this.apiKeyEnv = apiKeyEnv;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Static availability check for lazy initialization
|
|
195
|
+
*/
|
|
196
|
+
static checkAvailability(apiKeyEnv = 'OPENAI_API_KEY') {
|
|
197
|
+
return Promise.resolve(!!process.env[apiKeyEnv]);
|
|
198
|
+
}
|
|
199
|
+
async isAvailable() {
|
|
200
|
+
return OpenAIProvider.checkAvailability(this.apiKeyEnv);
|
|
201
|
+
}
|
|
202
|
+
async generate(prompt) {
|
|
203
|
+
const apiKey = process.env[this.apiKeyEnv];
|
|
204
|
+
if (!apiKey) {
|
|
205
|
+
return createErrorResult(`OpenAI API key not found in ${this.apiKeyEnv}`, this.name);
|
|
206
|
+
}
|
|
207
|
+
try {
|
|
208
|
+
const payload = JSON.stringify({
|
|
209
|
+
model: this.model,
|
|
210
|
+
messages: [{ role: 'user', content: prompt }],
|
|
211
|
+
max_tokens: 2000,
|
|
212
|
+
});
|
|
213
|
+
const result = spawnSync('curl', [
|
|
214
|
+
'-s',
|
|
215
|
+
'-X',
|
|
216
|
+
'POST',
|
|
217
|
+
'https://api.openai.com/v1/chat/completions',
|
|
218
|
+
'-H',
|
|
219
|
+
'Content-Type: application/json',
|
|
220
|
+
'-H',
|
|
221
|
+
`Authorization: Bearer ${apiKey}`,
|
|
222
|
+
'-d',
|
|
223
|
+
payload,
|
|
224
|
+
], {
|
|
225
|
+
encoding: 'utf-8',
|
|
226
|
+
timeout: 60000,
|
|
227
|
+
});
|
|
228
|
+
if (result.status !== 0) {
|
|
229
|
+
throw new Error(result.stderr || 'OpenAI API request failed');
|
|
230
|
+
}
|
|
231
|
+
const response = JSON.parse(result.stdout);
|
|
232
|
+
if (response.choices && response.choices[0]?.message?.content) {
|
|
233
|
+
return createSuccessResult(response.choices[0].message.content.trim(), this.name);
|
|
234
|
+
}
|
|
235
|
+
if (response.error) {
|
|
236
|
+
throw new Error(response.error.message || 'OpenAI API error');
|
|
237
|
+
}
|
|
238
|
+
throw new Error('Invalid OpenAI response');
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
242
|
+
return createErrorResult(`OpenAI error: ${message}`, this.name);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Custom script provider
|
|
248
|
+
*
|
|
249
|
+
* Runs a user-defined script for generation.
|
|
250
|
+
*/
|
|
251
|
+
export class ScriptProvider extends BaseAIProvider {
|
|
252
|
+
name = 'script';
|
|
253
|
+
scriptPath;
|
|
254
|
+
constructor(scriptPath) {
|
|
255
|
+
super();
|
|
256
|
+
this.scriptPath = scriptPath;
|
|
257
|
+
}
|
|
258
|
+
async isAvailable() {
|
|
259
|
+
try {
|
|
260
|
+
// Check if script exists and is executable
|
|
261
|
+
const result = spawnSync('test', ['-x', this.scriptPath]);
|
|
262
|
+
return result.status === 0;
|
|
263
|
+
}
|
|
264
|
+
catch {
|
|
265
|
+
return false;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async generate(prompt) {
|
|
269
|
+
try {
|
|
270
|
+
// Run the script with prompt as stdin
|
|
271
|
+
const output = execCommand('node', [this.scriptPath], prompt);
|
|
272
|
+
return createSuccessResult(output.trim(), this.name);
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
276
|
+
return createErrorResult(`Script error: ${message}`, this.name);
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
//# sourceMappingURL=cli-provider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-provider.js","sourceRoot":"","sources":["../../../src/lib/ai/cli-provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-provider.test.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/cli-provider.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|