Skip to content

Background dev server for AI coding agents#16610

Merged
matthewp merged 28 commits into
nextfrom
background-dev
Jun 5, 2026
Merged

Background dev server for AI coding agents#16610
matthewp merged 28 commits into
nextfrom
background-dev

Conversation

@matthewp
Copy link
Copy Markdown
Contributor

@matthewp matthewp commented May 5, 2026

Changes

Implements RFC: astro dev --background. When an AI coding agent is detected (via am-i-vibing), astro dev automatically starts the dev server as a detached background process so it doesn't block the agent's terminal.

  • Adds astro dev --background flag and astro dev stop, astro dev status, and astro dev logs subcommands for managing background dev servers
  • Writes a lock file (.astro/dev.json) on server start to prevent duplicate servers and enable the subcommands to find the running instance
  • Adds a /_astro/status health endpoint for programmatic readiness checks
  • astro dev logs --follow streams new log output as it's written, exits when the server dies
  • astro dev stop and astro dev --background --force escalate to SIGKILL if the process doesn't exit within 5 seconds of SIGTERM
  • Reports detected agent id, name, and type in ASTRO_CLI_SESSION_STARTED telemetry events for all CLI commands

No action required from users. If no agent is detected, astro dev behaves exactly as before.

Testing

  • Unit tests for lock file parsing, serialization, stale detection, and CLI output formatters (test/units/dev/lockfile.test.ts, test/units/dev/dev-output.test.ts)

Docs

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented May 5, 2026

🦋 Changeset detected

Latest commit: 105a113

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 401 packages
Name Type
astro Major
@e2e/astro-linked-lib Patch
@e2e/actions-blog Patch
@e2e/actions-react-19 Patch
@e2e/astro-component Patch
@e2e/astro-envs Patch
@e2e/astro-island-hydration-error Patch
@test/astro-cloudflare-node-prerender-mdx Patch
@test/astro-cloudflare Patch
@e2e/content-collections Patch
@e2e/csp-server-islands Patch
@e2e/css Patch
@test/custom-client-directives Patch
@e2e/dev-toolbar Patch
@e2e/error-cyclic Patch
@e2e/error-sass Patch
@e2e/errors Patch
@e2e/hydration-race Patch
@e2e/i18n Patch
@test/nested-style-bug-e22e Patch
@e2e/preact-compat-component Patch
@e2e/preact-component Patch
@e2e/preact-lazy-component Patch
@e2e/prefetch Patch
@e2e/react-component Patch
@e2e/server-islands-key Patch
@e2e/server-islands Patch
@e2e/solid-circular Patch
@e2e/solid-component Patch
@e2e/solid-recurse Patch
@e2e/svelte-component Patch
@e2e/e2e-tailwindcss Patch
@e2e/ts-resolution Patch
@e2e/view-transitions Patch
@e2e/vite-virtual-modules Patch
@e2e/vue-component Patch
@performance/md Patch
@performance/mdoc Patch
@performance/mdx Patch
@test/0-css Patch
fake-astro-library Patch
@test/actions Patch
@test/alias-path-alias-style Patch
@test/ts-paths-no-baseurl Patch
@test/aliases-tsconfig Patch
@test/aliases Patch
@test/api-routes Patch
@test/asset-query-params-chunks Patch
@test/asset-url-base Patch
@test/astro-pages Patch
@test/astro-assets-prefix Patch
@test/astro-assets Patch
@test/astro-basic Patch
@test/astro-check-errors Patch
@test/astro-check-no-errors Patch
@test/astro-check-watch Patch
@test/astro-children Patch
@test/astro-client-only Patch
@test/astro-component-bundling Patch
@test/astro-component-code Patch
@test/astro-css-bundling Patch
@test/astro-dev-headers Patch
@test/astro-dev-http2 Patch
@test/astro-directives Patch
@test/astro-doctype Patch
@test/astro-dynamic Patch
@test/astro-env-content-collections Patch
@test/astro-env-required-public Patch
@test/astro-env-server-fail Patch
@test/astro-env-server-secret Patch
@test/astro-env Patch
@test/astro-envs Patch
@test/astro-expr Patch
@test/astro-get-static-paths Patch
@test/astro-head Patch
@test/astro-manifest-client-script Patch
@test/astro-manifest-invalid Patch
@test/astro-manifest Patch
@test/astro-markdown-frontmatter-injection Patch
@test/astro-markdown-plugins Patch
@test/astro-markdown-remarkRehype Patch
@test/astro-markdown-skiki-default-color Patch
@test/astro-markdown-skiki-langs Patch
@test/astro-markdown-skiki-themes-custom Patch
@test/astro-markdown-skiki-themes-integrated Patch
@test/astro-markdown-skiki-wrap-false Patch
@test/astro-markdown-skiki-wrap-null Patch
@test/astro-markdown-skiki-wrap-true Patch
@test/astro-markdown-url Patch
@test/astro-markdown Patch
@test/astro-mode Patch
@test/astro-page-directory-url Patch
@test/astro-partial-html Patch
@test/astro-preview-allowed-hosts Patch
@test/astro-preview-headers Patch
@test/astro-public Patch
@test/astro-script-template-dedup Patch
@test/astro-scripts Patch
@test/astro-slots-nested Patch
@test/concurrency Patch
@test/build-readonly-file Patch
@test/cache-memory-query-include Patch
@test/cache-memory-query Patch
@test/cache-route Patch
@test/client-address-node Patch
@test/code-component Patch
@test/component-library Patch
@test/config-vite-css-target Patch
@test/config-vite Patch
@test/react-container Patch
@test/content-with-spaces-in-folder-name Patch
@test/content-collection-picture-render Patch
@example/content-collection-references Patch
@test/content-collection-tla-svg Patch
@test/content-collections-base Patch
@test/content-collections-empty-dir Patch
@test/content-collections-empty-md-file Patch
@test/content-collections-mutation Patch
@test/content-collections-number-id Patch
@test/content-collections-type-inference Patch
@test/content-collections-with-config-mjs Patch
@test/content-collections Patch
@test/content-frontmatter Patch
@test/content-intellisense Patch
@test/content-layer-loader-schema-function Patch
@test/content-layer-remark-plugins Patch
@test/content-layer Patch
@test/content-ssr-integration Patch
@test/content-static-paths-integration Patch
@test/content Patch
@test/core-image-data-url Patch
@test/core-image-deletion-ssr Patch
@test/core-image-deletion Patch
@test/core-image-errors Patch
@test/core-image-fs-config Patch
@test/core-image-remark-infersize Patch
@test/core-image-layout Patch
@test/core-image-picture-emit-file Patch
@test/core-image-remark-imgattr Patch
@test/core-image-ssg Patch
@test/core-image-ssr Patch
@test/core-image-svg-in-client Patch
@test/core-image-svg Patch
@test/core-image-unconventional-settings Patch
@test/core-image Patch
@test/csp-adapter Patch
@test/csp-fonts Patch
@test/csp Patch
@test/css-assets Patch
@test/css-dangling-references Patch
@test/css-deduplication Patch
@test/css-double-bundle Patch
@test/css-dynamic-import-dev Patch
@test/css-import-as-inline Patch
@test/css-inline-stylesheets Patch
@test/css-no-code-split Patch
@test/css-pure-chunk-query-params Patch
@test/custom-404-injected-from-dep Patch
@test/custom-404-pkg Patch
custom-fetch-error-pages Patch
@test/custom-renderer Patch
@test/data-collections-schema Patch
@test/data-collections Patch
@test/debug-component Patch
@test/dev-container Patch
@test/dev-render Patch
@test/dev-request-url Patch
@test/dynamic-endpoint-collision Patch
@test/dynamic-route-build-file Patch
@test/endpoint-routing Patch
@test/error-bad-js Patch
@test/error-build-location Patch
@test/error-non-error Patch
@test/extension-matching Patch
@test/fetch Patch
@test/fonts Patch
@test/astro-fontsource-package Patch
@test/get-static-paths-pages Patch
@test/glob-pages-css Patch
@test/head-propagation-prerender-env Patch
@test/hmr-markdown Patch
@test/hmr-new-page Patch
@test/hmr-slots-render Patch
@test/hoisted-imports Patch
@test/html-component Patch
@test/html-escape Patch
@test/html-page Patch
@test/html-slots Patch
@test/hydration-race Patch
@test/i18n-client-import Patch
@test/i18n-css-leak-basic Patch
@test/import-ts-with-js Patch
@test/impostor-md-file Patch
@test/integration-add-page-extension Patch
@test/integration-server-setup Patch
@test/jsx-queue-rendering Patch
@test/large-array-solid Patch
@test/legacy-collections-backwards-compat Patch
@test/lightningcss-scoped-nesting Patch
@test/live-loaders Patch
@test/markdown Patch
@test/middleware-dev Patch
@test/middleware-full-ssr Patch
@test/middleware-no-user-middlewaqre Patch
@test/middleware-tailwind Patch
@test/minification-html-jsx Patch
@test/minification-html Patch
@test/non-ascii-path Patch
@test/non-html-pages Patch
@test/page-format Patch
@test/page-level-styles Patch
@test/parallel-components Patch
@test/partials-css-boundary Patch
@test/partials Patch
@test/passthrough-image-service Patch
@test/postcss Patch
@test/preact-compat-component Patch
@test/preact-component Patch
@test/queue-rendering Patch
@test/remote-css Patch
@test/request-signal Patch
@test/reuse-injected-entrypoint Patch
@test/root-srcdir-css Patch
@test/scoped-style-strategy Patch
@test/server-entry-fake-adapter Patch
@test/server-entry Patch
@test/server-islands-hybrid Patch
@test/server-islands-ssr Patch
@test/sessions Patch
@test/slots-preact Patch
@test/slots-react Patch
@test/slots-solid Patch
@test/slots-svelte Patch
@test/slots-vue Patch
@test/solid-component Patch
@test/sourcemap Patch
@test/space-in-folder-name Patch
@test/special-chars-in-component-imports Patch
@test/ssr-api-route Patch
@test/ssr-assets Patch
@test/ssr-dynamic Patch
@test/ssr-partytown Patch
@test/ssr-prerender-get-static-paths Patch
@test/ssr-prerender Patch
@test/ssr-preview Patch
@test/ssr-renderers-static-vue Patch
@test/ssr-request Patch
@test/ssr-hoisted-script Patch
@test/ssr-scripts Patch
@test/static-build-code-component Patch
@test/static-build-dir Patch
@test/static-build-frameworks Patch
@test/static-build-page-url-format Patch
@test/static-build-ssr Patch
@test/static-build Patch
@test/static-redirect Patch
@test/svelte-component Patch
@test/svg-deduplication Patch
@test/tailwindcss Patch
@e2e/third-party-astro Patch
@test/url-import-suffix Patch
@test/view-transitions Patch
@test/virtual-astro-file Patch
@test/vitest Patch
@test/vue-component Patch
@test/vue-with-multi-renderer Patch
@test/db-aliases Patch
@test/db-db-in-src Patch
@test/error-handling Patch
@test/db-integration-only Patch
@test/db-integration Patch
@test/db-libsql-remote Patch
@test/db-local-prod Patch
@test/db-no-apptoken Patch
@test/db-no-seed Patch
@test/recipes Patch
@test/db-static-remote Patch
@test/alpinejs-basics Patch
@test/alpinejs-directive Patch
@test/alpinejs-plugin-script-import Patch
@test/astro-cloudflare-allowed-hosts Patch
@test/astro-cloudflare-astro-dev-platform Patch
@test/astro-cloudflare-astro-env Patch
@test/astro-cloudflare-binding-image-service Patch
@test/astro-cloudflare-cache-provider-wait-until Patch
@test/astro-cloudflare-client-address Patch
@test/astro-cloudflare-compile-image-service Patch
@test/astro-cloudflare-custom-entryfile Patch
@test/astro-cloudflare-dev-image-endpoint Patch
@test/astro-cloudflare-external-image-service Patch
@test/astro-cloudflare-external-redirects Patch
@test/astro-cloudflare-internal-redirects Patch
@test/astro-cloudflare-no-output Patch
@test/astro-cloudflare-prerender-node-env Patch
@test/astro-cloudflare-prerender-queue-consumers Patch
@test/astro-cloudflare-prerender-styles Patch
@test/astro-cloudflare-prerenderer-errors Patch
@test/routing-priority-cloudflare Patch
@test/cf-server-entry Patch
@test/astro-cloudflare-server-island-prerender-framework Patch
@test/astro-cloudflare-sql-import Patch
@test/cf-ssr-deps Patch
@test/astro-cloudflare-static Patch
@test/astro-cloudflare-svelte-rune-deps Patch
@test/astro-cloudflare-top-level-return Patch
@test/cf-user-optimize-deps Patch
@test/astro-cloudflare-vite-plugin Patch
@test/astro-cloudflare-with-base Patch
@test/astro-cloudflare-with-react Patch
@test/astro-cloudflare-with-solid-js Patch
@test/astro-cloudflare-with-svelte Patch
@test/astro-cloudflare-with-vue Patch
@test/astro-cloudflare-wrangler-preview-platform Patch
@test/markdoc-content-collections Patch
@test/content-layer-markdoc Patch
@test/headings-custom Patch
@test/headings Patch
@test/image-assets-custom Patch
@test/image-assets Patch
@test/markdoc-propagated-assets Patch
@test/markdoc-render-with-space Patch
@test/markdoc-render-html Patch
@test/markdoc-render-null Patch
@test/markdoc-render-partials Patch
@test/markdoc-render-simple Patch
@test/markdoc-render-table-attrs Patch
@test/markdoc-render-typographer Patch
@test/markdoc-render-with-components Patch
@test/markdoc-render-with-config Patch
@test/markdoc-render-with-extends-components Patch
@test/markdoc-render-with-indented-components Patch
@test/markdoc-render-with-transform Patch
@test/markdoc-variables Patch
@test/content-layer-rendering Patch
@test/mdx-css-head-mdx Patch
@test/image-remark-imgattr Patch
@test/mdx-astro-container-escape Patch
@test/mdx-frontmatter-injection Patch
@test/netlify-skew-protection Patch
@test/netlify-hosted-astro-project Patch
@test/nodejs-api-route Patch
@test/nodejs-badurls Patch
@test/nodejs-encoded Patch
@test/nodejs-errors Patch
@test/nodejs-headers Patch
@test/nodejs-image Patch
@test/locals Patch
@test/node-middleware Patch
@test/nodejs-prerender-404-500 Patch
@test/nodejs-prerender Patch
@test/nodejs-prerendered-error-page-fetch Patch
@test/nodejs-preview-headers Patch
@test/redirects Patch
@test/node-sessions Patch
@test/ssr-assets-middleware Patch
@test/node-static-headers Patch
@test/node-trailingslash Patch
@test/url Patch
@test/well-known-locations Patch
@test/react-component Patch
@test/sitemap-chunks Patch
@test/sitemap-dynamic Patch
@test/sitemap-i18n-fallback Patch
@test/sitemap-ssr Patch
@test/sitemap-static Patch
@test/sitemap-trailing-slash Patch
async-rendering Patch
conditional-rendering Patch
@test/empty-class Patch
svelte-prop-types Patch
@test/astro-vercel-basic Patch
@test/astro-vercel-image Patch
@test/astro-vercel-integration-assets Patch
@test/vercel-isr Patch
@test/vercel-max-duration Patch
@test/vercel-edge-middleware-with-edge-file Patch
@test/vercel-edge-middleware-without-edge-file Patch
@test/astro-vercel-no-output Patch
@test/astro-vercel-prerendered-error-pages Patch
@test/astro-vercel-redirects-serverless Patch
@test/astro-vercel-redirects Patch
@test/vercel-server-islands Patch
@test/astro-vercel-serverless-prerender Patch
@test/astro-vercel-serverless-with-dynamic-routes Patch
@test/astro-vercel-static-assets Patch
@test/vercel-static-headers Patch
@test/astro-vercel-static Patch
@test/vercel-streaming Patch
@test/astro-vercel-with-web-analytics-enabled-output-as-static Patch
vercel-hosted-astro-project Patch
@test/vue-app-entrypoint-async Patch
@test/vue-app-entrypoint-css Patch
@test/vue-app-entrypoint-no-export-default Patch
@test/vue-app-entrypoint-relative Patch
@test/vue-app-entrypoint-src-absolute Patch
@test/vue-app-entrypoint Patch
@test/vue-basics Patch
vue-prop-types Patch
astro-benchmark Patch
@benchmark/adapter Major
@benchmark/timer Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions Bot added pkg: astro Related to the core `astro` package (scope) semver: minor Change triggers a `minor` release labels May 5, 2026
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is blocked because it contains a minor changeset. A reviewer will merge this at the next release if approved.

@github-actions github-actions Bot removed the semver: minor Change triggers a `minor` release label May 5, 2026
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented May 5, 2026

Merging this PR will degrade performance by 84.2%

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

❌ 3 regressed benchmarks
✅ 15 untouched benchmarks

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
Simulation Build: hybrid site (static + server) 1.7 s 9.9 s -82.68%
Simulation Build: full static site 784.3 ms 4,928.3 ms -84.09%
Simulation Build: full server site 1.6 s 10 s -84.2%

Comparing background-dev (06744ad) with next (e322c24)1

Open in CodSpeed

Footnotes

  1. No successful run was found on next (2ffa0ba) during the generation of this report, so 3bb8450 was used instead as the comparison base. There might be some changes unrelated to this pull request in this report.

@matthewp matthewp changed the title Experimental background dev server WIP: Experimental background dev server May 5, 2026
@matthewp matthewp added the pr preview Apply this label to a PR to generate a preview release label May 5, 2026
@github-actions github-actions Bot removed the pr preview Apply this label to a PR to generate a preview release label May 5, 2026
@pkg-pr-new
Copy link
Copy Markdown

pkg-pr-new Bot commented May 5, 2026

npm i https://pkg.pr.new/astro@16610
npm i https://pkg.pr.new/@astrojs/telemetry@16610

commit: 8f4407e

Comment thread packages/astro/package.json Outdated
"@clack/prompts": "^1.1.0",
"@oslojs/encoding": "^1.1.0",
"@rollup/pluginutils": "^5.3.0",
"am-i-vibing": "^0.1.1",
Copy link
Copy Markdown
Contributor

@ascorbic ascorbic May 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suggest upgrading to 0.2.0: it can use env vars to detect most tools instead of needing process ancestry, so should be a lot quicker on Windows.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Updated to 0.3.0

Comment thread packages/astro/src/cli/dev/index.ts Outdated
` URL: ${existingServer.url}`,
` PID: ${existingServer.pid}`,
'',
`Run \`kill ${existingServer.pid}\` to stop it, or use \`astro dev --force\` to replace it.`,
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this say to run astro dev --experimental-stop rather than kill?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, you intended these to be just astro dev stop, not flags right? I think I'm going to get rid of the experimental flags and just submit this directly to next.

The reason is that we can't really effectively do an experimental here since this is only useful if agents get it by default, so better to do it directly in v7.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This now explains to use astro stop instead.

Comment thread packages/astro/src/cli/dev/index.ts Outdated
],
['--experimental-stop', 'Stop a running background dev server.'],
['--experimental-status', 'Check if a dev server is running.'],
['--experimental-logs', 'View logs from a background dev server.'],
Copy link
Copy Markdown
Contributor

@ascorbic ascorbic May 7, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

--experimental-restart is a useful one too, though it would require storing the flags to re-send.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think we need this, we have --force which overrides the lockfile, so let the agent remember what the flags are.

Comment thread packages/astro/src/cli/dev/logs.ts Outdated
}

const content = readFileSync(logFilePath, 'utf-8');
process.stdout.write(content);
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A --follow flag is a nice addition for humans.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good idea! Done in f37b15b

Comment on lines +59 to +63
const deadline = Date.now() + 5000;
while (Date.now() < deadline) {
if (!isProcessAlive(existing.pid)) break;
await new Promise((r) => setTimeout(r, 100));
}
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might be worth doing a SIGKILL if it's still alive after the timeout

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 97cf2ff


function isRunByAgent(): boolean {
try {
return isAgent();
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This info (and the specific agent) might be a useful addition to telemetry

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very easy! Good library we have 😉 06744ad

matthewp added 11 commits May 11, 2026 17:34
…to 0.3.0

- Replace --experimental-background/stop/status/logs flags with positional
  subcommands: astro dev background, astro dev stop, astro dev status,
  astro dev logs
- Update error/info messages to reference new subcommand form
- Upgrade am-i-vibing from ^0.1.1 to ^0.3.0 for faster env-var-based
  agent detection and broader tool coverage
Streams new log output as it's written, similar to tail -f.
Automatically exits when the server process dies.
If a dev server process doesn't exit within 5s of SIGTERM, escalate
to SIGKILL to guarantee it's dead before proceeding.
Calls detectAgenticEnvironment() from am-i-vibing in eventCliSession()
so all CLI commands (dev, build, preview, sync, add) report agent id,
name, and type when run by an AI coding agent.
@matthewp matthewp changed the base branch from main to next May 11, 2026 21:37
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 11, 2026

e18e dependency analysis

No dependency warnings found.

@matthewp matthewp changed the title WIP: Experimental background dev server Background dev server for AI coding agents May 11, 2026
@matthewp matthewp marked this pull request as ready for review May 27, 2026 14:37
Comment thread .changeset/experimental-background-dev.md Outdated
if (flags.config) args.push('--config', String(flags.config));
if (flags.root) args.push('--root', String(flags.root));
if (flags.allowedHosts) args.push('--allowed-hosts', String(flags.allowedHosts));
if (flags.experimentalJson) args.push('--experimental-json');
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reminder that I will rename this to json, so it's best to rebase this PR after I merge my custom logger PR. Better to track it in linear so we don't stomp on each other

Comment thread packages/astro/src/core/dev/lockfile.ts
Comment thread packages/astro/src/cli/dev/stop.ts Outdated
Comment thread packages/astro/src/core/dev/lockfile.ts Outdated
Comment thread packages/astro/src/core/dev/lockfile.ts Outdated
Comment thread packages/astro/src/cli/dev/logs.ts Outdated
Comment thread packages/astro/src/cli/dev/logs.ts Outdated
Comment thread packages/astro/src/cli/dev/logs.ts
Comment thread packages/astro/src/cli/dev/index.ts
Comment thread packages/astro/src/cli/dev/index.ts Outdated
@ematipico
Copy link
Copy Markdown
Member

I just read the RFC, and I think the log rotation is missing. Or am I hallucinating? 😆

@matthewp
Copy link
Copy Markdown
Contributor Author

Log rotation has been removed from the RFC. The log file is truncated on each new background server start, so unbounded growth only happens during a single long-running session — which is unlikely to hit any meaningful size for a dev server. Log rotation is typically handled externally (logrotate, etc.) and not by the process itself.

@matthewp
Copy link
Copy Markdown
Contributor Author

Added docs PR here: withastro/docs#13949

Comment thread packages/astro/src/core/dev/lockfile.ts Outdated
Comment on lines +8 to +11
export function resolveRootURL(root?: string): URL {
const rootPath = typeof root === 'string' ? resolve(root) : process.cwd();
return pathToFileURL(rootPath + '/');
}
Copy link
Copy Markdown
Member

@ematipico ematipico May 28, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This hasn't been addressed. We already have this function

export function resolveRoot(cwd?: string | URL): string {
if (cwd instanceof URL) {
cwd = fileURLToPath(cwd);
}
return cwd ? path.resolve(cwd) : process.cwd();
}

It doesn't have the same return signature, but it does the same thing. We should use just one

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 105a113

Copy link
Copy Markdown
Member

@ArmandPhilippot ArmandPhilippot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A nit, and same concern as Ema regarding telemetry. Otherwise, LGTM docs-wise!

Comment thread .changeset/experimental-background-dev.md Outdated
Comment on lines +14 to +21
/** Whether the CLI session was run by an AI coding agent. */
isAgentic?: boolean;
/** ID of the detected agent, e.g. "cursor-agent", "claude-code". */
agentId?: string;
/** Display name of the detected agent, e.g. "Cursor Agent", "Claude Code". */
agentName?: string;
/** Type of agentic environment: "agent", "interactive", or "hybrid". */
agentType?: string;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think I agree with Ema that "general machine information" might not cover "AI agents" and it might be better to add it to the list.

@matthewp
Copy link
Copy Markdown
Contributor Author

@ematipico @ArmandPhilippot about telemetry, my pushback here is that i don't want us to get to a place where every change to telemetry requires updating the website. Not even because of the maintenance cost, but rather because if we over-disclose then we are in a situation where if we forget to update the website we get accused of hiding what we're doing.

So I'll open a PR on astro.build that aims to make the language general enough to cover this but without being specific. Just giving the context for that change here.

@ematipico
Copy link
Copy Markdown
Member

I completely understand that and I know why we want to have a generic language to avoid too many updates. Be mindful though, because we might fall into a place where not disclosing the information could have negative effects on the project (users not knowing, etc.).

@matthewp
Copy link
Copy Markdown
Contributor Author

@matthewp matthewp merged commit c63e7e4 into next Jun 5, 2026
25 checks passed
@matthewp matthewp deleted the background-dev branch June 5, 2026 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

pkg: astro Related to the core `astro` package (scope)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants