eve 0.13.1 → 0.13.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +13 -0
- package/dist/src/chunks/use-eve-agent-B18LYpfZ.js +5765 -0
- package/dist/src/chunks/use-eve-agent-BPI1nbo5.js +5795 -0
- package/dist/src/cli/dev/tui/provider-picker.d.ts +64 -0
- package/dist/src/cli/dev/tui/provider-picker.js +1 -0
- package/dist/src/cli/dev/tui/remote-auth-result.d.ts +21 -0
- package/dist/src/cli/dev/tui/remote-auth-result.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection-probe.d.ts +9 -0
- package/dist/src/cli/dev/tui/remote-connection-probe.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection-types.d.ts +67 -0
- package/dist/src/cli/dev/tui/remote-connection-types.js +1 -0
- package/dist/src/cli/dev/tui/remote-connection.d.ts +3 -0
- package/dist/src/cli/dev/tui/remote-connection.js +1 -0
- package/dist/src/cli/dev/tui/runner.js +1 -1
- package/dist/src/cli/dev/tui/setup-commands.d.ts +1 -1
- package/dist/src/cli/dev/tui/setup-commands.js +2 -2
- package/dist/src/cli/dev/tui/setup-flow.d.ts +3 -0
- package/dist/src/cli/dev/tui/setup-issues.d.ts +7 -0
- package/dist/src/cli/dev/tui/setup-issues.js +1 -1
- package/dist/src/cli/dev/tui/setup-panel.d.ts +25 -12
- package/dist/src/cli/dev/tui/setup-panel.js +3 -2
- package/dist/src/cli/dev/tui/target.d.ts +2 -0
- package/dist/src/cli/dev/tui/target.js +1 -1
- package/dist/src/cli/dev/tui/terminal-renderer.js +9 -9
- package/dist/src/cli/dev/tui/test/fake-setup-flow-renderer.js +1 -1
- package/dist/src/cli/dev/tui/tui.js +1 -1
- package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.d.ts +22 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources-policy.js +1 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources.d.ts +48 -0
- package/dist/src/cli/dev/tui/vercel-trusted-sources.js +1 -0
- package/dist/src/client/agent-info-schema.d.ts +532 -0
- package/dist/src/client/agent-info-schema.js +1 -0
- package/dist/src/client/client.js +1 -1
- package/dist/src/client/types.d.ts +11 -169
- package/dist/src/client/types.js +1 -1
- package/dist/src/compiled/.vendor-stamp.json +4 -4
- package/dist/src/compiled/@chat-adapter/slack/_slack-web-api.d.ts +1 -0
- package/dist/src/compiled/@chat-adapter/slack/blocks.d.ts +160 -0
- package/dist/src/compiled/@chat-adapter/slack/blocks.js +8 -0
- package/dist/src/compiled/@chat-adapter/slack/index.d.ts +28 -3
- package/dist/src/compiled/@chat-adapter/slack/index.js +26 -26
- package/dist/src/compiled/_chunks/node/chunk-AYN7QRWH-Csu8sG38.js +1 -0
- package/dist/src/compiled/_chunks/node/{dist-BQYUcBqu.js → dist-W8yle6rh.js} +3 -3
- package/dist/src/compiled/chat/index.d.ts +4 -4
- package/dist/src/compiled/chat/index.js +1 -1
- package/dist/src/compiled/chat/{jsx-runtime-CFq1K_Ve.d.ts → jsx-runtime-CzthIo1o.d.ts} +6 -1
- package/dist/src/internal/application/package.js +1 -1
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/lib/primitives.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/lib/schemas.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/aclaction.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/sdkvalidationerror.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsaction.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/models/updateprojectprojectsoptionsallowlist.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/defaultToZeroValue.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/fp.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/primitives.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/rfcdate.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/smartUnion.js +1 -0
- package/dist/src/node_modules/.pnpm/@vercel_sdk@1.28.1/node_modules/@vercel/sdk/esm/types/unrecognized.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/ZodError.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/errors.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/external.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/errorUtil.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/parseUtil.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/typeAliases.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/helpers/util.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/index.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/locales/en.js +1 -0
- package/dist/src/node_modules/.pnpm/zod@4.4.3/node_modules/zod/v3/types.js +1 -0
- package/dist/src/public/channels/slack/blocks.d.ts +3 -41
- package/dist/src/public/channels/slack/blocks.js +2 -3
- package/dist/src/public/channels/slack/defaults.js +3 -3
- package/dist/src/services/dev-client/client-options.js +1 -1
- package/dist/src/services/dev-client/credential-gate.d.ts +11 -6
- package/dist/src/services/dev-client/credential-gate.js +1 -1
- package/dist/src/services/dev-client/request-headers.d.ts +0 -12
- package/dist/src/services/dev-client/request-headers.js +1 -1
- package/dist/src/services/dev-client/vercel-auth-error.js +1 -1
- package/dist/src/setup/flows/model.d.ts +5 -5
- package/dist/src/setup/flows/model.js +1 -1
- package/dist/src/setup/flows/provider.d.ts +57 -0
- package/dist/src/setup/flows/provider.js +4 -0
- package/dist/src/setup/scaffold/create/project.js +1 -1
- package/dist/src/svelte/index.js +1 -1
- package/dist/src/svelte/use-eve-agent.js +1 -1
- package/dist/src/vue/index.js +1 -1
- package/dist/src/vue/use-eve-agent.js +1 -1
- package/docs/guides/client/overview.mdx +24 -0
- package/docs/guides/dev-tui.md +4 -4
- package/docs/guides/instrumentation.md +1 -1
- package/package.json +5 -4
- package/dist/src/chunks/use-eve-agent-DEm_Jg4k.js +0 -1343
- package/dist/src/chunks/use-eve-agent-DsXOQMFZ.js +0 -1313
- package/dist/src/setup/flows/vercel.d.ts +0 -37
- package/dist/src/setup/flows/vercel.js +0 -2
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { appendEnv } from "../append-env.js";
|
|
2
|
+
import type { Prompter, SelectOption } from "../prompter.js";
|
|
3
|
+
import { validateGatewayApiKey, type GatewayKeyValidation } from "../validate-gateway-key.js";
|
|
4
|
+
import { getVercelAuthStatus } from "../vercel-project.js";
|
|
5
|
+
import { runLinkFlow, type LinkFlowResult } from "./link.js";
|
|
6
|
+
export type ProviderConnection = "project" | "own-key" | "external";
|
|
7
|
+
export declare const PROVIDER_QUESTION = "Which model provider do you want to use?";
|
|
8
|
+
export declare const EXTERNAL_PROVIDER_INSTRUCTIONS_TITLE = "Using another model provider";
|
|
9
|
+
export declare const EXTERNAL_PROVIDER_INSTRUCTIONS: readonly string[];
|
|
10
|
+
/** Injected for tests; defaults to the real link flow, env write, and key check. */
|
|
11
|
+
export interface ProviderFlowDeps {
|
|
12
|
+
getVercelAuthStatus: typeof getVercelAuthStatus;
|
|
13
|
+
runLinkFlow: typeof runLinkFlow;
|
|
14
|
+
appendEnv: typeof appendEnv;
|
|
15
|
+
validateGatewayApiKey: typeof validateGatewayApiKey;
|
|
16
|
+
}
|
|
17
|
+
export type ProviderFlowResult = LinkFlowResult | {
|
|
18
|
+
kind: "external-provider";
|
|
19
|
+
};
|
|
20
|
+
type AcceptedGatewayKeyValidation = Exclude<GatewayKeyValidation, {
|
|
21
|
+
kind: "invalid";
|
|
22
|
+
}>;
|
|
23
|
+
/** A provider choice, including the accepted evidence for an inline key. */
|
|
24
|
+
export type ProviderPickerChoice = {
|
|
25
|
+
kind: "project";
|
|
26
|
+
} | {
|
|
27
|
+
kind: "external";
|
|
28
|
+
} | {
|
|
29
|
+
kind: "inline-key";
|
|
30
|
+
key: string;
|
|
31
|
+
validation: AcceptedGatewayKeyValidation;
|
|
32
|
+
};
|
|
33
|
+
/** Private Dev TUI request for the provider's one-screen chooser. */
|
|
34
|
+
export interface ProviderPickerRequest {
|
|
35
|
+
message: string;
|
|
36
|
+
options: readonly SelectOption<ProviderConnection>[];
|
|
37
|
+
initialValue: ProviderConnection;
|
|
38
|
+
validateInlineKey(key: string, signal: AbortSignal): Promise<GatewayKeyValidation>;
|
|
39
|
+
}
|
|
40
|
+
/** Renderer-owned provider chooser; only the Dev TUI invokes this flow. */
|
|
41
|
+
export type ProviderPicker = (request: ProviderPickerRequest) => Promise<ProviderPickerChoice | undefined>;
|
|
42
|
+
/**
|
|
43
|
+
* THE PROVIDER FLOW behind the dev TUI `/model` menu's provider row
|
|
44
|
+
* (`eve link` keeps {@link runLinkFlow}'s shape). One question chooses a
|
|
45
|
+
* project-backed AI Gateway connection, an `AI_GATEWAY_API_KEY`, or an
|
|
46
|
+
* external provider. The project branch runs the link flow in create-or-link
|
|
47
|
+
* mode, so a project-less agent can create its first project rather than
|
|
48
|
+
* dead-end on an empty list.
|
|
49
|
+
*/
|
|
50
|
+
export declare function runProviderFlow(input: {
|
|
51
|
+
appRoot: string;
|
|
52
|
+
prompter: Prompter;
|
|
53
|
+
signal?: AbortSignal;
|
|
54
|
+
picker?: ProviderPicker;
|
|
55
|
+
deps?: Partial<ProviderFlowDeps>;
|
|
56
|
+
}): Promise<ProviderFlowResult>;
|
|
57
|
+
export {};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import{__toESM}from"../../_virtual/_rolldown/runtime.js";import{require_picocolors}from"../../node_modules/.pnpm/picocolors@1.1.1/node_modules/picocolors/picocolors.js";import{appendEnv}from"../append-env.js";import{AI_GATEWAY_API_KEY_ENV_FILE,AI_GATEWAY_API_KEY_ENV_VAR,writeAiGatewayApiKey}from"../ai-gateway-api-key.js";import{WizardCancelledError}from"../step.js";import{withSpinner}from"../with-spinner.js";import{getVercelAuthStatus,vercelAuthBlockerReason}from"../vercel-project.js";import{runLinkFlow}from"./link.js";import{validateGatewayApiKey}from"../validate-gateway-key.js";var import_picocolors=__toESM(require_picocolors(),1);const PROVIDER_QUESTION=`Which model provider do you want to use?`,EXTERNAL_PROVIDER_INSTRUCTIONS_TITLE=`Using another model provider`,EXTERNAL_PROVIDER_INSTRUCTIONS=[`Set your provider's API key in ${AI_GATEWAY_API_KEY_ENV_FILE} — e.g. ANTHROPIC_API_KEY or OPENAI_API_KEY.`,'In agent/agent.ts, set `model` to a provider-authored model — e.g. `anthropic("claude-opus-4.8")` from `@ai-sdk/anthropic`.',`See https://eve.dev/docs/agent-config for details.`,"A running `eve dev` reloads env files automatically — no restart needed."];function projectConnectionOption(e){let t={value:`project`,label:`AI Gateway via Project`,hint:`Authenticates with AI Gateway automatically
|
|
2
|
+
in a new or existing project. No keys to manage.`},n=e===void 0?void 0:vercelAuthBlockerReason(e);return n===void 0?t:{...t,disabled:!0,disabledReason:n,disabledReasonTone:`warning`}}function providerOptions(e){return[projectConnectionOption(e),{value:`own-key`,label:`AI Gateway via ${AI_GATEWAY_API_KEY_ENV_VAR}`,hint:`> type your key`},{value:`external`,label:`Other providers`,hint:`Connect directly to a model provider
|
|
3
|
+
via OPENAI_API_KEY or ANTHROPIC_API_KEY.`}]}async function selectProvider(e){let t={message:PROVIDER_QUESTION,options:e.options,initialValue:e.initialValue,validateInlineKey:e.validateInlineKey};if(e.picker===void 0)throw Error(`The provider flow requires the Dev TUI provider picker.`);let n=await e.picker(t);if(n===void 0)throw new WizardCancelledError;return n}async function runProviderFlow(e){let{appRoot:t,prompter:r,signal:i}=e,o={getVercelAuthStatus,runLinkFlow,appendEnv,validateGatewayApiKey,...e.deps},s,c=`project`,l;try{for(;;){let n=await selectProvider({picker:e.picker,options:providerOptions(s),initialValue:c,validateInlineKey:(e,t)=>o.validateGatewayApiKey(e,i===void 0?t:AbortSignal.any([i,t]))});if(n.kind===`external`)return r.acknowledge?await r.acknowledge({message:EXTERNAL_PROVIDER_INSTRUCTIONS_TITLE,lines:EXTERNAL_PROVIDER_INSTRUCTIONS}):r.note(EXTERNAL_PROVIDER_INSTRUCTIONS.join(`
|
|
4
|
+
`),EXTERNAL_PROVIDER_INSTRUCTIONS_TITLE),{kind:`external-provider`};if(n.kind===`inline-key`){l=n;break}let a=await withSpinner(r,`Checking your Vercel login…`,()=>o.getVercelAuthStatus(t,{signal:i}));if(i?.throwIfAborted(),s=a,vercelAuthBlockerReason(s)!==void 0){c=`own-key`;continue}return await o.runLinkFlow({appRoot:t,prompter:r,signal:i,projectSelection:`create-or-link`})}}catch(e){if(e instanceof WizardCancelledError)return{kind:`cancelled`};throw e}let u=l.key.trim(),d=l.validation;i?.throwIfAborted(),d.kind===`inconclusive`?r.log.warning(`Couldn't reach the gateway to validate (${d.message}). Saving the key anyway.`):r.log.success(`${import_picocolors.default.green(`✓`)} ${import_picocolors.default.bold(`Valid key`)}`);let f=await writeAiGatewayApiKey({projectRoot:t,apiKey:u,appendEnv:o.appendEnv});return r.log.success(`Saved ${f.envKey} to ${f.envFile}.`),{kind:`done`,credential:f.envKey}}export{EXTERNAL_PROVIDER_INSTRUCTIONS,EXTERNAL_PROVIDER_INSTRUCTIONS_TITLE,PROVIDER_QUESTION,runProviderFlow};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{pinnedNodeEngineMajor}from"../../node-engine.js";import{pathExists,writeTextFile}from"../files.js";import{resolveVersionToken}from"../version-tokens.js";import{applyPackageManagerWorkspaceConfiguration,isPackageManagerWorkspaceMember,patchWorkspaceRootPackageJson}from"../workspace-root.js";import{SUPPORTED_AUTHORED_MODULE_FILE_EXTENSIONS}from"../update/module-files.js";import{WEB_APP_TEMPLATE_FILES}from"./web-template.js";import{basename,join,resolve}from"node:path";import{mkdir,readdir,stat}from"node:fs/promises";const CURRENT_DIRECTORY_PROJECT_NAME=`.`,ALLOWED_CREATE_IN_PLACE_ENTRIES=new Set([`.DS_Store`,`.git`,`.gitkeep`,`.hg`]),DEFAULT_AI_PACKAGE_VERSION=`7.0.0-beta.178`,DEFAULT_CONNECT_PACKAGE_VERSION=`0.2.2`,DEFAULT_ZOD_PACKAGE_VERSION=`4.4.3`,DEFAULT_EVE_PACKAGE_CONTRACT={version:`0.13.
|
|
1
|
+
import{pinnedNodeEngineMajor}from"../../node-engine.js";import{pathExists,writeTextFile}from"../files.js";import{resolveVersionToken}from"../version-tokens.js";import{applyPackageManagerWorkspaceConfiguration,isPackageManagerWorkspaceMember,patchWorkspaceRootPackageJson}from"../workspace-root.js";import{SUPPORTED_AUTHORED_MODULE_FILE_EXTENSIONS}from"../update/module-files.js";import{WEB_APP_TEMPLATE_FILES}from"./web-template.js";import{basename,join,resolve}from"node:path";import{mkdir,readdir,stat}from"node:fs/promises";const CURRENT_DIRECTORY_PROJECT_NAME=`.`,ALLOWED_CREATE_IN_PLACE_ENTRIES=new Set([`.DS_Store`,`.git`,`.gitkeep`,`.hg`]),DEFAULT_AI_PACKAGE_VERSION=`7.0.0-beta.178`,DEFAULT_CONNECT_PACKAGE_VERSION=`0.2.2`,DEFAULT_ZOD_PACKAGE_VERSION=`4.4.3`,DEFAULT_EVE_PACKAGE_CONTRACT={version:`0.13.3`,nodeEngine:`>=24`};function resolveEvePackageContract(e=DEFAULT_EVE_PACKAGE_CONTRACT){return{version:resolveVersionToken(`evePackage.version`,e.version),nodeEngine:resolveVersionToken(`evePackage.nodeEngine`,e.nodeEngine)}}function modelProviderSlug(e){let t=(e.split(`/`)[0]??``).replaceAll(/[^A-Za-z0-9._-]/gu,``);return t.length>0?t:`anthropic`}function byokProviderEnvVar(e){let t=modelProviderSlug(e).toUpperCase().replaceAll(/[^A-Z0-9]/gu,`_`);return`${/^[0-9]/.test(t)?`_`:``}${t}_API_KEY`}function agentTemplateFiles(e){return{"agent/agent.ts":BASE_AGENT_TEMPLATE.replaceAll(`__EVE_INIT_MODEL__`,e),"agent/channels/eve.ts":WEB_APP_TEMPLATE_FILES[`agent/channels/eve.ts`],"agent/instructions.md":AGENT_INSTRUCTIONS_TEMPLATE}}function renderTemplate(e,t){return e.replaceAll(`__EVE_INIT_APP_NAME__`,t.appName).replaceAll(`__EVE_INIT_MODEL__`,t.model).replaceAll(`__EVE_INIT_BYOK_PROVIDER__`,modelProviderSlug(t.model)).replaceAll(`__EVE_INIT_BYOK_ENV_VAR__`,byokProviderEnvVar(t.model)).replaceAll(`__EVE_INIT_PACKAGE_VERSION__`,formatEveDependencySpecifier(t.eveVersion)).replaceAll(`__EVE_INIT_AI_SDK_VERSION__`,t.aiPackageVersion).replaceAll(`__EVE_INIT_CONNECT_VERSION__`,t.connectPackageVersion).replaceAll(`__EVE_INIT_ZOD_VERSION__`,t.zodPackageVersion).replaceAll(`__EVE_INIT_TYPESCRIPT_VERSION__`,t.typescriptPackageVersion).replaceAll(`__EVE_INIT_TYPES_NODE_VERSION__`,t.nodeTypesVersion).replaceAll(`__EVE_INIT_NODE_ENGINE__`,t.nodeEngine)}function formatEveDependencySpecifier(e){return/^\d+\.\d+\.\d+(?:[-+][0-9A-Za-z-.]+)?$/.test(e)?`^${e}`:e}const BASE_AGENT_TEMPLATE=`import { defineAgent } from "eve";
|
|
2
2
|
|
|
3
3
|
export default defineAgent({
|
|
4
4
|
model: "__EVE_INIT_MODEL__",
|
package/dist/src/svelte/index.js
CHANGED
package/dist/src/vue/index.js
CHANGED
|
@@ -32,6 +32,15 @@ console.log(health.status, health.workflowId);
|
|
|
32
32
|
|
|
33
33
|
Non-2xx responses throw `ClientError`, which carries the HTTP `status` and response `body`.
|
|
34
34
|
|
|
35
|
+
## Inspect an agent
|
|
36
|
+
|
|
37
|
+
Use `info()` to inspect a development agent. The client parses and validates the complete response before returning it:
|
|
38
|
+
|
|
39
|
+
```ts
|
|
40
|
+
const info = await client.info();
|
|
41
|
+
console.log(info.agent.name, info.agent.model.id);
|
|
42
|
+
```
|
|
43
|
+
|
|
35
44
|
## Authentication
|
|
36
45
|
|
|
37
46
|
Pass `auth` when the [eve channel](../../channels/eve) route requires credentials:
|
|
@@ -59,6 +68,21 @@ const client = new Client({
|
|
|
59
68
|
});
|
|
60
69
|
```
|
|
61
70
|
|
|
71
|
+
For a Vercel OIDC-protected deployment, use `vercelOidc`. The client resolves the token once per request and sends it as both the bearer credential and Vercel's trusted-OIDC header:
|
|
72
|
+
|
|
73
|
+
```ts
|
|
74
|
+
import { getVercelOidcToken } from "@vercel/oidc";
|
|
75
|
+
|
|
76
|
+
const client = new Client({
|
|
77
|
+
host: "https://agent.example.com",
|
|
78
|
+
auth: {
|
|
79
|
+
vercelOidc: {
|
|
80
|
+
token: async () => await getVercelOidcToken(),
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
});
|
|
84
|
+
```
|
|
85
|
+
|
|
62
86
|
Use `headers` for route-specific credentials such as bypass tokens or tenant hints. Like `auth`, it can be static or dynamic:
|
|
63
87
|
|
|
64
88
|
```ts
|
package/docs/guides/dev-tui.md
CHANGED
|
@@ -16,7 +16,7 @@ On startup the TUI prints a brand line with your agent's name, plus a rotating t
|
|
|
16
16
|
Use /channels to add more ways to reach your agent.
|
|
17
17
|
```
|
|
18
18
|
|
|
19
|
-
If agent discovery reported problems, an error and warning count renders between the two lines. Instructions, tools, skills, and subagents are one `eve info` away, and `/help` lists every command. The TUI also runs a startup check. When the runtime confirms that no model provider is configured, it opens the `/model` provider
|
|
19
|
+
If agent discovery reported problems, an error and warning count renders between the two lines. Instructions, tools, skills, and subagents are one `eve info` away, and `/help` lists every command. The TUI also runs a startup check. When the runtime confirms that no model provider is configured, it opens the `/model` provider picker before the first prompt. Unknown or linked-but-incomplete credential states remain visible as an attention line, with each command's outcome hanging under it on a `⎿` connector.
|
|
20
20
|
|
|
21
21
|
## Reading the transcript
|
|
22
22
|
|
|
@@ -46,11 +46,11 @@ Each command echoes as an invocation line, asks through a bordered panel that ta
|
|
|
46
46
|
|
|
47
47
|
### Configure the model and provider
|
|
48
48
|
|
|
49
|
-
Bare `/model` opens the configure menu. When no provider is configured, it opens the provider
|
|
49
|
+
Bare `/model` opens the configure menu. When no provider is configured, it opens the provider picker directly and Esc returns to the configure menu. "Change model" runs the same searchable model picker setup uses (the Vercel AI Gateway catalog, pre-selected on the model the runtime is serving). A model change is written into your agent's authored source, and the command reports success only after eve confirms the new id. A completed model or provider change closes the menu and returns its result to the transcript; Done or Esc closes it without a change. `/model <provider/model-id>` applies one directly, skipping the menu.
|
|
50
50
|
|
|
51
|
-
The provider row opens
|
|
51
|
+
The provider row opens one menu: AI Gateway via a project, AI Gateway via `AI_GATEWAY_API_KEY`, or **Other providers**. The key option becomes a masked input when highlighted. Enter validates it without replacing the menu. A rejected key shows a red `⨯ Invalid key` beside the masked value; retrying or editing clears that result. With a non-empty key, the first Esc or Ctrl-C clears the input and the second cancels the menu. An accepted key is saved to `.env.local`. The project option asks for a Vercel team, opens that team's recent projects, and lets you search all projects for older matches. Vercel links the selected project, eve verifies its project ID, then pulls its environment into `.env.local`. The **Other providers** option shows direct-provider wiring instructions and leaves the existing setup untouched. The dev server reloads env files and refreshes the status bar automatically, with no restart needed.
|
|
52
52
|
|
|
53
|
-
The provider row demands attention (a bold yellow "Configure
|
|
53
|
+
The provider row demands attention (a bold yellow "Configure model access" with a yellow "Not configured" hint that dims when unselected and uses the terminal foreground when selected) until a link or gateway credential is detected, then names the connection afterward (for example "AI Gateway (Linked to my-project in my-team)"). Setup menus mark the cursor row with a padded, filled-arrow inverse label that inherits the row's accent: blue normally and yellow for warning rows. In stacked menus, the selected row's description appears directly beneath that option. The completed command's outcome stays in the transcript after the panel closes. When a turn fails because AI Gateway authentication is missing or stale, the error points you at `/model` directly.
|
|
54
54
|
|
|
55
55
|
### Add a channel
|
|
56
56
|
|
|
@@ -44,7 +44,7 @@ Export the result of `defineInstrumentation` as the default export.
|
|
|
44
44
|
|
|
45
45
|
Use the `setup` callback to register your OTel provider (for example `registerOTel` from `@vercel/otel`). The framework invokes it at server startup with the resolved agent name. `context.agentName` is resolved at compile time from your project (the package's `name`, falling back to the app directory name), so you never hard-code a service name.
|
|
46
46
|
|
|
47
|
-
Any OTel-compatible backend works (Braintrust, Honeycomb, Datadog, Jaeger). Install the exporter package you need and configure it in the callback.
|
|
47
|
+
Any OTel-compatible backend works (Braintrust, Raindrop, Arize, Honeycomb, Datadog, Jaeger). Install the exporter package you need and configure it in the callback.
|
|
48
48
|
|
|
49
49
|
Three more fields control what the AI SDK records inside those spans (see the AI SDK's [telemetry reference](https://ai-sdk.dev/docs/ai-sdk-core/telemetry)):
|
|
50
50
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eve",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.3",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Filesystem-first framework for durable backend AI agents that run anywhere.",
|
|
6
6
|
"keywords": [
|
|
@@ -273,8 +273,8 @@
|
|
|
273
273
|
"@ai-sdk/openai": "4.0.0-beta.74",
|
|
274
274
|
"@ai-sdk/otel": "1.0.0-beta.124",
|
|
275
275
|
"@ai-sdk/provider": "4.0.0-beta.19",
|
|
276
|
-
"@chat-adapter/slack": "4.
|
|
277
|
-
"@chat-adapter/state-memory": "4.
|
|
276
|
+
"@chat-adapter/slack": "4.31.0",
|
|
277
|
+
"@chat-adapter/state-memory": "4.31.0",
|
|
278
278
|
"@clack/core": "1.3.1",
|
|
279
279
|
"@nuxt/kit": "^4.0.0",
|
|
280
280
|
"@standard-schema/spec": "1.1.0",
|
|
@@ -285,13 +285,14 @@
|
|
|
285
285
|
"@vercel/detect-agent": "1.2.3",
|
|
286
286
|
"@vercel/oidc": "3.5.0",
|
|
287
287
|
"@vercel/sandbox": "2.2.1",
|
|
288
|
+
"@vercel/sdk": "1.28.1",
|
|
288
289
|
"@workflow/core": "5.0.0-beta.19",
|
|
289
290
|
"@workflow/errors": "5.0.0-beta.8",
|
|
290
291
|
"@workflow/world": "5.0.0-beta.10",
|
|
291
292
|
"@workflow/world-local": "5.0.0-beta.19",
|
|
292
293
|
"ai": "7.0.0-beta.178",
|
|
293
294
|
"autoevals": "0.0.132",
|
|
294
|
-
"chat": "4.
|
|
295
|
+
"chat": "4.31.0",
|
|
295
296
|
"chokidar": "5.0.0",
|
|
296
297
|
"commander": "14.0.3",
|
|
297
298
|
"emulate": "^0.6.0",
|