mirror of
https://github.com/getpaseo/paseo.git
synced 2026-10-23 17:52:49 +00:00
* fix(server): open worktree.terminals when a workspace is created on its own runWorktreeSetupInBackground only opened the paseo.json worktree.terminals when its caller passed runAutoTerminals, and only the fork-PR "allow setup" handler did. workspace.create, the request the New Workspace screen sends, ran worktree.setup and then skipped the terminals. Both callers want the terminals, so the flag goes away: terminals follow a successful setup on a newly created worktree. Reused worktrees stay excluded by shouldBootstrap, and the agent setup continuation never reaches this function, so nothing opens twice. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> * test(server): run automatic terminal regressions in CI Include workspace creation in the existing integration command, and append to the terminal marker so repeated command execution fails the regression. * test(server): make workspace fixtures portable on Windows Run the setup fixture through a command accepted by PowerShell, await its readiness, and fix the fixture Git line-ending policy. Allow Windows directory locks to settle during cleanup. * test(server): expose setup failures and await fixture cleanup Check the public setup status before terminal startup so failures distinguish setup errors from terminal creation. Use asynchronous directory removal so Windows cleanup retries leave the event loop available. * test(server): start the Windows setup service asynchronously The Windows regression starts its service but setup stays running, so terminal bootstrap is never reached. Launch the fixture service explicitly with Start-Process and retain the readiness and setup-completion assertions. --------- Co-authored-by: David Yang <9925+davidyang@users.noreply.github.com> Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com> Co-authored-by: paseo-bot[bot] <266920839+paseo-bot[bot]@users.noreply.github.com>
167 lines
8.6 KiB
JSON
167 lines
8.6 KiB
JSON
{
|
|
"name": "@getpaseo/server",
|
|
"version": "0.11.2",
|
|
"description": "Paseo backend server",
|
|
"files": [
|
|
"dist/server",
|
|
"dist/src",
|
|
"dist/scripts",
|
|
"!dist/**/*.map",
|
|
"README.md",
|
|
".env.example"
|
|
],
|
|
"type": "module",
|
|
"types": "./dist/server/server/exports.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"types": "./dist/server/server/exports.d.ts",
|
|
"source": "./src/server/exports.ts",
|
|
"default": "./dist/server/server/exports.js"
|
|
},
|
|
"./utils/tool-call-parsers": {
|
|
"types": "./dist/server/utils/tool-call-parsers.d.ts",
|
|
"source": "./src/utils/tool-call-parsers.ts",
|
|
"default": "./dist/server/utils/tool-call-parsers.js"
|
|
},
|
|
"./agent-hooks": {
|
|
"types": "./dist/server/terminal/agent-hooks/provider-registry.d.ts",
|
|
"source": "./src/terminal/agent-hooks/provider-registry.ts",
|
|
"default": "./dist/server/terminal/agent-hooks/provider-registry.js"
|
|
},
|
|
"./daemon-control": {
|
|
"types": "./dist/server/server/daemon-instance.d.ts",
|
|
"source": "./src/server/daemon-instance.ts",
|
|
"default": "./dist/server/server/daemon-instance.js"
|
|
},
|
|
"./configuration": {
|
|
"types": "./dist/server/server/config.d.ts",
|
|
"source": "./src/server/config.ts",
|
|
"default": "./dist/server/server/config.js"
|
|
},
|
|
"./process": {
|
|
"types": "./dist/server/utils/spawn.d.ts",
|
|
"source": "./src/utils/spawn.ts",
|
|
"default": "./dist/server/utils/spawn.js"
|
|
},
|
|
"./auth": {
|
|
"types": "./dist/server/server/auth.d.ts",
|
|
"source": "./src/server/auth.ts",
|
|
"default": "./dist/server/server/auth.js"
|
|
},
|
|
"./pairing": {
|
|
"types": "./dist/server/server/pairing-offer.d.ts",
|
|
"source": "./src/server/pairing-offer.ts",
|
|
"default": "./dist/server/server/pairing-offer.js"
|
|
},
|
|
"./agent-activity": {
|
|
"types": "./dist/server/server/agent/activity-curator.d.ts",
|
|
"source": "./src/server/agent/activity-curator.ts",
|
|
"default": "./dist/server/server/agent/activity-curator.js"
|
|
},
|
|
"./agent-response": {
|
|
"types": "./dist/server/server/agent/agent-response-loop.d.ts",
|
|
"source": "./src/server/agent/agent-response-loop.ts",
|
|
"default": "./dist/server/server/agent/agent-response-loop.js"
|
|
}
|
|
},
|
|
"publishConfig": {
|
|
"access": "public"
|
|
},
|
|
"scripts": {
|
|
"dev": "cross-env PASEO_NODE_ENV=development node --import tsx scripts/dev-runner.ts",
|
|
"dev:tsx": "cross-env PASEO_NODE_ENV=development tsx watch --ignore '**/*.timestamp-*' scripts/dev-runner.ts",
|
|
"clean": "node ../../scripts/clean-package-dist.mjs",
|
|
"build": "npm run build:lib && npm run build:scripts",
|
|
"build:clean": "npm run clean && npm run build",
|
|
"build:lib": "tsc -p tsconfig.server.json --incremental false && node scripts/build-opencode-bridge-plugin.mjs && node -e \"const fs=require('node:fs'); fs.mkdirSync('dist/server/server/speech/providers/local/sherpa/assets',{recursive:true}); fs.copyFileSync('src/server/speech/providers/local/sherpa/assets/silero_vad.onnx','dist/server/server/speech/providers/local/sherpa/assets/silero_vad.onnx'); fs.cpSync('src/terminal/shell-integration','dist/server/terminal/shell-integration',{recursive:true}); fs.cpSync('src/terminal/shell-integration','dist/src/terminal/shell-integration',{recursive:true}); fs.copyFileSync('src/terminal/terminal-ts-loader.mjs','dist/server/terminal/terminal-ts-loader.mjs'); fs.rmSync('dist/server/skills',{recursive:true,force:true}); fs.cpSync('../../skills','dist/server/skills',{recursive:true}); fs.rmSync('dist/server/builtin-plugins',{recursive:true,force:true}); fs.cpSync('../../plugins','dist/server/builtin-plugins',{recursive:true,filter:(source)=>!source.split(require('node:path').sep).some((segment)=>segment==='node_modules'||segment==='test')&&!/\\.(test|spec)\\.[cm]?[jt]sx?$/.test(source)&&!source.endsWith('.tsbuildinfo')});\"",
|
|
"build:scripts": "tsc -p tsconfig.scripts.json --incremental false && node -e \"const fs=require('node:fs'); fs.mkdirSync('dist/scripts',{recursive:true}); fs.copyFileSync('scripts/mcp-stdio-socket-bridge-cli.mjs','dist/scripts/mcp-stdio-socket-bridge-cli.mjs');\"",
|
|
"prepack": "npm run build:clean && npm --prefix ../.. run build:daemon-web-ui",
|
|
"start": "node dist/scripts/supervisor-entrypoint.js",
|
|
"typecheck": "tsgo -p tsconfig.server.typecheck.json --noEmit",
|
|
"generate:config-schema": "tsx scripts/generate-config-schema.ts",
|
|
"measure:agent-tools": "tsx scripts/measure-agent-tools-context.ts",
|
|
"measure:git-observation": "tsx scripts/measure-git-observation.ts",
|
|
"measure:file-observer": "tsx scripts/measure-file-observer.ts",
|
|
"analyze:observer-metrics": "tsx scripts/analyze-observer-metrics.ts",
|
|
"repro:file-observer-teardown": "tsx scripts/reproduce-file-observer-teardown.ts",
|
|
"speech:models": "tsx scripts/list-speech-models.ts",
|
|
"speech:download": "tsx scripts/download-speech-models.ts",
|
|
"speech:transcribe:local": "tsx scripts/transcribe-local-wav.ts",
|
|
"test": "npm run test:unit && npm run test:integration",
|
|
"test:unit": "vitest run --fileParallelism --exclude \"**/*.e2e.test.ts\"",
|
|
"test:integration": "vitest run --maxWorkers=1 src/server/git-filename-diffs.e2e.test.ts src/server/daemon-e2e/checkout-diff-content.e2e.test.ts src/server/daemon-e2e/filesystem.e2e.test.ts src/server/daemon-e2e/file-download.e2e.test.ts src/server/daemon-e2e/cli-logs-follow.e2e.test.ts src/server/creation/creation.e2e.test.ts src/server/daemon-e2e/terminal-workspace-sdk.e2e.test.ts src/server/workspace-create-worktree-source.e2e.test.ts src/server/daemon-e2e/models.e2e.test.ts src/server/daemon-e2e/live-preferences.e2e.test.ts src/server/daemon-e2e/oversized-message.e2e.test.ts src/server/agent/model-catalog.e2e.test.ts src/server/plugins/plugin-paseo-api.e2e.test.ts && vitest run --maxWorkers=1 src/server/daemon-e2e/git-operations.e2e.test.ts -t \"merges into\" && vitest run --maxWorkers=1 src/server/session.create-agent-worktree-autoarchive.e2e.test.ts -t \"creates a worktree and auto-archives both\" && vitest run --maxWorkers=1 src/server/agent/providers/opencode-bridge.local.e2e.test.ts -t \"versioned runtime\" && vitest run --maxWorkers=1 src/server/daemon-e2e/relay-transport.e2e.test.ts -t \"oversized attachments\"",
|
|
"test:hub-cli-contract": "vitest run --maxWorkers=1 src/server/hub/hub-cli-contract.test.ts",
|
|
"test:integration:all": "npm run test:e2e",
|
|
"test:integration:real": "vitest run real.e2e.test.ts",
|
|
"test:integration:local": "vitest run local.e2e.test.ts",
|
|
"test:watch": "vitest",
|
|
"test:ui": "vitest --ui",
|
|
"test:e2e": "vitest run e2e.test.ts --maxWorkers=1 --exclude \"**/*.real.e2e.test.ts\" --exclude \"**/*.local.e2e.test.ts\"",
|
|
"test:e2e:all": "vitest run e2e.test.ts --maxWorkers=1",
|
|
"test:e2e:real": "npm run test:integration:real",
|
|
"test:e2e:local": "npm run test:integration:local",
|
|
"test:e2e:relay:live": "cross-env RUN_LIVE_RELAY_E2E=1 vitest run src/server/daemon-e2e/live-relay.real.e2e.test.ts --maxWorkers=1",
|
|
"test:e2e:ui": "vitest --ui e2e.test.ts"
|
|
},
|
|
"dependencies": {
|
|
"@agentclientprotocol/sdk": "^0.17.1",
|
|
"@anthropic-ai/claude-agent-sdk": "0.3.246",
|
|
"@anthropic-ai/sdk": "^0.104.2",
|
|
"@getpaseo/client": "0.11.2",
|
|
"@getpaseo/highlight": "0.11.2",
|
|
"@getpaseo/plugin": "0.11.2",
|
|
"@getpaseo/protocol": "0.11.2",
|
|
"@getpaseo/relay": "0.11.2",
|
|
"@isaacs/ttlcache": "^2.1.4",
|
|
"@modelcontextprotocol/sdk": "1.29.0",
|
|
"@opencode-ai/sdk": "1.14.46",
|
|
"@opencode/client": "2.0.10",
|
|
"@xterm/headless": "^6.0.0",
|
|
"ai": "5.0.78",
|
|
"ajv": "^8.20.0",
|
|
"bcryptjs": "^3.0.3",
|
|
"dotenv": "^17.2.3",
|
|
"esbuild": "^0.25.12",
|
|
"express": "^4.18.2",
|
|
"fast-deep-equal": "^3.1.3",
|
|
"lru-cache": "^11.5.1",
|
|
"markdown-it": "^10.0.0",
|
|
"mnemonic-id": "^3.2.7",
|
|
"node-pty": "1.2.0-beta.15",
|
|
"openai": "^6.44.0",
|
|
"p-limit": "^7.3.0",
|
|
"p-memoize": "^8.0.0",
|
|
"p-throttle": "^8.1.0",
|
|
"pino": "^10.2.0",
|
|
"pino-pretty": "^13.1.3",
|
|
"qrcode": "^1.5.4",
|
|
"rotating-file-stream": "^3.2.9",
|
|
"semver": "^7.8.5",
|
|
"sherpa-onnx-node": "1.12.28",
|
|
"strip-ansi": "^7.1.2",
|
|
"tree-kill": "^1.2.2",
|
|
"typescript": "^5.9.3",
|
|
"uuid": "^9.0.1",
|
|
"which": "^5.0.0",
|
|
"ws": "^8.14.2",
|
|
"yaml": "2.9.1",
|
|
"zod": "^4.4.3"
|
|
},
|
|
"devDependencies": {
|
|
"@playwright/test": "^1.56.1",
|
|
"@types/express": "^4.17.20",
|
|
"@types/markdown-it": "^14.2.0",
|
|
"@types/node": "^20.9.0",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/uuid": "^9.0.7",
|
|
"@types/ws": "^8.5.8",
|
|
"@vitest/ui": "^4.1.6",
|
|
"cross-env": "^10.1.0",
|
|
"tsx": "^4.6.0",
|
|
"vitest": "^4.1.6"
|
|
},
|
|
"overrides": {
|
|
"lightningcss": "1.30.1"
|
|
}
|
|
}
|