Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion containers/api-proxy/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ COPY server.js logging.js metrics.js rate-limiter.js rate-limiter-window.js \
upstream-log.js upstream-retry.js upstream-token.js \
anthropic-cache.js otel.js otel-exporters.js otel-serialization.js \
token-budget-log.js blocked-request-diagnostics.js \
provider-env-constants.js provider-names.js \
provider-env-constants.js provider-env-constants.json provider-names.js \
model-api-mapping.js model-api-mapping.json ./
COPY guards/ ./guards/
COPY providers/ ./providers/
Expand Down
45 changes: 3 additions & 42 deletions containers/api-proxy/provider-env-constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,46 +3,7 @@
/**
* Environment variable name constants for the API proxy provider adapters.
*
* The TypeScript equivalent lives in src/api-proxy-env-constants.ts.
* Keep both files in sync; src/api-proxy-env-constants-sync.test.ts enforces parity.
* Single source of truth: provider-env-constants.json
* The TypeScript host re-exports from the same JSON via src/api-proxy-env-constants.ts.
*/

/** Environment variable names for the OpenAI provider adapter. */
const OPENAI_ENV = /** @type {const} */ ({
KEY: 'OPENAI_API_KEY',
TARGET: 'OPENAI_API_TARGET',
BASE_PATH: 'OPENAI_API_BASE_PATH',
AUTH_HEADER: 'AWF_OPENAI_AUTH_HEADER',
});

/** Environment variable names for the Anthropic provider adapter. */
const ANTHROPIC_ENV = /** @type {const} */ ({
KEY: 'ANTHROPIC_API_KEY',
TARGET: 'ANTHROPIC_API_TARGET',
BASE_PATH: 'ANTHROPIC_API_BASE_PATH',
AUTH_HEADER: 'AWF_ANTHROPIC_AUTH_HEADER',
});

/** Environment variable names for the Gemini provider adapter. */
const GEMINI_ENV = /** @type {const} */ ({
KEY: 'GEMINI_API_KEY',
TARGET: 'GEMINI_API_TARGET',
BASE_PATH: 'GEMINI_API_BASE_PATH',
});

/** Environment variable names for the Copilot provider adapter. */
const COPILOT_ENV = /** @type {const} */ ({
GITHUB_TOKEN: 'COPILOT_GITHUB_TOKEN',
PROVIDER_API_KEY: 'COPILOT_PROVIDER_API_KEY',
PROVIDER_TYPE: 'COPILOT_PROVIDER_TYPE',
PROVIDER_BASE_URL: 'COPILOT_PROVIDER_BASE_URL',
API_TARGET: 'COPILOT_API_TARGET',
API_BASE_PATH: 'COPILOT_API_BASE_PATH',
});

module.exports = {
OPENAI_ENV,
ANTHROPIC_ENV,
GEMINI_ENV,
COPILOT_ENV,
};
module.exports = require('./provider-env-constants.json');
27 changes: 27 additions & 0 deletions containers/api-proxy/provider-env-constants.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
{
"OPENAI_ENV": {
"KEY": "OPENAI_API_KEY",
"TARGET": "OPENAI_API_TARGET",
"BASE_PATH": "OPENAI_API_BASE_PATH",
"AUTH_HEADER": "AWF_OPENAI_AUTH_HEADER"
},
"ANTHROPIC_ENV": {
"KEY": "ANTHROPIC_API_KEY",
"TARGET": "ANTHROPIC_API_TARGET",
"BASE_PATH": "ANTHROPIC_API_BASE_PATH",
"AUTH_HEADER": "AWF_ANTHROPIC_AUTH_HEADER"
},
"GEMINI_ENV": {
"KEY": "GEMINI_API_KEY",
"TARGET": "GEMINI_API_TARGET",
"BASE_PATH": "GEMINI_API_BASE_PATH"
},
"COPILOT_ENV": {
"GITHUB_TOKEN": "COPILOT_GITHUB_TOKEN",
"PROVIDER_API_KEY": "COPILOT_PROVIDER_API_KEY",
"PROVIDER_TYPE": "COPILOT_PROVIDER_TYPE",
"PROVIDER_BASE_URL": "COPILOT_PROVIDER_BASE_URL",
"API_TARGET": "COPILOT_API_TARGET",
"API_BASE_PATH": "COPILOT_API_BASE_PATH"
}
}
2 changes: 1 addition & 1 deletion src/api-proxy-env-constants-sync.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ const providerEnvConstants = require('../containers/api-proxy/provider-env-const
};

describe('API proxy provider env constants', () => {
it('stays in sync between TypeScript host code and JS sidecar code', () => {
it('TypeScript host and JS sidecar both load from the same JSON source', () => {
expect(providerEnvConstants.OPENAI_ENV).toEqual(OPENAI_ENV);
expect(providerEnvConstants.ANTHROPIC_ENV).toEqual(ANTHROPIC_ENV);
expect(providerEnvConstants.GEMINI_ENV).toEqual(GEMINI_ENV);
Expand Down
37 changes: 7 additions & 30 deletions src/api-proxy-env-constants.ts
Original file line number Diff line number Diff line change
@@ -1,42 +1,19 @@
/**
* Environment variable name constants for the API proxy provider adapters.
*
* The CommonJS equivalent lives in containers/api-proxy/provider-env-constants.js.
* Keep both files in sync; src/api-proxy-env-constants-sync.test.ts enforces parity.
* Single source of truth: containers/api-proxy/provider-env-constants.json
* The CommonJS sidecar loads the same JSON via containers/api-proxy/provider-env-constants.js.
*/
import providerEnvConstants from '../containers/api-proxy/provider-env-constants.json';

/** Environment variable names for the OpenAI provider adapter. */
export const OPENAI_ENV = {
KEY: 'OPENAI_API_KEY',
TARGET: 'OPENAI_API_TARGET',
BASE_PATH: 'OPENAI_API_BASE_PATH',
AUTH_HEADER: 'AWF_OPENAI_AUTH_HEADER',
} as const;

export const OPENAI_ENV = providerEnvConstants.OPENAI_ENV;
/** Environment variable names for the Anthropic provider adapter. */
export const ANTHROPIC_ENV = {
KEY: 'ANTHROPIC_API_KEY',
TARGET: 'ANTHROPIC_API_TARGET',
BASE_PATH: 'ANTHROPIC_API_BASE_PATH',
AUTH_HEADER: 'AWF_ANTHROPIC_AUTH_HEADER',
} as const;

export const ANTHROPIC_ENV = providerEnvConstants.ANTHROPIC_ENV;
/** Environment variable names for the Gemini provider adapter. */
export const GEMINI_ENV = {
KEY: 'GEMINI_API_KEY',
TARGET: 'GEMINI_API_TARGET',
BASE_PATH: 'GEMINI_API_BASE_PATH',
} as const;

export const GEMINI_ENV = providerEnvConstants.GEMINI_ENV;
/** Environment variable names for the Copilot provider adapter. */
export const COPILOT_ENV = {
GITHUB_TOKEN: 'COPILOT_GITHUB_TOKEN',
PROVIDER_API_KEY: 'COPILOT_PROVIDER_API_KEY',
PROVIDER_TYPE: 'COPILOT_PROVIDER_TYPE',
PROVIDER_BASE_URL: 'COPILOT_PROVIDER_BASE_URL',
API_TARGET: 'COPILOT_API_TARGET',
API_BASE_PATH: 'COPILOT_API_BASE_PATH',
} as const;
export const COPILOT_ENV = providerEnvConstants.COPILOT_ENV;

/**
* OIDC authentication env var mappings.
Expand Down
Loading