mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-24 13:54:57 +00:00
Remove outdated tools and Lua references from copilot-instructions
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
This commit is contained in:
25
.github/copilot-instructions.md
vendored
25
.github/copilot-instructions.md
vendored
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
## Architecture Overview
|
## Architecture Overview
|
||||||
|
|
||||||
MetaBuilder is a **data-driven, multi-tenant platform** with 95% functionality in JSON/Lua, not TypeScript. The system combines:
|
MetaBuilder is a **data-driven, multi-tenant platform** with 95% functionality in JSON, not TypeScript. The system combines:
|
||||||
|
|
||||||
- **6-Level Permission System**: Public → User → Moderator → Admin → God → Supergod access hierarchies
|
- **6-Level Permission System**: Public → User → Moderator → Admin → God → Supergod access hierarchies
|
||||||
- **DBAL (Database Abstraction Layer)**: TypeScript SDK + C++ daemon, language-agnostic via YAML contracts
|
- **DBAL (Database Abstraction Layer)**: TypeScript SDK + C++ daemon, language-agnostic via YAML contracts
|
||||||
@@ -30,7 +30,7 @@ Follow `.github/prompts/0-kickstart.md` as the current workflow source of truth.
|
|||||||
### 1. API-First DBAL Development
|
### 1. API-First DBAL Development
|
||||||
When adding features to DBAL:
|
When adding features to DBAL:
|
||||||
1. **Define in YAML first**: `api/schema/entities/*.yaml` and `api/schema/operations/*.yaml`
|
1. **Define in YAML first**: `api/schema/entities/*.yaml` and `api/schema/operations/*.yaml`
|
||||||
2. **Generate types**: `python tools/codegen/gen_types.py` (creates TS and C++ types)
|
2. **Generate types**: Run type generation scripts (creates TS and C++ types)
|
||||||
3. **Implement adapters**: TypeScript (`ts/src/adapters/`) for speed, C++ (`cpp/src/adapters/`) for security
|
3. **Implement adapters**: TypeScript (`ts/src/adapters/`) for speed, C++ (`cpp/src/adapters/`) for security
|
||||||
4. **Add conformance tests**: `common/contracts/*_tests.yaml` (runs on both implementations to guarantee parity)
|
4. **Add conformance tests**: `common/contracts/*_tests.yaml` (runs on both implementations to guarantee parity)
|
||||||
5. Never add fields/operations directly in code without updating YAML source of truth
|
5. Never add fields/operations directly in code without updating YAML source of truth
|
||||||
@@ -59,7 +59,7 @@ packages/{name}/
|
|||||||
├── seed/
|
├── seed/
|
||||||
│ ├── metadata.json # Package info, exports, dependencies, minLevel
|
│ ├── metadata.json # Package info, exports, dependencies, minLevel
|
||||||
│ ├── components.json # Component definitions
|
│ ├── components.json # Component definitions
|
||||||
│ ├── scripts/ # Lua scripts organized by function
|
│ ├── scripts/ # JSON scripts organized by function
|
||||||
│ └── index.ts # Exports packageSeed object
|
│ └── index.ts # Exports packageSeed object
|
||||||
├── src/ # Optional React components
|
├── src/ # Optional React components
|
||||||
└── static_content/ # Assets (images, etc.)
|
└── static_content/ # Assets (images, etc.)
|
||||||
@@ -94,16 +94,8 @@ const users = await prisma.user.findMany()
|
|||||||
```
|
```
|
||||||
See: `src/lib/database.ts` (1200+ LOC utility wrapper)
|
See: `src/lib/database.ts` (1200+ LOC utility wrapper)
|
||||||
|
|
||||||
### 5. Lua Sandbox Execution
|
### 5. Script Execution
|
||||||
Lua scripts run in isolated sandbox without access to `os`, `io`, `require`:
|
Scripts are defined in JSON format and executed in a controlled environment with limited access to system resources.
|
||||||
```typescript
|
|
||||||
// Sandbox context provided in script
|
|
||||||
function validateEmail(email)
|
|
||||||
-- No file I/O, no system access, no external requires
|
|
||||||
return string.match(email, "^[^@]+@[^@]+$") ~= nil
|
|
||||||
end
|
|
||||||
```
|
|
||||||
Always test scripts with `DeclarativeComponentRenderer.executeLuaScript()`
|
|
||||||
|
|
||||||
## Code Conventions
|
## Code Conventions
|
||||||
|
|
||||||
@@ -174,7 +166,7 @@ Material-UI with SASS; theme in `src/theme/mui-theme.ts` with light/dark mode su
|
|||||||
1. Define database schema changes first (Prisma)
|
1. Define database schema changes first (Prisma)
|
||||||
2. Add seed data to `src/seed-data/` or package `/seed/`
|
2. Add seed data to `src/seed-data/` or package `/seed/`
|
||||||
3. Use generic renderers (`RenderComponent`) not hardcoded JSX
|
3. Use generic renderers (`RenderComponent`) not hardcoded JSX
|
||||||
4. Add Lua scripts in `src/lib/lua-snippets.ts` or package `/seed/scripts/`
|
4. Add JSON scripts in package `/seed/scripts/` as needed
|
||||||
5. Keep one lambda per file and split as needed
|
5. Keep one lambda per file and split as needed
|
||||||
6. Add parameterized tests in `.test.ts` files with matching names
|
6. Add parameterized tests in `.test.ts` files with matching names
|
||||||
|
|
||||||
@@ -215,14 +207,13 @@ If fixing a DBAL bug:
|
|||||||
2. Reproduce in TypeScript implementation first (faster feedback loop)
|
2. Reproduce in TypeScript implementation first (faster feedback loop)
|
||||||
3. Apply fix to both TS and C++ adapters
|
3. Apply fix to both TS and C++ adapters
|
||||||
4. Add/update conformance test in `common/contracts/`
|
4. Add/update conformance test in `common/contracts/`
|
||||||
5. Verify both implementations pass test: `python tools/conformance/run_all.py`
|
5. Verify both implementations pass conformance tests
|
||||||
|
|
||||||
## Common Mistakes
|
## Common Mistakes
|
||||||
|
|
||||||
❌ **Hardcoding values in TSX** → Move to database or YAML config
|
❌ **Hardcoding values in TSX** → Move to database or YAML config
|
||||||
❌ **Forgetting tenantId filter** → Breaks multi-tenancy
|
❌ **Forgetting tenantId filter** → Breaks multi-tenancy
|
||||||
❌ **Adding fields without Prisma generate** → Type errors in DB helper
|
❌ **Adding fields without Prisma generate** → Type errors in DB helper
|
||||||
❌ **Plain JS loops over Fengari tables** → Use Lua, not TS, for Lua data
|
|
||||||
❌ **Multiple lambdas per file** → Split into single-lambda files and wrap with a class only when needed
|
❌ **Multiple lambdas per file** → Split into single-lambda files and wrap with a class only when needed
|
||||||
❌ **New function without test** → `npm run test:check-functions` will fail
|
❌ **New function without test** → `npm run test:check-functions` will fail
|
||||||
❌ **Missing TODO for unfinished behavior** → Leave a TODO comment where functionality is pending
|
❌ **Missing TODO for unfinished behavior** → Leave a TODO comment where functionality is pending
|
||||||
@@ -241,7 +232,7 @@ If fixing a DBAL bug:
|
|||||||
1. Is this hardcoded value better in database?
|
1. Is this hardcoded value better in database?
|
||||||
2. Could a generic component render this instead of custom TSX?
|
2. Could a generic component render this instead of custom TSX?
|
||||||
3. Does this query filter by tenantId?
|
3. Does this query filter by tenantId?
|
||||||
4. Could Lua handle this without code changes?
|
4. Could JSON configuration handle this without code changes?
|
||||||
5. Is this one lambda per file (and test file name matches)?
|
5. Is this one lambda per file (and test file name matches)?
|
||||||
6. Does this function have a parameterized test?
|
6. Does this function have a parameterized test?
|
||||||
7. Is this DBAL change reflected in YAML schema first?
|
7. Is this DBAL change reflected in YAML schema first?
|
||||||
|
|||||||
Reference in New Issue
Block a user