Files
openchamber/package.json
T
Bohdan Triapitsyn 0d603649dc perf(tooling): add automated streaming profiler
Adds `bun run profile:session`: creates a session, opens it in a real
browser, dispatches a prompt through the supported `openchamber session` CLI,
and records until the session reports itself idle. No input is synthesised, so
everything captured is the app reacting to its own event stream.

Streaming is judged by responsiveness rather than totals, so the report leads
with the long-task distribution, style recalculation and layout rates, frame
production, and the application's own stream counters.

Two failure modes are detected rather than reported as clean results. A session
belonging to a directory the browser is not viewing renders nothing and
produces a perfectly quiet profile, so the run verifies both new message
elements in the DOM and message-list render counters. And `RunTask` is only
emitted under the disabled-by-default timeline category, so a capture without
it reports zero long tasks; the missing-task case is now called out instead of
being shown as zero.

Metric helpers are shared with the idle profiler.
2026-08-03 15:24:30 +03:00

185 lines
7.5 KiB
JSON

{
"name": "openchamber-monorepo",
"version": "1.17.2",
"description": "OpenChamber monorepo workspace for web, ui, and desktop runtimes",
"private": true,
"type": "module",
"packageManager": "bun@1.3.14",
"workspaces": [
"packages/*"
],
"engines": {
"node": ">=22.0.0"
},
"keywords": [
"opencode",
"ai",
"coding",
"openchamber",
"cli"
],
"author": "Bohdan Triapitsyn",
"license": "MIT",
"scripts": {
"dev": "node ./scripts/dev-web-hmr.mjs",
"oc-dev": "node scripts/oc-dev.mjs",
"build": "bun run --sequential --filter '!@openchamber/mobile' build && bun run --cwd packages/mobile build:assets",
"build:web": "bun run --cwd packages/web build",
"build:ui": "bun run --cwd packages/ui build",
"build:electron": "bun run --cwd packages/electron build",
"build:mobile": "bun run --cwd packages/mobile build",
"type-check": "bun run --filter '*' type-check",
"type-check:web": "bun run --cwd packages/web type-check",
"type-check:ui": "bun run --cwd packages/ui type-check",
"type-check:electron": "bun run --cwd packages/electron type-check",
"type-check:mobile": "bun run --cwd packages/mobile type-check",
"lint": "bun run --filter '*' lint",
"lint:web": "bun run --cwd packages/web lint",
"lint:ui": "bun run --cwd packages/ui lint",
"lint:electron": "bun run --cwd packages/electron lint",
"lint:mobile": "bun run --cwd packages/mobile lint",
"clean": "bun run --filter '*' clean",
"changelog-card": "node scripts/changelog-card/generate.mjs",
"postinstall": "node ./fix-deprecation.js && patch-package",
"dev:web": "bun run --cwd packages/web build:watch",
"dev:web:server": "bun run --cwd packages/web dev:server:watch",
"dev:web:full": "node ./scripts/dev-web-full.mjs",
"dev:web:hmr": "node ./scripts/dev-web-hmr.mjs",
"start:web": "bun run --cwd packages/web start",
"pack:web": "bun pm pack --cwd packages/web",
"electron:dev": "node ./packages/electron/scripts/electron-dev.mjs",
"electron:dev:bundled": "OPENCHAMBER_ELECTRON_USE_BUNDLED_UI=1 node ./packages/electron/scripts/electron-dev.mjs",
"electron:build": "bun run --cwd packages/electron package",
"mobile:build": "bun run --cwd packages/mobile build",
"mobile:sync": "bun run --cwd packages/mobile sync",
"mobile:add:ios": "bun run --cwd packages/mobile add:ios",
"mobile:add:android": "bun run --cwd packages/mobile add:android",
"mobile:build:android:debug": "bun run --cwd packages/mobile build:android:debug",
"mobile:build:ios:simulator": "bun run --cwd packages/mobile build:ios:simulator",
"mobile:sim:boot": "bun run --cwd packages/mobile sim:boot",
"mobile:sim:install": "bun run --cwd packages/mobile sim:install",
"mobile:sim:launch": "bun run --cwd packages/mobile sim:launch",
"mobile:sim:run": "bun run --cwd packages/mobile sim:run",
"mobile:sim:dev": "bun run --cwd packages/mobile sim:dev",
"mobile:sim:serve": "bun run --cwd packages/mobile sim:serve",
"mobile:sim:list": "bun run --cwd packages/mobile sim:list",
"mobile:sim:kill": "bun run --cwd packages/mobile sim:kill",
"mobile:open:ios": "bun run --cwd packages/mobile open:ios",
"mobile:open:android": "bun run --cwd packages/mobile open:android",
"vscode:dev": "node ./scripts/dev-vscode.mjs",
"vscode:build": "bun run --cwd packages/vscode build",
"vscode:package": "bun run --cwd packages/vscode package",
"vscode:type-check": "bun run --cwd packages/vscode type-check",
"docs:validate": "node scripts/docs/validate-docs.mjs",
"dead-code": "bunx knip@5.80.0 --no-exit-code --include files,exports,nsExports,types,nsTypes,enumMembers,duplicates",
"doctor": "node scripts/react-doctor.mjs",
"profile:browser": "node scripts/profile-browser.mjs",
"icons:sprite": "node scripts/generate-file-type-sprite.mjs",
"icons:generate": "bun run scripts/generate-icon-sprite.mjs",
"themes:port:opencode": "tsx scripts/port-opencode-theme.ts",
"version:bump": "node scripts/bump-version.mjs",
"release:prepare": "bun run build && bun run type-check && bun run lint",
"release:test": "./scripts/test-release-build.sh",
"release:test:intel": "./scripts/test-release-build.sh x86_64",
"release:test:arm": "./scripts/test-release-build.sh aarch64",
"profile:idle": "node scripts/profile-idle.mjs",
"profile:session": "node scripts/profile-session.mjs"
},
"dependencies": {
"@base-ui/react": "^1.4.0",
"@codemirror/autocomplete": "^6.20.0",
"@codemirror/commands": "^6.10.1",
"@codemirror/lang-cpp": "^6.0.3",
"@codemirror/lang-css": "^6.3.1",
"@codemirror/lang-go": "^6.0.1",
"@codemirror/lang-html": "^6.4.11",
"@codemirror/lang-javascript": "^6.2.4",
"@codemirror/lang-json": "^6.0.2",
"@codemirror/lang-markdown": "^6.5.0",
"@codemirror/lang-python": "^6.2.1",
"@codemirror/lang-rust": "^6.0.2",
"@codemirror/lang-sql": "^6.10.0",
"@codemirror/lang-xml": "^6.1.0",
"@codemirror/lang-yaml": "^6.1.2",
"@codemirror/language": "6.12.2",
"@codemirror/lint": "^6.9.2",
"@codemirror/search": "^6.6.0",
"@codemirror/state": "^6.5.4",
"@codemirror/view": "6.39.13",
"@heroui/scroll-shadow": "^2.3.18",
"@heroui/system": "^2.4.23",
"@heroui/theme": "^2.4.23",
"@lezer/highlight": "^1.2.3",
"@octokit/rest": "^22.0.1",
"@opencode-ai/sdk": "1.18.11",
"@radix-ui/react-collapsible": "^1.1.12",
"@radix-ui/react-dialog": "^1.1.15",
"@radix-ui/react-dropdown-menu": "^2.1.16",
"@radix-ui/react-scroll-area": "^1.2.10",
"@radix-ui/react-select": "^2.2.6",
"@radix-ui/react-separator": "^1.1.7",
"@radix-ui/react-slot": "^1.2.3",
"@radix-ui/react-toggle": "^1.1.10",
"@radix-ui/react-tooltip": "^1.2.8",
"@xenova/transformers": "^2.17.2",
"@zumer/snapdom": "^2.12.8",
"bun-pty": "^0.4.5",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"express": "^5.1.0",
"ghostty-web": "0.4.0",
"http-proxy-middleware": "^3.0.5",
"next-themes": "^0.4.6",
"node-pty": "1.2.0-beta.12",
"react": "^19.1.1",
"react-dom": "^19.1.1",
"react-markdown": "^10.1.0",
"remark-gfm": "^4.0.1",
"simple-git": "^3.36.0",
"sonner": "^2.0.7",
"tailwind-merge": "^3.3.1",
"yaml": "^2.8.1",
"zod": "^4.3.6",
"zustand": "^5.0.8"
},
"overrides": {
"@codemirror/language": "6.12.2",
"@codemirror/view": "6.39.13"
},
"devDependencies": {
"@clack/prompts": "^1.1.0",
"@eslint/js": "^9.33.0",
"@tailwindcss/postcss": "^4.0.0",
"@types/dom-speech-recognition": "^0.0.12",
"@types/node": "^24.3.1",
"@types/react": "^19.1.10",
"@types/react-dom": "^19.1.7",
"@vitejs/plugin-react": "^5.0.0",
"autoprefixer": "^10.4.21",
"babel-plugin-react-compiler": "^1.0.0",
"concurrently": "^9.2.1",
"cors": "^2.8.5",
"cross-env": "^7.0.3",
"eslint": "^9.33.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-refresh": "^0.5.0",
"globals": "^16.3.0",
"node-addon-api": "7.1.1",
"nodemon": "^3.1.7",
"patch-package": "^8.0.0",
"@remixicon/react": "^4.7.0",
"sharp": "^0.35.0",
"tailwindcss": "^4.0.0",
"tsx": "^4.20.6",
"tw-animate-css": "^1.3.8",
"typescript": "~5.9.0",
"typescript-eslint": "^8.39.1",
"vite": "^7.1.2"
},
"patchedDependencies": {
"@tanstack/virtual-core@3.17.3": "bun-patches/@tanstack+virtual-core+3.17.3.patch",
"bun-pty@0.4.8": "bun-patches/bun-pty@0.4.8.patch"
}
}