/** * envVarsOverride を spawn 系 API (node-pty / child_process) に流す前に * 適用する agent 側の防御フィルタ。 * * - api 側 `AgentEnvVarsService` が同等の denylist を持つが、API 側 regression * や別経路で envVars が流入したケースに備えた二層防御。 * - 形式チェック (大文字英数字 + `_`、先頭は文字または `_`) を agent 側でも実施。 * - 非文字列・空文字値の skip も統一。 * * 注意: ここで列挙する denylist は API 側 * `src/agent/utils/env-var-name-guard.ts`(`AgentEnvVarsService` から利用)の * `DENYLIST_EXACT` / `DENYLIST_PREFIX` と同期する必要がある。 * * 補足: chat 実行経路(`commands/cli-runner-env.ts` の `applyEnvVarsOverride`)は * このフィルタを通らないため、そこでは api 側 denylist が唯一の防御になる。 * 逆に api 側だけに項目を足すと本ファイルとの片側ドリフトになる。 */ /** * セッション起動時に注入する env を都度取得するための provider。 * * 関数として渡すのは、Web 設定の更新(heartbeat 経由の config sync)が * agent プロセス起動後に到着し、PTY / code-server を spawn するタイミングで * 最新値を反映するため。 */ export type EnvVarsProvider = () => Record | undefined; export interface EnvVarsFilterContext { /** ログプレフィックス (例: "[terminal]" / "[vscode-server]") */ prefix: string; } /** * envVarsOverride をフィルタして spawn に流す env マップを返す。 * * 入力に含まれるキーのうち、形式不正・denylist 該当・空文字/非文字列・ * 保護対象の env はすべて skip し、安全なものだけを Record に集約する。 * * 結果は呼び出し側で「process.env / safeEnv に上書きマージするレイヤー」 * として使用する想定。 */ export declare function filterEnvVarsOverride(envVars: Record | undefined, ctx: EnvVarsFilterContext): Record; //# sourceMappingURL=env-vars-filter.d.ts.map