diff --git a/packages/tiny-agents/src/cli.ts b/packages/tiny-agents/src/cli.ts index e1a0007db4..4197e6427c 100644 --- a/packages/tiny-agents/src/cli.ts +++ b/packages/tiny-agents/src/cli.ts @@ -117,23 +117,26 @@ async function main() { } if ((server.type === "http" || server.type === "sse") && server.headers) { for (const [key, value] of Object.entries(server.headers)) { - if (value.includes(envSpecialValue)) { + if (value === envSpecialValue) { inputVars.add(key); } } } } + if (config.apiKey?.includes(envSpecialValue)) { + inputVars.add("apiKey"); + } + if (inputVars.size === 0) { stdout.write(ANSI.YELLOW); - stdout.write(`Input ${inputId} defined in config but not used by any server.`); + stdout.write(`Input ${inputId} defined in config but not used by any server or as an API key. Skipping.`); stdout.write(ANSI.RESET); stdout.write("\n"); continue; } - - // Prompt user for input const envVariableKey = inputId.replaceAll("-", "_").toUpperCase(); + // Prompt user for input stdout.write(ANSI.BLUE); stdout.write(` • ${inputId}`); stdout.write(ANSI.RESET); @@ -141,56 +144,44 @@ async function main() { stdout.write("\n"); const userInput = (await rl.question("")).trim(); + const valueFromEnv = process.env[envVariableKey] || ""; + const finalValue = userInput || valueFromEnv; + + if (!userInput) { + if (valueFromEnv) { + stdout.write(ANSI.GREEN); + stdout.write(`Value successfully loaded from '${envVariableKey}'`); + stdout.write(ANSI.RESET); + stdout.write("\n"); + } else { + stdout.write(ANSI.YELLOW); + stdout.write(`No value found for '${envVariableKey}' in environment variables. Continuing.`); + stdout.write(ANSI.RESET); + stdout.write("\n"); + } + } // Inject user input (or env variable) into servers' env for (const server of config.servers) { if (server.type === "stdio" && server.env) { for (const [key, value] of Object.entries(server.env)) { if (value === envSpecialValue) { - if (userInput) { - server.env[key] = userInput; - } else { - const valueFromEnv = process.env[envVariableKey] || ""; - server.env[key] = valueFromEnv; - if (valueFromEnv) { - stdout.write(ANSI.GREEN); - stdout.write(`Value successfully loaded from '${envVariableKey}'`); - stdout.write(ANSI.RESET); - stdout.write("\n"); - } else { - stdout.write(ANSI.YELLOW); - stdout.write(`No value found for '${envVariableKey}' in environment variables. Continuing.`); - stdout.write(ANSI.RESET); - stdout.write("\n"); - } - } + server.env[key] = value.replace(envSpecialValue, finalValue); } } } if ((server.type === "http" || server.type === "sse") && server.headers) { for (const [key, value] of Object.entries(server.headers)) { - if (value.includes(envSpecialValue)) { - if (userInput) { - server.headers[key] = value.replace(envSpecialValue, userInput); - } else { - const valueFromEnv = process.env[envVariableKey] || ""; - server.headers[key] = value.replace(envSpecialValue, valueFromEnv); - if (valueFromEnv) { - stdout.write(ANSI.GREEN); - stdout.write(`Value successfully loaded from '${envVariableKey}'`); - stdout.write(ANSI.RESET); - stdout.write("\n"); - } else { - stdout.write(ANSI.YELLOW); - stdout.write(`No value found for '${envVariableKey}' in environment variables. Continuing.`); - stdout.write(ANSI.RESET); - stdout.write("\n"); - } - } + if (value === envSpecialValue) { + server.headers[key] = value.replace(envSpecialValue, finalValue); } } } } + + if (config.apiKey?.includes(envSpecialValue)) { + config.apiKey = config.apiKey.replace(envSpecialValue, finalValue); + } } stdout.write("\n");