Files
arboretum/package.json
Johan LEROY 4768b606e4 P1 spine: monorepo, shared WS protocol, server daemon
- npm workspaces (shared / server / web), TS strict, project refs
- @arboretum/shared: multiplexed WS protocol (JSON control + binary
  output frames: 1B type + u32le channel), flow-control constants
  (ACK 256K, HIGH 384K, LOW 128K, lagging 2M), REST types
- git-arboretum server: Fastify 5 + node:sqlite (single native dep:
  node-pty prebuilt), token auth (sha256 at rest, HMAC cookie, global
  login rate limit + backoff), strict Origin check on /api and /ws,
  PtyManager (2MiB ring with monotonic offset, resync replay = reset +
  256KiB tail, pause/resume only when ALL interactive clients exceed
  HIGH, observers never throttle, lagging clients resync), WS gateway
  (attach/stdin/resize/ack, heartbeat 30s), SIGTERM→SIGKILL 5s grace
- CLI: arboretum [--port 7317] [--bind 127.0.0.1] — non-loopback bind
  requires an explicit safety flag
- Smoke-tested: login/401/403-origin/spawn bash/kill/grace-SIGKILL all
  green
2026-06-11 22:04:09 +02:00

25 lines
576 B
JSON

{
"name": "arboretum-monorepo",
"private": true,
"version": "0.0.0",
"type": "module",
"workspaces": [
"packages/*"
],
"engines": {
"node": ">=22.16"
},
"scripts": {
"build": "npm run build -w @arboretum/shared -w git-arboretum -w @arboretum/web",
"typecheck": "tsc -b packages/shared packages/server",
"test": "vitest run",
"dev:server": "npm run dev -w git-arboretum",
"dev:web": "npm run dev -w @arboretum/web"
},
"devDependencies": {
"@types/node": "^22.10.0",
"typescript": "^5.7.0",
"vitest": "^3.0.0"
}
}