[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-prisma-prisma-next-debug":3,"mdc--60dmcm-key":35,"related-org-prisma-prisma-next-debug":4136,"related-repo-prisma-prisma-next-debug":4294},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":23,"repoUrl":24,"updatedAt":25,"license":26,"forks":27,"topics":28,"repo":31,"sourceUrl":33,"mdContent":34},"prisma-next-debug","debug and recover from Prisma Next errors","Read a Prisma Next structured error envelope and route to the right recovery — code, domain, severity, why, fix, meta. Use for error, exception, my emit failed, my query won't typecheck, my query crashed, my migration won't apply, MIGRATION.HASH_MISMATCH, BUDGET.ROWS_EXCEEDED, BUDGET.TIME_EXCEEDED, RUNTIME.ABORTED, PLAN.HASH_MISMATCH, CONTRACT.MARKER_MISSING, PN-RUN-3001, PN-RUN-3002, PN-RUN-3030, PN-MIG-2001, PN-CLI-4011, PN-SCHEMA-0001, drift, capability missing, planner conflict, prisma studio, EXPLAIN, query log, db.end, db.close, script won't exit, hangs, close connection, pool.end, client is closed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"prisma","Prisma","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fprisma.png",[12,16,19,20],{"name":13,"slug":14,"type":15},"Next.js","next-js","tag",{"name":17,"slug":18,"type":15},"Database","database",{"name":9,"slug":8,"type":15},{"name":21,"slug":22,"type":15},"Debugging","debugging",415,"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next","2026-07-24T05:37:10.436314",null,15,[29,30],"loggy-core","loggy-terminal",{"repoUrl":24,"stars":23,"forks":27,"topics":32,"description":26},[29,30],"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fprisma-next\u002Ftree\u002FHEAD\u002Fskills\u002Fprisma-next-debug","---\nname: prisma-next-debug\ndescription: Read a Prisma Next structured error envelope and route to the right recovery — code, domain, severity, why, fix, meta. Use for error, exception, my emit failed, my query won't typecheck, my query crashed, my migration won't apply, MIGRATION.HASH_MISMATCH, BUDGET.ROWS_EXCEEDED, BUDGET.TIME_EXCEEDED, RUNTIME.ABORTED, PLAN.HASH_MISMATCH, CONTRACT.MARKER_MISSING, PN-RUN-3001, PN-RUN-3002, PN-RUN-3030, PN-MIG-2001, PN-CLI-4011, PN-SCHEMA-0001, drift, capability missing, planner conflict, prisma studio, EXPLAIN, query log, db.end, db.close, script won't exit, hangs, close connection, pool.end, client is closed.\n---\n\n# Prisma Next — Debug\n\n> **Edit your data contract. Prisma handles the rest.**\n\nWhen a Prisma Next call fails, the framework returns a **structured envelope**. The agent's job is to read the envelope, route on the `code`, and chain to the right authoring skill for the actual fix. This skill teaches the envelope shapes and the routing — it does not duplicate sibling-skill workflows.\n\n## When to Use\n\n- User pastes an error envelope (CLI failure, runtime exception, `--json` output).\n- User says *\"my query won't typecheck\"*, *\"my migration won't apply\"*, *\"my emit failed\"*, *\"the runtime crashed\"*.\n- User mentions a stable code (`PN-CLI-*`, `PN-MIG-*`, `PN-RUN-*`, `PN-SCHEMA-*`, `MIGRATION.*`, `CONTRACT.*`, `LINT.*`, `BUDGET.*`, `PLAN.*`, `RUNTIME.*`).\n- User mentions: *Studio, EXPLAIN, query log, prepared statements, drift, hash mismatch, capability, planner*.\n\n## When Not to Use\n\n- User wants to author a query \u002F model \u002F migration → the matching authoring skill.\n- User wants to *prevent* errors (lints, budgets, type-level guards) → `prisma-next-runtime`.\n- User wants the framework changed because the surface itself is the problem (no envelope to route on, capability genuinely missing) → `prisma-next-feedback`.\n\n## Key Concepts\n\n### Two envelope shapes\n\nPrisma Next emits **two distinct envelopes** depending on which seam threw. Read which one you have *before* routing.\n\n**1. CLI envelope** — produced by `prisma-next ...` commands (emit, db init\u002Fupdate\u002Fverify\u002Fsign\u002Fschema, migration plan\u002Fapply\u002Fshow\u002Fstatus, init). Shape (see `CliErrorEnvelope` in `packages\u002F1-framework\u002F1-core\u002Ferrors\u002Fsrc\u002Fcontrol.ts`):\n\n```json\n{\n  \"ok\": false,\n  \"code\": \"PN-MIG-2001\",\n  \"domain\": \"MIG\",\n  \"severity\": \"error\",\n  \"summary\": \"Unfilled migration placeholder\",\n  \"why\": \"...\",\n  \"fix\": \"...\",\n  \"where\": { \"path\": \"...\", \"line\": 42 },\n  \"meta\": { \"slot\": \"...\" },\n  \"docsUrl\": \"https:\u002F\u002Fprisma-next.dev\u002F...\"\n}\n```\n\nThe full code is `PN-\u003Cdomain>-\u003CNNNN>`. Domains in use: `CLI`, `MIG`, `RUN`, `CON`, `SCHEMA`. Severity is `error | warn | info` — `migration status` exits 0 when its diagnostics are `warn`, so route on **severity + code together**, not on exit code alone.\n\n**2. Runtime envelope** — thrown by the in-process runtime when executing a query (see `RuntimeErrorEnvelope` in `packages\u002F1-framework\u002F1-core\u002Fframework-components\u002Fsrc\u002Fexecution\u002Fruntime-error.ts`):\n\n```ts\n{ name: 'RuntimeError', code: 'BUDGET.TIME_EXCEEDED', category: 'BUDGET', severity: 'error', message: '...', details: { ... } }\n```\n\n`category` is one of `PLAN | CONTRACT | LINT | BUDGET | RUNTIME` (the prefix of `code`). `details` holds the structured context (`details` is the runtime envelope's equivalent of the CLI envelope's `meta`).\n\n**3. SQL driver errors** — surface as `SqlQueryError` \u002F `SqlConnectionError` (see `packages\u002F2-sql\u002F1-core\u002Ferrors\u002F`). Fields on `SqlQueryError`: `kind: 'sql_query'`, `sqlState` (Postgres SQLSTATE, e.g. `'23505'`), `constraint`, `table`, `column`, `detail`, `cause`. These are *not* `PN-*` codes — route on `sqlState` and the constraint metadata. SQL driver errors are typically wrapped by middleware before reaching the user, but raw-SQL paths can surface them directly.\n\n### Wrapped errors and `meta.code`\n\nSome commands re-wrap a downstream error into a `PN-RUN-3000` (`errorRuntime`) envelope and stash the original code on `meta.code`. The most important case: `migrate` wraps `MigrationToolsError` (which has codes like `MIGRATION.HASH_MISMATCH`, `MIGRATION.STALE_CONTRACT_BOOKENDS`, `MIGRATION.AMBIGUOUS_TARGET`) via `mapMigrationToolsError`. The envelope you see is `code: 'PN-RUN-3000'` with `meta.code: 'MIGRATION.HASH_MISMATCH'`. **Always check `meta.code` when `code` is `PN-RUN-3000`** — that's where the routing-quality information lives.\n\n### How to ask for the full envelope\n\nIf the user only pasted the human summary, ask for `--json` output (machine envelope) or re-run with `-v` (CLI prints the full structured fields). `--json` and `-v` are global flags on every CLI command.\n\n## Routing — script teardown and closed client\n\nThese symptoms are not `PN-*` envelopes — route on the message text and chain to `prisma-next-runtime` § *Running as a script (teardown)*.\n\n| Symptom | Next move |\n|---|---|\n| `TypeError: db.end is not a function` | The runtime client does not expose `db.end()` — that's the `node-postgres` pool API (`pool.end()`). The right call is `await db.close()`. See `prisma-next-runtime` § *Running as a script (teardown)*. |\n| Script hangs after queries print \u002F process won't exit | On Postgres the façade-owned `pg.Pool` keeps the event loop alive. Call `await db.close()` before the script returns, or `await using db = postgres\u003CContract>(...)` at the top of a script module (do NOT put `await using` inside a request handler — block-scoped, would close per-request). See `prisma-next-runtime` § *Running as a script (teardown)*. |\n| `Error('Postgres client is closed')` \u002F `Error('SQLite client is closed')` \u002F `Error('Mongo client is closed')` | The client was closed via `db.close()` (terminal state). Remove the early `close()`, reorder so `close()` runs last after all queries, or construct a new `db` if reconnection is intended. See `prisma-next-runtime` § *Running as a script (teardown)*. |\n\n## Routing — symptom and code → next move\n\nThe single source of truth: read the envelope, find the row by `code` (or `meta.code` for wrapped errors), follow the next move.\n\n| Code | Where it surfaces | Next move |\n|---|---|---|\n| `PN-CLI-4001` *Config file not found* | Most `prisma-next` commands | Run `prisma-next init`, or pass `--config \u003Cpath>`. |\n| `PN-CLI-4002` *Contract configuration missing* | `contract emit`, `db *` | Add `contract: { ... }` to `prisma-next.config.ts`. See `prisma-next-contract`. |\n| `PN-CLI-4003` *Contract validation failed* | `contract emit`, `db *` | Re-run `pnpm prisma-next contract emit` after fixing the contract source named in `where.path`. See `prisma-next-contract`. |\n| `PN-CLI-4005` *Database connection is required* | `db *`, `migrate`, `migration status` | Pass `--db \u003Curl>` or set `db.connection` in `prisma-next.config.ts`. |\n| `PN-CLI-4011` *Missing extension packs in config* | `contract emit` (e.g. contract uses `pgvector.Vector(...)` but config does not list the pgvector pack) | Add the descriptors named in `meta.missingExtensions` to `extensions` in `prisma-next.config.ts`. See `prisma-next-contract`. |\n| `PN-CLI-4020` *Migration planning failed* | `db init`, `db update` | Inspect `meta.conflicts`. Recovery is per-conflict — chain to `prisma-next-migrations`. |\n| `PN-CLI-5002\u002F5003\u002F5004\u002F…` *Init errors* | `prisma-next init` | Re-run with the missing\u002Finvalid flags listed in `meta.missingFlags` or `meta.allowed`. |\n| `PN-MIG-2001` *Unfilled migration placeholder* | `node migrations\u002Fapp\u002F\u003Cdir>\u002Fmigration.ts` (self-emit) or `migrate` | Edit `migration.ts`, replace the named `placeholder(\"\u003Cslot>\")` with a real query closure, self-emit. See `prisma-next-migrations`. |\n| `PN-MIG-2002` *migration.ts not found* | Reading a migration package | Restore from version control or scaffold a fresh package with `migration plan`. |\n| `PN-MIG-2003` *Invalid default export* | Loading `migration.ts` | Use `export default class extends Migration { ... }` (or factory `() => ({ ... })`). See `prisma-next-migrations`. |\n| `PN-MIG-2005` *dataTransform contract mismatch* | Building a data-transform query plan | Pass the same `endContract` reference to both `dataTransform(endContract, …)` and the query-builder context. |\n| `PN-RUN-3001` *Database not signed* | `db verify`, runtime startup | DB has no marker yet. Run `prisma-next db init --db \u003Curl>` (baseline empty DB) or `db update --db \u003Curl>` (apply contract directly). |\n| `PN-RUN-3002` *Hash mismatch* | `db verify`, runtime startup | Marker disagrees with contract hash. Either migrate forward (`migrate` \u002F `db update`), or — if the DB is correct after a manual fix-up — `db sign`. See `prisma-next-migrations`. |\n| `PN-RUN-3003` *Target mismatch* | Runtime startup | Contract target ≠ config target; align them (see `meta.expected` \u002F `meta.actual`). |\n| `PN-RUN-3004` *Schema verification failed* | `db verify` (full mode) | Inspect `meta.verificationResult`. Run `db update` to reconcile, or adjust contract. |\n| `PN-RUN-3010` *Schema verification failed (CLI surface)* | `db verify` schema-only | Same as 3004. |\n| `PN-RUN-3020` *Migration runner failed* | `migrate`, `db update`, `db init` | Inspect `meta` for the conflict; reconcile schema drift, then re-run. Previously applied migrations are preserved. |\n| `PN-RUN-3030` *Destructive changes require confirmation* | `db update` (interactive prompt fires; non-interactive returns this code) | Re-run with `-y` (or `--yes`) to apply, or `--dry-run` to preview. **Only `db update` has this flow** — `migrate` does not gate destructive ops on a flag. |\n| `PN-RUN-3000` *(wrapper)* | `migrate`, others wrapping `MigrationToolsError` | Read `meta.code`. Cases: `MIGRATION.HASH_MISMATCH` (re-emit: `node migrations\u002Fapp\u002F\u003Cdir>\u002Fmigration.ts`); `MIGRATION.AMBIGUOUS_TARGET` (concurrent migrations — `prisma-next-migration-review`); `MIGRATION.STALE_CONTRACT_BOOKENDS` (re-run `migration plan`); `MIGRATION.NO_INVARIANT_PATH` \u002F `MIGRATION.UNKNOWN_INVARIANT` (`prisma-next-migration-review`); `MIGRATION.PATH_UNREACHABLE` \u002F `MIGRATION.MARKER_MISMATCH` (run `migrate --show --db $URL` to inspect the path, then `migration plan --from \u003Cfrom> --to \u003Ctarget>` or `migration list` to audit the graph — see `prisma-next-migration-review`). |\n| `PN-SCHEMA-0001` | `db verify` schema check | Live schema does not satisfy contract. `meta.verificationResult` has the diff. Run `db update` or adjust the contract. |\n| `MIGRATION.UP_TO_DATE` \u002F `.DATABASE_BEHIND` | `migration status` `info` diagnostics | Informational; exit 0. See `prisma-next-migration-review`. |\n| `MIGRATION.MISSING_INVARIANTS` | `migration status` `info` diagnostic | The live marker reached the destination hash structurally but doesn't carry all invariants the target ref requires. Run `migrate --to \u003Cname> --db $URL` to take a path that covers the missing invariants. See `prisma-next-migration-review`. |\n| `MIGRATION.NO_MARKER` \u002F `.MARKER_NOT_IN_HISTORY` \u002F `.DIVERGED` \u002F `CONTRACT.AHEAD` \u002F `CONTRACT.UNREADABLE` | `migration status` `warn` diagnostics (exit 0; CI gates parse `--json`) | Read `severity` *and* `code`. `prisma-next-migration-review` covers the diamond\u002Fdiverged\u002Fmarker-out-of-history flows. |\n| `BUDGET.ROWS_EXCEEDED` \u002F `BUDGET.TIME_EXCEEDED` | Runtime, when the `budgets` middleware is active | Tune `budgets({ maxRows, maxLatencyMs, ... })` or rewrite the query. See `prisma-next-runtime`. |\n| `LINT.SELECT_STAR` \u002F `LINT.NO_LIMIT` \u002F `LINT.DELETE_WITHOUT_WHERE` \u002F `LINT.UPDATE_WITHOUT_WHERE` \u002F `LINT.READ_ONLY_MUTATION` | Runtime, when the `lints` middleware is active | Fix the query (add a `WHERE` \u002F `LIMIT` \u002F explicit columns), or relax the lint config. See `prisma-next-runtime`. |\n| `PLAN.HASH_MISMATCH` | Runtime, executing a precompiled plan | The contract the plan was built against does not match the runtime contract. Re-emit, rebuild, redeploy. |\n| `CONTRACT.MARKER_MISSING` \u002F `CONTRACT.MARKER_MISMATCH` | Runtime, marker check before executing | Same family as `PN-RUN-3001` \u002F `PN-RUN-3002` but raised in-process by the runtime rather than a CLI. Recovery is the same. |\n| `RUNTIME.ABORTED` (`details.phase` = `encode\\|decode\\|stream\\|beforeExecute\\|afterExecute\\|onRow`) | Runtime, when an `AbortSignal` fires mid-execute | Cancellation, not a bug; surface to the caller. |\n| `SqlQueryError` (no `PN-` code) | Raw-SQL paths surfacing a driver error | Inspect `sqlState` + `constraint` + `table` + `column`. Postgres `23505` = unique violation, `23503` = foreign-key violation, etc. Fix the data or the schema. |\n| TypeScript error mentioning a capability (e.g. `returning()` not on the type, `include` of a many-relation off a many-load) | Authoring-time, before any envelope fires | Capability gates are declared in the **contract** (`capabilities` block, namespaced by target\u002Ffamily), not in `prisma-next.config.ts`. Route to `prisma-next-contract` for capability declaration and to `prisma-next-queries` for which method gates on which capability. Re-emit (`pnpm prisma-next contract emit`) after enabling. |\n| TypeScript error mentioning a missing field\u002Fmethod on `db.orm.\u003CModel>` or a stale `Contract` shape | Authoring-time | Re-emit (`pnpm prisma-next contract emit`); confirm `db.ts` instantiates with `postgres\u003CContract, TypeMaps>(...)` (the type parameters propagate the contract types). See `prisma-next-runtime` and `prisma-next-contract`. |\n\nIf the envelope's `code` is not in this table, follow the envelope's `fix` field literally — it's the framework's first-party next move. If `fix` is empty or unhelpful, escalate via `prisma-next-feedback`.\n\n## Common Pitfalls\n\n1. **Reading only `summary`, not the rest of the envelope.** `code`, `severity`, `why`, `fix`, `meta`\u002F`details`, and (for CLI errors) `where` are all load-bearing. The agent routes on `code`; the user sees `summary`.\n2. **Ignoring `severity`.** `migration status` emits warn-level diagnostics and **exits 0**. An agent that only checks exit code misses every concurrent-migration warning.\n3. **Skipping `meta.code` on `PN-RUN-3000`.** That envelope is a wrapper — the real code lives on `meta.code`.\n4. **Treating drift as something to silence with `db sign`.** `db sign` writes the marker from the current contract hash, but it requires schema verification to pass first. Run `db verify` before reaching for `db sign`.\n5. **Re-running `migrate` after a partial failure without inspecting state.** `db schema --db \u003Curl>` shows the live shape; `migration status --db \u003Curl> --json` shows where the marker actually is.\n\n## What Prisma Next doesn't do yet\n\n- **Studio \u002F GUI database browser.** No first-party Studio. Workaround: `prisma-next db schema` for a CLI tree of the live schema, or use a third-party tool (TablePlus, DataGrip, `psql`) against your `DATABASE_URL`. If you need a built-in GUI, file a feature request via `prisma-next-feedback`.\n- **First-class query logger middleware.** No built-in \"log every query\" middleware ships with the framework. Workaround: write a small custom middleware that wraps each operation (see `prisma-next-runtime` for middleware composition). If you need a built-in query log, file a feature request via `prisma-next-feedback`.\n- **`EXPLAIN` integration.** No first-class `.explain()` on plans. Workaround: write the EXPLAIN as a raw query (`db.sql.raw\\`EXPLAIN ANALYZE ...\\``; see `prisma-next-queries`). If you need first-class EXPLAIN, file a feature request via `prisma-next-feedback`.\n- **Prepared-statement caching as a user-facing surface.** Adapters prepare under the hood for parameterized queries, but you cannot pre-prepare and re-execute a statement by name. Workaround: use TypedSQL (see `prisma-next-queries`). If you need prepared statements as a first-class API, file a feature request via `prisma-next-feedback`.\n\n## Asking for help when the envelope doesn't route\n\n1. Re-run with `-v` (or `--json` for machine output) to get the full envelope.\n2. If the envelope is genuinely uninformative — empty `fix`, missing `meta`, generic `summary` — that's a framework affordance gap; route to `prisma-next-feedback` with the envelope, the contract source (sanitised), and the reproduction steps.\n\n## Checklist\n\n- [ ] Identified which envelope shape (`CliErrorEnvelope`, `RuntimeErrorEnvelope`, `SqlQueryError`).\n- [ ] Read every field — `code`, `severity`, `why`, `fix`, `meta` (or `details`), `where` if present.\n- [ ] If `code` is `PN-RUN-3000`, also read `meta.code`.\n- [ ] Routed on `code` to the next move (and chained to the matching authoring skill where the table says so).\n- [ ] Re-verified with the relevant CLI command (`db verify`, `migration status --json`, `contract emit`, `migrate`).\n- [ ] Did not confabulate a Studio \u002F EXPLAIN \u002F query-log API — used the documented workaround and routed unmet capability gaps to `prisma-next-feedback`.\n",{"data":36,"body":37},{"name":4,"description":6},{"type":38,"children":39},"root",[40,48,62,82,89,226,232,271,277,284,303,337,809,888,912,1087,1134,1256,1268,1384,1390,1424,1430,1455,1670,1676,1695,3501,3533,3539,3742,3748,3884,3890,3943,3949,4130],{"type":41,"tag":42,"props":43,"children":44},"element","h1",{"id":4},[45],{"type":46,"value":47},"text","Prisma Next — Debug",{"type":41,"tag":49,"props":50,"children":51},"blockquote",{},[52],{"type":41,"tag":53,"props":54,"children":55},"p",{},[56],{"type":41,"tag":57,"props":58,"children":59},"strong",{},[60],{"type":46,"value":61},"Edit your data contract. Prisma handles the rest.",{"type":41,"tag":53,"props":63,"children":64},{},[65,67,72,74,80],{"type":46,"value":66},"When a Prisma Next call fails, the framework returns a ",{"type":41,"tag":57,"props":68,"children":69},{},[70],{"type":46,"value":71},"structured envelope",{"type":46,"value":73},". The agent's job is to read the envelope, route on the ",{"type":41,"tag":75,"props":76,"children":78},"code",{"className":77},[],[79],{"type":46,"value":75},{"type":46,"value":81},", and chain to the right authoring skill for the actual fix. This skill teaches the envelope shapes and the routing — it does not duplicate sibling-skill workflows.",{"type":41,"tag":83,"props":84,"children":86},"h2",{"id":85},"when-to-use",[87],{"type":46,"value":88},"When to Use",{"type":41,"tag":90,"props":91,"children":92},"ul",{},[93,107,139,215],{"type":41,"tag":94,"props":95,"children":96},"li",{},[97,99,105],{"type":46,"value":98},"User pastes an error envelope (CLI failure, runtime exception, ",{"type":41,"tag":75,"props":100,"children":102},{"className":101},[],[103],{"type":46,"value":104},"--json",{"type":46,"value":106}," output).",{"type":41,"tag":94,"props":108,"children":109},{},[110,112,118,120,125,126,131,132,137],{"type":46,"value":111},"User says ",{"type":41,"tag":113,"props":114,"children":115},"em",{},[116],{"type":46,"value":117},"\"my query won't typecheck\"",{"type":46,"value":119},", ",{"type":41,"tag":113,"props":121,"children":122},{},[123],{"type":46,"value":124},"\"my migration won't apply\"",{"type":46,"value":119},{"type":41,"tag":113,"props":127,"children":128},{},[129],{"type":46,"value":130},"\"my emit failed\"",{"type":46,"value":119},{"type":41,"tag":113,"props":133,"children":134},{},[135],{"type":46,"value":136},"\"the runtime crashed\"",{"type":46,"value":138},".",{"type":41,"tag":94,"props":140,"children":141},{},[142,144,150,151,157,158,164,165,171,172,178,179,185,186,192,193,199,200,206,207,213],{"type":46,"value":143},"User mentions a stable code (",{"type":41,"tag":75,"props":145,"children":147},{"className":146},[],[148],{"type":46,"value":149},"PN-CLI-*",{"type":46,"value":119},{"type":41,"tag":75,"props":152,"children":154},{"className":153},[],[155],{"type":46,"value":156},"PN-MIG-*",{"type":46,"value":119},{"type":41,"tag":75,"props":159,"children":161},{"className":160},[],[162],{"type":46,"value":163},"PN-RUN-*",{"type":46,"value":119},{"type":41,"tag":75,"props":166,"children":168},{"className":167},[],[169],{"type":46,"value":170},"PN-SCHEMA-*",{"type":46,"value":119},{"type":41,"tag":75,"props":173,"children":175},{"className":174},[],[176],{"type":46,"value":177},"MIGRATION.*",{"type":46,"value":119},{"type":41,"tag":75,"props":180,"children":182},{"className":181},[],[183],{"type":46,"value":184},"CONTRACT.*",{"type":46,"value":119},{"type":41,"tag":75,"props":187,"children":189},{"className":188},[],[190],{"type":46,"value":191},"LINT.*",{"type":46,"value":119},{"type":41,"tag":75,"props":194,"children":196},{"className":195},[],[197],{"type":46,"value":198},"BUDGET.*",{"type":46,"value":119},{"type":41,"tag":75,"props":201,"children":203},{"className":202},[],[204],{"type":46,"value":205},"PLAN.*",{"type":46,"value":119},{"type":41,"tag":75,"props":208,"children":210},{"className":209},[],[211],{"type":46,"value":212},"RUNTIME.*",{"type":46,"value":214},").",{"type":41,"tag":94,"props":216,"children":217},{},[218,220,225],{"type":46,"value":219},"User mentions: ",{"type":41,"tag":113,"props":221,"children":222},{},[223],{"type":46,"value":224},"Studio, EXPLAIN, query log, prepared statements, drift, hash mismatch, capability, planner",{"type":46,"value":138},{"type":41,"tag":83,"props":227,"children":229},{"id":228},"when-not-to-use",[230],{"type":46,"value":231},"When Not to Use",{"type":41,"tag":90,"props":233,"children":234},{},[235,240,259],{"type":41,"tag":94,"props":236,"children":237},{},[238],{"type":46,"value":239},"User wants to author a query \u002F model \u002F migration → the matching authoring skill.",{"type":41,"tag":94,"props":241,"children":242},{},[243,245,250,252,258],{"type":46,"value":244},"User wants to ",{"type":41,"tag":113,"props":246,"children":247},{},[248],{"type":46,"value":249},"prevent",{"type":46,"value":251}," errors (lints, budgets, type-level guards) → ",{"type":41,"tag":75,"props":253,"children":255},{"className":254},[],[256],{"type":46,"value":257},"prisma-next-runtime",{"type":46,"value":138},{"type":41,"tag":94,"props":260,"children":261},{},[262,264,270],{"type":46,"value":263},"User wants the framework changed because the surface itself is the problem (no envelope to route on, capability genuinely missing) → ",{"type":41,"tag":75,"props":265,"children":267},{"className":266},[],[268],{"type":46,"value":269},"prisma-next-feedback",{"type":46,"value":138},{"type":41,"tag":83,"props":272,"children":274},{"id":273},"key-concepts",[275],{"type":46,"value":276},"Key Concepts",{"type":41,"tag":278,"props":279,"children":281},"h3",{"id":280},"two-envelope-shapes",[282],{"type":46,"value":283},"Two envelope shapes",{"type":41,"tag":53,"props":285,"children":286},{},[287,289,294,296,301],{"type":46,"value":288},"Prisma Next emits ",{"type":41,"tag":57,"props":290,"children":291},{},[292],{"type":46,"value":293},"two distinct envelopes",{"type":46,"value":295}," depending on which seam threw. Read which one you have ",{"type":41,"tag":113,"props":297,"children":298},{},[299],{"type":46,"value":300},"before",{"type":46,"value":302}," routing.",{"type":41,"tag":53,"props":304,"children":305},{},[306,311,313,319,321,327,329,335],{"type":41,"tag":57,"props":307,"children":308},{},[309],{"type":46,"value":310},"1. CLI envelope",{"type":46,"value":312}," — produced by ",{"type":41,"tag":75,"props":314,"children":316},{"className":315},[],[317],{"type":46,"value":318},"prisma-next ...",{"type":46,"value":320}," commands (emit, db init\u002Fupdate\u002Fverify\u002Fsign\u002Fschema, migration plan\u002Fapply\u002Fshow\u002Fstatus, init). Shape (see ",{"type":41,"tag":75,"props":322,"children":324},{"className":323},[],[325],{"type":46,"value":326},"CliErrorEnvelope",{"type":46,"value":328}," in ",{"type":41,"tag":75,"props":330,"children":332},{"className":331},[],[333],{"type":46,"value":334},"packages\u002F1-framework\u002F1-core\u002Ferrors\u002Fsrc\u002Fcontrol.ts",{"type":46,"value":336},"):",{"type":41,"tag":338,"props":339,"children":344},"pre",{"className":340,"code":341,"language":342,"meta":343,"style":343},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"ok\": false,\n  \"code\": \"PN-MIG-2001\",\n  \"domain\": \"MIG\",\n  \"severity\": \"error\",\n  \"summary\": \"Unfilled migration placeholder\",\n  \"why\": \"...\",\n  \"fix\": \"...\",\n  \"where\": { \"path\": \"...\", \"line\": 42 },\n  \"meta\": { \"slot\": \"...\" },\n  \"docsUrl\": \"https:\u002F\u002Fprisma-next.dev\u002F...\"\n}\n","json","",[345],{"type":41,"tag":75,"props":346,"children":347},{"__ignoreMap":343},[348,360,390,430,468,506,544,582,619,707,765,800],{"type":41,"tag":349,"props":350,"children":353},"span",{"class":351,"line":352},"line",1,[354],{"type":41,"tag":349,"props":355,"children":357},{"style":356},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[358],{"type":46,"value":359},"{\n",{"type":41,"tag":349,"props":361,"children":363},{"class":351,"line":362},2,[364,369,375,380,385],{"type":41,"tag":349,"props":365,"children":366},{"style":356},[367],{"type":46,"value":368},"  \"",{"type":41,"tag":349,"props":370,"children":372},{"style":371},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[373],{"type":46,"value":374},"ok",{"type":41,"tag":349,"props":376,"children":377},{"style":356},[378],{"type":46,"value":379},"\"",{"type":41,"tag":349,"props":381,"children":382},{"style":356},[383],{"type":46,"value":384},":",{"type":41,"tag":349,"props":386,"children":387},{"style":356},[388],{"type":46,"value":389}," false,\n",{"type":41,"tag":349,"props":391,"children":393},{"class":351,"line":392},3,[394,398,402,406,410,415,421,425],{"type":41,"tag":349,"props":395,"children":396},{"style":356},[397],{"type":46,"value":368},{"type":41,"tag":349,"props":399,"children":400},{"style":371},[401],{"type":46,"value":75},{"type":41,"tag":349,"props":403,"children":404},{"style":356},[405],{"type":46,"value":379},{"type":41,"tag":349,"props":407,"children":408},{"style":356},[409],{"type":46,"value":384},{"type":41,"tag":349,"props":411,"children":412},{"style":356},[413],{"type":46,"value":414}," \"",{"type":41,"tag":349,"props":416,"children":418},{"style":417},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[419],{"type":46,"value":420},"PN-MIG-2001",{"type":41,"tag":349,"props":422,"children":423},{"style":356},[424],{"type":46,"value":379},{"type":41,"tag":349,"props":426,"children":427},{"style":356},[428],{"type":46,"value":429},",\n",{"type":41,"tag":349,"props":431,"children":433},{"class":351,"line":432},4,[434,438,443,447,451,455,460,464],{"type":41,"tag":349,"props":435,"children":436},{"style":356},[437],{"type":46,"value":368},{"type":41,"tag":349,"props":439,"children":440},{"style":371},[441],{"type":46,"value":442},"domain",{"type":41,"tag":349,"props":444,"children":445},{"style":356},[446],{"type":46,"value":379},{"type":41,"tag":349,"props":448,"children":449},{"style":356},[450],{"type":46,"value":384},{"type":41,"tag":349,"props":452,"children":453},{"style":356},[454],{"type":46,"value":414},{"type":41,"tag":349,"props":456,"children":457},{"style":417},[458],{"type":46,"value":459},"MIG",{"type":41,"tag":349,"props":461,"children":462},{"style":356},[463],{"type":46,"value":379},{"type":41,"tag":349,"props":465,"children":466},{"style":356},[467],{"type":46,"value":429},{"type":41,"tag":349,"props":469,"children":471},{"class":351,"line":470},5,[472,476,481,485,489,493,498,502],{"type":41,"tag":349,"props":473,"children":474},{"style":356},[475],{"type":46,"value":368},{"type":41,"tag":349,"props":477,"children":478},{"style":371},[479],{"type":46,"value":480},"severity",{"type":41,"tag":349,"props":482,"children":483},{"style":356},[484],{"type":46,"value":379},{"type":41,"tag":349,"props":486,"children":487},{"style":356},[488],{"type":46,"value":384},{"type":41,"tag":349,"props":490,"children":491},{"style":356},[492],{"type":46,"value":414},{"type":41,"tag":349,"props":494,"children":495},{"style":417},[496],{"type":46,"value":497},"error",{"type":41,"tag":349,"props":499,"children":500},{"style":356},[501],{"type":46,"value":379},{"type":41,"tag":349,"props":503,"children":504},{"style":356},[505],{"type":46,"value":429},{"type":41,"tag":349,"props":507,"children":509},{"class":351,"line":508},6,[510,514,519,523,527,531,536,540],{"type":41,"tag":349,"props":511,"children":512},{"style":356},[513],{"type":46,"value":368},{"type":41,"tag":349,"props":515,"children":516},{"style":371},[517],{"type":46,"value":518},"summary",{"type":41,"tag":349,"props":520,"children":521},{"style":356},[522],{"type":46,"value":379},{"type":41,"tag":349,"props":524,"children":525},{"style":356},[526],{"type":46,"value":384},{"type":41,"tag":349,"props":528,"children":529},{"style":356},[530],{"type":46,"value":414},{"type":41,"tag":349,"props":532,"children":533},{"style":417},[534],{"type":46,"value":535},"Unfilled migration placeholder",{"type":41,"tag":349,"props":537,"children":538},{"style":356},[539],{"type":46,"value":379},{"type":41,"tag":349,"props":541,"children":542},{"style":356},[543],{"type":46,"value":429},{"type":41,"tag":349,"props":545,"children":547},{"class":351,"line":546},7,[548,552,557,561,565,569,574,578],{"type":41,"tag":349,"props":549,"children":550},{"style":356},[551],{"type":46,"value":368},{"type":41,"tag":349,"props":553,"children":554},{"style":371},[555],{"type":46,"value":556},"why",{"type":41,"tag":349,"props":558,"children":559},{"style":356},[560],{"type":46,"value":379},{"type":41,"tag":349,"props":562,"children":563},{"style":356},[564],{"type":46,"value":384},{"type":41,"tag":349,"props":566,"children":567},{"style":356},[568],{"type":46,"value":414},{"type":41,"tag":349,"props":570,"children":571},{"style":417},[572],{"type":46,"value":573},"...",{"type":41,"tag":349,"props":575,"children":576},{"style":356},[577],{"type":46,"value":379},{"type":41,"tag":349,"props":579,"children":580},{"style":356},[581],{"type":46,"value":429},{"type":41,"tag":349,"props":583,"children":585},{"class":351,"line":584},8,[586,590,595,599,603,607,611,615],{"type":41,"tag":349,"props":587,"children":588},{"style":356},[589],{"type":46,"value":368},{"type":41,"tag":349,"props":591,"children":592},{"style":371},[593],{"type":46,"value":594},"fix",{"type":41,"tag":349,"props":596,"children":597},{"style":356},[598],{"type":46,"value":379},{"type":41,"tag":349,"props":600,"children":601},{"style":356},[602],{"type":46,"value":384},{"type":41,"tag":349,"props":604,"children":605},{"style":356},[606],{"type":46,"value":414},{"type":41,"tag":349,"props":608,"children":609},{"style":417},[610],{"type":46,"value":573},{"type":41,"tag":349,"props":612,"children":613},{"style":356},[614],{"type":46,"value":379},{"type":41,"tag":349,"props":616,"children":617},{"style":356},[618],{"type":46,"value":429},{"type":41,"tag":349,"props":620,"children":622},{"class":351,"line":621},9,[623,627,632,636,640,645,649,655,659,663,667,671,675,680,684,688,692,696,702],{"type":41,"tag":349,"props":624,"children":625},{"style":356},[626],{"type":46,"value":368},{"type":41,"tag":349,"props":628,"children":629},{"style":371},[630],{"type":46,"value":631},"where",{"type":41,"tag":349,"props":633,"children":634},{"style":356},[635],{"type":46,"value":379},{"type":41,"tag":349,"props":637,"children":638},{"style":356},[639],{"type":46,"value":384},{"type":41,"tag":349,"props":641,"children":642},{"style":356},[643],{"type":46,"value":644}," {",{"type":41,"tag":349,"props":646,"children":647},{"style":356},[648],{"type":46,"value":414},{"type":41,"tag":349,"props":650,"children":652},{"style":651},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[653],{"type":46,"value":654},"path",{"type":41,"tag":349,"props":656,"children":657},{"style":356},[658],{"type":46,"value":379},{"type":41,"tag":349,"props":660,"children":661},{"style":356},[662],{"type":46,"value":384},{"type":41,"tag":349,"props":664,"children":665},{"style":356},[666],{"type":46,"value":414},{"type":41,"tag":349,"props":668,"children":669},{"style":417},[670],{"type":46,"value":573},{"type":41,"tag":349,"props":672,"children":673},{"style":356},[674],{"type":46,"value":379},{"type":41,"tag":349,"props":676,"children":677},{"style":356},[678],{"type":46,"value":679},",",{"type":41,"tag":349,"props":681,"children":682},{"style":356},[683],{"type":46,"value":414},{"type":41,"tag":349,"props":685,"children":686},{"style":651},[687],{"type":46,"value":351},{"type":41,"tag":349,"props":689,"children":690},{"style":356},[691],{"type":46,"value":379},{"type":41,"tag":349,"props":693,"children":694},{"style":356},[695],{"type":46,"value":384},{"type":41,"tag":349,"props":697,"children":699},{"style":698},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[700],{"type":46,"value":701}," 42",{"type":41,"tag":349,"props":703,"children":704},{"style":356},[705],{"type":46,"value":706}," },\n",{"type":41,"tag":349,"props":708,"children":710},{"class":351,"line":709},10,[711,715,720,724,728,732,736,741,745,749,753,757,761],{"type":41,"tag":349,"props":712,"children":713},{"style":356},[714],{"type":46,"value":368},{"type":41,"tag":349,"props":716,"children":717},{"style":371},[718],{"type":46,"value":719},"meta",{"type":41,"tag":349,"props":721,"children":722},{"style":356},[723],{"type":46,"value":379},{"type":41,"tag":349,"props":725,"children":726},{"style":356},[727],{"type":46,"value":384},{"type":41,"tag":349,"props":729,"children":730},{"style":356},[731],{"type":46,"value":644},{"type":41,"tag":349,"props":733,"children":734},{"style":356},[735],{"type":46,"value":414},{"type":41,"tag":349,"props":737,"children":738},{"style":651},[739],{"type":46,"value":740},"slot",{"type":41,"tag":349,"props":742,"children":743},{"style":356},[744],{"type":46,"value":379},{"type":41,"tag":349,"props":746,"children":747},{"style":356},[748],{"type":46,"value":384},{"type":41,"tag":349,"props":750,"children":751},{"style":356},[752],{"type":46,"value":414},{"type":41,"tag":349,"props":754,"children":755},{"style":417},[756],{"type":46,"value":573},{"type":41,"tag":349,"props":758,"children":759},{"style":356},[760],{"type":46,"value":379},{"type":41,"tag":349,"props":762,"children":763},{"style":356},[764],{"type":46,"value":706},{"type":41,"tag":349,"props":766,"children":768},{"class":351,"line":767},11,[769,773,778,782,786,790,795],{"type":41,"tag":349,"props":770,"children":771},{"style":356},[772],{"type":46,"value":368},{"type":41,"tag":349,"props":774,"children":775},{"style":371},[776],{"type":46,"value":777},"docsUrl",{"type":41,"tag":349,"props":779,"children":780},{"style":356},[781],{"type":46,"value":379},{"type":41,"tag":349,"props":783,"children":784},{"style":356},[785],{"type":46,"value":384},{"type":41,"tag":349,"props":787,"children":788},{"style":356},[789],{"type":46,"value":414},{"type":41,"tag":349,"props":791,"children":792},{"style":417},[793],{"type":46,"value":794},"https:\u002F\u002Fprisma-next.dev\u002F...",{"type":41,"tag":349,"props":796,"children":797},{"style":356},[798],{"type":46,"value":799},"\"\n",{"type":41,"tag":349,"props":801,"children":803},{"class":351,"line":802},12,[804],{"type":41,"tag":349,"props":805,"children":806},{"style":356},[807],{"type":46,"value":808},"}\n",{"type":41,"tag":53,"props":810,"children":811},{},[812,814,820,822,828,829,834,835,841,842,848,849,855,857,863,865,871,873,879,881,886],{"type":46,"value":813},"The full code is ",{"type":41,"tag":75,"props":815,"children":817},{"className":816},[],[818],{"type":46,"value":819},"PN-\u003Cdomain>-\u003CNNNN>",{"type":46,"value":821},". Domains in use: ",{"type":41,"tag":75,"props":823,"children":825},{"className":824},[],[826],{"type":46,"value":827},"CLI",{"type":46,"value":119},{"type":41,"tag":75,"props":830,"children":832},{"className":831},[],[833],{"type":46,"value":459},{"type":46,"value":119},{"type":41,"tag":75,"props":836,"children":838},{"className":837},[],[839],{"type":46,"value":840},"RUN",{"type":46,"value":119},{"type":41,"tag":75,"props":843,"children":845},{"className":844},[],[846],{"type":46,"value":847},"CON",{"type":46,"value":119},{"type":41,"tag":75,"props":850,"children":852},{"className":851},[],[853],{"type":46,"value":854},"SCHEMA",{"type":46,"value":856},". Severity is ",{"type":41,"tag":75,"props":858,"children":860},{"className":859},[],[861],{"type":46,"value":862},"error | warn | info",{"type":46,"value":864}," — ",{"type":41,"tag":75,"props":866,"children":868},{"className":867},[],[869],{"type":46,"value":870},"migration status",{"type":46,"value":872}," exits 0 when its diagnostics are ",{"type":41,"tag":75,"props":874,"children":876},{"className":875},[],[877],{"type":46,"value":878},"warn",{"type":46,"value":880},", so route on ",{"type":41,"tag":57,"props":882,"children":883},{},[884],{"type":46,"value":885},"severity + code together",{"type":46,"value":887},", not on exit code alone.",{"type":41,"tag":53,"props":889,"children":890},{},[891,896,898,904,905,911],{"type":41,"tag":57,"props":892,"children":893},{},[894],{"type":46,"value":895},"2. Runtime envelope",{"type":46,"value":897}," — thrown by the in-process runtime when executing a query (see ",{"type":41,"tag":75,"props":899,"children":901},{"className":900},[],[902],{"type":46,"value":903},"RuntimeErrorEnvelope",{"type":46,"value":328},{"type":41,"tag":75,"props":906,"children":908},{"className":907},[],[909],{"type":46,"value":910},"packages\u002F1-framework\u002F1-core\u002Fframework-components\u002Fsrc\u002Fexecution\u002Fruntime-error.ts",{"type":46,"value":336},{"type":41,"tag":338,"props":913,"children":917},{"className":914,"code":915,"language":916,"meta":343,"style":343},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{ name: 'RuntimeError', code: 'BUDGET.TIME_EXCEEDED', category: 'BUDGET', severity: 'error', message: '...', details: { ... } }\n","ts",[918],{"type":41,"tag":75,"props":919,"children":920},{"__ignoreMap":343},[921],{"type":41,"tag":349,"props":922,"children":923},{"class":351,"line":352},[924,929,934,938,943,948,953,957,962,966,970,975,979,983,988,992,996,1001,1005,1009,1014,1018,1022,1026,1030,1034,1039,1043,1047,1051,1055,1059,1064,1068,1072,1077,1082],{"type":41,"tag":349,"props":925,"children":926},{"style":356},[927],{"type":46,"value":928},"{",{"type":41,"tag":349,"props":930,"children":931},{"style":651},[932],{"type":46,"value":933}," name",{"type":41,"tag":349,"props":935,"children":936},{"style":356},[937],{"type":46,"value":384},{"type":41,"tag":349,"props":939,"children":940},{"style":356},[941],{"type":46,"value":942}," '",{"type":41,"tag":349,"props":944,"children":945},{"style":417},[946],{"type":46,"value":947},"RuntimeError",{"type":41,"tag":349,"props":949,"children":950},{"style":356},[951],{"type":46,"value":952},"'",{"type":41,"tag":349,"props":954,"children":955},{"style":356},[956],{"type":46,"value":679},{"type":41,"tag":349,"props":958,"children":959},{"style":651},[960],{"type":46,"value":961}," code",{"type":41,"tag":349,"props":963,"children":964},{"style":356},[965],{"type":46,"value":384},{"type":41,"tag":349,"props":967,"children":968},{"style":356},[969],{"type":46,"value":942},{"type":41,"tag":349,"props":971,"children":972},{"style":417},[973],{"type":46,"value":974},"BUDGET.TIME_EXCEEDED",{"type":41,"tag":349,"props":976,"children":977},{"style":356},[978],{"type":46,"value":952},{"type":41,"tag":349,"props":980,"children":981},{"style":356},[982],{"type":46,"value":679},{"type":41,"tag":349,"props":984,"children":985},{"style":651},[986],{"type":46,"value":987}," category",{"type":41,"tag":349,"props":989,"children":990},{"style":356},[991],{"type":46,"value":384},{"type":41,"tag":349,"props":993,"children":994},{"style":356},[995],{"type":46,"value":942},{"type":41,"tag":349,"props":997,"children":998},{"style":417},[999],{"type":46,"value":1000},"BUDGET",{"type":41,"tag":349,"props":1002,"children":1003},{"style":356},[1004],{"type":46,"value":952},{"type":41,"tag":349,"props":1006,"children":1007},{"style":356},[1008],{"type":46,"value":679},{"type":41,"tag":349,"props":1010,"children":1011},{"style":651},[1012],{"type":46,"value":1013}," severity",{"type":41,"tag":349,"props":1015,"children":1016},{"style":356},[1017],{"type":46,"value":384},{"type":41,"tag":349,"props":1019,"children":1020},{"style":356},[1021],{"type":46,"value":942},{"type":41,"tag":349,"props":1023,"children":1024},{"style":417},[1025],{"type":46,"value":497},{"type":41,"tag":349,"props":1027,"children":1028},{"style":356},[1029],{"type":46,"value":952},{"type":41,"tag":349,"props":1031,"children":1032},{"style":356},[1033],{"type":46,"value":679},{"type":41,"tag":349,"props":1035,"children":1036},{"style":651},[1037],{"type":46,"value":1038}," message",{"type":41,"tag":349,"props":1040,"children":1041},{"style":356},[1042],{"type":46,"value":384},{"type":41,"tag":349,"props":1044,"children":1045},{"style":356},[1046],{"type":46,"value":942},{"type":41,"tag":349,"props":1048,"children":1049},{"style":417},[1050],{"type":46,"value":573},{"type":41,"tag":349,"props":1052,"children":1053},{"style":356},[1054],{"type":46,"value":952},{"type":41,"tag":349,"props":1056,"children":1057},{"style":356},[1058],{"type":46,"value":679},{"type":41,"tag":349,"props":1060,"children":1061},{"style":651},[1062],{"type":46,"value":1063}," details",{"type":41,"tag":349,"props":1065,"children":1066},{"style":356},[1067],{"type":46,"value":384},{"type":41,"tag":349,"props":1069,"children":1070},{"style":356},[1071],{"type":46,"value":644},{"type":41,"tag":349,"props":1073,"children":1074},{"style":356},[1075],{"type":46,"value":1076}," ...",{"type":41,"tag":349,"props":1078,"children":1079},{"style":356},[1080],{"type":46,"value":1081}," }",{"type":41,"tag":349,"props":1083,"children":1084},{"style":356},[1085],{"type":46,"value":1086}," }\n",{"type":41,"tag":53,"props":1088,"children":1089},{},[1090,1096,1098,1104,1106,1111,1113,1119,1121,1126,1128,1133],{"type":41,"tag":75,"props":1091,"children":1093},{"className":1092},[],[1094],{"type":46,"value":1095},"category",{"type":46,"value":1097}," is one of ",{"type":41,"tag":75,"props":1099,"children":1101},{"className":1100},[],[1102],{"type":46,"value":1103},"PLAN | CONTRACT | LINT | BUDGET | RUNTIME",{"type":46,"value":1105}," (the prefix of ",{"type":41,"tag":75,"props":1107,"children":1109},{"className":1108},[],[1110],{"type":46,"value":75},{"type":46,"value":1112},"). ",{"type":41,"tag":75,"props":1114,"children":1116},{"className":1115},[],[1117],{"type":46,"value":1118},"details",{"type":46,"value":1120}," holds the structured context (",{"type":41,"tag":75,"props":1122,"children":1124},{"className":1123},[],[1125],{"type":46,"value":1118},{"type":46,"value":1127}," is the runtime envelope's equivalent of the CLI envelope's ",{"type":41,"tag":75,"props":1129,"children":1131},{"className":1130},[],[1132],{"type":46,"value":719},{"type":46,"value":214},{"type":41,"tag":53,"props":1135,"children":1136},{},[1137,1142,1144,1150,1152,1158,1160,1166,1168,1173,1175,1181,1182,1188,1190,1196,1198,1204,1205,1211,1212,1218,1219,1225,1226,1232,1234,1239,1241,1247,1249,1254],{"type":41,"tag":57,"props":1138,"children":1139},{},[1140],{"type":46,"value":1141},"3. SQL driver errors",{"type":46,"value":1143}," — surface as ",{"type":41,"tag":75,"props":1145,"children":1147},{"className":1146},[],[1148],{"type":46,"value":1149},"SqlQueryError",{"type":46,"value":1151}," \u002F ",{"type":41,"tag":75,"props":1153,"children":1155},{"className":1154},[],[1156],{"type":46,"value":1157},"SqlConnectionError",{"type":46,"value":1159}," (see ",{"type":41,"tag":75,"props":1161,"children":1163},{"className":1162},[],[1164],{"type":46,"value":1165},"packages\u002F2-sql\u002F1-core\u002Ferrors\u002F",{"type":46,"value":1167},"). Fields on ",{"type":41,"tag":75,"props":1169,"children":1171},{"className":1170},[],[1172],{"type":46,"value":1149},{"type":46,"value":1174},": ",{"type":41,"tag":75,"props":1176,"children":1178},{"className":1177},[],[1179],{"type":46,"value":1180},"kind: 'sql_query'",{"type":46,"value":119},{"type":41,"tag":75,"props":1183,"children":1185},{"className":1184},[],[1186],{"type":46,"value":1187},"sqlState",{"type":46,"value":1189}," (Postgres SQLSTATE, e.g. ",{"type":41,"tag":75,"props":1191,"children":1193},{"className":1192},[],[1194],{"type":46,"value":1195},"'23505'",{"type":46,"value":1197},"), ",{"type":41,"tag":75,"props":1199,"children":1201},{"className":1200},[],[1202],{"type":46,"value":1203},"constraint",{"type":46,"value":119},{"type":41,"tag":75,"props":1206,"children":1208},{"className":1207},[],[1209],{"type":46,"value":1210},"table",{"type":46,"value":119},{"type":41,"tag":75,"props":1213,"children":1215},{"className":1214},[],[1216],{"type":46,"value":1217},"column",{"type":46,"value":119},{"type":41,"tag":75,"props":1220,"children":1222},{"className":1221},[],[1223],{"type":46,"value":1224},"detail",{"type":46,"value":119},{"type":41,"tag":75,"props":1227,"children":1229},{"className":1228},[],[1230],{"type":46,"value":1231},"cause",{"type":46,"value":1233},". These are ",{"type":41,"tag":113,"props":1235,"children":1236},{},[1237],{"type":46,"value":1238},"not",{"type":46,"value":1240}," ",{"type":41,"tag":75,"props":1242,"children":1244},{"className":1243},[],[1245],{"type":46,"value":1246},"PN-*",{"type":46,"value":1248}," codes — route on ",{"type":41,"tag":75,"props":1250,"children":1252},{"className":1251},[],[1253],{"type":46,"value":1187},{"type":46,"value":1255}," and the constraint metadata. SQL driver errors are typically wrapped by middleware before reaching the user, but raw-SQL paths can surface them directly.",{"type":41,"tag":278,"props":1257,"children":1259},{"id":1258},"wrapped-errors-and-metacode",[1260,1262],{"type":46,"value":1261},"Wrapped errors and ",{"type":41,"tag":75,"props":1263,"children":1265},{"className":1264},[],[1266],{"type":46,"value":1267},"meta.code",{"type":41,"tag":53,"props":1269,"children":1270},{},[1271,1273,1279,1281,1287,1289,1294,1296,1302,1304,1310,1312,1318,1319,1325,1326,1332,1334,1340,1342,1348,1350,1356,1358,1382],{"type":46,"value":1272},"Some commands re-wrap a downstream error into a ",{"type":41,"tag":75,"props":1274,"children":1276},{"className":1275},[],[1277],{"type":46,"value":1278},"PN-RUN-3000",{"type":46,"value":1280}," (",{"type":41,"tag":75,"props":1282,"children":1284},{"className":1283},[],[1285],{"type":46,"value":1286},"errorRuntime",{"type":46,"value":1288},") envelope and stash the original code on ",{"type":41,"tag":75,"props":1290,"children":1292},{"className":1291},[],[1293],{"type":46,"value":1267},{"type":46,"value":1295},". The most important case: ",{"type":41,"tag":75,"props":1297,"children":1299},{"className":1298},[],[1300],{"type":46,"value":1301},"migrate",{"type":46,"value":1303}," wraps ",{"type":41,"tag":75,"props":1305,"children":1307},{"className":1306},[],[1308],{"type":46,"value":1309},"MigrationToolsError",{"type":46,"value":1311}," (which has codes like ",{"type":41,"tag":75,"props":1313,"children":1315},{"className":1314},[],[1316],{"type":46,"value":1317},"MIGRATION.HASH_MISMATCH",{"type":46,"value":119},{"type":41,"tag":75,"props":1320,"children":1322},{"className":1321},[],[1323],{"type":46,"value":1324},"MIGRATION.STALE_CONTRACT_BOOKENDS",{"type":46,"value":119},{"type":41,"tag":75,"props":1327,"children":1329},{"className":1328},[],[1330],{"type":46,"value":1331},"MIGRATION.AMBIGUOUS_TARGET",{"type":46,"value":1333},") via ",{"type":41,"tag":75,"props":1335,"children":1337},{"className":1336},[],[1338],{"type":46,"value":1339},"mapMigrationToolsError",{"type":46,"value":1341},". The envelope you see is ",{"type":41,"tag":75,"props":1343,"children":1345},{"className":1344},[],[1346],{"type":46,"value":1347},"code: 'PN-RUN-3000'",{"type":46,"value":1349}," with ",{"type":41,"tag":75,"props":1351,"children":1353},{"className":1352},[],[1354],{"type":46,"value":1355},"meta.code: 'MIGRATION.HASH_MISMATCH'",{"type":46,"value":1357},". ",{"type":41,"tag":57,"props":1359,"children":1360},{},[1361,1363,1368,1370,1375,1377],{"type":46,"value":1362},"Always check ",{"type":41,"tag":75,"props":1364,"children":1366},{"className":1365},[],[1367],{"type":46,"value":1267},{"type":46,"value":1369}," when ",{"type":41,"tag":75,"props":1371,"children":1373},{"className":1372},[],[1374],{"type":46,"value":75},{"type":46,"value":1376}," is ",{"type":41,"tag":75,"props":1378,"children":1380},{"className":1379},[],[1381],{"type":46,"value":1278},{"type":46,"value":1383}," — that's where the routing-quality information lives.",{"type":41,"tag":278,"props":1385,"children":1387},{"id":1386},"how-to-ask-for-the-full-envelope",[1388],{"type":46,"value":1389},"How to ask for the full envelope",{"type":41,"tag":53,"props":1391,"children":1392},{},[1393,1395,1400,1402,1408,1410,1415,1417,1422],{"type":46,"value":1394},"If the user only pasted the human summary, ask for ",{"type":41,"tag":75,"props":1396,"children":1398},{"className":1397},[],[1399],{"type":46,"value":104},{"type":46,"value":1401}," output (machine envelope) or re-run with ",{"type":41,"tag":75,"props":1403,"children":1405},{"className":1404},[],[1406],{"type":46,"value":1407},"-v",{"type":46,"value":1409}," (CLI prints the full structured fields). ",{"type":41,"tag":75,"props":1411,"children":1413},{"className":1412},[],[1414],{"type":46,"value":104},{"type":46,"value":1416}," and ",{"type":41,"tag":75,"props":1418,"children":1420},{"className":1419},[],[1421],{"type":46,"value":1407},{"type":46,"value":1423}," are global flags on every CLI command.",{"type":41,"tag":83,"props":1425,"children":1427},{"id":1426},"routing-script-teardown-and-closed-client",[1428],{"type":46,"value":1429},"Routing — script teardown and closed client",{"type":41,"tag":53,"props":1431,"children":1432},{},[1433,1435,1440,1442,1447,1449,1454],{"type":46,"value":1434},"These symptoms are not ",{"type":41,"tag":75,"props":1436,"children":1438},{"className":1437},[],[1439],{"type":46,"value":1246},{"type":46,"value":1441}," envelopes — route on the message text and chain to ",{"type":41,"tag":75,"props":1443,"children":1445},{"className":1444},[],[1446],{"type":46,"value":257},{"type":46,"value":1448}," § ",{"type":41,"tag":113,"props":1450,"children":1451},{},[1452],{"type":46,"value":1453},"Running as a script (teardown)",{"type":46,"value":138},{"type":41,"tag":1210,"props":1456,"children":1457},{},[1458,1477],{"type":41,"tag":1459,"props":1460,"children":1461},"thead",{},[1462],{"type":41,"tag":1463,"props":1464,"children":1465},"tr",{},[1466,1472],{"type":41,"tag":1467,"props":1468,"children":1469},"th",{},[1470],{"type":46,"value":1471},"Symptom",{"type":41,"tag":1467,"props":1473,"children":1474},{},[1475],{"type":46,"value":1476},"Next move",{"type":41,"tag":1478,"props":1479,"children":1480},"tbody",{},[1481,1542,1597],{"type":41,"tag":1463,"props":1482,"children":1483},{},[1484,1494],{"type":41,"tag":1485,"props":1486,"children":1487},"td",{},[1488],{"type":41,"tag":75,"props":1489,"children":1491},{"className":1490},[],[1492],{"type":46,"value":1493},"TypeError: db.end is not a function",{"type":41,"tag":1485,"props":1495,"children":1496},{},[1497,1499,1505,1507,1513,1515,1521,1523,1529,1531,1536,1537,1541],{"type":46,"value":1498},"The runtime client does not expose ",{"type":41,"tag":75,"props":1500,"children":1502},{"className":1501},[],[1503],{"type":46,"value":1504},"db.end()",{"type":46,"value":1506}," — that's the ",{"type":41,"tag":75,"props":1508,"children":1510},{"className":1509},[],[1511],{"type":46,"value":1512},"node-postgres",{"type":46,"value":1514}," pool API (",{"type":41,"tag":75,"props":1516,"children":1518},{"className":1517},[],[1519],{"type":46,"value":1520},"pool.end()",{"type":46,"value":1522},"). The right call is ",{"type":41,"tag":75,"props":1524,"children":1526},{"className":1525},[],[1527],{"type":46,"value":1528},"await db.close()",{"type":46,"value":1530},". See ",{"type":41,"tag":75,"props":1532,"children":1534},{"className":1533},[],[1535],{"type":46,"value":257},{"type":46,"value":1448},{"type":41,"tag":113,"props":1538,"children":1539},{},[1540],{"type":46,"value":1453},{"type":46,"value":138},{"type":41,"tag":1463,"props":1543,"children":1544},{},[1545,1550],{"type":41,"tag":1485,"props":1546,"children":1547},{},[1548],{"type":46,"value":1549},"Script hangs after queries print \u002F process won't exit",{"type":41,"tag":1485,"props":1551,"children":1552},{},[1553,1555,1561,1563,1568,1570,1576,1578,1584,1586,1591,1592,1596],{"type":46,"value":1554},"On Postgres the façade-owned ",{"type":41,"tag":75,"props":1556,"children":1558},{"className":1557},[],[1559],{"type":46,"value":1560},"pg.Pool",{"type":46,"value":1562}," keeps the event loop alive. Call ",{"type":41,"tag":75,"props":1564,"children":1566},{"className":1565},[],[1567],{"type":46,"value":1528},{"type":46,"value":1569}," before the script returns, or ",{"type":41,"tag":75,"props":1571,"children":1573},{"className":1572},[],[1574],{"type":46,"value":1575},"await using db = postgres\u003CContract>(...)",{"type":46,"value":1577}," at the top of a script module (do NOT put ",{"type":41,"tag":75,"props":1579,"children":1581},{"className":1580},[],[1582],{"type":46,"value":1583},"await using",{"type":46,"value":1585}," inside a request handler — block-scoped, would close per-request). See ",{"type":41,"tag":75,"props":1587,"children":1589},{"className":1588},[],[1590],{"type":46,"value":257},{"type":46,"value":1448},{"type":41,"tag":113,"props":1593,"children":1594},{},[1595],{"type":46,"value":1453},{"type":46,"value":138},{"type":41,"tag":1463,"props":1598,"children":1599},{},[1600,1623],{"type":41,"tag":1485,"props":1601,"children":1602},{},[1603,1609,1610,1616,1617],{"type":41,"tag":75,"props":1604,"children":1606},{"className":1605},[],[1607],{"type":46,"value":1608},"Error('Postgres client is closed')",{"type":46,"value":1151},{"type":41,"tag":75,"props":1611,"children":1613},{"className":1612},[],[1614],{"type":46,"value":1615},"Error('SQLite client is closed')",{"type":46,"value":1151},{"type":41,"tag":75,"props":1618,"children":1620},{"className":1619},[],[1621],{"type":46,"value":1622},"Error('Mongo client is closed')",{"type":41,"tag":1485,"props":1624,"children":1625},{},[1626,1628,1634,1636,1642,1644,1649,1651,1657,1659,1664,1665,1669],{"type":46,"value":1627},"The client was closed via ",{"type":41,"tag":75,"props":1629,"children":1631},{"className":1630},[],[1632],{"type":46,"value":1633},"db.close()",{"type":46,"value":1635}," (terminal state). Remove the early ",{"type":41,"tag":75,"props":1637,"children":1639},{"className":1638},[],[1640],{"type":46,"value":1641},"close()",{"type":46,"value":1643},", reorder so ",{"type":41,"tag":75,"props":1645,"children":1647},{"className":1646},[],[1648],{"type":46,"value":1641},{"type":46,"value":1650}," runs last after all queries, or construct a new ",{"type":41,"tag":75,"props":1652,"children":1654},{"className":1653},[],[1655],{"type":46,"value":1656},"db",{"type":46,"value":1658}," if reconnection is intended. See ",{"type":41,"tag":75,"props":1660,"children":1662},{"className":1661},[],[1663],{"type":46,"value":257},{"type":46,"value":1448},{"type":41,"tag":113,"props":1666,"children":1667},{},[1668],{"type":46,"value":1453},{"type":46,"value":138},{"type":41,"tag":83,"props":1671,"children":1673},{"id":1672},"routing-symptom-and-code-next-move",[1674],{"type":46,"value":1675},"Routing — symptom and code → next move",{"type":41,"tag":53,"props":1677,"children":1678},{},[1679,1681,1686,1688,1693],{"type":46,"value":1680},"The single source of truth: read the envelope, find the row by ",{"type":41,"tag":75,"props":1682,"children":1684},{"className":1683},[],[1685],{"type":46,"value":75},{"type":46,"value":1687}," (or ",{"type":41,"tag":75,"props":1689,"children":1691},{"className":1690},[],[1692],{"type":46,"value":1267},{"type":46,"value":1694}," for wrapped errors), follow the next move.",{"type":41,"tag":1210,"props":1696,"children":1697},{},[1698,1718],{"type":41,"tag":1459,"props":1699,"children":1700},{},[1701],{"type":41,"tag":1463,"props":1702,"children":1703},{},[1704,1709,1714],{"type":41,"tag":1467,"props":1705,"children":1706},{},[1707],{"type":46,"value":1708},"Code",{"type":41,"tag":1467,"props":1710,"children":1711},{},[1712],{"type":46,"value":1713},"Where it surfaces",{"type":41,"tag":1467,"props":1715,"children":1716},{},[1717],{"type":46,"value":1476},{"type":41,"tag":1478,"props":1719,"children":1720},{},[1721,1772,1833,1891,1955,2022,2076,2122,2181,2216,2271,2315,2365,2423,2465,2512,2545,2594,2670,2819,2860,2907,2954,3046,3096,3173,3195,3237,3283,3355,3432],{"type":41,"tag":1463,"props":1722,"children":1723},{},[1724,1739,1752],{"type":41,"tag":1485,"props":1725,"children":1726},{},[1727,1733,1734],{"type":41,"tag":75,"props":1728,"children":1730},{"className":1729},[],[1731],{"type":46,"value":1732},"PN-CLI-4001",{"type":46,"value":1240},{"type":41,"tag":113,"props":1735,"children":1736},{},[1737],{"type":46,"value":1738},"Config file not found",{"type":41,"tag":1485,"props":1740,"children":1741},{},[1742,1744,1750],{"type":46,"value":1743},"Most ",{"type":41,"tag":75,"props":1745,"children":1747},{"className":1746},[],[1748],{"type":46,"value":1749},"prisma-next",{"type":46,"value":1751}," commands",{"type":41,"tag":1485,"props":1753,"children":1754},{},[1755,1757,1763,1765,1771],{"type":46,"value":1756},"Run ",{"type":41,"tag":75,"props":1758,"children":1760},{"className":1759},[],[1761],{"type":46,"value":1762},"prisma-next init",{"type":46,"value":1764},", or pass ",{"type":41,"tag":75,"props":1766,"children":1768},{"className":1767},[],[1769],{"type":46,"value":1770},"--config \u003Cpath>",{"type":46,"value":138},{"type":41,"tag":1463,"props":1773,"children":1774},{},[1775,1790,1806],{"type":41,"tag":1485,"props":1776,"children":1777},{},[1778,1784,1785],{"type":41,"tag":75,"props":1779,"children":1781},{"className":1780},[],[1782],{"type":46,"value":1783},"PN-CLI-4002",{"type":46,"value":1240},{"type":41,"tag":113,"props":1786,"children":1787},{},[1788],{"type":46,"value":1789},"Contract configuration missing",{"type":41,"tag":1485,"props":1791,"children":1792},{},[1793,1799,1800],{"type":41,"tag":75,"props":1794,"children":1796},{"className":1795},[],[1797],{"type":46,"value":1798},"contract emit",{"type":46,"value":119},{"type":41,"tag":75,"props":1801,"children":1803},{"className":1802},[],[1804],{"type":46,"value":1805},"db *",{"type":41,"tag":1485,"props":1807,"children":1808},{},[1809,1811,1817,1819,1825,1826,1832],{"type":46,"value":1810},"Add ",{"type":41,"tag":75,"props":1812,"children":1814},{"className":1813},[],[1815],{"type":46,"value":1816},"contract: { ... }",{"type":46,"value":1818}," to ",{"type":41,"tag":75,"props":1820,"children":1822},{"className":1821},[],[1823],{"type":46,"value":1824},"prisma-next.config.ts",{"type":46,"value":1530},{"type":41,"tag":75,"props":1827,"children":1829},{"className":1828},[],[1830],{"type":46,"value":1831},"prisma-next-contract",{"type":46,"value":138},{"type":41,"tag":1463,"props":1834,"children":1835},{},[1836,1851,1865],{"type":41,"tag":1485,"props":1837,"children":1838},{},[1839,1845,1846],{"type":41,"tag":75,"props":1840,"children":1842},{"className":1841},[],[1843],{"type":46,"value":1844},"PN-CLI-4003",{"type":46,"value":1240},{"type":41,"tag":113,"props":1847,"children":1848},{},[1849],{"type":46,"value":1850},"Contract validation failed",{"type":41,"tag":1485,"props":1852,"children":1853},{},[1854,1859,1860],{"type":41,"tag":75,"props":1855,"children":1857},{"className":1856},[],[1858],{"type":46,"value":1798},{"type":46,"value":119},{"type":41,"tag":75,"props":1861,"children":1863},{"className":1862},[],[1864],{"type":46,"value":1805},{"type":41,"tag":1485,"props":1866,"children":1867},{},[1868,1870,1876,1878,1884,1885,1890],{"type":46,"value":1869},"Re-run ",{"type":41,"tag":75,"props":1871,"children":1873},{"className":1872},[],[1874],{"type":46,"value":1875},"pnpm prisma-next contract emit",{"type":46,"value":1877}," after fixing the contract source named in ",{"type":41,"tag":75,"props":1879,"children":1881},{"className":1880},[],[1882],{"type":46,"value":1883},"where.path",{"type":46,"value":1530},{"type":41,"tag":75,"props":1886,"children":1888},{"className":1887},[],[1889],{"type":46,"value":1831},{"type":46,"value":138},{"type":41,"tag":1463,"props":1892,"children":1893},{},[1894,1909,1929],{"type":41,"tag":1485,"props":1895,"children":1896},{},[1897,1903,1904],{"type":41,"tag":75,"props":1898,"children":1900},{"className":1899},[],[1901],{"type":46,"value":1902},"PN-CLI-4005",{"type":46,"value":1240},{"type":41,"tag":113,"props":1905,"children":1906},{},[1907],{"type":46,"value":1908},"Database connection is required",{"type":41,"tag":1485,"props":1910,"children":1911},{},[1912,1917,1918,1923,1924],{"type":41,"tag":75,"props":1913,"children":1915},{"className":1914},[],[1916],{"type":46,"value":1805},{"type":46,"value":119},{"type":41,"tag":75,"props":1919,"children":1921},{"className":1920},[],[1922],{"type":46,"value":1301},{"type":46,"value":119},{"type":41,"tag":75,"props":1925,"children":1927},{"className":1926},[],[1928],{"type":46,"value":870},{"type":41,"tag":1485,"props":1930,"children":1931},{},[1932,1934,1940,1942,1948,1949,1954],{"type":46,"value":1933},"Pass ",{"type":41,"tag":75,"props":1935,"children":1937},{"className":1936},[],[1938],{"type":46,"value":1939},"--db \u003Curl>",{"type":46,"value":1941}," or set ",{"type":41,"tag":75,"props":1943,"children":1945},{"className":1944},[],[1946],{"type":46,"value":1947},"db.connection",{"type":46,"value":328},{"type":41,"tag":75,"props":1950,"children":1952},{"className":1951},[],[1953],{"type":46,"value":1824},{"type":46,"value":138},{"type":41,"tag":1463,"props":1956,"children":1957},{},[1958,1973,1991],{"type":41,"tag":1485,"props":1959,"children":1960},{},[1961,1967,1968],{"type":41,"tag":75,"props":1962,"children":1964},{"className":1963},[],[1965],{"type":46,"value":1966},"PN-CLI-4011",{"type":46,"value":1240},{"type":41,"tag":113,"props":1969,"children":1970},{},[1971],{"type":46,"value":1972},"Missing extension packs in config",{"type":41,"tag":1485,"props":1974,"children":1975},{},[1976,1981,1983,1989],{"type":41,"tag":75,"props":1977,"children":1979},{"className":1978},[],[1980],{"type":46,"value":1798},{"type":46,"value":1982}," (e.g. contract uses ",{"type":41,"tag":75,"props":1984,"children":1986},{"className":1985},[],[1987],{"type":46,"value":1988},"pgvector.Vector(...)",{"type":46,"value":1990}," but config does not list the pgvector pack)",{"type":41,"tag":1485,"props":1992,"children":1993},{},[1994,1996,2002,2003,2009,2010,2015,2016,2021],{"type":46,"value":1995},"Add the descriptors named in ",{"type":41,"tag":75,"props":1997,"children":1999},{"className":1998},[],[2000],{"type":46,"value":2001},"meta.missingExtensions",{"type":46,"value":1818},{"type":41,"tag":75,"props":2004,"children":2006},{"className":2005},[],[2007],{"type":46,"value":2008},"extensions",{"type":46,"value":328},{"type":41,"tag":75,"props":2011,"children":2013},{"className":2012},[],[2014],{"type":46,"value":1824},{"type":46,"value":1530},{"type":41,"tag":75,"props":2017,"children":2019},{"className":2018},[],[2020],{"type":46,"value":1831},{"type":46,"value":138},{"type":41,"tag":1463,"props":2023,"children":2024},{},[2025,2040,2056],{"type":41,"tag":1485,"props":2026,"children":2027},{},[2028,2034,2035],{"type":41,"tag":75,"props":2029,"children":2031},{"className":2030},[],[2032],{"type":46,"value":2033},"PN-CLI-4020",{"type":46,"value":1240},{"type":41,"tag":113,"props":2036,"children":2037},{},[2038],{"type":46,"value":2039},"Migration planning failed",{"type":41,"tag":1485,"props":2041,"children":2042},{},[2043,2049,2050],{"type":41,"tag":75,"props":2044,"children":2046},{"className":2045},[],[2047],{"type":46,"value":2048},"db init",{"type":46,"value":119},{"type":41,"tag":75,"props":2051,"children":2053},{"className":2052},[],[2054],{"type":46,"value":2055},"db update",{"type":41,"tag":1485,"props":2057,"children":2058},{},[2059,2061,2067,2069,2075],{"type":46,"value":2060},"Inspect ",{"type":41,"tag":75,"props":2062,"children":2064},{"className":2063},[],[2065],{"type":46,"value":2066},"meta.conflicts",{"type":46,"value":2068},". Recovery is per-conflict — chain to ",{"type":41,"tag":75,"props":2070,"children":2072},{"className":2071},[],[2073],{"type":46,"value":2074},"prisma-next-migrations",{"type":46,"value":138},{"type":41,"tag":1463,"props":2077,"children":2078},{},[2079,2094,2102],{"type":41,"tag":1485,"props":2080,"children":2081},{},[2082,2088,2089],{"type":41,"tag":75,"props":2083,"children":2085},{"className":2084},[],[2086],{"type":46,"value":2087},"PN-CLI-5002\u002F5003\u002F5004\u002F…",{"type":46,"value":1240},{"type":41,"tag":113,"props":2090,"children":2091},{},[2092],{"type":46,"value":2093},"Init errors",{"type":41,"tag":1485,"props":2095,"children":2096},{},[2097],{"type":41,"tag":75,"props":2098,"children":2100},{"className":2099},[],[2101],{"type":46,"value":1762},{"type":41,"tag":1485,"props":2103,"children":2104},{},[2105,2107,2113,2115,2121],{"type":46,"value":2106},"Re-run with the missing\u002Finvalid flags listed in ",{"type":41,"tag":75,"props":2108,"children":2110},{"className":2109},[],[2111],{"type":46,"value":2112},"meta.missingFlags",{"type":46,"value":2114}," or ",{"type":41,"tag":75,"props":2116,"children":2118},{"className":2117},[],[2119],{"type":46,"value":2120},"meta.allowed",{"type":46,"value":138},{"type":41,"tag":1463,"props":2123,"children":2124},{},[2125,2138,2154],{"type":41,"tag":1485,"props":2126,"children":2127},{},[2128,2133,2134],{"type":41,"tag":75,"props":2129,"children":2131},{"className":2130},[],[2132],{"type":46,"value":420},{"type":46,"value":1240},{"type":41,"tag":113,"props":2135,"children":2136},{},[2137],{"type":46,"value":535},{"type":41,"tag":1485,"props":2139,"children":2140},{},[2141,2147,2149],{"type":41,"tag":75,"props":2142,"children":2144},{"className":2143},[],[2145],{"type":46,"value":2146},"node migrations\u002Fapp\u002F\u003Cdir>\u002Fmigration.ts",{"type":46,"value":2148}," (self-emit) or ",{"type":41,"tag":75,"props":2150,"children":2152},{"className":2151},[],[2153],{"type":46,"value":1301},{"type":41,"tag":1485,"props":2155,"children":2156},{},[2157,2159,2165,2167,2173,2175,2180],{"type":46,"value":2158},"Edit ",{"type":41,"tag":75,"props":2160,"children":2162},{"className":2161},[],[2163],{"type":46,"value":2164},"migration.ts",{"type":46,"value":2166},", replace the named ",{"type":41,"tag":75,"props":2168,"children":2170},{"className":2169},[],[2171],{"type":46,"value":2172},"placeholder(\"\u003Cslot>\")",{"type":46,"value":2174}," with a real query closure, self-emit. See ",{"type":41,"tag":75,"props":2176,"children":2178},{"className":2177},[],[2179],{"type":46,"value":2074},{"type":46,"value":138},{"type":41,"tag":1463,"props":2182,"children":2183},{},[2184,2199,2204],{"type":41,"tag":1485,"props":2185,"children":2186},{},[2187,2193,2194],{"type":41,"tag":75,"props":2188,"children":2190},{"className":2189},[],[2191],{"type":46,"value":2192},"PN-MIG-2002",{"type":46,"value":1240},{"type":41,"tag":113,"props":2195,"children":2196},{},[2197],{"type":46,"value":2198},"migration.ts not found",{"type":41,"tag":1485,"props":2200,"children":2201},{},[2202],{"type":46,"value":2203},"Reading a migration package",{"type":41,"tag":1485,"props":2205,"children":2206},{},[2207,2209,2215],{"type":46,"value":2208},"Restore from version control or scaffold a fresh package with ",{"type":41,"tag":75,"props":2210,"children":2212},{"className":2211},[],[2213],{"type":46,"value":2214},"migration plan",{"type":46,"value":138},{"type":41,"tag":1463,"props":2217,"children":2218},{},[2219,2234,2244],{"type":41,"tag":1485,"props":2220,"children":2221},{},[2222,2228,2229],{"type":41,"tag":75,"props":2223,"children":2225},{"className":2224},[],[2226],{"type":46,"value":2227},"PN-MIG-2003",{"type":46,"value":1240},{"type":41,"tag":113,"props":2230,"children":2231},{},[2232],{"type":46,"value":2233},"Invalid default export",{"type":41,"tag":1485,"props":2235,"children":2236},{},[2237,2239],{"type":46,"value":2238},"Loading ",{"type":41,"tag":75,"props":2240,"children":2242},{"className":2241},[],[2243],{"type":46,"value":2164},{"type":41,"tag":1485,"props":2245,"children":2246},{},[2247,2249,2255,2257,2263,2265,2270],{"type":46,"value":2248},"Use ",{"type":41,"tag":75,"props":2250,"children":2252},{"className":2251},[],[2253],{"type":46,"value":2254},"export default class extends Migration { ... }",{"type":46,"value":2256}," (or factory ",{"type":41,"tag":75,"props":2258,"children":2260},{"className":2259},[],[2261],{"type":46,"value":2262},"() => ({ ... })",{"type":46,"value":2264},"). See ",{"type":41,"tag":75,"props":2266,"children":2268},{"className":2267},[],[2269],{"type":46,"value":2074},{"type":46,"value":138},{"type":41,"tag":1463,"props":2272,"children":2273},{},[2274,2289,2294],{"type":41,"tag":1485,"props":2275,"children":2276},{},[2277,2283,2284],{"type":41,"tag":75,"props":2278,"children":2280},{"className":2279},[],[2281],{"type":46,"value":2282},"PN-MIG-2005",{"type":46,"value":1240},{"type":41,"tag":113,"props":2285,"children":2286},{},[2287],{"type":46,"value":2288},"dataTransform contract mismatch",{"type":41,"tag":1485,"props":2290,"children":2291},{},[2292],{"type":46,"value":2293},"Building a data-transform query plan",{"type":41,"tag":1485,"props":2295,"children":2296},{},[2297,2299,2305,2307,2313],{"type":46,"value":2298},"Pass the same ",{"type":41,"tag":75,"props":2300,"children":2302},{"className":2301},[],[2303],{"type":46,"value":2304},"endContract",{"type":46,"value":2306}," reference to both ",{"type":41,"tag":75,"props":2308,"children":2310},{"className":2309},[],[2311],{"type":46,"value":2312},"dataTransform(endContract, …)",{"type":46,"value":2314}," and the query-builder context.",{"type":41,"tag":1463,"props":2316,"children":2317},{},[2318,2333,2344],{"type":41,"tag":1485,"props":2319,"children":2320},{},[2321,2327,2328],{"type":41,"tag":75,"props":2322,"children":2324},{"className":2323},[],[2325],{"type":46,"value":2326},"PN-RUN-3001",{"type":46,"value":1240},{"type":41,"tag":113,"props":2329,"children":2330},{},[2331],{"type":46,"value":2332},"Database not signed",{"type":41,"tag":1485,"props":2334,"children":2335},{},[2336,2342],{"type":41,"tag":75,"props":2337,"children":2339},{"className":2338},[],[2340],{"type":46,"value":2341},"db verify",{"type":46,"value":2343},", runtime startup",{"type":41,"tag":1485,"props":2345,"children":2346},{},[2347,2349,2355,2357,2363],{"type":46,"value":2348},"DB has no marker yet. Run ",{"type":41,"tag":75,"props":2350,"children":2352},{"className":2351},[],[2353],{"type":46,"value":2354},"prisma-next db init --db \u003Curl>",{"type":46,"value":2356}," (baseline empty DB) or ",{"type":41,"tag":75,"props":2358,"children":2360},{"className":2359},[],[2361],{"type":46,"value":2362},"db update --db \u003Curl>",{"type":46,"value":2364}," (apply contract directly).",{"type":41,"tag":1463,"props":2366,"children":2367},{},[2368,2383,2392],{"type":41,"tag":1485,"props":2369,"children":2370},{},[2371,2377,2378],{"type":41,"tag":75,"props":2372,"children":2374},{"className":2373},[],[2375],{"type":46,"value":2376},"PN-RUN-3002",{"type":46,"value":1240},{"type":41,"tag":113,"props":2379,"children":2380},{},[2381],{"type":46,"value":2382},"Hash mismatch",{"type":41,"tag":1485,"props":2384,"children":2385},{},[2386,2391],{"type":41,"tag":75,"props":2387,"children":2389},{"className":2388},[],[2390],{"type":46,"value":2341},{"type":46,"value":2343},{"type":41,"tag":1485,"props":2393,"children":2394},{},[2395,2397,2402,2403,2408,2410,2416,2417,2422],{"type":46,"value":2396},"Marker disagrees with contract hash. Either migrate forward (",{"type":41,"tag":75,"props":2398,"children":2400},{"className":2399},[],[2401],{"type":46,"value":1301},{"type":46,"value":1151},{"type":41,"tag":75,"props":2404,"children":2406},{"className":2405},[],[2407],{"type":46,"value":2055},{"type":46,"value":2409},"), or — if the DB is correct after a manual fix-up — ",{"type":41,"tag":75,"props":2411,"children":2413},{"className":2412},[],[2414],{"type":46,"value":2415},"db sign",{"type":46,"value":1530},{"type":41,"tag":75,"props":2418,"children":2420},{"className":2419},[],[2421],{"type":46,"value":2074},{"type":46,"value":138},{"type":41,"tag":1463,"props":2424,"children":2425},{},[2426,2441,2446],{"type":41,"tag":1485,"props":2427,"children":2428},{},[2429,2435,2436],{"type":41,"tag":75,"props":2430,"children":2432},{"className":2431},[],[2433],{"type":46,"value":2434},"PN-RUN-3003",{"type":46,"value":1240},{"type":41,"tag":113,"props":2437,"children":2438},{},[2439],{"type":46,"value":2440},"Target mismatch",{"type":41,"tag":1485,"props":2442,"children":2443},{},[2444],{"type":46,"value":2445},"Runtime startup",{"type":41,"tag":1485,"props":2447,"children":2448},{},[2449,2451,2457,2458,2464],{"type":46,"value":2450},"Contract target ≠ config target; align them (see ",{"type":41,"tag":75,"props":2452,"children":2454},{"className":2453},[],[2455],{"type":46,"value":2456},"meta.expected",{"type":46,"value":1151},{"type":41,"tag":75,"props":2459,"children":2461},{"className":2460},[],[2462],{"type":46,"value":2463},"meta.actual",{"type":46,"value":214},{"type":41,"tag":1463,"props":2466,"children":2467},{},[2468,2483,2493],{"type":41,"tag":1485,"props":2469,"children":2470},{},[2471,2477,2478],{"type":41,"tag":75,"props":2472,"children":2474},{"className":2473},[],[2475],{"type":46,"value":2476},"PN-RUN-3004",{"type":46,"value":1240},{"type":41,"tag":113,"props":2479,"children":2480},{},[2481],{"type":46,"value":2482},"Schema verification failed",{"type":41,"tag":1485,"props":2484,"children":2485},{},[2486,2491],{"type":41,"tag":75,"props":2487,"children":2489},{"className":2488},[],[2490],{"type":46,"value":2341},{"type":46,"value":2492}," (full mode)",{"type":41,"tag":1485,"props":2494,"children":2495},{},[2496,2497,2503,2505,2510],{"type":46,"value":2060},{"type":41,"tag":75,"props":2498,"children":2500},{"className":2499},[],[2501],{"type":46,"value":2502},"meta.verificationResult",{"type":46,"value":2504},". Run ",{"type":41,"tag":75,"props":2506,"children":2508},{"className":2507},[],[2509],{"type":46,"value":2055},{"type":46,"value":2511}," to reconcile, or adjust contract.",{"type":41,"tag":1463,"props":2513,"children":2514},{},[2515,2530,2540],{"type":41,"tag":1485,"props":2516,"children":2517},{},[2518,2524,2525],{"type":41,"tag":75,"props":2519,"children":2521},{"className":2520},[],[2522],{"type":46,"value":2523},"PN-RUN-3010",{"type":46,"value":1240},{"type":41,"tag":113,"props":2526,"children":2527},{},[2528],{"type":46,"value":2529},"Schema verification failed (CLI surface)",{"type":41,"tag":1485,"props":2531,"children":2532},{},[2533,2538],{"type":41,"tag":75,"props":2534,"children":2536},{"className":2535},[],[2537],{"type":46,"value":2341},{"type":46,"value":2539}," schema-only",{"type":41,"tag":1485,"props":2541,"children":2542},{},[2543],{"type":46,"value":2544},"Same as 3004.",{"type":41,"tag":1463,"props":2546,"children":2547},{},[2548,2563,2583],{"type":41,"tag":1485,"props":2549,"children":2550},{},[2551,2557,2558],{"type":41,"tag":75,"props":2552,"children":2554},{"className":2553},[],[2555],{"type":46,"value":2556},"PN-RUN-3020",{"type":46,"value":1240},{"type":41,"tag":113,"props":2559,"children":2560},{},[2561],{"type":46,"value":2562},"Migration runner failed",{"type":41,"tag":1485,"props":2564,"children":2565},{},[2566,2571,2572,2577,2578],{"type":41,"tag":75,"props":2567,"children":2569},{"className":2568},[],[2570],{"type":46,"value":1301},{"type":46,"value":119},{"type":41,"tag":75,"props":2573,"children":2575},{"className":2574},[],[2576],{"type":46,"value":2055},{"type":46,"value":119},{"type":41,"tag":75,"props":2579,"children":2581},{"className":2580},[],[2582],{"type":46,"value":2048},{"type":41,"tag":1485,"props":2584,"children":2585},{},[2586,2587,2592],{"type":46,"value":2060},{"type":41,"tag":75,"props":2588,"children":2590},{"className":2589},[],[2591],{"type":46,"value":719},{"type":46,"value":2593}," for the conflict; reconcile schema drift, then re-run. Previously applied migrations are preserved.",{"type":41,"tag":1463,"props":2595,"children":2596},{},[2597,2612,2622],{"type":41,"tag":1485,"props":2598,"children":2599},{},[2600,2606,2607],{"type":41,"tag":75,"props":2601,"children":2603},{"className":2602},[],[2604],{"type":46,"value":2605},"PN-RUN-3030",{"type":46,"value":1240},{"type":41,"tag":113,"props":2608,"children":2609},{},[2610],{"type":46,"value":2611},"Destructive changes require confirmation",{"type":41,"tag":1485,"props":2613,"children":2614},{},[2615,2620],{"type":41,"tag":75,"props":2616,"children":2618},{"className":2617},[],[2619],{"type":46,"value":2055},{"type":46,"value":2621}," (interactive prompt fires; non-interactive returns this code)",{"type":41,"tag":1485,"props":2623,"children":2624},{},[2625,2627,2633,2634,2640,2642,2648,2650,2662,2663,2668],{"type":46,"value":2626},"Re-run with ",{"type":41,"tag":75,"props":2628,"children":2630},{"className":2629},[],[2631],{"type":46,"value":2632},"-y",{"type":46,"value":1687},{"type":41,"tag":75,"props":2635,"children":2637},{"className":2636},[],[2638],{"type":46,"value":2639},"--yes",{"type":46,"value":2641},") to apply, or ",{"type":41,"tag":75,"props":2643,"children":2645},{"className":2644},[],[2646],{"type":46,"value":2647},"--dry-run",{"type":46,"value":2649}," to preview. ",{"type":41,"tag":57,"props":2651,"children":2652},{},[2653,2655,2660],{"type":46,"value":2654},"Only ",{"type":41,"tag":75,"props":2656,"children":2658},{"className":2657},[],[2659],{"type":46,"value":2055},{"type":46,"value":2661}," has this flow",{"type":46,"value":864},{"type":41,"tag":75,"props":2664,"children":2666},{"className":2665},[],[2667],{"type":46,"value":1301},{"type":46,"value":2669}," does not gate destructive ops on a flag.",{"type":41,"tag":1463,"props":2671,"children":2672},{},[2673,2687,2702],{"type":41,"tag":1485,"props":2674,"children":2675},{},[2676,2681,2682],{"type":41,"tag":75,"props":2677,"children":2679},{"className":2678},[],[2680],{"type":46,"value":1278},{"type":46,"value":1240},{"type":41,"tag":113,"props":2683,"children":2684},{},[2685],{"type":46,"value":2686},"(wrapper)",{"type":41,"tag":1485,"props":2688,"children":2689},{},[2690,2695,2697],{"type":41,"tag":75,"props":2691,"children":2693},{"className":2692},[],[2694],{"type":46,"value":1301},{"type":46,"value":2696},", others wrapping ",{"type":41,"tag":75,"props":2698,"children":2700},{"className":2699},[],[2701],{"type":46,"value":1309},{"type":41,"tag":1485,"props":2703,"children":2704},{},[2705,2707,2712,2714,2719,2721,2726,2728,2733,2735,2741,2742,2747,2749,2754,2755,2761,2762,2768,2769,2774,2775,2781,2782,2788,2790,2796,2798,2804,2805,2811,2813,2818],{"type":46,"value":2706},"Read ",{"type":41,"tag":75,"props":2708,"children":2710},{"className":2709},[],[2711],{"type":46,"value":1267},{"type":46,"value":2713},". Cases: ",{"type":41,"tag":75,"props":2715,"children":2717},{"className":2716},[],[2718],{"type":46,"value":1317},{"type":46,"value":2720}," (re-emit: ",{"type":41,"tag":75,"props":2722,"children":2724},{"className":2723},[],[2725],{"type":46,"value":2146},{"type":46,"value":2727},"); ",{"type":41,"tag":75,"props":2729,"children":2731},{"className":2730},[],[2732],{"type":46,"value":1331},{"type":46,"value":2734}," (concurrent migrations — ",{"type":41,"tag":75,"props":2736,"children":2738},{"className":2737},[],[2739],{"type":46,"value":2740},"prisma-next-migration-review",{"type":46,"value":2727},{"type":41,"tag":75,"props":2743,"children":2745},{"className":2744},[],[2746],{"type":46,"value":1324},{"type":46,"value":2748}," (re-run ",{"type":41,"tag":75,"props":2750,"children":2752},{"className":2751},[],[2753],{"type":46,"value":2214},{"type":46,"value":2727},{"type":41,"tag":75,"props":2756,"children":2758},{"className":2757},[],[2759],{"type":46,"value":2760},"MIGRATION.NO_INVARIANT_PATH",{"type":46,"value":1151},{"type":41,"tag":75,"props":2763,"children":2765},{"className":2764},[],[2766],{"type":46,"value":2767},"MIGRATION.UNKNOWN_INVARIANT",{"type":46,"value":1280},{"type":41,"tag":75,"props":2770,"children":2772},{"className":2771},[],[2773],{"type":46,"value":2740},{"type":46,"value":2727},{"type":41,"tag":75,"props":2776,"children":2778},{"className":2777},[],[2779],{"type":46,"value":2780},"MIGRATION.PATH_UNREACHABLE",{"type":46,"value":1151},{"type":41,"tag":75,"props":2783,"children":2785},{"className":2784},[],[2786],{"type":46,"value":2787},"MIGRATION.MARKER_MISMATCH",{"type":46,"value":2789}," (run ",{"type":41,"tag":75,"props":2791,"children":2793},{"className":2792},[],[2794],{"type":46,"value":2795},"migrate --show --db $URL",{"type":46,"value":2797}," to inspect the path, then ",{"type":41,"tag":75,"props":2799,"children":2801},{"className":2800},[],[2802],{"type":46,"value":2803},"migration plan --from \u003Cfrom> --to \u003Ctarget>",{"type":46,"value":2114},{"type":41,"tag":75,"props":2806,"children":2808},{"className":2807},[],[2809],{"type":46,"value":2810},"migration list",{"type":46,"value":2812}," to audit the graph — see ",{"type":41,"tag":75,"props":2814,"children":2816},{"className":2815},[],[2817],{"type":46,"value":2740},{"type":46,"value":214},{"type":41,"tag":1463,"props":2820,"children":2821},{},[2822,2831,2841],{"type":41,"tag":1485,"props":2823,"children":2824},{},[2825],{"type":41,"tag":75,"props":2826,"children":2828},{"className":2827},[],[2829],{"type":46,"value":2830},"PN-SCHEMA-0001",{"type":41,"tag":1485,"props":2832,"children":2833},{},[2834,2839],{"type":41,"tag":75,"props":2835,"children":2837},{"className":2836},[],[2838],{"type":46,"value":2341},{"type":46,"value":2840}," schema check",{"type":41,"tag":1485,"props":2842,"children":2843},{},[2844,2846,2851,2853,2858],{"type":46,"value":2845},"Live schema does not satisfy contract. ",{"type":41,"tag":75,"props":2847,"children":2849},{"className":2848},[],[2850],{"type":46,"value":2502},{"type":46,"value":2852}," has the diff. Run ",{"type":41,"tag":75,"props":2854,"children":2856},{"className":2855},[],[2857],{"type":46,"value":2055},{"type":46,"value":2859}," or adjust the contract.",{"type":41,"tag":1463,"props":2861,"children":2862},{},[2863,2879,2896],{"type":41,"tag":1485,"props":2864,"children":2865},{},[2866,2872,2873],{"type":41,"tag":75,"props":2867,"children":2869},{"className":2868},[],[2870],{"type":46,"value":2871},"MIGRATION.UP_TO_DATE",{"type":46,"value":1151},{"type":41,"tag":75,"props":2874,"children":2876},{"className":2875},[],[2877],{"type":46,"value":2878},".DATABASE_BEHIND",{"type":41,"tag":1485,"props":2880,"children":2881},{},[2882,2887,2888,2894],{"type":41,"tag":75,"props":2883,"children":2885},{"className":2884},[],[2886],{"type":46,"value":870},{"type":46,"value":1240},{"type":41,"tag":75,"props":2889,"children":2891},{"className":2890},[],[2892],{"type":46,"value":2893},"info",{"type":46,"value":2895}," diagnostics",{"type":41,"tag":1485,"props":2897,"children":2898},{},[2899,2901,2906],{"type":46,"value":2900},"Informational; exit 0. See ",{"type":41,"tag":75,"props":2902,"children":2904},{"className":2903},[],[2905],{"type":46,"value":2740},{"type":46,"value":138},{"type":41,"tag":1463,"props":2908,"children":2909},{},[2910,2919,2935],{"type":41,"tag":1485,"props":2911,"children":2912},{},[2913],{"type":41,"tag":75,"props":2914,"children":2916},{"className":2915},[],[2917],{"type":46,"value":2918},"MIGRATION.MISSING_INVARIANTS",{"type":41,"tag":1485,"props":2920,"children":2921},{},[2922,2927,2928,2933],{"type":41,"tag":75,"props":2923,"children":2925},{"className":2924},[],[2926],{"type":46,"value":870},{"type":46,"value":1240},{"type":41,"tag":75,"props":2929,"children":2931},{"className":2930},[],[2932],{"type":46,"value":2893},{"type":46,"value":2934}," diagnostic",{"type":41,"tag":1485,"props":2936,"children":2937},{},[2938,2940,2946,2948,2953],{"type":46,"value":2939},"The live marker reached the destination hash structurally but doesn't carry all invariants the target ref requires. Run ",{"type":41,"tag":75,"props":2941,"children":2943},{"className":2942},[],[2944],{"type":46,"value":2945},"migrate --to \u003Cname> --db $URL",{"type":46,"value":2947}," to take a path that covers the missing invariants. See ",{"type":41,"tag":75,"props":2949,"children":2951},{"className":2950},[],[2952],{"type":46,"value":2740},{"type":46,"value":138},{"type":41,"tag":1463,"props":2955,"children":2956},{},[2957,2994,3017],{"type":41,"tag":1485,"props":2958,"children":2959},{},[2960,2966,2967,2973,2974,2980,2981,2987,2988],{"type":41,"tag":75,"props":2961,"children":2963},{"className":2962},[],[2964],{"type":46,"value":2965},"MIGRATION.NO_MARKER",{"type":46,"value":1151},{"type":41,"tag":75,"props":2968,"children":2970},{"className":2969},[],[2971],{"type":46,"value":2972},".MARKER_NOT_IN_HISTORY",{"type":46,"value":1151},{"type":41,"tag":75,"props":2975,"children":2977},{"className":2976},[],[2978],{"type":46,"value":2979},".DIVERGED",{"type":46,"value":1151},{"type":41,"tag":75,"props":2982,"children":2984},{"className":2983},[],[2985],{"type":46,"value":2986},"CONTRACT.AHEAD",{"type":46,"value":1151},{"type":41,"tag":75,"props":2989,"children":2991},{"className":2990},[],[2992],{"type":46,"value":2993},"CONTRACT.UNREADABLE",{"type":41,"tag":1485,"props":2995,"children":2996},{},[2997,3002,3003,3008,3010,3015],{"type":41,"tag":75,"props":2998,"children":3000},{"className":2999},[],[3001],{"type":46,"value":870},{"type":46,"value":1240},{"type":41,"tag":75,"props":3004,"children":3006},{"className":3005},[],[3007],{"type":46,"value":878},{"type":46,"value":3009}," diagnostics (exit 0; CI gates parse ",{"type":41,"tag":75,"props":3011,"children":3013},{"className":3012},[],[3014],{"type":46,"value":104},{"type":46,"value":3016},")",{"type":41,"tag":1485,"props":3018,"children":3019},{},[3020,3021,3026,3027,3032,3033,3038,3039,3044],{"type":46,"value":2706},{"type":41,"tag":75,"props":3022,"children":3024},{"className":3023},[],[3025],{"type":46,"value":480},{"type":46,"value":1240},{"type":41,"tag":113,"props":3028,"children":3029},{},[3030],{"type":46,"value":3031},"and",{"type":46,"value":1240},{"type":41,"tag":75,"props":3034,"children":3036},{"className":3035},[],[3037],{"type":46,"value":75},{"type":46,"value":1357},{"type":41,"tag":75,"props":3040,"children":3042},{"className":3041},[],[3043],{"type":46,"value":2740},{"type":46,"value":3045}," covers the diamond\u002Fdiverged\u002Fmarker-out-of-history flows.",{"type":41,"tag":1463,"props":3047,"children":3048},{},[3049,3064,3077],{"type":41,"tag":1485,"props":3050,"children":3051},{},[3052,3058,3059],{"type":41,"tag":75,"props":3053,"children":3055},{"className":3054},[],[3056],{"type":46,"value":3057},"BUDGET.ROWS_EXCEEDED",{"type":46,"value":1151},{"type":41,"tag":75,"props":3060,"children":3062},{"className":3061},[],[3063],{"type":46,"value":974},{"type":41,"tag":1485,"props":3065,"children":3066},{},[3067,3069,3075],{"type":46,"value":3068},"Runtime, when the ",{"type":41,"tag":75,"props":3070,"children":3072},{"className":3071},[],[3073],{"type":46,"value":3074},"budgets",{"type":46,"value":3076}," middleware is active",{"type":41,"tag":1485,"props":3078,"children":3079},{},[3080,3082,3088,3090,3095],{"type":46,"value":3081},"Tune ",{"type":41,"tag":75,"props":3083,"children":3085},{"className":3084},[],[3086],{"type":46,"value":3087},"budgets({ maxRows, maxLatencyMs, ... })",{"type":46,"value":3089}," or rewrite the query. See ",{"type":41,"tag":75,"props":3091,"children":3093},{"className":3092},[],[3094],{"type":46,"value":257},{"type":46,"value":138},{"type":41,"tag":1463,"props":3097,"children":3098},{},[3099,3136,3147],{"type":41,"tag":1485,"props":3100,"children":3101},{},[3102,3108,3109,3115,3116,3122,3123,3129,3130],{"type":41,"tag":75,"props":3103,"children":3105},{"className":3104},[],[3106],{"type":46,"value":3107},"LINT.SELECT_STAR",{"type":46,"value":1151},{"type":41,"tag":75,"props":3110,"children":3112},{"className":3111},[],[3113],{"type":46,"value":3114},"LINT.NO_LIMIT",{"type":46,"value":1151},{"type":41,"tag":75,"props":3117,"children":3119},{"className":3118},[],[3120],{"type":46,"value":3121},"LINT.DELETE_WITHOUT_WHERE",{"type":46,"value":1151},{"type":41,"tag":75,"props":3124,"children":3126},{"className":3125},[],[3127],{"type":46,"value":3128},"LINT.UPDATE_WITHOUT_WHERE",{"type":46,"value":1151},{"type":41,"tag":75,"props":3131,"children":3133},{"className":3132},[],[3134],{"type":46,"value":3135},"LINT.READ_ONLY_MUTATION",{"type":41,"tag":1485,"props":3137,"children":3138},{},[3139,3140,3146],{"type":46,"value":3068},{"type":41,"tag":75,"props":3141,"children":3143},{"className":3142},[],[3144],{"type":46,"value":3145},"lints",{"type":46,"value":3076},{"type":41,"tag":1485,"props":3148,"children":3149},{},[3150,3152,3158,3159,3165,3167,3172],{"type":46,"value":3151},"Fix the query (add a ",{"type":41,"tag":75,"props":3153,"children":3155},{"className":3154},[],[3156],{"type":46,"value":3157},"WHERE",{"type":46,"value":1151},{"type":41,"tag":75,"props":3160,"children":3162},{"className":3161},[],[3163],{"type":46,"value":3164},"LIMIT",{"type":46,"value":3166}," \u002F explicit columns), or relax the lint config. See ",{"type":41,"tag":75,"props":3168,"children":3170},{"className":3169},[],[3171],{"type":46,"value":257},{"type":46,"value":138},{"type":41,"tag":1463,"props":3174,"children":3175},{},[3176,3185,3190],{"type":41,"tag":1485,"props":3177,"children":3178},{},[3179],{"type":41,"tag":75,"props":3180,"children":3182},{"className":3181},[],[3183],{"type":46,"value":3184},"PLAN.HASH_MISMATCH",{"type":41,"tag":1485,"props":3186,"children":3187},{},[3188],{"type":46,"value":3189},"Runtime, executing a precompiled plan",{"type":41,"tag":1485,"props":3191,"children":3192},{},[3193],{"type":46,"value":3194},"The contract the plan was built against does not match the runtime contract. Re-emit, rebuild, redeploy.",{"type":41,"tag":1463,"props":3196,"children":3197},{},[3198,3214,3219],{"type":41,"tag":1485,"props":3199,"children":3200},{},[3201,3207,3208],{"type":41,"tag":75,"props":3202,"children":3204},{"className":3203},[],[3205],{"type":46,"value":3206},"CONTRACT.MARKER_MISSING",{"type":46,"value":1151},{"type":41,"tag":75,"props":3209,"children":3211},{"className":3210},[],[3212],{"type":46,"value":3213},"CONTRACT.MARKER_MISMATCH",{"type":41,"tag":1485,"props":3215,"children":3216},{},[3217],{"type":46,"value":3218},"Runtime, marker check before executing",{"type":41,"tag":1485,"props":3220,"children":3221},{},[3222,3224,3229,3230,3235],{"type":46,"value":3223},"Same family as ",{"type":41,"tag":75,"props":3225,"children":3227},{"className":3226},[],[3228],{"type":46,"value":2326},{"type":46,"value":1151},{"type":41,"tag":75,"props":3231,"children":3233},{"className":3232},[],[3234],{"type":46,"value":2376},{"type":46,"value":3236}," but raised in-process by the runtime rather than a CLI. Recovery is the same.",{"type":41,"tag":1463,"props":3238,"children":3239},{},[3240,3265,3278],{"type":41,"tag":1485,"props":3241,"children":3242},{},[3243,3249,3250,3256,3258,3264],{"type":41,"tag":75,"props":3244,"children":3246},{"className":3245},[],[3247],{"type":46,"value":3248},"RUNTIME.ABORTED",{"type":46,"value":1280},{"type":41,"tag":75,"props":3251,"children":3253},{"className":3252},[],[3254],{"type":46,"value":3255},"details.phase",{"type":46,"value":3257}," = ",{"type":41,"tag":75,"props":3259,"children":3261},{"className":3260},[],[3262],{"type":46,"value":3263},"encode|decode|stream|beforeExecute|afterExecute|onRow",{"type":46,"value":3016},{"type":41,"tag":1485,"props":3266,"children":3267},{},[3268,3270,3276],{"type":46,"value":3269},"Runtime, when an ",{"type":41,"tag":75,"props":3271,"children":3273},{"className":3272},[],[3274],{"type":46,"value":3275},"AbortSignal",{"type":46,"value":3277}," fires mid-execute",{"type":41,"tag":1485,"props":3279,"children":3280},{},[3281],{"type":46,"value":3282},"Cancellation, not a bug; surface to the caller.",{"type":41,"tag":1463,"props":3284,"children":3285},{},[3286,3304,3309],{"type":41,"tag":1485,"props":3287,"children":3288},{},[3289,3294,3296,3302],{"type":41,"tag":75,"props":3290,"children":3292},{"className":3291},[],[3293],{"type":46,"value":1149},{"type":46,"value":3295}," (no ",{"type":41,"tag":75,"props":3297,"children":3299},{"className":3298},[],[3300],{"type":46,"value":3301},"PN-",{"type":46,"value":3303}," code)",{"type":41,"tag":1485,"props":3305,"children":3306},{},[3307],{"type":46,"value":3308},"Raw-SQL paths surfacing a driver error",{"type":41,"tag":1485,"props":3310,"children":3311},{},[3312,3313,3318,3320,3325,3326,3331,3332,3337,3339,3345,3347,3353],{"type":46,"value":2060},{"type":41,"tag":75,"props":3314,"children":3316},{"className":3315},[],[3317],{"type":46,"value":1187},{"type":46,"value":3319}," + ",{"type":41,"tag":75,"props":3321,"children":3323},{"className":3322},[],[3324],{"type":46,"value":1203},{"type":46,"value":3319},{"type":41,"tag":75,"props":3327,"children":3329},{"className":3328},[],[3330],{"type":46,"value":1210},{"type":46,"value":3319},{"type":41,"tag":75,"props":3333,"children":3335},{"className":3334},[],[3336],{"type":46,"value":1217},{"type":46,"value":3338},". Postgres ",{"type":41,"tag":75,"props":3340,"children":3342},{"className":3341},[],[3343],{"type":46,"value":3344},"23505",{"type":46,"value":3346}," = unique violation, ",{"type":41,"tag":75,"props":3348,"children":3350},{"className":3349},[],[3351],{"type":46,"value":3352},"23503",{"type":46,"value":3354}," = foreign-key violation, etc. Fix the data or the schema.",{"type":41,"tag":1463,"props":3356,"children":3357},{},[3358,3379,3384],{"type":41,"tag":1485,"props":3359,"children":3360},{},[3361,3363,3369,3371,3377],{"type":46,"value":3362},"TypeScript error mentioning a capability (e.g. ",{"type":41,"tag":75,"props":3364,"children":3366},{"className":3365},[],[3367],{"type":46,"value":3368},"returning()",{"type":46,"value":3370}," not on the type, ",{"type":41,"tag":75,"props":3372,"children":3374},{"className":3373},[],[3375],{"type":46,"value":3376},"include",{"type":46,"value":3378}," of a many-relation off a many-load)",{"type":41,"tag":1485,"props":3380,"children":3381},{},[3382],{"type":46,"value":3383},"Authoring-time, before any envelope fires",{"type":41,"tag":1485,"props":3385,"children":3386},{},[3387,3389,3394,3395,3401,3403,3408,3410,3415,3417,3423,3425,3430],{"type":46,"value":3388},"Capability gates are declared in the ",{"type":41,"tag":57,"props":3390,"children":3391},{},[3392],{"type":46,"value":3393},"contract",{"type":46,"value":1280},{"type":41,"tag":75,"props":3396,"children":3398},{"className":3397},[],[3399],{"type":46,"value":3400},"capabilities",{"type":46,"value":3402}," block, namespaced by target\u002Ffamily), not in ",{"type":41,"tag":75,"props":3404,"children":3406},{"className":3405},[],[3407],{"type":46,"value":1824},{"type":46,"value":3409},". Route to ",{"type":41,"tag":75,"props":3411,"children":3413},{"className":3412},[],[3414],{"type":46,"value":1831},{"type":46,"value":3416}," for capability declaration and to ",{"type":41,"tag":75,"props":3418,"children":3420},{"className":3419},[],[3421],{"type":46,"value":3422},"prisma-next-queries",{"type":46,"value":3424}," for which method gates on which capability. Re-emit (",{"type":41,"tag":75,"props":3426,"children":3428},{"className":3427},[],[3429],{"type":46,"value":1875},{"type":46,"value":3431},") after enabling.",{"type":41,"tag":1463,"props":3433,"children":3434},{},[3435,3456,3461],{"type":41,"tag":1485,"props":3436,"children":3437},{},[3438,3440,3446,3448,3454],{"type":46,"value":3439},"TypeScript error mentioning a missing field\u002Fmethod on ",{"type":41,"tag":75,"props":3441,"children":3443},{"className":3442},[],[3444],{"type":46,"value":3445},"db.orm.\u003CModel>",{"type":46,"value":3447}," or a stale ",{"type":41,"tag":75,"props":3449,"children":3451},{"className":3450},[],[3452],{"type":46,"value":3453},"Contract",{"type":46,"value":3455}," shape",{"type":41,"tag":1485,"props":3457,"children":3458},{},[3459],{"type":46,"value":3460},"Authoring-time",{"type":41,"tag":1485,"props":3462,"children":3463},{},[3464,3466,3471,3473,3479,3481,3487,3489,3494,3495,3500],{"type":46,"value":3465},"Re-emit (",{"type":41,"tag":75,"props":3467,"children":3469},{"className":3468},[],[3470],{"type":46,"value":1875},{"type":46,"value":3472},"); confirm ",{"type":41,"tag":75,"props":3474,"children":3476},{"className":3475},[],[3477],{"type":46,"value":3478},"db.ts",{"type":46,"value":3480}," instantiates with ",{"type":41,"tag":75,"props":3482,"children":3484},{"className":3483},[],[3485],{"type":46,"value":3486},"postgres\u003CContract, TypeMaps>(...)",{"type":46,"value":3488}," (the type parameters propagate the contract types). See ",{"type":41,"tag":75,"props":3490,"children":3492},{"className":3491},[],[3493],{"type":46,"value":257},{"type":46,"value":1416},{"type":41,"tag":75,"props":3496,"children":3498},{"className":3497},[],[3499],{"type":46,"value":1831},{"type":46,"value":138},{"type":41,"tag":53,"props":3502,"children":3503},{},[3504,3506,3511,3513,3518,3520,3525,3527,3532],{"type":46,"value":3505},"If the envelope's ",{"type":41,"tag":75,"props":3507,"children":3509},{"className":3508},[],[3510],{"type":46,"value":75},{"type":46,"value":3512}," is not in this table, follow the envelope's ",{"type":41,"tag":75,"props":3514,"children":3516},{"className":3515},[],[3517],{"type":46,"value":594},{"type":46,"value":3519}," field literally — it's the framework's first-party next move. If ",{"type":41,"tag":75,"props":3521,"children":3523},{"className":3522},[],[3524],{"type":46,"value":594},{"type":46,"value":3526}," is empty or unhelpful, escalate via ",{"type":41,"tag":75,"props":3528,"children":3530},{"className":3529},[],[3531],{"type":46,"value":269},{"type":46,"value":138},{"type":41,"tag":83,"props":3534,"children":3536},{"id":3535},"common-pitfalls",[3537],{"type":46,"value":3538},"Common Pitfalls",{"type":41,"tag":3540,"props":3541,"children":3542},"ol",{},[3543,3617,3646,3675,3710],{"type":41,"tag":94,"props":3544,"children":3545},{},[3546,3558,3559,3564,3565,3570,3571,3576,3577,3582,3583,3588,3590,3595,3597,3602,3604,3609,3611,3616],{"type":41,"tag":57,"props":3547,"children":3548},{},[3549,3551,3556],{"type":46,"value":3550},"Reading only ",{"type":41,"tag":75,"props":3552,"children":3554},{"className":3553},[],[3555],{"type":46,"value":518},{"type":46,"value":3557},", not the rest of the envelope.",{"type":46,"value":1240},{"type":41,"tag":75,"props":3560,"children":3562},{"className":3561},[],[3563],{"type":46,"value":75},{"type":46,"value":119},{"type":41,"tag":75,"props":3566,"children":3568},{"className":3567},[],[3569],{"type":46,"value":480},{"type":46,"value":119},{"type":41,"tag":75,"props":3572,"children":3574},{"className":3573},[],[3575],{"type":46,"value":556},{"type":46,"value":119},{"type":41,"tag":75,"props":3578,"children":3580},{"className":3579},[],[3581],{"type":46,"value":594},{"type":46,"value":119},{"type":41,"tag":75,"props":3584,"children":3586},{"className":3585},[],[3587],{"type":46,"value":719},{"type":46,"value":3589},"\u002F",{"type":41,"tag":75,"props":3591,"children":3593},{"className":3592},[],[3594],{"type":46,"value":1118},{"type":46,"value":3596},", and (for CLI errors) ",{"type":41,"tag":75,"props":3598,"children":3600},{"className":3599},[],[3601],{"type":46,"value":631},{"type":46,"value":3603}," are all load-bearing. The agent routes on ",{"type":41,"tag":75,"props":3605,"children":3607},{"className":3606},[],[3608],{"type":46,"value":75},{"type":46,"value":3610},"; the user sees ",{"type":41,"tag":75,"props":3612,"children":3614},{"className":3613},[],[3615],{"type":46,"value":518},{"type":46,"value":138},{"type":41,"tag":94,"props":3618,"children":3619},{},[3620,3631,3632,3637,3639,3644],{"type":41,"tag":57,"props":3621,"children":3622},{},[3623,3625,3630],{"type":46,"value":3624},"Ignoring ",{"type":41,"tag":75,"props":3626,"children":3628},{"className":3627},[],[3629],{"type":46,"value":480},{"type":46,"value":138},{"type":46,"value":1240},{"type":41,"tag":75,"props":3633,"children":3635},{"className":3634},[],[3636],{"type":46,"value":870},{"type":46,"value":3638}," emits warn-level diagnostics and ",{"type":41,"tag":57,"props":3640,"children":3641},{},[3642],{"type":46,"value":3643},"exits 0",{"type":46,"value":3645},". An agent that only checks exit code misses every concurrent-migration warning.",{"type":41,"tag":94,"props":3647,"children":3648},{},[3649,3667,3669,3674],{"type":41,"tag":57,"props":3650,"children":3651},{},[3652,3654,3659,3661,3666],{"type":46,"value":3653},"Skipping ",{"type":41,"tag":75,"props":3655,"children":3657},{"className":3656},[],[3658],{"type":46,"value":1267},{"type":46,"value":3660}," on ",{"type":41,"tag":75,"props":3662,"children":3664},{"className":3663},[],[3665],{"type":46,"value":1278},{"type":46,"value":138},{"type":46,"value":3668}," That envelope is a wrapper — the real code lives on ",{"type":41,"tag":75,"props":3670,"children":3672},{"className":3671},[],[3673],{"type":46,"value":1267},{"type":46,"value":138},{"type":41,"tag":94,"props":3676,"children":3677},{},[3678,3689,3690,3695,3697,3702,3704,3709],{"type":41,"tag":57,"props":3679,"children":3680},{},[3681,3683,3688],{"type":46,"value":3682},"Treating drift as something to silence with ",{"type":41,"tag":75,"props":3684,"children":3686},{"className":3685},[],[3687],{"type":46,"value":2415},{"type":46,"value":138},{"type":46,"value":1240},{"type":41,"tag":75,"props":3691,"children":3693},{"className":3692},[],[3694],{"type":46,"value":2415},{"type":46,"value":3696}," writes the marker from the current contract hash, but it requires schema verification to pass first. Run ",{"type":41,"tag":75,"props":3698,"children":3700},{"className":3699},[],[3701],{"type":46,"value":2341},{"type":46,"value":3703}," before reaching for ",{"type":41,"tag":75,"props":3705,"children":3707},{"className":3706},[],[3708],{"type":46,"value":2415},{"type":46,"value":138},{"type":41,"tag":94,"props":3711,"children":3712},{},[3713,3725,3726,3732,3734,3740],{"type":41,"tag":57,"props":3714,"children":3715},{},[3716,3718,3723],{"type":46,"value":3717},"Re-running ",{"type":41,"tag":75,"props":3719,"children":3721},{"className":3720},[],[3722],{"type":46,"value":1301},{"type":46,"value":3724}," after a partial failure without inspecting state.",{"type":46,"value":1240},{"type":41,"tag":75,"props":3727,"children":3729},{"className":3728},[],[3730],{"type":46,"value":3731},"db schema --db \u003Curl>",{"type":46,"value":3733}," shows the live shape; ",{"type":41,"tag":75,"props":3735,"children":3737},{"className":3736},[],[3738],{"type":46,"value":3739},"migration status --db \u003Curl> --json",{"type":46,"value":3741}," shows where the marker actually is.",{"type":41,"tag":83,"props":3743,"children":3745},{"id":3744},"what-prisma-next-doesnt-do-yet",[3746],{"type":46,"value":3747},"What Prisma Next doesn't do yet",{"type":41,"tag":90,"props":3749,"children":3750},{},[3751,3791,3814,3861],{"type":41,"tag":94,"props":3752,"children":3753},{},[3754,3759,3761,3767,3769,3775,3777,3783,3785,3790],{"type":41,"tag":57,"props":3755,"children":3756},{},[3757],{"type":46,"value":3758},"Studio \u002F GUI database browser.",{"type":46,"value":3760}," No first-party Studio. Workaround: ",{"type":41,"tag":75,"props":3762,"children":3764},{"className":3763},[],[3765],{"type":46,"value":3766},"prisma-next db schema",{"type":46,"value":3768}," for a CLI tree of the live schema, or use a third-party tool (TablePlus, DataGrip, ",{"type":41,"tag":75,"props":3770,"children":3772},{"className":3771},[],[3773],{"type":46,"value":3774},"psql",{"type":46,"value":3776},") against your ",{"type":41,"tag":75,"props":3778,"children":3780},{"className":3779},[],[3781],{"type":46,"value":3782},"DATABASE_URL",{"type":46,"value":3784},". If you need a built-in GUI, file a feature request via ",{"type":41,"tag":75,"props":3786,"children":3788},{"className":3787},[],[3789],{"type":46,"value":269},{"type":46,"value":138},{"type":41,"tag":94,"props":3792,"children":3793},{},[3794,3799,3801,3806,3808,3813],{"type":41,"tag":57,"props":3795,"children":3796},{},[3797],{"type":46,"value":3798},"First-class query logger middleware.",{"type":46,"value":3800}," No built-in \"log every query\" middleware ships with the framework. Workaround: write a small custom middleware that wraps each operation (see ",{"type":41,"tag":75,"props":3802,"children":3804},{"className":3803},[],[3805],{"type":46,"value":257},{"type":46,"value":3807}," for middleware composition). If you need a built-in query log, file a feature request via ",{"type":41,"tag":75,"props":3809,"children":3811},{"className":3810},[],[3812],{"type":46,"value":269},{"type":46,"value":138},{"type":41,"tag":94,"props":3815,"children":3816},{},[3817,3828,3830,3836,3838,3844,3846,3852,3853,3859],{"type":41,"tag":57,"props":3818,"children":3819},{},[3820,3826],{"type":41,"tag":75,"props":3821,"children":3823},{"className":3822},[],[3824],{"type":46,"value":3825},"EXPLAIN",{"type":46,"value":3827}," integration.",{"type":46,"value":3829}," No first-class ",{"type":41,"tag":75,"props":3831,"children":3833},{"className":3832},[],[3834],{"type":46,"value":3835},".explain()",{"type":46,"value":3837}," on plans. Workaround: write the EXPLAIN as a raw query (",{"type":41,"tag":75,"props":3839,"children":3841},{"className":3840},[],[3842],{"type":46,"value":3843},"db.sql.raw\\",{"type":46,"value":3845},"EXPLAIN ANALYZE ...`",{"type":41,"tag":75,"props":3847,"children":3849},{"className":3848},[],[3850],{"type":46,"value":3851},"; see ",{"type":46,"value":3422},{"type":41,"tag":75,"props":3854,"children":3856},{"className":3855},[],[3857],{"type":46,"value":3858},"). If you need first-class EXPLAIN, file a feature request via ",{"type":46,"value":3860},"prisma-next-feedback`.",{"type":41,"tag":94,"props":3862,"children":3863},{},[3864,3869,3871,3876,3878,3883],{"type":41,"tag":57,"props":3865,"children":3866},{},[3867],{"type":46,"value":3868},"Prepared-statement caching as a user-facing surface.",{"type":46,"value":3870}," Adapters prepare under the hood for parameterized queries, but you cannot pre-prepare and re-execute a statement by name. Workaround: use TypedSQL (see ",{"type":41,"tag":75,"props":3872,"children":3874},{"className":3873},[],[3875],{"type":46,"value":3422},{"type":46,"value":3877},"). If you need prepared statements as a first-class API, file a feature request via ",{"type":41,"tag":75,"props":3879,"children":3881},{"className":3880},[],[3882],{"type":46,"value":269},{"type":46,"value":138},{"type":41,"tag":83,"props":3885,"children":3887},{"id":3886},"asking-for-help-when-the-envelope-doesnt-route",[3888],{"type":46,"value":3889},"Asking for help when the envelope doesn't route",{"type":41,"tag":3540,"props":3891,"children":3892},{},[3893,3910],{"type":41,"tag":94,"props":3894,"children":3895},{},[3896,3897,3902,3903,3908],{"type":46,"value":2626},{"type":41,"tag":75,"props":3898,"children":3900},{"className":3899},[],[3901],{"type":46,"value":1407},{"type":46,"value":1687},{"type":41,"tag":75,"props":3904,"children":3906},{"className":3905},[],[3907],{"type":46,"value":104},{"type":46,"value":3909}," for machine output) to get the full envelope.",{"type":41,"tag":94,"props":3911,"children":3912},{},[3913,3915,3920,3922,3927,3929,3934,3936,3941],{"type":46,"value":3914},"If the envelope is genuinely uninformative — empty ",{"type":41,"tag":75,"props":3916,"children":3918},{"className":3917},[],[3919],{"type":46,"value":594},{"type":46,"value":3921},", missing ",{"type":41,"tag":75,"props":3923,"children":3925},{"className":3924},[],[3926],{"type":46,"value":719},{"type":46,"value":3928},", generic ",{"type":41,"tag":75,"props":3930,"children":3932},{"className":3931},[],[3933],{"type":46,"value":518},{"type":46,"value":3935}," — that's a framework affordance gap; route to ",{"type":41,"tag":75,"props":3937,"children":3939},{"className":3938},[],[3940],{"type":46,"value":269},{"type":46,"value":3942}," with the envelope, the contract source (sanitised), and the reproduction steps.",{"type":41,"tag":83,"props":3944,"children":3946},{"id":3945},"checklist",[3947],{"type":46,"value":3948},"Checklist",{"type":41,"tag":90,"props":3950,"children":3953},{"className":3951},[3952],"contains-task-list",[3954,3985,4037,4065,4081,4115],{"type":41,"tag":94,"props":3955,"children":3958},{"className":3956},[3957],"task-list-item",[3959,3965,3967,3972,3973,3978,3979,3984],{"type":41,"tag":3960,"props":3961,"children":3964},"input",{"disabled":3962,"type":3963},true,"checkbox",[],{"type":46,"value":3966}," Identified which envelope shape (",{"type":41,"tag":75,"props":3968,"children":3970},{"className":3969},[],[3971],{"type":46,"value":326},{"type":46,"value":119},{"type":41,"tag":75,"props":3974,"children":3976},{"className":3975},[],[3977],{"type":46,"value":903},{"type":46,"value":119},{"type":41,"tag":75,"props":3980,"children":3982},{"className":3981},[],[3983],{"type":46,"value":1149},{"type":46,"value":214},{"type":41,"tag":94,"props":3986,"children":3988},{"className":3987},[3957],[3989,3992,3994,3999,4000,4005,4006,4011,4012,4017,4018,4023,4024,4029,4030,4035],{"type":41,"tag":3960,"props":3990,"children":3991},{"disabled":3962,"type":3963},[],{"type":46,"value":3993}," Read every field — ",{"type":41,"tag":75,"props":3995,"children":3997},{"className":3996},[],[3998],{"type":46,"value":75},{"type":46,"value":119},{"type":41,"tag":75,"props":4001,"children":4003},{"className":4002},[],[4004],{"type":46,"value":480},{"type":46,"value":119},{"type":41,"tag":75,"props":4007,"children":4009},{"className":4008},[],[4010],{"type":46,"value":556},{"type":46,"value":119},{"type":41,"tag":75,"props":4013,"children":4015},{"className":4014},[],[4016],{"type":46,"value":594},{"type":46,"value":119},{"type":41,"tag":75,"props":4019,"children":4021},{"className":4020},[],[4022],{"type":46,"value":719},{"type":46,"value":1687},{"type":41,"tag":75,"props":4025,"children":4027},{"className":4026},[],[4028],{"type":46,"value":1118},{"type":46,"value":1197},{"type":41,"tag":75,"props":4031,"children":4033},{"className":4032},[],[4034],{"type":46,"value":631},{"type":46,"value":4036}," if present.",{"type":41,"tag":94,"props":4038,"children":4040},{"className":4039},[3957],[4041,4044,4046,4051,4052,4057,4059,4064],{"type":41,"tag":3960,"props":4042,"children":4043},{"disabled":3962,"type":3963},[],{"type":46,"value":4045}," If ",{"type":41,"tag":75,"props":4047,"children":4049},{"className":4048},[],[4050],{"type":46,"value":75},{"type":46,"value":1376},{"type":41,"tag":75,"props":4053,"children":4055},{"className":4054},[],[4056],{"type":46,"value":1278},{"type":46,"value":4058},", also read ",{"type":41,"tag":75,"props":4060,"children":4062},{"className":4061},[],[4063],{"type":46,"value":1267},{"type":46,"value":138},{"type":41,"tag":94,"props":4066,"children":4068},{"className":4067},[3957],[4069,4072,4074,4079],{"type":41,"tag":3960,"props":4070,"children":4071},{"disabled":3962,"type":3963},[],{"type":46,"value":4073}," Routed on ",{"type":41,"tag":75,"props":4075,"children":4077},{"className":4076},[],[4078],{"type":46,"value":75},{"type":46,"value":4080}," to the next move (and chained to the matching authoring skill where the table says so).",{"type":41,"tag":94,"props":4082,"children":4084},{"className":4083},[3957],[4085,4088,4090,4095,4096,4102,4103,4108,4109,4114],{"type":41,"tag":3960,"props":4086,"children":4087},{"disabled":3962,"type":3963},[],{"type":46,"value":4089}," Re-verified with the relevant CLI command (",{"type":41,"tag":75,"props":4091,"children":4093},{"className":4092},[],[4094],{"type":46,"value":2341},{"type":46,"value":119},{"type":41,"tag":75,"props":4097,"children":4099},{"className":4098},[],[4100],{"type":46,"value":4101},"migration status --json",{"type":46,"value":119},{"type":41,"tag":75,"props":4104,"children":4106},{"className":4105},[],[4107],{"type":46,"value":1798},{"type":46,"value":119},{"type":41,"tag":75,"props":4110,"children":4112},{"className":4111},[],[4113],{"type":46,"value":1301},{"type":46,"value":214},{"type":41,"tag":94,"props":4116,"children":4118},{"className":4117},[3957],[4119,4122,4124,4129],{"type":41,"tag":3960,"props":4120,"children":4121},{"disabled":3962,"type":3963},[],{"type":46,"value":4123}," Did not confabulate a Studio \u002F EXPLAIN \u002F query-log API — used the documented workaround and routed unmet capability gaps to ",{"type":41,"tag":75,"props":4125,"children":4127},{"className":4126},[],[4128],{"type":46,"value":269},{"type":46,"value":138},{"type":41,"tag":4131,"props":4132,"children":4133},"style",{},[4134],{"type":46,"value":4135},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":4137,"total":4293},[4138,4150,4165,4177,4184,4197,4214,4224,4239,4252,4262,4278],{"slug":1749,"name":1749,"fn":4139,"description":4140,"org":4141,"tags":4142,"stars":23,"repoUrl":24,"updatedAt":4149},"guide Prisma Next project setup and usage","Route a vague Prisma Next prompt to the right specific skill. Use for \"help me with Prisma Next\", \"what is Prisma Next\", \"explain Prisma Next\", \"I'm new to PN\", \"where do I start\", \"what can I do with Prisma Next\", \"what can I do next with Prisma\", \"just ran createprisma\", \"tour of Prisma Next\", \"Prisma Next overview\", and comparison questions like \"Prisma Next vs Prisma 7\", \"PN vs Drizzle\", \"PN vs Kysely\", \"PN vs TypeORM\". Do NOT use when the prompt clearly matches a workflow skill — adoption \u002F quickstart \u002F first-touch orientation \u002F brownfield introspection, schema \u002F contract editing, migration authoring (db update \u002F migration plan \u002F migrate), migration review on deploy \u002F concurrent migrations, queries \u002F db.orm \u002F db.sql \u002F TypedSQL, Supabase \u002F RLS \u002F role binding, runtime \u002F db.ts \u002F middleware wiring, build \u002F Vite plugin \u002F Next.js plugin, debug \u002F structured error envelopes \u002F PN-* error codes, or feedback \u002F bug report \u002F feature request — load that sibling skill directly.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4143,4144,4145,4146],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":4147,"slug":4148,"type":15},"TypeScript","typescript","2026-07-17T05:32:04.322957",{"slug":4151,"name":4151,"fn":4152,"description":4153,"org":4154,"tags":4155,"stars":23,"repoUrl":24,"updatedAt":4164},"prisma-next-build","integrate Prisma Next into build systems","Wire Prisma Next into the project's build system with the right build-tool plugin — Vite today via @prisma-next\u002Fvite-plugin-contract-emit (Vite 7 \u002F 8); Next.js \u002F Webpack \u002F esbuild \u002F Rollup \u002F Turbopack are named as gaps rather than fabricated. Always offers the Vite plugin proactively when the project is using Vite. Use for vite plugin, vite-plugin, vite.config.ts, prismaVitePlugin, contract emit on save, HMR, hot reload contract, dev server, Next.js plugin, next plugin, withPrismaNext, webpack plugin, esbuild plugin, rollup plugin, build integration, dev server plugin, vite 7, vite 8.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4156,4159,4160,4161],{"name":4157,"slug":4158,"type":15},"Deployment","deployment",{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":4162,"slug":4163,"type":15},"Vite","vite","2026-07-02T07:31:36.108254",{"slug":1831,"name":1831,"fn":4166,"description":4167,"org":4168,"tags":4169,"stars":23,"repoUrl":24,"updatedAt":4176},"edit Prisma Next data contracts and models","Edit the Prisma Next data contract — add models, fields, relations, indexes, enums, value objects (composite types), type aliases, namespaces (Postgres schemas), cross-contract foreign keys (cross-space FK), polymorphic types (`@@discriminator` \u002F `@@base`), use extension namespaces (`pgvector.Vector(...)`, `cipherstash.EncryptedString(...)`), wire `prisma-next.config.ts` with `defineConfig` from the `@prisma-next\u002F\u003Ctarget>\u002Fconfig` façade, and run `prisma-next contract emit`. Use for schema, models, fields, attributes, soft delete, paranoid, scopes, validations, callbacks, prisma schema, PSL, contract.prisma, contract.ts, contract.json, contract.d.ts, `@prisma-next\u002Fpostgres\u002Fconfig`, `@prisma-next\u002Fpostgres\u002Fcontract-builder`, `@prisma-next\u002Fpostgres\u002Fcontrol`, `@prisma-next\u002Fmongo\u002Fconfig`, `@prisma-next\u002Fmongo\u002Fcontract-builder`, `extensions:`, pgvector, cipherstash, postgis, paradedb, supabase, `@prisma-next\u002Fextension-supabase`, `@@control`, control policy, managed, tolerated, external, observed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4170,4173,4174,4175],{"name":4171,"slug":4172,"type":15},"Data Modeling","data-modeling",{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":4147,"slug":4148,"type":15},"2026-07-30T05:30:10.426962",{"slug":4,"name":4,"fn":5,"description":6,"org":4178,"tags":4179,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4180,4181,4182,4183],{"name":17,"slug":18,"type":15},{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":269,"name":269,"fn":4185,"description":4186,"org":4187,"tags":4188,"stars":23,"repoUrl":24,"updatedAt":4196},"report Prisma Next issues and feedback","Hand a Prisma Next question or report off to the team — file a GitHub issue (bug or feature request), or route Q&A \u002F design discussion \u002F direct-team-contact to the Prisma Discord at pris.ly\u002Fdiscord. Use for bug, bug report, file an issue, report a bug, feature request, missing feature, this should be a feature, file this, this is a bug, this is broken, surprising behaviour, this doesn't work, file feedback, send feedback, capability gap, file via prisma-next-feedback, ask the team, talk to the team, talk to the Prisma team, talk to Prisma, Discord, Prisma Discord, Q&A, design feedback, is this the intended way, how should I do X, extension author question, extension author needs help.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4189,4192,4195],{"name":4190,"slug":4191,"type":15},"Documentation","documentation",{"name":4193,"slug":4194,"type":15},"GitHub","github",{"name":9,"slug":8,"type":15},"2026-07-02T07:31:34.870809",{"slug":2740,"name":2740,"fn":4198,"description":4199,"org":4200,"tags":4201,"stars":23,"repoUrl":24,"updatedAt":4213},"review and resolve Prisma Next migrations","Review what Prisma Next migrations will run on merge or deploy, render the migration graph, resolve concurrent \u002F diamond-convergence conflicts, and configure environment refs for CI. Use for \"what migrations are going to run\", \"what runs on deploy\", merge conflict, diamond convergence, concurrent migrations, migration status, ref management, staging, production, MIGRATION.DIVERGED, MIGRATION.NO_MARKER, MIGRATION.MARKER_NOT_IN_HISTORY, prisma migrate status, prisma migrate diff, prisma migrate resolve.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4202,4205,4208,4209,4212],{"name":4203,"slug":4204,"type":15},"CI\u002FCD","ci-cd",{"name":4206,"slug":4207,"type":15},"Code Review","code-review",{"name":17,"slug":18,"type":15},{"name":4210,"slug":4211,"type":15},"Migration","migration",{"name":9,"slug":8,"type":15},"2026-07-24T05:37:11.422323",{"slug":2074,"name":2074,"fn":4215,"description":4216,"org":4217,"tags":4218,"stars":23,"repoUrl":24,"updatedAt":4223},"author and manage Prisma Next migrations","Author Prisma Next migrations — choose db update vs migration plan, edit the framework-rendered migration.ts (replace placeholder sentinels with dataTransform closures), recover from MIGRATION.HASH_MISMATCH or PN-MIG-2001 unfilled placeholder. Use for prisma migrate dev, prisma migrate deploy, prisma db push, db update, db update --dry-run, migration plan, migrate, migration new, migration show, db verify, db sign, data migration, this.dataTransform, dataTransform, placeholder, generated migration.ts, edit migration.ts, MIGRATION.HASH_MISMATCH, schema drift.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4219,4220,4221,4222],{"name":17,"slug":18,"type":15},{"name":4210,"slug":4211,"type":15},{"name":9,"slug":8,"type":15},{"name":4147,"slug":4148,"type":15},"2026-07-24T05:37:13.469138",{"slug":3422,"name":3422,"fn":4225,"description":4226,"org":4227,"tags":4228,"stars":23,"repoUrl":24,"updatedAt":4238},"write Prisma Next queries for database operations","Write Prisma Next queries for Postgres, SQLite, or Mongo — pick a lane (Postgres\u002FSQLite `db.orm.\u003CModel>` + `db.sql.\u003Ctable>`; Mongo `db.orm.\u003Croot>` + `db.query.from(...)` pipeline builder), filter \u002F project \u002F sort \u002F paginate, eager-load with `.include(...)`, Postgres\u002FSQLite `db.transaction(...)`, Postgres\u002FSQLite ORM `.aggregate(...)`, Mongo aggregations via query builder, namespace-aware accessors (`db.orm.\u003Cns>.\u003CModel>`, `db.sql.\u003Cns>.\u003Ctable>`). Triggers: query, where, match, select, project, orderBy, take, skip, include, lookup, first, all, count, aggregate, group, create, update, delete, upsert, returning, transaction, db.close, script teardown, variant, polymorphism, drizzle-style, kysely-style. Notes: `.all()` is a Thenable (just `await` it), iterators are single-use (`RUNTIME.ITERATOR_CONSUMED`), Postgres `count` is `number` while sum\u002Favg\u002Fmin\u002Fmax are `number | null`, ranges use chained `.where()` or `and(...)` (no `.between(...)`).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4229,4230,4231,4234,4235],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":4232,"slug":4233,"type":15},"PostgreSQL","postgresql",{"name":9,"slug":8,"type":15},{"name":4236,"slug":4237,"type":15},"SQL","sql","2026-07-17T05:32:03.35373",{"slug":4240,"name":4240,"fn":4241,"description":4242,"org":4243,"tags":4244,"stars":23,"repoUrl":24,"updatedAt":4251},"prisma-next-quickstart","adopt Prisma Next in projects","Adopt Prisma Next into a new project, onto an existing database, or as the first move after a bootstrap tool dropped you into a scaffold. Use for \"what can I do with Prisma Next\", \"what can I do next with Prisma\", \"where do I start\", \"what should I do first\", \"just ran createprisma\", \"createprisma\", \"npx createprisma\", \"npx create-prisma\", \"first steps\", \"first query\", \"I have a scaffolded Prisma Next project what now\"; for `pnpm dlx prisma-next init` greenfield setup; and for `prisma-next contract infer` + `db sign` against an existing database. Also covers the connect-write-read first-arc orientation, the day-to-day commands (`contract emit`, `db init`, `db update`, `migration plan`, `migrate`, `db schema`, `db verify`), and routing to `prisma-next-contract` \u002F `prisma-next-queries` \u002F `prisma-next-runtime` for the next move. Flags: --target, --authoring, --schema-path, --probe-db, --output.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4245,4246,4249,4250],{"name":17,"slug":18,"type":15},{"name":4247,"slug":4248,"type":15},"ORM","orm",{"name":9,"slug":8,"type":15},{"name":4147,"slug":4148,"type":15},"2026-07-24T05:37:12.462072",{"slug":257,"name":257,"fn":4253,"description":4254,"org":4255,"tags":4256,"stars":23,"repoUrl":24,"updatedAt":4261},"configure Prisma Next runtime and database connections","Wire the Prisma Next runtime — `db.ts` setup using `postgres\u003CContract>(...)` from `@prisma-next\u002Fpostgres\u002Fruntime`, `sqlite\u003CContract>(...)` from `@prisma-next\u002Fsqlite\u002Fruntime`, or `mongo\u003CContract>(...)` from `@prisma-next\u002Fmongo\u002Fruntime`; middleware composition (telemetry from `@prisma-next\u002Fmiddleware-telemetry`; lints and budgets), `DATABASE_URL` config, per-environment branching, switching between Postgres, SQLite, and Mongo façades. Use for db.ts, postgres(), sqlite(), mongo(), middleware, telemetry, lints, budgets, DATABASE_URL, .env, connection pool, poolOptions, dev vs prod config, transactions, db.transaction, read replicas, multi-database, script won't exit, hangs, close connection, db.end, db.close, pool.end, [Symbol.asyncDispose], await using.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4257,4258,4259,4260],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":4232,"slug":4233,"type":15},{"name":9,"slug":8,"type":15},"2026-07-17T05:32:05.347316",{"slug":4263,"name":4263,"fn":4264,"description":4265,"org":4266,"tags":4267,"stars":23,"repoUrl":24,"updatedAt":4277},"prisma-next-supabase","integrate Prisma with Supabase","Use Prisma Next with a Supabase project via `@prisma-next\u002Fextension-supabase` — wire `extensions: [supabasePack]`, declare cross-space FKs to `supabase:auth.AuthUser`, author RLS policies (`policy_select` \u002F `policy_update` \u002F `@@rls`, `auth.uid()` predicates), build `db.ts` with the `supabase()` factory, bind roles per request (`asUser(jwt)` \u002F `asAnon()` \u002F `asServiceRole()`), query `auth.*` \u002F `storage.*` via the `db.asServiceRole().supabase` admin root, and validate JWTs (`jwksUrl` for current projects \u002F `jwtSecret` for legacy HS256). Use for supabase, RLS, row level security, policy, role binding, anon, authenticated, service_role, auth.users, auth.uid(), JWT, JWKS, SUPABASE_JWKS_URL, SUPABASE_JWT_SECRET, SUPABASE.JWT_INVALID, SUPABASE.CONFIG_INVALID, RoleBoundDb, session pooler, supabase:auth.AuthUser, @prisma-next\u002Fextension-supabase.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4268,4271,4272,4273,4274],{"name":4269,"slug":4270,"type":15},"Auth","auth",{"name":4247,"slug":4248,"type":15},{"name":4232,"slug":4233,"type":15},{"name":9,"slug":8,"type":15},{"name":4275,"slug":4276,"type":15},"Supabase","supabase","2026-07-30T05:30:11.065251",{"slug":4279,"name":4279,"fn":4280,"description":4281,"org":4282,"tags":4283,"stars":4290,"repoUrl":4291,"updatedAt":4292},"prisma-cli","run Prisma CLI commands","Prisma ORM CLI commands reference covering init, generate, migrate, db, dev, studio, validate, format, debug, and mcp. Use for ORM\u002Fdatabase CLI workflows, not Prisma Compute app deployment. For Prisma Compute, `@prisma\u002Fcli app deploy`, `compute:deploy`, `create-prisma --deploy`, apps, deployments, logs, or domains, use the `prisma-compute` skill instead. Triggers on \"prisma init\", \"prisma generate\", \"prisma migrate\", \"prisma db\", \"prisma studio\", \"prisma mcp\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4284,4286,4287,4288,4289],{"name":827,"slug":4285,"type":15},"cli",{"name":17,"slug":18,"type":15},{"name":4210,"slug":4211,"type":15},{"name":4247,"slug":4248,"type":15},{"name":9,"slug":8,"type":15},44,"https:\u002F\u002Fgithub.com\u002Fprisma\u002Fskills","2026-04-06T18:48:29.140467",21,{"items":4295,"total":767},[4296,4303,4310,4317,4324,4330,4338],{"slug":1749,"name":1749,"fn":4139,"description":4140,"org":4297,"tags":4298,"stars":23,"repoUrl":24,"updatedAt":4149},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4299,4300,4301,4302],{"name":17,"slug":18,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":4147,"slug":4148,"type":15},{"slug":4151,"name":4151,"fn":4152,"description":4153,"org":4304,"tags":4305,"stars":23,"repoUrl":24,"updatedAt":4164},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4306,4307,4308,4309],{"name":4157,"slug":4158,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"name":4162,"slug":4163,"type":15},{"slug":1831,"name":1831,"fn":4166,"description":4167,"org":4311,"tags":4312,"stars":23,"repoUrl":24,"updatedAt":4176},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4313,4314,4315,4316],{"name":4171,"slug":4172,"type":15},{"name":17,"slug":18,"type":15},{"name":9,"slug":8,"type":15},{"name":4147,"slug":4148,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":4318,"tags":4319,"stars":23,"repoUrl":24,"updatedAt":25},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4320,4321,4322,4323],{"name":17,"slug":18,"type":15},{"name":21,"slug":22,"type":15},{"name":13,"slug":14,"type":15},{"name":9,"slug":8,"type":15},{"slug":269,"name":269,"fn":4185,"description":4186,"org":4325,"tags":4326,"stars":23,"repoUrl":24,"updatedAt":4196},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4327,4328,4329],{"name":4190,"slug":4191,"type":15},{"name":4193,"slug":4194,"type":15},{"name":9,"slug":8,"type":15},{"slug":2740,"name":2740,"fn":4198,"description":4199,"org":4331,"tags":4332,"stars":23,"repoUrl":24,"updatedAt":4213},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4333,4334,4335,4336,4337],{"name":4203,"slug":4204,"type":15},{"name":4206,"slug":4207,"type":15},{"name":17,"slug":18,"type":15},{"name":4210,"slug":4211,"type":15},{"name":9,"slug":8,"type":15},{"slug":2074,"name":2074,"fn":4215,"description":4216,"org":4339,"tags":4340,"stars":23,"repoUrl":24,"updatedAt":4223},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[4341,4342,4343,4344],{"name":17,"slug":18,"type":15},{"name":4210,"slug":4211,"type":15},{"name":9,"slug":8,"type":15},{"name":4147,"slug":4148,"type":15}]