- Disable CI workflows due to billing issues
- Add quick-check.sh script for 5-min pre-push validation
- Add MANUAL_CI.md with comprehensive instructions
- Update README with CI disabled notice
- Production readiness workflow updated with manual check note
Three parallel job groups (NO deployment):
- build-and-test: full build + typecheck + test + lint
- package-tests: matrix of 9 @bytelyst/* packages
- service-tests: matrix of 4 @lysnrai/* services
Uses pnpm v10, Node 20, dependency caching.
Runs on push/PR to main with concurrency cancellation.
Documents NETWORK=corp|home env var approach for seamless
switching between corporate proxy and home network.
Covers npm, pnpm, pip, curl, Node.js, lock file cleanup.
Single env var NETWORK=corp|home controls all proxy config.
Source from ~/.zshrc — sets http_proxy, NPM_CONFIG_REGISTRY,
PIP_TRUSTED_HOST, NODE_TLS_REJECT_UNAUTHORIZED automatically.
No more ~/.npmrc rewriting.
- Replace hardcoded /Users/sd9235/ paths with $HOME in all SKILLS docs
- Use WORKSPACE_DIR variable in backup-main.sh (auto-resolves from script location)
- Genericize 'Forcepoint CertChecker' / 'corporate proxy' to 'SSL-intercepting proxy'
- Add scripts/switch-network.sh for toggling npm between corporate proxy and home
- No functional code changes — only comments, docs, and paths
Bug fix: cut -d'/' -f2 truncated 'origin/backup/main-*' to just
'backup', so rev-parse always failed and duplicate detection never
worked. Fixed with sed to strip 'origin/' prefix properly.
New features:
- Push unpushed main commits before backing up
- Fetch remote backup refs before comparing
- Rich summary table: repo, status, commit count, push status, last msg
- Color-coded output with dim/bold formatting
- Proper cleanup using sed instead of broken cut
- Check if directory is a git repository before proceeding
- Add fallback for git switch (use checkout if switch fails)
- Handle offline/no-origin scenarios gracefully
- Use local HEAD instead of origin/main for comparison
- Add error handling for push operations
- Continue backup locally if remote push fails
- Create Backup Main Branch skill with comprehensive documentation
- Add Windsurf workflow for easy access
- Implement bash script with multi-repo support
- Smart detection to avoid duplicate backups
- Automatic cleanup of old backups (keeps 7 days)
- Color-coded output for better visibility
- Always returns to main branch after backup
- Add 15 comprehensive skills extracted from Windsurf workflows
- Cover debugging, testing, releases, deployment, security, and documentation
- Each skill includes step-by-step instructions and copy-pasteable commands
- Skills organized by category with cross-references and difficulty levels
✅ Added Husky and lint-staged to all package.json files
- common_plat: root package.json
- voice_agent: all 3 dashboards (admin, user, tracker)
✅ Created setup scripts
- scripts/setup-husky.sh in both repos
- Creates .husky/pre-commit with HUSKY_ENABLED flag check
✅ Added documentation
- HUSKY_SETUP.md: Complete setup and usage guide
- SHELL_ALIASES.md: Shell aliases for easy toggle
Features:
- Environment variable control: HUSKY_ENABLED=false/true
- lint-staged runs only on changed files (~2-5s)
- Auto-fixes ESLint and formats with Prettier
- Can be bypassed with --no-verify or husky-off alias
To activate after pulling:
1. pnpm install (or npm install)
2. pnpm prepare (or npm run prepare)
3. ./scripts/setup-husky.sh
Completes the AI agent config set for the common platform repo:
- .cursorrules — Cursor inline completions + chat rules
- .github/copilot-instructions.md — GitHub Copilot code generation patterns
Both reference AGENTS.md for full instructions and are tailored
to the @bytelyst/* packages + @lysnrai/* services structure.
Rewired all 4 services:
- lib/errors.ts → re-exports from @bytelyst/errors
- lib/cosmos.ts → re-exports from @bytelyst/cosmos
- lib/product-config.ts → uses loadProductIdentity()/getProductId() from @bytelyst/config
- lib/config.ts → kept self-contained (zod v3/v4 type mismatch with loadConfig)
Added workspace deps (@bytelyst/errors, @bytelyst/cosmos, @bytelyst/config) to all 4 services.
Added docker-compose.yml with Loki, Grafana, Traefik, and all 4 services.
Added .env.example with required env vars.
Added passWithNoTests to vitest.config.ts.
Pinned root zod to ^3.24.0 to match service zod versions.
All 12 projects build. 175 tests passing.
- Copied as-is from learning_voice_ai_agent/services/monitoring
- Grafana dashboards + provisioning for Loki datasource
- health-check.ts for service health polling
- Updated pnpm-workspace.yaml to include services/*
- createJwtUtils() factory with configurable issuer and expiry (jose)
- extractAuth() middleware for Fastify request auth extraction
- requireRole() guard with multi-role support
- hashPassword() / verifyPassword() via bcryptjs
- getCurrentUser() helper for Next.js API routes (generic TUser)
- AuthPayload, TokenPayload, JwtUtils types
- NO dependency on @bytelyst/config (reads JWT_SECRET from process.env directly)
- Peer deps: jose >=5.0.0, bcryptjs >=2.4.0
- Zod-based baseEnvSchema (PORT, HOST, NODE_ENV, CORS_ORIGIN, SERVICE_NAME, COSMOS_*)
- loadConfig() with extension support for service-specific fields
- loadProductIdentity() reads product.json or falls back to env vars
- getProductId() convenience function
- Replaces 5 duplicated product-config.ts files across LysnrAI
- Peer dep: zod >=3.20.0
- Singleton CosmosClient with env var config (COSMOS_ENDPOINT, COSMOS_KEY, COSMOS_DATABASE)
- Simple getContainer() for services
- Container registry with registerContainers(), getRegisteredContainer(), initializeAllContainers() for dashboards
- ContainerConfig type with partitionKeyPath and optional defaultTtl
- _resetClient() and _resetRegistry() for test isolation
- Peer dep: @azure/cosmos >=4.0.0
- ServiceError base class with statusCode, message, details
- HTTP errors: BadRequest, Unauthorized, Forbidden, NotFound, Conflict, TooManyRequests
- 10 tests passing (vitest)
- Superset of all 4 service error files in LysnrAI