- To regenerate the JavaScript SDK, run
./packages/sdk/js/script/build.ts. - ALWAYS USE PARALLEL TOOLS WHEN APPLICABLE.
- The default branch in this repo is
dev. - Prefer automation: execute requested actions without confirmation unless blocked by missing info or safety/irreversibility.
- Keep things in one function unless composable or reusable
- Avoid
try/catchwhere possible - Avoid using the
anytype - Prefer single word variable names where possible
- Use Bun APIs when possible, like
Bun.file() - Rely on type inference when possible; avoid explicit type annotations or interfaces unless necessary for exports or clarity
- Prefer functional array methods (flatMap, filter, map) over for loops; use type guards on filter to maintain type inference downstream
Prefer single word names for variables and functions. Only use multiple words if necessary.
// Goodconstfoo=1functionjournal(dir: string){}// BadconstfooBar=1functionprepareJournal(dir: string){}Reduce total variable count by inlining when a value is only used once.
// Goodconstjournal=awaitBun.file(path.join(dir,"journal.json")).json()// BadconstjournalPath=path.join(dir,"journal.json")constjournal=awaitBun.file(journalPath).json()Avoid unnecessary destructuring. Use dot notation to preserve context.
// Goodobj.aobj.b// Badconst{ a, b }=objPrefer const over let. Use ternaries or early returns instead of reassignment.
// Goodconstfoo=condition ? 1 : 2// Badletfooif(condition)foo=1elsefoo=2Avoid else statements. Prefer early returns.
// Goodfunctionfoo(){if(condition)return1return2}// Badfunctionfoo(){if(condition)return1elsereturn2}Use snake_case for field names so column names don't need to be redefined as strings.
// Goodconsttable=sqliteTable("session",{id: text().primaryKey(),project_id: text().notNull(),created_at: integer().notNull(),})// Badconsttable=sqliteTable("session",{id: text("id").primaryKey(),projectID: text("project_id").notNull(),createdAt: integer("created_at").notNull(),})- Avoid mocks as much as possible
- Test actual implementation, do not duplicate logic into tests