@camaradesuk/git-worktree-tools 1.3.0 → 1.4.1

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.
Files changed (284) hide show
  1. package/README.md +290 -3
  2. package/dist/api/clean.d.ts +65 -0
  3. package/dist/api/clean.d.ts.map +1 -0
  4. package/dist/api/clean.js +209 -0
  5. package/dist/api/clean.js.map +1 -0
  6. package/dist/api/create.d.ts +88 -0
  7. package/dist/api/create.d.ts.map +1 -0
  8. package/dist/api/create.js +373 -0
  9. package/dist/api/create.js.map +1 -0
  10. package/dist/api/index.d.ts +15 -0
  11. package/dist/api/index.d.ts.map +1 -0
  12. package/dist/api/index.js +19 -0
  13. package/dist/api/index.js.map +1 -0
  14. package/dist/api/list.d.ts +74 -0
  15. package/dist/api/list.d.ts.map +1 -0
  16. package/dist/api/list.js +80 -0
  17. package/dist/api/list.js.map +1 -0
  18. package/dist/api/state.d.ts +43 -0
  19. package/dist/api/state.d.ts.map +1 -0
  20. package/dist/api/state.js +70 -0
  21. package/dist/api/state.js.map +1 -0
  22. package/dist/cli/cleanpr.js +171 -28
  23. package/dist/cli/cleanpr.js.map +1 -1
  24. package/dist/cli/cleanpr.test.js +459 -7
  25. package/dist/cli/cleanpr.test.js.map +1 -1
  26. package/dist/cli/newpr.js +189 -28
  27. package/dist/cli/newpr.js.map +1 -1
  28. package/dist/cli/newpr.test.js +349 -0
  29. package/dist/cli/newpr.test.js.map +1 -1
  30. package/dist/cli/wtconfig.d.ts +14 -0
  31. package/dist/cli/wtconfig.d.ts.map +1 -0
  32. package/dist/cli/wtconfig.js +948 -0
  33. package/dist/cli/wtconfig.js.map +1 -0
  34. package/dist/cli/wtconfig.test.d.ts +5 -0
  35. package/dist/cli/wtconfig.test.d.ts.map +1 -0
  36. package/dist/cli/wtconfig.test.js +1281 -0
  37. package/dist/cli/wtconfig.test.js.map +1 -0
  38. package/dist/cli/wtlink.js +5 -0
  39. package/dist/cli/wtlink.js.map +1 -1
  40. package/dist/cli/wtstate.d.ts +8 -0
  41. package/dist/cli/wtstate.d.ts.map +1 -0
  42. package/dist/cli/wtstate.js +83 -0
  43. package/dist/cli/wtstate.js.map +1 -0
  44. package/dist/cli/wtstate.test.d.ts +5 -0
  45. package/dist/cli/wtstate.test.d.ts.map +1 -0
  46. package/dist/cli/wtstate.test.js +193 -0
  47. package/dist/cli/wtstate.test.js.map +1 -0
  48. package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts +2 -0
  49. package/dist/e2e/cleanpr/cleanpr.e2e.test.d.ts.map +1 -0
  50. package/dist/e2e/cleanpr/cleanpr.e2e.test.js +326 -0
  51. package/dist/e2e/cleanpr/cleanpr.e2e.test.js.map +1 -0
  52. package/dist/e2e/helpers/cli-runner.d.ts +103 -0
  53. package/dist/e2e/helpers/cli-runner.d.ts.map +1 -0
  54. package/dist/e2e/helpers/cli-runner.js +200 -0
  55. package/dist/e2e/helpers/cli-runner.js.map +1 -0
  56. package/dist/e2e/helpers/gh-mock.d.ts +87 -0
  57. package/dist/e2e/helpers/gh-mock.d.ts.map +1 -0
  58. package/dist/e2e/helpers/gh-mock.js +384 -0
  59. package/dist/e2e/helpers/gh-mock.js.map +1 -0
  60. package/dist/e2e/helpers/index.d.ts +12 -0
  61. package/dist/e2e/helpers/index.d.ts.map +1 -0
  62. package/dist/e2e/helpers/index.js +16 -0
  63. package/dist/e2e/helpers/index.js.map +1 -0
  64. package/dist/e2e/helpers/pty-wrapper.d.ts +118 -0
  65. package/dist/e2e/helpers/pty-wrapper.d.ts.map +1 -0
  66. package/dist/e2e/helpers/pty-wrapper.js +276 -0
  67. package/dist/e2e/helpers/pty-wrapper.js.map +1 -0
  68. package/dist/e2e/helpers/scenario-harness.d.ts +55 -0
  69. package/dist/e2e/helpers/scenario-harness.d.ts.map +1 -0
  70. package/dist/e2e/helpers/scenario-harness.js +360 -0
  71. package/dist/e2e/helpers/scenario-harness.js.map +1 -0
  72. package/dist/e2e/helpers/test-context.d.ts +120 -0
  73. package/dist/e2e/helpers/test-context.d.ts.map +1 -0
  74. package/dist/e2e/helpers/test-context.js +263 -0
  75. package/dist/e2e/helpers/test-context.js.map +1 -0
  76. package/dist/e2e/lswt/lswt.e2e.test.d.ts +2 -0
  77. package/dist/e2e/lswt/lswt.e2e.test.d.ts.map +1 -0
  78. package/dist/e2e/lswt/lswt.e2e.test.js +328 -0
  79. package/dist/e2e/lswt/lswt.e2e.test.js.map +1 -0
  80. package/dist/e2e/newpr/newpr.e2e.test.d.ts +2 -0
  81. package/dist/e2e/newpr/newpr.e2e.test.d.ts.map +1 -0
  82. package/dist/e2e/newpr/newpr.e2e.test.js +286 -0
  83. package/dist/e2e/newpr/newpr.e2e.test.js.map +1 -0
  84. package/dist/e2e/newpr/scenarios.e2e.test.d.ts +2 -0
  85. package/dist/e2e/newpr/scenarios.e2e.test.d.ts.map +1 -0
  86. package/dist/e2e/newpr/scenarios.e2e.test.js +426 -0
  87. package/dist/e2e/newpr/scenarios.e2e.test.js.map +1 -0
  88. package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts +2 -0
  89. package/dist/e2e/workflows/pr-lifecycle.e2e.test.d.ts.map +1 -0
  90. package/dist/e2e/workflows/pr-lifecycle.e2e.test.js +298 -0
  91. package/dist/e2e/workflows/pr-lifecycle.e2e.test.js.map +1 -0
  92. package/dist/e2e/wtlink/wtlink.e2e.test.d.ts +2 -0
  93. package/dist/e2e/wtlink/wtlink.e2e.test.d.ts.map +1 -0
  94. package/dist/e2e/wtlink/wtlink.e2e.test.js +364 -0
  95. package/dist/e2e/wtlink/wtlink.e2e.test.js.map +1 -0
  96. package/dist/index.d.ts +15 -1
  97. package/dist/index.d.ts.map +1 -1
  98. package/dist/index.js +14 -0
  99. package/dist/index.js.map +1 -1
  100. package/dist/lib/ai/base-provider.d.ts +58 -0
  101. package/dist/lib/ai/base-provider.d.ts.map +1 -0
  102. package/dist/lib/ai/base-provider.js +246 -0
  103. package/dist/lib/ai/base-provider.js.map +1 -0
  104. package/dist/lib/ai/base-provider.test.d.ts +7 -0
  105. package/dist/lib/ai/base-provider.test.d.ts.map +1 -0
  106. package/dist/lib/ai/base-provider.test.js +320 -0
  107. package/dist/lib/ai/base-provider.test.js.map +1 -0
  108. package/dist/lib/ai/cli-provider.d.ts +87 -0
  109. package/dist/lib/ai/cli-provider.d.ts.map +1 -0
  110. package/dist/lib/ai/cli-provider.js +280 -0
  111. package/dist/lib/ai/cli-provider.js.map +1 -0
  112. package/dist/lib/ai/cli-provider.test.d.ts +5 -0
  113. package/dist/lib/ai/cli-provider.test.d.ts.map +1 -0
  114. package/dist/lib/ai/cli-provider.test.js +462 -0
  115. package/dist/lib/ai/cli-provider.test.js.map +1 -0
  116. package/dist/lib/ai/fallback-provider.d.ts +20 -0
  117. package/dist/lib/ai/fallback-provider.d.ts.map +1 -0
  118. package/dist/lib/ai/fallback-provider.js +125 -0
  119. package/dist/lib/ai/fallback-provider.js.map +1 -0
  120. package/dist/lib/ai/fallback-provider.test.d.ts +7 -0
  121. package/dist/lib/ai/fallback-provider.test.d.ts.map +1 -0
  122. package/dist/lib/ai/fallback-provider.test.js +165 -0
  123. package/dist/lib/ai/fallback-provider.test.js.map +1 -0
  124. package/dist/lib/ai/generation-service.d.ts +44 -0
  125. package/dist/lib/ai/generation-service.d.ts.map +1 -0
  126. package/dist/lib/ai/generation-service.js +107 -0
  127. package/dist/lib/ai/generation-service.js.map +1 -0
  128. package/dist/lib/ai/generation-service.test.d.ts +7 -0
  129. package/dist/lib/ai/generation-service.test.d.ts.map +1 -0
  130. package/dist/lib/ai/generation-service.test.js +213 -0
  131. package/dist/lib/ai/generation-service.test.js.map +1 -0
  132. package/dist/lib/ai/index.d.ts +19 -0
  133. package/dist/lib/ai/index.d.ts.map +1 -0
  134. package/dist/lib/ai/index.js +22 -0
  135. package/dist/lib/ai/index.js.map +1 -0
  136. package/dist/lib/ai/provider-manager.d.ts +109 -0
  137. package/dist/lib/ai/provider-manager.d.ts.map +1 -0
  138. package/dist/lib/ai/provider-manager.js +270 -0
  139. package/dist/lib/ai/provider-manager.js.map +1 -0
  140. package/dist/lib/ai/provider-manager.test.d.ts +5 -0
  141. package/dist/lib/ai/provider-manager.test.d.ts.map +1 -0
  142. package/dist/lib/ai/provider-manager.test.js +312 -0
  143. package/dist/lib/ai/provider-manager.test.js.map +1 -0
  144. package/dist/lib/ai/types.d.ts +166 -0
  145. package/dist/lib/ai/types.d.ts.map +1 -0
  146. package/dist/lib/ai/types.js +19 -0
  147. package/dist/lib/ai/types.js.map +1 -0
  148. package/dist/lib/cleanpr/args.d.ts.map +1 -1
  149. package/dist/lib/cleanpr/args.js +18 -0
  150. package/dist/lib/cleanpr/args.js.map +1 -1
  151. package/dist/lib/cleanpr/args.test.js +88 -11
  152. package/dist/lib/cleanpr/args.test.js.map +1 -1
  153. package/dist/lib/cleanpr/cleanup.d.ts +2 -0
  154. package/dist/lib/cleanpr/cleanup.d.ts.map +1 -1
  155. package/dist/lib/cleanpr/cleanup.js +30 -2
  156. package/dist/lib/cleanpr/cleanup.js.map +1 -1
  157. package/dist/lib/cleanpr/cleanup.test.js +37 -5
  158. package/dist/lib/cleanpr/cleanup.test.js.map +1 -1
  159. package/dist/lib/cleanpr/types.d.ts +10 -0
  160. package/dist/lib/cleanpr/types.d.ts.map +1 -1
  161. package/dist/lib/cleanpr/worktree-info.test.js +72 -1
  162. package/dist/lib/cleanpr/worktree-info.test.js.map +1 -1
  163. package/dist/lib/config.d.ts +170 -1
  164. package/dist/lib/config.d.ts.map +1 -1
  165. package/dist/lib/config.js +129 -2
  166. package/dist/lib/config.js.map +1 -1
  167. package/dist/lib/config.test.js +406 -2
  168. package/dist/lib/config.test.js.map +1 -1
  169. package/dist/lib/hooks/executor.d.ts +35 -0
  170. package/dist/lib/hooks/executor.d.ts.map +1 -0
  171. package/dist/lib/hooks/executor.js +401 -0
  172. package/dist/lib/hooks/executor.js.map +1 -0
  173. package/dist/lib/hooks/executor.test.d.ts +5 -0
  174. package/dist/lib/hooks/executor.test.d.ts.map +1 -0
  175. package/dist/lib/hooks/executor.test.js +648 -0
  176. package/dist/lib/hooks/executor.test.js.map +1 -0
  177. package/dist/lib/hooks/index.d.ts +25 -0
  178. package/dist/lib/hooks/index.d.ts.map +1 -0
  179. package/dist/lib/hooks/index.js +26 -0
  180. package/dist/lib/hooks/index.js.map +1 -0
  181. package/dist/lib/hooks/templates.d.ts +74 -0
  182. package/dist/lib/hooks/templates.d.ts.map +1 -0
  183. package/dist/lib/hooks/templates.js +270 -0
  184. package/dist/lib/hooks/templates.js.map +1 -0
  185. package/dist/lib/hooks/templates.test.d.ts +5 -0
  186. package/dist/lib/hooks/templates.test.d.ts.map +1 -0
  187. package/dist/lib/hooks/templates.test.js +163 -0
  188. package/dist/lib/hooks/templates.test.js.map +1 -0
  189. package/dist/lib/hooks/types.d.ts +161 -0
  190. package/dist/lib/hooks/types.d.ts.map +1 -0
  191. package/dist/lib/hooks/types.js +73 -0
  192. package/dist/lib/hooks/types.js.map +1 -0
  193. package/dist/lib/hooks/types.test.d.ts +5 -0
  194. package/dist/lib/hooks/types.test.d.ts.map +1 -0
  195. package/dist/lib/hooks/types.test.js +132 -0
  196. package/dist/lib/hooks/types.test.js.map +1 -0
  197. package/dist/lib/json-output.d.ts +172 -0
  198. package/dist/lib/json-output.d.ts.map +1 -0
  199. package/dist/lib/json-output.js +134 -0
  200. package/dist/lib/json-output.js.map +1 -0
  201. package/dist/lib/json-output.test.d.ts +5 -0
  202. package/dist/lib/json-output.test.d.ts.map +1 -0
  203. package/dist/lib/json-output.test.js +259 -0
  204. package/dist/lib/json-output.test.js.map +1 -0
  205. package/dist/lib/lswt/action-executors.test.js +6 -0
  206. package/dist/lib/lswt/action-executors.test.js.map +1 -1
  207. package/dist/lib/newpr/action-deps.d.ts +15 -0
  208. package/dist/lib/newpr/action-deps.d.ts.map +1 -0
  209. package/dist/lib/newpr/action-deps.js +22 -0
  210. package/dist/lib/newpr/action-deps.js.map +1 -0
  211. package/dist/lib/newpr/args.d.ts.map +1 -1
  212. package/dist/lib/newpr/args.js +56 -0
  213. package/dist/lib/newpr/args.js.map +1 -1
  214. package/dist/lib/newpr/hook-runner.d.ts +80 -0
  215. package/dist/lib/newpr/hook-runner.d.ts.map +1 -0
  216. package/dist/lib/newpr/hook-runner.js +182 -0
  217. package/dist/lib/newpr/hook-runner.js.map +1 -0
  218. package/dist/lib/newpr/hook-runner.test.d.ts +7 -0
  219. package/dist/lib/newpr/hook-runner.test.d.ts.map +1 -0
  220. package/dist/lib/newpr/hook-runner.test.js +301 -0
  221. package/dist/lib/newpr/hook-runner.test.js.map +1 -0
  222. package/dist/lib/newpr/index.d.ts +3 -0
  223. package/dist/lib/newpr/index.d.ts.map +1 -1
  224. package/dist/lib/newpr/index.js +3 -0
  225. package/dist/lib/newpr/index.js.map +1 -1
  226. package/dist/lib/newpr/types.d.ts +9 -0
  227. package/dist/lib/newpr/types.d.ts.map +1 -1
  228. package/dist/lib/wtconfig/config-manager.d.ts +72 -0
  229. package/dist/lib/wtconfig/config-manager.d.ts.map +1 -0
  230. package/dist/lib/wtconfig/config-manager.js +408 -0
  231. package/dist/lib/wtconfig/config-manager.js.map +1 -0
  232. package/dist/lib/wtconfig/config-manager.test.d.ts +5 -0
  233. package/dist/lib/wtconfig/config-manager.test.d.ts.map +1 -0
  234. package/dist/lib/wtconfig/config-manager.test.js +501 -0
  235. package/dist/lib/wtconfig/config-manager.test.js.map +1 -0
  236. package/dist/lib/wtconfig/environment.d.ts +23 -0
  237. package/dist/lib/wtconfig/environment.d.ts.map +1 -0
  238. package/dist/lib/wtconfig/environment.js +242 -0
  239. package/dist/lib/wtconfig/environment.js.map +1 -0
  240. package/dist/lib/wtconfig/environment.test.d.ts +5 -0
  241. package/dist/lib/wtconfig/environment.test.d.ts.map +1 -0
  242. package/dist/lib/wtconfig/environment.test.js +246 -0
  243. package/dist/lib/wtconfig/environment.test.js.map +1 -0
  244. package/dist/lib/wtconfig/index.d.ts +7 -0
  245. package/dist/lib/wtconfig/index.d.ts.map +1 -0
  246. package/dist/lib/wtconfig/index.js +8 -0
  247. package/dist/lib/wtconfig/index.js.map +1 -0
  248. package/dist/lib/wtconfig/types.d.ts +97 -0
  249. package/dist/lib/wtconfig/types.d.ts.map +1 -0
  250. package/dist/lib/wtconfig/types.js +5 -0
  251. package/dist/lib/wtconfig/types.js.map +1 -0
  252. package/dist/lib/wtstate/analyze.d.ts +13 -0
  253. package/dist/lib/wtstate/analyze.d.ts.map +1 -0
  254. package/dist/lib/wtstate/analyze.js +165 -0
  255. package/dist/lib/wtstate/analyze.js.map +1 -0
  256. package/dist/lib/wtstate/analyze.test.d.ts +5 -0
  257. package/dist/lib/wtstate/analyze.test.d.ts.map +1 -0
  258. package/dist/lib/wtstate/analyze.test.js +282 -0
  259. package/dist/lib/wtstate/analyze.test.js.map +1 -0
  260. package/dist/lib/wtstate/args.d.ts +17 -0
  261. package/dist/lib/wtstate/args.d.ts.map +1 -0
  262. package/dist/lib/wtstate/args.js +91 -0
  263. package/dist/lib/wtstate/args.js.map +1 -0
  264. package/dist/lib/wtstate/args.test.d.ts +5 -0
  265. package/dist/lib/wtstate/args.test.d.ts.map +1 -0
  266. package/dist/lib/wtstate/args.test.js +120 -0
  267. package/dist/lib/wtstate/args.test.js.map +1 -0
  268. package/dist/lib/wtstate/index.d.ts +7 -0
  269. package/dist/lib/wtstate/index.d.ts.map +1 -0
  270. package/dist/lib/wtstate/index.js +8 -0
  271. package/dist/lib/wtstate/index.js.map +1 -0
  272. package/dist/lib/wtstate/types.d.ts +64 -0
  273. package/dist/lib/wtstate/types.d.ts.map +1 -0
  274. package/dist/lib/wtstate/types.js +5 -0
  275. package/dist/lib/wtstate/types.js.map +1 -0
  276. package/dist/mcp/server.d.ts +14 -0
  277. package/dist/mcp/server.d.ts.map +1 -0
  278. package/dist/mcp/server.js +339 -0
  279. package/dist/mcp/server.js.map +1 -0
  280. package/dist/mcp/server.test.d.ts +9 -0
  281. package/dist/mcp/server.test.d.ts.map +1 -0
  282. package/dist/mcp/server.test.js +390 -0
  283. package/dist/mcp/server.test.js.map +1 -0
  284. package/package.json +8 -2
@@ -0,0 +1,109 @@
1
+ /**
2
+ * AI Provider Manager
3
+ *
4
+ * Handles provider selection, auto-detection, and fallback logic.
5
+ */
6
+ import type { AIProvider, AIConfig, AIGenerationResult } from './types.js';
7
+ /**
8
+ * Provider manager configuration
9
+ */
10
+ export interface ProviderManagerOptions {
11
+ /** AI configuration from .worktreerc */
12
+ config?: AIConfig;
13
+ }
14
+ /**
15
+ * AI Provider Manager
16
+ *
17
+ * Manages provider selection and provides a unified interface for AI generation.
18
+ * Uses lazy initialization to avoid creating provider instances that won't be used.
19
+ */
20
+ export declare class AIProviderManager {
21
+ private config;
22
+ private primaryProvider;
23
+ private fallbackProvider;
24
+ private initialized;
25
+ /** Cache of availability check results to avoid re-checking */
26
+ private availabilityCache;
27
+ constructor(options?: ProviderManagerOptions);
28
+ /**
29
+ * Initialize providers based on configuration
30
+ */
31
+ initialize(): Promise<void>;
32
+ /**
33
+ * Resolve a provider by name
34
+ */
35
+ private resolveProvider;
36
+ /**
37
+ * Get lazy provider factories for auto-detection
38
+ * These check availability before creating full provider instances.
39
+ */
40
+ private getLazyProviderFactories;
41
+ /**
42
+ * Check if a provider is available (with caching)
43
+ */
44
+ private isProviderAvailable;
45
+ /**
46
+ * Auto-detect available AI provider using lazy initialization
47
+ * Only creates provider instance after confirming availability.
48
+ */
49
+ private autoDetectProvider;
50
+ private createClaudeProvider;
51
+ private createGeminiProvider;
52
+ private createOllamaProvider;
53
+ private createOpenAIProvider;
54
+ private createScriptProvider;
55
+ /**
56
+ * Get the active provider (primary or fallback)
57
+ */
58
+ getProvider(): Promise<AIProvider>;
59
+ /**
60
+ * Execute a generation with fallback support
61
+ */
62
+ private executeWithFallback;
63
+ /**
64
+ * Check if AI generation is enabled for a feature
65
+ */
66
+ isEnabled(feature: 'branchName' | 'prTitle' | 'prDescription' | 'commitMessage' | 'planDocument'): boolean;
67
+ /**
68
+ * Get the current configuration
69
+ */
70
+ getConfig(): AIConfig;
71
+ /**
72
+ * Get information about available providers
73
+ * Uses cached availability checks to avoid redundant provider creation.
74
+ */
75
+ getAvailableProviders(): Promise<string[]>;
76
+ /**
77
+ * Get the name of the active provider
78
+ */
79
+ getActiveProviderName(): Promise<string>;
80
+ /**
81
+ * Generate a branch name
82
+ */
83
+ generateBranchName(context: import('./types.js').BranchContext): Promise<AIGenerationResult>;
84
+ /**
85
+ * Generate a PR title
86
+ */
87
+ generatePRTitle(context: import('./types.js').PRContext): Promise<AIGenerationResult>;
88
+ /**
89
+ * Generate a PR description
90
+ */
91
+ generatePRDescription(context: import('./types.js').PRContext): Promise<AIGenerationResult>;
92
+ /**
93
+ * Generate a commit message
94
+ */
95
+ generateCommitMessage(context: import('./types.js').CommitContext): Promise<AIGenerationResult>;
96
+ /**
97
+ * Generate a plan document
98
+ */
99
+ generatePlanDocument(context: import('./types.js').PlanContext): Promise<AIGenerationResult>;
100
+ }
101
+ /**
102
+ * Create a provider manager with configuration
103
+ */
104
+ export declare function createAIProviderManager(config?: AIConfig): AIProviderManager;
105
+ /**
106
+ * Get or create the default provider manager
107
+ */
108
+ export declare function getDefaultAIProviderManager(config?: AIConfig): AIProviderManager;
109
+ //# sourceMappingURL=provider-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-manager.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/provider-manager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAkB,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAW3F;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,wCAAwC;IACxC,MAAM,CAAC,EAAE,QAAQ,CAAC;CACnB;AAYD;;;;;GAKG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAW;IACzB,OAAO,CAAC,eAAe,CAA2B;IAClD,OAAO,CAAC,gBAAgB,CAA2B;IACnD,OAAO,CAAC,WAAW,CAAS;IAC5B,+DAA+D;IAC/D,OAAO,CAAC,iBAAiB,CAAmC;gBAEhD,OAAO,GAAE,sBAA2B;IAIhD;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAYjC;;OAEG;YACW,eAAe;IA4B7B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAyBhC;;OAEG;YACW,mBAAmB;IAYjC;;;OAGG;YACW,kBAAkB;YAclB,oBAAoB;YAKpB,oBAAoB;YAKpB,oBAAoB;YAKpB,oBAAoB;YAKpB,oBAAoB;IAQlC;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,UAAU,CAAC;IAexC;;OAEG;YACW,mBAAmB;IAiCjC;;OAEG;IACH,SAAS,CACP,OAAO,EAAE,YAAY,GAAG,SAAS,GAAG,eAAe,GAAG,eAAe,GAAG,cAAc,GACrF,OAAO;IAIV;;OAEG;IACH,SAAS,IAAI,QAAQ;IAIrB;;;OAGG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAahD;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,MAAM,CAAC;IAW9C;;OAEG;IACG,kBAAkB,CACtB,OAAO,EAAE,OAAO,YAAY,EAAE,aAAa,GAC1C,OAAO,CAAC,kBAAkB,CAAC;IAI9B;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,OAAO,YAAY,EAAE,SAAS,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAI3F;;OAEG;IACG,qBAAqB,CACzB,OAAO,EAAE,OAAO,YAAY,EAAE,SAAS,GACtC,OAAO,CAAC,kBAAkB,CAAC;IAI9B;;OAEG;IACG,qBAAqB,CACzB,OAAO,EAAE,OAAO,YAAY,EAAE,aAAa,GAC1C,OAAO,CAAC,kBAAkB,CAAC;IAI9B;;OAEG;IACG,oBAAoB,CACxB,OAAO,EAAE,OAAO,YAAY,EAAE,WAAW,GACxC,OAAO,CAAC,kBAAkB,CAAC;CAG/B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,iBAAiB,CAE5E;AAOD;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,iBAAiB,CAKhF"}
@@ -0,0 +1,270 @@
1
+ /**
2
+ * AI Provider Manager
3
+ *
4
+ * Handles provider selection, auto-detection, and fallback logic.
5
+ */
6
+ import { DEFAULT_AI_CONFIG } from './types.js';
7
+ import { FallbackProvider } from './fallback-provider.js';
8
+ import { ClaudeProvider, GeminiProvider, OllamaProvider, OpenAIProvider, ScriptProvider, } from './cli-provider.js';
9
+ /**
10
+ * AI Provider Manager
11
+ *
12
+ * Manages provider selection and provides a unified interface for AI generation.
13
+ * Uses lazy initialization to avoid creating provider instances that won't be used.
14
+ */
15
+ export class AIProviderManager {
16
+ config;
17
+ primaryProvider = null;
18
+ fallbackProvider = null;
19
+ initialized = false;
20
+ /** Cache of availability check results to avoid re-checking */
21
+ availabilityCache = new Map();
22
+ constructor(options = {}) {
23
+ this.config = { ...DEFAULT_AI_CONFIG, ...options.config };
24
+ }
25
+ /**
26
+ * Initialize providers based on configuration
27
+ */
28
+ async initialize() {
29
+ if (this.initialized)
30
+ return;
31
+ this.primaryProvider = await this.resolveProvider(this.config.provider ?? 'auto');
32
+ if (this.config.fallback && this.config.fallback !== 'none') {
33
+ this.fallbackProvider = await this.resolveProvider(this.config.fallback);
34
+ }
35
+ this.initialized = true;
36
+ }
37
+ /**
38
+ * Resolve a provider by name
39
+ */
40
+ async resolveProvider(name) {
41
+ switch (name) {
42
+ case 'auto':
43
+ return this.autoDetectProvider();
44
+ case 'claude':
45
+ return this.createClaudeProvider();
46
+ case 'gemini':
47
+ return this.createGeminiProvider();
48
+ case 'openai':
49
+ return this.createOpenAIProvider();
50
+ case 'ollama':
51
+ return this.createOllamaProvider();
52
+ case 'script':
53
+ return this.createScriptProvider();
54
+ case 'none':
55
+ return null;
56
+ default:
57
+ return null;
58
+ }
59
+ }
60
+ /**
61
+ * Get lazy provider factories for auto-detection
62
+ * These check availability before creating full provider instances.
63
+ */
64
+ getLazyProviderFactories() {
65
+ return [
66
+ {
67
+ name: 'claude',
68
+ checkAvailability: () => ClaudeProvider.checkAvailability(),
69
+ create: () => new ClaudeProvider(this.config.claude?.model),
70
+ },
71
+ {
72
+ name: 'gemini',
73
+ checkAvailability: () => GeminiProvider.checkAvailability(),
74
+ create: () => new GeminiProvider(this.config.gemini?.model),
75
+ },
76
+ {
77
+ name: 'ollama',
78
+ checkAvailability: () => OllamaProvider.checkAvailability(this.config.ollama?.host),
79
+ create: () => new OllamaProvider(this.config.ollama?.model, this.config.ollama?.host),
80
+ },
81
+ {
82
+ name: 'openai',
83
+ checkAvailability: () => OpenAIProvider.checkAvailability(this.config.openai?.apiKeyEnv),
84
+ create: () => new OpenAIProvider(this.config.openai?.model, this.config.openai?.apiKeyEnv),
85
+ },
86
+ ];
87
+ }
88
+ /**
89
+ * Check if a provider is available (with caching)
90
+ */
91
+ async isProviderAvailable(factory) {
92
+ // Check cache first
93
+ if (this.availabilityCache.has(factory.name)) {
94
+ return this.availabilityCache.get(factory.name);
95
+ }
96
+ // Check availability and cache result
97
+ const available = await factory.checkAvailability();
98
+ this.availabilityCache.set(factory.name, available);
99
+ return available;
100
+ }
101
+ /**
102
+ * Auto-detect available AI provider using lazy initialization
103
+ * Only creates provider instance after confirming availability.
104
+ */
105
+ async autoDetectProvider() {
106
+ const factories = this.getLazyProviderFactories();
107
+ for (const factory of factories) {
108
+ const available = await this.isProviderAvailable(factory);
109
+ if (available) {
110
+ // Only create the provider if it's available
111
+ return factory.create();
112
+ }
113
+ }
114
+ return null;
115
+ }
116
+ async createClaudeProvider() {
117
+ const factory = this.getLazyProviderFactories().find((f) => f.name === 'claude');
118
+ return (await this.isProviderAvailable(factory)) ? factory.create() : null;
119
+ }
120
+ async createGeminiProvider() {
121
+ const factory = this.getLazyProviderFactories().find((f) => f.name === 'gemini');
122
+ return (await this.isProviderAvailable(factory)) ? factory.create() : null;
123
+ }
124
+ async createOllamaProvider() {
125
+ const factory = this.getLazyProviderFactories().find((f) => f.name === 'ollama');
126
+ return (await this.isProviderAvailable(factory)) ? factory.create() : null;
127
+ }
128
+ async createOpenAIProvider() {
129
+ const factory = this.getLazyProviderFactories().find((f) => f.name === 'openai');
130
+ return (await this.isProviderAvailable(factory)) ? factory.create() : null;
131
+ }
132
+ async createScriptProvider() {
133
+ if (!this.config.script?.path) {
134
+ return null;
135
+ }
136
+ const provider = new ScriptProvider(this.config.script.path);
137
+ return (await provider.isAvailable()) ? provider : null;
138
+ }
139
+ /**
140
+ * Get the active provider (primary or fallback)
141
+ */
142
+ async getProvider() {
143
+ await this.initialize();
144
+ if (this.primaryProvider) {
145
+ return this.primaryProvider;
146
+ }
147
+ if (this.fallbackProvider) {
148
+ return this.fallbackProvider;
149
+ }
150
+ // Return fallback provider for basic generation
151
+ return new FallbackProvider();
152
+ }
153
+ /**
154
+ * Execute a generation with fallback support
155
+ */
156
+ async executeWithFallback(operation) {
157
+ await this.initialize();
158
+ // Try primary provider
159
+ if (this.primaryProvider) {
160
+ const result = await operation(this.primaryProvider);
161
+ if (result.success) {
162
+ return result;
163
+ }
164
+ // Try fallback if available
165
+ if (this.fallbackProvider) {
166
+ const fallbackResult = await operation(this.fallbackProvider);
167
+ if (fallbackResult.success) {
168
+ return fallbackResult;
169
+ }
170
+ }
171
+ return result; // Return primary error
172
+ }
173
+ // Try fallback provider
174
+ if (this.fallbackProvider) {
175
+ return operation(this.fallbackProvider);
176
+ }
177
+ // Use basic fallback
178
+ const fallback = new FallbackProvider();
179
+ return operation(fallback);
180
+ }
181
+ /**
182
+ * Check if AI generation is enabled for a feature
183
+ */
184
+ isEnabled(feature) {
185
+ return this.config[feature] ?? false;
186
+ }
187
+ /**
188
+ * Get the current configuration
189
+ */
190
+ getConfig() {
191
+ return { ...this.config };
192
+ }
193
+ /**
194
+ * Get information about available providers
195
+ * Uses cached availability checks to avoid redundant provider creation.
196
+ */
197
+ async getAvailableProviders() {
198
+ const available = [];
199
+ const factories = this.getLazyProviderFactories();
200
+ for (const factory of factories) {
201
+ if (await this.isProviderAvailable(factory)) {
202
+ available.push(factory.name);
203
+ }
204
+ }
205
+ return available;
206
+ }
207
+ /**
208
+ * Get the name of the active provider
209
+ */
210
+ async getActiveProviderName() {
211
+ await this.initialize();
212
+ if (this.primaryProvider) {
213
+ return this.primaryProvider.name;
214
+ }
215
+ if (this.fallbackProvider) {
216
+ return this.fallbackProvider.name;
217
+ }
218
+ return 'fallback';
219
+ }
220
+ /**
221
+ * Generate a branch name
222
+ */
223
+ async generateBranchName(context) {
224
+ return this.executeWithFallback((provider) => provider.generateBranchName(context));
225
+ }
226
+ /**
227
+ * Generate a PR title
228
+ */
229
+ async generatePRTitle(context) {
230
+ return this.executeWithFallback((provider) => provider.generatePRTitle(context));
231
+ }
232
+ /**
233
+ * Generate a PR description
234
+ */
235
+ async generatePRDescription(context) {
236
+ return this.executeWithFallback((provider) => provider.generatePRDescription(context));
237
+ }
238
+ /**
239
+ * Generate a commit message
240
+ */
241
+ async generateCommitMessage(context) {
242
+ return this.executeWithFallback((provider) => provider.generateCommitMessage(context));
243
+ }
244
+ /**
245
+ * Generate a plan document
246
+ */
247
+ async generatePlanDocument(context) {
248
+ return this.executeWithFallback((provider) => provider.generatePlanDocument(context));
249
+ }
250
+ }
251
+ /**
252
+ * Create a provider manager with configuration
253
+ */
254
+ export function createAIProviderManager(config) {
255
+ return new AIProviderManager({ config });
256
+ }
257
+ /**
258
+ * Default singleton instance
259
+ */
260
+ let defaultManager = null;
261
+ /**
262
+ * Get or create the default provider manager
263
+ */
264
+ export function getDefaultAIProviderManager(config) {
265
+ if (!defaultManager || config) {
266
+ defaultManager = createAIProviderManager(config);
267
+ }
268
+ return defaultManager;
269
+ }
270
+ //# sourceMappingURL=provider-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-manager.js","sourceRoot":"","sources":["../../../src/lib/ai/provider-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * AI Provider Manager Tests
3
+ */
4
+ export {};
5
+ //# sourceMappingURL=provider-manager.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider-manager.test.d.ts","sourceRoot":"","sources":["../../../src/lib/ai/provider-manager.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}