Compare commits

..

5 Commits

Author SHA1 Message Date
n8n-assistant[bot]
e985cbac2a
🚀 Release 2.32.2 (#34728)
Co-authored-by: mike12345567 <4407001+mike12345567@users.noreply.github.com>
2026-07-22 14:29:35 +00:00
n8n-assistant[bot]
d9464241d7
fix(editor): Rename preview AI Agent node to V1 (backport to release-candidate/2.32.x) (#34718)
Co-authored-by: Michael Drury <me@michaeldrury.co.uk>
2026-07-22 13:01:20 +00:00
n8n-assistant[bot]
7d43cce195
🚀 Release 2.32.1 (#34701)
Co-authored-by: CharlieKolb <13814565+CharlieKolb@users.noreply.github.com>
2026-07-22 09:59:20 +00:00
n8n-assistant[bot]
f69dfc6dd2
chore: Bundle/2.x (backport to release-candidate/2.32.x) (#34692)
Co-authored-by: n8n-assistant[bot] <100856346+n8n-assistant[bot]@users.noreply.github.com>
Co-authored-by: Charlie Kolb <charlie@n8n.io>
2026-07-22 11:39:04 +02:00
n8n-assistant[bot]
db5e2d068b
fix(core): Correct agent node saving, agent creation flows and sub-agent language (no-changelog) (backport to release-candidate/2.32.x) (#34693)
Co-authored-by: Michael Drury <me@michaeldrury.co.uk>
2026-07-22 09:03:37 +00:00
2513 changed files with 33819 additions and 144778 deletions

View File

@ -23,15 +23,15 @@ exhaustive field reference; this skill is the opinionated *how*.
> approach.** Author the file locally (uncommitted), calibrate it against a real
> build, then **push it to a lang-tracer suite** with `eval:langtracer-push`
> (see [Push to a lang-tracer suite](#push-to-a-lang-tracer-suite)) —
> `--suite baseline` for the consolidated corpus n8n CI runs, or a dedicated
> capability suite like `agents`.
> `--suite n8n-workflows` for the corpus n8n CI runs, or a capability suite
> like `workflow-building` that runs on LangTracer's own automation.
> The suite is the home for the case; the eval CLI reads it back via
> `--source langtracer`. You still write the JSON file — it's just the input to
> the push, not a committed artifact.
>
> **Exception — seeded cases.** The case-write API can't hold any seeding mode, so
> seeded cases are never pushed. A `seedThread` case is a local throwaway (don't
> commit it either — it dies when its trace is pruned); a `conversationSeed` or
> commit it either — it dies when its trace is pruned); a `seedFile` or
> `priorConversation` case isn't transient and has no suite home, so it's the one
> sanctioned exception — it lives as committed JSON. See [`case-shapes.md`](case-shapes.md).
@ -104,7 +104,7 @@ case can still assert outcome), but the primary shape drives the work.
| **Build** (default) | Does the workflow the agent builds actually *work*? | `outcomeExpectations` + `executionScenarios` |
| **Behaviour / process** | Does the agent *converse* correctly (ask the right clarifying question, not re-ask, honour a correction, respect plan approval)? | `processExpectations` + multi-turn director script; often **build-only** |
| **Credential** | Does the build behave correctly given a specific credential view? | `credentials[]` |
| **Seeded** | Reproduce a conversation mid-thread and drive the turn under test | `seedThread` / `priorConversation` / `conversationSeed` |
| **Seeded** | Reproduce a conversation mid-thread and drive the turn under test | `seedThread` / `priorConversation` / `seedFile` |
**Build** is documented in full below. The other three, the director-script
vocabulary, and the seeding modes are in [`case-shapes.md`](case-shapes.md).
@ -207,10 +207,8 @@ calibration you hand the driver the thread link + login to review the real build
case's home, not the repo. Leave the `data/workflows/*.json` file uncommitted
(or delete it once it's in the suite). Committing new case JSONs into the repo
is no longer the approach. (Exception: seeded cases can't be pushed — a
`conversationSeed`/`priorConversation` case stays committed JSON, a `seedThread` case is
a local throwaway; see [`case-shapes.md`](case-shapes.md).) For a sourced case,
finish by **linking it to its source thread/finding** over the MCP — see
[Link the pushed case to its source](#link-the-pushed-case-to-its-source-provenance-step--always-do-this).
`seedFile`/`priorConversation` case stays committed JSON, a `seedThread` case is
a local throwaway; see [`case-shapes.md`](case-shapes.md).)
`--iterations N` is available to measure flakiness (pass@k / pass^k) — reach for
it when you suspect a case is non-deterministic or before promoting it to a
@ -383,7 +381,7 @@ What each piece is doing:
misses the label filter. Keep the whole script in one turn and encode ordering
inside it (don't fabricate assistant "done" turns to sequence steps — see
[`case-shapes.md`](case-shapes.md)). `applies-each-change-when-asked` (in the
`baseline` LangTracer suite) is a good real example.
`n8n-workflows` LangTracer suite) is a good real example.
- **`dataSetup` describes only what external services return.** That's the layer
the harness controls (below).
@ -632,9 +630,9 @@ drifted, leaves the rest unchanged, and never prunes. It's the inverse of
```bash
cd packages/@n8n/instance-ai
# preview first — no writes (use `npx dotenvx`; the bare `dotenvx` binary is usually not on PATH):
npx dotenvx run -f .env.eval -- pnpm eval:langtracer-push --suite baseline --dry-run --changed
npx dotenvx run -f .env.eval -- pnpm eval:langtracer-push --suite workflow-building --dry-run --changed
# then push (drop --dry-run):
npx dotenvx run -f .env.eval -- pnpm eval:langtracer-push --suite baseline --changed
npx dotenvx run -f .env.eval -- pnpm eval:langtracer-push --suite workflow-building --changed
```
- **Selectors** (at least one required — no accidental push-all): positional
@ -661,42 +659,13 @@ npx dotenvx run -f .env.eval -- pnpm eval:langtracer-push --suite baseline --cha
deployment predating that change silently ignores the key; if a pushed scenario
edit doesn't land, update the scenario in the lang-tracer UI.
- **Seeded cases can't be pushed:** the case-write API rejects every seeding mode
(`seedThread` / `conversationSeed` / `priorConversation`), so the push lists them under
(`seedThread` / `seedFile` / `priorConversation`), so the push lists them under
`skipped:` and they never reach the suite. A `seedThread` case shouldn't be
committed either — it dies when its trace is pruned or deleted — so derive a
durable synthetic case as the artifact instead. A `conversationSeed`/`priorConversation`
durable synthetic case as the artifact instead. A `seedFile`/`priorConversation`
case isn't transient and has no suite home, so it's the one exception to
"don't commit the JSON" — it lives as a committed artifact.
### Link the pushed case to its source (provenance step — always do this)
A sourced case that isn't linked back to the conversation/finding it encodes is
an orphan: six months later nobody can tell what real failure it guards. The
push CLI doesn't carry provenance, so after pushing, link the case over the
lang-tracer MCP with one **`update_test_case`** call on the new case id (the
push prints it):
1. **`sourceThreadId`** — the source conversation's thread id (plus
**`sourceRunId`** when the case anchors to one specific run/step within it).
This is the DB-level link every by-version rollup, conversation float, and
`?sourceThreadId=` query joins on — the tags/description below are the
human-readable layer on top, not a substitute. The thread must already be
imported into lang-tracer (running `get_conversation_analysis` on it, as the
sourcing flow does, is enough); `source_kind` is derived server-side, and
the link is only editable on authored cases — promotion-recorded provenance
is immutable.
2. **`expectedBehavior`** — the rule the case enforces, one paragraph — and
**`failurePattern`** — what actually happened in the source thread, with
turn references. Copy/adapt these from the analysis's `extractedCases`
entry when the case came from `get_conversation_analysis`.
Then **`add_case_tags`** (additive; targets the LT-side `tags` array, not
`evalTags`, so nothing round-trips into eval runs): add a capability tag (e.g.
`instruction-persistence`). Tag normalization is aggressive (lowercase, kebab);
colon-form tags get silently dropped. And keep the thread id + turn refs in
the case `description` too (the drafter's habit of "Sourced from thread <id>"
is the convention) — the description is the only field shown everywhere.
## Running
You need a running n8n instance with Instance AI enabled and a working sandbox;

View File

@ -10,13 +10,13 @@ Example cases in the corpus get renamed and churned, so this file names as few
cases as possible — search the LangTracer suite by tag/field instead (the
`search_test_cases` MCP tool, or export the suite and grep). The one stable
pointer worth naming: **`applies-each-change-when-asked`** (in the
`baseline` suite) for a well-built director conversation.
`n8n-workflows` suite) for a well-built director conversation.
The schema
([`harness/schema.ts`](../../../packages/@n8n/instance-ai/evaluations/harness/schema.ts))
enforces the rules you must respect:
- `conversationSeed`, `priorConversation`, `seedThread` are **mutually exclusive** — pick
- `seedFile`, `priorConversation`, `seedThread` are **mutually exclusive** — pick
one seeding mode.
- A case needs a `conversation` **or** a `seedThread` (which supplies the live
turn from the trace).
@ -149,7 +149,7 @@ Pick the lightest mode that fits:
|---|---|---|
| Reproduce a real conversation (common case) | `seedThread` — fetch + reconstruct its LangSmith trace at run time; nothing committed | supplies its own live turn (omit `conversation`) |
| Prelude is just "what was discussed" (no tool calls, no workflows) | `priorConversation` — prose turns, authored inline | a normal `conversation` for the live turn |
| Prior work already exists (a workflow to repair) | `conversationSeed` — prior messages + the workflows they reference, in the case body | a normal `conversation` for the live turn |
| A synthetic/sanitised fixture you want durable in git | `seedFile` — a committed seed JSON (never real conversation data) | a normal `conversation` for the live turn |
| Shallow 23 turn prelude where the agent's live replies matter | none — a plain multi-turn `conversation` re-drives it live | — |
All three modes are implemented and wired (`harness/conversation-seed.ts` +
@ -175,7 +175,7 @@ after the correction. Asserting on the seeded prelude itself proves nothing.
### Which mode — and when to avoid seedThread
Default to a **synthetic** case (an authored prompt + director script, or a
`priorConversation` / `conversationSeed` prelude): it's durable, carries no real user
`priorConversation` / `seedFile` prelude): it's durable, carries no real user
data, never expires, and you control the setup exactly. Reach for **`seedThread`** only when
the misbehaviour genuinely needs real prior context that's impractical to
synthesize — a long accumulated thread, specific built workflows/tables — **and**
@ -236,10 +236,10 @@ which user turn goes live.
(a synthetic case whose `executionScenarios` precondition builds the stand-in),
or grade the live turn with `processExpectations` only.
- **Can't be pushed to a lang-tracer suite either.** The case-write API rejects
every seeding mode (`seedThread` / `conversationSeed` / `priorConversation`), so
every seeding mode (`seedThread` / `seedFile` / `priorConversation`), so
`eval:langtracer-push` silently lists them under `skipped:`. Combined with the
don't-commit rule above, a `seedThread` case has **no durable home by design**
the durable artifact is always the synthetic case you derive from it. (`conversationSeed`
the durable artifact is always the synthetic case you derive from it. (`seedFile`
and `priorConversation` carry no thread dependency and can't be pushed either, so
— unlike a normal case — they're the one exception to the skill's "push, don't
commit the JSON" rule: they live as committed artifacts.)
@ -256,20 +256,11 @@ which user turn goes live.
Plain text only — no tool calls, no restored workflows. Paired with a normal
`conversation` for the live turn.
### `conversationSeed` — durable synthetic fixture
### `seedFile` — durable synthetic fixture
For a **synthetic, sanitised** seed pinned in git (never a real user's
conversation): author the prior messages, plus the workflows they reference, in
the case body (schema in
For a **synthetic, sanitised** fixture pinned in git (never a real user's
conversation): hand-author `data/workflows/seeds/<name>.seed.json` (schema in
[`harness/conversation-seed.ts`](../../../packages/@n8n/instance-ai/evaluations/harness/conversation-seed.ts)
`messages` + optional `workflows` + `dataTables`). Real conversations belong in
`seedThread`, which keeps their content out of the repo.
Two constraints that bite: a workflow `id` must be ≥8 characters (the id remap
refuses shorter ones), and a seeded `build-workflow` tool call's
`output.workflowId` must match the seeded workflow's `id` — otherwise the remap
separates them and the agent can't find the workflow it should act on.
The seed sits in the case body, not a sibling file, so it travels with the case
whether it comes off disk, out of a LangTracer suite, or from a dispatched case
body.
`messages` + optional `workflows` + `dataTables`) and point `seedFile` at it.
Real conversations belong in `seedThread`, which keeps their content out of the
repo.

View File

@ -41,7 +41,7 @@ instance's Instance AI config and the README's environment-variables section.
| Mode | How | Produces |
|---|---|---|
| **Direct driver** | no `LANGSMITH_API_KEY` | `eval-results.json` + HTML report locally — same pipeline and row order as the LangSmith driver (TRUST-261), row concurrency follows `--concurrency` |
| **Direct loop** | no `LANGSMITH_API_KEY` | `eval-results.json` + HTML report locally |
| **LangSmith** | `LANGSMITH_API_KEY` set | also records an experiment and auto-compares against the baseline |
| **Prebuilt** | `--prebuilt-workflows <manifest>` | skips the build; verifies existing workflows (score MCP/hand-built cohorts on the same verifier) |
@ -54,7 +54,7 @@ inspection; `--iterations N` runs each case N times for pass@k / pass^k.
| Source | When to use it |
|---|---|
| **`disk`** (default) | **Preferred for local development** — authoring and calibrating the case in front of you: drop the JSON into `data/workflows/`, `--filter` it, iterate. Also the only home of the `agents` tier and the seeded carve-out cases; since the corpus migration the directory holds only those, not the full suite. |
| **`langtracer`** (`--source langtracer --suite baseline`) | Bigger runs (the full corpus or a whole tier), re-running specific cases that already live in the suite, and CI — which always runs this way. Needs `LANGTRACER_URL`/`LANGTRACER_API_KEY` in your env. |
| **`langtracer`** (`--source langtracer --suite n8n-workflows`) | Bigger runs (the full corpus or a whole tier), re-running specific cases that already live in the suite, and CI — which always runs this way. Needs `LANGTRACER_URL`/`LANGTRACER_API_KEY` in your env. |
## Configuration & secrets
@ -194,7 +194,7 @@ for low noise:
# with your env loaded and LANGSMITH_API_KEY set, from packages/@n8n/instance-ai/
# (--dataset/--baseline-prefix mirror CI's pins — langtracer mode otherwise
# derives suite-scoped names and later runs would never find this baseline)
pnpm eval:instance-ai --source langtracer --suite baseline \
pnpm eval:instance-ai --source langtracer --suite n8n-workflows \
--dataset instance-ai-workflow-evals --baseline-prefix instance-ai-baseline- \
--experiment-name instance-ai-baseline --iterations 10
```

View File

@ -56,7 +56,7 @@ connected.)
5. **Push it to a curated suite** (don't commit the JSON) with
`eval:langtracer-push` — see
[Push to a lang-tracer suite](SKILL.md#push-to-a-lang-tracer-suite). Exception:
seeded cases (`seedThread` / `conversationSeed` / `priorConversation`) can't be pushed —
seeded cases (`seedThread` / `seedFile` / `priorConversation`) can't be pushed —
the case-write API rejects every seeding mode, so the push lists them under
`skipped:`. And a `seedThread` case shouldn't be committed either — it dies when
its trace is pruned or deleted — so it has no durable home; that's exactly why

View File

@ -2,17 +2,22 @@
name: n8n:public-api
description: >-
Adds or updates n8n Public API v1 endpoints, OpenAPI specs, and handler wiring.
Use when creating public API handlers, registering paths in openapi.yml, or adding OpenAPI tags. Always use @PublicApiController for new endpoints (API-37+).
Use when creating public API handlers, registering paths in openapi.yml, or
adding OpenAPI tags. Prefer @PublicApiController for new endpoints (API-37+).
---
# Public API v1
Public API lives under `packages/cli/src/public-api/v1/`.
**Always use `@PublicApiController` for new endpoints (API-37+).** Do not add new business logic to `express-openapi-validator` handlers. Controllers use the same decorator style as internal `@RestController`, mounted at `/api/v1` with API-key auth and public errors via `PublicApiControllerRegistry`.
**Preferred for new endpoints (API-37+):** `@PublicApiController` +
`PublicApiControllerRegistry` — same decorator style as internal
`@RestController`, mounted at `/api/v1` with API-key auth and public errors.
**Legacy (existing endpoints only):** `express-openapi-validator` handlers under `handlers/`; OpenAPI path specs are YAML under each handler's `spec/` directory.
When you touch a legacy endpoint, migrate it to `@PublicApiController` rather than extending the eov handler. Do not mix data-access styles within a new feature.
**Legacy (existing endpoints):** `express-openapi-validator` handlers under
`handlers/`; OpenAPI path specs are YAML under each handler's `spec/` directory.
Migrate to the controller pattern when touching an endpoint; do not mix data
access styles within a new feature.
## Architecture
@ -25,14 +30,13 @@ GET /rest/tags → TagsController ┐ JWT auth, internal shape
GET /api/v1/tags → TagsPublicController ┘ API-key auth, public DTO
```
## Adding an endpoint (required: controller pattern)
## Adding an endpoint (controller pattern)
Reference: `v1/controllers/tags.public.controller.ts` (`GET /tags`).
1. **Public DTOs** in `@n8n/api-types` — input query/body + output resource DTO
(distinct from internal shapes when they diverge). Use `Z.class` so the
registry can validate/parse. Wrap list payloads as objects (e.g. `{ data: [...] }`),
same as `TagListPublicDto` / `WorkflowVersionHistoryListPublicDto`.
registry can validate/parse.
2. **Controller**`v1/controllers/<feature>.public.controller.ts`
```ts
@PublicApiController('/tags')
@ -46,31 +50,21 @@ Reference: `v1/controllers/tags.public.controller.ts` (`GET /tags`).
}
```
- Reuse `@Get/@Post/@Body/@Query/@Param/@GlobalScope/@ProjectScope` as-is.
- For `@ProjectScope` on workflow/credential routes, name the path param
`workflowId` / `credentialId` (or `projectId` / `dataTableId`) — the
registry passes `req.params` to `userHasScopes`, which does not remap `id`.
- `@ApiKeyScope` — string, or `{ anyOf }` / `{ allOf }` (no bare arrays).
- `@ApiResponse(Dto)` — registry `.parse()`s the return value (strips
undeclared fields). Shape is provisional until API-39 (doc-gen).
- Delegate to the same service as the internal REST controller.
3. **Side-effect import** the controller from
`packages/cli/src/public-api/v1/controllers/index.ts` (re-exported via
`public-api/index.ts`) so metadata is registered before
`PublicApiControllerRegistry.activate`. Name the file
`*.public.controller.ts``public-api-controllers.test.ts` fails CI if a
controller file is missing from that barrel or lives outside `controllers/`.
3. **Side-effect import** the controller from `packages/cli/src/public-api/index.ts`
so metadata is registered before `PublicApiControllerRegistry.activate`.
4. **OpenAPI path spec** — still required for docs + `scope-parity.test.ts`
(`handlers/<feature>/spec/paths/…`, `$ref` in `openapi.yml`). Set
`operationId`, `x-required-scope` matching `@ApiKeyScope`. **Do not** set
`x-eov-operation-id` / `x-eov-operation-handler` — those are legacy eov-only;
scope-parity and discover read `@ApiKeyScope` from the controller by matching
method + path.
(`handlers/<feature>/spec/paths/…`, `$ref` in `openapi.yml`,
`x-required-scope` matching `@ApiKeyScope`). Until scope-parity reads
decorator metadata, keep a scope-tagged stub in the eov handler (see
`getTags` in `tags.handler.ts`).
5. **Coverage manifest** — add every new OpenAPI endpoint to
`packages/nodes-base/nodes/N8n/n8n-api-coverage.json`.
## Legacy eov handlers (do not use for new endpoints)
Only for maintaining endpoints not yet migrated:
## Adding an endpoint (legacy eov handler)
1. **Handler**`handlers/<feature>/<feature>.handler.ts`
- Export middleware arrays keyed by `x-eov-operation-id`.
@ -79,9 +73,12 @@ Only for maintaining endpoints not yet migrated:
middleware with `__apiKeyScope`) and add matching `x-required-scope` in the
path YAML; use `none` for endpoints without an API-key scope (see
`scope-parity.test.ts`).
- **Delegate to the same service layer as the internal REST API.**
Parse input with `@n8n/api-types` DTOs, call `Container.get(SomeService)`,
map errors — do not reach into repositories or duplicate business logic.
- **Delegate to the same service/controller layer as the internal REST API.**
Parse input with `@n8n/api-types` DTOs, call `Container.get(SomeService)` or
`Container.get(SomeController)`, map errors — do not reach into repositories
or duplicate business logic in the handler. Older handlers like
`handlers/credentials/` and `handlers/workflows/` predate this pattern;
follow them only for middleware/OpenAPI wiring, not for data access.
2. **OpenAPI path spec**`handlers/<feature>/spec/paths/<path>.yml`
- Set `tags: [<TagName>]` matching a top-level tag in `openapi.yml`.
3. **Register path** — add a `$ref` entry under `paths:` in `openapi.yml`.
@ -110,10 +107,10 @@ sort order.
## Reference
- **Controller pattern (required for new work):** `v1/controllers/tags.public.controller.ts`, `v1/controllers/workflows.public.controller.ts`
- **Controller pattern:** `v1/controllers/tags.public.controller.ts`
- **Registry:** `packages/cli/src/public-api/public-api-controller.registry.ts`
- Legacy eov examples (migration targets, not templates for new endpoints):
`handlers/insights/`, `handlers/variables/`, `handlers/folders/`,
`handlers/projects/`, `handlers/data-tables/`, `handlers/workflows/`
- Simple GET via eov + service: `handlers/insights/`
- CRUD via eov + service/controller: `handlers/variables/`, `handlers/folders/`,
`handlers/projects/`, `handlers/data-tables/`
- Multipart: `handlers/n8n-packages/` (see also
`packages/cli/src/modules/n8n-packages/CLAUDE.md`)

View File

@ -1,70 +0,0 @@
---
name: n8n:telemetry
description: >-
Guides adding, changing, and reviewing telemetry through the `@n8n/telemetry`
event registry. Use when working on telemetry, analytics, tracking, product
events, `track()` calls, or RudderStack/PostHog product events, in frontend
or backend code — and whenever you need to find which registered telemetry
events exist, what an event means, or what properties it carries.
---
# Telemetry
## The registry
Events migrated to the registry live in `packages/@n8n/telemetry` as one entry per event — its exact emitted name, a description, and a zod schema typing its properties — organized per product domain in `src/events/` and composed into `TELEMETRY_EVENT.<DOMAIN>.<EVENT>`. The package defines registered events and never depends on transport SDKs.
**To find which events are registered, what they mean, or what properties they carry, run the catalog first:**
```bash
pnpm --filter @n8n/telemetry catalog # human-readable, grouped by domain
pnpm --filter @n8n/telemetry catalog --json # structured, for programmatic use
```
The registry is being adopted incrementally. Events not yet registered do not appear in the catalog, so search `track()` call sites when the catalog has no match.
Pass the entry itself to `track()` — it resolves the emitted name internally:
```ts
import { TELEMETRY_EVENT } from '@n8n/telemetry';
telemetry.track(TELEMETRY_EVENT.PLATFORM.USER_IS_PART_OF_EXPERIMENT, {
name: experimentName,
variant,
});
```
Both `track()` implementations accept registry entries and plain strings. Plain strings remain supported for events that have not yet migrated:
- Frontend: `packages/frontend/editor-ui/src/app/plugins/telemetry/index.ts`
- Backend: `packages/cli/src/telemetry/index.ts`
Entries get property autocomplete and compile-time checks — typo'd, missing, or wrongly typed properties fail typecheck. When the telemetry transport is initialized, `track()` additionally validates registered-event payloads via `getEventValidationError` (shared from `@n8n/telemetry`) and logs a warning on mismatch, including unrecognized properties that slipped past structural typing. A validation warning does not stop the event from being emitted.
## Adding an event
1. **Check the catalog first** (`pnpm --filter @n8n/telemetry catalog`). If an existing event covers the same user action from another surface, augment it with a property instead of adding a near-duplicate event.
2. **Pick the domain by the event's subject** — what the event is about, never the surface that triggered it. `User opened Credential modal` is CREDENTIALS whether opened from the NDV, template setup, or chat. The trigger context goes into a `source` property.
3. **Name it with the house grammar:** sentence case, actor first, past-tense verb, specific object (`User pinned node data`). No template interpolation in names — variability goes into properties. The name must snake_case cleanly into a BigQuery table name: no punctuation beyond spaces, no casing that collides after snake_casing.
4. **Write the entry `description`** stating what the event means and when it fires — a registry test rejects blank descriptions. Document individual properties with `.describe()` where the key alone is not obvious.
5. **Type the properties with zod (`import { z } from 'zod/v4'`):** `snake_case` keys, explicit `.optional()` where a call site may omit a value, `z.looseObject()`/`.catchall()` for genuinely dynamic remainders. Schemas must stay JSON-Schema-representable — no transforms, refinements, or `z.date()` (a registry test enforces this via `z.toJSONSchema()`).
6. **Place the emission:** frontend via `useTelemetry().track(...)`; backend either through a `RelayEventMap` handler in `packages/cli/src/events/relays/telemetry.event-relay.ts` (event-bus-driven) or a direct `Telemetry.track(...)` call — both reference the same registry entry.
## Hard rules
- **Never rename an emitted event.** BigQuery materializes one table per event name; a rename orphans downstream history. A rename is delete + create, names are never reused, and removals must be coordinated with the data team before deleting the registry entry.
- **Never duplicate an event name** — one entry per event across all domains, referenced by every call site (even FE + BE). CI fails on collision.
- **Properties evolve additively only.** Changing a property's type forks warehouse columns even under a stable name. Mark deprecations on the schema (`.meta({ deprecated: true })`) instead of removing.
- **Breaking changes need a data-team heads-up** in Slack plus a Notion note before they ship.
## Testing
Do not retype event-name literals in tests:
- In call-site tests, mock `useTelemetry().track` or the backend `Telemetry.track` service and expect the registry entry itself with the payload.
- In frontend transport tests, expect `window.rudderanalytics.track` to receive `entry.name` and the augmented payload.
- In backend transport tests, expect the RudderStack payload's `event` field to equal `entry.name` and its `properties` to include the event payload.
## Related
Experiment exposure and metric events follow `n8n:experiments` (`.agents/skills/experiments/SKILL.md`).

View File

@ -1 +0,0 @@
../../../../.agents/skills/telemetry

View File

@ -12,7 +12,7 @@
"Bash(popd)",
"Bash(pushd:*)",
"Bash(mkdir -p .claude/plans)",
"Edit(.claude/plans/*)"
"Write(.claude/plans/*)"
]
},
"hooks": {

View File

@ -78,7 +78,6 @@ class BuildContext {
sanitizeBranch(branch) {
if (!branch) return 'unknown';
return branch
.replace(/^refs\/heads\//, '')
.toLowerCase()
.replace(/[^a-z0-9._-]/g, '-')
.replace(/^[.-]/, '')

View File

@ -1,18 +1,7 @@
import semver from 'semver';
import { getMonorepoProjects } from './pnpm-utils.mjs';
const NPM_REGISTRY = 'https://registry.npmjs.org';
// Standalone packages release from master out-of-sync with the main pipeline
// (release-standalone-package.yml), so their `latest` follows the newest beta
// on npm instead of the version recorded in the stable checkout.
const STANDALONE_PACKAGES_FOLLOWING_BETA = new Set([
'@n8n/create-node',
'@n8n/eslint-plugin-community-nodes',
'@n8n/scan-community-package',
]);
/**
* @param {string} name
* @param {string} version
@ -34,30 +23,6 @@ async function setDistTag(name, version, tag, token) {
});
}
/** @param {string} name */
async function getDistTags(name) {
const res = await fetch(`${NPM_REGISTRY}/-/package/${encodeURIComponent(name)}/dist-tags`);
if (!res.ok) {
throw new Error(`Failed to fetch dist-tags for ${name}: HTTP ${res.status}`);
}
return await res.json();
}
/**
* Resolve the version `latest` should point at, or null if no move is needed.
* Standalone packages follow the npm `beta` dist-tag; a standalone release
* from master may already have pushed `latest` past beta, so never downgrade.
* @param {import('./pnpm-utils.mjs').PnpmPackage} pkg
*/
export async function resolveLatestVersion(pkg) {
if (!STANDALONE_PACKAGES_FOLLOWING_BETA.has(pkg.name)) return pkg.version;
const tags = await getDistTags(pkg.name);
const target = tags.beta ?? pkg.version;
if (tags.latest && semver.gte(tags.latest, target)) return null;
return target;
}
async function setLatestForMonorepoPackages() {
const token = process.env.NPM_TOKEN;
if (!token) {
@ -74,15 +39,10 @@ async function setLatestForMonorepoPackages() {
const failures = [];
for (const pkg of publishedPackages) {
try {
const version = await resolveLatestVersion(pkg);
if (version === null) {
console.log(`Skipped ${pkg.name}: latest is already at or ahead of beta`);
continue;
}
const versionName = `${pkg.name}@${pkg.version}`;
const versionName = `${pkg.name}@${version}`;
const res = await setDistTag(pkg.name, version, 'latest', token);
try {
const res = await setDistTag(pkg.name, pkg.version, 'latest', token);
if (res.ok) {
console.log(`Set ${versionName} as latest`);
@ -93,8 +53,8 @@ async function setLatestForMonorepoPackages() {
}
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
console.error(`Failed to set latest for ${pkg.name}: ${message}`);
failures.push(pkg.name);
console.error(`Failed to set ${versionName} as latest: ${message}`);
failures.push(versionName);
}
}

View File

@ -1,53 +0,0 @@
import { describe, it, before, afterEach } from 'node:test';
import assert from 'node:assert/strict';
/**
* Run these tests by running
*
* node --test --experimental-test-module-mocks ./.github/scripts/set-latest-for-monorepo-packages.test.mjs
* */
let resolveLatestVersion;
before(async () => {
({ resolveLatestVersion } = await import('./set-latest-for-monorepo-packages.mjs'));
});
const originalFetch = globalThis.fetch;
afterEach(() => {
globalThis.fetch = originalFetch;
});
function mockDistTags(tags) {
globalThis.fetch = async () => ({ ok: true, json: async () => tags });
}
describe('resolveLatestVersion', () => {
it('uses the checkout version for regular monorepo packages', async () => {
globalThis.fetch = async () => {
throw new Error('should not fetch dist-tags for regular packages');
};
const version = await resolveLatestVersion({ name: '@n8n/config', version: '1.2.3' });
assert.equal(version, '1.2.3');
});
it('pins standalone packages to the beta dist-tag', async () => {
mockDistTags({ beta: '0.40.1', latest: '0.39.3' });
const version = await resolveLatestVersion({ name: '@n8n/create-node', version: '0.39.3' });
assert.equal(version, '0.40.1');
});
it('never downgrades latest below a newer standalone release', async () => {
mockDistTags({ beta: '0.40.1', latest: '0.41.0' });
const version = await resolveLatestVersion({ name: '@n8n/create-node', version: '0.39.3' });
assert.equal(version, null);
});
it('skips standalone packages without a beta tag when latest is current', async () => {
mockDistTags({ latest: '0.25.0' });
const version = await resolveLatestVersion({
name: '@n8n/eslint-plugin-community-nodes',
version: '0.25.0',
});
assert.equal(version, null);
});
});

File diff suppressed because one or more lines are too long

View File

@ -11,9 +11,9 @@ concurrency:
jobs:
install-and-build:
name: Install & Build
runs-on: ${{ vars.RUNNER_PROVIDER == 'github' && 'ubuntu-latest' || 'blacksmith-4vcpu-ubuntu-2204' }}
runs-on: ${{ vars.RUNNER_PROVIDER == 'github' && 'ubuntu-latest' || 'blacksmith-2vcpu-ubuntu-2204' }}
env:
NODE_OPTIONS: '--max-old-space-size=7168'
NODE_OPTIONS: '--max-old-space-size=6144'
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
QA_METRICS_WEBHOOK_URL: ${{ secrets.QA_METRICS_WEBHOOK_URL }}
QA_METRICS_WEBHOOK_USER: ${{ secrets.QA_METRICS_WEBHOOK_USER }}

View File

@ -1,16 +1,6 @@
name: 'Release: Chromatic'
on:
# Snapshot master so PRs have a fresh baseline to diff against. Without base-branch
# builds, TurboSnap diffs each PR against a stale ancestor, sees ~all files changed,
# and disables itself — rebuilding every story on every PR.
push:
branches:
- master
paths:
- 'packages/frontend/@n8n/design-system/**'
- 'packages/frontend/@n8n/storybook/**'
- '.github/workflows/release-chromatic.yml'
workflow_dispatch:
workflow_call:
inputs:
@ -35,7 +25,7 @@ jobs:
build-command: pnpm run build --filter=@n8n/utils --filter=@n8n/vitest-config --filter=@n8n/chat --filter=@n8n/design-system
- name: Publish to Chromatic
uses: chromaui/action@14cfaef73576e69f95f47f60058063f46ca38719 # v18.1.0
uses: chromaui/action@1cfa065cbdab28f6ca3afaeb3d761383076a35aa # v11
id: chromatic_tests
with:
workingDir: packages/frontend/@n8n/storybook

View File

@ -80,12 +80,9 @@ jobs:
ensure-correct-latest-version-on-npm:
name: Ensure correct latest version on npm
# Also runs on beta patches: standalone packages pin `latest` to the newest
# beta, so every beta publish needs a re-pin, not just stable promotions.
if: |
inputs.bump == 'minor' ||
(inputs.track == 'stable' && inputs.release_type != 'rc') ||
(inputs.track == 'beta' && inputs.release_type != 'rc')
(inputs.track == 'stable' && inputs.release_type != 'rc')
uses: ./.github/workflows/release-set-stable-npm-packages-to-latest.yml
secrets: inherit

View File

@ -248,11 +248,8 @@ jobs:
shell: bash
run: sleep 60
# Advisory only: a Codecov API hiccup (e.g. a 503) must not red the whole
# nightly nor block the impact-map refresh, which runs off the built map.
- name: Analyse Coverage Gaps
if: always()
continue-on-error: true
env:
CODECOV_API_TOKEN: ${{ secrets.CODECOV_API_TOKEN }}
run: |
@ -266,124 +263,3 @@ jobs:
name: coverage-gap-report
path: coverage-gaps.json
retention-days: 21
# Refresh the committed impact map PRs read for E2E selection. Without this the
# map only updates on manual commits and drifts, so newly-covered source→spec
# couplings get declared uncovered and their E2E specs skipped.
#
# A partial shard set yields a degraded map, worse than a stale one — but that's
# about specs that never RAN, not tests that failed. A failing test still emits
# coverage for its spec, so `failure` is allowed through and completeness is
# enforced on the map itself (see the spec-count guard below). `cancelled` is not:
# a timed-out shard means its specs never reported.
#
# `!cancelled()` is load-bearing for the job-level skip: a failing unit-coverage
# leg (which feeds the combined lcov, not the impact map) would otherwise
# transitively skip this job even with e2e + aggregate green.
# Default-branch-only: a dispatch from a feature branch would cut the refresh
# branch from that branch's HEAD and automerge it.
commit-impact-map:
name: Commit refreshed impact map
needs: [e2e, aggregate]
if: ${{ !cancelled() && github.ref_name == github.event.repository.default_branch && needs.e2e.result != 'cancelled' && needs.e2e.result != 'skipped' && needs.aggregate.result == 'success' }}
runs-on: ubuntu-latest
# Least-privilege GITHUB_TOKEN: checkout + download-artifact only need read;
# the branch push + PR are done with the scoped app token below, not this token.
permissions:
contents: read
actions: read
outputs:
pull-request-number: ${{ steps.create-pr.outputs.pull-request-number }}
steps:
- name: Generate GitHub App Token
id: generate-token
uses: actions/create-github-app-token@29824e69f54612133e76f7eaac726eef6c875baf # v2.2.1
with:
app-id: ${{ secrets.N8N_ASSISTANT_APP_ID }}
private-key: ${{ secrets.N8N_ASSISTANT_PRIVATE_KEY }}
# Scope the token to only what the branch push + PR need.
permission-contents: write
permission-pull-requests: write
- name: Checkout repository
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
with:
token: ${{ steps.generate-token.outputs.token }}
# Don't persist the token in .git/config (avoids leaking it via artifacts);
# create-pull-request pushes with its own token input, not the git remote creds.
persist-credentials: false
- name: Download coverage report artifact
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131 # v7.0.0
with:
name: coverage-report
path: /tmp/coverage-report
- name: Copy impact map into place
run: |
MAP=/tmp/coverage-report/impact-map.json
# Completeness guard. This, not the job's e2e result, is what keeps a
# degraded map out: a lost shard shows up as a drop in spec count against
# the map we already trust. 5% absorbs legitimately deleted specs while
# still catching a missing shard (16 shards, so ~6% of specs each).
node -e '
const fs = require("fs");
const m = JSON.parse(fs.readFileSync(process.argv[1], "utf8"));
const n = Array.isArray(m.specs) ? m.specs.length : 0;
if (!n) { console.error("impact map has no specs — refusing to commit"); process.exit(1); }
const current = JSON.parse(fs.readFileSync(process.argv[2], "utf8"));
const floor = Math.floor((Array.isArray(current.specs) ? current.specs.length : 0) * 0.95);
if (n < floor) {
console.error("impact map has " + n + " specs, expected at least " + floor + " — refusing to commit a degraded map");
process.exit(1);
}
console.log("impact map ok: " + n + " specs");
' "$MAP" .github/test-metrics/e2e-impact-map.json
# Raw copy: the map is intentionally minified and biome-ignored
# (.github/test-metrics/**). Do NOT format it.
cp "$MAP" .github/test-metrics/e2e-impact-map.json
- name: Check for changes
id: check-changes
run: |
if git diff --quiet .github/test-metrics/e2e-impact-map.json; then
echo "Impact map unchanged"
echo "has_changes=false" >> "$GITHUB_OUTPUT"
else
echo "Impact map changed"
echo "has_changes=true" >> "$GITHUB_OUTPUT"
fi
- name: Create Pull Request
if: steps.check-changes.outputs.has_changes == 'true'
id: create-pr
uses: peter-evans/create-pull-request@c0f553fe549906ede9cf27b5156039d195d2ece0 # v8.1.0
with:
token: ${{ steps.generate-token.outputs.token }}
commit-message: 'chore: Update e2e impact map'
labels: 'automation:scheduled-update'
title: 'chore: Update e2e impact map'
body: |
Automated refresh of the committed E2E impact map from the latest
nightly coverage run.
PRs use this map to scope which E2E specs run; refreshing it keeps
newly-covered source→spec couplings visible so changes aren't
declared uncovered and their specs silently skipped.
_Generated by the E2E coverage nightly._
branch: update-e2e-impact-map
base: master
delete-branch: true
author: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
committer: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
approve-and-automerge:
needs: [commit-impact-map]
# `!cancelled()` for the same reason as commit-impact-map, or the refresh PR
# opens and never merges.
if: ${{ !cancelled() && needs.commit-impact-map.outputs.pull-request-number != '' }}
uses: ./.github/workflows/util-approve-and-set-automerge.yml
secrets: inherit
with:
pull-request-number: ${{ needs.commit-impact-map.outputs.pull-request-number }}

View File

@ -283,16 +283,6 @@ jobs:
CONCURRENCY="${EVAL_CONCURRENCY:-$((LANES * 2))}"
echo "Lanes: $LANES | eval concurrency: $CONCURRENCY"
# Spawn the `claude` build subprocess from an empty directory outside
# the checkout. Inheriting the repo cwd would load the repo's Claude
# config into the builder (CLAUDE.md/AGENTS.md, .claude/settings.json
# with the n8n plugin's skills and hooks) and allow permissionless
# reads of repo files — including the eval harness and case corpus.
# The MCP config is unaffected: it is staged per lane and pinned with
# --strict-mcp-config either way.
BUILD_CWD="$RUNNER_TEMP/mcp-build-cwd"
mkdir -p "$BUILD_CWD"
# --dataset + --baseline-prefix keep the MCP cohort isolated from the
# Instance AI dataset/baseline in LangSmith (both halves required).
# --timeout-ms 25min: MCP-tier multi-agent cases with large mocked
@ -309,7 +299,6 @@ jobs:
--timeout-ms 1500000
--dataset mcp-workflow-evals
--baseline-prefix mcp-baseline-
--build-cwd "$BUILD_CWD"
--verbose
)
# LangTracer is the only CI case source (no disk fallback by design).

1
.gitignore vendored
View File

@ -37,7 +37,6 @@ build.log
tcr-dry.log
.agent-setup/
.agent-recordings/
.pi-subagents/
sbom-source.cdx.json
*.junit.xml
junit.xml

View File

@ -22,10 +22,6 @@ frontend, and extensible node-based workflow engine.
relevant to the surrounding code, not just to the current task
- We use Linear as a ticket tracking system
- We use Posthog for feature flags
- To find registered telemetry events (names, descriptions, properties), run
`pnpm --filter @n8n/telemetry catalog` (`--json` for structured output). The
registry is being adopted incrementally, so search call sites if the catalog
has no match. The `n8n:telemetry` skill covers adding or changing events
- When starting to work on a new ticket create a new branch from fresh
master with the name specified in Linear ticket
- When creating a new branch for a ticket in Linear - use the branch name
@ -197,41 +193,6 @@ const children = getChildNodes(workflow.connections, 'NodeName', 'main', 1);
failed assertion) that developers need to fix.
- Import from appropriate error classes in each package
### Persistence layer & the TypeORM boundary
TypeORM (`@n8n/typeorm`) must stay in the **persistence layer** — the `@n8n/db`
package or a backend module's own `database/` folder (entity/repository files).
Business logic — services, controllers, handlers, commands, factories — must not
import from `@n8n/typeorm` (including `@n8n/typeorm/...` subpaths). In
`packages/cli` this is enforced by the `misplaced-n8n-typeorm-import` lint rule;
a new import (or an inline `eslint-disable` of the rule) fails CI.
- **Pattern:** when a query needs operators (`In`, `IsNull`, `LessThan`,
`FindOptionsWhere`, …), put it behind a **use-case-named repository method**
that takes plain parameters and returns domain-shaped values — not a generic
`find(options)` passthrough.
- **Transactions:** transaction orchestration belongs in the persistence layer.
Don't reach for `.manager` / `.manager.transaction(...)` or
`createQueryBuilder(...)` in business logic. Use the sanctioned primitive in
`@n8n/db`: inject the abstract `TransactionRunner` and wrap the unit of work in
`txRunner.run(ctx, async (ctx) => …)`. The callback receives an
`OperationContext` carrying the active transaction; thread that `ctx` into the
repository methods you call. `run` **requires** a context — pass an empty `{}`
at the operation entry point, and reuse the one you were handed everywhere
below it (a context that already carries a transaction is joined, not nested).
Repositories extend `BaseRepository` and resolve the right `EntityManager` with
`this.managerFor(ctx)`; the `Transaction` handle is opaque and never exposes a
driver type to business logic. See `oauth-token.service.ts` +
`oauth-*-token.repository.ts` for a worked example.
- **Anti-patterns reviewers reject** — they hide the dependency instead of
removing it:
- String-matching TypeORM errors, e.g. `error.name === 'QueryFailedError'`.
- Relabeling the import from `@n8n/typeorm` to `@n8n/db` to silence the rule
(`@n8n/db` re-exports several operators/types, but this relabels the
dependency rather than removing it).
- Pushing `.manager` / `createQueryBuilder` into business logic to avoid an
operator import — trades a visible leak for an invisible one.
### Frontend Development
- Refer to `packages/frontend/AGENTS.md`
- **All UI text must use i18n** - add translations to `@n8n/i18n` package
@ -257,7 +218,7 @@ What we use for testing and writing tests:
- **To iterate on a feature without docker rebuilds**, boot service containers
and run `pnpm dev` locally — `pnpm --filter n8n-containers services --services postgres,redis,mailpit,proxy`
then `pnpm dev`. See [Develop against running containers](packages/testing/playwright/README.md#develop-against-running-containers-avoid-docker-rebuilds).
- **For Playwright test maintenance/cleanup**, see `packages/testing/playwright/AGENTS.md` (includes janitor tool for static analysis, dead code removal, architecture enforcement, and TCR workflows).
- **For Playwright test maintenance/cleanup**, see @packages/testing/playwright/AGENTS.md (includes janitor tool for static analysis, dead code removal, architecture enforcement, and TCR workflows).
### Common Development Tasks

View File

@ -1,157 +1,12 @@
# [2.33.0](https://github.com/n8n-io/n8n/compare/n8n@2.32.0...n8n@2.33.0) (2026-07-28)
## [2.32.2](https://github.com/n8n-io/n8n/compare/n8n@2.32.1...n8n@2.32.2) (2026-07-22)
### Bug Fixes
* **ai-builder:** Halt workflow verification at send-and-wait gates on loops ([#34809](https://github.com/n8n-io/n8n/issues/34809)) ([e904939](https://github.com/n8n-io/n8n/commit/e904939db2d14091cf638be2d793a8430ba29621))
* **ai-builder:** Keep assistant replies in the user's language during tool-heavy turns ([#34761](https://github.com/n8n-io/n8n/issues/34761)) ([5a64744](https://github.com/n8n-io/n8n/commit/5a647443ada5a4d2424e4da46177e7f203c31f4d))
* **ai-builder:** Make channel config dropdown enabled - Linear and Telegram - in AIA agent builder ([#34706](https://github.com/n8n-io/n8n/issues/34706)) ([6b40211](https://github.com/n8n-io/n8n/commit/6b4021147b123c5f99de0301033132d1a357c119))
* **ai-builder:** Make labels be more specific about access token for Slack setup ([#34893](https://github.com/n8n-io/n8n/issues/34893)) ([490b722](https://github.com/n8n-io/n8n/commit/490b7220e115207b8f3001a2038755d8270e5b6b))
* **ai-builder:** MCP Connections failures are non-blocking for agents ([#34722](https://github.com/n8n-io/n8n/issues/34722)) ([3301e12](https://github.com/n8n-io/n8n/commit/3301e12014a7566b67aa952af68e3134d2151fbb))
* **ai-builder:** Preview chat link fix ([#34659](https://github.com/n8n-io/n8n/issues/34659)) ([54db083](https://github.com/n8n-io/n8n/commit/54db083953318a10e5529dc772371d6252901427))
* **ai-builder:** Provision agent prerequisites before build-agent delegation ([#34802](https://github.com/n8n-io/n8n/issues/34802)) ([fec6cee](https://github.com/n8n-io/n8n/commit/fec6ceef3c616c36fe76ba4576d9c4e7a6cbcf47))
* **Airtable Node:** Support matching array field values in update operation ([#31517](https://github.com/n8n-io/n8n/issues/31517)) ([e07eab8](https://github.com/n8n-io/n8n/commit/e07eab880aa6abd8829e2403cb2008a271ebd18c))
* **AMQP Trigger Node:** Cap concurrent executions at the configured messages per cycle ([#34787](https://github.com/n8n-io/n8n/issues/34787)) ([d2672a6](https://github.com/n8n-io/n8n/commit/d2672a63a65d775ec53c003bb71769c544d014dd))
* **Baserow Node:** Format Get Many date filter values for Baserow API ([#32723](https://github.com/n8n-io/n8n/issues/32723)) ([b5da074](https://github.com/n8n-io/n8n/commit/b5da0744c4d0642679b45980a6fdb8bbc06b6634))
* **Cohere Chat Model Node:** Route chat requests through the v2 endpoint ([#34878](https://github.com/n8n-io/n8n/issues/34878)) ([4006c22](https://github.com/n8n-io/n8n/commit/4006c226f88bf3092e96d3e757978a8849b86a91))
* **core:** Accept 5-field cron expressions in schedule trigger ([#35006](https://github.com/n8n-io/n8n/issues/35006)) ([27edc54](https://github.com/n8n-io/n8n/commit/27edc543560c5188e4f78da60c74d839a6144f2d))
* **core:** Advertise OAuth protected-resource metadata URL on MCP server 401 responses ([#34571](https://github.com/n8n-io/n8n/issues/34571)) ([37bb354](https://github.com/n8n-io/n8n/commit/37bb354b465cbc7f4115d251ae894b058b89405a))
* **core:** Avoid loading execution data during credentials security audit ([#34876](https://github.com/n8n-io/n8n/issues/34876)) ([4212fc2](https://github.com/n8n-io/n8n/commit/4212fc2202cade111fd15af31218bccb963fb98f))
* **core:** Classify masked Instance AI stream failures as quota exhaustion via credit re-check ([#34553](https://github.com/n8n-io/n8n/issues/34553)) ([bd89cfc](https://github.com/n8n-io/n8n/commit/bd89cfc04176f6b1442eb85a1486ed388443bf9e))
* **core:** Ensure license device fingerprint meets minimum length ([#33852](https://github.com/n8n-io/n8n/issues/33852)) ([9140a06](https://github.com/n8n-io/n8n/commit/9140a068b11aa393f3e3473377df725b48d01694))
* **core:** Expose workflowPublishingPolicy in the package import CLI command ([#34632](https://github.com/n8n-io/n8n/issues/34632)) ([3117e45](https://github.com/n8n-io/n8n/commit/3117e455c3608c7f3358c3a4f20b205e46505a85))
* **core:** Fail fast with a node error when a Data Table node references a missing table ([#34610](https://github.com/n8n-io/n8n/issues/34610)) ([68c7b55](https://github.com/n8n-io/n8n/commit/68c7b55f863c5446fe3ce50e5b1e8f1c4eca9cd3))
* **core:** Fall back to the run's resolved model for AI Assistant verification LLM calls ([#34627](https://github.com/n8n-io/n8n/issues/34627)) ([a8c90f8](https://github.com/n8n-io/n8n/commit/a8c90f84fe1cac7f4787a8a04e7eb27686e8e382))
* **core:** Fix MCP workflow update failing for active workflows on SQLite ([#34964](https://github.com/n8n-io/n8n/issues/34964)) ([bc88dc4](https://github.com/n8n-io/n8n/commit/bc88dc4bd2bfa3e2e6430c10a251fd274445a06b))
* **core:** Handle MCP OAuth2 token expiry and PKCE negotiation ([#34494](https://github.com/n8n-io/n8n/issues/34494)) ([c7b90d0](https://github.com/n8n-io/n8n/commit/c7b90d00518e587331d1f4b2ff5eb1901a56208a))
* **core:** Include RFC 9207 iss parameter on OAuth authorization error redirects ([#34751](https://github.com/n8n-io/n8n/issues/34751)) ([eca731c](https://github.com/n8n-io/n8n/commit/eca731c2de2e54424b8019e4850e71cc47cea656))
* **core:** Keep MCP server display names free-form in agent config ([#34931](https://github.com/n8n-io/n8n/issues/34931)) ([5339b5e](https://github.com/n8n-io/n8n/commit/5339b5e48a2b844958ba20cbc8c68f8256104604))
* **core:** Normalize workflow rollup timestamps ([#34670](https://github.com/n8n-io/n8n/issues/34670)) ([0316336](https://github.com/n8n-io/n8n/commit/03163367a324a499929756e53cbae608d0cd95c6))
* **core:** Preserve the underlying error as cause on Instance AI workspace file reads ([#34759](https://github.com/n8n-io/n8n/issues/34759)) ([206a258](https://github.com/n8n-io/n8n/commit/206a2581e4e2b5af9a49aea5d8d60eca9ccc5671))
* **core:** Prevent concurrent instance startups from racing database migrations ([#34685](https://github.com/n8n-io/n8n/issues/34685)) ([4d861d1](https://github.com/n8n-io/n8n/commit/4d861d16a65c3fa042bef92b5a775bc2d869184e))
* **core:** Prevent unsupported waiting operations in agent tools ([#34587](https://github.com/n8n-io/n8n/issues/34587)) ([3c278f0](https://github.com/n8n-io/n8n/commit/3c278f01674c4c702d04ab6fe50ef1a980ab3ac0))
* **core:** Publish workspace packages required by n8n at runtime ([#34886](https://github.com/n8n-io/n8n/issues/34886)) ([0c613b4](https://github.com/n8n-io/n8n/commit/0c613b44050b6752835fb726365189b7bedfeb19))
* **core:** Redact a sub-workflow's own execution record per its own policy ([#34621](https://github.com/n8n-io/n8n/issues/34621)) ([d8d89cc](https://github.com/n8n-io/n8n/commit/d8d89cc38106947025f06e458a8b6108436a4804))
* **core:** Redirect form-resume waiting requests to the form endpoint ([#34725](https://github.com/n8n-io/n8n/issues/34725)) ([5dfa49b](https://github.com/n8n-io/n8n/commit/5dfa49be6f332377c60cdd063cb06dedc1c52d8c))
* **core:** Reject workflow deletion while unpublish is still in progress ([#34836](https://github.com/n8n-io/n8n/issues/34836)) ([9e09ff4](https://github.com/n8n-io/n8n/commit/9e09ff4d23ede51ce71f69049ebdc394802b9703))
* **core:** Require row read scope for data table CSV export ([#34127](https://github.com/n8n-io/n8n/issues/34127)) ([8171aa8](https://github.com/n8n-io/n8n/commit/8171aa8261235093f4e5d6f821bf18be67924c0b))
* **core:** Resolve synthetic tool nodes to the requested version ([#34850](https://github.com/n8n-io/n8n/issues/34850)) ([6e12426](https://github.com/n8n-io/n8n/commit/6e124263dc654cdfe7c4947e747776f5d6daac8f))
* **core:** Return correct webhook URL in MCP get_workflow_details trigger info ([#34927](https://github.com/n8n-io/n8n/issues/34927)) ([5542c1b](https://github.com/n8n-io/n8n/commit/5542c1b3940b28fa65a9f0840eef6f67018864a6))
* **core:** Sanitize secret values before persisting to agent memory ([#34622](https://github.com/n8n-io/n8n/issues/34622)) ([edbed4f](https://github.com/n8n-io/n8n/commit/edbed4fc01eef9ffac43a0c7901ec678d48f6bb4))
* **core:** Serve RFC 9728 metadata at bare /.well-known/oauth-protected-resource ([#33776](https://github.com/n8n-io/n8n/issues/33776)) ([3e0188c](https://github.com/n8n-io/n8n/commit/3e0188cf2af284d448dccfb43abf9c0db2cf57ee))
* **core:** Sign S3 object paths with strict RFC 3986 encoding ([#34694](https://github.com/n8n-io/n8n/issues/34694)) ([8e5fdb4](https://github.com/n8n-io/n8n/commit/8e5fdb4b2d4bfa0eae046a54e79636a548e3fe0c))
* **core:** Skip Sentry reports for Instance AI errors that self-declare a warning level ([#34617](https://github.com/n8n-io/n8n/issues/34617)) ([3bb3835](https://github.com/n8n-io/n8n/commit/3bb3835db4126db20fa24b00abe257ab8038a989))
* **core:** Stop Instance AI follow-up runs from looping when they keep failing before the agent starts ([#34767](https://github.com/n8n-io/n8n/issues/34767)) ([5aac66d](https://github.com/n8n-io/n8n/commit/5aac66d8cb8a023ab97b1ead28da58237237f497))
* **core:** Strip null optional node fields from AI-generated workflows ([#34668](https://github.com/n8n-io/n8n/issues/34668)) ([94e505a](https://github.com/n8n-io/n8n/commit/94e505a972dc52ff2a7b3fa91e3fc4d95314c2f8))
* **core:** Support fractional community node versions with PostgreSQL ([#34717](https://github.com/n8n-io/n8n/issues/34717)) ([48c0e70](https://github.com/n8n-io/n8n/commit/48c0e70f14a77858379d795400ad9199126d7c78))
* **core:** Surface HITL suspend/resume content in Instance AI trace turns ([#34599](https://github.com/n8n-io/n8n/issues/34599)) ([d8c3fad](https://github.com/n8n-io/n8n/commit/d8c3fadef48d8bb0865265ee038d14e4f51b83af))
* **Databricks Node:** Change default tokenExpiredStatusCode from 401 to 403 ([#34325](https://github.com/n8n-io/n8n/issues/34325)) ([6f3d2b9](https://github.com/n8n-io/n8n/commit/6f3d2b9faab6174f6b483091345984092fb81d6c))
* **DeepSeek Node:** Preserve reasoning_content on tool-calling turns ([#34924](https://github.com/n8n-io/n8n/issues/34924)) ([4d247a1](https://github.com/n8n-io/n8n/commit/4d247a1176b9e66ea9113da640731e7037d336a1))
* **editor:** Add document title and adopt new settings layout on migration report pages ([#34609](https://github.com/n8n-io/n8n/issues/34609)) ([0164216](https://github.com/n8n-io/n8n/commit/016421680d5c8076d868936e53197f202cd3fd69))
* **editor:** Allow LDAP users to configure n8n 2FA in personal settings ([#34655](https://github.com/n8n-io/n8n/issues/34655)) ([2b1e4b8](https://github.com/n8n-io/n8n/commit/2b1e4b8910bcf6c7363a4031bec8ecc653cd7322))
* **editor:** Center empty state content vertically on short viewports ([#34820](https://github.com/n8n-io/n8n/issues/34820)) ([359d82f](https://github.com/n8n-io/n8n/commit/359d82fb0519737c2bf0e4e9fabd41fe8ac2f180))
* **editor:** Clamp persisted sidebar width when expanding the main sidebar ([#34923](https://github.com/n8n-io/n8n/issues/34923)) ([4f7c725](https://github.com/n8n-io/n8n/commit/4f7c725b837226503aef7133cca1918ecaca3469))
* **editor:** Debounce node creator search filtering ([#34828](https://github.com/n8n-io/n8n/issues/34828)) ([25c5a73](https://github.com/n8n-io/n8n/commit/25c5a7341edbd27fe757f7fa994eb662c0e15c7a))
* **editor:** Don't show quick connect for non-main auth fields ([#34449](https://github.com/n8n-io/n8n/issues/34449)) ([6195471](https://github.com/n8n-io/n8n/commit/6195471424d3f939ff35013a8bb8939fffaf37ea))
* **editor:** Fix an issue in some Safari versions that prevented copying invite links ([#34620](https://github.com/n8n-io/n8n/issues/34620)) ([e75e412](https://github.com/n8n-io/n8n/commit/e75e41205c6ee59d44e694d82304bf19ccc5ee19))
* **editor:** Fix focus parameter button breaking selection in credential dialog ([#34453](https://github.com/n8n-io/n8n/issues/34453)) ([ee029b8](https://github.com/n8n-io/n8n/commit/ee029b8df91f60387c72aed90d3d98e586e0b21b))
* **editor:** Html strings for table names are escaped ([#24522](https://github.com/n8n-io/n8n/issues/24522)) ([f4365b1](https://github.com/n8n-io/n8n/commit/f4365b1579d1c8039305c32814b8da35110c2c07))
* **editor:** Inject instance UTM parameters in all links to the templates website ([#34790](https://github.com/n8n-io/n8n/issues/34790)) ([d5b5d8e](https://github.com/n8n-io/n8n/commit/d5b5d8ead5802dea7527e7781dfd417a508efdf9))
* **editor:** Keep chat typing indicator visible until response arrives ([#34768](https://github.com/n8n-io/n8n/issues/34768)) ([4fdf3ed](https://github.com/n8n-io/n8n/commit/4fdf3ed633ef0fb855b7ad754c606f581c7bb42d))
* **editor:** Keep NDV node hints visible after execution and render them in a single pane ([#34920](https://github.com/n8n-io/n8n/issues/34920)) ([082b5d9](https://github.com/n8n-io/n8n/commit/082b5d9190f4bc81d93c6a94d6d4692bed4660ca))
* **editor:** Keep Switch fallback outputs available with unresolved expressions ([#34698](https://github.com/n8n-io/n8n/issues/34698)) ([a0f6861](https://github.com/n8n-io/n8n/commit/a0f6861e17d3a9b2ea1c3eebd71f369ea917084f))
* **editor:** Manage and other permissions checkboxs stuck in half-selected state during member selection ([#34726](https://github.com/n8n-io/n8n/issues/34726)) ([0e186ad](https://github.com/n8n-io/n8n/commit/0e186ad8d32db5df59d7150acd894cfd149f4dbb))
* **editor:** Preserve agent tool name translations ([#35039](https://github.com/n8n-io/n8n/issues/35039)) ([fd5bc7d](https://github.com/n8n-io/n8n/commit/fd5bc7da2801e4bf8cad6937e7e059accf5e9407))
* **editor:** Preserve canvas groups when converting a selection to a sub-workflow ([#34664](https://github.com/n8n-io/n8n/issues/34664)) ([1666f1e](https://github.com/n8n-io/n8n/commit/1666f1ec67956130a6021c1e4b5c263851849641))
* **editor:** Prevent reactive feedback loop when opening workflow diff ([#34897](https://github.com/n8n-io/n8n/issues/34897)) ([962ff56](https://github.com/n8n-io/n8n/commit/962ff564c434ad03954e508dd80d8fd790ce32ab))
* **editor:** Reassign users when deleting a custom instance role ([#34642](https://github.com/n8n-io/n8n/issues/34642)) ([fa0abd8](https://github.com/n8n-io/n8n/commit/fa0abd8ca80205f8fac7862fa674db5d0b4d6387))
* **editor:** Refresh subworkflow input schema from draft on parent open ([#34522](https://github.com/n8n-io/n8n/issues/34522)) ([734f957](https://github.com/n8n-io/n8n/commit/734f9573952c3a639518bfd42e03b4d7aa9fd436))
* **editor:** Remove episodic memory callout and knowledge base publish requirement ([#34888](https://github.com/n8n-io/n8n/issues/34888)) ([771d038](https://github.com/n8n-io/n8n/commit/771d038657b9965288852079c29637780145af69))
* **editor:** Rename preview AI Agent node to V1 ([#34714](https://github.com/n8n-io/n8n/issues/34714)) ([359e1fb](https://github.com/n8n-io/n8n/commit/359e1fba36776651dfdd87c6eca8469b888e4a86))
* **editor:** Replace invalid link ([#34652](https://github.com/n8n-io/n8n/issues/34652)) ([87115d6](https://github.com/n8n-io/n8n/commit/87115d6cb90bd6de717eaa2312a5e31e46e71361))
* **editor:** Restore agent channel credential setup ([#34737](https://github.com/n8n-io/n8n/issues/34737)) ([ac839bb](https://github.com/n8n-io/n8n/commit/ac839bb54a2b33a4d49ebf3f5adfb8289040bd2a))
* **editor:** Restore horizontal scrolling of NDV panel header controls ([#34824](https://github.com/n8n-io/n8n/issues/34824)) ([0745526](https://github.com/n8n-io/n8n/commit/0745526f6a7ba4deef80e8f734416164b9e7798e))
* **editor:** Stabilize icon picker scrolling ([#34596](https://github.com/n8n-io/n8n/issues/34596)) ([e67c119](https://github.com/n8n-io/n8n/commit/e67c119f8b3b5d3f37b3b14cc5bdc644f06e0ddf))
* **editor:** Update copy for executions tab empty state ([#34731](https://github.com/n8n-io/n8n/issues/34731)) ([1138f11](https://github.com/n8n-io/n8n/commit/1138f1196fee4d3fa5adff402a008928d8b9fee1))
* **Form Node:** Properly handle quotes in Form Trigger Node name ([#34650](https://github.com/n8n-io/n8n/issues/34650)) ([95c36b8](https://github.com/n8n-io/n8n/commit/95c36b8debbd6cdd87e731ea3fd6a2ee0f4e6505))
* **HTTP Request Node:** Include error body in continueOnFail mode ([#34729](https://github.com/n8n-io/n8n/issues/34729)) ([d0b254c](https://github.com/n8n-io/n8n/commit/d0b254cff8bec92545602b03e4784f567a92d65b))
* Keep agent preview streams responsive ([#35035](https://github.com/n8n-io/n8n/issues/35035)) ([8d46c6e](https://github.com/n8n-io/n8n/commit/8d46c6e67ab58b076b4efda03b5fc94417063d39))
* **MCP Client Tool Node:** Close cached MCP client sessions when their execution finishes ([#34397](https://github.com/n8n-io/n8n/issues/34397)) ([ec5f503](https://github.com/n8n-io/n8n/commit/ec5f5032a48abb348fcb108e921dd382c1c2673e))
* **Microsoft Teams Node:** Respect limit server-side in getAll operations ([#34851](https://github.com/n8n-io/n8n/issues/34851)) ([ded1697](https://github.com/n8n-io/n8n/commit/ded1697671379660bcf0368e4eec8863b971fafd))
* **N8n Node:** Update credential test to use an endpoint with no extra scopes ([#34605](https://github.com/n8n-io/n8n/issues/34605)) ([4622b35](https://github.com/n8n-io/n8n/commit/4622b3555739bda41f3e7686ec6085b23bb07c94))
* Parse structured output from content-block model responses in chain nodes ([#34928](https://github.com/n8n-io/n8n/issues/34928)) ([1713d9a](https://github.com/n8n-io/n8n/commit/1713d9a9bcf0ab6cb1d49aa9860be55b8756afbe))
* Report real exported entity counts in package export ([#34995](https://github.com/n8n-io/n8n/issues/34995)) ([f3fd559](https://github.com/n8n-io/n8n/commit/f3fd5599ca8a760b2f8d5d6a1e00201661c022bc))
* Return reversed array when calling `.reverse()` ([#34625](https://github.com/n8n-io/n8n/issues/34625)) ([cc4dbf9](https://github.com/n8n-io/n8n/commit/cc4dbf9439239d586bf54967294dc52da441e2f9))
* Serialize dates and route binary columns to output in database nodes ([#34124](https://github.com/n8n-io/n8n/issues/34124)) ([26ae903](https://github.com/n8n-io/n8n/commit/26ae903a2e457a5a4dad332c57a98cbc4b2196c0))
* **Slack Node:** Handle user-list rate limits and surface real load errors ([#34743](https://github.com/n8n-io/n8n/issues/34743)) ([2268149](https://github.com/n8n-io/n8n/commit/2268149b7cecbb3b4a23758262d76bee2769d61f))
* Treat blank optional enum form fields as unset in package import ([#35010](https://github.com/n8n-io/n8n/issues/35010)) ([4abbc89](https://github.com/n8n-io/n8n/commit/4abbc89df4b01c0ec3d1a34b78f72d2beedc8c8f))
* Validate loadOption parameter in GSheet and Notion nodes ([#34695](https://github.com/n8n-io/n8n/issues/34695)) ([1f82bee](https://github.com/n8n-io/n8n/commit/1f82beef47cfcd9598193f8e9afaa6f428b3d036))
* **Wikipedia Tool Node:** Surface tool errors as actionable node errors ([#34643](https://github.com/n8n-io/n8n/issues/34643)) ([3f1b35d](https://github.com/n8n-io/n8n/commit/3f1b35d669e7a44ed129621ff96bf69597fb2128))
* **Wordpress Node:** WordPress Get Many adds before filter for posts and pages ([#19790](https://github.com/n8n-io/n8n/issues/19790)) ([90f1430](https://github.com/n8n-io/n8n/commit/90f1430c5ebf91b1b720dec3343495841315d110))
* **editor:** Rename preview AI Agent node to V1 ([#34718](https://github.com/n8n-io/n8n/issues/34718)) ([d946424](https://github.com/n8n-io/n8n/commit/d9464241d7245830aa6fd97a78fbe99b0c548fa6))
### Features
* Add admin-managed instance credentials ([#34364](https://github.com/n8n-io/n8n/issues/34364)) ([7d8426f](https://github.com/n8n-io/n8n/commit/7d8426f05536aaa7232d685decd7d4dc6cf73077))
* Add require-files-array ESLint rule for community node packages ([#34792](https://github.com/n8n-io/n8n/issues/34792)) ([d0adaf7](https://github.com/n8n-io/n8n/commit/d0adaf7b5a9e8a8f1c119a572e4c4aaf065bb691))
* **ai-builder:** Add Fix with Assistant for failed agent preview tools - pass single execution context ([#34616](https://github.com/n8n-io/n8n/issues/34616)) ([9626891](https://github.com/n8n-io/n8n/commit/96268910d35112cb02363aef9ad184036d4b2dfd))
* **ai-builder:** Add support for verified community nodes as agent tools ([#34922](https://github.com/n8n-io/n8n/issues/34922)) ([3d281ec](https://github.com/n8n-io/n8n/commit/3d281ecc40dd3c6e78cb75a2fdf850af8f06926d))
* **ai-builder:** Agent session records direct to session chat, not trace ([#34997](https://github.com/n8n-io/n8n/issues/34997)) ([f62cc63](https://github.com/n8n-io/n8n/commit/f62cc6319a582982cde0091899922446fd01bba6))
* **ai-builder:** Format zod erros on agent config - better toast msg ([#34867](https://github.com/n8n-io/n8n/issues/34867)) ([bac8deb](https://github.com/n8n-io/n8n/commit/bac8debc0ef9c77e00bdba454cf3ae2f807dbca0))
* **ai-builder:** Single preview chat + trace modal ([#35033](https://github.com/n8n-io/n8n/issues/35033)) ([687a00e](https://github.com/n8n-io/n8n/commit/687a00e7eeb2c49f491d06a490dca0c92b90b79d))
* **ai-builder:** Support execution scenarios for first-class agents in evals ([#34384](https://github.com/n8n-io/n8n/issues/34384)) ([5fd800d](https://github.com/n8n-io/n8n/commit/5fd800de20e5be21e6ccb4599746c2c5d2088898))
* **ai-builder:** Tidy up tool names and agent builder tool UX ([#34646](https://github.com/n8n-io/n8n/issues/34646)) ([decb322](https://github.com/n8n-io/n8n/commit/decb3228c5e49b47ddc945c0bc067ea5a1a35ba7))
* Allow custom OAuth scopes for Microsoft Azure Monitor, Dynamics, Graph Security and Azure Storage ([#34612](https://github.com/n8n-io/n8n/issues/34612)) ([69c8633](https://github.com/n8n-io/n8n/commit/69c86333b28c6843e5469945625dd43e62575fe6))
* Allow custom OAuth scopes for the remaining Google credentials ([#34631](https://github.com/n8n-io/n8n/issues/34631)) ([4a8dd5b](https://github.com/n8n-io/n8n/commit/4a8dd5b81716de298bafaf991ef16eabe0ffb962))
* **API:** Add credentialResolverId, timeSavedMode & binaryMode properties to workflow settings schema ([#34330](https://github.com/n8n-io/n8n/issues/34330)) ([9ac95b6](https://github.com/n8n-io/n8n/commit/9ac95b68bee67e9d4d4fbed7085cf3f2df840c6c))
* **API:** Add endpoint to list workflow version history (GET /workflows/{id}/history) ([#34656](https://github.com/n8n-io/n8n/issues/34656)) ([91751c3](https://github.com/n8n-io/n8n/commit/91751c3ce26c9e90f17fe1b44fcec90fa6d0b487))
* **API:** Add public API endpoints for OpenTelemetry configuration ([#34429](https://github.com/n8n-io/n8n/issues/34429)) ([cd1e48e](https://github.com/n8n-io/n8n/commit/cd1e48e5f536f3e5d3e78ae6f272eb6be16751a4))
* **API:** Add workflow publish/unpublish public API endpoints ([#34745](https://github.com/n8n-io/n8n/issues/34745)) ([e9933bd](https://github.com/n8n-io/n8n/commit/e9933bd1c09e26f3eafc07ceb136196a3bfa4189))
* **API:** Deprecate workflow activate/deactivate public API endpoints ([#34771](https://github.com/n8n-io/n8n/issues/34771)) ([05c691b](https://github.com/n8n-io/n8n/commit/05c691b0b7849add3a3b8e81fa81fa000f064539))
* **AWS Bedrock Chat Model Node:** Surface inference-profile models in the default model picker ([#34983](https://github.com/n8n-io/n8n/issues/34983)) ([cb28555](https://github.com/n8n-io/n8n/commit/cb28555d55fd22444fc9deab120842aa9829eed7))
* Configure the AI Assistant through a redesigned instance settings page ([#34493](https://github.com/n8n-io/n8n/issues/34493)) ([4078318](https://github.com/n8n-io/n8n/commit/4078318cff167b4aa65c74485769943d778ecb60))
* **core:** Add `active_workflow_info` and make `workflow_info` leader-only ([#34987](https://github.com/n8n-io/n8n/issues/34987)) ([78e55b5](https://github.com/n8n-io/n8n/commit/78e55b5cbfbd0781b61e5bc9e1dc74de785a4542))
* **core:** Add availableInMCP column to agents ([#34665](https://github.com/n8n-io/n8n/issues/34665)) ([fdd4e33](https://github.com/n8n-io/n8n/commit/fdd4e33f9ca7d4faeac7d393234b22a47faafbd8))
* **core:** Add credential-unnecessary-password community node lint rule ([#34791](https://github.com/n8n-io/n8n/issues/34791)) ([95da849](https://github.com/n8n-io/n8n/commit/95da84912ffef514220772bb779830d11fa2e2cf))
* **core:** Add eligible-reviewer API types and reviewer ids to revie… ([#34703](https://github.com/n8n-io/n8n/issues/34703)) ([60112eb](https://github.com/n8n-io/n8n/commit/60112eb81c002aea2b61cb6439733c61b57a999d))
* **core:** Add instance credential database schema ([#34709](https://github.com/n8n-io/n8n/issues/34709)) ([13becf3](https://github.com/n8n-io/n8n/commit/13becf336c703a7e3c17bac3f61a2d66ae2d933e))
* **core:** Add N8N_SCHEDULER_MAX_ATTEMPTS to configure scheduler dead-letter threshold ([#34633](https://github.com/n8n-io/n8n/issues/34633)) ([29f2fac](https://github.com/n8n-io/n8n/commit/29f2facb48bfc62673be5b3e0fb8eec5424eb44a))
* **core:** Add storedAt column to agent_execution ([#34858](https://github.com/n8n-io/n8n/issues/34858)) ([0b4bbd0](https://github.com/n8n-io/n8n/commit/0b4bbd05b8956ef81db7f1ca66107c7460e1f6e9))
* **core:** Add telemetry events for agent publishing, builder capabilities, and interactive flows ([#34887](https://github.com/n8n-io/n8n/issues/34887)) ([8017b3d](https://github.com/n8n-io/n8n/commit/8017b3d85f44db019d1a47e472b4c2b2c8bf1cb1))
* **core:** Add workflow review request entities and migration scripts ([#34062](https://github.com/n8n-io/n8n/issues/34062)) ([156ac00](https://github.com/n8n-io/n8n/commit/156ac00120f2ac611d4da1d72484b2031f738b9c))
* **core:** Add workflow.deactivate external hook ([#34746](https://github.com/n8n-io/n8n/issues/34746)) ([697174f](https://github.com/n8n-io/n8n/commit/697174f3f8097d034e022f1df3ed64c1849f0717))
* **core:** Allow Storybook components to be viewed in light and dark mode ([#34361](https://github.com/n8n-io/n8n/issues/34361)) ([e592b21](https://github.com/n8n-io/n8n/commit/e592b210c1f439cb2ea68902c519b8a2cea246e3))
* **core:** Auto-include sub-workflows in package exports ([#34218](https://github.com/n8n-io/n8n/issues/34218)) ([09c90f9](https://github.com/n8n-io/n8n/commit/09c90f9bf4ca704725ed5621c0dedf7d0afab02f))
* **core:** Create reviews page and render inbox ([#34357](https://github.com/n8n-io/n8n/issues/34357)) ([b2cbcc1](https://github.com/n8n-io/n8n/commit/b2cbcc1b8199ad2e649d6497262a49e1a09dabd8))
* **core:** Detect and heal published-version skew in trigger reconciliation ([#34877](https://github.com/n8n-io/n8n/issues/34877)) ([3f2bc68](https://github.com/n8n-io/n8n/commit/3f2bc6884676cb31f664a2f67d8ab897e9a37f22))
* **core:** Emit agent run spans through the OTel module's tracer ([#34460](https://github.com/n8n-io/n8n/issues/34460)) ([e01e996](https://github.com/n8n-io/n8n/commit/e01e996649f1407296723f11612e20a57a09890b))
* **core:** Include acting user identity in workflow lifecycle external hooks ([#34769](https://github.com/n8n-io/n8n/issues/34769)) ([efa86c6](https://github.com/n8n-io/n8n/commit/efa86c697b163b3d8ac0520d1a18ca98db6cf959))
* **core:** Infer structured output from example JSON in AI Agent Node ([#34779](https://github.com/n8n-io/n8n/issues/34779)) ([0ec49b3](https://github.com/n8n-io/n8n/commit/0ec49b37353a0e8d0cc03ce550116833e06b8a47))
* **core:** Nest delegated sub-agent spans under the parent agent trace ([#34720](https://github.com/n8n-io/n8n/issues/34720)) ([bd6f617](https://github.com/n8n-io/n8n/commit/bd6f617efb751b8ad0a109254e010506e5f95077))
* **core:** Return open and closed counts for the review inbox tabs ([#34789](https://github.com/n8n-io/n8n/issues/34789)) ([f4edeeb](https://github.com/n8n-io/n8n/commit/f4edeeba312051fc8595c7276ba2f2af408adfaf))
* **core:** Review submission flow endpoints and toggle ([#34649](https://github.com/n8n-io/n8n/issues/34649)) ([6d38f2e](https://github.com/n8n-io/n8n/commit/6d38f2ee392ce32f19859dd21bd82dc6f14c1679))
* **core:** Store agent execution logs in blob storage ([#34796](https://github.com/n8n-io/n8n/issues/34796)) ([a647aef](https://github.com/n8n-io/n8n/commit/a647aeff2300558cf7f1a16d8e3bcb4966ba7981))
* **core:** Support legacy sub-workflow dependencies in package exports ([#34398](https://github.com/n8n-io/n8n/issues/34398)) ([41660d0](https://github.com/n8n-io/n8n/commit/41660d00679c524045d55aced4c3b5e5b9b2bcfa))
* **core:** Validate missing node types on package import ([#34598](https://github.com/n8n-io/n8n/issues/34598)) ([4044d58](https://github.com/n8n-io/n8n/commit/4044d58d130fd2f86e906a1f41cb561ff2c8e31b))
* Default package import workflowIdPolicy to source ([#34989](https://github.com/n8n-io/n8n/issues/34989)) ([1f4e654](https://github.com/n8n-io/n8n/commit/1f4e65419ab3bd2ef453324f5796d4e86434382a))
* **editor:** Add N8nStatusDot component ([#34963](https://github.com/n8n-io/n8n/issues/34963)) ([f758a4b](https://github.com/n8n-io/n8n/commit/f758a4bd05723b44acdf6786410c5da54a5936a2))
* **editor:** Add workflow review submission flow ([#34520](https://github.com/n8n-io/n8n/issues/34520)) ([5939eb5](https://github.com/n8n-io/n8n/commit/5939eb52e9c658419622e35a07e5914982b2e244))
* **editor:** Adds modal to see all projects a user can access in a list ([#34619](https://github.com/n8n-io/n8n/issues/34619)) ([2748e1a](https://github.com/n8n-io/n8n/commit/2748e1ac78207b471002a1de6f18602352f65608))
* **editor:** Keep review-required toggle synchronized with open reviews ([#34606](https://github.com/n8n-io/n8n/issues/34606)) ([ca0c5f4](https://github.com/n8n-io/n8n/commit/ca0c5f49382c383642b6b196acb7358f56b31f1d))
* **editor:** Migrate OpenTelemetry settings page to new instance settings UI ([#34965](https://github.com/n8n-io/n8n/issues/34965)) ([91e1276](https://github.com/n8n-io/n8n/commit/91e12764637c50698461452d586420537bf7c882))
* **editor:** Polish end-user credential setup modal and NDV states ([#34766](https://github.com/n8n-io/n8n/issues/34766)) ([01e0639](https://github.com/n8n-io/n8n/commit/01e06399d84cc738fde7846e5aedee73f222ccdc))
* **editor:** Revamp MCP settings view with instance settings components ([#34041](https://github.com/n8n-io/n8n/issues/34041)) ([e2840a7](https://github.com/n8n-io/n8n/commit/e2840a7443ca05073ffa4bb0b52cd0232dce1821))
* **editor:** Show confirmation modal when updating a custom instance role with assigned users ([#34544](https://github.com/n8n-io/n8n/issues/34544)) ([6dc2079](https://github.com/n8n-io/n8n/commit/6dc2079399e25334224104b0ed06acefdf79fb85))
* **editor:** Show reviewer and requester avatars and a status indicator on review inbox items ([#34885](https://github.com/n8n-io/n8n/issues/34885)) ([2ea7da2](https://github.com/n8n-io/n8n/commit/2ea7da29aca43acc7047807889cf762188fb865e))
* **editor:** Sync a new workflow version into an existing open review ([#34842](https://github.com/n8n-io/n8n/issues/34842)) ([5a97bd1](https://github.com/n8n-io/n8n/commit/5a97bd1a2e31b90be75fb604fd7f0a7e7a35a33f))
* **editor:** Track Instance AI entry point as action_source on builder messages ([#34671](https://github.com/n8n-io/n8n/issues/34671)) ([c0fe8ba](https://github.com/n8n-io/n8n/commit/c0fe8ba4dbb08266aad20c0ab09db3afbedd62bf))
* **Gmail Node:** Add warning notice when Simplify is disabled ([#34611](https://github.com/n8n-io/n8n/issues/34611)) ([72a311a](https://github.com/n8n-io/n8n/commit/72a311a6f38195c755ae1dce9612010688dc0a5c))
* **Microsoft Excel (SharePoint) Node:** Add node for Excel workbooks in SharePoint document libraries ([#34847](https://github.com/n8n-io/n8n/issues/34847)) ([d67b9cd](https://github.com/n8n-io/n8n/commit/d67b9cd0d163352e216361cc83dd0a7d0b76b7e7))
### Performance Improvements
* **core:** Skip allowed-methods lookup on successful production webhook requests ([#34833](https://github.com/n8n-io/n8n/issues/34833)) ([bf8f5d8](https://github.com/n8n-io/n8n/commit/bf8f5d85a3bc9efc24eebfe5c0e18cf9f3e21190))
## [2.32.1](https://github.com/n8n-io/n8n/compare/n8n@2.32.0...n8n@2.32.1) (2026-07-22)
# [2.32.0](https://github.com/n8n-io/n8n/compare/n8n@2.31.0...n8n@2.32.0) (2026-07-21)

View File

@ -10,18 +10,14 @@ Auto-generated from the PostgreSQL migrations in @n8n/db. Do not edit by hand.
| ---- | ------- | ------- | ---- |
| [public.agent_chat_subscriptions](public.agent_chat_subscriptions.md) | 6 | | BASE TABLE |
| [public.agent_checkpoints](public.agent_checkpoints.md) | 6 | | BASE TABLE |
| [public.agent_eval_dataset](public.agent_eval_dataset.md) | 10 | | BASE TABLE |
| [public.agent_eval_rating](public.agent_eval_rating.md) | 8 | | BASE TABLE |
| [public.agent_eval_result](public.agent_eval_result.md) | 15 | | BASE TABLE |
| [public.agent_eval_run](public.agent_eval_run.md) | 14 | | BASE TABLE |
| [public.agent_execution](public.agent_execution.md) | 19 | | BASE TABLE |
| [public.agent_execution](public.agent_execution.md) | 18 | | BASE TABLE |
| [public.agent_execution_threads](public.agent_execution_threads.md) | 17 | | BASE TABLE |
| [public.agent_files](public.agent_files.md) | 10 | | BASE TABLE |
| [public.agent_files](public.agent_files.md) | 8 | | BASE TABLE |
| [public.agent_history](public.agent_history.md) | 9 | | BASE TABLE |
| [public.agent_task_definition](public.agent_task_definition.md) | 7 | | BASE TABLE |
| [public.agent_task_run_lock](public.agent_task_run_lock.md) | 6 | | BASE TABLE |
| [public.agent_task_snapshot](public.agent_task_snapshot.md) | 8 | | BASE TABLE |
| [public.agents](public.agents.md) | 12 | | BASE TABLE |
| [public.agents](public.agents.md) | 11 | | BASE TABLE |
| [public.agents_memory_entries](public.agents_memory_entries.md) | 13 | | BASE TABLE |
| [public.agents_memory_entry_cursors](public.agents_memory_entry_cursors.md) | 6 | | BASE TABLE |
| [public.agents_memory_entry_locks](public.agents_memory_entry_locks.md) | 6 | | BASE TABLE |
@ -44,7 +40,7 @@ Auto-generated from the PostgreSQL migrations in @n8n/db. Do not edit by hand.
| [public.chat_hub_sessions](public.chat_hub_sessions.md) | 13 | | BASE TABLE |
| [public.chat_hub_tools](public.chat_hub_tools.md) | 9 | | BASE TABLE |
| [public.credential_dependency](public.credential_dependency.md) | 5 | | BASE TABLE |
| [public.credentials_entity](public.credentials_entity.md) | 12 | | BASE TABLE |
| [public.credentials_entity](public.credentials_entity.md) | 11 | | BASE TABLE |
| [public.data_table](public.data_table.md) | 5 | | BASE TABLE |
| [public.data_table_column](public.data_table_column.md) | 7 | | BASE TABLE |
| [public.deployment_key](public.deployment_key.md) | 7 | | BASE TABLE |
@ -81,13 +77,12 @@ Auto-generated from the PostgreSQL migrations in @n8n/db. Do not edit by hand.
| [public.instance_ai_thread_grants](public.instance_ai_thread_grants.md) | 5 | | BASE TABLE |
| [public.instance_ai_threads](public.instance_ai_threads.md) | 7 | | BASE TABLE |
| [public.instance_ai_workflow_snapshots](public.instance_ai_workflow_snapshots.md) | 7 | | BASE TABLE |
| [public.instance_credential_assignment](public.instance_credential_assignment.md) | 4 | | BASE TABLE |
| [public.instance_version_history](public.instance_version_history.md) | 5 | | BASE TABLE |
| [public.invalid_auth_token](public.invalid_auth_token.md) | 2 | | BASE TABLE |
| [public.mcp_registry_server](public.mcp_registry_server.md) | 7 | | BASE TABLE |
| [public.oauth_access_tokens](public.oauth_access_tokens.md) | 3 | | BASE TABLE |
| [public.oauth_authorization_codes](public.oauth_authorization_codes.md) | 13 | | BASE TABLE |
| [public.oauth_clients](public.oauth_clients.md) | 10 | | BASE TABLE |
| [public.oauth_clients](public.oauth_clients.md) | 9 | | BASE TABLE |
| [public.oauth_refresh_tokens](public.oauth_refresh_tokens.md) | 7 | | BASE TABLE |
| [public.oauth_user_consents](public.oauth_user_consents.md) | 5 | | BASE TABLE |
| [public.processed_data](public.processed_data.md) | 5 | | BASE TABLE |
@ -124,10 +119,6 @@ Auto-generated from the PostgreSQL migrations in @n8n/db. Do not edit by hand.
| [public.workflow_publication_trigger_status](public.workflow_publication_trigger_status.md) | 8 | | BASE TABLE |
| [public.workflow_publish_history](public.workflow_publish_history.md) | 6 | | BASE TABLE |
| [public.workflow_published_version](public.workflow_published_version.md) | 4 | | BASE TABLE |
| [public.workflow_review_request](public.workflow_review_request.md) | 12 | | BASE TABLE |
| [public.workflow_review_request_authors](public.workflow_review_request_authors.md) | 2 | | BASE TABLE |
| [public.workflow_review_request_reviewers](public.workflow_review_request_reviewers.md) | 2 | | BASE TABLE |
| [public.workflow_review_request_workflow](public.workflow_review_request_workflow.md) | 4 | | BASE TABLE |
| [public.workflow_statistics](public.workflow_statistics.md) | 7 | | BASE TABLE |
| [public.workflow_statistics_delta](public.workflow_statistics_delta.md) | 6 | | BASE TABLE |
| [public.workflows_tags](public.workflows_tags.md) | 2 | | BASE TABLE |
@ -155,13 +146,6 @@ erDiagram
"public.agent_chat_subscriptions" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_checkpoints" }o--o| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_eval_dataset" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_eval_dataset" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_eval_rating" }o--o| "public.user" : "FOREIGN KEY (#quot;ratedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_eval_rating" }o--|| "public.agent_eval_result" : "FOREIGN KEY (#quot;resultId#quot;) REFERENCES agent_eval_result(id) ON DELETE CASCADE"
"public.agent_eval_result" }o--|| "public.agent_eval_run" : "FOREIGN KEY (#quot;runId#quot;) REFERENCES agent_eval_run(id) ON DELETE CASCADE"
"public.agent_eval_run" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_eval_run" }o--|| "public.agent_eval_dataset" : "FOREIGN KEY (#quot;datasetId#quot;) REFERENCES agent_eval_dataset(id) ON DELETE CASCADE"
"public.agent_execution" }o--|| "public.agent_execution_threads" : "FOREIGN KEY (#quot;threadId#quot;) REFERENCES agent_execution_threads(id) ON DELETE CASCADE"
"public.agent_execution_threads" }o--|| "public.project" : "FOREIGN KEY (#quot;projectId#quot;) REFERENCES project(id) ON DELETE CASCADE"
"public.agent_execution_threads" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
@ -263,7 +247,6 @@ erDiagram
"public.instance_ai_thread_grants" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.instance_ai_thread_grants" }o--|| "public.instance_ai_threads" : "FOREIGN KEY (#quot;threadId#quot;) REFERENCES instance_ai_threads(id) ON DELETE CASCADE"
"public.instance_ai_threads" }o--|| "public.project" : "FOREIGN KEY (#quot;projectId#quot;) REFERENCES project(id) ON DELETE CASCADE"
"public.instance_credential_assignment" }o--|| "public.credentials_entity" : "FOREIGN KEY (#quot;credentialId#quot;) REFERENCES credentials_entity(id) ON DELETE RESTRICT"
"public.oauth_access_tokens" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.oauth_access_tokens" }o--|| "public.oauth_clients" : "FOREIGN KEY (#quot;clientId#quot;) REFERENCES oauth_clients(id) ON DELETE CASCADE"
"public.oauth_authorization_codes" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
@ -314,17 +297,6 @@ erDiagram
"public.workflow_publish_history" }o--o| "public.workflow_history" : "FOREIGN KEY (#quot;versionId#quot;) REFERENCES workflow_history(#quot;versionId#quot;) ON DELETE SET NULL"
"public.workflow_published_version" |o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE RESTRICT"
"public.workflow_published_version" }o--|| "public.workflow_history" : "FOREIGN KEY (#quot;publishedVersionId#quot;) REFERENCES workflow_history(#quot;versionId#quot;) ON DELETE RESTRICT"
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;updatedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;closedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request" }o--|| "public.project" : "FOREIGN KEY (#quot;projectId#quot;) REFERENCES project(id) ON DELETE CASCADE"
"public.workflow_review_request_authors" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.workflow_review_request_authors" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflow_review_request_reviewers" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.workflow_review_request_reviewers" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflow_review_request_workflow" }o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE CASCADE"
"public.workflow_review_request_workflow" }o--o| "public.workflow_history" : "FOREIGN KEY (#quot;workflowVersionId#quot;) REFERENCES workflow_history(#quot;versionId#quot;) ON DELETE SET NULL"
"public.workflow_review_request_workflow" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflows_tags" }o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE CASCADE"
"public.workflows_tags" }o--|| "public.tag_entity" : "FOREIGN KEY (#quot;tagId#quot;) REFERENCES tag_entity(id) ON DELETE CASCADE"
@ -344,61 +316,6 @@ erDiagram
text state
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_dataset" {
varchar_36_ agentId FK
json columnMapping
timestamp_3__with_time_zone createdAt
uuid createdById FK
json datasetRef
varchar_32_ datasetSource
text description
varchar_36_ id
varchar_128_ name
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_rating" {
text comment
json correction
timestamp_3__with_time_zone createdAt
varchar_36_ id
uuid ratedById FK
varchar_36_ resultId FK
timestamp_3__with_time_zone updatedAt
varchar_8_ vote
}
"public.agent_eval_result" {
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json input
json metrics
json output
timestamp_3__with_time_zone runAt
varchar_36_ runId FK
integer runIndex
varchar_255_ sourceRowId
varchar status
json toolCalls
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json metrics
timestamp_3__with_time_zone runAt
varchar_255_ runningInstanceId
varchar status
timestamp_3__with_time_zone updatedAt
}
"public.agent_execution" {
integer completionTokens
double_precision cost
@ -413,7 +330,6 @@ erDiagram
timestamp_3__with_time_zone startedAt
varchar_16_ status
timestamp_3__with_time_zone stoppedAt
varchar_2_ storedAt
varchar_128_ threadId FK
json timeline
integer totalTokens
@ -447,8 +363,6 @@ erDiagram
integer fileSizeBytes
varchar_16_ id
varchar_255_ mimeType
text storageKey
varchar_2_ storedAt
timestamp_3__with_time_zone updatedAt
}
"public.agent_history" {
@ -491,7 +405,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations
@ -729,7 +642,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.data_table" {
timestamp_3__with_time_zone createdAt
@ -891,7 +803,7 @@ erDiagram
bigint value
}
"public.installed_nodes" {
double_precision latestVersion
integer latestVersion
varchar_200_ name
varchar_241_ package FK
varchar_200_ type
@ -1071,12 +983,6 @@ erDiagram
timestamp_3__with_time_zone updatedAt
varchar_255_ workflowName
}
"public.instance_credential_assignment" {
timestamp_3__with_time_zone createdAt
varchar_36_ credentialId FK
varchar_128_ credentialUseId
timestamp_3__with_time_zone updatedAt
}
"public.instance_version_history" {
timestamp_3__with_time_zone createdAt
integer id
@ -1123,7 +1029,6 @@ erDiagram
timestamp_3__with_time_zone createdAt
json grantTypes
varchar id
boolean isFirstParty
varchar_255_ name
json redirectUris
varchar_255_ tokenEndpointAuthMethod
@ -1476,34 +1381,6 @@ erDiagram
timestamp_3__with_time_zone updatedAt
varchar_36_ workflowId FK
}
"public.workflow_review_request" {
timestamp_3__with_time_zone approvedAt
uuid closedById FK
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_50_ decision
text description
varchar_36_ id
varchar_36_ projectId FK
varchar_16_ state
varchar_255_ title
timestamp_3__with_time_zone updatedAt
uuid updatedById FK
}
"public.workflow_review_request_authors" {
uuid userId FK
varchar_36_ workflowReviewRequestId FK
}
"public.workflow_review_request_reviewers" {
uuid userId FK
varchar_36_ workflowReviewRequestId FK
}
"public.workflow_review_request_workflow" {
varchar_36_ id
varchar_36_ workflowId FK
varchar_36_ workflowReviewRequestId FK
varchar_36_ workflowVersionId FK
}
"public.workflow_statistics" {
bigint count
integer id

View File

@ -48,7 +48,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -46,7 +46,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -1,113 +0,0 @@
# public.agent_eval_dataset
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| agentId | varchar(36) | | false | | [public.agents](public.agents.md) | |
| columnMapping | json | | true | | | Maps dataset columns onto input / expectedOutput / criteria roles |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| createdById | uuid | | true | | [public.user](public.user.md) | |
| datasetRef | json | | false | | | Pointer into the dataset backend (e.g. { dataTableId }); shape varies by datasetSource |
| datasetSource | varchar(32) | | false | | | Dataset backend the cases are read from |
| description | text | | true | | | |
| id | varchar(36) | | false | [public.agent_eval_run](public.agent_eval_run.md) | | |
| name | varchar(128) | | false | | | |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| CHK_agent_eval_dataset_datasetSource | CHECK | CHECK ((("datasetSource")::text = ANY ((ARRAY['data_table'::character varying, 'google_sheets'::character varying])::text[]))) |
| FK_9d3a6fd750f7746de453cf4d5ed | FOREIGN KEY | FOREIGN KEY ("agentId") REFERENCES agents(id) ON DELETE CASCADE |
| FK_eda9e5fa5558d3f16bc2f6c21b6 | FOREIGN KEY | FOREIGN KEY ("createdById") REFERENCES "user"(id) ON DELETE SET NULL |
| PK_ac887efbb3580a577f1442cfa89 | PRIMARY KEY | PRIMARY KEY (id) |
| agent_eval_dataset_agentId_not_null | n | NOT NULL "agentId" |
| agent_eval_dataset_createdAt_not_null | n | NOT NULL "createdAt" |
| agent_eval_dataset_datasetRef_not_null | n | NOT NULL "datasetRef" |
| agent_eval_dataset_datasetSource_not_null | n | NOT NULL "datasetSource" |
| agent_eval_dataset_id_not_null | n | NOT NULL id |
| agent_eval_dataset_name_not_null | n | NOT NULL name |
| agent_eval_dataset_updatedAt_not_null | n | NOT NULL "updatedAt" |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_9d3a6fd750f7746de453cf4d5e | CREATE INDEX "IDX_9d3a6fd750f7746de453cf4d5e" ON public.agent_eval_dataset USING btree ("agentId") |
| PK_ac887efbb3580a577f1442cfa89 | CREATE UNIQUE INDEX "PK_ac887efbb3580a577f1442cfa89" ON public.agent_eval_dataset USING btree (id) |
## Relations
```mermaid
erDiagram
"public.agent_eval_dataset" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_eval_dataset" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_eval_run" }o--|| "public.agent_eval_dataset" : "FOREIGN KEY (#quot;datasetId#quot;) REFERENCES agent_eval_dataset(id) ON DELETE CASCADE"
"public.agent_eval_dataset" {
varchar_36_ agentId FK
json columnMapping
timestamp_3__with_time_zone createdAt
uuid createdById FK
json datasetRef
varchar_32_ datasetSource
text description
varchar_36_ id
varchar_128_ name
timestamp_3__with_time_zone updatedAt
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations
varchar_128_ name
varchar_255_ projectId FK
json schema
json skills
json tools
timestamp_3__with_time_zone updatedAt
varchar_36_ versionId
}
"public.user" {
timestamp_3__with_time_zone createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
uuid id
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
text mfaRecoveryCodes
text mfaSecret
varchar_255_ password
json personalizationAnswers
varchar_128_ roleSlug FK
json settings
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json metrics
timestamp_3__with_time_zone runAt
varchar_255_ runningInstanceId
varchar status
timestamp_3__with_time_zone updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,93 +0,0 @@
# public.agent_eval_rating
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| comment | text | | true | | | |
| correction | json | | true | | | Optional corrected/edited output supplied by the rater |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| id | varchar(36) | | false | | | |
| ratedById | uuid | | true | | [public.user](public.user.md) | |
| resultId | varchar(36) | | false | | [public.agent_eval_result](public.agent_eval_result.md) | |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| vote | varchar(8) | | false | | | Human feedback direction |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| CHK_agent_eval_rating_vote | CHECK | CHECK (((vote)::text = ANY ((ARRAY['up'::character varying, 'down'::character varying])::text[]))) |
| FK_9cadae6591c64498f1b58a2cef3 | FOREIGN KEY | FOREIGN KEY ("resultId") REFERENCES agent_eval_result(id) ON DELETE CASCADE |
| FK_e06a7408573a3e152e673977d2c | FOREIGN KEY | FOREIGN KEY ("ratedById") REFERENCES "user"(id) ON DELETE SET NULL |
| PK_04b7709a435e0c07520ceb37393 | PRIMARY KEY | PRIMARY KEY (id) |
| agent_eval_rating_createdAt_not_null | n | NOT NULL "createdAt" |
| agent_eval_rating_id_not_null | n | NOT NULL id |
| agent_eval_rating_resultId_not_null | n | NOT NULL "resultId" |
| agent_eval_rating_updatedAt_not_null | n | NOT NULL "updatedAt" |
| agent_eval_rating_vote_not_null | n | NOT NULL vote |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_9cadae6591c64498f1b58a2cef | CREATE INDEX "IDX_9cadae6591c64498f1b58a2cef" ON public.agent_eval_rating USING btree ("resultId") |
| PK_04b7709a435e0c07520ceb37393 | CREATE UNIQUE INDEX "PK_04b7709a435e0c07520ceb37393" ON public.agent_eval_rating USING btree (id) |
## Relations
```mermaid
erDiagram
"public.agent_eval_rating" }o--o| "public.user" : "FOREIGN KEY (#quot;ratedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_eval_rating" }o--|| "public.agent_eval_result" : "FOREIGN KEY (#quot;resultId#quot;) REFERENCES agent_eval_result(id) ON DELETE CASCADE"
"public.agent_eval_rating" {
text comment
json correction
timestamp_3__with_time_zone createdAt
varchar_36_ id
uuid ratedById FK
varchar_36_ resultId FK
timestamp_3__with_time_zone updatedAt
varchar_8_ vote
}
"public.user" {
timestamp_3__with_time_zone createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
uuid id
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
text mfaRecoveryCodes
text mfaSecret
varchar_255_ password
json personalizationAnswers
varchar_128_ roleSlug FK
json settings
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_result" {
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json input
json metrics
json output
timestamp_3__with_time_zone runAt
varchar_36_ runId FK
integer runIndex
varchar_255_ sourceRowId
varchar status
json toolCalls
timestamp_3__with_time_zone updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,98 +0,0 @@
# public.agent_eval_result
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| completedAt | timestamp(3) with time zone | | true | | | |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| errorCode | varchar(255) | | true | | | |
| errorDetails | json | | true | | | |
| id | varchar(36) | | false | [public.agent_eval_rating](public.agent_eval_rating.md) | | |
| input | json | | true | | | Snapshot of the case input actually run (row may later change) |
| metrics | json | | true | | | Per-case judge scores |
| output | json | | true | | | Agent output for this case |
| runAt | timestamp(3) with time zone | | true | | | |
| runId | varchar(36) | | false | | [public.agent_eval_run](public.agent_eval_run.md) | |
| runIndex | integer | | true | | | Order of this case within the run |
| sourceRowId | varchar(255) | | true | | | Origin dataset row id; loose pointer, rows are external and mutable |
| status | varchar | | false | | | Per-case lifecycle |
| toolCalls | json | | true | | | Tool-call timeline captured during the run |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| CHK_agent_eval_result_status | CHECK | CHECK (((status)::text = ANY ((ARRAY['new'::character varying, 'running'::character varying, 'success'::character varying, 'error'::character varying, 'cancelled'::character varying])::text[]))) |
| FK_40a2d1248a6d984f442de2fac1b | FOREIGN KEY | FOREIGN KEY ("runId") REFERENCES agent_eval_run(id) ON DELETE CASCADE |
| PK_d40a22dc56dc200313c1f0e41ac | PRIMARY KEY | PRIMARY KEY (id) |
| agent_eval_result_createdAt_not_null | n | NOT NULL "createdAt" |
| agent_eval_result_id_not_null | n | NOT NULL id |
| agent_eval_result_runId_not_null | n | NOT NULL "runId" |
| agent_eval_result_status_not_null | n | NOT NULL status |
| agent_eval_result_updatedAt_not_null | n | NOT NULL "updatedAt" |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_40a2d1248a6d984f442de2fac1 | CREATE INDEX "IDX_40a2d1248a6d984f442de2fac1" ON public.agent_eval_result USING btree ("runId") |
| PK_d40a22dc56dc200313c1f0e41ac | CREATE UNIQUE INDEX "PK_d40a22dc56dc200313c1f0e41ac" ON public.agent_eval_result USING btree (id) |
## Relations
```mermaid
erDiagram
"public.agent_eval_rating" }o--|| "public.agent_eval_result" : "FOREIGN KEY (#quot;resultId#quot;) REFERENCES agent_eval_result(id) ON DELETE CASCADE"
"public.agent_eval_result" }o--|| "public.agent_eval_run" : "FOREIGN KEY (#quot;runId#quot;) REFERENCES agent_eval_run(id) ON DELETE CASCADE"
"public.agent_eval_result" {
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json input
json metrics
json output
timestamp_3__with_time_zone runAt
varchar_36_ runId FK
integer runIndex
varchar_255_ sourceRowId
varchar status
json toolCalls
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_rating" {
text comment
json correction
timestamp_3__with_time_zone createdAt
varchar_36_ id
uuid ratedById FK
varchar_36_ resultId FK
timestamp_3__with_time_zone updatedAt
varchar_8_ vote
}
"public.agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json metrics
timestamp_3__with_time_zone runAt
varchar_255_ runningInstanceId
varchar status
timestamp_3__with_time_zone updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,119 +0,0 @@
# public.agent_eval_run
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| agentVersionId | varchar(36) | | true | | | Published agent version under test (agent_history.versionId); loose pointer, no FK so runs survive history pruning. The agent itself comes from the dataset. |
| cancelRequested | boolean | false | false | | | Fallback cancellation flag polled by the running main |
| completedAt | timestamp(3) with time zone | | true | | | |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| createdById | uuid | | true | | [public.user](public.user.md) | |
| datasetId | varchar(36) | | false | | [public.agent_eval_dataset](public.agent_eval_dataset.md) | |
| errorCode | varchar(255) | | true | | | |
| errorDetails | json | | true | | | |
| id | varchar(36) | | false | [public.agent_eval_result](public.agent_eval_result.md) | | |
| metrics | json | | true | | | Aggregated run-level scores |
| runAt | timestamp(3) with time zone | | true | | | |
| runningInstanceId | varchar(255) | | true | | | Main instance executing this run; used to coordinate cancellation |
| status | varchar | | false | | | Run lifecycle |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| CHK_agent_eval_run_status | CHECK | CHECK (((status)::text = ANY ((ARRAY['new'::character varying, 'running'::character varying, 'completed'::character varying, 'error'::character varying, 'cancelled'::character varying])::text[]))) |
| FK_39ca447735d378e365f4227abff | FOREIGN KEY | FOREIGN KEY ("datasetId") REFERENCES agent_eval_dataset(id) ON DELETE CASCADE |
| FK_54ee897f442cc7393a6d6165334 | FOREIGN KEY | FOREIGN KEY ("createdById") REFERENCES "user"(id) ON DELETE SET NULL |
| PK_280832ca3f1b43663cc0e25e77f | PRIMARY KEY | PRIMARY KEY (id) |
| agent_eval_run_cancelRequested_not_null | n | NOT NULL "cancelRequested" |
| agent_eval_run_createdAt_not_null | n | NOT NULL "createdAt" |
| agent_eval_run_datasetId_not_null | n | NOT NULL "datasetId" |
| agent_eval_run_id_not_null | n | NOT NULL id |
| agent_eval_run_status_not_null | n | NOT NULL status |
| agent_eval_run_updatedAt_not_null | n | NOT NULL "updatedAt" |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_39ca447735d378e365f4227abf | CREATE INDEX "IDX_39ca447735d378e365f4227abf" ON public.agent_eval_run USING btree ("datasetId") |
| PK_280832ca3f1b43663cc0e25e77f | CREATE UNIQUE INDEX "PK_280832ca3f1b43663cc0e25e77f" ON public.agent_eval_run USING btree (id) |
## Relations
```mermaid
erDiagram
"public.agent_eval_run" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_eval_run" }o--|| "public.agent_eval_dataset" : "FOREIGN KEY (#quot;datasetId#quot;) REFERENCES agent_eval_dataset(id) ON DELETE CASCADE"
"public.agent_eval_result" }o--|| "public.agent_eval_run" : "FOREIGN KEY (#quot;runId#quot;) REFERENCES agent_eval_run(id) ON DELETE CASCADE"
"public.agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json metrics
timestamp_3__with_time_zone runAt
varchar_255_ runningInstanceId
varchar status
timestamp_3__with_time_zone updatedAt
}
"public.user" {
timestamp_3__with_time_zone createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
uuid id
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
text mfaRecoveryCodes
text mfaSecret
varchar_255_ password
json personalizationAnswers
varchar_128_ roleSlug FK
json settings
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_dataset" {
varchar_36_ agentId FK
json columnMapping
timestamp_3__with_time_zone createdAt
uuid createdById FK
json datasetRef
varchar_32_ datasetSource
text description
varchar_36_ id
varchar_128_ name
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_result" {
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json input
json metrics
json output
timestamp_3__with_time_zone runAt
varchar_36_ runId FK
integer runIndex
varchar_255_ sourceRowId
varchar status
json toolCalls
timestamp_3__with_time_zone updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -17,7 +17,6 @@
| startedAt | timestamp(3) with time zone | | true | | | |
| status | varchar(16) | | false | | | |
| stoppedAt | timestamp(3) with time zone | | true | | | |
| storedAt | varchar(2) | 'db'::character varying | false | | | |
| threadId | varchar(128) | | false | | [public.agent_execution_threads](public.agent_execution_threads.md) | |
| timeline | json | | true | | | |
| totalTokens | integer | | true | | | |
@ -30,14 +29,12 @@
| ---- | ---- | ---------- |
| CHK_agent_execution_hitlStatus | CHECK | CHECK ((("hitlStatus")::text = ANY ((ARRAY['suspended'::character varying, 'resumed'::character varying])::text[]))) |
| CHK_agent_execution_status | CHECK | CHECK (((status)::text = ANY ((ARRAY['success'::character varying, 'error'::character varying])::text[]))) |
| CHK_agent_execution_storedAt | CHECK | CHECK ((("storedAt")::text = ANY ((ARRAY['db'::character varying, 'fs'::character varying, 's3'::character varying, 'az'::character varying])::text[]))) |
| FK_add2432fb6034cc18b6af299dce | FOREIGN KEY | FOREIGN KEY ("threadId") REFERENCES agent_execution_threads(id) ON DELETE CASCADE |
| PK_ba438acc8532addc12d1ef17049 | PRIMARY KEY | PRIMARY KEY (id) |
| agent_execution_createdAt_not_null | n | NOT NULL "createdAt" |
| agent_execution_duration_not_null | n | NOT NULL duration |
| agent_execution_id_not_null | n | NOT NULL id |
| agent_execution_status_not_null | n | NOT NULL status |
| agent_execution_storedAt_not_null | n | NOT NULL "storedAt" |
| agent_execution_threadId_not_null | n | NOT NULL "threadId" |
| agent_execution_updatedAt_not_null | n | NOT NULL "updatedAt" |
@ -69,7 +66,6 @@ erDiagram
timestamp_3__with_time_zone startedAt
varchar_16_ status
timestamp_3__with_time_zone stoppedAt
varchar_2_ storedAt
varchar_128_ threadId FK
json timeline
integer totalTokens

View File

@ -82,7 +82,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations
@ -108,7 +107,6 @@ erDiagram
timestamp_3__with_time_zone startedAt
varchar_16_ status
timestamp_3__with_time_zone stoppedAt
varchar_2_ storedAt
varchar_128_ threadId FK
json timeline
integer totalTokens

View File

@ -5,31 +5,27 @@
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| agentId | varchar(36) | | false | | [public.agents](public.agents.md) | Agent that owns this uploaded file |
| binaryDataId | text | | true | | | Opaque BinaryDataService reference (mode-prefixed, e.g. "filesystem-v2:\<uuid\>"); not an FK to binary_data, which only has rows in DB storage mode |
| binaryDataId | text | | false | | | Opaque BinaryDataService reference (mode-prefixed, e.g. "filesystem-v2:\<uuid\>"); not an FK to binary_data, which only has rows in DB storage mode |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| fileName | varchar(255) | | false | | | |
| fileSizeBytes | integer | | false | | | Uploaded file size in bytes |
| id | varchar(16) | | false | | | Application-generated n8n nano ID |
| mimeType | varchar(255) | | false | | | |
| storageKey | text | | false | | | Key addressing the bytes within storedAt: a binary_data.fileId for db, a byte-store key otherwise. Not a foreign key |
| storedAt | varchar(2) | 'db'::character varying | false | | | Where the file bytes live: 'db' (binary_data table), or a blob-storage backend ('fs', 's3', 'az') |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| CHK_agent_files_storedAt | CHECK | CHECK ((("storedAt")::text = ANY ((ARRAY['db'::character varying, 'fs'::character varying, 's3'::character varying, 'az'::character varying])::text[]))) |
| FK_aca4514cb500494b64356c2e164 | FOREIGN KEY | FOREIGN KEY ("agentId") REFERENCES agents(id) ON DELETE CASCADE |
| PK_692920e59217af7d124cd95106f | PRIMARY KEY | PRIMARY KEY (id) |
| agent_files_agentId_not_null | n | NOT NULL "agentId" |
| agent_files_binaryDataId_not_null | n | NOT NULL "binaryDataId" |
| agent_files_createdAt_not_null | n | NOT NULL "createdAt" |
| agent_files_fileName_not_null | n | NOT NULL "fileName" |
| agent_files_fileSizeBytes_not_null | n | NOT NULL "fileSizeBytes" |
| agent_files_id_not_null | n | NOT NULL id |
| agent_files_mimeType_not_null | n | NOT NULL "mimeType" |
| agent_files_storageKey_not_null | n | NOT NULL "storageKey" |
| agent_files_storedAt_not_null | n | NOT NULL "storedAt" |
| agent_files_updatedAt_not_null | n | NOT NULL "updatedAt" |
## Indexes
@ -56,13 +52,10 @@ erDiagram
integer fileSizeBytes
varchar_16_ id
varchar_255_ mimeType
text storageKey
varchar_2_ storedAt
timestamp_3__with_time_zone updatedAt
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -58,7 +58,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -51,7 +51,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -47,7 +47,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -5,9 +5,8 @@
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| activeVersionId | varchar(36) | | true | | [public.agent_history](public.agent_history.md) | |
| availableInMCP | boolean | false | false | | | Whether MCP clients granted agent scopes may operate on this agent |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| id | varchar(36) | | false | [public.agent_chat_subscriptions](public.agent_chat_subscriptions.md) [public.agent_checkpoints](public.agent_checkpoints.md) [public.agent_eval_dataset](public.agent_eval_dataset.md) [public.agent_execution_threads](public.agent_execution_threads.md) [public.agent_files](public.agent_files.md) [public.agent_history](public.agent_history.md) [public.agent_task_definition](public.agent_task_definition.md) [public.agent_task_run_lock](public.agent_task_run_lock.md) [public.agents_memory_entries](public.agents_memory_entries.md) [public.agents_memory_entry_cursors](public.agents_memory_entry_cursors.md) [public.agents_memory_entry_locks](public.agents_memory_entry_locks.md) [public.agents_memory_entry_sources](public.agents_memory_entry_sources.md) [public.agents_observation_cursors](public.agents_observation_cursors.md) [public.agents_observation_locks](public.agents_observation_locks.md) [public.agents_observations](public.agents_observations.md) | | |
| id | varchar(36) | | false | [public.agent_chat_subscriptions](public.agent_chat_subscriptions.md) [public.agent_checkpoints](public.agent_checkpoints.md) [public.agent_execution_threads](public.agent_execution_threads.md) [public.agent_files](public.agent_files.md) [public.agent_history](public.agent_history.md) [public.agent_task_definition](public.agent_task_definition.md) [public.agent_task_run_lock](public.agent_task_run_lock.md) [public.agents_memory_entries](public.agents_memory_entries.md) [public.agents_memory_entry_cursors](public.agents_memory_entry_cursors.md) [public.agents_memory_entry_locks](public.agents_memory_entry_locks.md) [public.agents_memory_entry_sources](public.agents_memory_entry_sources.md) [public.agents_observation_cursors](public.agents_observation_cursors.md) [public.agents_observation_locks](public.agents_observation_locks.md) [public.agents_observations](public.agents_observations.md) | | |
| integrations | json | '[]'::json | false | | | |
| name | varchar(128) | | false | | | |
| projectId | varchar(255) | | false | | [public.project](public.project.md) | |
@ -24,7 +23,6 @@
| FK_940597dfe9753375309ce6aeea0 | FOREIGN KEY | FOREIGN KEY ("activeVersionId") REFERENCES agent_history("versionId") ON DELETE SET NULL |
| FK_a30d560207c4071d98aa03c179c | FOREIGN KEY | FOREIGN KEY ("projectId") REFERENCES project(id) ON DELETE CASCADE |
| PK_9c653f28ae19c5884d5baf6a1d9 | PRIMARY KEY | PRIMARY KEY (id) |
| agents_availableInMCP_not_null | n | NOT NULL "availableInMCP" |
| agents_createdAt_not_null | n | NOT NULL "createdAt" |
| agents_id_not_null | n | NOT NULL id |
| agents_integrations_not_null | n | NOT NULL integrations |
@ -50,7 +48,6 @@ erDiagram
"public.agents" }o--o| "public.agent_history" : "FOREIGN KEY (#quot;activeVersionId#quot;) REFERENCES agent_history(#quot;versionId#quot;) ON DELETE SET NULL"
"public.agent_chat_subscriptions" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_checkpoints" }o--o| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_eval_dataset" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_execution_threads" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_files" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
"public.agent_history" }o--|| "public.agents" : "FOREIGN KEY (#quot;agentId#quot;) REFERENCES agents(id) ON DELETE CASCADE"
@ -67,7 +64,6 @@ erDiagram
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations
@ -106,18 +102,6 @@ erDiagram
text state
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_dataset" {
varchar_36_ agentId FK
json columnMapping
timestamp_3__with_time_zone createdAt
uuid createdById FK
json datasetRef
varchar_32_ datasetSource
text description
varchar_36_ id
varchar_128_ name
timestamp_3__with_time_zone updatedAt
}
"public.agent_execution_threads" {
varchar_36_ agentId FK
varchar_255_ agentName
@ -145,8 +129,6 @@ erDiagram
integer fileSizeBytes
varchar_16_ id
varchar_255_ mimeType
text storageKey
varchar_2_ storedAt
timestamp_3__with_time_zone updatedAt
}
"public.agent_task_definition" {

View File

@ -74,7 +74,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -50,7 +50,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -50,7 +50,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -66,7 +66,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -50,7 +50,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -54,7 +54,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -73,7 +73,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations

View File

@ -80,7 +80,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.chat_hub_agent_tools" {
uuid agentId FK

View File

@ -97,7 +97,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.chat_hub_messages" {
uuid agentId FK

View File

@ -57,7 +57,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
```

View File

@ -6,7 +6,7 @@
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| data | text | | false | | | |
| id | varchar(36) | | false | [public.chat_hub_agents](public.chat_hub_agents.md) [public.chat_hub_sessions](public.chat_hub_sessions.md) [public.credential_dependency](public.credential_dependency.md) [public.dynamic_credential_entry](public.dynamic_credential_entry.md) [public.dynamic_credential_user_entry](public.dynamic_credential_user_entry.md) [public.instance_ai_mcp_registry_connections](public.instance_ai_mcp_registry_connections.md) [public.instance_credential_assignment](public.instance_credential_assignment.md) [public.shared_credentials](public.shared_credentials.md) | | |
| id | varchar(36) | | false | [public.chat_hub_agents](public.chat_hub_agents.md) [public.chat_hub_sessions](public.chat_hub_sessions.md) [public.credential_dependency](public.credential_dependency.md) [public.dynamic_credential_entry](public.dynamic_credential_entry.md) [public.dynamic_credential_user_entry](public.dynamic_credential_user_entry.md) [public.instance_ai_mcp_registry_connections](public.instance_ai_mcp_registry_connections.md) [public.shared_credentials](public.shared_credentials.md) | | |
| isGlobal | boolean | false | false | | | |
| isManaged | boolean | false | false | | | |
| isResolvable | boolean | false | false | | | |
@ -15,13 +15,11 @@
| resolverId | varchar(16) | | true | | [public.dynamic_credential_resolver](public.dynamic_credential_resolver.md) | |
| type | varchar(128) | | false | | | |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| usageScope | varchar(16) | 'project'::character varying | false | | | Where the credential may be consumed: a project-owned feature or an instance-level feature |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| CHK_credentials_entity_usageScope | CHECK | CHECK ((("usageScope")::text = ANY ((ARRAY['project'::character varying, 'instance'::character varying])::text[]))) |
| credentials_entity_createdAt_not_null | n | NOT NULL "createdAt" |
| credentials_entity_data_not_null | n | NOT NULL data |
| credentials_entity_id_not_null1 | n | NOT NULL id |
@ -34,7 +32,6 @@
| credentials_entity_resolverId_foreign | FOREIGN KEY | FOREIGN KEY ("resolverId") REFERENCES dynamic_credential_resolver(id) ON DELETE SET NULL |
| credentials_entity_type_not_null | n | NOT NULL type |
| credentials_entity_updatedAt_not_null | n | NOT NULL "updatedAt" |
| credentials_entity_usageScope_not_null | n | NOT NULL "usageScope" |
## Indexes
@ -56,7 +53,6 @@ erDiagram
"public.dynamic_credential_entry" }o--|| "public.credentials_entity" : "FOREIGN KEY (credential_id) REFERENCES credentials_entity(id) ON DELETE CASCADE"
"public.dynamic_credential_user_entry" }o--|| "public.credentials_entity" : "FOREIGN KEY (#quot;credentialId#quot;) REFERENCES credentials_entity(id) ON DELETE CASCADE"
"public.instance_ai_mcp_registry_connections" }o--|| "public.credentials_entity" : "FOREIGN KEY (#quot;credentialId#quot;) REFERENCES credentials_entity(id) ON DELETE CASCADE"
"public.instance_credential_assignment" }o--|| "public.credentials_entity" : "FOREIGN KEY (#quot;credentialId#quot;) REFERENCES credentials_entity(id) ON DELETE RESTRICT"
"public.shared_credentials" }o--|| "public.credentials_entity" : "FOREIGN KEY (#quot;credentialsId#quot;) REFERENCES credentials_entity(id) ON DELETE CASCADE"
"public.credentials_entity" }o--o| "public.dynamic_credential_resolver" : "FOREIGN KEY (#quot;resolverId#quot;) REFERENCES dynamic_credential_resolver(id) ON DELETE SET NULL"
@ -72,7 +68,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.chat_hub_agents" {
timestamp_3__with_time_zone createdAt
@ -136,12 +131,6 @@ erDiagram
timestamp_3__with_time_zone updatedAt
uuid userId FK
}
"public.instance_credential_assignment" {
timestamp_3__with_time_zone createdAt
varchar_36_ credentialId FK
varchar_128_ credentialUseId
timestamp_3__with_time_zone updatedAt
}
"public.shared_credentials" {
timestamp_3__with_time_zone createdAt
varchar_36_ credentialsId FK

View File

@ -61,7 +61,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.dynamic_credential_resolver" {
text config

View File

@ -59,7 +59,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.dynamic_credential_entry" {
timestamp_3__with_time_zone createdAt

View File

@ -63,7 +63,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.dynamic_credential_resolver" {
text config

View File

@ -4,7 +4,7 @@
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| latestVersion | double precision | 1 | false | | | |
| latestVersion | integer | 1 | false | | | |
| name | varchar(200) | | false | | | |
| package | varchar(241) | | false | | [public.installed_packages](public.installed_packages.md) | |
| type | varchar(200) | | false | | | |
@ -34,7 +34,7 @@ erDiagram
"public.installed_nodes" }o--|| "public.installed_packages" : "FOREIGN KEY (package) REFERENCES installed_packages(#quot;packageName#quot;) ON UPDATE CASCADE ON DELETE CASCADE"
"public.installed_nodes" {
double_precision latestVersion
integer latestVersion
varchar_200_ name
varchar_241_ package FK
varchar_200_ type

View File

@ -43,7 +43,7 @@ erDiagram
timestamp_3__with_time_zone updatedAt
}
"public.installed_nodes" {
double_precision latestVersion
integer latestVersion
varchar_200_ name
varchar_241_ package FK
varchar_200_ type

View File

@ -64,7 +64,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.mcp_registry_server" {
timestamp_3__with_time_zone createdAt

View File

@ -1,61 +0,0 @@
# public.instance_credential_assignment
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| credentialId | varchar(36) | | false | | [public.credentials_entity](public.credentials_entity.md) | Credential assigned to the registered use; repositories enforce instance usage scope |
| credentialUseId | varchar(128) | | false | | | Stable credential use registered with the instance credential broker |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| FK_instance_credential_assignment_credential | FOREIGN KEY | FOREIGN KEY ("credentialId") REFERENCES credentials_entity(id) ON DELETE RESTRICT |
| PK_984b0a98726485c9a330cde6b2f | PRIMARY KEY | PRIMARY KEY ("credentialUseId") |
| instance_credential_assignment_createdAt_not_null | n | NOT NULL "createdAt" |
| instance_credential_assignment_credentialId_not_null | n | NOT NULL "credentialId" |
| instance_credential_assignment_credentialUseId_not_null | n | NOT NULL "credentialUseId" |
| instance_credential_assignment_updatedAt_not_null | n | NOT NULL "updatedAt" |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_9626b8dc1bee96a86a3ee09d73 | CREATE INDEX "IDX_9626b8dc1bee96a86a3ee09d73" ON public.instance_credential_assignment USING btree ("credentialId") |
| PK_984b0a98726485c9a330cde6b2f | CREATE UNIQUE INDEX "PK_984b0a98726485c9a330cde6b2f" ON public.instance_credential_assignment USING btree ("credentialUseId") |
## Relations
```mermaid
erDiagram
"public.instance_credential_assignment" }o--|| "public.credentials_entity" : "FOREIGN KEY (#quot;credentialId#quot;) REFERENCES credentials_entity(id) ON DELETE RESTRICT"
"public.instance_credential_assignment" {
timestamp_3__with_time_zone createdAt
varchar_36_ credentialId FK
varchar_128_ credentialUseId
timestamp_3__with_time_zone updatedAt
}
"public.credentials_entity" {
timestamp_3__with_time_zone createdAt
text data
varchar_36_ id
boolean isGlobal
boolean isManaged
boolean isResolvable
varchar_128_ name
boolean resolvableAllowFallback
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -44,7 +44,6 @@ erDiagram
timestamp_3__with_time_zone createdAt
json grantTypes
varchar id
boolean isFirstParty
varchar_255_ name
json redirectUris
varchar_255_ tokenEndpointAuthMethod

View File

@ -72,7 +72,6 @@ erDiagram
timestamp_3__with_time_zone createdAt
json grantTypes
varchar id
boolean isFirstParty
varchar_255_ name
json redirectUris
varchar_255_ tokenEndpointAuthMethod

View File

@ -9,7 +9,6 @@
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| grantTypes | json | | false | | | |
| id | varchar | | false | [public.oauth_access_tokens](public.oauth_access_tokens.md) [public.oauth_authorization_codes](public.oauth_authorization_codes.md) [public.oauth_refresh_tokens](public.oauth_refresh_tokens.md) [public.oauth_user_consents](public.oauth_user_consents.md) | | |
| isFirstParty | boolean | false | false | | | |
| name | varchar(255) | | false | | | |
| redirectUris | json | | false | | | |
| tokenEndpointAuthMethod | varchar(255) | 'none'::character varying | false | | | Possible values: none, client_secret_basic or client_secret_post |
@ -23,7 +22,6 @@
| oauth_clients_createdAt_not_null | n | NOT NULL "createdAt" |
| oauth_clients_grantTypes_not_null | n | NOT NULL "grantTypes" |
| oauth_clients_id_not_null | n | NOT NULL id |
| oauth_clients_isFirstParty_not_null | n | NOT NULL "isFirstParty" |
| oauth_clients_name_not_null | n | NOT NULL name |
| oauth_clients_redirectUris_not_null | n | NOT NULL "redirectUris" |
| oauth_clients_tokenEndpointAuthMethod_not_null | n | NOT NULL "tokenEndpointAuthMethod" |
@ -51,7 +49,6 @@ erDiagram
timestamp_3__with_time_zone createdAt
json grantTypes
varchar id
boolean isFirstParty
varchar_255_ name
json redirectUris
varchar_255_ tokenEndpointAuthMethod

View File

@ -56,7 +56,6 @@ erDiagram
timestamp_3__with_time_zone createdAt
json grantTypes
varchar id
boolean isFirstParty
varchar_255_ name
json redirectUris
varchar_255_ tokenEndpointAuthMethod

View File

@ -52,7 +52,6 @@ erDiagram
timestamp_3__with_time_zone createdAt
json grantTypes
varchar id
boolean isFirstParty
varchar_255_ name
json redirectUris
varchar_255_ tokenEndpointAuthMethod

View File

@ -9,7 +9,7 @@
| customTelemetryTags | json | '[]'::json | false | | | |
| description | varchar(512) | | true | | | |
| icon | json | | true | | | |
| id | varchar(36) | | false | [public.agent_execution_threads](public.agent_execution_threads.md) [public.agents](public.agents.md) [public.data_table](public.data_table.md) [public.folder](public.folder.md) [public.insights_metadata](public.insights_metadata.md) [public.instance_ai_threads](public.instance_ai_threads.md) [public.project_relation](public.project_relation.md) [public.project_secrets_provider_access](public.project_secrets_provider_access.md) [public.role_mapping_rule_project](public.role_mapping_rule_project.md) [public.shared_credentials](public.shared_credentials.md) [public.shared_workflow](public.shared_workflow.md) [public.variables](public.variables.md) [public.workflow_review_request](public.workflow_review_request.md) | | |
| id | varchar(36) | | false | [public.agent_execution_threads](public.agent_execution_threads.md) [public.agents](public.agents.md) [public.data_table](public.data_table.md) [public.folder](public.folder.md) [public.insights_metadata](public.insights_metadata.md) [public.instance_ai_threads](public.instance_ai_threads.md) [public.project_relation](public.project_relation.md) [public.project_secrets_provider_access](public.project_secrets_provider_access.md) [public.role_mapping_rule_project](public.role_mapping_rule_project.md) [public.shared_credentials](public.shared_credentials.md) [public.shared_workflow](public.shared_workflow.md) [public.variables](public.variables.md) | | |
| name | varchar(255) | | false | | | |
| type | varchar(36) | | false | | | |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
@ -51,7 +51,6 @@ erDiagram
"public.shared_credentials" }o--|| "public.project" : "FOREIGN KEY (#quot;projectId#quot;) REFERENCES project(id) ON DELETE CASCADE"
"public.shared_workflow" }o--|| "public.project" : "FOREIGN KEY (#quot;projectId#quot;) REFERENCES project(id) ON DELETE CASCADE"
"public.variables" }o--o| "public.project" : "FOREIGN KEY (#quot;projectId#quot;) REFERENCES project(id) ON DELETE CASCADE"
"public.workflow_review_request" }o--|| "public.project" : "FOREIGN KEY (#quot;projectId#quot;) REFERENCES project(id) ON DELETE CASCADE"
"public.project" {
timestamp_3__with_time_zone createdAt
@ -102,7 +101,6 @@ erDiagram
}
"public.agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
timestamp_3__with_time_zone createdAt
varchar_36_ id
json integrations
@ -184,20 +182,6 @@ erDiagram
varchar_50_ type
text value
}
"public.workflow_review_request" {
timestamp_3__with_time_zone approvedAt
uuid closedById FK
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_50_ decision
text description
varchar_36_ id
varchar_36_ projectId FK
varchar_16_ state
varchar_255_ title
timestamp_3__with_time_zone updatedAt
uuid updatedById FK
}
```
---

View File

@ -56,7 +56,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_128_ type
timestamp_3__with_time_zone updatedAt
varchar_16_ usageScope
}
"public.project" {
timestamp_3__with_time_zone createdAt

View File

@ -8,7 +8,7 @@
| disabled | boolean | false | false | | | |
| email | varchar(255) | | true | | | |
| firstName | varchar(32) | | true | | | |
| id | uuid | gen_random_uuid() | false | [public.agent_eval_dataset](public.agent_eval_dataset.md) [public.agent_eval_rating](public.agent_eval_rating.md) [public.agent_eval_run](public.agent_eval_run.md) [public.agent_history](public.agent_history.md) [public.auth_identity](public.auth_identity.md) [public.chat_hub_agents](public.chat_hub_agents.md) [public.chat_hub_sessions](public.chat_hub_sessions.md) [public.chat_hub_tools](public.chat_hub_tools.md) [public.dynamic_credential_user_entry](public.dynamic_credential_user_entry.md) [public.evaluation_collection](public.evaluation_collection.md) [public.instance_ai_mcp_registry_connections](public.instance_ai_mcp_registry_connections.md) [public.instance_ai_pending_confirmations](public.instance_ai_pending_confirmations.md) [public.instance_ai_thread_grants](public.instance_ai_thread_grants.md) [public.oauth_access_tokens](public.oauth_access_tokens.md) [public.oauth_authorization_codes](public.oauth_authorization_codes.md) [public.oauth_refresh_tokens](public.oauth_refresh_tokens.md) [public.oauth_user_consents](public.oauth_user_consents.md) [public.project](public.project.md) [public.project_relation](public.project_relation.md) [public.user_api_keys](public.user_api_keys.md) [public.user_favorites](public.user_favorites.md) [public.workflow_builder_session](public.workflow_builder_session.md) [public.workflow_publish_history](public.workflow_publish_history.md) [public.workflow_review_request](public.workflow_review_request.md) [public.workflow_review_request_authors](public.workflow_review_request_authors.md) [public.workflow_review_request_reviewers](public.workflow_review_request_reviewers.md) | | |
| id | uuid | gen_random_uuid() | false | [public.agent_history](public.agent_history.md) [public.auth_identity](public.auth_identity.md) [public.chat_hub_agents](public.chat_hub_agents.md) [public.chat_hub_sessions](public.chat_hub_sessions.md) [public.chat_hub_tools](public.chat_hub_tools.md) [public.dynamic_credential_user_entry](public.dynamic_credential_user_entry.md) [public.evaluation_collection](public.evaluation_collection.md) [public.instance_ai_mcp_registry_connections](public.instance_ai_mcp_registry_connections.md) [public.instance_ai_pending_confirmations](public.instance_ai_pending_confirmations.md) [public.instance_ai_thread_grants](public.instance_ai_thread_grants.md) [public.oauth_access_tokens](public.oauth_access_tokens.md) [public.oauth_authorization_codes](public.oauth_authorization_codes.md) [public.oauth_refresh_tokens](public.oauth_refresh_tokens.md) [public.oauth_user_consents](public.oauth_user_consents.md) [public.project](public.project.md) [public.project_relation](public.project_relation.md) [public.user_api_keys](public.user_api_keys.md) [public.user_favorites](public.user_favorites.md) [public.workflow_builder_session](public.workflow_builder_session.md) [public.workflow_publish_history](public.workflow_publish_history.md) | | |
| lastActiveAt | date | | true | | | |
| lastName | varchar(32) | | true | | | |
| mfaEnabled | boolean | false | false | | | |
@ -47,9 +47,6 @@
```mermaid
erDiagram
"public.agent_eval_dataset" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_eval_rating" }o--o| "public.user" : "FOREIGN KEY (#quot;ratedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_eval_run" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.agent_history" }o--o| "public.user" : "FOREIGN KEY (#quot;publishedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.auth_identity" }o--o| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id)"
"public.chat_hub_agents" }o--|| "public.user" : "FOREIGN KEY (#quot;ownerId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
@ -70,11 +67,6 @@ erDiagram
"public.user_favorites" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.workflow_builder_session" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.workflow_publish_history" }o--o| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;updatedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;closedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request_authors" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.workflow_review_request_reviewers" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.user" }o--|| "public.role" : "FOREIGN KEY (#quot;roleSlug#quot;) REFERENCES role(slug)"
"public.user" {
@ -94,44 +86,6 @@ erDiagram
json settings
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_dataset" {
varchar_36_ agentId FK
json columnMapping
timestamp_3__with_time_zone createdAt
uuid createdById FK
json datasetRef
varchar_32_ datasetSource
text description
varchar_36_ id
varchar_128_ name
timestamp_3__with_time_zone updatedAt
}
"public.agent_eval_rating" {
text comment
json correction
timestamp_3__with_time_zone createdAt
varchar_36_ id
uuid ratedById FK
varchar_36_ resultId FK
timestamp_3__with_time_zone updatedAt
varchar_8_ vote
}
"public.agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
timestamp_3__with_time_zone completedAt
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
json errorDetails
varchar_36_ id
json metrics
timestamp_3__with_time_zone runAt
varchar_255_ runningInstanceId
varchar status
timestamp_3__with_time_zone updatedAt
}
"public.agent_history" {
varchar_36_ agentId FK
varchar_255_ author
@ -330,28 +284,6 @@ erDiagram
varchar_36_ versionId FK
varchar_36_ workflowId FK
}
"public.workflow_review_request" {
timestamp_3__with_time_zone approvedAt
uuid closedById FK
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_50_ decision
text description
varchar_36_ id
varchar_36_ projectId FK
varchar_16_ state
varchar_255_ title
timestamp_3__with_time_zone updatedAt
uuid updatedById FK
}
"public.workflow_review_request_authors" {
uuid userId FK
varchar_36_ workflowReviewRequestId FK
}
"public.workflow_review_request_reviewers" {
uuid userId FK
varchar_36_ workflowReviewRequestId FK
}
"public.role" {
timestamp_3__with_time_zone createdAt
text description

View File

@ -9,7 +9,7 @@
| connections | json | | false | | | |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| description | text | | true | | | |
| id | varchar(36) | | false | [public.ai_builder_temporary_workflow](public.ai_builder_temporary_workflow.md) [public.chat_hub_messages](public.chat_hub_messages.md) [public.chat_hub_sessions](public.chat_hub_sessions.md) [public.evaluation_collection](public.evaluation_collection.md) [public.evaluation_config](public.evaluation_config.md) [public.execution_entity](public.execution_entity.md) [public.insights_metadata](public.insights_metadata.md) [public.processed_data](public.processed_data.md) [public.shared_workflow](public.shared_workflow.md) [public.test_run](public.test_run.md) [public.webhook_entity](public.webhook_entity.md) [public.workflow_builder_session](public.workflow_builder_session.md) [public.workflow_dependency](public.workflow_dependency.md) [public.workflow_history](public.workflow_history.md) [public.workflow_publication_trigger_status](public.workflow_publication_trigger_status.md) [public.workflow_publish_history](public.workflow_publish_history.md) [public.workflow_published_version](public.workflow_published_version.md) [public.workflow_review_request_workflow](public.workflow_review_request_workflow.md) [public.workflows_tags](public.workflows_tags.md) | | |
| id | varchar(36) | | false | [public.ai_builder_temporary_workflow](public.ai_builder_temporary_workflow.md) [public.chat_hub_messages](public.chat_hub_messages.md) [public.chat_hub_sessions](public.chat_hub_sessions.md) [public.evaluation_collection](public.evaluation_collection.md) [public.evaluation_config](public.evaluation_config.md) [public.execution_entity](public.execution_entity.md) [public.insights_metadata](public.insights_metadata.md) [public.processed_data](public.processed_data.md) [public.shared_workflow](public.shared_workflow.md) [public.test_run](public.test_run.md) [public.webhook_entity](public.webhook_entity.md) [public.workflow_builder_session](public.workflow_builder_session.md) [public.workflow_dependency](public.workflow_dependency.md) [public.workflow_history](public.workflow_history.md) [public.workflow_publication_trigger_status](public.workflow_publication_trigger_status.md) [public.workflow_publish_history](public.workflow_publish_history.md) [public.workflow_published_version](public.workflow_published_version.md) [public.workflows_tags](public.workflows_tags.md) | | |
| isArchived | boolean | false | false | | | |
| meta | json | | true | | | |
| name | varchar(128) | | false | | | |
@ -83,7 +83,6 @@ erDiagram
"public.workflow_publication_trigger_status" }o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE CASCADE"
"public.workflow_publish_history" }o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE CASCADE"
"public.workflow_published_version" |o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE RESTRICT"
"public.workflow_review_request_workflow" }o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE CASCADE"
"public.workflows_tags" }o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE CASCADE"
"public.workflow_entity" }o--o| "public.folder" : "FOREIGN KEY (#quot;parentFolderId#quot;) REFERENCES folder(id) ON DELETE CASCADE"
@ -301,12 +300,6 @@ erDiagram
timestamp_3__with_time_zone updatedAt
varchar_36_ workflowId FK
}
"public.workflow_review_request_workflow" {
varchar_36_ id
varchar_36_ workflowId FK
varchar_36_ workflowReviewRequestId FK
varchar_36_ workflowVersionId FK
}
"public.workflows_tags" {
varchar_36_ tagId FK
varchar_36_ workflowId FK

View File

@ -13,7 +13,7 @@
| nodeGroups | json | '[]'::json | false | | | |
| nodes | json | | false | | | |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| versionId | varchar(36) | | false | [public.workflow_entity](public.workflow_entity.md) [public.workflow_publication_trigger_status](public.workflow_publication_trigger_status.md) [public.workflow_publish_history](public.workflow_publish_history.md) [public.workflow_published_version](public.workflow_published_version.md) [public.workflow_review_request_workflow](public.workflow_review_request_workflow.md) | | |
| versionId | varchar(36) | | false | [public.workflow_entity](public.workflow_entity.md) [public.workflow_publication_trigger_status](public.workflow_publication_trigger_status.md) [public.workflow_publish_history](public.workflow_publish_history.md) [public.workflow_published_version](public.workflow_published_version.md) | | |
| workflowId | varchar(36) | | false | | [public.workflow_entity](public.workflow_entity.md) | |
## Constraints
@ -48,7 +48,6 @@ erDiagram
"public.workflow_publication_trigger_status" }o--|| "public.workflow_history" : "FOREIGN KEY (#quot;versionId#quot;) REFERENCES workflow_history(#quot;versionId#quot;) ON DELETE CASCADE"
"public.workflow_publish_history" }o--o| "public.workflow_history" : "FOREIGN KEY (#quot;versionId#quot;) REFERENCES workflow_history(#quot;versionId#quot;) ON DELETE SET NULL"
"public.workflow_published_version" }o--|| "public.workflow_history" : "FOREIGN KEY (#quot;publishedVersionId#quot;) REFERENCES workflow_history(#quot;versionId#quot;) ON DELETE RESTRICT"
"public.workflow_review_request_workflow" }o--o| "public.workflow_history" : "FOREIGN KEY (#quot;workflowVersionId#quot;) REFERENCES workflow_history(#quot;versionId#quot;) ON DELETE SET NULL"
"public.workflow_history" }o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE CASCADE"
"public.workflow_history" {
@ -110,12 +109,6 @@ erDiagram
timestamp_3__with_time_zone updatedAt
varchar_36_ workflowId FK
}
"public.workflow_review_request_workflow" {
varchar_36_ id
varchar_36_ workflowId FK
varchar_36_ workflowReviewRequestId FK
varchar_36_ workflowVersionId FK
}
```
---

View File

@ -1,119 +0,0 @@
# public.workflow_review_request
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| approvedAt | timestamp(3) with time zone | | true | | | |
| closedById | uuid | | true | | [public.user](public.user.md) | |
| createdAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| createdById | uuid | | true | | [public.user](public.user.md) | |
| decision | varchar(50) | 'pending'::character varying | false | | | Latest review outcome while the request is open |
| description | text | | true | | | |
| id | varchar(36) | | false | [public.workflow_review_request_authors](public.workflow_review_request_authors.md) [public.workflow_review_request_reviewers](public.workflow_review_request_reviewers.md) [public.workflow_review_request_workflow](public.workflow_review_request_workflow.md) | | |
| projectId | varchar(36) | | false | | [public.project](public.project.md) | |
| state | varchar(16) | 'open'::character varying | false | | | Review lifecycle: open reviews accept actions; closed reviews are done |
| title | varchar(255) | | false | | | |
| updatedAt | timestamp(3) with time zone | CURRENT_TIMESTAMP(3) | false | | | |
| updatedById | uuid | | true | | [public.user](public.user.md) | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| CHK_workflow_review_request_decision | CHECK | CHECK (((decision)::text = ANY ((ARRAY['pending'::character varying, 'changes_requested'::character varying, 'approved'::character varying])::text[]))) |
| CHK_workflow_review_request_state | CHECK | CHECK (((state)::text = ANY ((ARRAY['open'::character varying, 'closed'::character varying])::text[]))) |
| FK_21d5f5a831d2e38960030bb4f60 | FOREIGN KEY | FOREIGN KEY ("createdById") REFERENCES "user"(id) ON DELETE SET NULL |
| FK_2817c3a0245197b498818c447cb | FOREIGN KEY | FOREIGN KEY ("updatedById") REFERENCES "user"(id) ON DELETE SET NULL |
| FK_c218d1df94adc3b169dee3cc06c | FOREIGN KEY | FOREIGN KEY ("projectId") REFERENCES project(id) ON DELETE CASCADE |
| FK_d53ef208e6055f328dd7b897e51 | FOREIGN KEY | FOREIGN KEY ("closedById") REFERENCES "user"(id) ON DELETE SET NULL |
| PK_ae17b90023bcd05e003cd8f64dc | PRIMARY KEY | PRIMARY KEY (id) |
| workflow_review_request_createdAt_not_null | n | NOT NULL "createdAt" |
| workflow_review_request_decision_not_null | n | NOT NULL decision |
| workflow_review_request_id_not_null | n | NOT NULL id |
| workflow_review_request_projectId_not_null | n | NOT NULL "projectId" |
| workflow_review_request_state_not_null | n | NOT NULL state |
| workflow_review_request_title_not_null | n | NOT NULL title |
| workflow_review_request_updatedAt_not_null | n | NOT NULL "updatedAt" |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_workflow_review_request_project_state | CREATE INDEX "IDX_workflow_review_request_project_state" ON public.workflow_review_request USING btree ("projectId", state) |
| PK_ae17b90023bcd05e003cd8f64dc | CREATE UNIQUE INDEX "PK_ae17b90023bcd05e003cd8f64dc" ON public.workflow_review_request USING btree (id) |
## Relations
```mermaid
erDiagram
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;closedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;createdById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request_authors" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflow_review_request_reviewers" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflow_review_request_workflow" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflow_review_request" }o--|| "public.project" : "FOREIGN KEY (#quot;projectId#quot;) REFERENCES project(id) ON DELETE CASCADE"
"public.workflow_review_request" }o--o| "public.user" : "FOREIGN KEY (#quot;updatedById#quot;) REFERENCES #quot;user#quot;(id) ON DELETE SET NULL"
"public.workflow_review_request" {
timestamp_3__with_time_zone approvedAt
uuid closedById FK
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_50_ decision
text description
varchar_36_ id
varchar_36_ projectId FK
varchar_16_ state
varchar_255_ title
timestamp_3__with_time_zone updatedAt
uuid updatedById FK
}
"public.user" {
timestamp_3__with_time_zone createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
uuid id
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
text mfaRecoveryCodes
text mfaSecret
varchar_255_ password
json personalizationAnswers
varchar_128_ roleSlug FK
json settings
timestamp_3__with_time_zone updatedAt
}
"public.workflow_review_request_authors" {
uuid userId FK
varchar_36_ workflowReviewRequestId FK
}
"public.workflow_review_request_reviewers" {
uuid userId FK
varchar_36_ workflowReviewRequestId FK
}
"public.workflow_review_request_workflow" {
varchar_36_ id
varchar_36_ workflowId FK
varchar_36_ workflowReviewRequestId FK
varchar_36_ workflowVersionId FK
}
"public.project" {
timestamp_3__with_time_zone createdAt
uuid creatorId FK
json customTelemetryTags
varchar_512_ description
json icon
varchar_36_ id
varchar_255_ name
varchar_36_ type
timestamp_3__with_time_zone updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,73 +0,0 @@
# public.workflow_review_request_authors
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| userId | uuid | | false | | [public.user](public.user.md) | |
| workflowReviewRequestId | varchar(36) | | false | | [public.workflow_review_request](public.workflow_review_request.md) | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| FK_a9c79ab0c352aa0496c39ea56a4 | FOREIGN KEY | FOREIGN KEY ("userId") REFERENCES "user"(id) ON DELETE CASCADE |
| FK_c255ae5087010c1ab73ac8684af | FOREIGN KEY | FOREIGN KEY ("workflowReviewRequestId") REFERENCES workflow_review_request(id) ON DELETE CASCADE |
| PK_ae197bb5135d422f6392a879e0c | PRIMARY KEY | PRIMARY KEY ("workflowReviewRequestId", "userId") |
| workflow_review_request_author_workflowReviewRequestId_not_null | n | NOT NULL "workflowReviewRequestId" |
| workflow_review_request_authors_userId_not_null | n | NOT NULL "userId" |
## Indexes
| Name | Definition |
| ---- | ---------- |
| PK_ae197bb5135d422f6392a879e0c | CREATE UNIQUE INDEX "PK_ae197bb5135d422f6392a879e0c" ON public.workflow_review_request_authors USING btree ("workflowReviewRequestId", "userId") |
## Relations
```mermaid
erDiagram
"public.workflow_review_request_authors" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.workflow_review_request_authors" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflow_review_request_authors" {
uuid userId FK
varchar_36_ workflowReviewRequestId FK
}
"public.user" {
timestamp_3__with_time_zone createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
uuid id
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
text mfaRecoveryCodes
text mfaSecret
varchar_255_ password
json personalizationAnswers
varchar_128_ roleSlug FK
json settings
timestamp_3__with_time_zone updatedAt
}
"public.workflow_review_request" {
timestamp_3__with_time_zone approvedAt
uuid closedById FK
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_50_ decision
text description
varchar_36_ id
varchar_36_ projectId FK
varchar_16_ state
varchar_255_ title
timestamp_3__with_time_zone updatedAt
uuid updatedById FK
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,74 +0,0 @@
# public.workflow_review_request_reviewers
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| userId | uuid | | false | | [public.user](public.user.md) | |
| workflowReviewRequestId | varchar(36) | | false | | [public.workflow_review_request](public.workflow_review_request.md) | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| FK_81d0a2584aa4e8e5e0d6aa68f32 | FOREIGN KEY | FOREIGN KEY ("userId") REFERENCES "user"(id) ON DELETE CASCADE |
| FK_ba29e1cc5cdba43ce7b810b3ddd | FOREIGN KEY | FOREIGN KEY ("workflowReviewRequestId") REFERENCES workflow_review_request(id) ON DELETE CASCADE |
| PK_4715c6035e0ebc4f3e8716f1e34 | PRIMARY KEY | PRIMARY KEY ("workflowReviewRequestId", "userId") |
| workflow_review_request_review_workflowReviewRequestId_not_null | n | NOT NULL "workflowReviewRequestId" |
| workflow_review_request_reviewers_userId_not_null | n | NOT NULL "userId" |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_workflow_review_request_reviewers_user | CREATE INDEX "IDX_workflow_review_request_reviewers_user" ON public.workflow_review_request_reviewers USING btree ("userId", "workflowReviewRequestId") |
| PK_4715c6035e0ebc4f3e8716f1e34 | CREATE UNIQUE INDEX "PK_4715c6035e0ebc4f3e8716f1e34" ON public.workflow_review_request_reviewers USING btree ("workflowReviewRequestId", "userId") |
## Relations
```mermaid
erDiagram
"public.workflow_review_request_reviewers" }o--|| "public.user" : "FOREIGN KEY (#quot;userId#quot;) REFERENCES #quot;user#quot;(id) ON DELETE CASCADE"
"public.workflow_review_request_reviewers" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflow_review_request_reviewers" {
uuid userId FK
varchar_36_ workflowReviewRequestId FK
}
"public.user" {
timestamp_3__with_time_zone createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
uuid id
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
text mfaRecoveryCodes
text mfaSecret
varchar_255_ password
json personalizationAnswers
varchar_128_ roleSlug FK
json settings
timestamp_3__with_time_zone updatedAt
}
"public.workflow_review_request" {
timestamp_3__with_time_zone approvedAt
uuid closedById FK
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_50_ decision
text description
varchar_36_ id
varchar_36_ projectId FK
varchar_16_ state
varchar_255_ title
timestamp_3__with_time_zone updatedAt
uuid updatedById FK
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,100 +0,0 @@
# public.workflow_review_request_workflow
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| id | varchar(36) | | false | | | |
| workflowId | varchar(36) | | false | | [public.workflow_entity](public.workflow_entity.md) | |
| workflowReviewRequestId | varchar(36) | | false | | [public.workflow_review_request](public.workflow_review_request.md) | |
| workflowVersionId | varchar(36) | | true | | [public.workflow_history](public.workflow_history.md) | Pinned workflow_history version for this review item |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| FK_0f6f0f2c6d46b806fee02962ac2 | FOREIGN KEY | FOREIGN KEY ("workflowVersionId") REFERENCES workflow_history("versionId") ON DELETE SET NULL |
| FK_619f5b0544bcec60c3387e82f2f | FOREIGN KEY | FOREIGN KEY ("workflowId") REFERENCES workflow_entity(id) ON DELETE CASCADE |
| FK_e44b652e6dc99ef1364a2d85504 | FOREIGN KEY | FOREIGN KEY ("workflowReviewRequestId") REFERENCES workflow_review_request(id) ON DELETE CASCADE |
| PK_be3bf4facb054cf2b2b116b3b9c | PRIMARY KEY | PRIMARY KEY (id) |
| workflow_review_request_workfl_workflowReviewRequestId_not_null | n | NOT NULL "workflowReviewRequestId" |
| workflow_review_request_workflow_id_not_null | n | NOT NULL id |
| workflow_review_request_workflow_workflowId_not_null | n | NOT NULL "workflowId" |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_workflow_review_request_workflow_workflow_request | CREATE INDEX "IDX_workflow_review_request_workflow_workflow_request" ON public.workflow_review_request_workflow USING btree ("workflowId", "workflowReviewRequestId") |
| PK_be3bf4facb054cf2b2b116b3b9c | CREATE UNIQUE INDEX "PK_be3bf4facb054cf2b2b116b3b9c" ON public.workflow_review_request_workflow USING btree (id) |
| UQ_workflow_review_request_workflow_request_workflow | CREATE UNIQUE INDEX "UQ_workflow_review_request_workflow_request_workflow" ON public.workflow_review_request_workflow USING btree ("workflowReviewRequestId", "workflowId") |
## Relations
```mermaid
erDiagram
"public.workflow_review_request_workflow" }o--|| "public.workflow_entity" : "FOREIGN KEY (#quot;workflowId#quot;) REFERENCES workflow_entity(id) ON DELETE CASCADE"
"public.workflow_review_request_workflow" }o--|| "public.workflow_review_request" : "FOREIGN KEY (#quot;workflowReviewRequestId#quot;) REFERENCES workflow_review_request(id) ON DELETE CASCADE"
"public.workflow_review_request_workflow" }o--o| "public.workflow_history" : "FOREIGN KEY (#quot;workflowVersionId#quot;) REFERENCES workflow_history(#quot;versionId#quot;) ON DELETE SET NULL"
"public.workflow_review_request_workflow" {
varchar_36_ id
varchar_36_ workflowId FK
varchar_36_ workflowReviewRequestId FK
varchar_36_ workflowVersionId FK
}
"public.workflow_entity" {
boolean active
varchar_36_ activeVersionId FK
json connections
timestamp_3__with_time_zone createdAt
text description
varchar_36_ id
boolean isArchived
json meta
varchar_128_ name
json nodeGroups
json nodes
varchar_36_ parentFolderId FK
json pinData
json settings
varchar sourceWorkflowId
json staticData
integer triggerCount
timestamp_3__with_time_zone updatedAt
integer versionCounter
character_36_ versionId
}
"public.workflow_review_request" {
timestamp_3__with_time_zone approvedAt
uuid closedById FK
timestamp_3__with_time_zone createdAt
uuid createdById FK
varchar_50_ decision
text description
varchar_36_ id
varchar_36_ projectId FK
varchar_16_ state
varchar_255_ title
timestamp_3__with_time_zone updatedAt
uuid updatedById FK
}
"public.workflow_history" {
varchar_255_ authors
boolean autosaved
json connections
timestamp_3__with_time_zone createdAt
text description
varchar_128_ name
json nodeGroups
json nodes
timestamp_3__with_time_zone updatedAt
varchar_36_ versionId
varchar_36_ workflowId FK
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -10,18 +10,14 @@ Auto-generated from the SQLite migrations in @n8n/db. Do not edit by hand.
| ---- | ------- | ------- | ---- |
| [agent_chat_subscriptions](agent_chat_subscriptions.md) | 6 | | table |
| [agent_checkpoints](agent_checkpoints.md) | 6 | | table |
| [agent_eval_dataset](agent_eval_dataset.md) | 10 | | table |
| [agent_eval_rating](agent_eval_rating.md) | 8 | | table |
| [agent_eval_result](agent_eval_result.md) | 15 | | table |
| [agent_eval_run](agent_eval_run.md) | 14 | | table |
| [agent_execution](agent_execution.md) | 19 | | table |
| [agent_execution](agent_execution.md) | 18 | | table |
| [agent_execution_threads](agent_execution_threads.md) | 17 | | table |
| [agent_files](agent_files.md) | 10 | | table |
| [agent_files](agent_files.md) | 8 | | table |
| [agent_history](agent_history.md) | 9 | | table |
| [agent_task_definition](agent_task_definition.md) | 7 | | table |
| [agent_task_run_lock](agent_task_run_lock.md) | 6 | | table |
| [agent_task_snapshot](agent_task_snapshot.md) | 8 | | table |
| [agents](agents.md) | 12 | | table |
| [agents](agents.md) | 11 | | table |
| [agents_memory_entries](agents_memory_entries.md) | 13 | | table |
| [agents_memory_entry_cursors](agents_memory_entry_cursors.md) | 6 | | table |
| [agents_memory_entry_locks](agents_memory_entry_locks.md) | 6 | | table |
@ -44,7 +40,7 @@ Auto-generated from the SQLite migrations in @n8n/db. Do not edit by hand.
| [chat_hub_sessions](chat_hub_sessions.md) | 13 | | table |
| [chat_hub_tools](chat_hub_tools.md) | 9 | | table |
| [credential_dependency](credential_dependency.md) | 5 | | table |
| [credentials_entity](credentials_entity.md) | 12 | | table |
| [credentials_entity](credentials_entity.md) | 11 | | table |
| [data_table](data_table.md) | 5 | | table |
| [data_table_column](data_table_column.md) | 7 | | table |
| [deployment_key](deployment_key.md) | 7 | | table |
@ -81,13 +77,12 @@ Auto-generated from the SQLite migrations in @n8n/db. Do not edit by hand.
| [instance_ai_thread_grants](instance_ai_thread_grants.md) | 5 | | table |
| [instance_ai_threads](instance_ai_threads.md) | 7 | | table |
| [instance_ai_workflow_snapshots](instance_ai_workflow_snapshots.md) | 7 | | table |
| [instance_credential_assignment](instance_credential_assignment.md) | 4 | | table |
| [instance_version_history](instance_version_history.md) | 5 | | table |
| [invalid_auth_token](invalid_auth_token.md) | 2 | | table |
| [mcp_registry_server](mcp_registry_server.md) | 7 | | table |
| [oauth_access_tokens](oauth_access_tokens.md) | 3 | | table |
| [oauth_authorization_codes](oauth_authorization_codes.md) | 13 | | table |
| [oauth_clients](oauth_clients.md) | 10 | | table |
| [oauth_clients](oauth_clients.md) | 9 | | table |
| [oauth_refresh_tokens](oauth_refresh_tokens.md) | 7 | | table |
| [oauth_user_consents](oauth_user_consents.md) | 5 | | table |
| [processed_data](processed_data.md) | 5 | | table |
@ -124,10 +119,6 @@ Auto-generated from the SQLite migrations in @n8n/db. Do not edit by hand.
| [workflow_publication_trigger_status](workflow_publication_trigger_status.md) | 8 | | table |
| [workflow_publish_history](workflow_publish_history.md) | 6 | | table |
| [workflow_published_version](workflow_published_version.md) | 4 | | table |
| [workflow_review_request](workflow_review_request.md) | 12 | | table |
| [workflow_review_request_authors](workflow_review_request_authors.md) | 2 | | table |
| [workflow_review_request_reviewers](workflow_review_request_reviewers.md) | 2 | | table |
| [workflow_review_request_workflow](workflow_review_request_workflow.md) | 4 | | table |
| [workflow_statistics](workflow_statistics.md) | 7 | | table |
| [workflows_tags](workflows_tags.md) | 2 | | table |
@ -138,13 +129,6 @@ erDiagram
"agent_chat_subscriptions" |o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_checkpoints" }o--o| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_dataset" }o--o| "user" : "FOREIGN KEY (createdById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agent_eval_dataset" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_rating" }o--o| "user" : "FOREIGN KEY (ratedById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agent_eval_rating" }o--|| "agent_eval_result" : "FOREIGN KEY (resultId) REFERENCES agent_eval_result (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_result" }o--|| "agent_eval_run" : "FOREIGN KEY (runId) REFERENCES agent_eval_run (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_run" }o--o| "user" : "FOREIGN KEY (createdById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agent_eval_run" }o--|| "agent_eval_dataset" : "FOREIGN KEY (datasetId) REFERENCES agent_eval_dataset (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_execution" }o--|| "agent_execution_threads" : "FOREIGN KEY (threadId) REFERENCES agent_execution_threads (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_execution_threads" }o--o| "agent_history" : "FOREIGN KEY (taskVersionId) REFERENCES agent_history (versionId) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agent_execution_threads" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
@ -155,8 +139,8 @@ erDiagram
"agent_task_definition" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_task_run_lock" |o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_task_snapshot" |o--|| "agent_history" : "FOREIGN KEY (versionId) REFERENCES agent_history (versionId) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agents" }o--o| "agent_history" : "FOREIGN KEY (activeVersionId) REFERENCES agent_history (versionId) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agents" }o--|| "project" : "FOREIGN KEY (projectId) REFERENCES project (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agents" }o--o| "agent_history" : "FOREIGN KEY (activeVersionId) REFERENCES agent_history (versionId) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agents_memory_entries" }o--o| "agents_memory_entries" : "FOREIGN KEY (supersededBy) REFERENCES agents_memory_entries (id) ON UPDATE NO ACTION ON DELETE NO ACTION MATCH NONE"
"agents_memory_entries" }o--|| "agents_resources" : "FOREIGN KEY (resourceId) REFERENCES agents_resources (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agents_memory_entries" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
@ -246,7 +230,6 @@ erDiagram
"instance_ai_thread_grants" |o--|| "user" : "FOREIGN KEY (userId) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"instance_ai_thread_grants" |o--|| "instance_ai_threads" : "FOREIGN KEY (threadId) REFERENCES instance_ai_threads (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"instance_ai_threads" }o--|| "project" : "FOREIGN KEY (projectId) REFERENCES project (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"instance_credential_assignment" }o--|| "credentials_entity" : "FOREIGN KEY (credentialId) REFERENCES credentials_entity (id) ON UPDATE NO ACTION ON DELETE RESTRICT MATCH NONE"
"oauth_access_tokens" }o--|| "user" : "FOREIGN KEY (userId) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"oauth_access_tokens" }o--|| "oauth_clients" : "FOREIGN KEY (clientId) REFERENCES oauth_clients (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"oauth_authorization_codes" }o--|| "oauth_clients" : "FOREIGN KEY (clientId) REFERENCES oauth_clients (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
@ -301,17 +284,6 @@ erDiagram
"workflow_published_version" |o--|| "workflow_entity" : "FOREIGN KEY (workflowId) REFERENCES workflow_entity (id) ON UPDATE NO ACTION ON DELETE RESTRICT MATCH NONE"
"workflow_published_version" |o--|| "workflow_entity" : "FOREIGN KEY (workflowId) REFERENCES workflow_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflow_published_version" }o--|| "workflow_history" : "FOREIGN KEY (publishedVersionId) REFERENCES workflow_history (versionId) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflow_review_request" }o--o| "user" : "FOREIGN KEY (closedById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"workflow_review_request" }o--o| "user" : "FOREIGN KEY (updatedById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"workflow_review_request" }o--o| "user" : "FOREIGN KEY (createdById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"workflow_review_request" }o--|| "project" : "FOREIGN KEY (projectId) REFERENCES project (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflow_review_request_authors" |o--|| "user" : "FOREIGN KEY (userId) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflow_review_request_authors" |o--|| "workflow_review_request" : "FOREIGN KEY (workflowReviewRequestId) REFERENCES workflow_review_request (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflow_review_request_reviewers" |o--|| "user" : "FOREIGN KEY (userId) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflow_review_request_reviewers" |o--|| "workflow_review_request" : "FOREIGN KEY (workflowReviewRequestId) REFERENCES workflow_review_request (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflow_review_request_workflow" }o--o| "workflow_history" : "FOREIGN KEY (workflowVersionId) REFERENCES workflow_history (versionId) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"workflow_review_request_workflow" }o--|| "workflow_entity" : "FOREIGN KEY (workflowId) REFERENCES workflow_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflow_review_request_workflow" }o--|| "workflow_review_request" : "FOREIGN KEY (workflowReviewRequestId) REFERENCES workflow_review_request (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflows_tags" |o--|| "tag_entity" : "FOREIGN KEY (tagId) REFERENCES tag_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"workflows_tags" |o--|| "workflow_entity" : "FOREIGN KEY (workflowId) REFERENCES workflow_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
@ -331,61 +303,6 @@ erDiagram
TEXT state
datetime_3_ updatedAt
}
"agent_eval_dataset" {
varchar_36_ agentId FK
TEXT columnMapping
datetime_3_ createdAt
varchar createdById FK
TEXT datasetRef
varchar_32_ datasetSource
TEXT description
varchar_36_ id PK
varchar_128_ name
datetime_3_ updatedAt
}
"agent_eval_rating" {
TEXT comment
TEXT correction
datetime_3_ createdAt
varchar_36_ id PK
varchar ratedById FK
varchar_36_ resultId FK
datetime_3_ updatedAt
varchar_8_ vote
}
"agent_eval_result" {
datetime_3_ completedAt
datetime_3_ createdAt
varchar_255_ errorCode
TEXT errorDetails
varchar_36_ id PK
TEXT input
TEXT metrics
TEXT output
datetime_3_ runAt
varchar_36_ runId FK
INTEGER runIndex
varchar_255_ sourceRowId
varchar status
TEXT toolCalls
datetime_3_ updatedAt
}
"agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
datetime_3_ completedAt
datetime_3_ createdAt
varchar createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
TEXT errorDetails
varchar_36_ id PK
TEXT metrics
datetime_3_ runAt
varchar_255_ runningInstanceId
varchar status
datetime_3_ updatedAt
}
"agent_execution" {
INTEGER completionTokens
REAL cost
@ -400,7 +317,6 @@ erDiagram
datetime_3_ startedAt
varchar_16_ status
datetime_3_ stoppedAt
VARCHAR_2_ storedAt
varchar_128_ threadId FK
TEXT timeline
INTEGER totalTokens
@ -434,8 +350,6 @@ erDiagram
INTEGER fileSizeBytes
varchar_16_ id PK
varchar_255_ mimeType
TEXT storageKey
varchar_2_ storedAt
datetime_3_ updatedAt
}
"agent_history" {
@ -478,7 +392,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations
@ -716,7 +629,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
"data_table" {
datetime_3_ createdAt
@ -878,7 +790,7 @@ erDiagram
bigint value
}
"installed_nodes" {
REAL latestVersion
INTEGER latestVersion
char_200_ name PK
char_214_ package FK
char_200_ type
@ -1058,12 +970,6 @@ erDiagram
datetime_3_ updatedAt
varchar_255_ workflowName PK
}
"instance_credential_assignment" {
datetime_3_ createdAt
varchar_36_ credentialId FK
varchar_128_ credentialUseId PK
datetime_3_ updatedAt
}
"instance_version_history" {
datetime_3_ createdAt
INTEGER id
@ -1110,7 +1016,6 @@ erDiagram
datetime_3_ createdAt
TEXT grantTypes
varchar id PK
boolean isFirstParty
varchar_255_ name
TEXT redirectUris
varchar_255_ tokenEndpointAuthMethod
@ -1465,34 +1370,6 @@ erDiagram
datetime_3_ updatedAt
varchar_36_ workflowId PK
}
"workflow_review_request" {
datetime_3_ approvedAt
varchar closedById FK
datetime_3_ createdAt
varchar createdById FK
varchar_50_ decision
TEXT description
varchar_36_ id PK
varchar_36_ projectId FK
varchar_16_ state
varchar_255_ title
datetime_3_ updatedAt
varchar updatedById FK
}
"workflow_review_request_authors" {
varchar userId PK
varchar_36_ workflowReviewRequestId PK
}
"workflow_review_request_reviewers" {
varchar userId PK
varchar_36_ workflowReviewRequestId PK
}
"workflow_review_request_workflow" {
varchar_36_ id PK
varchar_36_ workflowId FK
varchar_36_ workflowReviewRequestId FK
varchar_36_ workflowVersionId FK
}
"workflow_statistics" {
INTEGER count
INTEGER id

View File

@ -57,7 +57,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -54,7 +54,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -1,118 +0,0 @@
# agent_eval_dataset
## Description
<details>
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "agent_eval_dataset" ("id" varchar(36) PRIMARY KEY NOT NULL, "name" varchar(128) NOT NULL, "description" text, "agentId" varchar(36) NOT NULL, "datasetSource" varchar(32) NOT NULL, "datasetRef" text NOT NULL, "columnMapping" text, "createdById" varchar, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), CONSTRAINT "CHK_agent_eval_dataset_datasetSource" CHECK ("datasetSource" IN ('data_table', 'google_sheets')), CONSTRAINT "FK_9d3a6fd750f7746de453cf4d5ed" FOREIGN KEY ("agentId") REFERENCES "agents" ("id") ON DELETE CASCADE, CONSTRAINT "FK_eda9e5fa5558d3f16bc2f6c21b6" FOREIGN KEY ("createdById") REFERENCES "user" ("id") ON DELETE SET NULL)
```
</details>
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| agentId | varchar(36) | | false | | [agents](agents.md) | |
| columnMapping | TEXT | | true | | | |
| createdAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| createdById | varchar | | true | | [user](user.md) | |
| datasetRef | TEXT | | false | | | |
| datasetSource | varchar(32) | | false | | | |
| description | TEXT | | true | | | |
| id | varchar(36) | | false | [agent_eval_run](agent_eval_run.md) | | |
| name | varchar(128) | | false | | | |
| updatedAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - | CHECK | CHECK ("datasetSource" IN ('data_table', 'google_sheets')) |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (createdById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE |
| - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
| id | PRIMARY KEY | PRIMARY KEY (id) |
| sqlite_autoindex_agent_eval_dataset_1 | PRIMARY KEY | PRIMARY KEY (id) |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_9d3a6fd750f7746de453cf4d5e | CREATE INDEX "IDX_9d3a6fd750f7746de453cf4d5e" ON "agent_eval_dataset" ("agentId") |
| sqlite_autoindex_agent_eval_dataset_1 | PRIMARY KEY (id) |
## Relations
```mermaid
erDiagram
"agent_eval_dataset" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_dataset" }o--o| "user" : "FOREIGN KEY (createdById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agent_eval_run" }o--|| "agent_eval_dataset" : "FOREIGN KEY (datasetId) REFERENCES agent_eval_dataset (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_dataset" {
varchar_36_ agentId FK
TEXT columnMapping
datetime_3_ createdAt
varchar createdById FK
TEXT datasetRef
varchar_32_ datasetSource
TEXT description
varchar_36_ id PK
varchar_128_ name
datetime_3_ updatedAt
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations
varchar_128_ name
varchar_255_ projectId FK
TEXT schema
TEXT skills
TEXT tools
datetime_3_ updatedAt
varchar_36_ versionId
}
"user" {
datetime_3_ createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
varchar id PK
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
TEXT mfaRecoveryCodes
TEXT mfaSecret
varchar password
TEXT personalizationAnswers
varchar_128_ roleSlug FK
TEXT settings
datetime_3_ updatedAt
}
"agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
datetime_3_ completedAt
datetime_3_ createdAt
varchar createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
TEXT errorDetails
varchar_36_ id PK
TEXT metrics
datetime_3_ runAt
varchar_255_ runningInstanceId
varchar status
datetime_3_ updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,100 +0,0 @@
# agent_eval_rating
## Description
<details>
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "agent_eval_rating" ("id" varchar(36) PRIMARY KEY NOT NULL, "resultId" varchar(36) NOT NULL, "vote" varchar(8) NOT NULL, "comment" text, "correction" text, "ratedById" varchar, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), CONSTRAINT "CHK_agent_eval_rating_vote" CHECK ("vote" IN ('up', 'down')), CONSTRAINT "FK_9cadae6591c64498f1b58a2cef3" FOREIGN KEY ("resultId") REFERENCES "agent_eval_result" ("id") ON DELETE CASCADE, CONSTRAINT "FK_e06a7408573a3e152e673977d2c" FOREIGN KEY ("ratedById") REFERENCES "user" ("id") ON DELETE SET NULL)
```
</details>
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| comment | TEXT | | true | | | |
| correction | TEXT | | true | | | |
| createdAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| id | varchar(36) | | false | | | |
| ratedById | varchar | | true | | [user](user.md) | |
| resultId | varchar(36) | | false | | [agent_eval_result](agent_eval_result.md) | |
| updatedAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| vote | varchar(8) | | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - | CHECK | CHECK ("vote" IN ('up', 'down')) |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (ratedById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE |
| - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (resultId) REFERENCES agent_eval_result (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
| id | PRIMARY KEY | PRIMARY KEY (id) |
| sqlite_autoindex_agent_eval_rating_1 | PRIMARY KEY | PRIMARY KEY (id) |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_9cadae6591c64498f1b58a2cef | CREATE INDEX "IDX_9cadae6591c64498f1b58a2cef" ON "agent_eval_rating" ("resultId") |
| sqlite_autoindex_agent_eval_rating_1 | PRIMARY KEY (id) |
## Relations
```mermaid
erDiagram
"agent_eval_rating" }o--o| "user" : "FOREIGN KEY (ratedById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agent_eval_rating" }o--|| "agent_eval_result" : "FOREIGN KEY (resultId) REFERENCES agent_eval_result (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_rating" {
TEXT comment
TEXT correction
datetime_3_ createdAt
varchar_36_ id PK
varchar ratedById FK
varchar_36_ resultId FK
datetime_3_ updatedAt
varchar_8_ vote
}
"user" {
datetime_3_ createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
varchar id PK
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
TEXT mfaRecoveryCodes
TEXT mfaSecret
varchar password
TEXT personalizationAnswers
varchar_128_ roleSlug FK
TEXT settings
datetime_3_ updatedAt
}
"agent_eval_result" {
datetime_3_ completedAt
datetime_3_ createdAt
varchar_255_ errorCode
TEXT errorDetails
varchar_36_ id PK
TEXT input
TEXT metrics
TEXT output
datetime_3_ runAt
varchar_36_ runId FK
INTEGER runIndex
varchar_255_ sourceRowId
varchar status
TEXT toolCalls
datetime_3_ updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,105 +0,0 @@
# agent_eval_result
## Description
<details>
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "agent_eval_result" ("id" varchar(36) PRIMARY KEY NOT NULL, "runId" varchar(36) NOT NULL, "sourceRowId" varchar(255), "runIndex" integer, "status" varchar NOT NULL, "input" text, "output" text, "toolCalls" text, "metrics" text, "runAt" datetime(3), "completedAt" datetime(3), "errorCode" varchar(255), "errorDetails" text, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), CONSTRAINT "CHK_agent_eval_result_status" CHECK ("status" IN ('new', 'running', 'success', 'error', 'cancelled')), CONSTRAINT "FK_40a2d1248a6d984f442de2fac1b" FOREIGN KEY ("runId") REFERENCES "agent_eval_run" ("id") ON DELETE CASCADE)
```
</details>
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| completedAt | datetime(3) | | true | | | |
| createdAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| errorCode | varchar(255) | | true | | | |
| errorDetails | TEXT | | true | | | |
| id | varchar(36) | | false | [agent_eval_rating](agent_eval_rating.md) | | |
| input | TEXT | | true | | | |
| metrics | TEXT | | true | | | |
| output | TEXT | | true | | | |
| runAt | datetime(3) | | true | | | |
| runId | varchar(36) | | false | | [agent_eval_run](agent_eval_run.md) | |
| runIndex | INTEGER | | true | | | |
| sourceRowId | varchar(255) | | true | | | |
| status | varchar | | false | | | |
| toolCalls | TEXT | | true | | | |
| updatedAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - | CHECK | CHECK ("status" IN ('new', 'running', 'success', 'error', 'cancelled')) |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (runId) REFERENCES agent_eval_run (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
| id | PRIMARY KEY | PRIMARY KEY (id) |
| sqlite_autoindex_agent_eval_result_1 | PRIMARY KEY | PRIMARY KEY (id) |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_40a2d1248a6d984f442de2fac1 | CREATE INDEX "IDX_40a2d1248a6d984f442de2fac1" ON "agent_eval_result" ("runId") |
| sqlite_autoindex_agent_eval_result_1 | PRIMARY KEY (id) |
## Relations
```mermaid
erDiagram
"agent_eval_rating" }o--|| "agent_eval_result" : "FOREIGN KEY (resultId) REFERENCES agent_eval_result (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_result" }o--|| "agent_eval_run" : "FOREIGN KEY (runId) REFERENCES agent_eval_run (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_result" {
datetime_3_ completedAt
datetime_3_ createdAt
varchar_255_ errorCode
TEXT errorDetails
varchar_36_ id PK
TEXT input
TEXT metrics
TEXT output
datetime_3_ runAt
varchar_36_ runId FK
INTEGER runIndex
varchar_255_ sourceRowId
varchar status
TEXT toolCalls
datetime_3_ updatedAt
}
"agent_eval_rating" {
TEXT comment
TEXT correction
datetime_3_ createdAt
varchar_36_ id PK
varchar ratedById FK
varchar_36_ resultId FK
datetime_3_ updatedAt
varchar_8_ vote
}
"agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
datetime_3_ completedAt
datetime_3_ createdAt
varchar createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
TEXT errorDetails
varchar_36_ id PK
TEXT metrics
datetime_3_ runAt
varchar_255_ runningInstanceId
varchar status
datetime_3_ updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -1,125 +0,0 @@
# agent_eval_run
## Description
<details>
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "agent_eval_run" ("id" varchar(36) PRIMARY KEY NOT NULL, "datasetId" varchar(36) NOT NULL, "agentVersionId" varchar(36), "status" varchar NOT NULL, "runAt" datetime(3), "completedAt" datetime(3), "metrics" text, "errorCode" varchar(255), "errorDetails" text, "runningInstanceId" varchar(255), "cancelRequested" boolean NOT NULL DEFAULT (false), "createdById" varchar, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), CONSTRAINT "CHK_agent_eval_run_status" CHECK ("status" IN ('new', 'running', 'completed', 'error', 'cancelled')), CONSTRAINT "FK_39ca447735d378e365f4227abff" FOREIGN KEY ("datasetId") REFERENCES "agent_eval_dataset" ("id") ON DELETE CASCADE, CONSTRAINT "FK_54ee897f442cc7393a6d6165334" FOREIGN KEY ("createdById") REFERENCES "user" ("id") ON DELETE SET NULL)
```
</details>
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| agentVersionId | varchar(36) | | true | | | |
| cancelRequested | boolean | false | false | | | |
| completedAt | datetime(3) | | true | | | |
| createdAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| createdById | varchar | | true | | [user](user.md) | |
| datasetId | varchar(36) | | false | | [agent_eval_dataset](agent_eval_dataset.md) | |
| errorCode | varchar(255) | | true | | | |
| errorDetails | TEXT | | true | | | |
| id | varchar(36) | | false | [agent_eval_result](agent_eval_result.md) | | |
| metrics | TEXT | | true | | | |
| runAt | datetime(3) | | true | | | |
| runningInstanceId | varchar(255) | | true | | | |
| status | varchar | | false | | | |
| updatedAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - | CHECK | CHECK ("status" IN ('new', 'running', 'completed', 'error', 'cancelled')) |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (createdById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE |
| - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (datasetId) REFERENCES agent_eval_dataset (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
| id | PRIMARY KEY | PRIMARY KEY (id) |
| sqlite_autoindex_agent_eval_run_1 | PRIMARY KEY | PRIMARY KEY (id) |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_39ca447735d378e365f4227abf | CREATE INDEX "IDX_39ca447735d378e365f4227abf" ON "agent_eval_run" ("datasetId") |
| sqlite_autoindex_agent_eval_run_1 | PRIMARY KEY (id) |
## Relations
```mermaid
erDiagram
"agent_eval_run" }o--o| "user" : "FOREIGN KEY (createdById) REFERENCES user (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agent_eval_run" }o--|| "agent_eval_dataset" : "FOREIGN KEY (datasetId) REFERENCES agent_eval_dataset (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_result" }o--|| "agent_eval_run" : "FOREIGN KEY (runId) REFERENCES agent_eval_run (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_run" {
varchar_36_ agentVersionId
boolean cancelRequested
datetime_3_ completedAt
datetime_3_ createdAt
varchar createdById FK
varchar_36_ datasetId FK
varchar_255_ errorCode
TEXT errorDetails
varchar_36_ id PK
TEXT metrics
datetime_3_ runAt
varchar_255_ runningInstanceId
varchar status
datetime_3_ updatedAt
}
"user" {
datetime_3_ createdAt
boolean disabled
varchar_255_ email
varchar_32_ firstName
varchar id PK
date lastActiveAt
varchar_32_ lastName
boolean mfaEnabled
TEXT mfaRecoveryCodes
TEXT mfaSecret
varchar password
TEXT personalizationAnswers
varchar_128_ roleSlug FK
TEXT settings
datetime_3_ updatedAt
}
"agent_eval_dataset" {
varchar_36_ agentId FK
TEXT columnMapping
datetime_3_ createdAt
varchar createdById FK
TEXT datasetRef
varchar_32_ datasetSource
TEXT description
varchar_36_ id PK
varchar_128_ name
datetime_3_ updatedAt
}
"agent_eval_result" {
datetime_3_ completedAt
datetime_3_ createdAt
varchar_255_ errorCode
TEXT errorDetails
varchar_36_ id PK
TEXT input
TEXT metrics
TEXT output
datetime_3_ runAt
varchar_36_ runId FK
INTEGER runIndex
varchar_255_ sourceRowId
varchar status
TEXT toolCalls
datetime_3_ updatedAt
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -6,7 +6,7 @@
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "agent_execution" ("id" varchar(36) PRIMARY KEY NOT NULL, "threadId" varchar(128) NOT NULL, "status" varchar(16) NOT NULL, "startedAt" datetime(3), "stoppedAt" datetime(3), "duration" integer NOT NULL DEFAULT (0), "userMessage" text, "model" varchar(255), "promptTokens" integer, "completionTokens" integer, "totalTokens" integer, "cost" real, "timeline" text, "error" text, "hitlStatus" varchar(16), "source" varchar(32), "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "storedAt" VARCHAR(2) NOT NULL DEFAULT 'db' CONSTRAINT "CHK_agent_execution_storedAt" CHECK("storedAt" IN ('db', 'fs', 's3', 'az')), CONSTRAINT "CHK_agent_execution_status" CHECK (((("status" IN ('success', 'error'))))), CONSTRAINT "CHK_agent_execution_hitlStatus" CHECK (((("hitlStatus" IN ('suspended', 'resumed'))))), CONSTRAINT "FK_add2432fb6034cc18b6af299dce" FOREIGN KEY ("threadId") REFERENCES "agent_execution_threads" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)
CREATE TABLE "agent_execution" ("id" varchar(36) PRIMARY KEY NOT NULL, "threadId" varchar(128) NOT NULL, "status" varchar(16) NOT NULL, "startedAt" datetime(3), "stoppedAt" datetime(3), "duration" integer NOT NULL DEFAULT (0), "userMessage" text, "model" varchar(255), "promptTokens" integer, "completionTokens" integer, "totalTokens" integer, "cost" real, "timeline" text, "error" text, "hitlStatus" varchar(16), "source" varchar(32), "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), CONSTRAINT "CHK_agent_execution_status" CHECK (((("status" IN ('success', 'error'))))), CONSTRAINT "CHK_agent_execution_hitlStatus" CHECK (((("hitlStatus" IN ('suspended', 'resumed'))))), CONSTRAINT "FK_add2432fb6034cc18b6af299dce" FOREIGN KEY ("threadId") REFERENCES "agent_execution_threads" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)
```
</details>
@ -28,7 +28,6 @@ CREATE TABLE "agent_execution" ("id" varchar(36) PRIMARY KEY NOT NULL, "threadId
| startedAt | datetime(3) | | true | | | |
| status | varchar(16) | | false | | | |
| stoppedAt | datetime(3) | | true | | | |
| storedAt | VARCHAR(2) | 'db' | false | | | |
| threadId | varchar(128) | | false | | [agent_execution_threads](agent_execution_threads.md) | |
| timeline | TEXT | | true | | | |
| totalTokens | INTEGER | | true | | | |
@ -39,7 +38,6 @@ CREATE TABLE "agent_execution" ("id" varchar(36) PRIMARY KEY NOT NULL, "threadId
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - | CHECK | CHECK("storedAt" IN ('db', 'fs', 's3', 'az')) |
| - | CHECK | CHECK (((("status" IN ('success', 'error'))))) |
| - | CHECK | CHECK (((("hitlStatus" IN ('suspended', 'resumed'))))) |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (threadId) REFERENCES agent_execution_threads (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
@ -74,7 +72,6 @@ erDiagram
datetime_3_ startedAt
varchar_16_ status
datetime_3_ stoppedAt
VARCHAR_2_ storedAt
varchar_128_ threadId FK
TEXT timeline
INTEGER totalTokens

View File

@ -83,7 +83,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations
@ -109,7 +108,6 @@ erDiagram
datetime_3_ startedAt
varchar_16_ status
datetime_3_ stoppedAt
VARCHAR_2_ storedAt
varchar_128_ threadId FK
TEXT timeline
INTEGER totalTokens

View File

@ -6,7 +6,7 @@
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "agent_files" ("id" varchar(16) PRIMARY KEY NOT NULL, "agentId" varchar(36) NOT NULL, "binaryDataId" text, "fileName" varchar(255) NOT NULL, "mimeType" varchar(255) NOT NULL, "fileSizeBytes" integer NOT NULL, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "storedAt" varchar(2) NOT NULL DEFAULT ('db'), "storageKey" text NOT NULL, CONSTRAINT "CHK_agent_files_storedAt" CHECK ((("storedAt" IN ('db', 'fs', 's3', 'az')))), CONSTRAINT "FK_aca4514cb500494b64356c2e164" FOREIGN KEY ("agentId") REFERENCES "agents" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)
CREATE TABLE "agent_files" ("id" varchar(16) PRIMARY KEY NOT NULL, "agentId" varchar(36) NOT NULL, "binaryDataId" text NOT NULL, "fileName" varchar(255) NOT NULL, "mimeType" varchar(255) NOT NULL, "fileSizeBytes" integer NOT NULL, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), CONSTRAINT "FK_aca4514cb500494b64356c2e164" FOREIGN KEY ("agentId") REFERENCES "agents" ("id") ON DELETE CASCADE)
```
</details>
@ -16,21 +16,18 @@ CREATE TABLE "agent_files" ("id" varchar(16) PRIMARY KEY NOT NULL, "agentId" var
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| agentId | varchar(36) | | false | | [agents](agents.md) | |
| binaryDataId | TEXT | | true | | | |
| binaryDataId | TEXT | | false | | | |
| createdAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| fileName | varchar(255) | | false | | | |
| fileSizeBytes | INTEGER | | false | | | |
| id | varchar(16) | | false | | | |
| mimeType | varchar(255) | | false | | | |
| storageKey | TEXT | | false | | | |
| storedAt | varchar(2) | 'db' | false | | | |
| updatedAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - | CHECK | CHECK ((("storedAt" IN ('db', 'fs', 's3', 'az')))) |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
| id | PRIMARY KEY | PRIMARY KEY (id) |
| sqlite_autoindex_agent_files_1 | PRIMARY KEY | PRIMARY KEY (id) |
@ -59,13 +56,10 @@ erDiagram
INTEGER fileSizeBytes
varchar_16_ id PK
varchar_255_ mimeType
TEXT storageKey
varchar_2_ storedAt
datetime_3_ updatedAt
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -65,7 +65,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -56,7 +56,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -54,7 +54,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -6,7 +6,7 @@
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "agents" ("id" varchar(36) PRIMARY KEY NOT NULL, "name" varchar(128) NOT NULL, "projectId" varchar(255) NOT NULL, "integrations" text NOT NULL DEFAULT ('[]'), "schema" text, "tools" text NOT NULL DEFAULT ('{}'), "skills" text NOT NULL DEFAULT ('{}'), "versionId" varchar(36), "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "activeVersionId" varchar(36), "availableInMCP" boolean NOT NULL DEFAULT (false), CONSTRAINT "FK_a30d560207c4071d98aa03c179c" FOREIGN KEY ("projectId") REFERENCES "project" ("id") ON DELETE CASCADE ON UPDATE NO ACTION, CONSTRAINT "FK_940597dfe9753375309ce6aeea0" FOREIGN KEY ("activeVersionId") REFERENCES "agent_history" ("versionId") ON DELETE SET NULL ON UPDATE NO ACTION)
CREATE TABLE "agents" ("id" varchar(36) PRIMARY KEY NOT NULL, "name" varchar(128) NOT NULL, "projectId" varchar(255) NOT NULL, "integrations" text NOT NULL DEFAULT ('[]'), "schema" text, "tools" text NOT NULL DEFAULT ('{}'), "skills" text NOT NULL DEFAULT ('{}'), "versionId" varchar(36), "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "activeVersionId" varchar(36), CONSTRAINT "FK_940597dfe9753375309ce6aeea0" FOREIGN KEY ("activeVersionId") REFERENCES "agent_history" ("versionId") ON DELETE SET NULL ON UPDATE NO ACTION, CONSTRAINT "FK_a30d560207c4071d98aa03c179c" FOREIGN KEY ("projectId") REFERENCES "project" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)
```
</details>
@ -16,9 +16,8 @@ CREATE TABLE "agents" ("id" varchar(36) PRIMARY KEY NOT NULL, "name" varchar(128
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| activeVersionId | varchar(36) | | true | | [agent_history](agent_history.md) | |
| availableInMCP | boolean | false | false | | | |
| createdAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| id | varchar(36) | | false | [agent_chat_subscriptions](agent_chat_subscriptions.md) [agent_checkpoints](agent_checkpoints.md) [agent_eval_dataset](agent_eval_dataset.md) [agent_execution_threads](agent_execution_threads.md) [agent_files](agent_files.md) [agent_history](agent_history.md) [agent_task_definition](agent_task_definition.md) [agent_task_run_lock](agent_task_run_lock.md) [agents_memory_entries](agents_memory_entries.md) [agents_memory_entry_cursors](agents_memory_entry_cursors.md) [agents_memory_entry_locks](agents_memory_entry_locks.md) [agents_memory_entry_sources](agents_memory_entry_sources.md) [agents_observation_cursors](agents_observation_cursors.md) [agents_observation_locks](agents_observation_locks.md) [agents_observations](agents_observations.md) | | |
| id | varchar(36) | | false | [agent_chat_subscriptions](agent_chat_subscriptions.md) [agent_checkpoints](agent_checkpoints.md) [agent_execution_threads](agent_execution_threads.md) [agent_files](agent_files.md) [agent_history](agent_history.md) [agent_task_definition](agent_task_definition.md) [agent_task_run_lock](agent_task_run_lock.md) [agents_memory_entries](agents_memory_entries.md) [agents_memory_entry_cursors](agents_memory_entry_cursors.md) [agents_memory_entry_locks](agents_memory_entry_locks.md) [agents_memory_entry_sources](agents_memory_entry_sources.md) [agents_observation_cursors](agents_observation_cursors.md) [agents_observation_locks](agents_observation_locks.md) [agents_observations](agents_observations.md) | | |
| integrations | TEXT | '[]' | false | | | |
| name | varchar(128) | | false | | | |
| projectId | varchar(255) | | false | | [project](project.md) | |
@ -32,8 +31,8 @@ CREATE TABLE "agents" ("id" varchar(36) PRIMARY KEY NOT NULL, "name" varchar(128
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (activeVersionId) REFERENCES agent_history (versionId) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE |
| - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (projectId) REFERENCES project (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (projectId) REFERENCES project (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE |
| - (Foreign key ID: 1) | FOREIGN KEY | FOREIGN KEY (activeVersionId) REFERENCES agent_history (versionId) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE |
| id | PRIMARY KEY | PRIMARY KEY (id) |
| sqlite_autoindex_agents_1 | PRIMARY KEY | PRIMARY KEY (id) |
@ -53,7 +52,6 @@ erDiagram
"agents" }o--o| "agent_history" : "FOREIGN KEY (activeVersionId) REFERENCES agent_history (versionId) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
"agent_chat_subscriptions" |o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_checkpoints" }o--o| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_eval_dataset" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_execution_threads" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_files" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"agent_history" }o--|| "agents" : "FOREIGN KEY (agentId) REFERENCES agents (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
@ -70,7 +68,6 @@ erDiagram
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations
@ -109,18 +106,6 @@ erDiagram
TEXT state
datetime_3_ updatedAt
}
"agent_eval_dataset" {
varchar_36_ agentId FK
TEXT columnMapping
datetime_3_ createdAt
varchar createdById FK
TEXT datasetRef
varchar_32_ datasetSource
TEXT description
varchar_36_ id PK
varchar_128_ name
datetime_3_ updatedAt
}
"agent_execution_threads" {
varchar_36_ agentId FK
varchar_255_ agentName
@ -148,8 +133,6 @@ erDiagram
INTEGER fileSizeBytes
varchar_16_ id PK
varchar_255_ mimeType
TEXT storageKey
varchar_2_ storedAt
datetime_3_ updatedAt
}
"agent_task_definition" {

View File

@ -77,7 +77,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -57,7 +57,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -57,7 +57,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -69,7 +69,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -57,7 +57,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -61,7 +61,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -76,7 +76,6 @@ erDiagram
}
"agents" {
varchar_36_ activeVersionId FK
boolean availableInMCP
datetime_3_ createdAt
varchar_36_ id PK
TEXT integrations

View File

@ -82,7 +82,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
"chat_hub_agent_tools" {
varchar agentId PK

View File

@ -101,7 +101,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
"chat_hub_messages" {
varchar_36_ agentId FK

View File

@ -62,7 +62,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
```

View File

@ -6,7 +6,7 @@
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "credentials_entity" ("id" varchar(36) PRIMARY KEY NOT NULL, "name" varchar(128) NOT NULL, "data" text NOT NULL, "type" varchar(32) NOT NULL, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "isManaged" boolean NOT NULL DEFAULT (0), "isGlobal" boolean NOT NULL DEFAULT (0), "isResolvable" boolean NOT NULL DEFAULT (false), "resolvableAllowFallback" boolean NOT NULL DEFAULT (false), "resolverId" varchar(16), "usageScope" VARCHAR(16) NOT NULL DEFAULT 'project' CONSTRAINT "CHK_credentials_entity_usageScope" CHECK ("usageScope" IN ('project', 'instance')), CONSTRAINT "credentials_entity_resolverId_foreign" FOREIGN KEY ("resolverId") REFERENCES "dynamic_credential_resolver" ("id") ON DELETE SET NULL)
CREATE TABLE "credentials_entity" ("id" varchar(36) PRIMARY KEY NOT NULL, "name" varchar(128) NOT NULL, "data" text NOT NULL, "type" varchar(32) NOT NULL, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "isManaged" boolean NOT NULL DEFAULT (0), "isGlobal" boolean NOT NULL DEFAULT (0), "isResolvable" boolean NOT NULL DEFAULT (false), "resolvableAllowFallback" boolean NOT NULL DEFAULT (false), "resolverId" varchar(16), CONSTRAINT "credentials_entity_resolverId_foreign" FOREIGN KEY ("resolverId") REFERENCES "dynamic_credential_resolver" ("id") ON DELETE SET NULL)
```
</details>
@ -17,7 +17,7 @@ CREATE TABLE "credentials_entity" ("id" varchar(36) PRIMARY KEY NOT NULL, "name"
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| createdAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| data | TEXT | | false | | | |
| id | varchar(36) | | false | [chat_hub_agents](chat_hub_agents.md) [chat_hub_sessions](chat_hub_sessions.md) [credential_dependency](credential_dependency.md) [dynamic_credential_entry](dynamic_credential_entry.md) [dynamic_credential_user_entry](dynamic_credential_user_entry.md) [instance_ai_mcp_registry_connections](instance_ai_mcp_registry_connections.md) [instance_credential_assignment](instance_credential_assignment.md) [shared_credentials](shared_credentials.md) | | |
| id | varchar(36) | | false | [chat_hub_agents](chat_hub_agents.md) [chat_hub_sessions](chat_hub_sessions.md) [credential_dependency](credential_dependency.md) [dynamic_credential_entry](dynamic_credential_entry.md) [dynamic_credential_user_entry](dynamic_credential_user_entry.md) [instance_ai_mcp_registry_connections](instance_ai_mcp_registry_connections.md) [shared_credentials](shared_credentials.md) | | |
| isGlobal | boolean | 0 | false | | | |
| isManaged | boolean | 0 | false | | | |
| isResolvable | boolean | false | false | | | |
@ -26,13 +26,11 @@ CREATE TABLE "credentials_entity" ("id" varchar(36) PRIMARY KEY NOT NULL, "name"
| resolverId | varchar(16) | | true | | [dynamic_credential_resolver](dynamic_credential_resolver.md) | |
| type | varchar(32) | | false | | | |
| updatedAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| usageScope | VARCHAR(16) | 'project' | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - | CHECK | CHECK ("usageScope" IN ('project', 'instance')) |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (resolverId) REFERENCES dynamic_credential_resolver (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE |
| id | PRIMARY KEY | PRIMARY KEY (id) |
| sqlite_autoindex_credentials_entity_1 | PRIMARY KEY | PRIMARY KEY (id) |
@ -56,7 +54,6 @@ erDiagram
"dynamic_credential_entry" |o--|| "credentials_entity" : "FOREIGN KEY (credential_id) REFERENCES credentials_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"dynamic_credential_user_entry" |o--|| "credentials_entity" : "FOREIGN KEY (credentialId) REFERENCES credentials_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"instance_ai_mcp_registry_connections" }o--|| "credentials_entity" : "FOREIGN KEY (credentialId) REFERENCES credentials_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"instance_credential_assignment" }o--|| "credentials_entity" : "FOREIGN KEY (credentialId) REFERENCES credentials_entity (id) ON UPDATE NO ACTION ON DELETE RESTRICT MATCH NONE"
"shared_credentials" |o--|| "credentials_entity" : "FOREIGN KEY (credentialsId) REFERENCES credentials_entity (id) ON UPDATE NO ACTION ON DELETE CASCADE MATCH NONE"
"credentials_entity" }o--o| "dynamic_credential_resolver" : "FOREIGN KEY (resolverId) REFERENCES dynamic_credential_resolver (id) ON UPDATE NO ACTION ON DELETE SET NULL MATCH NONE"
@ -72,7 +69,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
"chat_hub_agents" {
datetime_3_ createdAt
@ -136,12 +132,6 @@ erDiagram
datetime_3_ updatedAt
varchar userId FK
}
"instance_credential_assignment" {
datetime_3_ createdAt
varchar_36_ credentialId FK
varchar_128_ credentialUseId PK
datetime_3_ updatedAt
}
"shared_credentials" {
datetime_3_ createdAt
varchar_36_ credentialsId PK

View File

@ -69,7 +69,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
"dynamic_credential_resolver" {
TEXT config

View File

@ -65,7 +65,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
"dynamic_credential_entry" {
datetime_3_ createdAt

View File

@ -71,7 +71,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
"dynamic_credential_resolver" {
TEXT config

View File

@ -6,14 +6,7 @@
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "installed_nodes" (
"name" char(200) NOT NULL,
"type" char(200) NOT NULL,
"latestVersion" REAL DEFAULT 1,
"package" char(214) NOT NULL,
PRIMARY KEY ("name"),
FOREIGN KEY ("package") REFERENCES "installed_packages" ("packageName") ON DELETE CASCADE ON UPDATE CASCADE
)
CREATE TABLE "installed_nodes" ("name" char(200) NOT NULL,"type" char(200) NOT NULL,"latestVersion" INTEGER DEFAULT 1,"package" char(214) NOT NULL,PRIMARY KEY("name"),FOREIGN KEY("package") REFERENCES "installed_packages"("packageName") ON DELETE CASCADE ON UPDATE CASCADE)
```
</details>
@ -22,7 +15,7 @@ CREATE TABLE "installed_nodes" (
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| latestVersion | REAL | 1 | true | | | |
| latestVersion | INTEGER | 1 | true | | | |
| name | char(200) | | false | | | |
| package | char(214) | | false | | [installed_packages](installed_packages.md) | |
| type | char(200) | | false | | | |
@ -49,7 +42,7 @@ erDiagram
"installed_nodes" }o--|| "installed_packages" : "FOREIGN KEY (package) REFERENCES installed_packages (packageName) ON UPDATE CASCADE ON DELETE CASCADE MATCH NONE"
"installed_nodes" {
REAL latestVersion
INTEGER latestVersion
char_200_ name PK
char_214_ package FK
char_200_ type

View File

@ -51,7 +51,7 @@ erDiagram
datetime_3_ updatedAt
}
"installed_nodes" {
REAL latestVersion
INTEGER latestVersion
char_200_ name PK
char_214_ package FK
char_200_ type

View File

@ -70,7 +70,6 @@ erDiagram
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
"mcp_registry_server" {
datetime_3_ createdAt

View File

@ -1,69 +0,0 @@
# instance_credential_assignment
## Description
<details>
<summary><strong>Table Definition</strong></summary>
```sql
CREATE TABLE "instance_credential_assignment" ("credentialUseId" varchar(128) PRIMARY KEY NOT NULL, "credentialId" varchar(36) NOT NULL, "createdAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), "updatedAt" datetime(3) NOT NULL DEFAULT (STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW')), CONSTRAINT "FK_instance_credential_assignment_credential" FOREIGN KEY ("credentialId") REFERENCES "credentials_entity" ("id") ON DELETE RESTRICT)
```
</details>
## Columns
| Name | Type | Default | Nullable | Children | Parents | Comment |
| ---- | ---- | ------- | -------- | -------- | ------- | ------- |
| createdAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
| credentialId | varchar(36) | | false | | [credentials_entity](credentials_entity.md) | |
| credentialUseId | varchar(128) | | false | | | |
| updatedAt | datetime(3) | STRFTIME('%Y-%m-%d %H:%M:%f', 'NOW') | false | | | |
## Constraints
| Name | Type | Definition |
| ---- | ---- | ---------- |
| - (Foreign key ID: 0) | FOREIGN KEY | FOREIGN KEY (credentialId) REFERENCES credentials_entity (id) ON UPDATE NO ACTION ON DELETE RESTRICT MATCH NONE |
| credentialUseId | PRIMARY KEY | PRIMARY KEY (credentialUseId) |
| sqlite_autoindex_instance_credential_assignment_1 | PRIMARY KEY | PRIMARY KEY (credentialUseId) |
## Indexes
| Name | Definition |
| ---- | ---------- |
| IDX_9626b8dc1bee96a86a3ee09d73 | CREATE INDEX "IDX_9626b8dc1bee96a86a3ee09d73" ON "instance_credential_assignment" ("credentialId") |
| sqlite_autoindex_instance_credential_assignment_1 | PRIMARY KEY (credentialUseId) |
## Relations
```mermaid
erDiagram
"instance_credential_assignment" }o--|| "credentials_entity" : "FOREIGN KEY (credentialId) REFERENCES credentials_entity (id) ON UPDATE NO ACTION ON DELETE RESTRICT MATCH NONE"
"instance_credential_assignment" {
datetime_3_ createdAt
varchar_36_ credentialId FK
varchar_128_ credentialUseId PK
datetime_3_ updatedAt
}
"credentials_entity" {
datetime_3_ createdAt
TEXT data
varchar_36_ id PK
boolean isGlobal
boolean isManaged
boolean isResolvable
varchar_128_ name
boolean resolvableAllowFallback
varchar_16_ resolverId FK
varchar_32_ type
datetime_3_ updatedAt
VARCHAR_16_ usageScope
}
```
---
> Generated by [tbls](https://github.com/k1LoW/tbls)

View File

@ -53,7 +53,6 @@ erDiagram
datetime_3_ createdAt
TEXT grantTypes
varchar id PK
boolean isFirstParty
varchar_255_ name
TEXT redirectUris
varchar_255_ tokenEndpointAuthMethod

View File

@ -73,7 +73,6 @@ erDiagram
datetime_3_ createdAt
TEXT grantTypes
varchar id PK
boolean isFirstParty
varchar_255_ name
TEXT redirectUris
varchar_255_ tokenEndpointAuthMethod

Some files were not shown because too many files have changed in this diff Show More