browserclaw-agent 0.6.2 → 0.7.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.
- package/dist/agent-loop.d.ts +2 -0
- package/dist/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +257 -39
- package/dist/agent-loop.js.map +1 -1
- package/dist/api-types.d.ts +81 -0
- package/dist/api-types.d.ts.map +1 -0
- package/dist/api-types.js +6 -0
- package/dist/api-types.js.map +1 -0
- package/dist/config.d.ts +3 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +4 -10
- package/dist/config.js.map +1 -1
- package/dist/idempotency.d.ts +48 -0
- package/dist/idempotency.d.ts.map +1 -0
- package/dist/idempotency.js +99 -0
- package/dist/idempotency.js.map +1 -0
- package/dist/llm.d.ts +7 -10
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +104 -272
- package/dist/llm.js.map +1 -1
- package/dist/parse-json-response.d.ts +4 -0
- package/dist/parse-json-response.d.ts.map +1 -1
- package/dist/parse-json-response.js +21 -3
- package/dist/parse-json-response.js.map +1 -1
- package/dist/prompt-log.d.ts +9 -1
- package/dist/prompt-log.d.ts.map +1 -1
- package/dist/prompt-log.js.map +1 -1
- package/dist/proxy.d.ts +9 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +85 -0
- package/dist/proxy.js.map +1 -0
- package/dist/routes.d.ts.map +1 -1
- package/dist/routes.js +116 -30
- package/dist/routes.js.map +1 -1
- package/dist/server.js +2 -0
- package/dist/server.js.map +1 -1
- package/dist/session-manager.d.ts +2 -8
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +196 -51
- package/dist/session-manager.js.map +1 -1
- package/dist/skills/press-and-hold.d.ts.map +1 -1
- package/dist/skills/press-and-hold.js +20 -14
- package/dist/skills/press-and-hold.js.map +1 -1
- package/dist/sse-stamp.d.ts +2 -0
- package/dist/sse-stamp.d.ts.map +1 -0
- package/dist/sse-stamp.js +9 -0
- package/dist/sse-stamp.js.map +1 -0
- package/dist/trajectory-store.d.ts +1 -0
- package/dist/trajectory-store.d.ts.map +1 -1
- package/dist/trajectory-store.js +1 -0
- package/dist/trajectory-store.js.map +1 -1
- package/dist/types.d.ts +9 -15
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
export const IDEMPOTENCY_TTL_MS = 5 * 60 * 1000;
|
|
3
|
+
export const IDEMPOTENCY_MAX_KEY_LENGTH = 256;
|
|
4
|
+
// api_key is intentionally NOT in the fingerprint: don't retain digests of
|
|
5
|
+
// secrets in memory, and BYOK clients can rotate keys without losing replay.
|
|
6
|
+
export function buildRequestFingerprint(input) {
|
|
7
|
+
const canonical = {
|
|
8
|
+
prompt: input.prompt,
|
|
9
|
+
url: input.url ?? null,
|
|
10
|
+
headless: input.headless ?? null,
|
|
11
|
+
skip_moderation: input.skip_moderation ?? false,
|
|
12
|
+
skip_postprocessing: input.skip_postprocessing ?? false,
|
|
13
|
+
llm_provider: input.llm_config?.provider ?? null,
|
|
14
|
+
llm_model: input.llm_config?.model ?? null,
|
|
15
|
+
};
|
|
16
|
+
return createHash('sha256').update(JSON.stringify(canonical)).digest('hex');
|
|
17
|
+
}
|
|
18
|
+
// Tuple-encoded so colons in IPv6 / opaque keys can't cause ambiguous collapses.
|
|
19
|
+
export function getIdempotencyCacheKey(clientIp, idempotencyKey) {
|
|
20
|
+
return JSON.stringify([clientIp, idempotencyKey]);
|
|
21
|
+
}
|
|
22
|
+
export function normalizeIdempotencyKey(raw) {
|
|
23
|
+
const value = Array.isArray(raw) ? raw[0] : raw;
|
|
24
|
+
if (typeof value !== 'string')
|
|
25
|
+
return undefined;
|
|
26
|
+
const trimmed = value.trim();
|
|
27
|
+
if (trimmed === '' || trimmed.length > IDEMPOTENCY_MAX_KEY_LENGTH)
|
|
28
|
+
return undefined;
|
|
29
|
+
return trimmed;
|
|
30
|
+
}
|
|
31
|
+
// Reject + evict any pending entry older than IDEMPOTENCY_TTL_MS so a wedged
|
|
32
|
+
// createSession can't poison the (clientIp, key) slot indefinitely. Waiters
|
|
33
|
+
// awaiting the rejected promise unblock with a clean error.
|
|
34
|
+
export function expirePendingIdempotency(cache, now) {
|
|
35
|
+
for (const [key, entry] of cache) {
|
|
36
|
+
if (entry.kind === 'pending' && now - entry.createdAt > IDEMPOTENCY_TTL_MS) {
|
|
37
|
+
cache.delete(key);
|
|
38
|
+
entry.reject(new Error('Idempotency reservation expired (original request did not complete in time)'));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
export function lookupIdempotency(cache, cacheKey, fingerprint, now) {
|
|
43
|
+
const entry = cache.get(cacheKey);
|
|
44
|
+
if (entry === undefined)
|
|
45
|
+
return { kind: 'miss' };
|
|
46
|
+
if (now - entry.createdAt > IDEMPOTENCY_TTL_MS) {
|
|
47
|
+
cache.delete(cacheKey);
|
|
48
|
+
if (entry.kind === 'pending') {
|
|
49
|
+
entry.reject(new Error('Idempotency reservation expired (original request did not complete in time)'));
|
|
50
|
+
}
|
|
51
|
+
return { kind: 'miss' };
|
|
52
|
+
}
|
|
53
|
+
if (entry.fingerprint !== fingerprint) {
|
|
54
|
+
return { kind: 'fingerprint_mismatch' };
|
|
55
|
+
}
|
|
56
|
+
if (entry.kind === 'pending') {
|
|
57
|
+
return { kind: 'pending_match', promise: entry.promise };
|
|
58
|
+
}
|
|
59
|
+
return { kind: 'completed_match', response: entry.response };
|
|
60
|
+
}
|
|
61
|
+
export function reserveIdempotency(cache, cacheKey, fingerprint, now) {
|
|
62
|
+
let resolve;
|
|
63
|
+
let reject;
|
|
64
|
+
const promise = new Promise((res, rej) => {
|
|
65
|
+
resolve = res;
|
|
66
|
+
reject = rej;
|
|
67
|
+
});
|
|
68
|
+
promise.catch(() => undefined);
|
|
69
|
+
const entry = {
|
|
70
|
+
kind: 'pending',
|
|
71
|
+
fingerprint,
|
|
72
|
+
createdAt: now,
|
|
73
|
+
promise,
|
|
74
|
+
resolve,
|
|
75
|
+
reject,
|
|
76
|
+
};
|
|
77
|
+
cache.set(cacheKey, entry);
|
|
78
|
+
return entry;
|
|
79
|
+
}
|
|
80
|
+
// Reservation passed to complete/fail so a wedged-then-recovered handler can't
|
|
81
|
+
// overwrite a fresh entry that another request created after cleanup evicted us.
|
|
82
|
+
export function completeIdempotency(cache, cacheKey, reservation, response, now) {
|
|
83
|
+
if (cache.get(cacheKey) !== reservation)
|
|
84
|
+
return;
|
|
85
|
+
cache.set(cacheKey, {
|
|
86
|
+
kind: 'completed',
|
|
87
|
+
fingerprint: reservation.fingerprint,
|
|
88
|
+
createdAt: now,
|
|
89
|
+
response,
|
|
90
|
+
});
|
|
91
|
+
reservation.resolve(response);
|
|
92
|
+
}
|
|
93
|
+
export function failIdempotency(cache, cacheKey, reservation, error) {
|
|
94
|
+
if (cache.get(cacheKey) === reservation) {
|
|
95
|
+
cache.delete(cacheKey);
|
|
96
|
+
}
|
|
97
|
+
reservation.reject(error);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=idempotency.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idempotency.js","sourceRoot":"","sources":["../src/idempotency.ts"],"names":[],"mappings":"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"}
|
package/dist/llm.d.ts
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
import type { LlmConfig } from './types.js';
|
|
2
2
|
export declare function sanitizeErrorText(text: string): string;
|
|
3
|
+
export interface ProviderError {
|
|
4
|
+
status: number | null;
|
|
5
|
+
message: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function extractProviderError(err: unknown): ProviderError | null;
|
|
8
|
+
export declare function extractProviderMessage(err: unknown): string | null;
|
|
9
|
+
export declare function isFailFastError(err: unknown): boolean;
|
|
3
10
|
export interface TokenUsage {
|
|
4
11
|
input: number;
|
|
5
12
|
output: number;
|
|
@@ -15,16 +22,6 @@ export declare const BYOK_PROVIDERS: Partial<Record<string, {
|
|
|
15
22
|
baseURL: string;
|
|
16
23
|
useMaxCompletionTokens: boolean;
|
|
17
24
|
}>>;
|
|
18
|
-
export interface ProviderConfig {
|
|
19
|
-
provider: string;
|
|
20
|
-
label: string;
|
|
21
|
-
baseURL: string;
|
|
22
|
-
envVar: string;
|
|
23
|
-
useMaxCompletionTokens: boolean;
|
|
24
|
-
}
|
|
25
|
-
export declare function getAvailableProviders(): ProviderConfig[];
|
|
26
|
-
export declare function getActiveProvider(): ProviderConfig;
|
|
27
|
-
export declare function getModel(): string;
|
|
28
25
|
export interface LLMRequest {
|
|
29
26
|
system: string;
|
|
30
27
|
message: string;
|
package/dist/llm.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llm.d.ts","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAW5C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,GAAG,IAAI,CAiDvE;AAED,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAElE;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAMrD;AAmBD,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAID;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEvF;AAQD,eAAO,MAAM,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,sBAAsB,EAAE,OAAO,CAAA;CAAE,CAAC,CAKxG,CAAC;AAQF,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAuFD,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,aAAa,IAAI,UAAU,CAG1C;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAKxC;AAuFD,wBAAsB,GAAG,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,WAAW,CAAC,CAoB/D;AAED,wBAAsB,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAkB5D;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCrG"}
|
package/dist/llm.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import OpenAI from 'openai';
|
|
2
2
|
import { AsyncLocalStorage } from 'node:async_hooks';
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import path from 'node:path';
|
|
5
3
|
import { parseJsonResponse } from './parse-json-response.js';
|
|
6
4
|
import { logger } from './logger.js';
|
|
7
5
|
import { LlmParseError } from './types.js';
|
|
@@ -13,6 +11,74 @@ const SENSITIVE_PATTERN = /(?:eyJ[A-Za-z0-9_-]{20,}|sk-[A-Za-z0-9]{20,}|gsk_[A-Z
|
|
|
13
11
|
export function sanitizeErrorText(text) {
|
|
14
12
|
return text.replace(SENSITIVE_PATTERN, '[REDACTED]').slice(0, 500);
|
|
15
13
|
}
|
|
14
|
+
export function extractProviderError(err) {
|
|
15
|
+
if (err instanceof OpenAI.APIError) {
|
|
16
|
+
const status = typeof err.status === 'number' ? err.status : null;
|
|
17
|
+
const body = err.error;
|
|
18
|
+
if (typeof body?.message === 'string' && body.message.trim() !== '') {
|
|
19
|
+
return { status, message: body.message.trim() };
|
|
20
|
+
}
|
|
21
|
+
if (typeof err.message === 'string' && err.message.trim() !== '') {
|
|
22
|
+
let msg = err.message.trim();
|
|
23
|
+
while (/^\d{3}\s+/.test(msg))
|
|
24
|
+
msg = msg.slice(msg.indexOf(' ') + 1).trim();
|
|
25
|
+
return { status, message: msg };
|
|
26
|
+
}
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
if (!(err instanceof Error))
|
|
30
|
+
return null;
|
|
31
|
+
const raw = err.message;
|
|
32
|
+
const bodyStart = raw.indexOf('{');
|
|
33
|
+
if (bodyStart !== -1) {
|
|
34
|
+
let parsed = null;
|
|
35
|
+
try {
|
|
36
|
+
parsed = JSON.parse(raw.slice(bodyStart));
|
|
37
|
+
}
|
|
38
|
+
catch (parseErr) {
|
|
39
|
+
logger.warn({ err: parseErr instanceof Error ? parseErr.name : 'unknown' }, 'extractProviderError: substring after { is not JSON');
|
|
40
|
+
}
|
|
41
|
+
if (parsed !== null && typeof parsed === 'object') {
|
|
42
|
+
const obj = parsed;
|
|
43
|
+
const candidates = [
|
|
44
|
+
obj.error?.message,
|
|
45
|
+
typeof obj.error === 'string' ? obj.error : undefined,
|
|
46
|
+
obj.message,
|
|
47
|
+
obj.detail,
|
|
48
|
+
];
|
|
49
|
+
for (const c of candidates) {
|
|
50
|
+
if (typeof c === 'string' && c.trim() !== '') {
|
|
51
|
+
const statusMatch = /^(\d{3})\s/.exec(raw);
|
|
52
|
+
return { status: statusMatch ? parseInt(statusMatch[1], 10) : null, message: c };
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const m = /^(\d{3})\s+(.+)$/s.exec(raw);
|
|
58
|
+
if (m)
|
|
59
|
+
return { status: parseInt(m[1], 10), message: m[2].trim() };
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
export function extractProviderMessage(err) {
|
|
63
|
+
return extractProviderError(err)?.message ?? null;
|
|
64
|
+
}
|
|
65
|
+
export function isFailFastError(err) {
|
|
66
|
+
if (!(err instanceof Error))
|
|
67
|
+
return false;
|
|
68
|
+
const m = err.message;
|
|
69
|
+
if (/insufficient_quota/i.test(m))
|
|
70
|
+
return true;
|
|
71
|
+
if (/^(401|403)\s/.test(m))
|
|
72
|
+
return true;
|
|
73
|
+
return /token_expired|invalid_api_key|invalid_grant|invalid_client|unauthorized/i.test(m);
|
|
74
|
+
}
|
|
75
|
+
function requireCtx() {
|
|
76
|
+
const ctx = sessionLlmStore.getStore();
|
|
77
|
+
if (ctx === undefined) {
|
|
78
|
+
throw new Error('LLM call outside of runWithLlmConfig — BYOK config is required');
|
|
79
|
+
}
|
|
80
|
+
return ctx;
|
|
81
|
+
}
|
|
16
82
|
const sessionLlmStore = new AsyncLocalStorage();
|
|
17
83
|
/**
|
|
18
84
|
* Run an async function with a BYOK LLM config scoped to the current async context.
|
|
@@ -23,15 +89,9 @@ export function runWithLlmConfig(config, fn) {
|
|
|
23
89
|
return sessionLlmStore.run({ llmConfig: config, llmCallCount: 0, inputTokens: 0, outputTokens: 0 }, fn);
|
|
24
90
|
}
|
|
25
91
|
function recordUsage(input, output) {
|
|
26
|
-
const ctx =
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
ctx.outputTokens += output;
|
|
30
|
-
}
|
|
31
|
-
else {
|
|
32
|
-
_fallbackInputTokens += input;
|
|
33
|
-
_fallbackOutputTokens += output;
|
|
34
|
-
}
|
|
92
|
+
const ctx = requireCtx();
|
|
93
|
+
ctx.inputTokens += input;
|
|
94
|
+
ctx.outputTokens += output;
|
|
35
95
|
}
|
|
36
96
|
export const BYOK_PROVIDERS = {
|
|
37
97
|
anthropic: { baseURL: 'https://api.anthropic.com/v1/', useMaxCompletionTokens: false },
|
|
@@ -39,170 +99,7 @@ export const BYOK_PROVIDERS = {
|
|
|
39
99
|
'openai-oauth': { baseURL: 'https://chatgpt.com/backend-api', useMaxCompletionTokens: true },
|
|
40
100
|
gemini: { baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai/', useMaxCompletionTokens: false },
|
|
41
101
|
};
|
|
42
|
-
|
|
43
|
-
{
|
|
44
|
-
provider: 'groq',
|
|
45
|
-
label: 'Groq',
|
|
46
|
-
baseURL: 'https://api.groq.com/openai/v1',
|
|
47
|
-
envVar: 'GROQ_API_KEY',
|
|
48
|
-
useMaxCompletionTokens: false,
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
provider: 'gemini',
|
|
52
|
-
label: 'Gemini',
|
|
53
|
-
baseURL: 'https://generativelanguage.googleapis.com/v1beta/openai/',
|
|
54
|
-
envVar: 'GEMINI_API_KEY',
|
|
55
|
-
useMaxCompletionTokens: false,
|
|
56
|
-
},
|
|
57
|
-
{
|
|
58
|
-
provider: 'openai',
|
|
59
|
-
label: 'OpenAI',
|
|
60
|
-
baseURL: 'https://api.openai.com/v1',
|
|
61
|
-
envVar: 'OPENAI_API_KEY',
|
|
62
|
-
useMaxCompletionTokens: true,
|
|
63
|
-
},
|
|
64
|
-
{
|
|
65
|
-
provider: 'openai-oauth',
|
|
66
|
-
label: 'OpenAI (Subscription)',
|
|
67
|
-
baseURL: 'https://chatgpt.com/backend-api',
|
|
68
|
-
envVar: 'OPENAI_OAUTH_TOKEN',
|
|
69
|
-
useMaxCompletionTokens: true,
|
|
70
|
-
},
|
|
71
|
-
{
|
|
72
|
-
provider: 'anthropic',
|
|
73
|
-
label: 'Anthropic',
|
|
74
|
-
baseURL: 'https://api.anthropic.com/v1/',
|
|
75
|
-
envVar: 'ANTHROPIC_API_KEY',
|
|
76
|
-
useMaxCompletionTokens: false,
|
|
77
|
-
},
|
|
78
|
-
];
|
|
79
|
-
const CLIENT_ID = 'app_EMoamEEZ73f0CkXaXp7hrann';
|
|
80
|
-
const TOKEN_URL = 'https://auth.openai.com/oauth/token';
|
|
81
|
-
const REFRESH_LIFETIME_FRACTION = 0.8;
|
|
82
|
-
const clientCache = new Map();
|
|
83
|
-
// Concurrent callers share a single in-flight refresh so we don't race on process.env.
|
|
84
|
-
let oauthRefreshInFlight = null;
|
|
85
|
-
async function refreshOAuthToken() {
|
|
86
|
-
if (oauthRefreshInFlight !== null)
|
|
87
|
-
return oauthRefreshInFlight;
|
|
88
|
-
oauthRefreshInFlight = (async () => {
|
|
89
|
-
const refreshToken = process.env.OPENAI_REFRESH_TOKEN;
|
|
90
|
-
if (refreshToken === undefined || refreshToken === '')
|
|
91
|
-
throw new Error('OPENAI_REFRESH_TOKEN is required to refresh the access token');
|
|
92
|
-
logger.info('Refreshing OpenAI OAuth token');
|
|
93
|
-
const res = await fetch(TOKEN_URL, {
|
|
94
|
-
method: 'POST',
|
|
95
|
-
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
|
|
96
|
-
body: new URLSearchParams({
|
|
97
|
-
grant_type: 'refresh_token',
|
|
98
|
-
client_id: CLIENT_ID,
|
|
99
|
-
refresh_token: refreshToken,
|
|
100
|
-
}),
|
|
101
|
-
});
|
|
102
|
-
if (!res.ok) {
|
|
103
|
-
const text = await res.text();
|
|
104
|
-
throw new Error(`OAuth token refresh failed (${String(res.status)}): ${sanitizeErrorText(text)}`);
|
|
105
|
-
}
|
|
106
|
-
const token = (await res.json());
|
|
107
|
-
process.env.OPENAI_OAUTH_TOKEN = token.access_token;
|
|
108
|
-
if (token.refresh_token !== undefined) {
|
|
109
|
-
process.env.OPENAI_REFRESH_TOKEN = token.refresh_token;
|
|
110
|
-
}
|
|
111
|
-
persistOAuthTokens(token.access_token, token.refresh_token);
|
|
112
|
-
clientCache.delete('openai-oauth');
|
|
113
|
-
logger.info('OpenAI OAuth token refreshed successfully');
|
|
114
|
-
})();
|
|
115
|
-
try {
|
|
116
|
-
await oauthRefreshInFlight;
|
|
117
|
-
}
|
|
118
|
-
finally {
|
|
119
|
-
oauthRefreshInFlight = null;
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
function parseJwtTimes(jwt) {
|
|
123
|
-
try {
|
|
124
|
-
const parts = jwt.split('.');
|
|
125
|
-
if (parts.length !== 3)
|
|
126
|
-
return null;
|
|
127
|
-
const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString());
|
|
128
|
-
if (typeof payload.iat === 'number' && typeof payload.exp === 'number') {
|
|
129
|
-
return { iat: payload.iat * 1000, exp: payload.exp * 1000 };
|
|
130
|
-
}
|
|
131
|
-
return null;
|
|
132
|
-
}
|
|
133
|
-
catch {
|
|
134
|
-
return null;
|
|
135
|
-
}
|
|
136
|
-
}
|
|
137
|
-
function shouldRefreshOAuthToken() {
|
|
138
|
-
const token = process.env.OPENAI_OAUTH_TOKEN;
|
|
139
|
-
if (token === undefined || token === '')
|
|
140
|
-
return false;
|
|
141
|
-
const times = parseJwtTimes(token);
|
|
142
|
-
if (times === null)
|
|
143
|
-
return false;
|
|
144
|
-
const lifetime = times.exp - times.iat;
|
|
145
|
-
const elapsed = Date.now() - times.iat;
|
|
146
|
-
return elapsed > lifetime * REFRESH_LIFETIME_FRACTION;
|
|
147
|
-
}
|
|
148
|
-
function persistOAuthTokens(accessToken, refreshToken) {
|
|
149
|
-
const envPath = path.join(process.cwd(), '.env.local');
|
|
150
|
-
if (!fs.existsSync(envPath))
|
|
151
|
-
return;
|
|
152
|
-
try {
|
|
153
|
-
let content = fs.readFileSync(envPath, 'utf-8');
|
|
154
|
-
if (/^OPENAI_OAUTH_TOKEN=.*$/m.test(content)) {
|
|
155
|
-
content = content.replace(/^OPENAI_OAUTH_TOKEN=.*$/m, `OPENAI_OAUTH_TOKEN=${accessToken}`);
|
|
156
|
-
}
|
|
157
|
-
if (refreshToken !== undefined && /^OPENAI_REFRESH_TOKEN=.*$/m.test(content)) {
|
|
158
|
-
content = content.replace(/^OPENAI_REFRESH_TOKEN=.*$/m, `OPENAI_REFRESH_TOKEN=${refreshToken}`);
|
|
159
|
-
}
|
|
160
|
-
fs.writeFileSync(envPath, content);
|
|
161
|
-
logger.info('Persisted rotated OAuth tokens to .env.local');
|
|
162
|
-
}
|
|
163
|
-
catch (err) {
|
|
164
|
-
logger.warn({ err: err instanceof Error ? err.message : err }, 'Failed to persist OAuth tokens');
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
function resolveProvider(name) {
|
|
168
|
-
const found = PROVIDERS.find((p) => p.provider === name);
|
|
169
|
-
if (!found)
|
|
170
|
-
throw new Error(`Unknown provider: ${name}. Valid: ${PROVIDERS.map((p) => p.provider).join(', ')}`);
|
|
171
|
-
const apiKey = process.env[found.envVar];
|
|
172
|
-
if (apiKey === undefined || apiKey === '')
|
|
173
|
-
throw new Error(`${found.envVar} is required for provider "${name}"`);
|
|
174
|
-
return found;
|
|
175
|
-
}
|
|
176
|
-
function getClient(config) {
|
|
177
|
-
const cached = clientCache.get(config.provider);
|
|
178
|
-
if (cached)
|
|
179
|
-
return cached;
|
|
180
|
-
const client = new OpenAI({
|
|
181
|
-
apiKey: process.env[config.envVar],
|
|
182
|
-
baseURL: config.baseURL,
|
|
183
|
-
});
|
|
184
|
-
clientCache.set(config.provider, client);
|
|
185
|
-
return client;
|
|
186
|
-
}
|
|
187
|
-
export function getAvailableProviders() {
|
|
188
|
-
return PROVIDERS.filter((p) => Boolean(process.env[p.envVar]));
|
|
189
|
-
}
|
|
190
|
-
export function getActiveProvider() {
|
|
191
|
-
const name = process.env.LLM_PROVIDER;
|
|
192
|
-
if (name === undefined || name === '')
|
|
193
|
-
throw new Error(`LLM_PROVIDER is required. Valid: ${PROVIDERS.map((p) => p.provider).join(', ')}`);
|
|
194
|
-
return resolveProvider(name);
|
|
195
|
-
}
|
|
196
|
-
export function getModel() {
|
|
197
|
-
const model = process.env.LLM_MODEL;
|
|
198
|
-
if (model === undefined || model === '') {
|
|
199
|
-
logger.fatal('LLM_MODEL is required but not set');
|
|
200
|
-
process.exit(1);
|
|
201
|
-
}
|
|
202
|
-
return model;
|
|
203
|
-
}
|
|
204
|
-
async function callCodexResponsesAPI(provider, model, req, apiKeyOverride) {
|
|
205
|
-
const apiKey = apiKeyOverride ?? process.env[provider.envVar] ?? '';
|
|
102
|
+
async function callCodexResponsesAPI(provider, model, req, apiKey) {
|
|
206
103
|
const url = `${provider.baseURL}/codex/responses`;
|
|
207
104
|
const res = await fetch(url, {
|
|
208
105
|
method: 'POST',
|
|
@@ -261,8 +158,7 @@ async function callCodexResponsesAPI(provider, model, req, apiKeyOverride) {
|
|
|
261
158
|
return { text: textParts.join('') };
|
|
262
159
|
throw new Error('Codex Responses API returned no completed response');
|
|
263
160
|
}
|
|
264
|
-
async function callChatCompletions(provider, model, req,
|
|
265
|
-
const client = clientOverride ?? getClient(provider);
|
|
161
|
+
async function callChatCompletions(provider, model, req, client) {
|
|
266
162
|
const response = await client.chat.completions.create({
|
|
267
163
|
model,
|
|
268
164
|
...(provider.useMaxCompletionTokens ? { max_completion_tokens: req.maxTokens } : { max_tokens: req.maxTokens }),
|
|
@@ -279,41 +175,18 @@ async function callChatCompletions(provider, model, req, clientOverride) {
|
|
|
279
175
|
throw new Error('LLM returned empty response');
|
|
280
176
|
return { text: content };
|
|
281
177
|
}
|
|
282
|
-
async function callLLM(provider, model, req) {
|
|
283
|
-
if (provider.provider === 'openai-oauth') {
|
|
284
|
-
// Raw fetch — no SDK retries, so we add our own
|
|
285
|
-
return retryTransient(() => callCodexResponsesAPI(provider, model, req), 'Codex API');
|
|
286
|
-
}
|
|
287
|
-
// OpenAI SDK handles its own retries for chat completions
|
|
288
|
-
return callChatCompletions(provider, model, req);
|
|
289
|
-
}
|
|
290
|
-
// Per-session LLM call counter backed by AsyncLocalStorage.
|
|
291
|
-
// Falls back to a module-level counter for calls outside a session context.
|
|
292
|
-
let _fallbackLlmCallCount = 0;
|
|
293
|
-
let _fallbackInputTokens = 0;
|
|
294
|
-
let _fallbackOutputTokens = 0;
|
|
295
178
|
export function getLLMCallCount() {
|
|
296
|
-
|
|
297
|
-
return ctx ? ctx.llmCallCount : _fallbackLlmCallCount;
|
|
179
|
+
return requireCtx().llmCallCount;
|
|
298
180
|
}
|
|
299
181
|
export function getTokenUsage() {
|
|
300
|
-
const ctx =
|
|
301
|
-
|
|
302
|
-
const output = ctx ? ctx.outputTokens : _fallbackOutputTokens;
|
|
303
|
-
return { input, output, total: input + output };
|
|
182
|
+
const ctx = requireCtx();
|
|
183
|
+
return { input: ctx.inputTokens, output: ctx.outputTokens, total: ctx.inputTokens + ctx.outputTokens };
|
|
304
184
|
}
|
|
305
185
|
export function resetLLMCallCount() {
|
|
306
|
-
const ctx =
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
ctx.outputTokens = 0;
|
|
311
|
-
}
|
|
312
|
-
else {
|
|
313
|
-
_fallbackLlmCallCount = 0;
|
|
314
|
-
_fallbackInputTokens = 0;
|
|
315
|
-
_fallbackOutputTokens = 0;
|
|
316
|
-
}
|
|
186
|
+
const ctx = requireCtx();
|
|
187
|
+
ctx.llmCallCount = 0;
|
|
188
|
+
ctx.inputTokens = 0;
|
|
189
|
+
ctx.outputTokens = 0;
|
|
317
190
|
}
|
|
318
191
|
async function withTimeout(promise, timeoutMs, label) {
|
|
319
192
|
if (timeoutMs <= 0)
|
|
@@ -381,59 +254,29 @@ async function retryTransient(fn, label) {
|
|
|
381
254
|
}
|
|
382
255
|
throw lastErr;
|
|
383
256
|
}
|
|
384
|
-
function
|
|
257
|
+
function resolveProvider(config) {
|
|
385
258
|
const byok = BYOK_PROVIDERS[config.provider];
|
|
386
259
|
if (!byok)
|
|
387
|
-
throw new Error(`Unsupported
|
|
260
|
+
throw new Error(`Unsupported provider: ${config.provider}`);
|
|
388
261
|
return {
|
|
389
262
|
provider: config.provider,
|
|
390
|
-
label: config.provider,
|
|
391
263
|
baseURL: byok.baseURL,
|
|
392
|
-
envVar: '', // not used for BYOK
|
|
393
264
|
useMaxCompletionTokens: byok.useMaxCompletionTokens,
|
|
394
265
|
};
|
|
395
266
|
}
|
|
396
|
-
function
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
baseURL: providerConfig.baseURL,
|
|
400
|
-
});
|
|
267
|
+
function getClient(ctx, provider) {
|
|
268
|
+
ctx.byokClient ??= new OpenAI({ apiKey: ctx.llmConfig.api_key, baseURL: provider.baseURL });
|
|
269
|
+
return ctx.byokClient;
|
|
401
270
|
}
|
|
402
271
|
export async function llm(req) {
|
|
403
|
-
const ctx =
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
const byokConfig = ctx.llmConfig;
|
|
412
|
-
const providerConfig = resolveByokProvider(byokConfig);
|
|
413
|
-
if (byokConfig.provider === 'openai-oauth') {
|
|
414
|
-
return await withTimeout(retryTransient(() => callCodexResponsesAPI(providerConfig, byokConfig.model, req, byokConfig.api_key), 'BYOK Codex API'), LLM_CODEX_TIMEOUT_MS, 'LLM call (BYOK OAuth)');
|
|
415
|
-
}
|
|
416
|
-
// Cache the BYOK client in the session context to avoid creating a new one per call
|
|
417
|
-
ctx.byokClient ??= getByokClient(byokConfig, providerConfig);
|
|
418
|
-
return await withTimeout(callChatCompletions(providerConfig, byokConfig.model, req, ctx.byokClient), LLM_TIMEOUT_MS, 'LLM call (BYOK)');
|
|
419
|
-
}
|
|
420
|
-
// Fall back to server-configured provider
|
|
421
|
-
const provider = getActiveProvider();
|
|
422
|
-
const model = getModel();
|
|
423
|
-
const isSubscription = provider.provider === 'openai-oauth';
|
|
424
|
-
if (isSubscription && shouldRefreshOAuthToken()) {
|
|
425
|
-
await refreshOAuthToken();
|
|
426
|
-
}
|
|
427
|
-
try {
|
|
428
|
-
return await withTimeout(callLLM(provider, model, req), LLM_TIMEOUT_MS, 'LLM call');
|
|
429
|
-
}
|
|
430
|
-
catch (err) {
|
|
431
|
-
if (isSubscription && err instanceof Error && err.message.includes('401')) {
|
|
432
|
-
await refreshOAuthToken();
|
|
433
|
-
return withTimeout(callLLM(provider, model, req), LLM_TIMEOUT_MS, 'LLM call (retry)');
|
|
434
|
-
}
|
|
435
|
-
throw err;
|
|
436
|
-
}
|
|
272
|
+
const ctx = requireCtx();
|
|
273
|
+
ctx.llmCallCount++;
|
|
274
|
+
const config = ctx.llmConfig;
|
|
275
|
+
const provider = resolveProvider(config);
|
|
276
|
+
if (config.provider === 'openai-oauth') {
|
|
277
|
+
return await withTimeout(retryTransient(() => callCodexResponsesAPI(provider, config.model, req, config.api_key), 'BYOK Codex API'), LLM_CODEX_TIMEOUT_MS, 'LLM call (BYOK OAuth)');
|
|
278
|
+
}
|
|
279
|
+
return await withTimeout(callChatCompletions(provider, config.model, req, getClient(ctx, provider)), LLM_TIMEOUT_MS, 'LLM call (BYOK)');
|
|
437
280
|
}
|
|
438
281
|
export async function llmJson(req) {
|
|
439
282
|
const { text } = await llm(req);
|
|
@@ -442,6 +285,11 @@ export async function llmJson(req) {
|
|
|
442
285
|
}
|
|
443
286
|
catch (err) {
|
|
444
287
|
if (err instanceof SyntaxError) {
|
|
288
|
+
logger.warn({
|
|
289
|
+
parseError: err.message,
|
|
290
|
+
rawSnippet: text.length > 500 ? `${text.slice(0, 500)}…[truncated ${String(text.length - 500)} chars]` : text,
|
|
291
|
+
rawLength: text.length,
|
|
292
|
+
}, 'LLM JSON parse failed');
|
|
445
293
|
throw new LlmParseError(err.message, text);
|
|
446
294
|
}
|
|
447
295
|
throw err;
|
|
@@ -451,29 +299,13 @@ export async function llmJson(req) {
|
|
|
451
299
|
* Call the LLM with a screenshot image for visual extraction.
|
|
452
300
|
*/
|
|
453
301
|
export async function llmVision(system, message, imageBase64) {
|
|
454
|
-
const ctx =
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
_fallbackLlmCallCount++;
|
|
460
|
-
}
|
|
461
|
-
let provider;
|
|
462
|
-
let model;
|
|
463
|
-
let client;
|
|
464
|
-
if (ctx) {
|
|
465
|
-
provider = resolveByokProvider(ctx.llmConfig);
|
|
466
|
-
model = ctx.llmConfig.model;
|
|
467
|
-
ctx.byokClient ??= getByokClient(ctx.llmConfig, provider);
|
|
468
|
-
client = ctx.byokClient;
|
|
469
|
-
}
|
|
470
|
-
else {
|
|
471
|
-
provider = getActiveProvider();
|
|
472
|
-
model = getModel();
|
|
473
|
-
client = getClient(provider);
|
|
474
|
-
}
|
|
302
|
+
const ctx = requireCtx();
|
|
303
|
+
ctx.llmCallCount++;
|
|
304
|
+
const config = ctx.llmConfig;
|
|
305
|
+
const provider = resolveProvider(config);
|
|
306
|
+
const client = getClient(ctx, provider);
|
|
475
307
|
const response = await retryTransient(() => withTimeout(client.chat.completions.create({
|
|
476
|
-
model,
|
|
308
|
+
model: config.model,
|
|
477
309
|
max_tokens: 2048,
|
|
478
310
|
messages: [
|
|
479
311
|
{ role: 'system', content: system },
|
package/dist/llm.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"llm.js","sourceRoot":"","sources":["../src/llm.ts"],"names":[],"mappings":"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"}
|