@allevitas/agent-kit 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 (51) hide show
  1. package/README.ja.md +284 -0
  2. package/README.md +281 -0
  3. package/dist/auth.d.ts +73 -0
  4. package/dist/auth.d.ts.map +1 -0
  5. package/dist/auth.js +349 -0
  6. package/dist/auth.js.map +1 -0
  7. package/dist/challengeSolver.d.ts +62 -0
  8. package/dist/challengeSolver.d.ts.map +1 -0
  9. package/dist/challengeSolver.js +270 -0
  10. package/dist/challengeSolver.js.map +1 -0
  11. package/dist/cli.d.ts +8 -0
  12. package/dist/cli.d.ts.map +1 -0
  13. package/dist/cli.js +602 -0
  14. package/dist/cli.js.map +1 -0
  15. package/dist/client.d.ts +65 -0
  16. package/dist/client.d.ts.map +1 -0
  17. package/dist/client.js +94 -0
  18. package/dist/client.js.map +1 -0
  19. package/dist/env.d.ts +6 -0
  20. package/dist/env.d.ts.map +1 -0
  21. package/dist/env.js +54 -0
  22. package/dist/env.js.map +1 -0
  23. package/dist/index.d.ts +15 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +17 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/llmClient.d.ts +62 -0
  28. package/dist/llmClient.d.ts.map +1 -0
  29. package/dist/llmClient.js +331 -0
  30. package/dist/llmClient.js.map +1 -0
  31. package/dist/mcpServer.d.ts +41 -0
  32. package/dist/mcpServer.d.ts.map +1 -0
  33. package/dist/mcpServer.js +524 -0
  34. package/dist/mcpServer.js.map +1 -0
  35. package/dist/rateLimitHandler.d.ts +25 -0
  36. package/dist/rateLimitHandler.d.ts.map +1 -0
  37. package/dist/rateLimitHandler.js +117 -0
  38. package/dist/rateLimitHandler.js.map +1 -0
  39. package/dist/shoutoutClient.d.ts +43 -0
  40. package/dist/shoutoutClient.d.ts.map +1 -0
  41. package/dist/shoutoutClient.js +116 -0
  42. package/dist/shoutoutClient.js.map +1 -0
  43. package/dist/threadClient.d.ts +71 -0
  44. package/dist/threadClient.d.ts.map +1 -0
  45. package/dist/threadClient.js +255 -0
  46. package/dist/threadClient.js.map +1 -0
  47. package/dist/types.d.ts +229 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +5 -0
  50. package/dist/types.js.map +1 -0
  51. package/package.json +60 -0
@@ -0,0 +1,331 @@
1
+ /**
2
+ * @allevitas/agent-kit - 軽量マルチプロバイダー LLM クライアント
3
+ *
4
+ * 外部パッケージ(SDK)を追加インストールせず、Node.js 標準 fetch のみで動作します。
5
+ * Gemini / OpenAI / Anthropic / Ollama を透過的に切り替え可能です。
6
+ */
7
+ import process from "node:process";
8
+ import { DEFAULT_USER_AGENT } from "./rateLimitHandler.js";
9
+ export class LLMClient {
10
+ defaultProvider;
11
+ defaultApiKey;
12
+ defaultBaseUrl;
13
+ defaultModel;
14
+ userAgent;
15
+ constructor(options = {}) {
16
+ this.defaultProvider =
17
+ options.provider ||
18
+ process.env.ALLEVITAS_LLM_PROVIDER ||
19
+ process.env.LLM_PROVIDER ||
20
+ "gemini";
21
+ this.defaultApiKey = options.apiKey;
22
+ this.defaultBaseUrl = options.baseUrl;
23
+ this.defaultModel = options.model;
24
+ this.userAgent = options.userAgent || DEFAULT_USER_AGENT;
25
+ }
26
+ /**
27
+ * LLMを呼び出し、テキスト応答を取得する
28
+ */
29
+ async call(options) {
30
+ const provider = (options.provider || this.defaultProvider).toLowerCase();
31
+ let result;
32
+ switch (provider) {
33
+ case "gemini":
34
+ result = await this.callGemini(options);
35
+ break;
36
+ case "openai":
37
+ result = await this.callOpenAI(options);
38
+ break;
39
+ case "anthropic":
40
+ result = await this.callAnthropic(options);
41
+ break;
42
+ case "ollama":
43
+ result = await this.callOllama(options);
44
+ break;
45
+ case "xai":
46
+ case "grok":
47
+ result = await this.callXAI(options);
48
+ break;
49
+ default:
50
+ throw new Error(`未対応の LLM プロバイダです: ${String(provider)}`);
51
+ }
52
+ if (options.jsonMode) {
53
+ return cleanJsonOutput(result);
54
+ }
55
+ return result;
56
+ }
57
+ /**
58
+ * 簡易プロンプト実行(ショートカット)
59
+ */
60
+ async generate(prompt, systemPrompt) {
61
+ return await this.call({ prompt, systemPrompt });
62
+ }
63
+ async callGemini(options) {
64
+ const apiKey = options.apiKey ||
65
+ this.defaultApiKey ||
66
+ process.env.GEMINI_API_KEY ||
67
+ process.env.ALLEVITAS_LLM_API_KEY;
68
+ if (!apiKey) {
69
+ throw new Error("GEMINI_API_KEY が設定されていません。");
70
+ }
71
+ const primaryModel = options.model ||
72
+ this.defaultModel ||
73
+ process.env.GEMINI_MODEL ||
74
+ process.env.ALLEVITAS_LLM_MODEL ||
75
+ process.env.LLM_MODEL ||
76
+ "gemini-3-flash-preview";
77
+ const candidateModels = [primaryModel];
78
+ for (const fb of ["gemini-3-flash-preview", "gemini-3.1-flash-lite-preview", "gemini-flash-latest"]) {
79
+ if (!candidateModels.includes(fb))
80
+ candidateModels.push(fb);
81
+ }
82
+ const contents = [];
83
+ if (options.systemPrompt) {
84
+ contents.push({ role: "user", parts: [{ text: `[System Instruction]\n${options.systemPrompt}` }] });
85
+ contents.push({ role: "model", parts: [{ text: "了解しました。指示に従います。" }] });
86
+ }
87
+ contents.push({ role: "user", parts: [{ text: options.prompt }] });
88
+ let lastError = null;
89
+ for (const model of candidateModels) {
90
+ const url = `https://generativelanguage.googleapis.com/v1beta/models/${model}:generateContent?key=${apiKey}`;
91
+ for (let attempt = 1; attempt <= 3; attempt++) {
92
+ try {
93
+ const res = await fetch(url, {
94
+ method: "POST",
95
+ headers: {
96
+ "Content-Type": "application/json",
97
+ "User-Agent": this.userAgent,
98
+ },
99
+ body: JSON.stringify({
100
+ contents,
101
+ generationConfig: {
102
+ temperature: options.temperature ?? 0.7,
103
+ ...(options.jsonMode ? { response_mime_type: "application/json" } : {}),
104
+ },
105
+ }),
106
+ });
107
+ if (!res.ok) {
108
+ const errText = await res.text();
109
+ lastError = new Error(`Gemini API エラー (${res.status}): ${errText}`);
110
+ if (res.status === 429 || res.status === 503) {
111
+ if (attempt < 3) {
112
+ await new Promise((resolve) => setTimeout(resolve, 2000 * attempt));
113
+ continue;
114
+ }
115
+ else if (model !== candidateModels[candidateModels.length - 1]) {
116
+ break;
117
+ }
118
+ }
119
+ else if (res.status === 404) {
120
+ break;
121
+ }
122
+ throw lastError;
123
+ }
124
+ const data = await res.json();
125
+ return data.candidates?.[0]?.content?.parts?.[0]?.text || "";
126
+ }
127
+ catch (err) {
128
+ lastError = err;
129
+ if (attempt < 3) {
130
+ await new Promise((resolve) => setTimeout(resolve, 2000 * attempt));
131
+ continue;
132
+ }
133
+ else if (model !== candidateModels[candidateModels.length - 1]) {
134
+ break;
135
+ }
136
+ throw err;
137
+ }
138
+ }
139
+ }
140
+ throw lastError || new Error("Gemini API の呼び出しに失敗しました。");
141
+ }
142
+ async callOpenAI(options) {
143
+ const apiKey = options.apiKey ||
144
+ this.defaultApiKey ||
145
+ process.env.OPENAI_API_KEY ||
146
+ process.env.ALLEVITAS_LLM_API_KEY;
147
+ if (!apiKey) {
148
+ throw new Error("OPENAI_API_KEY が設定されていません。");
149
+ }
150
+ const baseUrl = (options.baseUrl ||
151
+ this.defaultBaseUrl ||
152
+ process.env.OPENAI_BASE_URL ||
153
+ "https://api.openai.com/v1").replace(/\/$/, "");
154
+ const model = options.model ||
155
+ this.defaultModel ||
156
+ process.env.OPENAI_MODEL ||
157
+ process.env.ALLEVITAS_LLM_MODEL ||
158
+ process.env.LLM_MODEL ||
159
+ "gpt-4o-mini";
160
+ const messages = [];
161
+ if (options.systemPrompt) {
162
+ messages.push({ role: "system", content: options.systemPrompt });
163
+ }
164
+ messages.push({ role: "user", content: options.prompt });
165
+ const res = await fetch(`${baseUrl}/chat/completions`, {
166
+ method: "POST",
167
+ headers: {
168
+ "Content-Type": "application/json",
169
+ "Authorization": `Bearer ${apiKey}`,
170
+ "User-Agent": this.userAgent,
171
+ },
172
+ body: JSON.stringify({
173
+ model,
174
+ messages,
175
+ temperature: options.temperature ?? 0.7,
176
+ ...(options.jsonMode ? { response_format: { type: "json_object" } } : {}),
177
+ }),
178
+ });
179
+ if (!res.ok) {
180
+ const errText = await res.text();
181
+ throw new Error(`OpenAI API エラー (${res.status}): ${errText}`);
182
+ }
183
+ const data = await res.json();
184
+ return data.choices?.[0]?.message?.content || "";
185
+ }
186
+ async callAnthropic(options) {
187
+ const apiKey = options.apiKey ||
188
+ this.defaultApiKey ||
189
+ process.env.ANTHROPIC_API_KEY ||
190
+ process.env.ALLEVITAS_LLM_API_KEY;
191
+ if (!apiKey) {
192
+ throw new Error("ANTHROPIC_API_KEY が設定されていません。");
193
+ }
194
+ const model = options.model ||
195
+ this.defaultModel ||
196
+ process.env.ANTHROPIC_MODEL ||
197
+ process.env.ALLEVITAS_LLM_MODEL ||
198
+ process.env.LLM_MODEL ||
199
+ "claude-haiku-4-5-20251001";
200
+ const prompt = options.jsonMode ? `${options.prompt}\nOutput raw valid JSON only.` : options.prompt;
201
+ const res = await fetch("https://api.anthropic.com/v1/messages", {
202
+ method: "POST",
203
+ headers: {
204
+ "Content-Type": "application/json",
205
+ "x-api-key": apiKey,
206
+ "anthropic-version": "2023-06-01",
207
+ "User-Agent": this.userAgent,
208
+ },
209
+ body: JSON.stringify({
210
+ model,
211
+ max_tokens: 1024,
212
+ system: options.systemPrompt,
213
+ messages: [{ role: "user", content: prompt }],
214
+ temperature: options.temperature ?? 0.7,
215
+ }),
216
+ });
217
+ if (!res.ok) {
218
+ const errText = await res.text();
219
+ throw new Error(`Anthropic API エラー (${res.status}): ${errText}`);
220
+ }
221
+ const data = await res.json();
222
+ return data.content?.[0]?.text || "";
223
+ }
224
+ async callOllama(options) {
225
+ const baseUrl = (options.baseUrl ||
226
+ this.defaultBaseUrl ||
227
+ process.env.OLLAMA_BASE_URL ||
228
+ "http://localhost:11434").replace(/\/$/, "");
229
+ const model = options.model ||
230
+ this.defaultModel ||
231
+ process.env.OLLAMA_MODEL ||
232
+ process.env.ALLEVITAS_LLM_MODEL ||
233
+ process.env.LLM_MODEL ||
234
+ "llama3.2";
235
+ const res = await fetch(`${baseUrl}/api/generate`, {
236
+ method: "POST",
237
+ headers: {
238
+ "Content-Type": "application/json",
239
+ "User-Agent": this.userAgent,
240
+ },
241
+ body: JSON.stringify({
242
+ model,
243
+ system: options.systemPrompt,
244
+ prompt: options.prompt,
245
+ format: options.jsonMode ? "json" : undefined,
246
+ stream: false,
247
+ options: { temperature: options.temperature ?? 0.7 },
248
+ }),
249
+ });
250
+ if (!res.ok) {
251
+ const errText = await res.text();
252
+ throw new Error(`Ollama API エラー (${res.status}): ${errText}`);
253
+ }
254
+ const data = await res.json();
255
+ return data.response || "";
256
+ }
257
+ async callXAI(options) {
258
+ const apiKey = options.apiKey ||
259
+ this.defaultApiKey ||
260
+ process.env.XAI_API_KEY ||
261
+ process.env.GROK_API_KEY ||
262
+ process.env.ALLEVITAS_LLM_API_KEY;
263
+ if (!apiKey) {
264
+ throw new Error("XAI_API_KEY または GROK_API_KEY が設定されていません。");
265
+ }
266
+ const baseUrl = (options.baseUrl ||
267
+ this.defaultBaseUrl ||
268
+ process.env.XAI_BASE_URL ||
269
+ process.env.GROK_BASE_URL ||
270
+ "https://api.x.ai/v1").replace(/\/$/, "");
271
+ const model = options.model ||
272
+ this.defaultModel ||
273
+ process.env.XAI_MODEL ||
274
+ process.env.GROK_MODEL ||
275
+ process.env.ALLEVITAS_LLM_MODEL ||
276
+ process.env.LLM_MODEL ||
277
+ "grok-4.20-non-reasoning";
278
+ const messages = [];
279
+ if (options.systemPrompt) {
280
+ messages.push({ role: "system", content: options.systemPrompt });
281
+ }
282
+ messages.push({ role: "user", content: options.prompt });
283
+ const res = await fetch(`${baseUrl}/chat/completions`, {
284
+ method: "POST",
285
+ headers: {
286
+ "Content-Type": "application/json",
287
+ "Authorization": `Bearer ${apiKey}`,
288
+ "User-Agent": this.userAgent,
289
+ },
290
+ body: JSON.stringify({
291
+ model,
292
+ messages,
293
+ temperature: options.temperature ?? 0.7,
294
+ ...(options.jsonMode ? { response_format: { type: "json_object" } } : {}),
295
+ }),
296
+ });
297
+ if (!res.ok) {
298
+ const errText = await res.text();
299
+ throw new Error(`xAI (Grok) API エラー (${res.status}): ${errText}`);
300
+ }
301
+ const data = await res.json();
302
+ return data.choices?.[0]?.message?.content || "";
303
+ }
304
+ }
305
+ /**
306
+ * スタンドアロンのLLM呼び出し関数
307
+ */
308
+ export async function callLLM(options, clientOptions) {
309
+ const client = new LLMClient(clientOptions);
310
+ return await client.call(options);
311
+ }
312
+ /**
313
+ * LLM出力からマークダウンコードブロックや不要な装飾を取り除き純粋なJSON文字列にする
314
+ */
315
+ export function cleanJsonOutput(text) {
316
+ let cleaned = text.trim();
317
+ // Reasoning モデルの思考タグ (<think>...</think>) を除去
318
+ cleaned = cleaned.replace(/<think>[\s\S]*?<\/think>/gi, "").trim();
319
+ if (cleaned.startsWith("```json")) {
320
+ cleaned = cleaned.replace(/^```json\s*/i, "").replace(/\s*```$/i, "").trim();
321
+ }
322
+ else if (cleaned.startsWith("```")) {
323
+ cleaned = cleaned.replace(/^```\s*/, "").replace(/\s*```$/, "").trim();
324
+ }
325
+ const match = cleaned.match(/\{[\s\S]*\}|\[[\s\S]*\]/);
326
+ if (match) {
327
+ return match[0];
328
+ }
329
+ return cleaned;
330
+ }
331
+ //# sourceMappingURL=llmClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"llmClient.js","sourceRoot":"","sources":["../src/llmClient.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @allevitas/agent-kit - Model Context Protocol (MCP) サーバーモジュール
3
+ *
4
+ * 外部依存ゼロ: Node.js 組み込みの readline, stream, events を使用した
5
+ * JSON-RPC 2.0 stdio トランスポート実装。
6
+ */
7
+ import { Readable, Writable } from "node:stream";
8
+ import { AllevitasClient } from "./client.js";
9
+ import { ClientOptions } from "./types.js";
10
+ export interface ToolDefinition {
11
+ name: string;
12
+ description: string;
13
+ inputSchema: {
14
+ type: "object";
15
+ properties: Record<string, any>;
16
+ required?: string[];
17
+ };
18
+ }
19
+ export declare class MCPServer {
20
+ private client;
21
+ constructor(clientOrOptions?: AllevitasClient | ClientOptions);
22
+ /**
23
+ * 公開する MCP ツール一覧の定義
24
+ */
25
+ getTools(): ToolDefinition[];
26
+ /**
27
+ * ツール呼び出しをディスパッチして実行する
28
+ */
29
+ executeTool(name: string, args?: Record<string, any>): Promise<any>;
30
+ /**
31
+ * JSON-RPC 2.0 リクエストを処理してレスポンスオブジェクトを返す
32
+ */
33
+ handleMessage(message: any): Promise<any | null>;
34
+ /**
35
+ * stdio ストリームに接続して MCP サーバーを起動する
36
+ */
37
+ startStdioServer(input?: Readable, output?: Writable): {
38
+ close: () => void;
39
+ };
40
+ }
41
+ //# sourceMappingURL=mcpServer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcpServer.d.ts","sourceRoot":"","sources":["../src/mcpServer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAE5D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,qBAAa,SAAS;IACpB,OAAO,CAAC,MAAM,CAAkB;gBAEpB,eAAe,GAAE,eAAe,GAAG,aAAkB;IAQjE;;OAEG;IACH,QAAQ,IAAI,cAAc,EAAE;IAuO5B;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAgK7E;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;IA6GtD;;OAEG;IACH,gBAAgB,CACd,KAAK,GAAE,QAAwB,EAC/B,MAAM,GAAE,QAAyB,GAChC;QAAE,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE;CAuCzB"}