mirror of
https://github.com/vercel/eve.git
synced 2026-09-20 05:35:39 +08:00
chore(eve): tooling - tighten dependency policies (#2034)
Signed-off-by: Andrew Barba <barba@hey.com>
This commit is contained in:
Executable
+3
@@ -0,0 +1,3 @@
|
||||
#!/bin/sh
|
||||
|
||||
exec node ./scripts/pre-commit-fmt.mjs
|
||||
@@ -28,7 +28,6 @@ export const getTemplateEntries = cache(async (): Promise<TemplateEntry[]> => {
|
||||
return composeTemplateEntries(templateManifest, JSON.parse(contents) as GeneratedTemplatesInput);
|
||||
});
|
||||
|
||||
export const getTemplateEntry = cache(
|
||||
async (slug: string): Promise<TemplateEntry | undefined> =>
|
||||
(await getTemplateEntries()).find((entry) => entry.slug === slug),
|
||||
export const getTemplateEntry = cache(async (slug: string): Promise<TemplateEntry | undefined> =>
|
||||
(await getTemplateEntries()).find((entry) => entry.slug === slug),
|
||||
);
|
||||
|
||||
@@ -69,7 +69,6 @@
|
||||
"@opentelemetry/api": "1.9.1",
|
||||
"@opentelemetry/exporter-trace-otlp-http": "0.221.0",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@photon-ai/chat-adapter-imessage": "3.2.0",
|
||||
"@posthog/ai": "7.19.6",
|
||||
"@resend/chat-sdk-adapter": "0.2.2",
|
||||
"@tailwindcss/postcss": "4.3.0",
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
{
|
||||
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
|
||||
"name": "channel/photon-imessage",
|
||||
"title": "Photon iMessage",
|
||||
"description": "Connect an eve agent to iMessage through Photon with guided project and phone setup.",
|
||||
"dependencies": ["@vercel/connect@0.5.0"],
|
||||
"meta": {
|
||||
"eve": {
|
||||
"setup": {
|
||||
"command": "eve",
|
||||
"package": "eve",
|
||||
"bin": "eve",
|
||||
"args": ["integration", "setup", "photon"]
|
||||
},
|
||||
"requires": ">=0.29.0"
|
||||
}
|
||||
},
|
||||
"type": "registry:item"
|
||||
}
|
||||
+122
-571
File diff suppressed because it is too large
Load Diff
@@ -57,18 +57,16 @@ const syncedTemplates = await Promise.all(
|
||||
|
||||
const [files, readme] = await Promise.all([
|
||||
Promise.all(
|
||||
entry.files.map(
|
||||
async (relativePath): Promise<TemplateFile> => ({
|
||||
contents: await githubText(
|
||||
rawContentsUrl(github, commit.sha, relativePath),
|
||||
`Curation drift: "${relativePath}" is listed in the manifest for template ` +
|
||||
`"${entry.slug}" but does not exist in ` +
|
||||
`${github.owner}/${github.repo}@${commit.sha}`,
|
||||
),
|
||||
language: languageForPath(relativePath),
|
||||
relativePath,
|
||||
}),
|
||||
),
|
||||
entry.files.map(async (relativePath): Promise<TemplateFile> => ({
|
||||
contents: await githubText(
|
||||
rawContentsUrl(github, commit.sha, relativePath),
|
||||
`Curation drift: "${relativePath}" is listed in the manifest for template ` +
|
||||
`"${entry.slug}" but does not exist in ` +
|
||||
`${github.owner}/${github.repo}@${commit.sha}`,
|
||||
),
|
||||
language: languageForPath(relativePath),
|
||||
relativePath,
|
||||
})),
|
||||
),
|
||||
githubText(
|
||||
rawContentsUrl(github, commit.sha, "README.md"),
|
||||
|
||||
@@ -10,9 +10,6 @@
|
||||
"typecheck": "eve build && tsc"
|
||||
},
|
||||
"dependencies": {
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
},
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
"dependencies": {
|
||||
"@auth/core": "0.41.2",
|
||||
"@vercel/connect": "catalog:",
|
||||
"@vercel/oidc": "3.8.0",
|
||||
"ai": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"next": "catalog:",
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -12,13 +12,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"ai": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
"eve": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "catalog:",
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -12,12 +12,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
"eve": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "catalog:",
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -12,11 +12,7 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"ai": "catalog:",
|
||||
"eve": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -12,12 +12,8 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
"eve": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "catalog:",
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -12,9 +12,6 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -13,9 +13,6 @@
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@eve-e2e/dynamic-import-dependency": "file:./fixtures/dynamic-import-dependency",
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"eve": "workspace:*",
|
||||
"zod": "catalog:"
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
"dependencies": {
|
||||
"@eve-e2e/config": "workspace:*",
|
||||
"@workflow/world-postgres": "catalog:",
|
||||
"ai": "catalog:",
|
||||
"eve": "workspace:*"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
||||
@@ -11,7 +11,6 @@
|
||||
"typecheck": "tsc --noEmit"
|
||||
},
|
||||
"dependencies": {
|
||||
"@opentelemetry/core": "catalog:",
|
||||
"@opentelemetry/sdk-trace-base": "catalog:",
|
||||
"@vercel/otel": "catalog:",
|
||||
"eve": "workspace:*"
|
||||
|
||||
-321
@@ -1,321 +0,0 @@
|
||||
{
|
||||
"$schema": "node_modules/konsistent/konsistent.schema.json",
|
||||
"version": "v1",
|
||||
"kebabToPascalMap": {
|
||||
"github": "GitHub",
|
||||
"junit": "JUnit",
|
||||
"instruction": "Instructions"
|
||||
},
|
||||
"kebabToCamelMap": {
|
||||
"github": "github",
|
||||
"junit": "junit",
|
||||
"instruction": "instructions"
|
||||
},
|
||||
"conventions": [
|
||||
{
|
||||
"name": "package-directories",
|
||||
"description": "Workspace package folders keep their package metadata, changelog, TypeScript configs, and source entrypoint.",
|
||||
"paths": "packages/{packageName}",
|
||||
"must": {
|
||||
"haveType": "directory",
|
||||
"haveFiles": ["package.json", "CHANGELOG.md", "tsconfig.json", "src/index.ts"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "public-definitions",
|
||||
"description": "Public definition requirements.",
|
||||
"paths": [
|
||||
"packages/eve/src/public/{conceptName:matches(^[a-z]+$)}s/index.ts",
|
||||
"!packages/eve/src/public/connections",
|
||||
"!packages/eve/src/public/definitions"
|
||||
],
|
||||
"must": [
|
||||
{
|
||||
"name": "public-barrels-must-reexport-their-concept-definition-function-and-type",
|
||||
"description": "Public barrels re-export their concept's definition function and type.",
|
||||
"must": {
|
||||
"export": [
|
||||
{
|
||||
"name": "define${conceptName.toPascalCase()}",
|
||||
"from": "#public/definitions/${conceptName.toCamelCase()}.js"
|
||||
}
|
||||
],
|
||||
"exportTypes": [
|
||||
{
|
||||
"name": "${conceptName.toPascalCase()}Definition",
|
||||
"from": "#public/definitions/${conceptName.toCamelCase()}.js"
|
||||
}
|
||||
],
|
||||
"haveFiles": [
|
||||
"../definitions/${conceptName.toCamelCase()}.ts",
|
||||
"../../shared/${conceptName.toCamelCase()}-definition.ts"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "public-definitions-must-import-from-matching-shared-definitions",
|
||||
"description": "Public definitions must import from their matching shared definitions.",
|
||||
"for": {
|
||||
"files": ["../definitions/${conceptName.toCamelCase()}.ts"]
|
||||
},
|
||||
"must": {
|
||||
"importFrom": "#shared/${conceptName.toCamelCase()}-definition.js"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "compiler-manifest-must-export-matching-compiled-definitions",
|
||||
"description": "Compiler manifest must export matching compiled definitions.",
|
||||
"for": {
|
||||
"files": ["../../compiler/manifest.ts"]
|
||||
},
|
||||
"must": {
|
||||
"exportTypes": ["Compiled${conceptName.toPascalCase()}Definition"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "discover-manifest-must-export-matching-source-ref-types",
|
||||
"description": "Discover manifest must export matching source ref types.",
|
||||
"for": {
|
||||
"files": ["../../discover/manifest.ts"]
|
||||
},
|
||||
"must": {
|
||||
"exportTypes": ["${conceptName.toPascalCase()}SourceRef"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "runtime-types-file-must-export-matching-resolved-definitions",
|
||||
"description": "Runtime types file must export matching compiled definitions.",
|
||||
"for": {
|
||||
"files": ["../../runtime/types.ts"]
|
||||
},
|
||||
"must": {
|
||||
"exportTypes": ["Resolved${conceptName.toPascalCase()}Definition"]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "public-channel-barrels",
|
||||
"description": "Built-in public channel barrels re-export their channel factory and core channel types from the implementation module.",
|
||||
"paths": "packages/eve/src/public/channels/{channelName}/index.ts",
|
||||
"must": {
|
||||
"export": [
|
||||
{
|
||||
"name": "${channelName.toCamelCase()}Channel",
|
||||
"from": "#public/channels/${channelName}/${channelName.toCamelCase()}Channel.js"
|
||||
}
|
||||
],
|
||||
"exportTypes": [
|
||||
{
|
||||
"name": "${channelName.toPascalCase()}Channel",
|
||||
"from": "#public/channels/${channelName}/${channelName.toCamelCase()}Channel.js"
|
||||
},
|
||||
{
|
||||
"name": "${channelName.toPascalCase()}ChannelConfig",
|
||||
"from": "#public/channels/${channelName}/${channelName.toCamelCase()}Channel.js"
|
||||
},
|
||||
{
|
||||
"name": "${channelName.toPascalCase()}ReceiveTarget",
|
||||
"from": "#public/channels/${channelName}/${channelName.toCamelCase()}Channel.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "public-sandbox-backends",
|
||||
"description": "Public sandbox implementation barrels have matching backend implementation files.",
|
||||
"paths": [
|
||||
"packages/eve/src/public/sandbox/{sandboxName}.ts",
|
||||
"!packages/eve/src/public/sandbox/index.ts",
|
||||
"!packages/eve/src/public/sandbox/*-sandbox.ts"
|
||||
],
|
||||
"must": [
|
||||
{
|
||||
"name": "public-sandbox-barrels-must-reexport-their-backend",
|
||||
"description": "Public sandbox barrels re-export their backend factory and create options from matching implementation files.",
|
||||
"must": {
|
||||
"haveFiles": ["backends/${sandboxName}.ts", "${sandboxName}-sandbox.ts"],
|
||||
"export": [
|
||||
{
|
||||
"name": "${sandboxName.toFlatCase()}",
|
||||
"from": "#public/sandbox/backends/${sandboxName}.js"
|
||||
}
|
||||
],
|
||||
"exportTypes": [
|
||||
{
|
||||
"name": "${sandboxName.toPascalCase()}SandboxCreateOptions",
|
||||
"from": "#public/sandbox/${sandboxName}-sandbox.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "public-sandbox-options-must-export-create-options",
|
||||
"description": "Public sandbox option files export the matching create options type.",
|
||||
"for": {
|
||||
"files": ["${sandboxName}-sandbox.ts"]
|
||||
},
|
||||
"must": {
|
||||
"exportTypes": ["${sandboxName.toPascalCase()}SandboxCreateOptions"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "public-sandbox-backends-must-export-their-factory",
|
||||
"description": "Public sandbox backend implementation files export the matching backend factory using the public create options type.",
|
||||
"for": {
|
||||
"files": ["backends/${sandboxName}.ts"]
|
||||
},
|
||||
"must": {
|
||||
"importTypes": [
|
||||
{
|
||||
"name": "${sandboxName.toPascalCase()}SandboxCreateOptions",
|
||||
"from": "#public/sandbox/${sandboxName}-sandbox.js"
|
||||
}
|
||||
],
|
||||
"exportFunctions": [
|
||||
{
|
||||
"name": "${sandboxName.toFlatCase()}",
|
||||
"receiveParamsOfTypes": ["${sandboxName.toPascalCase()}SandboxCreateOptions"]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "eval-loaders",
|
||||
"description": "Eval loaders must export their required symbols.",
|
||||
"paths": [
|
||||
"packages/eve/src/evals/loaders/{loaderName}.ts",
|
||||
"!packages/eve/src/evals/loaders/index.ts"
|
||||
],
|
||||
"must": {
|
||||
"exportFunctions": [
|
||||
{
|
||||
"name": "load${loaderName.toPascalCase()}",
|
||||
"receiveParamsOfTypes": ["string"]
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "eval-reporters",
|
||||
"description": "Eval reporters must export their required symbols.",
|
||||
"paths": [
|
||||
"packages/eve/src/evals/runner/reporters/{reporterName}.ts",
|
||||
"!packages/eve/src/evals/runner/reporters/types.ts"
|
||||
],
|
||||
"must": [
|
||||
{
|
||||
"must": {
|
||||
"importTypes": [
|
||||
{
|
||||
"name": "EvalReporter",
|
||||
"from": "#evals/runner/reporters/types.js"
|
||||
}
|
||||
],
|
||||
"declareClasses": [
|
||||
{
|
||||
"name": "${reporterName.toPascalCase()}Reporter",
|
||||
"implement": ["EvalReporter"]
|
||||
}
|
||||
],
|
||||
"exportTypes": ["${reporterName.toPascalCase()}ReporterConfig"],
|
||||
"exportFunctions": [
|
||||
{
|
||||
"name": "${reporterName.toPascalCase()}",
|
||||
"receiveParamsOfTypes": ["${reporterName.toPascalCase()}ReporterConfig"],
|
||||
"returnValueOfType": "EvalReporter"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"for": {
|
||||
"files": ["../../reporters/index.ts"]
|
||||
},
|
||||
"must": {
|
||||
"export": [
|
||||
{
|
||||
"name": "${reporterName.toPascalCase()}",
|
||||
"from": "#evals/runner/reporters/${reporterName}.js"
|
||||
}
|
||||
],
|
||||
"exportTypes": [
|
||||
{
|
||||
"name": "${reporterName.toPascalCase()}ReporterConfig",
|
||||
"from": "#evals/runner/reporters/${reporterName}.js"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "agent-app-directories",
|
||||
"description": "Workspace agent apps keep their authored agent entry and instructions in agent/.",
|
||||
"paths": [
|
||||
"apps/frameworks/{appName}",
|
||||
"!apps/frameworks/README.md",
|
||||
"apps/fixtures/{appName}",
|
||||
"!apps/fixtures/README.md",
|
||||
"apps/templates/{appName}",
|
||||
"!apps/templates/README.md"
|
||||
],
|
||||
"must": {
|
||||
"haveType": "directory",
|
||||
"haveFiles": ["package.json", "tsconfig.json", "agent/agent.ts", "agent/instructions.md"]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "e2e-fixture-directories",
|
||||
"description": "Fixture-owned e2e apps share the same package, agent, and eval entry points.",
|
||||
"paths": "e2e/fixtures/{fixtureName}",
|
||||
"must": [
|
||||
{
|
||||
"must": {
|
||||
"haveType": "directory",
|
||||
"haveFiles": [
|
||||
"package.json",
|
||||
"tsconfig.json",
|
||||
".vercelignore",
|
||||
"agent/agent.ts",
|
||||
"agent/instructions.md",
|
||||
"evals/evals.config.ts"
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "e2e-eval-config-imports",
|
||||
"description": "E2E eval config files use the public eve/evals config helper.",
|
||||
"for": {
|
||||
"files": "evals/evals.config.ts"
|
||||
},
|
||||
"must": {
|
||||
"import": [
|
||||
{
|
||||
"name": "defineEvalConfig",
|
||||
"from": "eve/evals"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "e2e-eval-imports",
|
||||
"description": "E2E eval files use the public eve/evals authoring helper.",
|
||||
"for": {
|
||||
"files": "evals/**/*.eval.ts"
|
||||
},
|
||||
"must": {
|
||||
"import": [
|
||||
{
|
||||
"name": "defineEval",
|
||||
"from": "eve/evals"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
+5
-13
@@ -21,9 +21,8 @@
|
||||
"fmt": "oxfmt",
|
||||
"guard:fixtures": "node ./scripts/guard-test-fixtures.mjs",
|
||||
"guard:invariants": "node ./scripts/guard-invariants.mjs",
|
||||
"konsistent": "konsistent",
|
||||
"lint": "oxlint --fix",
|
||||
"prepare": "simple-git-hooks",
|
||||
"prepare": "node ./scripts/install-git-hooks.mjs",
|
||||
"test": "pnpm test:unit && pnpm test:integration",
|
||||
"test:e2e": "turbo run test:e2e --concurrency=1",
|
||||
"test:integration": "turbo run test:integration",
|
||||
@@ -39,23 +38,16 @@
|
||||
"@changesets/cli": "2.31.0",
|
||||
"@microsoft/api-extractor": "7.58.10",
|
||||
"@types/node": "catalog:",
|
||||
"ai": "catalog:",
|
||||
"gray-matter": "4.0.3",
|
||||
"konsistent": "1.0.0-beta.1",
|
||||
"oxfmt": "0.58.0",
|
||||
"oxlint": "1.73.0",
|
||||
"simple-git-hooks": "2.13.1",
|
||||
"oxfmt": "0.63.0",
|
||||
"oxlint": "1.78.0",
|
||||
"syncpack": "15.3.2",
|
||||
"turbo": "2.9.18",
|
||||
"typescript": "catalog:",
|
||||
"vercel": "58.5.1",
|
||||
"vitest": "catalog:"
|
||||
},
|
||||
"simple-git-hooks": {
|
||||
"pre-commit": "node ./scripts/pre-commit-fmt.mjs"
|
||||
"vercel": "58.5.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=24"
|
||||
},
|
||||
"packageManager": "pnpm@11.15.0"
|
||||
"packageManager": "pnpm@11.21.0"
|
||||
}
|
||||
|
||||
@@ -155,10 +155,11 @@ describe("runRemoteAuthFlow", () => {
|
||||
},
|
||||
});
|
||||
let deploymentCall = 0;
|
||||
const resolveVercelDeployment = vi.fn<RemoteAuthFlowDeps["resolveVercelDeployment"]>(async () =>
|
||||
deploymentCall++ === 0
|
||||
? { kind: "not-found" }
|
||||
: { kind: "resolved", target: SELECTED_TARGET },
|
||||
const resolveVercelDeployment = vi.fn<RemoteAuthFlowDeps["resolveVercelDeployment"]>(
|
||||
async () =>
|
||||
deploymentCall++ === 0
|
||||
? { kind: "not-found" }
|
||||
: { kind: "resolved", target: SELECTED_TARGET },
|
||||
);
|
||||
const resolveOidcToken = vi.fn<RemoteAuthFlowDeps["resolveOidcToken"]>(async () => ({
|
||||
kind: "resolved",
|
||||
|
||||
@@ -65,7 +65,9 @@ export const EXTENSION_CAPABILITY_VERSIONS = Object.fromEntries(
|
||||
contract.current,
|
||||
]),
|
||||
) as {
|
||||
readonly [TCapability in ExtensionCapability]: (typeof EXTENSION_CAPABILITY_CONTRACTS)[TCapability]["current"];
|
||||
readonly [
|
||||
TCapability in ExtensionCapability
|
||||
]: (typeof EXTENSION_CAPABILITY_CONTRACTS)[TCapability]["current"];
|
||||
};
|
||||
|
||||
/** Capability requirements stamped by one extension build. */
|
||||
|
||||
@@ -109,9 +109,10 @@ export function createSessionCommandInbox(): SessionCommandInboxHandle {
|
||||
state.pending = true;
|
||||
state.resolved = undefined;
|
||||
const next = state.retired
|
||||
? Promise.resolve(state.hook).then(
|
||||
(value): IteratorResult<SessionInboxPayload> => ({ done: false, value }),
|
||||
)
|
||||
? Promise.resolve(state.hook).then((value): IteratorResult<SessionInboxPayload> => ({
|
||||
done: false,
|
||||
value,
|
||||
}))
|
||||
: state.iterator.next();
|
||||
void next.then(
|
||||
(result) => {
|
||||
|
||||
@@ -1653,12 +1653,10 @@ function createMockHook<T>(input: {
|
||||
}
|
||||
|
||||
function createIteratorReturn(): () => Promise<IteratorResult<never>> {
|
||||
return vi.fn(
|
||||
async (): Promise<IteratorResult<never>> => ({
|
||||
done: true,
|
||||
value: undefined,
|
||||
}),
|
||||
);
|
||||
return vi.fn(async (): Promise<IteratorResult<never>> => ({
|
||||
done: true,
|
||||
value: undefined,
|
||||
}));
|
||||
}
|
||||
|
||||
function nonTurnHookTokens(): string[] {
|
||||
|
||||
@@ -336,8 +336,8 @@ async function runDriverLoop(input: {
|
||||
expectedAttemptIds.size > 0 &&
|
||||
[...expectedAttemptIds].every((attemptId) => collectedAuthPayloads.has(attemptId))
|
||||
) {
|
||||
const payloads = [...expectedAttemptIds].map(
|
||||
(attemptId) => collectedAuthPayloads.get(attemptId)!,
|
||||
const payloads = [...expectedAttemptIds].map((attemptId) =>
|
||||
collectedAuthPayloads.get(attemptId)!,
|
||||
);
|
||||
collectedAuthPayloads.clear();
|
||||
return { kind: "authorization-resume", payloads, sessionState };
|
||||
|
||||
@@ -60,13 +60,11 @@ export function computeChannelRouteRegistrations(
|
||||
|
||||
const activeFrameworkRoutes = getFrameworkChannelDefinitions()
|
||||
.filter((channel) => !authoredNames.has(channel.name) && !disabledNames.has(channel.name))
|
||||
.map(
|
||||
(channel): NitroChannelRouteRegistration => ({
|
||||
method: channel.method,
|
||||
route: channel.urlPath,
|
||||
cors: channel.cors,
|
||||
}),
|
||||
);
|
||||
.map((channel): NitroChannelRouteRegistration => ({
|
||||
method: channel.method,
|
||||
route: channel.urlPath,
|
||||
cors: channel.cors,
|
||||
}));
|
||||
|
||||
// Concatenate framework defaults first, authored second. Each
|
||||
// (method, route) pair is registered exactly once.
|
||||
|
||||
@@ -53,7 +53,9 @@ const MAX_TYPING_STATUS = 80;
|
||||
type ChatSdkAdapters = Record<string, Adapter>;
|
||||
type ChatSdkSendInput = string | UserContent | SendPayload;
|
||||
type MutableDeliveryOptions<TState> = {
|
||||
-readonly [Key in keyof ChannelAddressDeliveryOptions<TState>]: ChannelAddressDeliveryOptions<TState>[Key];
|
||||
-readonly [
|
||||
Key in keyof ChannelAddressDeliveryOptions<TState>
|
||||
]: ChannelAddressDeliveryOptions<TState>[Key];
|
||||
};
|
||||
type EventData<T extends UnstampedMessageStreamEvent["type"]> =
|
||||
Extract<UnstampedMessageStreamEvent, { type: T }> extends { data: infer D } ? D : undefined;
|
||||
|
||||
@@ -40,11 +40,9 @@ function fakeDeps(): ResolveProvisioningDeps {
|
||||
return {
|
||||
requireAuth: vi.fn(async () => {}),
|
||||
isVercelAuthenticated: vi.fn(async () => true),
|
||||
detectProjectResolution: vi.fn(
|
||||
async (): Promise<ProjectResolution> => ({
|
||||
kind: "unresolved",
|
||||
}),
|
||||
),
|
||||
detectProjectResolution: vi.fn(async (): Promise<ProjectResolution> => ({
|
||||
kind: "unresolved",
|
||||
})),
|
||||
pathExists: vi.fn(async () => true),
|
||||
validateTeam: vi.fn(async () => {}),
|
||||
resolveTeam: vi.fn(async () => "team"),
|
||||
@@ -347,9 +345,10 @@ describe("resolveProvisioning box", () => {
|
||||
|
||||
it("adopts a detected on-disk link with a logged-in CLI, asking nothing", async () => {
|
||||
const deps = fakeDeps();
|
||||
deps.detectProjectResolution = vi.fn(
|
||||
async (): Promise<ProjectResolution> => ({ kind: "linked", projectId: "prj_demo" }),
|
||||
);
|
||||
deps.detectProjectResolution = vi.fn(async (): Promise<ProjectResolution> => ({
|
||||
kind: "linked",
|
||||
projectId: "prj_demo",
|
||||
}));
|
||||
// A prompter with no configured answers: any select or password throws,
|
||||
// proving the adopted link resolves every provisioning question.
|
||||
const prompter = createPrompter();
|
||||
@@ -383,9 +382,10 @@ describe("resolveProvisioning box", () => {
|
||||
|
||||
it("asks the question tree when the linked directory has no CLI login", async () => {
|
||||
const deps = fakeDeps();
|
||||
deps.detectProjectResolution = vi.fn(
|
||||
async (): Promise<ProjectResolution> => ({ kind: "linked", projectId: "prj_demo" }),
|
||||
);
|
||||
deps.detectProjectResolution = vi.fn(async (): Promise<ProjectResolution> => ({
|
||||
kind: "linked",
|
||||
projectId: "prj_demo",
|
||||
}));
|
||||
deps.isVercelAuthenticated = vi.fn(async () => false);
|
||||
const box = makeBox({
|
||||
prompter: createPrompter({ selectValues: ["vercel", "new"] }),
|
||||
|
||||
@@ -148,9 +148,10 @@ describe("runInstallVercelCliFlow", () => {
|
||||
await run(
|
||||
{
|
||||
getVercelAuthStatus: statusProbe("cli-missing", "authenticated"),
|
||||
detectPackageManager: vi.fn(
|
||||
async (): Promise<DetectedPackageManager> => ({ kind: "npm", source: "lockfile" }),
|
||||
),
|
||||
detectPackageManager: vi.fn(async (): Promise<DetectedPackageManager> => ({
|
||||
kind: "npm",
|
||||
source: "lockfile",
|
||||
})),
|
||||
},
|
||||
spawnPackageManager,
|
||||
);
|
||||
|
||||
@@ -109,7 +109,7 @@ describe("registerOtelPipeline", () => {
|
||||
).toThrow();
|
||||
|
||||
const processor = (
|
||||
registerOTel.mock.calls.at(-1)?.[0] as {
|
||||
registerOTel.mock.calls.at(-1)![0] as {
|
||||
spanProcessors: { onEnd(span: unknown): void }[];
|
||||
}
|
||||
).spanProcessors[0]!;
|
||||
@@ -136,7 +136,7 @@ describe("registerOtelPipeline", () => {
|
||||
}),
|
||||
).toThrow();
|
||||
const processor = (
|
||||
registerOTel.mock.calls.at(-1)?.[0] as {
|
||||
registerOTel.mock.calls.at(-1)![0] as {
|
||||
spanProcessors: {
|
||||
onEnd(span: unknown): void;
|
||||
onStart(span: unknown, parentContext: unknown): void;
|
||||
|
||||
Generated
+578
-1220
File diff suppressed because it is too large
Load Diff
+17
-60
@@ -5,23 +5,22 @@ packages:
|
||||
- packages/*
|
||||
|
||||
allowBuilds:
|
||||
# Registry templates import types only; this optional build is not needed.
|
||||
"@google/genai": false
|
||||
braintrust: false
|
||||
"@mongodb-js/zstd": true
|
||||
"@nestjs/core": true
|
||||
"@parcel/watcher": false
|
||||
bufferutil: false
|
||||
cbor-extract: true
|
||||
esbuild: true
|
||||
node-liblzma: false
|
||||
phase: false
|
||||
protobufjs: true
|
||||
sharp: true
|
||||
simple-git-hooks: true
|
||||
unrs-resolver: true
|
||||
vue-demi: false
|
||||
webgpu: true
|
||||
"@google/genai": false # No-op preinstall.
|
||||
"@parcel/watcher": false # Builds from source only when explicitly requested.
|
||||
braintrust: false # Installs an optional CLI binary; the SDK does not need it.
|
||||
bufferutil: false # The package already includes the supported prebuilt bindings.
|
||||
esbuild: true # Verifies the installed platform binary.
|
||||
phase: false # Would install its own Git hooks.
|
||||
protobufjs: false # Only checks the package version.
|
||||
sharp: false # Prebuilt platform packages need no install script.
|
||||
unrs-resolver: false # Prebuilt platform packages need no repair script.
|
||||
webgpu: true # Clears macOS quarantine from its packaged native binding.
|
||||
|
||||
ignoredOptionalDependencies:
|
||||
- "@braintrust/bt-*"
|
||||
- "@mongodb-js/zstd"
|
||||
- cbor-extract
|
||||
- node-liblzma
|
||||
|
||||
catalog:
|
||||
"@ai-sdk/anthropic": "^4.0.36"
|
||||
@@ -57,49 +56,7 @@ catalog:
|
||||
minimumReleaseAge: 2880 # 2 days
|
||||
|
||||
minimumReleaseAgeExclude:
|
||||
# Registry packages are explicitly reviewed before they are added to the eve registry.
|
||||
- "@agent-browser/eve"
|
||||
- "@agent-browser/sandbox"
|
||||
- "@agentphone/chat-sdk-adapter"
|
||||
- "@beeper/chat-adapter-matrix"
|
||||
- "@browserbasehq/eve"
|
||||
- "@chat-adapter/*"
|
||||
- "@getdial/chat-sdk-adapter"
|
||||
- "@github-tools/eve-extension"
|
||||
- "@github-tools/sdk"
|
||||
- "@kybernesis/arcana"
|
||||
- "@kapso/chat-adapter"
|
||||
- "@larksuite/vercel-chat-adapter"
|
||||
- "@linqapp/chat-sdk-adapter"
|
||||
- "@liveblocks/chat-sdk-adapter"
|
||||
- "@novu/chat-sdk-adapter"
|
||||
- "@photon-ai/chat-adapter-imessage"
|
||||
- "@resend/chat-sdk-adapter"
|
||||
- "@upstash/agentkit-eve-extension"
|
||||
- "@vectorize-io/hindsight-eve"
|
||||
- "@veltdev/chat-sdk-adapter"
|
||||
- "@zernio/chat-sdk-adapter"
|
||||
- chat
|
||||
- chat-adapter-sendblue
|
||||
- "@ai-sdk/*"
|
||||
- "@photon-ai/chat-adapter-imessage"
|
||||
- "@rolldown/*"
|
||||
- "@typescript/typescript-*"
|
||||
- "@turbo/*"
|
||||
- "@workflow/*"
|
||||
- "@vercel/*"
|
||||
- "@vgpu/*"
|
||||
- ai
|
||||
- crossws
|
||||
- experimental-ai-sdk-code-mode
|
||||
- eve
|
||||
- nf3
|
||||
- "@workflow/*"
|
||||
- nitro
|
||||
- rolldown
|
||||
# This release contains the reviewed package-config registry APIs used by the eve CLI.
|
||||
- shadcn@4.16.0
|
||||
- turbo
|
||||
- typescript
|
||||
- vercel
|
||||
- workflow
|
||||
- phase@0.0.1
|
||||
|
||||
Executable
+21
@@ -0,0 +1,21 @@
|
||||
#!/usr/bin/env node
|
||||
|
||||
import { spawnSync } from "node:child_process";
|
||||
import { fileURLToPath } from "node:url";
|
||||
|
||||
const repoRoot = fileURLToPath(new URL("..", import.meta.url));
|
||||
const gitProbe = spawnSync("git", ["rev-parse", "--is-inside-work-tree"], {
|
||||
cwd: repoRoot,
|
||||
encoding: "utf8",
|
||||
stdio: ["ignore", "pipe", "ignore"],
|
||||
});
|
||||
|
||||
if (gitProbe.status !== 0 || gitProbe.stdout.trim() !== "true") process.exit(0);
|
||||
|
||||
const result = spawnSync("git", ["config", "--local", "core.hooksPath", ".githooks"], {
|
||||
cwd: repoRoot,
|
||||
stdio: "inherit",
|
||||
});
|
||||
|
||||
if (result.error) throw result.error;
|
||||
if (result.status !== 0) process.exit(result.status ?? 1);
|
||||
@@ -19,7 +19,7 @@
|
||||
// * Only Added / Copied / Modified / Renamed index entries are considered.
|
||||
// Deletes and typechanges are ignored.
|
||||
//
|
||||
// Intentionally zero runtime deps — invoked by `simple-git-hooks`.
|
||||
// Intentionally zero runtime deps — invoked by `.githooks/pre-commit`.
|
||||
|
||||
import { spawnSync } from "node:child_process";
|
||||
import { existsSync } from "node:fs";
|
||||
|
||||
Reference in New Issue
Block a user