Files
BrowserOS/packages/browseros-agent/apps/server/package.json
shivammittal274 e136094305 chore(eval): instrument server startup to root-cause dev CI health-check timeouts
Three diagnostics + one config swap to investigate why the eval-weekly
workflow has been failing on dev since 2026-04-25 with "Server health
check timed out" (every worker, every retry).

Background:
- Last successful weekly eval on dev: 2026-04-18 (sha f5a2b73)
- Since then, ~30 server commits landed including Lima/VM runtime,
  OpenClaw service, ACL system, ACP SDK — 108 server files changed,
  ~13K LOC added.
- Server process spawns cleanly in CI (PID logged) but never binds
  /health within the 30s eval-side timeout. Static analysis finds no
  obvious blocker; we need runtime evidence.

Changes:

1. apps/server/package.json — add `start:ci` script (no `--watch`).
   The default `start` uses `bun --watch` which forks a child process
   that watches every file in the import graph. Dev's graph is ~108
   files larger than main's; on a cold CI runner the watcher setup is a
   plausible source of multi-second startup overhead.

2. apps/eval/src/runner/browseros-app-manager.ts:
   - Use `start:ci` when `process.env.CI` is set (true on
     GitHub-hosted runners by default), else `start`.
   - Capture per-worker server stderr to /tmp/browseros-server-logs/
     instead of ignoring it. Without this we have no visibility into
     why the server is hung pre-/health.
   - Bump SERVER_HEALTH_TIMEOUT_MS 30s -> 90s. Dev's larger module
     graph may simply need more cold-start time on CI.

3. .github/workflows/eval-weekly.yml — upload the server logs dir as a
   workflow artifact (always, not just on success) so we can post-mortem
   any startup failure on the next run.

4. configs/agisdk-real-smoke.json — swap K2.5 from OpenRouter ->
   Fireworks (bypasses the OpenRouter per-key spend cap that has been
   eating recent runs) and drop num_workers 10 -> 4 (well below the
   Fireworks per-account TPM threshold that overwhelmed the original
   2026-04-23 run).

Plan: trigger the eval-weekly workflow on this branch with the agisdk
config and observe (a) whether it gets past server startup, and
(b) if it doesn't, what the captured server stderr says.
2026-04-29 22:34:32 +05:30

133 lines
4.5 KiB
JSON

{
"name": "@browseros/server",
"version": "0.0.92",
"description": "BrowserOS server",
"type": "module",
"main": "./src/index.ts",
"bin": {
"browseros-server": "./src/index.ts"
},
"scripts": {
"start": "bun --watch --env-file=.env.development src/index.ts",
"start:ci": "bun --env-file=.env.development src/index.ts",
"build": "bun ../../scripts/build/server.ts --target=all",
"test": "bun run test:all",
"test:all": "bun run ./tests/__helpers__/run-test-group.ts all",
"test:agent": "bun run ./tests/__helpers__/run-test-group.ts agent",
"test:api": "bun run ./tests/__helpers__/run-test-group.ts api",
"test:browser": "bun run ./tests/__helpers__/run-test-group.ts browser",
"test:cdp": "bun run test:browser",
"test:core": "bun run ./tests/__helpers__/run-test-group.ts core",
"test:integration": "bun run ./tests/__helpers__/run-test-group.ts integration",
"test:lib": "bun run ./tests/__helpers__/run-test-group.ts lib",
"test:root": "bun run ./tests/__helpers__/run-test-group.ts root",
"test:skills": "bun run ./tests/__helpers__/run-test-group.ts skills",
"test:tools": "bun run ./tests/__helpers__/run-test-group.ts tools",
"test:tools:acl": "bun run test:cleanup && bun --env-file=.env.development test ./tests/tools/acl-scorer.test.ts",
"test:tools:filesystem": "bun run test:cleanup && bun --env-file=.env.development test ./tests/tools/filesystem",
"test:tools:input": "bun run test:cleanup && bun --env-file=.env.development test ./tests/tools/input.test.ts",
"test:cleanup": "./tests/__helpers__/cleanup.sh",
"typecheck": "tsc --noEmit",
"devtools": "bunx @ai-sdk/devtools"
},
"exports": {
".": {
"types": "./src/rpc.ts",
"import": "./src/rpc.ts"
},
"./agent": {
"types": "./src/agent/ai-sdk-agent.ts",
"default": "./src/agent/ai-sdk-agent.ts"
},
"./agent/types": {
"types": "./src/agent/types.ts",
"default": "./src/agent/types.ts"
},
"./agent/errors": {
"types": "./src/agent/errors.ts",
"default": "./src/agent/errors.ts"
},
"./lib/clients/gateway": {
"types": "./src/lib/clients/gateway.ts",
"default": "./src/lib/clients/gateway.ts"
},
"./agent/tool-loop": {
"types": "./src/agent/ai-sdk-agent.ts",
"default": "./src/agent/ai-sdk-agent.ts"
},
"./agent/tool-loop/provider-factory": {
"types": "./src/agent/provider-factory.ts",
"default": "./src/agent/provider-factory.ts"
},
"./browser": {
"types": "./src/browser/browser.ts",
"default": "./src/browser/browser.ts"
},
"./browser/backends/cdp": {
"types": "./src/browser/backends/cdp.ts",
"default": "./src/browser/backends/cdp.ts"
},
"./tools/registry": {
"types": "./src/tools/registry.ts",
"default": "./src/tools/registry.ts"
}
},
"dependencies": {
"@agentclientprotocol/sdk": "0.21.0",
"@ai-sdk/amazon-bedrock": "^4.0.62",
"@ai-sdk/anthropic": "^3.0.46",
"@ai-sdk/azure": "^3.0.31",
"@ai-sdk/devtools": "^0.0.15",
"@ai-sdk/google": "^3.0.30",
"@ai-sdk/mcp": "^1.0.21",
"@ai-sdk/openai": "^3.0.30",
"@ai-sdk/openai-compatible": "^2.0.30",
"@ai-sdk/provider": "^3.0.8",
"@browseros/cdp-protocol": "workspace:*",
"@browseros/shared": "workspace:*",
"@google/gemini-cli-core": "^0.16.0",
"@google/genai": "1.30.0",
"@hono/mcp": "^0.2.3",
"@hono/node-server": "^1.19.6",
"@hono/zod-validator": "^0.4.3",
"@huggingface/transformers": "^3.4.0",
"@modelcontextprotocol/sdk": "^1.27.1",
"@openrouter/ai-sdk-provider": "^2.2.3",
"@sentry/bun": "^10.31.0",
"acpx": "0.6.1",
"ai": "^6.0.94",
"chrome-devtools-frontend": "^1.0.1577886",
"commander": "^14.0.1",
"core-js": "3.45.1",
"debug": "4.4.3",
"eventsource-parser": "^3.0.0",
"fuse.js": "^7.1.0",
"gray-matter": "^4.0.3",
"hono": "^4.12.3",
"jimp": "^1.6.0",
"klavis": "^2.15.0",
"pino": "^9.6.0",
"posthog-node": "^4.17.0",
"puppeteer-core": "24.23.0",
"ws": "^8.18.0",
"zod": "^3.24.2",
"zod-from-json-schema": "^0.1.0"
},
"devDependencies": {
"@types/bun": "1.3.5",
"@types/debug": "^4.1.12",
"@types/node": "^24.3.3",
"@types/sinon": "^21.0.0",
"@types/ws": "^8.5.13",
"async-mutex": "^0.5.0",
"pino-pretty": "^13.0.0",
"puppeteer": "24.23.0",
"sinon": "^21.0.1",
"typescript": "^5.9.2"
},
"optionalDependencies": {
"chrome-devtools-mcp": "latest"
},
"license": "AGPL-3.0-or-later"
}