@mainwp/control 1.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.
Files changed (204) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +583 -0
  3. package/bin/_exit.js +12 -0
  4. package/bin/dev.js +7 -0
  5. package/bin/run.js +7 -0
  6. package/dist/chat/chat-engine.d.ts +213 -0
  7. package/dist/chat/chat-engine.d.ts.map +1 -0
  8. package/dist/chat/chat-engine.js +636 -0
  9. package/dist/chat/chat-engine.js.map +1 -0
  10. package/dist/chat/index.d.ts +10 -0
  11. package/dist/chat/index.d.ts.map +1 -0
  12. package/dist/chat/index.js +14 -0
  13. package/dist/chat/index.js.map +1 -0
  14. package/dist/chat/providers/anthropic.d.ts +52 -0
  15. package/dist/chat/providers/anthropic.d.ts.map +1 -0
  16. package/dist/chat/providers/anthropic.js +292 -0
  17. package/dist/chat/providers/anthropic.js.map +1 -0
  18. package/dist/chat/providers/gemini.d.ts +52 -0
  19. package/dist/chat/providers/gemini.d.ts.map +1 -0
  20. package/dist/chat/providers/gemini.js +284 -0
  21. package/dist/chat/providers/gemini.js.map +1 -0
  22. package/dist/chat/providers/index.d.ts +19 -0
  23. package/dist/chat/providers/index.d.ts.map +1 -0
  24. package/dist/chat/providers/index.js +23 -0
  25. package/dist/chat/providers/index.js.map +1 -0
  26. package/dist/chat/providers/local.d.ts +37 -0
  27. package/dist/chat/providers/local.d.ts.map +1 -0
  28. package/dist/chat/providers/local.js +130 -0
  29. package/dist/chat/providers/local.js.map +1 -0
  30. package/dist/chat/providers/openai-compatible.d.ts +155 -0
  31. package/dist/chat/providers/openai-compatible.d.ts.map +1 -0
  32. package/dist/chat/providers/openai-compatible.js +264 -0
  33. package/dist/chat/providers/openai-compatible.js.map +1 -0
  34. package/dist/chat/providers/openai.d.ts +24 -0
  35. package/dist/chat/providers/openai.d.ts.map +1 -0
  36. package/dist/chat/providers/openai.js +62 -0
  37. package/dist/chat/providers/openai.js.map +1 -0
  38. package/dist/chat/providers/openrouter.d.ts +26 -0
  39. package/dist/chat/providers/openrouter.d.ts.map +1 -0
  40. package/dist/chat/providers/openrouter.js +65 -0
  41. package/dist/chat/providers/openrouter.js.map +1 -0
  42. package/dist/chat/providers/provider-fetch.d.ts +15 -0
  43. package/dist/chat/providers/provider-fetch.d.ts.map +1 -0
  44. package/dist/chat/providers/provider-fetch.js +35 -0
  45. package/dist/chat/providers/provider-fetch.js.map +1 -0
  46. package/dist/chat/providers/provider.d.ts +214 -0
  47. package/dist/chat/providers/provider.d.ts.map +1 -0
  48. package/dist/chat/providers/provider.js +166 -0
  49. package/dist/chat/providers/provider.js.map +1 -0
  50. package/dist/chat/providers/sse-reader.d.ts +21 -0
  51. package/dist/chat/providers/sse-reader.d.ts.map +1 -0
  52. package/dist/chat/providers/sse-reader.js +48 -0
  53. package/dist/chat/providers/sse-reader.js.map +1 -0
  54. package/dist/chat/system-prompt.d.ts +33 -0
  55. package/dist/chat/system-prompt.d.ts.map +1 -0
  56. package/dist/chat/system-prompt.js +166 -0
  57. package/dist/chat/system-prompt.js.map +1 -0
  58. package/dist/chat/tool-envelope.d.ts +72 -0
  59. package/dist/chat/tool-envelope.d.ts.map +1 -0
  60. package/dist/chat/tool-envelope.js +263 -0
  61. package/dist/chat/tool-envelope.js.map +1 -0
  62. package/dist/commands/abilities/info.d.ts +21 -0
  63. package/dist/commands/abilities/info.d.ts.map +1 -0
  64. package/dist/commands/abilities/info.js +80 -0
  65. package/dist/commands/abilities/info.js.map +1 -0
  66. package/dist/commands/abilities/list.d.ts +19 -0
  67. package/dist/commands/abilities/list.d.ts.map +1 -0
  68. package/dist/commands/abilities/list.js +98 -0
  69. package/dist/commands/abilities/list.js.map +1 -0
  70. package/dist/commands/abilities/run.d.ts +75 -0
  71. package/dist/commands/abilities/run.d.ts.map +1 -0
  72. package/dist/commands/abilities/run.js +468 -0
  73. package/dist/commands/abilities/run.js.map +1 -0
  74. package/dist/commands/chat.d.ts +54 -0
  75. package/dist/commands/chat.d.ts.map +1 -0
  76. package/dist/commands/chat.js +384 -0
  77. package/dist/commands/chat.js.map +1 -0
  78. package/dist/commands/config/show.d.ts +54 -0
  79. package/dist/commands/config/show.d.ts.map +1 -0
  80. package/dist/commands/config/show.js +324 -0
  81. package/dist/commands/config/show.js.map +1 -0
  82. package/dist/commands/doctor.d.ts +77 -0
  83. package/dist/commands/doctor.d.ts.map +1 -0
  84. package/dist/commands/doctor.js +412 -0
  85. package/dist/commands/doctor.js.map +1 -0
  86. package/dist/commands/jobs/watch.d.ts +50 -0
  87. package/dist/commands/jobs/watch.d.ts.map +1 -0
  88. package/dist/commands/jobs/watch.js +269 -0
  89. package/dist/commands/jobs/watch.js.map +1 -0
  90. package/dist/commands/login.d.ts +25 -0
  91. package/dist/commands/login.d.ts.map +1 -0
  92. package/dist/commands/login.js +165 -0
  93. package/dist/commands/login.js.map +1 -0
  94. package/dist/commands/profile/delete.d.ts +22 -0
  95. package/dist/commands/profile/delete.d.ts.map +1 -0
  96. package/dist/commands/profile/delete.js +57 -0
  97. package/dist/commands/profile/delete.js.map +1 -0
  98. package/dist/commands/profile/list.d.ts +19 -0
  99. package/dist/commands/profile/list.d.ts.map +1 -0
  100. package/dist/commands/profile/list.js +53 -0
  101. package/dist/commands/profile/list.js.map +1 -0
  102. package/dist/commands/profile/use.d.ts +22 -0
  103. package/dist/commands/profile/use.d.ts.map +1 -0
  104. package/dist/commands/profile/use.js +46 -0
  105. package/dist/commands/profile/use.js.map +1 -0
  106. package/dist/config/fs-utils.d.ts +14 -0
  107. package/dist/config/fs-utils.d.ts.map +1 -0
  108. package/dist/config/fs-utils.js +31 -0
  109. package/dist/config/fs-utils.js.map +1 -0
  110. package/dist/config/keychain.d.ts +53 -0
  111. package/dist/config/keychain.d.ts.map +1 -0
  112. package/dist/config/keychain.js +175 -0
  113. package/dist/config/keychain.js.map +1 -0
  114. package/dist/config/profile-store.d.ts +85 -0
  115. package/dist/config/profile-store.d.ts.map +1 -0
  116. package/dist/config/profile-store.js +228 -0
  117. package/dist/config/profile-store.js.map +1 -0
  118. package/dist/config/settings.d.ts +71 -0
  119. package/dist/config/settings.d.ts.map +1 -0
  120. package/dist/config/settings.js +151 -0
  121. package/dist/config/settings.js.map +1 -0
  122. package/dist/core/abilities-executor.d.ts +126 -0
  123. package/dist/core/abilities-executor.d.ts.map +1 -0
  124. package/dist/core/abilities-executor.js +264 -0
  125. package/dist/core/abilities-executor.js.map +1 -0
  126. package/dist/core/batch-manager.d.ts +113 -0
  127. package/dist/core/batch-manager.d.ts.map +1 -0
  128. package/dist/core/batch-manager.js +244 -0
  129. package/dist/core/batch-manager.js.map +1 -0
  130. package/dist/core/http-client.d.ts +111 -0
  131. package/dist/core/http-client.d.ts.map +1 -0
  132. package/dist/core/http-client.js +329 -0
  133. package/dist/core/http-client.js.map +1 -0
  134. package/dist/core/safety-controller.d.ts +114 -0
  135. package/dist/core/safety-controller.d.ts.map +1 -0
  136. package/dist/core/safety-controller.js +229 -0
  137. package/dist/core/safety-controller.js.map +1 -0
  138. package/dist/hooks/command-not-found.d.ts +12 -0
  139. package/dist/hooks/command-not-found.d.ts.map +1 -0
  140. package/dist/hooks/command-not-found.js +58 -0
  141. package/dist/hooks/command-not-found.js.map +1 -0
  142. package/dist/index.d.ts +7 -0
  143. package/dist/index.d.ts.map +1 -0
  144. package/dist/index.js +7 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/lib/base-command.d.ts +123 -0
  147. package/dist/lib/base-command.d.ts.map +1 -0
  148. package/dist/lib/base-command.js +285 -0
  149. package/dist/lib/base-command.js.map +1 -0
  150. package/dist/output/formatter.d.ts +48 -0
  151. package/dist/output/formatter.d.ts.map +1 -0
  152. package/dist/output/formatter.js +138 -0
  153. package/dist/output/formatter.js.map +1 -0
  154. package/dist/output/json-envelope.d.ts +43 -0
  155. package/dist/output/json-envelope.d.ts.map +1 -0
  156. package/dist/output/json-envelope.js +73 -0
  157. package/dist/output/json-envelope.js.map +1 -0
  158. package/dist/utils/audit-logger.d.ts +97 -0
  159. package/dist/utils/audit-logger.d.ts.map +1 -0
  160. package/dist/utils/audit-logger.js +169 -0
  161. package/dist/utils/audit-logger.js.map +1 -0
  162. package/dist/utils/colors.d.ts +29 -0
  163. package/dist/utils/colors.d.ts.map +1 -0
  164. package/dist/utils/colors.js +36 -0
  165. package/dist/utils/colors.js.map +1 -0
  166. package/dist/utils/errors.d.ts +107 -0
  167. package/dist/utils/errors.d.ts.map +1 -0
  168. package/dist/utils/errors.js +149 -0
  169. package/dist/utils/errors.js.map +1 -0
  170. package/dist/utils/exit-codes.d.ts +21 -0
  171. package/dist/utils/exit-codes.d.ts.map +1 -0
  172. package/dist/utils/exit-codes.js +20 -0
  173. package/dist/utils/exit-codes.js.map +1 -0
  174. package/dist/utils/format.d.ts +64 -0
  175. package/dist/utils/format.d.ts.map +1 -0
  176. package/dist/utils/format.js +69 -0
  177. package/dist/utils/format.js.map +1 -0
  178. package/dist/utils/prompt.d.ts +34 -0
  179. package/dist/utils/prompt.d.ts.map +1 -0
  180. package/dist/utils/prompt.js +132 -0
  181. package/dist/utils/prompt.js.map +1 -0
  182. package/dist/utils/retry.d.ts +59 -0
  183. package/dist/utils/retry.d.ts.map +1 -0
  184. package/dist/utils/retry.js +96 -0
  185. package/dist/utils/retry.js.map +1 -0
  186. package/dist/utils/terminal-sanitizer.d.ts +60 -0
  187. package/dist/utils/terminal-sanitizer.d.ts.map +1 -0
  188. package/dist/utils/terminal-sanitizer.js +166 -0
  189. package/dist/utils/terminal-sanitizer.js.map +1 -0
  190. package/dist/validation/input-sanitizer.d.ts +76 -0
  191. package/dist/validation/input-sanitizer.d.ts.map +1 -0
  192. package/dist/validation/input-sanitizer.js +199 -0
  193. package/dist/validation/input-sanitizer.js.map +1 -0
  194. package/dist/validation/schema-validator.d.ts +75 -0
  195. package/dist/validation/schema-validator.d.ts.map +1 -0
  196. package/dist/validation/schema-validator.js +147 -0
  197. package/dist/validation/schema-validator.js.map +1 -0
  198. package/oclif.manifest.json +857 -0
  199. package/package.json +101 -0
  200. package/scripts/completions/README.md +221 -0
  201. package/scripts/completions/mainwpcontrol.bash +193 -0
  202. package/scripts/completions/mainwpcontrol.zsh +267 -0
  203. package/scripts/completions/profile-completer.sh +35 -0
  204. package/scripts/completions/regenerate.sh +78 -0
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Chat Module Index
3
+ *
4
+ * Re-exports all chat components.
5
+ */
6
+ // System prompt
7
+ export * from './system-prompt.js';
8
+ // Tool envelope parsing
9
+ export * from './tool-envelope.js';
10
+ // Chat engine
11
+ export * from './chat-engine.js';
12
+ // Providers
13
+ export * from './providers/index.js';
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,gBAAgB;AAChB,cAAc,oBAAoB,CAAC;AAEnC,wBAAwB;AACxB,cAAc,oBAAoB,CAAC;AAEnC,cAAc;AACd,cAAc,kBAAkB,CAAC;AAEjC,YAAY;AACZ,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Anthropic Provider for mainwpcontrol
3
+ *
4
+ * Implements LLM provider interface for Claude models.
5
+ */
6
+ import { type LLMProvider, type LLMResponse, type Message, type ChatOptions, type ProviderConfig, type ProviderCapabilities, type StreamChunk } from './provider.js';
7
+ /**
8
+ * Anthropic provider implementation
9
+ */
10
+ export declare class AnthropicProvider implements LLMProvider {
11
+ readonly name = "anthropic";
12
+ readonly capabilities: ProviderCapabilities;
13
+ private readonly apiKey;
14
+ private readonly baseUrl;
15
+ private readonly defaultModel;
16
+ private readonly timeout;
17
+ constructor(config: ProviderConfig);
18
+ isConfigured(): boolean;
19
+ getModels(): string[];
20
+ getDefaultModel(): string;
21
+ chat(messages: Message[], options?: ChatOptions): Promise<LLMResponse>;
22
+ chatStream(messages: Message[], options?: ChatOptions): AsyncGenerator<StreamChunk, void, undefined>;
23
+ /**
24
+ * Convert internal messages to Anthropic format
25
+ */
26
+ private convertMessages;
27
+ /**
28
+ * Convert tool definitions to Anthropic format
29
+ */
30
+ private convertTools;
31
+ /**
32
+ * Convert Anthropic response to internal format
33
+ */
34
+ private convertResponse;
35
+ /**
36
+ * Convert finish reason
37
+ */
38
+ private convertFinishReason;
39
+ /**
40
+ * Get request headers
41
+ */
42
+ private getHeaders;
43
+ /**
44
+ * Make API request
45
+ */
46
+ private makeRequest;
47
+ }
48
+ /**
49
+ * Create Anthropic provider
50
+ */
51
+ export declare function createAnthropicProvider(config: ProviderConfig): LLMProvider;
52
+ //# sourceMappingURL=anthropic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.d.ts","sourceRoot":"","sources":["../../../src/chat/providers/anthropic.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAGjB,MAAM,eAAe,CAAC;AAgFvB;;GAEG;AACH,qBAAa,iBAAkB,YAAW,WAAW;IACnD,QAAQ,CAAC,IAAI,eAAe;IAC5B,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAMzC;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,cAAc;IAOlC,YAAY,IAAI,OAAO;IAIvB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,MAAM;IAInB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAsCrE,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC;IA6F/C;;OAEG;IACH,OAAO,CAAC,eAAe;IA2CvB;;OAEG;IACH,OAAO,CAAC,YAAY;IAcpB;;OAEG;IACH,OAAO,CAAC,eAAe;IA6BvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;IACH,OAAO,CAAC,UAAU;IAQlB;;OAEG;YACW,WAAW;CAe1B;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW,CAE3E"}
@@ -0,0 +1,292 @@
1
+ /**
2
+ * Anthropic Provider for mainwpcontrol
3
+ *
4
+ * Implements LLM provider interface for Claude models.
5
+ */
6
+ import { registerProvider, } from './provider.js';
7
+ import { makeProviderRequest } from './provider-fetch.js';
8
+ import { readSSEStream } from './sse-reader.js';
9
+ /**
10
+ * Available Anthropic models
11
+ */
12
+ const ANTHROPIC_MODELS = [
13
+ 'claude-sonnet-4-20250514',
14
+ 'claude-3-5-sonnet-20241022',
15
+ 'claude-3-5-haiku-20241022',
16
+ 'claude-3-opus-20240229',
17
+ 'claude-3-sonnet-20240229',
18
+ 'claude-3-haiku-20240307',
19
+ ];
20
+ const DEFAULT_MODEL = 'claude-sonnet-4-20250514';
21
+ const API_VERSION = '2023-06-01';
22
+ /**
23
+ * Anthropic provider implementation
24
+ */
25
+ export class AnthropicProvider {
26
+ name = 'anthropic';
27
+ capabilities = {
28
+ functionCalling: true,
29
+ streaming: true,
30
+ systemMessages: true,
31
+ vision: true,
32
+ maxContextLength: 200000, // Claude 3
33
+ };
34
+ apiKey;
35
+ baseUrl;
36
+ defaultModel;
37
+ timeout;
38
+ constructor(config) {
39
+ this.apiKey = config.apiKey;
40
+ this.baseUrl = config.baseUrl ?? 'https://api.anthropic.com';
41
+ this.defaultModel = config.defaultModel ?? DEFAULT_MODEL;
42
+ this.timeout = config.timeout ?? 60000;
43
+ }
44
+ isConfigured() {
45
+ return Boolean(this.apiKey);
46
+ }
47
+ getModels() {
48
+ return [...ANTHROPIC_MODELS];
49
+ }
50
+ getDefaultModel() {
51
+ return this.defaultModel;
52
+ }
53
+ async chat(messages, options) {
54
+ const model = options?.model ?? this.defaultModel;
55
+ // Extract system message
56
+ const systemMessage = messages.find((m) => m.role === 'system');
57
+ const chatMessages = messages.filter((m) => m.role !== 'system');
58
+ const requestBody = {
59
+ model,
60
+ messages: this.convertMessages(chatMessages),
61
+ max_tokens: options?.maxTokens ?? 4096,
62
+ };
63
+ if (systemMessage) {
64
+ requestBody['system'] = systemMessage.content;
65
+ }
66
+ if (options?.temperature !== undefined) {
67
+ requestBody['temperature'] = options.temperature;
68
+ }
69
+ if (options?.stop) {
70
+ requestBody['stop_sequences'] = options.stop;
71
+ }
72
+ if (options?.tools && options.tools.length > 0) {
73
+ requestBody['tools'] = this.convertTools(options.tools);
74
+ }
75
+ const response = await this.makeRequest('/v1/messages', requestBody, options?.signal);
76
+ return this.convertResponse(response);
77
+ }
78
+ async *chatStream(messages, options) {
79
+ const model = options?.model ?? this.defaultModel;
80
+ // Extract system message
81
+ const systemMessage = messages.find((m) => m.role === 'system');
82
+ const chatMessages = messages.filter((m) => m.role !== 'system');
83
+ const requestBody = {
84
+ model,
85
+ messages: this.convertMessages(chatMessages),
86
+ max_tokens: options?.maxTokens ?? 4096,
87
+ stream: true,
88
+ };
89
+ if (systemMessage) {
90
+ requestBody['system'] = systemMessage.content;
91
+ }
92
+ if (options?.temperature !== undefined) {
93
+ requestBody['temperature'] = options.temperature;
94
+ }
95
+ if (options?.tools && options.tools.length > 0) {
96
+ requestBody['tools'] = this.convertTools(options.tools);
97
+ }
98
+ // Track tool calls
99
+ let toolId = '';
100
+ let toolName = '';
101
+ let toolArgs = '';
102
+ for await (const data of readSSEStream({
103
+ url: `${this.baseUrl}/v1/messages`,
104
+ headers: this.getHeaders(),
105
+ body: requestBody,
106
+ signal: options?.signal,
107
+ providerName: 'Anthropic',
108
+ })) {
109
+ try {
110
+ const event = JSON.parse(data);
111
+ if (event.type === 'content_block_start') {
112
+ const block = event.content_block;
113
+ if (block?.type === 'tool_use') {
114
+ toolId = block.id;
115
+ toolName = block.name;
116
+ toolArgs = '';
117
+ }
118
+ }
119
+ if (event.type === 'content_block_delta') {
120
+ const delta = event.delta;
121
+ if (delta?.type === 'text_delta' && delta.text) {
122
+ yield { content: delta.text, done: false };
123
+ }
124
+ if (delta?.type === 'input_json_delta' && delta.partial_json) {
125
+ toolArgs += delta.partial_json;
126
+ }
127
+ }
128
+ if (event.type === 'content_block_stop') {
129
+ if (toolId && toolName) {
130
+ try {
131
+ const args = JSON.parse(toolArgs || '{}');
132
+ yield {
133
+ toolCall: {
134
+ id: toolId,
135
+ name: toolName,
136
+ arguments: args,
137
+ },
138
+ done: false,
139
+ };
140
+ }
141
+ catch {
142
+ // Invalid JSON, skip
143
+ }
144
+ toolId = '';
145
+ toolName = '';
146
+ toolArgs = '';
147
+ }
148
+ }
149
+ if (event.type === 'message_stop') {
150
+ yield { done: true };
151
+ return;
152
+ }
153
+ }
154
+ catch {
155
+ // Invalid JSON, skip line
156
+ }
157
+ }
158
+ yield { done: true };
159
+ }
160
+ /**
161
+ * Convert internal messages to Anthropic format
162
+ */
163
+ convertMessages(messages) {
164
+ const result = [];
165
+ for (const msg of messages) {
166
+ if (msg.role === 'system')
167
+ continue; // Handled separately
168
+ if (msg.role === 'tool') {
169
+ // Tool results in Anthropic format
170
+ const lastMsg = result[result.length - 1];
171
+ if (lastMsg && lastMsg.role === 'user') {
172
+ // Append to existing user message
173
+ if (typeof lastMsg.content === 'string') {
174
+ lastMsg.content = [{ type: 'text', text: lastMsg.content }];
175
+ }
176
+ lastMsg.content.push({
177
+ type: 'tool_result',
178
+ tool_use_id: msg.toolCallId ?? '',
179
+ content: msg.content,
180
+ });
181
+ }
182
+ else {
183
+ // Create new user message with tool result
184
+ result.push({
185
+ role: 'user',
186
+ content: [
187
+ {
188
+ type: 'tool_result',
189
+ tool_use_id: msg.toolCallId ?? '',
190
+ content: msg.content,
191
+ },
192
+ ],
193
+ });
194
+ }
195
+ }
196
+ else {
197
+ result.push({
198
+ role: msg.role,
199
+ content: msg.content,
200
+ });
201
+ }
202
+ }
203
+ return result;
204
+ }
205
+ /**
206
+ * Convert tool definitions to Anthropic format
207
+ */
208
+ convertTools(tools) {
209
+ return tools.map((tool) => ({
210
+ name: tool.name,
211
+ description: tool.description,
212
+ input_schema: tool.parameters,
213
+ }));
214
+ }
215
+ /**
216
+ * Convert Anthropic response to internal format
217
+ */
218
+ convertResponse(response) {
219
+ let content = '';
220
+ const toolCalls = [];
221
+ for (const block of response.content) {
222
+ if (block.type === 'text') {
223
+ content += block.text;
224
+ }
225
+ else if (block.type === 'tool_use') {
226
+ toolCalls.push({
227
+ id: block.id,
228
+ name: block.name,
229
+ arguments: block.input,
230
+ });
231
+ }
232
+ }
233
+ return {
234
+ content,
235
+ toolCalls: toolCalls.length > 0 ? toolCalls : undefined,
236
+ finishReason: this.convertFinishReason(response.stop_reason),
237
+ usage: {
238
+ promptTokens: response.usage.input_tokens,
239
+ completionTokens: response.usage.output_tokens,
240
+ totalTokens: response.usage.input_tokens + response.usage.output_tokens,
241
+ },
242
+ model: response.model,
243
+ };
244
+ }
245
+ /**
246
+ * Convert finish reason
247
+ */
248
+ convertFinishReason(reason) {
249
+ switch (reason) {
250
+ case 'end_turn':
251
+ return 'stop';
252
+ case 'tool_use':
253
+ return 'tool_calls';
254
+ case 'max_tokens':
255
+ return 'length';
256
+ default:
257
+ return 'stop';
258
+ }
259
+ }
260
+ /**
261
+ * Get request headers
262
+ */
263
+ getHeaders() {
264
+ return {
265
+ 'Content-Type': 'application/json',
266
+ 'x-api-key': this.apiKey,
267
+ 'anthropic-version': API_VERSION,
268
+ };
269
+ }
270
+ /**
271
+ * Make API request
272
+ */
273
+ async makeRequest(endpoint, body, signal) {
274
+ return makeProviderRequest({
275
+ url: `${this.baseUrl}${endpoint}`,
276
+ headers: this.getHeaders(),
277
+ body,
278
+ timeout: this.timeout,
279
+ signal,
280
+ providerName: 'Anthropic',
281
+ });
282
+ }
283
+ }
284
+ /**
285
+ * Create Anthropic provider
286
+ */
287
+ export function createAnthropicProvider(config) {
288
+ return new AnthropicProvider(config);
289
+ }
290
+ // Register provider
291
+ registerProvider('anthropic', createAnthropicProvider);
292
+ //# sourceMappingURL=anthropic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/chat/providers/anthropic.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Google Gemini Provider for mainwpcontrol
3
+ *
4
+ * Implements LLM provider interface for Gemini models.
5
+ */
6
+ import { type LLMProvider, type LLMResponse, type Message, type ChatOptions, type ProviderConfig, type ProviderCapabilities, type StreamChunk } from './provider.js';
7
+ /**
8
+ * Gemini provider implementation
9
+ */
10
+ export declare class GeminiProvider implements LLMProvider {
11
+ readonly name = "gemini";
12
+ readonly capabilities: ProviderCapabilities;
13
+ private readonly apiKey;
14
+ private readonly baseUrl;
15
+ private readonly defaultModel;
16
+ private readonly timeout;
17
+ constructor(config: ProviderConfig);
18
+ isConfigured(): boolean;
19
+ getModels(): string[];
20
+ getDefaultModel(): string;
21
+ chat(messages: Message[], options?: ChatOptions): Promise<LLMResponse>;
22
+ chatStream(messages: Message[], options?: ChatOptions): AsyncGenerator<StreamChunk, void, undefined>;
23
+ /**
24
+ * Convert internal messages to Gemini format
25
+ */
26
+ private convertMessages;
27
+ /**
28
+ * Parse tool response content
29
+ */
30
+ private parseToolResponse;
31
+ /**
32
+ * Convert tool definitions to Gemini format
33
+ */
34
+ private convertTools;
35
+ /**
36
+ * Convert Gemini response to internal format
37
+ */
38
+ private convertResponse;
39
+ /**
40
+ * Convert finish reason
41
+ */
42
+ private convertFinishReason;
43
+ /**
44
+ * Make API request
45
+ */
46
+ private makeRequest;
47
+ }
48
+ /**
49
+ * Create Gemini provider
50
+ */
51
+ export declare function createGeminiProvider(config: ProviderConfig): LLMProvider;
52
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/chat/providers/gemini.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAGjB,MAAM,eAAe,CAAC;AAwEvB;;GAEG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,QAAQ,CAAC,YAAY,EAAE,oBAAoB,CAMzC;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;gBAErB,MAAM,EAAE,cAAc;IAQlC,YAAY,IAAI,OAAO;IAIvB,SAAS,IAAI,MAAM,EAAE;IAIrB,eAAe,IAAI,MAAM;IAInB,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAgDrE,UAAU,CACf,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,CAAC,EAAE,WAAW,GACpB,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,SAAS,CAAC;IA0E/C;;OAEG;IACH,OAAO,CAAC,eAAe;IA8BvB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;OAEG;IACH,OAAO,CAAC,YAAY;IAgBpB;;OAEG;IACH,OAAO,CAAC,eAAe;IAoCvB;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAe3B;;OAEG;YACW,WAAW;CAkB1B;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,cAAc,GAAG,WAAW,CAExE"}