New packages: - @lab/core: Resource types, Output<T> (Pulumi), audit event types, auth types, environment/account types, resource kind registry New Prisma schema (mcpctl pattern): - User (email/password/bcrypt), Session (bearer tokens), Group, GroupMember - ServiceAccount, RbacDefinition (JSON subjects + roleBindings) - AuditEvent (correlation IDs, causal chains, fire-and-forget batching) - Environment, Account (driver config, Infisical secret path), Binding - Resource (generic, kind/name/env unique, origin/managedBy tracking) - Secret, Fleet, FleetMember, GitSource - Keeps v1.0 models: Server, Agent, Bastion, Cluster, JoinToken New services: - AuthService: bearer token login, bootstrap (first login creates admin), session management with 30-day expiry - RbacService: environment-scoped permission checks, group membership, role hierarchy (admin > edit > view) - AuditService: fire-and-forget event collection, batch 50 / flush 5s, correlation IDs for causal chains - ResourceStore: CRUD with origin/managedBy, RBAC-enforced routes New routes: - POST /api/auth/login, POST /api/auth/logout (bearer token auth) - GET/POST/PUT/DELETE /api/resources (RBAC-enforced CRUD) - GET/POST /api/environments, GET/POST /api/accounts - POST /api/accounts/bind, GET /api/bindings - GET /api/events (audit query with --last, --kind, --env, --correlation) New middleware: - Bearer token auth (validates Authorization header, resolves user identity) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
51 lines
1.2 KiB
JSON
51 lines
1.2 KiB
JSON
{
|
|
"name": "@lab/labd",
|
|
"version": "0.1.0",
|
|
"private": true,
|
|
"type": "module",
|
|
"main": "./dist/main.js",
|
|
"types": "./dist/main.d.ts",
|
|
"exports": {
|
|
".": {
|
|
"import": "./dist/main.js",
|
|
"types": "./dist/main.d.ts"
|
|
}
|
|
},
|
|
"scripts": {
|
|
"build": "tsc --build",
|
|
"clean": "rimraf dist",
|
|
"dev": "tsx src/main.ts",
|
|
"db:push": "prisma db push",
|
|
"db:generate": "prisma generate",
|
|
"db:migrate:dev": "prisma migrate dev",
|
|
"db:migrate:deploy": "prisma migrate deploy",
|
|
"db:migrate:reset": "prisma migrate reset",
|
|
"db:seed": "tsx prisma/seed.ts",
|
|
"db:studio": "prisma studio"
|
|
},
|
|
"dependencies": {
|
|
"@fastify/rate-limit": "^10.3.0",
|
|
"@fastify/websocket": "^11.0.2",
|
|
"@lab/core": "workspace:^",
|
|
"@lab/shared": "workspace:*",
|
|
"@prisma/client": "^6.9.0",
|
|
"bcryptjs": "^3.0.3",
|
|
"fastify": "^5.3.3",
|
|
"winston": "^3.17.0",
|
|
"ws": "^8.19.0",
|
|
"zod": "^4.3.6"
|
|
},
|
|
"prisma": {
|
|
"seed": "tsx prisma/seed.ts"
|
|
},
|
|
"devDependencies": {
|
|
"@types/bcryptjs": "^3.0.0",
|
|
"@types/node": "^22.14.1",
|
|
"@types/ws": "^8.18.1",
|
|
"prisma": "^6.9.0",
|
|
"rimraf": "^6.1.3",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^5.9.3"
|
|
}
|
|
}
|