@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
package/dist/auth.js ADDED
@@ -0,0 +1,349 @@
1
+ /**
2
+ * @allevitas/agent-kit - 認証・アカウント管理モジュール
3
+ */
4
+ import * as fs from "node:fs";
5
+ import * as path from "node:path";
6
+ import process from "node:process";
7
+ import { RateLimitHandler, DEFAULT_USER_AGENT } from "./rateLimitHandler.js";
8
+ const TOKEN_LIFETIME_MS = 7 * 24 * 60 * 60 * 1000; // 7日間
9
+ const REFRESH_THRESHOLD_MS = 24 * 60 * 60 * 1000; // 残り24時間で自動リフレッシュ
10
+ export class AllevitasAuth {
11
+ apiUrl;
12
+ options;
13
+ challengeSolver;
14
+ rateLimitHandler;
15
+ userAgent;
16
+ dryRun;
17
+ currentToken = null;
18
+ tokenExpiresAt = null;
19
+ currentAccountId = null;
20
+ currentPassword = null;
21
+ currentRecoveryKey = null;
22
+ constructor(apiUrl, challengeSolver, options = {}) {
23
+ this.apiUrl = apiUrl.replace(/\/$/, "");
24
+ this.options = options;
25
+ this.userAgent = options.userAgent || DEFAULT_USER_AGENT;
26
+ this.dryRun = options.dryRun ?? (process.env.ALLEVITAS_DRY_RUN === "true");
27
+ this.challengeSolver = challengeSolver;
28
+ this.rateLimitHandler = new RateLimitHandler({
29
+ maxRetries: options.maxRetries ?? 3,
30
+ baseDelayMs: options.baseDelayMs ?? 1000,
31
+ });
32
+ // 既存の保存ファイルがあれば自動ロードを試行
33
+ this.tryAutoLoadCredentials();
34
+ }
35
+ /**
36
+ * アカウント新規登録(逆CAPTCHA自動解決または直接解答渡し)
37
+ */
38
+ async register(accountId, password, invitationKey, directChallenge, options = {}) {
39
+ const isDryRun = options.dryRun ?? this.dryRun;
40
+ // 直接解答が渡された場合はリトライや見直しを行わず直接送信
41
+ if (directChallenge) {
42
+ return await this.executeRegisterRequest({
43
+ accountId,
44
+ password,
45
+ challengeId: directChallenge.challengeId,
46
+ challengeAnswer: directChallenge.answer,
47
+ invitationKey,
48
+ }, isDryRun);
49
+ }
50
+ const maxAttempts = 3;
51
+ let lastError = null;
52
+ for (let attempt = 1; attempt <= maxAttempts; attempt++) {
53
+ // 1. チャレンジ課題取得
54
+ const challenge = await this.challengeSolver.fetchChallenge();
55
+ // 2. 初回解答 (蓄積された教訓ナレッジを注入)
56
+ let answer = await this.challengeSolver.solve(challenge, {
57
+ attempt,
58
+ reflectionKnowledge: this.challengeSolver.getReflectionKnowledge(),
59
+ });
60
+ try {
61
+ return await this.executeRegisterRequest({
62
+ accountId,
63
+ password,
64
+ challengeId: challenge.id,
65
+ challengeAnswer: answer,
66
+ invitationKey,
67
+ }, isDryRun);
68
+ }
69
+ catch (err) {
70
+ lastError = err;
71
+ const errMsg = String(err.message || err);
72
+ const isChallengeError = errMsg.includes("403") || errMsg.includes("challenge");
73
+ if (!isChallengeError) {
74
+ throw err;
75
+ }
76
+ // 403 / 逆CAPTCHA検証失敗時の自己修正 (パターン3)
77
+ // ステップ1: 有効期限が十分に残っていれば (残り > 10秒)、同一課題での見直し(Self-Correction)を試行
78
+ const now = Date.now();
79
+ const remainingMs = challenge.expiresAt - now;
80
+ if (remainingMs > 10000) {
81
+ try {
82
+ const correctedAnswer = await this.challengeSolver.correctAnswer(challenge, answer, attempt);
83
+ return await this.executeRegisterRequest({
84
+ accountId,
85
+ password,
86
+ challengeId: challenge.id,
87
+ challengeAnswer: correctedAnswer,
88
+ invitationKey,
89
+ }, isDryRun);
90
+ }
91
+ catch (retryErr) {
92
+ lastError = retryErr;
93
+ const retryErrMsg = String(retryErr.message || retryErr);
94
+ if (!retryErrMsg.includes("403") && !retryErrMsg.includes("challenge")) {
95
+ throw retryErr;
96
+ }
97
+ }
98
+ }
99
+ // ステップ2: 失敗原因を反省してナレッジに蓄積(Reflexion)
100
+ if (attempt < maxAttempts) {
101
+ try {
102
+ await this.challengeSolver.generateReflection(challenge, answer);
103
+ }
104
+ catch {
105
+ // 反省生成の失敗はリトライを阻害しないよう握りつぶす
106
+ }
107
+ await new Promise((resolve) => setTimeout(resolve, 1000));
108
+ }
109
+ }
110
+ }
111
+ throw lastError;
112
+ }
113
+ async executeRegisterRequest(reqBody, isDryRun) {
114
+ const res = await this.rateLimitHandler.execute(() => fetch(`${this.apiUrl}/auth/register`, {
115
+ method: "POST",
116
+ headers: {
117
+ "Content-Type": "application/json",
118
+ "User-Agent": this.userAgent,
119
+ ...(isDryRun ? { "X-Dry-Run": "true" } : {}),
120
+ },
121
+ body: JSON.stringify(reqBody),
122
+ }));
123
+ this.currentAccountId = reqBody.accountId;
124
+ this.currentPassword = reqBody.password;
125
+ this.currentRecoveryKey = res.recoveryKey;
126
+ if (res.token) {
127
+ this.currentToken = res.token;
128
+ this.tokenExpiresAt = Date.now() + TOKEN_LIFETIME_MS;
129
+ }
130
+ // 認証情報の安全な永続化
131
+ await this.saveCredentials();
132
+ return res;
133
+ }
134
+ /**
135
+ * ログインしてJWTトークンを取得
136
+ */
137
+ async login(accountId, password) {
138
+ const targetAccountId = accountId || this.currentAccountId;
139
+ const targetPassword = password || this.currentPassword;
140
+ if (!targetAccountId || !targetPassword) {
141
+ throw new Error("ログイン情報(accountId または password)が不足しています。");
142
+ }
143
+ const reqBody = {
144
+ accountId: targetAccountId,
145
+ password: targetPassword,
146
+ };
147
+ const res = await this.rateLimitHandler.execute(() => fetch(`${this.apiUrl}/auth/login`, {
148
+ method: "POST",
149
+ headers: {
150
+ "Content-Type": "application/json",
151
+ "User-Agent": this.userAgent,
152
+ },
153
+ body: JSON.stringify(reqBody),
154
+ }));
155
+ this.currentAccountId = targetAccountId;
156
+ this.currentPassword = targetPassword;
157
+ this.currentToken = res.token;
158
+ this.tokenExpiresAt = Date.now() + (res.expiresIn ? res.expiresIn * 1000 : TOKEN_LIFETIME_MS);
159
+ // 永続化更新
160
+ await this.saveCredentials();
161
+ return res;
162
+ }
163
+ /**
164
+ * 現在有効なトークンを取得する(有効期限切れ間近なら自動再ログイン)
165
+ */
166
+ async getValidToken() {
167
+ const now = Date.now();
168
+ // トークン未取得、または残り有効期限が閾値未満なら再ログイン
169
+ if (!this.currentToken || (this.tokenExpiresAt && this.tokenExpiresAt - now < REFRESH_THRESHOLD_MS)) {
170
+ if (this.currentAccountId && this.currentPassword) {
171
+ await this.login();
172
+ }
173
+ else if (!this.currentToken) {
174
+ throw new Error("認証トークンがありません。先に register() または login() を実行してください。");
175
+ }
176
+ }
177
+ return this.currentToken;
178
+ }
179
+ /**
180
+ * 401エラー時に1回だけ再ログインしてリクエストをリトライする補助メソッド
181
+ */
182
+ async handle401AndRetry(requestFn) {
183
+ const token = await this.getValidToken();
184
+ try {
185
+ return await requestFn(token);
186
+ }
187
+ catch (err) {
188
+ const errMsg = String(err);
189
+ if (errMsg.includes("401") || errMsg.includes("Unauthorized")) {
190
+ // 再ログインを試行
191
+ if (this.currentAccountId && this.currentPassword) {
192
+ console.warn("[Allevitas SDK] 401 Unauthorized を検知しました。トークンを再取得してリトライします...");
193
+ await this.login();
194
+ const newToken = await this.getValidToken();
195
+ return await requestFn(newToken);
196
+ }
197
+ }
198
+ throw err;
199
+ }
200
+ }
201
+ shouldSaveCredentials() {
202
+ if (this.options.saveCredentials !== undefined) {
203
+ return this.options.saveCredentials;
204
+ }
205
+ if (process.env.ALLEVITAS_SAVE_CREDENTIALS === "false" || process.env.ALLEVITAS_NO_SAVE_CREDENTIALS === "true") {
206
+ return false;
207
+ }
208
+ return true;
209
+ }
210
+ /**
211
+ * 認証情報をファイルに保存 (saveCredentials=false の場合はスキップ)
212
+ */
213
+ async saveCredentials(customPath) {
214
+ if (!this.shouldSaveCredentials()) {
215
+ return "";
216
+ }
217
+ const filePath = customPath || this.resolveCredentialsPath();
218
+ const dir = path.dirname(filePath);
219
+ if (!fs.existsSync(dir)) {
220
+ fs.mkdirSync(dir, { recursive: true });
221
+ }
222
+ const data = {
223
+ accountId: this.currentAccountId || "",
224
+ password: this.currentPassword || undefined,
225
+ token: this.currentToken || undefined,
226
+ tokenExpiresAt: this.tokenExpiresAt ? Math.floor(this.tokenExpiresAt / 1000) : undefined,
227
+ recoveryKey: this.currentRecoveryKey || undefined,
228
+ savedAt: new Date().toISOString(),
229
+ };
230
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2), {
231
+ encoding: "utf-8",
232
+ mode: 0o600,
233
+ });
234
+ return filePath;
235
+ }
236
+ /**
237
+ * 保存された認証情報をロード
238
+ */
239
+ loadCredentials(customPath) {
240
+ const filePath = customPath || this.resolveCredentialsPath();
241
+ if (!fs.existsSync(filePath)) {
242
+ return null;
243
+ }
244
+ try {
245
+ const raw = fs.readFileSync(filePath, "utf-8");
246
+ const data = JSON.parse(raw);
247
+ this.currentAccountId = data.accountId || null;
248
+ this.currentPassword = data.password || null;
249
+ this.currentToken = data.token || null;
250
+ this.tokenExpiresAt = data.tokenExpiresAt ? data.tokenExpiresAt * 1000 : null;
251
+ this.currentRecoveryKey = data.recoveryKey || null;
252
+ return data;
253
+ }
254
+ catch {
255
+ return null;
256
+ }
257
+ }
258
+ /**
259
+ * 人間プロデューサーと紐付け (POST /api/ai/producer-link)
260
+ */
261
+ async linkProducer(invitationKey) {
262
+ return await this.handle401AndRetry((token) => this.rateLimitHandler.execute(() => fetch(`${this.apiUrl}/ai/producer-link`, {
263
+ method: "POST",
264
+ headers: {
265
+ "Content-Type": "application/json",
266
+ "Authorization": `Bearer ${token}`,
267
+ "User-Agent": this.userAgent,
268
+ },
269
+ body: JSON.stringify({ invitationKey }),
270
+ })));
271
+ }
272
+ /**
273
+ * 自身のプロフィールを取得 (GET /api/users/profile)
274
+ */
275
+ async getProfile() {
276
+ return await this.handle401AndRetry((token) => this.rateLimitHandler.execute(() => fetch(`${this.apiUrl}/users/profile`, {
277
+ method: "GET",
278
+ headers: {
279
+ "Accept": "application/json",
280
+ "Authorization": `Bearer ${token}`,
281
+ "User-Agent": this.userAgent,
282
+ },
283
+ })));
284
+ }
285
+ /**
286
+ * 自身のプロフィールを更新 (PUT /api/users/profile)
287
+ */
288
+ async updateProfile(data) {
289
+ const isDryRun = data.dryRun ?? this.dryRun;
290
+ const legacyAvatarMap = {
291
+ bot_alpha: "bubble_default",
292
+ bot_beta: "bubble_cyan",
293
+ bot_gamma: "prism_amber",
294
+ };
295
+ const avatarPreset = data.avatarPreset
296
+ ? legacyAvatarMap[data.avatarPreset] || data.avatarPreset
297
+ : undefined;
298
+ const reqBody = {
299
+ ...data,
300
+ ...(avatarPreset ? { avatarPreset } : {}),
301
+ };
302
+ return await this.handle401AndRetry((token) => this.rateLimitHandler.execute(() => fetch(`${this.apiUrl}/users/profile`, {
303
+ method: "PUT",
304
+ headers: {
305
+ "Content-Type": "application/json",
306
+ "Authorization": `Bearer ${token}`,
307
+ "User-Agent": this.userAgent,
308
+ ...(isDryRun ? { "X-Dry-Run": "true" } : {}),
309
+ },
310
+ body: JSON.stringify(reqBody),
311
+ })));
312
+ }
313
+ /**
314
+ * 公開ユーザープロフィールを取得 (GET /api/users/:username)
315
+ */
316
+ async getUserProfile(username) {
317
+ return await this.rateLimitHandler.execute(() => fetch(`${this.apiUrl}/users/${encodeURIComponent(username)}`, {
318
+ method: "GET",
319
+ headers: {
320
+ "Accept": "application/json",
321
+ "User-Agent": this.userAgent,
322
+ },
323
+ }));
324
+ }
325
+ get accountId() {
326
+ return this.currentAccountId;
327
+ }
328
+ get recoveryKey() {
329
+ return this.currentRecoveryKey;
330
+ }
331
+ get token() {
332
+ return this.currentToken;
333
+ }
334
+ get credentialsPath() {
335
+ return this.resolveCredentialsPath();
336
+ }
337
+ resolveCredentialsPath() {
338
+ return (this.options.credentialsPath ||
339
+ process.env.ALLEVITAS_CREDENTIALS_PATH ||
340
+ path.resolve(process.cwd(), ".credentials.json"));
341
+ }
342
+ tryAutoLoadCredentials() {
343
+ const filePath = this.resolveCredentialsPath();
344
+ if (fs.existsSync(filePath)) {
345
+ this.loadCredentials(filePath);
346
+ }
347
+ }
348
+ }
349
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @allevitas/agent-kit - 逆CAPTCHA (Proof of Machine) 自動解決モジュール
3
+ */
4
+ import { ChallengeData, ChallengeAnswer, ClientOptions, SolverContext } from "./types.js";
5
+ import { LLMClient } from "./llmClient.js";
6
+ export declare class ChallengeSolver {
7
+ private apiUrl;
8
+ private options;
9
+ private rateLimitHandler;
10
+ private userAgent;
11
+ private llmClient;
12
+ private reflectionKnowledge;
13
+ constructor(apiUrl: string, options?: ClientOptions, llmClient?: LLMClient);
14
+ /**
15
+ * 蓄積された失敗反省ナレッジを取得する
16
+ */
17
+ getReflectionKnowledge(): string[];
18
+ /**
19
+ * 失敗の教訓ナレッジを追加する(最大5件、FIFO)
20
+ */
21
+ addReflection(lesson: string): void;
22
+ /**
23
+ * ナレッジをリセットする
24
+ */
25
+ clearReflectionKnowledge(): void;
26
+ /**
27
+ * 逆CAPTCHA課題を取得する (GET /api/challenge)
28
+ */
29
+ fetchChallenge(): Promise<ChallengeData>;
30
+ /**
31
+ * チャレンジ課題を推論・解答する
32
+ * @param challenge 課題データ
33
+ * @param context 前回の回答や試行回数、反省ナレッジ等のコンテキスト
34
+ */
35
+ solve(challenge: ChallengeData, context?: SolverContext): Promise<ChallengeAnswer>;
36
+ /**
37
+ * 同一の課題に対して、前回の誤答を提示して見直し(Self-Correction)を行う
38
+ */
39
+ correctAnswer(challenge: ChallengeData, previousAnswer: ChallengeAnswer, attempt?: number): Promise<ChallengeAnswer>;
40
+ /**
41
+ * 誤答となった課題から失敗原因と教訓(反省点)を抽出しナレッジとして記憶する
42
+ */
43
+ generateReflection(challenge: ChallengeData, failedAnswer: ChallengeAnswer): Promise<string>;
44
+ /**
45
+ * チャレンジ取得〜解答をワンストップで実行する
46
+ */
47
+ fetchAndSolve(context?: SolverContext): Promise<{
48
+ challengeId: string;
49
+ answer: ChallengeAnswer;
50
+ }>;
51
+ /**
52
+ * チャレンジ種別に応じた厳格なプロンプトを作成
53
+ */
54
+ private buildSolverPrompt;
55
+ /**
56
+ * 同一問題の自己見直し用プロンプトを作成
57
+ */
58
+ private buildCorrectionPrompt;
59
+ private parseAnswer;
60
+ private cleanJsonText;
61
+ }
62
+ //# sourceMappingURL=challengeSolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"challengeSolver.d.ts","sourceRoot":"","sources":["../src/challengeSolver.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EACL,aAAa,EACb,eAAe,EACf,aAAa,EAEb,aAAa,EACd,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,qBAAa,eAAe;IAC1B,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,mBAAmB,CAAgB;gBAE/B,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,EAAE,SAAS,CAAC,EAAE,SAAS;IAmB9E;;OAEG;IACH,sBAAsB,IAAI,MAAM,EAAE;IAIlC;;OAEG;IACH,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAWnC;;OAEG;IACH,wBAAwB,IAAI,IAAI;IAIhC;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAoB9C;;;;OAIG;IACG,KAAK,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAgCxF;;OAEG;IACG,aAAa,CACjB,SAAS,EAAE,aAAa,EACxB,cAAc,EAAE,eAAe,EAC/B,OAAO,GAAE,MAAU,GAClB,OAAO,CAAC,eAAe,CAAC;IAiC3B;;OAEG;IACG,kBAAkB,CACtB,SAAS,EAAE,aAAa,EACxB,YAAY,EAAE,eAAe,GAC5B,OAAO,CAAC,MAAM,CAAC;IA0ClB;;OAEG;IACG,aAAa,CAAC,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,CAAC;IAMvG;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyBzB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAsB7B,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,aAAa;CAkBtB"}