opencode-ag-auth 1.5.2
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/LICENSE +21 -0
- package/README.md +749 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -0
- package/dist/src/antigravity/oauth.d.ts +31 -0
- package/dist/src/antigravity/oauth.d.ts.map +1 -0
- package/dist/src/antigravity/oauth.js +171 -0
- package/dist/src/antigravity/oauth.js.map +1 -0
- package/dist/src/constants.d.ts +138 -0
- package/dist/src/constants.d.ts.map +1 -0
- package/dist/src/constants.js +220 -0
- package/dist/src/constants.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/cache.d.ts +3 -0
- package/dist/src/hooks/auto-update-checker/cache.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/cache.js +71 -0
- package/dist/src/hooks/auto-update-checker/cache.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/checker.d.ts +16 -0
- package/dist/src/hooks/auto-update-checker/checker.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/checker.js +237 -0
- package/dist/src/hooks/auto-update-checker/checker.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/constants.d.ts +9 -0
- package/dist/src/hooks/auto-update-checker/constants.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/constants.js +23 -0
- package/dist/src/hooks/auto-update-checker/constants.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/index.d.ts +34 -0
- package/dist/src/hooks/auto-update-checker/index.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/index.js +125 -0
- package/dist/src/hooks/auto-update-checker/index.js.map +1 -0
- package/dist/src/hooks/auto-update-checker/types.d.ts +25 -0
- package/dist/src/hooks/auto-update-checker/types.d.ts.map +1 -0
- package/dist/src/hooks/auto-update-checker/types.js +1 -0
- package/dist/src/hooks/auto-update-checker/types.js.map +1 -0
- package/dist/src/plugin/accounts.d.ts +173 -0
- package/dist/src/plugin/accounts.d.ts.map +1 -0
- package/dist/src/plugin/accounts.js +1035 -0
- package/dist/src/plugin/accounts.js.map +1 -0
- package/dist/src/plugin/auth.d.ts +21 -0
- package/dist/src/plugin/auth.d.ts.map +1 -0
- package/dist/src/plugin/auth.js +46 -0
- package/dist/src/plugin/auth.js.map +1 -0
- package/dist/src/plugin/cache/index.d.ts +5 -0
- package/dist/src/plugin/cache/index.d.ts.map +1 -0
- package/dist/src/plugin/cache/index.js +5 -0
- package/dist/src/plugin/cache/index.js.map +1 -0
- package/dist/src/plugin/cache/signature-cache.d.ts +111 -0
- package/dist/src/plugin/cache/signature-cache.d.ts.map +1 -0
- package/dist/src/plugin/cache/signature-cache.js +375 -0
- package/dist/src/plugin/cache/signature-cache.js.map +1 -0
- package/dist/src/plugin/cache.d.ts +44 -0
- package/dist/src/plugin/cache.d.ts.map +1 -0
- package/dist/src/plugin/cache.js +200 -0
- package/dist/src/plugin/cache.js.map +1 -0
- package/dist/src/plugin/cli.d.ts +27 -0
- package/dist/src/plugin/cli.d.ts.map +1 -0
- package/dist/src/plugin/cli.js +130 -0
- package/dist/src/plugin/cli.js.map +1 -0
- package/dist/src/plugin/config/index.d.ts +16 -0
- package/dist/src/plugin/config/index.d.ts.map +1 -0
- package/dist/src/plugin/config/index.js +16 -0
- package/dist/src/plugin/config/index.js.map +1 -0
- package/dist/src/plugin/config/loader.d.ts +37 -0
- package/dist/src/plugin/config/loader.d.ts.map +1 -0
- package/dist/src/plugin/config/loader.js +196 -0
- package/dist/src/plugin/config/loader.js.map +1 -0
- package/dist/src/plugin/config/models.d.ts +27 -0
- package/dist/src/plugin/config/models.d.ts.map +1 -0
- package/dist/src/plugin/config/models.js +70 -0
- package/dist/src/plugin/config/models.js.map +1 -0
- package/dist/src/plugin/config/schema.d.ts +133 -0
- package/dist/src/plugin/config/schema.d.ts.map +1 -0
- package/dist/src/plugin/config/schema.js +438 -0
- package/dist/src/plugin/config/schema.js.map +1 -0
- package/dist/src/plugin/config/updater.d.ts +55 -0
- package/dist/src/plugin/config/updater.d.ts.map +1 -0
- package/dist/src/plugin/config/updater.js +125 -0
- package/dist/src/plugin/config/updater.js.map +1 -0
- package/dist/src/plugin/core/streaming/index.d.ts +3 -0
- package/dist/src/plugin/core/streaming/index.d.ts.map +1 -0
- package/dist/src/plugin/core/streaming/index.js +3 -0
- package/dist/src/plugin/core/streaming/index.js.map +1 -0
- package/dist/src/plugin/core/streaming/transformer.d.ts +10 -0
- package/dist/src/plugin/core/streaming/transformer.d.ts.map +1 -0
- package/dist/src/plugin/core/streaming/transformer.js +271 -0
- package/dist/src/plugin/core/streaming/transformer.js.map +1 -0
- package/dist/src/plugin/core/streaming/types.d.ts +27 -0
- package/dist/src/plugin/core/streaming/types.d.ts.map +1 -0
- package/dist/src/plugin/core/streaming/types.js +1 -0
- package/dist/src/plugin/core/streaming/types.js.map +1 -0
- package/dist/src/plugin/debug.d.ts +94 -0
- package/dist/src/plugin/debug.d.ts.map +1 -0
- package/dist/src/plugin/debug.js +418 -0
- package/dist/src/plugin/debug.js.map +1 -0
- package/dist/src/plugin/errors.d.ts +28 -0
- package/dist/src/plugin/errors.d.ts.map +1 -0
- package/dist/src/plugin/errors.js +42 -0
- package/dist/src/plugin/errors.js.map +1 -0
- package/dist/src/plugin/fingerprint.d.ts +64 -0
- package/dist/src/plugin/fingerprint.d.ts.map +1 -0
- package/dist/src/plugin/fingerprint.js +125 -0
- package/dist/src/plugin/fingerprint.js.map +1 -0
- package/dist/src/plugin/image-saver.d.ts +25 -0
- package/dist/src/plugin/image-saver.d.ts.map +1 -0
- package/dist/src/plugin/image-saver.js +86 -0
- package/dist/src/plugin/image-saver.js.map +1 -0
- package/dist/src/plugin/logger.d.ts +54 -0
- package/dist/src/plugin/logger.d.ts.map +1 -0
- package/dist/src/plugin/logger.js +120 -0
- package/dist/src/plugin/logger.js.map +1 -0
- package/dist/src/plugin/project.d.ts +33 -0
- package/dist/src/plugin/project.d.ts.map +1 -0
- package/dist/src/plugin/project.js +234 -0
- package/dist/src/plugin/project.js.map +1 -0
- package/dist/src/plugin/proxy.d.ts +2 -0
- package/dist/src/plugin/proxy.d.ts.map +1 -0
- package/dist/src/plugin/proxy.js +20 -0
- package/dist/src/plugin/proxy.js.map +1 -0
- package/dist/src/plugin/quota.d.ts +35 -0
- package/dist/src/plugin/quota.d.ts.map +1 -0
- package/dist/src/plugin/quota.js +273 -0
- package/dist/src/plugin/quota.js.map +1 -0
- package/dist/src/plugin/recovery/constants.d.ts +22 -0
- package/dist/src/plugin/recovery/constants.d.ts.map +1 -0
- package/dist/src/plugin/recovery/constants.js +43 -0
- package/dist/src/plugin/recovery/constants.js.map +1 -0
- package/dist/src/plugin/recovery/index.d.ts +12 -0
- package/dist/src/plugin/recovery/index.d.ts.map +1 -0
- package/dist/src/plugin/recovery/index.js +12 -0
- package/dist/src/plugin/recovery/index.js.map +1 -0
- package/dist/src/plugin/recovery/storage.d.ts +24 -0
- package/dist/src/plugin/recovery/storage.d.ts.map +1 -0
- package/dist/src/plugin/recovery/storage.js +354 -0
- package/dist/src/plugin/recovery/storage.js.map +1 -0
- package/dist/src/plugin/recovery/types.d.ts +116 -0
- package/dist/src/plugin/recovery/types.d.ts.map +1 -0
- package/dist/src/plugin/recovery/types.js +6 -0
- package/dist/src/plugin/recovery/types.js.map +1 -0
- package/dist/src/plugin/recovery.d.ts +61 -0
- package/dist/src/plugin/recovery.d.ts.map +1 -0
- package/dist/src/plugin/recovery.js +378 -0
- package/dist/src/plugin/recovery.js.map +1 -0
- package/dist/src/plugin/refresh-queue.d.ts +101 -0
- package/dist/src/plugin/refresh-queue.d.ts.map +1 -0
- package/dist/src/plugin/refresh-queue.js +248 -0
- package/dist/src/plugin/refresh-queue.js.map +1 -0
- package/dist/src/plugin/request-helpers.d.ts +282 -0
- package/dist/src/plugin/request-helpers.d.ts.map +1 -0
- package/dist/src/plugin/request-helpers.js +2319 -0
- package/dist/src/plugin/request-helpers.js.map +1 -0
- package/dist/src/plugin/request.d.ts +93 -0
- package/dist/src/plugin/request.d.ts.map +1 -0
- package/dist/src/plugin/request.js +1352 -0
- package/dist/src/plugin/request.js.map +1 -0
- package/dist/src/plugin/rotation.d.ts +169 -0
- package/dist/src/plugin/rotation.d.ts.map +1 -0
- package/dist/src/plugin/rotation.js +328 -0
- package/dist/src/plugin/rotation.js.map +1 -0
- package/dist/src/plugin/search.d.ts +32 -0
- package/dist/src/plugin/search.d.ts.map +1 -0
- package/dist/src/plugin/search.js +195 -0
- package/dist/src/plugin/search.js.map +1 -0
- package/dist/src/plugin/server.d.ts +23 -0
- package/dist/src/plugin/server.d.ts.map +1 -0
- package/dist/src/plugin/server.js +324 -0
- package/dist/src/plugin/server.js.map +1 -0
- package/dist/src/plugin/storage.d.ts +136 -0
- package/dist/src/plugin/storage.d.ts.map +1 -0
- package/dist/src/plugin/storage.js +588 -0
- package/dist/src/plugin/storage.js.map +1 -0
- package/dist/src/plugin/stores/signature-store.d.ts +5 -0
- package/dist/src/plugin/stores/signature-store.d.ts.map +1 -0
- package/dist/src/plugin/stores/signature-store.js +25 -0
- package/dist/src/plugin/stores/signature-store.js.map +1 -0
- package/dist/src/plugin/thinking-recovery.d.ts +90 -0
- package/dist/src/plugin/thinking-recovery.d.ts.map +1 -0
- package/dist/src/plugin/thinking-recovery.js +316 -0
- package/dist/src/plugin/thinking-recovery.js.map +1 -0
- package/dist/src/plugin/token.d.ts +19 -0
- package/dist/src/plugin/token.d.ts.map +1 -0
- package/dist/src/plugin/token.js +128 -0
- package/dist/src/plugin/token.js.map +1 -0
- package/dist/src/plugin/transform/claude.d.ts +80 -0
- package/dist/src/plugin/transform/claude.d.ts.map +1 -0
- package/dist/src/plugin/transform/claude.js +265 -0
- package/dist/src/plugin/transform/claude.js.map +1 -0
- package/dist/src/plugin/transform/cross-model-sanitizer.d.ts +35 -0
- package/dist/src/plugin/transform/cross-model-sanitizer.d.ts.map +1 -0
- package/dist/src/plugin/transform/cross-model-sanitizer.js +225 -0
- package/dist/src/plugin/transform/cross-model-sanitizer.js.map +1 -0
- package/dist/src/plugin/transform/gemini.d.ts +100 -0
- package/dist/src/plugin/transform/gemini.d.ts.map +1 -0
- package/dist/src/plugin/transform/gemini.js +465 -0
- package/dist/src/plugin/transform/gemini.js.map +1 -0
- package/dist/src/plugin/transform/index.d.ts +15 -0
- package/dist/src/plugin/transform/index.d.ts.map +1 -0
- package/dist/src/plugin/transform/index.js +14 -0
- package/dist/src/plugin/transform/index.js.map +1 -0
- package/dist/src/plugin/transform/model-resolver.d.ts +104 -0
- package/dist/src/plugin/transform/model-resolver.d.ts.map +1 -0
- package/dist/src/plugin/transform/model-resolver.js +361 -0
- package/dist/src/plugin/transform/model-resolver.js.map +1 -0
- package/dist/src/plugin/transform/types.d.ts +111 -0
- package/dist/src/plugin/transform/types.d.ts.map +1 -0
- package/dist/src/plugin/transform/types.js +1 -0
- package/dist/src/plugin/transform/types.js.map +1 -0
- package/dist/src/plugin/types.d.ts +97 -0
- package/dist/src/plugin/types.d.ts.map +1 -0
- package/dist/src/plugin/types.js +1 -0
- package/dist/src/plugin/types.js.map +1 -0
- package/dist/src/plugin/ui/ansi.d.ts +32 -0
- package/dist/src/plugin/ui/ansi.d.ts.map +1 -0
- package/dist/src/plugin/ui/ansi.js +52 -0
- package/dist/src/plugin/ui/ansi.js.map +1 -0
- package/dist/src/plugin/ui/auth-menu.d.ts +33 -0
- package/dist/src/plugin/ui/auth-menu.d.ts.map +1 -0
- package/dist/src/plugin/ui/auth-menu.js +110 -0
- package/dist/src/plugin/ui/auth-menu.js.map +1 -0
- package/dist/src/plugin/ui/confirm.d.ts +2 -0
- package/dist/src/plugin/ui/confirm.d.ts.map +1 -0
- package/dist/src/plugin/ui/confirm.js +15 -0
- package/dist/src/plugin/ui/confirm.js.map +1 -0
- package/dist/src/plugin/ui/select.d.ts +23 -0
- package/dist/src/plugin/ui/select.d.ts.map +1 -0
- package/dist/src/plugin/ui/select.js +254 -0
- package/dist/src/plugin/ui/select.js.map +1 -0
- package/dist/src/plugin/version.d.ts +19 -0
- package/dist/src/plugin/version.d.ts.map +1 -0
- package/dist/src/plugin/version.js +80 -0
- package/dist/src/plugin/version.js.map +1 -0
- package/dist/src/plugin.d.ts +30 -0
- package/dist/src/plugin.d.ts.map +1 -0
- package/dist/src/plugin.js +3050 -0
- package/dist/src/plugin.js.map +1 -0
- package/package.json +68 -0
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
import { createWriteStream, mkdirSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { env } from "node:process";
|
|
5
|
+
import { ensureGitignoreSync } from "./storage";
|
|
6
|
+
const MAX_BODY_PREVIEW_CHARS = 12000;
|
|
7
|
+
const MAX_BODY_VERBOSE_CHARS = 50000;
|
|
8
|
+
export const DEBUG_MESSAGE_PREFIX = "[opencode-ag-auth debug]";
|
|
9
|
+
let debugState = null;
|
|
10
|
+
/**
|
|
11
|
+
* Parse debug level from a flag string.
|
|
12
|
+
* 0 = off, 1 = basic, 2 = verbose (full bodies)
|
|
13
|
+
*/
|
|
14
|
+
function parseDebugLevel(flag) {
|
|
15
|
+
const trimmed = flag.trim();
|
|
16
|
+
if (trimmed === "2" || trimmed === "verbose")
|
|
17
|
+
return 2;
|
|
18
|
+
if (trimmed === "1" || trimmed === "true")
|
|
19
|
+
return 1;
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Get the OS-specific config directory.
|
|
24
|
+
*/
|
|
25
|
+
function getConfigDir() {
|
|
26
|
+
const platform = process.platform;
|
|
27
|
+
if (platform === "win32") {
|
|
28
|
+
return join(env.APPDATA || join(homedir(), "AppData", "Roaming"), "opencode");
|
|
29
|
+
}
|
|
30
|
+
const xdgConfig = env.XDG_CONFIG_HOME || join(homedir(), ".config");
|
|
31
|
+
return join(xdgConfig, "opencode");
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Returns the logs directory, creating it if needed.
|
|
35
|
+
*/
|
|
36
|
+
function getLogsDir(customLogDir) {
|
|
37
|
+
const logsDir = customLogDir || join(getConfigDir(), "antigravity-logs");
|
|
38
|
+
try {
|
|
39
|
+
mkdirSync(logsDir, { recursive: true });
|
|
40
|
+
}
|
|
41
|
+
catch {
|
|
42
|
+
// Directory may already exist or we don't have permission
|
|
43
|
+
}
|
|
44
|
+
return logsDir;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Builds a timestamped log file path.
|
|
48
|
+
*/
|
|
49
|
+
function createLogFilePath(customLogDir) {
|
|
50
|
+
const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
|
|
51
|
+
return join(getLogsDir(customLogDir), `antigravity-debug-${timestamp}.log`);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Creates a log writer function that writes to a file.
|
|
55
|
+
*/
|
|
56
|
+
function createLogWriter(filePath) {
|
|
57
|
+
if (!filePath) {
|
|
58
|
+
return () => { };
|
|
59
|
+
}
|
|
60
|
+
try {
|
|
61
|
+
const stream = createWriteStream(filePath, { flags: "a" });
|
|
62
|
+
stream.on("error", () => { });
|
|
63
|
+
return (line) => {
|
|
64
|
+
const timestamp = new Date().toISOString();
|
|
65
|
+
const formatted = `[${timestamp}] ${line}`;
|
|
66
|
+
stream.write(`${formatted}\n`);
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return () => { };
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Initialize or reinitialize debug state with the given config.
|
|
75
|
+
* Call this once at plugin startup after loading config.
|
|
76
|
+
*/
|
|
77
|
+
export function initializeDebug(config) {
|
|
78
|
+
// Config takes precedence, but env var can force enable for debugging
|
|
79
|
+
const envDebugFlag = env.OPENCODE_ANTIGRAVITY_DEBUG ?? "";
|
|
80
|
+
const debugLevel = config.debug
|
|
81
|
+
? envDebugFlag === "2" || envDebugFlag === "verbose"
|
|
82
|
+
? 2
|
|
83
|
+
: 1
|
|
84
|
+
: parseDebugLevel(envDebugFlag);
|
|
85
|
+
const debugEnabled = debugLevel >= 1;
|
|
86
|
+
const verboseEnabled = debugLevel >= 2;
|
|
87
|
+
const logFilePath = debugEnabled
|
|
88
|
+
? createLogFilePath(config.log_dir)
|
|
89
|
+
: undefined;
|
|
90
|
+
const logWriter = createLogWriter(logFilePath);
|
|
91
|
+
if (debugEnabled) {
|
|
92
|
+
ensureGitignoreSync(getConfigDir());
|
|
93
|
+
}
|
|
94
|
+
debugState = {
|
|
95
|
+
debugLevel,
|
|
96
|
+
debugEnabled,
|
|
97
|
+
verboseEnabled,
|
|
98
|
+
logFilePath,
|
|
99
|
+
logWriter,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get the current debug state, initializing with defaults if needed.
|
|
104
|
+
* This allows the module to work even before initializeDebug is called.
|
|
105
|
+
*/
|
|
106
|
+
function getDebugState() {
|
|
107
|
+
if (!debugState) {
|
|
108
|
+
// Fallback to env-based initialization for backward compatibility
|
|
109
|
+
const envDebugFlag = env.OPENCODE_ANTIGRAVITY_DEBUG ?? "";
|
|
110
|
+
const debugLevel = parseDebugLevel(envDebugFlag);
|
|
111
|
+
const debugEnabled = debugLevel >= 1;
|
|
112
|
+
const verboseEnabled = debugLevel >= 2;
|
|
113
|
+
const logFilePath = debugEnabled ? createLogFilePath() : undefined;
|
|
114
|
+
const logWriter = createLogWriter(logFilePath);
|
|
115
|
+
debugState = {
|
|
116
|
+
debugLevel,
|
|
117
|
+
debugEnabled,
|
|
118
|
+
verboseEnabled,
|
|
119
|
+
logFilePath,
|
|
120
|
+
logWriter,
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
return debugState;
|
|
124
|
+
}
|
|
125
|
+
// =============================================================================
|
|
126
|
+
// Public API
|
|
127
|
+
// =============================================================================
|
|
128
|
+
export function isDebugEnabled() {
|
|
129
|
+
return getDebugState().debugEnabled;
|
|
130
|
+
}
|
|
131
|
+
export function isVerboseEnabled() {
|
|
132
|
+
return getDebugState().verboseEnabled;
|
|
133
|
+
}
|
|
134
|
+
export function getLogFilePath() {
|
|
135
|
+
return getDebugState().logFilePath;
|
|
136
|
+
}
|
|
137
|
+
let requestCounter = 0;
|
|
138
|
+
/**
|
|
139
|
+
* Begins a debug trace for an Antigravity request.
|
|
140
|
+
*/
|
|
141
|
+
export function startAntigravityDebugRequest(meta) {
|
|
142
|
+
const state = getDebugState();
|
|
143
|
+
if (!state.debugEnabled) {
|
|
144
|
+
return null;
|
|
145
|
+
}
|
|
146
|
+
const id = `ANTIGRAVITY-${++requestCounter}`;
|
|
147
|
+
const method = meta.method ?? "GET";
|
|
148
|
+
logDebug(`[Antigravity Debug ${id}] pid=${process.pid} ${method} ${meta.resolvedUrl}`);
|
|
149
|
+
if (meta.originalUrl && meta.originalUrl !== meta.resolvedUrl) {
|
|
150
|
+
logDebug(`[Antigravity Debug ${id}] Original URL: ${meta.originalUrl}`);
|
|
151
|
+
}
|
|
152
|
+
if (meta.projectId) {
|
|
153
|
+
logDebug(`[Antigravity Debug ${id}] Project: ${meta.projectId}`);
|
|
154
|
+
}
|
|
155
|
+
logDebug(`[Antigravity Debug ${id}] Streaming: ${meta.streaming ? "yes" : "no"}`);
|
|
156
|
+
logDebug(`[Antigravity Debug ${id}] Headers: ${JSON.stringify(maskHeaders(meta.headers))}`);
|
|
157
|
+
const bodyPreview = formatBodyPreview(meta.body);
|
|
158
|
+
if (bodyPreview) {
|
|
159
|
+
logDebug(`[Antigravity Debug ${id}] Body Preview: ${bodyPreview}`);
|
|
160
|
+
}
|
|
161
|
+
return { id, streaming: meta.streaming, startedAt: Date.now() };
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Logs response details for a previously started debug trace.
|
|
165
|
+
*/
|
|
166
|
+
export function logAntigravityDebugResponse(context, response, meta = {}) {
|
|
167
|
+
const state = getDebugState();
|
|
168
|
+
if (!state.debugEnabled || !context) {
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
const durationMs = Date.now() - context.startedAt;
|
|
172
|
+
logDebug(`[Antigravity Debug ${context.id}] Response ${response.status} ${response.statusText} (${durationMs}ms)`);
|
|
173
|
+
logDebug(`[Antigravity Debug ${context.id}] Response Headers: ${JSON.stringify(maskHeaders(meta.headersOverride ?? response.headers))}`);
|
|
174
|
+
if (meta.note) {
|
|
175
|
+
logDebug(`[Antigravity Debug ${context.id}] Note: ${meta.note}`);
|
|
176
|
+
}
|
|
177
|
+
if (meta.error) {
|
|
178
|
+
logDebug(`[Antigravity Debug ${context.id}] Error: ${formatError(meta.error)}`);
|
|
179
|
+
}
|
|
180
|
+
if (meta.body) {
|
|
181
|
+
logDebug(`[Antigravity Debug ${context.id}] Response Body Preview: ${truncateForLog(meta.body)}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Obscures sensitive headers and returns a plain object for logging.
|
|
186
|
+
*/
|
|
187
|
+
function maskHeaders(headers) {
|
|
188
|
+
if (!headers) {
|
|
189
|
+
return {};
|
|
190
|
+
}
|
|
191
|
+
const result = {};
|
|
192
|
+
const parsed = headers instanceof Headers ? headers : new Headers(headers);
|
|
193
|
+
parsed.forEach((value, key) => {
|
|
194
|
+
if (key.toLowerCase() === "authorization") {
|
|
195
|
+
result[key] = "[redacted]";
|
|
196
|
+
}
|
|
197
|
+
else {
|
|
198
|
+
result[key] = value;
|
|
199
|
+
}
|
|
200
|
+
});
|
|
201
|
+
return result;
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Produces a short, type-aware preview of a request/response body for logs.
|
|
205
|
+
*/
|
|
206
|
+
function formatBodyPreview(body) {
|
|
207
|
+
if (body == null) {
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
if (typeof body === "string") {
|
|
211
|
+
return truncateForLog(body);
|
|
212
|
+
}
|
|
213
|
+
if (body instanceof URLSearchParams) {
|
|
214
|
+
return truncateForLog(body.toString());
|
|
215
|
+
}
|
|
216
|
+
if (typeof Blob !== "undefined" && body instanceof Blob) {
|
|
217
|
+
return `[Blob size=${body.size}]`;
|
|
218
|
+
}
|
|
219
|
+
if (typeof FormData !== "undefined" && body instanceof FormData) {
|
|
220
|
+
return "[FormData payload omitted]";
|
|
221
|
+
}
|
|
222
|
+
return `[${body.constructor?.name ?? typeof body} payload omitted]`;
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Truncates long strings to a fixed preview length for logging.
|
|
226
|
+
*/
|
|
227
|
+
function truncateForLog(text) {
|
|
228
|
+
if (text.length <= MAX_BODY_PREVIEW_CHARS) {
|
|
229
|
+
return text;
|
|
230
|
+
}
|
|
231
|
+
return `${text.slice(0, MAX_BODY_PREVIEW_CHARS)}... (truncated ${text.length - MAX_BODY_PREVIEW_CHARS} chars)`;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Writes a single debug line using the configured writer.
|
|
235
|
+
*/
|
|
236
|
+
function logDebug(line) {
|
|
237
|
+
getDebugState().logWriter(line);
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Converts unknown error-like values into printable strings.
|
|
241
|
+
*/
|
|
242
|
+
function formatError(error) {
|
|
243
|
+
if (error instanceof Error) {
|
|
244
|
+
return error.stack ?? error.message;
|
|
245
|
+
}
|
|
246
|
+
try {
|
|
247
|
+
return JSON.stringify(error);
|
|
248
|
+
}
|
|
249
|
+
catch {
|
|
250
|
+
return String(error);
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
export function logAccountContext(label, info) {
|
|
254
|
+
if (!getDebugState().debugEnabled)
|
|
255
|
+
return;
|
|
256
|
+
const accountLabel = info.email
|
|
257
|
+
? info.email
|
|
258
|
+
: info.index >= 0
|
|
259
|
+
? `Account ${info.index + 1}`
|
|
260
|
+
: "All accounts";
|
|
261
|
+
const indexLabel = info.index >= 0
|
|
262
|
+
? `${info.index + 1}/${info.totalAccounts}`
|
|
263
|
+
: `-/${info.totalAccounts}`;
|
|
264
|
+
let rateLimitInfo = "";
|
|
265
|
+
if (info.rateLimitState && Object.keys(info.rateLimitState).length > 0) {
|
|
266
|
+
const now = Date.now();
|
|
267
|
+
const activeRateLimits = {};
|
|
268
|
+
for (const [key, resetTime] of Object.entries(info.rateLimitState)) {
|
|
269
|
+
if (typeof resetTime === "number" && resetTime > now) {
|
|
270
|
+
const remainingSec = Math.ceil((resetTime - now) / 1000);
|
|
271
|
+
activeRateLimits[key] = `${remainingSec}s`;
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
if (Object.keys(activeRateLimits).length > 0) {
|
|
275
|
+
rateLimitInfo = ` rateLimits=${JSON.stringify(activeRateLimits)}`;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
logDebug(`[Account] ${label}: ${accountLabel} (${indexLabel}) family=${info.family}${rateLimitInfo}`);
|
|
279
|
+
}
|
|
280
|
+
export function logRateLimitEvent(accountIndex, email, family, status, retryAfterMs, bodyInfo) {
|
|
281
|
+
if (!getDebugState().debugEnabled)
|
|
282
|
+
return;
|
|
283
|
+
const accountLabel = email || `Account ${accountIndex + 1}`;
|
|
284
|
+
logDebug(`[RateLimit] ${status} on ${accountLabel} family=${family} retryAfterMs=${retryAfterMs}`);
|
|
285
|
+
if (bodyInfo.message) {
|
|
286
|
+
logDebug(`[RateLimit] message: ${bodyInfo.message}`);
|
|
287
|
+
}
|
|
288
|
+
if (bodyInfo.quotaResetTime) {
|
|
289
|
+
logDebug(`[RateLimit] quotaResetTime: ${bodyInfo.quotaResetTime}`);
|
|
290
|
+
}
|
|
291
|
+
if (bodyInfo.retryDelayMs !== undefined && bodyInfo.retryDelayMs !== null) {
|
|
292
|
+
logDebug(`[RateLimit] body retryDelayMs: ${bodyInfo.retryDelayMs}`);
|
|
293
|
+
}
|
|
294
|
+
if (bodyInfo.reason) {
|
|
295
|
+
logDebug(`[RateLimit] reason: ${bodyInfo.reason}`);
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
export function logRateLimitSnapshot(family, accounts) {
|
|
299
|
+
if (!getDebugState().debugEnabled)
|
|
300
|
+
return;
|
|
301
|
+
const now = Date.now();
|
|
302
|
+
const entries = accounts.map((account) => {
|
|
303
|
+
const label = account.email
|
|
304
|
+
? account.email
|
|
305
|
+
: `Account ${account.index + 1}`;
|
|
306
|
+
const reset = account.rateLimitResetTimes?.[family];
|
|
307
|
+
if (typeof reset !== "number") {
|
|
308
|
+
return `${label}=ready`;
|
|
309
|
+
}
|
|
310
|
+
const remaining = Math.max(0, reset - now);
|
|
311
|
+
const seconds = Math.ceil(remaining / 1000);
|
|
312
|
+
return `${label}=wait ${seconds}s`;
|
|
313
|
+
});
|
|
314
|
+
logDebug(`[RateLimit] snapshot family=${family} ${entries.join(" | ")}`);
|
|
315
|
+
}
|
|
316
|
+
export async function logResponseBody(context, response, status) {
|
|
317
|
+
const state = getDebugState();
|
|
318
|
+
if (!state.debugEnabled || !context)
|
|
319
|
+
return undefined;
|
|
320
|
+
const isError = status >= 400;
|
|
321
|
+
const shouldLogBody = state.verboseEnabled || isError;
|
|
322
|
+
if (!shouldLogBody)
|
|
323
|
+
return undefined;
|
|
324
|
+
try {
|
|
325
|
+
const text = await response.clone().text();
|
|
326
|
+
const maxChars = state.verboseEnabled
|
|
327
|
+
? MAX_BODY_VERBOSE_CHARS
|
|
328
|
+
: MAX_BODY_PREVIEW_CHARS;
|
|
329
|
+
const preview = text.length <= maxChars
|
|
330
|
+
? text
|
|
331
|
+
: `${text.slice(0, maxChars)}... (truncated ${text.length - maxChars} chars)`;
|
|
332
|
+
logDebug(`[Antigravity Debug ${context.id}] Response Body (${status}): ${preview}`);
|
|
333
|
+
return text;
|
|
334
|
+
}
|
|
335
|
+
catch (e) {
|
|
336
|
+
logDebug(`[Antigravity Debug ${context.id}] Failed to read response body: ${formatError(e)}`);
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
export function logModelFamily(url, extractedModel, family) {
|
|
341
|
+
if (!getDebugState().debugEnabled)
|
|
342
|
+
return;
|
|
343
|
+
logDebug(`[ModelFamily] url=${url} model=${extractedModel ?? "unknown"} family=${family}`);
|
|
344
|
+
}
|
|
345
|
+
export function debugLogToFile(message) {
|
|
346
|
+
if (!getDebugState().debugEnabled)
|
|
347
|
+
return;
|
|
348
|
+
logDebug(message);
|
|
349
|
+
}
|
|
350
|
+
/**
|
|
351
|
+
* Logs a toast message to the debug file.
|
|
352
|
+
* This helps correlate what the user saw with debug events.
|
|
353
|
+
*/
|
|
354
|
+
export function logToast(message, variant) {
|
|
355
|
+
if (!getDebugState().debugEnabled)
|
|
356
|
+
return;
|
|
357
|
+
const variantLabel = variant.toUpperCase();
|
|
358
|
+
logDebug(`[Toast/${variantLabel}] ${message}`);
|
|
359
|
+
}
|
|
360
|
+
/**
|
|
361
|
+
* Logs retry attempt information.
|
|
362
|
+
* @param maxAttempts - Use -1 for unlimited retries
|
|
363
|
+
*/
|
|
364
|
+
export function logRetryAttempt(attempt, maxAttempts, reason, delayMs) {
|
|
365
|
+
if (!getDebugState().debugEnabled)
|
|
366
|
+
return;
|
|
367
|
+
const delayInfo = delayMs !== undefined ? ` delay=${delayMs}ms` : "";
|
|
368
|
+
const maxInfo = maxAttempts < 0 ? "∞" : maxAttempts.toString();
|
|
369
|
+
logDebug(`[Retry] Attempt ${attempt}/${maxInfo} reason=${reason}${delayInfo}`);
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Logs cache hit/miss information from response usage metadata.
|
|
373
|
+
*/
|
|
374
|
+
export function logCacheStats(model, cacheReadTokens, cacheWriteTokens, totalInputTokens) {
|
|
375
|
+
if (!getDebugState().debugEnabled)
|
|
376
|
+
return;
|
|
377
|
+
const cacheHitRate = totalInputTokens > 0
|
|
378
|
+
? Math.round((cacheReadTokens / totalInputTokens) * 100)
|
|
379
|
+
: 0;
|
|
380
|
+
const status = cacheReadTokens > 0 ? "HIT" : cacheWriteTokens > 0 ? "WRITE" : "MISS";
|
|
381
|
+
logDebug(`[Cache] ${status} model=${model} read=${cacheReadTokens} write=${cacheWriteTokens} total=${totalInputTokens} hitRate=${cacheHitRate}%`);
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Logs quota status for an account.
|
|
385
|
+
*/
|
|
386
|
+
export function logQuotaStatus(accountEmail, accountIndex, quotaPercent, family) {
|
|
387
|
+
if (!getDebugState().debugEnabled)
|
|
388
|
+
return;
|
|
389
|
+
const accountLabel = accountEmail || `Account ${accountIndex + 1}`;
|
|
390
|
+
const familyInfo = family ? ` family=${family}` : "";
|
|
391
|
+
const status = quotaPercent <= 0 ? "EXHAUSTED" : quotaPercent < 20 ? "LOW" : "OK";
|
|
392
|
+
logDebug(`[Quota] ${accountLabel} remaining=${quotaPercent.toFixed(1)}% status=${status}${familyInfo}`);
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Logs background quota fetch events.
|
|
396
|
+
*/
|
|
397
|
+
export function logQuotaFetch(event, accountCount, details) {
|
|
398
|
+
if (!getDebugState().debugEnabled)
|
|
399
|
+
return;
|
|
400
|
+
const countInfo = accountCount !== undefined ? ` accounts=${accountCount}` : "";
|
|
401
|
+
const detailsInfo = details ? ` ${details}` : "";
|
|
402
|
+
logDebug(`[QuotaFetch] ${event.toUpperCase()}${countInfo}${detailsInfo}`);
|
|
403
|
+
}
|
|
404
|
+
/**
|
|
405
|
+
* Logs which model is being used for a request.
|
|
406
|
+
*/
|
|
407
|
+
export function logModelUsed(requestedModel, actualModel, accountEmail) {
|
|
408
|
+
if (!getDebugState().debugEnabled)
|
|
409
|
+
return;
|
|
410
|
+
const accountInfo = accountEmail ? ` account=${accountEmail}` : "";
|
|
411
|
+
if (requestedModel !== actualModel) {
|
|
412
|
+
logDebug(`[Model] requested=${requestedModel} actual=${actualModel}${accountInfo}`);
|
|
413
|
+
}
|
|
414
|
+
else {
|
|
415
|
+
logDebug(`[Model] ${actualModel}${accountInfo}`);
|
|
416
|
+
}
|
|
417
|
+
}
|
|
418
|
+
//# sourceMappingURL=debug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"debug.js","sourceRoot":"","sources":["../../../src/plugin/debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error types for opencode-ag-auth plugin.
|
|
3
|
+
*
|
|
4
|
+
* Ported from LLM-API-Key-Proxy for robust error handling.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Error thrown when Antigravity returns an empty response after retry attempts.
|
|
8
|
+
*
|
|
9
|
+
* Empty responses can occur when:
|
|
10
|
+
* - The model has no candidates/choices
|
|
11
|
+
* - The response body is empty or malformed
|
|
12
|
+
* - A temporary service issue prevents generation
|
|
13
|
+
*/
|
|
14
|
+
export declare class EmptyResponseError extends Error {
|
|
15
|
+
readonly provider: string;
|
|
16
|
+
readonly model: string;
|
|
17
|
+
readonly attempts: number;
|
|
18
|
+
constructor(provider: string, model: string, attempts: number, message?: string);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Error thrown when tool ID matching fails and cannot be recovered.
|
|
22
|
+
*/
|
|
23
|
+
export declare class ToolIdMismatchError extends Error {
|
|
24
|
+
readonly expectedIds: string[];
|
|
25
|
+
readonly foundIds: string[];
|
|
26
|
+
constructor(expectedIds: string[], foundIds: string[], message?: string);
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/plugin/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAGxB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM;CAYnB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;gBAEhB,WAAW,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE,MAAM;CASxE"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom error types for opencode-ag-auth plugin.
|
|
3
|
+
*
|
|
4
|
+
* Ported from LLM-API-Key-Proxy for robust error handling.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Error thrown when Antigravity returns an empty response after retry attempts.
|
|
8
|
+
*
|
|
9
|
+
* Empty responses can occur when:
|
|
10
|
+
* - The model has no candidates/choices
|
|
11
|
+
* - The response body is empty or malformed
|
|
12
|
+
* - A temporary service issue prevents generation
|
|
13
|
+
*/
|
|
14
|
+
export class EmptyResponseError extends Error {
|
|
15
|
+
provider;
|
|
16
|
+
model;
|
|
17
|
+
attempts;
|
|
18
|
+
constructor(provider, model, attempts, message) {
|
|
19
|
+
super(message ??
|
|
20
|
+
`The model returned an empty response after ${attempts} attempts. ` +
|
|
21
|
+
`This may indicate a temporary service issue. Please try again.`);
|
|
22
|
+
this.name = "EmptyResponseError";
|
|
23
|
+
this.provider = provider;
|
|
24
|
+
this.model = model;
|
|
25
|
+
this.attempts = attempts;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Error thrown when tool ID matching fails and cannot be recovered.
|
|
30
|
+
*/
|
|
31
|
+
export class ToolIdMismatchError extends Error {
|
|
32
|
+
expectedIds;
|
|
33
|
+
foundIds;
|
|
34
|
+
constructor(expectedIds, foundIds, message) {
|
|
35
|
+
super(message ??
|
|
36
|
+
`Tool ID mismatch: expected [${expectedIds.join(", ")}] but found [${foundIds.join(", ")}]`);
|
|
37
|
+
this.name = "ToolIdMismatchError";
|
|
38
|
+
this.expectedIds = expectedIds;
|
|
39
|
+
this.foundIds = foundIds;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/plugin/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;;GAOG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAClC,QAAQ,CAAS;IACjB,KAAK,CAAS;IACd,QAAQ,CAAS;IAE1B,YACE,QAAgB,EAChB,KAAa,EACb,QAAgB,EAChB,OAAgB;QAEhB,KAAK,CACH,OAAO;YACL,8CAA8C,QAAQ,aAAa;gBACjE,gEAAgE,CACrE,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IACnC,WAAW,CAAW;IACtB,QAAQ,CAAW;IAE5B,YAAY,WAAqB,EAAE,QAAkB,EAAE,OAAgB;QACrE,KAAK,CACH,OAAO;YACL,+BAA+B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC9F,CAAC;QACF,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Device Fingerprint Generator for Rate Limit Mitigation
|
|
3
|
+
*
|
|
4
|
+
* Ported from antigravity-claude-proxy PR #170
|
|
5
|
+
* https://github.com/badrisnarayanan/antigravity-claude-proxy/pull/170
|
|
6
|
+
*
|
|
7
|
+
* Generates randomized device fingerprints to help distribute API usage
|
|
8
|
+
* across different apparent device identities.
|
|
9
|
+
*/
|
|
10
|
+
export interface ClientMetadata {
|
|
11
|
+
ideType: string;
|
|
12
|
+
platform: string;
|
|
13
|
+
pluginType: string;
|
|
14
|
+
}
|
|
15
|
+
export interface Fingerprint {
|
|
16
|
+
deviceId: string;
|
|
17
|
+
sessionToken: string;
|
|
18
|
+
userAgent: string;
|
|
19
|
+
apiClient: string;
|
|
20
|
+
clientMetadata: ClientMetadata;
|
|
21
|
+
createdAt: number;
|
|
22
|
+
/** @deprecated Kept for backward compat with stored fingerprints */
|
|
23
|
+
quotaUser?: string;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Fingerprint version for history tracking.
|
|
27
|
+
* Stores a snapshot of a fingerprint with metadata about when/why it was saved.
|
|
28
|
+
*/
|
|
29
|
+
export interface FingerprintVersion {
|
|
30
|
+
fingerprint: Fingerprint;
|
|
31
|
+
timestamp: number;
|
|
32
|
+
reason: 'initial' | 'regenerated' | 'restored';
|
|
33
|
+
}
|
|
34
|
+
/** Maximum number of fingerprint versions to keep per account */
|
|
35
|
+
export declare const MAX_FINGERPRINT_HISTORY = 5;
|
|
36
|
+
export interface FingerprintHeaders {
|
|
37
|
+
"User-Agent": string;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Generate a randomized device fingerprint.
|
|
41
|
+
* Each fingerprint represents a unique "device" identity.
|
|
42
|
+
*/
|
|
43
|
+
export declare function generateFingerprint(): Fingerprint;
|
|
44
|
+
/**
|
|
45
|
+
* Collect fingerprint based on actual current system.
|
|
46
|
+
* Uses real OS info instead of randomized values.
|
|
47
|
+
*/
|
|
48
|
+
export declare function collectCurrentFingerprint(): Fingerprint;
|
|
49
|
+
/**
|
|
50
|
+
* Build HTTP headers from a fingerprint object.
|
|
51
|
+
* These headers are used to identify the "device" making API requests.
|
|
52
|
+
*/
|
|
53
|
+
export declare function buildFingerprintHeaders(fingerprint: Fingerprint | null): Partial<FingerprintHeaders>;
|
|
54
|
+
/**
|
|
55
|
+
* Get or create the session fingerprint.
|
|
56
|
+
* Returns the same fingerprint for all calls within a session.
|
|
57
|
+
*/
|
|
58
|
+
export declare function getSessionFingerprint(): Fingerprint;
|
|
59
|
+
/**
|
|
60
|
+
* Regenerate the session fingerprint.
|
|
61
|
+
* Call this to get a fresh identity (e.g., after rate limiting).
|
|
62
|
+
*/
|
|
63
|
+
export declare function regenerateSessionFingerprint(): Fingerprint;
|
|
64
|
+
//# sourceMappingURL=fingerprint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../src/plugin/fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA8BH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,WAAW,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,SAAS,GAAG,aAAa,GAAG,UAAU,CAAC;CAChD;AAED,iEAAiE;AACjE,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAC;CACtB;AAcD;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAsBjD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,WAAW,CAqBvD;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,WAAW,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAQpG;AAQD;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,WAAW,CAKnD;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,IAAI,WAAW,CAG1D"}
|