···14141515## Commands
16161717-- `vp dev`: start dev server
1818-- `vp build --mode client`: build client assets
1717+You have access to `vp`. NO need to run `bunx vp`.
1818+1919- `vp check`: lint, format, type-check
2020 - instead of `tsc --noEmit`
2121+- `vp dev`: start dev server
2222+- `vp build --mode client`: build client assets
2123- `vp test`: run tests
2224- `bun run start`: run production server
2325- `bun run db:generate`: generate Drizzle migrations
···152152 "description": "AT URI template, e.g. '{{event.commit.record.subject}}'.",
153153 "maxLength": 2048
154154 },
155155+ "collection": {
156156+ "type": "string",
157157+ "description": "Optional NSID hint for the fetched record's collection. Used only by the editor to surface typed placeholders; not enforced at runtime.",
158158+ "maxLength": 256
159159+ },
155160 "conditions": {
156161 "type": "array",
157162 "description": "Conditions evaluated against this fetch's result after it resolves. All must pass or the automation is skipped. Field paths are resolved relative to the fetch's entry (e.g. 'found', 'record.subject').",
···9191 kind?: "record"; // absent on legacy rows — treated as "record"
9292 name: string;
9393 uri: string; // AT URI template
9494+ collection?: string; // NSID hint for placeholder typing; not used at runtime
9495 /** Conditions evaluated against this fetch's result entry after it resolves.
9596 * If any fail, the automation is skipped silently. */
9697 conditions?: Condition[];