From a59b63420e1c42310987035905e6d03648d09175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Wed, 11 Feb 2026 13:06:34 +0100 Subject: [PATCH 1/2] feat: detect if nuxt is run by an agent --- package.json | 1 + pnpm-lock.yaml | 9 +++++++++ src/context.ts | 5 +++++ src/telemetry.ts | 2 ++ src/types.ts | 2 ++ test/e2e.spec.ts | 4 ++++ 6 files changed, 23 insertions(+) diff --git a/package.json b/package.json index f14de537..101c4f21 100644 --- a/package.json +++ b/package.json @@ -43,6 +43,7 @@ "test:types": "nuxt-module-build prepare && nuxt prepare playground && vue-tsc --noEmit" }, "dependencies": { + "@vercel/detect-agent": "^1.1.0", "citty": "^0.2.0", "consola": "^3.4.2", "ofetch": "^2.0.0-alpha.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4fc41983..704602b9 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,6 +11,9 @@ importers: .: dependencies: + '@vercel/detect-agent': + specifier: ^1.1.0 + version: 1.1.0 citty: specifier: ^0.2.0 version: 0.2.0 @@ -1912,6 +1915,10 @@ packages: cpu: [x64] os: [win32] + '@vercel/detect-agent@1.1.0': + resolution: {integrity: sha512-Zfq6FbIcYl9gaAmVu6ROsqUiCNwpEj3Ljz/tMX5fl12Z95OFOxzf7vlO03WE5JBU/ri1tBDFHnW41dihMINOPQ==} + engines: {node: '>=14'} + '@vercel/nft@1.3.0': resolution: {integrity: sha512-i4EYGkCsIjzu4vorDUbqglZc5eFtQI2syHb++9ZUDm6TU4edVywGpVnYDein35x9sevONOn9/UabfQXuNXtuzQ==} engines: {node: '>=20'} @@ -6422,6 +6429,8 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true + '@vercel/detect-agent@1.1.0': {} + '@vercel/nft@1.3.0(rollup@4.57.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.3 diff --git a/src/context.ts b/src/context.ts index 810907ac..8b5d274c 100644 --- a/src/context.ts +++ b/src/context.ts @@ -3,6 +3,7 @@ import { existsSync, readFileSync } from 'node:fs' import { execSync } from 'node:child_process' import { getNuxtVersion, isNuxtMajorVersion } from '@nuxt/kit' import { provider } from 'std-env' +import { determineAgent } from '@vercel/detect-agent' import type { Nuxt } from '@nuxt/schema' import type { Context, GitData, TelemetryOptions } from './types' import { hash } from './utils/hash' @@ -31,6 +32,8 @@ export async function createContext(nuxt: Nuxt, options: Required { delete body.context.projectSession expect(body.context.environment).toEqual(isCI ? 'github_actions' : 'unknown') delete body.context.environment + expect(body.context.isAgent).toEqual(expect.any(Boolean)) + delete body.context.isAgent + expect([null, expect.any(String)]).toContainEqual(body.context.agentName) + delete body.context.agentName expect(body.timestamp).toBeGreaterThan(0) delete body.timestamp for (const event of body.events) { From f22d126c5b1a575e558062c9b7b74106c44c5566 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Wed, 18 Feb 2026 10:15:59 +0100 Subject: [PATCH 2/2] chore: move to std-env 4.0.0-rc.1 --- package.json | 3 +-- pnpm-lock.yaml | 18 +++++++----------- src/context.ts | 10 ++++------ 3 files changed, 12 insertions(+), 19 deletions(-) diff --git a/package.json b/package.json index 101c4f21..ec930313 100644 --- a/package.json +++ b/package.json @@ -43,12 +43,11 @@ "test:types": "nuxt-module-build prepare && nuxt prepare playground && vue-tsc --noEmit" }, "dependencies": { - "@vercel/detect-agent": "^1.1.0", "citty": "^0.2.0", "consola": "^3.4.2", "ofetch": "^2.0.0-alpha.3", "rc9": "^3.0.0", - "std-env": "^3.10.0" + "std-env": "^4.0.0-rc.1" }, "devDependencies": { "@nuxt/eslint-config": "^1.14.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 704602b9..4cdc0e2f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,6 @@ importers: .: dependencies: - '@vercel/detect-agent': - specifier: ^1.1.0 - version: 1.1.0 citty: specifier: ^0.2.0 version: 0.2.0 @@ -27,8 +24,8 @@ importers: specifier: ^3.0.0 version: 3.0.0 std-env: - specifier: ^3.10.0 - version: 3.10.0 + specifier: ^4.0.0-rc.1 + version: 4.0.0-rc.1 devDependencies: '@nuxt/eslint-config': specifier: ^1.14.0 @@ -1915,10 +1912,6 @@ packages: cpu: [x64] os: [win32] - '@vercel/detect-agent@1.1.0': - resolution: {integrity: sha512-Zfq6FbIcYl9gaAmVu6ROsqUiCNwpEj3Ljz/tMX5fl12Z95OFOxzf7vlO03WE5JBU/ri1tBDFHnW41dihMINOPQ==} - engines: {node: '>=14'} - '@vercel/nft@1.3.0': resolution: {integrity: sha512-i4EYGkCsIjzu4vorDUbqglZc5eFtQI2syHb++9ZUDm6TU4edVywGpVnYDein35x9sevONOn9/UabfQXuNXtuzQ==} engines: {node: '>=20'} @@ -4154,6 +4147,9 @@ packages: std-env@3.10.0: resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + std-env@4.0.0-rc.1: + resolution: {integrity: sha512-2gE+MEGsqvDEjl7LqbrCEB3Lo6+Pmt8ULCIsutKTesFBzSuNIkiWPSy65sa7WrlLebc9LcfnS5eyj69mutUp1A==} + streamx@2.23.0: resolution: {integrity: sha512-kn+e44esVfn2Fa/O0CPFcex27fjIL6MkVae0Mm6q+E6f0hWv578YCERbv+4m02cjxvDsPKLnmxral/rR6lBMAg==} @@ -6429,8 +6425,6 @@ snapshots: '@unrs/resolver-binding-win32-x64-msvc@1.11.1': optional: true - '@vercel/detect-agent@1.1.0': {} - '@vercel/nft@1.3.0(rollup@4.57.1)': dependencies: '@mapbox/node-pre-gyp': 2.0.3 @@ -9027,6 +9021,8 @@ snapshots: std-env@3.10.0: {} + std-env@4.0.0-rc.1: {} + streamx@2.23.0: dependencies: events-universal: 1.0.1 diff --git a/src/context.ts b/src/context.ts index 8b5d274c..2769d1bd 100644 --- a/src/context.ts +++ b/src/context.ts @@ -2,8 +2,7 @@ import os from 'node:os' import { existsSync, readFileSync } from 'node:fs' import { execSync } from 'node:child_process' import { getNuxtVersion, isNuxtMajorVersion } from '@nuxt/kit' -import { provider } from 'std-env' -import { determineAgent } from '@vercel/detect-agent' +import { provider, detectAgent, isAgent } from 'std-env' import type { Nuxt } from '@nuxt/schema' import type { Context, GitData, TelemetryOptions } from './types' import { hash } from './utils/hash' @@ -31,8 +30,7 @@ export async function createContext(nuxt: Nuxt, options: Required