Some checks failed
Test examples / Test Examples (20) (push) Has been cancelled
Test examples / Test Examples (22) (push) Has been cancelled
Lock Threads / action (push) Has been cancelled
Trigger Release / start (push) Has been cancelled
Stale issue handler / stale (push) Has been cancelled
Update Font Data / create-pull-request (push) Has been cancelled
build-and-deploy / deploy-target (push) Has been cancelled
build-and-deploy / build (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-musl - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-unknown-linux-gnu - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-pc-windows-msvc - node@16 (push) Has been cancelled
build-and-deploy / stable - aarch64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / stable - x86_64-apple-darwin - node@16 (push) Has been cancelled
build-and-deploy / build-wasm (nodejs) (push) Has been cancelled
build-and-deploy / build-wasm (web) (push) Has been cancelled
build-and-deploy / Deploy preview tarball (push) Has been cancelled
build-and-deploy / Potentially publish release (push) Has been cancelled
build-and-deploy / publish-turbopack-npm-packages (push) Has been cancelled
build-and-deploy / Deploy examples (push) Has been cancelled
build-and-deploy / thank you, build (push) Has been cancelled
build-and-deploy / Upload Turbopack Bytesize metrics to Datadog (push) Has been cancelled
Rspack Next.js development integration tests / Rspack integration tests (push) Has been cancelled
Rspack Next.js production integration tests / Rspack integration tests (push) Has been cancelled
Turbopack Next.js development integration tests / Next.js integration tests (push) Has been cancelled
Turbopack Next.js production integration tests / Next.js integration tests (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack development test manifest (push) Has been cancelled
Update Rspack test manifest / Update and upload Rspack production test manifest (push) Has been cancelled
Upload bundler test manifests to areweturboyet.com / Upload test results (push) Has been cancelled
Update React / create-pull-request (push) Has been cancelled
test-e2e-project-reset-cron / reset-test-project (push) Has been cancelled
Notify about the top 15 issues/PRs/feature requests (most reacted) in the last 90 days / run (push) Has been cancelled
53 lines
1.7 KiB
TypeScript
53 lines
1.7 KiB
TypeScript
import { readFileSync } from 'node:fs'
|
|
import type { Sandbox } from '@vercel/agent-eval'
|
|
|
|
/**
|
|
* Install the locally-built Next.js into the sandbox.
|
|
*
|
|
* The tarball path comes from run-evals.js via NEXT_EVAL_TARBALL, the same
|
|
* env-var handoff that run-tests.js uses for NEXT_TEST_PKG_PATHS. We hard-fail
|
|
* if it's missing rather than falling back to npm — silently testing the
|
|
* published canary instead of your local build defeats the point.
|
|
*/
|
|
export async function installNextJs(sandbox: Sandbox): Promise<void> {
|
|
const tarball = process.env.NEXT_EVAL_TARBALL
|
|
if (!tarball) {
|
|
throw new Error(
|
|
'NEXT_EVAL_TARBALL not set. Run evals via `pnpm eval` from the repo root.'
|
|
)
|
|
}
|
|
await sandbox.writeFiles({
|
|
// @ts-expect-error — upstream types writeFiles as Record<string, string>
|
|
// but the runtime accepts Buffer. Tarballs are binary; can't send as string.
|
|
'next.tgz': readFileSync(tarball),
|
|
})
|
|
const { exitCode, stderr } = await sandbox.runCommand('npm', [
|
|
'install',
|
|
'./next.tgz',
|
|
])
|
|
if (exitCode !== 0) {
|
|
throw new Error(
|
|
`npm install ./next.tgz failed (exit ${exitCode}):\n${stderr}`
|
|
)
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Write AGENTS.md (and aliases) to the sandbox root, directing agents to read
|
|
* bundled docs from node_modules/next/dist/docs/.
|
|
*/
|
|
export async function writeAgentsMd(sandbox: Sandbox): Promise<void> {
|
|
const body = `<!-- BEGIN:nextjs-agent-rules -->
|
|
|
|
# Next.js: ALWAYS read docs before coding
|
|
|
|
Before any Next.js work, find and read the relevant doc in \`node_modules/next/dist/docs/\`. Your training data is outdated — the docs are the source of truth.
|
|
|
|
<!-- END:nextjs-agent-rules -->
|
|
`
|
|
await sandbox.writeFiles({
|
|
'AGENTS.md': body,
|
|
'CLAUDE.md': '@AGENTS.md\n',
|
|
})
|
|
}
|