Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline (Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/* packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
68 lines
2.4 KiB
TypeScript
68 lines
2.4 KiB
TypeScript
import { execSync } from "node:child_process";
|
|
import { mkdtemp, rm } from "node:fs/promises";
|
|
import { tmpdir } from "node:os";
|
|
import path from "node:path";
|
|
import { loadRootEnv } from "@rakazo/core/node/load-root-env";
|
|
import { PostgreSqlContainer, type StartedPostgreSqlContainer } from "@testcontainers/postgresql";
|
|
|
|
async function main() {
|
|
loadRootEnv();
|
|
const runOpenRouter = Boolean(process.env.OPENROUTER_API_KEY);
|
|
if (!process.env.E2B_API_KEY && !process.env.BOX_API_KEY && !runOpenRouter) {
|
|
throw new Error(
|
|
"E2B_API_KEY, BOX_API_KEY, or OPENROUTER_API_KEY is required for live provider canaries",
|
|
);
|
|
}
|
|
|
|
const dataDir = await mkdtemp(path.join(tmpdir(), "rakazo-canary-"));
|
|
let postgres: StartedPostgreSqlContainer | undefined;
|
|
try {
|
|
if (runOpenRouter) postgres = await new PostgreSqlContainer("postgres:16-alpine").start();
|
|
const env = {
|
|
...process.env,
|
|
DATABASE_URL: postgres?.getConnectionUri() ?? "",
|
|
REALTIME_DATABASE_URL: postgres?.getConnectionUri() ?? "",
|
|
VERIFY_PROVIDERS: "1",
|
|
WAKEUP_DRIVER: "memory",
|
|
AGENT_RUNTIME: "pi",
|
|
SANDBOX_PROVIDER: "fake",
|
|
CLOUD_AGENT_PROVIDER: "emulator",
|
|
COMPOSIO_API_KEY: "",
|
|
CURSOR_API_KEY: "",
|
|
MAX_TOOL_CALLS_PER_TURN: "24",
|
|
BETTER_AUTH_SECRET: "provider-canary-auth-secret-at-least-32-characters",
|
|
ENCRYPTION_KEY: "provider-canary-encryption-key-at-least-32-characters",
|
|
SANDBOX_SUPERVISOR_TOKEN: "provider-canary-supervisor-token-at-least-32-characters",
|
|
SCREEN_PROXY_SECRET: "provider-canary-screen-proxy-secret-at-least-32-characters",
|
|
BETTER_AUTH_URL: "http://127.0.0.1:5173",
|
|
WEB_ORIGIN: "http://127.0.0.1:5173",
|
|
SIGNUPS_ENABLED: "true",
|
|
SIGNUP_ALLOWLIST: "",
|
|
DATA_DIR: dataDir,
|
|
};
|
|
if (postgres) {
|
|
execSync("pnpm --filter @rakazo/db generate", { stdio: "inherit", env });
|
|
execSync("pnpm --filter @rakazo/db exec prisma migrate deploy", {
|
|
stdio: "inherit",
|
|
env,
|
|
cwd: path.resolve("packages/db"),
|
|
});
|
|
}
|
|
execSync(
|
|
"pnpm exec vitest run --no-file-parallelism packages/testkit/src/providers.canary.test.ts packages/testkit/src/release-watch.canary.test.ts",
|
|
{ stdio: "inherit", env },
|
|
);
|
|
} finally {
|
|
try {
|
|
await postgres?.stop();
|
|
} finally {
|
|
await rm(dataDir, { recursive: true, force: true });
|
|
}
|
|
}
|
|
}
|
|
|
|
main().catch((error) => {
|
|
console.error(error);
|
|
process.exit(1);
|
|
});
|