Files
lora/docs/specialists/prism.md
T

166 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Prism — TypeScript Specialist LoRA
Adapter codename: `prism`
Agent: `build-ts`
Base model: Qwen/Qwen3.5-27B
## Objective
Teach the model TypeScript-idiomatic code generation aligned with the build-ts
agent's system prompt. The adapter should internalize:
- Strict TypeScript — no `any` without justification
- `const` over `let`, never `var`
- Named exports, `type` over `interface` (unless extending)
- Package manager detection (bun/pnpm/npm)
- Framework-aware patterns (Next.js, Vite, Astro, SvelteKit, Remix, Bun)
- tsc → lint → test verification cycle
## Data Sources
### Session extraction (~200350 examples)
Classify from opencode `build` sessions by:
- File paths: `.ts`, `.tsx`, `.js`, `.jsx`, `package.json`, `tsconfig.json`
- Bash commands: `npm`, `pnpm`, `bun`, `npx`, `tsc`, `vitest`, `jest`, `biome`
- Error patterns: `TS2`, `TS7`, `error TS`, type errors
- Framework config files in context: `next.config.*`, `vite.config.*`
### Git repo mining (~150250 examples)
Target repos:
- `~/.config/opencode/plugins/` — opencode plugins (TypeScript)
- `madcat-os/sere-kit` — UI component library
- `madcat-os/visor` — HUD/display system
- Any `package.json`-rooted repos in madcat-os org
Extract patterns:
- React component implementations (hooks, state management)
- Plugin/tool development (opencode tools, MCP servers)
- Type-safe API integrations
- Build configuration (tsconfig, vite, next)
### Synthetic (~50100 examples)
- Generic type patterns and constraints
- Discriminated unions and type narrowing
- Zod schema → TypeScript type inference
- React Server Components vs Client Components
- Edge runtime constraints (Cloudflare Workers, Vercel Edge)
## Example Format
```json
{
"messages": [
{
"role": "system",
"content": "<build-ts agent system prompt>"
},
{
"role": "user",
"content": "Add a new visor widget component for displaying memory graph connections"
},
{
"role": "assistant",
"content": null,
"tool_calls": [
{
"type": "function",
"function": {
"name": "glob",
"arguments": {"pattern": "src/components/**/*.tsx"}
}
}
]
},
{
"role": "tool",
"content": "<file list>"
},
{
"role": "assistant",
"content": null,
"tool_calls": [
{
"type": "function",
"function": {
"name": "read",
"arguments": {"filePath": "src/components/widgets/LogWidget.tsx"}
}
}
]
},
{
"role": "tool",
"content": "<existing widget pattern>"
},
{
"role": "assistant",
"content": null,
"tool_calls": [
{
"type": "function",
"function": {
"name": "write",
"arguments": {
"filePath": "src/components/widgets/GraphWidget.tsx",
"content": "<new component following existing patterns>"
}
}
}
]
},
{
"role": "tool",
"content": "File written successfully"
},
{
"role": "assistant",
"content": null,
"tool_calls": [
{
"type": "function",
"function": {
"name": "bash",
"arguments": {"command": "npx tsc --noEmit"}
}
}
]
},
{
"role": "tool",
"content": "<type check passes>"
},
{
"role": "assistant",
"content": "GraphWidget created. Follows LogWidget's pattern — named export, typed props, const component. Type check clean."
}
]
}
```
## Evaluation Criteria
1. Generated TypeScript passes `tsc --noEmit` with strict mode
2. No `any` types without explicit justification
3. Correct import/export patterns (named exports)
4. Framework-appropriate patterns (detects Next.js vs Vite etc.)
5. Package manager awareness (correct lockfile, correct run command)
6. Tool call sequence: explore → read → implement → type-check
7. React patterns: proper hook usage, no stale closures
## Training Config Overrides
```python
MAX_SEQ = 8192
LR = 5e-5
```
## Estimated Size
- 400600 examples total (largest dataset — most session history)
- ~3M tokens
- Training time: ~3 hrs on H100
- Adapter size: ~305 MB