From c00d038df26221f2abb447f0ce2df5bc2d311bd7 Mon Sep 17 00:00:00 2001 From: maaz519 Date: Tue, 30 Jun 2026 20:56:36 +0530 Subject: [PATCH] chore: iios workspace skeleton (pnpm workspace, configs, postgres:5434) Co-Authored-By: Claude Opus 4.8 (1M context) --- .env.example | 8 ++++++++ .gitignore | 7 +++++++ docker-compose.yml | 20 ++++++++++++++++++++ package.json | 25 +++++++++++++++++++++++++ pnpm-lock.yaml | 39 +++++++++++++++++++++++++++++++++++++++ pnpm-workspace.yaml | 2 ++ tsconfig.base.json | 19 +++++++++++++++++++ 7 files changed, 120 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 docker-compose.yml create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 tsconfig.base.json diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..e4929e0 --- /dev/null +++ b/.env.example @@ -0,0 +1,8 @@ +# iios-service +PORT=3200 +DATABASE_URL="postgresql://iios:iios@localhost:5434/iios?schema=public" + +# Agent/session signing (reused AppTokenVerifier pattern) +JWT_SECRET="dev-only-change-me" +# Per-app HS256 secrets, JSON map keyed by appId (the `session` platform port) +APP_SECRETS={"portal-demo":"dev-secret"} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2dc81ea --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +node_modules/ +dist/ +*.log +.env +.DS_Store +# Prisma generated client +packages/*/src/generated/ diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..34e31ed --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,20 @@ +services: + postgres: + image: pgvector/pgvector:pg16 + container_name: iios-db + environment: + POSTGRES_USER: iios + POSTGRES_PASSWORD: iios + POSTGRES_DB: iios + ports: + - "5434:5432" + volumes: + - iios_postgres_data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U iios"] + interval: 5s + timeout: 5s + retries: 10 + +volumes: + iios_postgres_data: diff --git a/package.json b/package.json new file mode 100644 index 0000000..06c7378 --- /dev/null +++ b/package.json @@ -0,0 +1,25 @@ +{ + "name": "iios", + "version": "0.0.0", + "private": true, + "description": "Insignia Interaction OS — interaction kernel (P0 + P1)", + "scripts": { + "build": "pnpm -r build", + "typecheck": "pnpm -r typecheck", + "test": "pnpm -r test", + "lint": "eslint .", + "boundary": "node scripts/check-import-boundary.mjs" + }, + "devDependencies": { + "@types/node": "^26.0.1", + "typescript": "^5.7.3" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "@prisma/client", + "@prisma/engines", + "prisma", + "esbuild" + ] + } +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..317e661 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,39 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@types/node': + specifier: ^26.0.1 + version: 26.0.1 + typescript: + specifier: ^5.7.3 + version: 5.9.3 + +packages: + + '@types/node@26.0.1': + resolution: {integrity: sha512-fc3KiUoBt6kie0N9bIW3E47vZsuaMf0PM2AaUpLCLT0s/LvX1nxAim6Fc049cNxODPpGm6qRAuUOB86SkRuPQw==} + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + +snapshots: + + '@types/node@26.0.1': + dependencies: + undici-types: 8.3.0 + + typescript@5.9.3: {} + + undici-types@8.3.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..dee51e9 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - "packages/*" diff --git a/tsconfig.base.json b/tsconfig.base.json new file mode 100644 index 0000000..9266c7b --- /dev/null +++ b/tsconfig.base.json @@ -0,0 +1,19 @@ +{ + "compilerOptions": { + "module": "commonjs", + "target": "ES2022", + "moduleResolution": "node", + "lib": ["ES2022"], + "experimentalDecorators": true, + "emitDecoratorMetadata": true, + "declaration": true, + "strict": true, + "strictNullChecks": true, + "noImplicitAny": true, + "esModuleInterop": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "sourceMap": true + } +}