chore(scaffold): initialize pnpm workspace with build tooling

- Root package.json with @bytelyst/root, pnpm scripts (build, test, typecheck, clean)
- pnpm-workspace.yaml declaring packages/*
- tsconfig.base.json (ESM, strict, ES2022, NodeNext)
- vitest.config.ts (globals, node environment)
- .gitignore, .nvmrc (Node 20), .editorconfig
- README.md with package overview and quick start
This commit is contained in:
saravanakumardb1 2026-02-12 11:19:29 -08:00
parent bf22b5ee4c
commit d875df09a3
8 changed files with 141 additions and 0 deletions

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true
[*.md]
trim_trailing_whitespace = false

7
.gitignore vendored Normal file
View File

@ -0,0 +1,7 @@
node_modules/
dist/
coverage/
.DS_Store
*.tsbuildinfo
.env
.env.local

1
.nvmrc Normal file
View File

@ -0,0 +1 @@
20

67
README.md Normal file
View File

@ -0,0 +1,67 @@
# @bytelyst/common-platform
Shared packages for the ByteLyst ecosystem — used by [LysnrAI](https://github.com/saravanakumardb1/learning_voice_ai_agent) and [MindLyst](https://github.com/saravanakumardb1/learning_multimodal_memory_agents).
## Packages
| Package | Description | Peer Dependencies |
|---------|-------------|-------------------|
| `@bytelyst/errors` | Typed HTTP service errors (400429) | — |
| `@bytelyst/cosmos` | Azure Cosmos DB client singleton + container registry | `@azure/cosmos` |
| `@bytelyst/config` | Zod-based env config loader + product identity | `zod` |
| `@bytelyst/auth` | JWT utilities, auth middleware, password hashing | `jose`, `bcryptjs` |
| `@bytelyst/api-client` | Configurable fetch wrapper with auth token injection | — |
| `@bytelyst/react-auth` | React auth context factory (typed provider + hook) | `react` |
| `@bytelyst/design-tokens` | Cross-platform design tokens (JSON → CSS/TS/Kotlin/Swift) | — |
## Quick Start
```bash
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Run all tests
pnpm test
# Type-check all packages
pnpm typecheck
```
## Consuming from LysnrAI / MindLyst
During development, use `file:` references in consumer `package.json`:
```jsonc
// From Fastify services (3 levels up):
"@bytelyst/errors": "file:../../../learning_ai_common_plat/packages/errors"
// From Next.js dashboards at repo root (2 levels up):
"@bytelyst/errors": "file:../../learning_ai_common_plat/packages/errors"
// From MindLyst web (3 levels up — inside mindlyst-native/web/):
"@bytelyst/design-tokens": "file:../../../learning_ai_common_plat/packages/design-tokens"
```
All repos must be cloned side-by-side under the same parent directory.
## Design Tokens
Generate platform-specific token files from the canonical JSON:
```bash
cd packages/design-tokens
pnpm generate
```
Outputs in `packages/design-tokens/generated/`:
- `tokens.css` — CSS custom properties (`--ml-*`)
- `tokens.ts` — TypeScript constants
- `MindLystTokens.kt` — Kotlin object for KMP
- `MindLystTheme.swift` — Swift structs for SwiftUI
## Roadmap
See [docs/ROADMAP.md](docs/ROADMAP.md) for the full phased extraction plan.

26
package.json Normal file
View File

@ -0,0 +1,26 @@
{
"name": "@bytelyst/root",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"build": "pnpm -r build",
"test": "pnpm -r test",
"typecheck": "pnpm -r exec tsc --noEmit",
"clean": "pnpm -r exec rm -rf dist"
},
"devDependencies": {
"@types/bcryptjs": "^2.4.6",
"@types/node": "^20.0.0",
"@types/react": "^19.0.0",
"typescript": "^5.7.0",
"vitest": "^3.0.0"
},
"peerDependencies": {
"@azure/cosmos": ">=4.0.0",
"bcryptjs": ">=2.4.0",
"jose": ">=5.0.0",
"react": ">=18.0.0",
"zod": ">=3.20.0"
}
}

2
pnpm-workspace.yaml Normal file
View File

@ -0,0 +1,2 @@
packages:
- "packages/*"

18
tsconfig.base.json Normal file
View File

@ -0,0 +1,18 @@
{
"compilerOptions": {
"target": "ES2022",
"module": "NodeNext",
"moduleResolution": "NodeNext",
"lib": ["ES2022"],
"strict": true,
"esModuleInterop": true,
"skipLibCheck": true,
"forceConsistentCasingInFileNames": true,
"resolveJsonModule": true,
"declaration": true,
"declarationMap": true,
"sourceMap": true,
"outDir": "dist",
"rootDir": "src"
}
}

8
vitest.config.ts Normal file
View File

@ -0,0 +1,8 @@
import { defineConfig } from "vitest/config";
export default defineConfig({
test: {
globals: true,
environment: "node",
},
});