Loading workspace insights... Statistics interval
7 days30 daysLatest CI Pipeline Executions
ee354af4 feat(ai-persistence-drizzle): schema-first ownership, Postgres provider, schema subpaths (#994)
* feat(ai-persistence-drizzle): schema-first ownership, drop shipped migrations
Stop publishing SQL migrations and a default bundled schema from the
drizzle adapter. Apps own DDL via tanstack-ai-drizzle-schema + their
drizzle-kit journal; drizzlePersistence requires an injected schema.
sqlitePersistence keeps local defaults via createDefaultSqliteSchema and
optional runtime CREATE TABLE IF NOT EXISTS bootstrap.
* feat(ai-persistence-drizzle): Postgres provider, schema subpaths, interrupt indexes
- drizzlePersistence(db, { provider: 'sqlite' | 'pg', schema }): one entry,
overload-discriminated so db/provider/schema must agree at compile time,
with a runtime dialect guard (is PgDatabase / BaseSQLiteDatabase) and a
provider-aware schema assertion
- Dialect-neutral contract: TanstackAiTableShapes single source of truth,
projected as TanstackAiSqliteSchema and TanstackAiPgSchema
- Postgres: createDefaultPgSchema (jsonb/bigint), ensurePgTables bootstrap,
pg starter asset via tanstack-ai-drizzle-schema --dialect pg, and a
conformance suite against real Postgres (pglite)
- Schema subpath exports /sqlite-schema and /pg-schema so stock-table users
re-export one line into their drizzle-kit paths instead of copying a file
- Default lookup indexes on interrupts (thread_id, run_id) across defaults,
starters, and the ensure* bootstraps
- Stores stay a single SQLite-typed implementation; the pg pair is re-faced
at one documented seam in drizzlePersistence
- Docs (drizzle/sql-backends/migrations), middleware skill, changeset, and
Cloudflare D1 call site updated
* fix(stack): resolve CI type failures and dts-scan false positive
- ai-persistence: TEXT_MESSAGE_START event literal now carries the required
ag-ui `role` field
- ai-client resume-snapshot tests: construct the joinRun:undefined adapter
without an invalid cast; remove a dead never-typed else-branch assertion
- ts-react-chat: project hydrated history onto an explicit JSON-safe wire
shape (server fns require serializable payloads; UIMessage part metadata /
tool-call input/output are typed unknown/any); default zod-defaulted tool
inputs at the destructure
- docs: mark the router-loader resume snippet as a schematic fence for kiira
- scan-dangling-dts: strip comments so JSDoc @example imports (rewritten to
.js by declaration emit) are not scanned as real imports ecaf2e10 feat(ai-persistence-drizzle): Postgres provider, schema subpaths, interrupt indexes
- drizzlePersistence(db, { provider: 'sqlite' | 'pg', schema }): one entry,
overload-discriminated so db/provider/schema must agree at compile time,
with a runtime dialect guard (is PgDatabase / BaseSQLiteDatabase) and a
provider-aware schema assertion
- Dialect-neutral contract: TanstackAiTableShapes single source of truth,
projected as TanstackAiSqliteSchema and TanstackAiPgSchema
- Postgres: createDefaultPgSchema (jsonb/bigint), ensurePgTables bootstrap,
pg starter asset via tanstack-ai-drizzle-schema --dialect pg, and a
conformance suite against real Postgres (pglite)
- Schema subpath exports /sqlite-schema and /pg-schema so stock-table users
re-export one line into their drizzle-kit paths instead of copying a file
- Default lookup indexes on interrupts (thread_id, run_id) across defaults,
starters, and the ensure* bootstraps
- Stores stay a single SQLite-typed implementation; the pg pair is re-faced
at one documented seam in drizzlePersistence
- Docs (drizzle/sql-backends/migrations), middleware skill, changeset, and
Cloudflare D1 call site updated ecaf2e10 feat(ai-persistence-drizzle): Postgres provider, schema subpaths, interrupt indexes
- drizzlePersistence(db, { provider: 'sqlite' | 'pg', schema }): one entry,
overload-discriminated so db/provider/schema must agree at compile time,
with a runtime dialect guard (is PgDatabase / BaseSQLiteDatabase) and a
provider-aware schema assertion
- Dialect-neutral contract: TanstackAiTableShapes single source of truth,
projected as TanstackAiSqliteSchema and TanstackAiPgSchema
- Postgres: createDefaultPgSchema (jsonb/bigint), ensurePgTables bootstrap,
pg starter asset via tanstack-ai-drizzle-schema --dialect pg, and a
conformance suite against real Postgres (pglite)
- Schema subpath exports /sqlite-schema and /pg-schema so stock-table users
re-export one line into their drizzle-kit paths instead of copying a file
- Default lookup indexes on interrupts (thread_id, run_id) across defaults,
starters, and the ensure* bootstraps
- Stores stay a single SQLite-typed implementation; the pg pair is re-faced
at one documented seam in drizzlePersistence
- Docs (drizzle/sql-backends/migrations), middleware skill, changeset, and
Cloudflare D1 call site updated cc88874e refactor(ai-memory): align MemoryScope to shared Scope (threadId) (#991)
* refactor(ai-memory): align MemoryScope to shared Scope (threadId)
Replace MemoryScope.sessionId with the shared Scope type from @tanstack/ai
so memory and persistence use one conversation key (threadId) plus optional
userId/tenantId. Update adapters, middleware, devtools, docs, and panel/e2e
call sites. Hard cut — package is still 0.x.
Closes #990
* ci: apply automated fixes
* test(ai-memory): harden scope isolation after threadId alignment
Add sameScope/redis/contract isolation coverage, composite DevTools scope
keys, vendor Scope field docs, and the memory-scope-threadid changeset.
* ci: apply automated fixes
* fix(ai-memory): address CodeRabbit scope isolation feedback
Exact-match optional dims in sameScope, tenant-qualify vendor keys, mem0
run_id=threadId, full DevTools Scope identity, panel server-trusted
user/tenant, and custom-adapter tenant_id example.
* ci: apply automated fixes
* docs(ai-memory): fix hindsight bank-key docs consistency
Escape table pipes in adapters.md and align the hindsight skill intro with
the tenant-aware bank format.
* fix(ai-memory): make error event scope optional, not empty
MemoryScopeLite requires threadId when present; memory:error omits scope
when resolve never ran. Drop emptyScope() and DevTools unknown-bucket fakes.
* ci: apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> cc88874e refactor(ai-memory): align MemoryScope to shared Scope (threadId) (#991)
* refactor(ai-memory): align MemoryScope to shared Scope (threadId)
Replace MemoryScope.sessionId with the shared Scope type from @tanstack/ai
so memory and persistence use one conversation key (threadId) plus optional
userId/tenantId. Update adapters, middleware, devtools, docs, and panel/e2e
call sites. Hard cut — package is still 0.x.
Closes #990
* ci: apply automated fixes
* test(ai-memory): harden scope isolation after threadId alignment
Add sameScope/redis/contract isolation coverage, composite DevTools scope
keys, vendor Scope field docs, and the memory-scope-threadid changeset.
* ci: apply automated fixes
* fix(ai-memory): address CodeRabbit scope isolation feedback
Exact-match optional dims in sameScope, tenant-qualify vendor keys, mem0
run_id=threadId, full DevTools Scope identity, panel server-trusted
user/tenant, and custom-adapter tenant_id example.
* ci: apply automated fixes
* docs(ai-memory): fix hindsight bank-key docs consistency
Escape table pipes in adapters.md and align the hindsight skill intro with
the tenant-aware bank format.
* fix(ai-memory): make error event scope optional, not empty
MemoryScopeLite requires threadId when present; memory:error omits scope
when resolve never ran. Drop emptyScope() and DevTools unknown-bucket fakes.
* ci: apply automated fixes
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com> ecaf2e10 feat(ai-persistence-drizzle): Postgres provider, schema subpaths, interrupt indexes
- drizzlePersistence(db, { provider: 'sqlite' | 'pg', schema }): one entry,
overload-discriminated so db/provider/schema must agree at compile time,
with a runtime dialect guard (is PgDatabase / BaseSQLiteDatabase) and a
provider-aware schema assertion
- Dialect-neutral contract: TanstackAiTableShapes single source of truth,
projected as TanstackAiSqliteSchema and TanstackAiPgSchema
- Postgres: createDefaultPgSchema (jsonb/bigint), ensurePgTables bootstrap,
pg starter asset via tanstack-ai-drizzle-schema --dialect pg, and a
conformance suite against real Postgres (pglite)
- Schema subpath exports /sqlite-schema and /pg-schema so stock-table users
re-export one line into their drizzle-kit paths instead of copying a file
- Default lookup indexes on interrupts (thread_id, run_id) across defaults,
starters, and the ensure* bootstraps
- Stores stay a single SQLite-typed implementation; the pg pair is re-faced
at one documented seam in drizzlePersistence
- Docs (drizzle/sql-backends/migrations), middleware skill, changeset, and
Cloudflare D1 call site updated