Skip to content

feat(eve): consolidate model provider onboarding#166

Merged
ruiconti merged 9 commits into
mainfrom
rui/model-provider-onboarding
Jun 23, 2026
Merged

feat(eve): consolidate model provider onboarding#166
ruiconti merged 9 commits into
mainfrom
rui/model-provider-onboarding

Conversation

@ruiconti

@ruiconti ruiconti commented Jun 21, 2026

Copy link
Copy Markdown
Contributor

What changed

  • Replace the two-step Vercel provider flow with one three-choice picker: AI Gateway through a Vercel project, an inline AI_GATEWAY_API_KEY, or direct-provider setup.
  • Rename the setup flow from vercel to provider, update /model setup behavior, add a patch changeset, and revise the Dev TUI guide.

Picker behavior

The inline-key interaction is private to the Dev TUI, not a Prompter API change. Its state machine masks the key with a block cursor, aborts obsolete validation, keeps only the latest result, and clears a non-empty entry before Esc/Ctrl-C cancels. The selected option keeps its description visible, selected hints use the terminal foreground, and long invalid keys retain their red failure in a narrow panel.

Project setup continues through the existing create-or-link flow. The direct-provider choice shows configuration instructions and preserves the current provider state.

Model-access state

Provider changes reload local env files and refresh model access. The runner normalizes newly loaded local gateway credential evidence once, then gives that same snapshot to both setup detection and the persistent status bar. This fixes the stale ⚠ AI Gateway label after a valid local key is saved, while retaining the committed-write refresh when an interrupt races the setup command.

Scope

This targets main directly. The public Prompter contract is unchanged; the picker adapter is private to the Dev TUI.

@vercel

vercel Bot commented Jun 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
eve-docs Ready Ready Preview, Comment, Open in v0 Jun 23, 2026 4:24pm

@ruiconti ruiconti marked this pull request as draft June 21, 2026 18:44
@ruiconti ruiconti force-pushed the rui/model-onboarding-tui-foundations branch from 53d80bf to d2664db Compare June 21, 2026 18:45
@ruiconti ruiconti force-pushed the rui/model-provider-onboarding branch from d944790 to 1cc623c Compare June 21, 2026 18:45
@ruiconti ruiconti force-pushed the rui/model-onboarding-tui-foundations branch 2 times, most recently from 7846107 to 599b39a Compare June 22, 2026 16:36
Base automatically changed from rui/model-onboarding-tui-foundations to main June 22, 2026 17:48
ruiconti added 3 commits June 22, 2026 21:58
Signed-off-by: Rui Conti <ruiconti@gmail.com>
Replace full options/menu toEqual arrays in provider.test.ts and model.test.ts with assertions on the behavioral fields only (value, disabled, data-carrying hints, notices). Exact label/hint/description copy is already exercised at the renderer layer, so pinning it twice only made the flow tests brittle to cosmetic edits.

Delete four tests fully covered by a sibling or the editable-select reducer: setup-panel's build-phase pulse (covered by the open-question pulse test), selected-stacked-hint (covered by the yellow-hint foreground/dim test), dynamic-hint (covered by the hovered-editable-row test), and terminal-renderer's untouched-editable-row submit (covered by the edit-and-submit test).

No control-flow coverage removed; -175 net lines, all touched suites green, typecheck/lint/fmt clean.

Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>
@github-actions

github-actions Bot commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Bundle + Package Summary: apps/fixtures/weather-agent

Key takeaways

  • No notable deltas vs main (b29e2ae).

Delta vs main (b29e2ae)

Area Metric Baseline Current Delta
Package Packed tarball 3.35 MB 3.35 MB +3.5 kB ⚠️
Package Unpacked publish size 12.16 MB 12.17 MB +11.0 kB ⚠️
Package Installed footprint 52.36 MB 52.37 MB +11.0 kB ⚠️
Package Published files 2249 2251 +2
Package Installed files 5454 5456 +2
Runtime Unique function payloads 2 2 0
Runtime Total function bytes 9.35 MB 9.35 MB -176 B ✅
Runtime Public routes 9 9 0
Changed function payloads vs main (b29e2ae) (2)
Function Status Baseline Current Delta Route changes
functions/__server.func changed 3.87 MB 3.87 MB -144 B ✅ none
functions/.well-known/workflow/v1/flow.func changed 5.48 MB 5.48 MB -32 B ✅ none
Build Metadata
  • Preset: vercel
  • Nitro: nitro@3.0.260610-beta
  • Output directory: apps/fixtures/weather-agent/.vercel/output
  • Build metadata timestamp: 2026-06-23T16:24:55.667Z
  • Route aliases: 9 public, 1 internal (10 total aliases)
  • Vercel routes in config: 10
  • Severity legend: 🔴 dominant/large, 🟠 notable, 🟡 watch, ⚪ small
Package Drill-Down

Package Details

  • Package: eve@0.13.1
  • Package directory: packages/eve
  • Tarball: 3.35 MB (eve-0.13.1.tgz)
  • Unpacked payload: 12.17 MB across 2251 published files
  • Installed footprint: 52.37 MB across 5456 installed files
  • Installed root package: 11.06 MB
  • Installed dependencies: 41.32 MB
  • Runtime dependencies: 1
  • Peer dependencies: 12 (11 optional)

Installed footprint is measured from an isolated temporary npm install of the packed tarball.

Heavy installed dependencies

  • @rolldown/binding-linux-x64-gnu: 20.61 MB (39.4%)
  • eve: 11.06 MB (21.1%)
  • ai: 6.20 MB (11.8%)
  • zod: 4.97 MB (9.5%)
  • nitro: 2.41 MB (4.6%)
Publish payload breakdown
Published file size
🟠 dist/src/compiled/experimental-ai-sdk-code-mo... [####....................] 1.51 MB 12.4%
🟡 dist/src/compiled/@workflow/core/runtime.js      [##......................] 775.4 kB 6.4%
🟡 dist/src/compiled/@vercel/sandbox/index.js       [##......................] 632.0 kB 5.2%
🟡 dist/src/compiled/@chat-adapter/slack/index.js   [#.......................] 436.9 kB 3.6%
🟡 dist/src/compiled/_chunks/workflow/attribute-... [#.......................] 370.9 kB 3.0%
🔴 Other published files                            [########################] 8.45 MB 69.4%
Installed footprint breakdown
Installed package size
🔴 @rolldown/binding-linux-x64-gnu [########################] 20.61 MB 39.4%
🔴 eve                             [#############...........] 11.06 MB 21.1%
🔴 ai                              [#######.................] 6.20 MB 11.8%
🟠 zod                             [######..................] 4.97 MB 9.5%
🟠 nitro                           [###.....................] 2.41 MB 4.6%
🟡 rolldown                        [#.......................] 771.0 kB 1.5%
🔴 Other installed packages        [#######.................] 6.37 MB 12.2%
Runtime dependencies (1)
Package Range Notes
nitro 3.0.260610-beta
Peer dependencies (12)
Package Range Notes
@opentelemetry/api ^1.0.0 optional peer
@sveltejs/kit ^2.0.0 optional peer
ai catalog:
braintrust ^3.0.0 optional peer
just-bash ^3.0.0 optional peer
microsandbox ^0.5.0 optional peer
next ^16.0.0 optional peer
nuxt ^4.0.0 optional peer
react ^19.0.0 optional peer
svelte ^5.0.0 optional peer
vite ^8.0.0 optional peer
vue ^3.5.0 optional peer
Function Drill-Down

Payload Size Graph

Unique function payload size and share of total
🔴 functions/.well-known/workflow/v1/flow.func     [########################] 5.48 MB 58.6%
🔴 functions/__server.func                         [#################.......] 3.87 MB 41.4%

Top Function Payloads

🟠 functions/.well-known/workflow/v1/flow.func • 1 public route • 5.48 MB
Metric Value
Public routes /.well-known/workflow/v1/flow
Runtime nodejs24.x
Handler index.mjs
Payload 5.48 MB
Function files 5.48 MB across 27 files
Traced dependencies 0 B
Signal 🟠 Bundled file __eve_nitro_handler__.mjs is 1.51 MB (27.6%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 __eve_nitro_handler__.mjs              [########################] 1.51 MB 27.6%
🟠 _chunks/runtime.mjs                    [###############.........] 958.4 kB 17.5%
🟡 _chunks/sandbox.mjs                    [############............] 766.0 kB 14.0%
🟡 _chunks/attribute-changes-Bi5DLT8S.mjs [########................] 472.2 kB 8.6%
🟡 _chunks/dist-DTchiX0N.mjs              [#######.................] 460.6 kB 8.4%
🟠 Other bundled files                    [#####################...] 1.31 MB 24.0%

🧾 Vercel Config

{
  "handler": "index.mjs",
  "launcherType": "Nodejs",
  "shouldAddHelpers": false,
  "supportsResponseStreaming": true,
  "runtime": "nodejs24.x",
  "environment": {
    "NODE_OPTIONS": "--experimental-require-module",
    "WORKFLOW_QUEUE_NAMESPACE": "eve"
  },
  "maxDuration": "max",
  "experimentalTriggers": [
    {
      "type": "queue/v2beta",
      "topic": "__eve_wkf_workflow_*",
      "consumer": "default",
      "retryAfterSeconds": 5,
      "initialDelaySeconds": 0
    }
  ]
}

🟠 functions/__server.func • 8 public routes, 1 internal alias • 3.87 MB
Metric Value
Public routes /
/eve/v1/callback/[token]
/eve/v1/connections/[name]/callback/[token]
/eve/v1/health
/eve/v1/info
/eve/v1/session
/eve/v1/session/[sessionId]
/eve/v1/session/[sessionId]/stream
Internal aliases /__server
Runtime nodejs24.x
Handler index.mjs
Payload 3.87 MB
Function files 3.87 MB across 21 files
Traced dependencies 0 B
Signal 🟠 Bundled file index.mjs is 1.40 MB (36.3%)

🟠 🔎 Dependency Analysis

📦 Bundled files:

Bundled file size
🟠 index.mjs                              [########################] 1.40 MB 36.3%
🟠 _chunks/runtime.mjs                    [###############.........] 875.8 kB 22.6%
🟠 _chunks/sandbox.mjs                    [#############...........] 766.0 kB 19.8%
🟡 _chunks/attribute-changes-Bi5DLT8S.mjs [########................] 448.5 kB 11.6%
⚪ _libs/zod.mjs                          [##......................] 114.2 kB 3.0%
🟡 Other bundled files                    [####....................] 258.8 kB 6.7%

🧾 Vercel Config

{
  "handler": "index.mjs",
  "launcherType": "Nodejs",
  "shouldAddHelpers": false,
  "supportsResponseStreaming": true,
  "runtime": "nodejs24.x"
}

Signed-off-by: Rui Conti <ruiconti@gmail.com>
@ruiconti ruiconti marked this pull request as ready for review June 23, 2026 15:42
Signed-off-by: Rui Conti <ruiconti@gmail.com>
ruiconti added 2 commits June 23, 2026 12:08
Reshape ModelProviderAccess from a status flag into a kind-discriminated
union (unknown | external | gateway{runtime}). Gateway-credential evidence now
keys off the compiled model routing rather than the endpoint alone: a model
counts as gateway-routed only when routing.kind is "gateway", a freshly loaded
AI_GATEWAY_API_KEY outranks a stale OIDC endpoint, and endpoint reuse requires
the same credential. Boot detection maps a disconnected gateway to "model
provider not linked"/"credentials missing" and no longer infers configuration
from a bare local credential.

Signed-off-by: Rui Conti <ruiconti@gmail.com>
…ne-edit variant

The setup select panel carried two near-identical variants: editable
(task-list layout + in-place rename field) and provider (stacked layout +
masked key field with validation phases). Both are one idea — a menu row that
hosts an inline editor — modeled as separate layout siblings. Collapse them
into a single inline-edit variant carrying an explicit layout plus a
discriminated editor payload (rename | key). Drops the parallel provider field
from SelectPresentation and the provider: undefined boilerplate across the
other cases, folds the two row renderers behind one inlineEditOption dispatch,
and merges the two footer-hint branches. Pure refactor; no behavior change.

Signed-off-by: Rui Conti <ruiconti@gmail.com>
Signed-off-by: Rui Conti <ruiconti@gmail.com>
@ruiconti ruiconti merged commit d82e8d1 into main Jun 23, 2026
37 checks passed
@ruiconti ruiconti deleted the rui/model-provider-onboarding branch June 23, 2026 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants