forked from bai/curriculum-project-hub
feat: secure organization provider credentials
This commit is contained in:
@@ -56,7 +56,8 @@ export interface RunRequest {
|
||||
readonly model: string | undefined;
|
||||
readonly project: ProjectContext;
|
||||
readonly systemPrompt: string | undefined;
|
||||
readonly providerEnv?: Record<string, string | undefined> | undefined;
|
||||
/** Run-scoped loopback proxy capability; never an Organization provider credential. */
|
||||
readonly providerProxyEnv?: Record<string, string | undefined> | undefined;
|
||||
readonly resumeSessionId?: string | undefined;
|
||||
/**
|
||||
* RoleEntry.tools from admin/runtime settings. Values are Hub role tool ids
|
||||
@@ -125,7 +126,7 @@ export async function runAgent(req: RunRequest): Promise<RunResult> {
|
||||
const security = await createAgentSecurityPolicy({
|
||||
workspaceRoot,
|
||||
workspaceDir: req.project.workspaceDir,
|
||||
providerEnv: req.providerEnv,
|
||||
providerProxyEnv: req.providerProxyEnv,
|
||||
});
|
||||
|
||||
type QueryOptions = NonNullable<Parameters<typeof query>[0]["options"]>;
|
||||
|
||||
@@ -29,7 +29,8 @@ const SANDBOX_HIDDEN_ENV_KEYS = [
|
||||
export interface AgentSecurityInput {
|
||||
readonly workspaceRoot: string;
|
||||
readonly workspaceDir: string;
|
||||
readonly providerEnv?: Readonly<Record<string, string | undefined>> | undefined;
|
||||
/** Run-scoped loopback proxy capability; customer provider secrets are forbidden here. */
|
||||
readonly providerProxyEnv?: Readonly<Record<string, string | undefined>> | undefined;
|
||||
readonly hostEnv?: Readonly<Record<string, string | undefined>> | undefined;
|
||||
}
|
||||
|
||||
@@ -103,7 +104,7 @@ export async function createAgentSecurityPolicy(input: AgentSecurityInput): Prom
|
||||
env.DO_NOT_TRACK = "1";
|
||||
env.CLAUDE_AGENT_SDK_CLIENT_APP = "cph-hub/0.0.0";
|
||||
|
||||
for (const [name, value] of Object.entries(input.providerEnv ?? {})) {
|
||||
for (const [name, value] of Object.entries(input.providerProxyEnv ?? {})) {
|
||||
if (!PROVIDER_ENV_KEYS.has(name)) {
|
||||
throw new Error(`unsupported provider environment variable: ${name}`);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user