@actalk/inkos-core 0.3.0 → 0.3.4

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.
@@ -1,41 +1,454 @@
1
1
  import OpenAI from "openai";
2
+ import Anthropic from "@anthropic-ai/sdk";
3
+ // === Factory ===
2
4
  export function createLLMClient(config) {
3
- return new OpenAI({
4
- apiKey: config.apiKey,
5
- baseURL: config.baseUrl,
6
- });
5
+ const defaults = {
6
+ temperature: config.temperature ?? 0.7,
7
+ maxTokens: config.maxTokens ?? 8192,
8
+ thinkingBudget: config.thinkingBudget ?? 0,
9
+ };
10
+ const apiFormat = config.apiFormat ?? "chat";
11
+ if (config.provider === "anthropic") {
12
+ // Anthropic SDK appends /v1/ internally — strip if user included it
13
+ const baseURL = config.baseUrl.replace(/\/v1\/?$/, "");
14
+ return {
15
+ provider: "anthropic",
16
+ apiFormat,
17
+ _anthropic: new Anthropic({ apiKey: config.apiKey, baseURL }),
18
+ defaults,
19
+ };
20
+ }
21
+ // openai or custom — both use OpenAI SDK
22
+ return {
23
+ provider: "openai",
24
+ apiFormat,
25
+ _openai: new OpenAI({ apiKey: config.apiKey, baseURL: config.baseUrl }),
26
+ defaults,
27
+ };
7
28
  }
29
+ // === Error Wrapping ===
30
+ function wrapLLMError(error) {
31
+ const msg = String(error);
32
+ if (msg.includes("403")) {
33
+ return new Error(`API 返回 403 (请求被拒绝)。可能原因:\n` +
34
+ ` 1. API Key 无效或过期\n` +
35
+ ` 2. API 提供方的内容审查拦截了请求(公益/免费 API 常见)\n` +
36
+ ` 3. 账户余额不足\n` +
37
+ ` 建议:用 inkos doctor 测试 API 连通性,或换一个不限制内容的 API 提供方`);
38
+ }
39
+ if (msg.includes("401")) {
40
+ return new Error(`API 返回 401 (未授权)。请检查 .env 中的 INKOS_LLM_API_KEY 是否正确。`);
41
+ }
42
+ if (msg.includes("429")) {
43
+ return new Error(`API 返回 429 (请求过多)。请稍后重试,或检查 API 配额。`);
44
+ }
45
+ return error instanceof Error ? error : new Error(msg);
46
+ }
47
+ // === Simple Chat (used by all agents via BaseAgent.chat()) ===
8
48
  export async function chatCompletion(client, model, messages, options) {
9
- // Use streaming mode — some providers (codex-for.me) require it
49
+ try {
50
+ const resolved = {
51
+ temperature: options?.temperature ?? client.defaults.temperature,
52
+ maxTokens: options?.maxTokens ?? client.defaults.maxTokens,
53
+ };
54
+ if (client.provider === "anthropic") {
55
+ return await chatCompletionAnthropic(client._anthropic, model, messages, resolved, client.defaults.thinkingBudget);
56
+ }
57
+ if (client.apiFormat === "responses") {
58
+ return await chatCompletionOpenAIResponses(client._openai, model, messages, resolved);
59
+ }
60
+ return await chatCompletionOpenAIChat(client._openai, model, messages, resolved);
61
+ }
62
+ catch (error) {
63
+ throw wrapLLMError(error);
64
+ }
65
+ }
66
+ // === Tool-calling Chat (used by agent loop) ===
67
+ export async function chatWithTools(client, model, messages, tools, options) {
68
+ try {
69
+ const resolved = {
70
+ temperature: options?.temperature ?? client.defaults.temperature,
71
+ maxTokens: options?.maxTokens ?? client.defaults.maxTokens,
72
+ };
73
+ if (client.provider === "anthropic") {
74
+ return await chatWithToolsAnthropic(client._anthropic, model, messages, tools, resolved, client.defaults.thinkingBudget);
75
+ }
76
+ if (client.apiFormat === "responses") {
77
+ return await chatWithToolsOpenAIResponses(client._openai, model, messages, tools, resolved);
78
+ }
79
+ return await chatWithToolsOpenAIChat(client._openai, model, messages, tools, resolved);
80
+ }
81
+ catch (error) {
82
+ throw wrapLLMError(error);
83
+ }
84
+ }
85
+ // === OpenAI Chat Completions API Implementation (default) ===
86
+ async function chatCompletionOpenAIChat(client, model, messages, options) {
10
87
  const stream = await client.chat.completions.create({
11
88
  model,
12
- messages: messages.map((m) => ({ role: m.role, content: m.content })),
13
- temperature: options?.temperature ?? 0.7,
14
- max_tokens: options?.maxTokens ?? 8192,
89
+ messages: messages.map((m) => ({
90
+ role: m.role,
91
+ content: m.content,
92
+ })),
93
+ temperature: options.temperature,
94
+ max_tokens: options.maxTokens,
15
95
  stream: true,
16
96
  });
17
97
  const chunks = [];
18
- let promptTokens = 0;
19
- let completionTokens = 0;
20
- let totalTokens = 0;
98
+ let inputTokens = 0;
99
+ let outputTokens = 0;
21
100
  for await (const chunk of stream) {
22
101
  const delta = chunk.choices[0]?.delta?.content;
23
- if (delta) {
102
+ if (delta)
24
103
  chunks.push(delta);
25
- }
26
104
  if (chunk.usage) {
27
- promptTokens = chunk.usage.prompt_tokens ?? 0;
28
- completionTokens = chunk.usage.completion_tokens ?? 0;
29
- totalTokens = chunk.usage.total_tokens ?? 0;
105
+ inputTokens = chunk.usage.prompt_tokens ?? 0;
106
+ outputTokens = chunk.usage.completion_tokens ?? 0;
107
+ }
108
+ }
109
+ const content = chunks.join("");
110
+ if (!content)
111
+ throw new Error("LLM returned empty response");
112
+ return {
113
+ content,
114
+ usage: {
115
+ promptTokens: inputTokens,
116
+ completionTokens: outputTokens,
117
+ totalTokens: inputTokens + outputTokens,
118
+ },
119
+ };
120
+ }
121
+ async function chatWithToolsOpenAIChat(client, model, messages, tools, options) {
122
+ const openaiMessages = agentMessagesToOpenAIChat(messages);
123
+ const openaiTools = tools.map((t) => ({
124
+ type: "function",
125
+ function: {
126
+ name: t.name,
127
+ description: t.description,
128
+ parameters: t.parameters,
129
+ },
130
+ }));
131
+ const stream = await client.chat.completions.create({
132
+ model,
133
+ messages: openaiMessages,
134
+ tools: openaiTools,
135
+ temperature: options.temperature,
136
+ max_tokens: options.maxTokens,
137
+ stream: true,
138
+ });
139
+ let content = "";
140
+ const toolCallMap = new Map();
141
+ for await (const chunk of stream) {
142
+ const delta = chunk.choices[0]?.delta;
143
+ if (delta?.content)
144
+ content += delta.content;
145
+ if (delta?.tool_calls) {
146
+ for (const tc of delta.tool_calls) {
147
+ const existing = toolCallMap.get(tc.index);
148
+ if (existing) {
149
+ existing.arguments += tc.function?.arguments ?? "";
150
+ }
151
+ else {
152
+ toolCallMap.set(tc.index, {
153
+ id: tc.id ?? "",
154
+ name: tc.function?.name ?? "",
155
+ arguments: tc.function?.arguments ?? "",
156
+ });
157
+ }
158
+ }
159
+ }
160
+ }
161
+ const toolCalls = [...toolCallMap.values()];
162
+ return { content, toolCalls };
163
+ }
164
+ function agentMessagesToOpenAIChat(messages) {
165
+ const result = [];
166
+ for (const msg of messages) {
167
+ if (msg.role === "system") {
168
+ result.push({ role: "system", content: msg.content });
169
+ continue;
170
+ }
171
+ if (msg.role === "user") {
172
+ result.push({ role: "user", content: msg.content });
173
+ continue;
174
+ }
175
+ if (msg.role === "assistant") {
176
+ const assistantMsg = {
177
+ role: "assistant",
178
+ content: msg.content ?? null,
179
+ };
180
+ if (msg.toolCalls && msg.toolCalls.length > 0) {
181
+ assistantMsg.tool_calls = msg.toolCalls.map((tc) => ({
182
+ id: tc.id,
183
+ type: "function",
184
+ function: { name: tc.name, arguments: tc.arguments },
185
+ }));
186
+ }
187
+ result.push(assistantMsg);
188
+ continue;
189
+ }
190
+ if (msg.role === "tool") {
191
+ result.push({
192
+ role: "tool",
193
+ tool_call_id: msg.toolCallId,
194
+ content: msg.content,
195
+ });
196
+ }
197
+ }
198
+ return result;
199
+ }
200
+ // === OpenAI Responses API Implementation (optional) ===
201
+ async function chatCompletionOpenAIResponses(client, model, messages, options) {
202
+ const input = messages.map((m) => ({
203
+ role: m.role,
204
+ content: m.content,
205
+ }));
206
+ const stream = await client.responses.create({
207
+ model,
208
+ input,
209
+ temperature: options.temperature,
210
+ max_output_tokens: options.maxTokens,
211
+ stream: true,
212
+ });
213
+ const chunks = [];
214
+ let inputTokens = 0;
215
+ let outputTokens = 0;
216
+ for await (const event of stream) {
217
+ if (event.type === "response.output_text.delta") {
218
+ chunks.push(event.delta);
219
+ }
220
+ if (event.type === "response.completed") {
221
+ inputTokens = event.response.usage?.input_tokens ?? 0;
222
+ outputTokens = event.response.usage?.output_tokens ?? 0;
30
223
  }
31
224
  }
32
225
  const content = chunks.join("");
33
- if (!content) {
226
+ if (!content)
34
227
  throw new Error("LLM returned empty response");
228
+ return {
229
+ content,
230
+ usage: {
231
+ promptTokens: inputTokens,
232
+ completionTokens: outputTokens,
233
+ totalTokens: inputTokens + outputTokens,
234
+ },
235
+ };
236
+ }
237
+ async function chatWithToolsOpenAIResponses(client, model, messages, tools, options) {
238
+ const input = agentMessagesToResponsesInput(messages);
239
+ const responsesTools = tools.map((t) => ({
240
+ type: "function",
241
+ name: t.name,
242
+ description: t.description,
243
+ parameters: t.parameters,
244
+ strict: false,
245
+ }));
246
+ const stream = await client.responses.create({
247
+ model,
248
+ input,
249
+ tools: responsesTools,
250
+ temperature: options.temperature,
251
+ max_output_tokens: options.maxTokens,
252
+ stream: true,
253
+ });
254
+ let content = "";
255
+ const toolCalls = [];
256
+ for await (const event of stream) {
257
+ if (event.type === "response.output_text.delta") {
258
+ content += event.delta;
259
+ }
260
+ if (event.type === "response.output_item.done" && event.item.type === "function_call") {
261
+ toolCalls.push({
262
+ id: event.item.call_id,
263
+ name: event.item.name,
264
+ arguments: event.item.arguments,
265
+ });
266
+ }
35
267
  }
268
+ return { content, toolCalls };
269
+ }
270
+ function agentMessagesToResponsesInput(messages) {
271
+ const result = [];
272
+ for (const msg of messages) {
273
+ if (msg.role === "system") {
274
+ result.push({ role: "system", content: msg.content });
275
+ continue;
276
+ }
277
+ if (msg.role === "user") {
278
+ result.push({ role: "user", content: msg.content });
279
+ continue;
280
+ }
281
+ if (msg.role === "assistant") {
282
+ if (msg.content) {
283
+ result.push({ role: "assistant", content: msg.content });
284
+ }
285
+ if (msg.toolCalls) {
286
+ for (const tc of msg.toolCalls) {
287
+ result.push({
288
+ type: "function_call",
289
+ call_id: tc.id,
290
+ name: tc.name,
291
+ arguments: tc.arguments,
292
+ });
293
+ }
294
+ }
295
+ continue;
296
+ }
297
+ if (msg.role === "tool") {
298
+ result.push({
299
+ type: "function_call_output",
300
+ call_id: msg.toolCallId,
301
+ output: msg.content,
302
+ });
303
+ }
304
+ }
305
+ return result;
306
+ }
307
+ // === Anthropic Implementation ===
308
+ async function chatCompletionAnthropic(client, model, messages, options, thinkingBudget = 0) {
309
+ const systemText = messages
310
+ .filter((m) => m.role === "system")
311
+ .map((m) => m.content)
312
+ .join("\n\n");
313
+ const nonSystem = messages.filter((m) => m.role !== "system");
314
+ const stream = await client.messages.create({
315
+ model,
316
+ ...(systemText ? { system: systemText } : {}),
317
+ messages: nonSystem.map((m) => ({
318
+ role: m.role,
319
+ content: m.content,
320
+ })),
321
+ ...(thinkingBudget > 0
322
+ ? { thinking: { type: "enabled", budget_tokens: thinkingBudget } }
323
+ : { temperature: options.temperature }),
324
+ max_tokens: options.maxTokens,
325
+ stream: true,
326
+ });
327
+ const chunks = [];
328
+ let inputTokens = 0;
329
+ let outputTokens = 0;
330
+ for await (const event of stream) {
331
+ if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
332
+ chunks.push(event.delta.text);
333
+ }
334
+ if (event.type === "message_start") {
335
+ inputTokens = event.message.usage?.input_tokens ?? 0;
336
+ }
337
+ if (event.type === "message_delta") {
338
+ outputTokens = (event.usage?.output_tokens) ?? 0;
339
+ }
340
+ }
341
+ const content = chunks.join("");
342
+ if (!content)
343
+ throw new Error("LLM returned empty response");
36
344
  return {
37
345
  content,
38
- usage: { promptTokens, completionTokens, totalTokens },
346
+ usage: {
347
+ promptTokens: inputTokens,
348
+ completionTokens: outputTokens,
349
+ totalTokens: inputTokens + outputTokens,
350
+ },
39
351
  };
40
352
  }
353
+ async function chatWithToolsAnthropic(client, model, messages, tools, options, thinkingBudget = 0) {
354
+ const systemText = messages
355
+ .filter((m) => m.role === "system")
356
+ .map((m) => m.content)
357
+ .join("\n\n");
358
+ const nonSystem = messages.filter((m) => m.role !== "system");
359
+ const anthropicMessages = agentMessagesToAnthropic(nonSystem);
360
+ const anthropicTools = tools.map((t) => ({
361
+ name: t.name,
362
+ description: t.description,
363
+ input_schema: t.parameters,
364
+ }));
365
+ const stream = await client.messages.create({
366
+ model,
367
+ ...(systemText ? { system: systemText } : {}),
368
+ messages: anthropicMessages,
369
+ tools: anthropicTools,
370
+ ...(thinkingBudget > 0
371
+ ? { thinking: { type: "enabled", budget_tokens: thinkingBudget } }
372
+ : { temperature: options.temperature }),
373
+ max_tokens: options.maxTokens,
374
+ stream: true,
375
+ });
376
+ let content = "";
377
+ const toolCalls = [];
378
+ let currentBlock = null;
379
+ for await (const event of stream) {
380
+ if (event.type === "content_block_start" && event.content_block.type === "tool_use") {
381
+ currentBlock = {
382
+ id: event.content_block.id,
383
+ name: event.content_block.name,
384
+ input: "",
385
+ };
386
+ }
387
+ if (event.type === "content_block_delta") {
388
+ if (event.delta.type === "text_delta") {
389
+ content += event.delta.text;
390
+ }
391
+ if (event.delta.type === "input_json_delta" && currentBlock) {
392
+ currentBlock.input += event.delta.partial_json;
393
+ }
394
+ }
395
+ if (event.type === "content_block_stop" && currentBlock) {
396
+ toolCalls.push({
397
+ id: currentBlock.id,
398
+ name: currentBlock.name,
399
+ arguments: currentBlock.input,
400
+ });
401
+ currentBlock = null;
402
+ }
403
+ }
404
+ return { content, toolCalls };
405
+ }
406
+ function agentMessagesToAnthropic(messages) {
407
+ const result = [];
408
+ for (const msg of messages) {
409
+ if (msg.role === "system")
410
+ continue;
411
+ if (msg.role === "user") {
412
+ result.push({ role: "user", content: msg.content });
413
+ continue;
414
+ }
415
+ if (msg.role === "assistant") {
416
+ const blocks = [];
417
+ if (msg.content) {
418
+ blocks.push({ type: "text", text: msg.content });
419
+ }
420
+ if (msg.toolCalls) {
421
+ for (const tc of msg.toolCalls) {
422
+ blocks.push({
423
+ type: "tool_use",
424
+ id: tc.id,
425
+ name: tc.name,
426
+ input: JSON.parse(tc.arguments),
427
+ });
428
+ }
429
+ }
430
+ if (blocks.length === 0) {
431
+ blocks.push({ type: "text", text: "" });
432
+ }
433
+ result.push({ role: "assistant", content: blocks });
434
+ continue;
435
+ }
436
+ if (msg.role === "tool") {
437
+ const toolResult = {
438
+ type: "tool_result",
439
+ tool_use_id: msg.toolCallId,
440
+ content: msg.content,
441
+ };
442
+ // Merge consecutive tool results into one user message (Anthropic requires alternating roles)
443
+ const prev = result[result.length - 1];
444
+ if (prev && prev.role === "user" && Array.isArray(prev.content)) {
445
+ prev.content.push(toolResult);
446
+ }
447
+ else {
448
+ result.push({ role: "user", content: [toolResult] });
449
+ }
450
+ }
451
+ }
452
+ return result;
453
+ }
41
454
  //# sourceMappingURL=provider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAiB5B,MAAM,UAAU,eAAe,CAAC,MAAiB;IAC/C,OAAO,IAAI,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;KACxB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,MAAc,EACd,KAAa,EACb,QAAmC,EACnC,OAGC;IAED,gEAAgE;IAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;QAClD,KAAK;QACL,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QACrE,WAAW,EAAE,OAAO,EAAE,WAAW,IAAI,GAAG;QACxC,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;QACtC,MAAM,EAAE,IAAI;KACb,CAAC,CAAC;IAEH,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,gBAAgB,GAAG,CAAC,CAAC;IACzB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC;QAC/C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC,CAAC;YAC9C,gBAAgB,GAAG,KAAK,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;YACtD,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,OAAO;QACP,KAAK,EAAE,EAAE,YAAY,EAAE,gBAAgB,EAAE,WAAW,EAAE;KACvD,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"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"}
@@ -2,18 +2,30 @@ import { z } from "zod";
2
2
  export declare const LLMConfigSchema: z.ZodObject<{
3
3
  provider: z.ZodEnum<["anthropic", "openai", "custom"]>;
4
4
  baseUrl: z.ZodString;
5
- apiKey: z.ZodString;
5
+ apiKey: z.ZodDefault<z.ZodString>;
6
6
  model: z.ZodString;
7
+ temperature: z.ZodDefault<z.ZodNumber>;
8
+ maxTokens: z.ZodDefault<z.ZodNumber>;
9
+ thinkingBudget: z.ZodDefault<z.ZodNumber>;
10
+ apiFormat: z.ZodDefault<z.ZodEnum<["chat", "responses"]>>;
7
11
  }, "strip", z.ZodTypeAny, {
8
12
  provider: "custom" | "anthropic" | "openai";
9
13
  baseUrl: string;
10
14
  apiKey: string;
11
15
  model: string;
16
+ temperature: number;
17
+ maxTokens: number;
18
+ thinkingBudget: number;
19
+ apiFormat: "chat" | "responses";
12
20
  }, {
13
21
  provider: "custom" | "anthropic" | "openai";
14
22
  baseUrl: string;
15
- apiKey: string;
16
23
  model: string;
24
+ apiKey?: string | undefined;
25
+ temperature?: number | undefined;
26
+ maxTokens?: number | undefined;
27
+ thinkingBudget?: number | undefined;
28
+ apiFormat?: "chat" | "responses" | undefined;
17
29
  }>;
18
30
  export type LLMConfig = z.infer<typeof LLMConfigSchema>;
19
31
  export declare const NotifyChannelSchema: z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
@@ -54,18 +66,30 @@ export declare const ProjectConfigSchema: z.ZodObject<{
54
66
  llm: z.ZodObject<{
55
67
  provider: z.ZodEnum<["anthropic", "openai", "custom"]>;
56
68
  baseUrl: z.ZodString;
57
- apiKey: z.ZodString;
69
+ apiKey: z.ZodDefault<z.ZodString>;
58
70
  model: z.ZodString;
71
+ temperature: z.ZodDefault<z.ZodNumber>;
72
+ maxTokens: z.ZodDefault<z.ZodNumber>;
73
+ thinkingBudget: z.ZodDefault<z.ZodNumber>;
74
+ apiFormat: z.ZodDefault<z.ZodEnum<["chat", "responses"]>>;
59
75
  }, "strip", z.ZodTypeAny, {
60
76
  provider: "custom" | "anthropic" | "openai";
61
77
  baseUrl: string;
62
78
  apiKey: string;
63
79
  model: string;
80
+ temperature: number;
81
+ maxTokens: number;
82
+ thinkingBudget: number;
83
+ apiFormat: "chat" | "responses";
64
84
  }, {
65
85
  provider: "custom" | "anthropic" | "openai";
66
86
  baseUrl: string;
67
- apiKey: string;
68
87
  model: string;
88
+ apiKey?: string | undefined;
89
+ temperature?: number | undefined;
90
+ maxTokens?: number | undefined;
91
+ thinkingBudget?: number | undefined;
92
+ apiFormat?: "chat" | "responses" | undefined;
69
93
  }>;
70
94
  notify: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<"type", [z.ZodObject<{
71
95
  type: z.ZodLiteral<"telegram">;
@@ -136,6 +160,10 @@ export declare const ProjectConfigSchema: z.ZodObject<{
136
160
  baseUrl: string;
137
161
  apiKey: string;
138
162
  model: string;
163
+ temperature: number;
164
+ maxTokens: number;
165
+ thinkingBudget: number;
166
+ apiFormat: "chat" | "responses";
139
167
  };
140
168
  notify: ({
141
169
  type: "telegram";
@@ -162,8 +190,12 @@ export declare const ProjectConfigSchema: z.ZodObject<{
162
190
  llm: {
163
191
  provider: "custom" | "anthropic" | "openai";
164
192
  baseUrl: string;
165
- apiKey: string;
166
193
  model: string;
194
+ apiKey?: string | undefined;
195
+ temperature?: number | undefined;
196
+ maxTokens?: number | undefined;
197
+ thinkingBudget?: number | undefined;
198
+ apiFormat?: "chat" | "responses" | undefined;
167
199
  };
168
200
  notify?: ({
169
201
  type: "telegram";
@@ -1 +1 @@
1
- {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/models/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;EAK1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAc9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
1
+ {"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/models/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;EAS1B,CAAC;AAEH,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAc9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoB9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
@@ -2,8 +2,12 @@ import { z } from "zod";
2
2
  export const LLMConfigSchema = z.object({
3
3
  provider: z.enum(["anthropic", "openai", "custom"]),
4
4
  baseUrl: z.string().url(),
5
- apiKey: z.string().min(1),
5
+ apiKey: z.string().default(""),
6
6
  model: z.string().min(1),
7
+ temperature: z.number().min(0).max(2).default(0.7),
8
+ maxTokens: z.number().int().min(1).default(8192),
9
+ thinkingBudget: z.number().int().min(0).default(0),
10
+ apiFormat: z.enum(["chat", "responses"]).default("chat"),
7
11
  });
8
12
  export const NotifyChannelSchema = z.discriminatedUnion("type", [
9
13
  z.object({
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/models/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACzB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC9D,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;QAC3B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;KAC1B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;KAC7B,CAAC;IACF,CAAC,CAAC,MAAM,CAAC;QACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;QACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;KAC7B,CAAC;CACH,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC3B,GAAG,EAAE,eAAe;IACpB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC;QACf,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC;YACjB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;YAC1C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3C,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC;SAC5C,CAAC;QACF,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;KACvD,CAAC,CAAC,OAAO,CAAC;QACT,QAAQ,EAAE;YACR,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,YAAY;YACvB,SAAS,EAAE,YAAY;SACxB;QACD,kBAAkB,EAAE,CAAC;KACtB,CAAC;CACH,CAAC,CAAC"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/models/project.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
- import type OpenAI from "openai";
1
+ import { type ToolDefinition } from "../llm/provider.js";
2
2
  import { type PipelineConfig } from "./runner.js";
3
- /** Tool definitions for the agent loop (OpenAI function calling format). */
4
- declare const TOOLS: OpenAI.Chat.Completions.ChatCompletionTool[];
3
+ /** Tool definitions for the agent loop. */
4
+ declare const TOOLS: ReadonlyArray<ToolDefinition>;
5
5
  export interface AgentLoopOptions {
6
6
  readonly onToolCall?: (name: string, args: Record<string, unknown>) => void;
7
7
  readonly onToolResult?: (name: string, result: string) => void;
@@ -9,6 +9,6 @@ export interface AgentLoopOptions {
9
9
  readonly maxTurns?: number;
10
10
  }
11
11
  export declare function runAgentLoop(config: PipelineConfig, instruction: string, options?: AgentLoopOptions): Promise<string>;
12
- /** Export tool definitions so OpenClaw or other systems can reference them. */
12
+ /** Export tool definitions so external systems can reference them. */
13
13
  export { TOOLS as AGENT_TOOLS };
14
14
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/pipeline/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlE,4EAA4E;AAC5E,QAAA,MAAM,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAiItD,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CA8IjB;AAgHD,+EAA+E;AAC/E,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../src/pipeline/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAkB,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlE,2CAA2C;AAC3C,QAAA,MAAM,KAAK,EAAE,aAAa,CAAC,cAAc,CAsGxC,CAAC;AAEF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC5E,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,cAAc,EACtB,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,gBAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAqFjB;AA+GD,sEAAsE;AACtE,OAAO,EAAE,KAAK,IAAI,WAAW,EAAE,CAAC"}