Skip to content

feat(appkit): auto-start app under test for agent evals (stack 6/6) - #482

Open
MarioCadenas wants to merge 4 commits into
pr/agent-evals-5-docsfrom
pr/agent-evals-6-webserver
Open

feat(appkit): auto-start app under test for agent evals (stack 6/6)#482
MarioCadenas wants to merge 4 commits into
pr/agent-evals-5-docsfrom
pr/agent-evals-6-webserver

Conversation

@MarioCadenas

Copy link
Copy Markdown
Collaborator

Stack 6/6 · targets pr/agent-evals-5-docs (review after #481).

Playwright-style auto-start for the app under test, so appkit agent eval no longer requires a manually-started server.

  • Root evals.config.ts (project root, via defineEvalConfig) carries run-wide settings — baseUrl and webServer { command, url?, timeoutMs?, reuseExisting? } — plus defaults for maxConcurrency/timeoutMs. loadRootEvalConfig/findRootEvalConfig exposed from @databricks/appkit/beta. The per-agent evals.config.ts keeps its narrow role (additive — nothing removed).
  • CLI lifecycle: resolves baseUrl/concurrency/timeout as flag > root config > default; before running, reuses a server already answering at url (default) or spawns command, polls until any HTTP response or timeout, then SIGTERMs the process group in a finally. A reused server is left running.
  • --url default 30008000 (the port these apps actually serve on).

Design was grilled to resolve scope (root config, spawn in CLI not the library, readiness = any HTTP response, reuse-existing default true). Verified end-to-end against dev-playground: cold start boots + tears down; warm start reuses and leaves the dev server up.

@MarioCadenas
MarioCadenas requested a review from a team as a code owner July 17, 2026 20:06
@MarioCadenas
MarioCadenas requested review from pkosiec and removed request for a team July 17, 2026 20:06
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has had no activity for 23 days and has been marked as stale. It will be closed in 7 days if there is no further activity. Add a comment, push a commit, or apply the no-stale label to keep it open.

@github-actions github-actions Bot added the stale label Aug 13, 2026
@github-actions

Copy link
Copy Markdown
Contributor

This pull request has been automatically closed because it had no activity for a month. Feel free to reopen it if you would like to continue the work.

@github-actions github-actions Bot closed this Aug 21, 2026
@MarioCadenas MarioCadenas reopened this Aug 21, 2026
@github-actions github-actions Bot removed the stale label Aug 22, 2026
@MarioCadenas
MarioCadenas force-pushed the pr/agent-evals-6-webserver branch from fa502c0 to 93cc379 Compare September 1, 2026 16:33
@MarioCadenas
MarioCadenas force-pushed the pr/agent-evals-6-webserver branch from 93cc379 to 7f42199 Compare September 1, 2026 17:27
@MarioCadenas
MarioCadenas force-pushed the pr/agent-evals-6-webserver branch from 7f42199 to 2351785 Compare September 2, 2026 09:07
@MarioCadenas
MarioCadenas force-pushed the pr/agent-evals-6-webserver branch from 2351785 to 8676d5e Compare September 3, 2026 09:58
@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

📦 Bundle size report

Compared against bundle-size-baseline.json (main).

@databricks/appkit ⚠️ over budget

npm tarball (packed): 1.1 MB (+62 KB) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 1.1 MB (+51 KB) 403 KB (+21 KB)
Type declarations 419 KB (+34 KB) 151 KB (+14 KB)
Source maps 2.2 MB (+104 KB) 755 KB (+40 KB)
Other 11 KB 3.7 KB
Total 3.8 MB (+188 KB) 1.3 MB (+75 KB)
Per-entry composition (own code — deps external (as shipped))
Entry Initial (gz) Lazy (gz) Total (gz) node_modules (min) Own code (min)
. 95 KB (-1 B) 2.5 KB 98 KB (-1 B) external 313 KB
./beta 89 KB (+12 KB) 455 B (-1 B) 89 KB (+12 KB) external 267 KB (+38 KB)
./testing 17 KB 0 B 17 KB external 51 KB
./tsdown 520 B 0 B 520 B external 813 B
./type-generator 23 KB 0 B 23 KB external 65 KB

Chunks:

Entry Chunk Load Size (gz)
. index.js initial 91 KB
. utils.js initial 4.0 KB
. remote-tunnel-manager.js lazy 2.5 KB
./beta beta.js initial 73 KB
./beta stream-manager.js initial 5.8 KB
./beta wide-event-emitter.js initial 3.2 KB
./beta databricks.js initial 3.2 KB
./beta configuration.js initial 2.2 KB
./beta service-context.js initial 1.3 KB
./beta client.js initial 434 B
./beta client-options.js initial 219 B
./beta supervisor-api.js lazy 192 B
./beta databricks.js lazy 141 B
./beta index.js lazy 122 B
./testing index.js initial 17 KB
./tsdown index.js initial 520 B
./type-generator index.js initial 23 KB

@databricks/appkit-ui

npm tarball (packed): 350 KB (-4 B) — gzipped download (dist + bin; excludes release-only docs/NOTICE).

dist raw gzip
JS (runtime) 395 KB 132 KB
Type declarations 229 KB 84 KB (-1 B)
Source maps 766 KB 253 KB
CSS 16 KB 3.2 KB
Total 1.4 MB 473 KB (-1 B)
Per-entry composition (consumer bundle — deps bundled, peerDeps external)
Entry Initial (gz) Lazy (gz) Total (gz) node_modules (min) Own code (min)
./js 5.3 KB 49 KB 55 KB 208 KB 14 KB
./js/beta 20 B 0 B 20 B 0 B 0 B
./react 432 KB 49 KB 481 KB 1.3 MB 177 KB
./react/beta 1.0 KB 0 B 1.0 KB 0 B 1.9 KB

Chunks:

Entry Chunk Load Size (gz)
./js index.js initial 5.2 KB
./js chunk initial 120 B
./js apache-arrow lazy 49 KB
./js/beta beta.js initial 20 B
./react index.js initial 430 KB
./react tslib initial 2.1 KB
./react apache-arrow lazy 49 KB
./react/beta beta.js initial 1.0 KB

⚠️ Over budget: a package's shipped tarball, or a browser entry's consumer bundle (deps included), grew by more than 5% (and >10 KB). This check will fail — reduce the size, or acknowledge the increase by updating bundle-size-baseline.json.

@github-actions

github-actions Bot commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

🤖 AppKit PR bot

🔬 Run evals

Start an eval for this PR from the evals-monitor app: Go to Evals Monitor →

📦 Try this PR's app template

Scaffolds a new app from this PR's SDK build. Run it in any folder (requires the GitHub CLI — gh auth login — and the Databricks CLI):

gh run download 33778299865 -R databricks/appkit -n appkit-template-0.71.0-pr.742bcb9-pr-agent-evals-6-webserver-482 -D appkit-pr-482 \
  && unzip -o "appkit-pr-482/appkit-template-0.71.0-pr.742bcb9-pr-agent-evals-6-webserver-482.zip" -d "appkit-pr-482" \
  && databricks apps init --template "appkit-pr-482"

The template pins @databricks/appkit and @databricks/appkit-ui to tarballs built from this branch, so the scaffolded app runs against this PR's code.

@MarioCadenas
MarioCadenas force-pushed the pr/agent-evals-6-webserver branch from 8676d5e to 6fd47e9 Compare September 3, 2026 11:59
@MarioCadenas
MarioCadenas force-pushed the pr/agent-evals-6-webserver branch 2 times, most recently from 634fa5a to 442a29b Compare September 3, 2026 15:37
Add a Playwright-style `webServer` so `appkit agent eval` can boot the app
itself instead of requiring a server to be running.

- Root `evals.config.ts` (project root, via defineEvalConfig) carries run-wide
  settings: `baseUrl` + `webServer { command, url?, timeoutMs?, reuseExisting? }`.
  appkit exposes `loadRootEvalConfig` / `findRootEvalConfig`; the per-agent
  config keeps its narrow maxConcurrency/timeoutMs role.
- CLI resolves baseUrl/concurrency/timeout as flag > root config > default, and
  before running: reuses a server already answering at `url` (default) or spawns
  `command`, polls until any HTTP response or timeout, then SIGTERMs the process
  group in a finally. A reused server is left untouched.
- `--url` default changed 3000 → 8000 (the port these apps actually use).

Verified end-to-end against dev-playground: cold start boots + tears down; warm
start reuses and leaves the dev server running.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
…ixtures

findRootEvalConfig referenced an isFile helper that the eval-discovery refactor
had dropped; use existsSync (as discoverEvalConfigs does). Also align the config
discovery test fixtures to the server/agents layout the runner now uses.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
Regenerate the committed typedoc api docs against the rebased tree so the
sidebar matches the generated pages (adds Function.defineEvalConfig, drops
removed symbols like runBounded), fixing the docs build.

Signed-off-by: MarioCadenas <MarioCadenas@users.noreply.github.com>
@MarioCadenas
MarioCadenas force-pushed the pr/agent-evals-6-webserver branch from 9be34cd to 114de54 Compare September 3, 2026 16:23
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.

1 participant