- Read files in full before making wide-ranging changes, before editing files you have not already fully inspected, and when the user asks you to investigate or audit something. Do not rely only on search snippets for broad changes.
- No
anytypes unless absolutely necessary - Check node_modules for external API type definitions instead of guessing
- NEVER use inline imports - no
await import("./foo.js"), noimport("pkg").Typein type positions, no dynamic imports for types. Always use standard top-level imports. - NEVER remove or downgrade code to fix type errors from outdated dependencies; upgrade the dependency instead
- Always ask before removing functionality or code that appears to be intentional
- Do not preserve backward compatibility unless the user explicitly asks for it
When adding a new project via laras_project_create, use these defaults based on the engine:
| Engine | Entrypoint | Cmd |
|---|---|---|
pi |
infisical run --silent --projectId=<REDACTED> -- pi |
--model cpa/mimo-v2.5-pro |
gemini |
gemini |
--yolo |
When updating scheduled tasks that involve specific times (cron expressions, intervals tied to time-of-day), always assume the user means Asia/Jakarta (WIB, UTC+7) timezone unless explicitly stated otherwise. This is the default timezone defined in LARAS_IDENTITY.md and LARAS_BOOTSTRAP.md. Convert accordingly when setting UTC-based cron expressions.
The SQLite database lives at ./project-laras.db (project root). Both the server and worker use this same file via DB_PATH env var (default: ./project-laras.db, defined in src/config/env.ts).
Important: src/db/ only contains code — connection.ts, migrations/, repos/, seeds/. Never place a .db file there. A previous session accidentally restored a backup to src/db/project-laras.db which was never used by any service, causing confusion about which DB was active.