Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
9f3d4c1
project(codec-registration-completion): draft spec and plan for TML-2357
wmadden May 1, 2026
692178c
wip(codec-registration-completion): M1 in-progress narrowing of runti…
cursoragent May 1, 2026
3c9338f
(TML-2357) M1 R1: complete narrowed-Codec migration
wmadden May 1, 2026
bef4787
project(codec-registration-completion): apply m1 R1 plan/spec amendme…
wmadden May 1, 2026
1be7564
(TML-2357) M1 R2: address reviewer F1 cast cleanup
wmadden May 1, 2026
04cffc1
TML-2357 M2: introduce aliasDescriptor for descriptor-level aliasing
wmadden May 1, 2026
45c240e
(TML-2357) M2 setup: add codecDescriptor() and defineCodecDescriptors…
wmadden May 1, 2026
8d4cfdf
(TML-2357) M2 T2.2: add native CodecDescriptor exports to sql-relatio…
wmadden May 1, 2026
08d1e3a
(TML-2357) M2 T2.3: add native CodecDescriptor exports to postgres ta…
wmadden May 1, 2026
a7ecaf1
(TML-2357) M2 T2.4: add native CodecDescriptor exports to sqlite targ…
wmadden May 1, 2026
e4bbfc7
(TML-2357) M2 T2.5: migrate pgvector to native CodecDescriptor
wmadden May 1, 2026
a6df71f
(TML-2357) M2 T2.6: delete arktypeJsonEmitCodec emit-only shim
wmadden May 1, 2026
2f2e175
M2 Phase A: unify SQL contributor codec slot, drop synthesis bridge
wmadden May 2, 2026
b49dbe3
M2 Phase B: retire CodecParamsDescriptor + aliasCodec + scrub stale s…
wmadden May 2, 2026
233d0cc
extractCodecLookup reads codec metadata from descriptor list
wmadden May 2, 2026
461c33e
codecDescriptor() materializes a narrow codec instance
wmadden May 2, 2026
8a60fee
M2 Phase B: narrow MongoCodec + scrub framework-components README
wmadden May 2, 2026
842a88d
M2 Phase B: narrow SQL Codec to id+conversion + migrate test reads to…
wmadden May 2, 2026
f94fddb
M2 Phase B: drop the four inlined as-unknown-as Codec casts at the po…
wmadden May 2, 2026
4d050ae
M2 Phase B: add T2.10 no-synthesis-bridge constructive test
wmadden May 2, 2026
ed2f9ee
M2 R3: rename createCodecRegistry → newCodecRegistry; drop CodecRegis…
wmadden May 2, 2026
efb52b1
M2 R3: rename legacy + parallel codec factories and builder property …
wmadden May 2, 2026
86ae206
M2 R3: retire F1 LegacyCodecInstanceMeta cast and codecInstances slot
wmadden May 2, 2026
a29e062
M2 R3: scrub legacy codec-API references from docs and retire no-synt…
wmadden May 2, 2026
f618436
M2 R4: add narrow buildCodec helper for runtime Codec materialization
wmadden May 2, 2026
49fbd6f
M2 R4: derive SQL base codec maps from descriptors; drop legacy facto…
wmadden May 2, 2026
038b709
M2 R4: derive postgres codec maps from descriptors; drop legacy facto…
wmadden May 2, 2026
aef6108
M2 R4: derive sqlite codec maps from descriptors; drop legacy factories
wmadden May 2, 2026
42da1de
M2 R4: derive pgvector codec maps from descriptor; drop legacy factories
wmadden May 2, 2026
8089e43
M2 R4: migrate arktype-json closure to buildCodec helper
wmadden May 2, 2026
f8fc3ea
M2 R4: delete legacy mkCodec test suites and stale comment refs
wmadden May 2, 2026
6ebf68d
M2 R4: migrate test fixtures from mkCodec to buildCodec
wmadden May 2, 2026
ef841ab
M2 R4: delete legacy mkCodec / defineCodecGroup / defineCodecBundle
wmadden May 2, 2026
d28ecae
M2 R4: cleanup doc references and ADR 207 import drift (F4)
wmadden May 2, 2026
083129e
M2 R4: thread typed Codec through descriptor byScalar slots
wmadden May 2, 2026
cfd5476
M2 R4: type defineCodec factory return as Codec<Id, TTraits, TWire, T…
wmadden May 2, 2026
b50f799
Revert "M2 R4: type defineCodec factory return as Codec<Id, TTraits, …
wmadden May 2, 2026
5f5d5ce
M2 R4: narrow descriptor-derived codec result type in sqlite test
wmadden May 2, 2026
76f5c4a
Reapply "M2 R4: type defineCodec factory return as Codec<Id, TTraits,…
wmadden May 2, 2026
4a0f34d
Revert "Reapply "M2 R4: type defineCodec factory return as Codec<Id, …
wmadden May 2, 2026
a42f2b0
Revert "M2 R4: thread typed Codec through descriptor byScalar slots"
wmadden May 2, 2026
fb12774
M2 R4 rollback: revert chain to M2 R3 HEAD (a29e06245)
wmadden May 2, 2026
f7df41b
Add M0 typed-codec-flow precondition spec to TML-2357
wmadden May 7, 2026
dc8f4e1
docs(codec-registration-completion): lock in Strength 3 forcing funct…
wmadden May 7, 2026
4a5d90b
docs(codec-registration-completion): factory-defined codec types goal…
wmadden May 7, 2026
efc0a98
docs(codec-registration-completion): refine Mode C goal spec per disc…
wmadden May 7, 2026
c69972e
docs(codec-registration-completion): add Data flow section to Mode C …
wmadden May 7, 2026
cd013d1
docs(codec-registration-completion): class-based codec design spec (M…
wmadden May 7, 2026
0c80b60
docs(codec-registration-completion): rewrite class-based spec around …
wmadden May 7, 2026
d9ad7db
docs(codec-registration-completion): fold spike findings into class-b…
wmadden May 7, 2026
9edb155
docs(codec-registration-completion): rewrite M0 plan around Pattern E…
wmadden May 7, 2026
0515acd
feat(framework-components)(TML-2357): M0 Phase A T0.A.1 — class-based…
wmadden May 7, 2026
625c590
test(framework-components)(TML-2357): M0 Phase A T0.A.3 — class-based…
wmadden May 7, 2026
ea67cc5
refactor(framework-components): move ColumnTypeDescriptor from contra…
wmadden May 7, 2026
588cf31
refactor(framework-components): consolidate codec interfaces and Impl…
wmadden May 7, 2026
89d27c2
refactor(framework-components,postgres): delete aliasDescriptor; repl…
wmadden May 7, 2026
4d157a9
docs(codec-registration-completion): update plan after Phase A landin…
wmadden May 7, 2026
6e851a9
feat(sql-relational-core)(TML-2357): M0 Phase B1 — class-based base c…
wmadden May 7, 2026
66b91ec
refactor(postgres)(TML-2357): M0 Phase B1 — defensive rework of legac…
wmadden May 7, 2026
cff53ec
feat(contract)(TML-2357): arktypeParamsSchema helper for arktype → St…
wmadden May 7, 2026
70b69da
refactor(sql-relational-core)(TML-2357): use arktypeParamsSchema help…
wmadden May 7, 2026
d8c9cd6
feat(postgres)(TML-2357): M0 Phase B2 — class-based form for native P…
wmadden May 7, 2026
d3ac5d8
docs(codec-registration-completion)(TML-2357): align spec § Heterogen…
wmadden May 7, 2026
014028a
fix(framework-components,sql-relational-core,postgres)(TML-2357): F5 …
wmadden May 7, 2026
030c02e
test(framework-components)(TML-2357): F6 — drop CodecDescriptor<unkno…
wmadden May 7, 2026
c045858
test(framework-components)(TML-2357): F7 — runtime tests for CodecImp…
wmadden May 7, 2026
37097cd
feat(target-sqlite)(TML-2357): M0 Phase B3 — class-based form for nat…
wmadden May 7, 2026
61901d7
feat(extension-pgvector)(TML-2357): M0 Phase B4 — class-based form fo…
wmadden May 7, 2026
4b1d930
feat(extension-arktype-json)(TML-2357): M0 Phase B4 — class-based for…
wmadden May 7, 2026
9614b9b
codec(postgres): swap adapter consumption to class-form descriptors (…
wmadden May 7, 2026
9f265a4
codec(sqlite): swap adapter consumption to class-form descriptors (T0…
wmadden May 7, 2026
64b24e5
codec(extensions): swap pgvector + arktype-json contributors to class…
wmadden May 7, 2026
c9e5c86
test(arktype-json): update runtime descriptor test for B5 class-form …
wmadden May 7, 2026
5c777d8
TML-2357 M0 R5: migrate sql-runtime tests off mkCodec to defineTestCo…
wmadden May 7, 2026
fc5b990
TML-2357 M0 R5: migrate relational-core tests onto class-form descrip…
wmadden May 7, 2026
405f377
TML-2357 M0 R5: migrate postgres tests onto class-form descriptors
wmadden May 7, 2026
ad20903
TML-2357 M0 R5: migrate sqlite adapter codecs test onto class-form de…
wmadden May 7, 2026
bae6c7c
TML-2357 M0 R5: migrate pgvector tests onto class-form descriptor
wmadden May 7, 2026
16c269d
TML-2357 M0 R5: migrate sql-orm-client + cross-family tests off mkCodec
wmadden May 7, 2026
547c20c
TML-2357 M0 R5: delete legacy postgres codec carriers
wmadden May 7, 2026
b687653
TML-2357 M0 R5: delete legacy sqlite codec carriers
wmadden May 7, 2026
ee40ecb
TML-2357 M0 R5: delete legacy pgvector codec carriers
wmadden May 7, 2026
7e874d9
TML-2357 M0 R5: delete legacy arktype-json codec carriers
wmadden May 7, 2026
130d31e
TML-2357 M0 R5: delete legacy carrier types + rename ExtractDescripto…
wmadden May 7, 2026
ef61c05
TML-2357 M0 R5: refresh stale legacy-carrier comments + docs after de…
wmadden May 8, 2026
feb9e7e
TML-2357 M0 R5: F4 — replace ADR 207 grounding example with class-for…
wmadden May 8, 2026
3f8341c
TML-2357 M0 R5: fix DescriptorCodecTraits to read traits off the desc…
wmadden May 8, 2026
fae3bd6
TML-2357 M0 R6: fix F8 — restore CodecTypes portability across consumers
wmadden May 8, 2026
db185c8
TML-2357 M0 R6: T0.D.1 typed-codec-flow type tests in relational-core
wmadden May 8, 2026
525a8bb
TML-2357 M0 R6: T0.D.2 per-target descriptor flow type tests
wmadden May 8, 2026
a210fa1
TML-2357 M0 R6: T0.D.3 no-emit authoring chain demo type test (AC-CB-6)
wmadden May 8, 2026
42feef3
TML-2357 M3: T3.2 extend ParamRef + ProjectionItem AST with refs
wmadden May 8, 2026
58076b0
TML-2357 M3: T3.3 add validateParamRefRefs builder-pipeline pass
wmadden May 8, 2026
a37e976
TML-2357 M3: T3.4 populate refs at every column-bound ParamRef site
wmadden May 8, 2026
3f0ec22
TML-2357 M3: T3.5 encode-side dispatch via forColumn + run validator …
wmadden May 8, 2026
e055c94
TML-2357 M4: delete JsonSchemaValidatorRegistry and retire `json-vali…
wmadden May 8, 2026
9e647d8
TML-2357 close-out: align long-lived docs with post-migration state
wmadden May 8, 2026
c0b5a2c
TML-2357 close-out: strip project-internal phase markers from code co…
wmadden May 8, 2026
aacf58d
TML-2357 close-out: delete projects/codec-registration-completion/
wmadden May 8, 2026
5b0113a
Restore projects/codec-registration-completion/ tracked files
wmadden May 8, 2026
2d4eb3b
TML-2357 close-out: cross-reference TML-2402 / TML-2403 follow-ups
wmadden May 8, 2026
3d57f9e
F9 prep: export buildCodecDescriptorRegistry from relational-core
wmadden May 8, 2026
ca38474
F10: drop Class suffix from descriptor instance names
wmadden May 8, 2026
73b76e0
F9+F10 (target-postgres): expose postgresCodecRegistry as the public …
wmadden May 8, 2026
7f6e366
F9+F10 (target-sqlite): expose sqliteCodecRegistry as the public cons…
wmadden May 8, 2026
583a8e9
F9+F10 (extension-pgvector): expose pgvectorCodecRegistry as the publ…
wmadden May 8, 2026
6162fbc
F9+F10 (extension-arktype-json): expose arktypeJsonCodecRegistry as t…
wmadden May 8, 2026
b13525a
F10 (target-postgres): rename core/codecs-class.ts → core/codecs.ts a…
wmadden May 8, 2026
62b3f8c
F10 (target-sqlite): rename core/codecs-class.ts → core/codecs.ts and…
wmadden May 8, 2026
a29ad2a
F10 (extension-pgvector): rename core/codecs-class.ts → core/codecs.t…
wmadden May 8, 2026
d3b46a6
F10 (extension-arktype-json): align imports + test filenames after co…
wmadden May 8, 2026
05144c0
F10: scrub class-form / class-based vocabulary in shared layers and docs
wmadden May 8, 2026
c4d81ad
F10 (sql-orm-client tests): scrub residual class-form vocabulary in c…
wmadden May 8, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ This directory contains the primary documentation for the repository.
- [Glossary](./glossary.md) — user-facing terminology (source of truth for naming)
- [Commands](./commands/README.md) — command docs and entry points
- [Reference docs](./reference/) — conventions and patterns used across the codebase
- [Codec authoring guide](./reference/codec-authoring-guide.md) — class-form Pattern E for writing codecs
- [CLI Style Guide](./CLI%20Style%20Guide.md) — CLI UX conventions

## Working with AI agents
Expand Down
2 changes: 1 addition & 1 deletion docs/Testing Guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ function createStubAdapter(): Adapter<SelectAst, SqlContract<SqlStorage>, Lowere
target: 'postgres',
targetFamily: 'sql',
capabilities: {},
codecs: createCodecRegistry(),
codecs: emptyCodecRegistry(),
},
lower: () => ({ sql: '', params: [] }),
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -164,9 +164,8 @@ The SQL family extends base execution-plane descriptors with `SqlStaticContribut

```ts
interface SqlStaticContributions {
codecs(): CodecRegistry
codecs(): ReadonlyArray<CodecDescriptor>
operationSignatures(): ReadonlyArray<SqlOperationSignature>
parameterizedCodecs(): ReadonlyArray<RuntimeParameterizedCodecDescriptor>
}
```

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,25 @@
# ADR 184 — Codec-owned value serialization

> **Retrospective note (TML-2357 close-out).** This ADR's examples use
> the `defineCodec({...})` factory. That factory was the canonical
> codec-author surface at the time; under TML-2357 it was retired in
> favor of the class-form Pattern E
> (`class extends CodecImpl<...>` + `class extends CodecDescriptorImpl<P>`
> + per-codec column helper). The ADR's *decision* — that codecs own
> both wire and JSON-safe representations through `encode` / `decode`
> + `encodeJson` / `decodeJson` — is unchanged; only the authoring
> shape has moved on. See
> [ADR 208 — Higher-order codecs for parameterized types](ADR%20208%20-%20Higher-order%20codecs%20for%20parameterized%20types.md)
> and the
> [Codec authoring guide](../../reference/codec-authoring-guide.md)
> for the current shape.

## At a glance

A column with `codecId: "pg/timestamptz@1"` has a default value of `new Date('2024-01-15')` — a JavaScript `Date`. This value has to survive a round-trip through `contract.json`, but `Date` has no JSON representation. The codec handles it:

```ts
const pgTimestamptzCodec = codec({
const pgTimestamptzCodec = defineCodec({
typeId: 'pg/timestamptz@1',
targetTypes: ['timestamptz'],
traits: ['equality', 'order'],
Expand Down Expand Up @@ -42,7 +56,7 @@ The resulting contract JSON is plain — no tags, no wrappers:

The consumer reads `"2024-01-15T00:00:00.000Z"`, looks up `pg/timestamptz@1`, calls `decodeJson(...)`, gets a `Date` object.

Every codec has `encodeJson` and `decodeJson`. For JSON-safe types (strings, numbers, booleans, null), they are identity functions — the `codec()` factory provides these defaults. Only codecs for types that JSON can't represent (`Date`, binary data, etc.) override them.
Every codec has `encodeJson` and `decodeJson`. For JSON-safe types (strings, numbers, booleans, null), they are identity functions — the `defineCodec()` factory provides these defaults. Only codecs for types that JSON can't represent (`Date`, binary data, etc.) override them.
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor | ⚡ Quick win

Rephrase the identity-default note in current terms.

The retrospective note already says defineCodec() is retired, but these paragraphs still describe its defaults in the present tense. Please restate this in terms of the current class/descriptor authoring surface, or mark it explicitly as historical, so the ADR does not read as internally contradictory.

As per coding guidelines, "**/*.{md,mdx}: Keep docs current (READMEs, rules, links)`."

Also applies to: 136-136

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@docs/architecture` docs/adrs/ADR 184 - Codec-owned value serialization.md at
line 59, The paragraph claims "the defineCodec() factory provides these
defaults" but defineCodec() is retired; update the text that describes
encodeJson/decodeJson to either mark the defineCodec() statement as historical
("historically, defineCodec() provided these defaults") or reword it to the
current authoring surface (e.g., explain that the codec class/descriptor default
implementations make encodeJson/decodeJson identity for JSON-safe types and only
Date/binary codecs override them); do the same for the duplicate instance of
this sentence elsewhere so the ADR is internally consistent.


The same typed value crosses other boundaries too. The migration planner renders it into DDL (`DEFAULT '2024-01-15T00:00:00.000Z'`). The PSL printer renders it into schema source (`@default("2024-01-15T00:00:00.000Z")`). Migration operations carry it in `ops.json`. These are the same problem for different media, but they live at different layers:

Expand Down Expand Up @@ -119,7 +133,7 @@ Both SQL and Mongo families define structurally identical codec interfaces (`Cod

`encodeJson` and `decodeJson` are required on the `Codec` interface, not optional. Any type that can appear in the contract may need a literal value serialized for it (column defaults, discriminator values, type parameters, migration temporary defaults). Making the methods required eliminates null checks at every dispatch site.

For JSON-safe types (strings, numbers, booleans, null), the methods are identity functions. The `codec()` factory provides these defaults when not explicitly supplied, so codecs for JSON-safe types need no additional boilerplate.
For JSON-safe types (strings, numbers, booleans, null), the methods are identity functions. The `defineCodec()` factory provides these defaults when not explicitly supplied, so codecs for JSON-safe types need no additional boilerplate.

### Contract loading integrates decoding

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,19 @@
# ADR 186 — Codec-dispatched type rendering

> **Retrospective note (TML-2357 close-out).** This ADR introduced the
> `renderOutputType` slot on the codec record (and shows
> `defineCodec({...})` examples). Both the codec authoring shape and
> the home of `renderOutputType` have since moved on:
> [ADR 208](ADR%20208%20-%20Higher-order%20codecs%20for%20parameterized%20types.md)
> relocated `renderOutputType` to the unified `CodecDescriptor`, and
> TML-2357 retired the `defineCodec({...})` factory in favor of the
> class-form Pattern E
> (`class extends CodecDescriptorImpl<P>`). The decision this ADR
> records — that the codec is the dispatch authority for type
> rendering — is unchanged; only the slot's home and the authoring
> syntax have moved. See
> [Codec authoring guide](../../reference/codec-authoring-guide.md).

## At a glance

A `vector(1536)` column should produce `Vector<1536>` as its output type. A `jsonb(schema)` column should produce `{ name: string }`. Today, resolving a field's output type requires dispatching through `CodecTypes[codecId]['output']` or `parameterizedOutput` — a hoop that varies depending on whether the codec is parameterized. After this change, every field's output type is resolved once and stamped into a dedicated map in `contract.d.ts`:
Expand Down Expand Up @@ -124,7 +138,7 @@ Non-parameterized codecs don't need to implement it. The common case is zero cod
Here's what the JSONB codec looks like with `renderOutputType`:

```ts
const pgJsonbCodec = codec({
const pgJsonbCodec = defineCodec({
typeId: 'pg/jsonb@1',
targetTypes: ['jsonb'],
encode: (value): string => JSON.stringify(value),
Expand Down Expand Up @@ -210,7 +224,7 @@ Rejected because phantom types are gross, and mixing type-only metadata into the

### Make `renderOutputType` required with a default

Like `encodeJson`/`decodeJson` on [ADR 184](ADR%20184%20-%20Codec-owned%20value%20serialization.md), make it required with a default provided by the `codec()` factory.
Like `encodeJson`/`decodeJson` on [ADR 184](ADR%20184%20-%20Codec-owned%20value%20serialization.md), make it required with a default provided by the `defineCodec()` factory.

Deferred. Most codecs don't parameterize their output type — the default (`CodecTypes[codecId]['output']`) handles them. Optional with a well-defined fallback is cleaner for now.

Expand Down
25 changes: 20 additions & 5 deletions docs/architecture docs/adrs/ADR 202 - Codec trait system.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# ADR 202 — Codec trait system

> **Retrospective note (TML-2357 close-out).** This ADR's examples
> show codec definitions via `defineCodec({...})`. The factory was
> retired under TML-2357 in favor of the class-form Pattern E
> (`class extends CodecDescriptorImpl<P>`); traits are now declared as
> `override readonly traits = [...] as const` on the descriptor class.
> The `'json-validator'` trait this ADR introduced was also retired
> under TML-2357 — JSON-Schema validation now lives uniformly inside
> the resolved codec's `decode` body rather than behind a parallel
> `JsonSchemaValidatorRegistry`. The trait system itself, the
> operator-gating semantics, and the canonical traits set are all
> unchanged. See
> [ADR 208](ADR%20208%20-%20Higher-order%20codecs%20for%20parameterized%20types.md)
> and the
> [Codec authoring guide](../../reference/codec-authoring-guide.md).

## Context

Data types in the system are identified by codec IDs (e.g., `pg/int4@1`, `pg/text@1`, `pg/vector@1`). Query surfaces need to know which operators and functions are valid for a given data type — for example, ordering a `jsonb` column with `lt` or applying `sum` to a `text` column are not meaningful SQL. Today there is no generic mechanism to express these semantic constraints.
Expand Down Expand Up @@ -63,7 +78,7 @@ Traits are declared at codec registration time. Core SQL codecs and adapter code

```ts
// sql-codecs.ts
const sqlIntCodec = codec({
const sqlIntCodec = defineCodec({
typeId: SQL_INT_CODEC_ID,
targetTypes: ['int'],
traits: ['equality', 'order', 'numeric'],
Expand All @@ -74,23 +89,23 @@ const sqlIntCodec = codec({

```ts
// postgres adapter codecs
const pgTextCodec = codec({
const pgTextCodec = defineCodec({
typeId: 'pg/text@1',
targetTypes: ['text'],
traits: ['equality', 'order', 'textual'],
encode: (value) => value,
decode: (wire) => wire,
});

const pgBoolCodec = codec({
const pgBoolCodec = defineCodec({
typeId: 'pg/bool@1',
targetTypes: ['bool'],
traits: ['equality', 'boolean'],
encode: (value) => value,
decode: (wire) => wire,
});

const pgJsonbCodec = codec({
const pgJsonbCodec = defineCodec({
typeId: 'pg/jsonb@1',
targetTypes: ['jsonb'],
traits: ['equality'], // equality only; not order-comparable
Expand All @@ -103,7 +118,7 @@ Extension codecs declare traits the same way:

```ts
// pgvector codec — vectors have equality but are not order-comparable or numeric
const pgVectorCodec = codec({
const pgVectorCodec = defineCodec({
typeId: 'pg/vector@1',
targetTypes: ['vector'],
traits: ['equality'],
Expand Down
Loading
Loading