saros-proxy 0.1.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.
- package/LICENSE +21 -0
- package/README.md +620 -0
- package/dist/cli/opencode-config.d.ts +28 -0
- package/dist/cli/opencode-config.js +126 -0
- package/dist/cli/opencode-config.js.map +1 -0
- package/dist/cli/setup.d.ts +29 -0
- package/dist/cli/setup.js +669 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/ui.d.ts +27 -0
- package/dist/cli/ui.js +116 -0
- package/dist/cli/ui.js.map +1 -0
- package/dist/config.d.ts +50 -0
- package/dist/config.js +341 -0
- package/dist/config.js.map +1 -0
- package/dist/constants.d.ts +25 -0
- package/dist/constants.js +162 -0
- package/dist/constants.js.map +1 -0
- package/dist/dashboard-parser.d.ts +47 -0
- package/dist/dashboard-parser.js +88 -0
- package/dist/dashboard-parser.js.map +1 -0
- package/dist/firefox-cookies.d.ts +42 -0
- package/dist/firefox-cookies.js +170 -0
- package/dist/firefox-cookies.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.js +101 -0
- package/dist/index.js.map +1 -0
- package/dist/key-encryption.d.ts +21 -0
- package/dist/key-encryption.js +59 -0
- package/dist/key-encryption.js.map +1 -0
- package/dist/logger.d.ts +11 -0
- package/dist/logger.js +35 -0
- package/dist/logger.js.map +1 -0
- package/dist/proxy-logic.d.ts +108 -0
- package/dist/proxy-logic.js +353 -0
- package/dist/proxy-logic.js.map +1 -0
- package/dist/proxy.d.ts +35 -0
- package/dist/proxy.js +551 -0
- package/dist/proxy.js.map +1 -0
- package/dist/scraper.d.ts +70 -0
- package/dist/scraper.js +239 -0
- package/dist/scraper.js.map +1 -0
- package/dist/validation.d.ts +34 -0
- package/dist/validation.js +64 -0
- package/dist/validation.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/ui.d.ts
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ui.ts — Centralized CLI UI abstraction for Saros.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around @clack/prompts. All CLI output goes through here
|
|
5
|
+
* so that future migration to Ink, Blessed, or web dashboards only requires
|
|
6
|
+
* changing this file.
|
|
7
|
+
*
|
|
8
|
+
* Principles:
|
|
9
|
+
* - Semantic colors only (green=success, red=error, yellow=warn, blue=info)
|
|
10
|
+
* - Minimal visual noise
|
|
11
|
+
* - Consistent spacing and symbols
|
|
12
|
+
* - No business logic
|
|
13
|
+
*/
|
|
14
|
+
import { outro } from '@clack/prompts';
|
|
15
|
+
import type { SetupConfig } from './setup.js';
|
|
16
|
+
export { outro };
|
|
17
|
+
export { intro, spinner, text, confirm, password, select } from '@clack/prompts';
|
|
18
|
+
export declare function info(msg: string): void;
|
|
19
|
+
export declare function success(msg: string): void;
|
|
20
|
+
export declare function warn(msg: string): void;
|
|
21
|
+
export declare function error(msg: string): void;
|
|
22
|
+
export declare function step(title: string): void;
|
|
23
|
+
export declare function panel(title: string, body: string): void;
|
|
24
|
+
export declare function printConfigSummary(cfg: SetupConfig, encryptionEnabled?: boolean, envSaved?: boolean): void;
|
|
25
|
+
export declare function printNextSteps(port: number): void;
|
|
26
|
+
export declare function listWorkspaces(workspaceIds: string[]): void;
|
|
27
|
+
export declare function assertNotCancelled<T>(value: T | symbol): T;
|
package/dist/cli/ui.js
ADDED
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ui.ts — Centralized CLI UI abstraction for Saros.
|
|
3
|
+
*
|
|
4
|
+
* Thin wrapper around @clack/prompts. All CLI output goes through here
|
|
5
|
+
* so that future migration to Ink, Blessed, or web dashboards only requires
|
|
6
|
+
* changing this file.
|
|
7
|
+
*
|
|
8
|
+
* Principles:
|
|
9
|
+
* - Semantic colors only (green=success, red=error, yellow=warn, blue=info)
|
|
10
|
+
* - Minimal visual noise
|
|
11
|
+
* - Consistent spacing and symbols
|
|
12
|
+
* - No business logic
|
|
13
|
+
*/
|
|
14
|
+
import { outro, log, note, isCancel } from '@clack/prompts';
|
|
15
|
+
import chalk from 'chalk';
|
|
16
|
+
import { maskKey } from '../logger.js';
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
// Re-exports — setup.ts imports from here so migration is localized
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
export { outro };
|
|
21
|
+
export { intro, spinner, text, confirm, password, select } from '@clack/prompts';
|
|
22
|
+
// ---------------------------------------------------------------------------
|
|
23
|
+
// Status messages (thin wrappers around @clack/log)
|
|
24
|
+
// ---------------------------------------------------------------------------
|
|
25
|
+
export function info(msg) {
|
|
26
|
+
log.info(chalk.blue(msg));
|
|
27
|
+
}
|
|
28
|
+
export function success(msg) {
|
|
29
|
+
log.success(chalk.green(msg));
|
|
30
|
+
}
|
|
31
|
+
export function warn(msg) {
|
|
32
|
+
log.warn(chalk.yellow(msg));
|
|
33
|
+
}
|
|
34
|
+
export function error(msg) {
|
|
35
|
+
log.error(chalk.red(msg));
|
|
36
|
+
}
|
|
37
|
+
export function step(title) {
|
|
38
|
+
log.step(chalk.cyan(title));
|
|
39
|
+
}
|
|
40
|
+
// ---------------------------------------------------------------------------
|
|
41
|
+
// Panels
|
|
42
|
+
// ---------------------------------------------------------------------------
|
|
43
|
+
export function panel(title, body) {
|
|
44
|
+
note(body, title);
|
|
45
|
+
}
|
|
46
|
+
// ---------------------------------------------------------------------------
|
|
47
|
+
// Config summary (replaces manual Unicode box-drawing)
|
|
48
|
+
// ---------------------------------------------------------------------------
|
|
49
|
+
export function printConfigSummary(cfg, encryptionEnabled = false, envSaved = false) {
|
|
50
|
+
const lines = [
|
|
51
|
+
`${chalk.dim('Proxy port:')} ${cfg.port}`,
|
|
52
|
+
`${chalk.dim('Upstream API:')} ${cfg.upstreamBaseUrl}`,
|
|
53
|
+
`${chalk.dim('API keys:')} ${cfg.keys.length}`,
|
|
54
|
+
];
|
|
55
|
+
if (encryptionEnabled) {
|
|
56
|
+
lines.push(`${chalk.dim('Encryption:')} AES-256-GCM (${cfg.keys.length} key(s))`);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
for (const k of cfg.keys) {
|
|
60
|
+
lines.push(`${chalk.dim(k.label.padEnd(16))} ${maskKey(k.key)}`);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (cfg.scrapingAccounts && cfg.scrapingAccounts.length > 0) {
|
|
64
|
+
lines.push('', `${chalk.dim('Scraping accounts:')} ${cfg.scrapingAccounts.length}`, `${chalk.dim('Usage threshold:')} ${cfg.scrapingThreshold ?? 50}%`, `${chalk.dim('Check interval:')} ${((cfg.scrapingIntervalMs ?? 90_000) / 1000)}s`);
|
|
65
|
+
}
|
|
66
|
+
note(lines.join('\n'), 'Configuration Summary');
|
|
67
|
+
if (encryptionEnabled && !envSaved) {
|
|
68
|
+
log.warn('Your API keys are encrypted.');
|
|
69
|
+
info('Set OPENCODE_GO_ENCRYPTION_KEY before starting:');
|
|
70
|
+
console.log(chalk.dim(' $ export OPENCODE_GO_ENCRYPTION_KEY="your-master-key"'));
|
|
71
|
+
console.log(chalk.dim(' $ npm run dev'));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// ---------------------------------------------------------------------------
|
|
75
|
+
// Next steps
|
|
76
|
+
// ---------------------------------------------------------------------------
|
|
77
|
+
export function printNextSteps(port) {
|
|
78
|
+
const bullet = chalk.dim('•');
|
|
79
|
+
log.step('Next Steps');
|
|
80
|
+
console.log(` ${bullet} Start the proxy: ${chalk.dim('$ npm run dev')}`);
|
|
81
|
+
const extensionUrl = `http://127.0.0.1:${port}`;
|
|
82
|
+
console.log(` ${bullet} Extension endpoint: ${chalk.dim(extensionUrl)}`);
|
|
83
|
+
console.log(` ${bullet} Health check: ${chalk.dim(`$ curl ${extensionUrl}/health`)}`);
|
|
84
|
+
console.log('');
|
|
85
|
+
log.step('OpenCode Client');
|
|
86
|
+
console.log(` ${bullet} Select provider: ${chalk.dim('saros-proxy')}`);
|
|
87
|
+
console.log(` ${bullet} Or set as default: ${chalk.dim('"model": "saros-proxy/glm-5"')}`);
|
|
88
|
+
console.log('');
|
|
89
|
+
log.step('Manage');
|
|
90
|
+
console.log(` ${bullet} Re-run setup anytime: ${chalk.dim('$ npm run setup')}`);
|
|
91
|
+
console.log(` ${bullet} Edit config.yaml directly (circuit breaker, CORS, timeouts)`);
|
|
92
|
+
}
|
|
93
|
+
// ---------------------------------------------------------------------------
|
|
94
|
+
// Workspace list
|
|
95
|
+
// ---------------------------------------------------------------------------
|
|
96
|
+
export function listWorkspaces(workspaceIds) {
|
|
97
|
+
info('Workspaces found in Firefox history:');
|
|
98
|
+
for (let w = 0; w < workspaceIds.length; w++) {
|
|
99
|
+
const number = `${w + 1})`;
|
|
100
|
+
const ws = workspaceIds[w];
|
|
101
|
+
const url = `https://opencode.ai/workspace/${ws}/go`;
|
|
102
|
+
console.log(` ${chalk.cyan(number)} ${ws}`);
|
|
103
|
+
console.log(` ${chalk.dim(url)}`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
// Cancellation helper
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
export function assertNotCancelled(value) {
|
|
110
|
+
if (isCancel(value)) {
|
|
111
|
+
outro(chalk.red('Setup cancelled.'));
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
return value;
|
|
115
|
+
}
|
|
116
|
+
//# sourceMappingURL=ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/cli/ui.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* config.ts — Configuration loading from YAML file or environment variables.
|
|
3
|
+
*/
|
|
4
|
+
export interface ProxyConfig {
|
|
5
|
+
port: number;
|
|
6
|
+
host: string;
|
|
7
|
+
keys: Array<{
|
|
8
|
+
label: string;
|
|
9
|
+
key: string;
|
|
10
|
+
}>;
|
|
11
|
+
circuitBreakerThreshold: number;
|
|
12
|
+
circuitBreakerCooldownMs: number;
|
|
13
|
+
upstreamBaseUrl: string;
|
|
14
|
+
requestTimeoutMs: number;
|
|
15
|
+
allowedOrigins: string[];
|
|
16
|
+
scraping?: ScrapingConfig;
|
|
17
|
+
}
|
|
18
|
+
export interface ScrapingAccount {
|
|
19
|
+
workspaceId: string;
|
|
20
|
+
authCookie: string;
|
|
21
|
+
}
|
|
22
|
+
export interface ScrapingConfig {
|
|
23
|
+
enabled: boolean;
|
|
24
|
+
intervalMs: number;
|
|
25
|
+
usageThreshold: number;
|
|
26
|
+
accounts: ScrapingAccount[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Return the OS-native user config directory path for saros.
|
|
30
|
+
*
|
|
31
|
+
* Windows: %LOCALAPPDATA%\saros\config.yaml
|
|
32
|
+
* macOS/Linux: ~/.config/saros/config.yaml (XDG)
|
|
33
|
+
*/
|
|
34
|
+
export declare function getDefaultConfigPath(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Validate and normalize a partial config object.
|
|
37
|
+
* Logs warnings for invalid values that fall back to defaults.
|
|
38
|
+
* Throws an error if no valid API keys are present (critical issue).
|
|
39
|
+
*/
|
|
40
|
+
export declare function validateConfig(config: Partial<ProxyConfig>): ProxyConfig;
|
|
41
|
+
/**
|
|
42
|
+
* Load config from YAML file (default: config.yaml in cwd) or env vars.
|
|
43
|
+
*
|
|
44
|
+
* Priority order (highest to lowest):
|
|
45
|
+
* 1. CLI args (--config, --port, --host)
|
|
46
|
+
* 2. YAML config file
|
|
47
|
+
* 3. Environment variables
|
|
48
|
+
* 4. Hardcoded defaults
|
|
49
|
+
*/
|
|
50
|
+
export declare function loadConfig(configPath?: string): ProxyConfig;
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* config.ts — Configuration loading from YAML file or environment variables.
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync, existsSync } from 'node:fs';
|
|
5
|
+
import { homedir } from 'node:os';
|
|
6
|
+
import { join } from 'node:path';
|
|
7
|
+
import { parse as parseYaml } from 'yaml';
|
|
8
|
+
import { logger, maskKey } from './logger.js';
|
|
9
|
+
import { decryptKey, isEncryptedKey } from './key-encryption.js';
|
|
10
|
+
import { DEFAULT_PORT, DEFAULT_HOST, DEFAULT_UPSTREAM_URL, DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MS, DEFAULT_REQUEST_TIMEOUT_MS, MIN_SCRAPE_INTERVAL_MS, MAX_SCRAPE_INTERVAL_MS, DEFAULT_SCRAPE_INTERVAL_MS, DEFAULT_USAGE_THRESHOLD, } from './constants.js';
|
|
11
|
+
import { isValidPort, isValidHttpsUrl, isValidApiKey, isValidWorkspaceId } from './validation.js';
|
|
12
|
+
/**
|
|
13
|
+
* Return the OS-native user config directory path for saros.
|
|
14
|
+
*
|
|
15
|
+
* Windows: %LOCALAPPDATA%\saros\config.yaml
|
|
16
|
+
* macOS/Linux: ~/.config/saros/config.yaml (XDG)
|
|
17
|
+
*/
|
|
18
|
+
export function getDefaultConfigPath() {
|
|
19
|
+
const home = homedir();
|
|
20
|
+
if (!home) {
|
|
21
|
+
throw new Error('Cannot determine home directory — set XDG_CONFIG_HOME or LOCALAPPDATA environment variable');
|
|
22
|
+
}
|
|
23
|
+
if (process.platform === 'win32') {
|
|
24
|
+
const localAppData = process.env.LOCALAPPDATA || join(home, 'AppData', 'Local');
|
|
25
|
+
return join(localAppData, 'saros', 'config.yaml');
|
|
26
|
+
}
|
|
27
|
+
const xdgConfig = process.env.XDG_CONFIG_HOME || join(home, '.config');
|
|
28
|
+
return join(xdgConfig, 'saros', 'config.yaml');
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Parse --key value pairs from process.argv.
|
|
32
|
+
*/
|
|
33
|
+
function parseCliArgs() {
|
|
34
|
+
const args = {};
|
|
35
|
+
const argv = process.argv;
|
|
36
|
+
for (let i = 2; i < argv.length; i++) {
|
|
37
|
+
const arg = argv[i];
|
|
38
|
+
if (arg.startsWith('--')) {
|
|
39
|
+
const key = arg.slice(2);
|
|
40
|
+
const next = argv[i + 1];
|
|
41
|
+
if (next && !next.startsWith('--')) {
|
|
42
|
+
args[key] = next;
|
|
43
|
+
i++;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
args[key] = 'true';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return args;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Validate and normalize a partial config object.
|
|
54
|
+
* Logs warnings for invalid values that fall back to defaults.
|
|
55
|
+
* Throws an error if no valid API keys are present (critical issue).
|
|
56
|
+
*/
|
|
57
|
+
export function validateConfig(config) {
|
|
58
|
+
// --- Port ---
|
|
59
|
+
let port = config.port ?? DEFAULT_PORT;
|
|
60
|
+
if (!isValidPort(port)) {
|
|
61
|
+
logger.warn('Invalid port %d, defaulting to %d', port, DEFAULT_PORT);
|
|
62
|
+
port = DEFAULT_PORT;
|
|
63
|
+
}
|
|
64
|
+
// --- Host ---
|
|
65
|
+
let host = config.host ?? DEFAULT_HOST;
|
|
66
|
+
// Simple validation: only allow alphanumeric, dots, hyphens, colons (for IPv6), brackets
|
|
67
|
+
const hostRegex = /^[a-zA-Z0-9._:\-[\]]+$/;
|
|
68
|
+
if (!hostRegex.test(host)) {
|
|
69
|
+
logger.warn('Invalid host "%s", defaulting to %s', host, DEFAULT_HOST);
|
|
70
|
+
host = DEFAULT_HOST;
|
|
71
|
+
}
|
|
72
|
+
// --- Upstream URL (SSRF prevention — must be HTTPS) ---
|
|
73
|
+
let upstreamBaseUrl = config.upstreamBaseUrl ?? DEFAULT_UPSTREAM_URL;
|
|
74
|
+
if (!isValidHttpsUrl(upstreamBaseUrl)) {
|
|
75
|
+
logger.warn('Upstream URL "%s" must use HTTPS, defaulting to %s', upstreamBaseUrl, DEFAULT_UPSTREAM_URL);
|
|
76
|
+
upstreamBaseUrl = DEFAULT_UPSTREAM_URL;
|
|
77
|
+
}
|
|
78
|
+
// --- API keys (must start with sk- and be >= 20 chars) ---
|
|
79
|
+
const rawKeys = config.keys ?? [];
|
|
80
|
+
const validKeys = rawKeys.filter((k) => {
|
|
81
|
+
if (!isValidApiKey(k.key)) {
|
|
82
|
+
logger.warn('Invalid key "%s", filtering out', maskKey(k.key));
|
|
83
|
+
return false;
|
|
84
|
+
}
|
|
85
|
+
return true;
|
|
86
|
+
});
|
|
87
|
+
if (validKeys.length === 0) {
|
|
88
|
+
throw new Error('No valid API keys configured');
|
|
89
|
+
}
|
|
90
|
+
// --- Circuit breaker threshold ---
|
|
91
|
+
let circuitBreakerThreshold = config.circuitBreakerThreshold ?? 3;
|
|
92
|
+
if (!Number.isInteger(circuitBreakerThreshold) ||
|
|
93
|
+
circuitBreakerThreshold < 1 ||
|
|
94
|
+
circuitBreakerThreshold > 10) {
|
|
95
|
+
logger.warn('Invalid circuitBreakerThreshold %d, defaulting to 3', circuitBreakerThreshold);
|
|
96
|
+
circuitBreakerThreshold = 3;
|
|
97
|
+
}
|
|
98
|
+
// --- Circuit breaker cooldown ---
|
|
99
|
+
let circuitBreakerCooldownMs = config.circuitBreakerCooldownMs ?? DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MS;
|
|
100
|
+
if (!Number.isInteger(circuitBreakerCooldownMs) ||
|
|
101
|
+
circuitBreakerCooldownMs < 1_000 ||
|
|
102
|
+
circuitBreakerCooldownMs > MAX_SCRAPE_INTERVAL_MS) {
|
|
103
|
+
logger.warn('Invalid circuitBreakerCooldownMs %d, defaulting to %d', circuitBreakerCooldownMs, DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MS);
|
|
104
|
+
circuitBreakerCooldownMs = DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MS;
|
|
105
|
+
}
|
|
106
|
+
// --- Request timeout ---
|
|
107
|
+
let requestTimeoutMs = config.requestTimeoutMs ?? DEFAULT_REQUEST_TIMEOUT_MS;
|
|
108
|
+
if (!Number.isInteger(requestTimeoutMs) ||
|
|
109
|
+
requestTimeoutMs < 1_000 ||
|
|
110
|
+
requestTimeoutMs > 300_000) {
|
|
111
|
+
logger.warn('Invalid requestTimeoutMs %d, defaulting to %d', requestTimeoutMs, DEFAULT_REQUEST_TIMEOUT_MS);
|
|
112
|
+
requestTimeoutMs = DEFAULT_REQUEST_TIMEOUT_MS;
|
|
113
|
+
}
|
|
114
|
+
// --- Allowed origins (CORS) ---
|
|
115
|
+
const allowedOrigins = config.allowedOrigins ?? [
|
|
116
|
+
'http://localhost:*',
|
|
117
|
+
'http://127.0.0.1:*',
|
|
118
|
+
];
|
|
119
|
+
// --- Scraping config (optional) ---
|
|
120
|
+
let scraping;
|
|
121
|
+
if (config.scraping) {
|
|
122
|
+
const s = config.scraping;
|
|
123
|
+
// enabled: default false
|
|
124
|
+
const enabled = s.enabled ?? false;
|
|
125
|
+
// intervalMs: default 90000, range 10000-3600000
|
|
126
|
+
let intervalMs = s.intervalMs ?? DEFAULT_SCRAPE_INTERVAL_MS;
|
|
127
|
+
if (!Number.isInteger(intervalMs) || intervalMs < MIN_SCRAPE_INTERVAL_MS || intervalMs > MAX_SCRAPE_INTERVAL_MS) {
|
|
128
|
+
logger.warn('Invalid scraping.intervalMs %d, defaulting to %d', intervalMs, DEFAULT_SCRAPE_INTERVAL_MS);
|
|
129
|
+
intervalMs = DEFAULT_SCRAPE_INTERVAL_MS;
|
|
130
|
+
}
|
|
131
|
+
// usageThreshold: default 50, range 1-100
|
|
132
|
+
let usageThreshold = s.usageThreshold ?? DEFAULT_USAGE_THRESHOLD;
|
|
133
|
+
if (!Number.isInteger(usageThreshold) || usageThreshold < 1 || usageThreshold > 100) {
|
|
134
|
+
logger.warn('Invalid scraping.usageThreshold %d, defaulting to %d', usageThreshold, DEFAULT_USAGE_THRESHOLD);
|
|
135
|
+
usageThreshold = DEFAULT_USAGE_THRESHOLD;
|
|
136
|
+
}
|
|
137
|
+
// accounts: filter invalid entries
|
|
138
|
+
const rawAccounts = Array.isArray(s.accounts) ? s.accounts : [];
|
|
139
|
+
const validAccounts = rawAccounts.filter((acc) => {
|
|
140
|
+
// null/not-object guard
|
|
141
|
+
if (!acc || typeof acc !== 'object')
|
|
142
|
+
return false;
|
|
143
|
+
// workspaceId must match wrk_[A-Za-z0-9]+
|
|
144
|
+
if (!isValidWorkspaceId(acc.workspaceId)) {
|
|
145
|
+
logger.warn('Invalid scraping account workspaceId "%s", filtering out', acc.workspaceId);
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
// authCookie must not be empty
|
|
149
|
+
if (!acc.authCookie || acc.authCookie.trim() === '') {
|
|
150
|
+
logger.warn('Invalid scraping account authCookie for "%s", filtering out', acc.workspaceId);
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
return true;
|
|
154
|
+
});
|
|
155
|
+
scraping = {
|
|
156
|
+
enabled,
|
|
157
|
+
intervalMs,
|
|
158
|
+
usageThreshold,
|
|
159
|
+
accounts: validAccounts,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
port,
|
|
164
|
+
host,
|
|
165
|
+
keys: validKeys,
|
|
166
|
+
circuitBreakerThreshold,
|
|
167
|
+
circuitBreakerCooldownMs,
|
|
168
|
+
upstreamBaseUrl,
|
|
169
|
+
requestTimeoutMs,
|
|
170
|
+
allowedOrigins,
|
|
171
|
+
scraping,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Load config from YAML file (default: config.yaml in cwd) or env vars.
|
|
176
|
+
*
|
|
177
|
+
* Priority order (highest to lowest):
|
|
178
|
+
* 1. CLI args (--config, --port, --host)
|
|
179
|
+
* 2. YAML config file
|
|
180
|
+
* 3. Environment variables
|
|
181
|
+
* 4. Hardcoded defaults
|
|
182
|
+
*/
|
|
183
|
+
export function loadConfig(configPath) {
|
|
184
|
+
const cliArgs = parseCliArgs();
|
|
185
|
+
const config = getBaseConfig();
|
|
186
|
+
applyEnvConfig(config);
|
|
187
|
+
const yamlPath = resolveYamlPath(cliArgs.config, configPath);
|
|
188
|
+
const yaml = loadYamlOverrides(yamlPath);
|
|
189
|
+
if (yaml)
|
|
190
|
+
applyYamlConfig(config, yaml);
|
|
191
|
+
const encryptionKey = process.env.OPENCODE_GO_ENCRYPTION_KEY;
|
|
192
|
+
if (encryptionKey) {
|
|
193
|
+
decryptConfigSecrets(config, encryptionKey);
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
assertNoEncryptedSecrets(config);
|
|
197
|
+
}
|
|
198
|
+
applyCliOverrides(config, cliArgs);
|
|
199
|
+
return validateConfig(config);
|
|
200
|
+
}
|
|
201
|
+
function getBaseConfig() {
|
|
202
|
+
return {
|
|
203
|
+
port: DEFAULT_PORT,
|
|
204
|
+
host: DEFAULT_HOST,
|
|
205
|
+
keys: [],
|
|
206
|
+
circuitBreakerThreshold: 3,
|
|
207
|
+
circuitBreakerCooldownMs: DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MS,
|
|
208
|
+
upstreamBaseUrl: DEFAULT_UPSTREAM_URL,
|
|
209
|
+
requestTimeoutMs: DEFAULT_REQUEST_TIMEOUT_MS,
|
|
210
|
+
allowedOrigins: ['http://localhost:*', 'http://127.0.0.1:*'],
|
|
211
|
+
scraping: undefined,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
function applyEnvConfig(config) {
|
|
215
|
+
if (process.env.PROXY_PORT) {
|
|
216
|
+
config.port = Number.parseInt(process.env.PROXY_PORT, 10);
|
|
217
|
+
}
|
|
218
|
+
if (process.env.PROXY_HOST) {
|
|
219
|
+
config.host = process.env.PROXY_HOST;
|
|
220
|
+
}
|
|
221
|
+
if (process.env.UPSTREAM_BASE_URL) {
|
|
222
|
+
config.upstreamBaseUrl = process.env.UPSTREAM_BASE_URL;
|
|
223
|
+
}
|
|
224
|
+
// Note: OPENCODE_GO_KEYS env var keys are always plaintext (CI/CD use case)
|
|
225
|
+
const envKeysRaw = process.env.OPENCODE_GO_KEYS;
|
|
226
|
+
if (envKeysRaw) {
|
|
227
|
+
config.keys = envKeysRaw.split(',').map((pair) => {
|
|
228
|
+
const colonIdx = pair.indexOf(':');
|
|
229
|
+
if (colonIdx === -1) {
|
|
230
|
+
return { label: pair.trim(), key: '' };
|
|
231
|
+
}
|
|
232
|
+
return {
|
|
233
|
+
label: pair.slice(0, colonIdx).trim(),
|
|
234
|
+
key: pair.slice(colonIdx + 1).trim(),
|
|
235
|
+
};
|
|
236
|
+
}).filter((k) => k.key.startsWith('sk-'));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
function resolveYamlPath(cliConfigArg, explicitPath) {
|
|
240
|
+
if (explicitPath)
|
|
241
|
+
return explicitPath;
|
|
242
|
+
if (cliConfigArg)
|
|
243
|
+
return cliConfigArg;
|
|
244
|
+
const defaultPath = getDefaultConfigPath();
|
|
245
|
+
if (existsSync(defaultPath))
|
|
246
|
+
return defaultPath;
|
|
247
|
+
if (existsSync('config.yaml')) {
|
|
248
|
+
logger.warn('Config loaded from current directory (config.yaml). Consider moving it to %s', defaultPath);
|
|
249
|
+
return 'config.yaml';
|
|
250
|
+
}
|
|
251
|
+
return defaultPath;
|
|
252
|
+
}
|
|
253
|
+
function loadYamlOverrides(yamlPath) {
|
|
254
|
+
if (!existsSync(yamlPath)) {
|
|
255
|
+
logger.info('No config file found at %s, using env/defaults', yamlPath);
|
|
256
|
+
return null;
|
|
257
|
+
}
|
|
258
|
+
try {
|
|
259
|
+
const raw = readFileSync(yamlPath, 'utf-8');
|
|
260
|
+
const yaml = parseYaml(raw);
|
|
261
|
+
logger.info('Loaded config from %s', yamlPath);
|
|
262
|
+
return yaml;
|
|
263
|
+
}
|
|
264
|
+
catch (err) {
|
|
265
|
+
logger.error({ err }, 'Failed to parse config file %s', yamlPath);
|
|
266
|
+
return null;
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
function applyYamlConfig(config, yaml) {
|
|
270
|
+
if (yaml.port !== undefined)
|
|
271
|
+
config.port = yaml.port;
|
|
272
|
+
if (yaml.host !== undefined)
|
|
273
|
+
config.host = yaml.host;
|
|
274
|
+
if (yaml.upstreamBaseUrl !== undefined)
|
|
275
|
+
config.upstreamBaseUrl = yaml.upstreamBaseUrl;
|
|
276
|
+
if (yaml.circuitBreakerThreshold !== undefined)
|
|
277
|
+
config.circuitBreakerThreshold = yaml.circuitBreakerThreshold;
|
|
278
|
+
if (yaml.circuitBreakerCooldownMs !== undefined)
|
|
279
|
+
config.circuitBreakerCooldownMs = yaml.circuitBreakerCooldownMs;
|
|
280
|
+
if (yaml.requestTimeoutMs !== undefined)
|
|
281
|
+
config.requestTimeoutMs = yaml.requestTimeoutMs;
|
|
282
|
+
if (yaml.allowedOrigins !== undefined)
|
|
283
|
+
config.allowedOrigins = yaml.allowedOrigins;
|
|
284
|
+
if (yaml.keys && yaml.keys.length > 0)
|
|
285
|
+
config.keys = yaml.keys;
|
|
286
|
+
if (yaml.scraping !== undefined) {
|
|
287
|
+
config.scraping = {
|
|
288
|
+
enabled: yaml.scraping.enabled ?? false,
|
|
289
|
+
intervalMs: yaml.scraping.intervalMs ?? DEFAULT_SCRAPE_INTERVAL_MS,
|
|
290
|
+
usageThreshold: yaml.scraping.usageThreshold ?? DEFAULT_USAGE_THRESHOLD,
|
|
291
|
+
accounts: yaml.scraping.accounts ?? [],
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
function decryptConfigSecrets(config, encryptionKey) {
|
|
296
|
+
config.keys = config.keys.map((k) => decryptApiKeyIfNeeded(k, encryptionKey));
|
|
297
|
+
if (config.scraping?.accounts) {
|
|
298
|
+
config.scraping.accounts = config.scraping.accounts.map((acc) => decryptAuthCookieIfNeeded(acc, encryptionKey));
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
function decryptApiKeyIfNeeded(entry, encryptionKey) {
|
|
302
|
+
if (!isEncryptedKey(entry.key))
|
|
303
|
+
return entry;
|
|
304
|
+
try {
|
|
305
|
+
return { ...entry, key: decryptKey(entry.key, encryptionKey) };
|
|
306
|
+
}
|
|
307
|
+
catch (err) {
|
|
308
|
+
logger.error('Failed to decrypt key "%s": %s', entry.label, err instanceof Error ? err.message : String(err));
|
|
309
|
+
throw new Error(`Failed to decrypt API key "${entry.label}" — check OPENCODE_GO_ENCRYPTION_KEY`);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
function decryptAuthCookieIfNeeded(acc, encryptionKey) {
|
|
313
|
+
if (!isEncryptedKey(acc.authCookie))
|
|
314
|
+
return acc;
|
|
315
|
+
try {
|
|
316
|
+
return { ...acc, authCookie: decryptKey(acc.authCookie, encryptionKey) };
|
|
317
|
+
}
|
|
318
|
+
catch (err) {
|
|
319
|
+
logger.error('Failed to decrypt authCookie for workspace "%s": %s', acc.workspaceId, err instanceof Error ? err.message : String(err));
|
|
320
|
+
throw new Error(`Failed to decrypt authCookie for workspace "${acc.workspaceId}" — check OPENCODE_GO_ENCRYPTION_KEY`);
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
function assertNoEncryptedSecrets(config) {
|
|
324
|
+
const encryptedKeys = config.keys.filter((k) => isEncryptedKey(k.key));
|
|
325
|
+
if (encryptedKeys.length > 0) {
|
|
326
|
+
throw new Error(`Found ${encryptedKeys.length} encrypted API key(s) but OPENCODE_GO_ENCRYPTION_KEY environment variable is not set`);
|
|
327
|
+
}
|
|
328
|
+
const encryptedCookies = config.scraping?.accounts?.filter((acc) => isEncryptedKey(acc.authCookie)) ?? [];
|
|
329
|
+
if (encryptedCookies.length > 0) {
|
|
330
|
+
throw new Error(`Found ${encryptedCookies.length} encrypted authCookie(s) but OPENCODE_GO_ENCRYPTION_KEY environment variable is not set`);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
function applyCliOverrides(config, cliArgs) {
|
|
334
|
+
if (cliArgs.port) {
|
|
335
|
+
config.port = Number.parseInt(cliArgs.port, 10);
|
|
336
|
+
}
|
|
337
|
+
if (cliArgs.host) {
|
|
338
|
+
config.host = cliArgs.host;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* constants.ts — Shared configuration constants for the proxy.
|
|
3
|
+
*
|
|
4
|
+
* All magic numbers and default values used across the codebase
|
|
5
|
+
* are centralized here to avoid duplication and improve maintainability.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_PORT = 3000;
|
|
8
|
+
export declare const DEFAULT_HOST = "127.0.0.1";
|
|
9
|
+
export declare const DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MS = 60000;
|
|
10
|
+
export declare const DEFAULT_REQUEST_TIMEOUT_MS = 30000;
|
|
11
|
+
export declare const DEFAULT_SCRAPE_INTERVAL_MS = 90000;
|
|
12
|
+
export declare const MIN_SCRAPE_INTERVAL_MS = 10000;
|
|
13
|
+
export declare const MAX_SCRAPE_INTERVAL_MS = 3600000;
|
|
14
|
+
export declare const MIN_KEY_LENGTH = 20;
|
|
15
|
+
export declare const API_KEY_PREFIX = "sk-";
|
|
16
|
+
export declare const DEFAULT_UPSTREAM_URL = "https://opencode.ai";
|
|
17
|
+
export declare const MAX_BODY_SIZE: number;
|
|
18
|
+
export declare const MAX_RETRIES = 2;
|
|
19
|
+
export declare const RATE_LIMIT_WINDOW_MS = 60000;
|
|
20
|
+
export declare const RATE_LIMIT_MAX = 100;
|
|
21
|
+
export declare const FORCE_SHUTDOWN_TIMEOUT_MS = 5000;
|
|
22
|
+
export declare const MAX_STREAMING_BUFFER = 10000;
|
|
23
|
+
export declare const DEFAULT_USAGE_THRESHOLD = 50;
|
|
24
|
+
export declare const WORKSPACE_ID_REGEX: RegExp;
|
|
25
|
+
export declare const OPENCODE_MODELS: Record<string, unknown>;
|