mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-02 23:51:33 +00:00
* refactor(config): consolidate media model lists * refactor(config): unify memory configuration * refactor(config): consolidate TTS ownership * refactor(config): move typing policy to agents * refactor(config): retire product-level config surfaces * refactor(config): share scoped tool policy type * chore(config): refresh generated baselines * fix(config): honor agent typing overrides * fix(config): migrate sibling config consumers * refactor(infra): keep base64url decoder private * fix(config): strip invalid legacy TTS values * chore(config): refresh rebased baseline hash * fix(doctor): route legacy messages.tts.realtime voice to talk during tts move * refactor(config): polish final layout names * refactor(config): freeze retired tuning defaults * feat(config): add fast mode default symmetry * refactor(config): key agent entries by id * docs(config): update final layout reference * test(config): cover final layout migrations * chore(config): refresh final layout baselines * fix(config): align final layout runtime readers * fix(config): align remaining readers * fix(config): stabilize final layout migrations * fix(config): finalize config projection proof * fix(config): address final layout review * docs(release): preserve historical config names * fix(config): complete keyed agent migration * fix(config): close final migration gaps * fix(config): finish full-branch review * fix(config): complete runtime secret detection * fix(config): close final review findings * fix(config): finish canonical docs and heartbeat migration * fix(config): integrate latest main after rebase * refactor(env): isolate test-only controls * refactor(env): isolate build and development controls * refactor(env): collapse process identity indirection * refactor(env): remove duplicate config and temp aliases * docs(env): define the operator-facing allowlist * ci(env): ratchet production variable count * fix(env): remove stale provider helper import * fix(env): make ratchet sorting explicit * test(env): keep test seam in dead-code audit * test(env): cover ratchet growth and boundary; document surface budgets * docs(config): document tier-eval consolidations * docs(config): clarify speech preference ownership * test(memory): align retired tuning fixtures * refactor(memory): freeze engine heuristics * refactor(config): apply tier-eval tranche * refactor(tts): move persona shaping to providers * refactor(compaction): move prompt policy to providers * test(config): align hookified prompt fixtures * chore(deadcode): classify test-only exports * chore(github): remove unused spawn helper * chore(deadcode): classify queue diagnostics * chore(deadcode): remove unused lane snapshot export * chore(plugin-sdk): ratchet consolidated surface * fix(config): integrate latest main after rebase
79 lines
2.1 KiB
JavaScript
79 lines
2.1 KiB
JavaScript
// Writes config fixtures for Codex media-path E2E scenarios.
|
|
import fs from "node:fs";
|
|
import path from "node:path";
|
|
import { readPositiveIntEnv, readTcpPortEnv } from "./limits.mjs";
|
|
|
|
function requireEnv(name) {
|
|
const value = process.env[name];
|
|
if (!value) {
|
|
throw new Error(`missing ${name}`);
|
|
}
|
|
return value;
|
|
}
|
|
|
|
const configPath = requireEnv("OPENCLAW_CONFIG_PATH");
|
|
const stateDir = requireEnv("OPENCLAW_STATE_DIR");
|
|
const workspaceDir = requireEnv("OPENCLAW_TEST_WORKSPACE_DIR");
|
|
const token = requireEnv("OPENCLAW_GATEWAY_TOKEN");
|
|
const timeoutSeconds = readPositiveIntEnv("OPENCLAW_CODEX_MEDIA_PATH_TIMEOUT_SECONDS", 180);
|
|
const gatewayPort = readTcpPortEnv("PORT", 18790);
|
|
|
|
const config = {
|
|
gateway: {
|
|
port: gatewayPort,
|
|
bind: "loopback",
|
|
auth: { mode: "token", token },
|
|
controlUi: { enabled: false },
|
|
},
|
|
plugins: {
|
|
enabled: true,
|
|
allow: ["codex"],
|
|
entries: {
|
|
codex: {
|
|
enabled: true,
|
|
config: {
|
|
appServer: {
|
|
mode: "yolo",
|
|
command: "node",
|
|
args: ["scripts/e2e/lib/codex-media-path/fake-codex-app-server.mjs"],
|
|
requestTimeoutMs: timeoutSeconds * 1000,
|
|
turnCompletionIdleTimeoutMs: timeoutSeconds * 1000,
|
|
},
|
|
},
|
|
},
|
|
},
|
|
},
|
|
agents: {
|
|
defaults: {
|
|
model: { primary: "openai/gpt-5.6-luna", fallbacks: [] },
|
|
models: {
|
|
"openai/gpt-5.6-luna": {
|
|
agentRuntime: { id: "codex" },
|
|
},
|
|
},
|
|
workspace: workspaceDir,
|
|
skipBootstrap: true,
|
|
timeoutSeconds,
|
|
sandbox: { mode: "off" },
|
|
},
|
|
entries: {
|
|
main: {
|
|
default: true,
|
|
model: { primary: "openai/gpt-5.6-luna", fallbacks: [] },
|
|
models: {
|
|
"openai/gpt-5.6-luna": {
|
|
agentRuntime: { id: "codex" },
|
|
},
|
|
},
|
|
workspace: workspaceDir,
|
|
},
|
|
},
|
|
},
|
|
skills: { allowBundled: [] },
|
|
};
|
|
|
|
fs.mkdirSync(path.dirname(configPath), { recursive: true });
|
|
fs.mkdirSync(workspaceDir, { recursive: true });
|
|
fs.writeFileSync(configPath, `${JSON.stringify(config, null, 2)}\n`);
|
|
fs.mkdirSync(path.join(stateDir, "logs"), { recursive: true });
|